@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
package/fesm5/testing.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
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
|
*/
|
|
6
6
|
|
|
7
|
-
import { RendererFactory2, getDebugNode, ɵstringify, Component, Directive, NgModule, Pipe, ɵReflectionCapabilities, InjectionToken, ApplicationInitStatus, Injector, NgZone, ɵRender3ComponentFactory, ɵRender3NgModuleRef, ɵcompileComponent, ɵcompileDirective, ɵcompileNgModuleDefs, ɵcompilePipe, ɵgetInjectableDef, ɵpatchComponentDefWithScope, ɵresetCompiledComponents, Compiler, Injectable, Optional, SkipSelf, ɵAPP_ROOT, ɵclearOverrides, ɵivyEnabled, ɵoverrideComponentView, ɵoverrideProvider } from '@angular/core';
|
|
8
|
-
import { __spread,
|
|
7
|
+
import { RendererFactory2, getDebugNode, ɵstringify, Component, Directive, NgModule, Pipe, ɵReflectionCapabilities, InjectionToken, ApplicationInitStatus, Injector, NgZone, resolveForwardRef, ɵRender3ComponentFactory, ɵRender3NgModuleRef, ɵcompileComponent, ɵcompileDirective, ɵcompileNgModuleDefs, ɵcompilePipe, ɵgetInjectableDef, ɵpatchComponentDefWithScope, ɵresetCompiledComponents, Compiler, Injectable, Optional, SkipSelf, ɵAPP_ROOT, ɵclearOverrides, ɵivyEnabled, ɵoverrideComponentView, ɵoverrideProvider } from '@angular/core';
|
|
8
|
+
import { __spread, __decorate, __assign, __values, __read, __extends } from 'tslib';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* @license
|
|
@@ -764,7 +764,9 @@ var OverrideResolver = /** @class */ (function () {
|
|
|
764
764
|
this.overrides.clear();
|
|
765
765
|
overrides.forEach(function (_a) {
|
|
766
766
|
var _b = __read(_a, 2), type = _b[0], override = _b[1];
|
|
767
|
-
|
|
767
|
+
var overrides = _this.overrides.get(type) || [];
|
|
768
|
+
overrides.push(override);
|
|
769
|
+
_this.overrides.set(type, overrides);
|
|
768
770
|
});
|
|
769
771
|
};
|
|
770
772
|
OverrideResolver.prototype.getAnnotation = function (type) {
|
|
@@ -772,14 +774,17 @@ var OverrideResolver = /** @class */ (function () {
|
|
|
772
774
|
return reflection.annotations(type).find(function (a) { return a instanceof _this.type; }) || null;
|
|
773
775
|
};
|
|
774
776
|
OverrideResolver.prototype.resolve = function (type) {
|
|
777
|
+
var _this = this;
|
|
775
778
|
var resolved = this.resolved.get(type) || null;
|
|
776
779
|
if (!resolved) {
|
|
777
780
|
resolved = this.getAnnotation(type);
|
|
778
781
|
if (resolved) {
|
|
779
|
-
var
|
|
780
|
-
if (
|
|
781
|
-
var
|
|
782
|
-
|
|
782
|
+
var overrides = this.overrides.get(type);
|
|
783
|
+
if (overrides) {
|
|
784
|
+
var overrider_1 = new MetadataOverrider();
|
|
785
|
+
overrides.forEach(function (override) {
|
|
786
|
+
resolved = overrider_1.overrideMetadata(_this.type, resolved, override);
|
|
787
|
+
});
|
|
783
788
|
}
|
|
784
789
|
}
|
|
785
790
|
this.resolved.set(type, resolved);
|
|
@@ -872,6 +877,7 @@ var ComponentFixtureNoNgZone = new InjectionToken('ComponentFixtureNoNgZone');
|
|
|
872
877
|
* found in the LICENSE file at https://angular.io/license
|
|
873
878
|
*/
|
|
874
879
|
var _nextRootElementId = 0;
|
|
880
|
+
var EMPTY_ARRAY = [];
|
|
875
881
|
/**
|
|
876
882
|
* @description
|
|
877
883
|
* Configures and initializes environment for unit testing and provides methods for
|
|
@@ -894,6 +900,8 @@ var TestBedRender3 = /** @class */ (function () {
|
|
|
894
900
|
this._pipeOverrides = [];
|
|
895
901
|
this._providerOverrides = [];
|
|
896
902
|
this._rootProviderOverrides = [];
|
|
903
|
+
this._providerOverridesByToken = new Map();
|
|
904
|
+
this._templateOverrides = new Map();
|
|
897
905
|
// test module configuration
|
|
898
906
|
this._providers = [];
|
|
899
907
|
this._declarations = [];
|
|
@@ -901,6 +909,7 @@ var TestBedRender3 = /** @class */ (function () {
|
|
|
901
909
|
this._schemas = [];
|
|
902
910
|
this._activeFixtures = [];
|
|
903
911
|
this._moduleRef = null;
|
|
912
|
+
this._testModuleType = null;
|
|
904
913
|
this._instantiated = false;
|
|
905
914
|
}
|
|
906
915
|
/**
|
|
@@ -976,7 +985,10 @@ var TestBedRender3 = /** @class */ (function () {
|
|
|
976
985
|
return TestBedRender3;
|
|
977
986
|
};
|
|
978
987
|
TestBedRender3.prototype.overrideTemplateUsingTestingModule = function (component, template) {
|
|
979
|
-
|
|
988
|
+
if (this._instantiated) {
|
|
989
|
+
throw new Error('Cannot override template when the test module has already been instantiated');
|
|
990
|
+
}
|
|
991
|
+
this._templateOverrides.set(component, template);
|
|
980
992
|
};
|
|
981
993
|
TestBedRender3.overrideProvider = function (token, provider) {
|
|
982
994
|
_getTestBedRender3().overrideProvider(token, provider);
|
|
@@ -1035,12 +1047,15 @@ var TestBedRender3 = /** @class */ (function () {
|
|
|
1035
1047
|
this._pipeOverrides = [];
|
|
1036
1048
|
this._providerOverrides = [];
|
|
1037
1049
|
this._rootProviderOverrides = [];
|
|
1050
|
+
this._providerOverridesByToken.clear();
|
|
1051
|
+
this._templateOverrides.clear();
|
|
1038
1052
|
// reset test module config
|
|
1039
1053
|
this._providers = [];
|
|
1040
1054
|
this._declarations = [];
|
|
1041
1055
|
this._imports = [];
|
|
1042
1056
|
this._schemas = [];
|
|
1043
1057
|
this._moduleRef = null;
|
|
1058
|
+
this._testModuleType = null;
|
|
1044
1059
|
this._instantiated = false;
|
|
1045
1060
|
this._activeFixtures.forEach(function (fixture) {
|
|
1046
1061
|
try {
|
|
@@ -1119,16 +1134,18 @@ var TestBedRender3 = /** @class */ (function () {
|
|
|
1119
1134
|
* Overwrites all providers for the given token with the given provider definition.
|
|
1120
1135
|
*/
|
|
1121
1136
|
TestBedRender3.prototype.overrideProvider = function (token, provider) {
|
|
1137
|
+
var providerDef = provider.useFactory ?
|
|
1138
|
+
{ provide: token, useFactory: provider.useFactory, deps: provider.deps || [] } :
|
|
1139
|
+
{ provide: token, useValue: provider.useValue };
|
|
1122
1140
|
var injectableDef;
|
|
1123
1141
|
var isRoot = (typeof token !== 'string' && (injectableDef = ɵgetInjectableDef(token)) &&
|
|
1124
1142
|
injectableDef.providedIn === 'root');
|
|
1125
|
-
var
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
}
|
|
1143
|
+
var overridesBucket = isRoot ? this._rootProviderOverrides : this._providerOverrides;
|
|
1144
|
+
overridesBucket.push(providerDef);
|
|
1145
|
+
// keep all overrides grouped by token as well for fast lookups using token
|
|
1146
|
+
var overridesForToken = this._providerOverridesByToken.get(token) || [];
|
|
1147
|
+
overridesForToken.push(providerDef);
|
|
1148
|
+
this._providerOverridesByToken.set(token, overridesForToken);
|
|
1132
1149
|
};
|
|
1133
1150
|
TestBedRender3.prototype.deprecatedOverrideProvider = function (token, provider) {
|
|
1134
1151
|
throw new Error('No implemented in IVY');
|
|
@@ -1161,15 +1178,22 @@ var TestBedRender3 = /** @class */ (function () {
|
|
|
1161
1178
|
return;
|
|
1162
1179
|
}
|
|
1163
1180
|
var resolvers = this._getResolvers();
|
|
1164
|
-
|
|
1165
|
-
|
|
1181
|
+
this._testModuleType = this._createTestModule();
|
|
1182
|
+
this._compileNgModule(this._testModuleType, resolvers);
|
|
1166
1183
|
var parentInjector = this.platform.injector;
|
|
1167
|
-
this._moduleRef = new ɵRender3NgModuleRef(
|
|
1184
|
+
this._moduleRef = new ɵRender3NgModuleRef(this._testModuleType, parentInjector);
|
|
1168
1185
|
// ApplicationInitStatus.runInitializers() is marked @internal
|
|
1169
1186
|
// to core. Cast it to any before accessing it.
|
|
1170
1187
|
this._moduleRef.injector.get(ApplicationInitStatus).runInitializers();
|
|
1171
1188
|
this._instantiated = true;
|
|
1172
1189
|
};
|
|
1190
|
+
// get overrides for a specific provider (if any)
|
|
1191
|
+
TestBedRender3.prototype._getProviderOverrides = function (provider) {
|
|
1192
|
+
var token = typeof provider === 'object' && provider.hasOwnProperty('provide') ?
|
|
1193
|
+
provider.provide :
|
|
1194
|
+
provider;
|
|
1195
|
+
return this._providerOverridesByToken.get(token) || [];
|
|
1196
|
+
};
|
|
1173
1197
|
// creates resolvers taking overrides into account
|
|
1174
1198
|
TestBedRender3.prototype._getResolvers = function () {
|
|
1175
1199
|
var module = new NgModuleResolver();
|
|
@@ -1216,128 +1240,155 @@ var TestBedRender3 = /** @class */ (function () {
|
|
|
1216
1240
|
}());
|
|
1217
1241
|
return DynamicTestModule;
|
|
1218
1242
|
};
|
|
1243
|
+
TestBedRender3.prototype._getMetaWithOverrides = function (meta, type) {
|
|
1244
|
+
var _this = this;
|
|
1245
|
+
var overrides = {};
|
|
1246
|
+
if (meta.providers && meta.providers.length) {
|
|
1247
|
+
var providerOverrides = flatten(meta.providers, function (provider) { return _this._getProviderOverrides(provider); });
|
|
1248
|
+
if (providerOverrides.length) {
|
|
1249
|
+
overrides.providers = __spread(meta.providers, providerOverrides);
|
|
1250
|
+
}
|
|
1251
|
+
}
|
|
1252
|
+
var hasTemplateOverride = !!type && this._templateOverrides.has(type);
|
|
1253
|
+
if (hasTemplateOverride) {
|
|
1254
|
+
overrides.template = this._templateOverrides.get(type);
|
|
1255
|
+
}
|
|
1256
|
+
return Object.keys(overrides).length ? __assign({}, meta, overrides) : meta;
|
|
1257
|
+
};
|
|
1258
|
+
TestBedRender3.prototype._compileNgModule = function (moduleType, resolvers) {
|
|
1259
|
+
var _this = this;
|
|
1260
|
+
var ngModule = resolvers.module.resolve(moduleType);
|
|
1261
|
+
if (ngModule === null) {
|
|
1262
|
+
throw new Error(ɵstringify(moduleType) + " has not @NgModule annotation");
|
|
1263
|
+
}
|
|
1264
|
+
var metadata = this._getMetaWithOverrides(ngModule);
|
|
1265
|
+
ɵcompileNgModuleDefs(moduleType, metadata);
|
|
1266
|
+
var declarations = flatten(ngModule.declarations || EMPTY_ARRAY, resolveForwardRef);
|
|
1267
|
+
var compiledComponents = [];
|
|
1268
|
+
// Compile the components, directives and pipes declared by this module
|
|
1269
|
+
declarations.forEach(function (declaration) {
|
|
1270
|
+
var component = resolvers.component.resolve(declaration);
|
|
1271
|
+
if (component) {
|
|
1272
|
+
var metadata_1 = _this._getMetaWithOverrides(component, declaration);
|
|
1273
|
+
ɵcompileComponent(declaration, metadata_1);
|
|
1274
|
+
compiledComponents.push(declaration);
|
|
1275
|
+
return;
|
|
1276
|
+
}
|
|
1277
|
+
var directive = resolvers.directive.resolve(declaration);
|
|
1278
|
+
if (directive) {
|
|
1279
|
+
var metadata_2 = _this._getMetaWithOverrides(directive);
|
|
1280
|
+
ɵcompileDirective(declaration, metadata_2);
|
|
1281
|
+
return;
|
|
1282
|
+
}
|
|
1283
|
+
var pipe = resolvers.pipe.resolve(declaration);
|
|
1284
|
+
if (pipe) {
|
|
1285
|
+
ɵcompilePipe(declaration, pipe);
|
|
1286
|
+
return;
|
|
1287
|
+
}
|
|
1288
|
+
});
|
|
1289
|
+
// Compile transitive modules, components, directives and pipes
|
|
1290
|
+
var transitiveScope = this._transitiveScopesFor(moduleType, resolvers);
|
|
1291
|
+
compiledComponents.forEach(function (cmp) {
|
|
1292
|
+
var scope = _this._templateOverrides.has(cmp) ?
|
|
1293
|
+
// if we have template override via `TestBed.overrideTemplateUsingTestingModule` -
|
|
1294
|
+
// define Component scope as TestingModule scope, instead of the scope of NgModule
|
|
1295
|
+
// where this Component was declared
|
|
1296
|
+
_this._transitiveScopesFor(_this._testModuleType, resolvers) :
|
|
1297
|
+
transitiveScope;
|
|
1298
|
+
ɵpatchComponentDefWithScope(cmp.ngComponentDef, scope);
|
|
1299
|
+
});
|
|
1300
|
+
};
|
|
1301
|
+
/**
|
|
1302
|
+
* Compute the pair of transitive scopes (compilation scope and exported scope) for a given
|
|
1303
|
+
* module.
|
|
1304
|
+
*
|
|
1305
|
+
* This operation is memoized and the result is cached on the module's definition. It can be
|
|
1306
|
+
* called on modules with components that have not fully compiled yet, but the result should not
|
|
1307
|
+
* be used until they have.
|
|
1308
|
+
*/
|
|
1309
|
+
TestBedRender3.prototype._transitiveScopesFor = function (moduleType, resolvers) {
|
|
1310
|
+
var _this = this;
|
|
1311
|
+
if (!isNgModule(moduleType)) {
|
|
1312
|
+
throw new Error(moduleType.name + " does not have an ngModuleDef");
|
|
1313
|
+
}
|
|
1314
|
+
var def = moduleType.ngModuleDef;
|
|
1315
|
+
if (def.transitiveCompileScopes !== null) {
|
|
1316
|
+
return def.transitiveCompileScopes;
|
|
1317
|
+
}
|
|
1318
|
+
var scopes = {
|
|
1319
|
+
compilation: {
|
|
1320
|
+
directives: new Set(),
|
|
1321
|
+
pipes: new Set(),
|
|
1322
|
+
},
|
|
1323
|
+
exported: {
|
|
1324
|
+
directives: new Set(),
|
|
1325
|
+
pipes: new Set(),
|
|
1326
|
+
},
|
|
1327
|
+
};
|
|
1328
|
+
def.declarations.forEach(function (declared) {
|
|
1329
|
+
var declaredWithDefs = declared;
|
|
1330
|
+
if (declaredWithDefs.ngPipeDef !== undefined) {
|
|
1331
|
+
scopes.compilation.pipes.add(declared);
|
|
1332
|
+
}
|
|
1333
|
+
else {
|
|
1334
|
+
scopes.compilation.directives.add(declared);
|
|
1335
|
+
}
|
|
1336
|
+
});
|
|
1337
|
+
def.imports.forEach(function (imported) {
|
|
1338
|
+
var ngModule = resolvers.module.resolve(imported);
|
|
1339
|
+
if (ngModule === null) {
|
|
1340
|
+
throw new Error("Importing " + imported.name + " which does not have an @ngModule");
|
|
1341
|
+
}
|
|
1342
|
+
else {
|
|
1343
|
+
_this._compileNgModule(imported, resolvers);
|
|
1344
|
+
}
|
|
1345
|
+
// When this module imports another, the imported module's exported directives and pipes are
|
|
1346
|
+
// added to the compilation scope of this module.
|
|
1347
|
+
var importedScope = _this._transitiveScopesFor(imported, resolvers);
|
|
1348
|
+
importedScope.exported.directives.forEach(function (entry) { return scopes.compilation.directives.add(entry); });
|
|
1349
|
+
importedScope.exported.pipes.forEach(function (entry) { return scopes.compilation.pipes.add(entry); });
|
|
1350
|
+
});
|
|
1351
|
+
def.exports.forEach(function (exported) {
|
|
1352
|
+
var exportedTyped = exported;
|
|
1353
|
+
// Either the type is a module, a pipe, or a component/directive (which may not have an
|
|
1354
|
+
// ngComponentDef as it might be compiled asynchronously).
|
|
1355
|
+
if (isNgModule(exportedTyped)) {
|
|
1356
|
+
// When this module exports another, the exported module's exported directives and pipes are
|
|
1357
|
+
// added to both the compilation and exported scopes of this module.
|
|
1358
|
+
var exportedScope = _this._transitiveScopesFor(exportedTyped, resolvers);
|
|
1359
|
+
exportedScope.exported.directives.forEach(function (entry) {
|
|
1360
|
+
scopes.compilation.directives.add(entry);
|
|
1361
|
+
scopes.exported.directives.add(entry);
|
|
1362
|
+
});
|
|
1363
|
+
exportedScope.exported.pipes.forEach(function (entry) {
|
|
1364
|
+
scopes.compilation.pipes.add(entry);
|
|
1365
|
+
scopes.exported.pipes.add(entry);
|
|
1366
|
+
});
|
|
1367
|
+
}
|
|
1368
|
+
else if (exportedTyped.ngPipeDef !== undefined) {
|
|
1369
|
+
scopes.exported.pipes.add(exportedTyped);
|
|
1370
|
+
}
|
|
1371
|
+
else {
|
|
1372
|
+
scopes.exported.directives.add(exportedTyped);
|
|
1373
|
+
}
|
|
1374
|
+
});
|
|
1375
|
+
def.transitiveCompileScopes = scopes;
|
|
1376
|
+
return scopes;
|
|
1377
|
+
};
|
|
1219
1378
|
return TestBedRender3;
|
|
1220
1379
|
}());
|
|
1221
1380
|
var testBed;
|
|
1222
1381
|
function _getTestBedRender3() {
|
|
1223
1382
|
return testBed = testBed || new TestBedRender3();
|
|
1224
1383
|
}
|
|
1225
|
-
|
|
1226
|
-
var EMPTY_ARRAY = [];
|
|
1227
|
-
function compileNgModule(moduleType, resolvers) {
|
|
1228
|
-
var ngModule = resolvers.module.resolve(moduleType);
|
|
1229
|
-
if (ngModule === null) {
|
|
1230
|
-
throw new Error(ɵstringify(moduleType) + " has not @NgModule annotation");
|
|
1231
|
-
}
|
|
1232
|
-
ɵcompileNgModuleDefs(moduleType, ngModule);
|
|
1233
|
-
var declarations = flatten(ngModule.declarations || EMPTY_ARRAY);
|
|
1234
|
-
var compiledComponents = [];
|
|
1235
|
-
// Compile the components, directives and pipes declared by this module
|
|
1236
|
-
declarations.forEach(function (declaration) {
|
|
1237
|
-
var component = resolvers.component.resolve(declaration);
|
|
1238
|
-
if (component) {
|
|
1239
|
-
ɵcompileComponent(declaration, component);
|
|
1240
|
-
compiledComponents.push(declaration);
|
|
1241
|
-
return;
|
|
1242
|
-
}
|
|
1243
|
-
var directive = resolvers.directive.resolve(declaration);
|
|
1244
|
-
if (directive) {
|
|
1245
|
-
ɵcompileDirective(declaration, directive);
|
|
1246
|
-
return;
|
|
1247
|
-
}
|
|
1248
|
-
var pipe = resolvers.pipe.resolve(declaration);
|
|
1249
|
-
if (pipe) {
|
|
1250
|
-
ɵcompilePipe(declaration, pipe);
|
|
1251
|
-
return;
|
|
1252
|
-
}
|
|
1253
|
-
});
|
|
1254
|
-
// Compile transitive modules, components, directives and pipes
|
|
1255
|
-
var transitiveScope = transitiveScopesFor(moduleType, resolvers);
|
|
1256
|
-
compiledComponents.forEach(function (cmp) { return ɵpatchComponentDefWithScope(cmp.ngComponentDef, transitiveScope); });
|
|
1257
|
-
}
|
|
1258
|
-
/**
|
|
1259
|
-
* Compute the pair of transitive scopes (compilation scope and exported scope) for a given module.
|
|
1260
|
-
*
|
|
1261
|
-
* This operation is memoized and the result is cached on the module's definition. It can be called
|
|
1262
|
-
* on modules with components that have not fully compiled yet, but the result should not be used
|
|
1263
|
-
* until they have.
|
|
1264
|
-
*/
|
|
1265
|
-
function transitiveScopesFor(moduleType, resolvers) {
|
|
1266
|
-
if (!isNgModule(moduleType)) {
|
|
1267
|
-
throw new Error(moduleType.name + " does not have an ngModuleDef");
|
|
1268
|
-
}
|
|
1269
|
-
var def = moduleType.ngModuleDef;
|
|
1270
|
-
if (def.transitiveCompileScopes !== null) {
|
|
1271
|
-
return def.transitiveCompileScopes;
|
|
1272
|
-
}
|
|
1273
|
-
var scopes = {
|
|
1274
|
-
compilation: {
|
|
1275
|
-
directives: new Set(),
|
|
1276
|
-
pipes: new Set(),
|
|
1277
|
-
},
|
|
1278
|
-
exported: {
|
|
1279
|
-
directives: new Set(),
|
|
1280
|
-
pipes: new Set(),
|
|
1281
|
-
},
|
|
1282
|
-
};
|
|
1283
|
-
def.declarations.forEach(function (declared) {
|
|
1284
|
-
var declaredWithDefs = declared;
|
|
1285
|
-
if (declaredWithDefs.ngPipeDef !== undefined) {
|
|
1286
|
-
scopes.compilation.pipes.add(declared);
|
|
1287
|
-
}
|
|
1288
|
-
else {
|
|
1289
|
-
scopes.compilation.directives.add(declared);
|
|
1290
|
-
}
|
|
1291
|
-
});
|
|
1292
|
-
def.imports.forEach(function (imported) {
|
|
1293
|
-
var ngModule = resolvers.module.resolve(imported);
|
|
1294
|
-
if (ngModule === null) {
|
|
1295
|
-
throw new Error("Importing " + imported.name + " which does not have an @ngModule");
|
|
1296
|
-
}
|
|
1297
|
-
else {
|
|
1298
|
-
compileNgModule(imported, resolvers);
|
|
1299
|
-
}
|
|
1300
|
-
// When this module imports another, the imported module's exported directives and pipes are
|
|
1301
|
-
// added to the compilation scope of this module.
|
|
1302
|
-
var importedScope = transitiveScopesFor(imported, resolvers);
|
|
1303
|
-
importedScope.exported.directives.forEach(function (entry) { return scopes.compilation.directives.add(entry); });
|
|
1304
|
-
importedScope.exported.pipes.forEach(function (entry) { return scopes.compilation.pipes.add(entry); });
|
|
1305
|
-
});
|
|
1306
|
-
def.exports.forEach(function (exported) {
|
|
1307
|
-
var exportedTyped = exported;
|
|
1308
|
-
// Either the type is a module, a pipe, or a component/directive (which may not have an
|
|
1309
|
-
// ngComponentDef as it might be compiled asynchronously).
|
|
1310
|
-
if (isNgModule(exportedTyped)) {
|
|
1311
|
-
// When this module exports another, the exported module's exported directives and pipes are
|
|
1312
|
-
// added to both the compilation and exported scopes of this module.
|
|
1313
|
-
var exportedScope = transitiveScopesFor(exportedTyped, resolvers);
|
|
1314
|
-
exportedScope.exported.directives.forEach(function (entry) {
|
|
1315
|
-
scopes.compilation.directives.add(entry);
|
|
1316
|
-
scopes.exported.directives.add(entry);
|
|
1317
|
-
});
|
|
1318
|
-
exportedScope.exported.pipes.forEach(function (entry) {
|
|
1319
|
-
scopes.compilation.pipes.add(entry);
|
|
1320
|
-
scopes.exported.pipes.add(entry);
|
|
1321
|
-
});
|
|
1322
|
-
}
|
|
1323
|
-
else if (exportedTyped.ngPipeDef !== undefined) {
|
|
1324
|
-
scopes.exported.pipes.add(exportedTyped);
|
|
1325
|
-
}
|
|
1326
|
-
else {
|
|
1327
|
-
scopes.exported.directives.add(exportedTyped);
|
|
1328
|
-
}
|
|
1329
|
-
});
|
|
1330
|
-
def.transitiveCompileScopes = scopes;
|
|
1331
|
-
return scopes;
|
|
1332
|
-
}
|
|
1333
|
-
function flatten(values) {
|
|
1384
|
+
function flatten(values, mapFn) {
|
|
1334
1385
|
var out = [];
|
|
1335
1386
|
values.forEach(function (value) {
|
|
1336
1387
|
if (Array.isArray(value)) {
|
|
1337
|
-
out.push.apply(out, __spread(flatten(value)));
|
|
1388
|
+
out.push.apply(out, __spread(flatten(value, mapFn)));
|
|
1338
1389
|
}
|
|
1339
1390
|
else {
|
|
1340
|
-
out.push(value);
|
|
1391
|
+
out.push(mapFn ? mapFn(value) : value);
|
|
1341
1392
|
}
|
|
1342
1393
|
});
|
|
1343
1394
|
return out;
|