@angular-devkit/schematics 0.0.24 → 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.
package/bin/schematics.js CHANGED
@@ -2,9 +2,9 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const core_1 = require("@angular-devkit/core");
5
+ const node_1 = require("@angular-devkit/core/node");
5
6
  const schematics_1 = require("@angular-devkit/schematics");
6
7
  const tools_1 = require("@angular-devkit/schematics/tools");
7
- const json_schema_1 = require("@ngtools/json-schema");
8
8
  const minimist = require("minimist");
9
9
  const Observable_1 = require("rxjs/Observable");
10
10
  require("rxjs/add/operator/ignoreElements");
@@ -12,21 +12,25 @@ require("rxjs/add/operator/ignoreElements");
12
12
  * Show usage of the CLI tool, and exit the process.
13
13
  */
14
14
  function usage(exitCode = 0) {
15
- logger.info(`
15
+ logger.info(core_1.tags.stripIndent `
16
16
  schematics [CollectionName:]SchematicName [options, ...]
17
17
 
18
18
  By default, if the collection name is not specified, use the internal collection provided
19
19
  by the Schematics CLI.
20
20
 
21
21
  Options:
22
+ --debug Debug mode. This is true by default if the collection is a relative
23
+ path (in that case, turn off with --debug=false).
22
24
  --dry-run Do not output anything, but instead just show what actions would be
23
- performed.
25
+ performed. Default to true if debug is also true.
24
26
  --force Force overwriting files that would otherwise be an error.
25
27
  --list-schematics List all schematics from the collection, by name.
28
+ --verbose Show more information.
29
+
26
30
  --help Show this message.
27
31
 
28
32
  Any additional option is passed to the Schematics depending on
29
- `.replace(/^\s\s\s\s/g, '')); // To remove the indentation.
33
+ `);
30
34
  process.exit(exitCode);
31
35
  throw 0; // The node typing sometimes don't have a never type for process.exit().
32
36
  }
@@ -59,28 +63,39 @@ function parseSchematicName(str) {
59
63
  return { collection, schematic };
60
64
  }
61
65
  /** Parse the command line. */
66
+ const booleanArgs = ['debug', 'dry-run', 'force', 'help', 'list-schematics', 'verbose'];
62
67
  const argv = minimist(process.argv.slice(2), {
63
- boolean: ['dry-run', 'force', 'help', 'list-schematics', 'verbose'],
68
+ boolean: booleanArgs,
69
+ default: {
70
+ 'debug': null,
71
+ 'dry-run': null,
72
+ },
73
+ '--': true,
64
74
  });
65
75
  /** Create the DevKit Logger used through the CLI. */
66
- const logger = core_1.createLogger(argv['verbose']);
76
+ const logger = node_1.createConsoleLogger(argv['verbose']);
67
77
  if (argv.help) {
68
78
  usage();
69
79
  }
70
80
  /** Get the collection an schematic name from the first argument. */
71
81
  const { collection: collectionName, schematic: schematicName, } = parseSchematicName(argv._.shift() || null);
82
+ const isLocalCollection = collectionName.startsWith('.') || collectionName.startsWith('/');
72
83
  /**
73
84
  * Create the SchematicEngine, which is used by the Schematic library as callbacks to load a
74
85
  * Collection or a Schematic.
75
86
  */
76
87
  const engineHost = new tools_1.NodeModulesEngineHost();
77
88
  const engine = new schematics_1.SchematicEngine(engineHost);
89
+ const schemaRegistry = new core_1.schema.JsonSchemaRegistry();
78
90
  // Add support for schemaJson.
79
91
  engineHost.registerOptionsTransform((schematic, options) => {
80
92
  if (schematic.schema && schematic.schemaJson) {
81
- const SchemaMetaClass = json_schema_1.SchemaClassFactory(schematic.schemaJson);
82
- const schemaClass = new SchemaMetaClass(options);
83
- return schemaClass.$$root();
93
+ const schemaJson = schematic.schemaJson;
94
+ const ref = schemaJson.$id || ('/' + schematic.collection.name + '/' + schematic.name);
95
+ schemaRegistry.addSchema(ref, schemaJson);
96
+ const serializer = new core_1.schema.serializers.JavascriptSerializer();
97
+ const fn = serializer.serialize(ref, schemaRegistry);
98
+ return fn(options);
84
99
  }
85
100
  return options;
86
101
  });
@@ -103,8 +118,9 @@ if (argv['list-schematics']) {
103
118
  /** Create the schematic from the collection. */
104
119
  const schematic = collection.createSchematic(schematicName);
105
120
  /** Gather the arguments for later use. */
121
+ const debug = argv.debug === null ? isLocalCollection : argv.debug;
122
+ const dryRun = argv['dry-run'] === null ? debug : argv['dry-run'];
106
123
  const force = argv['force'];
107
- const dryRun = argv['dry-run'];
108
124
  /** This host is the original Tree created from the current directory. */
109
125
  const host = Observable_1.Observable.of(new schematics_1.FileSystemTree(new tools_1.FileSystemHost(process.cwd())));
110
126
  // We need two sinks if we want to output what will happen, and actually do the work.
@@ -125,19 +141,39 @@ dryRunSink.reporter.subscribe((event) => {
125
141
  error = true;
126
142
  break;
127
143
  case 'update':
128
- loggingQueue.push(`UPDATE ${event.path} (${event.content.length} bytes)`);
144
+ loggingQueue.push(core_1.tags.oneLine `
145
+ ${core_1.terminal.white('UPDATE')} ${event.path} (${event.content.length} bytes)
146
+ `);
129
147
  break;
130
148
  case 'create':
131
- loggingQueue.push(`CREATE ${event.path} (${event.content.length} bytes)`);
149
+ loggingQueue.push(core_1.tags.oneLine `
150
+ ${core_1.terminal.green('CREATE')} ${event.path} (${event.content.length} bytes)
151
+ `);
132
152
  break;
133
153
  case 'delete':
134
- loggingQueue.push(`DELETE ${event.path}`);
154
+ loggingQueue.push(`${core_1.terminal.yellow('DELETE')} ${event.path}`);
135
155
  break;
136
156
  case 'rename':
137
- loggingQueue.push(`RENAME ${event.path} => ${event.to}`);
157
+ loggingQueue.push(`${core_1.terminal.blue('RENAME')} ${event.path} => ${event.to}`);
138
158
  break;
139
159
  }
140
160
  });
161
+ /**
162
+ * Remove every options from argv that we support in schematics itself.
163
+ */
164
+ const args = Object.assign({}, argv);
165
+ delete args['--'];
166
+ for (const key of booleanArgs) {
167
+ delete args[key];
168
+ }
169
+ /**
170
+ * Add options from `--` to args.
171
+ */
172
+ const argv2 = minimist(argv['--']);
173
+ for (const key of Object.keys(argv2)) {
174
+ args[key] = argv2[key];
175
+ }
176
+ delete args._;
141
177
  /**
142
178
  * The main path. Call the schematic with the host. This creates a new Context for the schematic
143
179
  * to run in, then call the schematic rule using the input Tree. This returns a new Tree as if
@@ -150,7 +186,7 @@ dryRunSink.reporter.subscribe((event) => {
150
186
  * Then we proceed to run the dryRun commit. We run this before we then commit to the filesystem
151
187
  * (if --dry-run was not passed or an error was detected by dryRun).
152
188
  */
153
- schematic.call(argv, host)
189
+ schematic.call(args, host, { debug, logger: logger.asApi() })
154
190
  .map((tree) => schematics_1.Tree.optimize(tree))
155
191
  .concatMap((tree) => {
156
192
  return dryRunSink.commit(tree).ignoreElements().concat(Observable_1.Observable.of(tree));
@@ -167,8 +203,17 @@ schematic.call(argv, host)
167
203
  })
