@angular/core 18.1.0-next.2 → 18.1.0-next.4

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 (57) hide show
  1. package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +2 -2
  2. package/esm2022/rxjs-interop/src/to_signal.mjs +7 -3
  3. package/esm2022/src/authoring/model/model_signal.mjs +2 -3
  4. package/esm2022/src/change_detection/change_detector_ref.mjs +3 -2
  5. package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
  6. package/esm2022/src/core_render3_private_export.mjs +2 -2
  7. package/esm2022/src/defer/instructions.mjs +3 -11
  8. package/esm2022/src/di/host_tag_name_token.mjs +4 -1
  9. package/esm2022/src/errors.mjs +1 -1
  10. package/esm2022/src/event_delegation_utils.mjs +3 -2
  11. package/esm2022/src/hydration/annotate.mjs +27 -16
  12. package/esm2022/src/hydration/error_handling.mjs +3 -1
  13. package/esm2022/src/hydration/event_replay.mjs +34 -15
  14. package/esm2022/src/hydration/i18n.mjs +102 -18
  15. package/esm2022/src/hydration/node_lookup_utils.mjs +12 -6
  16. package/esm2022/src/linker/component_factory.mjs +1 -1
  17. package/esm2022/src/render3/after_render_hooks.mjs +2 -2
  18. package/esm2022/src/render3/chained_injector.mjs +34 -0
  19. package/esm2022/src/render3/collect_native_nodes.mjs +6 -1
  20. package/esm2022/src/render3/component.mjs +1 -1
  21. package/esm2022/src/render3/component_ref.mjs +23 -35
  22. package/esm2022/src/render3/index.mjs +2 -2
  23. package/esm2022/src/render3/instructions/all.mjs +2 -1
  24. package/esm2022/src/render3/instructions/i18n_icu_container_visitor.mjs +61 -51
  25. package/esm2022/src/render3/instructions/let_declaration.mjs +62 -0
  26. package/esm2022/src/render3/instructions/projection.mjs +14 -11
  27. package/esm2022/src/render3/instructions/shared.mjs +1 -1
  28. package/esm2022/src/render3/interfaces/node.mjs +2 -1
  29. package/esm2022/src/render3/jit/environment.mjs +4 -1
  30. package/esm2022/src/render3/node_assert.mjs +9 -8
  31. package/esm2022/src/render3/node_manipulation.mjs +10 -3
  32. package/esm2022/src/render3/util/injector_discovery_utils.mjs +14 -5
  33. package/esm2022/src/render3/util/injector_utils.mjs +10 -1
  34. package/esm2022/src/version.mjs +1 -1
  35. package/esm2022/testing/src/logger.mjs +3 -3
  36. package/fesm2022/core.mjs +440 -210
  37. package/fesm2022/core.mjs.map +1 -1
  38. package/fesm2022/primitives/event-dispatch.mjs +2 -2
  39. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  40. package/fesm2022/primitives/signals.mjs +1 -1
  41. package/fesm2022/rxjs-interop.mjs +7 -3
  42. package/fesm2022/rxjs-interop.mjs.map +1 -1
  43. package/fesm2022/testing.mjs +1 -1
  44. package/index.d.ts +45 -9
  45. package/package.json +1 -1
  46. package/primitives/event-dispatch/index.d.ts +2 -2
  47. package/primitives/signals/index.d.ts +1 -1
  48. package/rxjs-interop/index.d.ts +13 -6
  49. package/schematics/migrations/after-render-phase/bundle.js +52 -31
  50. package/schematics/migrations/after-render-phase/bundle.js.map +2 -2
  51. package/schematics/migrations/invalid-two-way-bindings/bundle.js +272 -65
  52. package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +4 -4
  53. package/schematics/ng-generate/control-flow-migration/bundle.js +279 -65
  54. package/schematics/ng-generate/control-flow-migration/bundle.js.map +4 -4
  55. package/schematics/ng-generate/standalone-migration/bundle.js +288 -84
  56. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  57. package/testing/index.d.ts +1 -1
@@ -5085,6 +5085,15 @@ var Identifiers = _Identifiers;
5085
5085
  (() => {
5086
5086
  _Identifiers.twoWayListener = { name: "\u0275\u0275twoWayListener", moduleName: CORE };
5087
5087
  })();
5088
+ (() => {
5089
+ _Identifiers.declareLet = { name: "\u0275\u0275declareLet", moduleName: CORE };
5090
+ })();
5091
+ (() => {
5092
+ _Identifiers.storeLet = { name: "\u0275\u0275storeLet", moduleName: CORE };
5093
+ })();
5094
+ (() => {
5095
+ _Identifiers.readContextLet = { name: "\u0275\u0275readContextLet", moduleName: CORE };
5096
+ })();
5088
5097
  (() => {
5089
5098
  _Identifiers.NgOnChangesFeature = { name: "\u0275\u0275NgOnChangesFeature", moduleName: CORE };
5090
5099
  })();
@@ -8976,16 +8985,18 @@ var OpKind;
8976
8985
  OpKind2[OpKind2["Repeater"] = 35] = "Repeater";
8977
8986
  OpKind2[OpKind2["TwoWayProperty"] = 36] = "TwoWayProperty";
8978
8987
  OpKind2[OpKind2["TwoWayListener"] = 37] = "TwoWayListener";
8979
- OpKind2[OpKind2["I18nStart"] = 38] = "I18nStart";
8980
- OpKind2[OpKind2["I18n"] = 39] = "I18n";
8981
- OpKind2[OpKind2["I18nEnd"] = 40] = "I18nEnd";
8982
- OpKind2[OpKind2["I18nExpression"] = 41] = "I18nExpression";
8983
- OpKind2[OpKind2["I18nApply"] = 42] = "I18nApply";
8984
- OpKind2[OpKind2["IcuStart"] = 43] = "IcuStart";
8985
- OpKind2[OpKind2["IcuEnd"] = 44] = "IcuEnd";
8986
- OpKind2[OpKind2["IcuPlaceholder"] = 45] = "IcuPlaceholder";
8987
- OpKind2[OpKind2["I18nContext"] = 46] = "I18nContext";
8988
- OpKind2[OpKind2["I18nAttributes"] = 47] = "I18nAttributes";
8988
+ OpKind2[OpKind2["DeclareLet"] = 38] = "DeclareLet";
8989
+ OpKind2[OpKind2["StoreLet"] = 39] = "StoreLet";
8990
+ OpKind2[OpKind2["I18nStart"] = 40] = "I18nStart";
8991
+ OpKind2[OpKind2["I18n"] = 41] = "I18n";
8992
+ OpKind2[OpKind2["I18nEnd"] = 42] = "I18nEnd";
8993
+ OpKind2[OpKind2["I18nExpression"] = 43] = "I18nExpression";
8994
+ OpKind2[OpKind2["I18nApply"] = 44] = "I18nApply";
8995
+ OpKind2[OpKind2["IcuStart"] = 45] = "IcuStart";
8996
+ OpKind2[OpKind2["IcuEnd"] = 46] = "IcuEnd";
8997
+ OpKind2[OpKind2["IcuPlaceholder"] = 47] = "IcuPlaceholder";
8998
+ OpKind2[OpKind2["I18nContext"] = 48] = "I18nContext";
8999
+ OpKind2[OpKind2["I18nAttributes"] = 49] = "I18nAttributes";
8989
9000
  })(OpKind || (OpKind = {}));
8990
9001
  var ExpressionKind;
