xml-model 1.1.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +0 -1
  2. package/dist/_virtual/Reflect.js +8 -0
  3. package/dist/_virtual/Reflect2.js +5 -0
  4. package/{vite/dist → dist}/_virtual/_commonjsHelpers.js +10 -4
  5. package/dist/defaults.d.ts +1 -0
  6. package/dist/errors.d.ts +1 -0
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.js +42 -2
  9. package/dist/middleware.d.ts +1 -0
  10. package/dist/model/built-ins.d.ts +1 -0
  11. package/dist/model/index.d.ts +1 -0
  12. package/dist/model/index.js +3 -1
  13. package/dist/model/property.d.ts +1 -0
  14. package/dist/model/property.js +2 -1
  15. package/dist/model/registry.d.ts +1 -0
  16. package/dist/model/types.d.ts +1 -0
  17. package/dist/node_modules/reflect-metadata/Reflect.js +867 -0
  18. package/dist/node_modules/typescript-rtti/dist.esm/common/format.js +106 -0
  19. package/dist/node_modules/typescript-rtti/dist.esm/index.js +2 -0
  20. package/dist/node_modules/typescript-rtti/dist.esm/lib/get-parameter-names.js +15 -0
  21. package/dist/node_modules/typescript-rtti/dist.esm/lib/index.js +43 -0
  22. package/dist/node_modules/typescript-rtti/dist.esm/lib/reflect.js +2225 -0
  23. package/dist/node_modules/typescript-rtti/dist.esm/lib/sealed.js +13 -0
  24. package/dist/types.d.ts +1 -0
  25. package/dist/util/is-regexp.d.ts +1 -0
  26. package/dist/util/kebab-case.d.ts +1 -0
  27. package/dist/util/merge-maps.d.ts +1 -0
  28. package/dist/xml/index.d.ts +1 -0
  29. package/dist/xml/xml-js.d.ts +1 -0
  30. package/package.json +3 -3
  31. package/vite/dist/index.js +5 -6
  32. package/vite/dist/node_modules/typescript-rtti/dist.esm/common/format.js +103 -0
  33. package/vite/dist/node_modules/typescript-rtti/dist.esm/common/index.js +53 -0
  34. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/api-call-transformer.js +150 -0
  35. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/common/class-analyzer.js +81 -0
  36. package/vite/dist/{_virtual → node_modules/typescript-rtti/dist.esm/transformer/common}/compile-error.js +3 -2
  37. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/common/import-analyzer.js +87 -0
  38. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/common/interface-analyzer.js +56 -0
  39. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/common/visitor-base.js +91 -0
  40. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/declarations-emitter.js +29 -0
  41. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/encode-parameter.js +62 -0
  42. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/find-relative-path.js +39 -0
  43. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/flags.js +41 -0
  44. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/forward-ref.js +18 -0
  45. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/get-exports-for-symbol.js +62 -0
  46. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/index.js +128 -0
  47. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/legacy-decorator.js +8 -0
  48. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/legacy-type-encoder.js +80 -0
  49. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/literal-node.js +7 -0
  50. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/metadata-collector.js +54 -0
  51. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/metadata-decorator.js +78 -0
  52. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/metadata-emitter.js +423 -0
  53. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/metadata-encoder.js +210 -0
  54. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/rt-helper.js +94 -0
  55. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/rtti-visitor-base.js +26 -0
  56. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/serialize.js +29 -0
  57. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/type-encoder.js +74 -0
  58. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/type-literal.js +497 -0
  59. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/utils.js +904 -0
  60. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/workarounds.js +5 -0
  61. package/vite/dist/src/class-names.test.d.ts +9 -0
  62. package/vite/dist/src/defaults.d.ts +15 -0
  63. package/vite/dist/src/errors.d.ts +24 -0
  64. package/vite/dist/src/index.d.ts +8 -0
  65. package/vite/dist/src/middleware.d.ts +10 -0
  66. package/vite/dist/src/model/built-ins.d.ts +3 -0
  67. package/vite/dist/src/model/index.d.ts +21 -0
  68. package/vite/dist/src/model/property.d.ts +6 -0
  69. package/vite/dist/src/model/registry.d.ts +9 -0
  70. package/vite/dist/src/model/types.d.ts +74 -0
  71. package/vite/dist/src/model.test.d.ts +2 -0
  72. package/vite/dist/src/types.d.ts +17 -0
  73. package/vite/dist/src/util/is-regexp.d.ts +12 -0
  74. package/vite/dist/src/util/kebab-case.d.ts +16 -0
  75. package/vite/dist/src/util/merge-maps.d.ts +2 -0
  76. package/vite/dist/src/xml/index.d.ts +33 -0
  77. package/vite/dist/src/xml/xml-js.d.ts +7 -0
  78. package/vite/dist/_virtual/_commonjs-dynamic-modules.js +0 -7
  79. package/vite/dist/_virtual/_typescript.js +0 -5
  80. package/vite/dist/_virtual/api-call-transformer.js +0 -5
  81. package/vite/dist/_virtual/class-analyzer.js +0 -5
  82. package/vite/dist/_virtual/declarations-emitter.js +0 -5
  83. package/vite/dist/_virtual/encode-parameter.js +0 -5
  84. package/vite/dist/_virtual/find-relative-path.js +0 -5
  85. package/vite/dist/_virtual/flags.js +0 -5
  86. package/vite/dist/_virtual/format.js +0 -5
  87. package/vite/dist/_virtual/forward-ref.js +0 -5
  88. package/vite/dist/_virtual/get-exports-for-symbol.js +0 -5
  89. package/vite/dist/_virtual/import-analyzer.js +0 -5
  90. package/vite/dist/_virtual/index.js +0 -8
  91. package/vite/dist/_virtual/index2.js +0 -5
  92. package/vite/dist/_virtual/index3.js +0 -5
  93. package/vite/dist/_virtual/interface-analyzer.js +0 -5
  94. package/vite/dist/_virtual/legacy-decorator.js +0 -5
  95. package/vite/dist/_virtual/legacy-type-encoder.js +0 -5
  96. package/vite/dist/_virtual/literal-node.js +0 -5
  97. package/vite/dist/_virtual/metadata-collector.js +0 -5
  98. package/vite/dist/_virtual/metadata-decorator.js +0 -5
  99. package/vite/dist/_virtual/metadata-emitter.js +0 -5
  100. package/vite/dist/_virtual/metadata-encoder.js +0 -5
  101. package/vite/dist/_virtual/rt-helper.js +0 -5
  102. package/vite/dist/_virtual/rtti-visitor-base.js +0 -5
  103. package/vite/dist/_virtual/serialize.js +0 -5
  104. package/vite/dist/_virtual/type-encoder.js +0 -5
  105. package/vite/dist/_virtual/type-literal.js +0 -5
  106. package/vite/dist/_virtual/utils.js +0 -5
  107. package/vite/dist/_virtual/visitor-base.js +0 -5
  108. package/vite/dist/_virtual/workarounds.js +0 -5
  109. package/vite/dist/index.d.ts +0 -22
  110. package/vite/dist/node_modules/typescript-rtti/dist/common/format.js +0 -69
  111. package/vite/dist/node_modules/typescript-rtti/dist/common/index.js +0 -34
  112. package/vite/dist/node_modules/typescript-rtti/dist/transformer/api-call-transformer.js +0 -197
  113. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/class-analyzer.js +0 -124
  114. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/compile-error.js +0 -18
  115. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/import-analyzer.js +0 -130
  116. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/interface-analyzer.js +0 -98
  117. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/visitor-base.js +0 -132
  118. package/vite/dist/node_modules/typescript-rtti/dist/transformer/declarations-emitter.js +0 -72
  119. package/vite/dist/node_modules/typescript-rtti/dist/transformer/encode-parameter.js +0 -110
  120. package/vite/dist/node_modules/typescript-rtti/dist/transformer/find-relative-path.js +0 -51
  121. package/vite/dist/node_modules/typescript-rtti/dist/transformer/flags.js +0 -59
  122. package/vite/dist/node_modules/typescript-rtti/dist/transformer/forward-ref.js +0 -35
  123. package/vite/dist/node_modules/typescript-rtti/dist/transformer/get-exports-for-symbol.js +0 -75
  124. package/vite/dist/node_modules/typescript-rtti/dist/transformer/index.js +0 -174
  125. package/vite/dist/node_modules/typescript-rtti/dist/transformer/legacy-decorator.js +0 -20
  126. package/vite/dist/node_modules/typescript-rtti/dist/transformer/legacy-type-encoder.js +0 -123
  127. package/vite/dist/node_modules/typescript-rtti/dist/transformer/literal-node.js +0 -19
  128. package/vite/dist/node_modules/typescript-rtti/dist/transformer/metadata-collector.js +0 -96
  129. package/vite/dist/node_modules/typescript-rtti/dist/transformer/metadata-decorator.js +0 -99
  130. package/vite/dist/node_modules/typescript-rtti/dist/transformer/metadata-emitter.js +0 -475
  131. package/vite/dist/node_modules/typescript-rtti/dist/transformer/metadata-encoder.js +0 -261
  132. package/vite/dist/node_modules/typescript-rtti/dist/transformer/rt-helper.js +0 -113
  133. package/vite/dist/node_modules/typescript-rtti/dist/transformer/rtti-visitor-base.js +0 -39
  134. package/vite/dist/node_modules/typescript-rtti/dist/transformer/serialize.js +0 -46
  135. package/vite/dist/node_modules/typescript-rtti/dist/transformer/type-encoder.js +0 -96
  136. package/vite/dist/node_modules/typescript-rtti/dist/transformer/type-literal.js +0 -546
  137. package/vite/dist/node_modules/typescript-rtti/dist/transformer/utils.js +0 -922
  138. package/vite/dist/node_modules/typescript-rtti/dist/transformer/workarounds.js +0 -16