168
204
  .subscribe({
169
205
  error(err) {
170
- logger.fatal(err.toString());
206
+ // Add extra processing to output better error messages.
207
+ if (err instanceof core_1.schema.javascript.RequiredValueMissingException) {
208
+ logger.fatal('Missing argument on the command line: ' + err.path.split('/').pop());
209
+ }
210
+ else if (err instanceof core_1.schema.javascript.InvalidPropertyNameException) {
211
+ logger.fatal('A non-supported argument was passed: ' + err.path.split('/').pop());
212
+ }
213
+ else {
214
+ logger.fatal(err.message);
215
+ }
171
216
  process.exit(1);
172
217
  },
173
218
  });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hdGljcy5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaGFuc2wvU291cmNlcy9kZXZraXQvIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9zY2hlbWF0aWNzL2Jpbi9zY2hlbWF0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLCtDQUFvRDtBQUNwRCwyREFPb0M7QUFDcEMsNERBSTBDO0FBQzFDLHNEQUEwRDtBQUMxRCxxQ0FBcUM7QUFDckMsZ0RBQTZDO0FBQzdDLDRDQUEwQztBQUcxQzs7R0FFRztBQUNILGVBQWUsUUFBUSxHQUFHLENBQUM7SUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7R0FjWCxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFFLDZCQUE2QjtJQUU1RCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUUsd0VBQXdFO0FBQ3BGLENBQUM7QUFHRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsNEJBQTRCLEdBQWtCO0lBQzVDLElBQUksVUFBVSxHQUFHLHFCQUFxQixDQUFDO0lBRXZDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFJLFNBQVMsR0FBVyxHQUFhLENBQUM7SUFDdEMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbEQsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxD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QUFDO0tBQ0QsU0FBUyxDQUFDO0lBQ1QsS0FBSyxDQUFDLEdBQVU7UUFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7XG4gIERyeVJ1bkV2ZW50LFxuICBEcnlSdW5TaW5rLFxuICBGaWxlU3lzdGVtU2luayxcbiAgRmlsZVN5c3RlbVRyZWUsXG4gIFNjaGVtYXRpY0VuZ2luZSxcbiAgVHJlZSxcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtcbiAgRmlsZVN5c3RlbUhvc3QsXG4gIEZpbGVTeXN0ZW1TY2hlbWF0aWNEZXNjLFxuICBOb2RlTW9kdWxlc0VuZ2luZUhvc3QsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzL3Rvb2xzJztcbmltcG9ydCB7IFNjaGVtYUNsYXNzRmFjdG9yeSB9IGZyb20gJ0BuZ3Rvb2xzL2pzb24tc2NoZW1hJztcbmltcG9ydCAqIGFzIG1pbmltaXN0IGZyb20gJ21pbmltaXN0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9pZ25vcmVFbGVtZW50cyc7XG5cblxuLyoqXG4gKiBTaG93IHVzYWdlIG9mIHRoZSBDTEkgdG9vbCwgYW5kIGV4aXQgdGhlIHByb2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIHVzYWdlKGV4aXRDb2RlID0gMCk6IG5ldmVyIHtcbiAgbG9nZ2VyLmluZm8oYFxuICAgIHNjaGVtYXRpY3MgW0NvbGxlY3Rpb25OYW1lOl1TY2hlbWF0aWNOYW1lIFtvcHRpb25zLCAuLi5dXG5cbiAgICBCeSBkZWZhdWx0LCBpZiB0aGUgY29sbGVjdGlvbiBuYW1lIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgaW50ZXJuYWwgY29sbGVjdGlvbiBwcm92aWRlZFxuICAgIGJ5IHRoZSBTY2hlbWF0aWNzIENMSS5cblxuICAgIE9wdGlvbnM6XG4gICAgICAgIC0tZHJ5LXJ1biAgICAgICAgICAgRG8gbm90IG91dHB1dCBhbnl0aGluZywgYnV0IGluc3RlYWQganVzdCBzaG93IHdoYXQgYWN0aW9ucyB3b3VsZCBiZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1lZC5cbiAgICAgICAgLS1mb3JjZSAgICAgICAgICAgICBGb3JjZSBvdmVyd3JpdGluZyBmaWxlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBhbiBlcnJvci5cbiAgICAgICAgLS1saXN0LXNjaGVtYXRpY3MgICBMaXN0IGFsbCBzY2hlbWF0aWNzIGZyb20gdGhlIGNvbGxlY3Rpb24sIGJ5IG5hbWUuXG4gICAgICAgIC0taGVscCAgICAgICAgICAgICAgU2hvdyB0aGlzIG1lc3NhZ2UuXG5cbiAgICBBbnkgYWRkaXRpb25hbCBvcHRpb24gaXMgcGFzc2VkIHRvIHRoZSBTY2hlbWF0aWNzIGRlcGVuZGluZyBvblxuICBgLnJlcGxhY2UoL15cXHNcXHNcXHNcXHMvZywgJycpKTsgIC8vIFRvIHJlbW92ZSB0aGUgaW5kZW50YXRpb24uXG5cbiAgcHJvY2Vzcy5leGl0KGV4aXRDb2RlKTtcbiAgdGhyb3cgMDsgIC8vIFRoZSBub2RlIHR5cGluZyBzb21ldGltZXMgZG9uJ3QgaGF2ZSBhIG5ldmVyIHR5cGUgZm9yIHByb2Nlc3MuZXhpdCgpLlxufVxuXG5cbi8qKlxuICogUGFyc2UgdGhlIG5hbWUgb2Ygc2NoZW1hdGljIHBhc3NlZCBpbiBhcmd1bWVudCwgYW5kIHJldHVybiBhIHtjb2xsZWN0aW9uLCBzY2hlbWF0aWN9IG5hbWVkXG4gKiB0dXBsZS4gVGhlIHVzZXIgY2FuIHBhc3MgaW4gYGNvbGxlY3Rpb24tbmFtZTpzY2hlbWF0aWMtbmFtZWAsIGFuZCB0aGlzIGZ1bmN0aW9uIHdpbGwgZWl0aGVyXG4gKiByZXR1cm4gYHtjb2xsZWN0aW9uOiAnY29sbGVjdGlvbi1uYW1lJywgc2NoZW1hdGljOiAnc2NoZW1hdGljLW5hbWUnfWAsIG9yIGl0IHdpbGwgZXJyb3Igb3V0XG4gKiBhbmQgc2hvdyB1c2FnZS5cbiAqXG4gKiBJbiB0aGUgY2FzZSB3aGVyZSBhIGNvbGxlY3Rpb24gbmFtZSBpc24ndCBwYXJ0IG9mIHRoZSBhcmd1bWVudCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoaXNcbiAqIHBhY2thZ2UgKEBzY2hlbWF0aWNzL2FuZ3VsYXIpIGFzIHRoZSBjb2xsZWN0aW9uLlxuICpcbiAqIFRoaXMgbG9naWMgaXMgZW50aXJlbHkgdXAgdG8gdGhlIHRvb2xpbmcuXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgYXJndW1lbnQgdG8gcGFyc2UuXG4gKiBAcmV0dXJuIHt7Y29sbGVjdGlvbjogc3RyaW5nLCBzY2hlbWF0aWM6IChzdHJpbmcpfX1cbiAqL1xuZnVuY3Rpb24gcGFyc2VTY2hlbWF0aWNOYW1lKHN0cjogc3RyaW5nIHwgbnVsbCk6IHsgY29sbGVjdGlvbjogc3RyaW5nLCBzY2hlbWF0aWM6IHN0cmluZyB9IHtcbiAgbGV0IGNvbGxlY3Rpb24gPSAnQHNjaGVtYXRpY3MvYW5ndWxhcic7XG5cbiAgaWYgKCFzdHIgfHwgc3RyID09PSBudWxsKSB7XG4gICAgdXNhZ2UoMSk7XG4gIH1cblxuICBsZXQgc2NoZW1hdGljOiBzdHJpbmcgPSBzdHIgYXMgc3RyaW5nO1xuICBpZiAoc2NoZW1hdGljLmluZGV4T2YoJzonKSAhPSAtMSkge1xuICAgIFtjb2xsZWN0aW9uLCBzY2hlbWF0aWNdID0gc2NoZW1hdGljLnNwbGl0KCc6JywgMik7XG5cbiAgICBpZiAoIXNjaGVtYXRpYykge1xuICAgICAgdXNhZ2UoMik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgY29sbGVjdGlvbiwgc2NoZW1hdGljIH07XG59XG5cblxuLyoqIFBhcnNlIHRoZSBjb21tYW5kIGxpbmUuICovXG5jb25zdCBhcmd2ID0gbWluaW1pc3QocHJvY2Vzcy5hcmd2LnNsaWNlKDIpLCB7XG4gIGJvb2xlYW46IFsgJ2RyeS1ydW4nLCAnZm9yY2UnLCAnaGVscCcsICdsaXN0LXNjaGVtYXRpY3MnLCAndmVyYm9zZScgXSxcbn0pO1xuLyoqIENyZWF0ZSB0aGUgRGV2S2l0IExvZ2dlciB1c2VkIHRocm91Z2ggdGhlIENMSS4gKi9cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihhcmd2Wyd2ZXJib3NlJ10pO1xuXG5pZiAoYXJndi5oZWxwKSB7XG4gIHVzYWdlKCk7XG59XG5cbi8qKiBHZXQgdGhlIGNvbGxlY3Rpb24gYW4gc2NoZW1hdGljIG5hbWUgZnJvbSB0aGUgZmlyc3QgYXJndW1lbnQuICovXG5jb25zdCB7XG4gIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25OYW1lLFxuICBzY2hlbWF0aWM6IHNjaGVtYXRpY05hbWUsXG59ID0gcGFyc2VTY2hlbWF0aWNOYW1lKGFyZ3YuXy5zaGlmdCgpIHx8IG51bGwpO1xuXG5cbi8qKlxuICogQ3JlYXRlIHRoZSBTY2hlbWF0aWNFbmdpbmUsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIFNjaGVtYXRpYyBsaWJyYXJ5IGFzIGNhbGxiYWNrcyB0byBsb2FkIGFcbiAqIENvbGxlY3Rpb24gb3IgYSBTY2hlbWF0aWMuXG4gKi9cbmNvbnN0IGVuZ2luZUhvc3QgPSBuZXcgTm9kZU1vZHVsZXNFbmdpbmVIb3N0KCk7XG5jb25zdCBlbmdpbmUgPSBuZXcgU2NoZW1hdGljRW5naW5lKGVuZ2luZUhvc3QpO1xuXG4vLyBBZGQgc3VwcG9ydCBmb3Igc2NoZW1hSnNvbi5cbmVuZ2luZUhvc3QucmVnaXN0ZXJPcHRpb25zVHJhbnNmb3JtKChzY2hlbWF0aWM6IEZpbGVTeXN0ZW1TY2hlbWF0aWNEZXNjLCBvcHRpb25zOiB7fSkgPT4ge1xuICBpZiAoc2NoZW1hdGljLnNjaGVtYSAmJiBzY2hlbWF0aWMuc2NoZW1hSnNvbikge1xuICAgIGNvbnN0IFNjaGVtYU1ldGFDbGFzcyA9IFNjaGVtYUNsYXNzRmFjdG9yeTx7fT4oc2NoZW1hdGljLnNjaGVtYUpzb24pO1xuICAgIGNvbnN0IHNjaGVtYUNsYXNzID0gbmV3IFNjaGVtYU1ldGFDbGFzcyhvcHRpb25zKTtcblxuICAgIHJldHVybiBzY2hlbWFDbGFzcy4kJHJvb3QoKTtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zO1xufSk7XG5cblxuLyoqXG4gKiBUaGUgY29sbGVjdGlvbiB0byBiZSB1c2VkLlxuICogQHR5cGUge0NvbGxlY3Rpb258YW55fVxuICovXG5jb25zdCBjb2xsZWN0aW9uID0gZW5naW5lLmNyZWF0ZUNvbGxlY3Rpb24oY29sbGVjdGlvbk5hbWUpO1xuaWYgKGNvbGxlY3Rpb24gPT09IG51bGwpIHtcbiAgbG9nZ2VyLmZhdGFsKGBJbnZhbGlkIGNvbGxlY3Rpb24gbmFtZTogXCIke2NvbGxlY3Rpb25OYW1lfVwiLmApO1xuICBwcm9jZXNzLmV4aXQoMyk7XG4gIHRocm93IDM7ICAvLyBUeXBlU2NyaXB0IGRvZXNuJ3Qga25vdyB0aGF0IHByb2Nlc3MuZXhpdCgpIG5ldmVyIHJldHVybnMuXG59XG5cblxuLyoqIElmIHRoZSB1c2VyIHdhbnRzIHRvIGxpc3Qgc2NoZW1hdGljcywgd2Ugc2ltcGx5IHNob3cgYWxsIHRoZSBzY2hlbWF0aWMgbmFtZXMuICovXG5pZiAoYXJndlsnbGlzdC1zY2hlbWF0aWNzJ10pIHtcbiAgbG9nZ2VyLmluZm8oZW5naW5lSG9zdC5saXN0U2NoZW1hdGljcyhjb2xsZWN0aW9uKS5qb2luKCdcXG4nKSk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbiAgdGhyb3cgMDsgIC8vIFR5cGVTY3JpcHQgZG9lc24ndCBrbm93IHRoYXQgcHJvY2Vzcy5leGl0KCkgbmV2ZXIgcmV0dXJucy5cbn1cblxuXG4vKiogQ3JlYXRlIHRoZSBzY2hlbWF0aWMgZnJvbSB0aGUgY29sbGVjdGlvbi4gKi9cbmNvbnN0IHNjaGVtYXRpYyA9IGNvbGxlY3Rpb24uY3JlYXRlU2NoZW1hdGljKHNjaGVtYXRpY05hbWUpO1xuXG4vKiogR2F0aGVyIHRoZSBhcmd1bWVudHMgZm9yIGxhdGVyIHVzZS4gKi9cbmNvbnN0IGZvcmNlID0gYXJndlsnZm9yY2UnXTtcbmNvbnN0IGRyeVJ1biA9IGFyZ3ZbJ2RyeS1ydW4nXTtcblxuLyoqIFRoaXMgaG9zdCBpcyB0aGUgb3JpZ2luYWwgVHJlZSBjcmVhdGVkIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAqL1xuY29uc3QgaG9zdCA9IE9ic2VydmFibGUub2YobmV3IEZpbGVTeXN0ZW1UcmVlKG5ldyBGaWxlU3lzdGVtSG9zdChwcm9jZXNzLmN3ZCgpKSkpO1xuXG4vLyBXZSBuZWVkIHR3byBzaW5rcyBpZiB3ZSB3YW50IHRvIG91dHB1dCB3aGF0IHdpbGwgaGFwcGVuLCBhbmQgYWN0dWFsbHkgZG8gdGhlIHdvcmsuXG4vLyBOb3RlIHRoYXQgZnNTaW5rIGlzIHRlY2huaWNhbGx5IG5vdCB1c2VkIGlmIGAtLWRyeS1ydW5gIGlzIHBhc3NlZCwgYnV0IGNyZWF0aW5nIHRoZSBTaW5rXG4vLyBkb2VzIG5vdCBoYXZlIGFueSBzaWRlIGVmZmVjdC5cbmNvbnN0IGRyeVJ1blNpbmsgPSBuZXcgRHJ5UnVuU2luayhwcm9jZXNzLmN3ZCgpLCBmb3JjZSk7XG5jb25zdCBmc1NpbmsgPSBuZXcgRmlsZVN5c3RlbVNpbmsocHJvY2Vzcy5jd2QoKSwgZm9yY2UpO1xuXG5cbi8vIFdlIGtlZXAgYSBib29sZWFuIHRvIHRlbGwgdXMgd2hldGhlciBhbiBlcnJvciB3b3VsZCBvY2N1ciBpZiB3ZSB3ZXJlIHRvIGNvbW1pdCB0byBhblxuLy8gYWN0dWFsIGZpbGVzeXN0ZW0uIEluIHRoaXMgY2FzZSB3ZSBzaW1wbHkgc2hvdyB0aGUgZHJ5LXJ1biwgYnV0IHNraXAgdGhlIGZzU2luayBjb21taXQuXG5sZXQgZXJyb3IgPSBmYWxzZTtcblxuXG5jb25zdCBsb2dnaW5nUXVldWU6IHN0cmluZ1tdID0gW107XG5cbi8vIExvZ3Mgb3V0IGRyeSBydW4gZXZlbnRzLlxuZHJ5UnVuU2luay5yZXBvcnRlci5zdWJzY3JpYmUoKGV2ZW50OiBEcnlSdW5FdmVudCkgPT4ge1xuICBzd2l0Y2ggKGV2ZW50LmtpbmQpIHtcbiAgICBjYXNlICdlcnJvcic6XG4gICAgICBjb25zdCBkZXNjID0gZXZlbnQuZGVzY3JpcHRpb24gPT0gJ2FscmVhZHlFeGlzdCcgPyAnYWxyZWFkeSBleGlzdHMnIDogJ2RvZXMgbm90IGV4aXN0Lic7XG4gICAgICBsb2dnZXIud2FybihgRVJST1IhICR7ZXZlbnQucGF0aH0gJHtkZXNjfS5gKTtcbiAgICAgIGVycm9yID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3VwZGF0ZSc6XG4gICAgICBsb2dnaW5nUXVldWUucHVzaChgVVBEQVRFICR7ZXZlbnQucGF0aH0gKCR7ZXZlbnQuY29udGVudC5sZW5ndGh9IGJ5dGVzKWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnY3JlYXRlJzpcbiAgICAgIGxvZ2dpbmdRdWV1ZS5wdXNoKGBDUkVBVEUgJHtldmVudC5wYXRofSAoJHtldmVudC5jb250ZW50Lmxlbmd0aH0gYnl0ZXMpYCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdkZWxldGUnOlxuICAgICAgbG9nZ2luZ1F1ZXVlLnB1c2goYERFTEVURSAke2V2ZW50LnBhdGh9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyZW5hbWUnOlxuICAgICAgbG9nZ2luZ1F1ZXVlLnB1c2goYFJFTkFNRSAke2V2ZW50LnBhdGh9ID0+ICR7ZXZlbnQudG99YCk7XG4gICAgICBicmVhaztcbiAgfVxufSk7XG5cblxuLyoqXG4gKiBUaGUgbWFpbiBwYXRoLiBDYWxsIHRoZSBzY2hlbWF0aWMgd2l0aCB0aGUgaG9zdC4gVGhpcyBjcmVhdGVzIGEgbmV3IENvbnRleHQgZm9yIHRoZSBzY2hlbWF0aWNcbiAqIHRvIHJ1biBpbiwgdGhlbiBjYWxsIHRoZSBzY2hlbWF0aWMgcnVsZSB1c2luZyB0aGUgaW5wdXQgVHJlZS4gVGhpcyByZXR1cm5zIGEgbmV3IFRyZWUgYXMgaWZcbiAqIHRoZSBzY2hlbWF0aWMgd2FzIGFwcGxpZWQgdG8gaXQuXG4gKlxuICogV2UgdGhlbiBvcHRpbWl6ZSB0aGlzIHRyZWUuIFRoaXMgcmVtb3ZlcyBhbnkgZHVwbGljYXRlZCBhY3Rpb25zIG9yIGFjdGlvbnMgdGhhdCB3b3VsZCByZXN1bHRcbiAqIGluIGEgbm9vcCAoZm9yIGV4YW1wbGUsIGNyZWF0aW5nIHRoZW4gZGVsZXRpbmcgYSBmaWxlKS4gVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGJ1dCB3aWxsIGdyZWF0bHlcbiAqIGltcHJvdmUgcGVyZm9ybWFuY2UgYXMgaGl0dGluZyB0aGUgZmlsZSBzeXN0ZW0gaXMgY29zdGx5LlxuICpcbiAqIFRoZW4gd2UgcHJvY2VlZCB0byBydW4gdGhlIGRyeVJ1biBjb21taXQuIFdlIHJ1biB0aGlzIGJlZm9yZSB3ZSB0aGVuIGNvbW1pdCB0byB0aGUgZmlsZXN5c3RlbVxuICogKGlmIC0tZHJ5LXJ1biB3YXMgbm90IHBhc3NlZCBvciBhbiBlcnJvciB3YXMgZGV0ZWN0ZWQgYnkgZHJ5UnVuKS5cbiAqL1xuc2NoZW1hdGljLmNhbGwoYXJndiwgaG9zdClcbiAgLm1hcCgodHJlZTogVHJlZSkgPT4gVHJlZS5vcHRpbWl6ZSh0cmVlKSlcbiAgLmNvbmNhdE1hcCgodHJlZTogVHJlZSkgPT4ge1xuICAgIHJldHVybiBkcnlSdW5TaW5rLmNvbW1pdCh0cmVlKS5pZ25vcmVFbGVtZW50cygpLmNvbmNhdChPYnNlcnZhYmxlLm9mKHRyZWUpKTtcbiAgfSlcbiAgLmNvbmNhdE1hcCgodHJlZTogVHJlZSkgPT4ge1xuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIC8vIE91dHB1dCB0aGUgbG9nZ2luZyBxdWV1ZS5cbiAgICAgIGxvZ2dpbmdRdWV1ZS5mb3JFYWNoKGxvZyA9PiBsb2dnZXIuaW5mbyhsb2cpKTtcbiAgICB9XG5cbiAgICBpZiAoZHJ5UnVuIHx8IGVycm9yKSB7XG4gICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZih0cmVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnNTaW5rLmNvbW1pdCh0cmVlKS5pZ25vcmVFbGVtZW50cygpLmNvbmNhdChPYnNlcnZhYmxlLm9mKHRyZWUpKTtcbiAgfSlcbiAgLnN1YnNjcmliZSh7XG4gICAgZXJyb3IoZXJyOiBFcnJvcikge1xuICAgICAgbG9nZ2VyLmZhdGFsKGVyci50b1N0cmluZygpKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9LFxuICB9KTtcbiJdfQ==
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hdGljcy5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaGFuc2wvU291cmNlcy9kZXZraXQvIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9zY2hlbWF0aWNzL2Jpbi9zY2hlbWF0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLCtDQUE4RDtBQUM5RCxvREFBZ0U7QUFDaEUsMkRBT29DO0FBQ3BDLDREQUkwQztBQUMxQyxxQ0FBcUM7QUFDckMsZ0RBQTZDO0FBQzdDLDRDQUEwQztBQUcxQzs7R0FFRztBQUNILGVBQWUsUUFBUSxHQUFHLENBQUM7SUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFJLENBQUMsV0FBVyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQjNCLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkIsTUFBTSxDQUFDLENBQUMsQ0FBRSx3RUFBd0U7QUFDcEYsQ0FBQztBQUdEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCw0QkFBNEIsR0FBa0I7SUFDNUMsSUFBSSxVQUFVLEdBQUcscUJBQXFCLENBQUM7SUFFdkMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELElBQUksU0FBUyxHQUFXLEdBQWEsQ0FBQztJQUN0QyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRCxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDZixLQUFLLENBQUMsQ0FB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QUFPLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHsgc2NoZW1hLCB0YWdzLCB0ZXJtaW5hbCB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZUNvbnNvbGVMb2dnZXIgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZS9ub2RlJztcbmltcG9ydCB7XG4gIERyeVJ1bkV2ZW50LFxuICBEcnlSdW5TaW5rLFxuICBGaWxlU3lzdGVtU2luayxcbiAgRmlsZVN5c3RlbVRyZWUsXG4gIFNjaGVtYXRpY0VuZ2luZSxcbiAgVHJlZSxcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtcbiAgRmlsZVN5c3RlbUhvc3QsXG4gIEZpbGVTeXN0ZW1TY2hlbWF0aWNEZXNjLFxuICBOb2RlTW9kdWxlc0VuZ2luZUhvc3QsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzL3Rvb2xzJztcbmltcG9ydCAqIGFzIG1pbmltaXN0IGZyb20gJ21pbmltaXN0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9pZ25vcmVFbGVtZW50cyc7XG5cblxuLyoqXG4gKiBTaG93IHVzYWdlIG9mIHRoZSBDTEkgdG9vbCwgYW5kIGV4aXQgdGhlIHByb2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIHVzYWdlKGV4aXRDb2RlID0gMCk6IG5ldmVyIHtcbiAgbG9nZ2VyLmluZm8odGFncy5zdHJpcEluZGVudGBcbiAgICBzY2hlbWF0aWNzIFtDb2xsZWN0aW9uTmFtZTpdU2NoZW1hdGljTmFtZSBbb3B0aW9ucywgLi4uXVxuXG4gICAgQnkgZGVmYXVsdCwgaWYgdGhlIGNvbGxlY3Rpb24gbmFtZSBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGludGVybmFsIGNvbGxlY3Rpb24gcHJvdmlkZWRcbiAgICBieSB0aGUgU2NoZW1hdGljcyBDTEkuXG5cbiAgICBPcHRpb25zOlxuICAgICAgICAtLWRlYnVnICAgICAgICAgICAgIERlYnVnIG1vZGUuIFRoaXMgaXMgdHJ1ZSBieSBkZWZhdWx0IGlmIHRoZSBjb2xsZWN0aW9uIGlzIGEgcmVsYXRpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIChpbiB0aGF0IGNhc2UsIHR1cm4gb2ZmIHdpdGggLS1kZWJ1Zz1mYWxzZSkuXG4gICAgICAgIC0tZHJ5LXJ1biAgICAgICAgICAgRG8gbm90IG91dHB1dCBhbnl0aGluZywgYnV0IGluc3RlYWQganVzdCBzaG93IHdoYXQgYWN0aW9ucyB3b3VsZCBiZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1lZC4gRGVmYXVsdCB0byB0cnVlIGlmIGRlYnVnIGlzIGFsc28gdHJ1ZS5cbiAgICAgICAgLS1mb3JjZSAgICAgICAgICAgICBGb3JjZSBvdmVyd3JpdGluZyBmaWxlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBhbiBlcnJvci5cbiAgICAgICAgLS1saXN0LXNjaGVtYXRpY3MgICBMaXN0IGFsbCBzY2hlbWF0aWNzIGZyb20gdGhlIGNvbGxlY3Rpb24sIGJ5IG5hbWUuXG4gICAgICAgIC0tdmVyYm9zZSAgICAgICAgICAgU2hvdyBtb3JlIGluZm9ybWF0aW9uLlxuXG4gICAgICAgIC0taGVscCAgICAgICAgICAgICAgU2hvdyB0aGlzIG1lc3NhZ2UuXG5cbiAgICBBbnkgYWRkaXRpb25hbCBvcHRpb24gaXMgcGFzc2VkIHRvIHRoZSBTY2hlbWF0aWNzIGRlcGVuZGluZyBvblxuICBgKTtcblxuICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICB0aHJvdyAwOyAgLy8gVGhlIG5vZGUgdHlwaW5nIHNvbWV0aW1lcyBkb24ndCBoYXZlIGEgbmV2ZXIgdHlwZSBmb3IgcHJvY2Vzcy5leGl0KCkuXG59XG5cblxuLyoqXG4gKiBQYXJzZSB0aGUgbmFtZSBvZiBzY2hlbWF0aWMgcGFzc2VkIGluIGFyZ3VtZW50LCBhbmQgcmV0dXJuIGEge2NvbGxlY3Rpb24sIHNjaGVtYXRpY30gbmFtZWRcbiAqIHR1cGxlLiBUaGUgdXNlciBjYW4gcGFzcyBpbiBgY29sbGVjdGlvbi1uYW1lOnNjaGVtYXRpYy1uYW1lYCwgYW5kIHRoaXMgZnVuY3Rpb24gd2lsbCBlaXRoZXJcbiAqIHJldHVybiBge2NvbGxlY3Rpb246ICdjb2xsZWN0aW9uLW5hbWUnLCBzY2hlbWF0aWM6ICdzY2hlbWF0aWMtbmFtZSd9YCwgb3IgaXQgd2lsbCBlcnJvciBvdXRcbiAqIGFuZCBzaG93IHVzYWdlLlxuICpcbiAqIEluIHRoZSBjYXNlIHdoZXJlIGEgY29sbGVjdGlvbiBuYW1lIGlzbid0IHBhcnQgb2YgdGhlIGFyZ3VtZW50LCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhpc1xuICogcGFja2FnZSAoQHNjaGVtYXRpY3MvYW5ndWxhcikgYXMgdGhlIGNvbGxlY3Rpb24uXG4gKlxuICogVGhpcyBsb2dpYyBpcyBlbnRpcmVseSB1cCB0byB0aGUgdG9vbGluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSBhcmd1bWVudCB0byBwYXJzZS5cbiAqIEByZXR1cm4ge3tjb2xsZWN0aW9uOiBzdHJpbmcsIHNjaGVtYXRpYzogKHN0cmluZyl9fVxuICovXG5mdW5jdGlvbiBwYXJzZVNjaGVtYXRpY05hbWUoc3RyOiBzdHJpbmcgfCBudWxsKTogeyBjb2xsZWN0aW9uOiBzdHJpbmcsIHNjaGVtYXRpYzogc3RyaW5nIH0ge1xuICBsZXQgY29sbGVjdGlvbiA9ICdAc2NoZW1hdGljcy9hbmd1bGFyJztcblxuICBpZiAoIXN0ciB8fCBzdHIgPT09IG51bGwpIHtcbiAgICB1c2FnZSgxKTtcbiAgfVxuXG4gIGxldCBzY2hlbWF0aWM6IHN0cmluZyA9IHN0ciBhcyBzdHJpbmc7XG4gIGlmIChzY2hlbWF0aWMuaW5kZXhPZignOicpICE9IC0xKSB7XG4gICAgW2NvbGxlY3Rpb24sIHNjaGVtYXRpY10gPSBzY2hlbWF0aWMuc3BsaXQoJzonLCAyKTtcblxuICAgIGlmICghc2NoZW1hdGljKSB7XG4gICAgICB1c2FnZSgyKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBjb2xsZWN0aW9uLCBzY2hlbWF0aWMgfTtcbn1cblxuXG4vKiogUGFyc2UgdGhlIGNvbW1hbmQgbGluZS4gKi9cbmNvbnN0IGJvb2xlYW5BcmdzID0gWyAnZGVidWcnLCAnZHJ5LXJ1bicsICdmb3JjZScsICdoZWxwJywgJ2xpc3Qtc2NoZW1hdGljcycsICd2ZXJib3NlJyBdO1xuY29uc3QgYXJndiA9IG1pbmltaXN0KHByb2Nlc3MuYXJndi5zbGljZSgyKSwge1xuICBib29sZWFuOiBib29sZWFuQXJncyxcbiAgZGVmYXVsdDoge1xuICAgICdkZWJ1Zyc6IG51bGwsXG4gICAgJ2RyeS1ydW4nOiBudWxsLFxuICB9LFxuICAnLS0nOiB0cnVlLFxufSk7XG5cbi8qKiBDcmVhdGUgdGhlIERldktpdCBMb2dnZXIgdXNlZCB0aHJvdWdoIHRoZSBDTEkuICovXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVDb25zb2xlTG9nZ2VyKGFyZ3ZbJ3ZlcmJvc2UnXSk7XG5cbmlmIChhcmd2LmhlbHApIHtcbiAgdXNhZ2UoKTtcbn1cblxuLyoqIEdldCB0aGUgY29sbGVjdGlvbiBhbiBzY2hlbWF0aWMgbmFtZSBmcm9tIHRoZSBmaXJzdCBhcmd1bWVudC4gKi9cbmNvbnN0IHtcbiAgY29sbGVjdGlvbjogY29sbGVjdGlvbk5hbWUsXG4gIHNjaGVtYXRpYzogc2NoZW1hdGljTmFtZSxcbn0gPSBwYXJzZVNjaGVtYXRpY05hbWUoYXJndi5fLnNoaWZ0KCkgfHwgbnVsbCk7XG5jb25zdCBpc0xvY2FsQ29sbGVjdGlvbiA9IGNvbGxlY3Rpb25OYW1lLnN0YXJ0c1dpdGgoJy4nKSB8fCBjb2xsZWN0aW9uTmFtZS5zdGFydHNXaXRoKCcvJyk7XG5cblxuLyoqXG4gKiBDcmVhdGUgdGhlIFNjaGVtYXRpY0VuZ2luZSwgd2hpY2ggaXMgdXNlZCBieSB0aGUgU2NoZW1hdGljIGxpYnJhcnkgYXMgY2FsbGJhY2tzIHRvIGxvYWQgYVxuICogQ29sbGVjdGlvbiBvciBhIFNjaGVtYXRpYy5cbiAqL1xuY29uc3QgZW5naW5lSG9zdCA9IG5ldyBOb2RlTW9kdWxlc0VuZ2luZUhvc3QoKTtcbmNvbnN0IGVuZ2luZSA9IG5ldyBTY2hlbWF0aWNFbmdpbmUoZW5naW5lSG9zdCk7XG5cbmNvbnN0IHNjaGVtYVJlZ2lzdHJ5ID0gbmV3IHNjaGVtYS5Kc29uU2NoZW1hUmVnaXN0cnkoKTtcblxuLy8gQWRkIHN1cHBvcnQgZm9yIHNjaGVtYUpzb24uXG5lbmdpbmVIb3N0LnJlZ2lzdGVyT3B0aW9uc1RyYW5zZm9ybSgoc2NoZW1hdGljOiBGaWxlU3lzdGVtU2NoZW1hdGljRGVzYywgb3B0aW9uczoge30pID0+IHtcbiAgaWYgKHNjaGVtYXRpYy5zY2hlbWEgJiYgc2NoZW1hdGljLnNjaGVtYUpzb24pIHtcbiAgICBjb25zdCBzY2hlbWFKc29uID0gc2NoZW1hdGljLnNjaGVtYUpzb24gYXMgc2NoZW1hLkpzb25TY2hlbWFPYmplY3Q7XG4gICAgY29uc3QgcmVmID0gc2NoZW1hSnNvbi4kaWQgfHwgKCcvJyArIHNjaGVtYXRpYy5jb2xsZWN0aW9uLm5hbWUgKyAnLycgKyBzY2hlbWF0aWMubmFtZSk7XG4gICAgc2NoZW1hUmVnaXN0cnkuYWRkU2NoZW1hKHJlZiwgc2NoZW1hSnNvbik7XG4gICAgY29uc3Qgc2VyaWFsaXplciA9IG5ldyBzY2hlbWEuc2VyaWFsaXplcnMuSmF2YXNjcmlwdFNlcmlhbGl6ZXIoKTtcbiAgICBjb25zdCBmbiA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplKHJlZiwgc2NoZW1hUmVnaXN0cnkpO1xuXG4gICAgcmV0dXJuIGZuKG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIG9wdGlvbnM7XG59KTtcblxuXG4vKipcbiAqIFRoZSBjb2xsZWN0aW9uIHRvIGJlIHVzZWQuXG4gKiBAdHlwZSB7Q29sbGVjdGlvbnxhbnl9XG4gKi9cbmNvbnN0IGNvbGxlY3Rpb24gPSBlbmdpbmUuY3JlYXRlQ29sbGVjdGlvbihjb2xsZWN0aW9uTmFtZSk7XG5pZiAoY29sbGVjdGlvbiA9PT0gbnVsbCkge1xuICBsb2dnZXIuZmF0YWwoYEludmFsaWQgY29sbGVjdGlvbiBuYW1lOiBcIiR7Y29sbGVjdGlvbk5hbWV9XCIuYCk7XG4gIHByb2Nlc3MuZXhpdCgzKTtcbiAgdGhyb3cgMzsgIC8vIFR5cGVTY3JpcHQgZG9lc24ndCBrbm93IHRoYXQgcHJvY2Vzcy5leGl0KCkgbmV2ZXIgcmV0dXJucy5cbn1cblxuXG4vKiogSWYgdGhlIHVzZXIgd2FudHMgdG8gbGlzdCBzY2hlbWF0aWNzLCB3ZSBzaW1wbHkgc2hvdyBhbGwgdGhlIHNjaGVtYXRpYyBuYW1lcy4gKi9cbmlmIChhcmd2WydsaXN0LXNjaGVtYXRpY3MnXSkge1xuICBsb2dnZXIuaW5mbyhlbmdpbmVIb3N0Lmxpc3RTY2hlbWF0aWNzKGNvbGxlY3Rpb24pLmpvaW4oJ1xcbicpKTtcbiAgcHJvY2Vzcy5leGl0KDApO1xuICB0aHJvdyAwOyAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGtub3cgdGhhdCBwcm9jZXNzLmV4aXQoKSBuZXZlciByZXR1cm5zLlxufVxuXG5cbi8qKiBDcmVhdGUgdGhlIHNjaGVtYXRpYyBmcm9tIHRoZSBjb2xsZWN0aW9uLiAqL1xuY29uc3Qgc2NoZW1hdGljID0gY29sbGVjdGlvbi5jcmVhdGVTY2hlbWF0aWMoc2NoZW1hdGljTmFtZSk7XG5cbi8qKiBHYXRoZXIgdGhlIGFyZ3VtZW50cyBmb3IgbGF0ZXIgdXNlLiAqL1xuY29uc3QgZGVidWc6IGJvb2xlYW4gPSBhcmd2LmRlYnVnID09PSBudWxsID8gaXNMb2NhbENvbGxlY3Rpb24gOiBhcmd2LmRlYnVnO1xuY29uc3QgZHJ5UnVuOiBib29sZWFuID0gYXJndlsnZHJ5LXJ1biddID09PSBudWxsID8gZGVidWcgOiBhcmd2WydkcnktcnVuJ107XG5jb25zdCBmb3JjZSA9IGFyZ3ZbJ2ZvcmNlJ107XG5cbi8qKiBUaGlzIGhvc3QgaXMgdGhlIG9yaWdpbmFsIFRyZWUgY3JlYXRlZCBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gKi9cbmNvbnN0IGhvc3QgPSBPYnNlcnZhYmxlLm9mKG5ldyBGaWxlU3lzdGVtVHJlZShuZXcgRmlsZVN5c3RlbUhvc3QocHJvY2Vzcy5jd2QoKSkpKTtcblxuLy8gV2UgbmVlZCB0d28gc2lua3MgaWYgd2Ugd2FudCB0byBvdXRwdXQgd2hhdCB3aWxsIGhhcHBlbiwgYW5kIGFjdHVhbGx5IGRvIHRoZSB3b3JrLlxuLy8gTm90ZSB0aGF0IGZzU2luayBpcyB0ZWNobmljYWxseSBub3QgdXNlZCBpZiBgLS1kcnktcnVuYCBpcyBwYXNzZWQsIGJ1dCBjcmVhdGluZyB0aGUgU2lua1xuLy8gZG9lcyBub3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3QuXG5jb25zdCBkcnlSdW5TaW5rID0gbmV3IERyeVJ1blNpbmsocHJvY2Vzcy5jd2QoKSwgZm9yY2UpO1xuY29uc3QgZnNTaW5rID0gbmV3IEZpbGVTeXN0ZW1TaW5rKHByb2Nlc3MuY3dkKCksIGZvcmNlKTtcblxuXG4vLyBXZSBrZWVwIGEgYm9vbGVhbiB0byB0ZWxsIHVzIHdoZXRoZXIgYW4gZXJyb3Igd291bGQgb2NjdXIgaWYgd2Ugd2VyZSB0byBjb21taXQgdG8gYW5cbi8vIGFjdHVhbCBmaWxlc3lzdGVtLiBJbiB0aGlzIGNhc2Ugd2Ugc2ltcGx5IHNob3cgdGhlIGRyeS1ydW4sIGJ1dCBza2lwIHRoZSBmc1NpbmsgY29tbWl0LlxubGV0IGVycm9yID0gZmFsc2U7XG5cblxuY29uc3QgbG9nZ2luZ1F1ZXVlOiBzdHJpbmdbXSA9IFtdO1xuXG4vLyBMb2dzIG91dCBkcnkgcnVuIGV2ZW50cy5cbmRyeVJ1blNpbmsucmVwb3J0ZXIuc3Vic2NyaWJlKChldmVudDogRHJ5UnVuRXZlbnQpID0+IHtcbiAgc3dpdGNoIChldmVudC5raW5kKSB7XG4gICAgY2FzZSAnZXJyb3InOlxuICAgICAgY29uc3QgZGVzYyA9IGV2ZW50LmRlc2NyaXB0aW9uID09ICdhbHJlYWR5RXhpc3QnID8gJ2FscmVhZHkgZXhpc3RzJyA6ICdkb2VzIG5vdCBleGlzdC4nO1xuICAgICAgbG9nZ2VyLndhcm4oYEVSUk9SISAke2V2ZW50LnBhdGh9ICR7ZGVzY30uYCk7XG4gICAgICBlcnJvciA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1cGRhdGUnOlxuICAgICAgbG9nZ2luZ1F1ZXVlLnB1c2godGFncy5vbmVMaW5lYFxuICAgICAgICAke3Rlcm1pbmFsLndoaXRlKCdVUERBVEUnKX0gJHtldmVudC5wYXRofSAoJHtldmVudC5jb250ZW50Lmxlbmd0aH0gYnl0ZXMpXG4gICAgICBgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICBsb2dnaW5nUXVldWUucHVzaCh0YWdzLm9uZUxpbmVgXG4gICAgICAgICR7dGVybWluYWwuZ3JlZW4oJ0NSRUFURScpfSAke2V2ZW50LnBhdGh9ICgke2V2ZW50LmNvbnRlbnQubGVuZ3RofSBieXRlcylcbiAgICAgIGApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgIGxvZ2dpbmdRdWV1ZS5wdXNoKGAke3Rlcm1pbmFsLnllbGxvdygnREVMRVRFJyl9ICR7ZXZlbnQucGF0aH1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3JlbmFtZSc6XG4gICAgICBsb2dnaW5nUXVldWUucHVzaChgJHt0ZXJtaW5hbC5ibHVlKCdSRU5BTUUnKX0gJHtldmVudC5wYXRofSA9PiAke2V2ZW50LnRvfWApO1xuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5cbi8qKlxuICogUmVtb3ZlIGV2ZXJ5IG9wdGlvbnMgZnJvbSBhcmd2IHRoYXQgd2Ugc3VwcG9ydCBpbiBzY2hlbWF0aWNzIGl0c2VsZi5cbiAqL1xuY29uc3QgYXJncyA9IE9iamVjdC5hc3NpZ24oe30sIGFyZ3YpO1xuZGVsZXRlIGFyZ3NbJy0tJ107XG5mb3IgKGNvbnN0IGtleSBvZiBib29sZWFuQXJncykge1xuICBkZWxldGUgYXJnc1trZXldO1xufVxuXG4vKipcbiAqIEFkZCBvcHRpb25zIGZyb20gYC0tYCB0byBhcmdzLlxuICovXG5jb25zdCBhcmd2MiA9IG1pbmltaXN0KGFyZ3ZbJy0tJ10pO1xuZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYXJndjIpKSB7XG4gIGFyZ3Nba2V5XSA9IGFyZ3YyW2tleV07XG59XG5kZWxldGUgYXJncy5fO1xuXG5cbi8qKlxuICogVGhlIG1haW4gcGF0aC4gQ2FsbCB0aGUgc2NoZW1hdGljIHdpdGggdGhlIGhvc3QuIFRoaXMgY3JlYXRlcyBhIG5ldyBDb250ZXh0IGZvciB0aGUgc2NoZW1hdGljXG4gKiB0byBydW4gaW4sIHRoZW4gY2FsbCB0aGUgc2NoZW1hdGljIHJ1bGUgdXNpbmcgdGhlIGlucHV0IFRyZWUuIFRoaXMgcmV0dXJucyBhIG5ldyBUcmVlIGFzIGlmXG4gKiB0aGUgc2NoZW1hdGljIHdhcyBhcHBsaWVkIHRvIGl0LlxuICpcbiAqIFdlIHRoZW4gb3B0aW1pemUgdGhpcyB0cmVlLiBUaGlzIHJlbW92ZXMgYW55IGR1cGxpY2F0ZWQgYWN0aW9ucyBvciBhY3Rpb25zIHRoYXQgd291bGQgcmVzdWx0XG4gKiBpbiBhIG5vb3AgKGZvciBleGFtcGxlLCBjcmVhdGluZyB0aGVuIGRlbGV0aW5nIGEgZmlsZSkuIFRoaXMgaXMgbm90IG5lY2Vzc2FyeSBidXQgd2lsbCBncmVhdGx5XG4gKiBpbXByb3ZlIHBlcmZvcm1hbmNlIGFzIGhpdHRpbmcgdGhlIGZpbGUgc3lzdGVtIGlzIGNvc3RseS5cbiAqXG4gKiBUaGVuIHdlIHByb2NlZWQgdG8gcnVuIHRoZSBkcnlSdW4gY29tbWl0LiBXZSBydW4gdGhpcyBiZWZvcmUgd2UgdGhlbiBjb21taXQgdG8gdGhlIGZpbGVzeXN0ZW1cbiAqIChpZiAtLWRyeS1ydW4gd2FzIG5vdCBwYXNzZWQgb3IgYW4gZXJyb3Igd2FzIGRldGVjdGVkIGJ5IGRyeVJ1bikuXG4gKi9cbnNjaGVtYXRpYy5jYWxsKGFyZ3MsIGhvc3QsIHsgZGVidWcsIGxvZ2dlcjogbG9nZ2VyLmFzQXBpKCkgfSlcbiAgLm1hcCgodHJlZTogVHJlZSkgPT4gVHJlZS5vcHRpbWl6ZSh0cmVlKSlcbiAgLmNvbmNhdE1hcCgodHJlZTogVHJlZSkgPT4ge1xuICAgIHJldHVybiBkcnlSdW5TaW5rLmNvbW1pdCh0cmVlKS5pZ25vcmVFbGVtZW50cygpLmNvbmNhdChPYnNlcnZhYmxlLm9mKHRyZWUpKTtcbiAgfSlcbiAgLmNvbmNhdE1hcCgodHJlZTogVHJlZSkgPT4ge1xuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIC8vIE91dHB1dCB0aGUgbG9nZ2luZyBxdWV1ZS5cbiAgICAgIGxvZ2dpbmdRdWV1ZS5mb3JFYWNoKGxvZyA9PiBsb2dnZXIuaW5mbyhsb2cpKTtcbiAgICB9XG5cbiAgICBpZiAoZHJ5UnVuIHx8IGVycm9yKSB7XG4gICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZih0cmVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnNTaW5rLmNvbW1pdCh0cmVlKS5pZ25vcmVFbGVtZW50cygpLmNvbmNhdChPYnNlcnZhYmxlLm9mKHRyZWUpKTtcbiAgfSlcbiAgLnN1YnNjcmliZSh7XG4gICAgZXJyb3IoZXJyOiBFcnJvcikge1xuICAgICAgLy8gQWRkIGV4dHJhIHByb2Nlc3NpbmcgdG8gb3V0cHV0IGJldHRlciBlcnJvciBtZXNzYWdlcy5cbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBzY2hlbWEuamF2YXNjcmlwdC5SZXF1aXJlZFZhbHVlTWlzc2luZ0V4Y2VwdGlvbikge1xuICAgICAgICBsb2dnZXIuZmF0YWwoJ01pc3NpbmcgYXJndW1lbnQgb24gdGhlIGNvbW1hbmQgbGluZTogJyArIGVyci5wYXRoLnNwbGl0KCcvJykucG9wKCkpO1xuICAgICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBzY2hlbWEuamF2YXNjcmlwdC5JbnZhbGlkUHJvcGVydHlOYW1lRXhjZXB0aW9uKSB7XG4gICAgICAgIGxvZ2dlci5mYXRhbCgnQSBub24tc3VwcG9ydGVkIGFyZ3VtZW50IHdhcyBwYXNzZWQ6ICcgKyBlcnIucGF0aC5zcGxpdCgnLycpLnBvcCgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci5mYXRhbChlcnIubWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfSxcbiAgfSk7XG4iXX0=
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "id": "SchematicsCollectionSchema",
4
+ "title": "Collection Schema for validating a 'collection.json'.",
5
+ "type": "object",
6
+ "properties": {
7
+ "schematics": {
8
+ "type": "object",
9
+ "properties": {
10
+ "additionalProperty": {
11
+ "type": "object",
12
+ "properties": {
13
+ "factory": {
14
+ "type": "string"
15
+ },
16
+ "description": {
17
+ "type": "string"
18
+ },
19
+ "extends": {
20
+ "type": "string"
21
+ },
22
+ "schema": {
23
+ "type": "string"
24
+ }
25
+ },
26
+ "required": [
27
+ "factory",
28
+ "description"
29
+ ]
30
+ }
31
+ }
32
+ },
33
+ "version": {
34
+ "type": "string"
35
+ }
36
+ },
37
+ "required": [
38
+ "schematics"
39
+ ]
40
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular-devkit/schematics",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "description": "Angular Schematics - Library",
5
5
  "bin": {
6
6
  "schematics": "./bin/schematics.js"
@@ -20,7 +20,7 @@
20
20
  "schematics"
21
21
  ],
