@schematics/angular 16.1.0-next.2 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.addRootProvider = exports.addRootImport = void 0;
11
+ const core_1 = require("@angular-devkit/core");
12
+ const schematics_1 = require("@angular-devkit/schematics");
13
+ const ast_utils_1 = require("../ast-utils");
14
+ const change_1 = require("../change");
15
+ const ng_ast_utils_1 = require("../ng-ast-utils");
16
+ const app_config_1 = require("./app_config");
17
+ const code_block_1 = require("./code_block");
18
+ const util_1 = require("./util");
19
+ /**
20
+ * Adds an import to the root of the project.
21
+ * @param project Name of the project to which to add the import.
22
+ * @param callback Function that generates the code block which should be inserted.
23
+ * @example
24
+ *
25
+ * ```ts
26
+ * import { Rule } from '@angular-devkit/schematics';
27
+ * import { addRootImport } from '@schematics/angular/utility';
28
+ *
29
+ * export default function(): Rule {
30
+ * return addRootImport('default', ({code, external}) => {
31
+ * return code`${external('MyModule', '@my/module')}.forRoot({})`;
32
+ * });
33
+ * }
34
+ * ```
35
+ */
36
+ function addRootImport(project, callback) {
37
+ return getRootInsertionRule(project, callback, 'imports', {
38
+ name: 'importProvidersFrom',
39
+ module: '@angular/core',
40
+ });
41
+ }
42
+ exports.addRootImport = addRootImport;
43
+ /**
44
+ * Adds a provider to the root of the project.
45
+ * @param project Name of the project to which to add the import.
46
+ * @param callback Function that generates the code block which should be inserted.
47
+ * @example
48
+ *
49
+ * ```ts
50
+ * import { Rule } from '@angular-devkit/schematics';
51
+ * import { addRootProvider } from '@schematics/angular/utility';
52
+ *
53
+ * export default function(): Rule {
54
+ * return addRootProvider('default', ({code, external}) => {
55
+ * return code`${external('provideLibrary', '@my/library')}({})`;
56
+ * });
57
+ * }
58
+ * ```
59
+ */
60
+ function addRootProvider(project, callback) {
61
+ return getRootInsertionRule(project, callback, 'providers');
62
+ }
63
+ exports.addRootProvider = addRootProvider;
64
+ /**
65
+ * Creates a rule that inserts code at the root of either a standalone or NgModule-based project.
66
+ * @param project Name of the project into which to inser tthe code.
67
+ * @param callback Function that generates the code block which should be inserted.
68
+ * @param ngModuleField Field of the root NgModule into which the code should be inserted, if the
69
+ * app is based on NgModule
70
+ * @param standaloneWrapperFunction Function with which to wrap the code if the app is standalone.
71
+ */
72
+ function getRootInsertionRule(project, callback, ngModuleField, standaloneWrapperFunction) {
73
+ return async (host) => {
74
+ const mainFilePath = await (0, util_1.getMainFilePath)(host, project);
75
+ const codeBlock = new code_block_1.CodeBlock();
76
+ if ((0, ng_ast_utils_1.isStandaloneApp)(host, mainFilePath)) {
77
+ return (tree) => addProviderToStandaloneBootstrap(tree, callback(codeBlock), mainFilePath, standaloneWrapperFunction);
78
+ }
79
+ const modulePath = (0, ng_ast_utils_1.getAppModulePath)(host, mainFilePath);
80
+ const pendingCode = code_block_1.CodeBlock.transformPendingCode(callback(codeBlock), modulePath);
81
+ return (0, schematics_1.chain)([
82
+ ...pendingCode.rules,
83
+ (tree) => {
84
+ const changes = (0, ast_utils_1.addSymbolToNgModuleMetadata)((0, util_1.getSourceFile)(tree, modulePath), modulePath, ngModuleField, pendingCode.code.expression,
85
+ // Explicitly set the import path to null since we deal with imports here separately.
86
+ null);
87
+ (0, util_1.applyChangesToFile)(tree, modulePath, changes);
88
+ },
89
+ ]);
90
+ };
91
+ }
92
+ /**
93
+ * Adds a provider to the root of a standalone project.
94
+ * @param host Tree of the root rule.
95
+ * @param pendingCode Code that should be inserted.
96
+ * @param mainFilePath Path to the project's main file.
97
+ * @param wrapperFunction Optional function with which to wrap the provider.
98
+ */
99
+ function addProviderToStandaloneBootstrap(host, pendingCode, mainFilePath, wrapperFunction) {
100
+ const bootstrapCall = (0, util_1.findBootstrapApplicationCall)(host, mainFilePath);
101
+ const fileToEdit = (0, app_config_1.findAppConfig)(bootstrapCall, host, mainFilePath)?.filePath || mainFilePath;
102
+ const { code, rules } = code_block_1.CodeBlock.transformPendingCode(pendingCode, fileToEdit);
103
+ return (0, schematics_1.chain)([
104
+ ...rules,
105
+ () => {
106
+ let wrapped;
107
+ let additionalRules;
108
+ if (wrapperFunction) {
109
+ const block = new code_block_1.CodeBlock();
110
+ const result = code_block_1.CodeBlock.transformPendingCode(block.code `${block.external(wrapperFunction.name, wrapperFunction.module)}(${code.expression})`, fileToEdit);
111
+ wrapped = result.code;
112
+ additionalRules = result.rules;
113
+ }
114
+ else {
115
+ wrapped = code;
116
+ additionalRules = [];
117
+ }
118
+ return (0, schematics_1.chain)([
119
+ ...additionalRules,
120
+ (tree) => insertStandaloneRootProvider(tree, mainFilePath, wrapped.expression),
121
+ ]);
122
+ },
123
+ ]);
124
+ }
125
+ /**
126
+ * Inserts a string expression into the root of a standalone project.
127
+ * @param tree File tree used to modify the project.
128
+ * @param mainFilePath Path to the main file of the project.
129
+ * @param expression Code expression to be inserted.
130
+ */
131
+ function insertStandaloneRootProvider(tree, mainFilePath, expression) {
132
+ const bootstrapCall = (0, util_1.findBootstrapApplicationCall)(tree, mainFilePath);
133
+ const appConfig = (0, app_config_1.findAppConfig)(bootstrapCall, tree, mainFilePath);
134
+ if (bootstrapCall.arguments.length === 0) {
135
+ throw new schematics_1.SchematicsException(`Cannot add provider to invalid bootstrapApplication call in ${bootstrapCall.getSourceFile().fileName}`);
136
+ }
137
+ if (appConfig) {
138
+ addProvidersExpressionToAppConfig(tree, appConfig, expression);
139
+ return;
140
+ }
141
+ const newAppConfig = `, {\n${core_1.tags.indentBy(2) `providers: [${expression}]`}\n}`;
142
+ let targetCall;
143
+ if (bootstrapCall.arguments.length === 1) {
144
+ targetCall = bootstrapCall;
145
+ }
146
+ else if ((0, util_1.isMergeAppConfigCall)(bootstrapCall.arguments[1])) {
147
+ targetCall = bootstrapCall.arguments[1];
148
+ }
149
+ else {
150
+ throw new schematics_1.SchematicsException(`Cannot statically analyze bootstrapApplication call in ${bootstrapCall.getSourceFile().fileName}`);
151
+ }
152
+ (0, util_1.applyChangesToFile)(tree, mainFilePath, [
153
+ (0, ast_utils_1.insertAfterLastOccurrence)(targetCall.arguments, newAppConfig, mainFilePath, targetCall.getEnd() - 1),
154
+ ]);
155
+ }
156
+ /**
157
+ * Adds a string expression to an app config object.
158
+ * @param tree File tree used to modify the project.
159
+ * @param appConfig Resolved configuration object of the project.
160
+ * @param expression Code expression to be inserted.
161
+ */
162
+ function addProvidersExpressionToAppConfig(tree, appConfig, expression) {
163
+ const { node, filePath } = appConfig;
164
+ const configProps = node.properties;
165
+ const providersLiteral = (0, util_1.findProvidersLiteral)(node);
166
+ // If there's a `providers` property, we can add the provider
167
+ // to it, otherwise we need to declare it ourselves.
168
+ if (providersLiteral) {
169
+ const hasTrailingComma = providersLiteral.elements.hasTrailingComma;
170
+ (0, util_1.applyChangesToFile)(tree, filePath, [
171
+ (0, ast_utils_1.insertAfterLastOccurrence)(providersLiteral.elements, (hasTrailingComma || providersLiteral.elements.length === 0 ? '' : ', ') + expression, filePath, providersLiteral.getStart() + 1),
172
+ ]);
173
+ }
174
+ else {
175
+ const prop = core_1.tags.indentBy(2) `providers: [${expression}]`;
176
+ let toInsert;
177
+ let insertPosition;
178
+ if (configProps.length === 0) {
179
+ toInsert = '\n' + prop + '\n';
180
+ insertPosition = node.getEnd() - 1;
181
+ }
182
+ else {
183
+ const hasTrailingComma = configProps.hasTrailingComma;
184
+ toInsert = (hasTrailingComma ? '' : ',') + '\n' + prop;
185
+ insertPosition = configProps[configProps.length - 1].getEnd() + (hasTrailingComma ? 1 : 0);
186
+ }
187
+ (0, util_1.applyChangesToFile)(tree, filePath, [new change_1.InsertChange(filePath, insertPosition, toInsert)]);
188
+ }
189
+ }
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zY2hlbWF0aWNzL2FuZ3VsYXIvdXRpbGl0eS9zdGFuZGFsb25lL3J1bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILCtDQUE0QztBQUM1QywyREFBb0Y7QUFFcEYsNENBQXNGO0FBQ3RGLHNDQUF5QztBQUN6QyxrREFBb0U7QUFDcEUsNkNBQWdFO0FBQ2hFLDZDQUF5RTtBQUN6RSxpQ0FPZ0I7QUFFaEI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxTQUFnQixhQUFhLENBQUMsT0FBZSxFQUFFLFFBQTJCO0lBQ3hFLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7UUFDeEQsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixNQUFNLEVBQUUsZUFBZTtLQUN4QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBTEQsc0NBS0M7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUFlLEVBQUUsUUFBMkI7SUFDMUUsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFGRCwwQ0FFQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLG9CQUFvQixDQUMzQixPQUFlLEVBQ2YsUUFBMkIsRUFDM0IsYUFBcUIsRUFDckIseUJBQTREO0lBRTVELE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3BCLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBQSxzQkFBZSxFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLEVBQUUsQ0FBQztRQUVsQyxJQUFJLElBQUEsOEJBQWUsRUFBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVB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WUFDdkQsY0FBYyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUY7UUFFRCxJQUFBLHlCQUFrQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLHFCQUFZLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDNUY7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IHRhZ3MgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgeyBSdWxlLCBTY2hlbWF0aWNzRXhjZXB0aW9uLCBUcmVlLCBjaGFpbiB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB0cyBmcm9tICcuLi8uLi90aGlyZF9wYXJ0eS9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2xpYi90eXBlc2NyaXB0JztcbmltcG9ydCB7IGFkZFN5bWJvbFRvTmdNb2R1bGVNZXRhZGF0YSwgaW5zZXJ0QWZ0ZXJMYXN0T2NjdXJyZW5jZSB9IGZyb20gJy4uL2FzdC11dGlscyc7XG5pbXBvcnQgeyBJbnNlcnRDaGFuZ2UgfSBmcm9tICcuLi9jaGFuZ2UnO1xuaW1wb3J0IHsgZ2V0QXBwTW9kdWxlUGF0aCwgaXNTdGFuZGFsb25lQXBwIH0gZnJvbSAnLi4vbmctYXN0LXV0aWxzJztcbmltcG9ydCB7IFJlc29sdmVkQXBwQ29uZmlnLCBmaW5kQXBwQ29uZmlnIH0gZnJvbSAnLi9hcHBfY29uZmlnJztcbmltcG9ydCB7IENvZGVCbG9jaywgQ29kZUJsb2NrQ2FsbGJhY2ssIFBlbmRpbmdDb2RlIH0gZnJvbSAnLi9jb2RlX2Jsb2NrJztcbmltcG9ydCB7XG4gIGFwcGx5Q2hhbmdlc1RvRmlsZSxcbiAgZmluZEJvb3RzdHJhcEFwcGxpY2F0aW9uQ2FsbCxcbiAgZmluZFByb3ZpZGVyc0xpdGVyYWwsXG4gIGdldE1haW5GaWxlUGF0aCxcbiAgZ2V0U291cmNlRmlsZSxcbiAgaXNNZXJnZUFwcENvbmZpZ0NhbGwsXG59IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogQWRkcyBhbiBpbXBvcnQgdG8gdGhlIHJvb3Qgb2YgdGhlIHByb2plY3QuXG4gKiBAcGFyYW0gcHJvamVjdCBOYW1lIG9mIHRoZSBwcm9qZWN0IHRvIHdoaWNoIHRvIGFkZCB0aGUgaW1wb3J0LlxuICogQHBhcmFtIGNhbGxiYWNrIEZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHRoZSBjb2RlIGJsb2NrIHdoaWNoIHNob3VsZCBiZSBpbnNlcnRlZC5cbiAqIEBleGFtcGxlXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFJ1bGUgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG4gKiBpbXBvcnQgeyBhZGRSb290SW1wb3J0IH0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5JztcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpOiBSdWxlIHtcbiAqICAgcmV0dXJuIGFkZFJvb3RJbXBvcnQoJ2RlZmF1bHQnLCAoe2NvZGUsIGV4dGVybmFsfSkgPT4ge1xuICogICAgIHJldHVybiBjb2RlYCR7ZXh0ZXJuYWwoJ015TW9kdWxlJywgJ0BteS9tb2R1bGUnKX0uZm9yUm9vdCh7fSlgO1xuICogICB9KTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkUm9vdEltcG9ydChwcm9qZWN0OiBzdHJpbmcsIGNhbGxiYWNrOiBDb2RlQmxvY2tDYWxsYmFjayk6IFJ1bGUge1xuICByZXR1cm4gZ2V0Um9vdEluc2VydGlvblJ1bGUocHJvamVjdCwgY2FsbGJhY2ssICdpbXBvcnRzJywge1xuICAgIG5hbWU6ICdpbXBvcnRQcm92aWRlcnNGcm9tJyxcbiAgICBtb2R1bGU6ICdAYW5ndWxhci9jb3JlJyxcbiAgfSk7XG59XG5cbi8qKlxuICogQWRkcyBhIHByb3ZpZGVyIHRvIHRoZSByb290IG9mIHRoZSBwcm9qZWN0LlxuICogQHBhcmFtIHByb2plY3QgTmFtZSBvZiB0aGUgcHJvamVjdCB0byB3aGljaCB0byBhZGQgdGhlIGltcG9ydC5cbiAqIEBwYXJhbSBjYWxsYmFjayBGdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyB0aGUgY29kZSBibG9jayB3aGljaCBzaG91bGQgYmUgaW5zZXJ0ZWQuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBSdWxlIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuICogaW1wb3J0IHsgYWRkUm9vdFByb3ZpZGVyIH0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5JztcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpOiBSdWxlIHtcbiAqICAgcmV0dXJuIGFkZFJvb3RQcm92aWRlcignZGVmYXVsdCcsICh7Y29kZSwgZXh0ZXJuYWx9KSA9PiB7XG4gKiAgICAgcmV0dXJuIGNvZGVgJHtleHRlcm5hbCgncHJvdmlkZUxpYnJhcnknLCAnQG15L2xpYnJhcnknKX0oe30pYDtcbiAqICAgfSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFJvb3RQcm92aWRlcihwcm9qZWN0OiBzdHJpbmcsIGNhbGxiYWNrOiBDb2RlQmxvY2tDYWxsYmFjayk6IFJ1bGUge1xuICByZXR1cm4gZ2V0Um9vdEluc2VydGlvblJ1bGUocHJvamVjdCwgY2FsbGJhY2ssICdwcm92aWRlcnMnKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcnVsZSB0aGF0IGluc2VydHMgY29kZSBhdCB0aGUgcm9vdCBvZiBlaXRoZXIgYSBzdGFuZGFsb25lIG9yIE5nTW9kdWxlLWJhc2VkIHByb2plY3QuXG4gKiBAcGFyYW0gcHJvamVjdCBOYW1lIG9mIHRoZSBwcm9qZWN0IGludG8gd2hpY2ggdG8gaW5zZXIgdHRoZSBjb2RlLlxuICogQHBhcmFtIGNhbGxiYWNrIEZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHRoZSBjb2RlIGJsb2NrIHdoaWNoIHNob3VsZCBiZSBpbnNlcnRlZC5cbiAqIEBwYXJhbSBuZ01vZHVsZUZpZWxkIEZpZWxkIG9mIHRoZSByb290IE5nTW9kdWxlIGludG8gd2hpY2ggdGhlIGNvZGUgc2hvdWxkIGJlIGluc2VydGVkLCBpZiB0aGVcbiAqIGFwcCBpcyBiYXNlZCBvbiBOZ01vZHVsZVxuICogQHBhcmFtIHN0YW5kYWxvbmVXcmFwcGVyRnVuY3Rpb24gRnVuY3Rpb24gd2l0aCB3aGljaCB0byB3cmFwIHRoZSBjb2RlIGlmIHRoZSBhcHAgaXMgc3RhbmRhbG9uZS5cbiAqL1xuZnVuY3Rpb24gZ2V0Um9vdEluc2VydGlvblJ1bGUoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgY2FsbGJhY2s6IENvZGVCbG9ja0NhbGxiYWNrLFxuICBuZ01vZHVsZUZpZWxkOiBzdHJpbmcsXG4gIHN0YW5kYWxvbmVXcmFwcGVyRnVuY3Rpb24/OiB7IG5hbWU6IHN0cmluZzsgbW9kdWxlOiBzdHJpbmcgfSxcbik6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKGhvc3QpID0+IHtcbiAgICBjb25zdCBtYWluRmlsZVBhdGggPSBhd2FpdCBnZXRNYWluRmlsZVBhdGgoaG9zdCwgcHJvamVjdCk7XG4gICAgY29uc3QgY29kZUJsb2NrID0gbmV3IENvZGVCbG9jaygpO1xuXG4gICAgaWYgKGlzU3RhbmRhbG9uZUFwcChob3N0LCBtYWluRmlsZVBhdGgpKSB7XG4gICAgICByZXR1cm4gKHRyZWUpID0+XG4gICAgICAgIGFkZFByb3ZpZGVyVG9TdGFuZGFsb25lQm9vdHN0cmFwKFxuICAgICAgICAgIHRyZWUsXG4gICAgICAgICAgY2FsbGJhY2soY29kZUJsb2NrKSxcbiAgICAgICAgICBtYWluRmlsZVBhdGgsXG4gICAgICAgICAgc3RhbmRhbG9uZVdyYXBwZXJGdW5jdGlvbixcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVQYXRoID0gZ2V0QXBwTW9kdWxlUGF0aChob3N0LCBtYWluRmlsZVBhdGgpO1xuICAgIGNvbnN0IHBlbmRpbmdDb2RlID0gQ29kZUJsb2NrLnRyYW5zZm9ybVBlbmRpbmdDb2RlKGNhbGxiYWNrKGNvZGVCbG9jayksIG1vZHVsZVBhdGgpO1xuXG4gICAgcmV0dXJuIGNoYWluKFtcbiAgICAgIC4uLnBlbmRpbmdDb2RlLnJ1bGVzLFxuICAgICAgKHRyZWUpID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlcyA9IGFkZFN5bWJvbFRvTmdNb2R1bGVNZXRhZGF0YShcbiAgICAgICAgICBnZXRTb3VyY2VGaWxlKHRyZWUsIG1vZHVsZVBhdGgpLFxuICAgICAgICAgIG1vZHVsZVBhdGgsXG4gICAgICAgICAgbmdNb2R1bGVGaWVsZCxcbiAgICAgICAgICBwZW5kaW5nQ29kZS5jb2RlLmV4cHJlc3Npb24sXG4gICAgICAgICAgLy8gRXhwbGljaXRseSBzZXQgdGhlIGltcG9ydCBwYXRoIHRvIG51bGwgc2luY2Ugd2UgZGVhbCB3aXRoIGltcG9ydHMgaGVyZSBzZXBhcmF0ZWx5LlxuICAgICAgICAgIG51bGwsXG4gICAgICAgICk7XG5cbiAgICAgICAgYXBwbHlDaGFuZ2VzVG9GaWxlKHRyZWUsIG1vZHVsZVBhdGgsIGNoYW5nZXMpO1xuICAgICAgfSxcbiAgICBdKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBBZGRzIGEgcHJvdmlkZXIgdG8gdGhlIHJvb3Qgb2YgYSBzdGFuZGFsb25lIHByb2plY3QuXG4gKiBAcGFyYW0gaG9zdCBUcmVlIG9mIHRoZSByb290IHJ1bGUuXG4gKiBAcGFyYW0gcGVuZGluZ0NvZGUgQ29kZSB0aGF0IHNob3VsZCBiZSBpbnNlcnRlZC5cbiAqIEBwYXJhbSBtYWluRmlsZVBhdGggUGF0aCB0byB0aGUgcHJvamVjdCdzIG1haW4gZmlsZS5cbiAqIEBwYXJhbSB3cmFwcGVyRnVuY3Rpb24gT3B0aW9uYWwgZnVuY3Rpb24gd2l0aCB3aGljaCB0byB3cmFwIHRoZSBwcm92aWRlci5cbiAqL1xuZnVuY3Rpb24gYWRkUHJvdmlkZXJUb1N0YW5kYWxvbmVCb290c3RyYXAoXG4gIGhvc3Q6IFRyZWUsXG4gIHBlbmRpbmdDb2RlOiBQZW5kaW5nQ29kZSxcbiAgbWFpbkZpbGVQYXRoOiBzdHJpbmcsXG4gIHdyYXBwZXJGdW5jdGlvbj86IHsgbmFtZTogc3RyaW5nOyBtb2R1bGU6IHN0cmluZyB9LFxuKTogUnVsZSB7XG4gIGNvbnN0IGJvb3RzdHJhcENhbGwgPSBmaW5kQm9vdHN0cmFwQXBwbGljYXRpb25DYWxsKGhvc3QsIG1haW5GaWxlUGF0aCk7XG4gIGNvbnN0IGZpbGVUb0VkaXQgPSBmaW5kQXBwQ29uZmlnKGJvb3RzdHJhcENhbGwsIGhvc3QsIG1haW5GaWxlUGF0aCk/LmZpbGVQYXRoIHx8IG1haW5GaWxlUGF0aDtcbiAgY29uc3QgeyBjb2RlLCBydWxlcyB9ID0gQ29kZUJsb2NrLnRyYW5zZm9ybVBlbmRpbmdDb2RlKHBlbmRpbmdDb2RlLCBmaWxlVG9FZGl0KTtcblxuICByZXR1cm4gY2hhaW4oW1xuICAgIC4uLnJ1bGVzLFxuICAgICgpID0+IHtcbiAgICAgIGxldCB3cmFwcGVkOiBQZW5kaW5nQ29kZTtcbiAgICAgIGxldCBhZGRpdGlvbmFsUnVsZXM6IFJ1bGVbXTtcblxuICAgICAgaWYgKHdyYXBwZXJGdW5jdGlvbikge1xuICAgICAgICBjb25zdCBibG9jayA9IG5ldyBDb2RlQmxvY2soKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gQ29kZUJsb2NrLnRyYW5zZm9ybVBlbmRpbmdDb2RlKFxuICAgICAgICAgIGJsb2NrLmNvZGVgJHtibG9jay5leHRlcm5hbCh3cmFwcGVyRnVuY3Rpb24ubmFtZSwgd3JhcHBlckZ1bmN0aW9uLm1vZHVsZSl9KCR7XG4gICAgICAgICAgICBjb2RlLmV4cHJlc3Npb25cbiAgICAgICAgICB9KWAsXG4gICAgICAgICAgZmlsZVRvRWRpdCxcbiAgICAgICAgKTtcblxuICAgICAgICB3cmFwcGVkID0gcmVzdWx0LmNvZGU7XG4gICAgICAgIGFkZGl0aW9uYWxSdWxlcyA9IHJlc3VsdC5ydWxlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyYXBwZWQgPSBjb2RlO1xuICAgICAgICBhZGRpdGlvbmFsUnVsZXMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoYWluKFtcbiAgICAgICAgLi4uYWRkaXRpb25hbFJ1bGVzLFxuICAgICAgICAodHJlZSkgPT4gaW5zZXJ0U3RhbmRhbG9uZVJvb3RQcm92aWRlcih0cmVlLCBtYWluRmlsZVBhdGgsIHdyYXBwZWQuZXhwcmVzc2lvbiksXG4gICAgICBdKTtcbiAgICB9LFxuICBdKTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIGEgc3RyaW5nIGV4cHJlc3Npb24gaW50byB0aGUgcm9vdCBvZiBhIHN0YW5kYWxvbmUgcHJvamVjdC5cbiAqIEBwYXJhbSB0cmVlIEZpbGUgdHJlZSB1c2VkIHRvIG1vZGlmeSB0aGUgcHJvamVjdC5cbiAqIEBwYXJhbSBtYWluRmlsZVBhdGggUGF0aCB0byB0aGUgbWFpbiBmaWxlIG9mIHRoZSBwcm9qZWN0LlxuICogQHBhcmFtIGV4cHJlc3Npb24gQ29kZSBleHByZXNzaW9uIHRvIGJlIGluc2VydGVkLlxuICovXG5mdW5jdGlvbiBpbnNlcnRTdGFuZGFsb25lUm9vdFByb3ZpZGVyKHRyZWU6IFRyZWUsIG1haW5GaWxlUGF0aDogc3RyaW5nLCBleHByZXNzaW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgYm9vdHN0cmFwQ2FsbCA9IGZpbmRCb290c3RyYXBBcHBsaWNhdGlvbkNhbGwodHJlZSwgbWFpbkZpbGVQYXRoKTtcbiAgY29uc3QgYXBwQ29uZmlnID0gZmluZEFwcENvbmZpZyhib290c3RyYXBDYWxsLCB0cmVlLCBtYWluRmlsZVBhdGgpO1xuXG4gIGlmIChib290c3RyYXBDYWxsLmFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgIGBDYW5ub3QgYWRkIHByb3ZpZGVyIHRvIGludmFsaWQgYm9vdHN0cmFwQXBwbGljYXRpb24gY2FsbCBpbiAke1xuICAgICAgICBib290c3RyYXBDYWxsLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZVxuICAgICAgfWAsXG4gICAgKTtcbiAgfVxuXG4gIGlmIChhcHBDb25maWcpIHtcbiAgICBhZGRQcm92aWRlcnNFeHByZXNzaW9uVG9BcHBDb25maWcodHJlZSwgYXBwQ29uZmlnLCBleHByZXNzaW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5ld0FwcENvbmZpZyA9IGAsIHtcXG4ke3RhZ3MuaW5kZW50QnkoMilgcHJvdmlkZXJzOiBbJHtleHByZXNzaW9ufV1gfVxcbn1gO1xuICBsZXQgdGFyZ2V0Q2FsbDogdHMuQ2FsbEV4cHJlc3Npb247XG5cbiAgaWYgKGJvb3RzdHJhcENhbGwuYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHRhcmdldENhbGwgPSBib290c3RyYXBDYWxsO1xuICB9IGVsc2UgaWYgKGlzTWVyZ2VBcHBDb25maWdDYWxsKGJvb3RzdHJhcENhbGwuYXJndW1lbnRzWzFdKSkge1xuICAgIHRhcmdldENhbGwgPSBib290c3RyYXBDYWxsLmFyZ3VtZW50c1sxXTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgIGBDYW5ub3Qgc3RhdGljYWxseSBhbmFseXplIGJvb3RzdHJhcEFwcGxpY2F0aW9uIGNhbGwgaW4gJHtcbiAgICAgICAgYm9vdHN0cmFwQ2FsbC5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWVcbiAgICAgIH1gLFxuICAgICk7XG4gIH1cblxuICBhcHBseUNoYW5nZXNUb0ZpbGUodHJlZSwgbWFpbkZpbGVQYXRoLCBbXG4gICAgaW5zZXJ0QWZ0ZXJMYXN0T2NjdXJyZW5jZShcbiAgICAgIHRhcmdldENhbGwuYXJndW1lbnRzLFxuICAgICAgbmV3QXBwQ29uZmlnLFxuICAgICAgbWFpbkZpbGVQYXRoLFxuICAgICAgdGFyZ2V0Q2FsbC5nZXRFbmQoKSAtIDEsXG4gICAgKSxcbiAgXSk7XG59XG5cbi8qKlxuICogQWRkcyBhIHN0cmluZyBleHByZXNzaW9uIHRvIGFuIGFwcCBjb25maWcgb2JqZWN0LlxuICogQHBhcmFtIHRyZWUgRmlsZSB0cmVlIHVzZWQgdG8gbW9kaWZ5IHRoZSBwcm9qZWN0LlxuICogQHBhcmFtIGFwcENvbmZpZyBSZXNvbHZlZCBjb25maWd1cmF0aW9uIG9iamVjdCBvZiB0aGUgcHJvamVjdC5cbiAqIEBwYXJhbSBleHByZXNzaW9uIENvZGUgZXhwcmVzc2lvbiB0byBiZSBpbnNlcnRlZC5cbiAqL1xuZnVuY3Rpb24gYWRkUHJvdmlkZXJzRXhwcmVzc2lvblRvQXBwQ29uZmlnKFxuICB0cmVlOiBUcmVlLFxuICBhcHBDb25maWc6IFJlc29sdmVkQXBwQ29uZmlnLFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgeyBub2RlLCBmaWxlUGF0aCB9ID0gYXBwQ29uZmlnO1xuICBjb25zdCBjb25maWdQcm9wcyA9IG5vZGUucHJvcGVydGllcztcbiAgY29uc3QgcHJvdmlkZXJzTGl0ZXJhbCA9IGZpbmRQcm92aWRlcnNMaXRlcmFsKG5vZGUpO1xuXG4gIC8vIElmIHRoZXJlJ3MgYSBgcHJvdmlkZXJzYCBwcm9wZXJ0eSwgd2UgY2FuIGFkZCB0aGUgcHJvdmlkZXJcbiAgLy8gdG8gaXQsIG90aGVyd2lzZSB3ZSBuZWVkIHRvIGRlY2xhcmUgaXQgb3Vyc2VsdmVzLlxuICBpZiAocHJvdmlkZXJzTGl0ZXJhbCkge1xuICAgIGNvbnN0IGhhc1RyYWlsaW5nQ29tbWEgPSBwcm92aWRlcnNMaXRlcmFsLmVsZW1lbnRzLmhhc1RyYWlsaW5nQ29tbWE7XG5cbiAgICBhcHBseUNoYW5nZXNUb0ZpbGUodHJlZSwgZmlsZVBhdGgsIFtcbiAgICAgIGluc2VydEFmdGVyTGFzdE9jY3VycmVuY2UoXG4gICAgICAgIHByb3ZpZGVyc0xpdGVyYWwuZWxlbWVudHMsXG4gICAgICAgIChoYXNUcmFpbGluZ0NvbW1hIHx8IHByb3ZpZGVyc0xpdGVyYWwuZWxlbWVudHMubGVuZ3RoID09PSAwID8gJycgOiAnLCAnKSArIGV4cHJlc3Npb24sXG4gICAgICAgIGZpbGVQYXRoLFxuICAgICAgICBwcm92aWRlcnNMaXRlcmFsLmdldFN0YXJ0KCkgKyAxLFxuICAgICAgKSxcbiAgICBdKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwcm9wID0gdGFncy5pbmRlbnRCeSgyKWBwcm92aWRlcnM6IFske2V4cHJlc3Npb259XWA7XG4gICAgbGV0IHRvSW5zZXJ0OiBzdHJpbmc7XG4gICAgbGV0IGluc2VydFBvc2l0aW9uOiBudW1iZXI7XG5cbiAgICBpZiAoY29uZmlnUHJvcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0b0luc2VydCA9ICdcXG4nICsgcHJvcCArICdcXG4nO1xuICAgICAgaW5zZXJ0UG9zaXRpb24gPSBub2RlLmdldEVuZCgpIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGFzVHJhaWxpbmdDb21tYSA9IGNvbmZpZ1Byb3BzLmhhc1RyYWlsaW5nQ29tbWE7XG4gICAgICB0b0luc2VydCA9IChoYXNUcmFpbGluZ0NvbW1hID8gJycgOiAnLCcpICsgJ1xcbicgKyBwcm9wO1xuICAgICAgaW5zZXJ0UG9zaXRpb24gPSBjb25maWdQcm9wc1tjb25maWdQcm9wcy5sZW5ndGggLSAxXS5nZXRFbmQoKSArIChoYXNUcmFpbGluZ0NvbW1hID8gMSA6IDApO1xuICAgIH1cblxuICAgIGFwcGx5Q2hhbmdlc1RvRmlsZSh0cmVlLCBmaWxlUGF0aCwgW25ldyBJbnNlcnRDaGFuZ2UoZmlsZVBhdGgsIGluc2VydFBvc2l0aW9uLCB0b0luc2VydCldKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Tree } from '@angular-devkit/schematics';
9
+ import ts from '../../third_party/github.com/Microsoft/TypeScript/lib/typescript';
10
+ import { Change } from '../change';
11
+ /**
12
+ * Finds the main file of a project.
13
+ * @param tree File tree for the project.
14
+ * @param projectName Name of the project in which to search.
15
+ */
16
+ export declare function getMainFilePath(tree: Tree, projectName: string): Promise<string>;
17
+ /**
18
+ * Gets a TypeScript source file at a specific path.
19
+ * @param tree File tree of a project.
20
+ * @param path Path to the file.
21
+ */
22
+ export declare function getSourceFile(tree: Tree, path: string): ts.SourceFile;
23
+ /** Finds the call to `bootstrapApplication` within a file. */
24
+ export declare function findBootstrapApplicationCall(tree: Tree, mainFilePath: string): ts.CallExpression;
25
+ /**
26
+ * Applies a set of changes to a file.
27
+ * @param tree File tree of the project.
28
+ * @param path Path to the file that is being changed.
29
+ * @param changes Changes that should be applied to the file.
30
+ */
31
+ export declare function applyChangesToFile(tree: Tree, path: string, changes: Change[]): void;
32
+ /** Checks whether a node is a call to `mergeApplicationConfig`. */
33
+ export declare function isMergeAppConfigCall(node: ts.Node): node is ts.CallExpression;
34
+ /** Finds the `providers` array literal within an application config. */
35
+ export declare function findProvidersLiteral(config: ts.ObjectLiteralExpression): ts.ArrayLiteralExpression | null;
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.findProvidersLiteral = exports.isMergeAppConfigCall = exports.applyChangesToFile = exports.findBootstrapApplicationCall = exports.getSourceFile = exports.getMainFilePath = void 0;
14
+ const schematics_1 = require("@angular-devkit/schematics");
15
+ const typescript_1 = __importDefault(require("../../third_party/github.com/Microsoft/TypeScript/lib/typescript"));
16
+ const change_1 = require("../change");
17
+ const project_targets_1 = require("../project-targets");
18
+ const workspace_1 = require("../workspace");
19
+ /**
20
+ * Finds the main file of a project.
21
+ * @param tree File tree for the project.
22
+ * @param projectName Name of the project in which to search.
23
+ */
24
+ async function getMainFilePath(tree, projectName) {
25
+ const workspace = await (0, workspace_1.getWorkspace)(tree);
26
+ const project = workspace.projects.get(projectName);
27
+ const buildTarget = project?.targets.get('build');
28
+ if (!buildTarget) {
29
+ throw (0, project_targets_1.targetBuildNotFoundError)();
30
+ }
31
+ return (buildTarget.options || {}).main;
32
+ }
33
+ exports.getMainFilePath = getMainFilePath;
34
+ /**
35
+ * Gets a TypeScript source file at a specific path.
36
+ * @param tree File tree of a project.
37
+ * @param path Path to the file.
38
+ */
39
+ function getSourceFile(tree, path) {
40
+ const content = tree.readText(path);
41
+ const source = typescript_1.default.createSourceFile(path, content, typescript_1.default.ScriptTarget.Latest, true);
42
+ return source;
43
+ }
44
+ exports.getSourceFile = getSourceFile;
45
+ /** Finds the call to `bootstrapApplication` within a file. */
46
+ function findBootstrapApplicationCall(tree, mainFilePath) {
47
+ const sourceFile = getSourceFile(tree, mainFilePath);
48
+ const localName = findImportLocalName(sourceFile, 'bootstrapApplication', '@angular/platform-browser');
49
+ if (localName) {
50
+ let result = null;
51
+ sourceFile.forEachChild(function walk(node) {
52
+ if (typescript_1.default.isCallExpression(node) &&
53
+ typescript_1.default.isIdentifier(node.expression) &&
54
+ node.expression.text === localName) {
55
+ result = node;
56
+ }
57
+ if (!result) {
58
+ node.forEachChild(walk);
59
+ }
60
+ });
61
+ if (result) {
62
+ return result;
63
+ }
64
+ }
65
+ throw new schematics_1.SchematicsException(`Could not find bootstrapApplication call in ${mainFilePath}`);
66
+ }
67
+ exports.findBootstrapApplicationCall = findBootstrapApplicationCall;
68
+ /**
69
+ * Finds the local name of an imported symbol. Could be the symbol name itself or its alias.
70
+ * @param sourceFile File within which to search for the import.
71
+ * @param name Actual name of the import, not its local alias.
72
+ * @param moduleName Name of the module from which the symbol is imported.
73
+ */
74
+ function findImportLocalName(sourceFile, name, moduleName) {
75
+ for (const node of sourceFile.statements) {
76
+ // Only look for top-level imports.
77
+ if (!typescript_1.default.isImportDeclaration(node) ||
78
+ !typescript_1.default.isStringLiteral(node.moduleSpecifier) ||
79
+ node.moduleSpecifier.text !== moduleName) {
80
+ continue;
81
+ }
82
+ // Filter out imports that don't have the right shape.
83
+ if (!node.importClause ||
84
+ !node.importClause.namedBindings ||
85
+ !typescript_1.default.isNamedImports(node.importClause.namedBindings)) {
86
+ continue;
87
+ }
88
+ // Look through the elements of the declaration for the specific import.
89
+ for (const element of node.importClause.namedBindings.elements) {
90
+ if ((element.propertyName || element.name).text === name) {
91
+ // The local name is always in `name`.
92
+ return element.name.text;
93
+ }
94
+ }
95
+ }
96
+ return null;
97
+ }
98
+ /**
99
+ * Applies a set of changes to a file.
100
+ * @param tree File tree of the project.
101
+ * @param path Path to the file that is being changed.
102
+ * @param changes Changes that should be applied to the file.
103
+ */
104
+ function applyChangesToFile(tree, path, changes) {
105
+ if (changes.length > 0) {
106
+ const recorder = tree.beginUpdate(path);
107
+ (0, change_1.applyToUpdateRecorder)(recorder, changes);
108
+ tree.commitUpdate(recorder);
109
+ }
110
+ }
111
+ exports.applyChangesToFile = applyChangesToFile;
112
+ /** Checks whether a node is a call to `mergeApplicationConfig`. */
113
+ function isMergeAppConfigCall(node) {
114
+ if (!typescript_1.default.isCallExpression(node)) {
115
+ return false;
116
+ }
117
+ const localName = findImportLocalName(node.getSourceFile(), 'mergeApplicationConfig', '@angular/core');
118
+ return !!localName && typescript_1.default.isIdentifier(node.expression) && node.expression.text === localName;
119
+ }
120
+ exports.isMergeAppConfigCall = isMergeAppConfigCall;
121
+ /** Finds the `providers` array literal within an application config. */
122
+ function findProvidersLiteral(config) {
123
+ for (const prop of config.properties) {
124
+ if (typescript_1.default.isPropertyAssignment(prop) &&
125
+ typescript_1.default.isIdentifier(prop.name) &&
126
+ prop.name.text === 'providers' &&
127
+ typescript_1.default.isArrayLiteralExpression(prop.initializer)) {
128
+ return prop.initializer;
129
+ }
130
+ }
131
+ return null;
132
+ }
133
+ exports.findProvidersLiteral = findProvidersLiteral;
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L3N0YW5kYWxvbmUvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7QUFFSCwyREFBdUU7QUFDdkUsa0hBQWtGO0FBQ2xGLHNDQUEwRDtBQUMxRCx3REFBOEQ7QUFDOUQsNENBQTRDO0FBRzVDOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsZUFBZSxDQUFDLElBQVUsRUFBRSxXQUFtQjtJQUNuRSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsd0JBQVksRUFBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsRCxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE1BQU0sSUFBQSwwQ0FBd0IsR0FBRSxDQUFDO0tBQ2xDO0lBRUQsT0FBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFzQyxDQUFDLElBQUksQ0FBQztBQUNoRixDQUFDO0FBVkQsMENBVUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLElBQVUsRUFBRSxJQUFZO0lBQ3BELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsTUFBTSxNQUFNLEdBQUcsb0JBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLG9CQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVoRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBTEQsc0NBS0M7QUFF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QixDQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQ3BCLHdCQUF3QixFQUN4QixlQUFlLENBQ2hCLENBQUM7SUFFRixPQUFPLENBQUMsQ0FBQyxTQUFTLElBQUksb0JBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztBQUMvRixDQUFDO0FBWkQsb0RBWUM7QUFFRCx3RUFBd0U7QUFDeEUsU0FBZ0Isb0JBQW9CLENBQ2xDLE1BQWtDO0lBRWxDLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUNwQyxJQUNFLG9CQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQzdCLG9CQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVztZQUM5QixvQkFBRSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDN0M7WUFDQSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDekI7S0FDRjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQWZELG9EQWVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IFNjaGVtYXRpY3NFeGNlcHRpb24sIFRyZWUgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG5pbXBvcnQgdHMgZnJvbSAnLi4vLi4vdGhpcmRfcGFydHkvZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9saWIvdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBDaGFuZ2UsIGFwcGx5VG9VcGRhdGVSZWNvcmRlciB9IGZyb20gJy4uL2NoYW5nZSc7XG5pbXBvcnQgeyB0YXJnZXRCdWlsZE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi9wcm9qZWN0LXRhcmdldHMnO1xuaW1wb3J0IHsgZ2V0V29ya3NwYWNlIH0gZnJvbSAnLi4vd29ya3NwYWNlJztcbmltcG9ydCB7IEJyb3dzZXJCdWlsZGVyT3B0aW9ucyB9IGZyb20gJy4uL3dvcmtzcGFjZS1tb2RlbHMnO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBtYWluIGZpbGUgb2YgYSBwcm9qZWN0LlxuICogQHBhcmFtIHRyZWUgRmlsZSB0cmVlIGZvciB0aGUgcHJvamVjdC5cbiAqIEBwYXJhbSBwcm9qZWN0TmFtZSBOYW1lIG9mIHRoZSBwcm9qZWN0IGluIHdoaWNoIHRvIHNlYXJjaC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE1haW5GaWxlUGF0aCh0cmVlOiBUcmVlLCBwcm9qZWN0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgd29ya3NwYWNlID0gYXdhaXQgZ2V0V29ya3NwYWNlKHRyZWUpO1xuICBjb25zdCBwcm9qZWN0ID0gd29ya3NwYWNlLnByb2plY3RzLmdldChwcm9qZWN0TmFtZSk7XG4gIGNvbnN0IGJ1aWxkVGFyZ2V0ID0gcHJvamVjdD8udGFyZ2V0cy5nZXQoJ2J1aWxkJyk7XG5cbiAgaWYgKCFidWlsZFRhcmdldCkge1xuICAgIHRocm93IHRhcmdldEJ1aWxkTm90Rm91bmRFcnJvcigpO1xuICB9XG5cbiAgcmV0dXJuICgoYnVpbGRUYXJnZXQub3B0aW9ucyB8fCB7fSkgYXMgdW5rbm93biBhcyBCcm93c2VyQnVpbGRlck9wdGlvbnMpLm1haW47XG59XG5cbi8qKlxuICogR2V0cyBhIFR5cGVTY3JpcHQgc291cmNlIGZpbGUgYXQgYSBzcGVjaWZpYyBwYXRoLlxuICogQHBhcmFtIHRyZWUgRmlsZSB0cmVlIG9mIGEgcHJvamVjdC5cbiAqIEBwYXJhbSBwYXRoIFBhdGggdG8gdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3VyY2VGaWxlKHRyZWU6IFRyZWUsIHBhdGg6IHN0cmluZyk6IHRzLlNvdXJjZUZpbGUge1xuICBjb25zdCBjb250ZW50ID0gdHJlZS5yZWFkVGV4dChwYXRoKTtcbiAgY29uc3Qgc291cmNlID0gdHMuY3JlYXRlU291cmNlRmlsZShwYXRoLCBjb250ZW50LCB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LCB0cnVlKTtcblxuICByZXR1cm4gc291cmNlO1xufVxuXG4vKiogRmluZHMgdGhlIGNhbGwgdG8gYGJvb3RzdHJhcEFwcGxpY2F0aW9uYCB3aXRoaW4gYSBmaWxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRCb290c3RyYXBBcHBsaWNhdGlvbkNhbGwodHJlZTogVHJlZSwgbWFpbkZpbGVQYXRoOiBzdHJpbmcpOiB0cy5DYWxsRXhwcmVzc2lvbiB7XG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBnZXRTb3VyY2VGaWxlKHRyZWUsIG1haW5GaWxlUGF0aCk7XG4gIGNvbnN0IGxvY2FsTmFtZSA9IGZpbmRJbXBvcnRMb2NhbE5hbWUoXG4gICAgc291cmNlRmlsZSxcbiAgICAnYm9vdHN0cmFwQXBwbGljYXRpb24nLFxuICAgICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJyxcbiAgKTtcblxuICBpZiAobG9jYWxOYW1lKSB7XG4gICAgbGV0IHJlc3VsdDogdHMuQ2FsbEV4cHJlc3Npb24gfCBudWxsID0gbnVsbDtcblxuICAgIHNvdXJjZUZpbGUuZm9yRWFjaENoaWxkKGZ1bmN0aW9uIHdhbGsobm9kZSkge1xuICAgICAgaWYgKFxuICAgICAgICB0cy5pc0NhbGxFeHByZXNzaW9uKG5vZGUpICYmXG4gICAgICAgIHRzLmlzSWRlbnRpZmllcihub2RlLmV4cHJlc3Npb24pICYmXG4gICAgICAgIG5vZGUuZXhwcmVzc2lvbi50ZXh0ID09PSBsb2NhbE5hbWVcbiAgICAgICkge1xuICAgICAgICByZXN1bHQgPSBub2RlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBub2RlLmZvckVhY2hDaGlsZCh3YWxrKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oYENvdWxkIG5vdCBmaW5kIGJvb3RzdHJhcEFwcGxpY2F0aW9uIGNhbGwgaW4gJHttYWluRmlsZVBhdGh9YCk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGxvY2FsIG5hbWUgb2YgYW4gaW1wb3J0ZWQgc3ltYm9sLiBDb3VsZCBiZSB0aGUgc3ltYm9sIG5hbWUgaXRzZWxmIG9yIGl0cyBhbGlhcy5cbiAqIEBwYXJhbSBzb3VyY2VGaWxlIEZpbGUgd2l0aGluIHdoaWNoIHRvIHNlYXJjaCBmb3IgdGhlIGltcG9ydC5cbiAqIEBwYXJhbSBuYW1lIEFjdHVhbCBuYW1lIG9mIHRoZSBpbXBvcnQsIG5vdCBpdHMgbG9jYWwgYWxpYXMuXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBOYW1lIG9mIHRoZSBtb2R1bGUgZnJvbSB3aGljaCB0aGUgc3ltYm9sIGlzIGltcG9ydGVkLlxuICovXG5mdW5jdGlvbiBmaW5kSW1wb3J0TG9jYWxOYW1lKFxuICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICBuYW1lOiBzdHJpbmcsXG4gIG1vZHVsZU5hbWU6IHN0cmluZyxcbik6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKGNvbnN0IG5vZGUgb2Ygc291cmNlRmlsZS5zdGF0ZW1lbnRzKSB7XG4gICAgLy8gT25seSBsb29rIGZvciB0b3AtbGV2ZWwgaW1wb3J0cy5cbiAgICBpZiAoXG4gICAgICAhdHMuaXNJbXBvcnREZWNsYXJhdGlvbihub2RlKSB8fFxuICAgICAgIXRzLmlzU3RyaW5nTGl0ZXJhbChub2RlLm1vZHVsZVNwZWNpZmllcikgfHxcbiAgICAgIG5vZGUubW9kdWxlU3BlY2lmaWVyLnRleHQgIT09IG1vZHVsZU5hbWVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBvdXQgaW1wb3J0cyB0aGF0IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHNoYXBlLlxuICAgIGlmIChcbiAgICAgICFub2RlLmltcG9ydENsYXVzZSB8fFxuICAgICAgIW5vZGUuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MgfHxcbiAgICAgICF0cy5pc05hbWVkSW1wb3J0cyhub2RlLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKVxuICAgICkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gTG9vayB0aHJvdWdoIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVjbGFyYXRpb24gZm9yIHRoZSBzcGVjaWZpYyBpbXBvcnQuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIG5vZGUuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MuZWxlbWVudHMpIHtcbiAgICAgIGlmICgoZWxlbWVudC5wcm9wZXJ0eU5hbWUgfHwgZWxlbWVudC5uYW1lKS50ZXh0ID09PSBuYW1lKSB7XG4gICAgICAgIC8vIFRoZSBsb2NhbCBuYW1lIGlzIGFsd2F5cyBpbiBgbmFtZWAuXG4gICAgICAgIHJldHVybiBlbGVtZW50Lm5hbWUudGV4dDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2V0IG9mIGNoYW5nZXMgdG8gYSBmaWxlLlxuICogQHBhcmFtIHRyZWUgRmlsZSB0cmVlIG9mIHRoZSBwcm9qZWN0LlxuICogQHBhcmFtIHBhdGggUGF0aCB0byB0aGUgZmlsZSB0aGF0IGlzIGJlaW5nIGNoYW5nZWQuXG4gKiBAcGFyYW0gY2hhbmdlcyBDaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNoYW5nZXNUb0ZpbGUodHJlZTogVHJlZSwgcGF0aDogc3RyaW5nLCBjaGFuZ2VzOiBDaGFuZ2VbXSkge1xuICBpZiAoY2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgcmVjb3JkZXIgPSB0cmVlLmJlZ2luVXBkYXRlKHBhdGgpO1xuICAgIGFwcGx5VG9VcGRhdGVSZWNvcmRlcihyZWNvcmRlciwgY2hhbmdlcyk7XG4gICAgdHJlZS5jb21taXRVcGRhdGUocmVjb3JkZXIpO1xuICB9XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciBhIG5vZGUgaXMgYSBjYWxsIHRvIGBtZXJnZUFwcGxpY2F0aW9uQ29uZmlnYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01lcmdlQXBwQ29uZmlnQ2FsbChub2RlOiB0cy5Ob2RlKTogbm9kZSBpcyB0cy5DYWxsRXhwcmVzc2lvbiB7XG4gIGlmICghdHMuaXNDYWxsRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGxvY2FsTmFtZSA9IGZpbmRJbXBvcnRMb2NhbE5hbWUoXG4gICAgbm9kZS5nZXRTb3VyY2VGaWxlKCksXG4gICAgJ21lcmdlQXBwbGljYXRpb25Db25maWcnLFxuICAgICdAYW5ndWxhci9jb3JlJyxcbiAgKTtcblxuICByZXR1cm4gISFsb2NhbE5hbWUgJiYgdHMuaXNJZGVudGlmaWVyKG5vZGUuZXhwcmVzc2lvbikgJiYgbm9kZS5leHByZXNzaW9uLnRleHQgPT09IGxvY2FsTmFtZTtcbn1cblxuLyoqIEZpbmRzIHRoZSBgcHJvdmlkZXJzYCBhcnJheSBsaXRlcmFsIHdpdGhpbiBhbiBhcHBsaWNhdGlvbiBjb25maWcuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFByb3ZpZGVyc0xpdGVyYWwoXG4gIGNvbmZpZzogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sXG4pOiB0cy5BcnJheUxpdGVyYWxFeHByZXNzaW9uIHwgbnVsbCB7XG4gIGZvciAoY29uc3QgcHJvcCBvZiBjb25maWcucHJvcGVydGllcykge1xuICAgIGlmIChcbiAgICAgIHRzLmlzUHJvcGVydHlBc3NpZ25tZW50KHByb3ApICYmXG4gICAgICB0cy5pc0lkZW50aWZpZXIocHJvcC5uYW1lKSAmJlxuICAgICAgcHJvcC5uYW1lLnRleHQgPT09ICdwcm92aWRlcnMnICYmXG4gICAgICB0cy5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24ocHJvcC5pbml0aWFsaXplcilcbiAgICApIHtcbiAgICAgIHJldHVybiBwcm9wLmluaXRpYWxpemVyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIl19
@@ -12,7 +12,7 @@ var ProjectType;
12
12
  (function (ProjectType) {
13
13
  ProjectType["Application"] = "application";
14
14
  ProjectType["Library"] = "library";
15
- })(ProjectType = exports.ProjectType || (exports.ProjectType = {}));
15
+ })(ProjectType || (exports.ProjectType = ProjectType = {}));
16
16
  /**
17
17
  * An enum of the official Angular builders.
18
18
  * Each enum value provides the fully qualified name of the associated builder.
@@ -31,5 +31,5 @@ var Builders;
31
31
  Builders["DevServer"] = "@angular-devkit/build-angular:dev-server";
32
32
  Builders["ExtractI18n"] = "@angular-devkit/build-angular:extract-i18n";
33
33
  Builders["Protractor"] = "@angular-devkit/build-angular:protractor";
34
- })(Builders = exports.Builders || (exports.Builders = {}));
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L3dvcmtzcGFjZS1tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDBDQUEyQixDQUFBO0lBQzNCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQUd0QjtBQUVEOzs7OztHQUtHO0FBQ0gsSUFBWSxRQVdYO0FBWEQsV0FBWSxRQUFRO0lBQ2xCLGdFQUFvRCxDQUFBO0lBQ3BELDJEQUErQyxDQUFBO0lBQy9DLDZEQUFpRCxDQUFBO0lBQ2pELHlEQUE2QyxDQUFBO0lBQzdDLDJEQUErQyxDQUFBO0lBQy9DLDBFQUE4RCxDQUFBO0lBQzlELGtFQUFzRCxDQUFBO0lBQ3RELGtFQUFzRCxDQUFBO0lBQ3RELHNFQUEwRCxDQUFBO0lBQzFELG1FQUF1RCxDQUFBO0FBQ3pELENBQUMsRUFYVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVduQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgZW51bSBQcm9qZWN0VHlwZSB7XG4gIEFwcGxpY2F0aW9uID0gJ2FwcGxpY2F0aW9uJyxcbiAgTGlicmFyeSA9ICdsaWJyYXJ5Jyxcbn1cblxuLyoqXG4gKiBBbiBlbnVtIG9mIHRoZSBvZmZpY2lhbCBBbmd1bGFyIGJ1aWxkZXJzLlxuICogRWFjaCBlbnVtIHZhbHVlIHByb3ZpZGVzIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgYXNzb2NpYXRlZCBidWlsZGVyLlxuICogVGhpcyBlbnVtIGNhbiBiZSB1c2VkIHdoZW4gYW5hbHl6aW5nIHRoZSBgYnVpbGRlcmAgZmllbGRzIG9mIHByb2plY3QgY29uZmlndXJhdGlvbnMgZnJvbSB0aGVcbiAqIGBhbmd1bGFyLmpzb25gIHdvcmtzcGFjZSBmaWxlLlxuICovXG5leHBvcnQgZW51bSBCdWlsZGVycyB7XG4gIEFwcFNoZWxsID0gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOmFwcC1zaGVsbCcsXG4gIFNlcnZlciA9ICdAYW5ndWxhci1kZXZraXQvYnVpbGQtYW5ndWxhcjpzZXJ2ZXInLFxuICBCcm93c2VyID0gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOmJyb3dzZXInLFxuICBLYXJtYSA9ICdAYW5ndWxhci1kZXZraXQvYnVpbGQtYW5ndWxhcjprYXJtYScsXG4gIFRzTGludCA9ICdAYW5ndWxhci1kZXZraXQvYnVpbGQtYW5ndWxhcjp0c2xpbnQnLFxuICBEZXByZWNhdGVkTmdQYWNrYWdyID0gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1uZy1wYWNrYWdyOmJ1aWxkJyxcbiAgTmdQYWNrYWdyID0gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOm5nLXBhY2thZ3InLFxuICBEZXZTZXJ2ZXIgPSAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6ZGV2LXNlcnZlcicsXG4gIEV4dHJhY3RJMThuID0gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOmV4dHJhY3QtaTE4bicsXG4gIFByb3RyYWN0b3IgPSAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6cHJvdHJhY3RvcicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVJlcGxhY2VtZW50cyB7XG4gIHJlcGxhY2U6IHN0cmluZztcbiAgd2l0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJCdWlsZGVyQmFzZU9wdGlvbnMge1xuICBtYWluOiBzdHJpbmc7XG4gIHRzQ29uZmlnOiBzdHJpbmc7XG4gIGZpbGVSZXBsYWNlbWVudHM/OiBGaWxlUmVwbGFjZW1lbnRzW107XG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG4gIGluZGV4Pzogc3RyaW5nO1xuICBwb2x5ZmlsbHM6IHN0cmluZztcbiAgYXNzZXRzPzogKG9iamVjdCB8IHN0cmluZylbXTtcbiAgc3R5bGVzPzogKG9iamVjdCB8IHN0cmluZylbXTtcbiAgc2NyaXB0cz86IChvYmplY3QgfCBzdHJpbmcpW107XG4gIHNvdXJjZU1hcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIE91dHB1dEhhc2hpbmcgPSAnYWxsJyB8ICdtZWRpYScgfCAnbm9uZScgfCAnYnVuZGxlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlckJ1aWxkZXJPcHRpb25zIGV4dGVuZHMgQnJvd3NlckJ1aWxkZXJCYXNlT3B0aW9ucyB7XG4gIHNlcnZpY2VXb3JrZXI/OiBib29sZWFuO1xuICBvcHRpbWl6YXRpb24/OiBib29sZWFuO1xuICBvdXRwdXRIYXNoaW5nPzogT3V0cHV0SGFzaGluZztcbiAgcmVzb3VyY2VzT3V0cHV0UGF0aD86IHN0cmluZztcbiAgbmFtZWRDaHVua3M/OiBib29sZWFuO1xuICBhb3Q/OiBib29sZWFuO1xuICBleHRyYWN0TGljZW5zZXM/OiBib29sZWFuO1xuICB2ZW5kb3JDaHVuaz86IGJvb2xlYW47XG4gIGJ1aWxkT3B0aW1pemVyPzogYm9vbGVhbjtcbiAgbmdzd0NvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gIGJ1ZGdldHM/OiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG1heGltdW1XYXJuaW5nPzogc3RyaW5nO1xuICAgIG1heGltdW1FcnJvcj86IHN0cmluZztcbiAgfVtdO1xuICB3ZWJXb3JrZXJUc0NvbmZpZz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZUJ1aWxkZXJPcHRpb25zIHtcbiAgYnJvd3NlclRhcmdldDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBMaWJyYXJ5QnVpbGRlck9wdGlvbnMge1xuICB0c0NvbmZpZzogc3RyaW5nO1xuICBwcm9qZWN0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyQnVpbGRlck9wdGlvbnMge1xuICBvdXRwdXRQYXRoOiBzdHJpbmc7XG4gIHRzQ29uZmlnOiBzdHJpbmc7XG4gIG1haW46IHN0cmluZztcbiAgZmlsZVJlcGxhY2VtZW50cz86IEZpbGVSZXBsYWNlbWVudHNbXTtcbiAgb3B0aW1pemF0aW9uPzpcbiAgICB8IGJvb2xlYW5cbiAgICB8IHtcbiAgICAgICAgc2NyaXB0cz86IGJvb2xlYW47XG4gICAgICAgIHN0eWxlcz86IGJvb2xlYW47XG4gICAgICB9O1xuICBzb3VyY2VNYXA/OlxuICAgIHwgYm9vbGVhblxuICAgIHwge1xuICAgICAgICBzY3JpcHRzPzogYm9vbGVhbjtcbiAgICAgICAgc3R5bGVzPzogYm9vbGVhbjtcbiAgICAgICAgaGlkZGVuPzogYm9vbGVhbjtcbiAgICAgICAgdmVuZG9yPzogYm9vbGVhbjtcbiAgICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwU2hlbGxCdWlsZGVyT3B0aW9ucyB7XG4gIGJyb3dzZXJUYXJnZXQ6IHN0cmluZztcbiAgc2VydmVyVGFyZ2V0OiBzdHJpbmc7XG4gIHJvdXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdEJ1aWxkZXJPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxCcm93c2VyQnVpbGRlckJhc2VPcHRpb25zPiB7XG4gIGthcm1hQ29uZmlnOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdEkxOG5PcHRpb25zIHtcbiAgYnJvd3NlclRhcmdldDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEUyRU9wdGlvbnMge1xuICBwcm90cmFjdG9yQ29uZmlnOiBzdHJpbmc7XG4gIGRldlNlcnZlclRhcmdldDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJUYXJnZXQ8VEJ1aWxkZXIgZXh0ZW5kcyBCdWlsZGVycywgVE9wdGlvbnM+IHtcbiAgYnVpbGRlcjogVEJ1aWxkZXI7XG4gIG9wdGlvbnM6IFRPcHRpb25zO1xuICBjb25maWd1cmF0aW9ucz86IHtcbiAgICBwcm9kdWN0aW9uOiBQYXJ0aWFsPFRPcHRpb25zPjtcbiAgICBba2V5OiBzdHJpbmddOiBQYXJ0aWFsPFRPcHRpb25zPjtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgTGlicmFyeUJ1aWxkZXJUYXJnZXQgPSBCdWlsZGVyVGFyZ2V0PEJ1aWxkZXJzLk5nUGFja2FnciwgTGlicmFyeUJ1aWxkZXJPcHRpb25zPjtcbmV4cG9ydCB0eXBlIEJyb3dzZXJCdWlsZGVyVGFyZ2V0ID0gQnVpbGRlclRhcmdldDxCdWlsZGVycy5Ccm93c2VyLCBCcm93c2VyQnVpbGRlck9wdGlvbnM+O1xuZXhwb3J0IHR5cGUgU2VydmVyQnVpbGRlclRhcmdldCA9IEJ1aWxkZXJUYXJnZXQ8QnVpbGRlcnMuU2VydmVyLCBTZXJ2ZXJCdWlsZGVyT3B0aW9ucz47XG5leHBvcnQgdHlwZSBBcHBTaGVsbEJ1aWxkZXJUYXJnZXQgPSBCdWlsZGVyVGFyZ2V0PEJ1aWxkZXJzLkFwcFNoZWxsLCBBcHBTaGVsbEJ1aWxkZXJPcHRpb25zPjtcbmV4cG9ydCB0eXBlIFRlc3RCdWlsZGVyVGFyZ2V0ID0gQnVpbGRlclRhcmdldDxCdWlsZGVycy5LYXJtYSwgVGVzdEJ1aWxkZXJPcHRpb25zPjtcbmV4cG9ydCB0eXBlIFNlcnZlQnVpbGRlclRhcmdldCA9IEJ1aWxkZXJUYXJnZXQ8QnVpbGRlcnMuRGV2U2VydmVyLCBTZXJ2ZUJ1aWxkZXJPcHRpb25zPjtcbmV4cG9ydCB0eXBlIEV4dHJhY3RJMThuQnVpbGRlclRhcmdldCA9IEJ1aWxkZXJUYXJnZXQ8QnVpbGRlcnMuRXh0cmFjdEkxOG4sIEV4dHJhY3RJMThuT3B0aW9ucz47XG5leHBvcnQgdHlwZSBFMkVCdWlsZGVyVGFyZ2V0ID0gQnVpbGRlclRhcmdldDxCdWlsZGVycy5Qcm90cmFjdG9yLCBFMkVPcHRpb25zPjtcblxuaW50ZXJmYWNlIFdvcmtzcGFjZUNMSVNjaGVtYSB7XG4gIHdhcm5pbmdzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gIHNjaGVtYXRpY0NvbGxlY3Rpb25zPzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVNjaGVtYSB7XG4gIHZlcnNpb246IDE7XG4gIGNsaT86IFdvcmtzcGFjZUNMSVNjaGVtYTtcbiAgcHJvamVjdHM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBXb3Jrc3BhY2VQcm9qZWN0PFByb2plY3RUeXBlLkFwcGxpY2F0aW9uIHwgUHJvamVjdFR5cGUuTGlicmFyeT47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlUHJvamVjdDxUUHJvamVjdFR5cGUgZXh0ZW5kcyBQcm9qZWN0VHlwZSA9IFByb2plY3RUeXBlLkFwcGxpY2F0aW9uPiB7XG4gIC8qKlxuICAgKiBQcm9qZWN0IHR5cGUuXG4gICAqL1xuICBwcm9qZWN0VHlwZTogUHJvamVjdFR5cGU7XG5cbiAgcm9vdDogc3RyaW5nO1xuICBzb3VyY2VSb290OiBzdHJpbmc7XG4gIHByZWZpeDogc3RyaW5nO1xuXG4gIGNsaT86IFdvcmtzcGFjZUNMSVNjaGVtYTtcblxuICAvKipcbiAgICogVG9vbCBvcHRpb25zLlxuICAgKi9cbiAgYXJjaGl0ZWN0PzogV29ya3NwYWNlVGFyZ2V0czxUUHJvamVjdFR5cGU+O1xuICAvKipcbiAgICogVG9vbCBvcHRpb25zLlxuICAgKi9cbiAgdGFyZ2V0cz86IFdvcmtzcGFjZVRhcmdldHM8VFByb2plY3RUeXBlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VUYXJnZXRzPFRQcm9qZWN0VHlwZSBleHRlbmRzIFByb2plY3RUeXBlID0gUHJvamVjdFR5cGUuQXBwbGljYXRpb24+IHtcbiAgYnVpbGQ/OiBUUHJvamVjdFR5cGUgZXh0ZW5kcyBQcm9qZWN0VHlwZS5MaWJyYXJ5ID8gTGlicmFyeUJ1aWxkZXJUYXJnZXQgOiBCcm93c2VyQnVpbGRlclRhcmdldDtcbiAgc2VydmVyPzogU2VydmVyQnVpbGRlclRhcmdldDtcbiAgdGVzdD86IFRlc3RCdWlsZGVyVGFyZ2V0O1xuICBzZXJ2ZT86IFNlcnZlQnVpbGRlclRhcmdldDtcbiAgZTJlPzogRTJFQnVpbGRlclRhcmdldDtcbiAgJ2FwcC1zaGVsbCc/OiBBcHBTaGVsbEJ1aWxkZXJUYXJnZXQ7XG4gICdleHRyYWN0LWkxOG4nPzogRXh0cmFjdEkxOG5CdWlsZGVyVGFyZ2V0O1xuICAvLyBUT0RPKGhhbnMpOiBjaGFuZ2UgdGhpcyBhbnkgdG8gdW5rbm93biB3aGVuIGdvb2dsZTMgc3VwcG9ydHMgVHlwZVNjcmlwdCAzLjAuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbiJdfQ==
34
+ })(Builders || (exports.Builders = Builders = {}));
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L3dvcmtzcGFjZS1tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDBDQUEyQixDQUFBO0lBQzNCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFFRDs7Ozs7R0FLRztBQUNILElBQVksUUFXWDtBQVhELFdBQVksUUFBUTtJQUNsQixnRUFBb0QsQ0FBQTtJQUNwRCwyREFBK0MsQ0FBQTtJQUMvQyw2REFBaUQsQ0FBQTtJQUNqRCx5REFBNkMsQ0FBQTtJQUM3QywyREFBK0MsQ0FBQTtJQUMvQywwRUFBOEQsQ0FBQTtJQUM5RCxrRUFBc0QsQ0FBQTtJQUN0RCxrRUFBc0QsQ0FBQTtJQUN0RCxzRUFBMEQsQ0FBQTtJQUMxRCxtRUFBdUQsQ0FBQTtBQUN6RCxDQUFDLEVBWFcsUUFBUSx3QkFBUixRQUFRLFFBV25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCBlbnVtIFByb2plY3RUeXBlIHtcbiAgQXBwbGljYXRpb24gPSAnYXBwbGljYXRpb24nLFxuICBMaWJyYXJ5ID0gJ2xpYnJhcnknLFxufVxuXG4vKipcbiAqIEFuIGVudW0gb2YgdGhlIG9mZmljaWFsIEFuZ3VsYXIgYnVpbGRlcnMuXG4gKiBFYWNoIGVudW0gdmFsdWUgcHJvdmlkZXMgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBhc3NvY2lhdGVkIGJ1aWxkZXIuXG4gKiBUaGlzIGVudW0gY2FuIGJlIHVzZWQgd2hlbiBhbmFseXppbmcgdGhlIGBidWlsZGVyYCBmaWVsZHMgb2YgcHJvamVjdCBjb25maWd1cmF0aW9ucyBmcm9tIHRoZVxuICogYGFuZ3VsYXIuanNvbmAgd29ya3NwYWNlIGZpbGUuXG4gKi9cbmV4cG9ydCBlbnVtIEJ1aWxkZXJzIHtcbiAgQXBwU2hlbGwgPSAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6YXBwLXNoZWxsJyxcbiAgU2VydmVyID0gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOnNlcnZlcicsXG4gIEJyb3dzZXIgPSAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6YnJvd3NlcicsXG4gIEthcm1hID0gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOmthcm1hJyxcbiAgVHNMaW50ID0gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOnRzbGludCcsXG4gIERlcHJlY2F0ZWROZ1BhY2thZ3IgPSAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLW5nLXBhY2thZ3I6YnVpbGQnLFxuICBOZ1BhY2thZ3IgPSAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6bmctcGFja2FncicsXG4gIERldlNlcnZlciA9ICdAYW5ndWxhci1kZXZraXQvYnVpbGQtYW5ndWxhcjpkZXYtc2VydmVyJyxcbiAgRXh0cmFjdEkxOG4gPSAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6ZXh0cmFjdC1pMThuJyxcbiAgUHJvdHJhY3RvciA9ICdAYW5ndWxhci1kZXZraXQvYnVpbGQtYW5ndWxhcjpwcm90cmFjdG9yJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlUmVwbGFjZW1lbnRzIHtcbiAgcmVwbGFjZTogc3RyaW5nO1xuICB3aXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlckJ1aWxkZXJCYXNlT3B0aW9ucyB7XG4gIG1haW46IHN0cmluZztcbiAgdHNDb25maWc6IHN0cmluZztcbiAgZmlsZVJlcGxhY2VtZW50cz86IEZpbGVSZXBsYWNlbWVudHNbXTtcbiAgb3V0cHV0UGF0aD86IHN0cmluZztcbiAgaW5kZXg/OiBzdHJpbmc7XG4gIHBvbHlmaWxsczogc3RyaW5nO1xuICBhc3NldHM/OiAob2JqZWN0IHwgc3RyaW5nKVtdO1xuICBzdHlsZXM/OiAob2JqZWN0IHwgc3RyaW5nKVtdO1xuICBzY3JpcHRzPzogKG9iamVjdCB8IHN0cmluZylbXTtcbiAgc291cmNlTWFwPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgT3V0cHV0SGFzaGluZyA9ICdhbGwnIHwgJ21lZGlhJyB8ICdub25lJyB8ICdidW5kbGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBCcm93c2VyQnVpbGRlck9wdGlvbnMgZXh0ZW5kcyBCcm93c2VyQnVpbGRlckJhc2VPcHRpb25zIHtcbiAgc2VydmljZVdvcmtlcj86IGJvb2xlYW47XG4gIG9wdGltaXphdGlvbj86IGJvb2xlYW47XG4gIG91dHB1dEhhc2hpbmc/OiBPdXRwdXRIYXNoaW5nO1xuICByZXNvdXJjZXNPdXRwdXRQYXRoPzogc3RyaW5nO1xuICBuYW1lZENodW5rcz86IGJvb2xlYW47XG4gIGFvdD86IGJvb2xlYW47XG4gIGV4dHJhY3RMaWNlbnNlcz86IGJvb2xlYW47XG4gIHZlbmRvckNodW5rPzogYm9vbGVhbjtcbiAgYnVpbGRPcHRpbWl6ZXI/OiBib29sZWFuO1xuICBuZ3N3Q29uZmlnUGF0aD86IHN0cmluZztcbiAgYnVkZ2V0cz86IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgbWF4aW11bVdhcm5pbmc/OiBzdHJpbmc7XG4gICAgbWF4aW11bUVycm9yPzogc3RyaW5nO1xuICB9W107XG4gIHdlYldvcmtlclRzQ29uZmlnPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlQnVpbGRlck9wdGlvbnMge1xuICBicm93c2VyVGFyZ2V0OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIExpYnJhcnlCdWlsZGVyT3B0aW9ucyB7XG4gIHRzQ29uZmlnOiBzdHJpbmc7XG4gIHByb2plY3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJCdWlsZGVyT3B0aW9ucyB7XG4gIG91dHB1dFBhdGg6IHN0cmluZztcbiAgdHNDb25maWc6IHN0cmluZztcbiAgbWFpbjogc3RyaW5nO1xuICBmaWxlUmVwbGFjZW1lbnRzPzogRmlsZVJlcGxhY2VtZW50c1tdO1xuICBvcHRpbWl6YXRpb24/OlxuICAgIHwgYm9vbGVhblxuICAgIHwge1xuICAgICAgICBzY3JpcHRzPzogYm9vbGVhbjtcbiAgICAgICAgc3R5bGVzPzogYm9vbGVhbjtcbiAgICAgIH07XG4gIHNvdXJjZU1hcD86XG4gICAgfCBib29sZWFuXG4gICAgfCB7XG4gICAgICAgIHNjcmlwdHM/OiBib29sZWFuO1xuICAgICAgICBzdHlsZXM/OiBib29sZWFuO1xuICAgICAgICBoaWRkZW4/OiBib29sZWFuO1xuICAgICAgICB2ZW5kb3I/OiBib29sZWFuO1xuICAgICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBTaGVsbEJ1aWxkZXJPcHRpb25zIHtcbiAgYnJvd3NlclRhcmdldDogc3RyaW5nO1xuICBzZXJ2ZXJUYXJnZXQ6IHN0cmluZztcbiAgcm91dGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0QnVpbGRlck9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEJyb3dzZXJCdWlsZGVyQmFzZU9wdGlvbnM+IHtcbiAga2FybWFDb25maWc6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0STE4bk9wdGlvbnMge1xuICBicm93c2VyVGFyZ2V0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRTJFT3B0aW9ucyB7XG4gIHByb3RyYWN0b3JDb25maWc6IHN0cmluZztcbiAgZGV2U2VydmVyVGFyZ2V0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlclRhcmdldDxUQnVpbGRlciBleHRlbmRzIEJ1aWxkZXJzLCBUT3B0aW9ucz4ge1xuICBidWlsZGVyOiBUQnVpbGRlcjtcbiAgb3B0aW9uczogVE9wdGlvbnM7XG4gIGNvbmZpZ3VyYXRpb25zPzoge1xuICAgIHByb2R1Y3Rpb246IFBhcnRpYWw8VE9wdGlvbnM+O1xuICAgIFtrZXk6IHN0cmluZ106IFBhcnRpYWw8VE9wdGlvbnM+O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMaWJyYXJ5QnVpbGRlclRhcmdldCA9IEJ1aWxkZXJUYXJnZXQ8QnVpbGRlcnMuTmdQYWNrYWdyLCBMaWJyYXJ5QnVpbGRlck9wdGlvbnM+O1xuZXhwb3J0IHR5cGUgQnJvd3NlckJ1aWxkZXJUYXJnZXQgPSBCdWlsZGVyVGFyZ2V0PEJ1aWxkZXJzLkJyb3dzZXIsIEJyb3dzZXJCdWlsZGVyT3B0aW9ucz47XG5leHBvcnQgdHlwZSBTZXJ2ZXJCdWlsZGVyVGFyZ2V0ID0gQnVpbGRlclRhcmdldDxCdWlsZGVycy5TZXJ2ZXIsIFNlcnZlckJ1aWxkZXJPcHRpb25zPjtcbmV4cG9ydCB0eXBlIEFwcFNoZWxsQnVpbGRlclRhcmdldCA9IEJ1aWxkZXJUYXJnZXQ8QnVpbGRlcnMuQXBwU2hlbGwsIEFwcFNoZWxsQnVpbGRlck9wdGlvbnM+O1xuZXhwb3J0IHR5cGUgVGVzdEJ1aWxkZXJUYXJnZXQgPSBCdWlsZGVyVGFyZ2V0PEJ1aWxkZXJzLkthcm1hLCBUZXN0QnVpbGRlck9wdGlvbnM+O1xuZXhwb3J0IHR5cGUgU2VydmVCdWlsZGVyVGFyZ2V0ID0gQnVpbGRlclRhcmdldDxCdWlsZGVycy5EZXZTZXJ2ZXIsIFNlcnZlQnVpbGRlck9wdGlvbnM+O1xuZXhwb3J0IHR5cGUgRXh0cmFjdEkxOG5CdWlsZGVyVGFyZ2V0ID0gQnVpbGRlclRhcmdldDxCdWlsZGVycy5FeHRyYWN0STE4biwgRXh0cmFjdEkxOG5PcHRpb25zPjtcbmV4cG9ydCB0eXBlIEUyRUJ1aWxkZXJUYXJnZXQgPSBCdWlsZGVyVGFyZ2V0PEJ1aWxkZXJzLlByb3RyYWN0b3IsIEUyRU9wdGlvbnM+O1xuXG5pbnRlcmZhY2UgV29ya3NwYWNlQ0xJU2NoZW1hIHtcbiAgd2FybmluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgc2NoZW1hdGljQ29sbGVjdGlvbnM/OiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlU2NoZW1hIHtcbiAgdmVyc2lvbjogMTtcbiAgY2xpPzogV29ya3NwYWNlQ0xJU2NoZW1hO1xuICBwcm9qZWN0czoge1xuICAgIFtrZXk6IHN0cmluZ106IFdvcmtzcGFjZVByb2plY3Q8UHJvamVjdFR5cGUuQXBwbGljYXRpb24gfCBQcm9qZWN0VHlwZS5MaWJyYXJ5PjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VQcm9qZWN0PFRQcm9qZWN0VHlwZSBleHRlbmRzIFByb2plY3RUeXBlID0gUHJvamVjdFR5cGUuQXBwbGljYXRpb24+IHtcbiAgLyoqXG4gICAqIFByb2plY3QgdHlwZS5cbiAgICovXG4gIHByb2plY3RUeXBlOiBQcm9qZWN0VHlwZTtcblxuICByb290OiBzdHJpbmc7XG4gIHNvdXJjZVJvb3Q6IHN0cmluZztcbiAgcHJlZml4OiBzdHJpbmc7XG5cbiAgY2xpPzogV29ya3NwYWNlQ0xJU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBUb29sIG9wdGlvbnMuXG4gICAqL1xuICBhcmNoaXRlY3Q/OiBXb3Jrc3BhY2VUYXJnZXRzPFRQcm9qZWN0VHlwZT47XG4gIC8qKlxuICAgKiBUb29sIG9wdGlvbnMuXG4gICAqL1xuICB0YXJnZXRzPzogV29ya3NwYWNlVGFyZ2V0czxUUHJvamVjdFR5cGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVRhcmdldHM8VFByb2plY3RUeXBlIGV4dGVuZHMgUHJvamVjdFR5cGUgPSBQcm9qZWN0VHlwZS5BcHBsaWNhdGlvbj4ge1xuICBidWlsZD86IFRQcm9qZWN0VHlwZSBleHRlbmRzIFByb2plY3RUeXBlLkxpYnJhcnkgPyBMaWJyYXJ5QnVpbGRlclRhcmdldCA6IEJyb3dzZXJCdWlsZGVyVGFyZ2V0O1xuICBzZXJ2ZXI/OiBTZXJ2ZXJCdWlsZGVyVGFyZ2V0O1xuICB0ZXN0PzogVGVzdEJ1aWxkZXJUYXJnZXQ7XG4gIHNlcnZlPzogU2VydmVCdWlsZGVyVGFyZ2V0O1xuICBlMmU/OiBFMkVCdWlsZGVyVGFyZ2V0O1xuICAnYXBwLXNoZWxsJz86IEFwcFNoZWxsQnVpbGRlclRhcmdldDtcbiAgJ2V4dHJhY3QtaTE4bic/OiBFeHRyYWN0STE4bkJ1aWxkZXJUYXJnZXQ7XG4gIC8vIFRPRE8oaGFucyk6IGNoYW5nZSB0aGlzIGFueSB0byB1bmtub3duIHdoZW4gZ29vZ2xlMyBzdXBwb3J0cyBUeXBlU2NyaXB0IDMuMC5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuIl19
@@ -12,5 +12,5 @@ var PackageManager;
12
12
  PackageManager["Npm"] = "npm";
13
13
  PackageManager["Pnpm"] = "pnpm";
14
14
  PackageManager["Yarn"] = "yarn";
15
- })(PackageManager = exports.PackageManager || (exports.PackageManager = {}));
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc2NoZW1hdGljcy9hbmd1bGFyL3dvcmtzcGFjZS9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLG1GQUFtRjtBQUNuRixvRkFBb0Y7OztBQW1DcEY7O0dBRUc7QUFDSCxJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDdEIsK0JBQWEsQ0FBQTtJQUNiLDZCQUFXLENBQUE7SUFDWCwrQkFBYSxDQUFBO0lBQ2IsK0JBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFLekIiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIFRISVMgRklMRSBJUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRC4gVE8gVVBEQVRFIFRISVMgRklMRSBZT1UgTkVFRCBUTyBDSEFOR0UgVEhFXG4vLyBDT1JSRVNQT05ESU5HIEpTT04gU0NIRU1BIEZJTEUsIFRIRU4gUlVOIGRldmtpdC1hZG1pbiBidWlsZCAob3IgYmF6ZWwgYnVpbGQgLi4uKS5cblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBlbXB0eSB3b3Jrc3BhY2UgYW5kIGFkZHMgdGhlIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgYnkgYW4gQW5ndWxhclxuICogYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSB3b3Jrc3BhY2Ugd2l0aG91dCBhbnkgdGVzdGluZyBmcmFtZXdvcmtzLiAoVXNlIGZvciBsZWFybmluZyBwdXJwb3NlcyBvbmx5LilcbiAgICAgKi9cbiAgICBtaW5pbWFsPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlLlxuICAgICAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgcGF0aCB3aGVyZSBuZXcgcHJvamVjdHMgd2lsbCBiZSBjcmVhdGVkLlxuICAgICAqL1xuICAgIG5ld1Byb2plY3RSb290Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcy5cbiAgICAgKi9cbiAgICBwYWNrYWdlTWFuYWdlcj86IFBhY2thZ2VNYW5hZ2VyO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIHdvcmtzcGFjZSB3aXRoIHN0cmljdGVyIHR5cGUgY2hlY2tpbmcgb3B0aW9ucy4gVGhpcyBzZXR0aW5nIGhlbHBzIGltcHJvdmVcbiAgICAgKiBtYWludGFpbmFiaWxpdHkgYW5kIGNhdGNoIGJ1Z3MgYWhlYWQgb2YgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZVxuICAgICAqIGh0dHBzOi8vYW5ndWxhci5pby9zdHJpY3RcbiAgICAgKi9cbiAgICBzdHJpY3Q/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBBbmd1bGFyIENMSSB0byB1c2UuXG4gICAgICovXG4gICAgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUGFja2FnZU1hbmFnZXIge1xuICAgIENucG0gPSBcImNucG1cIixcbiAgICBOcG0gPSBcIm5wbVwiLFxuICAgIFBucG0gPSBcInBucG1cIixcbiAgICBZYXJuID0gXCJ5YXJuXCIsXG59XG4iXX0=
15
+ })(PackageManager || (exports.PackageManager = PackageManager = {}));
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc2NoZW1hdGljcy9hbmd1bGFyL3dvcmtzcGFjZS9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLG1GQUFtRjtBQUNuRixvRkFBb0Y7OztBQW1DcEY7O0dBRUc7QUFDSCxJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDdEIsK0JBQWEsQ0FBQTtJQUNiLDZCQUFXLENBQUE7SUFDWCwrQkFBYSxDQUFBO0lBQ2IsK0JBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsY0FBYyw4QkFBZCxjQUFjLFFBS3pCIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIFRPIFVQREFURSBUSElTIEZJTEUgWU9VIE5FRUQgVE8gQ0hBTkdFIFRIRVxuLy8gQ09SUkVTUE9ORElORyBKU09OIFNDSEVNQSBGSUxFLCBUSEVOIFJVTiBkZXZraXQtYWRtaW4gYnVpbGQgKG9yIGJhemVsIGJ1aWxkIC4uLikuXG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gZW1wdHkgd29ya3NwYWNlIGFuZCBhZGRzIHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHJlcXVpcmVkIGJ5IGFuIEFuZ3VsYXJcbiAqIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgd29ya3NwYWNlIHdpdGhvdXQgYW55IHRlc3RpbmcgZnJhbWV3b3Jrcy4gKFVzZSBmb3IgbGVhcm5pbmcgcHVycG9zZXMgb25seS4pXG4gICAgICovXG4gICAgbWluaW1hbD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtzcGFjZS5cbiAgICAgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggd2hlcmUgbmV3IHByb2plY3RzIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBuZXdQcm9qZWN0Um9vdD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMuXG4gICAgICovXG4gICAgcGFja2FnZU1hbmFnZXI/OiBQYWNrYWdlTWFuYWdlcjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSB3b3Jrc3BhY2Ugd2l0aCBzdHJpY3RlciB0eXBlIGNoZWNraW5nIG9wdGlvbnMuIFRoaXMgc2V0dGluZyBoZWxwcyBpbXByb3ZlXG4gICAgICogbWFpbnRhaW5hYmlsaXR5IGFuZCBjYXRjaCBidWdzIGFoZWFkIG9mIHRpbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICAgKiBodHRwczovL2FuZ3VsYXIuaW8vc3RyaWN0XG4gICAgICovXG4gICAgc3RyaWN0PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgQW5ndWxhciBDTEkgdG8gdXNlLlxuICAgICAqL1xuICAgIHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMuXG4gKi9cbmV4cG9ydCBlbnVtIFBhY2thZ2VNYW5hZ2VyIHtcbiAgICBDbnBtID0gXCJjbnBtXCIsXG4gICAgTnBtID0gXCJucG1cIixcbiAgICBQbnBtID0gXCJwbnBtXCIsXG4gICAgWWFybiA9IFwieWFyblwiLFxufVxuIl19