@@ -0,0 +1,91 @@
1
+ import ts from "typescript";
2
+ var __classPrivateFieldGet = function(receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var __classPrivateFieldSet = function(receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
12
+ };
13
+ var _VisitorBase_instances, _VisitorBase_visitationMap, _VisitorBase_buildMap, _VisitorBase_visitor;
14
+ function Visit(kind) {
15
+ if (!Array.isArray(kind))
16
+ kind = [kind];
17
+ let kinds = kind;
18
+ return (target, propertyKey) => {
19
+ target[propertyKey].kinds = kinds;
20
+ };
21
+ }
22
+ class VisitorBase {
23
+ constructor(context) {
24
+ this.context = context;
25
+ _VisitorBase_instances.add(this);
26
+ _VisitorBase_visitationMap.set(this, void 0);
27
+ this.traceVisits = false;
28
+ _VisitorBase_visitor.set(this, void 0);
29
+ }
30
+ /**
31
+ * Runs for every node, regardless of what receivers are defined.
32
+ * If `false` is returned, the node (and all its children) are not visited.
33
+ * Note that if you return nothing (ie `undefined`) the node is visited.
34
+ * @param node
35
+ */
36
+ everyNode(node) {
37
+ }
38
+ visitNode(node) {
39
+ __classPrivateFieldGet(this, _VisitorBase_instances, "m", _VisitorBase_buildMap).call(this);
40
+ return ts.visitNode(node, __classPrivateFieldGet(this, _VisitorBase_visitor, "f"));
41
+ }
42
+ visitEachChild(node) {
43
+ __classPrivateFieldGet(this, _VisitorBase_instances, "m", _VisitorBase_buildMap).call(this);
44
+ return ts.visitEachChild(node, __classPrivateFieldGet(this, _VisitorBase_visitor, "f"), this.context);
45
+ }
46
+ }
47
+ _VisitorBase_visitationMap = /* @__PURE__ */ new WeakMap(), _VisitorBase_visitor = /* @__PURE__ */ new WeakMap(), _VisitorBase_instances = /* @__PURE__ */ new WeakSet(), _VisitorBase_buildMap = function _VisitorBase_buildMap2() {
48
+ var _a, _b;
49
+ if (__classPrivateFieldGet(this, _VisitorBase_visitationMap, "f"))
50
+ return;
51
+ __classPrivateFieldSet(this, _VisitorBase_visitationMap, /* @__PURE__ */ new Map(), "f");
52
+ let methodNames = Object.getOwnPropertyNames(this.constructor.prototype).filter((x) => !["constructor", "visitEachChild"].includes(x)).filter((x) => typeof this.constructor.prototype[x] === "function");
53
+ for (let methodName of methodNames) {
54
+ let kinds = (_a = this.constructor.prototype[methodName].kinds) !== null && _a !== void 0 ? _a : [];
55
+ for (let kind of kinds) {
56
+ let receivers = (_b = __classPrivateFieldGet(this, _VisitorBase_visitationMap, "f").get(kind)) !== null && _b !== void 0 ? _b : [];
57
+ receivers.push(methodName);
58
+ __classPrivateFieldGet(this, _VisitorBase_visitationMap, "f").set(kind, receivers);
59
+ }
60
+ }
61
+ __classPrivateFieldSet(this, _VisitorBase_visitor, (node) => {
62
+ var _a2;
63
+ if (!node)
64
+ return;
65
+ let continueProcessing = this.everyNode(node);
66
+ if (continueProcessing === false)
67
+ return node;
68
+ let receivers = (_a2 = __classPrivateFieldGet(this, _VisitorBase_visitationMap, "f").get(node.kind)) !== null && _a2 !== void 0 ? _a2 : [];
69
+ if (receivers.length === 0) {
70
+ if (this.traceVisits)
71
+ console.log(`${this.constructor.name}: [Auto] Visiting ${ts.SyntaxKind[node.kind]}`);
72
+ return ts.visitEachChild(node, __classPrivateFieldGet(this, _VisitorBase_visitor, "f"), this.context);
73
+ }
74
+ if (this.traceVisits)
75
+ console.log(`${this.constructor.name}: Visiting ${ts.SyntaxKind[node.kind]}`);
76
+ for (let receiver of receivers) {
77
+ let result = this[receiver](node);
78
+ if (result === null)
79
+ return void 0;
80
+ if (result === void 0)
81
+ continue;
82
+ node = result;
83
+ }
84
+ return node;
85
+ }, "f");
86
+ };
87
+ export {
88
+ Visit,
89
+ VisitorBase
90
+ };
91
+ //# sourceMappingURL=visitor-base.js.map
@@ -0,0 +1,29 @@
1
+ import { Visit } from "./common/visitor-base.js";
2
+ import { RttiVisitor } from "./rtti-visitor-base.js";
3
+ import ts from "typescript";
4
+ var __decorate = function(decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ var __metadata = function(k, v) {
11
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
12
+ };
13
+ class DeclarationsEmitter extends RttiVisitor {
14
+ static emit(sourceFile, ctx) {
15
+ return new DeclarationsEmitter(ctx).visitNode(sourceFile);
16
+ }
17
+ functionDecl(decl) {
18
+ }
19
+ }
20
+ __decorate([
21
+ Visit(ts.SyntaxKind.FunctionDeclaration),
22
+ __metadata("design:type", Function),
23
+ __metadata("design:paramtypes", [Object]),
24
+ __metadata("design:returntype", void 0)
25
+ ], DeclarationsEmitter.prototype, "functionDecl", null);
26
+ export {
27
+ DeclarationsEmitter
28
+ };
29
+ //# sourceMappingURL=declarations-emitter.js.map
@@ -0,0 +1,62 @@
1
+ import ts from "typescript";
2
+ import { F_ARRAY_BINDING, F_OBJECT_BINDING, F_OPTIONAL, F_REST, F_READONLY, F_PRIVATE, F_PUBLIC, F_PROTECTED } from "../common/format.js";
3
+ import { functionForwardRef, forwardRef } from "./forward-ref.js";
4
+ import { literalNode } from "./literal-node.js";
5
+ import { getModifiers } from "./utils.js";
6
+ function encodeParameter(encoder, param) {
7
+ if (ts.isOmittedExpression(param))
8
+ return { f: "," };
9
+ let nameNode = param.name;
10
+ let bindings;
11
+ let name;
12
+ let f = [];
13
+ let typeExpr;
14
+ let checker = encoder.ctx.checker;
15
+ if (ts.isArrayBindingPattern(nameNode)) {
16
+ f.push(F_ARRAY_BINDING);
17
+ bindings = [];
18
+ for (let element of nameNode.elements) {
19
+ bindings.push(encodeParameter(encoder, element));
20
+ }
21
+ } else if (ts.isObjectBindingPattern(nameNode)) {
22
+ f.push(F_OBJECT_BINDING);
23
+ bindings = [];
24
+ for (let element of nameNode.elements) {
25
+ bindings.push(encodeParameter(encoder, element));
26
+ }
27
+ } else {
28
+ name = nameNode.text;
29
+ }
30
+ if (ts.isParameter(param)) {
31
+ if (param.questionToken)
32
+ f.push(F_OPTIONAL);
33
+ if (param.dotDotDotToken)
34
+ f.push(F_REST);
35
+ typeExpr = param.type ? encoder.referToTypeNode(param.type) : encoder.referToType(checker.getTypeAtLocation(param.initializer), param.type);
36
+ } else {
37
+ typeExpr = encoder.referToType(checker.getTypeAtLocation(param));
38
+ }
39
+ for (let modifier of getModifiers(param)) {
40
+ if (modifier.kind === ts.SyntaxKind.ReadonlyKeyword)
41
+ f.push(F_READONLY);
42
+ if (modifier.kind === ts.SyntaxKind.PrivateKeyword)
43
+ f.push(F_PRIVATE);
44
+ if (modifier.kind === ts.SyntaxKind.PublicKeyword)
45
+ f.push(F_PUBLIC);
46
+ if (modifier.kind === ts.SyntaxKind.ProtectedKeyword)
47
+ f.push(F_PROTECTED);
48
+ }
49
+ let meta = {
50
+ n: name,
51
+ t: literalNode(forwardRef(typeExpr)),
52
+ b: bindings,
53
+ v: param.initializer ? literalNode(functionForwardRef(param.initializer)) : null
54
+ };
55
+ if (f.length > 0)
56
+ meta.f = f.join("");
57
+ return meta;
58
+ }
59
+ export {
60
+ encodeParameter
61
+ };
62
+ //# sourceMappingURL=encode-parameter.js.map
@@ -0,0 +1,39 @@
1
+ function findRelativePathToFile(fromFile, toFile) {
2
+ fromFile = fromFile.replace(/\\/g, "/");
3
+ toFile = toFile.replace(/\\/g, "/");
4
+ if (fromFile.startsWith("./"))
5
+ fromFile = fromFile.slice(2);
6
+ if (toFile.startsWith("./"))
7
+ toFile = toFile.slice(2);
8
+ let fromAbsolute = /^[A-Za-z]:/.test(fromFile) || /^\//.test(fromFile);
9
+ let toAbsolute = /^[A-Za-z]:/.test(toFile) || /^\//.test(toFile);
10
+ if (fromAbsolute !== toAbsolute)
11
+ throw new Error(`Cannot determine relationship between an absolute and a relative path!`);
12
+ if (!fromAbsolute && !toAbsolute) {
13
+ fromFile = `/${fromFile}`;
14
+ toFile = `/${toFile}`;
15
+ }
16
+ let from = fromFile.split("/");
17
+ let to = toFile.split("/");
18
+ let parents = 0;
19
+ let toFileName = to.pop();
20
+ while (from.length > 0 && !(to.join("/") + "/").startsWith(from.join("/") + "/")) {
21
+ parents += 1;
22
+ from.pop();
23
+ }
24
+ let result;
25
+ if (from.length === 0) {
26
+ return void 0;
27
+ } else {
28
+ if (parents > 1) {
29
+ result = [...Array(parents - 1).fill(".."), ...to.slice(from.length), toFileName].join("/");
30
+ } else {
31
+ result = [".", ...to.slice(from.length), toFileName].join("/");
32
+ }
33
+ }
34
+ return result;
35
+ }
36
+ export {
37
+ findRelativePathToFile
38
+ };
39
+ //# sourceMappingURL=find-relative-path.js.map
@@ -0,0 +1,41 @@
1
+ import ts from "typescript";
2
+ import { F_PUBLIC, F_PRIVATE, F_PROTECTED, F_READONLY, F_ABSTRACT, F_ASYNC, F_EXPORTED } from "../common/format.js";
3
+ function getVisibility(modifiers) {
4
+ if (modifiers) {
5
+ if (modifiers.some((x) => x.kind === ts.SyntaxKind.PublicKeyword))
6
+ return F_PUBLIC;
7
+ if (modifiers.some((x) => x.kind === ts.SyntaxKind.PrivateKeyword))
8
+ return F_PRIVATE;
9
+ if (modifiers.some((x) => x.kind === ts.SyntaxKind.ProtectedKeyword))
10
+ return F_PROTECTED;
11
+ }
12
+ return "";
13
+ }
14
+ function isReadOnly(modifiers) {
15
+ if (!modifiers)
16
+ return "";
17
+ return modifiers.some((x) => x.kind === ts.SyntaxKind.ReadonlyKeyword) ? F_READONLY : "";
18
+ }
19
+ function isAbstract(modifiers) {
20
+ if (!modifiers)
21
+ return "";
22
+ return modifiers.some((x) => x.kind === ts.SyntaxKind.AbstractKeyword) ? F_ABSTRACT : "";
23
+ }
24
+ function isAsync(modifiers) {
25
+ if (!modifiers)
26
+ return "";
27
+ return modifiers.some((x) => x.kind === ts.SyntaxKind.AsyncKeyword) ? F_ASYNC : "";
28
+ }
29
+ function isExported(modifiers) {
30
+ if (!modifiers)
31
+ return "";
32
+ return modifiers.some((x) => x.kind === ts.SyntaxKind.ExportKeyword) ? F_EXPORTED : "";
33
+ }
34
+ export {
35
+ getVisibility,
36
+ isAbstract,
37
+ isAsync,
38
+ isExported,
39
+ isReadOnly
40
+ };
41
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1,18 @@
1
+ import ts from "typescript";
2
+ function forwardRef(expr) {
3
+ if (!expr)
4
+ throw new Error(`Cannot make forwardRef without an expression`);
5
+ return ts.factory.createArrowFunction([], [], [], void 0, ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), expr);
6
+ }
7
+ function functionForwardRef(expr) {
8
+ if (!expr)
9
+ throw new Error(`Cannot make forwardRef without an expression`);
10
+ return ts.factory.createFunctionExpression([], void 0, "", [], [], void 0, ts.factory.createBlock([
11
+ ts.factory.createReturnStatement(expr)
12
+ ]));
13
+ }
14
+ export {
15
+ forwardRef,
16
+ functionForwardRef
17
+ };
18
+ //# sourceMappingURL=forward-ref.js.map
@@ -0,0 +1,62 @@
1
+ import { externalModules, getDirectoryPath, getDefaultLikeExportInfo, skipAlias, isTypeOnlySymbol, hasFilesystemAccess, fileExists } from "./utils.js";
2
+ function getExportsForSymbol(program, importingFile, symbol) {
3
+ const checker = program.getTypeChecker();
4
+ const compilerOptions = program.getCompilerOptions();
5
+ const result = [];
6
+ let exportingModuleSymbol = symbol["parent"];
7
+ for (let [moduleSymbol, moduleFile] of externalModules(program)) {
8
+ let isRootDeclaration = moduleSymbol === exportingModuleSymbol;
9
+ if (moduleFile === importingFile)
10
+ continue;
11
+ if (moduleFile && !isRootDeclaration && importingFile.fileName.startsWith(getDirectoryPath(moduleFile.fileName)))
12
+ continue;
13
+ const defaultInfo = getDefaultLikeExportInfo(importingFile, moduleSymbol, checker, compilerOptions);
14
+ if (defaultInfo && skipAlias(defaultInfo.symbol, checker) === symbol) {
15
+ result.push({
16
+ moduleSymbol,
17
+ importKind: defaultInfo.kind,
18
+ exportedSymbolIsTypeOnly: isTypeOnlySymbol(defaultInfo.symbol, checker),
19
+ symbol: void 0,
20
+ sourceFile: moduleFile
21
+ });
22
+ }
23
+ for (const exported of getExportsAndPropertiesOfModule(checker, moduleSymbol)) {
24
+ if (skipAlias(exported, checker) === symbol) {
25
+ result.push({
26
+ moduleSymbol,
27
+ importKind: 0,
28
+ exportedSymbolIsTypeOnly: isTypeOnlySymbol(exported, checker),
29
+ symbol: exported,
30
+ sourceFile: moduleFile
31
+ });
32
+ }
33
+ }
34
+ }
35
+ return result;
36
+ }
37
+ function getPreferredExportForImport(program, importingFile, symbol) {
38
+ let exports$1 = getExportsForSymbol(program, importingFile, symbol).slice();
39
+ exports$1 = exports$1.filter((x) => x.sourceFile);
40
+ exports$1.sort((a, b) => {
41
+ return a.sourceFile.fileName.length - b.sourceFile.fileName.length;
42
+ });
43
+ if (hasFilesystemAccess()) {
44
+ exports$1 = exports$1.filter((exp) => {
45
+ if (exp.sourceFile.fileName.endsWith(".d.ts")) {
46
+ let jsFile = exp.sourceFile.fileName.replace(/\.d\.ts$/, ".js");
47
+ if (!fileExists(jsFile))
48
+ return false;
49
+ }
50
+ return true;
51
+ });
52
+ }
53
+ return exports$1[0];
54
+ }
55
+ function getExportsAndPropertiesOfModule(checker, moduleSymbol) {
56
+ return checker["getExportsAndPropertiesOfModule"](moduleSymbol);
57
+ }
58
+ export {
59
+ getExportsForSymbol,
60
+ getPreferredExportForImport
61
+ };
62
+ //# sourceMappingURL=get-exports-for-symbol.js.map
@@ -0,0 +1,128 @@
1
+ import { rtStore } from "./rt-helper.js";
2
+ import ts from "typescript";
3
+ import { ImportAnalyzer } from "./common/import-analyzer.js";
4
+ import { CompileError } from "./common/compile-error.js";
5
+ import { ApiCallTransformer } from "./api-call-transformer.js";
6
+ import { MetadataEmitter } from "./metadata-emitter.js";
7
+ import { DeclarationsEmitter } from "./declarations-emitter.js";
8
+ const transformer = (program) => {
9
+ let compilerOptions = program.getCompilerOptions();
10
+ if (typeof compilerOptions["rtti$emitStandardMetadata"] === "undefined") {
11
+ let emitDecoratorMetadata = compilerOptions.emitDecoratorMetadata;
12
+ compilerOptions["rtti$emitStandardMetadata"] = emitDecoratorMetadata;
13
+ compilerOptions.emitDecoratorMetadata = false;
14
+ }
15
+ let emitStandardMetadata = compilerOptions["rtti$emitStandardMetadata"];
16
+ if (globalThis.RTTI_TRACE)
17
+ console.log(`RTTI: Entering program [emitDecoratorMetadata=${emitStandardMetadata}]`);
18
+ let pkgJsonMap = /* @__PURE__ */ new Map();
19
+ const rttiTransformer = (context) => {
20
+ let settings = context.getCompilerOptions().rtti;
21
+ if (globalThis.RTTI_TRACE)
22
+ console.log(`RTTI: Transformer setup`);
23
+ return (sourceFile) => {
24
+ var _a, _b;
25
+ if (globalThis.RTTI_TRACE)
26
+ console.log(`RTTI: Transforming '${sourceFile.fileName}'`);
27
+ let ctx = {
28
+ program,
29
+ checker: program.getTypeChecker(),
30
+ currentNameScope: void 0,
31
+ freeImportReference: 0,
32
+ importMap: /* @__PURE__ */ new Map(),
33
+ sourceFile,
34
+ trace: (_a = settings === null || settings === void 0 ? void 0 : settings.trace) !== null && _a !== void 0 ? _a : false,
35
+ throwOnFailure: (_b = settings === null || settings === void 0 ? void 0 : settings.throwOnFailure) !== null && _b !== void 0 ? _b : false,
36
+ transformationContext: context,
37
+ typeMap: /* @__PURE__ */ new Map(),
38
+ pkgJsonMap,
39
+ emitStandardMetadata,
40
+ currentTopStatement: void 0,
41
+ interfaceSymbols: []
42
+ };
43
+ ImportAnalyzer.analyze(sourceFile, ctx);
44
+ if (sourceFile.isDeclarationFile || sourceFile.fileName.endsWith(".d.ts")) {
45
+ if (ctx.trace)
46
+ console.log(`#### Processing declaration ${sourceFile.fileName}`);
47
+ return DeclarationsEmitter.emit(sourceFile, ctx);
48
+ }
49
+ if (ctx.trace)
50
+ console.log(`#### Processing ${sourceFile.fileName}`);
51
+ globalThis.RTTI_TRACE = ctx.trace;
52
+ globalThis.RTTI_THROW_ON_FAILURE = ctx.throwOnFailure;
53
+ sourceFile = ApiCallTransformer.transform(sourceFile, ctx);
54
+ function generateInterfaceSymbols(statements) {
55
+ for (let iface of ctx.interfaceSymbols) {
56
+ let impoIndex = statements.indexOf(iface.interfaceDecl);
57
+ if (impoIndex >= 0) {
58
+ statements.splice(impoIndex, 0, ...iface.symbolDecl);
59
+ } else {
60
+ statements.push(...iface.symbolDecl);
61
+ }
62
+ }
63
+ return statements;
64
+ }
65
+ function generateImports(statements) {
66
+ var _a2;
67
+ let imports = [];
68
+ let isCommonJS = context.getCompilerOptions().module === ts.ModuleKind.CommonJS;
69
+ let statementTransforms = /* @__PURE__ */ new Map();
70
+ for (let statement of statements)
71
+ statementTransforms.set(ts.getOriginalNode(statement), statement);
72
+ for (let impo of ctx.importMap.values()) {
73
+ if (!impo.referenced)
74
+ continue;
75
+ if (ctx.trace)
76
+ console.log(`RTTI: Generating owned import for '${impo.modulePath}'`);
77
+ let ownedImpo;
78
+ if (impo.isDefault) {
79
+ if (isCommonJS) {
80
+ ownedImpo = ts.factory.createVariableStatement(void 0, ts.factory.createVariableDeclarationList([ts.factory.createVariableDeclaration(ts.factory.createIdentifier(impo.localName), void 0, void 0, ts.factory.createPropertyAccessExpression(ts.factory.createCallExpression(ts.factory.createIdentifier("require"), void 0, [ts.factory.createStringLiteral(impo.modulePath)]), ts.factory.createIdentifier("default")))], ts.NodeFlags.None));
81
+ } else {
82
+ ownedImpo = ts.factory.createImportDeclaration(void 0, ts.factory.createImportClause(false, ts.factory.createIdentifier(impo.localName), void 0), ts.factory.createStringLiteral(impo.modulePath), void 0);
83
+ }
84
+ } else {
85
+ ownedImpo = ts.factory.createImportDeclaration(void 0, ts.factory.createImportClause(false, void 0, impo.isNamespace ? ts.factory.createNamespaceImport(ts.factory.createIdentifier(impo.localName)) : ts.factory.createNamedImports([
86
+ ts.factory.createImportSpecifier(false, ts.factory.createIdentifier(impo.refName), ts.factory.createIdentifier(impo.localName))
87
+ ])), ts.factory.createStringLiteral(impo.modulePath));
88
+ }
89
+ let impoIndex = -1;
90
+ if (impo.importDeclaration) {
91
+ let original = (_a2 = statementTransforms.get(impo.importDeclaration)) !== null && _a2 !== void 0 ? _a2 : impo.importDeclaration;
92
+ impoIndex = statements.indexOf(original);
93
+ if (impoIndex < 0)
94
+ impoIndex = statements.indexOf(impo.importDeclaration);
95
+ }
96
+ if (impoIndex >= 0) {
97
+ statements.splice(impoIndex, 0, ownedImpo);
98
+ } else {
99
+ statements.splice(0, 0, ownedImpo);
100
+ }
101
+ }
102
+ return statements;
103
+ }
104
+ try {
105
+ sourceFile = MetadataEmitter.emit(sourceFile, ctx);
106
+ sourceFile = ts.factory.updateSourceFile(sourceFile, [
107
+ ...generateInterfaceSymbols(generateImports(Array.from(sourceFile.statements)))
108
+ ], sourceFile.isDeclarationFile, sourceFile.referencedFiles, sourceFile.typeReferenceDirectives, sourceFile.hasNoDefaultLib, sourceFile.libReferenceDirectives);
109
+ } catch (e) {
110
+ if (e instanceof CompileError)
111
+ throw e;
112
+ console.error(`RTTI: Failed to build source file ${sourceFile.fileName}: ${e.message} [please report]`);
113
+ console.error(e);
114
+ if (globalThis.RTTI_THROW_ON_FAILURE)
115
+ throw e;
116
+ }
117
+ sourceFile = ts.factory.updateSourceFile(sourceFile, [rtStore(ctx.typeMap), ...sourceFile.statements], sourceFile.isDeclarationFile, sourceFile.referencedFiles, sourceFile.typeReferenceDirectives, sourceFile.hasNoDefaultLib, sourceFile.libReferenceDirectives);
118
+ if (globalThis.RTTI_TRACE)
119
+ console.log(`RTTI: Finished transforming '${sourceFile.fileName}'`);
120
+ return sourceFile;
121
+ };
122
+ };
123
+ return rttiTransformer;
124
+ };
125
+ export {
126
+ transformer as default
127
+ };
128
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,8 @@
1
+ function legacyDecorator(decorator) {
2
+ decorator["__Φlegacy"] = true;
3
+ return decorator;
4
+ }
5
+ export {
6
+ legacyDecorator
7
+ };
8
+ //# sourceMappingURL=legacy-decorator.js.map
@@ -0,0 +1,80 @@
1
+ import ts from "typescript";
2
+ import { typeLiteral } from "./type-literal.js";
3
+ import { hasFlag, hasAnyFlag, isFlagType } from "./utils.js";
4
+ class LegacyTypeEncoder {
5
+ constructor(ctx) {
6
+ this.ctx = ctx;
7
+ }
8
+ get typeMap() {
9
+ return this.ctx.typeMap;
10
+ }
11
+ get program() {
12
+ return this.ctx.program;
13
+ }
14
+ get sourceFile() {
15
+ return this.ctx.sourceFile;
16
+ }
17
+ get importMap() {
18
+ return this.ctx.importMap;
19
+ }
20
+ get checker() {
21
+ return this.ctx.checker;
22
+ }
23
+ referToTypeNode(typeNode) {
24
+ return this.referToType(this.checker.getTypeFromTypeNode(typeNode), typeNode);
25
+ }
26
+ referToType(type, typeNode) {
27
+ var _a;
28
+ if (!type)
29
+ return ts.factory.createIdentifier("Object");
30
+ if (hasFlag(type.flags, ts.TypeFlags.StringLike)) {
31
+ return ts.factory.createIdentifier("String");
32
+ } else if (hasFlag(type.flags, ts.TypeFlags.NumberLike)) {
33
+ return ts.factory.createIdentifier("Number");
34
+ } else if (hasFlag(type.flags, ts.TypeFlags.BooleanLike)) {
35
+ return ts.factory.createIdentifier("Boolean");
36
+ } else if (hasAnyFlag(type.flags, [ts.TypeFlags.Void, ts.TypeFlags.Undefined, ts.TypeFlags.Null])) {
37
+ return ts.factory.createVoidZero();
38
+ } else if (hasFlag(type.flags, ts.TypeFlags.BigIntLike)) {
39
+ return ts.factory.createIdentifier("BigInt");
40
+ } else if (isFlagType(type, ts.TypeFlags.Object)) {
41
+ if (hasFlag(type.objectFlags, ts.ObjectFlags.Reference)) {
42
+ let typeRef = type;
43
+ if (typeRef.target !== typeRef) {
44
+ if ((typeRef.target.objectFlags & ts.ObjectFlags.Tuple) !== 0)
45
+ return ts.factory.createIdentifier("Array");
46
+ if (typeRef.target.symbol.name === "Array" && typeRef.typeArguments.length === 1)
47
+ return ts.factory.createIdentifier("Array");
48
+ return this.referToType(typeRef.target, typeNode);
49
+ }
50
+ }
51
+ if (hasFlag(type.objectFlags, ts.ObjectFlags.Anonymous)) {
52
+ let anonymousType = type;
53
+ if (anonymousType.getCallSignatures().length > 0)
54
+ return ts.factory.createIdentifier(`Function`);
55
+ return ts.factory.createIdentifier("Object");
56
+ } else if (type.isClassOrInterface()) {
57
+ let reifiedType = type.isClass() || ((_a = type.symbol) === null || _a === void 0 ? void 0 : _a.name) === "Promise" || !!type.symbol.valueDeclaration;
58
+ if (reifiedType) {
59
+ return typeLiteral(this, type, typeNode, { hoistImportsInCommonJS: true });
60
+ }
61
+ }
62
+ return ts.factory.createIdentifier("Object");
63
+ } else if (isFlagType(type, ts.TypeFlags.EnumLike)) {
64
+ let types = type["types"];
65
+ if (types && types.length > 0) {
66
+ if (types.every((x) => hasFlag(x.flags, ts.TypeFlags.StringLike)))
67
+ return ts.factory.createIdentifier("String");
68
+ else if (types.every((x) => hasFlag(x.flags, ts.TypeFlags.NumberLike)))
69
+ return ts.factory.createIdentifier("Number");
70
+ else if (types.every((x) => hasFlag(x.flags, ts.TypeFlags.BigIntLike)))
71
+ return ts.factory.createIdentifier("BigInt");
72
+ }
73
+ }
74
+ return ts.factory.createIdentifier("Object");
75
+ }
76
+ }
77
+ export {
78
+ LegacyTypeEncoder
79
+ };
80
+ //# sourceMappingURL=legacy-type-encoder.js.map
@@ -0,0 +1,7 @@
1
+ function literalNode(expr) {
2
+ return { $__isTSNode: true, node: expr };
3
+ }
4
+ export {
5
+ literalNode
6
+ };
7
+ //# sourceMappingURL=literal-node.js.map
@@ -0,0 +1,54 @@
1
+ import ts from "typescript";
2
+ import { getDecorators, getModifiers } from "./utils.js";
3
+ class InlineMetadataCollector {
4
+ collect(node, decorators) {
5
+ if (decorators.length === 0)
6
+ return node;
7
+ if (ts.isPropertyDeclaration(node)) {
8
+ return ts.factory.updatePropertyDeclaration(node, [...getDecorators(node), ...decorators, ...getModifiers(node)], node.name, node.questionToken || node.exclamationToken, node.type, node.initializer);
9
+ } else if (ts.isGetAccessor(node)) {
10
+ return ts.factory.updateGetAccessorDeclaration(node, [...getDecorators(node), ...decorators, ...getModifiers(node)], node.name, node.parameters, node.type, node.body);
11
+ } else if (ts.isSetAccessor(node)) {
12
+ return ts.factory.updateSetAccessorDeclaration(node, [...getDecorators(node), ...decorators, ...getModifiers(node)], node.name, node.parameters, node.body);
13
+ } else if (ts.isMethodDeclaration(node)) {
14
+ return ts.factory.updateMethodDeclaration(node, [...getDecorators(node), ...decorators, ...getModifiers(node)], node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body);
15
+ } else if (ts.isClassDeclaration(node)) {
16
+ return ts.factory.updateClassDeclaration(node, [...getDecorators(node), ...decorators, ...getModifiers(node)], node.name, node.typeParameters, node.heritageClauses, node.members);
17
+ } else {
18
+ throw new TypeError(`Not sure how to collect metadata onto ${node}`);
19
+ }
20
+ }
21
+ }
22
+ class ExternalMetadataCollector {
23
+ constructor() {
24
+ this.inlineCollector = new InlineMetadataCollector();
25
+ this.decorators = [];
26
+ }
27
+ collect(node, addedDecorators) {
28
+ var _a;
29
+ let property;
30
+ if (ts.isMethodDeclaration(node) || ts.isPropertyDeclaration(node) || ts.isGetAccessor(node) || ts.isSetAccessor(node) || ts.isMethodSignature(node) || ts.isPropertySignature(node)) {
31
+ property = node.name;
32
+ }
33
+ let legacyDecorators = addedDecorators.filter((decorator) => decorator["__Φlegacy"]);
34
+ let nonLegacyDecorators = addedDecorators.filter((decorator) => !decorator["__Φlegacy"]);
35
+ this.decorators.push(...nonLegacyDecorators.map((decorator) => {
36
+ var _a2;
37
+ return {
38
+ property,
39
+ node,
40
+ decorator,
41
+ direct: (_a2 = decorator["__Φdirect"]) !== null && _a2 !== void 0 ? _a2 : false
42
+ };
43
+ }));
44
+ if (((_a = getDecorators(node)) === null || _a === void 0 ? void 0 : _a.length) > 0 && legacyDecorators.length > 0) {
45
+ node = this.inlineCollector.collect(node, legacyDecorators);
46
+ }
47
+ return node;
48
+ }
49
+ }
50
+ export {
51
+ ExternalMetadataCollector,
52
+ InlineMetadataCollector
53
+ };
54
+ //# sourceMappingURL=metadata-collector.js.map