xml-model 1.2.0 → 1.3.1

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 (131) 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/middleware.d.ts +1 -0
  9. package/dist/model/built-ins.d.ts +1 -0
  10. package/dist/model/index.d.ts +1 -0
  11. package/dist/model/index.js +1 -0
  12. package/dist/model/property.d.ts +1 -0
  13. package/dist/model/registry.d.ts +1 -0
  14. package/dist/model/types.d.ts +1 -0
  15. package/dist/node_modules/reflect-metadata/Reflect.js +867 -0
  16. package/dist/types.d.ts +1 -0
  17. package/dist/util/is-regexp.d.ts +1 -0
  18. package/dist/util/kebab-case.d.ts +1 -0
  19. package/dist/util/merge-maps.d.ts +1 -0
  20. package/dist/xml/index.d.ts +1 -0
  21. package/dist/xml/xml-js.d.ts +1 -0
  22. package/package.json +4 -4
  23. package/vite/dist/index.js +2 -3
  24. package/vite/dist/node_modules/typescript-rtti/dist.esm/common/format.js +105 -0
  25. package/vite/dist/node_modules/typescript-rtti/dist.esm/common/index.js +55 -0
  26. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/api-call-transformer.js +152 -0
  27. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/common/class-analyzer.js +83 -0
  28. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/common/compile-error.js +8 -0
  29. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/common/import-analyzer.js +89 -0
  30. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/common/interface-analyzer.js +58 -0
  31. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/common/visitor-base.js +93 -0
  32. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/declarations-emitter.js +31 -0
  33. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/encode-parameter.js +64 -0
  34. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/find-relative-path.js +41 -0
  35. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/flags.js +43 -0
  36. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/forward-ref.js +20 -0
  37. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/get-exports-for-symbol.js +64 -0
  38. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/index.js +130 -0
  39. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/legacy-decorator.js +10 -0
  40. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/legacy-type-encoder.js +82 -0
  41. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/literal-node.js +9 -0
  42. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/metadata-collector.js +56 -0
  43. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/metadata-decorator.js +80 -0
  44. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/metadata-emitter.js +425 -0
  45. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/metadata-encoder.js +212 -0
  46. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/rt-helper.js +96 -0
  47. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/rtti-visitor-base.js +28 -0
  48. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/serialize.js +31 -0
  49. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/type-encoder.js +76 -0
  50. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/type-literal.js +499 -0
  51. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/utils.js +906 -0
  52. package/vite/dist/node_modules/typescript-rtti/dist.esm/transformer/workarounds.js +7 -0
  53. package/vite/dist/src/class-names.test.d.ts +9 -0
  54. package/vite/dist/src/defaults.d.ts +15 -0
  55. package/vite/dist/src/errors.d.ts +24 -0
  56. package/vite/dist/src/index.d.ts +8 -0
  57. package/vite/dist/src/middleware.d.ts +10 -0
  58. package/vite/dist/src/model/built-ins.d.ts +3 -0
  59. package/vite/dist/src/model/index.d.ts +21 -0
  60. package/vite/dist/src/model/property.d.ts +6 -0
  61. package/vite/dist/src/model/registry.d.ts +9 -0
  62. package/vite/dist/src/model/types.d.ts +74 -0
  63. package/vite/dist/src/model.test.d.ts +2 -0
  64. package/vite/dist/src/types.d.ts +17 -0
  65. package/vite/dist/src/util/is-regexp.d.ts +12 -0
  66. package/vite/dist/src/util/kebab-case.d.ts +16 -0
  67. package/vite/dist/src/util/merge-maps.d.ts +2 -0
  68. package/vite/dist/src/xml/index.d.ts +33 -0
  69. package/vite/dist/src/xml/xml-js.d.ts +7 -0
  70. package/vite/dist/_virtual/_commonjs-dynamic-modules.js +0 -7
  71. package/vite/dist/_virtual/_typescript.js +0 -5
  72. package/vite/dist/_virtual/api-call-transformer.js +0 -5
  73. package/vite/dist/_virtual/class-analyzer.js +0 -5
  74. package/vite/dist/_virtual/compile-error.js +0 -5
  75. package/vite/dist/_virtual/declarations-emitter.js +0 -5
  76. package/vite/dist/_virtual/encode-parameter.js +0 -5
  77. package/vite/dist/_virtual/find-relative-path.js +0 -5
  78. package/vite/dist/_virtual/flags.js +0 -5
  79. package/vite/dist/_virtual/format.js +0 -5
  80. package/vite/dist/_virtual/forward-ref.js +0 -5
  81. package/vite/dist/_virtual/get-exports-for-symbol.js +0 -5
  82. package/vite/dist/_virtual/import-analyzer.js +0 -5
  83. package/vite/dist/_virtual/index.js +0 -8
  84. package/vite/dist/_virtual/index2.js +0 -5
  85. package/vite/dist/_virtual/index3.js +0 -5
  86. package/vite/dist/_virtual/interface-analyzer.js +0 -5
  87. package/vite/dist/_virtual/legacy-decorator.js +0 -5
  88. package/vite/dist/_virtual/legacy-type-encoder.js +0 -5
  89. package/vite/dist/_virtual/literal-node.js +0 -5
  90. package/vite/dist/_virtual/metadata-collector.js +0 -5
  91. package/vite/dist/_virtual/metadata-decorator.js +0 -5
  92. package/vite/dist/_virtual/metadata-emitter.js +0 -5
  93. package/vite/dist/_virtual/metadata-encoder.js +0 -5
  94. package/vite/dist/_virtual/rt-helper.js +0 -5
  95. package/vite/dist/_virtual/rtti-visitor-base.js +0 -5
  96. package/vite/dist/_virtual/serialize.js +0 -5
  97. package/vite/dist/_virtual/type-encoder.js +0 -5
  98. package/vite/dist/_virtual/type-literal.js +0 -5
  99. package/vite/dist/_virtual/utils.js +0 -5
  100. package/vite/dist/_virtual/visitor-base.js +0 -5
  101. package/vite/dist/_virtual/workarounds.js +0 -5
  102. package/vite/dist/index.d.ts +0 -28
  103. package/vite/dist/node_modules/typescript-rtti/dist/common/format.js +0 -69
  104. package/vite/dist/node_modules/typescript-rtti/dist/common/index.js +0 -34
  105. package/vite/dist/node_modules/typescript-rtti/dist/transformer/api-call-transformer.js +0 -197
  106. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/class-analyzer.js +0 -124
  107. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/compile-error.js +0 -18
  108. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/import-analyzer.js +0 -130
  109. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/interface-analyzer.js +0 -98
  110. package/vite/dist/node_modules/typescript-rtti/dist/transformer/common/visitor-base.js +0 -132
  111. package/vite/dist/node_modules/typescript-rtti/dist/transformer/declarations-emitter.js +0 -72
  112. package/vite/dist/node_modules/typescript-rtti/dist/transformer/encode-parameter.js +0 -110
  113. package/vite/dist/node_modules/typescript-rtti/dist/transformer/find-relative-path.js +0 -51
  114. package/vite/dist/node_modules/typescript-rtti/dist/transformer/flags.js +0 -59
  115. package/vite/dist/node_modules/typescript-rtti/dist/transformer/forward-ref.js +0 -35
  116. package/vite/dist/node_modules/typescript-rtti/dist/transformer/get-exports-for-symbol.js +0 -75
  117. package/vite/dist/node_modules/typescript-rtti/dist/transformer/index.js +0 -174
  118. package/vite/dist/node_modules/typescript-rtti/dist/transformer/legacy-decorator.js +0 -20
  119. package/vite/dist/node_modules/typescript-rtti/dist/transformer/legacy-type-encoder.js +0 -123
  120. package/vite/dist/node_modules/typescript-rtti/dist/transformer/literal-node.js +0 -19
  121. package/vite/dist/node_modules/typescript-rtti/dist/transformer/metadata-collector.js +0 -96
  122. package/vite/dist/node_modules/typescript-rtti/dist/transformer/metadata-decorator.js +0 -99
  123. package/vite/dist/node_modules/typescript-rtti/dist/transformer/metadata-emitter.js +0 -475
  124. package/vite/dist/node_modules/typescript-rtti/dist/transformer/metadata-encoder.js +0 -261
  125. package/vite/dist/node_modules/typescript-rtti/dist/transformer/rt-helper.js +0 -113
  126. package/vite/dist/node_modules/typescript-rtti/dist/transformer/rtti-visitor-base.js +0 -39
  127. package/vite/dist/node_modules/typescript-rtti/dist/transformer/serialize.js +0 -46
  128. package/vite/dist/node_modules/typescript-rtti/dist/transformer/type-encoder.js +0 -96
  129. package/vite/dist/node_modules/typescript-rtti/dist/transformer/type-literal.js +0 -546
  130. package/vite/dist/node_modules/typescript-rtti/dist/transformer/utils.js +0 -922
  131. package/vite/dist/node_modules/typescript-rtti/dist/transformer/workarounds.js +0 -16