22
22
  "dependencies": {
23
- "@angular-devkit/core": "0.0.14",
23
+ "@angular-devkit/core": "0.0.15",
24
24
  "@ngtools/json-schema": "^1.1.0",
25
25
  "minimist": "^1.2.0",
26
26
  "rxjs": "^5.4.2"
@@ -7,7 +7,7 @@
7
7
  * found in the LICENSE file at https://angular.io/license
8
8
  */
9
9
  import { BaseException } from '@angular-devkit/core';
10
- import { CollectionDescription } from '@angular-devkit/schematics';
10
+ import { CollectionDescription, TypedSchematicContext } from '@angular-devkit/schematics';
11
11
  import 'rxjs/add/operator/map';
12
12
  import { Url } from 'url';
13
13
  import { MergeStrategy } from '../tree/interface';
@@ -21,6 +21,9 @@ export declare class UnknownCollectionException extends BaseException {
21
21
  export declare class UnknownSchematicException extends BaseException {
22
22
  constructor(name: string, collection: CollectionDescription<{}>);
23
23
  }
24
+ export declare class SchematicEngineConflictingException extends BaseException {
25
+ constructor();
26
+ }
24
27
  export declare class SchematicEngine<CollectionT extends object, SchematicT extends object> implements Engine<CollectionT, SchematicT> {
25
28
  private _host;
26
29
  private _collectionCache;
@@ -28,7 +31,8 @@ export declare class SchematicEngine<CollectionT extends object, SchematicT exte
28
31
  constructor(_host: EngineHost<CollectionT, SchematicT>);
29
32
  readonly defaultMergeStrategy: MergeStrategy;
30
33
  createCollection(name: string): Collection<CollectionT, SchematicT>;
34
+ createContext(schematic: Schematic<CollectionT, SchematicT>, parent?: Partial<TypedSchematicContext<CollectionT, SchematicT>>): TypedSchematicContext<CollectionT, SchematicT>;
31
35
  createSchematic(name: string, collection: Collection<CollectionT, SchematicT>): Schematic<CollectionT, SchematicT>;
32
36
  transformOptions<OptionT extends object, ResultT extends object>(schematic: Schematic<CollectionT, SchematicT>, options: OptionT): ResultT;
33
- createSourceFromUrl(url: Url): Source;
37
+ createSourceFromUrl(url: Url, context: TypedSchematicContext<CollectionT, SchematicT>): Source;
34
38
  }
@@ -28,6 +28,10 @@ class UnknownSchematicException extends core_1.BaseException {
28
28
  }
29
29
  }
30
30
  exports.UnknownSchematicException = UnknownSchematicException;
31
+ class SchematicEngineConflictingException extends core_1.BaseException {
32
+ constructor() { super(`A schematic was called from a different engine as its parent.`); }
33
+ }
34
+ exports.SchematicEngineConflictingException = SchematicEngineConflictingException;
31
35
  class SchematicEngine {
32
36
  constructor(_host) {
33
37
  this._host = _host;
@@ -49,6 +53,21 @@ class SchematicEngine {
49
53
  this._schematicCache.set(name, new Map());
50
54
  return collection;
51
55
  }
56
+ createContext(schematic, parent) {
57
+ // Check for inconsistencies.
58
+ if (parent && parent.engine && parent.engine !== this) {
59
+ throw new SchematicEngineConflictingException();
60
+ }
61
+ return {
62
+ debug: parent && parent.debug || false,
63
+ engine: this,
64
+ logger: (parent && parent.logger && parent.logger.createChild(schematic.description.name))
65
+ || new core_1.NullLogger(),
66
+ schematic,
67
+ strategy: (parent && parent.strategy !== undefined)
68
+ ? parent.strategy : this.defaultMergeStrategy,
69
+ };
70
+ }
52
71
  createSchematic(name, collection) {
53
72
  const collectionImpl = this._collectionCache.get(collection.description.name);
54
73
  const schematicMap = this._schematicCache.get(collection.description.name);
@@ -72,12 +91,12 @@ class SchematicEngine {
72
91
  transformOptions(schematic, options) {
73
92
  return this._host.transformOptions(schematic.description, options);
74
93
  }
75
- createSourceFromUrl(url) {
94
+ createSourceFromUrl(url, context) {
76
95
  switch (url.protocol) {
77
96
  case 'null:': return () => new null_1.NullTree();
78
97
  case 'empty:': return () => static_1.empty();
79
98
  default:
80
- const hostSource = this._host.createSourceFromUrl(url);
99
+ const hostSource = this._host.createSourceFromUrl(url, context);
81
100
  if (!hostSource) {
82
101
  throw new UnknownUrlSourceProtocol(url.toString());
83
102
  }
@@ -86,4 +105,4 @@ class SchematicEngine {
86
105
  }
87
106
  }
88
107
  exports.SchematicEngine = SchematicEngine;
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9oYW5zbC9Tb3VyY2VzL2RldmtpdC8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L3NjaGVtYXRpY3Mvc3JjL2VuZ2luZS9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCwrQ0FBcUQ7QUFFckQsaUNBQStCO0FBRS9CLGlEQUFrRDtBQUNsRCx1Q0FBd0M7QUFDeEMsMkNBQXVDO0FBQ3ZDLDZDQUE4QztBQVE5QywyQ0FBNEM7QUFHNUMsOEJBQXNDLFNBQVEsb0JBQWE7SUFDekQsWUFBWSxHQUFXLElBQUksS0FBSyxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN6RTtBQUZELDREQUVDO0FBRUQsZ0NBQXdDLFNBQVEsb0JBQWE7SUFDM0QsWUFBWSxJQUFZLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN0RTtBQUZELGdFQUVDO0FBQ0QsK0JBQXVDLFNBQVEsb0JBQWE7SUFDMUQsWUFBWSxJQUFZLEVBQUUsVUFBcUM7UUFDN0QsS0FBSyxDQUFDLGNBQWMsSUFBSSw4QkFBOEIsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDN0UsQ0FBQztDQUNGO0FBSkQsOERBSUM7QUFHRDtJQU9FLFlBQW9CLEtBQTBDO1FBQTFDLFVBQUssR0FBTCxLQUFLLENBQXFDO1FBSnRELHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUFtRCxDQUFDO1FBQzlFLG9CQUFlLEdBQ25CLElBQUksR0FBRyxFQUErRCxDQUFDO0lBRzNFLENBQUM7SUFFRCxJQUFJLG9CQUFvQixLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixJQUFJLHlCQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUUvRixnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLElBQUks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QUM7WUFDcEM7Z0JBQ0UsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkQsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUNoQixNQUFNLElBQUksd0JBQXdCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3JELENBQUM7Z0JBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBL0VELDBDQStFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7IEJhc2VFeGNlcHRpb24gfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRGVzY3JpcHRpb24gfSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL21hcCc7XG5pbXBvcnQgeyBVcmwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgTWVyZ2VTdHJhdGVneSB9IGZyb20gJy4uL3RyZWUvaW50ZXJmYWNlJztcbmltcG9ydCB7IE51bGxUcmVlIH0gZnJvbSAnLi4vdHJlZS9udWxsJztcbmltcG9ydCB7IGVtcHR5IH0gZnJvbSAnLi4vdHJlZS9zdGF0aWMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkltcGwgfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgQ29sbGVjdGlvbixcbiAgRW5naW5lLFxuICBFbmdpbmVIb3N0LFxuICBTY2hlbWF0aWMsXG4gIFNvdXJjZSxcbn0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2NoZW1hdGljSW1wbCB9IGZyb20gJy4vc2NoZW1hdGljJztcblxuXG5leHBvcnQgY2xhc3MgVW5rbm93blVybFNvdXJjZVByb3RvY29sIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHVybDogc3RyaW5nKSB7IHN1cGVyKGBVbmtub3duIFByb3RvY29sIG9uIHVybCBcIiR7dXJsfVwiLmApOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmtub3duQ29sbGVjdGlvbkV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHsgc3VwZXIoYFVua25vd24gY29sbGVjdGlvbiBcIiR7bmFtZX1cIi5gKTsgfVxufVxuZXhwb3J0IGNsYXNzIFVua25vd25TY2hlbWF0aWNFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uRGVzY3JpcHRpb248e30+KSB7XG4gICAgc3VwZXIoYFNjaGVtYXRpYyBcIiR7bmFtZX1cIiBub3QgZm91bmQgaW4gY29sbGVjdGlvbiBcIiR7Y29sbGVjdGlvbi5uYW1lfVwiLmApO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFNjaGVtYXRpY0VuZ2luZTxDb2xsZWN0aW9uVCBleHRlbmRzIG9iamVjdCwgU2NoZW1hdGljVCBleHRlbmRzIG9iamVjdD5cbiAgICBpbXBsZW1lbnRzIEVuZ2luZTxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4ge1xuXG4gIHByaXZhdGUgX2NvbGxlY3Rpb25DYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBDb2xsZWN0aW9uSW1wbDxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4+KCk7XG4gIHByaXZhdGUgX3NjaGVtYXRpY0NhY2hlXG4gICAgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgU2NoZW1hdGljSW1wbDxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4+PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2hvc3Q6IEVuZ2luZUhvc3Q8Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+KSB7XG4gIH1cblxuICBnZXQgZGVmYXVsdE1lcmdlU3RyYXRlZ3koKSB7IHJldHVybiB0aGlzLl9ob3N0LmRlZmF1bHRNZXJnZVN0cmF0ZWd5IHx8IE1lcmdlU3RyYXRlZ3kuRGVmYXVsdDsgfVxuXG4gIGNyZWF0ZUNvbGxlY3Rpb24obmFtZTogc3RyaW5nKTogQ29sbGVjdGlvbjxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4ge1xuICAgIGxldCBjb2xsZWN0aW9uID0gdGhpcy5fY29sbGVjdGlvbkNhY2hlLmdldChuYW1lKTtcbiAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLl9ob3N0LmNyZWF0ZUNvbGxlY3Rpb25EZXNjcmlwdGlvbihuYW1lKTtcbiAgICBpZiAoIWRlc2NyaXB0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgVW5rbm93bkNvbGxlY3Rpb25FeGNlcHRpb24obmFtZSk7XG4gICAgfVxuXG4gICAgY29sbGVjdGlvbiA9IG5ldyBDb2xsZWN0aW9uSW1wbDxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4oZGVzY3JpcHRpb24sIHRoaXMpO1xuICAgIHRoaXMuX2NvbGxlY3Rpb25DYWNoZS5zZXQobmFtZSwgY29sbGVjdGlvbik7XG4gICAgdGhpcy5fc2NoZW1hdGljQ2FjaGUuc2V0KG5hbWUsIG5ldyBNYXAoKSk7XG5cbiAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgfVxuXG4gIGNyZWF0ZVNjaGVtYXRpYyhcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+KTogU2NoZW1hdGljPENvbGxlY3Rpb25ULCBTY2hlbWF0aWNUPiB7XG4gICAgY29uc3QgY29sbGVjdGlvbkltcGwgPSB0aGlzLl9jb2xsZWN0aW9uQ2FjaGUuZ2V0KGNvbGxlY3Rpb24uZGVzY3JpcHRpb24ubmFtZSk7XG4gICAgY29uc3Qgc2NoZW1hdGljTWFwID0gdGhpcy5fc2NoZW1hdGljQ2FjaGUuZ2V0KGNvbGxlY3Rpb24uZGVzY3JpcHRpb24ubmFtZSk7XG4gICAgaWYgKCFjb2xsZWN0aW9uSW1wbCB8fCAhc2NoZW1hdGljTWFwIHx8IGNvbGxlY3Rpb25JbXBsICE9PSBjb2xsZWN0aW9uKSB7XG4gICAgICAvLyBUaGlzIGlzIHdlaXJkLCBtYXliZSB0aGUgY29sbGVjdGlvbiB3YXMgY3JlYXRlZCBieSBhbm90aGVyIGVuZ2luZT9cbiAgICAgIHRocm93IG5ldyBVbmtub3duQ29sbGVjdGlvbkV4Y2VwdGlvbihjb2xsZWN0aW9uLmRlc2NyaXB0aW9uLm5hbWUpO1xuICAgIH1cblxuICAgIGxldCBzY2hlbWF0aWMgPSBzY2hlbWF0aWNNYXAuZ2V0KG5hbWUpO1xuICAgIGlmIChzY2hlbWF0aWMpIHtcbiAgICAgIHJldHVybiBzY2hlbWF0aWM7XG4gICAgfVxuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLl9ob3N0LmNyZWF0ZVNjaGVtYXRpY0Rlc2NyaXB0aW9uKG5hbWUsIGNvbGxlY3Rpb24uZGVzY3JpcHRpb24pO1xuICAgIGlmICghZGVzY3JpcHRpb24pIHtcbiAgICAgIHRocm93IG5ldyBVbmtub3duU2NoZW1hdGljRXhjZXB0aW9uKG5hbWUsIGNvbGxlY3Rpb24uZGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLl9ob3N0LmdldFNjaGVtYXRpY1J1bGVGYWN0b3J5KGRlc2NyaXB0aW9uLCBjb2xsZWN0aW9uLmRlc2NyaXB0aW9uKTtcbiAgICBzY2hlbWF0aWMgPSBuZXcgU2NoZW1hdGljSW1wbDxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4oZGVzY3JpcHRpb24sIGZhY3RvcnksIGNvbGxlY3Rpb24sIHRoaXMpO1xuXG4gICAgc2NoZW1hdGljTWFwLnNldChuYW1lLCBzY2hlbWF0aWMpO1xuXG4gICAgcmV0dXJuIHNjaGVtYXRpYztcbiAgfVxuXG4gIHRyYW5zZm9ybU9wdGlvbnM8T3B0aW9uVCBleHRlbmRzIG9iamVjdCwgUmVzdWx0VCBleHRlbmRzIG9iamVjdD4oXG4gICAgICBzY2hlbWF0aWM6IFNjaGVtYXRpYzxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4sIG9wdGlvbnM6IE9wdGlvblQpOiBSZXN1bHRUIHtcbiAgICByZXR1cm4gdGhpcy5faG9zdC50cmFuc2Zvcm1PcHRpb25zPE9wdGlvblQsIFJlc3VsdFQ+KFxuICAgICAgc2NoZW1hdGljLmRlc2NyaXB0aW9uLFxuICAgICAgb3B0aW9ucyxcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlU291cmNlRnJvbVVybCh1cmw6IFVybCk6IFNvdXJjZSB7XG4gICAgc3dpdGNoICh1cmwucHJvdG9jb2wpIHtcbiAgICAgIGNhc2UgJ251bGw6JzogcmV0dXJuICgpID0+IG5ldyBOdWxsVHJlZSgpO1xuICAgICAgY2FzZSAnZW1wdHk6JzogcmV0dXJuICgpID0+IGVtcHR5KCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zdCBob3N0U291cmNlID0gdGhpcy5faG9zdC5jcmVhdGVTb3VyY2VGcm9tVXJsKHVybCk7XG4gICAgICAgIGlmICghaG9zdFNvdXJjZSkge1xuICAgICAgICAgIHRocm93IG5ldyBVbmtub3duVXJsU291cmNlUHJvdG9jb2wodXJsLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhvc3RTb3VyY2U7XG4gICAgfVxuICB9XG59XG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9oYW5zbC9Tb3VyY2VzL2RldmtpdC8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L3NjaGVtYXRpY3Mvc3JjL2VuZ2luZS9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCwrQ0FBaUU7QUFFakUsaUNBQStCO0FBRS9CLGlEQUFrRDtBQUNsRCx1Q0FBd0M7QUFDeEMsMkNBQXVDO0FBQ3ZDLDZDQUE4QztBQVE5QywyQ0FBNEM7QUFHNUMsOEJBQXNDLFNBQVEsb0JBQWE7SUFDekQsWUFBWSxHQUFXLElBQUksS0FBSyxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN6RTtBQUZELDREQUVDO0FBRUQsZ0NBQXdDLFNBQVEsb0JBQWE7SUFDM0QsWUFBWSxJQUFZLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN0RTtBQUZELGdFQUVDO0FBQ0QsK0JBQXVDLFNBQVEsb0JBQWE7SUFDMUQsWUFBWSxJQUFZLEVBQUUsVUFBcUM7UUFDN0QsS0FBSyxDQUFDLGNBQWMsSUFBSSw4QkFBOEIsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDN0UsQ0FBQztDQUNGO0FBSkQsOERBSUM7QUFFRCx5Q0FBaUQsU0FBUSxvQkFBYTtJQUNwRSxnQkFBZ0IsS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFGO0FBRkQsa0ZBRUM7QUFHRDtJQU9FLFlBQW9CLEtBQTBDO1FBQTFDLFVBQUssR0FBTCxLQUFLLENBQXFDO1FBSnRELHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUFtRCxDQUFDO1FBQzlFLG9CQUFlLEdBQ25CLElBQUksR0FBRyxFQUErRCxDQUFDO0lBRzNFLENBQUM7SUFFRCxJQUFJLG9CQUFvQixLQUFLLE1BQU0sQ0FBQyxJQUFJLENB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QW5HRCwwQ0FtR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgeyBCYXNlRXhjZXB0aW9uLCBOdWxsTG9nZ2VyIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkRlc2NyaXB0aW9uLCBUeXBlZFNjaGVtYXRpY0NvbnRleHQgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL21hcCc7XG5pbXBvcnQgeyBVcmwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgTWVyZ2VTdHJhdGVneSB9IGZyb20gJy4uL3RyZWUvaW50ZXJmYWNlJztcbmltcG9ydCB7IE51bGxUcmVlIH0gZnJvbSAnLi4vdHJlZS9udWxsJztcbmltcG9ydCB7IGVtcHR5IH0gZnJvbSAnLi4vdHJlZS9zdGF0aWMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkltcGwgfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgQ29sbGVjdGlvbixcbiAgRW5naW5lLFxuICBFbmdpbmVIb3N0LFxuICBTY2hlbWF0aWMsXG4gIFNvdXJjZSxcbn0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2NoZW1hdGljSW1wbCB9IGZyb20gJy4vc2NoZW1hdGljJztcblxuXG5leHBvcnQgY2xhc3MgVW5rbm93blVybFNvdXJjZVByb3RvY29sIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHVybDogc3RyaW5nKSB7IHN1cGVyKGBVbmtub3duIFByb3RvY29sIG9uIHVybCBcIiR7dXJsfVwiLmApOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmtub3duQ29sbGVjdGlvbkV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHsgc3VwZXIoYFVua25vd24gY29sbGVjdGlvbiBcIiR7bmFtZX1cIi5gKTsgfVxufVxuZXhwb3J0IGNsYXNzIFVua25vd25TY2hlbWF0aWNFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uRGVzY3JpcHRpb248e30+KSB7XG4gICAgc3VwZXIoYFNjaGVtYXRpYyBcIiR7bmFtZX1cIiBub3QgZm91bmQgaW4gY29sbGVjdGlvbiBcIiR7Y29sbGVjdGlvbi5uYW1lfVwiLmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY2hlbWF0aWNFbmdpbmVDb25mbGljdGluZ0V4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoYEEgc2NoZW1hdGljIHdhcyBjYWxsZWQgZnJvbSBhIGRpZmZlcmVudCBlbmdpbmUgYXMgaXRzIHBhcmVudC5gKTsgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBTY2hlbWF0aWNFbmdpbmU8Q29sbGVjdGlvblQgZXh0ZW5kcyBvYmplY3QsIFNjaGVtYXRpY1QgZXh0ZW5kcyBvYmplY3Q+XG4gICAgaW1wbGVtZW50cyBFbmdpbmU8Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+IHtcblxuICBwcml2YXRlIF9jb2xsZWN0aW9uQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ29sbGVjdGlvbkltcGw8Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+PigpO1xuICBwcml2YXRlIF9zY2hlbWF0aWNDYWNoZVxuICAgID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFNjaGVtYXRpY0ltcGw8Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+Pj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBFbmdpbmVIb3N0PENvbGxlY3Rpb25ULCBTY2hlbWF0aWNUPikge1xuICB9XG5cbiAgZ2V0IGRlZmF1bHRNZXJnZVN0cmF0ZWd5KCkgeyByZXR1cm4gdGhpcy5faG9zdC5kZWZhdWx0TWVyZ2VTdHJhdGVneSB8fCBNZXJnZVN0cmF0ZWd5LkRlZmF1bHQ7IH1cblxuICBjcmVhdGVDb2xsZWN0aW9uKG5hbWU6IHN0cmluZyk6IENvbGxlY3Rpb248Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+IHtcbiAgICBsZXQgY29sbGVjdGlvbiA9IHRoaXMuX2NvbGxlY3Rpb25DYWNoZS5nZXQobmFtZSk7XG4gICAgaWYgKGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5faG9zdC5jcmVhdGVDb2xsZWN0aW9uRGVzY3JpcHRpb24obmFtZSk7XG4gICAgaWYgKCFkZXNjcmlwdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFVua25vd25Db2xsZWN0aW9uRXhjZXB0aW9uKG5hbWUpO1xuICAgIH1cblxuICAgIGNvbGxlY3Rpb24gPSBuZXcgQ29sbGVjdGlvbkltcGw8Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+KGRlc2NyaXB0aW9uLCB0aGlzKTtcbiAgICB0aGlzLl9jb2xsZWN0aW9uQ2FjaGUuc2V0KG5hbWUsIGNvbGxlY3Rpb24pO1xuICAgIHRoaXMuX3NjaGVtYXRpY0NhY2hlLnNldChuYW1lLCBuZXcgTWFwKCkpO1xuXG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH1cblxuICBjcmVhdGVDb250ZXh0KFxuICAgIHNjaGVtYXRpYzogU2NoZW1hdGljPENvbGxlY3Rpb25ULCBTY2hlbWF0aWNUPixcbiAgICBwYXJlbnQ/OiBQYXJ0aWFsPFR5cGVkU2NoZW1hdGljQ29udGV4dDxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4+LFxuICApOiBUeXBlZFNjaGVtYXRpY0NvbnRleHQ8Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+IHtcbiAgICAvLyBDaGVjayBmb3IgaW5jb25zaXN0ZW5jaWVzLlxuICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LmVuZ2luZSAmJiBwYXJlbnQuZW5naW5lICE9PSB0aGlzKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljRW5naW5lQ29uZmxpY3RpbmdFeGNlcHRpb24oKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVidWc6IHBhcmVudCAmJiBwYXJlbnQuZGVidWcgfHwgZmFsc2UsXG4gICAgICBlbmdpbmU6IHRoaXMsXG4gICAgICBsb2dnZXI6IChwYXJlbnQgJiYgcGFyZW50LmxvZ2dlciAmJiBwYXJlbnQubG9nZ2VyLmNyZWF0ZUNoaWxkKHNjaGVtYXRpYy5kZXNjcmlwdGlvbi5uYW1lKSlcbiAgICAgICAgICAgICAgfHwgbmV3IE51bGxMb2dnZXIoKSxcbiAgICAgIHNjaGVtYXRpYyxcbiAgICAgIHN0cmF0ZWd5OiAocGFyZW50ICYmIHBhcmVudC5zdHJhdGVneSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICA/IHBhcmVudC5zdHJhdGVneSA6IHRoaXMuZGVmYXVsdE1lcmdlU3RyYXRlZ3ksXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZVNjaGVtYXRpYyhcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+KTogU2NoZW1hdGljPENvbGxlY3Rpb25ULCBTY2hlbWF0aWNUPiB7XG4gICAgY29uc3QgY29sbGVjdGlvbkltcGwgPSB0aGlzLl9jb2xsZWN0aW9uQ2FjaGUuZ2V0KGNvbGxlY3Rpb24uZGVzY3JpcHRpb24ubmFtZSk7XG4gICAgY29uc3Qgc2NoZW1hdGljTWFwID0gdGhpcy5fc2NoZW1hdGljQ2FjaGUuZ2V0KGNvbGxlY3Rpb24uZGVzY3JpcHRpb24ubmFtZSk7XG4gICAgaWYgKCFjb2xsZWN0aW9uSW1wbCB8fCAhc2NoZW1hdGljTWFwIHx8IGNvbGxlY3Rpb25JbXBsICE9PSBjb2xsZWN0aW9uKSB7XG4gICAgICAvLyBUaGlzIGlzIHdlaXJkLCBtYXliZSB0aGUgY29sbGVjdGlvbiB3YXMgY3JlYXRlZCBieSBhbm90aGVyIGVuZ2luZT9cbiAgICAgIHRocm93IG5ldyBVbmtub3duQ29sbGVjdGlvbkV4Y2VwdGlvbihjb2xsZWN0aW9uLmRlc2NyaXB0aW9uLm5hbWUpO1xuICAgIH1cblxuICAgIGxldCBzY2hlbWF0aWMgPSBzY2hlbWF0aWNNYXAuZ2V0KG5hbWUpO1xuICAgIGlmIChzY2hlbWF0aWMpIHtcbiAgICAgIHJldHVybiBzY2hlbWF0aWM7XG4gICAgfVxuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLl9ob3N0LmNyZWF0ZVNjaGVtYXRpY0Rlc2NyaXB0aW9uKG5hbWUsIGNvbGxlY3Rpb24uZGVzY3JpcHRpb24pO1xuICAgIGlmICghZGVzY3JpcHRpb24pIHtcbiAgICAgIHRocm93IG5ldyBVbmtub3duU2NoZW1hdGljRXhjZXB0aW9uKG5hbWUsIGNvbGxlY3Rpb24uZGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLl9ob3N0LmdldFNjaGVtYXRpY1J1bGVGYWN0b3J5KGRlc2NyaXB0aW9uLCBjb2xsZWN0aW9uLmRlc2NyaXB0aW9uKTtcbiAgICBzY2hlbWF0aWMgPSBuZXcgU2NoZW1hdGljSW1wbDxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4oZGVzY3JpcHRpb24sIGZhY3RvcnksIGNvbGxlY3Rpb24sIHRoaXMpO1xuXG4gICAgc2NoZW1hdGljTWFwLnNldChuYW1lLCBzY2hlbWF0aWMpO1xuXG4gICAgcmV0dXJuIHNjaGVtYXRpYztcbiAgfVxuXG4gIHRyYW5zZm9ybU9wdGlvbnM8T3B0aW9uVCBleHRlbmRzIG9iamVjdCwgUmVzdWx0VCBleHRlbmRzIG9iamVjdD4oXG4gICAgICBzY2hlbWF0aWM6IFNjaGVtYXRpYzxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4sIG9wdGlvbnM6IE9wdGlvblQpOiBSZXN1bHRUIHtcbiAgICByZXR1cm4gdGhpcy5faG9zdC50cmFuc2Zvcm1PcHRpb25zPE9wdGlvblQsIFJlc3VsdFQ+KFxuICAgICAgc2NoZW1hdGljLmRlc2NyaXB0aW9uLFxuICAgICAgb3B0aW9ucyxcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlU291cmNlRnJvbVVybCh1cmw6IFVybCwgY29udGV4dDogVHlwZWRTY2hlbWF0aWNDb250ZXh0PENvbGxlY3Rpb25ULCBTY2hlbWF0aWNUPik6IFNvdXJjZSB7XG4gICAgc3dpdGNoICh1cmwucHJvdG9jb2wpIHtcbiAgICAgIGNhc2UgJ251bGw6JzogcmV0dXJuICgpID0+IG5ldyBOdWxsVHJlZSgpO1xuICAgICAgY2FzZSAnZW1wdHk6JzogcmV0dXJuICgpID0+IGVtcHR5KCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zdCBob3N0U291cmNlID0gdGhpcy5faG9zdC5jcmVhdGVTb3VyY2VGcm9tVXJsKHVybCwgY29udGV4dCk7XG4gICAgICAgIGlmICghaG9zdFNvdXJjZSkge1xuICAgICAgICAgIHRocm93IG5ldyBVbmtub3duVXJsU291cmNlUHJvdG9jb2wodXJsLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhvc3RTb3VyY2U7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -6,6 +6,7 @@
6
6
  * Use of this source code is governed by an MIT-style license that can be
7
7
  * found in the LICENSE file at https://angular.io/license
8
8
  */
9
+ import { LoggerApi } from '@angular-devkit/core';
9
10
  import { Observable } from 'rxjs/Observable';
10
11
  import { Url } from 'url';
11
12
  import { FileEntry, MergeStrategy, Tree } from '../tree/interface';
@@ -35,7 +36,7 @@ export interface EngineHost<CollectionMetadataT extends object, SchematicMetadat
35
36
  createCollectionDescription(name: string): CollectionDescription<CollectionMetadataT>;
36
37
  createSchematicDescription(name: string, collection: CollectionDescription<CollectionMetadataT>): SchematicDescription<CollectionMetadataT, SchematicMetadataT>;
37
38
  getSchematicRuleFactory<OptionT extends object>(schematic: SchematicDescription<CollectionMetadataT, SchematicMetadataT>, collection: CollectionDescription<CollectionMetadataT>): RuleFactory<OptionT>;
38
- createSourceFromUrl(url: Url): Source | null;
39
+ createSourceFromUrl(url: Url, context: TypedSchematicContext<CollectionMetadataT, SchematicMetadataT>): Source | null;
39
40
  transformOptions<OptionT extends object, ResultT extends object>(schematic: SchematicDescription<CollectionMetadataT, SchematicMetadataT>, options: OptionT): ResultT;
40
41
  readonly defaultMergeStrategy?: MergeStrategy;
41
42
  }
@@ -51,8 +52,9 @@ export interface EngineHost<CollectionMetadataT extends object, SchematicMetadat
51
52
  */
52
53
  export interface Engine<CollectionMetadataT extends object, SchematicMetadataT extends object> {
53
54
  createCollection(name: string): Collection<CollectionMetadataT, SchematicMetadataT>;
55
+ createContext(schematic: Schematic<CollectionMetadataT, SchematicMetadataT>, parent?: Partial<TypedSchematicContext<CollectionMetadataT, SchematicMetadataT>>): TypedSchematicContext<CollectionMetadataT, SchematicMetadataT>;
54
56
  createSchematic(name: string, collection: Collection<CollectionMetadataT, SchematicMetadataT>): Schematic<CollectionMetadataT, SchematicMetadataT>;
55
- createSourceFromUrl(url: Url): Source;
57
+ createSourceFromUrl(url: Url, context: TypedSchematicContext<CollectionMetadataT, SchematicMetadataT>): Source;
56
58
  transformOptions<OptionT extends object, ResultT extends object>(schematic: Schematic<CollectionMetadataT, SchematicMetadataT>, options: OptionT): ResultT;
57
59
  readonly defaultMergeStrategy: MergeStrategy;
58
60
  }
@@ -71,14 +73,16 @@ export interface Collection<CollectionMetadataT extends object, SchematicMetadat
71
73
  export interface Schematic<CollectionMetadataT extends object, SchematicMetadataT extends object> {
72
74
  readonly description: SchematicDescription<CollectionMetadataT, SchematicMetadataT>;
73
75
  readonly collection: Collection<CollectionMetadataT, SchematicMetadataT>;
74
- call<OptionT extends object>(options: OptionT, host: Observable<Tree>): Observable<Tree>;
76
+ call<OptionT extends object>(options: OptionT, host: Observable<Tree>, parentContext?: Partial<TypedSchematicContext<CollectionMetadataT, SchematicMetadataT>>): Observable<Tree>;
75
77
  }
76
78
  /**
77
79
  * A SchematicContext. Contains information necessary for Schematics to execute some rules, for
78
80
  * example when using another schematics, as we need the engine and collection.
79
81
  */
80
82
  export interface TypedSchematicContext<CollectionMetadataT extends object, SchematicMetadataT extends object> {
83
+ readonly debug: boolean;
81
84
  readonly engine: Engine<CollectionMetadataT, SchematicMetadataT>;
85
+ readonly logger: LoggerApi;
82
86
  readonly schematic: Schematic<CollectionMetadataT, SchematicMetadataT>;
83
87
  readonly strategy: MergeStrategy;
84
88
  }
@@ -108,4 +112,4 @@ export declare type AsyncFileOperator = (tree: FileEntry) => Observable<FileEntr
108
112
  * know which types is the schematic or collection metadata, as they are both tooling specific.
109
113
  */
110
114
  export declare type Source = (context: SchematicContext) => Tree | Observable<Tree>;
111
- export declare type Rule = (tree: Tree, context: SchematicContext) => Tree | Observable<Tree>;
115
+ export declare type Rule = (tree: Tree, context: SchematicContext) => Tree | Observable<Tree> | void;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9oYW5zbC9Tb3VyY2VzL2RldmtpdC8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L3NjaGVtYXRpY3Mvc3JjL2VuZ2luZS9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgVXJsIH0gZnJvbSAndXJsJztcbmltcG9ydCB7IEZpbGVFbnRyeSwgTWVyZ2VTdHJhdGVneSwgVHJlZSB9IGZyb20gJy4uL3RyZWUvaW50ZXJmYWNlJztcblxuXG4vKipcbiAqIFRoZSBkZXNjcmlwdGlvbiAobWV0YWRhdGEpIG9mIGEgY29sbGVjdGlvbi4gVGhpcyB0eXBlIGNvbnRhaW5zIGV2ZXJ5IGluZm9ybWF0aW9uIHRoZSBlbmdpbmVcbiAqIG5lZWRzIHRvIHJ1bi4gVGhlIENvbGxlY3Rpb25NZXRhZGF0YVQgdHlwZSBwYXJhbWV0ZXIgY29udGFpbnMgYWRkaXRpb25hbCBtZXRhZGF0YSB0aGF0IHlvdVxuICogd2FudCB0byBzdG9yZSB3aGlsZSByZW1haW5pbmcgdHlwZS1zYWZlLlxuICovXG5leHBvcnQgdHlwZSBDb2xsZWN0aW9uRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdD4gPSBDb2xsZWN0aW9uTWV0YWRhdGFUICYge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFRoZSBkZXNjcmlwdGlvbiAobWV0YWRhdGEpIG9mIGEgc2NoZW1hdGljLiBUaGlzIHR5cGUgY29udGFpbnMgZXZlcnkgaW5mb3JtYXRpb24gdGhlIGVuZ2luZVxuICogbmVlZHMgdG8gcnVuLiBUaGUgU2NoZW1hdGljTWV0YWRhdGFUIGFuZCBDb2xsZWN0aW9uTWV0YWRhdGFUIHR5cGUgcGFyYW1ldGVycyBjb250YWluIGFkZGl0aW9uYWxcbiAqIG1ldGFkYXRhIHRoYXQgeW91IHdhbnQgdG8gc3RvcmUgd2hpbGUgcmVtYWluaW5nIHR5cGUtc2FmZS5cbiAqL1xuZXhwb3J0IHR5cGUgU2NoZW1hdGljRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjaGVtYXRpY01ldGFkYXRhVCBleHRlbmRzIG9iamVjdD4gPSBTY2hlbWF0aWNNZXRhZGF0YVQgJiB7XG4gIHJlYWRvbmx5IGNvbGxlY3Rpb246IENvbGxlY3Rpb25EZXNjcmlwdGlvbjxDb2xsZWN0aW9uTWV0YWRhdGFUPjtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufTtcblxuXG4vKipcbiAqIFRoZSBIb3N0IGZvciB0aGUgRW5naW5lLiBTcGVjaWZpY2FsbHksIHRoZSBwaWVjZSBvZiB0aGUgdG9vbGluZyByZXNwb25zaWJsZSBmb3IgcmVzb2x2aW5nXG4gKiBjb2xsZWN0aW9ucyBhbmQgc2NoZW1hdGljcyBkZXNjcmlwdGlvbnMuIFRoZSBTY2hlbWF0aWNNZXRhZGF0YVQgYW5kIENvbGxlY3Rpb25NZXRhZGF0YVQgdHlwZVxuICogcGFyYW1ldGVycyBjb250YWluIGFkZGl0aW9uYWwgbWV0YWRhdGEgdGhhdCB5b3Ugd2FudCB0byBzdG9yZSB3aGlsZSByZW1haW5pbmcgdHlwZS1zYWZlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZ2luZUhvc3Q8Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdCwgU2NoZW1hdGljTWV0YWRhdGFUIGV4dGVuZHMgb2JqZWN0PiB7XG4gIGNyZWF0ZUNvbGxlY3Rpb25EZXNjcmlwdGlvbihuYW1lOiBzdHJpbmcpOiBDb2xsZWN0aW9uRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVD47XG4gIGNyZWF0ZVNjaGVtYXRpY0Rlc2NyaXB0aW9uKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbkRlc2NyaXB0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQ+KTpcbiAgICAgICAgU2NoZW1hdGljRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPjtcbiAgZ2V0U2NoZW1hdGljUnVsZUZhY3Rvcnk8T3B0aW9uVCBleHRlbmRzIG9iamVjdD4oXG4gICAgICBzY2hlbWF0aWM6IFNjaGVtYXRpY0Rlc2NyaXB0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD4sXG4gICAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVD4pOiBSdWxlRmFjdG9yeTxPcHRpb25UPjtcbiAgY3JlYXRlU291cmNlRnJvbVVybCh1cmw6IFVybCk6IFNvdXJjZSB8IG51bGw7XG4gIHRyYW5zZm9ybU9wdGlvbnM8T3B0aW9uVCBleHRlbmRzIG9iamVjdCwgUmVzdWx0VCBleHRlbmRzIG9iamVjdD4oXG4gICAgc2NoZW1hdGljOiBTY2hlbWF0aWNEZXNjcmlwdGlvbjxDb2xsZWN0aW9uTWV0YWRhdGFULCBTY2hlbWF0aWNNZXRhZGF0YVQ+LFxuICAgIG9wdGlvbnM6IE9wdGlvblQsXG4gICk6IFJlc3VsdFQ7XG5cblxuICByZWFkb25seSBkZWZhdWx0TWVyZ2VTdHJhdGVneT86IE1lcmdlU3RyYXRlZ3k7XG59XG5cblxuLyoqXG4gKiBUaGUgcm9vdCBFbmdpbmUgZm9yIGNyZWF0aW5nIGFuZCBydW5uaW5nIHNjaGVtYXRpY3MgYW5kIGNvbGxlY3Rpb25zLiBFdmVyeXRoaW5nIHJlbGF0ZWQgdG9cbiAqIGEgc2NoZW1hdGljIGV4ZWN1dGlvbiBzdGFydHMgZnJvbSB0aGlzIGludGVyZmFjZS5cbiAqXG4gKiBDb2xsZWN0aW9uTWV0YWRhdGFUIGlzLCBieSBkZWZhdWx0LCBhIGdlbmVyaWMgQ29sbGVjdGlvbiBtZXRhZGF0YSB0eXBlLiBUaGlzIGlzIHVzZWQgdGhyb3VnaG91dFxuICogdGhlIGVuZ2luZSB0eXBpbmdzIHNvIHRoYXQgeW91IGNhbiB1c2UgYSB0eXBlIHRoYXQncyBtZXJnZWQgaW50byBkZXNjcmlwdGlvbnMsIHdoaWxlIGJlaW5nXG4gKiB0eXBlLXNhZmUuXG4gKlxuICogU2NoZW1hdGljTWV0YWRhdGFUIGlzIGEgdHlwZSB0aGF0IGNvbnRhaW5zIGFkZGl0aW9uYWwgdHlwaW5nIGZvciB0aGUgU2NoZW1hdGljIERlc2NyaXB0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZ2luZTxDb2xsZWN0aW9uTWV0YWRhdGFUIGV4dGVuZHMgb2JqZWN0LCBTY2hlbWF0aWNNZXRhZGF0YVQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgY3JlYXRlQ29sbGVjdGlvbihuYW1lOiBzdHJpbmcpOiBDb2xsZWN0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD47XG4gIGNyZWF0ZVNjaGVtYXRpYyhcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPixcbiAgKTogU2NoZW1hdGljPENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD47XG4gIGNyZWF0ZVNvdXJjZUZyb21VcmwodXJsOiBVcmwpOiBTb3VyY2U7XG4gIHRyYW5zZm9ybU9wdGlvbnM8T3B0aW9uVCBleHRlbmRzIG9iamVjdCwgUmVzdWx0VCBleHRlbmRzIG9iamVjdD4oXG4gICAgICBzY2hlbWF0aWM6IFNjaGVtYXRpYzxDb2xsZWN0aW9uTWV0YWRhdGFULCBTY2hlbWF0aWNNZXRhZGF0YVQ+LFxuICAgICAgb3B0aW9uczogT3B0aW9uVCxcbiAgKTogUmVzdWx0VDtcblxuICByZWFkb25seSBkZWZhdWx0TWVyZ2VTdHJhdGVneTogTWVyZ2VTdHJhdGVneTtcbn1cblxuXG4vKipcbiAqIEEgQ29sbGVjdGlvbiBhcyBjcmVhdGVkIGJ5IHRoZSBFbmdpbmUuIFRoaXMgc2hvdWxkIGJlIHVzZWQgYnkgdGhlIHRvb2wgdG8gY3JlYXRlIHNjaGVtYXRpY3MsXG4gKiBvciBieSBydWxlcyB0byBjcmVhdGUgb3RoZXIgc2NoZW1hdGljcyBhcyB3ZWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb248Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdCwgU2NoZW1hdGljTWV0YWRhdGFUIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBDb2xsZWN0aW9uRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVD47XG5cbiAgY3JlYXRlU2NoZW1hdGljKG5hbWU6IHN0cmluZyk6IFNjaGVtYXRpYzxDb2xsZWN0aW9uTWV0YWRhdGFULCBTY2hlbWF0aWNNZXRhZGF0YVQ+O1xufVxuXG5cbi8qKlxuICogQSBTY2hlbWF0aWMgYXMgY3JlYXRlZCBieSB0aGUgRW5naW5lLiBUaGlzIHNob3VsZCBiZSB1c2VkIGJ5IHRoZSB0b29sIHRvIGV4ZWN1dGUgdGhlIG1haW5cbiAqIHNjaGVtYXRpY3MsIG9yIGJ5IHJ1bGVzIHRvIGV4ZWN1dGUgb3RoZXIgc2NoZW1hdGljcyBhcyB3ZWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYXRpYzxDb2xsZWN0aW9uTWV0YWRhdGFUIGV4dGVuZHMgb2JqZWN0LCBTY2hlbWF0aWNNZXRhZGF0YVQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IFNjaGVtYXRpY0Rlc2NyaXB0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD47XG4gIHJlYWRvbmx5IGNvbGxlY3Rpb246IENvbGxlY3Rpb248Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPjtcblxuICBjYWxsPE9wdGlvblQgZXh0ZW5kcyBvYmplY3Q+KG9wdGlvbnM6IE9wdGlvblQsIGhvc3Q6IE9ic2VydmFibGU8VHJlZT4pOiBPYnNlcnZhYmxlPFRyZWU+O1xufVxuXG5cbi8qKlxuICogQSBTY2hlbWF0aWNDb250ZXh0LiBDb250YWlucyBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIFNjaGVtYXRpY3MgdG8gZXhlY3V0ZSBzb21lIHJ1bGVzLCBmb3JcbiAqIGV4YW1wbGUgd2hlbiB1c2luZyBhbm90aGVyIHNjaGVtYXRpY3MsIGFzIHdlIG5lZWQgdGhlIGVuZ2luZSBhbmQgY29sbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlZFNjaGVtYXRpY0NvbnRleHQ8Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjaGVtYXRpY01ldGFkYXRhVCBleHRlbmRzIG9iamVjdD4ge1xuICByZWFkb25seSBlbmdpbmU6IEVuZ2luZTxDb2xsZWN0aW9uTWV0YWRhdGFULCBTY2hlbWF0aWNNZXRhZGF0YVQ+O1xuICByZWFkb25seSBzY2hlbWF0aWM6IFNjaGVtYXRpYzxDb2xsZWN0aW9uTWV0YWRhdGFULCBTY2hlbWF0aWNNZXRhZGF0YVQ+O1xuICByZWFkb25seSBzdHJhdGVneTogTWVyZ2VTdHJhdGVneTtcbn1cblxuXG4vKipcbiAqIFRoaXMgaXMgdXNlZCBieSB0aGUgU2NoZW1hdGljcyBpbXBsZW1lbnRhdGlvbnMgaW4gb3JkZXIgdG8gYXZvaWQgbmVlZGluZyB0byBoYXZlIHR5cGluZyBmcm9tXG4gKiB0aGUgdG9vbGluZy4gU2NoZW1hdGljcyBhcmUgbm90IHNwZWNpZmljIHRvIGEgdG9vbC5cbiAqL1xuZXhwb3J0IHR5cGUgU2NoZW1hdGljQ29udGV4dCA9IFR5cGVkU2NoZW1hdGljQ29udGV4dDx7fSwge30+O1xuXG5cbi8qKlxuICogQSBydWxlIGZhY3RvcnksIHdoaWNoIGlzIG5vcm1hbGx5IHRoZSB3YXkgc2NoZW1hdGljcyBhcmUgaW1wbGVtZW50ZWQuIFJldHVybmVkIGJ5IHRoZSB0b29saW5nXG4gKiBhZnRlciBsb2FkaW5nIGEgc2NoZW1hdGljIGRlc2NyaXB0aW9uLlxuICovXG5leHBvcnQgdHlwZSBSdWxlRmFjdG9yeTxUIGV4dGVuZHMgb2JqZWN0PiA9IChvcHRpb25zOiBUKSA9PiBSdWxlO1xuXG5cbi8qKlxuICogQSBGaWxlT3BlcmF0b3IgYXBwbGllcyBjaGFuZ2VzIHN5bmNocm9ub3VzbHkgdG8gYSBGaWxlRW50cnkuIEFuIGFzeW5jIG9wZXJhdG9yIHJldHVybnNcbiAqIGFzeW5jaHJvbm91c2x5LiBXZSBzZXBhcmF0ZSB0aGVtIHNvIHRoYXQgdGhlIHR5cGUgc3lzdGVtIGNhbiBjYXRjaCBlYXJseSBlcnJvcnMuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbGVPcGVyYXRvciA9IChlbnRyeTogRmlsZUVudHJ5KSA9PiBGaWxlRW50cnkgfCBudWxsO1xuZXhwb3J0IHR5cGUgQXN5bmNGaWxlT3BlcmF0b3IgPSAodHJlZTogRmlsZUVudHJ5KSA9PiBPYnNlcnZhYmxlPEZpbGVFbnRyeSB8IG51bGw+O1xuXG5cbi8qKlxuICogQSBzb3VyY2UgaXMgYSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyBhIFRyZWUgZnJvbSBhIHNwZWNpZmljIGNvbnRleHQuIEEgcnVsZSB0cmFuc2Zvcm1zIGEgdHJlZVxuICogaW50byBhbm90aGVyIHRyZWUgZnJvbSBhIHNwZWNpZmljIGNvbnRleHQuIEluIGJvdGggY2FzZXMsIGFuIE9ic2VydmFibGUgY2FuIGJlIHJldHVybmVkIGlmXG4gKiB0aGUgc291cmNlIG9yIHRoZSBydWxlIGFyZSBhc3luY2hyb25vdXMuIE9ubHkgdGhlIGxhc3QgVHJlZSBnZW5lcmF0ZWQgaW4gdGhlIG9ic2VydmFibGUgd2lsbFxuICogYmUgdXNlZCB0aG91Z2guXG4gKlxuICogV2Ugb2JmdXNjYXRlIHRoZSBjb250ZXh0IG9mIFNvdXJjZSBhbmQgUnVsZSBiZWNhdXNlIHRoZSBzY2hlbWF0aWMgaW1wbGVtZW50YXRpb24gc2hvdWxkIG5vdFxuICoga25vdyB3aGljaCB0eXBlcyBpcyB0aGUgc2NoZW1hdGljIG9yIGNvbGxlY3Rpb24gbWV0YWRhdGEsIGFzIHRoZXkgYXJlIGJvdGggdG9vbGluZyBzcGVjaWZpYy5cbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlID0gKGNvbnRleHQ6IFNjaGVtYXRpY0NvbnRleHQpID0+IFRyZWUgfCBPYnNlcnZhYmxlPFRyZWU+O1xuZXhwb3J0IHR5cGUgUnVsZSA9ICh0cmVlOiBUcmVlLCBjb250ZXh0OiBTY2hlbWF0aWNDb250ZXh0KSA9PiBUcmVlIHwgT2JzZXJ2YWJsZTxUcmVlPjtcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9oYW5zbC9Tb3VyY2VzL2RldmtpdC8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L3NjaGVtYXRpY3Mvc3JjL2VuZ2luZS9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7IExvZ2dlckFwaSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgVXJsIH0gZnJvbSAndXJsJztcbmltcG9ydCB7IEZpbGVFbnRyeSwgTWVyZ2VTdHJhdGVneSwgVHJlZSB9IGZyb20gJy4uL3RyZWUvaW50ZXJmYWNlJztcblxuXG4vKipcbiAqIFRoZSBkZXNjcmlwdGlvbiAobWV0YWRhdGEpIG9mIGEgY29sbGVjdGlvbi4gVGhpcyB0eXBlIGNvbnRhaW5zIGV2ZXJ5IGluZm9ybWF0aW9uIHRoZSBlbmdpbmVcbiAqIG5lZWRzIHRvIHJ1bi4gVGhlIENvbGxlY3Rpb25NZXRhZGF0YVQgdHlwZSBwYXJhbWV0ZXIgY29udGFpbnMgYWRkaXRpb25hbCBtZXRhZGF0YSB0aGF0IHlvdVxuICogd2FudCB0byBzdG9yZSB3aGlsZSByZW1haW5pbmcgdHlwZS1zYWZlLlxuICovXG5leHBvcnQgdHlwZSBDb2xsZWN0aW9uRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdD4gPSBDb2xsZWN0aW9uTWV0YWRhdGFUICYge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFRoZSBkZXNjcmlwdGlvbiAobWV0YWRhdGEpIG9mIGEgc2NoZW1hdGljLiBUaGlzIHR5cGUgY29udGFpbnMgZXZlcnkgaW5mb3JtYXRpb24gdGhlIGVuZ2luZVxuICogbmVlZHMgdG8gcnVuLiBUaGUgU2NoZW1hdGljTWV0YWRhdGFUIGFuZCBDb2xsZWN0aW9uTWV0YWRhdGFUIHR5cGUgcGFyYW1ldGVycyBjb250YWluIGFkZGl0aW9uYWxcbiAqIG1ldGFkYXRhIHRoYXQgeW91IHdhbnQgdG8gc3RvcmUgd2hpbGUgcmVtYWluaW5nIHR5cGUtc2FmZS5cbiAqL1xuZXhwb3J0IHR5cGUgU2NoZW1hdGljRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjaGVtYXRpY01ldGFkYXRhVCBleHRlbmRzIG9iamVjdD4gPSBTY2hlbWF0aWNNZXRhZGF0YVQgJiB7XG4gIHJlYWRvbmx5IGNvbGxlY3Rpb246IENvbGxlY3Rpb25EZXNjcmlwdGlvbjxDb2xsZWN0aW9uTWV0YWRhdGFUPjtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufTtcblxuXG4vKipcbiAqIFRoZSBIb3N0IGZvciB0aGUgRW5naW5lLiBTcGVjaWZpY2FsbHksIHRoZSBwaWVjZSBvZiB0aGUgdG9vbGluZyByZXNwb25zaWJsZSBmb3IgcmVzb2x2aW5nXG4gKiBjb2xsZWN0aW9ucyBhbmQgc2NoZW1hdGljcyBkZXNjcmlwdGlvbnMuIFRoZSBTY2hlbWF0aWNNZXRhZGF0YVQgYW5kIENvbGxlY3Rpb25NZXRhZGF0YVQgdHlwZVxuICogcGFyYW1ldGVycyBjb250YWluIGFkZGl0aW9uYWwgbWV0YWRhdGEgdGhhdCB5b3Ugd2FudCB0byBzdG9yZSB3aGlsZSByZW1haW5pbmcgdHlwZS1zYWZlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZ2luZUhvc3Q8Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdCwgU2NoZW1hdGljTWV0YWRhdGFUIGV4dGVuZHMgb2JqZWN0PiB7XG4gIGNyZWF0ZUNvbGxlY3Rpb25EZXNjcmlwdGlvbihuYW1lOiBzdHJpbmcpOiBDb2xsZWN0aW9uRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVD47XG4gIGNyZWF0ZVNjaGVtYXRpY0Rlc2NyaXB0aW9uKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbkRlc2NyaXB0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQ+KTpcbiAgICAgICAgU2NoZW1hdGljRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPjtcbiAgZ2V0U2NoZW1hdGljUnVsZUZhY3Rvcnk8T3B0aW9uVCBleHRlbmRzIG9iamVjdD4oXG4gICAgICBzY2hlbWF0aWM6IFNjaGVtYXRpY0Rlc2NyaXB0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD4sXG4gICAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uRGVzY3JpcHRpb248Q29sbGVjdGlvbk1ldGFkYXRhVD4pOiBSdWxlRmFjdG9yeTxPcHRpb25UPjtcbiAgY3JlYXRlU291cmNlRnJvbVVybChcbiAgICB1cmw6IFVybCxcbiAgICBjb250ZXh0OiBUeXBlZFNjaGVtYXRpY0NvbnRleHQ8Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPixcbiAgKTogU291cmNlIHwgbnVsbDtcbiAgdHJhbnNmb3JtT3B0aW9uczxPcHRpb25UIGV4dGVuZHMgb2JqZWN0LCBSZXN1bHRUIGV4dGVuZHMgb2JqZWN0PihcbiAgICBzY2hlbWF0aWM6IFNjaGVtYXRpY0Rlc2NyaXB0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD4sXG4gICAgb3B0aW9uczogT3B0aW9uVCxcbiAgKTogUmVzdWx0VDtcblxuXG4gIHJlYWRvbmx5IGRlZmF1bHRNZXJnZVN0cmF0ZWd5PzogTWVyZ2VTdHJhdGVneTtcbn1cblxuXG4vKipcbiAqIFRoZSByb290IEVuZ2luZSBmb3IgY3JlYXRpbmcgYW5kIHJ1bm5pbmcgc2NoZW1hdGljcyBhbmQgY29sbGVjdGlvbnMuIEV2ZXJ5dGhpbmcgcmVsYXRlZCB0b1xuICogYSBzY2hlbWF0aWMgZXhlY3V0aW9uIHN0YXJ0cyBmcm9tIHRoaXMgaW50ZXJmYWNlLlxuICpcbiAqIENvbGxlY3Rpb25NZXRhZGF0YVQgaXMsIGJ5IGRlZmF1bHQsIGEgZ2VuZXJpYyBDb2xsZWN0aW9uIG1ldGFkYXRhIHR5cGUuIFRoaXMgaXMgdXNlZCB0aHJvdWdob3V0XG4gKiB0aGUgZW5naW5lIHR5cGluZ3Mgc28gdGhhdCB5b3UgY2FuIHVzZSBhIHR5cGUgdGhhdCdzIG1lcmdlZCBpbnRvIGRlc2NyaXB0aW9ucywgd2hpbGUgYmVpbmdcbiAqIHR5cGUtc2FmZS5cbiAqXG4gKiBTY2hlbWF0aWNNZXRhZGF0YVQgaXMgYSB0eXBlIHRoYXQgY29udGFpbnMgYWRkaXRpb25hbCB0eXBpbmcgZm9yIHRoZSBTY2hlbWF0aWMgRGVzY3JpcHRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5naW5lPENvbGxlY3Rpb25NZXRhZGF0YVQgZXh0ZW5kcyBvYmplY3QsIFNjaGVtYXRpY01ldGFkYXRhVCBleHRlbmRzIG9iamVjdD4ge1xuICBjcmVhdGVDb2xsZWN0aW9uKG5hbWU6IHN0cmluZyk6IENvbGxlY3Rpb248Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPjtcbiAgY3JlYXRlQ29udGV4dChcbiAgICBzY2hlbWF0aWM6IFNjaGVtYXRpYzxDb2xsZWN0aW9uTWV0YWRhdGFULCBTY2hlbWF0aWNNZXRhZGF0YVQ+LFxuICAgIHBhcmVudD86IFBhcnRpYWw8VHlwZWRTY2hlbWF0aWNDb250ZXh0PENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD4+LFxuICApOiBUeXBlZFNjaGVtYXRpY0NvbnRleHQ8Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPjtcbiAgY3JlYXRlU2NoZW1hdGljKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjxDb2xsZWN0aW9uTWV0YWRhdGFULCBTY2hlbWF0aWNNZXRhZGF0YVQ+LFxuICApOiBTY2hlbWF0aWM8Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPjtcbiAgY3JlYXRlU291cmNlRnJvbVVybChcbiAgICB1cmw6IFVybCxcbiAgICBjb250ZXh0OiBUeXBlZFNjaGVtYXRpY0NvbnRleHQ8Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPixcbiAgKTogU291cmNlO1xuICB0cmFuc2Zvcm1PcHRpb25zPE9wdGlvblQgZXh0ZW5kcyBvYmplY3QsIFJlc3VsdFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgICAgc2NoZW1hdGljOiBTY2hlbWF0aWM8Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPixcbiAgICAgIG9wdGlvbnM6IE9wdGlvblQsXG4gICk6IFJlc3VsdFQ7XG5cbiAgcmVhZG9ubHkgZGVmYXVsdE1lcmdlU3RyYXRlZ3k6IE1lcmdlU3RyYXRlZ3k7XG59XG5cblxuLyoqXG4gKiBBIENvbGxlY3Rpb24gYXMgY3JlYXRlZCBieSB0aGUgRW5naW5lLiBUaGlzIHNob3VsZCBiZSB1c2VkIGJ5IHRoZSB0b29sIHRvIGNyZWF0ZSBzY2hlbWF0aWNzLFxuICogb3IgYnkgcnVsZXMgdG8gY3JlYXRlIG90aGVyIHNjaGVtYXRpY3MgYXMgd2VsbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQgZXh0ZW5kcyBvYmplY3QsIFNjaGVtYXRpY01ldGFkYXRhVCBleHRlbmRzIG9iamVjdD4ge1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogQ29sbGVjdGlvbkRlc2NyaXB0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQ+O1xuXG4gIGNyZWF0ZVNjaGVtYXRpYyhuYW1lOiBzdHJpbmcpOiBTY2hlbWF0aWM8Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPjtcbn1cblxuXG4vKipcbiAqIEEgU2NoZW1hdGljIGFzIGNyZWF0ZWQgYnkgdGhlIEVuZ2luZS4gVGhpcyBzaG91bGQgYmUgdXNlZCBieSB0aGUgdG9vbCB0byBleGVjdXRlIHRoZSBtYWluXG4gKiBzY2hlbWF0aWNzLCBvciBieSBydWxlcyB0byBleGVjdXRlIG90aGVyIHNjaGVtYXRpY3MgYXMgd2VsbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2hlbWF0aWM8Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdCwgU2NoZW1hdGljTWV0YWRhdGFUIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBTY2hlbWF0aWNEZXNjcmlwdGlvbjxDb2xsZWN0aW9uTWV0YWRhdGFULCBTY2hlbWF0aWNNZXRhZGF0YVQ+O1xuICByZWFkb25seSBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD47XG5cbiAgY2FsbDxPcHRpb25UIGV4dGVuZHMgb2JqZWN0PihcbiAgICBvcHRpb25zOiBPcHRpb25ULFxuICAgIGhvc3Q6IE9ic2VydmFibGU8VHJlZT4sXG4gICAgcGFyZW50Q29udGV4dD86IFBhcnRpYWw8VHlwZWRTY2hlbWF0aWNDb250ZXh0PENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD4+LFxuICApOiBPYnNlcnZhYmxlPFRyZWU+O1xufVxuXG5cbi8qKlxuICogQSBTY2hlbWF0aWNDb250ZXh0LiBDb250YWlucyBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIFNjaGVtYXRpY3MgdG8gZXhlY3V0ZSBzb21lIHJ1bGVzLCBmb3JcbiAqIGV4YW1wbGUgd2hlbiB1c2luZyBhbm90aGVyIHNjaGVtYXRpY3MsIGFzIHdlIG5lZWQgdGhlIGVuZ2luZSBhbmQgY29sbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlZFNjaGVtYXRpY0NvbnRleHQ8Q29sbGVjdGlvbk1ldGFkYXRhVCBleHRlbmRzIG9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjaGVtYXRpY01ldGFkYXRhVCBleHRlbmRzIG9iamVjdD4ge1xuICByZWFkb25seSBkZWJ1ZzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW5naW5lOiBFbmdpbmU8Q29sbGVjdGlvbk1ldGFkYXRhVCwgU2NoZW1hdGljTWV0YWRhdGFUPjtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXJBcGk7XG4gIHJlYWRvbmx5IHNjaGVtYXRpYzogU2NoZW1hdGljPENvbGxlY3Rpb25NZXRhZGF0YVQsIFNjaGVtYXRpY01ldGFkYXRhVD47XG4gIHJlYWRvbmx5IHN0cmF0ZWd5OiBNZXJnZVN0cmF0ZWd5O1xufVxuXG5cbi8qKlxuICogVGhpcyBpcyB1c2VkIGJ5IHRoZSBTY2hlbWF0aWNzIGltcGxlbWVudGF0aW9ucyBpbiBvcmRlciB0byBhdm9pZCBuZWVkaW5nIHRvIGhhdmUgdHlwaW5nIGZyb21cbiAqIHRoZSB0b29saW5nLiBTY2hlbWF0aWNzIGFyZSBub3Qgc3BlY2lmaWMgdG8gYSB0b29sLlxuICovXG5leHBvcnQgdHlwZSBTY2hlbWF0aWNDb250ZXh0ID0gVHlwZWRTY2hlbWF0aWNDb250ZXh0PHt9LCB7fT47XG5cblxuLyoqXG4gKiBBIHJ1bGUgZmFjdG9yeSwgd2hpY2ggaXMgbm9ybWFsbHkgdGhlIHdheSBzY2hlbWF0aWNzIGFyZSBpbXBsZW1lbnRlZC4gUmV0dXJuZWQgYnkgdGhlIHRvb2xpbmdcbiAqIGFmdGVyIGxvYWRpbmcgYSBzY2hlbWF0aWMgZGVzY3JpcHRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFJ1bGVGYWN0b3J5PFQgZXh0ZW5kcyBvYmplY3Q+ID0gKG9wdGlvbnM6IFQpID0+IFJ1bGU7XG5cblxuLyoqXG4gKiBBIEZpbGVPcGVyYXRvciBhcHBsaWVzIGNoYW5nZXMgc3luY2hyb25vdXNseSB0byBhIEZpbGVFbnRyeS4gQW4gYXN5bmMgb3BlcmF0b3IgcmV0dXJuc1xuICogYXN5bmNocm9ub3VzbHkuIFdlIHNlcGFyYXRlIHRoZW0gc28gdGhhdCB0aGUgdHlwZSBzeXN0ZW0gY2FuIGNhdGNoIGVhcmx5IGVycm9ycy5cbiAqL1xuZXhwb3J0IHR5cGUgRmlsZU9wZXJhdG9yID0gKGVudHJ5OiBGaWxlRW50cnkpID0+IEZpbGVFbnRyeSB8IG51bGw7XG5leHBvcnQgdHlwZSBBc3luY0ZpbGVPcGVyYXRvciA9ICh0cmVlOiBGaWxlRW50cnkpID0+IE9ic2VydmFibGU8RmlsZUVudHJ5IHwgbnVsbD47XG5cblxuLyoqXG4gKiBBIHNvdXJjZSBpcyBhIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIGEgVHJlZSBmcm9tIGEgc3BlY2lmaWMgY29udGV4dC4gQSBydWxlIHRyYW5zZm9ybXMgYSB0cmVlXG4gKiBpbnRvIGFub3RoZXIgdHJlZSBmcm9tIGEgc3BlY2lmaWMgY29udGV4dC4gSW4gYm90aCBjYXNlcywgYW4gT2JzZXJ2YWJsZSBjYW4gYmUgcmV0dXJuZWQgaWZcbiAqIHRoZSBzb3VyY2Ugb3IgdGhlIHJ1bGUgYXJlIGFzeW5jaHJvbm91cy4gT25seSB0aGUgbGFzdCBUcmVlIGdlbmVyYXRlZCBpbiB0aGUgb2JzZXJ2YWJsZSB3aWxsXG4gKiBiZSB1c2VkIHRob3VnaC5cbiAqXG4gKiBXZSBvYmZ1c2NhdGUgdGhlIGNvbnRleHQgb2YgU291cmNlIGFuZCBSdWxlIGJlY2F1c2UgdGhlIHNjaGVtYXRpYyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbm90XG4gKiBrbm93IHdoaWNoIHR5cGVzIGlzIHRoZSBzY2hlbWF0aWMgb3IgY29sbGVjdGlvbiBtZXRhZGF0YSwgYXMgdGhleSBhcmUgYm90aCB0b29saW5nIHNwZWNpZmljLlxuICovXG5leHBvcnQgdHlwZSBTb3VyY2UgPSAoY29udGV4dDogU2NoZW1hdGljQ29udGV4dCkgPT4gVHJlZSB8IE9ic2VydmFibGU8VHJlZT47XG5leHBvcnQgdHlwZSBSdWxlID0gKHRyZWU6IFRyZWUsIGNvbnRleHQ6IFNjaGVtYXRpY0NvbnRleHQpID0+IFRyZWUgfCBPYnNlcnZhYmxlPFRyZWU+IHwgdm9pZDtcbiJdfQ==
@@ -10,7 +10,7 @@ import { Observable } from 'rxjs/Observable';
10
10
  import 'rxjs/add/observable/of';
11
11
  import 'rxjs/add/operator/concatMap';
12
12
  import { Tree } from '../tree/interface';
13
- import { Collection, Engine, RuleFactory, Schematic, SchematicDescription } from './interface';
13
+ import { Collection, Engine, RuleFactory, Schematic, SchematicDescription, TypedSchematicContext } from './interface';
14
14
  export declare class InvalidSchematicsNameException extends BaseException {
15
15
  constructor(name: string);
16
16
  }
@@ -19,8 +19,8 @@ export declare class SchematicImpl<CollectionT extends object, SchematicT extend
19
19
  private _factory;
20
20
  private _collection;
21
21
  private _engine;
22
- constructor(_description: SchematicDescription<CollectionT, SchematicT>, _factory: RuleFactory<any>, _collection: Collection<CollectionT, SchematicT>, _engine: Engine<CollectionT, SchematicT>);
22
+ constructor(_description: SchematicDescription<CollectionT, SchematicT>, _factory: RuleFactory<{}>, _collection: Collection<CollectionT, SchematicT>, _engine: Engine<CollectionT, SchematicT>);
23
23
  readonly description: SchematicDescription<CollectionT, SchematicT>;
24
24
  readonly collection: Collection<CollectionT, SchematicT>;
25
- call<OptionT extends object>(options: OptionT, host: Observable<Tree>): Observable<Tree>;
25
+ call<OptionT extends object>(options: OptionT, host: Observable<Tree>, parentContext?: Partial<TypedSchematicContext<CollectionT, SchematicT>>): Observable<Tree>;
26
26
  }
@@ -18,8 +18,7 @@ class InvalidSchematicsNameException extends core_1.BaseException {
18
18
  }
19
19
  exports.InvalidSchematicsNameException = InvalidSchematicsNameException;
20
20
  class SchematicImpl {
21
- constructor(_description, _factory, // tslint:disable-line:no-any
22
- _collection, _engine) {
21
+ constructor(_description, _factory, _collection, _engine) {
23
22
  this._description = _description;
24
23
  this._factory = _factory;
25
24
  this._collection = _collection;
@@ -30,18 +29,17 @@ class SchematicImpl {
30
29
  }
31
30
  get description() { return this._description; }
32
31
  get collection() { return this._collection; }
33
- call(options, host) {
34
- const context = {
35
- engine: this._engine,
36
- schematic: this,
37
- strategy: this._engine.defaultMergeStrategy,
38
- };
39
- const transformedOptions = this._engine.transformOptions(this, options);
32
+ call(options, host, parentContext) {
33
+ const context = this._engine.createContext(this, parentContext);
40
34
  return host.concatMap(tree => {
35
+ const transformedOptions = this._engine.transformOptions(this, options);
41
36
  const result = this._factory(transformedOptions)(tree, context);
42
37
  if (result instanceof Observable_1.Observable) {
43
38
  return result;
44
39
  }
40
+ else if (result === undefined) {
41
+ return Observable_1.Observable.of(tree);
42
+ }
45
43
  else {
46
44
  return Observable_1.Observable.of(result);
47
45
  }
@@ -49,4 +47,4 @@ class SchematicImpl {
49
47
  }
50
48
  }
51
49
  exports.SchematicImpl = SchematicImpl;
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hdGljLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9oYW5zbC9Tb3VyY2VzL2RldmtpdC8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L3NjaGVtYXRpY3Mvc3JjL2VuZ2luZS9zY2hlbWF0aWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCwrQ0FBcUQ7QUFDckQsZ0RBQTZDO0FBQzdDLGtDQUFnQztBQUNoQyx1Q0FBcUM7QUFZckMsb0NBQTRDLFNBQVEsb0JBQWE7SUFDL0QsWUFBWSxJQUFZO1FBQ3RCLEtBQUssQ0FBQyxpQ0FBaUMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUFKRCx3RUFJQztBQUdEO0lBR0UsWUFBb0IsWUFBMkQsRUFDM0QsUUFBMEIsRUFBRyw2QkFBNkI7UUFDMUQsV0FBZ0QsRUFDaEQsT0FBd0M7UUFIeEMsaUJBQVksR0FBWixZQUFZLENBQStDO1FBQzNELGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQztRQUNoRCxZQUFPLEdBQVAsT0FBTyxDQUFpQztRQUMxRCxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sSUFBSSw4QkFBOEIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFdBQVcsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRTdDLElBQUksQ0FBeUIsT0FBZ0IsRUFBRSxJQUFzQjtRQUNuRSxNQUFNLE9BQU8sR0FBbUQ7WUFDOUQsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3BCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CO1NBQzVDLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7WUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNoRSxFQUFFLENBQUMsQ0FBQyxNQUFNLFlBQVksdUJBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLE1BQU0sQ0FBQyx1QkFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFoQ0Qsc0NBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHsgQmFzZUV4Y2VwdGlvbiB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL29mJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY29uY2F0TWFwJztcbmltcG9ydCB7IFRyZWUgfSBmcm9tICcuLi90cmVlL2ludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDb2xsZWN0aW9uLFxuICBFbmdpbmUsXG4gIFJ1bGVGYWN0b3J5LFxuICBTY2hlbWF0aWMsXG4gIFNjaGVtYXRpY0Rlc2NyaXB0aW9uLFxuICBUeXBlZFNjaGVtYXRpY0NvbnRleHQsXG59IGZyb20gJy4vaW50ZXJmYWNlJztcblxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFNjaGVtYXRpY3NOYW1lRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBTY2hlbWF0aWNzIGhhcyBpbnZhbGlkIG5hbWU6IFwiJHtuYW1lfVwiLmApO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFNjaGVtYXRpY0ltcGw8Q29sbGVjdGlvblQgZXh0ZW5kcyBvYmplY3QsIFNjaGVtYXRpY1QgZXh0ZW5kcyBvYmplY3Q+XG4gICAgaW1wbGVtZW50cyBTY2hlbWF0aWM8Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZXNjcmlwdGlvbjogU2NoZW1hdGljRGVzY3JpcHRpb248Q29sbGVjdGlvblQsIFNjaGVtYXRpY1Q+LFxuICAgICAgICAgICAgICBwcml2YXRlIF9mYWN0b3J5OiBSdWxlRmFjdG9yeTxhbnk+LCAgLy8gdHNsaW50OmRpc2FibGUtbGluZTpuby1hbnlcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY29sbGVjdGlvbjogQ29sbGVjdGlvbjxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2VuZ2luZTogRW5naW5lPENvbGxlY3Rpb25ULCBTY2hlbWF0aWNUPikge1xuICAgIGlmICghX2Rlc2NyaXB0aW9uLm5hbWUubWF0Y2goL15bLV8uYS16QS1aMC05XSskLykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkU2NoZW1hdGljc05hbWVFeGNlcHRpb24oX2Rlc2NyaXB0aW9uLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpIHsgcmV0dXJuIHRoaXMuX2Rlc2NyaXB0aW9uOyB9XG4gIGdldCBjb2xsZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fY29sbGVjdGlvbjsgfVxuXG4gIGNhbGw8T3B0aW9uVCBleHRlbmRzIG9iamVjdD4ob3B0aW9uczogT3B0aW9uVCwgaG9zdDogT2JzZXJ2YWJsZTxUcmVlPik6IE9ic2VydmFibGU8VHJlZT4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IFR5cGVkU2NoZW1hdGljQ29udGV4dDxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4gPSB7XG4gICAgICBlbmdpbmU6IHRoaXMuX2VuZ2luZSxcbiAgICAgIHNjaGVtYXRpYzogdGhpcyxcbiAgICAgIHN0cmF0ZWd5OiB0aGlzLl9lbmdpbmUuZGVmYXVsdE1lcmdlU3RyYXRlZ3ksXG4gICAgfTtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZE9wdGlvbnMgPSB0aGlzLl9lbmdpbmUudHJhbnNmb3JtT3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBob3N0LmNvbmNhdE1hcCh0cmVlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2ZhY3RvcnkodHJhbnNmb3JtZWRPcHRpb25zKSh0cmVlLCBjb250ZXh0KTtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihyZXN1bHQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hdGljLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9oYW5zbC9Tb3VyY2VzL2RldmtpdC8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L3NjaGVtYXRpY3Mvc3JjL2VuZ2luZS9zY2hlbWF0aWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCwrQ0FBcUQ7QUFDckQsZ0RBQTZDO0FBQzdDLGtDQUFnQztBQUNoQyx1Q0FBcUM7QUFZckMsb0NBQTRDLFNBQVEsb0JBQWE7SUFDL0QsWUFBWSxJQUFZO1FBQ3RCLEtBQUssQ0FBQyxpQ0FBaUMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUFKRCx3RUFJQztBQUdEO0lBR0UsWUFBb0IsWUFBMkQsRUFDM0QsUUFBeUIsRUFDekIsV0FBZ0QsRUFDaEQsT0FBd0M7UUFIeEMsaUJBQVksR0FBWixZQUFZLENBQStDO1FBQzNELGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQztRQUNoRCxZQUFPLEdBQVAsT0FBTyxDQUFpQztRQUMxRCxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sSUFBSSw4QkFBOEIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFdBQVcsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRTdDLElBQUksQ0FDRixPQUFnQixFQUNoQixJQUFzQixFQUN0QixhQUF1RTtRQUV2RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFaEUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSTtZQUN4QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXhFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDaEUsRUFBRSxDQUFDLENBQUMsTUFBTSxZQUFZLHVCQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sQ0FBQyx1QkFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sTUFBTSxDQUFDLHVCQUFVLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5DRCxzQ0FtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgeyBCYXNlRXhjZXB0aW9uIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvb2YnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jb25jYXRNYXAnO1xuaW1wb3J0IHsgVHJlZSB9IGZyb20gJy4uL3RyZWUvaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIENvbGxlY3Rpb24sXG4gIEVuZ2luZSxcbiAgUnVsZUZhY3RvcnksXG4gIFNjaGVtYXRpYyxcbiAgU2NoZW1hdGljRGVzY3JpcHRpb24sXG4gIFR5cGVkU2NoZW1hdGljQ29udGV4dCxcbn0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkU2NoZW1hdGljc05hbWVFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFNjaGVtYXRpY3MgaGFzIGludmFsaWQgbmFtZTogXCIke25hbWV9XCIuYCk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgU2NoZW1hdGljSW1wbDxDb2xsZWN0aW9uVCBleHRlbmRzIG9iamVjdCwgU2NoZW1hdGljVCBleHRlbmRzIG9iamVjdD5cbiAgICBpbXBsZW1lbnRzIFNjaGVtYXRpYzxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4ge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rlc2NyaXB0aW9uOiBTY2hlbWF0aWNEZXNjcmlwdGlvbjxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2ZhY3Rvcnk6IFJ1bGVGYWN0b3J5PHt9PixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY29sbGVjdGlvbjogQ29sbGVjdGlvbjxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2VuZ2luZTogRW5naW5lPENvbGxlY3Rpb25ULCBTY2hlbWF0aWNUPikge1xuICAgIGlmICghX2Rlc2NyaXB0aW9uLm5hbWUubWF0Y2goL15bLV8uYS16QS1aMC05XSskLykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkU2NoZW1hdGljc05hbWVFeGNlcHRpb24oX2Rlc2NyaXB0aW9uLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpIHsgcmV0dXJuIHRoaXMuX2Rlc2NyaXB0aW9uOyB9XG4gIGdldCBjb2xsZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fY29sbGVjdGlvbjsgfVxuXG4gIGNhbGw8T3B0aW9uVCBleHRlbmRzIG9iamVjdD4oXG4gICAgb3B0aW9uczogT3B0aW9uVCxcbiAgICBob3N0OiBPYnNlcnZhYmxlPFRyZWU+LFxuICAgIHBhcmVudENvbnRleHQ/OiBQYXJ0aWFsPFR5cGVkU2NoZW1hdGljQ29udGV4dDxDb2xsZWN0aW9uVCwgU2NoZW1hdGljVD4+LFxuICApOiBPYnNlcnZhYmxlPFRyZWU+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5fZW5naW5lLmNyZWF0ZUNvbnRleHQodGhpcywgcGFyZW50Q29udGV4dCk7XG5cbiAgICByZXR1cm4gaG9zdC5jb25jYXRNYXAodHJlZSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZE9wdGlvbnMgPSB0aGlzLl9lbmdpbmUudHJhbnNmb3JtT3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZmFjdG9yeSh0cmFuc2Zvcm1lZE9wdGlvbnMpKHRyZWUsIGNvbnRleHQpO1xuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YodHJlZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihyZXN1bHQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -13,7 +13,7 @@ import { Tree } from '../tree/interface';
13
13
  * When a rule or source returns an invalid value.
14
14
  */
15
15
  export declare class InvalidRuleResultException extends BaseException {
16
- constructor(value: {});
16
+ constructor(value?: {});
17
17
  }
18
18
  export declare function callSource(source: Source, context: SchematicContext): Observable<Tree>;
19
19
  export declare function callRule(rule: Rule, input: Observable<Tree>, context: SchematicContext): Observable<Tree>;