@dotglitch/ngx-common 1.2.0 → 3.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -22
- package/esm2022/components/lazy-loader/lazy-loader.component.mjs +4 -4
- package/esm2022/components/lazy-loader/lazy-loader.module.mjs +5 -5
- package/esm2022/components/lazy-loader/lazy-loader.service.mjs +4 -4
- package/esm2022/components/menu/menu.component.mjs +4 -4
- package/esm2022/components/parallax-card/parallax-card.component.mjs +4 -4
- package/esm2022/components/tooltip/tooltip.component.mjs +4 -4
- package/esm2022/directives/image-cache.directive.mjs +7 -4
- package/esm2022/directives/menu.directive.mjs +4 -4
- package/esm2022/directives/tooltip.directive.mjs +7 -7
- package/esm2022/pipes/html-bypass.pipe.mjs +4 -4
- package/esm2022/pipes/resource-bypass.pipe.mjs +4 -4
- package/esm2022/pipes/script-bypass.pipe.mjs +4 -4
- package/esm2022/pipes/style-bypass.pipe.mjs +4 -4
- package/esm2022/pipes/url-bypass.pipe.mjs +4 -4
- package/esm2022/public-api.mjs +7 -23
- package/esm2022/services/dependency.service.mjs +4 -4
- package/esm2022/services/dialog.service.mjs +4 -4
- package/esm2022/services/fetch.service.mjs +4 -4
- package/esm2022/services/file.service.mjs +4 -4
- package/esm2022/services/keyboard.service.mjs +4 -4
- package/esm2022/services/navigation.service.mjs +4 -4
- package/esm2022/services/theme.service.mjs +50 -15
- package/fesm2022/dotglitch-ngx-common.mjs +1105 -10155
- package/fesm2022/dotglitch-ngx-common.mjs.map +1 -1
- package/package.json +27 -10
- package/public-api.d.ts +6 -19
- package/services/theme.service.d.ts +12 -2
- package/assets/mat-icons.d.ts +0 -5705
- package/components/command-palette/breadcrumb/breadcrumb.component.d.ts +0 -16
- package/components/command-palette/command-palette.component.d.ts +0 -38
- package/components/command-palette/shortcut/shortcut.component.d.ts +0 -9
- package/components/dynamic-html/dynamic-html.component.d.ts +0 -15
- package/components/dynamic-html/dynamic-html.module.d.ts +0 -10
- package/components/dynamic-html/dynamic-html.service.d.ts +0 -18
- package/components/dynamic-html/types.d.ts +0 -12
- package/components/filemanager/file-grid/file-grid.component.d.ts +0 -101
- package/components/filemanager/filemanager.component.d.ts +0 -207
- package/components/filemanager/folder-rename/folder-rename.component.d.ts +0 -18
- package/components/filemanager/helpers.d.ts +0 -5
- package/components/filemanager/icon-resolver.d.ts +0 -13
- package/components/filemanager/textextensions.d.ts +0 -3
- package/components/filemanager/toolbar/breadcrumb/breadcrumb.component.d.ts +0 -16
- package/components/filemanager/toolbar/icon-button/icon-button.component.d.ts +0 -11
- package/components/filemanager/toolbar/toolbar.component.d.ts +0 -31
- package/components/filemanager/tree-view/tree-view.component.d.ts +0 -21
- package/components/react-magic-wrapper/react-magic-wrapper.component.d.ts +0 -63
- package/components/tabulator/tabulator.component.d.ts +0 -30
- package/components/vscode/ts-type-resolver/dependency-parser.d.ts +0 -6
- package/components/vscode/ts-type-resolver/dummy-source-cache.d.ts +0 -7
- package/components/vscode/ts-type-resolver/import-resolver.d.ts +0 -28
- package/components/vscode/ts-type-resolver/main.d.ts +0 -22
- package/components/vscode/ts-type-resolver/recursion-depth.d.ts +0 -11
- package/components/vscode/ts-type-resolver/types.d.ts +0 -179
- package/components/vscode/ts-type-resolver/unpkg-source-resolver.d.ts +0 -5
- package/components/vscode/ts-type-resolver/update-emitter.d.ts +0 -2
- package/components/vscode/vscode.component.d.ts +0 -52
- package/esm2022/assets/mat-icons.mjs +0 -5705
- package/esm2022/components/command-palette/breadcrumb/breadcrumb.component.mjs +0 -30
- package/esm2022/components/command-palette/command-palette.component.mjs +0 -257
- package/esm2022/components/command-palette/shortcut/shortcut.component.mjs +0 -19
- package/esm2022/components/dynamic-html/dynamic-html.component.mjs +0 -43
- package/esm2022/components/dynamic-html/dynamic-html.module.mjs +0 -27
- package/esm2022/components/dynamic-html/dynamic-html.service.mjs +0 -66
- package/esm2022/components/dynamic-html/types.mjs +0 -7
- package/esm2022/components/filemanager/file-grid/file-grid.component.mjs +0 -674
- package/esm2022/components/filemanager/filemanager.component.mjs +0 -314
- package/esm2022/components/filemanager/folder-rename/folder-rename.component.mjs +0 -57
- package/esm2022/components/filemanager/helpers.mjs +0 -26
- package/esm2022/components/filemanager/icon-resolver.mjs +0 -155
- package/esm2022/components/filemanager/textextensions.mjs +0 -294
- package/esm2022/components/filemanager/toolbar/breadcrumb/breadcrumb.component.mjs +0 -22
- package/esm2022/components/filemanager/toolbar/icon-button/icon-button.component.mjs +0 -32
- package/esm2022/components/filemanager/toolbar/toolbar.component.mjs +0 -165
- package/esm2022/components/filemanager/tree-view/tree-view.component.mjs +0 -51
- package/esm2022/components/react-magic-wrapper/react-magic-wrapper.component.mjs +0 -160
- package/esm2022/components/tabulator/tabulator.component.mjs +0 -93
- package/esm2022/components/vscode/ts-type-resolver/dependency-parser.mjs +0 -91
- package/esm2022/components/vscode/ts-type-resolver/dummy-source-cache.mjs +0 -15
- package/esm2022/components/vscode/ts-type-resolver/import-resolver.mjs +0 -311
- package/esm2022/components/vscode/ts-type-resolver/main.mjs +0 -112
- package/esm2022/components/vscode/ts-type-resolver/recursion-depth.mjs +0 -21
- package/esm2022/components/vscode/ts-type-resolver/types.mjs +0 -14
- package/esm2022/components/vscode/ts-type-resolver/unpkg-source-resolver.mjs +0 -21
- package/esm2022/components/vscode/ts-type-resolver/update-emitter.mjs +0 -37
- package/esm2022/components/vscode/vscode.component.mjs +0 -232
- package/esm2022/services/command-palette.service.mjs +0 -209
- package/fesm2022/dotglitch-ngx-common-folder-rename.component-6j7OjwOo.mjs +0 -83
- package/fesm2022/dotglitch-ngx-common-folder-rename.component-6j7OjwOo.mjs.map +0 -1
- package/services/command-palette.service.d.ts +0 -128
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
import { DependencyParser } from './dependency-parser';
|
|
2
|
-
import * as path from 'path-browserify';
|
|
3
|
-
import { invokeUpdate } from './update-emitter';
|
|
4
|
-
import { RecursionDepth } from './recursion-depth';
|
|
5
|
-
import { importResourcePathToString } from './types';
|
|
6
|
-
import { UnpkgSourceResolver } from './unpkg-source-resolver';
|
|
7
|
-
export class ImportResolver {
|
|
8
|
-
constructor(options) {
|
|
9
|
-
this.options = options;
|
|
10
|
-
this.loadedFiles = [];
|
|
11
|
-
this.dependencyParser = new DependencyParser();
|
|
12
|
-
this.cache = options.sourceCache;
|
|
13
|
-
this.newImportsResolved = false;
|
|
14
|
-
this.monaco = options.monaco;
|
|
15
|
-
if (options.preloadPackages && options.versions) {
|
|
16
|
-
this.versions = options.versions;
|
|
17
|
-
for (const [packageName, version] of Object.entries(options.versions)) {
|
|
18
|
-
this.resolveImport({
|
|
19
|
-
kind: 'package',
|
|
20
|
-
packageName: packageName,
|
|
21
|
-
importPath: '',
|
|
22
|
-
}, new RecursionDepth(this.options)).catch(e => {
|
|
23
|
-
console.error(e);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
wereNewImportsResolved() {
|
|
29
|
-
return this.newImportsResolved;
|
|
30
|
-
}
|
|
31
|
-
resetNewImportsResolved() {
|
|
32
|
-
this.newImportsResolved = false;
|
|
33
|
-
}
|
|
34
|
-
async resolveImportsInFile(source, parent, depth) {
|
|
35
|
-
if (depth.shouldStop()) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const imports = this.dependencyParser.parseDependencies(source, parent);
|
|
39
|
-
for (const importCall of imports) {
|
|
40
|
-
try {
|
|
41
|
-
await this.resolveImport(importCall, depth);
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
if (this.options.onError) {
|
|
45
|
-
this.options.onError?.(e.message ?? e);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
console.error(e);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
async resolveImport(importResource, depth) {
|
|
54
|
-
const hash = this.hashImportResourcePath(importResource);
|
|
55
|
-
if (this.loadedFiles.includes(hash)) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
this.loadedFiles.push(hash);
|
|
59
|
-
console.log("resolveImport", importResource, depth);
|
|
60
|
-
// Ignore these package imports as they are well-known to be pointless.
|
|
61
|
-
if (importResource.kind == "package" && importResource.packageName == "require")
|
|
62
|
-
return null;
|
|
63
|
-
switch (importResource.kind) {
|
|
64
|
-
case 'package':
|
|
65
|
-
const packageRelativeImport = await this.resolveImportFromPackageRoot(importResource);
|
|
66
|
-
if (packageRelativeImport) {
|
|
67
|
-
return await this.resolveImportInPackage(packageRelativeImport, depth.nextPackage().nextFile());
|
|
68
|
-
}
|
|
69
|
-
break;
|
|
70
|
-
case 'relative':
|
|
71
|
-
throw Error('Not implemented yet');
|
|
72
|
-
case 'relative-in-package':
|
|
73
|
-
return await this.resolveImportInPackage(importResource, depth.nextFile());
|
|
74
|
-
case 'bruteforce': {
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
async resolveImportInPackage(importResource, depth) {
|
|
79
|
-
console.log("resolveImportInPackage", importResource, depth);
|
|
80
|
-
const contents = await this.loadSourceFileContents(importResource);
|
|
81
|
-
if (contents) {
|
|
82
|
-
const { source, at } = contents;
|
|
83
|
-
this.createModel(source, this.monaco.Uri.parse(this.options.fileRootPath + path.join(`node_modules/${importResource.packageName}`, at)));
|
|
84
|
-
await this.resolveImportsInFile(source, {
|
|
85
|
-
kind: 'relative-in-package',
|
|
86
|
-
packageName: importResource.packageName,
|
|
87
|
-
sourcePath: path.dirname(at),
|
|
88
|
-
importPath: '',
|
|
89
|
-
}, depth);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
async resolveImportFromPackageRoot(importResource) {
|
|
93
|
-
console.log("resolveImportFromPackageRoot", importResource);
|
|
94
|
-
const failedProgressUpdate = {
|
|
95
|
-
type: 'LookedUpPackage',
|
|
96
|
-
package: importResource.packageName,
|
|
97
|
-
definitelyTyped: false,
|
|
98
|
-
success: false,
|
|
99
|
-
};
|
|
100
|
-
if (this.options.onlySpecifiedPackages) {
|
|
101
|
-
if (!this.versions?.[importResource.packageName] && !this.versions?.['@types/' + importResource.packageName]) {
|
|
102
|
-
invokeUpdate(failedProgressUpdate, this.options);
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
const doesPkgJsonHasSubpath = importResource.importPath?.length ?? 0 > 0;
|
|
107
|
-
let pkgJsonSubpath = doesPkgJsonHasSubpath ? `/${importResource.importPath}` : '';
|
|
108
|
-
let pkgJson = await this.resolvePackageJson(importResource.packageName, this.versions?.[importResource.packageName], doesPkgJsonHasSubpath ? importResource.importPath : undefined);
|
|
109
|
-
if (!pkgJson && doesPkgJsonHasSubpath) {
|
|
110
|
-
pkgJson = await this.resolvePackageJson(importResource.packageName, this.versions?.[importResource.packageName]);
|
|
111
|
-
pkgJsonSubpath = '';
|
|
112
|
-
}
|
|
113
|
-
if (!pkgJson)
|
|
114
|
-
return invokeUpdate(failedProgressUpdate, this.options);
|
|
115
|
-
const pkg = JSON.parse(pkgJson);
|
|
116
|
-
console.log("package meta", pkg);
|
|
117
|
-
if (pkg.typings || pkg.types) {
|
|
118
|
-
const typings = pkg.typings || pkg.types;
|
|
119
|
-
this.createModel(pkgJson, this.monaco.Uri.parse(`${this.options.fileRootPath}node_modules/${importResource.packageName}${pkgJsonSubpath}/package.json`));
|
|
120
|
-
invokeUpdate({
|
|
121
|
-
type: 'LookedUpPackage',
|
|
122
|
-
package: importResource.packageName,
|
|
123
|
-
definitelyTyped: false,
|
|
124
|
-
success: true,
|
|
125
|
-
}, this.options);
|
|
126
|
-
this.setVersion(importResource.packageName, pkg.version);
|
|
127
|
-
return {
|
|
128
|
-
kind: 'relative-in-package',
|
|
129
|
-
packageName: importResource.packageName,
|
|
130
|
-
sourcePath: '',
|
|
131
|
-
importPath: path.join(importResource.importPath ?? '', typings.startsWith('./') ? typings.slice(2) : typings),
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
const typingPackageName = `@types/${importResource.packageName.startsWith('@')
|
|
136
|
-
? importResource.packageName.slice(1).replace(/\//, '__')
|
|
137
|
-
: importResource.packageName}`;
|
|
138
|
-
const pkgJsonTypings = await this.resolvePackageJson(typingPackageName, this.versions?.[typingPackageName]);
|
|
139
|
-
if (!pkgJsonTypings)
|
|
140
|
-
return invokeUpdate(failedProgressUpdate, this.options);
|
|
141
|
-
const pkg = JSON.parse(pkgJsonTypings);
|
|
142
|
-
if (!pkg.typings && !pkg.types) {
|
|
143
|
-
const files = await fetch("https://www.npmjs.com/package/@dt-esa/dynatrace-api-client/v/2.2.6/index", {
|
|
144
|
-
method: "get"
|
|
145
|
-
}).then(e => e.json());
|
|
146
|
-
const typingFiles = Object.entries(files.files).map(([key, val]) => val);
|
|
147
|
-
invokeUpdate({
|
|
148
|
-
type: 'LookedUpPackage',
|
|
149
|
-
package: typingPackageName,
|
|
150
|
-
definitelyTyped: true,
|
|
151
|
-
success: true,
|
|
152
|
-
}, this.options);
|
|
153
|
-
return {
|
|
154
|
-
kind: 'bruteforce',
|
|
155
|
-
packageName: typingPackageName,
|
|
156
|
-
typingFiles,
|
|
157
|
-
};
|
|
158
|
-
return;
|
|
159
|
-
// return invokeUpdate(failedProgressUpdate, this.options);
|
|
160
|
-
}
|
|
161
|
-
const typings = pkg.typings || pkg.types;
|
|
162
|
-
this.createModel(pkgJsonTypings, this.monaco.Uri.parse(`${this.options.fileRootPath}node_modules/${typingPackageName}/package.json`));
|
|
163
|
-
invokeUpdate({
|
|
164
|
-
type: 'LookedUpPackage',
|
|
165
|
-
package: typingPackageName,
|
|
166
|
-
definitelyTyped: true,
|
|
167
|
-
success: true,
|
|
168
|
-
}, this.options);
|
|
169
|
-
this.setVersion(typingPackageName, pkg.version);
|
|
170
|
-
return {
|
|
171
|
-
kind: 'relative-in-package',
|
|
172
|
-
packageName: typingPackageName,
|
|
173
|
-
sourcePath: '',
|
|
174
|
-
importPath: path.join(importResource.importPath ?? '', typings.startsWith('./') ? typings.slice(2) : typings),
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
async loadSourceFileContents(importResource) {
|
|
179
|
-
const progressUpdatePath = path.join(importResource.packageName, importResource.sourcePath, importResource.importPath);
|
|
180
|
-
const failedProgressUpdate = {
|
|
181
|
-
type: 'LookedUpTypeFile',
|
|
182
|
-
path: progressUpdatePath,
|
|
183
|
-
definitelyTyped: false,
|
|
184
|
-
success: false,
|
|
185
|
-
};
|
|
186
|
-
const pkgName = importResource.packageName;
|
|
187
|
-
const version = this.getVersion(importResource.packageName);
|
|
188
|
-
let appends = ['.d.ts', '/index.d.ts', '.ts', '.tsx', '/index.ts', '/index.tsx'];
|
|
189
|
-
if (appends.map(append => importResource.importPath.endsWith(append)).reduce((a, b) => a || b, false)) {
|
|
190
|
-
const source = await this.resolveSourceFile(pkgName, version, path.join(importResource.sourcePath, importResource.importPath));
|
|
191
|
-
if (source) {
|
|
192
|
-
return { source, at: path.join(importResource.sourcePath, importResource.importPath) };
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
for (const append of appends) {
|
|
197
|
-
const fullPath = path.join(importResource.sourcePath, importResource.importPath) + append;
|
|
198
|
-
const source = await this.resolveSourceFile(pkgName, version, fullPath);
|
|
199
|
-
invokeUpdate({
|
|
200
|
-
type: 'AttemptedLookUpFile',
|
|
201
|
-
path: path.join(pkgName, fullPath),
|
|
202
|
-
success: !!source,
|
|
203
|
-
}, this.options);
|
|
204
|
-
if (source) {
|
|
205
|
-
invokeUpdate({
|
|
206
|
-
type: 'LookedUpTypeFile',
|
|
207
|
-
path: path.join(pkgName, fullPath),
|
|
208
|
-
success: true,
|
|
209
|
-
}, this.options);
|
|
210
|
-
return { source, at: fullPath };
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
const pkgJson = await this.resolvePackageJson(pkgName, version, path.join(importResource.sourcePath, importResource.importPath));
|
|
215
|
-
if (pkgJson) {
|
|
216
|
-
const { types } = JSON.parse(pkgJson);
|
|
217
|
-
if (types) {
|
|
218
|
-
const fullPath = path.join(importResource.sourcePath, importResource.importPath, types);
|
|
219
|
-
const source = await this.resolveSourceFile(pkgName, version, fullPath);
|
|
220
|
-
if (source) {
|
|
221
|
-
invokeUpdate({
|
|
222
|
-
type: 'LookedUpTypeFile',
|
|
223
|
-
path: path.join(pkgName, fullPath),
|
|
224
|
-
success: true,
|
|
225
|
-
}, this.options);
|
|
226
|
-
return { source, at: fullPath };
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
invokeUpdate(failedProgressUpdate, this.options);
|
|
231
|
-
return null;
|
|
232
|
-
}
|
|
233
|
-
getVersion(packageName) {
|
|
234
|
-
return this.versions?.[packageName];
|
|
235
|
-
}
|
|
236
|
-
setVersions(versions) {
|
|
237
|
-
this.versions = versions;
|
|
238
|
-
this.options.onUpdateVersions?.(versions);
|
|
239
|
-
// TODO reload packages whose version has changed
|
|
240
|
-
}
|
|
241
|
-
setVersion(packageName, version) {
|
|
242
|
-
this.setVersions({
|
|
243
|
-
...this.versions,
|
|
244
|
-
[packageName]: version,
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
createModel(source, uri) {
|
|
248
|
-
uri = uri.with({ path: uri.path.replace('@types/', '') });
|
|
249
|
-
if (!this.monaco.editor.getModel(uri)) {
|
|
250
|
-
this.monaco.editor.createModel(source, 'typescript', uri);
|
|
251
|
-
this.newImportsResolved = true;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
hashImportResourcePath(p) {
|
|
255
|
-
return importResourcePathToString(p);
|
|
256
|
-
}
|
|
257
|
-
async resolvePackageJson(packageName, version, subPath) {
|
|
258
|
-
const uri = path.join(packageName + (version ? `@${version}` : ''), subPath ?? '', 'package.json');
|
|
259
|
-
let isAvailable = false;
|
|
260
|
-
let content = undefined;
|
|
261
|
-
if (this.cache.isFileAvailable) {
|
|
262
|
-
isAvailable = await this.cache.isFileAvailable(uri);
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
content = await this.cache.getFile(uri);
|
|
266
|
-
isAvailable = content !== undefined;
|
|
267
|
-
}
|
|
268
|
-
if (isAvailable) {
|
|
269
|
-
return content ?? (await this.cache.getFile(uri));
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
console.log("recursing resolvePackageJson", packageName, version, subPath);
|
|
273
|
-
content = await UnpkgSourceResolver.resolvePackageJson(packageName, version, subPath);
|
|
274
|
-
if (content) {
|
|
275
|
-
this.cache.storeFile(uri, content);
|
|
276
|
-
}
|
|
277
|
-
return content;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
async resolveSourceFile(packageName, version, filePath) {
|
|
281
|
-
const uri = path.join(packageName + (version ? `@${version}` : ''), filePath);
|
|
282
|
-
let isAvailable = false;
|
|
283
|
-
let content = undefined;
|
|
284
|
-
if (this.cache.isFileAvailable) {
|
|
285
|
-
isAvailable = await this.cache.isFileAvailable(uri);
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
content = await this.cache.getFile(uri);
|
|
289
|
-
isAvailable = content !== undefined;
|
|
290
|
-
}
|
|
291
|
-
if (isAvailable) {
|
|
292
|
-
invokeUpdate({
|
|
293
|
-
type: 'LoadedFromCache',
|
|
294
|
-
importPath: uri,
|
|
295
|
-
}, this.options);
|
|
296
|
-
return content ?? (await this.cache.getFile(uri));
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
content = await UnpkgSourceResolver.resolveSourceFile(packageName, version, filePath);
|
|
300
|
-
if (content) {
|
|
301
|
-
invokeUpdate({
|
|
302
|
-
type: 'StoredToCache',
|
|
303
|
-
importPath: uri,
|
|
304
|
-
}, this.options);
|
|
305
|
-
this.cache.storeFile(uri, content);
|
|
306
|
-
}
|
|
307
|
-
return content;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL3ZzY29kZS90cy10eXBlLXJlc29sdmVyL2ltcG9ydC1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssSUFBSSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUE0RywwQkFBMEIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvSixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxNQUFNLE9BQU8sY0FBYztJQVF2QixZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTyxDQUFDO1FBRTlCLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2pDLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FB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QUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsV0FBVyxHQUFHLE9BQU8sS0FBSyxTQUFTLENBQUM7UUFDeEMsQ0FBQztRQUVELElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCxZQUFZLENBQ1I7Z0JBQ0ksSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsVUFBVSxFQUFFLEdBQUc7YUFDbEIsRUFDRCxJQUFJLENBQUMsT0FBTyxDQUNmLENBQUM7WUFDRixPQUFPLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO2FBQ0ksQ0FBQztZQUNGLE9BQU8sR0FBRyxNQUFNLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDdEYsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixZQUFZLENBQ1I7b0JBQ0ksSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLFVBQVUsRUFBRSxHQUFHO2lCQUNsQixFQUNELElBQUksQ0FBQyxPQUFPLENBQ2YsQ0FBQztnQkFDRixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIG1vbmFjbyBmcm9tICdtb25hY28tZWRpdG9yJztcbmltcG9ydCB7IERlcGVuZGVuY3lQYXJzZXIgfSBmcm9tICcuL2RlcGVuZGVuY3ktcGFyc2VyJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aC1icm93c2VyaWZ5JztcbmltcG9ydCB7IGludm9rZVVwZGF0ZSB9IGZyb20gJy4vdXBkYXRlLWVtaXR0ZXInO1xuaW1wb3J0IHsgUmVjdXJzaW9uRGVwdGggfSBmcm9tICcuL3JlY3Vyc2lvbi1kZXB0aCc7XG5pbXBvcnQgeyBJbXBvcnRSZXNvdXJjZVBhdGgsIEltcG9ydFJlc291cmNlUGF0aFBhY2thZ2UsIEltcG9ydFJlc291cmNlUGF0aFJlbGF0aXZlSW5QYWNrYWdlLCBPcHRpb25zLCBTb3VyY2VDYWNoZSwgaW1wb3J0UmVzb3VyY2VQYXRoVG9TdHJpbmcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFVucGtnU291cmNlUmVzb2x2ZXIgfSBmcm9tICcuL3VucGtnLXNvdXJjZS1yZXNvbHZlcic7XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRSZXNvbHZlciB7XG4gICAgcHJpdmF0ZSBsb2FkZWRGaWxlczogc3RyaW5nW107XG4gICAgcHJpdmF0ZSBkZXBlbmRlbmN5UGFyc2VyOiBEZXBlbmRlbmN5UGFyc2VyO1xuICAgIHByaXZhdGUgY2FjaGU6IFNvdXJjZUNhY2hlO1xuICAgIHByaXZhdGUgdmVyc2lvbnM/OiB7IFtwYWNrYWdlTmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgcHJpdmF0ZSBuZXdJbXBvcnRzUmVzb2x2ZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBtb25hY286IHR5cGVvZiBtb25hY287XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5sb2FkZWRGaWxlcyA9IFtdO1xuICAgICAgICB0aGlzLmRlcGVuZGVuY3lQYXJzZXIgPSBuZXcgRGVwZW5kZW5jeVBhcnNlcigpO1xuICAgICAgICB0aGlzLmNhY2hlID0gb3B0aW9ucy5zb3VyY2VDYWNoZTtcbiAgICAgICAgdGhpcy5uZXdJbXBvcnRzUmVzb2x2ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb25hY28gPSBvcHRpb25zLm1vbmFjbyE7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucHJlbG9hZFBhY2thZ2VzICYmIG9wdGlvbnMudmVyc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudmVyc2lvbnMgPSBvcHRpb25zLnZlcnNpb25zO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMudmVyc2lvbnMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlSW1wb3J0KFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAncGFja2FnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZTogcGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRQYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbmV3IFJlY3Vyc2lvbkRlcHRoKHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgICAgICApLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdlcmVOZXdJbXBvcnRzUmVzb2x2ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5ld0ltcG9ydHNSZXNvbHZlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXROZXdJbXBvcnRzUmVzb2x2ZWQoKSB7XG4gICAgICAgIHRoaXMubmV3SW1wb3J0c1Jlc29sdmVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc29sdmVJbXBvcnRzSW5GaWxlKHNvdXJjZTogc3RyaW5nLCBwYXJlbnQ6IHN0cmluZyB8IEltcG9ydFJlc291cmNlUGF0aCwgZGVwdGg6IFJlY3Vyc2lvbkRlcHRoKSB7XG4gICAgICAgIGlmIChkZXB0aC5zaG91bGRTdG9wKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGltcG9ydHMgPSB0aGlzLmRlcGVuZGVuY3lQYXJzZXIucGFyc2VEZXBlbmRlbmNpZXMoc291cmNlLCBwYXJlbnQpO1xuICAgICAgICBmb3IgKGNvbnN0IGltcG9ydENhbGwgb2YgaW1wb3J0cykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlc29sdmVJbXBvcnQoaW1wb3J0Q2FsbCwgZGVwdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uRXJyb3I/LigoZSBhcyBFcnJvcikubWVzc2FnZSA/PyBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXNvbHZlSW1wb3J0KGltcG9ydFJlc291cmNlOiBJbXBvcnRSZXNvdXJjZVBhdGgsIGRlcHRoOiBSZWN1cnNpb25EZXB0aCkge1xuICAgICAgICBjb25zdCBoYXNoID0gdGhpcy5oYXNoSW1wb3J0UmVzb3VyY2VQYXRoKGltcG9ydFJlc291cmNlKTtcbiAgICAgICAgaWYgKHRoaXMubG9hZGVkRmlsZXMuaW5jbHVkZXMoaGFzaCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGVkRmlsZXMucHVzaChoYXNoKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJyZXNvbHZlSW1wb3J0XCIsIGltcG9ydFJlc291cmNlLCBkZXB0aCk7XG5cbiAgICAgICAgLy8gSWdub3JlIHRoZXNlIHBhY2thZ2UgaW1wb3J0cyBhcyB0aGV5IGFyZSB3ZWxsLWtub3duIHRvIGJlIHBvaW50bGVzcy5cbiAgICAgICAgaWYgKGltcG9ydFJlc291cmNlLmtpbmQgPT0gXCJwYWNrYWdlXCIgJiYgaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWUgPT0gXCJyZXF1aXJlXCIpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICBzd2l0Y2ggKGltcG9ydFJlc291cmNlLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3BhY2thZ2UnOlxuICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VSZWxhdGl2ZUltcG9ydCA9IGF3YWl0IHRoaXMucmVzb2x2ZUltcG9ydEZyb21QYWNrYWdlUm9vdChpbXBvcnRSZXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgaWYgKHBhY2thZ2VSZWxhdGl2ZUltcG9ydCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXNvbHZlSW1wb3J0SW5QYWNrYWdlKHBhY2thZ2VSZWxhdGl2ZUltcG9ydCwgZGVwdGgubmV4dFBhY2thZ2UoKS5uZXh0RmlsZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZWxhdGl2ZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQnKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlLWluLXBhY2thZ2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlc29sdmVJbXBvcnRJblBhY2thZ2UoaW1wb3J0UmVzb3VyY2UsIGRlcHRoLm5leHRGaWxlKCkpO1xuICAgICAgICAgICAgY2FzZSAnYnJ1dGVmb3JjZSc6IHtcblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXNvbHZlSW1wb3J0SW5QYWNrYWdlKGltcG9ydFJlc291cmNlOiBJbXBvcnRSZXNvdXJjZVBhdGhSZWxhdGl2ZUluUGFja2FnZSwgZGVwdGg6IFJlY3Vyc2lvbkRlcHRoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwicmVzb2x2ZUltcG9ydEluUGFja2FnZVwiLCBpbXBvcnRSZXNvdXJjZSwgZGVwdGgpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRlbnRzID0gYXdhaXQgdGhpcy5sb2FkU291cmNlRmlsZUNvbnRlbnRzKGltcG9ydFJlc291cmNlKTtcblxuICAgICAgICBpZiAoY29udGVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgc291cmNlLCBhdCB9ID0gY29udGVudHM7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vZGVsKFxuICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aGlzLm1vbmFjby5VcmkucGFyc2UodGhpcy5vcHRpb25zLmZpbGVSb290UGF0aCArIHBhdGguam9pbihgbm9kZV9tb2R1bGVzLyR7aW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWV9YCwgYXQpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXNvbHZlSW1wb3J0c0luRmlsZShcbiAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBraW5kOiAncmVsYXRpdmUtaW4tcGFja2FnZScsXG4gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlUGF0aDogcGF0aC5kaXJuYW1lKGF0KSxcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0UGF0aDogJycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZXB0aFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVzb2x2ZUltcG9ydEZyb21QYWNrYWdlUm9vdChcbiAgICAgICAgaW1wb3J0UmVzb3VyY2U6IEltcG9ydFJlc291cmNlUGF0aFBhY2thZ2VcbiAgICApOiBQcm9taXNlPEltcG9ydFJlc291cmNlUGF0aFJlbGF0aXZlSW5QYWNrYWdlIHwgdm9pZD4ge1xuICAgICAgICBjb25zb2xlLmxvZyhcInJlc29sdmVJbXBvcnRGcm9tUGFja2FnZVJvb3RcIiwgaW1wb3J0UmVzb3VyY2UpO1xuXG4gICAgICAgIGNvbnN0IGZhaWxlZFByb2dyZXNzVXBkYXRlID0ge1xuICAgICAgICAgICAgdHlwZTogJ0xvb2tlZFVwUGFja2FnZScsXG4gICAgICAgICAgICBwYWNrYWdlOiBpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZSxcbiAgICAgICAgICAgIGRlZmluaXRlbHlUeXBlZDogZmFsc2UsXG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgfSBhcyBjb25zdDtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9ubHlTcGVjaWZpZWRQYWNrYWdlcykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnZlcnNpb25zPy5baW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWVdICYmICF0aGlzLnZlcnNpb25zPy5bJ0B0eXBlcy8nICsgaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgaW52b2tlVXBkYXRlKGZhaWxlZFByb2dyZXNzVXBkYXRlLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZG9lc1BrZ0pzb25IYXNTdWJwYXRoID0gaW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aD8ubGVuZ3RoID8/IDAgPiAwO1xuICAgICAgICBsZXQgcGtnSnNvblN1YnBhdGggPSBkb2VzUGtnSnNvbkhhc1N1YnBhdGggPyBgLyR7aW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aH1gIDogJyc7XG4gICAgICAgIGxldCBwa2dKc29uID0gYXdhaXQgdGhpcy5yZXNvbHZlUGFja2FnZUpzb24oXG4gICAgICAgICAgICBpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZSxcbiAgICAgICAgICAgIHRoaXMudmVyc2lvbnM/LltpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZV0sXG4gICAgICAgICAgICBkb2VzUGtnSnNvbkhhc1N1YnBhdGggPyBpbXBvcnRSZXNvdXJjZS5pbXBvcnRQYXRoIDogdW5kZWZpbmVkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFwa2dKc29uICYmIGRvZXNQa2dKc29uSGFzU3VicGF0aCkge1xuICAgICAgICAgICAgcGtnSnNvbiA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhY2thZ2VKc29uKGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lLCB0aGlzLnZlcnNpb25zPy5baW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWVdKTtcbiAgICAgICAgICAgIHBrZ0pzb25TdWJwYXRoID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBrZ0pzb24pIHJldHVybiBpbnZva2VVcGRhdGUoZmFpbGVkUHJvZ3Jlc3NVcGRhdGUsIHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShwa2dKc29uKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhcInBhY2thZ2UgbWV0YVwiLCBwa2cpO1xuXG4gICAgICAgIGlmIChwa2cudHlwaW5ncyB8fCBwa2cudHlwZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGluZ3MgPSBwa2cudHlwaW5ncyB8fCBwa2cudHlwZXM7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vZGVsKFxuICAgICAgICAgICAgICAgIHBrZ0pzb24sXG4gICAgICAgICAgICAgICAgdGhpcy5tb25hY28uVXJpLnBhcnNlKFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMuZmlsZVJvb3RQYXRofW5vZGVfbW9kdWxlcy8ke2ltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lfSR7cGtnSnNvblN1YnBhdGh9L3BhY2thZ2UuanNvbmBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpbnZva2VVcGRhdGUoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTG9va2VkVXBQYWNrYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgcGFja2FnZTogaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGRlZmluaXRlbHlUeXBlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNldFZlcnNpb24oaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWUsIHBrZy52ZXJzaW9uKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBraW5kOiAncmVsYXRpdmUtaW4tcGFja2FnZScsXG4gICAgICAgICAgICAgICAgcGFja2FnZU5hbWU6IGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgIHNvdXJjZVBhdGg6ICcnLFxuICAgICAgICAgICAgICAgIGltcG9ydFBhdGg6IHBhdGguam9pbihpbXBvcnRSZXNvdXJjZS5pbXBvcnRQYXRoID8/ICcnLCB0eXBpbmdzLnN0YXJ0c1dpdGgoJy4vJykgPyB0eXBpbmdzLnNsaWNlKDIpIDogdHlwaW5ncyksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuXG4gICAgICAgICAgICBjb25zdCB0eXBpbmdQYWNrYWdlTmFtZSA9IGBAdHlwZXMvJHtcbiAgICAgICAgICAgICAgICBpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZS5zdGFydHNXaXRoKCdAJylcbiAgICAgICAgICAgICAgICAgICAgPyBpbXBvcnRSZXNvdXJjZS5wYWNrYWdlTmFtZS5zbGljZSgxKS5yZXBsYWNlKC9cXC8vLCAnX18nKVxuICAgICAgICAgICAgICAgICAgICA6IGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lXG4gICAgICAgICAgICB9YDtcblxuICAgICAgICAgICAgY29uc3QgcGtnSnNvblR5cGluZ3MgPSBhd2FpdCB0aGlzLnJlc29sdmVQYWNrYWdlSnNvbih0eXBpbmdQYWNrYWdlTmFtZSwgdGhpcy52ZXJzaW9ucz8uW3R5cGluZ1BhY2thZ2VOYW1lXSk7XG5cbiAgICAgICAgICAgIGlmICghcGtnSnNvblR5cGluZ3MpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGludm9rZVVwZGF0ZShmYWlsZWRQcm9ncmVzc1VwZGF0ZSwgdGhpcy5vcHRpb25zKTtcblxuICAgICAgICAgICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShwa2dKc29uVHlwaW5ncyk7XG5cbiAgICAgICAgICAgIGlmICghcGtnLnR5cGluZ3MgJiYgIXBrZy50eXBlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVDb3VudDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBmaWxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkZpbGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0JpbmFyeTogXCJ0cnVlXCIgfCBcImZhbHNlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaW50ZWdyaXR5OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIHNoYXN1bTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbFNpemU6IG51bWJlclxuICAgICAgICAgICAgICAgIH0gPSBhd2FpdCBmZXRjaChcImh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BkdC1lc2EvZHluYXRyYWNlLWFwaS1jbGllbnQvdi8yLjIuNi9pbmRleFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJnZXRcIlxuICAgICAgICAgICAgICAgIH0pLnRoZW4oZSA9PiBlLmpzb24oKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0eXBpbmdGaWxlcyA9IE9iamVjdC5lbnRyaWVzKGZpbGVzLmZpbGVzKS5tYXAoKFtrZXksIHZhbF0pID0+IHZhbCk7XG5cbiAgICAgICAgICAgICAgICBpbnZva2VVcGRhdGUoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdMb29rZWRVcFBhY2thZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZTogdHlwaW5nUGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0ZWx5VHlwZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAga2luZDogJ2JydXRlZm9yY2UnLFxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZTogdHlwaW5nUGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGluZ0ZpbGVzLFxuICAgICAgICAgICAgICAgIH0gYXMgYW55O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIC8vIHJldHVybiBpbnZva2VVcGRhdGUoZmFpbGVkUHJvZ3Jlc3NVcGRhdGUsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHR5cGluZ3MgPSBwa2cudHlwaW5ncyB8fCBwa2cudHlwZXM7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vZGVsKFxuICAgICAgICAgICAgICAgIHBrZ0pzb25UeXBpbmdzLFxuICAgICAgICAgICAgICAgIHRoaXMubW9uYWNvLlVyaS5wYXJzZShgJHt0aGlzLm9wdGlvbnMuZmlsZVJvb3RQYXRofW5vZGVfbW9kdWxlcy8ke3R5cGluZ1BhY2thZ2VOYW1lfS9wYWNrYWdlLmpzb25gKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaW52b2tlVXBkYXRlKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0xvb2tlZFVwUGFja2FnZScsXG4gICAgICAgICAgICAgICAgICAgIHBhY2thZ2U6IHR5cGluZ1BhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZWZpbml0ZWx5VHlwZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNldFZlcnNpb24odHlwaW5nUGFja2FnZU5hbWUsIHBrZy52ZXJzaW9uKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBraW5kOiAncmVsYXRpdmUtaW4tcGFja2FnZScsXG4gICAgICAgICAgICAgICAgcGFja2FnZU5hbWU6IHR5cGluZ1BhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgIHNvdXJjZVBhdGg6ICcnLFxuICAgICAgICAgICAgICAgIGltcG9ydFBhdGg6IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwaW5ncy5zdGFydHNXaXRoKCcuLycpID8gdHlwaW5ncy5zbGljZSgyKSA6IHR5cGluZ3NcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgbG9hZFNvdXJjZUZpbGVDb250ZW50cyhcbiAgICAgICAgaW1wb3J0UmVzb3VyY2U6IEltcG9ydFJlc291cmNlUGF0aFJlbGF0aXZlSW5QYWNrYWdlXG4gICAgKTogUHJvbWlzZTx7IHNvdXJjZTogc3RyaW5nOyBhdDogc3RyaW5nIH0gfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IHByb2dyZXNzVXBkYXRlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgIGltcG9ydFJlc291cmNlLnBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgaW1wb3J0UmVzb3VyY2Uuc291cmNlUGF0aCxcbiAgICAgICAgICAgIGltcG9ydFJlc291cmNlLmltcG9ydFBhdGhcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmYWlsZWRQcm9ncmVzc1VwZGF0ZSA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdMb29rZWRVcFR5cGVGaWxlJyxcbiAgICAgICAgICAgIHBhdGg6IHByb2dyZXNzVXBkYXRlUGF0aCxcbiAgICAgICAgICAgIGRlZmluaXRlbHlUeXBlZDogZmFsc2UsXG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgfSBhcyBjb25zdDtcblxuICAgICAgICBjb25zdCBwa2dOYW1lID0gaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWU7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFZlcnNpb24oaW1wb3J0UmVzb3VyY2UucGFja2FnZU5hbWUpO1xuXG4gICAgICAgIGxldCBhcHBlbmRzID0gWycuZC50cycsICcvaW5kZXguZC50cycsICcudHMnLCAnLnRzeCcsICcvaW5kZXgudHMnLCAnL2luZGV4LnRzeCddO1xuXG4gICAgICAgIGlmIChhcHBlbmRzLm1hcChhcHBlbmQgPT4gaW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aC5lbmRzV2l0aChhcHBlbmQpKS5yZWR1Y2UoKGEsIGIpID0+IGEgfHwgYiwgZmFsc2UpKSB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCB0aGlzLnJlc29sdmVTb3VyY2VGaWxlKFxuICAgICAgICAgICAgICAgIHBrZ05hbWUsXG4gICAgICAgICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oaW1wb3J0UmVzb3VyY2Uuc291cmNlUGF0aCwgaW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc291cmNlLCBhdDogcGF0aC5qb2luKGltcG9ydFJlc291cmNlLnNvdXJjZVBhdGgsIGltcG9ydFJlc291cmNlLmltcG9ydFBhdGgpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFwcGVuZCBvZiBhcHBlbmRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oaW1wb3J0UmVzb3VyY2Uuc291cmNlUGF0aCwgaW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aCkgKyBhcHBlbmQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgdGhpcy5yZXNvbHZlU291cmNlRmlsZShwa2dOYW1lLCB2ZXJzaW9uLCBmdWxsUGF0aCk7XG4gICAgICAgICAgICAgICAgaW52b2tlVXBkYXRlKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnQXR0ZW1wdGVkTG9va1VwRmlsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocGtnTmFtZSwgZnVsbFBhdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogISFzb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICBpbnZva2VVcGRhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0xvb2tlZFVwVHlwZUZpbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGguam9pbihwa2dOYW1lLCBmdWxsUGF0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc291cmNlLCBhdDogZnVsbFBhdGggfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwa2dKc29uID0gYXdhaXQgdGhpcy5yZXNvbHZlUGFja2FnZUpzb24oXG4gICAgICAgICAgICBwa2dOYW1lLFxuICAgICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICAgIHBhdGguam9pbihpbXBvcnRSZXNvdXJjZS5zb3VyY2VQYXRoLCBpbXBvcnRSZXNvdXJjZS5pbXBvcnRQYXRoKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChwa2dKc29uKSB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGVzIH0gPSBKU09OLnBhcnNlKHBrZ0pzb24pO1xuICAgICAgICAgICAgaWYgKHR5cGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oaW1wb3J0UmVzb3VyY2Uuc291cmNlUGF0aCwgaW1wb3J0UmVzb3VyY2UuaW1wb3J0UGF0aCwgdHlwZXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IHRoaXMucmVzb2x2ZVNvdXJjZUZpbGUocGtnTmFtZSwgdmVyc2lvbiwgZnVsbFBhdGgpO1xuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVXBkYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdMb29rZWRVcFR5cGVGaWxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocGtnTmFtZSwgZnVsbFBhdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZSwgYXQ6IGZ1bGxQYXRoIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW52b2tlVXBkYXRlKGZhaWxlZFByb2dyZXNzVXBkYXRlLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZlcnNpb24ocGFja2FnZU5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy52ZXJzaW9ucz8uW3BhY2thZ2VOYW1lXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VmVyc2lvbnModmVyc2lvbnM6IHsgW3BhY2thZ2VOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgICAgICB0aGlzLnZlcnNpb25zID0gdmVyc2lvbnM7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vblVwZGF0ZVZlcnNpb25zPy4odmVyc2lvbnMpO1xuICAgICAgICAvLyBUT0RPIHJlbG9hZCBwYWNrYWdlcyB3aG9zZSB2ZXJzaW9uIGhhcyBjaGFuZ2VkXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWZXJzaW9uKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldFZlcnNpb25zKHtcbiAgICAgICAgICAgIC4uLnRoaXMudmVyc2lvbnMsXG4gICAgICAgICAgICBbcGFja2FnZU5hbWVdOiB2ZXJzaW9uLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1vZGVsKHNvdXJjZTogc3RyaW5nLCB1cmk6IG1vbmFjby5VcmkpIHtcbiAgICAgICAgdXJpID0gdXJpLndpdGgoeyBwYXRoOiB1cmkucGF0aC5yZXBsYWNlKCdAdHlwZXMvJywgJycpIH0pO1xuICAgICAgICBpZiAoIXRoaXMubW9uYWNvLmVkaXRvci5nZXRNb2RlbCh1cmkpKSB7XG4gICAgICAgICAgICB0aGlzLm1vbmFjby5lZGl0b3IuY3JlYXRlTW9kZWwoc291cmNlLCAndHlwZXNjcmlwdCcsIHVyaSk7XG4gICAgICAgICAgICB0aGlzLm5ld0ltcG9ydHNSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc2hJbXBvcnRSZXNvdXJjZVBhdGgocDogSW1wb3J0UmVzb3VyY2VQYXRoKSB7XG4gICAgICAgIHJldHVybiBpbXBvcnRSZXNvdXJjZVBhdGhUb1N0cmluZyhwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlc29sdmVQYWNrYWdlSnNvbihcbiAgICAgICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICAgICAgdmVyc2lvbj86IHN0cmluZyxcbiAgICAgICAgc3ViUGF0aD86IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cbiAgICAgICAgY29uc3QgdXJpID0gcGF0aC5qb2luKHBhY2thZ2VOYW1lICsgKHZlcnNpb24gPyBgQCR7dmVyc2lvbn1gIDogJycpLCBzdWJQYXRoID8/ICcnLCAncGFja2FnZS5qc29uJyk7XG4gICAgICAgIGxldCBpc0F2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgICBsZXQgY29udGVudDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICh0aGlzLmNhY2hlLmlzRmlsZUF2YWlsYWJsZSkge1xuICAgICAgICAgICAgaXNBdmFpbGFibGUgPSBhd2FpdCB0aGlzLmNhY2hlLmlzRmlsZUF2YWlsYWJsZSh1cmkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29udGVudCA9IGF3YWl0IHRoaXMuY2FjaGUuZ2V0RmlsZSh1cmkpO1xuICAgICAgICAgICAgaXNBdmFpbGFibGUgPSBjb250ZW50ICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50ID8/IChhd2FpdCB0aGlzLmNhY2hlLmdldEZpbGUodXJpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInJlY3Vyc2luZyByZXNvbHZlUGFja2FnZUpzb25cIiwgcGFja2FnZU5hbWUsIHZlcnNpb24sIHN1YlBhdGgpXG4gICAgICAgICAgICBjb250ZW50ID0gYXdhaXQgVW5wa2dTb3VyY2VSZXNvbHZlci5yZXNvbHZlUGFja2FnZUpzb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIHN1YlBhdGgpO1xuICAgICAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlLnN0b3JlRmlsZSh1cmksIGNvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlc29sdmVTb3VyY2VGaWxlKFxuICAgICAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIGZpbGVQYXRoOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuXG4gICAgICAgIGNvbnN0IHVyaSA9IHBhdGguam9pbihwYWNrYWdlTmFtZSArICh2ZXJzaW9uID8gYEAke3ZlcnNpb259YCA6ICcnKSwgZmlsZVBhdGgpO1xuICAgICAgICBsZXQgaXNBdmFpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgbGV0IGNvbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodGhpcy5jYWNoZS5pc0ZpbGVBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy5jYWNoZS5pc0ZpbGVBdmFpbGFibGUodXJpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCB0aGlzLmNhY2hlLmdldEZpbGUodXJpKTtcbiAgICAgICAgICAgIGlzQXZhaWxhYmxlID0gY29udGVudCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBpbnZva2VVcGRhdGUoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTG9hZGVkRnJvbUNhY2hlJyxcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0UGF0aDogdXJpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQgPz8gKGF3YWl0IHRoaXMuY2FjaGUuZ2V0RmlsZSh1cmkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCBVbnBrZ1NvdXJjZVJlc29sdmVyLnJlc29sdmVTb3VyY2VGaWxlKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBmaWxlUGF0aCk7XG4gICAgICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgIGludm9rZVVwZGF0ZShcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1N0b3JlZFRvQ2FjaGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0UGF0aDogdXJpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGUuc3RvcmVGaWxlKHVyaSwgY29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { ImportResolver } from './import-resolver';
|
|
2
|
-
import * as path from 'path-browserify';
|
|
3
|
-
import { invokeUpdate } from './update-emitter';
|
|
4
|
-
import { RecursionDepth } from './recursion-depth';
|
|
5
|
-
import { DummySourceCache } from './dummy-source-cache';
|
|
6
|
-
// https://github.com/lukasbach/monaco-editor-auto-typings
|
|
7
|
-
export class MonacoAutoTypeImporter {
|
|
8
|
-
constructor(editor, options) {
|
|
9
|
-
this.editor = editor;
|
|
10
|
-
this.options = options;
|
|
11
|
-
this.disposables = [];
|
|
12
|
-
this.importResolver = new ImportResolver(options);
|
|
13
|
-
const changeModelDisposable = editor.onDidChangeModelContent(e => {
|
|
14
|
-
this.debouncedResolveContents();
|
|
15
|
-
});
|
|
16
|
-
this.disposables.push(changeModelDisposable);
|
|
17
|
-
this.resolveContents();
|
|
18
|
-
if (!options.dontAdaptEditorOptions) {
|
|
19
|
-
options.monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
|
|
20
|
-
...options.monaco.languages.typescript.typescriptDefaults.getCompilerOptions(),
|
|
21
|
-
moduleResolution: options.monaco.languages.typescript.ModuleResolutionKind.NodeJs,
|
|
22
|
-
allowSyntheticDefaultImports: true,
|
|
23
|
-
rootDir: options.fileRootPath,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
static async create(editor, options) {
|
|
28
|
-
if (options?.shareCache && options.sourceCache && !MonacoAutoTypeImporter.sharedCache) {
|
|
29
|
-
MonacoAutoTypeImporter.sharedCache = options.sourceCache;
|
|
30
|
-
}
|
|
31
|
-
const monacoInstance = options?.monaco ?? window['monaco'];
|
|
32
|
-
if (!monacoInstance) {
|
|
33
|
-
throw new Error('monacoInstance not found, you can specify the monaco instance via options.monaco');
|
|
34
|
-
}
|
|
35
|
-
return new MonacoAutoTypeImporter(editor, {
|
|
36
|
-
fileRootPath: 'inmemory://model/',
|
|
37
|
-
onlySpecifiedPackages: false,
|
|
38
|
-
preloadPackages: false,
|
|
39
|
-
shareCache: false,
|
|
40
|
-
dontAdaptEditorOptions: false,
|
|
41
|
-
dontRefreshModelValueAfterResolvement: false,
|
|
42
|
-
sourceCache: MonacoAutoTypeImporter.sharedCache ?? new DummySourceCache(),
|
|
43
|
-
debounceDuration: 4000,
|
|
44
|
-
fileRecursionDepth: 10,
|
|
45
|
-
packageRecursionDepth: 3,
|
|
46
|
-
...options,
|
|
47
|
-
monaco: monacoInstance,
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
dispose() {
|
|
51
|
-
this.disposables.forEach(d => d.dispose());
|
|
52
|
-
}
|
|
53
|
-
setVersions(versions) {
|
|
54
|
-
this.importResolver.setVersions(versions);
|
|
55
|
-
this.options.versions = versions;
|
|
56
|
-
}
|
|
57
|
-
async clearCache() {
|
|
58
|
-
await this.options.sourceCache.clear();
|
|
59
|
-
}
|
|
60
|
-
debouncedResolveContents() {
|
|
61
|
-
if (this.isResolving) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
invokeUpdate({ type: 'CodeChanged' }, this.options);
|
|
65
|
-
if (this.options.debounceDuration <= 0) {
|
|
66
|
-
this.resolveContents();
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
if (this.debounceTimer !== undefined) {
|
|
70
|
-
clearTimeout(this.debounceTimer);
|
|
71
|
-
}
|
|
72
|
-
this.debounceTimer = setTimeout(async () => {
|
|
73
|
-
await this.resolveContents();
|
|
74
|
-
this.debounceTimer = undefined;
|
|
75
|
-
}, this.options.debounceDuration);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
async resolveContents() {
|
|
79
|
-
this.isResolving = true;
|
|
80
|
-
invokeUpdate({ type: 'ResolveNewImports' }, this.options);
|
|
81
|
-
const model = this.editor.getModel();
|
|
82
|
-
// This can happen when the editor is disposed before all typings
|
|
83
|
-
// are installed.
|
|
84
|
-
if (!model) {
|
|
85
|
-
throw Error('No model');
|
|
86
|
-
}
|
|
87
|
-
const content = model.getLinesContent();
|
|
88
|
-
try {
|
|
89
|
-
await this.importResolver.resolveImportsInFile(content.join('\n'), path.dirname(model.uri.toString()), new RecursionDepth(this.options));
|
|
90
|
-
}
|
|
91
|
-
catch (e) {
|
|
92
|
-
if (this.options.onError) {
|
|
93
|
-
this.options.onError(e.message ?? e);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
throw e;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (this.importResolver.wereNewImportsResolved()) {
|
|
100
|
-
if (!this.options.dontRefreshModelValueAfterResolvement) {
|
|
101
|
-
const currentPosition = this.editor.getPosition();
|
|
102
|
-
model.setValue(model.getValue());
|
|
103
|
-
if (currentPosition) {
|
|
104
|
-
this.editor.setPosition(currentPosition);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
this.importResolver.resetNewImportsResolved();
|
|
108
|
-
}
|
|
109
|
-
this.isResolving = false;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy92c2NvZGUvdHMtdHlwZS1yZXNvbHZlci9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssSUFBSSxNQUFNLGlCQUFpQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsMERBQTBEO0FBQzFELE1BQU0sT0FBTyxzQkFBc0I7SUFPL0IsWUFBMkIsTUFBYyxFQUFVLE9BQWdCO1FBQXhDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRjNELGdCQUFXLEdBQXlCLEVBQUUsQ0FBQztRQUczQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxELE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDdEUsR0FBRyxPQUFP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RSxDQUFDO2dCQUNsRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEltcG9ydFJlc29sdmVyIH0gZnJvbSAnLi9pbXBvcnQtcmVzb2x2ZXInO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoLWJyb3dzZXJpZnknO1xuaW1wb3J0IHR5cGUgKiBhcyBtb25hY28gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQgeyBpbnZva2VVcGRhdGUgfSBmcm9tICcuL3VwZGF0ZS1lbWl0dGVyJztcbmltcG9ydCB7IFJlY3Vyc2lvbkRlcHRoIH0gZnJvbSAnLi9yZWN1cnNpb24tZGVwdGgnO1xuaW1wb3J0IHsgT3B0aW9ucywgU291cmNlQ2FjaGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IER1bW15U291cmNlQ2FjaGUgfSBmcm9tICcuL2R1bW15LXNvdXJjZS1jYWNoZSc7XG5cbnR5cGUgRWRpdG9yID0gbW9uYWNvLmVkaXRvci5JQ29kZUVkaXRvciB8IG1vbmFjby5lZGl0b3IuSVN0YW5kYWxvbmVDb2RlRWRpdG9yO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbHVrYXNiYWNoL21vbmFjby1lZGl0b3ItYXV0by10eXBpbmdzXG5leHBvcnQgY2xhc3MgTW9uYWNvQXV0b1R5cGVJbXBvcnRlciBpbXBsZW1lbnRzIG1vbmFjby5JRGlzcG9zYWJsZSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgc2hhcmVkQ2FjaGU/OiBTb3VyY2VDYWNoZTtcbiAgICBwcml2YXRlIGltcG9ydFJlc29sdmVyOiBJbXBvcnRSZXNvbHZlcjtcbiAgICBwcml2YXRlIGRlYm91bmNlVGltZXI/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBpc1Jlc29sdmluZz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBkaXNwb3NhYmxlczogbW9uYWNvLklEaXNwb3NhYmxlW10gPSBbXTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGVkaXRvcjogRWRpdG9yLCBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5pbXBvcnRSZXNvbHZlciA9IG5ldyBJbXBvcnRSZXNvbHZlcihvcHRpb25zKTtcblxuICAgICAgICBjb25zdCBjaGFuZ2VNb2RlbERpc3Bvc2FibGUgPSBlZGl0b3Iub25EaWRDaGFuZ2VNb2RlbENvbnRlbnQoZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlYm91bmNlZFJlc29sdmVDb250ZW50cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kaXNwb3NhYmxlcy5wdXNoKGNoYW5nZU1vZGVsRGlzcG9zYWJsZSk7XG4gICAgICAgIHRoaXMucmVzb2x2ZUNvbnRlbnRzKCk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmRvbnRBZGFwdEVkaXRvck9wdGlvbnMpIHtcbiAgICAgICAgICAgIG9wdGlvbnMubW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LnR5cGVzY3JpcHREZWZhdWx0cy5zZXRDb21waWxlck9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMubW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LnR5cGVzY3JpcHREZWZhdWx0cy5nZXRDb21waWxlck9wdGlvbnMoKSxcbiAgICAgICAgICAgICAgICBtb2R1bGVSZXNvbHV0aW9uOiBvcHRpb25zLm1vbmFjby5sYW5ndWFnZXMudHlwZXNjcmlwdC5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlSnMsXG4gICAgICAgICAgICAgICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICAgICAgICAgICAgICByb290RGlyOiBvcHRpb25zLmZpbGVSb290UGF0aCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyBjcmVhdGUoZWRpdG9yOiBFZGl0b3IsIG9wdGlvbnM/OiBQYXJ0aWFsPE9wdGlvbnM+KTogUHJvbWlzZTxNb25hY29BdXRvVHlwZUltcG9ydGVyPiB7XG4gICAgICAgIGlmIChvcHRpb25zPy5zaGFyZUNhY2hlICYmIG9wdGlvbnMuc291cmNlQ2FjaGUgJiYgIU1vbmFjb0F1dG9UeXBlSW1wb3J0ZXIuc2hhcmVkQ2FjaGUpIHtcbiAgICAgICAgICAgIE1vbmFjb0F1dG9UeXBlSW1wb3J0ZXIuc2hhcmVkQ2FjaGUgPSBvcHRpb25zLnNvdXJjZUNhY2hlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9uYWNvSW5zdGFuY2UgPSBvcHRpb25zPy5tb25hY28gPz8gd2luZG93Wydtb25hY28nXTtcblxuICAgICAgICBpZiAoIW1vbmFjb0luc3RhbmNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21vbmFjb0luc3RhbmNlIG5vdCBmb3VuZCwgeW91IGNhbiBzcGVjaWZ5IHRoZSBtb25hY28gaW5zdGFuY2UgdmlhIG9wdGlvbnMubW9uYWNvJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IE1vbmFjb0F1dG9UeXBlSW1wb3J0ZXIoZWRpdG9yLCB7XG4gICAgICAgICAgICBmaWxlUm9vdFBhdGg6ICdpbm1lbW9yeTovL21vZGVsLycsXG4gICAgICAgICAgICBvbmx5U3BlY2lmaWVkUGFja2FnZXM6IGZhbHNlLFxuICAgICAgICAgICAgcHJlbG9hZFBhY2thZ2VzOiBmYWxzZSxcbiAgICAgICAgICAgIHNoYXJlQ2FjaGU6IGZhbHNlLFxuICAgICAgICAgICAgZG9udEFkYXB0RWRpdG9yT3B0aW9uczogZmFsc2UsXG4gICAgICAgICAgICBkb250UmVmcmVzaE1vZGVsVmFsdWVBZnRlclJlc29sdmVtZW50OiBmYWxzZSxcbiAgICAgICAgICAgIHNvdXJjZUNhY2hlOiBNb25hY29BdXRvVHlwZUltcG9ydGVyLnNoYXJlZENhY2hlID8/IG5ldyBEdW1teVNvdXJjZUNhY2hlKCksXG4gICAgICAgICAgICBkZWJvdW5jZUR1cmF0aW9uOiA0MDAwLFxuICAgICAgICAgICAgZmlsZVJlY3Vyc2lvbkRlcHRoOiAxMCxcbiAgICAgICAgICAgIHBhY2thZ2VSZWN1cnNpb25EZXB0aDogMyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBtb25hY286IG1vbmFjb0luc3RhbmNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzcG9zZSgpIHtcbiAgICAgICAgdGhpcy5kaXNwb3NhYmxlcy5mb3JFYWNoKGQgPT4gZC5kaXNwb3NlKCkpXG4gICAgfVxuXG4gICAgcHVibGljIHNldFZlcnNpb25zKHZlcnNpb25zOiB7IFtwYWNrYWdlTmFtZTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICAgICAgdGhpcy5pbXBvcnRSZXNvbHZlci5zZXRWZXJzaW9ucyh2ZXJzaW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucy52ZXJzaW9ucyA9IHZlcnNpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbGVhckNhY2hlKCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdGlvbnMuc291cmNlQ2FjaGUuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlYm91bmNlZFJlc29sdmVDb250ZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZXNvbHZpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGludm9rZVVwZGF0ZSh7IHR5cGU6ICdDb2RlQ2hhbmdlZCcgfSwgdGhpcy5vcHRpb25zKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYm91bmNlRHVyYXRpb24gPD0gMCkge1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlQ29udGVudHMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYm91bmNlVGltZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kZWJvdW5jZVRpbWVyID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXNvbHZlQ29udGVudHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlYm91bmNlVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9LCB0aGlzLm9wdGlvbnMuZGVib3VuY2VEdXJhdGlvbikgYXMgYW55O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXNvbHZlQ29udGVudHMoKSB7XG4gICAgICAgIHRoaXMuaXNSZXNvbHZpbmcgPSB0cnVlO1xuICAgICAgICBpbnZva2VVcGRhdGUoeyB0eXBlOiAnUmVzb2x2ZU5ld0ltcG9ydHMnIH0sIHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgbW9kZWwgPSB0aGlzLmVkaXRvci5nZXRNb2RlbCgpO1xuICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgZWRpdG9yIGlzIGRpc3Bvc2VkIGJlZm9yZSBhbGwgdHlwaW5nc1xuICAgICAgICAvLyBhcmUgaW5zdGFsbGVkLlxuICAgICAgICBpZiAoIW1vZGVsKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignTm8gbW9kZWwnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBtb2RlbC5nZXRMaW5lc0NvbnRlbnQoKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pbXBvcnRSZXNvbHZlci5yZXNvbHZlSW1wb3J0c0luRmlsZShcbiAgICAgICAgICAgICAgICBjb250ZW50LmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICAgIHBhdGguZGlybmFtZShtb2RlbC51cmkudG9TdHJpbmcoKSksXG4gICAgICAgICAgICAgICAgbmV3IFJlY3Vyc2lvbkRlcHRoKHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMub25FcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vbkVycm9yKChlIGFzIEVycm9yKS5tZXNzYWdlID8/IGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmltcG9ydFJlc29sdmVyLndlcmVOZXdJbXBvcnRzUmVzb2x2ZWQoKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZG9udFJlZnJlc2hNb2RlbFZhbHVlQWZ0ZXJSZXNvbHZlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IHRoaXMuZWRpdG9yLmdldFBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgbW9kZWwuc2V0VmFsdWUobW9kZWwuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5zZXRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW1wb3J0UmVzb2x2ZXIucmVzZXROZXdJbXBvcnRzUmVzb2x2ZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNSZXNvbHZpbmcgPSBmYWxzZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export class RecursionDepth {
|
|
2
|
-
constructor(options, fileRecursionDepth = 0, packageRecursionDepth = 0) {
|
|
3
|
-
this.options = options;
|
|
4
|
-
this.fileRecursionDepth = fileRecursionDepth;
|
|
5
|
-
this.packageRecursionDepth = packageRecursionDepth;
|
|
6
|
-
}
|
|
7
|
-
nextPackage() {
|
|
8
|
-
return new RecursionDepth(this.options, this.fileRecursionDepth, this.packageRecursionDepth + 1);
|
|
9
|
-
}
|
|
10
|
-
nextFile() {
|
|
11
|
-
return new RecursionDepth(this.options, this.fileRecursionDepth + 1, this.packageRecursionDepth);
|
|
12
|
-
}
|
|
13
|
-
same() {
|
|
14
|
-
return new RecursionDepth(this.options, this.fileRecursionDepth, this.packageRecursionDepth);
|
|
15
|
-
}
|
|
16
|
-
shouldStop() {
|
|
17
|
-
return ((this.options.fileRecursionDepth > 0 && this.fileRecursionDepth >= this.options.fileRecursionDepth) ||
|
|
18
|
-
(this.options.packageRecursionDepth > 0 && this.packageRecursionDepth >= this.options.packageRecursionDepth));
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdXJzaW9uLWRlcHRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL3ZzY29kZS90cy10eXBlLXJlc29sdmVyL3JlY3Vyc2lvbi1kZXB0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sY0FBYztJQUN2QixZQUFvQixPQUFnQixFQUFVLHFCQUFxQixDQUFDLEVBQVUsd0JBQXdCLENBQUM7UUFBbkYsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBSTtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBSTtJQUFHLENBQUM7SUFFcEcsV0FBVztRQUNkLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFTSxRQUFRO1FBQ1gsT0FBTyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVNLElBQUk7UUFDUCxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTSxVQUFVO1FBQ2IsT0FBTyxDQUNILENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7WUFDbkcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUMvRyxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgUmVjdXJzaW9uRGVwdGgge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogT3B0aW9ucywgcHJpdmF0ZSBmaWxlUmVjdXJzaW9uRGVwdGggPSAwLCBwcml2YXRlIHBhY2thZ2VSZWN1cnNpb25EZXB0aCA9IDApIHt9XG5cbiAgICBwdWJsaWMgbmV4dFBhY2thZ2UoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVjdXJzaW9uRGVwdGgodGhpcy5vcHRpb25zLCB0aGlzLmZpbGVSZWN1cnNpb25EZXB0aCwgdGhpcy5wYWNrYWdlUmVjdXJzaW9uRGVwdGggKyAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dEZpbGUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVjdXJzaW9uRGVwdGgodGhpcy5vcHRpb25zLCB0aGlzLmZpbGVSZWN1cnNpb25EZXB0aCArIDEsIHRoaXMucGFja2FnZVJlY3Vyc2lvbkRlcHRoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2FtZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWN1cnNpb25EZXB0aCh0aGlzLm9wdGlvbnMsIHRoaXMuZmlsZVJlY3Vyc2lvbkRlcHRoLCB0aGlzLnBhY2thZ2VSZWN1cnNpb25EZXB0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFN0b3AoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5vcHRpb25zLmZpbGVSZWN1cnNpb25EZXB0aCA+IDAgJiYgdGhpcy5maWxlUmVjdXJzaW9uRGVwdGggPj0gdGhpcy5vcHRpb25zLmZpbGVSZWN1cnNpb25EZXB0aCkgfHxcbiAgICAgICAgICAgICh0aGlzLm9wdGlvbnMucGFja2FnZVJlY3Vyc2lvbkRlcHRoID4gMCAmJiB0aGlzLnBhY2thZ2VSZWN1cnNpb25EZXB0aCA+PSB0aGlzLm9wdGlvbnMucGFja2FnZVJlY3Vyc2lvbkRlcHRoKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as path from 'path-browserify';
|
|
2
|
-
export const importResourcePathToString = (p) => {
|
|
3
|
-
switch (p.kind) {
|
|
4
|
-
case 'package':
|
|
5
|
-
return path.join(p.packageName, p.importPath ?? '', 'package.json');
|
|
6
|
-
case 'relative':
|
|
7
|
-
return path.join(p.sourcePath, p.importPath);
|
|
8
|
-
case 'relative-in-package':
|
|
9
|
-
return path.join(p.packageName, p.sourcePath, p.importPath);
|
|
10
|
-
case 'bruteforce':
|
|
11
|
-
throw new Error("Not Implemented");
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvdnNjb2RlL3RzLXR5cGUtcmVzb2x2ZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxpQkFBaUIsQ0FBQztBQWtOeEMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFxQixFQUFFLEVBQUU7SUFDaEUsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLFNBQVM7WUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN4RSxLQUFLLFVBQVU7WUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsS0FBSyxxQkFBcUI7WUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEUsS0FBSyxZQUFZO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIG1vbmFjbyBmcm9tICdtb25hY28tZWRpdG9yJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aC1icm93c2VyaWZ5JztcblxuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VDYWNoZSB7XG4gICAgaXNGaWxlQXZhaWxhYmxlPzogKHVyaTogc3RyaW5nKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICAgIHN0b3JlRmlsZTogKHVyaTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gICAgZ2V0RmlsZTogKHVyaTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD47XG4gICAgY2xlYXI6ICgpID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzVXBkYXRlID1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ0NvZGVDaGFuZ2VkJztcbiAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdSZXNvbHZlTmV3SW1wb3J0cyc7XG4gICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnTG9va2VkVXBUeXBlRmlsZSc7XG4gICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdBdHRlbXB0ZWRMb29rVXBGaWxlJztcbiAgICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ0xvb2tlZFVwUGFja2FnZSc7XG4gICAgICAgIHBhY2thZ2U6IHN0cmluZztcbiAgICAgICAgZGVmaW5pdGVseVR5cGVkOiBib29sZWFuO1xuICAgICAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ0xvYWRlZEZyb21DYWNoZSc7XG4gICAgICAgIGltcG9ydFBhdGg6IHN0cmluZztcbiAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdTdG9yZWRUb0NhY2hlJztcbiAgICAgICAgaW1wb3J0UGF0aDogc3RyaW5nO1xuICAgIH07XG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFNoYXJlIHNvdXJjZSBjYWNoZSBiZXR3ZWVuIG11bHRpcGxlIGVkaXRvciBpbnN0YW5jZXMgYnkgc3RvcmluZ1xuICAgICAqIHRoZSBjYWNoZSBpbiBhIHN0YXRpYyBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAqL1xuICAgIHNoYXJlQ2FjaGU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBPbmx5IHVzZSBwYWNrYWdlcyBzcGVjaWZpZWQgaW4gdGhlIGB2ZXJzaW9uc2AgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgKi9cbiAgICBvbmx5U3BlY2lmaWVkUGFja2FnZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHR5cGluZ3MgZnJvbSBwcmVzcGVjaWZpZWQgdmVyc2lvbnMgd2hlbiBpbml0aWFsaXppbmcuIFZlcnNpb25zXG4gICAgICogbmVlZCB0byBiZSBzcGVjaWZpZWQgaW4gdGhlIGBgdmVyc2lvbnNgYCBvcHRpb24uXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgKi9cbiAgICBwcmVsb2FkUGFja2FnZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGNvbXBpbGVyIG9wdGlvbnMgdG8gZGVmYXVsdHMgc3VpdGFibGUgZm9yIGF1dG8tbG9hZGVkXG4gICAgICogZGVjbGFyYXRpb25zLCBzcGVjaWZpY2FsbHkgYnkgc2V0dGluZyBgYG1vZHVsZVJlc29sdXRpb25gYCB0b1xuICAgICAqIGBgTm9kZUpzYGAgYW5kIGBgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0c2BgIHRvIHRydWUuXG4gICAgICogT3RoZXIgb3B0aW9ucyBhcmUgbm90IGNoYW5nZWQuIFNldCB0aGlzIHByb3BlcnR5IHRvIHRydWUgdG9cbiAgICAgKiBkaXNhYmxlIHRoaXMgYmVoYXZpb3VyLlxuICAgICAqXG4gICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICovXG4gICAgZG9udEFkYXB0RWRpdG9yT3B0aW9uczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFmdGVyIHR5cGluZ3Mgd2VyZSByZXNvbHZlZCBhbmQgaW5qZWN0ZWQgaW50byBtb25hY28sIGF1dG8tdHlwaW5nc1xuICAgICAqIHVwZGF0ZXMgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IG1vZGVsIHRvIHRyaWdnZXIgYSByZWZyZXNoIGluXG4gICAgICogbW9uYWNvJ3MgdHlwaW5nIGxvZ2ljLCBzbyB0aGF0IGl0IHVzZXMgdGhlIGluamVjdGVkIHR5cGluZ3MuXG4gICAgICovXG4gICAgZG9udFJlZnJlc2hNb2RlbFZhbHVlQWZ0ZXJSZXNvbHZlbWVudDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFByZXNwZWNpZmllZCBwYWNrYWdlIHZlcnNpb25zLiBJZiBhIHBhY2thZ2UgaXMgbG9hZGVkIHdob3NlXG4gICAgICogbmFtZSBpcyBzcGVjaWZpZWQgaW4gdGhpcyBvYmplY3QsIGl0IHdpbGwgbG9hZCB3aXRoIHRoZSBleGFjdFxuICAgICAqIHZlcnNpb24gc3BlY2lmaWVkIGluIHRoZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBFeGFtcGxlOlxuICAgICAqXG4gICAgICogYGBganNvblxuICAgICAqIHtcbiAgICAgKiAgIFwiQHR5cGVzL3JlYWN0XCI6IFwiMTcuMC4wXCIsXG4gICAgICogICBcImNzc3R5cGVcIjogXCIzLjAuNVwiXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogU2V0dGluZyB0aGUgb3B0aW9uIGBgb25seVNwZWNpZmllZFBhY2thZ2VzYGAgdG8gdHJ1ZSBtYWtlcyB0aGlzXG4gICAgICogcHJvcGVydHkgYWN0IGFzIGEgd2hpdGVsaXN0IGZvciBwYWNrYWdlcy5cbiAgICAgKlxuICAgICAqIFNldHRpbmcgdGhlIG9wdGlvbiBgYHByZWxvYWRQYWNrYWdlc2BgIG1ha2VzIHRoZSBwYWNrYWdlcyBzcGVjaWZpZWRcbiAgICAgKiBpbiB0aGlzIHByb3BlcnR5IGxvYWQgZGlyZWN0bHkgYWZ0ZXIgaW5pdGlhbGl6aW5nIHRoZSBhdXRvLWxvYWRlci5cbiAgICAgKi9cbiAgICB2ZXJzaW9ucz86IHsgW3BhY2thZ2VOYW1lOiBzdHJpbmddOiBzdHJpbmc7IH07XG5cbiAgICAvKipcbiAgICAgKiBJZiBhIG5ldyBwYWNrYWdlIHdhcyBsb2FkZWQsIGl0cyBuYW1lIGFuZCB2ZXJzaW9uIGlzIGFkZGVkIHRvIHRoZVxuICAgICAqIHZlcnNpb24gb2JqZWN0LCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdpdGggdGhlIHVwZGF0ZWQgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB2ZXJzaW9ucyB1cGRhdGVkIHZlcnNpb25zIG9iamVjdC5cbiAgICAgKi9cbiAgICBvblVwZGF0ZVZlcnNpb25zPzogKHZlcnNpb25zOiB7IFtwYWNrYWdlTmFtZTogc3RyaW5nXTogc3RyaW5nOyB9KSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU3VwcGx5IGEgY2FjaGUgd2hlcmUgZGVjbGFyYXRpb24gZmlsZXMgYW5kIHBhY2thZ2UuanNvbiBmaWxlcyBhcmVcbiAgICAgKiBjYWNoZWQgdG8uIFN1cHBseSBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgTG9jYWxTdG9yYWdlQ2FjaGV9IHRvIGNhY2hlXG4gICAgICogZmlsZXMgdG8gbG9jYWxTdG9yYWdlLlxuICAgICAqL1xuICAgIHNvdXJjZUNhY2hlOiBTb3VyY2VDYWNoZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSByb290IGRpcmVjdG9yeSB3aGVyZSB5b3VyIGVkaXRlZCBmaWxlcyBhcmUuIE11c3QgZW5kIHdpdGhcbiAgICAgKiBhIHNsYXNoLiBUaGUgZGVmYXVsdCBpcyBzdWl0YWJsZSB1bmxlc3MgeW91IGNoYW5nZSB0aGUgZGVmYXVsdFxuICAgICAqIFVSSSBvZiBmaWxlcyBsb2FkZWQgaW4gdGhlIGVkaXRvci5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIFwiaW5tZW1vcnk6Ly9tb2RlbC9cIlxuICAgICAqL1xuICAgIGZpbGVSb290UGF0aDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGVib3VuY2VzIGNvZGUgcmVhbmFseXppbmcgYWZ0ZXIgdXNlciBoYXMgY2hhbmdlZCB0aGUgZWRpdG9yIGNvbnRlbnRzXG4gICAgICogYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFNldCB0byB6ZXJvIHRvIGRpc2FibGUuIFZhbHVlIHByb3ZpZGVkIGluXG4gICAgICogbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogRGVmYXVsdHMgdG8gNDAwMCwgaS5lLiA0IHNlY29uZHMuXG4gICAgICovXG4gICAgZGVib3VuY2VEdXJhdGlvbjogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogTWF4aW11bSByZWN1cnNpb24gZGVwdGggZm9yIHJlY3Vyc2luZyBwYWNrYWdlcy4gRGV0ZXJtaW5lcyBob3cgbWFueVxuICAgICAqIG5lc3RlZCBwYWNrYWdlIGRlY2xhcmF0aW9ucyBhcmUgbG9hZGVkLiBGb3IgZXhhbXBsZSwgaWYgYGBwYWNrYWdlUmVjdXJzaW9uRGVwdGhgYFxuICAgICAqIGhhcyB0aGUgdmFsdWUgMiwgdGhlIGNvZGUgaW4gdGhlIG1vbmFjbyBlZGl0b3IgcmVmZXJlbmNlcyBwYWNrYWdlcyBgYEExYGAsIGBgQTJgYFxuICAgICAqIGFuZCBgYEEzYGAsIHBhY2thZ2UgYGBBMWBgIHJlZmVyZW5jZXMgcGFja2FnZSBgYEIxYGAgYW5kIGBgQjFgYCByZWZlcmVuY2VzIGBgQzFgYCxcbiAgICAgKiB0aGVuIHBhY2thZ2VzIGBgQTFgYCwgYGBBMmBgLCBgYEEzYGAgYW5kIGBgQjFgYCBhcmUgbG9hZGVkLiBTZXQgdG8gemVybyB0b1xuICAgICAqIGRpc2FibGUuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byAzLlxuICAgICAqL1xuICAgIHBhY2thZ2VSZWN1cnNpb25EZXB0aDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogTWF4aW11bSByZWN1cnNpb24gZGVwdGggZm9yIHJlY3Vyc2luZyBmaWxlcy4gRGV0ZXJtaW5lcyBob3cgbWFueVxuICAgICAqIG5lc3RlZCBmaWxlIGRlY2xhcmF0aW9ucyBhcmUgbG9hZGVkLiBUaGUgc2FtZSBhcyBgYHBhY2thZ2VSZWN1cnNpb25EZXB0aGBgLFxuICAgICAqIGJ1dCBmb3IgaW5kaXZpZHVhbCBmaWxlcy4gU2V0IHRvIHplcm8gdG8gZGlzYWJsZS5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIDEwLlxuICAgICAqL1xuICAgIGZpbGVSZWN1cnNpb25EZXB0aDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGFmdGVyIHByb2dyZXNzIHVwZGF0ZXMgbGlrZSBsb2FkZWQgZGVjbGFyYXRpb25zIG9yIGV2ZW50cy5cbiAgICAgKiBAcGFyYW0gdXBkYXRlIGRldGFpbGVkIGV2ZW50IG9iamVjdCBjb250YWluaW5nIHVwZGF0ZSBpbmZvcy5cbiAgICAgKiBAcGFyYW0gdGV4dHVhbCBhIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHVwZGF0ZSBmb3IgZGVidWdnaW5nLlxuICAgICAqL1xuICAgIG9uVXBkYXRlPzogKHVwZGF0ZTogUHJvZ3Jlc3NVcGRhdGUsIHRleHR1YWw6IHN0cmluZykgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCBpZiBlcnJvcnMgb2NjdXIuXG4gICAgICogQHBhcmFtIGVycm9yIGEgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IuXG4gICAgICovXG4gICAgb25FcnJvcj86IChlcnJvcjogc3RyaW5nKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIGluc3RhbmNlIG9mIG1vbmFjbyBlZGl0b3JcbiAgICAgKi9cbiAgICBtb25hY286IHR5cGVvZiBtb25hY287XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRSZXNvdXJjZVBhdGhQYWNrYWdlIHtcbiAgICBraW5kOiAncGFja2FnZSc7XG4gICAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgICBpbXBvcnRQYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFJlc291cmNlUGF0aFJlbGF0aXZlIHtcbiAgICBraW5kOiAncmVsYXRpdmUnO1xuICAgIGltcG9ydFBhdGg6IHN0cmluZztcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UmVzb3VyY2VQYXRoUmVsYXRpdmVJblBhY2thZ2Uge1xuICAgIGtpbmQ6ICdyZWxhdGl2ZS1pbi1wYWNrYWdlJztcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICAgIGltcG9ydFBhdGg6IHN0cmluZztcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UmVzb3VyY2VCcnV0ZUZvcmNlIHtcbiAgICBraW5kOiAnYnJ1dGVmb3JjZSc7XG4gICAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgICB0eXBpbmdGaWxlczogYW55W107XG59XG5cbmV4cG9ydCB0eXBlIEltcG9ydFJlc291cmNlUGF0aCA9XG4gICAgfCBJbXBvcnRSZXNvdXJjZVBhdGhQYWNrYWdlXG4gICAgfCBJbXBvcnRSZXNvdXJjZVBhdGhSZWxhdGl2ZVxuICAgIHwgSW1wb3J0UmVzb3VyY2VQYXRoUmVsYXRpdmVJblBhY2thZ2VcbiAgICB8IEltcG9ydFJlc291cmNlQnJ1dGVGb3JjZTtcblxuZXhwb3J0IGNvbnN0IGltcG9ydFJlc291cmNlUGF0aFRvU3RyaW5nID0gKHA6IEltcG9ydFJlc291cmNlUGF0aCkgPT4ge1xuICAgIHN3aXRjaCAocC5raW5kKSB7XG4gICAgICAgIGNhc2UgJ3BhY2thZ2UnOlxuICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbihwLnBhY2thZ2VOYW1lLCBwLmltcG9ydFBhdGggPz8gJycsICdwYWNrYWdlLmpzb24nKTtcbiAgICAgICAgY2FzZSAncmVsYXRpdmUnOlxuICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbihwLnNvdXJjZVBhdGgsIHAuaW1wb3J0UGF0aCk7XG4gICAgICAgIGNhc2UgJ3JlbGF0aXZlLWluLXBhY2thZ2UnOlxuICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbihwLnBhY2thZ2VOYW1lLCBwLnNvdXJjZVBhdGgsIHAuaW1wb3J0UGF0aCk7XG4gICAgICAgIGNhc2UgJ2JydXRlZm9yY2UnOlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IEltcGxlbWVudGVkXCIpO1xuICAgIH1cbn07XG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export class UnpkgSourceResolver {
|
|
2
|
-
static async resolvePackageJson(packageName, version, subPath) {
|
|
3
|
-
return await this.resolveFile(`https://unpkg.com/${packageName}${version ? `@${version}` : ''}${subPath ? `/${subPath}` : ''}/package.json`);
|
|
4
|
-
}
|
|
5
|
-
static async resolveSourceFile(packageName, version, path) {
|
|
6
|
-
return await this.resolveFile(`https://unpkg.com/${packageName}${version ? `@${version}` : ''}/${path}`);
|
|
7
|
-
}
|
|
8
|
-
static async resolveFile(url) {
|
|
9
|
-
const res = await fetch(url, { method: 'GET' });
|
|
10
|
-
if (res.ok) {
|
|
11
|
-
return await res.text();
|
|
12
|
-
}
|
|
13
|
-
else if (res.status === 404) {
|
|
14
|
-
return '';
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
throw Error(`Error other than 404 while fetching from Unpkg at ${url}`);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5wa2ctc291cmNlLXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb21wb25lbnRzL3ZzY29kZS90cy10eXBlLXJlc29sdmVyL3VucGtnLXNvdXJjZS1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQ2xDLFdBQW1CLEVBQ25CLE9BQTJCLEVBQzNCLE9BQTJCO1FBRTNCLE9BQU8sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUN6QixxQkFBcUIsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQ2hILENBQUM7SUFDTixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FDakMsV0FBbUIsRUFDbkIsT0FBMkIsRUFDM0IsSUFBWTtRQUVaLE9BQU8sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBVztRQUN4QyxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVoRCxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNULE9BQU8sTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsQ0FBQzthQUNJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMxQixPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7YUFDSSxDQUFDO1lBQ0YsTUFBTSxLQUFLLENBQUMscURBQXFELEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNsYXNzIFVucGtnU291cmNlUmVzb2x2ZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgcmVzb2x2ZVBhY2thZ2VKc29uKFxuICAgICAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIHN1YlBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlc29sdmVGaWxlKFxuICAgICAgICAgICAgYGh0dHBzOi8vdW5wa2cuY29tLyR7cGFja2FnZU5hbWV9JHt2ZXJzaW9uID8gYEAke3ZlcnNpb259YCA6ICcnfSR7c3ViUGF0aCA/IGAvJHtzdWJQYXRofWAgOiAnJ30vcGFja2FnZS5qc29uYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgcmVzb2x2ZVNvdXJjZUZpbGUoXG4gICAgICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgICAgIHZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgcGF0aDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVzb2x2ZUZpbGUoYGh0dHBzOi8vdW5wa2cuY29tLyR7cGFja2FnZU5hbWV9JHt2ZXJzaW9uID8gYEAke3ZlcnNpb259YCA6ICcnfS8ke3BhdGh9YCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgcmVzb2x2ZUZpbGUodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsLCB7IG1ldGhvZDogJ0dFVCcgfSk7XG5cbiAgICAgICAgaWYgKHJlcy5vaykge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgRXJyb3Igb3RoZXIgdGhhbiA0MDQgd2hpbGUgZmV0Y2hpbmcgZnJvbSBVbnBrZyBhdCAke3VybH1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|