@angular/core 12.0.1 → 12.0.5

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 (34) hide show
  1. package/bundles/core-testing.umd.js +46 -83
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core.umd.js +43 -30
  4. package/bundles/core.umd.js.map +1 -1
  5. package/core.d.ts +245 -17
  6. package/core.metadata.json +1 -1
  7. package/esm2015/src/change_detection/differs/iterable_differs.js +1 -1
  8. package/esm2015/src/debug/debug_node.js +1 -1
  9. package/esm2015/src/di/injectable.js +1 -1
  10. package/esm2015/src/linker/component_factory_resolver.js +4 -1
  11. package/esm2015/src/metadata/di.js +1 -1
  12. package/esm2015/src/metadata/do_boostrap.js +1 -1
  13. package/esm2015/src/metadata/ng_module.js +1 -1
  14. package/esm2015/src/metadata/schema.js +5 -1
  15. package/esm2015/src/render3/definition.js +16 -16
  16. package/esm2015/src/render3/util/discovery_utils.js +18 -12
  17. package/esm2015/src/render3/view_ref.js +3 -3
  18. package/esm2015/src/version.js +1 -1
  19. package/esm2015/testing/src/fake_async.js +42 -25
  20. package/esm2015/testing/src/test_bed.js +5 -25
  21. package/esm2015/testing/src/testing_internal.js +1 -182
  22. package/fesm2015/core.js +43 -30
  23. package/fesm2015/core.js.map +1 -1
  24. package/fesm2015/testing.js +46 -76
  25. package/fesm2015/testing.js.map +1 -1
  26. package/package.json +2 -2
  27. package/schematics/migrations/deep-shadow-piercing-selector/index.d.ts +10 -0
  28. package/schematics/migrations/deep-shadow-piercing-selector/index.js +49 -0
  29. package/schematics/migrations.json +5 -0
  30. package/src/r3_symbols.d.ts +4 -1
  31. package/testing/testing.d.ts +42 -30
  32. package/testing/testing.metadata.json +1 -1
  33. package/testing.d.ts +1 -1
  34. package/esm2015/testing/src/async_test_completer.js +0 -28
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "12.0.1",
3
+ "version": "12.0.5",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
7
7
  "engines": {
8
- "node": "^12.14.1 || ^14.0.0"
8
+ "node": "^12.14.1 || >=14.0.0"
9
9
  },
