@angular/core 15.1.0-next.1 → 15.1.0-next.2

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 (42) hide show
  1. package/esm2020/src/application_ref.mjs +13 -13
  2. package/esm2020/src/core.mjs +2 -1
  3. package/esm2020/src/core_render3_private_export.mjs +1 -2
  4. package/esm2020/src/di/create_injector.mjs +1 -1
  5. package/esm2020/src/di/r3_injector.mjs +7 -7
  6. package/esm2020/src/linker/query_list.mjs +7 -7
  7. package/esm2020/src/render3/assert.mjs +1 -6
  8. package/esm2020/src/render3/component_ref.mjs +7 -7
  9. package/esm2020/src/render3/definition.mjs +9 -1
  10. package/esm2020/src/render3/instructions/shared.mjs +9 -8
  11. package/esm2020/src/render3/interfaces/context.mjs +5 -5
  12. package/esm2020/src/render3/jit/module.mjs +2 -3
  13. package/esm2020/src/render3/namespaces.mjs +1 -8
  14. package/esm2020/src/render3/node_manipulation.mjs +3 -7
  15. package/esm2020/src/render3/node_selector_matcher.mjs +1 -4
  16. package/esm2020/src/render3/query.mjs +1 -6
  17. package/esm2020/src/render3/state.mjs +1 -4
  18. package/esm2020/src/render3/util/view_utils.mjs +1 -15
  19. package/esm2020/src/render3/view_ref.mjs +6 -6
  20. package/esm2020/src/util/array_utils.mjs +3 -71
  21. package/esm2020/src/version.mjs +1 -1
  22. package/esm2020/testing/src/logger.mjs +3 -3
  23. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  24. package/fesm2015/core.mjs +66 -202
  25. package/fesm2015/core.mjs.map +1 -1
  26. package/fesm2015/testing.mjs +53 -189
  27. package/fesm2015/testing.mjs.map +1 -1
  28. package/fesm2020/core.mjs +66 -202
  29. package/fesm2020/core.mjs.map +1 -1
  30. package/fesm2020/testing.mjs +53 -189
  31. package/fesm2020/testing.mjs.map +1 -1
  32. package/index.d.ts +11 -3
  33. package/package.json +1 -1
  34. package/schematics/migrations/relative-link-resolution/util.d.ts +1 -1
  35. package/schematics/migrations/router-link-with-href/util.d.ts +1 -1
  36. package/schematics/migrations/typed-forms/util.d.ts +1 -1
  37. package/schematics/utils/import_manager.js +23 -3
  38. package/schematics/utils/ng_decorators.d.ts +1 -1
  39. package/schematics/utils/typescript/compiler_host.d.ts +1 -1
  40. package/schematics/utils/typescript/imports.d.ts +1 -1
  41. package/schematics/utils/typescript/property_name.d.ts +1 -1
  42. package/testing/index.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v15.1.0-next.1
