static-injector 2.1.1 → 2.2.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.
- package/import/commonjs/index.js +127 -197
- package/import/{es2015 → es2022}/di/create_injector.js +0 -2
- package/import/{es2015 → es2022}/di/forward_ref.js +29 -2
- package/import/{es2015 → es2022}/di/injection_token.js +5 -3
- package/import/{es2015 → es2022}/di/injector.js +15 -16
- package/import/{es2015 → es2022}/di/injector_compatibility.js +8 -3
- package/import/{es2015 → es2022}/di/interface/defs.js +2 -16
- package/import/{es2015 → es2022}/di/interface/injector.js +1 -1
- package/import/es2022/di/provider_collection.js +104 -0
- package/import/{es2015 → es2022}/di/r3_injector.js +46 -15
- package/import/{es2015 → es2022}/errors.js +4 -2
- package/import/{es2015 → es2022}/render3/error_code.js +1 -0
- package/import/es2022/render3/fields.js +22 -0
- package/import/{fesm2015 → fesm2022}/index.js +127 -198
- package/import/typings/di/create_injector.d.ts +3 -5
- package/import/typings/di/forward_ref.d.ts +29 -2
- package/import/typings/di/inject_switch.d.ts +1 -1
- package/import/typings/di/injection_token.d.ts +1 -1
- package/import/typings/di/injector.d.ts +3 -3
- package/import/typings/di/injector_compatibility.d.ts +1 -0
- package/import/typings/di/interface/defs.d.ts +2 -1
- package/import/typings/di/interface/injector.d.ts +2 -2
- package/import/typings/di/interface/provider.d.ts +7 -7
- package/import/typings/di/metadata.d.ts +4 -4
- package/import/typings/di/provider_collection.d.ts +1 -12
- package/import/typings/di/r3_injector.d.ts +8 -6
- package/import/typings/di/scope.d.ts +1 -1
- package/import/typings/errors.d.ts +28 -3
- package/import/typings/render3/fields.d.ts +9 -0
- package/import/typings/util/decorators.d.ts +1 -0
- package/package.json +7 -7
- package/readme.md +4 -1
- package/transform/compiler/src/injectable_compiler_2.d.ts +0 -1
- package/transform/compiler/src/injectable_compiler_2.js +31 -16
- package/transform/compiler/src/output/output_ast.d.ts +53 -10
- package/transform/compiler/src/output/output_ast.js +211 -12
- package/transform/compiler/src/parse_util.js +10 -0
- package/transform/compiler/src/render3/partial/api.js +1 -1
- package/transform/compiler/src/render3/r3_factory.d.ts +0 -8
- package/transform/compiler/src/render3/r3_factory.js +5 -4
- package/transform/compiler/src/render3/r3_identifiers.js +37 -37
- package/transform/compiler/src/render3/view/util.js +1 -3
- package/transform/compiler-cli/src/ngtsc/annotations/common/src/di.js +2 -4
- package/transform/compiler-cli/src/ngtsc/annotations/common/src/factory.js +1 -0
- package/transform/compiler-cli/src/ngtsc/annotations/common/src/util.d.ts +1 -1
- package/transform/compiler-cli/src/ngtsc/annotations/common/src/util.js +5 -9
- package/transform/compiler-cli/src/ngtsc/annotations/src/injectable.d.ts +2 -1
- package/transform/compiler-cli/src/ngtsc/annotations/src/injectable.js +12 -8
- package/transform/compiler-cli/src/ngtsc/diagnostics/error.d.ts +2 -2
- package/transform/compiler-cli/src/ngtsc/diagnostics/error.js +8 -4
- package/transform/compiler-cli/src/ngtsc/diagnostics/error_code.js +1 -1
- package/transform/compiler-cli/src/ngtsc/imports/src/default.js +1 -2
- package/transform/compiler-cli/src/ngtsc/reflection/src/host.d.ts +24 -173
- package/transform/compiler-cli/src/ngtsc/reflection/src/host.js +2 -51
- package/transform/compiler-cli/src/ngtsc/reflection/src/typescript.d.ts +5 -3
- package/transform/compiler-cli/src/ngtsc/reflection/src/typescript.js +5 -10
- package/transform/compiler-cli/src/ngtsc/transform/src/api.d.ts +5 -23
- package/transform/compiler-cli/src/ngtsc/transform/src/api.js +0 -21
- package/transform/compiler-cli/src/ngtsc/transform/src/utils.js +1 -2
- package/transform/compiler-cli/src/ngtsc/translator/src/api/ast_factory.d.ts +7 -0
- package/transform/compiler-cli/src/ngtsc/translator/src/context.js +1 -0
- package/transform/compiler-cli/src/ngtsc/translator/src/import_manager.js +4 -2
- package/transform/compiler-cli/src/ngtsc/translator/src/translator.d.ts +1 -0
- package/transform/compiler-cli/src/ngtsc/translator/src/translator.js +10 -4
- package/transform/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.d.ts +2 -1
- package/transform/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.js +20 -16
- package/transform/injectable-transform.d.ts +2 -2
- package/transform/injectable-transform.js +32 -6
- package/import/es2015/di/provider_collection.js +0 -244
- package/import/es2015/render3/fields.js +0 -11
- /package/import/{es2015 → es2022}/di/initializer_token.js +0 -0
- /package/import/{es2015 → es2022}/di/inject_switch.js +0 -0
- /package/import/{es2015 → es2022}/di/injectable.js +0 -0
- /package/import/{es2015 → es2022}/di/injector_marker.js +0 -0
- /package/import/{es2015 → es2022}/di/injector_token.js +0 -0
- /package/import/{es2015 → es2022}/di/interface/provider.js +0 -0
- /package/import/{es2015 → es2022}/di/internal_tokens.js +0 -0
- /package/import/{es2015 → es2022}/di/metadata.js +0 -0
- /package/import/{es2015 → es2022}/di/null_injector.js +0 -0
- /package/import/{es2015 → es2022}/di/provider_token.js +0 -0
- /package/import/{es2015 → es2022}/di/scope.js +0 -0
- /package/import/{es2015 → es2022}/error_details_base_url.js +0 -0
- /package/import/{es2015 → es2022}/index.js +0 -0
- /package/import/{es2015 → es2022}/interface/lifecycle_hooks.js +0 -0
- /package/import/{es2015 → es2022}/interface/type.js +0 -0
- /package/import/{es2015 → es2022}/render3/definition_factory.js +0 -0
- /package/import/{es2015 → es2022}/render3/di.js +0 -0
- /package/import/{es2015 → es2022}/render3/errors_di.js +0 -0
- /package/import/{es2015 → es2022}/render3/instructions/di.js +0 -0
- /package/import/{es2015 → es2022}/render3/util/stringify_utils.js +0 -0
- /package/import/{es2015 → es2022}/util/array_utils.js +0 -0
- /package/import/{es2015 → es2022}/util/closure.js +0 -0
- /package/import/{es2015 → es2022}/util/decorators.js +0 -0
- /package/import/{es2015 → es2022}/util/empty.js +0 -0
- /package/import/{es2015 → es2022}/util/property.js +0 -0
- /package/import/{es2015 → es2022}/util/stringify.js +0 -0
|
@@ -7,15 +7,16 @@
|
|
|
7
7
|
* found in the LICENSE file at https://angular.io/license
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
11
|
-
exports.isNull = exports.literal = exports.ifStmt = exports.fn = exports.not = exports.unary = exports.literalMap = exports.literalArr = exports.typeofExpr = exports.expressionType = exports.importType = exports.importExpr = exports.variable = exports.jsDocComment = exports.leadingComment = exports.IfStmt = exports.ReturnStatement = exports.ExpressionStatement = exports.DeclareFunctionStmt = exports.DeclareVarStmt = exports.Statement = exports.JSDocComment = void 0;
|
|
10
|
+
exports.TYPED_NULL_EXPR = exports.NULL_EXPR = exports.CommaExpr = exports.LiteralMapExpr = exports.LiteralMapEntry = exports.LiteralArrayExpr = exports.ReadKeyExpr = exports.ReadPropExpr = exports.BinaryOperatorExpr = exports.UnaryOperatorExpr = exports.FunctionExpr = exports.FnParam = exports.NotExpr = exports.DynamicImportExpr = exports.ConditionalExpr = exports.ExternalReference = exports.ExternalExpr = exports.LiteralPiece = exports.TemplateLiteralElement = exports.TemplateLiteral = exports.LiteralExpr = exports.InstantiateExpr = exports.InvokeFunctionExpr = exports.WritePropExpr = exports.WriteKeyExpr = exports.WriteVarExpr = exports.WrappedNodeExpr = exports.TypeofExpr = exports.ReadVarExpr = exports.Expression = exports.areAllEquivalent = exports.nullSafeIsEquivalent = exports.BinaryOperator = exports.UnaryOperator = exports.NONE_TYPE = exports.FUNCTION_TYPE = exports.STRING_TYPE = exports.NUMBER_TYPE = exports.INT_TYPE = exports.BOOL_TYPE = exports.INFERRED_TYPE = exports.DYNAMIC_TYPE = exports.TransplantedType = exports.MapType = exports.ArrayType = exports.ExpressionType = exports.BuiltinType = exports.BuiltinTypeName = exports.Type = exports.TypeModifier = void 0;
|
|
11
|
+
exports.isNull = exports.literal = exports.ifStmt = exports.fn = exports.not = exports.unary = exports.literalMap = exports.literalArr = exports.typeofExpr = exports.transplantedType = exports.expressionType = exports.importType = exports.importExpr = exports.variable = exports.jsDocComment = exports.leadingComment = exports.IfStmt = exports.ReturnStatement = exports.ExpressionStatement = exports.DeclareFunctionStmt = exports.DeclareVarStmt = exports.Statement = exports.JSDocComment = exports.LeadingComment = exports.StmtModifier = void 0;
|
|
12
12
|
//// Types
|
|
13
13
|
var TypeModifier;
|
|
14
14
|
(function (TypeModifier) {
|
|
15
15
|
TypeModifier[TypeModifier["None"] = 0] = "None";
|
|
16
16
|
TypeModifier[TypeModifier["Const"] = 1] = "Const";
|
|
17
|
-
})(TypeModifier
|
|
17
|
+
})(TypeModifier || (exports.TypeModifier = TypeModifier = {}));
|
|
18
18
|
class Type {
|
|
19
|
+
modifiers;
|
|
19
20
|
constructor(modifiers = TypeModifier.None) {
|
|
20
21
|
this.modifiers = modifiers;
|
|
21
22
|
}
|
|
@@ -34,8 +35,9 @@ var BuiltinTypeName;
|
|
|
34
35
|
BuiltinTypeName[BuiltinTypeName["Function"] = 5] = "Function";
|
|
35
36
|
BuiltinTypeName[BuiltinTypeName["Inferred"] = 6] = "Inferred";
|
|
36
37
|
BuiltinTypeName[BuiltinTypeName["None"] = 7] = "None";
|
|
37
|
-
})(BuiltinTypeName
|
|
38
|
+
})(BuiltinTypeName || (exports.BuiltinTypeName = BuiltinTypeName = {}));
|
|
38
39
|
class BuiltinType extends Type {
|
|
40
|
+
name;
|
|
39
41
|
constructor(name, modifiers) {
|
|
40
42
|
super(modifiers);
|
|
41
43
|
this.name = name;
|
|
@@ -46,6 +48,8 @@ class BuiltinType extends Type {
|
|
|
46
48
|
}
|
|
47
49
|
exports.BuiltinType = BuiltinType;
|
|
48
50
|
class ExpressionType extends Type {
|
|
51
|
+
value;
|
|
52
|
+
typeParams;
|
|
49
53
|
constructor(value, modifiers, typeParams = null) {
|
|
50
54
|
super(modifiers);
|
|
51
55
|
this.value = value;
|
|
@@ -57,6 +61,7 @@ class ExpressionType extends Type {
|
|
|
57
61
|
}
|
|
58
62
|
exports.ExpressionType = ExpressionType;
|
|
59
63
|
class ArrayType extends Type {
|
|
64
|
+
of;
|
|
60
65
|
constructor(of, modifiers) {
|
|
61
66
|
super(modifiers);
|
|
62
67
|
this.of = of;
|
|
@@ -67,6 +72,7 @@ class ArrayType extends Type {
|
|
|
67
72
|
}
|
|
68
73
|
exports.ArrayType = ArrayType;
|
|
69
74
|
class MapType extends Type {
|
|
75
|
+
valueType;
|
|
70
76
|
constructor(valueType, modifiers) {
|
|
71
77
|
super(modifiers);
|
|
72
78
|
this.valueType = valueType || null;
|
|
@@ -76,6 +82,17 @@ class MapType extends Type {
|
|
|
76
82
|
}
|
|
77
83
|
}
|
|
78
84
|
exports.MapType = MapType;
|
|
85
|
+
class TransplantedType extends Type {
|
|
86
|
+
type;
|
|
87
|
+
constructor(type, modifiers) {
|
|
88
|
+
super(modifiers);
|
|
89
|
+
this.type = type;
|
|
90
|
+
}
|
|
91
|
+
visitType(visitor, context) {
|
|
92
|
+
return visitor.visitTransplantedType(this, context);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.TransplantedType = TransplantedType;
|
|
79
96
|
exports.DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);
|
|
80
97
|
exports.INFERRED_TYPE = new BuiltinType(BuiltinTypeName.Inferred);
|
|
81
98
|
exports.BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);
|
|
@@ -89,7 +106,7 @@ var UnaryOperator;
|
|
|
89
106
|
(function (UnaryOperator) {
|
|
90
107
|
UnaryOperator[UnaryOperator["Minus"] = 0] = "Minus";
|
|
91
108
|
UnaryOperator[UnaryOperator["Plus"] = 1] = "Plus";
|
|
92
|
-
})(UnaryOperator
|
|
109
|
+
})(UnaryOperator || (exports.UnaryOperator = UnaryOperator = {}));
|
|
93
110
|
var BinaryOperator;
|
|
94
111
|
(function (BinaryOperator) {
|
|
95
112
|
BinaryOperator[BinaryOperator["Equals"] = 0] = "Equals";
|
|
@@ -109,7 +126,7 @@ var BinaryOperator;
|
|
|
109
126
|
BinaryOperator[BinaryOperator["Bigger"] = 14] = "Bigger";
|
|
110
127
|
BinaryOperator[BinaryOperator["BiggerEquals"] = 15] = "BiggerEquals";
|
|
111
128
|
BinaryOperator[BinaryOperator["NullishCoalesce"] = 16] = "NullishCoalesce";
|
|
112
|
-
})(BinaryOperator
|
|
129
|
+
})(BinaryOperator || (exports.BinaryOperator = BinaryOperator = {}));
|
|
113
130
|
function nullSafeIsEquivalent(base, other) {
|
|
114
131
|
if (base == null || other == null) {
|
|
115
132
|
return base == other;
|
|
@@ -134,6 +151,8 @@ function areAllEquivalent(base, other) {
|
|
|
134
151
|
}
|
|
135
152
|
exports.areAllEquivalent = areAllEquivalent;
|
|
136
153
|
class Expression {
|
|
154
|
+
type;
|
|
155
|
+
sourceSpan;
|
|
137
156
|
constructor(type, sourceSpan) {
|
|
138
157
|
this.type = type || null;
|
|
139
158
|
this.sourceSpan = sourceSpan || null;
|
|
@@ -153,6 +172,7 @@ class Expression {
|
|
|
153
172
|
}
|
|
154
173
|
exports.Expression = Expression;
|
|
155
174
|
class ReadVarExpr extends Expression {
|
|
175
|
+
name;
|
|
156
176
|
constructor(name, type, sourceSpan) {
|
|
157
177
|
super(type, sourceSpan);
|
|
158
178
|
this.name = name;
|
|
@@ -166,12 +186,16 @@ class ReadVarExpr extends Expression {
|
|
|
166
186
|
visitExpression(visitor, context) {
|
|
167
187
|
return visitor.visitReadVarExpr(this, context);
|
|
168
188
|
}
|
|
189
|
+
clone() {
|
|
190
|
+
return new ReadVarExpr(this.name, this.type, this.sourceSpan);
|
|
191
|
+
}
|
|
169
192
|
set(value) {
|
|
170
193
|
return new WriteVarExpr(this.name, value, null, this.sourceSpan);
|
|
171
194
|
}
|
|
172
195
|
}
|
|
173
196
|
exports.ReadVarExpr = ReadVarExpr;
|
|
174
197
|
class TypeofExpr extends Expression {
|
|
198
|
+
expr;
|
|
175
199
|
constructor(expr, type, sourceSpan) {
|
|
176
200
|
super(type, sourceSpan);
|
|
177
201
|
this.expr = expr;
|
|
@@ -185,9 +209,13 @@ class TypeofExpr extends Expression {
|
|
|
185
209
|
isConstant() {
|
|
186
210
|
return this.expr.isConstant();
|
|
187
211
|
}
|
|
212
|
+
clone() {
|
|
213
|
+
return new TypeofExpr(this.expr.clone());
|
|
214
|
+
}
|
|
188
215
|
}
|
|
189
216
|
exports.TypeofExpr = TypeofExpr;
|
|
190
217
|
class WrappedNodeExpr extends Expression {
|
|
218
|
+
node;
|
|
191
219
|
constructor(node, type, sourceSpan) {
|
|
192
220
|
super(type, sourceSpan);
|
|
193
221
|
this.node = node;
|
|
@@ -201,9 +229,14 @@ class WrappedNodeExpr extends Expression {
|
|
|
201
229
|
visitExpression(visitor, context) {
|
|
202
230
|
return visitor.visitWrappedNodeExpr(this, context);
|
|
203
231
|
}
|
|
232
|
+
clone() {
|
|
233
|
+
return new WrappedNodeExpr(this.node, this.type, this.sourceSpan);
|
|
234
|
+
}
|
|
204
235
|
}
|
|
205
236
|
exports.WrappedNodeExpr = WrappedNodeExpr;
|
|
206
237
|
class WriteVarExpr extends Expression {
|
|
238
|
+
name;
|
|
239
|
+
value;
|
|
207
240
|
constructor(name, value, type, sourceSpan) {
|
|
208
241
|
super(type || value.type, sourceSpan);
|
|
209
242
|
this.name = name;
|
|
@@ -220,6 +253,9 @@ class WriteVarExpr extends Expression {
|
|
|
220
253
|
visitExpression(visitor, context) {
|
|
221
254
|
return visitor.visitWriteVarExpr(this, context);
|
|
222
255
|
}
|
|
256
|
+
clone() {
|
|
257
|
+
return new WriteVarExpr(this.name, this.value.clone(), this.type, this.sourceSpan);
|
|
258
|
+
}
|
|
223
259
|
toDeclStmt(type, modifiers) {
|
|
224
260
|
return new DeclareVarStmt(this.name, this.value, type, modifiers, this.sourceSpan);
|
|
225
261
|
}
|
|
@@ -229,6 +265,9 @@ class WriteVarExpr extends Expression {
|
|
|
229
265
|
}
|
|
230
266
|
exports.WriteVarExpr = WriteVarExpr;
|
|
231
267
|
class WriteKeyExpr extends Expression {
|
|
268
|
+
receiver;
|
|
269
|
+
index;
|
|
270
|
+
value;
|
|
232
271
|
constructor(receiver, index, value, type, sourceSpan) {
|
|
233
272
|
super(type || value.type, sourceSpan);
|
|
234
273
|
this.receiver = receiver;
|
|
@@ -247,9 +286,15 @@ class WriteKeyExpr extends Expression {
|
|
|
247
286
|
visitExpression(visitor, context) {
|
|
248
287
|
return visitor.visitWriteKeyExpr(this, context);
|
|
249
288
|
}
|
|
289
|
+
clone() {
|
|
290
|
+
return new WriteKeyExpr(this.receiver.clone(), this.index.clone(), this.value.clone(), this.type, this.sourceSpan);
|
|
291
|
+
}
|
|
250
292
|
}
|
|
251
293
|
exports.WriteKeyExpr = WriteKeyExpr;
|
|
252
294
|
class WritePropExpr extends Expression {
|
|
295
|
+
receiver;
|
|
296
|
+
name;
|
|
297
|
+
value;
|
|
253
298
|
constructor(receiver, name, value, type, sourceSpan) {
|
|
254
299
|
super(type || value.type, sourceSpan);
|
|
255
300
|
this.receiver = receiver;
|
|
@@ -268,15 +313,25 @@ class WritePropExpr extends Expression {
|
|
|
268
313
|
visitExpression(visitor, context) {
|
|
269
314
|
return visitor.visitWritePropExpr(this, context);
|
|
270
315
|
}
|
|
316
|
+
clone() {
|
|
317
|
+
return new WritePropExpr(this.receiver.clone(), this.name, this.value.clone(), this.type, this.sourceSpan);
|
|
318
|
+
}
|
|
271
319
|
}
|
|
272
320
|
exports.WritePropExpr = WritePropExpr;
|
|
273
321
|
class InvokeFunctionExpr extends Expression {
|
|
322
|
+
fn;
|
|
323
|
+
args;
|
|
324
|
+
pure;
|
|
274
325
|
constructor(fn, args, type, sourceSpan, pure = false) {
|
|
275
326
|
super(type, sourceSpan);
|
|
276
327
|
this.fn = fn;
|
|
277
328
|
this.args = args;
|
|
278
329
|
this.pure = pure;
|
|
279
330
|
}
|
|
331
|
+
// An alias for fn, which allows other logic to handle calls and property reads together.
|
|
332
|
+
get receiver() {
|
|
333
|
+
return this.fn;
|
|
334
|
+
}
|
|
280
335
|
isEquivalent(e) {
|
|
281
336
|
return (e instanceof InvokeFunctionExpr &&
|
|
282
337
|
this.fn.isEquivalent(e.fn) &&
|
|
@@ -289,9 +344,14 @@ class InvokeFunctionExpr extends Expression {
|
|
|
289
344
|
visitExpression(visitor, context) {
|
|
290
345
|
return visitor.visitInvokeFunctionExpr(this, context);
|
|
291
346
|
}
|
|
347
|
+
clone() {
|
|
348
|
+
return new InvokeFunctionExpr(this.fn.clone(), this.args.map((arg) => arg.clone()), this.type, this.sourceSpan, this.pure);
|
|
349
|
+
}
|
|
292
350
|
}
|
|
293
351
|
exports.InvokeFunctionExpr = InvokeFunctionExpr;
|
|
294
352
|
class InstantiateExpr extends Expression {
|
|
353
|
+
classExpr;
|
|
354
|
+
args;
|
|
295
355
|
constructor(classExpr, args, type, sourceSpan) {
|
|
296
356
|
super(type, sourceSpan);
|
|
297
357
|
this.classExpr = classExpr;
|
|
@@ -308,9 +368,13 @@ class InstantiateExpr extends Expression {
|
|
|
308
368
|
visitExpression(visitor, context) {
|
|
309
369
|
return visitor.visitInstantiateExpr(this, context);
|
|
310
370
|
}
|
|
371
|
+
clone() {
|
|
372
|
+
return new InstantiateExpr(this.classExpr.clone(), this.args.map((arg) => arg.clone()), this.type, this.sourceSpan);
|
|
373
|
+
}
|
|
311
374
|
}
|
|
312
375
|
exports.InstantiateExpr = InstantiateExpr;
|
|
313
376
|
class LiteralExpr extends Expression {
|
|
377
|
+
value;
|
|
314
378
|
constructor(value, type, sourceSpan) {
|
|
315
379
|
super(type, sourceSpan);
|
|
316
380
|
this.value = value;
|
|
@@ -324,18 +388,28 @@ class LiteralExpr extends Expression {
|
|
|
324
388
|
visitExpression(visitor, context) {
|
|
325
389
|
return visitor.visitLiteralExpr(this, context);
|
|
326
390
|
}
|
|
391
|
+
clone() {
|
|
392
|
+
return new LiteralExpr(this.value, this.type, this.sourceSpan);
|
|
393
|
+
}
|
|
327
394
|
}
|
|
328
395
|
exports.LiteralExpr = LiteralExpr;
|
|
329
396
|
class TemplateLiteral {
|
|
397
|
+
elements;
|
|
398
|
+
expressions;
|
|
330
399
|
constructor(elements, expressions) {
|
|
331
400
|
this.elements = elements;
|
|
332
401
|
this.expressions = expressions;
|
|
333
402
|
}
|
|
403
|
+
clone() {
|
|
404
|
+
return new TemplateLiteral(this.elements.map((el) => el.clone()), this.expressions.map((expr) => expr.clone()));
|
|
405
|
+
}
|
|
334
406
|
}
|
|
335
407
|
exports.TemplateLiteral = TemplateLiteral;
|
|
336
408
|
class TemplateLiteralElement {
|
|
409
|
+
text;
|
|
410
|
+
sourceSpan;
|
|
411
|
+
rawText;
|
|
337
412
|
constructor(text, sourceSpan, rawText) {
|
|
338
|
-
var _a;
|
|
339
413
|
this.text = text;
|
|
340
414
|
this.sourceSpan = sourceSpan;
|
|
341
415
|
// If `rawText` is not provided, try to extract the raw string from its
|
|
@@ -345,11 +419,18 @@ class TemplateLiteralElement {
|
|
|
345
419
|
// - "`" and "${" are template string control sequences that would otherwise prematurely
|
|
346
420
|
// indicate the end of the template literal element.
|
|
347
421
|
this.rawText =
|
|
348
|
-
|
|
422
|
+
rawText ??
|
|
423
|
+
sourceSpan?.toString() ??
|
|
424
|
+
escapeForTemplateLiteral(escapeSlashes(text));
|
|
425
|
+
}
|
|
426
|
+
clone() {
|
|
427
|
+
return new TemplateLiteralElement(this.text, this.sourceSpan, this.rawText);
|
|
349
428
|
}
|
|
350
429
|
}
|
|
351
430
|
exports.TemplateLiteralElement = TemplateLiteralElement;
|
|
352
431
|
class LiteralPiece {
|
|
432
|
+
text;
|
|
433
|
+
sourceSpan;
|
|
353
434
|
constructor(text, sourceSpan) {
|
|
354
435
|
this.text = text;
|
|
355
436
|
this.sourceSpan = sourceSpan;
|
|
@@ -391,6 +472,8 @@ function createCookedRawString(metaBlock, messagePart, range) {
|
|
|
391
472
|
}
|
|
392
473
|
}
|
|
393
474
|
class ExternalExpr extends Expression {
|
|
475
|
+
value;
|
|
476
|
+
typeParams;
|
|
394
477
|
constructor(value, type, typeParams = null, sourceSpan) {
|
|
395
478
|
super(type, sourceSpan);
|
|
396
479
|
this.value = value;
|
|
@@ -408,9 +491,15 @@ class ExternalExpr extends Expression {
|
|
|
408
491
|
visitExpression(visitor, context) {
|
|
409
492
|
return visitor.visitExternalExpr(this, context);
|
|
410
493
|
}
|
|
494
|
+
clone() {
|
|
495
|
+
return new ExternalExpr(this.value, this.type, this.typeParams, this.sourceSpan);
|
|
496
|
+
}
|
|
411
497
|
}
|
|
412
498
|
exports.ExternalExpr = ExternalExpr;
|
|
413
499
|
class ExternalReference {
|
|
500
|
+
moduleName;
|
|
501
|
+
name;
|
|
502
|
+
runtime;
|
|
414
503
|
constructor(moduleName, name, runtime) {
|
|
415
504
|
this.moduleName = moduleName;
|
|
416
505
|
this.name = name;
|
|
@@ -419,6 +508,9 @@ class ExternalReference {
|
|
|
419
508
|
}
|
|
420
509
|
exports.ExternalReference = ExternalReference;
|
|
421
510
|
class ConditionalExpr extends Expression {
|
|
511
|
+
condition;
|
|
512
|
+
falseCase;
|
|
513
|
+
trueCase;
|
|
422
514
|
constructor(condition, trueCase, falseCase = null, type, sourceSpan) {
|
|
423
515
|
super(type || trueCase.type, sourceSpan);
|
|
424
516
|
this.condition = condition;
|
|
@@ -437,9 +529,33 @@ class ConditionalExpr extends Expression {
|
|
|
437
529
|
visitExpression(visitor, context) {
|
|
438
530
|
return visitor.visitConditionalExpr(this, context);
|
|
439
531
|
}
|
|
532
|
+
clone() {
|
|
533
|
+
return new ConditionalExpr(this.condition.clone(), this.trueCase.clone(), this.falseCase?.clone(), this.type, this.sourceSpan);
|
|
534
|
+
}
|
|
440
535
|
}
|
|
441
536
|
exports.ConditionalExpr = ConditionalExpr;
|
|
537
|
+
class DynamicImportExpr extends Expression {
|
|
538
|
+
url;
|
|
539
|
+
constructor(url, sourceSpan) {
|
|
540
|
+
super(null, sourceSpan);
|
|
541
|
+
this.url = url;
|
|
542
|
+
}
|
|
543
|
+
isEquivalent(e) {
|
|
544
|
+
return e instanceof DynamicImportExpr && this.url === e.url;
|
|
545
|
+
}
|
|
546
|
+
isConstant() {
|
|
547
|
+
return false;
|
|
548
|
+
}
|
|
549
|
+
visitExpression(visitor, context) {
|
|
550
|
+
return visitor.visitDynamicImportExpr(this, context);
|
|
551
|
+
}
|
|
552
|
+
clone() {
|
|
553
|
+
return new DynamicImportExpr(this.url, this.sourceSpan);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
exports.DynamicImportExpr = DynamicImportExpr;
|
|
442
557
|
class NotExpr extends Expression {
|
|
558
|
+
condition;
|
|
443
559
|
constructor(condition, sourceSpan) {
|
|
444
560
|
super(exports.BOOL_TYPE, sourceSpan);
|
|
445
561
|
this.condition = condition;
|
|
@@ -453,9 +569,14 @@ class NotExpr extends Expression {
|
|
|
453
569
|
visitExpression(visitor, context) {
|
|
454
570
|
return visitor.visitNotExpr(this, context);
|
|
455
571
|
}
|
|
572
|
+
clone() {
|
|
573
|
+
return new NotExpr(this.condition.clone(), this.sourceSpan);
|
|
574
|
+
}
|
|
456
575
|
}
|
|
457
576
|
exports.NotExpr = NotExpr;
|
|
458
577
|
class FnParam {
|
|
578
|
+
name;
|
|
579
|
+
type;
|
|
459
580
|
constructor(name, type = null) {
|
|
460
581
|
this.name = name;
|
|
461
582
|
this.type = type;
|
|
@@ -463,9 +584,15 @@ class FnParam {
|
|
|
463
584
|
isEquivalent(param) {
|
|
464
585
|
return this.name === param.name;
|
|
465
586
|
}
|
|
587
|
+
clone() {
|
|
588
|
+
return new FnParam(this.name, this.type);
|
|
589
|
+
}
|
|
466
590
|
}
|
|
467
591
|
exports.FnParam = FnParam;
|
|
468
592
|
class FunctionExpr extends Expression {
|
|
593
|
+
params;
|
|
594
|
+
statements;
|
|
595
|
+
name;
|
|
469
596
|
constructor(params, statements, type, sourceSpan, name) {
|
|
470
597
|
super(type, sourceSpan);
|
|
471
598
|
this.params = params;
|
|
@@ -486,9 +613,16 @@ class FunctionExpr extends Expression {
|
|
|
486
613
|
toDeclStmt(name, modifiers) {
|
|
487
614
|
return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers, this.sourceSpan);
|
|
488
615
|
}
|
|
616
|
+
clone() {
|
|
617
|
+
// TODO: Should we deep clone statements?
|
|
618
|
+
return new FunctionExpr(this.params.map((p) => p.clone()), this.statements, this.type, this.sourceSpan, this.name);
|
|
619
|
+
}
|
|
489
620
|
}
|
|
490
621
|
exports.FunctionExpr = FunctionExpr;
|
|
491
622
|
class UnaryOperatorExpr extends Expression {
|
|
623
|
+
operator;
|
|
624
|
+
expr;
|
|
625
|
+
parens;
|
|
492
626
|
constructor(operator, expr, type, sourceSpan, parens = true) {
|
|
493
627
|
super(type || exports.NUMBER_TYPE, sourceSpan);
|
|
494
628
|
this.operator = operator;
|
|
@@ -506,9 +640,16 @@ class UnaryOperatorExpr extends Expression {
|
|
|
506
640
|
visitExpression(visitor, context) {
|
|
507
641
|
return visitor.visitUnaryOperatorExpr(this, context);
|
|
508
642
|
}
|
|
643
|
+
clone() {
|
|
644
|
+
return new UnaryOperatorExpr(this.operator, this.expr.clone(), this.type, this.sourceSpan, this.parens);
|
|
645
|
+
}
|
|
509
646
|
}
|
|
510
647
|
exports.UnaryOperatorExpr = UnaryOperatorExpr;
|
|
511
648
|
class BinaryOperatorExpr extends Expression {
|
|
649
|
+
operator;
|
|
650
|
+
rhs;
|
|
651
|
+
parens;
|
|
652
|
+
lhs;
|
|
512
653
|
constructor(operator, lhs, rhs, type, sourceSpan, parens = true) {
|
|
513
654
|
super(type || lhs.type, sourceSpan);
|
|
514
655
|
this.operator = operator;
|
|
@@ -528,14 +669,23 @@ class BinaryOperatorExpr extends Expression {
|
|
|
528
669
|
visitExpression(visitor, context) {
|
|
529
670
|
return visitor.visitBinaryOperatorExpr(this, context);
|
|
530
671
|
}
|
|
672
|
+
clone() {
|
|
673
|
+
return new BinaryOperatorExpr(this.operator, this.lhs.clone(), this.rhs.clone(), this.type, this.sourceSpan, this.parens);
|
|
674
|
+
}
|
|
531
675
|
}
|
|
532
676
|
exports.BinaryOperatorExpr = BinaryOperatorExpr;
|
|
533
677
|
class ReadPropExpr extends Expression {
|
|
678
|
+
receiver;
|
|
679
|
+
name;
|
|
534
680
|
constructor(receiver, name, type, sourceSpan) {
|
|
535
681
|
super(type, sourceSpan);
|
|
536
682
|
this.receiver = receiver;
|
|
537
683
|
this.name = name;
|
|
538
684
|
}
|
|
685
|
+
// An alias for name, which allows other logic to handle property reads and keyed reads together.
|
|
686
|
+
get index() {
|
|
687
|
+
return this.name;
|
|
688
|
+
}
|
|
539
689
|
isEquivalent(e) {
|
|
540
690
|
return (e instanceof ReadPropExpr &&
|
|
541
691
|
this.receiver.isEquivalent(e.receiver) &&
|
|
@@ -550,9 +700,14 @@ class ReadPropExpr extends Expression {
|
|
|
550
700
|
set(value) {
|
|
551
701
|
return new WritePropExpr(this.receiver, this.name, value, null, this.sourceSpan);
|
|
552
702
|
}
|
|
703
|
+
clone() {
|
|
704
|
+
return new ReadPropExpr(this.receiver.clone(), this.name, this.type, this.sourceSpan);
|
|
705
|
+
}
|
|
553
706
|
}
|
|
554
707
|
exports.ReadPropExpr = ReadPropExpr;
|
|
555
708
|
class ReadKeyExpr extends Expression {
|
|
709
|
+
receiver;
|
|
710
|
+
index;
|
|
556
711
|
constructor(receiver, index, type, sourceSpan) {
|
|
557
712
|
super(type, sourceSpan);
|
|
558
713
|
this.receiver = receiver;
|
|
@@ -572,9 +727,13 @@ class ReadKeyExpr extends Expression {
|
|
|
572
727
|
set(value) {
|
|
573
728
|
return new WriteKeyExpr(this.receiver, this.index, value, null, this.sourceSpan);
|
|
574
729
|
}
|
|
730
|
+
clone() {
|
|
731
|
+
return new ReadKeyExpr(this.receiver.clone(), this.index.clone(), this.type, this.sourceSpan);
|
|
732
|
+
}
|
|
575
733
|
}
|
|
576
734
|
exports.ReadKeyExpr = ReadKeyExpr;
|
|
577
735
|
class LiteralArrayExpr extends Expression {
|
|
736
|
+
entries;
|
|
578
737
|
constructor(entries, type, sourceSpan) {
|
|
579
738
|
super(type, sourceSpan);
|
|
580
739
|
this.entries = entries;
|
|
@@ -588,9 +747,15 @@ class LiteralArrayExpr extends Expression {
|
|
|
588
747
|
visitExpression(visitor, context) {
|
|
589
748
|
return visitor.visitLiteralArrayExpr(this, context);
|
|
590
749
|
}
|
|
750
|
+
clone() {
|
|
751
|
+
return new LiteralArrayExpr(this.entries.map((e) => e.clone()), this.type, this.sourceSpan);
|
|
752
|
+
}
|
|
591
753
|
}
|
|
592
754
|
exports.LiteralArrayExpr = LiteralArrayExpr;
|
|
593
755
|
class LiteralMapEntry {
|
|
756
|
+
key;
|
|
757
|
+
value;
|
|
758
|
+
quoted;
|
|
594
759
|
constructor(key, value, quoted) {
|
|
595
760
|
this.key = key;
|
|
596
761
|
this.value = value;
|
|
@@ -599,13 +764,17 @@ class LiteralMapEntry {
|
|
|
599
764
|
isEquivalent(e) {
|
|
600
765
|
return this.key === e.key && this.value.isEquivalent(e.value);
|
|
601
766
|
}
|
|
767
|
+
clone() {
|
|
768
|
+
return new LiteralMapEntry(this.key, this.value.clone(), this.quoted);
|
|
769
|
+
}
|
|
602
770
|
}
|
|
603
771
|
exports.LiteralMapEntry = LiteralMapEntry;
|
|
604
772
|
class LiteralMapExpr extends Expression {
|
|
773
|
+
entries;
|
|
774
|
+
valueType = null;
|
|
605
775
|
constructor(entries, type, sourceSpan) {
|
|
606
776
|
super(type, sourceSpan);
|
|
607
777
|
this.entries = entries;
|
|
608
|
-
this.valueType = null;
|
|
609
778
|
if (type) {
|
|
610
779
|
this.valueType = type.valueType;
|
|
611
780
|
}
|
|
@@ -619,9 +788,14 @@ class LiteralMapExpr extends Expression {
|
|
|
619
788
|
visitExpression(visitor, context) {
|
|
620
789
|
return visitor.visitLiteralMapExpr(this, context);
|
|
621
790
|
}
|
|
791
|
+
clone() {
|
|
792
|
+
const entriesClone = this.entries.map((entry) => entry.clone());
|
|
793
|
+
return new LiteralMapExpr(entriesClone, this.type, this.sourceSpan);
|
|
794
|
+
}
|
|
622
795
|
}
|
|
623
796
|
exports.LiteralMapExpr = LiteralMapExpr;
|
|
624
797
|
class CommaExpr extends Expression {
|
|
798
|
+
parts;
|
|
625
799
|
constructor(parts, sourceSpan) {
|
|
626
800
|
super(parts[parts.length - 1].type, sourceSpan);
|
|
627
801
|
this.parts = parts;
|
|
@@ -635,6 +809,9 @@ class CommaExpr extends Expression {
|
|
|
635
809
|
visitExpression(visitor, context) {
|
|
636
810
|
return visitor.visitCommaExpr(this, context);
|
|
637
811
|
}
|
|
812
|
+
clone() {
|
|
813
|
+
return new CommaExpr(this.parts.map((p) => p.clone()));
|
|
814
|
+
}
|
|
638
815
|
}
|
|
639
816
|
exports.CommaExpr = CommaExpr;
|
|
640
817
|
exports.NULL_EXPR = new LiteralExpr(null, null, null);
|
|
@@ -647,8 +824,11 @@ var StmtModifier;
|
|
|
647
824
|
StmtModifier[StmtModifier["Private"] = 2] = "Private";
|
|
648
825
|
StmtModifier[StmtModifier["Exported"] = 4] = "Exported";
|
|
649
826
|
StmtModifier[StmtModifier["Static"] = 8] = "Static";
|
|
650
|
-
})(StmtModifier
|
|
827
|
+
})(StmtModifier || (exports.StmtModifier = StmtModifier = {}));
|
|
651
828
|
class LeadingComment {
|
|
829
|
+
text;
|
|
830
|
+
multiline;
|
|
831
|
+
trailingNewline;
|
|
652
832
|
constructor(text, multiline, trailingNewline) {
|
|
653
833
|
this.text = text;
|
|
654
834
|
this.multiline = multiline;
|
|
@@ -660,6 +840,7 @@ class LeadingComment {
|
|
|
660
840
|
}
|
|
661
841
|
exports.LeadingComment = LeadingComment;
|
|
662
842
|
class JSDocComment extends LeadingComment {
|
|
843
|
+
tags;
|
|
663
844
|
constructor(tags) {
|
|
664
845
|
super('', /* multiline */ true, /* trailingNewline */ true);
|
|
665
846
|
this.tags = tags;
|
|
@@ -670,6 +851,9 @@ class JSDocComment extends LeadingComment {
|
|
|
670
851
|
}
|
|
671
852
|
exports.JSDocComment = JSDocComment;
|
|
672
853
|
class Statement {
|
|
854
|
+
modifiers;
|
|
855
|
+
sourceSpan;
|
|
856
|
+
leadingComments;
|
|
673
857
|
constructor(modifiers = StmtModifier.None, sourceSpan = null, leadingComments) {
|
|
674
858
|
this.modifiers = modifiers;
|
|
675
859
|
this.sourceSpan = sourceSpan;
|
|
@@ -679,13 +863,15 @@ class Statement {
|
|
|
679
863
|
return (this.modifiers & modifier) !== 0;
|
|
680
864
|
}
|
|
681
865
|
addLeadingComment(leadingComment) {
|
|
682
|
-
|
|
683
|
-
this.leadingComments = (_a = this.leadingComments) !== null && _a !== void 0 ? _a : [];
|
|
866
|
+
this.leadingComments = this.leadingComments ?? [];
|
|
684
867
|
this.leadingComments.push(leadingComment);
|
|
685
868
|
}
|
|
686
869
|
}
|
|
687
870
|
exports.Statement = Statement;
|
|
688
871
|
class DeclareVarStmt extends Statement {
|
|
872
|
+
name;
|
|
873
|
+
value;
|
|
874
|
+
type;
|
|
689
875
|
constructor(name, value, type, modifiers, sourceSpan, leadingComments) {
|
|
690
876
|
super(modifiers, sourceSpan, leadingComments);
|
|
691
877
|
this.name = name;
|
|
@@ -705,6 +891,10 @@ class DeclareVarStmt extends Statement {
|
|
|
705
891
|
}
|
|
706
892
|
exports.DeclareVarStmt = DeclareVarStmt;
|
|
707
893
|
class DeclareFunctionStmt extends Statement {
|
|
894
|
+
name;
|
|
895
|
+
params;
|
|
896
|
+
statements;
|
|
897
|
+
type;
|
|
708
898
|
constructor(name, params, statements, type, modifiers, sourceSpan, leadingComments) {
|
|
709
899
|
super(modifiers, sourceSpan, leadingComments);
|
|
710
900
|
this.name = name;
|
|
@@ -723,6 +913,7 @@ class DeclareFunctionStmt extends Statement {
|
|
|
723
913
|
}
|
|
724
914
|
exports.DeclareFunctionStmt = DeclareFunctionStmt;
|
|
725
915
|
class ExpressionStatement extends Statement {
|
|
916
|
+
expr;
|
|
726
917
|
constructor(expr, sourceSpan, leadingComments) {
|
|
727
918
|
super(StmtModifier.None, sourceSpan, leadingComments);
|
|
728
919
|
this.expr = expr;
|
|
@@ -736,6 +927,7 @@ class ExpressionStatement extends Statement {
|
|
|
736
927
|
}
|
|
737
928
|
exports.ExpressionStatement = ExpressionStatement;
|
|
738
929
|
class ReturnStatement extends Statement {
|
|
930
|
+
value;
|
|
739
931
|
constructor(value, sourceSpan = null, leadingComments) {
|
|
740
932
|
super(StmtModifier.None, sourceSpan, leadingComments);
|
|
741
933
|
this.value = value;
|
|
@@ -749,6 +941,9 @@ class ReturnStatement extends Statement {
|
|
|
749
941
|
}
|
|
750
942
|
exports.ReturnStatement = ReturnStatement;
|
|
751
943
|
class IfStmt extends Statement {
|
|
944
|
+
condition;
|
|
945
|
+
trueCase;
|
|
946
|
+
falseCase;
|
|
752
947
|
constructor(condition, trueCase, falseCase = [], sourceSpan, leadingComments) {
|
|
753
948
|
super(StmtModifier.None, sourceSpan, leadingComments);
|
|
754
949
|
this.condition = condition;
|
|
@@ -792,6 +987,10 @@ function expressionType(expr, typeModifiers, typeParams) {
|
|
|
792
987
|
return new ExpressionType(expr, typeModifiers, typeParams);
|
|
793
988
|
}
|
|
794
989
|
exports.expressionType = expressionType;
|
|
990
|
+
function transplantedType(type, typeModifiers) {
|
|
991
|
+
return new TransplantedType(type, typeModifiers);
|
|
992
|
+
}
|
|
993
|
+
exports.transplantedType = transplantedType;
|
|
795
994
|
function typeofExpr(expr) {
|
|
796
995
|
return new TypeofExpr(expr);
|
|
797
996
|
}
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.ParseSourceSpan = exports.ParseSourceFile = exports.ParseLocation = void 0;
|
|
11
11
|
class ParseLocation {
|
|
12
|
+
file;
|
|
13
|
+
offset;
|
|
14
|
+
line;
|
|
15
|
+
col;
|
|
12
16
|
constructor(file, offset, line, col) {
|
|
13
17
|
this.file = file;
|
|
14
18
|
this.offset = offset;
|
|
@@ -18,6 +22,8 @@ class ParseLocation {
|
|
|
18
22
|
}
|
|
19
23
|
exports.ParseLocation = ParseLocation;
|
|
20
24
|
class ParseSourceFile {
|
|
25
|
+
content;
|
|
26
|
+
url;
|
|
21
27
|
constructor(content, url) {
|
|
22
28
|
this.content = content;
|
|
23
29
|
this.url = url;
|
|
@@ -25,6 +31,10 @@ class ParseSourceFile {
|
|
|
25
31
|
}
|
|
26
32
|
exports.ParseSourceFile = ParseSourceFile;
|
|
27
33
|
class ParseSourceSpan {
|
|
34
|
+
start;
|
|
35
|
+
end;
|
|
36
|
+
fullStart;
|
|
37
|
+
details;
|
|
28
38
|
/**
|
|
29
39
|
* Create an object that holds information about spans of tokens/nodes captured during
|
|
30
40
|
* lexing/parsing of text.
|
|
@@ -15,4 +15,4 @@ var FactoryTarget;
|
|
|
15
15
|
FactoryTarget[FactoryTarget["Injectable"] = 2] = "Injectable";
|
|
16
16
|
FactoryTarget[FactoryTarget["Pipe"] = 3] = "Pipe";
|
|
17
17
|
FactoryTarget[FactoryTarget["NgModule"] = 4] = "NgModule";
|
|
18
|
-
})(FactoryTarget
|
|
18
|
+
})(FactoryTarget || (exports.FactoryTarget = FactoryTarget = {}));
|
|
@@ -12,14 +12,6 @@ export interface R3ConstructorFactoryMetadata {
|
|
|
12
12
|
* An expression representing the interface type being constructed.
|
|
13
13
|
*/
|
|
14
14
|
type: R3Reference;
|
|
15
|
-
/**
|
|
16
|
-
* An expression representing the constructor type, intended for use within a class definition
|
|
17
|
-
* itself.
|
|
18
|
-
*
|
|
19
|
-
* This can differ from the outer `type` if the class is being compiled by ngcc and is inside
|
|
20
|
-
* an IIFE structure that uses a different name internally.
|
|
21
|
-
*/
|
|
22
|
-
internalType: o.Expression;
|
|
23
15
|
/** Number of arguments for the `type`. */
|
|
24
16
|
typeArgumentCount: number;
|
|
25
17
|
/**
|