8991
9002
  (function(ExpressionKind2) {
@@ -8995,24 +9006,26 @@ var ExpressionKind;
8995
9006
  ExpressionKind2[ExpressionKind2["ReadVariable"] = 3] = "ReadVariable";
8996
9007
  ExpressionKind2[ExpressionKind2["NextContext"] = 4] = "NextContext";
8997
9008
  ExpressionKind2[ExpressionKind2["Reference"] = 5] = "Reference";
8998
- ExpressionKind2[ExpressionKind2["GetCurrentView"] = 6] = "GetCurrentView";
8999
- ExpressionKind2[ExpressionKind2["RestoreView"] = 7] = "RestoreView";
9000
- ExpressionKind2[ExpressionKind2["ResetView"] = 8] = "ResetView";
9001
- ExpressionKind2[ExpressionKind2["PureFunctionExpr"] = 9] = "PureFunctionExpr";
9002
- ExpressionKind2[ExpressionKind2["PureFunctionParameterExpr"] = 10] = "PureFunctionParameterExpr";
9003
- ExpressionKind2[ExpressionKind2["PipeBinding"] = 11] = "PipeBinding";
9004
- ExpressionKind2[ExpressionKind2["PipeBindingVariadic"] = 12] = "PipeBindingVariadic";
9005
- ExpressionKind2[ExpressionKind2["SafePropertyRead"] = 13] = "SafePropertyRead";
9006
- ExpressionKind2[ExpressionKind2["SafeKeyedRead"] = 14] = "SafeKeyedRead";
9007
- ExpressionKind2[ExpressionKind2["SafeInvokeFunction"] = 15] = "SafeInvokeFunction";
9008
- ExpressionKind2[ExpressionKind2["SafeTernaryExpr"] = 16] = "SafeTernaryExpr";
9009
- ExpressionKind2[ExpressionKind2["EmptyExpr"] = 17] = "EmptyExpr";
9010
- ExpressionKind2[ExpressionKind2["AssignTemporaryExpr"] = 18] = "AssignTemporaryExpr";
9011
- ExpressionKind2[ExpressionKind2["ReadTemporaryExpr"] = 19] = "ReadTemporaryExpr";
9012
- ExpressionKind2[ExpressionKind2["SlotLiteralExpr"] = 20] = "SlotLiteralExpr";
9013
- ExpressionKind2[ExpressionKind2["ConditionalCase"] = 21] = "ConditionalCase";
9014
- ExpressionKind2[ExpressionKind2["ConstCollected"] = 22] = "ConstCollected";
9015
- ExpressionKind2[ExpressionKind2["TwoWayBindingSet"] = 23] = "TwoWayBindingSet";
9009
+ ExpressionKind2[ExpressionKind2["StoreLet"] = 6] = "StoreLet";
9010
+ ExpressionKind2[ExpressionKind2["ContextLetReference"] = 7] = "ContextLetReference";
9011
+ ExpressionKind2[ExpressionKind2["GetCurrentView"] = 8] = "GetCurrentView";
9012
+ ExpressionKind2[ExpressionKind2["RestoreView"] = 9] = "RestoreView";
9013
+ ExpressionKind2[ExpressionKind2["ResetView"] = 10] = "ResetView";
9014
+ ExpressionKind2[ExpressionKind2["PureFunctionExpr"] = 11] = "PureFunctionExpr";
9015
+ ExpressionKind2[ExpressionKind2["PureFunctionParameterExpr"] = 12] = "PureFunctionParameterExpr";
9016
+ ExpressionKind2[ExpressionKind2["PipeBinding"] = 13] = "PipeBinding";
9017
+ ExpressionKind2[ExpressionKind2["PipeBindingVariadic"] = 14] = "PipeBindingVariadic";
9018
+ ExpressionKind2[ExpressionKind2["SafePropertyRead"] = 15] = "SafePropertyRead";
9019
+ ExpressionKind2[ExpressionKind2["SafeKeyedRead"] = 16] = "SafeKeyedRead";
9020
+ ExpressionKind2[ExpressionKind2["SafeInvokeFunction"] = 17] = "SafeInvokeFunction";
9021
+ ExpressionKind2[ExpressionKind2["SafeTernaryExpr"] = 18] = "SafeTernaryExpr";
9022
+ ExpressionKind2[ExpressionKind2["EmptyExpr"] = 19] = "EmptyExpr";
9023
+ ExpressionKind2[ExpressionKind2["AssignTemporaryExpr"] = 20] = "AssignTemporaryExpr";
9024
+ ExpressionKind2[ExpressionKind2["ReadTemporaryExpr"] = 21] = "ReadTemporaryExpr";
9025
+ ExpressionKind2[ExpressionKind2["SlotLiteralExpr"] = 22] = "SlotLiteralExpr";
9026
+ ExpressionKind2[ExpressionKind2["ConditionalCase"] = 23] = "ConditionalCase";
9027
+ ExpressionKind2[ExpressionKind2["ConstCollected"] = 24] = "ConstCollected";
9028
+ ExpressionKind2[ExpressionKind2["TwoWayBindingSet"] = 25] = "TwoWayBindingSet";
9016
9029
  })(ExpressionKind || (ExpressionKind = {}));
9017
9030
  var VariableFlags;