2
+ * @license Angular v15.1.0-next.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1095,17 +1095,6 @@ function assertOneOf(value, ...validValues) {
1095
1095
  * Use of this source code is governed by an MIT-style license that can be
1096
1096
  * found in the LICENSE file at https://angular.io/license
1097
1097
  */
1098
- /**
1099
- * Equivalent to ES6 spread, add each item to an array.
1100
- *
1101
- * @param items The items to add
1102
- * @param arr The array to which you want to add the items
1103
- */
1104
- function addAllToArray(items, arr) {
1105
- for (let i = 0; i < items.length; i++) {
1106
- arr.push(items[i]);
1107
- }
1108
- }
1109
1098
  /**
1110
1099
  * Determines if the contents of two arrays is identical
1111
1100
  *
@@ -1133,25 +1122,8 @@ function arrayEquals(a, b, identityAccessor) {
1133
1122
  /**
1134
1123
  * Flattens an array.
1135
1124
  */
1136
- function flatten$1(list, dst) {
1137
- if (dst === undefined)
1138
- dst = list;
1139
- for (let i = 0; i < list.length; i++) {
1140
- let item = list[i];
1141
- if (Array.isArray(item)) {
1142
- // we need to inline it.
1143
- if (dst === list) {
1144
- // Our assumption that the list was already flat was wrong and
1145
- // we need to clone flat since we need to write to it.
1146
- dst = list.slice(0, i);
1147
- }
1148
- flatten$1(item, dst);
1149
- }
1150
- else if (dst !== list) {
1151
- dst.push(item);
1152
- }
1153
- }
1154
- return dst;
1125
+ function flatten$1(list) {
1126
+ return list.flat(Number.POSITIVE_INFINITY);
1155
1127
  }
1156
1128
  function deepForEach(input, fn) {
1157
1129
  input.forEach(value => Array.isArray(value) ? deepForEach(value, fn) : fn(value));
@@ -1261,46 +1233,6 @@ function arrayInsert2(array, index, value1, value2) {
1261
1233
  array[index + 1] = value2;
1262
1234
  }
1263
1235
  }
1264
- /**
1265
- * Insert a `value` into an `array` so that the array remains sorted.
1266
- *
1267
- * NOTE:
1268
- * - Duplicates are not allowed, and are ignored.
1269
- * - This uses binary search algorithm for fast inserts.
1270
- *
1271
- * @param array A sorted array to insert into.
1272
- * @param value The value to insert.
1273
- * @returns index of the inserted value.
1274
- */
1275
- function arrayInsertSorted(array, value) {
1276
- let index = arrayIndexOfSorted(array, value);
1277
- if (index < 0) {
1278
- // if we did not find it insert it.
1279
- index = ~index;
1280
- arrayInsert(array, index, value);
1281
- }
1282
- return index;
1283
- }
1284
- /**
1285
- * Remove `value` from a sorted `array`.
1286
- *
1287
- * NOTE:
1288
- * - This uses binary search algorithm for fast removals.
1289
- *
1290
- * @param array A sorted array to remove from.
1291
- * @param value The value to remove.
1292
- * @returns index of the removed value.
1293
- * - positive index if value found and removed.
1294
- * - negative index if value not found. (`~index` to get the value where it should have been
1295
- * inserted)
1296
- */
1297
- function arrayRemoveSorted(array, value) {
1298
- const index = arrayIndexOfSorted(array, value);
1299
- if (index >= 0) {
1300
- arraySplice(array, index, 1);
1301
- }
1302
- return index;
1303
- }
1304
1236
  /**
1305
1237
  * Get an index of an `value` in a sorted `array`.
1306
1238
  *
@@ -2803,6 +2735,14 @@ function getDirectiveDef(type) {
2803
2735
  function getPipeDef$1(type) {
2804
2736
  return type[NG_PIPE_DEF] || null;
2805
2737
  }
2738
+ /**
2739
+ * Checks whether a given Component, Directive or Pipe is marked as standalone.
2740
+ * This will return false if passed anything other than a Component, Directive, or Pipe class
2741
+ * See this guide for additional information: https://angular.io/guide/standalone-components
2742
+ *
2743
+ * @param type A reference to a Component, Directive or Pipe.
2744
+ * @publicApi
2745
+ */
2806
2746
  function isStandalone(type) {
2807
2747
  const def = getComponentDef$1(type) || getDirectiveDef(type) || getPipeDef$1(type);
2808
2748
  return def !== null ? def.standalone : false;
@@ -2851,7 +2791,7 @@ const MOVED_VIEWS = 9;
2851
2791
  const CONTAINER_HEADER_OFFSET = 10;
2852
2792
  // Note: This hack is necessary so we don't erroneously get a circular dependency
2853
2793
  // failure based on types.
2854
- const unusedValueExportToPlacateAjd$8 = 1;
2794
+ const unusedValueExportToPlacateAjd$4 = 1;
2855
2795
 
2856
2796
  /**
2857
2797
  * @license
@@ -2896,7 +2836,7 @@ const EMBEDDED_VIEW_INJECTOR = 21;
2896
2836
  const HEADER_OFFSET = 22;
2897
2837
  // Note: This hack is necessary so we don't erroneously get a circular dependency
2898
2838
  // failure based on types.
2899
- const unusedValueExportToPlacateAjd$7 = 1;
2839
+ const unusedValueExportToPlacateAjd$3 = 1;
2900
2840
 
2901
2841
  /**
2902
2842
  * @license
@@ -2981,11 +2921,6 @@ function assertHasParent(tNode) {
2981
2921
  assertDefined(tNode, 'currentTNode should exist!');
2982
2922
  assertDefined(tNode.parent, 'currentTNode should have a parent');
2983
2923
  }
2984
- function assertDataNext(lView, index, arr) {
2985
- if (arr == null)
2986
- arr = lView;
2987
- assertEqual(arr.length, index, `index ${index} expected to be at the end of arr (length ${arr.length})`);
2988
- }
2989
2924
  function assertLContainer(value) {
2990
2925
  assertDefined(value, 'LContainer must be defined');
2991
2926
  assertEqual(isLContainer(value), true, 'Expecting LContainer');
@@ -3234,14 +3169,7 @@ const profiler = function (event, instance, hookOrListener) {
3234
3169
  * found in the LICENSE file at https://angular.io/license
3235
3170
  */
3236
3171
  const SVG_NAMESPACE = 'svg';
3237
- const SVG_NAMESPACE_URI = 'http://www.w3.org/2000/svg';
3238
3172
  const MATH_ML_NAMESPACE = 'math';
3239
- const MATH_ML_NAMESPACE_URI = 'http://www.w3.org/1998/MathML/';
3240
- function getNamespaceUri(namespace) {
3241
- const name = namespace.toLowerCase();
3242
- return name === SVG_NAMESPACE ? SVG_NAMESPACE_URI :
3243
- (name === MATH_ML_NAMESPACE ? MATH_ML_NAMESPACE_URI : null);
3244
- }
3245
3173
 
3246
3174
  /**
3247
3175
  * @license
@@ -3290,20 +3218,6 @@ function unwrapLView(value) {
3290
3218
  }
3291
3219
  return null;
3292
3220
  }
3293
- /**
3294
- * Returns `LContainer` or `null` if not found.
3295
- * @param value wrapped value of `RNode`, `LView`, `LContainer`
3296
- */
3297
- function unwrapLContainer(value) {
3298
- while (Array.isArray(value)) {
3299
- // This check is same as `isLContainer()` but we don't call at as we don't want to call
3300
- // `Array.isArray()` twice and give JITer more work for inlining.
3301
- if (value[TYPE] === true)
3302
- return value;
3303
- value = value[HOST];
3304
- }
3305
- return null;
3306
- }
3307
3221
  /**
3308
3222
  * Retrieves an element value from the provided `viewData`, by unwrapping
3309
3223
  * from any containers, component views, or style contexts.
@@ -3563,9 +3477,6 @@ function isCurrentTNodeParent() {
3563
3477
  function setCurrentTNodeAsNotParent() {
3564
3478
  instructionState.lFrame.isParent = false;
3565
3479
  }
3566
- function setCurrentTNodeAsParent() {
3567
- instructionState.lFrame.isParent = true;
3568
- }
3569
3480
  function getContextLView() {
3570
3481
  const contextLView = instructionState.lFrame.contextLView;
3571
3482
  ngDevMode && assertDefined(contextLView, 'contextLView must be defined.');
@@ -4288,7 +4199,7 @@ function isFactory(obj) {
4288
4199
  }
4289
4200
  // Note: This hack is necessary so we don't erroneously get a circular dependency
4290
4201
  // failure based on types.
4291
- const unusedValueExportToPlacateAjd$6 = 1;
4202
+ const unusedValueExportToPlacateAjd$2 = 1;
4292
4203
 
4293
4204
  /**
4294
4205
  * Converts `TNodeType` into human readable text.
@@ -4307,7 +4218,7 @@ function toTNodeTypeAsString(tNodeType) {
4307
4218
  }
4308
4219
  // Note: This hack is necessary so we don't erroneously get a circular dependency
4309
4220
  // failure based on types.
4310
- const unusedValueExportToPlacateAjd$5 = 1;
4221
+ const unusedValueExportToPlacateAjd$1 = 1;
4311
4222
  /**
4312
4223
  * Returns `true` if the `TNode` has a directive which has `@Input()` for `class` binding.
4313
4224
  *
@@ -5989,6 +5900,10 @@ function unregisterLView(lView) {
5989
5900
  * of the context.
5990
5901
  */
5991
5902
  class LContext {
5903
+ /** Component's parent view data. */
5904
+ get lView() {
5905
+ return getLViewById(this.lViewId);
5906
+ }
5992
5907
  constructor(
5993
5908
  /**
5994
5909
  * ID of the component's parent view data.
@@ -6006,10 +5921,6 @@ class LContext {
6006
5921
  this.nodeIndex = nodeIndex;
6007
5922
  this.native = native;
6008
5923
  }
6009
- /** Component's parent view data. */
6010
- get lView() {
6011
- return getLViewById(this.lViewId);
6012
- }
6013
5924
  }
6014
5925
 
6015
5926
  /**
@@ -6348,28 +6259,6 @@ function ensureIcuContainerVisitorLoaded(loader) {
6348
6259
  }
6349
6260
  }
6350
6261
 
6351
- /**
6352
- * @license
6353
- * Copyright Google LLC All Rights Reserved.
6354
- *
6355
- * Use of this source code is governed by an MIT-style license that can be
6356
- * found in the LICENSE file at https://angular.io/license
6357
- */
6358
- // Note: This hack is necessary so we don't erroneously get a circular dependency
6359
- // failure based on types.
6360
- const unusedValueExportToPlacateAjd$4 = 1;
6361
-
6362
- /**
6363
- * @license
6364
- * Copyright Google LLC All Rights Reserved.
6365
- *
6366
- * Use of this source code is governed by an MIT-style license that can be
6367
- * found in the LICENSE file at https://angular.io/license
6368
- */
6369
- // Note: This hack is necessary so we don't erroneously get a circular dependency
6370
- // failure based on types.
6371
- const unusedValueExportToPlacateAjd$3 = 1;
6372
-
6373
6262
  /**
6374
6263
  * @license
6375
6264
  * Copyright Google LLC All Rights Reserved.
@@ -6441,7 +6330,6 @@ function getNearestLContainer(viewOrContainer) {
6441
6330
  * Use of this source code is governed by an MIT-style license that can be
6442
6331
  * found in the LICENSE file at https://angular.io/license
6443
6332
  */
6444
- const unusedValueToPlacateAjd$2 = unusedValueExportToPlacateAjd$8 + unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd$3 + unusedValueExportToPlacateAjd$7;
6445
6333
  /**
6446
6334
  * NOTE: for performance reasons, the possible actions are inlined within the function instead of
6447
6335
  * being passed as an argument.
@@ -8930,6 +8818,12 @@ function getNullInjector() {
8930
8818
  class EnvironmentInjector {
8931
8819
  }
8932
8820
  class R3Injector extends EnvironmentInjector {
8821
+ /**
8822
+ * Flag indicating that this injector was previously destroyed.
8823
+ */
8824
+ get destroyed() {
8825
+ return this._destroyed;
8826
+ }
8933
8827
  constructor(providers, parent, source, scopes) {
8934
8828
  super();
8935
8829
  this.parent = parent;
@@ -8964,12 +8858,6 @@ class R3Injector extends EnvironmentInjector {
8964
8858
  this.injectorDefTypes =
8965
8859
  new Set(this.get(INJECTOR_DEF_TYPES.multi, EMPTY_ARRAY, InjectFlags.Self));
8966
8860
  }
8967
- /**
8968
- * Flag indicating that this injector was previously destroyed.
8969
- */
8970
- get destroyed() {
8971
- return this._destroyed;
8972
- }
8973
8861
  /**
8974
8862
  * Destroy the injector and release references to every instance or provider associated with it.
8975
8863
  *
@@ -9512,7 +9400,7 @@ class Version {
9512
9400
  /**
9513
9401
  * @publicApi
9514
9402
  */
9515
- const VERSION = new Version('15.1.0-next.1');
9403
+ const VERSION = new Version('15.1.0-next.2');
9516
9404
 
9517
9405
  /**
9518
9406
  * @license
@@ -9778,7 +9666,6 @@ function classIndexOf(className, classToSearch, startingIndex) {
9778
9666
  * Use of this source code is governed by an MIT-style license that can be
9779
9667
  * found in the LICENSE file at https://angular.io/license
9780
9668
  */
9781
- const unusedValueToPlacateAjd$1 = unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd$4;
9782
9669
  const NG_TEMPLATE_SELECTOR = 'ng-template';
9783
9670
  /**
9784
9671
  * Search the `TAttributes` to see if it contains `cssClassToMatch` (case insensitive)
@@ -12238,6 +12125,12 @@ function lastSelectedElementIdx(hostBindingOpCodes) {
12238
12125
  function instantiateAllDirectives(tView, lView, tNode, native) {
12239
12126
  const start = tNode.directiveStart;
12240
12127
  const end = tNode.directiveEnd;
12128
+ // The component view needs to be created before creating the node injector
12129
+ // since it is used to inject some special symbols like `ChangeDetectorRef`.
12130
+ if (isComponentHost(tNode)) {
12131
+ ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);
12132
+ addComponentLogic(lView, tNode, tView.data[start + tNode.componentOffset]);
12133
+ }
12241
12134
  if (!tView.firstCreatePass) {
12242
12135
  getOrCreateNodeInjectorForNode(tNode, lView);
12243
12136
  }
@@ -12245,19 +12138,14 @@ function instantiateAllDirectives(tView, lView, tNode, native) {
12245
12138
  const initialInputs = tNode.initialInputs;
12246
12139
  for (let i = start; i < end; i++) {
12247
12140
  const def = tView.data[i];
12248
- const isComponent = isComponentDef(def);
12249
- if (isComponent) {
12250
- ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);
12251
- addComponentLogic(lView, tNode, def);
12252
- }
12253
12141
  const directive = getNodeInjectable(lView, tView, i, tNode);
12254
12142
  attachPatchData(directive, lView);
12255
12143
  if (initialInputs !== null) {
12256
12144
  setInputsFromAttrs(lView, i - start, directive, def, tNode, initialInputs);
12257
12145
  }
12258
- if (isComponent) {
12146
+ if (isComponentDef(def)) {
12259
12147
  const componentView = getComponentLViewByIndex(tNode.index, lView);
12260
- componentView[CONTEXT] = directive;
12148
+ componentView[CONTEXT] = getNodeInjectable(lView, tView, i, tNode);
12261
12149
  }
12262
12150
  }
12263
12151
  }
@@ -13022,6 +12910,11 @@ function collectNativeNodes(tView, lView, tNode, result, isProjection = false) {
13022
12910
  * found in the LICENSE file at https://angular.io/license
13023
12911
  */
13024
12912
  class ViewRef {
12913
+ get rootNodes() {
12914
+ const lView = this._lView;
12915
+ const tView = lView[TVIEW];
12916
+ return collectNativeNodes(tView, lView, tView.firstChild, []);
12917
+ }
13025
12918
  constructor(
13026
12919
  /**
13027
12920
  * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.
@@ -13047,11 +12940,6 @@ class ViewRef {
13047
12940
  this._appRef = null;
13048
12941
  this._attachedToViewContainer = false;
13049
12942
  }
13050
- get rootNodes() {
13051
- const lView = this._lView;
13052
- const tView = lView[TVIEW];
13053
- return collectNativeNodes(tView, lView, tView.firstChild, []);
13054
- }
13055
12943
  get context() {
13056
12944
  return this._lView[CONTEXT];
13057
12945
  }
@@ -13373,6 +13261,12 @@ class ChainedInjector {
13373
13261
  * ComponentFactory interface implementation.
13374
13262
  */
13375
13263
  class ComponentFactory extends ComponentFactory$1 {
13264
+ get inputs() {
13265
+ return toRefArray(this.componentDef.inputs);
13266
+ }
13267
+ get outputs() {
13268
+ return toRefArray(this.componentDef.outputs);
13269
+ }
13376
13270
  /**
13377
13271
  * @param componentDef The component definition.
13378
13272
  * @param ngModule The NgModuleRef to which the factory is bound.
@@ -13387,12 +13281,6 @@ class ComponentFactory extends ComponentFactory$1 {
13387
13281
  componentDef.ngContentSelectors ? componentDef.ngContentSelectors : [];
13388
13282
  this.isBoundToModule = !!ngModule;
13389
13283
  }
13390
- get inputs() {
13391
- return toRefArray(this.componentDef.inputs);
13392
- }
13393
- get outputs() {
13394
- return toRefArray(this.componentDef.outputs);
13395
- }
13396
13284
  create(injector, projectableNodes, rootSelectorOrNode, environmentInjector) {
13397
13285
  environmentInjector = environmentInjector || this.ngModule;
13398
13286
  let realEnvironmentInjector = environmentInjector instanceof EnvironmentInjector ?
@@ -19161,7 +19049,7 @@ var I18nCreateOpCode;
19161
19049
  })(I18nCreateOpCode || (I18nCreateOpCode = {}));
19162
19050
  // Note: This hack is necessary so we don't erroneously get a circular dependency
19163
19051
  // failure based on types.
19164
- const unusedValueExportToPlacateAjd$2 = 1;
19052
+ const unusedValueExportToPlacateAjd = 1;
19165
19053
 
19166
19054
  /**
19167
19055
  * @license
@@ -22644,6 +22532,12 @@ function symbolIterator() {
22644
22532
  * @publicApi
22645
22533
  */
22646
22534
  class QueryList {
22535
+ /**
22536
+ * Returns `Observable` of `QueryList` notifying the subscriber of changes.
22537
+ */
22538
+ get changes() {
22539
+ return this._changes || (this._changes = new EventEmitter());
22540
+ }
22647
22541
  /**
22648
22542
  * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
22649
22543
  * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
@@ -22667,12 +22561,6 @@ class QueryList {
22667
22561
  if (!proto[symbol])
22668
22562
  proto[symbol] = symbolIterator;
22669
22563
  }
22670
- /**
22671
- * Returns `Observable` of `QueryList` notifying the subscriber of changes.
22672
- */
22673
- get changes() {
22674
- return this._changes || (this._changes = new EventEmitter());
22675
- }
22676
22564
  /**
22677
22565
  * Returns the QueryList entry at `index`.
22678
22566
  */
@@ -23159,29 +23047,6 @@ function createContainerRef(hostTNode, hostLView) {
23159
23047
  * Use of this source code is governed by an MIT-style license that can be
23160
23048
  * found in the LICENSE file at https://angular.io/license
23161
23049
  */
23162
- // Note: This hack is necessary so we don't erroneously get a circular dependency
23163
- // failure based on types.
23164
- const unusedValueExportToPlacateAjd$1 = 1;
23165
-
23166
- /**
23167
- * @license
23168
- * Copyright Google LLC All Rights Reserved.
23169
- *
23170
- * Use of this source code is governed by an MIT-style license that can be
23171
- * found in the LICENSE file at https://angular.io/license
23172
- */
23173
- // Note: This hack is necessary so we don't erroneously get a circular dependency
23174
- // failure based on types.
23175
- const unusedValueExportToPlacateAjd = 1;
23176
-
23177
- /**
23178
- * @license
23179
- * Copyright Google LLC All Rights Reserved.
23180
- *
23181
- * Use of this source code is governed by an MIT-style license that can be
23182
- * found in the LICENSE file at https://angular.io/license
23183
- */
23184
- const unusedValueToPlacateAjd = unusedValueExportToPlacateAjd$1 + unusedValueExportToPlacateAjd$6 + unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd;
23185
23050
  class LQuery_ {
23186
23051
  constructor(queryList) {
23187
23052
  this.queryList = queryList;
@@ -23988,8 +23853,7 @@ function compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInR
23988
23853
  Object.defineProperty(moduleType, NG_INJ_DEF, {
23989
23854
  get: () => {
23990
23855
  if (ngInjectorDef === null) {
23991
- ngDevMode &&
23992
- verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot);
23856
+ ngDevMode && verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot);
23993
23857
  const meta = {
23994
23858
  name: moduleType.name,
23995
23859
  type: moduleType,