@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
  */
@@ -1094,17 +1094,6 @@ function assertOneOf(value, ...validValues) {
1094
1094
  * Use of this source code is governed by an MIT-style license that can be
1095
1095
  * found in the LICENSE file at https://angular.io/license
1096
1096
  */
1097
- /**
1098
- * Equivalent to ES6 spread, add each item to an array.
1099
- *
1100
- * @param items The items to add
1101
- * @param arr The array to which you want to add the items
1102
- */
1103
- function addAllToArray(items, arr) {
1104
- for (let i = 0; i < items.length; i++) {
1105
- arr.push(items[i]);
1106
- }
1107
- }
1108
1097
  /**
1109
1098
  * Determines if the contents of two arrays is identical
1110
1099
  *
@@ -1132,25 +1121,8 @@ function arrayEquals(a, b, identityAccessor) {
1132
1121
  /**
1133
1122
  * Flattens an array.
1134
1123
  */
1135
- function flatten$1(list, dst) {
1136
- if (dst === undefined)
1137
- dst = list;
1138
- for (let i = 0; i < list.length; i++) {
1139
- let item = list[i];
1140
- if (Array.isArray(item)) {
1141
- // we need to inline it.
1142
- if (dst === list) {
1143
- // Our assumption that the list was already flat was wrong and
1144
- // we need to clone flat since we need to write to it.
1145
- dst = list.slice(0, i);
1146
- }
1147
- flatten$1(item, dst);
1148
- }
1149
- else if (dst !== list) {
1150
- dst.push(item);
1151
- }
1152
- }
1153
- return dst;
1124
+ function flatten$1(list) {
1125
+ return list.flat(Number.POSITIVE_INFINITY);
1154
1126
  }
1155
1127
  function deepForEach(input, fn) {
1156
1128
  input.forEach(value => Array.isArray(value) ? deepForEach(value, fn) : fn(value));
@@ -1260,46 +1232,6 @@ function arrayInsert2(array, index, value1, value2) {
1260
1232
  array[index + 1] = value2;
1261
1233
  }
1262
1234
  }
1263
- /**
1264
- * Insert a `value` into an `array` so that the array remains sorted.
1265
- *
1266
- * NOTE:
1267
- * - Duplicates are not allowed, and are ignored.
1268
- * - This uses binary search algorithm for fast inserts.
1269
- *
1270
- * @param array A sorted array to insert into.
1271
- * @param value The value to insert.
1272
- * @returns index of the inserted value.
1273
- */
1274
- function arrayInsertSorted(array, value) {
1275
- let index = arrayIndexOfSorted(array, value);
1276
- if (index < 0) {
1277
- // if we did not find it insert it.
1278
- index = ~index;
1279
- arrayInsert(array, index, value);
1280
- }
1281
- return index;
1282
- }
1283
- /**
1284
- * Remove `value` from a sorted `array`.
1285
- *
1286
- * NOTE:
1287
- * - This uses binary search algorithm for fast removals.
1288
- *
1289
- * @param array A sorted array to remove from.
1290
- * @param value The value to remove.
1291
- * @returns index of the removed value.
1292
- * - positive index if value found and removed.
1293
- * - negative index if value not found. (`~index` to get the value where it should have been
1294
- * inserted)
1295
- */
1296
- function arrayRemoveSorted(array, value) {
1297
- const index = arrayIndexOfSorted(array, value);
1298
- if (index >= 0) {
1299
- arraySplice(array, index, 1);
1300
- }
1301
- return index;
1302
- }
1303
1235
  /**
1304
1236
  * Get an index of an `value` in a sorted `array`.
1305
1237
  *
@@ -2802,6 +2734,14 @@ function getDirectiveDef(type) {
2802
2734
  function getPipeDef$1(type) {
2803
2735
  return type[NG_PIPE_DEF] || null;
2804
2736
  }
2737
+ /**
2738
+ * Checks whether a given Component, Directive or Pipe is marked as standalone.
2739
+ * This will return false if passed anything other than a Component, Directive, or Pipe class
2740
+ * See this guide for additional information: https://angular.io/guide/standalone-components
2741
+ *
2742
+ * @param type A reference to a Component, Directive or Pipe.
2743
+ * @publicApi
2744
+ */
2805
2745
  function isStandalone(type) {
2806
2746
  const def = getComponentDef$1(type) || getDirectiveDef(type) || getPipeDef$1(type);
2807
2747
  return def !== null ? def.standalone : false;
@@ -2857,7 +2797,7 @@ const EMBEDDED_VIEW_INJECTOR = 21;
2857
2797
  const HEADER_OFFSET = 22;
2858
2798
  // Note: This hack is necessary so we don't erroneously get a circular dependency
2859
2799
  // failure based on types.
2860
- const unusedValueExportToPlacateAjd$8 = 1;
2800
+ const unusedValueExportToPlacateAjd$4 = 1;
2861
2801
 
2862
2802
  /**
2863
2803
  * @license
@@ -2902,7 +2842,7 @@ const MOVED_VIEWS = 9;
2902
2842
  const CONTAINER_HEADER_OFFSET = 10;
2903
2843
  // Note: This hack is necessary so we don't erroneously get a circular dependency
2904
2844
  // failure based on types.
2905
- const unusedValueExportToPlacateAjd$7 = 1;
2845
+ const unusedValueExportToPlacateAjd$3 = 1;
2906
2846
 
2907
2847
  /**
2908
2848
  * @license
@@ -2987,11 +2927,6 @@ function assertHasParent(tNode) {
2987
2927
  assertDefined(tNode, 'currentTNode should exist!');
2988
2928
  assertDefined(tNode.parent, 'currentTNode should have a parent');
2989
2929
  }
2990
- function assertDataNext(lView, index, arr) {
2991
- if (arr == null)
2992
- arr = lView;
2993
- assertEqual(arr.length, index, `index ${index} expected to be at the end of arr (length ${arr.length})`);
2994
- }
2995
2930
  function assertLContainer(value) {
2996
2931
  assertDefined(value, 'LContainer must be defined');
2997
2932
  assertEqual(isLContainer(value), true, 'Expecting LContainer');
@@ -3240,14 +3175,7 @@ const profiler = function (event, instance, hookOrListener) {
3240
3175
  * found in the LICENSE file at https://angular.io/license
3241
3176
  */
3242
3177
  const SVG_NAMESPACE = 'svg';
3243
- const SVG_NAMESPACE_URI = 'http://www.w3.org/2000/svg';
3244
3178
  const MATH_ML_NAMESPACE = 'math';
3245
- const MATH_ML_NAMESPACE_URI = 'http://www.w3.org/1998/MathML/';
3246
- function getNamespaceUri(namespace) {
3247
- const name = namespace.toLowerCase();
3248
- return name === SVG_NAMESPACE ? SVG_NAMESPACE_URI :
3249
- (name === MATH_ML_NAMESPACE ? MATH_ML_NAMESPACE_URI : null);
3250
- }
3251
3179
 
3252
3180
  /**
3253
3181
  * @license
@@ -3296,20 +3224,6 @@ function unwrapLView(value) {
3296
3224
  }
3297
3225
  return null;
3298
3226
  }
3299
- /**
3300
- * Returns `LContainer` or `null` if not found.
3301
- * @param value wrapped value of `RNode`, `LView`, `LContainer`
3302
- */
3303
- function unwrapLContainer(value) {
3304
- while (Array.isArray(value)) {
3305
- // This check is same as `isLContainer()` but we don't call at as we don't want to call
3306
- // `Array.isArray()` twice and give JITer more work for inlining.
3307
- if (value[TYPE] === true)
3308
- return value;
3309
- value = value[HOST];
3310
- }
3311
- return null;
3312
- }
3313
3227
  /**
3314
3228
  * Retrieves an element value from the provided `viewData`, by unwrapping
3315
3229
  * from any containers, component views, or style contexts.
@@ -3569,9 +3483,6 @@ function isCurrentTNodeParent() {
3569
3483
  function setCurrentTNodeAsNotParent() {
3570
3484
  instructionState.lFrame.isParent = false;
3571
3485
  }
3572
- function setCurrentTNodeAsParent() {
3573
- instructionState.lFrame.isParent = true;
3574
- }
3575
3486
  function getContextLView() {
3576
3487
  const contextLView = instructionState.lFrame.contextLView;
3577
3488
  ngDevMode && assertDefined(contextLView, 'contextLView must be defined.');
@@ -4294,7 +4205,7 @@ function isFactory(obj) {
4294
4205
  }
4295
4206
  // Note: This hack is necessary so we don't erroneously get a circular dependency
4296
4207
  // failure based on types.
4297
- const unusedValueExportToPlacateAjd$6 = 1;
4208
+ const unusedValueExportToPlacateAjd$2 = 1;
4298
4209
 
4299
4210
  /**
4300
4211
  * Converts `TNodeType` into human readable text.
@@ -4313,7 +4224,7 @@ function toTNodeTypeAsString(tNodeType) {
4313
4224
  }
4314
4225
  // Note: This hack is necessary so we don't erroneously get a circular dependency
4315
4226
  // failure based on types.
4316
- const unusedValueExportToPlacateAjd$5 = 1;
4227
+ const unusedValueExportToPlacateAjd$1 = 1;
4317
4228
  /**
4318
4229
  * Returns `true` if the `TNode` has a directive which has `@Input()` for `class` binding.
4319
4230
  *
@@ -5994,6 +5905,10 @@ function unregisterLView(lView) {
5994
5905
  * of the context.
5995
5906
  */
5996
5907
  class LContext {
5908
+ /** Component's parent view data. */
5909
+ get lView() {
5910
+ return getLViewById(this.lViewId);
5911
+ }
5997
5912
  constructor(
5998
5913
  /**
5999
5914
  * ID of the component's parent view data.
@@ -6011,10 +5926,6 @@ class LContext {
6011
5926
  this.nodeIndex = nodeIndex;
6012
5927
  this.native = native;
6013
5928
  }
6014
- /** Component's parent view data. */
6015
- get lView() {
6016
- return getLViewById(this.lViewId);
6017
- }
6018
5929
  }
6019
5930
 
6020
5931
  /**
@@ -6353,28 +6264,6 @@ function ensureIcuContainerVisitorLoaded(loader) {
6353
6264
  }
6354
6265
  }
6355
6266
 
6356
- /**
6357
- * @license
6358
- * Copyright Google LLC All Rights Reserved.
6359
- *
6360
- * Use of this source code is governed by an MIT-style license that can be
6361
- * found in the LICENSE file at https://angular.io/license
6362
- */
6363
- // Note: This hack is necessary so we don't erroneously get a circular dependency
6364
- // failure based on types.
6365
- const unusedValueExportToPlacateAjd$4 = 1;
6366
-
6367
- /**
6368
- * @license
6369
- * Copyright Google LLC All Rights Reserved.
6370
- *
6371
- * Use of this source code is governed by an MIT-style license that can be
6372
- * found in the LICENSE file at https://angular.io/license
6373
- */
6374
- // Note: This hack is necessary so we don't erroneously get a circular dependency
6375
- // failure based on types.
6376
- const unusedValueExportToPlacateAjd$3 = 1;
6377
-
6378
6267
  /**
6379
6268
  * @license
6380
6269
  * Copyright Google LLC All Rights Reserved.
@@ -6446,7 +6335,6 @@ function getNearestLContainer(viewOrContainer) {
6446
6335
  * Use of this source code is governed by an MIT-style license that can be
6447
6336
  * found in the LICENSE file at https://angular.io/license
6448
6337
  */
6449
- const unusedValueToPlacateAjd$2 = unusedValueExportToPlacateAjd$7 + unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd$3 + unusedValueExportToPlacateAjd$8;
6450
6338
  /**
6451
6339
  * NOTE: for performance reasons, the possible actions are inlined within the function instead of
6452
6340
  * being passed as an argument.
@@ -8929,6 +8817,12 @@ function getNullInjector() {
8929
8817
  class EnvironmentInjector {
8930
8818
  }
8931
8819
  class R3Injector extends EnvironmentInjector {
8820
+ /**
8821
+ * Flag indicating that this injector was previously destroyed.
8822
+ */
8823
+ get destroyed() {
8824
+ return this._destroyed;
8825
+ }
8932
8826
  constructor(providers, parent, source, scopes) {
8933
8827
  super();
8934
8828
  this.parent = parent;
@@ -8963,12 +8857,6 @@ class R3Injector extends EnvironmentInjector {
8963
8857
  this.injectorDefTypes =
8964
8858
  new Set(this.get(INJECTOR_DEF_TYPES.multi, EMPTY_ARRAY, InjectFlags.Self));
8965
8859
  }
8966
- /**
8967
- * Flag indicating that this injector was previously destroyed.
8968
- */
8969
- get destroyed() {
8970
- return this._destroyed;
8971
- }
8972
8860
  /**
8973
8861
  * Destroy the injector and release references to every instance or provider associated with it.
8974
8862
  *
@@ -9511,7 +9399,7 @@ class Version {
9511
9399
  /**
9512
9400
  * @publicApi
9513
9401
  */
9514
- const VERSION = new Version('15.1.0-next.1');
9402
+ const VERSION = new Version('15.1.0-next.2');
9515
9403
 
9516
9404
  /**
9517
9405
  * @license
@@ -9777,7 +9665,6 @@ function classIndexOf(className, classToSearch, startingIndex) {
9777
9665
  * Use of this source code is governed by an MIT-style license that can be
9778
9666
  * found in the LICENSE file at https://angular.io/license
9779
9667
  */
9780
- const unusedValueToPlacateAjd$1 = unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd$4;
9781
9668
  const NG_TEMPLATE_SELECTOR = 'ng-template';
9782
9669
  /**
9783
9670
  * Search the `TAttributes` to see if it contains `cssClassToMatch` (case insensitive)
@@ -12236,6 +12123,12 @@ function lastSelectedElementIdx(hostBindingOpCodes) {
12236
12123
  function instantiateAllDirectives(tView, lView, tNode, native) {
12237
12124
  const start = tNode.directiveStart;
12238
12125
  const end = tNode.directiveEnd;
12126
+ // The component view needs to be created before creating the node injector
12127
+ // since it is used to inject some special symbols like `ChangeDetectorRef`.
12128
+ if (isComponentHost(tNode)) {
12129
+ ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);
12130
+ addComponentLogic(lView, tNode, tView.data[start + tNode.componentOffset]);
12131
+ }
12239
12132
  if (!tView.firstCreatePass) {
12240
12133
  getOrCreateNodeInjectorForNode(tNode, lView);
12241
12134
  }
@@ -12243,19 +12136,14 @@ function instantiateAllDirectives(tView, lView, tNode, native) {
12243
12136
  const initialInputs = tNode.initialInputs;
12244
12137
  for (let i = start; i < end; i++) {
12245
12138
  const def = tView.data[i];
12246
- const isComponent = isComponentDef(def);
12247
- if (isComponent) {
12248
- ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);
12249
- addComponentLogic(lView, tNode, def);
12250
- }
12251
12139
  const directive = getNodeInjectable(lView, tView, i, tNode);
12252
12140
  attachPatchData(directive, lView);
12253
12141
  if (initialInputs !== null) {
12254
12142
  setInputsFromAttrs(lView, i - start, directive, def, tNode, initialInputs);
12255
12143
  }
12256
- if (isComponent) {
12144
+ if (isComponentDef(def)) {
12257
12145
  const componentView = getComponentLViewByIndex(tNode.index, lView);
12258
- componentView[CONTEXT] = directive;
12146
+ componentView[CONTEXT] = getNodeInjectable(lView, tView, i, tNode);
12259
12147
  }
12260
12148
  }
12261
12149
  }
@@ -13019,6 +12907,11 @@ function collectNativeNodes(tView, lView, tNode, result, isProjection = false) {
13019
12907
  * found in the LICENSE file at https://angular.io/license
13020
12908
  */
13021
12909
  class ViewRef {
12910
+ get rootNodes() {
12911
+ const lView = this._lView;
12912
+ const tView = lView[TVIEW];
12913
+ return collectNativeNodes(tView, lView, tView.firstChild, []);
12914
+ }
13022
12915
  constructor(
13023
12916
  /**
13024
12917
  * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.
@@ -13044,11 +12937,6 @@ class ViewRef {
13044
12937
  this._appRef = null;
13045
12938
  this._attachedToViewContainer = false;
13046
12939
  }
13047
- get rootNodes() {
13048
- const lView = this._lView;
13049
- const tView = lView[TVIEW];
13050
- return collectNativeNodes(tView, lView, tView.firstChild, []);
13051
- }
13052
12940
  get context() {
13053
12941
  return this._lView[CONTEXT];
13054
12942
  }
@@ -13370,6 +13258,12 @@ class ChainedInjector {
13370
13258
  * ComponentFactory interface implementation.
13371
13259
  */
13372
13260
  class ComponentFactory extends ComponentFactory$1 {
13261
+ get inputs() {
13262
+ return toRefArray(this.componentDef.inputs);
13263
+ }
13264
+ get outputs() {
13265
+ return toRefArray(this.componentDef.outputs);
13266
+ }
13373
13267
  /**
13374
13268
  * @param componentDef The component definition.
13375
13269
  * @param ngModule The NgModuleRef to which the factory is bound.
@@ -13384,12 +13278,6 @@ class ComponentFactory extends ComponentFactory$1 {
13384
13278
  componentDef.ngContentSelectors ? componentDef.ngContentSelectors : [];
13385
13279
  this.isBoundToModule = !!ngModule;
13386
13280
  }
13387
- get inputs() {
13388
- return toRefArray(this.componentDef.inputs);
13389
- }
13390
- get outputs() {
13391
- return toRefArray(this.componentDef.outputs);
13392
- }
13393
13281
  create(injector, projectableNodes, rootSelectorOrNode, environmentInjector) {
13394
13282
  environmentInjector = environmentInjector || this.ngModule;
13395
13283
  let realEnvironmentInjector = environmentInjector instanceof EnvironmentInjector ?
@@ -19158,7 +19046,7 @@ var I18nCreateOpCode;
19158
19046
  })(I18nCreateOpCode || (I18nCreateOpCode = {}));
19159
19047
  // Note: This hack is necessary so we don't erroneously get a circular dependency
19160
19048
  // failure based on types.
19161
- const unusedValueExportToPlacateAjd$2 = 1;
19049
+ const unusedValueExportToPlacateAjd = 1;
19162
19050
 
19163
19051
  /**
19164
19052
  * @license
@@ -22640,6 +22528,12 @@ function symbolIterator() {
22640
22528
  * @publicApi
22641
22529
  */
22642
22530
  class QueryList {
22531
+ /**
22532
+ * Returns `Observable` of `QueryList` notifying the subscriber of changes.
22533
+ */
22534
+ get changes() {
22535
+ return this._changes || (this._changes = new EventEmitter());
22536
+ }
22643
22537
  /**
22644
22538
  * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
22645
22539
  * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
@@ -22663,12 +22557,6 @@ class QueryList {
22663
22557
  if (!proto[symbol])
22664
22558
  proto[symbol] = symbolIterator;
22665
22559
  }
22666
- /**
22667
- * Returns `Observable` of `QueryList` notifying the subscriber of changes.
22668
- */
22669
- get changes() {
22670
- return this._changes || (this._changes = new EventEmitter());
22671
- }
22672
22560
  /**
22673
22561
  * Returns the QueryList entry at `index`.
22674
22562
  */
@@ -23155,29 +23043,6 @@ function createContainerRef(hostTNode, hostLView) {
23155
23043
  * Use of this source code is governed by an MIT-style license that can be
23156
23044
  * found in the LICENSE file at https://angular.io/license
23157
23045
  */
23158
- // Note: This hack is necessary so we don't erroneously get a circular dependency
23159
- // failure based on types.
23160
- const unusedValueExportToPlacateAjd$1 = 1;
23161
-
23162
- /**
23163
- * @license
23164
- * Copyright Google LLC All Rights Reserved.
23165
- *
23166
- * Use of this source code is governed by an MIT-style license that can be
23167
- * found in the LICENSE file at https://angular.io/license
23168
- */
23169
- // Note: This hack is necessary so we don't erroneously get a circular dependency
23170
- // failure based on types.
23171
- const unusedValueExportToPlacateAjd = 1;
23172
-
23173
- /**
23174
- * @license
23175
- * Copyright Google LLC All Rights Reserved.
23176
- *
23177
- * Use of this source code is governed by an MIT-style license that can be
23178
- * found in the LICENSE file at https://angular.io/license
23179
- */
23180
- const unusedValueToPlacateAjd = unusedValueExportToPlacateAjd$1 + unusedValueExportToPlacateAjd$6 + unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd;
23181
23046
  class LQuery_ {
23182
23047
  constructor(queryList) {
23183
23048
  this.queryList = queryList;
@@ -23984,8 +23849,7 @@ function compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInR
23984
23849
  Object.defineProperty(moduleType, NG_INJ_DEF, {
23985
23850
  get: () => {
23986
23851
  if (ngInjectorDef === null) {
23987
- ngDevMode &&
23988
- verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot);
23852
+ ngDevMode && verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot);
23989
23853
  const meta = {
23990
23854
  name: moduleType.name,
23991
23855
  type: moduleType,