10
10
  "dependencies": {
11
11
  "tslib": "^2.1.0"
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ /// <amd-module name="@angular/core/schematics/migrations/deep-shadow-piercing-selector" />
9
+ import { Rule } from '@angular-devkit/schematics';
10
+ export default function (): Rule;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/core/schematics/migrations/deep-shadow-piercing-selector", ["require", "exports", "@angular-devkit/core"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ const core_1 = require("@angular-devkit/core");
20
+ const VALID_EXTENSIONS = ['.scss', '.sass', '.css', '.styl', '.less', '.ts'];
21
+ function* visitFiles(directory) {
22
+ for (const path of directory.subfiles) {
23
+ const extension = core_1.extname(path);
24
+ if (VALID_EXTENSIONS.includes(extension)) {
25
+ yield core_1.join(directory.path, path);
26
+ }
27
+ }
28
+ for (const path of directory.subdirs) {
29
+ if (path === 'node_modules' || path.startsWith('.') || path === 'dist') {
30
+ continue;
31
+ }
32
+ yield* visitFiles(directory.dir(path));
33
+ }
34
+ }
35
+ function default_1() {
36
+ return (tree) => {
37
+ var _a;
38
+ // Visit all files in an Angular workspace monorepo.
39
+ for (const file of visitFiles(tree.root)) {
40
+ const content = (_a = tree.read(file)) === null || _a === void 0 ? void 0 : _a.toString();
41
+ if (content === null || content === void 0 ? void 0 : content.includes('/deep/ ')) {
42
+ tree.overwrite(file, content.replace(/\/deep\/ /g, '::ng-deep '));
43
+ }
44
+ }
45
+ };
46
+ }
47
+ exports.default = default_1;
48
+ });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9kZWVwLXNoYWRvdy1waWVyY2luZy1zZWxlY3Rvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILCtDQUFtRDtJQUduRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUU3RSxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBbUI7UUFDdEMsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLE1BQU0sU0FBUyxHQUFHLGNBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDeEMsTUFBTSxXQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNsQztTQUNGO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQ3BDLElBQUksSUFBSSxLQUFLLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3RFLFNBQVM7YUFDVjtZQUVELEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQ7UUFDRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUU7O1lBQ2Qsb0RBQW9EO1lBQ3BELEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEMsTUFBTSxPQUFPLEdBQUcsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQywwQ0FBRSxRQUFRLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO2lCQUNuRTthQUNGO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQVZELDRCQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7ZXh0bmFtZSwgam9pbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHtEaXJFbnRyeSwgUnVsZX0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuXG5jb25zdCBWQUxJRF9FWFRFTlNJT05TID0gWycuc2NzcycsICcuc2FzcycsICcuY3NzJywgJy5zdHlsJywgJy5sZXNzJywgJy50cyddO1xuXG5mdW5jdGlvbiogdmlzaXRGaWxlcyhkaXJlY3Rvcnk6IERpckVudHJ5KTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcbiAgZm9yIChjb25zdCBwYXRoIG9mIGRpcmVjdG9yeS5zdWJmaWxlcykge1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGV4dG5hbWUocGF0aCk7XG4gICAgaWYgKFZBTElEX0VYVEVOU0lPTlMuaW5jbHVkZXMoZXh0ZW5zaW9uKSkge1xuICAgICAgeWllbGQgam9pbihkaXJlY3RvcnkucGF0aCwgcGF0aCk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBwYXRoIG9mIGRpcmVjdG9yeS5zdWJkaXJzKSB7XG4gICAgaWYgKHBhdGggPT09ICdub2RlX21vZHVsZXMnIHx8IHBhdGguc3RhcnRzV2l0aCgnLicpIHx8IHBhdGggPT09ICdkaXN0Jykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgeWllbGQqIHZpc2l0RmlsZXMoZGlyZWN0b3J5LmRpcihwYXRoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKTogUnVsZSB7XG4gIHJldHVybiAodHJlZSkgPT4ge1xuICAgIC8vIFZpc2l0IGFsbCBmaWxlcyBpbiBhbiBBbmd1bGFyIHdvcmtzcGFjZSBtb25vcmVwby5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgdmlzaXRGaWxlcyh0cmVlLnJvb3QpKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gdHJlZS5yZWFkKGZpbGUpPy50b1N0cmluZygpO1xuICAgICAgaWYgKGNvbnRlbnQ/LmluY2x1ZGVzKCcvZGVlcC8gJykpIHtcbiAgICAgICAgdHJlZS5vdmVyd3JpdGUoZmlsZSwgY29udGVudC5yZXBsYWNlKC9cXC9kZWVwXFwvIC9nLCAnOjpuZy1kZWVwICcpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -94,6 +94,11 @@
94
94
  "version": "12.0.0-next.6",
95
95
  "description": "`XhrFactory` has been moved from `@angular/common/http` to `@angular/common`.",
96
96
  "factory": "./migrations/xhr-factory/index"
97
+ },
98
+ "migration-v12-deep-shadow-piercing-selector": {
99
+ "version": "12.0.2",
100
+ "description": "Automatically migrates shadow-piercing selector from `/deep/` to the recommanded alternative `::ng-deep`.",
101
+ "factory": "./migrations/deep-shadow-piercing-selector/index"
97
102
  }
98
103
  }
99
104
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v12.0.1
2
+ * @license Angular v12.0.5
3
3
  * (c) 2010-2021 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -165,6 +165,9 @@ declare abstract class ComponentFactory<C> {
165
165
  * then use the factory's `create()` method to create a component of that type.
166
166
  *
167
167
  * @see [Dynamic Components](guide/dynamic-component-loader)
168
+ * @see [Usage Example](guide/dynamic-component-loader#resolving-components)
169
+ * @see <live-example name="dynamic-component-loader" noDownload></live-example>
170
+ of the code in this cookbook
168
171
  * @publicApi
169
172
  */
170
173
  declare abstract class ComponentFactoryResolver {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v12.0.1
2
+ * @license Angular v12.0.5
3
3
  * (c) 2010-2021 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -136,33 +136,37 @@ export declare const ComponentFixtureNoNgZone: InjectionToken<boolean[]>;
136
136
  export declare function discardPeriodicTasks(): void;
137
137
 
138
138
  /**
139
- * Wraps a function to be executed in the fakeAsync zone:
140
- * - microtasks are manually executed by calling `flushMicrotasks()`,
141
- * - timers are synchronous, `tick()` simulates the asynchronous passage of time.
139
+ * Wraps a function to be executed in the `fakeAsync` zone:
140
+ * - Microtasks are manually executed by calling `flushMicrotasks()`.
141
+ * - Timers are synchronous; `tick()` simulates the asynchronous passage of time.
142
142
  *
143
- * If there are any pending timers at the end of the function, an exception will be thrown.
143
+ * If there are any pending timers at the end of the function, an exception is thrown.
144
144
  *
145
- * Can be used to wrap inject() calls.
145
+ * Can be used to wrap `inject()` calls.
146
+ *
147
+ * @param fn The function that you want to wrap in the `fakeAysnc` zone.
146
148
  *
147
149
  * @usageNotes
148
150
  * ### Example
149
151
  *
150
152
  * {@example core/testing/ts/fake_async.ts region='basic'}
151
153
  *
152
- * @param fn
153
- * @returns The function wrapped to be executed in the fakeAsync zone
154
+ *
155
+ * @returns The function wrapped to be executed in the `fakeAsync` zone.
156
+ * Any arguments passed when calling this returned function will be passed through to the `fn`
157
+ * function in the parameters when it is called.
154
158
  *
155
159
  * @publicApi
156
160
  */
157
161
  export declare function fakeAsync(fn: Function): (...args: any[]) => any;
158
162
 
159
163
  /**
160
- * Simulates the asynchronous passage of time for the timers in the fakeAsync zone by
161
- * draining the macrotask queue until it is empty. The returned value is the milliseconds
162
- * of time that would have been elapsed.
164
+ * Simulates the asynchronous passage of time for the timers in the `fakeAsync` zone by
165
+ * draining the macrotask queue until it is empty.
163
166
  *
164
- * @param maxTurns
165
- * @returns The simulated time elapsed, in millis.
167
+ * @param maxTurns The maximum number of times the scheduler attempts to clear its queue before
168
+ * throwing an error.
169
+ * @returns The simulated time elapsed, in milliseconds.
166
170
  *
167
171
  * @publicApi
168
172
  */
@@ -201,11 +205,6 @@ export declare const getTestBed: () => TestBed;
201
205
  * })
202
206
  * ```
203
207
  *
204
- * Notes:
205
- * - inject is currently a function because of some Traceur limitation the syntax should
206
- * eventually
207
- * becomes `it('...', @Inject (object: AClass, async: AsyncTestCompleter) => { ... });`
208
- *
209
208
  * @publicApi
210
209
  */
211
210
  export declare function inject(tokens: any[], fn: Function): () => any;
@@ -404,23 +403,36 @@ export declare type TestModuleMetadata = {
404
403
  };
405
404
 
406
405
  /**
407
- * Simulates the asynchronous passage of time for the timers in the fakeAsync zone.
406
+ * Simulates the asynchronous passage of time for the timers in the `fakeAsync` zone.
408
407
  *
409
408
  * The microtasks queue is drained at the very start of this function and after any timer callback
410
409
  * has been executed.
411
410
  *
411
+ * @param millis The number of milliseconds to advance the virtual timer.
412
+ * @param tickOptions The options to pass to the `tick()` function.
413
+ *
412
414
  * @usageNotes
415
+ *
416
+ * The `tick()` option is a flag called `processNewMacroTasksSynchronously`,
417
+ * which determines whether or not to invoke new macroTasks.
418
+ *
419
+ * If you provide a `tickOptions` object, but do not specify a
420
+ * `processNewMacroTasksSynchronously` property (`tick(100, {})`),
421
+ * then `processNewMacroTasksSynchronously` defaults to true.
422
+ *
423
+ * If you omit the `tickOptions` parameter (`tick(100))`), then
424
+ * `tickOptions` defaults to `{processNewMacroTasksSynchronously: true}`.
425
+ *
413
426
  * ### Example
414
427
  *
415
428
  * {@example core/testing/ts/fake_async.ts region='basic'}
416
429
  *
417
- * @param millis, the number of millisecond to advance the virtual timer
418
- * @param tickOptions, the options of tick with a flag called
419
- * processNewMacroTasksSynchronously, whether to invoke the new macroTasks, by default is
420
- * false, means the new macroTasks will be invoked
421
- *
422
- * For example,
430
+ * The following example includes a nested timeout (new macroTask), and
431
+ * the `tickOptions` parameter is allowed to default. In this case,
432
+ * `processNewMacroTasksSynchronously` defaults to true, and the nested
433
+ * function is executed on each tick.
423
434
  *
435
+ * ```
424
436
  * it ('test with nested setTimeout', fakeAsync(() => {
425
437
  * let nestedTimeoutInvoked = false;
426
438
  * function funcWithNestedTimeout() {
@@ -432,10 +444,12 @@ export declare type TestModuleMetadata = {
432
444
  * tick();
433
445
  * expect(nestedTimeoutInvoked).toBe(true);
434
446
  * }));
447
+ * ```
435
448
  *
436
- * in this case, we have a nested timeout (new macroTask), when we tick, both the
437
- * funcWithNestedTimeout and the nested timeout both will be invoked.
449
+ * In the following case, `processNewMacroTasksSynchronously` is explicitly
450
+ * set to false, so the nested timeout function is not invoked.
438
451
  *
452
+ * ```
439
453
  * it ('test with nested setTimeout', fakeAsync(() => {
440
454
  * let nestedTimeoutInvoked = false;
441
455
  * function funcWithNestedTimeout() {
@@ -447,9 +461,7 @@ export declare type TestModuleMetadata = {
447
461
  * tick(0, {processNewMacroTasksSynchronously: false});
448
462
  * expect(nestedTimeoutInvoked).toBe(false);
449
463
  * }));
450
- *
451
- * if we pass the tickOptions with processNewMacroTasksSynchronously to be false, the nested timeout
452
- * will not be invoked.
464
+ * ```
453
465
  *
454
466
  *
455
467
  * @publicApi
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"ɵangular_packages_core_testing_testing_a":{"__symbolic":"class","members":{"initTestEnvironment":[{"__symbolic":"method"}],"resetTestEnvironment":[{"__symbolic":"method"}],"resetTestingModule":[{"__symbolic":"method"}],"configureCompiler":[{"__symbolic":"method"}],"configureTestingModule":[{"__symbolic":"method"}],"compileComponents":[{"__symbolic":"method"}],"_initIfNeeded":[{"__symbolic":"method"}],"_createCompilerAndModule":[{"__symbolic":"method"}],"_assertNotInstantiated":[{"__symbolic":"method"}],"inject":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"get":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"overrideModule":[{"__symbolic":"method"}],"overrideComponent":[{"__symbolic":"method"}],"overrideDirective":[{"__symbolic":"method"}],"overridePipe":[{"__symbolic":"method"}],"overrideProvider":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"overrideProviderImpl":[{"__symbolic":"method"}],"overrideTemplateUsingTestingModule":[{"__symbolic":"method"}],"createComponent":[{"__symbolic":"method"}]},"statics":{"compileComponents":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"getTestBed"}},"member":"compileComponents"}}},"inject":{"__symbolic":"function","parameters":["token","notFoundValue","flags"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":641,"character":9,"context":{"name":"_getTestBedViewEngine"},"module":"./testing"}},"get":{"__symbolic":"function","parameters":["token","notFoundValue","flags"],"defaults":[null,{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":230,"character":39},"member":"THROW_IF_NOT_FOUND"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectFlags","line":231,"character":27},"member":"Default"}],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":641,"character":9,"context":{"name":"_getTestBedViewEngine"},"module":"./testing"}},"createComponent":{"__symbolic":"function","parameters":["component"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":641,"character":9,"context":{"name":"_getTestBedViewEngine"},"module":"./testing"}}}},"waitForAsync":{"__symbolic":"function"},"async":{"__symbolic":"function","parameters":["fn"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"waitForAsync"},"arguments":[{"__symbolic":"reference","name":"fn"}]}},"ComponentFixture":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ComponentRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":53,"character":40,"context":{"typeName":"T"},"module":"./testing"}]},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":53,"character":59},{"__symbolic":"reference","name":"boolean"}]}],"_tick":[{"__symbolic":"method"}],"detectChanges":[{"__symbolic":"method"}],"checkNoChanges":[{"__symbolic":"method"}],"autoDetectChanges":[{"__symbolic":"method"}],"isStable":[{"__symbolic":"method"}],"whenStable":[{"__symbolic":"method"}],"_getRenderer":[{"__symbolic":"method"}],"whenRenderingDone":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}]}},"resetFakeAsyncZone":{"__symbolic":"function"},"fakeAsync":{"__symbolic":"function"},"tick":{"__symbolic":"function"},"flush":{"__symbolic":"function"},"discardPeriodicTasks":{"__symbolic":"function"},"flushMicrotasks":{"__symbolic":"function"},"TestBed":{"__symbolic":"if","condition":{"__symbolic":"reference","module":"@angular/core","name":"ɵivyEnabled","line":628,"character":4},"thenExpression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_b"},"elseExpression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_a"}},"getTestBed":{"__symbolic":"if","condition":{"__symbolic":"reference","module":"@angular/core","name":"ɵivyEnabled","line":637,"character":41},"thenExpression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"},"elseExpression":{"__symbolic":"error","message":"Reference to a non-exported function","line":641,"character":9,"context":{"name":"_getTestBedViewEngine"},"module":"./testing"}},"inject":{"__symbolic":"function"},"InjectSetupWrapper":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":694,"character":34,"module":"./testing"}]}],"_addModule":[{"__symbolic":"method"}],"inject":[{"__symbolic":"method"}]}},"withModule":{"__symbolic":"function"},"TestComponentRenderer":{"__symbolic":"class","members":{"insertRootElement":[{"__symbolic":"method"}]}},"ComponentFixtureAutoDetect":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":27,"character":8},"arguments":["ComponentFixtureAutoDetect"]},"ComponentFixtureNoNgZone":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":32,"character":44},"arguments":["ComponentFixtureNoNgZone"]},"TestModuleMetadata":{"__symbolic":"interface"},"TestBedStatic":{"__symbolic":"interface"},"MetadataOverride":{"__symbolic":"interface"},"ɵMetadataOverrider":{"__symbolic":"class","members":{"overrideMetadata":[{"__symbolic":"method"}]}},"ɵTestingCompiler":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/core","name":"Compiler","line":22,"character":37},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1}}],"members":{"overrideModule":[{"__symbolic":"method"}],"overrideDirective":[{"__symbolic":"method"}],"overrideComponent":[{"__symbolic":"method"}],"overridePipe":[{"__symbolic":"method"}],"loadAotSummaries":[{"__symbolic":"method"}],"getComponentFactory":[{"__symbolic":"method"}],"getComponentFromError":[{"__symbolic":"method"}]}},"ɵTestingCompilerFactory":{"__symbolic":"class","members":{"createTestingCompiler":[{"__symbolic":"method"}]}},"ɵangular_packages_core_testing_testing_b":{"__symbolic":"class","members":{"initTestEnvironment":[{"__symbolic":"method"}],"resetTestEnvironment":[{"__symbolic":"method"}],"resetTestingModule":[{"__symbolic":"method"}],"configureCompiler":[{"__symbolic":"method"}],"configureTestingModule":[{"__symbolic":"method"}],"compileComponents":[{"__symbolic":"method"}],"inject":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"get":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"overrideModule":[{"__symbolic":"method"}],"overrideComponent":[{"__symbolic":"method"}],"overrideTemplateUsingTestingModule":[{"__symbolic":"method"}],"overrideDirective":[{"__symbolic":"method"}],"overridePipe":[{"__symbolic":"method"}],"overrideProvider":[{"__symbolic":"method"}],"createComponent":[{"__symbolic":"method"}],"assertNotInstantiated":[{"__symbolic":"method"}],"checkGlobalCompilationFinished":[{"__symbolic":"method"}],"destroyActiveFixtures":[{"__symbolic":"method"}]},"statics":{"compileComponents":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"}},"member":"compileComponents"}}},"inject":{"__symbolic":"function","parameters":["token","notFoundValue","flags"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"}},"member":"inject"},"arguments":[{"__symbolic":"reference","name":"token"},{"__symbolic":"reference","name":"notFoundValue"},{"__symbolic":"reference","name":"flags"}]}},"get":{"__symbolic":"function","parameters":["token","notFoundValue","flags"],"defaults":[null,{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":170,"character":39},"member":"THROW_IF_NOT_FOUND"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectFlags","line":171,"character":27},"member":"Default"}],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"}},"member":"inject"},"arguments":[{"__symbolic":"reference","name":"token"},{"__symbolic":"reference","name":"notFoundValue"},{"__symbolic":"reference","name":"flags"}]}},"createComponent":{"__symbolic":"function","parameters":["component"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"}},"member":"createComponent"},"arguments":[{"__symbolic":"reference","name":"component"}]}}}},"ɵangular_packages_core_testing_testing_c":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"binop","operator":"=","left":{"__symbolic":"error","message":"Reference to a local symbol","line":418,"character":4,"context":{"name":"testBed"},"module":"./testing"},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"error","message":"Reference to a local symbol","line":418,"character":4,"context":{"name":"testBed"},"module":"./testing"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_b"}}}}}},"origins":{"ɵangular_packages_core_testing_testing_a":"./testing","waitForAsync":"./testing","async":"./testing","ComponentFixture":"./testing","resetFakeAsyncZone":"./testing","fakeAsync":"./testing","tick":"./testing","flush":"./testing","discardPeriodicTasks":"./testing","flushMicrotasks":"./testing","TestBed":"./testing","getTestBed":"./testing","inject":"./testing","InjectSetupWrapper":"./testing","withModule":"./testing","TestComponentRenderer":"./testing","ComponentFixtureAutoDetect":"./testing","ComponentFixtureNoNgZone":"./testing","TestModuleMetadata":"./testing","TestBedStatic":"./testing","__core_private_testing_placeholder__":"./testing","MetadataOverride":"./testing","ɵMetadataOverrider":"./testing","ɵTestingCompiler":"./testing","ɵTestingCompilerFactory":"./testing","ɵangular_packages_core_testing_testing_b":"./testing","ɵangular_packages_core_testing_testing_c":"./testing"},"importAs":"@angular/core/testing"}
1
+ {"__symbolic":"module","version":4,"metadata":{"ɵangular_packages_core_testing_testing_a":{"__symbolic":"class","members":{"initTestEnvironment":[{"__symbolic":"method"}],"resetTestEnvironment":[{"__symbolic":"method"}],"resetTestingModule":[{"__symbolic":"method"}],"configureCompiler":[{"__symbolic":"method"}],"configureTestingModule":[{"__symbolic":"method"}],"compileComponents":[{"__symbolic":"method"}],"_initIfNeeded":[{"__symbolic":"method"}],"_createCompilerAndModule":[{"__symbolic":"method"}],"_assertNotInstantiated":[{"__symbolic":"method"}],"inject":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"get":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"overrideModule":[{"__symbolic":"method"}],"overrideComponent":[{"__symbolic":"method"}],"overrideDirective":[{"__symbolic":"method"}],"overridePipe":[{"__symbolic":"method"}],"overrideProvider":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"overrideProviderImpl":[{"__symbolic":"method"}],"overrideTemplateUsingTestingModule":[{"__symbolic":"method"}],"createComponent":[{"__symbolic":"method"}]},"statics":{"compileComponents":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"getTestBed"}},"member":"compileComponents"}}},"inject":{"__symbolic":"function","parameters":["token","notFoundValue","flags"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":640,"character":9,"context":{"name":"_getTestBedViewEngine"},"module":"./testing"}},"get":{"__symbolic":"function","parameters":["token","notFoundValue","flags"],"defaults":[null,{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":229,"character":39},"member":"THROW_IF_NOT_FOUND"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectFlags","line":230,"character":27},"member":"Default"}],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":640,"character":9,"context":{"name":"_getTestBedViewEngine"},"module":"./testing"}},"createComponent":{"__symbolic":"function","parameters":["component"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":640,"character":9,"context":{"name":"_getTestBedViewEngine"},"module":"./testing"}}}},"waitForAsync":{"__symbolic":"function"},"async":{"__symbolic":"function","parameters":["fn"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"waitForAsync"},"arguments":[{"__symbolic":"reference","name":"fn"}]}},"ComponentFixture":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ComponentRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":53,"character":40,"context":{"typeName":"T"},"module":"./testing"}]},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":53,"character":59},{"__symbolic":"reference","name":"boolean"}]}],"_tick":[{"__symbolic":"method"}],"detectChanges":[{"__symbolic":"method"}],"checkNoChanges":[{"__symbolic":"method"}],"autoDetectChanges":[{"__symbolic":"method"}],"isStable":[{"__symbolic":"method"}],"whenStable":[{"__symbolic":"method"}],"_getRenderer":[{"__symbolic":"method"}],"whenRenderingDone":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}]}},"resetFakeAsyncZone":{"__symbolic":"function"},"fakeAsync":{"__symbolic":"function"},"tick":{"__symbolic":"function"},"flush":{"__symbolic":"function"},"discardPeriodicTasks":{"__symbolic":"function"},"flushMicrotasks":{"__symbolic":"function"},"TestBed":{"__symbolic":"if","condition":{"__symbolic":"reference","module":"@angular/core","name":"ɵivyEnabled","line":627,"character":4},"thenExpression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_b"},"elseExpression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_a"}},"getTestBed":{"__symbolic":"if","condition":{"__symbolic":"reference","module":"@angular/core","name":"ɵivyEnabled","line":636,"character":41},"thenExpression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"},"elseExpression":{"__symbolic":"error","message":"Reference to a non-exported function","line":640,"character":9,"context":{"name":"_getTestBedViewEngine"},"module":"./testing"}},"inject":{"__symbolic":"function"},"InjectSetupWrapper":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":675,"character":34,"module":"./testing"}]}],"_addModule":[{"__symbolic":"method"}],"inject":[{"__symbolic":"method"}]}},"withModule":{"__symbolic":"function"},"TestComponentRenderer":{"__symbolic":"class","members":{"insertRootElement":[{"__symbolic":"method"}]}},"ComponentFixtureAutoDetect":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":27,"character":8},"arguments":["ComponentFixtureAutoDetect"]},"ComponentFixtureNoNgZone":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":32,"character":44},"arguments":["ComponentFixtureNoNgZone"]},"TestModuleMetadata":{"__symbolic":"interface"},"TestBedStatic":{"__symbolic":"interface"},"MetadataOverride":{"__symbolic":"interface"},"ɵMetadataOverrider":{"__symbolic":"class","members":{"overrideMetadata":[{"__symbolic":"method"}]}},"ɵTestingCompiler":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/core","name":"Compiler","line":22,"character":37},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1}}],"members":{"overrideModule":[{"__symbolic":"method"}],"overrideDirective":[{"__symbolic":"method"}],"overrideComponent":[{"__symbolic":"method"}],"overridePipe":[{"__symbolic":"method"}],"loadAotSummaries":[{"__symbolic":"method"}],"getComponentFactory":[{"__symbolic":"method"}],"getComponentFromError":[{"__symbolic":"method"}]}},"ɵTestingCompilerFactory":{"__symbolic":"class","members":{"createTestingCompiler":[{"__symbolic":"method"}]}},"ɵangular_packages_core_testing_testing_b":{"__symbolic":"class","members":{"initTestEnvironment":[{"__symbolic":"method"}],"resetTestEnvironment":[{"__symbolic":"method"}],"resetTestingModule":[{"__symbolic":"method"}],"configureCompiler":[{"__symbolic":"method"}],"configureTestingModule":[{"__symbolic":"method"}],"compileComponents":[{"__symbolic":"method"}],"inject":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"get":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"overrideModule":[{"__symbolic":"method"}],"overrideComponent":[{"__symbolic":"method"}],"overrideTemplateUsingTestingModule":[{"__symbolic":"method"}],"overrideDirective":[{"__symbolic":"method"}],"overridePipe":[{"__symbolic":"method"}],"overrideProvider":[{"__symbolic":"method"}],"createComponent":[{"__symbolic":"method"}],"assertNotInstantiated":[{"__symbolic":"method"}],"checkGlobalCompilationFinished":[{"__symbolic":"method"}],"destroyActiveFixtures":[{"__symbolic":"method"}]},"statics":{"compileComponents":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"}},"member":"compileComponents"}}},"inject":{"__symbolic":"function","parameters":["token","notFoundValue","flags"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"}},"member":"inject"},"arguments":[{"__symbolic":"reference","name":"token"},{"__symbolic":"reference","name":"notFoundValue"},{"__symbolic":"reference","name":"flags"}]}},"get":{"__symbolic":"function","parameters":["token","notFoundValue","flags"],"defaults":[null,{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":170,"character":39},"member":"THROW_IF_NOT_FOUND"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectFlags","line":171,"character":27},"member":"Default"}],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"}},"member":"inject"},"arguments":[{"__symbolic":"reference","name":"token"},{"__symbolic":"reference","name":"notFoundValue"},{"__symbolic":"reference","name":"flags"}]}},"createComponent":{"__symbolic":"function","parameters":["component"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_c"}},"member":"createComponent"},"arguments":[{"__symbolic":"reference","name":"component"}]}}}},"ɵangular_packages_core_testing_testing_c":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"binop","operator":"=","left":{"__symbolic":"error","message":"Reference to a local symbol","line":418,"character":4,"context":{"name":"testBed"},"module":"./testing"},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"error","message":"Reference to a local symbol","line":418,"character":4,"context":{"name":"testBed"},"module":"./testing"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ɵangular_packages_core_testing_testing_b"}}}}}},"origins":{"ɵangular_packages_core_testing_testing_a":"./testing","waitForAsync":"./testing","async":"./testing","ComponentFixture":"./testing","resetFakeAsyncZone":"./testing","fakeAsync":"./testing","tick":"./testing","flush":"./testing","discardPeriodicTasks":"./testing","flushMicrotasks":"./testing","TestBed":"./testing","getTestBed":"./testing","inject":"./testing","InjectSetupWrapper":"./testing","withModule":"./testing","TestComponentRenderer":"./testing","ComponentFixtureAutoDetect":"./testing","ComponentFixtureNoNgZone":"./testing","TestModuleMetadata":"./testing","TestBedStatic":"./testing","__core_private_testing_placeholder__":"./testing","MetadataOverride":"./testing","ɵMetadataOverrider":"./testing","ɵTestingCompiler":"./testing","ɵTestingCompilerFactory":"./testing","ɵangular_packages_core_testing_testing_b":"./testing","ɵangular_packages_core_testing_testing_c":"./testing"},"importAs":"@angular/core/testing"}
package/testing.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v12.0.1
2
+ * @license Angular v12.0.5
3
3
  * (c) 2010-2021 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,28 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /**
9
- * Injectable completer that allows signaling completion of an asynchronous test. Used internally.
10
- */
11
- export class AsyncTestCompleter {
12
- constructor() {
13
- this._promise = new Promise((res, rej) => {
14
- this._resolve = res;
15
- this._reject = rej;
16
- });
17
- }
18
- done(value) {
19
- this._resolve(value);
20
- }
21
- fail(error, stackTrace) {
22
- this._reject(error);
23
- }
24
- get promise() {
25
- return this._promise;
26
- }
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmNfdGVzdF9jb21wbGV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3Rlc3Rpbmcvc3JjL2FzeW5jX3Rlc3RfY29tcGxldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUtVLGFBQVEsR0FBaUIsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFZTCxDQUFDO0lBWEMsSUFBSSxDQUFDLEtBQVc7UUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBVyxFQUFFLFVBQW1CO1FBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBJbmplY3RhYmxlIGNvbXBsZXRlciB0aGF0IGFsbG93cyBzaWduYWxpbmcgY29tcGxldGlvbiBvZiBhbiBhc3luY2hyb25vdXMgdGVzdC4gVXNlZCBpbnRlcm5hbGx5LlxuICovXG5leHBvcnQgY2xhc3MgQXN5bmNUZXN0Q29tcGxldGVyIHtcbiAgLy8gVE9ETyhpc3N1ZS8yNDU3MSk6IHJlbW92ZSAnIScuXG4gIHByaXZhdGUgX3Jlc29sdmUhOiAocmVzdWx0OiBhbnkpID0+IHZvaWQ7XG4gIC8vIFRPRE8oaXNzdWUvMjQ1NzEpOiByZW1vdmUgJyEnLlxuICBwcml2YXRlIF9yZWplY3QhOiAoZXJyOiBhbnkpID0+IHZvaWQ7XG4gIHByaXZhdGUgX3Byb21pc2U6IFByb21pc2U8YW55PiA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgIHRoaXMuX3Jlc29sdmUgPSByZXM7XG4gICAgdGhpcy5fcmVqZWN0ID0gcmVqO1xuICB9KTtcbiAgZG9uZSh2YWx1ZT86IGFueSkge1xuICAgIHRoaXMuX3Jlc29sdmUodmFsdWUpO1xuICB9XG5cbiAgZmFpbChlcnJvcj86IGFueSwgc3RhY2tUcmFjZT86IHN0cmluZykge1xuICAgIHRoaXMuX3JlamVjdChlcnJvcik7XG4gIH1cblxuICBnZXQgcHJvbWlzZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9wcm9taXNlO1xuICB9XG59XG4iXX0=