9018
9031
  (function(VariableFlags2) {
@@ -9107,8 +9120,8 @@ var TRAIT_CONSUMES_VARS = {
9107
9120
  function hasConsumesSlotTrait(op) {
9108
9121
  return op[ConsumesSlot] === true;
9109
9122
  }
9110
- function hasDependsOnSlotContextTrait(op) {
9111
- return op[DependsOnSlotContext] === true;
9123
+ function hasDependsOnSlotContextTrait(value) {
9124
+ return value[DependsOnSlotContext] === true;
9112
9125
  }
9113
9126
  function hasConsumesVarsTrait(value) {
9114
9127
  return value[ConsumesVarsTrait] === true;
@@ -9318,6 +9331,15 @@ function createI18nApplyOp(owner, handle, sourceSpan) {
9318
9331
  sourceSpan
9319
9332
  }, NEW_OP);
9320
9333
  }
9334
+ function createStoreLetOp(target, declaredName, value, sourceSpan) {
9335
+ return __spreadValues(__spreadValues(__spreadValues({
9336
+ kind: OpKind.StoreLet,
9337
+ target,
9338
+ declaredName,
9339
+ value,
9340
+ sourceSpan
9341
+ }, TRAIT_DEPENDS_ON_SLOT_CONTEXT), TRAIT_CONSUMES_VARS), NEW_OP);
9342
+ }
9321
9343
 
9322
9344
  // bazel-out/darwin_arm64-fastbuild/bin/packages/compiler/src/template/pipeline/ir/src/expression.mjs
9323
9345
  var _a;
@@ -9326,6 +9348,8 @@ var _c;
9326
9348
  var _d;
9327
9349
  var _e;
9328
9350
  var _f;
9351
+ var _g;
9352
+ var _h;
9329
9353
  function isIrExpression(expr) {
9330
9354
  return expr instanceof ExpressionBase;
9331
9355
  }
@@ -9376,6 +9400,56 @@ var ReferenceExpr = class extends ExpressionBase {
9376
9400
  return new ReferenceExpr(this.target, this.targetSlot, this.offset);
9377
9401
  }
9378
9402
  };
9403
+ var _StoreLetExpr = class extends ExpressionBase {
9404
+ constructor(target, value, sourceSpan) {
9405
+ super();
9406
+ this.target = target;
9407
+ this.value = value;
9408
+ this.sourceSpan = sourceSpan;
9409
+ this.kind = ExpressionKind.StoreLet;
9410
+ this[_a] = true;
9411
+ this[_b] = true;
9412
+ }
9413
+ visitExpression() {
9414
+ }
9415
+ isEquivalent(e) {
9416
+ return e instanceof _StoreLetExpr && e.target === this.target && e.value.isEquivalent(this.value);
9417
+ }
9418
+ isConstant() {
9419
+ return false;
9420
+ }
9421
+ transformInternalExpressions(transform2, flags) {
9422
+ this.value = transformExpressionsInExpression(this.value, transform2, flags);
9423
+ }
9424
+ clone() {
9425
+ return new _StoreLetExpr(this.target, this.value, this.sourceSpan);
9426
+ }
9427
+ };
9428
+ var StoreLetExpr = _StoreLetExpr;
9429
+ (() => {
9430
+ _a = ConsumesVarsTrait, _b = DependsOnSlotContext;
9431
+ })();
9432
+ var ContextLetReferenceExpr = class extends ExpressionBase {
9433
+ constructor(target, targetSlot) {
9434
+ super();
9435
+ this.target = target;
9436
+ this.targetSlot = targetSlot;
9437
+ this.kind = ExpressionKind.ContextLetReference;
9438
+ }
9439
+ visitExpression() {
9440
+ }
9441
+ isEquivalent(e) {
9442
+ return e instanceof ContextLetReferenceExpr && e.target === this.target;
9443
+ }
9444
+ isConstant() {
9445
+ return false;
9446
+ }
9447
+ transformInternalExpressions() {
9448
+ }
9449
+ clone() {
9450
+ return new ContextLetReferenceExpr(this.target, this.targetSlot);
9451
+ }
9452
+ };
9379
9453
  var ContextExpr = class extends ExpressionBase {
9380
9454
  constructor(view) {
9381
9455
  super();
@@ -9564,8 +9638,8 @@ var _PureFunctionExpr = class extends ExpressionBase {
9564
9638
  constructor(expression, args) {
9565
9639
  super();
9566
9640
  this.kind = ExpressionKind.PureFunctionExpr;
9567
- this[_a] = true;
9568
- this[_b] = true;
9641
+ this[_c] = true;
9642
+ this[_d] = true;
9569
9643
  this.varOffset = null;
9570
9644
  this.fn = null;
9571
9645
  this.body = expression;
@@ -9607,7 +9681,7 @@ var _PureFunctionExpr = class extends ExpressionBase {
9607
9681
  };
9608
9682
  var PureFunctionExpr = _PureFunctionExpr;
9609
9683
  (() => {
9610
- _a = ConsumesVarsTrait, _b = UsesVarOffset;
9684
+ _c = ConsumesVarsTrait, _d = UsesVarOffset;
9611
9685
  })();
9612
9686
  var PureFunctionParameterExpr = class extends ExpressionBase {
9613
9687
  constructor(index) {
@@ -9637,8 +9711,8 @@ var _PipeBindingExpr = class extends ExpressionBase {
9637
9711
  this.name = name;
9638
9712
  this.args = args;
9639
9713
  this.kind = ExpressionKind.PipeBinding;
9640
- this[_c] = true;
9641
- this[_d] = true;
9714
+ this[_e] = true;
9715
+ this[_f] = true;
9642
9716
  this.varOffset = null;
9643
9717
  }
9644
9718
  visitExpression(visitor, context) {
@@ -9665,7 +9739,7 @@ var _PipeBindingExpr = class extends ExpressionBase {
9665
9739
  };
9666
9740
  var PipeBindingExpr = _PipeBindingExpr;
9667
9741
  (() => {
9668
- _c = ConsumesVarsTrait, _d = UsesVarOffset;
9742
+ _e = ConsumesVarsTrait, _f = UsesVarOffset;
9669
9743
  })();
9670
9744
  var _PipeBindingVariadicExpr = class extends ExpressionBase {
9671
9745
  constructor(target, targetSlot, name, args, numArgs) {
@@ -9676,8 +9750,8 @@ var _PipeBindingVariadicExpr = class extends ExpressionBase {
9676
9750
  this.args = args;
9677
9751
  this.numArgs = numArgs;
9678
9752
  this.kind = ExpressionKind.PipeBindingVariadic;
9679
- this[_e] = true;
9680
- this[_f] = true;
9753
+ this[_g] = true;
9754
+ this[_h] = true;
9681
9755
  this.varOffset = null;
9682
9756
  }
9683
9757
  visitExpression(visitor, context) {
@@ -9700,7 +9774,7 @@ var _PipeBindingVariadicExpr = class extends ExpressionBase {
9700
9774
  };
9701
9775
  var PipeBindingVariadicExpr = _PipeBindingVariadicExpr;
9702
9776
  (() => {
9703
- _e = ConsumesVarsTrait, _f = UsesVarOffset;
9777
+ _g = ConsumesVarsTrait, _h = UsesVarOffset;
9704
9778
  })();
9705
9779
  var SafePropertyReadExpr = class extends ExpressionBase {
9706
9780
  constructor(receiver, name) {
@@ -10059,6 +10133,9 @@ function transformExpressionsInOp(op, transform2, flags) {
10059
10133
  case OpKind.DeferWhen:
10060
10134
  op.expr = transformExpressionsInExpression(op.expr, transform2, flags);
10061
10135
  break;
10136
+ case OpKind.StoreLet:
10137
+ op.value = transformExpressionsInExpression(op.value, transform2, flags);
10138
+ break;
10062
10139
  case OpKind.Advance:
10063
10140
  case OpKind.Container:
10064
10141
  case OpKind.ContainerEnd:
@@ -10084,6 +10161,7 @@ function transformExpressionsInOp(op, transform2, flags) {
10084
10161
  case OpKind.Text:
10085
10162
  case OpKind.I18nAttributes:
10086
10163
  case OpKind.IcuPlaceholder:
10164
+ case OpKind.DeclareLet:
10087
10165
  break;
10088
10166
  default:
10089
10167
  throw new Error(`AssertionError: transformExpressionsInOp doesn't handle ${OpKind[op.kind]}`);
@@ -10599,6 +10677,15 @@ function createDeferOnOp(defer2, trigger, prefetch, sourceSpan) {
10599
10677
  sourceSpan
10600
10678
  }, NEW_OP);
10601
10679
  }
10680
+ function createDeclareLetOp(xref, declaredName, sourceSpan) {
10681
+ return __spreadValues(__spreadValues({
10682
+ kind: OpKind.DeclareLet,
10683
+ xref,
10684
+ declaredName,
10685
+ sourceSpan,
10686
+ handle: new SlotHandle()
10687
+ }, TRAIT_CONSUMES_SLOT), NEW_OP);
10688
+ }
10602
10689
  function createI18nMessageOp(xref, i18nContext, i18nBlock, message, messagePlaceholder, params, postprocessingParams, needsPostprocessing) {
10603
10690
  return __spreadValues({
10604
10691
  kind: OpKind.I18nMessage,
@@ -11144,7 +11231,8 @@ var CHAINABLE = /* @__PURE__ */ new Set([
11144
11231
  Identifiers.syntheticHostProperty,
11145
11232
  Identifiers.templateCreate,
11146
11233
  Identifiers.twoWayProperty,
11147
- Identifiers.twoWayListener
11234
+ Identifiers.twoWayListener,
11235
+ Identifiers.declareLet
11148
11236
  ]);
11149
11237
  function chain(job) {
11150
11238
  for (const unit of job.units) {
@@ -12048,18 +12136,29 @@ function generateAdvance(job) {
12048
12136
  }
12049
12137
  let slotContext = 0;
12050
12138
  for (const op of unit.update) {
12051
- if (!hasDependsOnSlotContextTrait(op)) {
12139
+ let consumer = null;
12140
+ if (hasDependsOnSlotContextTrait(op)) {
12141
+ consumer = op;
12142
+ } else {
12143
+ visitExpressionsInOp(op, (expr) => {
12144
+ if (consumer === null && hasDependsOnSlotContextTrait(expr)) {
12145
+ consumer = expr;
12146
+ }
12147
+ });
12148
+ }
12149
+ if (consumer === null) {
12052
12150
  continue;
12053
- } else if (!slotMap.has(op.target)) {
12054
- throw new Error(`AssertionError: reference to unknown slot for target ${op.target}`);
12055
12151
  }
12056
- const slot = slotMap.get(op.target);
12152
+ if (!slotMap.has(consumer.target)) {
12153
+ throw new Error(`AssertionError: reference to unknown slot for target ${consumer.target}`);
12154
+ }
12155
+ const slot = slotMap.get(consumer.target);
12057
12156
  if (slotContext !== slot) {
12058
12157
  const delta = slot - slotContext;
12059
12158
  if (delta < 0) {
12060
12159
  throw new Error(`AssertionError: slot counter should never need to move backwards`);
12061
12160
  }
12062
- OpList.insertBefore(createAdvanceOp(delta, op.sourceSpan), op);
12161
+ OpList.insertBefore(createAdvanceOp(delta, consumer.sourceSpan), op);
12063
12162
  slotContext = slot;
12064
12163
  }
12065
12164
  }
@@ -12114,12 +12213,11 @@ function recursivelyProcessView(view, parentScope) {
12114
12213
  break;
12115
12214
  case OpKind.Listener:
12116
12215
  case OpKind.TwoWayListener:
12117
- op.handlerOps.prepend(generateVariablesInScopeForView(view, scope));
12216
+ op.handlerOps.prepend(generateVariablesInScopeForView(view, scope, true));
12118
12217
  break;
12119
12218
  }
12120
12219
  }
12121
- const preambleOps = generateVariablesInScopeForView(view, scope);
12122
- view.update.prepend(preambleOps);
12220
+ view.update.prepend(generateVariablesInScopeForView(view, scope, false));
12123
12221
  }
12124
12222
  function getScopeForView(view, parent) {
12125
12223
  const scope = {
@@ -12132,6 +12230,7 @@ function getScopeForView(view, parent) {
12132
12230
  contextVariables: /* @__PURE__ */ new Map(),
12133
12231
  aliases: view.aliases,
12134
12232
  references: [],
12233
+ letDeclarations: [],
12135
12234
  parent
12136
12235
  };
12137
12236
  for (const identifier of view.contextVariables.keys()) {
@@ -12162,11 +12261,22 @@ function getScopeForView(view, parent) {
12162
12261
  });
12163
12262
  }
12164
12263
  break;
12264
+ case OpKind.DeclareLet:
12265
+ scope.letDeclarations.push({
12266
+ targetId: op.xref,
12267
+ targetSlot: op.handle,
12268
+ variable: {
12269
+ kind: SemanticVariableKind.Identifier,
12270
+ name: null,
12271
+ identifier: op.declaredName
12272
+ }
12273
+ });
12274
+ break;
12165
12275
  }
12166
12276
  }
12167
12277
  return scope;
12168
12278
  }
12169
- function generateVariablesInScopeForView(view, scope) {
12279
+ function generateVariablesInScopeForView(view, scope, isListener) {
12170
12280
  const newOps = [];
12171
12281
  if (scope.view !== view.xref) {
12172
12282
  newOps.push(createVariableOp(view.job.allocateXrefId(), scope.viewContextVariable, new NextContextExpr(), VariableFlags.None));
@@ -12183,8 +12293,13 @@ function generateVariablesInScopeForView(view, scope) {
12183
12293
  for (const ref of scope.references) {
12184
12294
  newOps.push(createVariableOp(view.job.allocateXrefId(), ref.variable, new ReferenceExpr(ref.targetId, ref.targetSlot, ref.offset), VariableFlags.None));
12185
12295
  }
12296
+ if (scope.view !== view.xref || isListener) {
12297
+ for (const decl of scope.letDeclarations) {
12298
+ newOps.push(createVariableOp(view.job.allocateXrefId(), decl.variable, new ContextLetReferenceExpr(decl.targetId, decl.targetSlot), VariableFlags.None));
12299
+ }
12300
+ }
12186
12301
  if (scope.parent !== null) {
12187
- newOps.push(...generateVariablesInScopeForView(view, scope.parent));
12302
+ newOps.push(...generateVariablesInScopeForView(view, scope.parent, false));
12188
12303
  }
12189
12304
  return newOps;
12190
12305
  }
@@ -13306,13 +13421,15 @@ var _ParseAST = class {
13306
13421
  const keyStart = this.inputIndex;
13307
13422
  const quoted = this.next.isString();
13308
13423
  const key = this.expectIdentifierOrKeywordOrString();
13309
- keys.push({ key, quoted });
13424
+ const literalMapKey = { key, quoted };
13425
+ keys.push(literalMapKey);
13310
13426
  if (quoted) {
13311
13427
  this.expectCharacter($COLON);
13312
13428
  values.push(this.parsePipe());
13313
13429
  } else if (this.consumeOptionalCharacter($COLON)) {
13314
13430
  values.push(this.parsePipe());
13315
13431
  } else {
13432
+ literalMapKey.isShorthandInitialized = true;
13316
13433
  const span = this.span(keyStart);
13317
13434
  const sourceSpan = this.sourceSpan(keyStart);
13318
13435
  values.push(new PropertyRead(span, sourceSpan, sourceSpan, new ImplicitReceiver(span, sourceSpan), key));
@@ -16738,7 +16855,7 @@ var _ControlFlowError = class {
16738
16855
  };
16739
16856
  var _Tokenizer = class {
16740
16857
  constructor(_file, _getTagDefinition, options) {
16741
- var _a2;
16858
+ var _a2, _b2;
16742
16859
  this._getTagDefinition = _getTagDefinition;
16743
16860
  this._currentTokenStart = null;
16744
16861
  this._currentTokenType = null;
@@ -16760,7 +16877,7 @@ var _Tokenizer = class {
16760
16877
  this._preserveLineEndings = options.preserveLineEndings || false;
16761
16878
  this._i18nNormalizeLineEndingsInICUs = options.i18nNormalizeLineEndingsInICUs || false;
16762
16879
  this._tokenizeBlocks = (_a2 = options.tokenizeBlocks) != null ? _a2 : true;
16763
- this._tokenizeLet = options.tokenizeLet || false;
16880
+ this._tokenizeLet = (_b2 = options.tokenizeLet) != null ? _b2 : true;
16764
16881
  try {
16765
16882
  this._cursor.init();
16766
16883
  } catch (e) {
@@ -18991,6 +19108,7 @@ function mergeNextContextsInOps(ops) {
18991
19108
  break;
18992
19109
  case ExpressionKind.GetCurrentView:
18993
19110
  case ExpressionKind.Reference:
19111
+ case ExpressionKind.ContextLetReference:
18994
19112
  tryToMerge = false;
18995
19113
  break;
18996
19114
  }
@@ -19610,6 +19728,15 @@ function repeater(collection, sourceSpan) {
19610
19728
  function deferWhen(prefetch, expr, sourceSpan) {
19611
19729
  return call(prefetch ? Identifiers.deferPrefetchWhen : Identifiers.deferWhen, [expr], sourceSpan);
19612
19730
  }
19731
+ function declareLet(slot, sourceSpan) {
19732
+ return call(Identifiers.declareLet, [literal(slot)], sourceSpan);
19733
+ }
19734
+ function storeLet(value, sourceSpan) {
19735
+ return importExpr(Identifiers.storeLet).callFn([value], sourceSpan);
19736
+ }
19737
+ function readContextLet(slot) {
19738
+ return importExpr(Identifiers.readContextLet).callFn([literal(slot)]);
19739
+ }
19613
19740
  function i18n(slot, constIndex, subTemplateIndex, sourceSpan) {
19614
19741
  const args = [literal(slot), literal(constIndex)];
19615
19742
  if (subTemplateIndex) {
@@ -19924,7 +20051,7 @@ function reify(job) {
19924
20051
  }
19925
20052
  }
19926
20053
  function reifyCreateOperations(unit, ops) {
19927
- var _a2, _b2, _c2, _d2, _e2, _f2, _g;
20054
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g2;
19928
20055
  for (const op of ops) {
19929
20056
  transformExpressionsInOp(op, reifyIrExpression, VisitorContextFlag.None);
19930
20057
  switch (op.kind) {
@@ -19983,6 +20110,9 @@ function reifyCreateOperations(unit, ops) {
19983
20110
  case OpKind.Pipe:
19984
20111
  OpList.replace(op, pipe(op.handle.slot, op.name));
19985
20112
  break;
20113
+ case OpKind.DeclareLet:
20114
+ OpList.replace(op, declareLet(op.handle.slot, op.sourceSpan));
20115
+ break;
19986
20116
  case OpKind.Listener:
19987
20117
  const listenerFn = reifyListenerHandler(unit, op.handlerFnName, op.handlerOps, op.consumesDollarEvent);
19988
20118
  const eventTargetResolver = op.eventTarget ? GLOBAL_TARGET_RESOLVERS.get(op.eventTarget) : null;
@@ -20029,7 +20159,7 @@ function reifyCreateOperations(unit, ops) {
20029
20159
  case DeferTriggerKind.Interaction:
20030
20160
  case DeferTriggerKind.Hover:
20031
20161
  case DeferTriggerKind.Viewport:
20032
- if (((_g = op.trigger.targetSlot) == null ? void 0 : _g.slot) == null || op.trigger.targetSlotViewSteps === null) {
20162
+ if (((_g2 = op.trigger.targetSlot) == null ? void 0 : _g2.slot) == null || op.trigger.targetSlotViewSteps === null) {
20033
20163
  throw new Error(`Slot or view steps not set in trigger reification for trigger kind ${op.trigger.kind}`);
20034
20164
  }
20035
20165
  args = [op.trigger.targetSlot.slot];
@@ -20190,6 +20320,8 @@ function reifyUpdateOperations(_unit, ops) {
20190
20320
  case OpKind.DeferWhen:
20191
20321
  OpList.replace(op, deferWhen(op.prefetch, op.expr, op.sourceSpan));
20192
20322
  break;
20323
+ case OpKind.StoreLet:
20324
+ throw new Error(`AssertionError: unexpected storeLet ${op.declaredName}`);
20193
20325
  case OpKind.Statement:
20194
20326
  break;
20195
20327
  default:
@@ -20247,6 +20379,10 @@ function reifyIrExpression(expr) {
20247
20379
  return pipeBindV(expr.targetSlot.slot, expr.varOffset, expr.args);
20248
20380
  case ExpressionKind.SlotLiteralExpr:
20249
20381
  return literal(expr.slot.slot);
20382
+ case ExpressionKind.ContextLetReference:
20383
+ return readContextLet(expr.targetSlot.slot);
20384
+ case ExpressionKind.StoreLet:
20385
+ return storeLet(expr.value, expr.sourceSpan);
20250
20386
  default:
20251
20387
  throw new Error(`AssertionError: Unsupported reification of ir.Expression kind: ${ExpressionKind[expr.kind]}`);
20252
20388
  }
@@ -20799,7 +20935,7 @@ function saveAndRestoreView(job) {
20799
20935
  if (!needsRestoreView) {
20800
20936
  for (const handlerOp of op.handlerOps) {
20801
20937
  visitExpressionsInOp(handlerOp, (expr) => {
20802
- if (expr instanceof ReferenceExpr) {
20938
+ if (expr instanceof ReferenceExpr || expr instanceof ContextLetReferenceExpr) {
20803
20939
  needsRestoreView = true;
20804
20940
  }
20805
20941
  });
@@ -21124,6 +21260,7 @@ function varsUsedByOp(op) {
21124
21260
  case OpKind.I18nExpression:
21125
21261
  case OpKind.Conditional:
21126
21262
  case OpKind.DeferWhen:
21263
+ case OpKind.StoreLet:
21127
21264
  return 1;
21128
21265
  case OpKind.RepeaterCreate:
21129
21266
  return op.emptyView ? 1 : 0;
@@ -21139,6 +21276,8 @@ function varsUsedByIrExpression(expr) {
21139
21276
  return 1 + expr.args.length;
21140
21277
  case ExpressionKind.PipeBindingVariadic:
21141
21278
  return 1 + expr.numArgs;
21279
+ case ExpressionKind.StoreLet:
21280
+ return 1;
21142
21281
  default:
21143
21282
  throw new Error(`AssertionError: unhandled ConsumesVarsTrait expression ${expr.constructor.name}`);
21144
21283
  }
@@ -21290,7 +21429,10 @@ function fencesForIrExpression(expr) {
21290
21429
  return Fence.ViewContextRead | Fence.ViewContextWrite;
21291
21430
  case ExpressionKind.RestoreView:
21292
21431
  return Fence.ViewContextRead | Fence.ViewContextWrite | Fence.SideEffectful;
21432
+ case ExpressionKind.StoreLet:
21433
+ return Fence.SideEffectful;
21293
21434
  case ExpressionKind.Reference:
21435
+ case ExpressionKind.ContextLetReference:
21294
21436
  return Fence.ViewContextRead;
21295
21437
  default:
21296
21438
  return Fence.None;
@@ -21432,6 +21574,59 @@ function wrapI18nIcus(job) {
21432
21574
  }
21433
21575
  }
21434
21576
 
21577
+ // bazel-out/darwin_arm64-fastbuild/bin/packages/compiler/src/template/pipeline/src/phases/store_let_optimization.mjs
21578
+ function optimizeStoreLet(job) {
21579
+ const letUsedExternally = /* @__PURE__ */ new Set();
21580
+ for (const unit of job.units) {
21581
+ for (const op of unit.ops()) {
21582
+ visitExpressionsInOp(op, (expr) => {
21583
+ if (expr instanceof ContextLetReferenceExpr) {
21584
+ letUsedExternally.add(expr.target);
21585
+ }
21586
+ });
21587
+ }
21588
+ }
21589
+ for (const unit of job.units) {
21590
+ for (const op of unit.update) {
21591
+ transformExpressionsInOp(op, (expression) => expression instanceof StoreLetExpr && !letUsedExternally.has(expression.target) ? expression.value : expression, VisitorContextFlag.None);
21592
+ }
21593
+ }
21594
+ }
21595
+
21596
+ // bazel-out/darwin_arm64-fastbuild/bin/packages/compiler/src/template/pipeline/src/phases/remove_illegal_let_references.mjs
21597
+ function removeIllegalLetReferences(job) {
21598
+ for (const unit of job.units) {
21599
+ for (const op of unit.update) {
21600
+ if (op.kind !== OpKind.Variable || op.variable.kind !== SemanticVariableKind.Identifier || !(op.initializer instanceof StoreLetExpr)) {
21601
+ continue;
21602
+ }
21603
+ const name = op.variable.identifier;
21604
+ let current = op;
21605
+ while (current && current.kind !== OpKind.ListEnd) {
21606
+ transformExpressionsInOp(current, (expr) => expr instanceof LexicalReadExpr && expr.name === name ? literal(void 0) : expr, VisitorContextFlag.None);
21607
+ current = current.prev;
21608
+ }
21609
+ }
21610
+ }
21611
+ }
21612
+
21613
+ // bazel-out/darwin_arm64-fastbuild/bin/packages/compiler/src/template/pipeline/src/phases/generate_local_let_references.mjs
21614
+ function generateLocalLetReferences(job) {
21615
+ for (const unit of job.units) {
21616
+ for (const op of unit.update) {
21617
+ if (op.kind !== OpKind.StoreLet) {
21618
+ continue;
21619
+ }
21620
+ const variable2 = {
21621
+ kind: SemanticVariableKind.Identifier,
21622
+ name: null,
21623
+ identifier: op.declaredName
21624
+ };
21625
+ OpList.replace(op, createVariableOp(job.allocateXrefId(), variable2, new StoreLetExpr(op.target, op.value, op.sourceSpan), VariableFlags.None));
21626
+ }
21627
+ }
21628
+ }
21629
+
21435
21630
  // bazel-out/darwin_arm64-fastbuild/bin/packages/compiler/src/template/pipeline/src/emit.mjs
21436
21631
  var phases = [
21437
21632
  { kind: CompilationJobKind.Tmpl, fn: removeContentSelectors },
@@ -21459,11 +21654,13 @@ var phases = [
21459
21654
  { kind: CompilationJobKind.Tmpl, fn: createVariadicPipes },
21460
21655
  { kind: CompilationJobKind.Both, fn: generatePureLiteralStructures },
21461
21656
  { kind: CompilationJobKind.Tmpl, fn: generateProjectionDefs },
21657
+ { kind: CompilationJobKind.Tmpl, fn: generateLocalLetReferences },
21462
21658
  { kind: CompilationJobKind.Tmpl, fn: generateVariables },
21463
21659
  { kind: CompilationJobKind.Tmpl, fn: saveAndRestoreView },
21464
21660
  { kind: CompilationJobKind.Both, fn: deleteAnyCasts },
21465
21661
  { kind: CompilationJobKind.Both, fn: resolveDollarEvent },
21466
21662
  { kind: CompilationJobKind.Tmpl, fn: generateTrackVariables },
21663
+ { kind: CompilationJobKind.Tmpl, fn: removeIllegalLetReferences },
21467
21664
  { kind: CompilationJobKind.Both, fn: resolveNames },
21468
21665
  { kind: CompilationJobKind.Tmpl, fn: resolveDeferTargetNames },
21469
21666
  { kind: CompilationJobKind.Tmpl, fn: transformTwoWayBindingSet },
@@ -21475,6 +21672,7 @@ var phases = [
21475
21672
  { kind: CompilationJobKind.Both, fn: expandSafeReads },
21476
21673
  { kind: CompilationJobKind.Both, fn: generateTemporaryVariables },
21477
21674
  { kind: CompilationJobKind.Both, fn: optimizeVariables },
21675
+ { kind: CompilationJobKind.Both, fn: optimizeStoreLet },
21478
21676
  { kind: CompilationJobKind.Tmpl, fn: allocateSlots },
21479
21677
  { kind: CompilationJobKind.Tmpl, fn: resolveI18nElementPlaceholders },
21480
21678
  { kind: CompilationJobKind.Tmpl, fn: resolveI18nExpressionPlaceholders },
@@ -21691,6 +21889,7 @@ function ingestNodes(unit, template2) {
21691
21889
  } else if (node instanceof ForLoopBlock) {
21692
21890
  ingestForBlock(unit, node);
21693
21891
  } else if (node instanceof LetDeclaration) {
21892
+ ingestLetDeclaration(unit, node);
21694
21893
  } else {
21695
21894
  throw new Error(`Unsupported template node: ${node.constructor.name}`);
21696
21895
  }
@@ -21863,7 +22062,7 @@ function ingestDeferView(unit, suffix, i18nMeta, children, sourceSpan) {
21863
22062
  return templateOp;
21864
22063
  }
21865
22064
  function ingestDeferBlock(unit, deferBlock) {
21866
- var _a2, _b2, _c2, _d2, _e2, _f2, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
22065
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
21867
22066
  let ownResolverFn = null;
21868
22067
  if (unit.job.deferMeta.mode === 0) {
21869
22068
  if (!unit.job.deferMeta.blocks.has(deferBlock)) {
@@ -21873,8 +22072,8 @@ function ingestDeferBlock(unit, deferBlock) {
21873
22072
  }
21874
22073
  const main = ingestDeferView(unit, "", deferBlock.i18n, deferBlock.children, deferBlock.sourceSpan);
21875
22074
  const loading = ingestDeferView(unit, "Loading", (_b2 = deferBlock.loading) == null ? void 0 : _b2.i18n, (_c2 = deferBlock.loading) == null ? void 0 : _c2.children, (_d2 = deferBlock.loading) == null ? void 0 : _d2.sourceSpan);
21876
- const placeholder = ingestDeferView(unit, "Placeholder", (_e2 = deferBlock.placeholder) == null ? void 0 : _e2.i18n, (_f2 = deferBlock.placeholder) == null ? void 0 : _f2.children, (_g = deferBlock.placeholder) == null ? void 0 : _g.sourceSpan);
21877
- const error = ingestDeferView(unit, "Error", (_h = deferBlock.error) == null ? void 0 : _h.i18n, (_i = deferBlock.error) == null ? void 0 : _i.children, (_j = deferBlock.error) == null ? void 0 : _j.sourceSpan);
22075
+ const placeholder = ingestDeferView(unit, "Placeholder", (_e2 = deferBlock.placeholder) == null ? void 0 : _e2.i18n, (_f2 = deferBlock.placeholder) == null ? void 0 : _f2.children, (_g2 = deferBlock.placeholder) == null ? void 0 : _g2.sourceSpan);
22076
+ const error = ingestDeferView(unit, "Error", (_h2 = deferBlock.error) == null ? void 0 : _h2.i18n, (_i = deferBlock.error) == null ? void 0 : _i.children, (_j = deferBlock.error) == null ? void 0 : _j.sourceSpan);
21878
22077
  const deferXref = unit.job.allocateXrefId();
21879
22078
  const deferOp = createDeferOp(deferXref, main.xref, main.handle, ownResolverFn, unit.job.allDeferrableDepsFn, deferBlock.sourceSpan);
21880
22079
  deferOp.placeholderView = (_k = placeholder == null ? void 0 : placeholder.xref) != null ? _k : null;
@@ -22037,6 +22236,11 @@ function getComputedForLoopVariableExpression(variable2, indexName, countName) {
22037
22236
  throw new Error(`AssertionError: unknown @for loop variable ${variable2.value}`);
22038
22237
  }
22039
22238
  }
22239
+ function ingestLetDeclaration(unit, node) {
22240
+ const target = unit.job.allocateXrefId();
22241
+ unit.create.push(createDeclareLetOp(target, node.name, node.sourceSpan));
22242
+ unit.update.push(createStoreLetOp(target, node.name, convertAst(node.value, unit.job, node.valueSpan), node.sourceSpan));
22243
+ }
22040
22244
  function convertAst(ast, job, baseSourceSpan) {
22041
22245
  if (ast instanceof ASTWithSource) {
22042
22246
  return convertAst(ast.ast, job, baseSourceSpan);
@@ -24171,7 +24375,7 @@ function parseTemplate(template2, templateUrl, options = {}) {
24171
24375
  }, options), {
24172
24376
  tokenizeExpansionForms: true,
24173
24377
  tokenizeBlocks: (_a2 = options.enableBlockSyntax) != null ? _a2 : true,
24174
- tokenizeLet: (_b2 = options.enableLetSyntax) != null ? _b2 : false
24378
+ tokenizeLet: (_b2 = options.enableLetSyntax) != null ? _b2 : true
24175
24379
  }));
24176
24380
  if (!options.alwaysAttemptHtmlToR3AstConversion && parseResult.errors && parseResult.errors.length > 0) {
24177
24381
  const parsedTemplate2 = {
@@ -25527,7 +25731,7 @@ function convertDirectiveFacadeToMetadata(facade) {
25527
25731
  });
25528
25732
  }
25529
25733
  function convertDeclareDirectiveFacadeToMetadata(declaration, typeSourceSpan) {
25530
- var _a2, _b2, _c2, _d2, _e2, _f2, _g, _h, _i;
25734
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i;
25531
25735
  return {
25532
25736
  name: declaration.type.name,
25533
25737
  type: wrapReference(declaration.type),
@@ -25541,11 +25745,11 @@ function convertDeclareDirectiveFacadeToMetadata(declaration, typeSourceSpan) {
25541
25745
  providers: declaration.providers !== void 0 ? new WrappedNodeExpr(declaration.providers) : null,
25542
25746
  exportAs: (_e2 = declaration.exportAs) != null ? _e2 : null,
25543
25747
  usesInheritance: (_f2 = declaration.usesInheritance) != null ? _f2 : false,
25544
- lifecycle: { usesOnChanges: (_g = declaration.usesOnChanges) != null ? _g : false },
25748
+ lifecycle: { usesOnChanges: (_g2 = declaration.usesOnChanges) != null ? _g2 : false },
25545
25749
  deps: null,
25546
25750
  typeArgumentCount: 0,
25547
25751
  fullInheritance: false,
25548
- isStandalone: (_h = declaration.isStandalone) != null ? _h : false,
25752
+ isStandalone: (_h2 = declaration.isStandalone) != null ? _h2 : false,
25549
25753
  isSignal: (_i = declaration.isSignal) != null ? _i : false,
25550
25754
  hostDirectives: convertHostDirectivesToMetadata(declaration)
25551
25755
  };
@@ -25662,7 +25866,10 @@ function convertPipeDeclarationToMetadata(pipe2) {
25662
25866
  }
25663
25867
  function parseJitTemplate(template2, typeName, sourceMapUrl, preserveWhitespaces, interpolation, deferBlockDependencies) {
25664
25868
  const interpolationConfig = interpolation ? InterpolationConfig.fromArray(interpolation) : DEFAULT_INTERPOLATION_CONFIG;
25665
- const parsed = parseTemplate(template2, sourceMapUrl, { preserveWhitespaces, interpolationConfig });
25869
+ const parsed = parseTemplate(template2, sourceMapUrl, {
25870
+ preserveWhitespaces,
25871
+ interpolationConfig
25872
+ });
25666
25873
  if (parsed.errors !== null) {
25667
25874
  const errors = parsed.errors.map((err) => err.toString()).join(", ");
25668
25875
  throw new Error(`Errors during JIT compilation of template for ${typeName}: ${errors}`);
@@ -25847,7 +26054,7 @@ function publishFacade(global) {
25847
26054
  }
25848
26055
 
25849
26056
  // bazel-out/darwin_arm64-fastbuild/bin/packages/compiler/src/version.mjs
25850
- var VERSION2 = new Version("18.1.0-next.2");
26057
+ var VERSION2 = new Version("18.1.0-next.4");
25851
26058
 
25852
26059
  // bazel-out/darwin_arm64-fastbuild/bin/packages/compiler/src/i18n/extractor_merger.mjs
25853
26060
  var _I18N_ATTR = "i18n";
@@ -26951,7 +27158,7 @@ var MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = "18.0.0";
26951
27158
  function compileDeclareClassMetadata(metadata) {
26952
27159
  const definitionMap = new DefinitionMap();
26953
27160
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION));
26954
- definitionMap.set("version", literal("18.1.0-next.2"));
27161
+ definitionMap.set("version", literal("18.1.0-next.4"));
26955
27162
  definitionMap.set("ngImport", importExpr(Identifiers.core));
26956
27163
  definitionMap.set("type", metadata.type);
26957
27164
  definitionMap.set("decorators", metadata.decorators);
@@ -26970,7 +27177,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
26970
27177
  callbackReturnDefinitionMap.set("ctorParameters", (_a2 = metadata.ctorParameters) != null ? _a2 : literal(null));
26971
27178
  callbackReturnDefinitionMap.set("propDecorators", (_b2 = metadata.propDecorators) != null ? _b2 : literal(null));
26972
27179
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
26973
- definitionMap.set("version", literal("18.1.0-next.2"));
27180
+ definitionMap.set("version", literal("18.1.0-next.4"));
26974
27181
  definitionMap.set("ngImport", importExpr(Identifiers.core));
26975
27182
  definitionMap.set("type", metadata.type);
26976
27183
  definitionMap.set("resolveDeferredDeps", compileComponentMetadataAsyncResolver(dependencies));
@@ -27038,7 +27245,7 @@ function createDirectiveDefinitionMap(meta) {
27038
27245
  const definitionMap = new DefinitionMap();
27039
27246
  const minVersion = getMinimumVersionForPartialOutput(meta);
27040
27247
  definitionMap.set("minVersion", literal(minVersion));
27041
- definitionMap.set("version", literal("18.1.0-next.2"));
27248
+ definitionMap.set("version", literal("18.1.0-next.4"));
27042
27249
  definitionMap.set("type", meta.type.value);
27043
27250
  if (meta.isStandalone) {
27044
27251
  definitionMap.set("isStandalone", literal(meta.isStandalone));
@@ -27356,7 +27563,7 @@ var MINIMUM_PARTIAL_LINKER_VERSION2 = "12.0.0";
27356
27563
  function compileDeclareFactoryFunction(meta) {
27357
27564
  const definitionMap = new DefinitionMap();
27358
27565
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION2));
27359
- definitionMap.set("version", literal("18.1.0-next.2"));
27566
+ definitionMap.set("version", literal("18.1.0-next.4"));
27360
27567
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27361
27568
  definitionMap.set("type", meta.type.value);
27362
27569
  definitionMap.set("deps", compileDependencies(meta.deps));
@@ -27379,7 +27586,7 @@ function compileDeclareInjectableFromMetadata(meta) {
27379
27586
  function createInjectableDefinitionMap(meta) {
27380
27587
  const definitionMap = new DefinitionMap();
27381
27588
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION3));
27382
- definitionMap.set("version", literal("18.1.0-next.2"));
27589
+ definitionMap.set("version", literal("18.1.0-next.4"));
27383
27590
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27384
27591
  definitionMap.set("type", meta.type.value);
27385
27592
  if (meta.providedIn !== void 0) {
@@ -27417,7 +27624,7 @@ function compileDeclareInjectorFromMetadata(meta) {
27417
27624
  function createInjectorDefinitionMap(meta) {
27418
27625
  const definitionMap = new DefinitionMap();
27419
27626
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION4));
27420
- definitionMap.set("version", literal("18.1.0-next.2"));
27627
+ definitionMap.set("version", literal("18.1.0-next.4"));
27421
27628
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27422
27629
  definitionMap.set("type", meta.type.value);
27423
27630
  definitionMap.set("providers", meta.providers);
@@ -27441,7 +27648,7 @@ function createNgModuleDefinitionMap(meta) {
27441
27648
  throw new Error("Invalid path! Local compilation mode should not get into the partial compilation path");
27442
27649
  }
27443
27650
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION5));
27444
- definitionMap.set("version", literal("18.1.0-next.2"));
27651
+ definitionMap.set("version", literal("18.1.0-next.4"));
27445
27652
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27446
27653
  definitionMap.set("type", meta.type.value);
27447
27654
  if (meta.bootstrap.length > 0) {
@@ -27476,7 +27683,7 @@ function compileDeclarePipeFromMetadata(meta) {
27476
27683
  function createPipeDefinitionMap(meta) {
27477
27684
  const definitionMap = new DefinitionMap();
27478
27685
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION6));
27479
- definitionMap.set("version", literal("18.1.0-next.2"));
27686
+ definitionMap.set("version", literal("18.1.0-next.4"));
27480
27687
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27481
27688
  definitionMap.set("type", meta.type.value);
27482
27689
  if (meta.isStandalone) {
@@ -27493,7 +27700,7 @@ function createPipeDefinitionMap(meta) {
27493
27700
  publishFacade(_global);
27494
27701
 
27495
27702
  // bazel-out/darwin_arm64-fastbuild/bin/packages/compiler-cli/src/version.mjs
27496
- var VERSION3 = new Version("18.1.0-next.2");
27703
+ var VERSION3 = new Version("18.1.0-next.4");
27497
27704
 
27498
27705
  // bazel-out/darwin_arm64-fastbuild/bin/packages/compiler-cli/src/ngtsc/imports/src/emitter.mjs
27499
27706
  var import_typescript5 = __toESM(require("typescript"), 1);
@@ -32163,14 +32370,16 @@ var import_typescript38 = __toESM(require("typescript"), 1);
32163
32370
  var import_typescript34 = __toESM(require("typescript"), 1);
32164
32371
  function createGenerateUniqueIdentifierHelper() {
32165
32372
  const generatedIdentifiers = /* @__PURE__ */ new Set();
32373
+ const isGeneratedIdentifier = (sf, identifierName2) => generatedIdentifiers.has(`${sf.fileName}@@${identifierName2}`);
32374
+ const markIdentifierAsGenerated = (sf, identifierName2) => generatedIdentifiers.add(`${sf.fileName}@@${identifierName2}`);
32166
32375
  return (sourceFile, symbolName) => {
32167
32376
  const sf = sourceFile;
32168
32377
  if (sf.identifiers === void 0) {
32169
32378
  throw new Error("Source file unexpectedly lacks map of parsed `identifiers`.");
32170
32379
  }
32171
- const isUniqueIdentifier = (name2) => !sf.identifiers.has(name2) && !generatedIdentifiers.has(name2);
32380
+ const isUniqueIdentifier = (name2) => !sf.identifiers.has(name2) && !isGeneratedIdentifier(sf, name2);
32172
32381
  if (isUniqueIdentifier(symbolName)) {
32173
- generatedIdentifiers.add(symbolName);
32382
+ markIdentifierAsGenerated(sf, symbolName);
32174
32383
  return null;
32175
32384
  }
32176
32385
  let name = null;
@@ -32178,7 +32387,7 @@ function createGenerateUniqueIdentifierHelper() {
32178
32387
  do {
32179
32388
  name = `${symbolName}_${counter++}`;
32180
32389
  } while (!isUniqueIdentifier(name));
32181
- generatedIdentifiers.add(name);
32390
+ markIdentifierAsGenerated(sf, name);
32182
32391
  return import_typescript34.default.factory.createUniqueName(name, import_typescript34.default.GeneratedIdentifierFlags.Optimistic);
32183
32392
  };
32184
32393
  }
@@ -37798,10 +38007,7 @@ var TsCreateProgramDriver = class {
37798
38007
  this.sfMap.clear();
37799
38008
  }
37800
38009
  for (const [filePath, { newText, originalFile }] of contents.entries()) {
37801
- const sf = import_typescript66.default.createSourceFile(filePath, newText, {
37802
- impliedNodeFormat: void 0,
37803
- languageVersion: import_typescript66.default.ScriptTarget.Latest
37804
- }, true);
38010
+ const sf = import_typescript66.default.createSourceFile(filePath, newText, import_typescript66.default.ScriptTarget.Latest, true);
37805
38011
  if (originalFile !== null) {
37806
38012
  sf[NgOriginalFile] = originalFile;
37807
38013
  }
@@ -37817,7 +38023,6 @@ var TsCreateProgramDriver = class {
37817
38023
  oldProgram
37818
38024
  });
37819
38025
  host.postProgramCreationCleanup();
37820
- untagAllTsFiles(this.program);
37821
38026
  untagAllTsFiles(oldProgram);
37822
38027
  }
37823
38028
  };
@@ -48292,7 +48497,7 @@ var NgCompiler = class {
48292
48497
  this.delegatingPerfRecorder = new DelegatingPerfRecorder(this.perfRecorder);
48293
48498
  this.enableTemplateTypeChecker = enableTemplateTypeChecker || ((_a2 = options["_enableTemplateTypeChecker"]) != null ? _a2 : false);
48294
48499
  this.enableBlockSyntax = (_b2 = options["_enableBlockSyntax"]) != null ? _b2 : true;
48295
- this.enableLetSyntax = (_c2 = options["_enableLetSyntax"]) != null ? _c2 : false;
48500
+ this.enableLetSyntax = (_c2 = options["_enableLetSyntax"]) != null ? _c2 : true;
48296
48501
  this.angularCoreVersion = (_d2 = options["_angularCoreVersion"]) != null ? _d2 : null;
48297
48502
  this.constructionDiagnostics.push(...this.adapter.constructionDiagnostics, ...verifyCompatibleTypeCheckOptions(this.options));
48298
48503
  this.currentProgram = inputProgram;
@@ -49165,7 +49370,6 @@ var NgtscProgram = class {
49165
49370
  perfRecorder.phase(PerfPhase.Unaccounted);
49166
49371
  perfRecorder.memory(PerfCheckpoint.TypeScriptProgramCreate);
49167
49372
  this.host.postProgramCreationCleanup();
49168
- untagAllTsFiles(this.tsProgram);
49169
49373
  const programDriver = new TsCreateProgramDriver(this.tsProgram, this.host, this.options, this.host.shimExtensionPrefixes);
49170
49374
  this.incrementalStrategy = oldProgram !== void 0 ? oldProgram.incrementalStrategy.toNextBuildStrategy() : new TrackedIncrementalBuildStrategy();
49171
49375
  const modifiedResourceFiles = /* @__PURE__ */ new Set();