@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.
- package/application/schema.js +3 -3
- package/component/schema.js +4 -4
- package/config/schema.js +2 -2
- package/guard/schema.js +2 -2
- package/module/schema.js +2 -2
- package/ng-new/schema.js +4 -4
- package/package.json +3 -3
- package/private/standalone.d.ts +13 -1
- package/private/standalone.js +14 -2
- package/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts +61 -20
- package/third_party/github.com/Microsoft/TypeScript/lib/typescript.js +28277 -27446
- package/universal/index.js +1 -1
- package/utility/ast-utils.d.ts +16 -6
- package/utility/ast-utils.js +57 -27
- package/utility/dependencies.js +2 -2
- package/utility/dependency.js +4 -4
- package/utility/index.d.ts +1 -0
- package/utility/index.js +16 -1
- package/utility/latest-versions/package.json +3 -3
- package/utility/latest-versions.js +2 -2
- package/utility/standalone/app_config.d.ts +23 -0
- package/utility/standalone/app_config.js +93 -0
- package/utility/standalone/code_block.d.ts +53 -0
- package/utility/standalone/code_block.js +83 -0
- package/utility/standalone/index.d.ts +9 -0
- package/utility/standalone/index.js +14 -0
- package/utility/standalone/rules.d.ts +45 -0
- package/utility/standalone/rules.js +190 -0
- package/utility/standalone/util.d.ts +35 -0
- package/utility/standalone/util.js +134 -0
- package/utility/workspace-models.js +3 -3
- package/workspace/schema.js +2 -2
|
@@ -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
|
|
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
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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
|
package/workspace/schema.js
CHANGED
|
@@ -12,5 +12,5 @@ var PackageManager;
|
|
|
12
12
|
PackageManager["Npm"] = "npm";
|
|
13
13
|
PackageManager["Pnpm"] = "pnpm";
|
|
14
14
|
PackageManager["Yarn"] = "yarn";
|
|
15
|
-
})(PackageManager
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
})(PackageManager || (exports.PackageManager = PackageManager = {}));
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc2NoZW1hdGljcy9hbmd1bGFyL3dvcmtzcGFjZS9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLG1GQUFtRjtBQUNuRixvRkFBb0Y7OztBQW1DcEY7O0dBRUc7QUFDSCxJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDdEIsK0JBQWEsQ0FBQTtJQUNiLDZCQUFXLENBQUE7SUFDWCwrQkFBYSxDQUFBO0lBQ2IsK0JBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsY0FBYyw4QkFBZCxjQUFjLFFBS3pCIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIFRPIFVQREFURSBUSElTIEZJTEUgWU9VIE5FRUQgVE8gQ0hBTkdFIFRIRVxuLy8gQ09SUkVTUE9ORElORyBKU09OIFNDSEVNQSBGSUxFLCBUSEVOIFJVTiBkZXZraXQtYWRtaW4gYnVpbGQgKG9yIGJhemVsIGJ1aWxkIC4uLikuXG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gZW1wdHkgd29ya3NwYWNlIGFuZCBhZGRzIHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHJlcXVpcmVkIGJ5IGFuIEFuZ3VsYXJcbiAqIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgd29ya3NwYWNlIHdpdGhvdXQgYW55IHRlc3RpbmcgZnJhbWV3b3Jrcy4gKFVzZSBmb3IgbGVhcm5pbmcgcHVycG9zZXMgb25seS4pXG4gICAgICovXG4gICAgbWluaW1hbD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtzcGFjZS5cbiAgICAgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggd2hlcmUgbmV3IHByb2plY3RzIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBuZXdQcm9qZWN0Um9vdD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMuXG4gICAgICovXG4gICAgcGFja2FnZU1hbmFnZXI/OiBQYWNrYWdlTWFuYWdlcjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSB3b3Jrc3BhY2Ugd2l0aCBzdHJpY3RlciB0eXBlIGNoZWNraW5nIG9wdGlvbnMuIFRoaXMgc2V0dGluZyBoZWxwcyBpbXByb3ZlXG4gICAgICogbWFpbnRhaW5hYmlsaXR5IGFuZCBjYXRjaCBidWdzIGFoZWFkIG9mIHRpbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICAgKiBodHRwczovL2FuZ3VsYXIuaW8vc3RyaWN0XG4gICAgICovXG4gICAgc3RyaWN0PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgQW5ndWxhciBDTEkgdG8gdXNlLlxuICAgICAqL1xuICAgIHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMuXG4gKi9cbmV4cG9ydCBlbnVtIFBhY2thZ2VNYW5hZ2VyIHtcbiAgICBDbnBtID0gXCJjbnBtXCIsXG4gICAgTnBtID0gXCJucG1cIixcbiAgICBQbnBtID0gXCJwbnBtXCIsXG4gICAgWWFybiA9IFwieWFyblwiLFxufVxuIl19
|