Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. import * as ts from 'typescript';
  2.  
  3. const data = ts.createModuleDeclaration(
  4. undefined,
  5. [ts.createModifier(ts.SyntaxKind.DeclareKeyword)],
  6. ts.createIdentifier("Components"),
  7. ts.createModuleBlock([ts.createModuleDeclaration(
  8. undefined,
  9. undefined,
  10. ts.createIdentifier("Schemas"),
  11. ts.createModuleBlock([ts.createInterfaceDeclaration(
  12. undefined,
  13. [ts.createModifier(ts.SyntaxKind.ExportKeyword)],
  14. ts.createIdentifier("Object"),
  15. undefined,
  16. undefined,
  17. [
  18. ts.createPropertySignature(
  19. undefined,
  20. ts.createIdentifier("id"),
  21. ts.createToken(ts.SyntaxKind.QuestionToken),
  22. ts.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
  23. undefined
  24. ),
  25. ts.createPropertySignature(
  26. undefined,
  27. ts.createIdentifier("enum"),
  28. undefined,
  29. ts.createUnionTypeNode([
  30. ts.createLiteralTypeNode(ts.createStringLiteral("a")),
  31. ts.createLiteralTypeNode(ts.createNumericLiteral("1")),
  32. ts.createLiteralTypeNode(ts.createTrue())
  33. ]),
  34. undefined
  35. )
  36. ]
  37. )]),
  38. ts.NodeFlags.Namespace
  39. )]),
  40. ts.NodeFlags.Namespace
  41. );
  42.  
  43. function convertToSingleQuote(node: ts.Node): void {
  44. if (ts.isStringLiteral(node)) {
  45. (node as any).singleQuote = true;
  46. }
  47. }
  48.  
  49. function walk(node: ts.Node, cbArray: Array<(node: ts.Node) => void>): void {
  50. ts.forEachChild(node, (n) => {
  51. for (const cb of cbArray) {
  52. cb(n);
  53. }
  54. walk(n, cbArray);
  55. });
  56. }
  57. walk(data, [convertToSingleQuote]);
  58.  
  59. const resultFile = ts.createSourceFile('output.d.ts', '', ts.ScriptTarget.Latest, false, ts.ScriptKind.TS);
  60. const printer = ts.createPrinter({
  61. newLine: ts.NewLineKind.LineFeed
  62. });
  63. const result = printer.printNode(
  64. ts.EmitHint.Unspecified,
  65. data,
  66. resultFile
  67. );
  68.  
  69. console.log(result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement