@angular-devkit/schematics 0.7.1 → 0.7.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.
- package/README.md +1 -1
- package/package.json +2 -2
- package/src/engine/engine.d.ts +6 -6
- package/src/engine/engine.js +1 -1
- package/src/engine/interface.d.ts +1 -1
- package/src/engine/interface.js +1 -1
- package/src/engine/schematic.js +1 -1
- package/src/formats/format-validator.js +1 -1
- package/src/formats/path.js +1 -1
- package/src/index.js +1 -1
- package/src/rules/base.js +3 -3
- package/src/rules/call.js +1 -1
- package/src/rules/move.js +5 -1
- package/src/rules/random.js +1 -1
- package/src/rules/schematic.js +1 -1
- package/src/rules/template.js +1 -1
- package/src/rules/url.js +1 -1
- package/src/rules/utils/is-binary.d.ts +1 -1
- package/src/rules/utils/is-binary.js +1 -1
- package/src/sink/dryrun.js +1 -1
- package/src/sink/host.js +1 -1
- package/src/sink/sink.js +1 -1
- package/src/tree/action.js +1 -1
- package/src/tree/delegate.js +1 -1
- package/src/tree/entry.js +1 -1
- package/src/tree/filesystem.js +1 -1
- package/src/tree/filtered.js +1 -1
- package/src/tree/host-tree.d.ts +2 -0
- package/src/tree/host-tree.js +15 -1
- package/src/tree/interface.d.ts +1 -1
- package/src/tree/interface.js +1 -1
- package/src/tree/null.js +1 -1
- package/src/tree/recorder.js +1 -1
- package/src/tree/static.js +1 -1
- package/src/tree/virtual.d.ts +1 -0
- package/src/tree/virtual.js +14 -1
- package/src/utility/linked-list.js +1 -1
- package/src/utility/update-buffer.js +1 -1
- package/src/workflow/base.d.ts +47 -0
- package/src/workflow/base.js +111 -0
- package/src/workflow/index.d.ts +1 -0
- package/src/workflow/index.js +12 -1
- package/tasks/node-package/executor.js +1 -1
- package/tasks/node-package/install-task.js +1 -1
- package/tasks/node-package/link-task.d.ts +2 -2
- package/tasks/node-package/link-task.js +1 -1
- package/tasks/repo-init/executor.js +1 -1
- package/tasks/repo-init/init-task.d.ts +2 -2
- package/tasks/repo-init/init-task.js +1 -1
- package/tasks/run-schematic/executor.js +1 -1
- package/tasks/run-schematic/task.js +1 -1
- package/tasks/tslint-fix/executor.js +1 -1
- package/tasks/tslint-fix/task.js +1 -1
- package/tasks/tslint-fix/test/custom-rule.js +1 -1
- package/tasks/tslint-fix/test/run-task.js +1 -1
- package/testing/schematic-test-runner.js +1 -1
- package/tools/export-ref.js +1 -1
- package/tools/fallback-engine-host.js +1 -1
- package/tools/file-system-engine-host-base.js +1 -1
- package/tools/file-system-engine-host.js +2 -2
- package/tools/file-system-utility.js +1 -1
- package/tools/index.d.ts +1 -1
- package/tools/node-module-engine-host.js +1 -1
- package/tools/node-modules-test-engine-host.js +1 -1
- package/tools/schema-option-transform.js +1 -1
- package/tools/workflow/node-workflow.d.ts +7 -25
- package/tools/workflow/node-workflow.js +22 -91
|
@@ -9,104 +9,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
*/
|
|
10
10
|
const core_1 = require("@angular-devkit/core");
|
|
11
11
|
const schematics_1 = require("@angular-devkit/schematics"); // tslint:disable-line:no-implicit-dependencies
|
|
12
|
-
const rxjs_1 = require("rxjs");
|
|
13
|
-
const operators_1 = require("rxjs/operators");
|
|
14
12
|
const node_1 = require("../../tasks/node");
|
|
15
13
|
const node_module_engine_host_1 = require("../node-module-engine-host");
|
|
16
14
|
const schema_option_transform_1 = require("../schema-option-transform");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this._engineHost.registerTaskExecutor(node_1.BuiltinTaskExecutor.NodePackage, {
|
|
15
|
+
/**
|
|
16
|
+
* A workflow specifically for Node tools.
|
|
17
|
+
*/
|
|
18
|
+
class NodeWorkflow extends schematics_1.workflow.BaseWorkflow {
|
|
19
|
+
constructor(host, options) {
|
|
20
|
+
const engineHost = new node_module_engine_host_1.NodeModulesEngineHost();
|
|
21
|
+
super({
|
|
22
|
+
host: host,
|
|
23
|
+
registry: new core_1.schema.CoreSchemaRegistry(schematics_1.formats.standardFormats),
|
|
24
|
+
engineHost: engineHost,
|
|
25
|
+
force: options.force,
|
|
26
|
+
dryRun: options.dryRun,
|
|
27
|
+
});
|
|
28
|
+
engineHost.registerOptionsTransform(schema_option_transform_1.validateOptionsWithSchema(this._registry));
|
|
29
|
+
engineHost.registerTaskExecutor(node_1.BuiltinTaskExecutor.NodePackage, {
|
|
33
30
|
allowPackageManagerOverride: true,
|
|
34
|
-
packageManager:
|
|
35
|
-
rootDirectory:
|
|
31
|
+
packageManager: options.packageManager,
|
|
32
|
+
rootDirectory: options.root,
|
|
36
33
|
});
|
|
37
|
-
|
|
38
|
-
rootDirectory:
|
|
34
|
+
engineHost.registerTaskExecutor(node_1.BuiltinTaskExecutor.RepositoryInitializer, {
|
|
35
|
+
rootDirectory: options.root,
|
|
39
36
|
});
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
engineHost.registerTaskExecutor(node_1.BuiltinTaskExecutor.RunSchematic);
|
|
38
|
+
engineHost.registerTaskExecutor(node_1.BuiltinTaskExecutor.TslintFix);
|
|
42
39
|
this._context = [];
|
|
43
40
|
}
|
|
44
|
-
get context() {
|
|
45
|
-
const maybeContext = this._context[this._context.length - 1];
|
|
46
|
-
if (!maybeContext) {
|
|
47
|
-
throw new Error('Cannot get context when workflow is not executing...');
|
|
48
|
-
}
|
|
49
|
-
return maybeContext;
|
|
50
|
-
}
|
|
51
|
-
get registry() {
|
|
52
|
-
return this._registry;
|
|
53
|
-
}
|
|
54
|
-
get reporter() {
|
|
55
|
-
return this._reporter.asObservable();
|
|
56
|
-
}
|
|
57
|
-
get lifeCycle() {
|
|
58
|
-
return this._lifeCycle.asObservable();
|
|
59
|
-
}
|
|
60
|
-
execute(options) {
|
|
61
|
-
const parentContext = this._context[this._context.length - 1];
|
|
62
|
-
if (!parentContext) {
|
|
63
|
-
this._lifeCycle.next({ kind: 'start' });
|
|
64
|
-
}
|
|
65
|
-
/** Create the collection and the schematic. */
|
|
66
|
-
const collection = this._engine.createCollection(options.collection);
|
|
67
|
-
// Only allow private schematics if called from the same collection.
|
|
68
|
-
const allowPrivate = options.allowPrivate
|
|
69
|
-
|| (parentContext && parentContext.collection === options.collection);
|
|
70
|
-
const schematic = collection.createSchematic(options.schematic, allowPrivate);
|
|
71
|
-
// We need two sinks if we want to output what will happen, and actually do the work.
|
|
72
|
-
// Note that fsSink is technically not used if `--dry-run` is passed, but creating the Sink
|
|
73
|
-
// does not have any side effect.
|
|
74
|
-
const dryRunSink = new schematics_1.DryRunSink(this._host, this._options.force);
|
|
75
|
-
const fsSink = new schematics_1.HostSink(this._host, this._options.force);
|
|
76
|
-
let error = false;
|
|
77
|
-
const dryRunSubscriber = dryRunSink.reporter.subscribe(event => {
|
|
78
|
-
this._reporter.next(event);
|
|
79
|
-
error = error || (event.kind == 'error');
|
|
80
|
-
});
|
|
81
|
-
this._lifeCycle.next({ kind: 'workflow-start' });
|
|
82
|
-
const context = Object.assign({}, options, { debug: options.debug || false, logger: options.logger || (parentContext && parentContext.logger) || new core_1.logging.NullLogger(), parentContext });
|
|
83
|
-
this._context.push(context);
|
|
84
|
-
return schematic.call(options.options, rxjs_1.of(new schematics_1.HostTree(this._host)), { logger: context.logger }).pipe(operators_1.map(tree => schematics_1.Tree.optimize(tree)), operators_1.concatMap((tree) => {
|
|
85
|
-
return rxjs_1.concat(dryRunSink.commit(tree).pipe(operators_1.ignoreElements()), rxjs_1.of(tree));
|
|
86
|
-
}), operators_1.concatMap((tree) => {
|
|
87
|
-
dryRunSubscriber.unsubscribe();
|
|
88
|
-
if (error) {
|
|
89
|
-
return rxjs_1.throwError(new schematics_1.UnsuccessfulWorkflowExecution());
|
|
90
|
-
}
|
|
91
|
-
if (this._options.dryRun) {
|
|
92
|
-
return rxjs_1.of();
|
|
93
|
-
}
|
|
94
|
-
return fsSink.commit(tree).pipe(operators_1.defaultIfEmpty(), operators_1.last());
|
|
95
|
-
}), operators_1.concatMap(() => {
|
|
96
|
-
if (this._options.dryRun) {
|
|
97
|
-
return rxjs_1.of();
|
|
98
|
-
}
|
|
99
|
-
this._lifeCycle.next({ kind: 'post-tasks-start' });
|
|
100
|
-
return this._engine.executePostTasks()
|
|
101
|
-
.pipe(operators_1.tap({ complete: () => this._lifeCycle.next({ kind: 'post-tasks-end' }) }), operators_1.defaultIfEmpty(), operators_1.last());
|
|
102
|
-
}), operators_1.tap({ complete: () => {
|
|
103
|
-
this._lifeCycle.next({ kind: 'workflow-end' });
|
|
104
|
-
this._context.pop();
|
|
105
|
-
if (this._context.length == 0) {
|
|
106
|
-
this._lifeCycle.next({ kind: 'end' });
|
|
107
|
-
}
|
|
108
|
-
} }));
|
|
109
|
-
}
|
|
110
41
|
}
|
|
111
42
|
exports.NodeWorkflow = NodeWorkflow;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvc2NoZW1hdGljcy90b29scy93b3JrZmxvdy9ub2RlLXdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7OztHQU1HO0FBQ0gsK0NBQXdFO0FBQ3hFLDJEQVNvQyxDQUFFLCtDQUErQztBQUNyRiwrQkFBbUU7QUFDbkUsOENBQTJGO0FBRTNGLDJDQUF1RDtBQUN2RCx3RUFBbUU7QUFDbkUsd0VBQXVFO0FBRXZFO0lBVUUsWUFDWSxLQUFxQixFQUNyQixRQUtUO1FBTlMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FLakI7UUFaTyxjQUFTLEdBQXlCLElBQUksY0FBTyxFQUFFLENBQUM7UUFDaEQsZUFBVSxHQUFxQyxJQUFJLGNBQU8sRUFBRSxDQUFDO1FBYXJFOzs7V0FHRztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSwrQ0FBcUIsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSw0QkFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFM0QsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxhQUFNLENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLG1EQUF5QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXJGLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQ25DLDBCQUFtQixDQUFDLFdBQVcsRUFDL0I7WUFDRSwyQkFBMkIsRUFBRSxJQUFJO1lBQ2pDLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWM7WUFDNUMsYUFBYSxFQUFFLElBQUksQ0FBQyxR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eEMsQ0FBQztZQUNILENBQUMsRUFBQyxDQUFDLENBQ0osQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTFKRCxvQ0EwSkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgeyBQYXRoLCBsb2dnaW5nLCBzY2hlbWEsIHZpcnR1YWxGcyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7XG4gIERyeVJ1blNpbmssXG4gIEhvc3RTaW5rLFxuICBIb3N0VHJlZSxcbiAgU2NoZW1hdGljRW5naW5lLFxuICBUcmVlLFxuICBVbnN1Y2Nlc3NmdWxXb3JrZmxvd0V4ZWN1dGlvbixcbiAgZm9ybWF0cyxcbiAgd29ya2Zsb3csXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJzsgIC8vIHRzbGludDpkaXNhYmxlLWxpbmU6bm8taW1wbGljaXQtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBjb25jYXQsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGRlZmF1bHRJZkVtcHR5LCBpZ25vcmVFbGVtZW50cywgbGFzdCwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEcnlSdW5FdmVudCB9IGZyb20gJy4uLy4uL3NyYy9zaW5rL2RyeXJ1bic7XG5pbXBvcnQgeyBCdWlsdGluVGFza0V4ZWN1dG9yIH0gZnJvbSAnLi4vLi4vdGFza3Mvbm9kZSc7XG5pbXBvcnQgeyBOb2RlTW9kdWxlc0VuZ2luZUhvc3QgfSBmcm9tICcuLi9ub2RlLW1vZHVsZS1lbmdpbmUtaG9zdCc7XG5pbXBvcnQgeyB2YWxpZGF0ZU9wdGlvbnNXaXRoU2NoZW1hIH0gZnJvbSAnLi4vc2NoZW1hLW9wdGlvbi10cmFuc2Zvcm0nO1xuXG5leHBvcnQgY2xhc3MgTm9kZVdvcmtmbG93IGltcGxlbWVudHMgd29ya2Zsb3cuV29ya2Zsb3cge1xuICBwcm90ZWN0ZWQgX2VuZ2luZTogU2NoZW1hdGljRW5naW5lPHt9LCB7fT47XG4gIHByb3RlY3RlZCBfZW5naW5lSG9zdDogTm9kZU1vZHVsZXNFbmdpbmVIb3N0O1xuICBwcm90ZWN0ZWQgX3JlZ2lzdHJ5OiBzY2hlbWEuQ29yZVNjaGVtYVJlZ2lzdHJ5O1xuXG4gIHByb3RlY3RlZCBfcmVwb3J0ZXI6IFN1YmplY3Q8RHJ5UnVuRXZlbnQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJvdGVjdGVkIF9saWZlQ3ljbGU6IFN1YmplY3Q8d29ya2Zsb3cuTGlmZUN5Y2xlRXZlbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcm90ZWN0ZWQgX2NvbnRleHQ6IHdvcmtmbG93LldvcmtmbG93RXhlY3V0aW9uQ29udGV4dFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBfaG9zdDogdmlydHVhbEZzLkhvc3QsXG4gICAgcHJvdGVjdGVkIF9vcHRpb25zOiB7XG4gICAgICBmb3JjZT86IGJvb2xlYW47XG4gICAgICBkcnlSdW4/OiBib29sZWFuO1xuICAgICAgcm9vdD86IFBhdGgsXG4gICAgICBwYWNrYWdlTWFuYWdlcj86IHN0cmluZztcbiAgICB9LFxuICApIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgdGhlIFNjaGVtYXRpY0VuZ2luZSwgd2hpY2ggaXMgdXNlZCBieSB0aGUgU2NoZW1hdGljIGxpYnJhcnkgYXMgY2FsbGJhY2tzIHRvIGxvYWQgYVxuICAgICAqIENvbGxlY3Rpb24gb3IgYSBTY2hlbWF0aWMuXG4gICAgICovXG4gICAgdGhpcy5fZW5naW5lSG9zdCA9IG5ldyBOb2RlTW9kdWxlc0VuZ2luZUhvc3QoKTtcbiAgICB0aGlzLl9lbmdpbmUgPSBuZXcgU2NoZW1hdGljRW5naW5lKHRoaXMuX2VuZ2luZUhvc3QsIHRoaXMpO1xuXG4gICAgLy8gQWRkIHN1cHBvcnQgZm9yIHNjaGVtYUpzb24uXG4gICAgdGhpcy5fcmVnaXN0cnkgPSBuZXcgc2NoZW1hLkNvcmVTY2hlbWFSZWdpc3RyeShmb3JtYXRzLnN0YW5kYXJkRm9ybWF0cyk7XG4gICAgdGhpcy5fZW5naW5lSG9zdC5yZWdpc3Rlck9wdGlvbnNUcmFuc2Zvcm0odmFsaWRhdGVPcHRpb25zV2l0aFNjaGVtYSh0aGlzLl9yZWdpc3RyeSkpO1xuXG4gICAgdGhpcy5fZW5naW5lSG9zdC5yZWdpc3RlclRhc2tFeGVjdXRvcihcbiAgICAgIEJ1aWx0aW5UYXNrRXhlY3V0b3IuTm9kZVBhY2thZ2UsXG4gICAgICB7XG4gICAgICAgIGFsbG93UGFja2FnZU1hbmFnZXJPdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgcGFja2FnZU1hbmFnZXI6IHRoaXMuX29wdGlvbnMucGFja2FnZU1hbmFnZXIsXG4gICAgICAgIHJvb3REaXJlY3Rvcnk6IHRoaXMuX29wdGlvbnMucm9vdCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLl9lbmdpbmVIb3N0LnJlZ2lzdGVyVGFza0V4ZWN1dG9yKFxuICAgICAgQnVpbHRpblRhc2tFeGVjdXRvci5SZXBvc2l0b3J5SW5pdGlhbGl6ZXIsXG4gICAgICB7XG4gICAgICAgIHJvb3REaXJlY3Rvcnk6IHRoaXMuX29wdGlvbnMucm9vdCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLl9lbmdpbmVIb3N0LnJlZ2lzdGVyVGFza0V4ZWN1dG9yKEJ1aWx0aW5UYXNrRXhlY3V0b3IuUnVuU2NoZW1hdGljKTtcbiAgICB0aGlzLl9lbmdpbmVIb3N0LnJlZ2lzdGVyVGFza0V4ZWN1dG9yKEJ1aWx0aW5UYXNrRXhlY3V0b3IuVHNsaW50Rml4KTtcblxuICAgIHRoaXMuX2NvbnRleHQgPSBbXTtcbiAgfVxuXG4gIGdldCBjb250ZXh0KCk6IFJlYWRvbmx5PHdvcmtmbG93LldvcmtmbG93RXhlY3V0aW9uQ29udGV4dD4ge1xuICAgIGNvbnN0IG1heWJlQ29udGV4dCA9IHRoaXMuX2NvbnRleHRbdGhpcy5fY29udGV4dC5sZW5ndGggLSAxXTtcbiAgICBpZiAoIW1heWJlQ29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZ2V0IGNvbnRleHQgd2hlbiB3b3JrZmxvdyBpcyBub3QgZXhlY3V0aW5nLi4uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlQ29udGV4dDtcbiAgfVxuICBnZXQgcmVnaXN0cnkoKTogc2NoZW1hLlNjaGVtYVJlZ2lzdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cnk7XG4gIH1cbiAgZ2V0IHJlcG9ydGVyKCk6IE9ic2VydmFibGU8RHJ5UnVuRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVwb3J0ZXIuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgZ2V0IGxpZmVDeWNsZSgpOiBPYnNlcnZhYmxlPHdvcmtmbG93LkxpZmVDeWNsZUV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX2xpZmVDeWNsZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGV4ZWN1dGUoXG4gICAgb3B0aW9uczogUGFydGlhbDx3b3JrZmxvdy5Xb3JrZmxvd0V4ZWN1dGlvbkNvbnRleHQ+ICYgd29ya2Zsb3cuUmVxdWlyZWRXb3JrZmxvd0V4ZWN1dGlvbkNvbnRleHQsXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHBhcmVudENvbnRleHQgPSB0aGlzLl9jb250ZXh0W3RoaXMuX2NvbnRleHQubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoIXBhcmVudENvbnRleHQpIHtcbiAgICAgIHRoaXMuX2xpZmVDeWNsZS5uZXh0KHsga2luZDogJ3N0YXJ0JyB9KTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIHRoZSBjb2xsZWN0aW9uIGFuZCB0aGUgc2NoZW1hdGljLiAqL1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLl9lbmdpbmUuY3JlYXRlQ29sbGVjdGlvbihvcHRpb25zLmNvbGxlY3Rpb24pO1xuICAgIC8vIE9ubHkgYWxsb3cgcHJpdmF0ZSBzY2hlbWF0aWNzIGlmIGNhbGxlZCBmcm9tIHRoZSBzYW1lIGNvbGxlY3Rpb24uXG4gICAgY29uc3QgYWxsb3dQcml2YXRlID0gb3B0aW9ucy5hbGxvd1ByaXZhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocGFyZW50Q29udGV4dCAmJiBwYXJlbnRDb250ZXh0LmNvbGxlY3Rpb24gPT09IG9wdGlvbnMuY29sbGVjdGlvbik7XG4gICAgY29uc3Qgc2NoZW1hdGljID0gY29sbGVjdGlvbi5jcmVhdGVTY2hlbWF0aWMob3B0aW9ucy5zY2hlbWF0aWMsIGFsbG93UHJpdmF0ZSk7XG5cbiAgICAvLyBXZSBuZWVkIHR3byBzaW5rcyBpZiB3ZSB3YW50IHRvIG91dHB1dCB3aGF0IHdpbGwgaGFwcGVuLCBhbmQgYWN0dWFsbHkgZG8gdGhlIHdvcmsuXG4gICAgLy8gTm90ZSB0aGF0IGZzU2luayBpcyB0ZWNobmljYWxseSBub3QgdXNlZCBpZiBgLS1kcnktcnVuYCBpcyBwYXNzZWQsIGJ1dCBjcmVhdGluZyB0aGUgU2lua1xuICAgIC8vIGRvZXMgbm90IGhhdmUgYW55IHNpZGUgZWZmZWN0LlxuICAgIGNvbnN0IGRyeVJ1blNpbmsgPSBuZXcgRHJ5UnVuU2luayh0aGlzLl9ob3N0LCB0aGlzLl9vcHRpb25zLmZvcmNlKTtcbiAgICBjb25zdCBmc1NpbmsgPSBuZXcgSG9zdFNpbmsodGhpcy5faG9zdCwgdGhpcy5fb3B0aW9ucy5mb3JjZSk7XG5cbiAgICBsZXQgZXJyb3IgPSBmYWxzZTtcbiAgICBjb25zdCBkcnlSdW5TdWJzY3JpYmVyID0gZHJ5UnVuU2luay5yZXBvcnRlci5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgdGhpcy5fcmVwb3J0ZXIubmV4dChldmVudCk7XG4gICAgICBlcnJvciA9IGVycm9yIHx8IChldmVudC5raW5kID09ICdlcnJvcicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbGlmZUN5Y2xlLm5leHQoeyBraW5kOiAnd29ya2Zsb3ctc3RhcnQnIH0pO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBkZWJ1Zzogb3B0aW9ucy5kZWJ1ZyB8fCBmYWxzZSxcbiAgICAgIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXIgfHwgKHBhcmVudENvbnRleHQgJiYgcGFyZW50Q29udGV4dC5sb2dnZXIpIHx8IG5ldyBsb2dnaW5nLk51bGxMb2dnZXIoKSxcbiAgICAgIHBhcmVudENvbnRleHQsXG4gICAgfTtcbiAgICB0aGlzLl9jb250ZXh0LnB1c2goY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2NoZW1hdGljLmNhbGwoXG4gICAgICBvcHRpb25zLm9wdGlvbnMsXG4gICAgICBvZihuZXcgSG9zdFRyZWUodGhpcy5faG9zdCkpLFxuICAgICAgeyBsb2dnZXI6IGNvbnRleHQubG9nZ2VyIH0sXG4gICAgKS5waXBlKFxuICAgICAgbWFwKHRyZWUgPT4gVHJlZS5vcHRpbWl6ZSh0cmVlKSksXG4gICAgICBjb25jYXRNYXAoKHRyZWU6IFRyZWUpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbmNhdChcbiAgICAgICAgICBkcnlSdW5TaW5rLmNvbW1pdCh0cmVlKS5waXBlKGlnbm9yZUVsZW1lbnRzKCkpLFxuICAgICAgICAgIG9mKHRyZWUpLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoKHRyZWU6IFRyZWUpID0+IHtcbiAgICAgICAgZHJ5UnVuU3Vic2NyaWJlci51bnN1YnNjcmliZSgpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXcgVW5zdWNjZXNzZnVsV29ya2Zsb3dFeGVjdXRpb24oKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5kcnlSdW4pIHtcbiAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmc1NpbmsuY29tbWl0KHRyZWUpLnBpcGUoZGVmYXVsdElmRW1wdHkoKSwgbGFzdCgpKTtcbiAgICAgIH0pLFxuICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9saWZlQ3ljbGUubmV4dCh7IGtpbmQ6ICdwb3N0LXRhc2tzLXN0YXJ0JyB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZW5naW5lLmV4ZWN1dGVQb3N0VGFza3MoKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFwKHsgY29tcGxldGU6ICgpID0+IHRoaXMuX2xpZmVDeWNsZS5uZXh0KHsga2luZDogJ3Bvc3QtdGFza3MtZW5kJyB9KSB9KSxcbiAgICAgICAgICAgIGRlZmF1bHRJZkVtcHR5KCksXG4gICAgICAgICAgICBsYXN0KCksXG4gICAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKHsgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgdGhpcy5fbGlmZUN5Y2xlLm5leHQoeyBraW5kOiAnd29ya2Zsb3ctZW5kJyB9KTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5wb3AoKTtcblxuICAgICAgICBpZiAodGhpcy5fY29udGV4dC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIHRoaXMuX2xpZmVDeWNsZS5uZXh0KHsga2luZDogJ2VuZCcgfSk7XG4gICAgICAgIH1cbiAgICAgIH19KSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvc2NoZW1hdGljcy90b29scy93b3JrZmxvdy9ub2RlLXdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7OztHQU1HO0FBQ0gsK0NBQStEO0FBQy9ELDJEQUdvQyxDQUFFLCtDQUErQztBQUNyRiwyQ0FBdUQ7QUFDdkQsd0VBQW1FO0FBQ25FLHdFQUF1RTtBQUV2RTs7R0FFRztBQUNILGtCQUEwQixTQUFRLHFCQUFRLENBQUMsWUFBWTtJQUNyRCxZQUNFLElBQW9CLEVBQ3BCLE9BS0M7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLCtDQUFxQixFQUFFLENBQUM7UUFDL0MsS0FBSyxDQUFDO1lBQ0osSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsSUFBSSxhQUFNLENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxlQUFlLENBQUM7WUFDaEUsVUFBVSxFQUFFLFVBQVU7WUFFdEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtTQUN2QixDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsd0JBQXdCLENBQUMsbURBQXlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFL0UsVUFBVSxDQUFDLG9CQUFvQixDQUM3QiwwQkFBbUIsQ0FBQyxXQUFXLEVBQy9CO1lBQ0UsMkJBQTJCLEVBQUUsSUFBSTtZQUNqQyxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1NBQzVCLENBQ0YsQ0FBQztRQUNGLFVBQVUsQ0FBQyxvQkFBb0IsQ0FDN0IsMEJBQW1CLENBQUMscUJBQXFCLEVBQ3pDO1lBQ0UsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1NBQzVCLENBQ0YsQ0FBQztRQUNGLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQywwQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRSxVQUFVLENBQUMsb0JBQW9CLENBQUMsMEJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBekNELG9DQXlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7IFBhdGgsIHNjaGVtYSwgdmlydHVhbEZzIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHtcbiAgZm9ybWF0cyxcbiAgd29ya2Zsb3csXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJzsgIC8vIHRzbGludDpkaXNhYmxlLWxpbmU6bm8taW1wbGljaXQtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBCdWlsdGluVGFza0V4ZWN1dG9yIH0gZnJvbSAnLi4vLi4vdGFza3Mvbm9kZSc7XG5pbXBvcnQgeyBOb2RlTW9kdWxlc0VuZ2luZUhvc3QgfSBmcm9tICcuLi9ub2RlLW1vZHVsZS1lbmdpbmUtaG9zdCc7XG5pbXBvcnQgeyB2YWxpZGF0ZU9wdGlvbnNXaXRoU2NoZW1hIH0gZnJvbSAnLi4vc2NoZW1hLW9wdGlvbi10cmFuc2Zvcm0nO1xuXG4vKipcbiAqIEEgd29ya2Zsb3cgc3BlY2lmaWNhbGx5IGZvciBOb2RlIHRvb2xzLlxuICovXG5leHBvcnQgY2xhc3MgTm9kZVdvcmtmbG93IGV4dGVuZHMgd29ya2Zsb3cuQmFzZVdvcmtmbG93IHtcbiAgY29uc3RydWN0b3IoXG4gICAgaG9zdDogdmlydHVhbEZzLkhvc3QsXG4gICAgb3B0aW9uczoge1xuICAgICAgZm9yY2U/OiBib29sZWFuO1xuICAgICAgZHJ5UnVuPzogYm9vbGVhbjtcbiAgICAgIHJvb3Q/OiBQYXRoLFxuICAgICAgcGFja2FnZU1hbmFnZXI/OiBzdHJpbmc7XG4gICAgfSxcbiAgKSB7XG4gICAgY29uc3QgZW5naW5lSG9zdCA9IG5ldyBOb2RlTW9kdWxlc0VuZ2luZUhvc3QoKTtcbiAgICBzdXBlcih7XG4gICAgICBob3N0OiBob3N0LFxuICAgICAgcmVnaXN0cnk6IG5ldyBzY2hlbWEuQ29yZVNjaGVtYVJlZ2lzdHJ5KGZvcm1hdHMuc3RhbmRhcmRGb3JtYXRzKSxcbiAgICAgIGVuZ2luZUhvc3Q6IGVuZ2luZUhvc3QsXG5cbiAgICAgIGZvcmNlOiBvcHRpb25zLmZvcmNlLFxuICAgICAgZHJ5UnVuOiBvcHRpb25zLmRyeVJ1bixcbiAgICB9KTtcblxuICAgIGVuZ2luZUhvc3QucmVnaXN0ZXJPcHRpb25zVHJhbnNmb3JtKHZhbGlkYXRlT3B0aW9uc1dpdGhTY2hlbWEodGhpcy5fcmVnaXN0cnkpKTtcblxuICAgIGVuZ2luZUhvc3QucmVnaXN0ZXJUYXNrRXhlY3V0b3IoXG4gICAgICBCdWlsdGluVGFza0V4ZWN1dG9yLk5vZGVQYWNrYWdlLFxuICAgICAge1xuICAgICAgICBhbGxvd1BhY2thZ2VNYW5hZ2VyT3ZlcnJpZGU6IHRydWUsXG4gICAgICAgIHBhY2thZ2VNYW5hZ2VyOiBvcHRpb25zLnBhY2thZ2VNYW5hZ2VyLFxuICAgICAgICByb290RGlyZWN0b3J5OiBvcHRpb25zLnJvb3QsXG4gICAgICB9LFxuICAgICk7XG4gICAgZW5naW5lSG9zdC5yZWdpc3RlclRhc2tFeGVjdXRvcihcbiAgICAgIEJ1aWx0aW5UYXNrRXhlY3V0b3IuUmVwb3NpdG9yeUluaXRpYWxpemVyLFxuICAgICAge1xuICAgICAgICByb290RGlyZWN0b3J5OiBvcHRpb25zLnJvb3QsXG4gICAgICB9LFxuICAgICk7XG4gICAgZW5naW5lSG9zdC5yZWdpc3RlclRhc2tFeGVjdXRvcihCdWlsdGluVGFza0V4ZWN1dG9yLlJ1blNjaGVtYXRpYyk7XG4gICAgZW5naW5lSG9zdC5yZWdpc3RlclRhc2tFeGVjdXRvcihCdWlsdGluVGFza0V4ZWN1dG9yLlRzbGludEZpeCk7XG5cbiAgICB0aGlzLl9jb250ZXh0ID0gW107XG4gIH1cbn1cbiJdfQ==
|