static-injector 2.1.1 → 2.2.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 (96) hide show
  1. package/import/commonjs/index.js +127 -197
  2. package/import/{es2015 → es2022}/di/create_injector.js +0 -2
  3. package/import/{es2015 → es2022}/di/forward_ref.js +29 -2
  4. package/import/{es2015 → es2022}/di/injection_token.js +5 -3
  5. package/import/{es2015 → es2022}/di/injector.js +15 -16
  6. package/import/{es2015 → es2022}/di/injector_compatibility.js +8 -3
  7. package/import/{es2015 → es2022}/di/interface/defs.js +2 -16
  8. package/import/{es2015 → es2022}/di/interface/injector.js +1 -1
  9. package/import/es2022/di/provider_collection.js +104 -0
  10. package/import/{es2015 → es2022}/di/r3_injector.js +46 -15
  11. package/import/{es2015 → es2022}/errors.js +4 -2
  12. package/import/{es2015 → es2022}/render3/error_code.js +1 -0
  13. package/import/es2022/render3/fields.js +22 -0
  14. package/import/{fesm2015 → fesm2022}/index.js +127 -198
  15. package/import/typings/di/create_injector.d.ts +3 -5
  16. package/import/typings/di/forward_ref.d.ts +29 -2
  17. package/import/typings/di/inject_switch.d.ts +1 -1
  18. package/import/typings/di/injection_token.d.ts +1 -1
  19. package/import/typings/di/injector.d.ts +3 -3
  20. package/import/typings/di/injector_compatibility.d.ts +1 -0
  21. package/import/typings/di/interface/defs.d.ts +2 -1
  22. package/import/typings/di/interface/injector.d.ts +2 -2
  23. package/import/typings/di/interface/provider.d.ts +7 -7
  24. package/import/typings/di/metadata.d.ts +4 -4
  25. package/import/typings/di/provider_collection.d.ts +1 -12
  26. package/import/typings/di/r3_injector.d.ts +8 -6
  27. package/import/typings/di/scope.d.ts +1 -1
  28. package/import/typings/errors.d.ts +28 -3
  29. package/import/typings/render3/fields.d.ts +9 -0
  30. package/import/typings/util/decorators.d.ts +1 -0
  31. package/package.json +7 -7
  32. package/readme.md +4 -1
  33. package/transform/compiler/src/injectable_compiler_2.d.ts +0 -1
  34. package/transform/compiler/src/injectable_compiler_2.js +31 -16
  35. package/transform/compiler/src/output/output_ast.d.ts +53 -10
  36. package/transform/compiler/src/output/output_ast.js +211 -12
  37. package/transform/compiler/src/parse_util.js +10 -0
  38. package/transform/compiler/src/render3/partial/api.js +1 -1
  39. package/transform/compiler/src/render3/r3_factory.d.ts +0 -8
  40. package/transform/compiler/src/render3/r3_factory.js +5 -4
  41. package/transform/compiler/src/render3/r3_identifiers.js +37 -37
  42. package/transform/compiler/src/render3/view/util.js +1 -3
  43. package/transform/compiler-cli/src/ngtsc/annotations/common/src/di.js +2 -4
  44. package/transform/compiler-cli/src/ngtsc/annotations/common/src/factory.js +1 -0
  45. package/transform/compiler-cli/src/ngtsc/annotations/common/src/util.d.ts +1 -1
  46. package/transform/compiler-cli/src/ngtsc/annotations/common/src/util.js +5 -9
  47. package/transform/compiler-cli/src/ngtsc/annotations/src/injectable.d.ts +2 -1
  48. package/transform/compiler-cli/src/ngtsc/annotations/src/injectable.js +12 -8
  49. package/transform/compiler-cli/src/ngtsc/diagnostics/error.d.ts +2 -2
  50. package/transform/compiler-cli/src/ngtsc/diagnostics/error.js +8 -4
  51. package/transform/compiler-cli/src/ngtsc/diagnostics/error_code.js +1 -1
  52. package/transform/compiler-cli/src/ngtsc/imports/src/default.js +1 -2
  53. package/transform/compiler-cli/src/ngtsc/reflection/src/host.d.ts +24 -173
  54. package/transform/compiler-cli/src/ngtsc/reflection/src/host.js +2 -51
  55. package/transform/compiler-cli/src/ngtsc/reflection/src/typescript.d.ts +5 -3
  56. package/transform/compiler-cli/src/ngtsc/reflection/src/typescript.js +5 -10
  57. package/transform/compiler-cli/src/ngtsc/transform/src/api.d.ts +5 -23
  58. package/transform/compiler-cli/src/ngtsc/transform/src/api.js +0 -21
  59. package/transform/compiler-cli/src/ngtsc/transform/src/utils.js +1 -2
  60. package/transform/compiler-cli/src/ngtsc/translator/src/api/ast_factory.d.ts +7 -0
  61. package/transform/compiler-cli/src/ngtsc/translator/src/context.js +1 -0
  62. package/transform/compiler-cli/src/ngtsc/translator/src/import_manager.js +4 -2
  63. package/transform/compiler-cli/src/ngtsc/translator/src/translator.d.ts +1 -0
  64. package/transform/compiler-cli/src/ngtsc/translator/src/translator.js +10 -4
  65. package/transform/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.d.ts +2 -1
  66. package/transform/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.js +20 -16
  67. package/transform/injectable-transform.d.ts +2 -2
  68. package/transform/injectable-transform.js +32 -6
  69. package/import/es2015/di/provider_collection.js +0 -244
  70. package/import/es2015/render3/fields.js +0 -11
  71. /package/import/{es2015 → es2022}/di/initializer_token.js +0 -0
  72. /package/import/{es2015 → es2022}/di/inject_switch.js +0 -0
  73. /package/import/{es2015 → es2022}/di/injectable.js +0 -0
  74. /package/import/{es2015 → es2022}/di/injector_marker.js +0 -0
  75. /package/import/{es2015 → es2022}/di/injector_token.js +0 -0
  76. /package/import/{es2015 → es2022}/di/interface/provider.js +0 -0
  77. /package/import/{es2015 → es2022}/di/internal_tokens.js +0 -0
  78. /package/import/{es2015 → es2022}/di/metadata.js +0 -0
  79. /package/import/{es2015 → es2022}/di/null_injector.js +0 -0
  80. /package/import/{es2015 → es2022}/di/provider_token.js +0 -0
  81. /package/import/{es2015 → es2022}/di/scope.js +0 -0
  82. /package/import/{es2015 → es2022}/error_details_base_url.js +0 -0
  83. /package/import/{es2015 → es2022}/index.js +0 -0
  84. /package/import/{es2015 → es2022}/interface/lifecycle_hooks.js +0 -0
  85. /package/import/{es2015 → es2022}/interface/type.js +0 -0
  86. /package/import/{es2015 → es2022}/render3/definition_factory.js +0 -0
  87. /package/import/{es2015 → es2022}/render3/di.js +0 -0
  88. /package/import/{es2015 → es2022}/render3/errors_di.js +0 -0
  89. /package/import/{es2015 → es2022}/render3/instructions/di.js +0 -0
  90. /package/import/{es2015 → es2022}/render3/util/stringify_utils.js +0 -0
  91. /package/import/{es2015 → es2022}/util/array_utils.js +0 -0
  92. /package/import/{es2015 → es2022}/util/closure.js +0 -0
  93. /package/import/{es2015 → es2022}/util/decorators.js +0 -0
  94. /package/import/{es2015 → es2022}/util/empty.js +0 -0
  95. /package/import/{es2015 → es2022}/util/property.js +0 -0
  96. /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.LeadingComment = exports.StmtModifier = 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.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.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.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 = exports.TypeModifier || (exports.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 = exports.BuiltinTypeName || (exports.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 = exports.UnaryOperator || (exports.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 = exports.BinaryOperator || (exports.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
- (_a = rawText !== null && rawText !== void 0 ? rawText : sourceSpan === null || sourceSpan === void 0 ? void 0 : sourceSpan.toString()) !== null && _a !== void 0 ? _a : escapeForTemplateLiteral(escapeSlashes(text));
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 = exports.StmtModifier || (exports.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
- var _a;
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 = exports.FactoryTarget || (exports.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
  /**