@angular-devkit/schematics 0.0.21 → 0.0.25

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 (64) hide show
  1. package/bin/schematics.js +62 -17
  2. package/collection-schema.json +40 -0
  3. package/package.json +2 -2
  4. package/src/engine/engine.d.ts +8 -3
  5. package/src/engine/engine.js +28 -9
  6. package/src/engine/interface.d.ts +10 -6
  7. package/src/engine/interface.js +1 -1
  8. package/src/engine/schematic.d.ts +4 -4
  9. package/src/engine/schematic.js +10 -12
  10. package/src/exception/exception.d.ts +2 -4
  11. package/src/exception/exception.js +11 -16
  12. package/src/index.d.ts +2 -2
  13. package/src/index.js +3 -3
  14. package/src/rules/call.d.ts +2 -2
  15. package/src/rules/call.js +8 -5
  16. package/src/rules/move.d.ts +0 -7
  17. package/src/rules/move.js +12 -5
  18. package/src/rules/schematic.js +3 -3
  19. package/src/rules/template.d.ts +1 -1
  20. package/src/rules/template.js +14 -9
  21. package/src/rules/url.js +2 -2
  22. package/src/sink/dryrun.js +1 -1
  23. package/src/tree/action.d.ts +7 -8
  24. package/src/tree/action.js +3 -3
  25. package/src/tree/entry.d.ts +5 -5
  26. package/src/tree/entry.js +1 -1
  27. package/src/tree/filesystem.d.ts +2 -2
  28. package/src/tree/filesystem.js +3 -3
  29. package/src/tree/interface.d.ts +3 -3
  30. package/src/tree/interface.js +1 -1
  31. package/src/tree/memory-host.d.ts +1 -1
  32. package/src/tree/memory-host.js +7 -7
  33. package/src/tree/null.d.ts +1 -1
  34. package/src/tree/null.js +3 -2
  35. package/src/tree/virtual.d.ts +18 -11
  36. package/src/tree/virtual.js +3 -3
  37. package/src/utility/update-buffer.d.ts +1 -1
  38. package/src/utility/update-buffer.js +4 -4
  39. package/tools/description.d.ts +3 -1
  40. package/tools/description.js +1 -1
  41. package/tools/fallback-engine-host.d.ts +34 -0
  42. package/tools/fallback-engine-host.js +52 -0
  43. package/tools/file-system-engine-host-base.d.ts +41 -13
  44. package/tools/file-system-engine-host-base.js +93 -38
  45. package/tools/file-system-engine-host.d.ts +5 -10
  46. package/tools/file-system-engine-host.js +8 -10
  47. package/tools/file-system-utility.d.ts +1 -1
  48. package/tools/file-system-utility.js +3 -3
  49. package/tools/index.d.ts +3 -1
  50. package/tools/index.js +5 -10
  51. package/tools/node-module-engine-host.d.ts +8 -17
  52. package/tools/node-module-engine-host.js +53 -15
  53. package/tools/node-modules-test-engine-host.d.ts +17 -0
  54. package/tools/node-modules-test-engine-host.js +32 -0
  55. package/src/rules/template/template.d.ts +0 -16
  56. package/src/rules/template/template.js +0 -110
  57. package/src/utility/path.d.ts +0 -16
  58. package/src/utility/path.js +0 -61
  59. package/test/index.d.ts +0 -8
  60. package/test/index.js +0 -14
  61. package/test/schematic-test-runner.d.ts +0 -21
  62. package/test/schematic-test-runner.js +0 -50
  63. package/tools/registry-engine-host.d.ts +0 -32
  64. package/tools/registry-engine-host.js +0 -86
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * @license
5
- * Copyright Google Inc. All Rights Reserved.
6
- *
7
- * Use of this source code is governed by an MIT-style license that can be
8
- * found in the LICENSE file at https://angular.io/license
9
- */
10
- const exception_1 = require("../exception/exception");
11
- class InvalidPathException extends exception_1.BaseException {
12
- constructor(path) { super(`Path "${path}" is invalid.`); }
13
- }
14
- exports.InvalidPathException = InvalidPathException;
15
- function relativePath(from, to) {
16
- let p;
17
- if (from == to) {
18
- p = '';
19
- }
20
- else {
21
- const splitFrom = from.split('/');
22
- const splitTo = to.split('/');
23
- while (splitFrom.length > 0 && splitTo.length > 0 && splitFrom[0] == splitTo[0]) {
24
- splitFrom.shift();
25
- splitTo.shift();
26
- }
27
- if (splitFrom.length == 0) {
28
- p = splitTo.join('/');
29
- }
30
- else {
31
- p = splitFrom.map(_ => '..').concat(splitTo).join('/');
32
- }
33
- }
34
- return p;
35
- }
36
- exports.relativePath = relativePath;
37
- function normalizePath(path) {
38
- let p = path;
39
- if (p[0] != '/') {
40
- p = '/' + p;
41
- }
42
- if (p.endsWith('..')) {
43
- throw new InvalidPathException(path);
44
- }
45
- let oldP = null;
46
- while (oldP !== p) {
47
- oldP = p;
48
- p = p
49
- .replace(/\/[^\/]+\/\.\.\//g, '/')
50
- .replace(/\/[^\/]+\/\.\.$/g, '/')
51
- .replace(/\/\.?$/g, '/')
52
- .replace(/\/\.?\//g, '/')
53
- .replace(/\\/g, '/');
54
- }
55
- if (p.startsWith('/../') || (p.endsWith('/') && p !== '/')) {
56
- throw new InvalidPathException(path);
57
- }
58
- return p;
59
- }
60
- exports.normalizePath = normalizePath;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaGFuc2wvU291cmNlcy9kZXZraXQvIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9zY2hlbWF0aWNzL3NyYy91dGlsaXR5L3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCxzREFBdUQ7QUFRdkQsMEJBQWtDLFNBQVEseUJBQWE7SUFDckQsWUFBWSxJQUFZLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbkU7QUFGRCxvREFFQztBQUdELHNCQUE2QixJQUFtQixFQUFFLEVBQWlCO0lBQ2pFLElBQUksQ0FBUyxDQUFDO0lBRWQsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLE9BQU8sU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hGLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBRSxDQUFtQixDQUFDO0FBQzlCLENBQUM7QUF0QkQsb0NBc0JDO0FBR0QsdUJBQThCLElBQVk7SUFDeEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLElBQUksR0FBa0IsSUFBSSxDQUFDO0lBQy9CLE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxDQUFDLEdBQUcsQ0FBQzthQUNGLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUM7YUFDakMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQzthQUNoQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQzthQUN2QixPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQzthQUN4QixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTSxDQUFFLENBQW1CLENBQUM7QUFDOUIsQ0FBQztBQXpCRCxzQ0F5QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgeyBCYXNlRXhjZXB0aW9uIH0gZnJvbSAnLi4vZXhjZXB0aW9uL2V4Y2VwdGlvbic7XG5cblxuZXhwb3J0IHR5cGUgU2NoZW1hdGljUGF0aCA9IHN0cmluZyAmIHtcbiAgX19QUklWQVRFX1NDSEVNQVRJQ19QQVRIOiB2b2lkO1xufTtcblxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFBhdGhFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IocGF0aDogc3RyaW5nKSB7IHN1cGVyKGBQYXRoIFwiJHtwYXRofVwiIGlzIGludmFsaWQuYCk7IH1cbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmVQYXRoKGZyb206IFNjaGVtYXRpY1BhdGgsIHRvOiBTY2hlbWF0aWNQYXRoKTogU2NoZW1hdGljUGF0aCB7XG4gIGxldCBwOiBzdHJpbmc7XG5cbiAgaWYgKGZyb20gPT0gdG8pIHtcbiAgICBwID0gJyc7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc3BsaXRGcm9tID0gZnJvbS5zcGxpdCgnLycpO1xuICAgIGNvbnN0IHNwbGl0VG8gPSB0by5zcGxpdCgnLycpO1xuXG4gICAgd2hpbGUgKHNwbGl0RnJvbS5sZW5ndGggPiAwICYmIHNwbGl0VG8ubGVuZ3RoID4gMCAmJiBzcGxpdEZyb21bMF0gPT0gc3BsaXRUb1swXSkge1xuICAgICAgc3BsaXRGcm9tLnNoaWZ0KCk7XG4gICAgICBzcGxpdFRvLnNoaWZ0KCk7XG4gICAgfVxuXG4gICAgaWYgKHNwbGl0RnJvbS5sZW5ndGggPT0gMCkge1xuICAgICAgcCA9IHNwbGl0VG8uam9pbignLycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwID0gc3BsaXRGcm9tLm1hcChfID0+ICcuLicpLmNvbmNhdChzcGxpdFRvKS5qb2luKCcvJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChwIGFzIFNjaGVtYXRpY1BhdGgpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVQYXRoKHBhdGg6IHN0cmluZyk6IFNjaGVtYXRpY1BhdGgge1xuICBsZXQgcCA9IHBhdGg7XG4gIGlmIChwWzBdICE9ICcvJykge1xuICAgIHAgPSAnLycgKyBwO1xuICB9XG4gIGlmIChwLmVuZHNXaXRoKCcuLicpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRQYXRoRXhjZXB0aW9uKHBhdGgpO1xuICB9XG5cbiAgbGV0IG9sZFA6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICB3aGlsZSAob2xkUCAhPT0gcCkge1xuICAgIG9sZFAgPSBwO1xuICAgIHAgPSBwXG4gICAgICAucmVwbGFjZSgvXFwvW15cXC9dK1xcL1xcLlxcLlxcLy9nLCAnLycpXG4gICAgICAucmVwbGFjZSgvXFwvW15cXC9dK1xcL1xcLlxcLiQvZywgJy8nKVxuICAgICAgLnJlcGxhY2UoL1xcL1xcLj8kL2csICcvJylcbiAgICAgIC5yZXBsYWNlKC9cXC9cXC4/XFwvL2csICcvJylcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gIH1cblxuICBpZiAocC5zdGFydHNXaXRoKCcvLi4vJykgfHwgKHAuZW5kc1dpdGgoJy8nKSAmJiBwICE9PSAnLycpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRQYXRoRXhjZXB0aW9uKHBhdGgpO1xuICB9XG5cbiAgcmV0dXJuIChwIGFzIFNjaGVtYXRpY1BhdGgpO1xufVxuIl19
package/test/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google Inc. 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
- export * from './schematic-test-runner';
package/test/index.js DELETED
@@ -1,14 +0,0 @@
1
- "use strict";
2
- function __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4
- }
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- /**
7
- * @license
8
- * Copyright Google Inc. All Rights Reserved.
9
- *
10
- * Use of this source code is governed by an MIT-style license that can be
11
- * found in the LICENSE file at https://angular.io/license
12
- */
13
- __export(require("./schematic-test-runner"));
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2hhbnNsL1NvdXJjZXMvZGV2a2l0LyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvc2NoZW1hdGljcy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztHQU1HO0FBQ0gsNkNBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWF0aWMtdGVzdC1ydW5uZXInO1xuIl19
@@ -1,21 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google Inc. 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
- import { Tree } from '@angular-devkit/schematics';
9
- import { Observable } from 'rxjs/Observable';
10
- export interface SchematicSchemaT {
11
- }
12
- export declare class SchematicTestRunner {
13
- private collectionName;
14
- private engineHost;
15
- private engine;
16
- private collection;
17
- constructor(collectionName: string);
18
- private prepareCollection();
19
- runSchematicAsync(schematicName: string, opts?: SchematicSchemaT, tree?: Tree): Observable<Tree>;
20
- runSchematic(schematicName: string, opts?: SchematicSchemaT, tree?: Tree): Tree;
21
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * @license
5
- * Copyright Google Inc. All Rights Reserved.
6
- *
7
- * Use of this source code is governed by an MIT-style license that can be
8
- * found in the LICENSE file at https://angular.io/license
9
- */
10
- const schematics_1 = require("@angular-devkit/schematics");
11
- const tools_1 = require("@angular-devkit/schematics/tools");
12
- const json_schema_1 = require("@ngtools/json-schema");
13
- const Observable_1 = require("rxjs/Observable");
14
- class SchematicTestRunner {
15
- constructor(collectionName) {
16
- this.collectionName = collectionName;
17
- this.prepareCollection();
18
- }
19
- prepareCollection() {
20
- this.engineHost = new tools_1.NodeModulesEngineHost();
21
- this.engine = new schematics_1.SchematicEngine(this.engineHost);
22
- this.engineHost.registerOptionsTransform((schematic, opts) => {
23
- if (schematic.schema && schematic.schemaJson) {
24
- const SchemaMetaClass = json_schema_1.SchemaClassFactory(schematic.schemaJson);
25
- const schemaClass = new SchemaMetaClass(opts);
26
- return schemaClass.$$root();
27
- }
28
- return opts;
29
- });
30
- this.collection = this.engine.createCollection(this.collectionName);
31
- }
32
- runSchematicAsync(schematicName, opts, tree) {
33
- const schematic = this.collection.createSchematic(schematicName);
34
- const host = Observable_1.Observable.of(tree || new schematics_1.VirtualTree);
35
- return schematic.call(opts || {}, host);
36
- }
37
- runSchematic(schematicName, opts, tree) {
38
- const schematic = this.collection.createSchematic(schematicName);
39
- let result = null;
40
- const host = Observable_1.Observable.of(tree || new schematics_1.VirtualTree);
41
- schematic.call(opts || {}, host)
42
- .subscribe(t => result = t);
43
- if (result === null) {
44
- throw new Error('Schematic is async, please use runSchematicAsync');
45
- }
46
- return result;
47
- }
48
- }
49
- exports.SchematicTestRunner = SchematicTestRunner;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hdGljLXRlc3QtcnVubmVyLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9oYW5zbC9Tb3VyY2VzL2RldmtpdC8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L3NjaGVtYXRpY3MvdGVzdC9zY2hlbWF0aWMtdGVzdC1ydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCwyREFLb0M7QUFDcEMsNERBRzBDO0FBQzFDLHNEQUEwRDtBQUMxRCxnREFBNkM7QUFLN0M7SUFLRSxZQUFvQixjQUFzQjtRQUF0QixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN4QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSw2QkFBcUIsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSw0QkFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQ3ZDLFNBQWtDLEVBQUUsSUFBc0I7WUFDMUQsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDN0MsTUFBTSxlQUFlLEdBQUcsZ0NBQWtCLENBQW1CLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkYsTUFBTSxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTlDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUIsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLGFBQXFCLEVBQUUsSUFBdUIsRUFBRSxJQUFXO1FBQzNFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sSUFBSSxHQUFHLHVCQUFVLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLHdCQUFXLENBQUMsQ0FBQztRQUVwRCxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFZLENBQUMsYUFBcUIsRUFBRSxJQUF1QixFQUFFLElBQVc7UUFDdEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakUsSUFBSSxNQUFNLEdBQWdCLElBQUksQ0FBQztRQUMvQixNQUFNLElBQUksR0FBRyx1QkFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSx3QkFBVyxDQUFDLENBQUM7UUFFcEQsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQzthQUM3QixTQUFTLENBQUMsQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU5QixFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBaERELGtEQWdEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7XG4gIENvbGxlY3Rpb24sXG4gIFNjaGVtYXRpY0VuZ2luZSxcbiAgVHJlZSxcbiAgVmlydHVhbFRyZWUsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB7XG4gIEZpbGVTeXN0ZW1TY2hlbWF0aWNEZXNjLFxuICBOb2RlTW9kdWxlc0VuZ2luZUhvc3QsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzL3Rvb2xzJztcbmltcG9ydCB7IFNjaGVtYUNsYXNzRmFjdG9yeSB9IGZyb20gJ0BuZ3Rvb2xzL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hdGljU2NoZW1hVCB7fVxuXG5leHBvcnQgY2xhc3MgU2NoZW1hdGljVGVzdFJ1bm5lciB7XG4gIHByaXZhdGUgZW5naW5lSG9zdDogTm9kZU1vZHVsZXNFbmdpbmVIb3N0O1xuICBwcml2YXRlIGVuZ2luZTogU2NoZW1hdGljRW5naW5lPHt9LCB7fT47XG4gIHByaXZhdGUgY29sbGVjdGlvbjogQ29sbGVjdGlvbjx7fSwge30+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29sbGVjdGlvbk5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucHJlcGFyZUNvbGxlY3Rpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZUNvbGxlY3Rpb24oKSB7XG4gICAgdGhpcy5lbmdpbmVIb3N0ID0gbmV3IE5vZGVNb2R1bGVzRW5naW5lSG9zdCgpO1xuICAgIHRoaXMuZW5naW5lID0gbmV3IFNjaGVtYXRpY0VuZ2luZSh0aGlzLmVuZ2luZUhvc3QpO1xuICAgIHRoaXMuZW5naW5lSG9zdC5yZWdpc3Rlck9wdGlvbnNUcmFuc2Zvcm0oKFxuICAgICAgc2NoZW1hdGljOiBGaWxlU3lzdGVtU2NoZW1hdGljRGVzYywgb3B0czogU2NoZW1hdGljU2NoZW1hVCkgPT4ge1xuICAgICAgaWYgKHNjaGVtYXRpYy5zY2hlbWEgJiYgc2NoZW1hdGljLnNjaGVtYUpzb24pIHtcbiAgICAgICAgY29uc3QgU2NoZW1hTWV0YUNsYXNzID0gU2NoZW1hQ2xhc3NGYWN0b3J5PFNjaGVtYXRpY1NjaGVtYVQ+KHNjaGVtYXRpYy5zY2hlbWFKc29uKTtcbiAgICAgICAgY29uc3Qgc2NoZW1hQ2xhc3MgPSBuZXcgU2NoZW1hTWV0YUNsYXNzKG9wdHMpO1xuXG4gICAgICAgIHJldHVybiBzY2hlbWFDbGFzcy4kJHJvb3QoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdHM7XG4gICAgfSk7XG4gICAgdGhpcy5jb2xsZWN0aW9uID0gdGhpcy5lbmdpbmUuY3JlYXRlQ29sbGVjdGlvbih0aGlzLmNvbGxlY3Rpb25OYW1lKTtcbiAgfVxuXG4gIHJ1blNjaGVtYXRpY0FzeW5jKHNjaGVtYXRpY05hbWU6IHN0cmluZywgb3B0cz86IFNjaGVtYXRpY1NjaGVtYVQsIHRyZWU/OiBUcmVlKTogT2JzZXJ2YWJsZTxUcmVlPiB7XG4gICAgY29uc3Qgc2NoZW1hdGljID0gdGhpcy5jb2xsZWN0aW9uLmNyZWF0ZVNjaGVtYXRpYyhzY2hlbWF0aWNOYW1lKTtcbiAgICBjb25zdCBob3N0ID0gT2JzZXJ2YWJsZS5vZih0cmVlIHx8IG5ldyBWaXJ0dWFsVHJlZSk7XG5cbiAgICByZXR1cm4gc2NoZW1hdGljLmNhbGwob3B0cyB8fCB7fSwgaG9zdCk7XG4gIH1cblxuICBydW5TY2hlbWF0aWMoc2NoZW1hdGljTmFtZTogc3RyaW5nLCBvcHRzPzogU2NoZW1hdGljU2NoZW1hVCwgdHJlZT86IFRyZWUpOiBUcmVlIHtcbiAgICBjb25zdCBzY2hlbWF0aWMgPSB0aGlzLmNvbGxlY3Rpb24uY3JlYXRlU2NoZW1hdGljKHNjaGVtYXRpY05hbWUpO1xuXG4gICAgbGV0IHJlc3VsdDogVHJlZSB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGhvc3QgPSBPYnNlcnZhYmxlLm9mKHRyZWUgfHwgbmV3IFZpcnR1YWxUcmVlKTtcblxuICAgIHNjaGVtYXRpYy5jYWxsKG9wdHMgfHwge30sIGhvc3QpXG4gICAgICAuc3Vic2NyaWJlKHQgPT4gcmVzdWx0ID0gdCk7XG5cbiAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NjaGVtYXRpYyBpcyBhc3luYywgcGxlYXNlIHVzZSBydW5TY2hlbWF0aWNBc3luYycpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,32 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google Inc. 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
- import { CollectionDescription, RuleFactory, SchematicDescription } from '@angular-devkit/schematics';
9
- import { FileSystemCollectionDescription, FileSystemSchematicDescription } from './description';
10
- import { FileSystemEngineHostBase } from './file-system-engine-host-base';
11
- /**
12
- * Used to simplify typings.
13
- */
14
- export declare type FileSystemCollectionDesc = CollectionDescription<FileSystemCollectionDescription>;
15
- export declare type FileSystemSchematicDesc = SchematicDescription<FileSystemCollectionDescription, FileSystemSchematicDescription>;
16
- /**
17
- * A simple EngineHost that uses a registry of {name => path} to find collections. This can be
18
- * useful for tooling that want to load generic collections from random places.
19
- */
20
- export declare class RegistryEngineHost extends FileSystemEngineHostBase {
21
- protected _registry: Map<string, string>;
22
- registerPath(path: string): void;
23
- removePath(path: string): void;
24
- removeName(name: string): void;
25
- protected _resolveCollectionPath(name: string): string | null;
26
- protected _resolveReferenceString(refString: string, parentPath: string): {
27
- ref: RuleFactory<{}>;
28
- path: string;
29
- } | null;
30
- protected _transformCollectionDescription(_name: string, desc: Partial<FileSystemCollectionDesc>): CollectionDescription<FileSystemCollectionDescription> | null;
31
- protected _transformSchematicDescription(_name: string, _collection: FileSystemCollectionDesc, desc: Partial<FileSystemSchematicDesc>): SchematicDescription<FileSystemCollectionDescription, FileSystemSchematicDescription> | null;
32
- }
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs_1 = require("fs");
4
- const path_1 = require("path");
5
- const export_ref_1 = require("./export-ref");
6
- const file_system_engine_host_base_1 = require("./file-system-engine-host-base");
7
- const file_system_utility_1 = require("./file-system-utility");
8
- /**
9
- * A simple EngineHost that uses a registry of {name => path} to find collections. This can be
10
- * useful for tooling that want to load generic collections from random places.
11
- */
12
- class RegistryEngineHost extends file_system_engine_host_base_1.FileSystemEngineHostBase {
13
- constructor() {
14
- super(...arguments);
15
- this._registry = new Map();
16
- }
17
- registerPath(path) {
18
- // Read the collection from the path.
19
- if (fs_1.existsSync(path) && fs_1.statSync(path).isFile()) {
20
- // Allow path to be fully qualified to a JSON file.
21
- }
22
- else if (fs_1.existsSync(path_1.join(path, 'collection.json')) && fs_1.statSync(path).isFile()) {
23
- // Allow path to point to a directory containing a `collection.json`.
24
- path = path_1.join(path, 'collection.json');
25
- }
26
- else {
27
- throw new Error(`Invalid path: "${path}".`);
28
- }
29
- const json = file_system_utility_1.readJsonFile(path);
30
- if (!json) {
31
- throw new Error(`Invalid path for collection: "${path}".`);
32
- }
33
- // Validate that the name is not in the registry already (and that the registry does not
34
- // contain this path under another name.
35
- const name = json.name;
36
- const maybePath = this._registry.get(name);
37
- if (maybePath && maybePath != path) {
38
- throw new Error(`Collection name "${name}" already registered.`);
39
- }
40
- for (const registryPath of this._registry.values()) {
41
- if (registryPath == path) {
42
- throw new Error(`Collection path "${path}" already registered under another name.`);
43
- }
44
- }
45
- this._registry.set(name, path);
46
- }
47
- removePath(path) {
48
- for (const [key, p] of this._registry.entries()) {
49
- if (p == path) {
50
- this._registry.delete(key);
51
- }
52
- }
53
- }
54
- removeName(name) {
55
- this._registry.delete(name);
56
- }
57
- _resolveCollectionPath(name) {
58
- const maybePath = this._registry.get(name);
59
- return maybePath || null;
60
- }
61
- _resolveReferenceString(refString, parentPath) {
62
- // Use the same kind of export strings as NodeModule.
63
- const ref = new export_ref_1.ExportStringRef(refString, parentPath);
64
- if (!ref.ref) {
65
- return null;
66
- }
67
- return { ref: ref.ref, path: ref.module };
68
- }
69
- _transformCollectionDescription(_name, desc) {
70
- if (!desc.name || !desc.path || !desc.schematics || !desc.version) {
71
- return null;
72
- }
73
- if (typeof desc.schematics != 'object') {
74
- return null;
75
- }
76
- return desc;
77
- }
78
- _transformSchematicDescription(_name, _collection, desc) {
79
- if (!desc.factoryFn || !desc.path || !desc.description) {
80
- return null;
81
- }
82
- return desc;
83
- }
84
- }
85
- exports.RegistryEngineHost = RegistryEngineHost;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnktZW5naW5lLWhvc3QuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2hhbnNsL1NvdXJjZXMvZGV2a2l0LyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvc2NoZW1hdGljcy90b29scy9yZWdpc3RyeS1lbmdpbmUtaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLDJCQUEwQztBQUMxQywrQkFBNEI7QUFFNUIsNkNBQStDO0FBQy9DLGlGQUEwRTtBQUMxRSwrREFBcUQ7QUFZckQ7OztHQUdHO0FBQ0gsd0JBQWdDLFNBQVEsdURBQXdCO0lBQWhFOztRQUNZLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQXFGbEQsQ0FBQztJQW5GQyxZQUFZLENBQUMsSUFBWTtRQUN2QixxQ0FBcUM7UUFFckMsRUFBRSxDQUFDLENBQUMsZUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEQsbURBQW1EO1FBQ3JELENBQUM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsZUFBVSxDQUFDLFdBQUksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLGFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEYscUVBQXFFO1lBQ3JFLElBQUksR0FBRyxXQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQTZCLGtDQUFZLENBQUMsSUFBSSxDQUE2QixDQUFDO1FBQ3RGLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNWLE1BQU0s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QUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBK0IsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUF0RkQsZ0RBc0ZDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtcbiAgQ29sbGVjdGlvbkRlc2NyaXB0aW9uLFxuICBSdWxlRmFjdG9yeSxcbiAgU2NoZW1hdGljRGVzY3JpcHRpb24sXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHN0YXRTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRmlsZVN5c3RlbUNvbGxlY3Rpb25EZXNjcmlwdGlvbiwgRmlsZVN5c3RlbVNjaGVtYXRpY0Rlc2NyaXB0aW9uIH0gZnJvbSAnLi9kZXNjcmlwdGlvbic7XG5pbXBvcnQgeyBFeHBvcnRTdHJpbmdSZWYgfSBmcm9tICcuL2V4cG9ydC1yZWYnO1xuaW1wb3J0IHsgRmlsZVN5c3RlbUVuZ2luZUhvc3RCYXNlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS1lbmdpbmUtaG9zdC1iYXNlJztcbmltcG9ydCB7IHJlYWRKc29uRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0tdXRpbGl0eSc7XG5cblxuLyoqXG4gKiBVc2VkIHRvIHNpbXBsaWZ5IHR5cGluZ3MuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIHR5cGUgRmlsZVN5c3RlbUNvbGxlY3Rpb25EZXNjXG4gID0gQ29sbGVjdGlvbkRlc2NyaXB0aW9uPEZpbGVTeXN0ZW1Db2xsZWN0aW9uRGVzY3JpcHRpb24+O1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBGaWxlU3lzdGVtU2NoZW1hdGljRGVzY1xuICA9IFNjaGVtYXRpY0Rlc2NyaXB0aW9uPEZpbGVTeXN0ZW1Db2xsZWN0aW9uRGVzY3JpcHRpb24sIEZpbGVTeXN0ZW1TY2hlbWF0aWNEZXNjcmlwdGlvbj47XG5cblxuLyoqXG4gKiBBIHNpbXBsZSBFbmdpbmVIb3N0IHRoYXQgdXNlcyBhIHJlZ2lzdHJ5IG9mIHtuYW1lID0+IHBhdGh9IHRvIGZpbmQgY29sbGVjdGlvbnMuIFRoaXMgY2FuIGJlXG4gKiB1c2VmdWwgZm9yIHRvb2xpbmcgdGhhdCB3YW50IHRvIGxvYWQgZ2VuZXJpYyBjb2xsZWN0aW9ucyBmcm9tIHJhbmRvbSBwbGFjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWdpc3RyeUVuZ2luZUhvc3QgZXh0ZW5kcyBGaWxlU3lzdGVtRW5naW5lSG9zdEJhc2Uge1xuICBwcm90ZWN0ZWQgX3JlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICByZWdpc3RlclBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgLy8gUmVhZCB0aGUgY29sbGVjdGlvbiBmcm9tIHRoZSBwYXRoLlxuXG4gICAgaWYgKGV4aXN0c1N5bmMocGF0aCkgJiYgc3RhdFN5bmMocGF0aCkuaXNGaWxlKCkpIHtcbiAgICAgIC8vIEFsbG93IHBhdGggdG8gYmUgZnVsbHkgcXVhbGlmaWVkIHRvIGEgSlNPTiBmaWxlLlxuICAgIH0gZWxzZSBpZiAoZXhpc3RzU3luYyhqb2luKHBhdGgsICdjb2xsZWN0aW9uLmpzb24nKSkgJiYgc3RhdFN5bmMocGF0aCkuaXNGaWxlKCkpIHtcbiAgICAgIC8vIEFsbG93IHBhdGggdG8gcG9pbnQgdG8gYSBkaXJlY3RvcnkgY29udGFpbmluZyBhIGBjb2xsZWN0aW9uLmpzb25gLlxuICAgICAgcGF0aCA9IGpvaW4ocGF0aCwgJ2NvbGxlY3Rpb24uanNvbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF0aDogXCIke3BhdGh9XCIuYCk7XG4gICAgfVxuXG4gICAgY29uc3QganNvbjogRmlsZVN5c3RlbUNvbGxlY3Rpb25EZXNjID0gcmVhZEpzb25GaWxlKHBhdGgpIGFzIEZpbGVTeXN0ZW1Db2xsZWN0aW9uRGVzYztcbiAgICBpZiAoIWpzb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYXRoIGZvciBjb2xsZWN0aW9uOiBcIiR7cGF0aH1cIi5gKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBuYW1lIGlzIG5vdCBpbiB0aGUgcmVnaXN0cnkgYWxyZWFkeSAoYW5kIHRoYXQgdGhlIHJlZ2lzdHJ5IGRvZXMgbm90XG4gICAgLy8gY29udGFpbiB0aGlzIHBhdGggdW5kZXIgYW5vdGhlciBuYW1lLlxuICAgIGNvbnN0IG5hbWUgPSBqc29uLm5hbWU7XG4gICAgY29uc3QgbWF5YmVQYXRoID0gdGhpcy5fcmVnaXN0cnkuZ2V0KG5hbWUpO1xuICAgIGlmIChtYXliZVBhdGggJiYgbWF5YmVQYXRoICE9IHBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sbGVjdGlvbiBuYW1lIFwiJHtuYW1lfVwiIGFscmVhZHkgcmVnaXN0ZXJlZC5gKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByZWdpc3RyeVBhdGggb2YgdGhpcy5fcmVnaXN0cnkudmFsdWVzKCkpIHtcbiAgICAgIGlmIChyZWdpc3RyeVBhdGggPT0gcGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbGxlY3Rpb24gcGF0aCBcIiR7cGF0aH1cIiBhbHJlYWR5IHJlZ2lzdGVyZWQgdW5kZXIgYW5vdGhlciBuYW1lLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3JlZ2lzdHJ5LnNldChuYW1lLCBwYXRoKTtcbiAgfVxuXG4gIHJlbW92ZVBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBwXSBvZiB0aGlzLl9yZWdpc3RyeS5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChwID09IHBhdGgpIHtcbiAgICAgICAgdGhpcy5fcmVnaXN0cnkuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yZWdpc3RyeS5kZWxldGUobmFtZSk7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBfcmVzb2x2ZUNvbGxlY3Rpb25QYXRoKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IG1heWJlUGF0aCA9IHRoaXMuX3JlZ2lzdHJ5LmdldChuYW1lKTtcblxuICAgIHJldHVybiBtYXliZVBhdGggfHwgbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfcmVzb2x2ZVJlZmVyZW5jZVN0cmluZyhyZWZTdHJpbmc6IHN0cmluZywgcGFyZW50UGF0aDogc3RyaW5nKSB7XG4gICAgLy8gVXNlIHRoZSBzYW1lIGtpbmQgb2YgZXhwb3J0IHN0cmluZ3MgYXMgTm9kZU1vZHVsZS5cbiAgICBjb25zdCByZWYgPSBuZXcgRXhwb3J0U3RyaW5nUmVmPFJ1bGVGYWN0b3J5PHt9Pj4ocmVmU3RyaW5nLCBwYXJlbnRQYXRoKTtcbiAgICBpZiAoIXJlZi5yZWYpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7IHJlZjogcmVmLnJlZiwgcGF0aDogcmVmLm1vZHVsZSB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIF90cmFuc2Zvcm1Db2xsZWN0aW9uRGVzY3JpcHRpb24oX25hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogUGFydGlhbDxGaWxlU3lzdGVtQ29sbGVjdGlvbkRlc2M+KSB7XG4gICAgaWYgKCFkZXNjLm5hbWUgfHwgIWRlc2MucGF0aCB8fCAhZGVzYy5zY2hlbWF0aWNzIHx8ICFkZXNjLnZlcnNpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRlc2Muc2NoZW1hdGljcyAhPSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2MgYXMgRmlsZVN5c3RlbUNvbGxlY3Rpb25EZXNjO1xuICB9XG5cbiAgcHJvdGVjdGVkIF90cmFuc2Zvcm1TY2hlbWF0aWNEZXNjcmlwdGlvbihfbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb2xsZWN0aW9uOiBGaWxlU3lzdGVtQ29sbGVjdGlvbkRlc2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogUGFydGlhbDxGaWxlU3lzdGVtU2NoZW1hdGljRGVzYz4pIHtcbiAgICBpZiAoIWRlc2MuZmFjdG9yeUZuIHx8ICFkZXNjLnBhdGggfHwgIWRlc2MuZGVzY3JpcHRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBkZXNjIGFzIEZpbGVTeXN0ZW1TY2hlbWF0aWNEZXNjO1xuICB9XG59XG5cbiJdfQ==