@@ -1,475 +0,0 @@
1
- import "../../../../_virtual/_commonjsHelpers.js";
2
- import { __exports as metadataEmitter } from "../../../../_virtual/metadata-emitter.js";
3
- import { __require as requireRttiVisitorBase } from "./rtti-visitor-base.js";
4
- import "../../../../_virtual/_typescript.js";
5
- import { __require as requireVisitorBase } from "./common/visitor-base.js";
6
- import { __require as requireClassAnalyzer } from "./common/class-analyzer.js";
7
- import { __require as requireInterfaceAnalyzer } from "./common/interface-analyzer.js";
8
- import { __require as requireMetadataDecorator } from "./metadata-decorator.js";
9
- import { __require as requireMetadataEncoder } from "./metadata-encoder.js";
10
- import { __require as requireMetadataCollector } from "./metadata-collector.js";
11
- import { __require as requireUtils } from "./utils.js";
12
- import { __require as requireSerialize } from "./serialize.js";
13
- import { __require as requireLiteralNode } from "./literal-node.js";
14
- import { __require as requireCommon } from "../common/index.js";
15
- import { __require as requireWorkarounds } from "./workarounds.js";
16
- import require$$0 from "typescript";
17
- var hasRequiredMetadataEmitter;
18
- function requireMetadataEmitter() {
19
- if (hasRequiredMetadataEmitter) return metadataEmitter;
20
- hasRequiredMetadataEmitter = 1;
21
- "use strict";
22
- var __createBinding = metadataEmitter && metadataEmitter.__createBinding || (Object.create ? (function(o, m, k, k2) {
23
- if (k2 === void 0) k2 = k;
24
- var desc = Object.getOwnPropertyDescriptor(m, k);
25
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
- desc = { enumerable: true, get: function() {
27
- return m[k];
28
- } };
29
- }
30
- Object.defineProperty(o, k2, desc);
31
- }) : (function(o, m, k, k2) {
32
- if (k2 === void 0) k2 = k;
33
- o[k2] = m[k];
34
- }));
35
- var __setModuleDefault = metadataEmitter && metadataEmitter.__setModuleDefault || (Object.create ? (function(o, v) {
36
- Object.defineProperty(o, "default", { enumerable: true, value: v });
37
- }) : function(o, v) {
38
- o["default"] = v;
39
- });
40
- var __decorate = metadataEmitter && metadataEmitter.__decorate || function(decorators, target, key, desc) {
41
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
42
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43
- 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;
44
- return c > 3 && r && Object.defineProperty(target, key, r), r;
45
- };
46
- var __importStar = metadataEmitter && metadataEmitter.__importStar || function(mod) {
47
- if (mod && mod.__esModule) return mod;
48
- var result = {};
49
- if (mod != null) {
50
- for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
51
- }
52
- __setModuleDefault(result, mod);
53
- return result;
54
- };
55
- var __metadata = metadataEmitter && metadataEmitter.__metadata || function(k, v) {
56
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
57
- };
58
- Object.defineProperty(metadataEmitter, "__esModule", { value: true });
59
- metadataEmitter.MetadataEmitter = void 0;
60
- const rtti_visitor_base_1 = requireRttiVisitorBase();
61
- const ts = __importStar(require$$0);
62
- const visitor_base_1 = requireVisitorBase();
63
- const class_analyzer_1 = requireClassAnalyzer();
64
- const interface_analyzer_1 = requireInterfaceAnalyzer();
65
- const metadata_decorator_1 = requireMetadataDecorator();
66
- const metadata_encoder_1 = requireMetadataEncoder();
67
- const metadata_collector_1 = requireMetadataCollector();
68
- const utils_1 = requireUtils();
69
- const serialize_1 = requireSerialize();
70
- const literal_node_1 = requireLiteralNode();
71
- const common_1 = requireCommon();
72
- const workarounds_1 = requireWorkarounds();
73
- class MetadataEmitter extends rtti_visitor_base_1.RttiVisitor {
74
- constructor() {
75
- super(...arguments);
76
- this.metadataEncoder = new metadata_encoder_1.MetadataEncoder(this.ctx);
77
- this.collector = new metadata_collector_1.InlineMetadataCollector();
78
- }
79
- static emit(sourceFile, ctx) {
80
- return new MetadataEmitter(ctx).visitNode(sourceFile);
81
- }
82
- collectMetadata(callback) {
83
- let originalCollector = this.collector;
84
- let originalOutboardCollector = this.outboardCollector;
85
- let collector = new metadata_collector_1.ExternalMetadataCollector();
86
- if (workarounds_1.WORKAROUND_TYPESCRIPT_49794) {
87
- this.collector = this.outboardCollector = collector;
88
- } else {
89
- this.outboardCollector = collector;
90
- }
91
- try {
92
- return {
93
- node: callback(),
94
- decorators: collector.decorators
95
- };
96
- } finally {
97
- this.collector = originalCollector;
98
- this.outboardCollector = originalOutboardCollector;
99
- }
100
- }
101
- /**
102
- * In some cases we need to collect all metadata under an entire node subtree. An example is for class expressions
103
- * which are not valid decorator targets, but we still support emitting for them.
104
- * @param callback
105
- * @returns
106
- */
107
- collectAllMetadata(callback) {
108
- let originalCollector = this.collector;
109
- let originalOutboardCollector = this.outboardCollector;
110
- let collector = new metadata_collector_1.ExternalMetadataCollector();
111
- this.collector = collector;
112
- this.outboardCollector = collector;
113
- try {
114
- return {
115
- node: callback(),
116
- decorators: collector.decorators
117
- };
118
- } finally {
119
- this.collector = originalCollector;
120
- this.outboardCollector = originalOutboardCollector;
121
- }
122
- }
123
- scope(nameScope, callback) {
124
- let originalScope = this.ctx.currentNameScope;
125
- this.ctx.currentNameScope = nameScope;
126
- try {
127
- return callback();
128
- } finally {
129
- this.ctx.currentNameScope = originalScope;
130
- }
131
- }
132
- everyNode(node) {
133
- if ((0, utils_1.getRttiDocTagFromNode)(node, "skip") === "")
134
- return false;
135
- if ((0, utils_1.isStatement)(node) && node.parent && ts.isSourceFile(node.parent)) {
136
- this.ctx.currentTopStatement = node;
137
- }
138
- }
139
- property(decl) {
140
- return this.collector.collect(decl, this.metadataEncoder.property(decl));
141
- }
142
- propertySignature(signature) {
143
- if (ts.isInterfaceDeclaration(signature.parent))
144
- signature = this.outboardCollector.collect(signature, this.metadataEncoder.property(signature));
145
- return signature;
146
- }
147
- class(decl) {
148
- let details = class_analyzer_1.ClassAnalyzer.analyze(decl, this.context);
149
- let className = decl.name.getText();
150
- if ((0, utils_1.hasModifier)(ts.canHaveModifiers(decl) ? ts.getModifiers(decl) : [], ts.SyntaxKind.DeclareKeyword))
151
- return decl;
152
- return this.scope(decl, () => {
153
- let outboardMetadata = this.collectMetadata(() => {
154
- try {
155
- decl = this.collector.collect(decl, this.metadataEncoder.class(decl, details));
156
- decl = this.visitEachChild(decl);
157
- return decl;
158
- } catch (e) {
159
- console.error(`RTTI: During outboard metadata collection for class ${className}: ${e.message}`);
160
- throw e;
161
- }
162
- });
163
- if (this.trace)
164
- console.log(` - ${outboardMetadata.decorators.length} outboard decorators`);
165
- return [
166
- decl,
167
- ...this.emitOutboardMetadata(decl, outboardMetadata)
168
- ];
169
- });
170
- }
171
- export(decl) {
172
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
173
- if (!decl.exportClause)
174
- return this.visitEachChild(decl);
175
- if (ts.isNamedExports(decl.exportClause)) {
176
- let statements = [];
177
- for (let expo of decl.exportClause.elements) {
178
- let ident = expo.name;
179
- let localSymbol = this.checker.getSymbolAtLocation(ident);
180
- let rootSymbol = this.checker.getAliasedSymbol(localSymbol);
181
- let type = this.checker.getTypeAtLocation((_a = rootSymbol === null || rootSymbol === void 0 ? void 0 : rootSymbol.declarations) === null || _a === void 0 ? void 0 : _a[0]);
182
- let reifiedType = type.isClass() || ((_b = type.symbol) === null || _b === void 0 ? void 0 : _b.name) === "Promise" || !!((_c = type.symbol) === null || _c === void 0 ? void 0 : _c.valueDeclaration);
183
- let sourceFile = (_f = (_e = (_d = type.symbol) === null || _d === void 0 ? void 0 : _d.declarations) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.getSourceFile();
184
- let isLocal = sourceFile === this.ctx.sourceFile;
185
- if (!reifiedType && !isLocal) {
186
- let parents = [];
187
- let parent = (_g = type.symbol) === null || _g === void 0 ? void 0 : _g["parent"];
188
- while (parent) {
189
- parents.push(parent);
190
- parent = parent["parent"];
191
- }
192
- let importName;
193
- if (parents.length > 1) {
194
- importName = parents[1].name;
195
- } else {
196
- importName = (_h = type.symbol) === null || _h === void 0 ? void 0 : _h.name;
197
- }
198
- let modulePath = parents[0] ? JSON.parse(parents[0].name) : void 0;
199
- if (localSymbol) {
200
- let localDecl = localSymbol.declarations[0];
201
- if (localDecl) {
202
- if (ts.isExportSpecifier(localDecl)) {
203
- localSymbol = this.checker.getImmediateAliasedSymbol(localSymbol);
204
- localDecl = localSymbol === null || localSymbol === void 0 ? void 0 : localSymbol.declarations[0];
205
- }
206
- if (localDecl) {
207
- if (ts.isImportSpecifier(localDecl)) {
208
- let specifier = (_l = (_k = (_j = localDecl.parent) === null || _j === void 0 ? void 0 : _j.parent) === null || _k === void 0 ? void 0 : _k.parent) === null || _l === void 0 ? void 0 : _l.moduleSpecifier;
209
- let detectedImportPath = specifier.text;
210
- if (detectedImportPath)
211
- modulePath = detectedImportPath;
212
- } else {
213
- continue;
214
- }
215
- }
216
- }
217
- }
218
- if (parents.length === 1 && ((_m = type.symbol) === null || _m === void 0 ? void 0 : _m.name) === "default") {
219
- statements.push(this.exportInterfaceToken(ident.text, `default`, modulePath));
220
- } else {
221
- statements.push(this.exportInterfaceToken(ident.text, void 0, modulePath));
222
- }
223
- }
224
- }
225
- return [
226
- this.visitEachChild(decl),
227
- ...statements
228
- ];
229
- }
230
- }
231
- exportInterfaceToken(name, propertyName, from) {
232
- return ts.factory.createExportDeclaration(void 0, false, ts.factory.createNamedExports([
233
- ts.factory.createExportSpecifier(false, propertyName ? ts.factory.createIdentifier(propertyName) : void 0, ts.factory.createIdentifier(`IΦ${name}`))
234
- ]), from ? ts.factory.createStringLiteral(from) : void 0);
235
- }
236
- enum(decl) {
237
- if ((0, utils_1.hasModifier)((0, utils_1.getModifiers)(decl), ts.SyntaxKind.ConstKeyword)) {
238
- return decl;
239
- }
240
- let type = this.checker.getTypeAtLocation(decl);
241
- return [
242
- decl,
243
- ts.factory.createExpressionStatement(ts.factory.createCallExpression(ts.factory.createArrowFunction([], [], [
244
- ts.factory.createParameterDeclaration([], void 0, "t")
245
- ], void 0, ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), ts.factory.createBinaryExpression(ts.factory.createElementAccessExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier("__RΦ"), "t"), type["id"]), ts.factory.createToken(ts.SyntaxKind.EqualsToken), (0, serialize_1.serialize)({ TΦ: common_1.T_ENUM, e: (0, literal_node_1.literalNode)(ts.factory.createIdentifier("t")) }))), [], [
246
- ts.factory.createIdentifier(decl.name.text)
247
- ]))
248
- ];
249
- }
250
- interface(decl) {
251
- let emitName = decl.name.text;
252
- if ((0, utils_1.hasModifiers)((0, utils_1.getModifiers)(decl), [ts.SyntaxKind.ExportKeyword, ts.SyntaxKind.DefaultKeyword]))
253
- emitName = "default";
254
- let tokenDecl = ts.factory.createVariableStatement([], ts.factory.createVariableDeclarationList([ts.factory.createVariableDeclaration(ts.factory.createIdentifier(`IΦ${emitName}`), void 0, void 0, (0, serialize_1.serialize)({
255
- name: decl.name.text,
256
- prototype: {},
257
- identity: (0, literal_node_1.literalNode)(ts.factory.createCallExpression(ts.factory.createIdentifier("Symbol"), void 0, [ts.factory.createStringLiteral(`${decl.name.text} (interface)`)]))
258
- }))], ts.NodeFlags.None));
259
- this.ctx.interfaceSymbols.push({
260
- interfaceDecl: decl,
261
- symbolDecl: []
262
- });
263
- if (this.trace)
264
- console.log(`Decorating interface ${decl.name.text}`);
265
- let details = Object.assign(Object.assign({}, interface_analyzer_1.InterfaceAnalyzer.analyze(decl, this.context)), { staticPropertyNames: [], staticMethodNames: [] });
266
- let interfaceName = decl.name.getText();
267
- let interfaceDecl = decl;
268
- return this.scope(decl, () => {
269
- let result = this.collectMetadata(() => {
270
- try {
271
- return this.visitEachChild(decl);
272
- } catch (e) {
273
- console.error(`RTTI: During metadata collection for interface ${interfaceName}: ${e.message}`);
274
- throw e;
275
- }
276
- });
277
- return [
278
- result.node,
279
- tokenDecl,
280
- ...(0, utils_1.hasModifier)((0, utils_1.getModifiers)(decl), ts.SyntaxKind.ExportKeyword) ? [this.exportInterfaceToken(emitName)] : [],
281
- ...this.metadataEncoder.class(decl, details).map((decorator) => ts.factory.createExpressionStatement(ts.factory.createCallExpression(decorator.expression, void 0, [
282
- ts.factory.createIdentifier(`IΦ${emitName}`)
283
- ]))),
284
- ...this.emitOutboardMetadata(interfaceDecl, result)
285
- ];
286
- });
287
- }
288
- functionDecl(decl) {
289
- if (!decl.body)
290
- return;
291
- let metadata = this.metadataEncoder.method(decl);
292
- let functionName = decl.name.getText();
293
- if (decl.parent && !ts.isBlock(decl.parent) && !ts.isSourceFile(decl.parent)) {
294
- let expr = ts.factory.createFunctionExpression((0, utils_1.getModifiers)(decl), decl.asteriskToken, decl.name, decl.typeParameters, decl.parameters, decl.type, decl.body);
295
- try {
296
- expr = this.visitEachChild(expr);
297
- } catch (e) {
298
- console.error(`RTTI: During non-block function declaration ${functionName}: ${e.message}`);
299
- throw e;
300
- }
301
- return ts.factory.createVariableStatement([], [
302
- ts.factory.createVariableDeclaration(decl.name.getText(), void 0, void 0, (0, metadata_decorator_1.decorateFunctionExpression)(expr, metadata))
303
- ]);
304
- }
305
- try {
306
- decl = this.visitEachChild(decl);
307
- } catch (e) {
308
- console.error(`RTTI: During function declaration ${functionName}: ${e.message}`);
309
- throw e;
310
- }
311
- return [
312
- decl,
313
- ...metadata.map((dec) => ts.factory.createExpressionStatement(ts.factory.createCallExpression(dec.expression, void 0, [
314
- ts.factory.createIdentifier(`${decl.name.text}`)
315
- ])))
316
- ];
317
- }
318
- functionExpr(decl) {
319
- return (0, metadata_decorator_1.decorateFunctionExpression)(this.visitEachChild(decl), this.metadataEncoder.method(decl));
320
- }
321
- classExpr(decl) {
322
- let details = class_analyzer_1.ClassAnalyzer.analyze(decl, this.context);
323
- return this.scope(decl, () => {
324
- let result = this.collectAllMetadata(() => {
325
- try {
326
- decl = this.visitEachChild(decl);
327
- } catch (e) {
328
- console.error(`RTTI: During metadata collection for class expression: ${e.message}`);
329
- throw e;
330
- }
331
- });
332
- return (0, metadata_decorator_1.decorateClassExpression)(decl, this.metadataEncoder.class(decl, details), result.decorators);
333
- });
334
- }
335
- method(decl) {
336
- var _a, _b;
337
- if (!decl.parent || !(ts.isClassDeclaration(decl.parent) || ts.isClassExpression(decl.parent)))
338
- return;
339
- if (this.trace)
340
- console.log(`Decorating class method ${(_b = (_a = decl.parent.name) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : "<anonymous>"}#${decl.name.getText()}`);
341
- let metadata = this.metadataEncoder.method(decl);
342
- let isAbstract = (0, utils_1.hasModifier)((0, utils_1.getModifiers)(decl), ts.SyntaxKind.AbstractKeyword);
343
- if (isAbstract) {
344
- this.outboardCollector.collect(decl, metadata);
345
- } else {
346
- this.outboardCollector.collect(decl, [
347
- (0, metadata_decorator_1.directMetadataDecorator)("rt:f", this.metadataEncoder.methodFlags(decl)),
348
- (0, metadata_decorator_1.hostMetadataDecorator)()
349
- ]);
350
- decl = this.collector.collect(decl, metadata);
351
- }
352
- return this.visitEachChild(decl);
353
- }
354
- methodSignature(node) {
355
- if (!ts.isInterfaceDeclaration(node.parent))
356
- return;
357
- if (this.trace)
358
- console.log(`Decorating interface method ${node.parent.name.text}#${node.name.getText()}`);
359
- return this.outboardCollector.collect(node, this.metadataEncoder.method(node));
360
- }
361
- emitOutboardMetadataExpressions(node, outboardMetadata) {
362
- let nodes = [];
363
- let elementName = node.name.text;
364
- for (let dec of outboardMetadata.decorators) {
365
- let host = ts.factory.createIdentifier(elementName);
366
- if (ts.isInterfaceDeclaration(node)) {
367
- let interfaceName = `IΦ${node.name.text}`;
368
- if ((0, utils_1.hasModifiers)((0, utils_1.getModifiers)(node), [ts.SyntaxKind.ExportKeyword, ts.SyntaxKind.DefaultKeyword]))
369
- interfaceName = `IΦdefault`;
370
- host = ts.factory.createIdentifier(interfaceName);
371
- }
372
- let isStatic = false;
373
- if (ts.isPropertyDeclaration(dec.node) || ts.isMethodDeclaration(dec.node) || ts.isGetAccessor(dec.node) || ts.isSetAccessor(dec.node))
374
- isStatic = (0, utils_1.hasModifier)((0, utils_1.getModifiers)(dec.node), ts.SyntaxKind.StaticKeyword);
375
- if (ts.isClassDeclaration(dec.node))
376
- isStatic = true;
377
- if (!isStatic)
378
- host = ts.factory.createPropertyAccessExpression(host, "prototype");
379
- if (dec.property) {
380
- if (dec.direct) {
381
- host = ts.factory.createElementAccessExpression(host, (0, utils_1.expressionForPropertyName)(dec.property));
382
- nodes.push(ts.factory.createCallExpression(dec.decorator.expression, void 0, [
383
- host
384
- ]));
385
- } else {
386
- nodes.push(ts.factory.createCallExpression(dec.decorator.expression, void 0, [
387
- host,
388
- (0, utils_1.expressionForPropertyName)(dec.property)
389
- ]));
390
- }
391
- } else {
392
- nodes.push(ts.factory.createCallExpression(dec.decorator.expression, void 0, [
393
- host
394
- ]));
395
- }
396
- }
397
- return nodes;
398
- }
399
- emitOutboardMetadata(node, outboardMetadata) {
400
- return this.emitOutboardMetadataExpressions(node, outboardMetadata).map((x) => ts.factory.createExpressionStatement(x));
401
- }
402
- }
403
- __decorate([
404
- (0, visitor_base_1.Visit)([ts.SyntaxKind.PropertyDeclaration, ts.SyntaxKind.GetAccessor, ts.SyntaxKind.SetAccessor]),
405
- __metadata("design:type", Function),
406
- __metadata("design:paramtypes", [Object]),
407
- __metadata("design:returntype", void 0)
408
- ], MetadataEmitter.prototype, "property", null);
409
- __decorate([
410
- (0, visitor_base_1.Visit)(ts.SyntaxKind.PropertySignature),
411
- __metadata("design:type", Function),
412
- __metadata("design:paramtypes", [Object]),
413
- __metadata("design:returntype", void 0)
414
- ], MetadataEmitter.prototype, "propertySignature", null);
415
- __decorate([
416
- (0, visitor_base_1.Visit)(ts.SyntaxKind.ClassDeclaration),
417
- __metadata("design:type", Function),
418
- __metadata("design:paramtypes", [Object]),
419
- __metadata("design:returntype", void 0)
420
- ], MetadataEmitter.prototype, "class", null);
421
- __decorate([
422
- (0, visitor_base_1.Visit)(ts.SyntaxKind.ExportDeclaration),
423
- __metadata("design:type", Function),
424
- __metadata("design:paramtypes", [Object]),
425
- __metadata("design:returntype", void 0)
426
- ], MetadataEmitter.prototype, "export", null);
427
- __decorate([
428
- (0, visitor_base_1.Visit)(ts.SyntaxKind.EnumDeclaration),
429
- __metadata("design:type", Function),
430
- __metadata("design:paramtypes", [Object]),
431
- __metadata("design:returntype", void 0)
432
- ], MetadataEmitter.prototype, "enum", null);
433
- __decorate([
434
- (0, visitor_base_1.Visit)(ts.SyntaxKind.InterfaceDeclaration),
435
- __metadata("design:type", Function),
436
- __metadata("design:paramtypes", [Object]),
437
- __metadata("design:returntype", void 0)
438
- ], MetadataEmitter.prototype, "interface", null);
439
- __decorate([
440
- (0, visitor_base_1.Visit)(ts.SyntaxKind.FunctionDeclaration),
441
- __metadata("design:type", Function),
442
- __metadata("design:paramtypes", [Object]),
443
- __metadata("design:returntype", void 0)
444
- ], MetadataEmitter.prototype, "functionDecl", null);
445
- __decorate([
446
- (0, visitor_base_1.Visit)([ts.SyntaxKind.FunctionExpression, ts.SyntaxKind.ArrowFunction]),
447
- __metadata("design:type", Function),
448
- __metadata("design:paramtypes", [Object]),
449
- __metadata("design:returntype", void 0)
450
- ], MetadataEmitter.prototype, "functionExpr", null);
451
- __decorate([
452
- (0, visitor_base_1.Visit)(ts.SyntaxKind.ClassExpression),
453
- __metadata("design:type", Function),
454
- __metadata("design:paramtypes", [Object]),
455
- __metadata("design:returntype", void 0)
456
- ], MetadataEmitter.prototype, "classExpr", null);
457
- __decorate([
458
- (0, visitor_base_1.Visit)(ts.SyntaxKind.MethodDeclaration),
459
- __metadata("design:type", Function),
460
- __metadata("design:paramtypes", [Object]),
461
- __metadata("design:returntype", void 0)
462
- ], MetadataEmitter.prototype, "method", null);
463
- __decorate([
464
- (0, visitor_base_1.Visit)(ts.SyntaxKind.MethodSignature),
465
- __metadata("design:type", Function),
466
- __metadata("design:paramtypes", [Object]),
467
- __metadata("design:returntype", void 0)
468
- ], MetadataEmitter.prototype, "methodSignature", null);
469
- metadataEmitter.MetadataEmitter = MetadataEmitter;
470
- return metadataEmitter;
471
- }
472
- export {
473
- requireMetadataEmitter as __require
474
- };
475
- //# sourceMappingURL=metadata-emitter.js.map