@angular/core 7.2.0-rc.0 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/core-testing.umd.js +190 -128
- package/bundles/core-testing.umd.js.map +1 -1
- package/bundles/core-testing.umd.min.js +10 -10
- package/bundles/core-testing.umd.min.js.map +1 -1
- package/bundles/core.umd.js +1772 -1324
- package/bundles/core.umd.js.map +1 -1
- package/bundles/core.umd.min.js +110 -124
- package/bundles/core.umd.min.js.map +1 -1
- package/core.metadata.json +1 -1
- package/esm2015/index.js +2 -2
- package/esm2015/public_api.js +2 -2
- package/esm2015/src/change_detection/constants.js +3 -3
- package/esm2015/src/core.js +2 -2
- package/esm2015/src/core_render3_private_export.js +2 -2
- package/esm2015/src/debug/debug_node.js +6 -6
- package/esm2015/src/render3/bindings.js +3 -3
- package/esm2015/src/render3/component.js +8 -6
- package/esm2015/src/render3/component_ref.js +5 -5
- package/esm2015/src/render3/context_discovery.js +2 -2
- package/esm2015/src/render3/definition.js +3 -10
- package/esm2015/src/render3/di.js +107 -93
- package/esm2015/src/render3/discovery_utils.js +5 -5
- package/esm2015/src/render3/empty.js +28 -0
- package/esm2015/src/render3/features/inherit_definition_feature.js +3 -3
- package/esm2015/src/render3/hooks.js +14 -12
- package/esm2015/src/render3/i18n.js +3 -3
- package/esm2015/src/render3/index.js +2 -2
- package/esm2015/src/render3/instructions.js +319 -370
- package/esm2015/src/render3/interfaces/container.js +10 -1
- package/esm2015/src/render3/interfaces/definition.js +1 -6
- package/esm2015/src/render3/interfaces/injector.js +1 -2
- package/esm2015/src/render3/interfaces/node.js +37 -2
- package/esm2015/src/render3/interfaces/styling.js +304 -113
- package/esm2015/src/render3/interfaces/view.js +15 -7
- package/esm2015/src/render3/jit/compiler_facade_interface.js +3 -1
- package/esm2015/src/render3/jit/directive.js +6 -7
- package/esm2015/src/render3/jit/environment.js +3 -1
- package/esm2015/src/render3/jit/module.js +11 -9
- package/esm2015/src/render3/node_manipulation.js +5 -22
- package/esm2015/src/render3/node_selector_matcher.js +2 -2
- package/esm2015/src/render3/pipe.js +2 -2
- package/esm2015/src/render3/pure_function.js +3 -3
- package/esm2015/src/render3/query.js +3 -3
- package/esm2015/src/render3/state.js +14 -20
- package/esm2015/src/render3/styling/class_and_style_bindings.js +893 -213
- package/esm2015/src/render3/styling/util.js +37 -14
- package/esm2015/src/render3/util.js +21 -5
- package/esm2015/src/render3/view_engine_compatibility.js +5 -6
- package/esm2015/src/render3/view_ref.js +6 -16
- package/esm2015/src/sanitization/inert_body.js +4 -4
- package/esm2015/src/version.js +1 -1
- package/esm2015/testing/src/r3_test_bed.js +234 -152
- package/esm2015/testing/src/resolvers.js +12 -5
- package/esm2015/testing/src/testing_internal.js +2 -2
- package/esm5/src/change_detection/constants.js +3 -3
- package/esm5/src/core_render3_private_export.js +2 -2
- package/esm5/src/debug/debug_node.js +6 -6
- package/esm5/src/render3/bindings.js +3 -3
- package/esm5/src/render3/component.js +8 -6
- package/esm5/src/render3/component_ref.js +5 -5
- package/esm5/src/render3/context_discovery.js +2 -2
- package/esm5/src/render3/definition.js +3 -8
- package/esm5/src/render3/di.js +94 -84
- package/esm5/src/render3/discovery_utils.js +5 -5
- package/esm5/src/render3/empty.js +22 -0
- package/esm5/src/render3/features/inherit_definition_feature.js +3 -3
- package/esm5/src/render3/hooks.js +11 -9
- package/esm5/src/render3/i18n.js +3 -3
- package/esm5/src/render3/index.js +2 -2
- package/esm5/src/render3/instructions.js +282 -282
- package/esm5/src/render3/interfaces/container.js +9 -1
- package/esm5/src/render3/interfaces/definition.js +1 -1
- package/esm5/src/render3/interfaces/injector.js +1 -1
- package/esm5/src/render3/interfaces/node.js +1 -1
- package/esm5/src/render3/interfaces/styling.js +1 -1
- package/esm5/src/render3/interfaces/view.js +1 -1
- package/esm5/src/render3/jit/compiler_facade_interface.js +1 -1
- package/esm5/src/render3/jit/directive.js +6 -6
- package/esm5/src/render3/jit/environment.js +3 -1
- package/esm5/src/render3/jit/module.js +10 -8
- package/esm5/src/render3/node_manipulation.js +5 -21
- package/esm5/src/render3/node_selector_matcher.js +2 -2
- package/esm5/src/render3/pipe.js +2 -2
- package/esm5/src/render3/pure_function.js +3 -3
- package/esm5/src/render3/query.js +3 -3
- package/esm5/src/render3/state.js +14 -19
- package/esm5/src/render3/styling/class_and_style_bindings.js +681 -210
- package/esm5/src/render3/styling/util.js +26 -13
- package/esm5/src/render3/util.js +20 -5
- package/esm5/src/render3/view_engine_compatibility.js +5 -6
- package/esm5/src/render3/view_ref.js +6 -15
- package/esm5/src/sanitization/inert_body.js +4 -4
- package/esm5/src/version.js +1 -1
- package/esm5/testing/src/r3_test_bed.js +174 -127
- package/esm5/testing/src/resolvers.js +11 -6
- package/esm5/testing/src/testing_internal.js +2 -2
- package/fesm2015/core.js +2304 -1731
- package/fesm2015/core.js.map +1 -1
- package/fesm2015/testing.js +223 -150
- package/fesm2015/testing.js.map +1 -1
- package/fesm5/core.js +1777 -1331
- package/fesm5/core.js.map +1 -1
- package/fesm5/testing.js +181 -130
- package/fesm5/testing.js.map +1 -1
- package/package.json +1 -1
- package/src/change_detection/constants.d.ts +2 -2
- package/src/core_render3_private_export.d.ts +1 -1
- package/src/render3/definition.d.ts +2 -4
- package/src/render3/di.d.ts +4 -3
- package/src/render3/empty.d.ts +16 -0
- package/src/render3/hooks.d.ts +3 -3
- package/src/render3/index.d.ts +1 -1
- package/src/render3/instructions.d.ts +117 -72
- package/src/render3/interfaces/container.d.ts +1 -0
- package/src/render3/interfaces/definition.d.ts +0 -3
- package/src/render3/interfaces/injector.d.ts +0 -1
- package/src/render3/interfaces/node.d.ts +37 -2
- package/src/render3/interfaces/styling.d.ts +392 -117
- package/src/render3/interfaces/view.d.ts +14 -6
- package/src/render3/jit/compiler_facade_interface.d.ts +2 -0
- package/src/render3/node_manipulation.d.ts +0 -7
- package/src/render3/state.d.ts +3 -4
- package/src/render3/styling/class_and_style_bindings.d.ts +114 -43
- package/src/render3/styling/util.d.ts +5 -2
- package/src/render3/util.d.ts +7 -0
- package/testing/src/r3_test_bed.d.ts +15 -0
- package/testing/testing.metadata.json +1 -1
- package/testing.d.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v7.2.0
|
|
2
|
+
* @license Angular v7.2.0
|
|
3
3
|
* (c) 2010-2018 Google, Inc. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -626,6 +626,17 @@
|
|
|
626
626
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
627
627
|
}
|
|
628
628
|
|
|
629
|
+
var __assign = function() {
|
|
630
|
+
__assign = Object.assign || function __assign(t) {
|
|
631
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
632
|
+
s = arguments[i];
|
|
633
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
634
|
+
}
|
|
635
|
+
return t;
|
|
636
|
+
};
|
|
637
|
+
return __assign.apply(this, arguments);
|
|
638
|
+
};
|
|
639
|
+
|
|
629
640
|
function __decorate(decorators, target, key, desc) {
|
|
630
641
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
631
642
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -837,7 +848,9 @@
|
|
|
837
848
|
this.overrides.clear();
|
|
838
849
|
overrides.forEach(function (_a) {
|
|
839
850
|
var _b = __read(_a, 2), type = _b[0], override = _b[1];
|
|
840
|
-
|
|
851
|
+
var overrides = _this.overrides.get(type) || [];
|
|
852
|
+
overrides.push(override);
|
|
853
|
+
_this.overrides.set(type, overrides);
|
|
841
854
|
});
|
|
842
855
|
};
|
|
843
856
|
OverrideResolver.prototype.getAnnotation = function (type) {
|
|
@@ -845,14 +858,17 @@
|
|
|
845
858
|
return reflection.annotations(type).find(function (a) { return a instanceof _this.type; }) || null;
|
|
846
859
|
};
|
|
847
860
|
OverrideResolver.prototype.resolve = function (type) {
|
|
861
|
+
var _this = this;
|
|
848
862
|
var resolved = this.resolved.get(type) || null;
|
|
849
863
|
if (!resolved) {
|
|
850
864
|
resolved = this.getAnnotation(type);
|
|
851
865
|
if (resolved) {
|
|
852
|
-
var
|
|
853
|
-
if (
|
|
854
|
-
var
|
|
855
|
-
|
|
866
|
+
var overrides = this.overrides.get(type);
|
|
867
|
+
if (overrides) {
|
|
868
|
+
var overrider_1 = new MetadataOverrider();
|
|
869
|
+
overrides.forEach(function (override) {
|
|
870
|
+
resolved = overrider_1.overrideMetadata(_this.type, resolved, override);
|
|
871
|
+
});
|
|
856
872
|
}
|
|
857
873
|
}
|
|
858
874
|
this.resolved.set(type, resolved);
|
|
@@ -945,6 +961,7 @@
|
|
|
945
961
|
* found in the LICENSE file at https://angular.io/license
|
|
946
962
|
*/
|
|
947
963
|
var _nextRootElementId = 0;
|
|
964
|
+
var EMPTY_ARRAY = [];
|
|
948
965
|
/**
|
|
949
966
|
* @description
|
|
950
967
|
* Configures and initializes environment for unit testing and provides methods for
|
|
@@ -967,6 +984,8 @@
|
|
|
967
984
|
this._pipeOverrides = [];
|
|
968
985
|
this._providerOverrides = [];
|
|
969
986
|
this._rootProviderOverrides = [];
|
|
987
|
+
this._providerOverridesByToken = new Map();
|
|
988
|
+
this._templateOverrides = new Map();
|
|
970
989
|
// test module configuration
|
|
971
990
|
this._providers = [];
|
|
972
991
|
this._declarations = [];
|
|
@@ -974,6 +993,7 @@
|
|
|
974
993
|
this._schemas = [];
|
|
975
994
|
this._activeFixtures = [];
|
|
976
995
|
this._moduleRef = null;
|
|
996
|
+
this._testModuleType = null;
|
|
977
997
|
this._instantiated = false;
|
|
978
998
|
}
|
|
979
999
|
/**
|
|
@@ -1049,7 +1069,10 @@
|
|
|
1049
1069
|
return TestBedRender3;
|
|
1050
1070
|
};
|
|
1051
1071
|
TestBedRender3.prototype.overrideTemplateUsingTestingModule = function (component, template) {
|
|
1052
|
-
|
|
1072
|
+
if (this._instantiated) {
|
|
1073
|
+
throw new Error('Cannot override template when the test module has already been instantiated');
|
|
1074
|
+
}
|
|
1075
|
+
this._templateOverrides.set(component, template);
|
|
1053
1076
|
};
|
|
1054
1077
|
TestBedRender3.overrideProvider = function (token, provider) {
|
|
1055
1078
|
_getTestBedRender3().overrideProvider(token, provider);
|
|
@@ -1108,12 +1131,15 @@
|
|
|
1108
1131
|
this._pipeOverrides = [];
|
|
1109
1132
|
this._providerOverrides = [];
|
|
1110
1133
|
this._rootProviderOverrides = [];
|
|
1134
|
+
this._providerOverridesByToken.clear();
|
|
1135
|
+
this._templateOverrides.clear();
|
|
1111
1136
|
// reset test module config
|
|
1112
1137
|
this._providers = [];
|
|
1113
1138
|
this._declarations = [];
|
|
1114
1139
|
this._imports = [];
|
|
1115
1140
|
this._schemas = [];
|
|
1116
1141
|
this._moduleRef = null;
|
|
1142
|
+
this._testModuleType = null;
|
|
1117
1143
|
this._instantiated = false;
|
|
1118
1144
|
this._activeFixtures.forEach(function (fixture) {
|
|
1119
1145
|
try {
|
|
@@ -1192,16 +1218,18 @@
|
|
|
1192
1218
|
* Overwrites all providers for the given token with the given provider definition.
|
|
1193
1219
|
*/
|
|
1194
1220
|
TestBedRender3.prototype.overrideProvider = function (token, provider) {
|
|
1221
|
+
var providerDef = provider.useFactory ?
|
|
1222
|
+
{ provide: token, useFactory: provider.useFactory, deps: provider.deps || [] } :
|
|
1223
|
+
{ provide: token, useValue: provider.useValue };
|
|
1195
1224
|
var injectableDef;
|
|
1196
1225
|
var isRoot = (typeof token !== 'string' && (injectableDef = core.ɵgetInjectableDef(token)) &&
|
|
1197
1226
|
injectableDef.providedIn === 'root');
|
|
1198
|
-
var
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
}
|
|
1227
|
+
var overridesBucket = isRoot ? this._rootProviderOverrides : this._providerOverrides;
|
|
1228
|
+
overridesBucket.push(providerDef);
|
|
1229
|
+
// keep all overrides grouped by token as well for fast lookups using token
|
|
1230
|
+
var overridesForToken = this._providerOverridesByToken.get(token) || [];
|
|
1231
|
+
overridesForToken.push(providerDef);
|
|
1232
|
+
this._providerOverridesByToken.set(token, overridesForToken);
|
|
1205
1233
|
};
|
|
1206
1234
|
TestBedRender3.prototype.deprecatedOverrideProvider = function (token, provider) {
|
|
1207
1235
|
throw new Error('No implemented in IVY');
|
|
@@ -1234,15 +1262,22 @@
|
|
|
1234
1262
|
return;
|
|
1235
1263
|
}
|
|
1236
1264
|
var resolvers = this._getResolvers();
|
|
1237
|
-
|
|
1238
|
-
|
|
1265
|
+
this._testModuleType = this._createTestModule();
|
|
1266
|
+
this._compileNgModule(this._testModuleType, resolvers);
|
|
1239
1267
|
var parentInjector = this.platform.injector;
|
|
1240
|
-
this._moduleRef = new core.ɵRender3NgModuleRef(
|
|
1268
|
+
this._moduleRef = new core.ɵRender3NgModuleRef(this._testModuleType, parentInjector);
|
|
1241
1269
|
// ApplicationInitStatus.runInitializers() is marked @internal
|
|
1242
1270
|
// to core. Cast it to any before accessing it.
|
|
1243
1271
|
this._moduleRef.injector.get(core.ApplicationInitStatus).runInitializers();
|
|
1244
1272
|
this._instantiated = true;
|
|
1245
1273
|
};
|
|
1274
|
+
// get overrides for a specific provider (if any)
|
|
1275
|
+
TestBedRender3.prototype._getProviderOverrides = function (provider) {
|
|
1276
|
+
var token = typeof provider === 'object' && provider.hasOwnProperty('provide') ?
|
|
1277
|
+
provider.provide :
|
|
1278
|
+
provider;
|
|
1279
|
+
return this._providerOverridesByToken.get(token) || [];
|
|
1280
|
+
};
|
|
1246
1281
|
// creates resolvers taking overrides into account
|
|
1247
1282
|
TestBedRender3.prototype._getResolvers = function () {
|
|
1248
1283
|
var module = new NgModuleResolver();
|
|
@@ -1289,128 +1324,155 @@
|
|
|
1289
1324
|
}());
|
|
1290
1325
|
return DynamicTestModule;
|
|
1291
1326
|
};
|
|
1327
|
+
TestBedRender3.prototype._getMetaWithOverrides = function (meta, type) {
|
|
1328
|
+
var _this = this;
|
|
1329
|
+
var overrides = {};
|
|
1330
|
+
if (meta.providers && meta.providers.length) {
|
|
1331
|
+
var providerOverrides = flatten(meta.providers, function (provider) { return _this._getProviderOverrides(provider); });
|
|
1332
|
+
if (providerOverrides.length) {
|
|
1333
|
+
overrides.providers = __spread(meta.providers, providerOverrides);
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1336
|
+
var hasTemplateOverride = !!type && this._templateOverrides.has(type);
|
|
1337
|
+
if (hasTemplateOverride) {
|
|
1338
|
+
overrides.template = this._templateOverrides.get(type);
|
|
1339
|
+
}
|
|
1340
|
+
return Object.keys(overrides).length ? __assign({}, meta, overrides) : meta;
|
|
1341
|
+
};
|
|
1342
|
+
TestBedRender3.prototype._compileNgModule = function (moduleType, resolvers) {
|
|
1343
|
+
var _this = this;
|
|
1344
|
+
var ngModule = resolvers.module.resolve(moduleType);
|
|
1345
|
+
if (ngModule === null) {
|
|
1346
|
+
throw new Error(core.ɵstringify(moduleType) + " has not @NgModule annotation");
|
|
1347
|
+
}
|
|
1348
|
+
var metadata = this._getMetaWithOverrides(ngModule);
|
|
1349
|
+
core.ɵcompileNgModuleDefs(moduleType, metadata);
|
|
1350
|
+
var declarations = flatten(ngModule.declarations || EMPTY_ARRAY, core.resolveForwardRef);
|
|
1351
|
+
var compiledComponents = [];
|
|
1352
|
+
// Compile the components, directives and pipes declared by this module
|
|
1353
|
+
declarations.forEach(function (declaration) {
|
|
1354
|
+
var component = resolvers.component.resolve(declaration);
|
|
1355
|
+
if (component) {
|
|
1356
|
+
var metadata_1 = _this._getMetaWithOverrides(component, declaration);
|
|
1357
|
+
core.ɵcompileComponent(declaration, metadata_1);
|
|
1358
|
+
compiledComponents.push(declaration);
|
|
1359
|
+
return;
|
|
1360
|
+
}
|
|
1361
|
+
var directive = resolvers.directive.resolve(declaration);
|
|
1362
|
+
if (directive) {
|
|
1363
|
+
var metadata_2 = _this._getMetaWithOverrides(directive);
|
|
1364
|
+
core.ɵcompileDirective(declaration, metadata_2);
|
|
1365
|
+
return;
|
|
1366
|
+
}
|
|
1367
|
+
var pipe = resolvers.pipe.resolve(declaration);
|
|
1368
|
+
if (pipe) {
|
|
1369
|
+
core.ɵcompilePipe(declaration, pipe);
|
|
1370
|
+
return;
|
|
1371
|
+
}
|
|
1372
|
+
});
|
|
1373
|
+
// Compile transitive modules, components, directives and pipes
|
|
1374
|
+
var transitiveScope = this._transitiveScopesFor(moduleType, resolvers);
|
|
1375
|
+
compiledComponents.forEach(function (cmp) {
|
|
1376
|
+
var scope = _this._templateOverrides.has(cmp) ?
|
|
1377
|
+
// if we have template override via `TestBed.overrideTemplateUsingTestingModule` -
|
|
1378
|
+
// define Component scope as TestingModule scope, instead of the scope of NgModule
|
|
1379
|
+
// where this Component was declared
|
|
1380
|
+
_this._transitiveScopesFor(_this._testModuleType, resolvers) :
|
|
1381
|
+
transitiveScope;
|
|
1382
|
+
core.ɵpatchComponentDefWithScope(cmp.ngComponentDef, scope);
|
|
1383
|
+
});
|
|
1384
|
+
};
|
|
1385
|
+
/**
|
|
1386
|
+
* Compute the pair of transitive scopes (compilation scope and exported scope) for a given
|
|
1387
|
+
* module.
|
|
1388
|
+
*
|
|
1389
|
+
* This operation is memoized and the result is cached on the module's definition. It can be
|
|
1390
|
+
* called on modules with components that have not fully compiled yet, but the result should not
|
|
1391
|
+
* be used until they have.
|
|
1392
|
+
*/
|
|
1393
|
+
TestBedRender3.prototype._transitiveScopesFor = function (moduleType, resolvers) {
|
|
1394
|
+
var _this = this;
|
|
1395
|
+
if (!isNgModule(moduleType)) {
|
|
1396
|
+
throw new Error(moduleType.name + " does not have an ngModuleDef");
|
|
1397
|
+
}
|
|
1398
|
+
var def = moduleType.ngModuleDef;
|
|
1399
|
+
if (def.transitiveCompileScopes !== null) {
|
|
1400
|
+
return def.transitiveCompileScopes;
|
|
1401
|
+
}
|
|
1402
|
+
var scopes = {
|
|
1403
|
+
compilation: {
|
|
1404
|
+
directives: new Set(),
|
|
1405
|
+
pipes: new Set(),
|
|
1406
|
+
},
|
|
1407
|
+
exported: {
|
|
1408
|
+
directives: new Set(),
|
|
1409
|
+
pipes: new Set(),
|
|
1410
|
+
},
|
|
1411
|
+
};
|
|
1412
|
+
def.declarations.forEach(function (declared) {
|
|
1413
|
+
var declaredWithDefs = declared;
|
|
1414
|
+
if (declaredWithDefs.ngPipeDef !== undefined) {
|
|
1415
|
+
scopes.compilation.pipes.add(declared);
|
|
1416
|
+
}
|
|
1417
|
+
else {
|
|
1418
|
+
scopes.compilation.directives.add(declared);
|
|
1419
|
+
}
|
|
1420
|
+
});
|
|
1421
|
+
def.imports.forEach(function (imported) {
|
|
1422
|
+
var ngModule = resolvers.module.resolve(imported);
|
|
1423
|
+
if (ngModule === null) {
|
|
1424
|
+
throw new Error("Importing " + imported.name + " which does not have an @ngModule");
|
|
1425
|
+
}
|
|
1426
|
+
else {
|
|
1427
|
+
_this._compileNgModule(imported, resolvers);
|
|
1428
|
+
}
|
|
1429
|
+
// When this module imports another, the imported module's exported directives and pipes are
|
|
1430
|
+
// added to the compilation scope of this module.
|
|
1431
|
+
var importedScope = _this._transitiveScopesFor(imported, resolvers);
|
|
1432
|
+
importedScope.exported.directives.forEach(function (entry) { return scopes.compilation.directives.add(entry); });
|
|
1433
|
+
importedScope.exported.pipes.forEach(function (entry) { return scopes.compilation.pipes.add(entry); });
|
|
1434
|
+
});
|
|
1435
|
+
def.exports.forEach(function (exported) {
|
|
1436
|
+
var exportedTyped = exported;
|
|
1437
|
+
// Either the type is a module, a pipe, or a component/directive (which may not have an
|
|
1438
|
+
// ngComponentDef as it might be compiled asynchronously).
|
|
1439
|
+
if (isNgModule(exportedTyped)) {
|
|
1440
|
+
// When this module exports another, the exported module's exported directives and pipes are
|
|
1441
|
+
// added to both the compilation and exported scopes of this module.
|
|
1442
|
+
var exportedScope = _this._transitiveScopesFor(exportedTyped, resolvers);
|
|
1443
|
+
exportedScope.exported.directives.forEach(function (entry) {
|
|
1444
|
+
scopes.compilation.directives.add(entry);
|
|
1445
|
+
scopes.exported.directives.add(entry);
|
|
1446
|
+
});
|
|
1447
|
+
exportedScope.exported.pipes.forEach(function (entry) {
|
|
1448
|
+
scopes.compilation.pipes.add(entry);
|
|
1449
|
+
scopes.exported.pipes.add(entry);
|
|
1450
|
+
});
|
|
1451
|
+
}
|
|
1452
|
+
else if (exportedTyped.ngPipeDef !== undefined) {
|
|
1453
|
+
scopes.exported.pipes.add(exportedTyped);
|
|
1454
|
+
}
|
|
1455
|
+
else {
|
|
1456
|
+
scopes.exported.directives.add(exportedTyped);
|
|
1457
|
+
}
|
|
1458
|
+
});
|
|
1459
|
+
def.transitiveCompileScopes = scopes;
|
|
1460
|
+
return scopes;
|
|
1461
|
+
};
|
|
1292
1462
|
return TestBedRender3;
|
|
1293
1463
|
}());
|
|
1294
1464
|
var testBed;
|
|
1295
1465
|
function _getTestBedRender3() {
|
|
1296
1466
|
return testBed = testBed || new TestBedRender3();
|
|
1297
1467
|
}
|
|
1298
|
-
|
|
1299
|
-
var EMPTY_ARRAY = [];
|
|
1300
|
-
function compileNgModule(moduleType, resolvers) {
|
|
1301
|
-
var ngModule = resolvers.module.resolve(moduleType);
|
|
1302
|
-
if (ngModule === null) {
|
|
1303
|
-
throw new Error(core.ɵstringify(moduleType) + " has not @NgModule annotation");
|
|
1304
|
-
}
|
|
1305
|
-
core.ɵcompileNgModuleDefs(moduleType, ngModule);
|
|
1306
|
-
var declarations = flatten(ngModule.declarations || EMPTY_ARRAY);
|
|
1307
|
-
var compiledComponents = [];
|
|
1308
|
-
// Compile the components, directives and pipes declared by this module
|
|
1309
|
-
declarations.forEach(function (declaration) {
|
|
1310
|
-
var component = resolvers.component.resolve(declaration);
|
|
1311
|
-
if (component) {
|
|
1312
|
-
core.ɵcompileComponent(declaration, component);
|
|
1313
|
-
compiledComponents.push(declaration);
|
|
1314
|
-
return;
|
|
1315
|
-
}
|
|
1316
|
-
var directive = resolvers.directive.resolve(declaration);
|
|
1317
|
-
if (directive) {
|
|
1318
|
-
core.ɵcompileDirective(declaration, directive);
|
|
1319
|
-
return;
|
|
1320
|
-
}
|
|
1321
|
-
var pipe = resolvers.pipe.resolve(declaration);
|
|
1322
|
-
if (pipe) {
|
|
1323
|
-
core.ɵcompilePipe(declaration, pipe);
|
|
1324
|
-
return;
|
|
1325
|
-
}
|
|
1326
|
-
});
|
|
1327
|
-
// Compile transitive modules, components, directives and pipes
|
|
1328
|
-
var transitiveScope = transitiveScopesFor(moduleType, resolvers);
|
|
1329
|
-
compiledComponents.forEach(function (cmp) { return core.ɵpatchComponentDefWithScope(cmp.ngComponentDef, transitiveScope); });
|
|
1330
|
-
}
|
|
1331
|
-
/**
|
|
1332
|
-
* Compute the pair of transitive scopes (compilation scope and exported scope) for a given module.
|
|
1333
|
-
*
|
|
1334
|
-
* This operation is memoized and the result is cached on the module's definition. It can be called
|
|
1335
|
-
* on modules with components that have not fully compiled yet, but the result should not be used
|
|
1336
|
-
* until they have.
|
|
1337
|
-
*/
|
|
1338
|
-
function transitiveScopesFor(moduleType, resolvers) {
|
|
1339
|
-
if (!isNgModule(moduleType)) {
|
|
1340
|
-
throw new Error(moduleType.name + " does not have an ngModuleDef");
|
|
1341
|
-
}
|
|
1342
|
-
var def = moduleType.ngModuleDef;
|
|
1343
|
-
if (def.transitiveCompileScopes !== null) {
|
|
1344
|
-
return def.transitiveCompileScopes;
|
|
1345
|
-
}
|
|
1346
|
-
var scopes = {
|
|
1347
|
-
compilation: {
|
|
1348
|
-
directives: new Set(),
|
|
1349
|
-
pipes: new Set(),
|
|
1350
|
-
},
|
|
1351
|
-
exported: {
|
|
1352
|
-
directives: new Set(),
|
|
1353
|
-
pipes: new Set(),
|
|
1354
|
-
},
|
|
1355
|
-
};
|
|
1356
|
-
def.declarations.forEach(function (declared) {
|
|
1357
|
-
var declaredWithDefs = declared;
|
|
1358
|
-
if (declaredWithDefs.ngPipeDef !== undefined) {
|
|
1359
|
-
scopes.compilation.pipes.add(declared);
|
|
1360
|
-
}
|
|
1361
|
-
else {
|
|
1362
|
-
scopes.compilation.directives.add(declared);
|
|
1363
|
-
}
|
|
1364
|
-
});
|
|
1365
|
-
def.imports.forEach(function (imported) {
|
|
1366
|
-
var ngModule = resolvers.module.resolve(imported);
|
|
1367
|
-
if (ngModule === null) {
|
|
1368
|
-
throw new Error("Importing " + imported.name + " which does not have an @ngModule");
|
|
1369
|
-
}
|
|
1370
|
-
else {
|
|
1371
|
-
compileNgModule(imported, resolvers);
|
|
1372
|
-
}
|
|
1373
|
-
// When this module imports another, the imported module's exported directives and pipes are
|
|
1374
|
-
// added to the compilation scope of this module.
|
|
1375
|
-
var importedScope = transitiveScopesFor(imported, resolvers);
|
|
1376
|
-
importedScope.exported.directives.forEach(function (entry) { return scopes.compilation.directives.add(entry); });
|
|
1377
|
-
importedScope.exported.pipes.forEach(function (entry) { return scopes.compilation.pipes.add(entry); });
|
|
1378
|
-
});
|
|
1379
|
-
def.exports.forEach(function (exported) {
|
|
1380
|
-
var exportedTyped = exported;
|
|
1381
|
-
// Either the type is a module, a pipe, or a component/directive (which may not have an
|
|
1382
|
-
// ngComponentDef as it might be compiled asynchronously).
|
|
1383
|
-
if (isNgModule(exportedTyped)) {
|
|
1384
|
-
// When this module exports another, the exported module's exported directives and pipes are
|
|
1385
|
-
// added to both the compilation and exported scopes of this module.
|
|
1386
|
-
var exportedScope = transitiveScopesFor(exportedTyped, resolvers);
|
|
1387
|
-
exportedScope.exported.directives.forEach(function (entry) {
|
|
1388
|
-
scopes.compilation.directives.add(entry);
|
|
1389
|
-
scopes.exported.directives.add(entry);
|
|
1390
|
-
});
|
|
1391
|
-
exportedScope.exported.pipes.forEach(function (entry) {
|
|
1392
|
-
scopes.compilation.pipes.add(entry);
|
|
1393
|
-
scopes.exported.pipes.add(entry);
|
|
1394
|
-
});
|
|
1395
|
-
}
|
|
1396
|
-
else if (exportedTyped.ngPipeDef !== undefined) {
|
|
1397
|
-
scopes.exported.pipes.add(exportedTyped);
|
|
1398
|
-
}
|
|
1399
|
-
else {
|
|
1400
|
-
scopes.exported.directives.add(exportedTyped);
|
|
1401
|
-
}
|
|
1402
|
-
});
|
|
1403
|
-
def.transitiveCompileScopes = scopes;
|
|
1404
|
-
return scopes;
|
|
1405
|
-
}
|
|
1406
|
-
function flatten(values) {
|
|
1468
|
+
function flatten(values, mapFn) {
|
|
1407
1469
|
var out = [];
|
|
1408
1470
|
values.forEach(function (value) {
|
|
1409
1471
|
if (Array.isArray(value)) {
|
|
1410
|
-
out.push.apply(out, __spread(flatten(value)));
|
|
1472
|
+
out.push.apply(out, __spread(flatten(value, mapFn)));
|
|
1411
1473
|
}
|
|
1412
1474
|
else {
|
|
1413
|
-
out.push(value);
|
|
1475
|
+
out.push(mapFn ? mapFn(value) : value);
|
|
1414
1476
|
}
|
|
1415
1477
|
});
|
|
1416
1478
|
return out;
|