Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import * as ts from 'typescript';
- const data = ts.createModuleDeclaration(
- undefined,
- [ts.createModifier(ts.SyntaxKind.DeclareKeyword)],
- ts.createIdentifier("Components"),
- ts.createModuleBlock([ts.createModuleDeclaration(
- undefined,
- undefined,
- ts.createIdentifier("Schemas"),
- ts.createModuleBlock([ts.createInterfaceDeclaration(
- undefined,
- [ts.createModifier(ts.SyntaxKind.ExportKeyword)],
- ts.createIdentifier("Object"),
- undefined,
- undefined,
- [
- ts.createPropertySignature(
- undefined,
- ts.createIdentifier("id"),
- ts.createToken(ts.SyntaxKind.QuestionToken),
- ts.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
- undefined
- ),
- ts.createPropertySignature(
- undefined,
- ts.createIdentifier("enum"),
- undefined,
- ts.createUnionTypeNode([
- ts.createLiteralTypeNode(ts.createStringLiteral("a")),
- ts.createLiteralTypeNode(ts.createNumericLiteral("1")),
- ts.createLiteralTypeNode(ts.createTrue())
- ]),
- undefined
- )
- ]
- )]),
- ts.NodeFlags.Namespace
- )]),
- ts.NodeFlags.Namespace
- );
- function convertToSingleQuote(node: ts.Node): void {
- if (ts.isStringLiteral(node)) {
- (node as any).singleQuote = true;
- }
- }
- function walk(node: ts.Node, cbArray: Array<(node: ts.Node) => void>): void {
- ts.forEachChild(node, (n) => {
- for (const cb of cbArray) {
- cb(n);
- }
- walk(n, cbArray);
- });
- }
- walk(data, [convertToSingleQuote]);
- const resultFile = ts.createSourceFile('output.d.ts', '', ts.ScriptTarget.Latest, false, ts.ScriptKind.TS);
- const printer = ts.createPrinter({
- newLine: ts.NewLineKind.LineFeed
- });
- const result = printer.printNode(
- ts.EmitHint.Unspecified,
- data,
- resultFile
- );
- console.log(result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement