expand-my-type 0.7.0 → 0.8.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/README.md +25 -3
- package/dist/augmenter-compiler-host.d.ts +1 -1
- package/dist/cli.js +60 -18
- package/dist/code-generator.d.ts +2 -2
- package/dist/index.cjs +52 -13
- package/dist/index.d.ts +5 -6
- package/dist/index.js +54 -13
- package/package.json +10 -9
package/README.md
CHANGED
|
@@ -18,8 +18,7 @@ expanded form as a string. That can be useful for code-generation, testing, and
|
|
|
18
18
|
debugging complex type errors.
|
|
19
19
|
|
|
20
20
|
Under the hood, it uses the [TypeScript Compiler API][ts-compiler-api] to expand
|
|
21
|
-
the type expression and optionally formats the output using
|
|
22
|
-
[Prettier][prettier].
|
|
21
|
+
the type expression and optionally formats the output using Biome.
|
|
23
22
|
|
|
24
23
|
## CLI
|
|
25
24
|
|
|
@@ -137,6 +136,30 @@ the following ways:
|
|
|
137
136
|
/* { a: string; b: number } */
|
|
138
137
|
```
|
|
139
138
|
|
|
139
|
+
Advanced users can pass Biome configuration directly:
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
import { expandMyType } from "expand-my-type";
|
|
143
|
+
|
|
144
|
+
const expandedType = await expandMyType({
|
|
145
|
+
typeExpression: "SomeType",
|
|
146
|
+
sourceFileName: "./example.ts",
|
|
147
|
+
prettify: {
|
|
148
|
+
biomeOptions: {
|
|
149
|
+
formatter: {
|
|
150
|
+
indentStyle: "space",
|
|
151
|
+
lineWidth: 120,
|
|
152
|
+
},
|
|
153
|
+
javascript: {
|
|
154
|
+
formatter: {
|
|
155
|
+
semicolons: "always",
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
```
|
|
162
|
+
|
|
140
163
|
For local development in this repository, use Bun:
|
|
141
164
|
|
|
142
165
|
```sh
|
|
@@ -178,5 +201,4 @@ This approach comes with some limitations. Most notably, expanding a type that
|
|
|
178
201
|
leads to an infinite recursion might throw an error (when prettify option is
|
|
179
202
|
enabled), return a truncated output, or return any.
|
|
180
203
|
|
|
181
|
-
[prettier]: https://prettier.io
|
|
182
204
|
[ts-compiler-api]: https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
type ExtractFunctions<T, K extends keyof T = keyof T> = {
|
|
3
|
-
[P in K]: T[P]
|
|
3
|
+
[P in K]: Extract<T[P], (...args: never[]) => unknown>;
|
|
4
4
|
};
|
|
5
5
|
export type CompilerHostFunctionOverrides = Partial<ExtractFunctions<ts.CompilerHost>>;
|
|
6
6
|
/**
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
// src/index.ts
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import ts2 from "typescript";
|
|
6
|
+
|
|
3
7
|
// src/augmenter-compiler-host.ts
|
|
4
8
|
import ts from "typescript";
|
|
5
9
|
var createAugmenterCompilerHost = (sourceFileName, codeToAdd, compilerOptions, compilerHostFunctionOverrides) => {
|
|
@@ -27,8 +31,23 @@ ${contents}`;
|
|
|
27
31
|
};
|
|
28
32
|
|
|
29
33
|
// src/code-generator.ts
|
|
30
|
-
import {
|
|
34
|
+
import { Biome } from "@biomejs/js-api/nodejs";
|
|
31
35
|
var identifierPrefix = "__EXPAND_MY_TYPE__";
|
|
36
|
+
var virtualFormatFileName = "expand-my-type.ts";
|
|
37
|
+
var biome = new Biome;
|
|
38
|
+
var { projectKey } = biome.openProject();
|
|
39
|
+
var defaultBiomeConfiguration = {
|
|
40
|
+
formatter: {
|
|
41
|
+
enabled: true,
|
|
42
|
+
indentStyle: "space"
|
|
43
|
+
},
|
|
44
|
+
javascript: {
|
|
45
|
+
formatter: {
|
|
46
|
+
quoteStyle: "double",
|
|
47
|
+
semicolons: "asNeeded"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
32
51
|
var createExpandCodeBlock = (typeExpression) => {
|
|
33
52
|
return `type ${identifierPrefix}Result = ${identifierPrefix}Expand<${identifierPrefix}Expression>;
|
|
34
53
|
type ${identifierPrefix}Expression = ${typeExpression};
|
|
@@ -45,18 +64,40 @@ var createExpandCodeBlock = (typeExpression) => {
|
|
|
45
64
|
type ${identifierPrefix}AppendUnderscore<T extends string> = \`\${T}_\` extends string ? \`\${T}_\` : never;
|
|
46
65
|
type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
|
|
47
66
|
};
|
|
48
|
-
var formatTypeExpression = async (code,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
67
|
+
var formatTypeExpression = async (code, biomeConfiguration) => {
|
|
68
|
+
const input = `type ${identifierPrefix} = ${code}`;
|
|
69
|
+
const javascriptFormatter = {
|
|
70
|
+
...defaultBiomeConfiguration.javascript?.formatter,
|
|
71
|
+
...biomeConfiguration?.javascript?.formatter
|
|
72
|
+
};
|
|
73
|
+
biome.applyConfiguration(projectKey, {
|
|
74
|
+
...defaultBiomeConfiguration,
|
|
75
|
+
...biomeConfiguration,
|
|
76
|
+
formatter: {
|
|
77
|
+
...defaultBiomeConfiguration.formatter,
|
|
78
|
+
...biomeConfiguration?.formatter
|
|
79
|
+
},
|
|
80
|
+
javascript: {
|
|
81
|
+
...defaultBiomeConfiguration.javascript,
|
|
82
|
+
...biomeConfiguration?.javascript,
|
|
83
|
+
formatter: javascriptFormatter
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
const result = biome.formatContent(projectKey, input, {
|
|
87
|
+
filePath: virtualFormatFileName
|
|
88
|
+
});
|
|
89
|
+
if (result.diagnostics.length > 0) {
|
|
90
|
+
throw new Error(biome.printDiagnostics(result.diagnostics, {
|
|
91
|
+
filePath: virtualFormatFileName,
|
|
92
|
+
fileSource: input
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
return result.content.trim().substring(`type ${identifierPrefix} = `.length);
|
|
53
96
|
};
|
|
54
97
|
|
|
55
98
|
// src/index.ts
|
|
56
|
-
import path from "node:path";
|
|
57
|
-
import ts2 from "typescript";
|
|
58
99
|
var findResultIdentifierNode = (node) => {
|
|
59
|
-
if (node.getChildCount()
|
|
100
|
+
if (node.getChildCount() === 0) {
|
|
60
101
|
if (!ts2.isIdentifier(node)) {
|
|
61
102
|
return;
|
|
62
103
|
}
|
|
@@ -109,10 +150,10 @@ async function expandMyType(options) {
|
|
|
109
150
|
}
|
|
110
151
|
const typeChecker = program.getTypeChecker();
|
|
111
152
|
const expandedTypeString = typeChecker.typeToString(typeChecker.getTypeAtLocation(resultIdentifierNode), undefined, ts2.TypeFormatFlags.NodeBuilderFlagsMask);
|
|
112
|
-
if (options.prettify
|
|
153
|
+
if (options.prettify?.enabled === false) {
|
|
113
154
|
return expandedTypeString;
|
|
114
155
|
}
|
|
115
|
-
return formatTypeExpression(expandedTypeString, options.prettify?.
|
|
156
|
+
return formatTypeExpression(expandedTypeString, options.prettify?.biomeOptions);
|
|
116
157
|
}
|
|
117
158
|
|
|
118
159
|
// src/cli.ts
|
|
@@ -186,16 +227,17 @@ var usagePrompt = [
|
|
|
186
227
|
" -c, --tsconfig <file>\t\tUse the specified tsconfig.json file"
|
|
187
228
|
].join(`
|
|
188
229
|
`);
|
|
189
|
-
if (positionals.length !== 2) {
|
|
190
|
-
console.error(usagePrompt);
|
|
191
|
-
process.exit(1);
|
|
192
|
-
}
|
|
193
230
|
if (values.help) {
|
|
194
231
|
console.error(usagePrompt);
|
|
195
232
|
process.exit(0);
|
|
196
233
|
}
|
|
234
|
+
if (positionals.length !== 2) {
|
|
235
|
+
console.error(usagePrompt);
|
|
236
|
+
process.exit(1);
|
|
237
|
+
}
|
|
197
238
|
var [sourceFileName, typeExpression] = positionals;
|
|
198
|
-
var
|
|
239
|
+
var prettify = values.prettify ?? true;
|
|
240
|
+
var tsConfigFileName = values.tsconfig;
|
|
199
241
|
var tsParsedCommandLine;
|
|
200
242
|
if (tsConfigFileName) {
|
|
201
243
|
const configFile = ts3.readConfigFile(tsConfigFileName, ts3.sys.readFile);
|
|
@@ -212,5 +254,5 @@ var result = await expandMyType({
|
|
|
212
254
|
});
|
|
213
255
|
console.log(result);
|
|
214
256
|
|
|
215
|
-
//# debugId=
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiLCAiLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxudHlwZSBFeHRyYWN0RnVuY3Rpb25zPFQsIEsgZXh0ZW5kcyBrZXlvZiBUID0ga2V5b2YgVD4gPSB7XG4gIFtQIGluIEtdOiBUW1BdIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkgPyBUW1BdIDogbmV2ZXI7XG59O1xuZXhwb3J0IHR5cGUgQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgPSBQYXJ0aWFsPFxuICBFeHRyYWN0RnVuY3Rpb25zPHRzLkNvbXBpbGVySG9zdD5cbj47XG5cbi8qKlxuICogQ3JlYXRlcyBhIGN1c3RvbSBjb21waWxlciBob3N0IHRoYXQgYXVnbWVudHMgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZSBmb3IgZXhwYW5kaW5nIGEgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBzb3VyY2VGaWxlTmFtZSBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBhdWdtZW50LlxuICogQHBhcmFtIGNvZGVUb0FkZCBUeXBlIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gY29tcGlsZXJPcHRpb25zIFR5cGVTY3JpcHQgY29tcGlsZXIgb3B0aW9ucy5cbiAqIEBwYXJhbSBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZy5cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBjb25zdCBvdmVycmlkZXMgPSBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvdmVycmlkZXMpIGFzIEFycmF5PFxuICAgIGtleW9mIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzXG4gID4pIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IG92ZXJyaWRlc1trZXldO1xuXG4gICAgaWYgKG92ZXJyaWRlKSB7XG4gICAgICAoY3VzdG9tQ29tcGlsZXJIb3N0IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gPVxuICAgICAgICBvdmVycmlkZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFJlYWRGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlO1xuXG4gIGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZSA9IChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gb3JpZ2luYWxSZWFkRmlsZShmaWxlTmFtZSk7XG5cbiAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIGlmIChmaWxlTmFtZSAhPT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29kZVRvQWRkfVxcbiR7Y29udGVudHN9YDtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcInByZXR0aWVyXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFxuICAgICAgICBUIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEEpID0+IGluZmVyIFIgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPiA/IFByb21pc2U8JHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFR5cGVBcmd1bWVudDxVPj5cbiAgICAgIDogeyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIHN0cmluZyA/ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRTdHJpbmc8VFtLXT4gOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFRbS10+OyB9ICYge307XG5cbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRUeXBlQXJndW1lbnQ8VD4gPSBbVCAmIHt9XSBleHRlbmRzIFtuZXZlcl0gPyBUIDogVCAmIHt9IGV4dGVuZHMgdm9pZCA/IFQgOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQgJiB7fT47XG5cbiAgICAvLyBGb3JjZXMgYSB1bmlvbiBvZiBzdHJpbmcgbGl0ZXJhbCB0eXBlcyB0byBiZSBleHBhbmRlZFxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUIGV4dGVuZHMgc3RyaW5nPiA9ICR7aWRlbnRpZmllclByZWZpeH1SZW1vdmVVbmRlcnNjb3JlPCR7aWRlbnRpZmllclByZWZpeH1BcHBlbmRVbmRlcnNjb3JlPFQ+PjtcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1BcHBlbmRVbmRlcnNjb3JlPFQgZXh0ZW5kcyBzdHJpbmc+ID0gXFxgXFwke1R9X1xcYCBleHRlbmRzIHN0cmluZyA/IFxcYFxcJHtUfV9cXGAgOiBuZXZlcjtcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1SZW1vdmVVbmRlcnNjb3JlPFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIFxcYFxcJHtpbmZlciBVfV9cXGAgPyBVIDogbmV2ZXI7YDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUeXBlRXhwcmVzc2lvbiA9IGFzeW5jIChcbiAgY29kZTogc3RyaW5nLFxuICBwcmV0dGllck9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gJHtjb2RlfWAsXG4gICAgICBwcmV0dGllck9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9IGAubGVuZ3RoKTtcbn07XG4iLAogICAgImltcG9ydCB7IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LmpzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QuanNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLmpzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIE5vZGUgaW4gd2hpY2ggdHlwZSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgdHlwZSBpZGVudGlmaWVyIG5vZGUuXG4gKi9cbmNvbnN0IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSA9IChub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlLmdldENoaWxkQ291bnQoKSA9PSAwKSB7XG4gICAgaWYgKCF0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gU2luY2Ugd2UgcHV0IHRoZSBfXzxJREVOVElGSUVSPl9fIHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgICAvLyBmaWxlLCB3ZSBjYW4gcmV0dXJuIHRoZSBmaXJzdCBpZGVudGlmaWVyIHdlIGZpbmQuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nXG4gICAqL1xuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCBzb3VyY2UgdGV4dCB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZE15VHlwZU9wdGlvbnMgPVxuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnNcbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcblxuLyoqXG4gKiBFeHBhbmRzIGEgVHlwZVNjcmlwdCB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRoZSBleHBhbmRlZCB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUob3B0aW9uczogRXhwYW5kTXlUeXBlT3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlRXhwcmVzc2lvbi50cmltKCkgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gXCJuZXZlclwiO1xuICB9XG5cbiAgaWYgKFwic291cmNlVGV4dFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCBkdW1teUZpbGVOYW1lID0gXCJleHBhbmQtbXktdHlwZS1kdW1teS50c1wiO1xuXG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogZHVtbXlGaWxlTmFtZSxcbiAgICAgIHR5cGVFeHByZXNzaW9uOiBvcHRpb25zLnR5cGVFeHByZXNzaW9uLFxuICAgICAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM6IHtcbiAgICAgICAgcmVhZEZpbGUoZmlsZU5hbWU6IHN0cmluZykge1xuICAgICAgICAgIGlmIChwYXRoLmJhc2VuYW1lKGZpbGVOYW1lKSA9PT0gZHVtbXlGaWxlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc291cmNlVGV4dDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHMuc3lzLnJlYWRGaWxlKGZpbGVOYW1lKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0c0NvbXBpbGVyT3B0aW9uczogb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyxcbiAgICAgIHByZXR0aWZ5OiBvcHRpb25zLnByZXR0aWZ5LFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIHN0cmljdE51bGxDaGVja3M6IHRydWUsXG4gICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dKczogdHJ1ZSxcbiAgfTtcblxuICBpZiAoIXRzQ29tcGlsZXJPcHRpb25zLnN0cmljdE51bGxDaGVja3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJzdHJpY3ROdWxsQ2hlY2tzIG11c3QgYmUgZW5hYmxlZCFcIik7XG4gIH1cblxuICBjb25zdCBjb21waWxlckhvc3QgPSBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QoXG4gICAgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSxcbiAgICBjcmVhdGVFeHBhbmRDb2RlQmxvY2sob3B0aW9ucy50eXBlRXhwcmVzc2lvbiksXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgb3B0aW9ucy5jb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCByZXN1bHRJZGVudGlmaWVyTm9kZSA9IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFyZXN1bHRJZGVudGlmaWVyTm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5vZGUgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IGV4cGFuZGVkVHlwZVN0cmluZyA9IHR5cGVDaGVja2VyLnR5cGVUb1N0cmluZyhcbiAgICB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihyZXN1bHRJZGVudGlmaWVyTm9kZSksXG4gICAgdW5kZWZpbmVkLFxuICAgIHRzLlR5cGVGb3JtYXRGbGFncy5Ob2RlQnVpbGRlckZsYWdzTWFzayxcbiAgKTtcblxuICBpZiAob3B0aW9ucy5wcmV0dGlmeSAmJiBvcHRpb25zLnByZXR0aWZ5LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihleHBhbmRlZFR5cGVTdHJpbmcsIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMpO1xufVxuIiwKICAgICIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBleHBhbmRNeVR5cGUgfSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcGFyc2VBcmdzLCB0eXBlIFBhcnNlQXJnc0NvbmZpZyB9IGZyb20gXCJub2RlOnV0aWxcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIFZhbHVlcyA9IHtcbiAgaGVscD86IGJvb2xlYW47XG4gIHByZXR0aWZ5OiBib29sZWFuO1xuICB0c2NvbmZpZz86IHN0cmluZztcbn07XG5cbmNvbnN0IHRyeVBhcnNlID0gPFxuICBWYWx1ZXMgZXh0ZW5kcyBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHN0cmluZyB8IGJvb2xlYW4gfCBBcnJheTxzdHJpbmcgfCBib29sZWFuPiB8IHVuZGVmaW5lZFxuICA+LFxuICBPcHRpb25zIGV4dGVuZHMgUGFyc2VBcmdzQ29uZmlnW1wib3B0aW9uc1wiXSA9IFBhcnNlQXJnc0NvbmZpZ1tcIm9wdGlvbnNcIl0sXG4+KFxuICBvcHRpb25zOiBPcHRpb25zLFxuKTogeyBlcnJvcj86IEVycm9yOyB2YWx1ZXM6IFZhbHVlczsgcG9zaXRpb25hbHM6IHN0cmluZ1tdIH0gPT4ge1xuICBsZXQgcmVzdWx0OiBSZXR1cm5UeXBlPHR5cGVvZiBwYXJzZUFyZ3M+O1xuICB0cnkge1xuICAgIHJlc3VsdCA9IHBhcnNlQXJncyh7XG4gICAgICBvcHRpb25zLFxuICAgICAgdG9rZW5zOiB0cnVlLFxuICAgICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcbiAgICAgIHZhbHVlczoge30gYXMgVmFsdWVzLFxuICAgICAgcG9zaXRpb25hbHM6IFtdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB7IHRva2VucywgdmFsdWVzLCBwb3NpdGlvbmFscyB9ID0gcmVzdWx0O1xuXG4gIC8vIFJlcHJvY2VzcyB0aGUgb3B0aW9uIHRva2VucyBhbmQgb3ZlcndyaXRlIHRoZSByZXR1cm5lZCB2YWx1ZXMuXG4gIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zID8/IFtdKSB7XG4gICAgaWYgKHRva2VuLmtpbmQgPT09IFwib3B0aW9uLXRlcm1pbmF0b3JcIiB8fCB0b2tlbi5raW5kID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLm5hbWUuc3RhcnRzV2l0aChcIm5vLVwiKSkge1xuICAgICAgLy8gU3RvcmUgZm9vOmZhbHNlIGZvciAtLW5vLWZvb1xuICAgICAgY29uc3QgcG9zaXRpdmVOYW1lID0gdG9rZW4ubmFtZS5zbGljZShcIm5vLVwiLmxlbmd0aCk7XG4gICAgICB2YWx1ZXNbcG9zaXRpdmVOYW1lXSA9IGZhbHNlO1xuICAgICAgZGVsZXRlIHZhbHVlc1t0b2tlbi5uYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVzYXZlIHZhbHVlIHNvIGxhc3Qgb25lIHdpbnMgaWYgYm90aCAtLWZvbyBhbmQgLS1uby1mb28uXG4gICAgICB2YWx1ZXNbdG9rZW4ubmFtZV0gPSB0b2tlbi52YWx1ZSA/PyB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZXM6IHZhbHVlcyBhcyBWYWx1ZXMsXG4gICAgcG9zaXRpb25hbHMsXG4gIH07XG59O1xuXG5jb25zdCB7IGVycm9yLCB2YWx1ZXMsIHBvc2l0aW9uYWxzIH0gPSB0cnlQYXJzZTxWYWx1ZXM+KHtcbiAgaGVscDoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIHNob3J0OiBcImhcIixcbiAgfSxcbiAgcHJldHRpZnk6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBzaG9ydDogXCJwXCIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgXCJuby1wcmV0dGlmeVwiOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgc2hvcnQ6IFwiUFwiLFxuICB9LFxuICB0c2NvbmZpZzoge1xuICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgc2hvcnQ6IFwiY1wiLFxuICB9LFxufSk7XG5cbmlmIChlcnJvcikge1xuICBjb25zb2xlLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmNvbnN0IHVzYWdlUHJvbXB0ID0gW1xuICBcIlVzYWdlOlwiLFxuICBcIiAgZXhwYW5kLW15LXR5cGUgW29wdGlvbnNdIDxzb3VyY2UtZmlsZT4gPGV4cHJlc3Npb24+XCIsXG4gIFwiXCIsXG4gIFwiT3B0aW9uczpcIixcbiAgXCIgIC1oLCAtLWhlbHBcXHRcXHRcXHRTaG93IHRoaXMgaGVscCBtZXNzYWdlXCIsXG4gIFwiICAtcCwgLS1wcmV0dGlmeVxcdFxcdFByZXR0aWZ5IHRoZSBvdXRwdXQgKGRlZmF1bHQpXCIsXG4gIFwiICAtUCwgLS1uby1wcmV0dGlmeVxcdFxcdERvIG5vdCBwcmV0dGlmeSB0aGUgb3V0cHV0XCIsXG4gIFwiICAtYywgLS10c2NvbmZpZyA8ZmlsZT5cXHRcXHRVc2UgdGhlIHNwZWNpZmllZCB0c2NvbmZpZy5qc29uIGZpbGVcIixcbl0uam9pbihcIlxcblwiKTtcblxuaWYgKHBvc2l0aW9uYWxzLmxlbmd0aCAhPT0gMikge1xuICBjb25zb2xlLmVycm9yKHVzYWdlUHJvbXB0KTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5pZiAodmFsdWVzLmhlbHApIHtcbiAgY29uc29sZS5lcnJvcih1c2FnZVByb21wdCk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn1cblxuY29uc3QgW3NvdXJjZUZpbGVOYW1lLCB0eXBlRXhwcmVzc2lvbl0gPSBwb3NpdGlvbmFscztcbmNvbnN0IHsgcHJldHRpZnksIHRzY29uZmlnOiB0c0NvbmZpZ0ZpbGVOYW1lIH0gPSB2YWx1ZXM7XG5cbmxldCB0c1BhcnNlZENvbW1hbmRMaW5lOiB0cy5QYXJzZWRDb21tYW5kTGluZSB8IHVuZGVmaW5lZDtcblxuaWYgKHRzQ29uZmlnRmlsZU5hbWUpIHtcbiAgY29uc3QgY29uZmlnRmlsZSA9IHRzLnJlYWRDb25maWdGaWxlKHRzQ29uZmlnRmlsZU5hbWUsIHRzLnN5cy5yZWFkRmlsZSk7XG4gIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KFxuICAgIGNvbmZpZ0ZpbGUuY29uZmlnLFxuICAgIHRzLnN5cyxcbiAgICBcIi4vXCIsXG4gICk7XG5cbiAgdHNQYXJzZWRDb21tYW5kTGluZSA9IGNvbXBpbGVyT3B0aW9ucztcbn1cblxuY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhwYW5kTXlUeXBlKHtcbiAgc291cmNlRmlsZU5hbWUsXG4gIHR5cGVFeHByZXNzaW9uLFxuICBwcmV0dGlmeToge1xuICAgIGVuYWJsZWQ6IHByZXR0aWZ5LFxuICB9LFxuICB0c0NvbXBpbGVyT3B0aW9uczogdHNQYXJzZWRDb21tYW5kTGluZT8ub3B0aW9ucyxcbn0pO1xuXG5jb25zb2xlLmxvZyhyZXN1bHQpO1xuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7O0FBQUE7QUFrQk8sSUFBTSw4QkFBOEIsQ0FDekMsZ0JBQ0EsV0FDQSxpQkFDQSxrQ0FDRztBQUFBLEVBQ0gsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsbUJBQW1CLENBQUMsR0FBRyxJQUFJO0FBQUEsRUFDNUUsTUFBTSxZQUFZLGlDQUFpQyxDQUFDO0FBQUEsRUFFcEQsV0FBVyxPQUFPLE9BQU8sS0FBSyxTQUFTLEdBRXBDO0FBQUEsSUFDRCxNQUFNLFdBQVcsVUFBVTtBQUFBLElBRTNCLElBQUksVUFBVTtBQUFBLE1BQ1gsbUJBQTBELE9BQ3pEO0FBQUEsSUFDSjtBQUFBLEVBQ0Y7QUFBQSxFQUVBLE1BQU0sbUJBQW1CLG1CQUFtQjtBQUFBLEVBRTVDLG1CQUFtQixXQUFXLENBQUMsYUFBYTtBQUFBLElBQzFDLE1BQU0sV0FBVyxpQkFBaUIsUUFBUTtBQUFBLElBRTFDLElBQUksYUFBYSxXQUFXO0FBQUEsTUFDMUIsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLElBQUksYUFBYSxnQkFBZ0I7QUFBQSxNQUMvQixPQUFPO0FBQUEsSUFDVDtBQUFBLElBRUEsT0FBTyxHQUFHO0FBQUEsRUFBYztBQUFBO0FBQUEsRUFHMUIsT0FBTztBQUFBOzs7QUNyRFQ7QUFFQSxJQUFNLG1CQUFtQjtBQUVsQixJQUFNLHdCQUF3QixDQUFDLG1CQUEyQjtBQUFBLEVBRS9ELE9BQU8sUUFBUSw0QkFBNEIsMEJBQTBCO0FBQUEsV0FDNUQsZ0NBQWdDO0FBQUE7QUFBQSxXQUVoQztBQUFBLDhEQUNtRCxpQ0FBaUM7QUFBQSwrQ0FDaEQ7QUFBQSxrREFDRyx3Q0FBd0M7QUFBQTtBQUFBLFdBRS9FLG9HQUFvRztBQUFBO0FBQUE7QUFBQSxXQUdwRyxvREFBb0Qsb0NBQW9DO0FBQUEsV0FDeEY7QUFBQSxXQUNBO0FBQUE7QUFHSixJQUFNLHVCQUF1QixPQUNsQyxNQUNB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aEI7QUFFQSxJQUFNLGNBQWM7QUFBQSxFQUNsQjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRixFQUFFLEtBQUs7QUFBQSxDQUFJO0FBRVgsSUFBSSxZQUFZLFdBQVcsR0FBRztBQUFBLEVBQzVCLFFBQVEsTUFBTSxXQUFXO0FBQUEsRUFDekIsUUFBUSxLQUFLLENBQUM7QUFDaEI7QUFFQSxJQUFJLE9BQU8sTUFBTTtBQUFBLEVBQ2YsUUFBUSxNQUFNLFdBQVc7QUFBQSxFQUN6QixRQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLEtBQU8sZ0JBQWdCLGtCQUFrQjtBQUN6QyxNQUFRLFVBQVUsVUFBVSxxQkFBcUI7QUFFakQsSUFBSTtBQUVKLElBQUksa0JBQWtCO0FBQUEsRUFDcEIsTUFBTSxhQUFhLElBQUcsZUFBZSxrQkFBa0IsSUFBRyxJQUFJLFFBQVE7QUFBQSxFQUN0RSxNQUFNLGtCQUFrQixJQUFHLDJCQUN6QixXQUFXLFFBQ1gsSUFBRyxLQUNILElBQ0Y7QUFBQSxFQUVBLHNCQUFzQjtBQUN4QjtBQUVBLElBQU0sU0FBUyxNQUFNLGFBQWE7QUFBQSxFQUNoQztBQUFBLEVBQ0E7QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxtQkFBbUIscUJBQXFCO0FBQzFDLENBQUM7QUFFRCxRQUFRLElBQUksTUFBTTsiLAogICJkZWJ1Z0lkIjogIkNEQTg0MjU4OEM0QUVDNDU2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
|
257
|
+
//# debugId=D978D5D6AFCBBE8D64756E2164756E21
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50cyIsICIuLi9zcmMvY29kZS1nZW5lcmF0b3IudHMiLCAiLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYXRpb24gYXMgQmlvbWVDb25maWd1cmF0aW9uIH0gZnJvbSBcIkBiaW9tZWpzL3dhc20tbm9kZWpzXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gIGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCxcbn0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QuanNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLmpzXCI7XG5cbi8qKlxuICogRmluZHMgdGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHR5cGUgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICovXG5jb25zdCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fPElERU5USUZJRVI+X18gdHlwZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgIC8vIGZpbGUsIHdlIGNhbiByZXR1cm4gdGhlIGZpcnN0IGlkZW50aWZpZXIgd2UgZmluZC5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZFJlc3VsdElkZW50aWZpZXJOb2RlKTtcbn07XG5cbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVPcHRpb25zQmFzZSA9IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIGV4cHJlc3Npb24gdG8gZXhwYW5kLlxuICAgKiBAZXhhbXBsZSBcIlJldHVyblR5cGU8dHlwZW9mIG15RnVuY3Rpb24+XCJcbiAgICovXG4gIHR5cGVFeHByZXNzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgY29tcGlsZXIgb3B0aW9ucy5cbiAgICovXG4gIHRzQ29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQcmV0dGlmeSBvcHRpb25zLlxuICAgKi9cbiAgcHJldHRpZnk/OiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBwcmV0dGlmeSB0aGUgb3V0cHV0LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBCaW9tZSBmb3JtYXR0aW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgYmlvbWVPcHRpb25zPzogQmlvbWVDb25maWd1cmF0aW9uO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgZHVtbXlGaWxlTmFtZSA9IFwiZXhwYW5kLW15LXR5cGUtZHVtbXkudHNcIjtcblxuICAgIHJldHVybiBleHBhbmRNeVR5cGUoe1xuICAgICAgc291cmNlRmlsZU5hbWU6IGR1bW15RmlsZU5hbWUsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlYWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgICBpZiAocGF0aC5iYXNlbmFtZShmaWxlTmFtZSkgPT09IGR1bW15RmlsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZVRleHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRzLnN5cy5yZWFkRmlsZShmaWxlTmFtZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgICBwcmV0dGlmeTogb3B0aW9ucy5wcmV0dGlmeSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkU291cmNlRmlsZU5hbWUgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5zb3VyY2VGaWxlTmFtZSk7XG5cbiAgY29uc3QgdHNDb21waWxlck9wdGlvbnMgPSBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zID8/IHtcbiAgICBub0VtaXQ6IHRydWUsXG5cbiAgICBzdHJpY3ROdWxsQ2hlY2tzOiB0cnVlLFxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgaWYgKCF0c0NvbXBpbGVyT3B0aW9ucy5zdHJpY3ROdWxsQ2hlY2tzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwic3RyaWN0TnVsbENoZWNrcyBtdXN0IGJlIGVuYWJsZWQhXCIpO1xuICB9XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0SWRlbnRpZmllck5vZGUgPSBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghcmVzdWx0SWRlbnRpZmllck5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGVTdHJpbmcgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24ocmVzdWx0SWRlbnRpZmllck5vZGUpLFxuICAgIHVuZGVmaW5lZCxcbiAgICB0cy5UeXBlRm9ybWF0RmxhZ3MuTm9kZUJ1aWxkZXJGbGFnc01hc2ssXG4gICk7XG5cbiAgaWYgKG9wdGlvbnMucHJldHRpZnk/LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihcbiAgICBleHBhbmRlZFR5cGVTdHJpbmcsXG4gICAgb3B0aW9ucy5wcmV0dGlmeT8uYmlvbWVPcHRpb25zLFxuICApO1xufVxuIiwKICAgICJpbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxudHlwZSBFeHRyYWN0RnVuY3Rpb25zPFQsIEsgZXh0ZW5kcyBrZXlvZiBUID0ga2V5b2YgVD4gPSB7XG4gIFtQIGluIEtdOiBFeHRyYWN0PFRbUF0sICguLi5hcmdzOiBuZXZlcltdKSA9PiB1bmtub3duPjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nLlxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgPSAoXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmcsXG4gIGNvZGVUb0FkZDogc3RyaW5nLFxuICBjb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnMsXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4pID0+IHtcbiAgY29uc3QgY3VzdG9tQ29tcGlsZXJIb3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KGNvbXBpbGVyT3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG4gIGNvbnN0IG92ZXJyaWRlcyA9IGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID8/IHt9O1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG92ZXJyaWRlcykgYXMgQXJyYXk8XG4gICAga2V5b2YgQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXNcbiAgPikge1xuICAgIGNvbnN0IG92ZXJyaWRlID0gb3ZlcnJpZGVzW2tleV07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgIChjdXN0b21Db21waWxlckhvc3QgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9XG4gICAgICAgIG92ZXJyaWRlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsUmVhZEZpbGUgPSBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGU7XG5cbiAgY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlID0gKGZpbGVOYW1lKSA9PiB7XG4gICAgY29uc3QgY29udGVudHMgPSBvcmlnaW5hbFJlYWRGaWxlKGZpbGVOYW1lKTtcblxuICAgIGlmIChjb250ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgaWYgKGZpbGVOYW1lICE9PSBzb3VyY2VGaWxlTmFtZSkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtjb2RlVG9BZGR9XFxuJHtjb250ZW50c31gO1xuICB9O1xuXG4gIHJldHVybiBjdXN0b21Db21waWxlckhvc3Q7XG59O1xuIiwKICAgICJpbXBvcnQgeyBCaW9tZSB9IGZyb20gXCJAYmlvbWVqcy9qcy1hcGkvbm9kZWpzXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYXRpb24gYXMgQmlvbWVDb25maWd1cmF0aW9uIH0gZnJvbSBcIkBiaW9tZWpzL3dhc20tbm9kZWpzXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuY29uc3QgdmlydHVhbEZvcm1hdEZpbGVOYW1lID0gXCJleHBhbmQtbXktdHlwZS50c1wiO1xuY29uc3QgYmlvbWUgPSBuZXcgQmlvbWUoKTtcbmNvbnN0IHsgcHJvamVjdEtleSB9ID0gYmlvbWUub3BlblByb2plY3QoKTtcblxuY29uc3QgZGVmYXVsdEJpb21lQ29uZmlndXJhdGlvbjogQmlvbWVDb25maWd1cmF0aW9uID0ge1xuICBmb3JtYXR0ZXI6IHtcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGluZGVudFN0eWxlOiBcInNwYWNlXCIsXG4gIH0sXG4gIGphdmFzY3JpcHQ6IHtcbiAgICBmb3JtYXR0ZXI6IHtcbiAgICAgIHF1b3RlU3R5bGU6IFwiZG91YmxlXCIsXG4gICAgICBzZW1pY29sb25zOiBcImFzTmVlZGVkXCIsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRDb2RlQmxvY2sgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3Rlc3RzL2Nhc2VzL2NvbXBpbGVyL2NvbXB1dGVkVHlwZXNLZXlvZk5vSW5kZXhTaWduYXR1cmVUeXBlLnRzXG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDwke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbiA9ICR7dHlwZUV4cHJlc3Npb259O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQ+ID0gXG4gICAgICAgIFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUiA/ICguLi5hcmdzOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPEE+KSA9PiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFI+XG4gICAgICA6IFQgZXh0ZW5kcyBQcm9taXNlPGluZmVyIFU+ID8gUHJvbWlzZTwke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kVHlwZUFyZ3VtZW50PFU+PlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUW0tdPiA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFR5cGVBcmd1bWVudDxUPiA9IFtUICYge31dIGV4dGVuZHMgW25ldmVyXSA/IFQgOiBUICYge30gZXh0ZW5kcyB2b2lkID8gVCA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VCAmIHt9PjtcblxuICAgIC8vIEZvcmNlcyBhIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFsIHR5cGVzIHRvIGJlIGV4cGFuZGVkXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFQgZXh0ZW5kcyBzdHJpbmc+ID0gJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8JHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VD4+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBcXGBcXCR7VH1fXFxgIGV4dGVuZHMgc3RyaW5nID8gXFxgXFwke1R9X1xcYCA6IG5ldmVyO1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgXFxgXFwke2luZmVyIFV9X1xcYCA/IFUgOiBuZXZlcjtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFR5cGVFeHByZXNzaW9uID0gYXN5bmMgKFxuICBjb2RlOiBzdHJpbmcsXG4gIGJpb21lQ29uZmlndXJhdGlvbj86IEJpb21lQ29uZmlndXJhdGlvbixcbikgPT4ge1xuICBjb25zdCBpbnB1dCA9IGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSAke2NvZGV9YDtcbiAgY29uc3QgamF2YXNjcmlwdEZvcm1hdHRlciA9IHtcbiAgICAuLi5kZWZhdWx0QmlvbWVDb25maWd1cmF0aW9uLmphdmFzY3JpcHQ/LmZvcm1hdHRlcixcbiAgICAuLi5iaW9tZUNvbmZpZ3VyYXRpb24/LmphdmFzY3JpcHQ/LmZvcm1hdHRlcixcbiAgfTtcblxuICBiaW9tZS5hcHBseUNvbmZpZ3VyYXRpb24ocHJvamVjdEtleSwge1xuICAgIC4uLmRlZmF1bHRCaW9tZUNvbmZpZ3VyYXRpb24sXG4gICAgLi4uYmlvbWVDb25maWd1cmF0aW9uLFxuICAgIGZvcm1hdHRlcjoge1xuICAgICAgLi4uZGVmYXVsdEJpb21lQ29uZmlndXJhdGlvbi5mb3JtYXR0ZXIsXG4gICAgICAuLi5iaW9tZUNvbmZpZ3VyYXRpb24/LmZvcm1hdHRlcixcbiAgICB9LFxuICAgIGphdmFzY3JpcHQ6IHtcbiAgICAgIC4uLmRlZmF1bHRCaW9tZUNvbmZpZ3VyYXRpb24uamF2YXNjcmlwdCxcbiAgICAgIC4uLmJpb21lQ29uZmlndXJhdGlvbj8uamF2YXNjcmlwdCxcbiAgICAgIGZvcm1hdHRlcjogamF2YXNjcmlwdEZvcm1hdHRlcixcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCByZXN1bHQgPSBiaW9tZS5mb3JtYXRDb250ZW50KHByb2plY3RLZXksIGlucHV0LCB7XG4gICAgZmlsZVBhdGg6IHZpcnR1YWxGb3JtYXRGaWxlTmFtZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3VsdC5kaWFnbm9zdGljcy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYmlvbWUucHJpbnREaWFnbm9zdGljcyhyZXN1bHQuZGlhZ25vc3RpY3MsIHtcbiAgICAgICAgZmlsZVBhdGg6IHZpcnR1YWxGb3JtYXRGaWxlTmFtZSxcbiAgICAgICAgZmlsZVNvdXJjZTogaW5wdXQsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5jb250ZW50LnRyaW0oKS5zdWJzdHJpbmcoYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9IGAubGVuZ3RoKTtcbn07XG4iLAogICAgIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IHR5cGUgUGFyc2VBcmdzQ29uZmlnLCBwYXJzZUFyZ3MgfSBmcm9tIFwibm9kZTp1dGlsXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcbmltcG9ydCB7IGV4cGFuZE15VHlwZSB9IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbnR5cGUgVmFsdWVzID0ge1xuICBoZWxwPzogYm9vbGVhbjtcbiAgcHJldHRpZnk/OiBib29sZWFuO1xuICBcIm5vLXByZXR0aWZ5XCI/OiBib29sZWFuO1xuICB0c2NvbmZpZz86IHN0cmluZztcbn07XG5cbmNvbnN0IHRyeVBhcnNlID0gPFxuICBWYWx1ZXMgZXh0ZW5kcyBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHN0cmluZyB8IGJvb2xlYW4gfCBBcnJheTxzdHJpbmcgfCBib29sZWFuPiB8IHVuZGVmaW5lZFxuICA+LFxuICBPcHRpb25zIGV4dGVuZHMgUGFyc2VBcmdzQ29uZmlnW1wib3B0aW9uc1wiXSA9IFBhcnNlQXJnc0NvbmZpZ1tcIm9wdGlvbnNcIl0sXG4+KFxuICBvcHRpb25zOiBPcHRpb25zLFxuKTogeyBlcnJvcj86IEVycm9yOyB2YWx1ZXM6IFZhbHVlczsgcG9zaXRpb25hbHM6IHN0cmluZ1tdIH0gPT4ge1xuICBsZXQgcmVzdWx0OiBSZXR1cm5UeXBlPHR5cGVvZiBwYXJzZUFyZ3M+O1xuICB0cnkge1xuICAgIHJlc3VsdCA9IHBhcnNlQXJncyh7XG4gICAgICBvcHRpb25zLFxuICAgICAgdG9rZW5zOiB0cnVlLFxuICAgICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcbiAgICAgIHZhbHVlczoge30gYXMgVmFsdWVzLFxuICAgICAgcG9zaXRpb25hbHM6IFtdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB7IHRva2VucywgdmFsdWVzLCBwb3NpdGlvbmFscyB9ID0gcmVzdWx0O1xuXG4gIC8vIFJlcHJvY2VzcyB0aGUgb3B0aW9uIHRva2VucyBhbmQgb3ZlcndyaXRlIHRoZSByZXR1cm5lZCB2YWx1ZXMuXG4gIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zID8/IFtdKSB7XG4gICAgaWYgKHRva2VuLmtpbmQgPT09IFwib3B0aW9uLXRlcm1pbmF0b3JcIiB8fCB0b2tlbi5raW5kID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLm5hbWUuc3RhcnRzV2l0aChcIm5vLVwiKSkge1xuICAgICAgLy8gU3RvcmUgZm9vOmZhbHNlIGZvciAtLW5vLWZvb1xuICAgICAgY29uc3QgcG9zaXRpdmVOYW1lID0gdG9rZW4ubmFtZS5zbGljZShcIm5vLVwiLmxlbmd0aCk7XG4gICAgICB2YWx1ZXNbcG9zaXRpdmVOYW1lXSA9IGZhbHNlO1xuICAgICAgZGVsZXRlIHZhbHVlc1t0b2tlbi5uYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVzYXZlIHZhbHVlIHNvIGxhc3Qgb25lIHdpbnMgaWYgYm90aCAtLWZvbyBhbmQgLS1uby1mb28uXG4gICAgICB2YWx1ZXNbdG9rZW4ubmFtZV0gPSB0b2tlbi52YWx1ZSA/PyB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZXM6IHZhbHVlcyBhcyBWYWx1ZXMsXG4gICAgcG9zaXRpb25hbHMsXG4gIH07XG59O1xuXG5jb25zdCB7IGVycm9yLCB2YWx1ZXMsIHBvc2l0aW9uYWxzIH0gPSB0cnlQYXJzZTxWYWx1ZXM+KHtcbiAgaGVscDoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIHNob3J0OiBcImhcIixcbiAgfSxcbiAgcHJldHRpZnk6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBzaG9ydDogXCJwXCIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgXCJuby1wcmV0dGlmeVwiOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgc2hvcnQ6IFwiUFwiLFxuICB9LFxuICB0c2NvbmZpZzoge1xuICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgc2hvcnQ6IFwiY1wiLFxuICB9LFxufSk7XG5cbmlmIChlcnJvcikge1xuICBjb25zb2xlLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmNvbnN0IHVzYWdlUHJvbXB0ID0gW1xuICBcIlVzYWdlOlwiLFxuICBcIiAgZXhwYW5kLW15LXR5cGUgW29wdGlvbnNdIDxzb3VyY2UtZmlsZT4gPGV4cHJlc3Npb24+XCIsXG4gIFwiXCIsXG4gIFwiT3B0aW9uczpcIixcbiAgXCIgIC1oLCAtLWhlbHBcXHRcXHRcXHRTaG93IHRoaXMgaGVscCBtZXNzYWdlXCIsXG4gIFwiICAtcCwgLS1wcmV0dGlmeVxcdFxcdFByZXR0aWZ5IHRoZSBvdXRwdXQgKGRlZmF1bHQpXCIsXG4gIFwiICAtUCwgLS1uby1wcmV0dGlmeVxcdFxcdERvIG5vdCBwcmV0dGlmeSB0aGUgb3V0cHV0XCIsXG4gIFwiICAtYywgLS10c2NvbmZpZyA8ZmlsZT5cXHRcXHRVc2UgdGhlIHNwZWNpZmllZCB0c2NvbmZpZy5qc29uIGZpbGVcIixcbl0uam9pbihcIlxcblwiKTtcblxuaWYgKHZhbHVlcy5oZWxwKSB7XG4gIGNvbnNvbGUuZXJyb3IodXNhZ2VQcm9tcHQpO1xuICBwcm9jZXNzLmV4aXQoMCk7XG59XG5cbmlmIChwb3NpdGlvbmFscy5sZW5ndGggIT09IDIpIHtcbiAgY29uc29sZS5lcnJvcih1c2FnZVByb21wdCk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgW3NvdXJjZUZpbGVOYW1lLCB0eXBlRXhwcmVzc2lvbl0gPSBwb3NpdGlvbmFscztcbmNvbnN0IHByZXR0aWZ5ID0gdmFsdWVzLnByZXR0aWZ5ID8/IHRydWU7XG5jb25zdCB0c0NvbmZpZ0ZpbGVOYW1lID0gdmFsdWVzLnRzY29uZmlnO1xuXG5sZXQgdHNQYXJzZWRDb21tYW5kTGluZTogdHMuUGFyc2VkQ29tbWFuZExpbmUgfCB1bmRlZmluZWQ7XG5cbmlmICh0c0NvbmZpZ0ZpbGVOYW1lKSB7XG4gIGNvbnN0IGNvbmZpZ0ZpbGUgPSB0cy5yZWFkQ29uZmlnRmlsZSh0c0NvbmZpZ0ZpbGVOYW1lLCB0cy5zeXMucmVhZEZpbGUpO1xuICBjb25zdCBjb21waWxlck9wdGlvbnMgPSB0cy5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChcbiAgICBjb25maWdGaWxlLmNvbmZpZyxcbiAgICB0cy5zeXMsXG4gICAgXCIuL1wiLFxuICApO1xuXG4gIHRzUGFyc2VkQ29tbWFuZExpbmUgPSBjb21waWxlck9wdGlvbnM7XG59XG5cbmNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4cGFuZE15VHlwZSh7XG4gIHNvdXJjZUZpbGVOYW1lLFxuICB0eXBlRXhwcmVzc2lvbixcbiAgcHJldHRpZnk6IHtcbiAgICBlbmFibGVkOiBwcmV0dGlmeSxcbiAgfSxcbiAgdHNDb21waWxlck9wdGlvbnM6IHRzUGFyc2VkQ29tbWFuZExpbmU/Lm9wdGlvbnMsXG59KTtcblxuY29uc29sZS5sb2cocmVzdWx0KTtcbiIKICBdLAogICJtYXBwaW5ncyI6ICI7OztBQUFBO0FBRUE7OztBQ0ZBO0FBa0JPLElBQU0sOEJBQThCLENBQ3pDLGdCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFBQSxFQUNILE1BQU0scUJBQXFCLEdBQUcsbUJBQW1CLG1CQUFtQixDQUFDLEdBQUcsSUFBSTtBQUFBLEVBQzVFLE1BQU0sWUFBWSxpQ0FBaUMsQ0FBQztBQUFBLEVBRXBELFdBQVcsT0FBTyxPQUFPLEtBQUssU0FBUyxHQUVwQztBQUFBLElBQ0QsTUFBTSxXQUFXLFVBQVU7QUFBQSxJQUUzQixJQUFJLFVBQVU7QUFBQSxNQUNYLG1CQUEwRCxPQUN6RDtBQUFBLElBQ0o7QUFBQSxFQUNGO0FBQUEsRUFFQSxNQUFNLG1CQUFtQixtQkFBbUI7QUFBQSxFQUU1QyxtQkFBbUIsV0FBVyxDQUFDLGFBQWE7QUFBQSxJQUMxQyxNQUFNLFdBQVcsaUJBQWlCLFFBQVE7QUFBQSxJQUUxQyxJQUFJLGFBQWEsV0FBVztBQUFBLE1BQzFCLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxJQUFJLGFBQWEsZ0JBQWdCO0FBQUEsTUFDL0IsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLE9BQU8sR0FBRztBQUFBLEVBQWM7QUFBQTtBQUFBLEVBRzFCLE9BQU87QUFBQTs7O0FDdERUO0FBR0EsSUFBTSxtQkFBbUI7QUFDekIsSUFBTSx3QkFBd0I7QUFDOUIsSUFBTSxRQUFRLElBQUk7QUFDbEIsTUFB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QTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLEVBQUUsS0FBSztBQUFBLENBQUk7QUFFWCxJQUFJLE9BQU8sTUFBTTtBQUFBLEVBQ2YsUUFBUSxNQUFNLFdBQVc7QUFBQSxFQUN6QixRQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLElBQUksWUFBWSxXQUFXLEdBQUc7QUFBQSxFQUM1QixRQUFRLE1BQU0sV0FBVztBQUFBLEVBQ3pCLFFBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBRUEsS0FBTyxnQkFBZ0Isa0JBQWtCO0FBQ3pDLElBQU0sV0FBVyxPQUFPLFlBQVk7QUFDcEMsSUFBTSxtQkFBbUIsT0FBTztBQUVoQyxJQUFJO0FBRUosSUFBSSxrQkFBa0I7QUFBQSxFQUNwQixNQUFNLGFBQWEsSUFBRyxlQUFlLGtCQUFrQixJQUFHLElBQUksUUFBUTtBQUFBLEVBQ3RFLE1BQU0sa0JBQWtCLElBQUcsMkJBQ3pCLFdBQVcsUUFDWCxJQUFHLEtBQ0gsSUFDRjtBQUFBLEVBRUEsc0JBQXNCO0FBQ3hCO0FBRUEsSUFBTSxTQUFTLE1BQU0sYUFBYTtBQUFBLEVBQ2hDO0FBQUEsRUFDQTtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLG1CQUFtQixxQkFBcUI7QUFDMUMsQ0FBQztBQUVELFFBQVEsSUFBSSxNQUFNOyIsCiAgImRlYnVnSWQiOiAiRDk3OEQ1RDZBRkNCQkU4RDY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
|
package/dist/code-generator.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Configuration as BiomeConfiguration } from "@biomejs/wasm-nodejs";
|
|
2
2
|
export declare const createExpandCodeBlock: (typeExpression: string) => string;
|
|
3
|
-
export declare const formatTypeExpression: (code: string,
|
|
3
|
+
export declare const formatTypeExpression: (code: string, biomeConfiguration?: BiomeConfiguration) => Promise<string>;
|
package/dist/index.cjs
CHANGED
|
@@ -66,6 +66,8 @@ __export(exports_src, {
|
|
|
66
66
|
expandMyType: () => expandMyType
|
|
67
67
|
});
|
|
68
68
|
module.exports = __toCommonJS(exports_src);
|
|
69
|
+
var import_node_path = __toESM(require("node:path"));
|
|
70
|
+
var import_typescript2 = __toESM(require("typescript"));
|
|
69
71
|
|
|
70
72
|
// src/augmenter-compiler-host.ts
|
|
71
73
|
var import_typescript = __toESM(require("typescript"));
|
|
@@ -94,8 +96,23 @@ ${contents}`;
|
|
|
94
96
|
};
|
|
95
97
|
|
|
96
98
|
// src/code-generator.ts
|
|
97
|
-
var
|
|
99
|
+
var import_nodejs = require("@biomejs/js-api/nodejs");
|
|
98
100
|
var identifierPrefix = "__EXPAND_MY_TYPE__";
|
|
101
|
+
var virtualFormatFileName = "expand-my-type.ts";
|
|
102
|
+
var biome = new import_nodejs.Biome;
|
|
103
|
+
var { projectKey } = biome.openProject();
|
|
104
|
+
var defaultBiomeConfiguration = {
|
|
105
|
+
formatter: {
|
|
106
|
+
enabled: true,
|
|
107
|
+
indentStyle: "space"
|
|
108
|
+
},
|
|
109
|
+
javascript: {
|
|
110
|
+
formatter: {
|
|
111
|
+
quoteStyle: "double",
|
|
112
|
+
semicolons: "asNeeded"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
};
|
|
99
116
|
var createExpandCodeBlock = (typeExpression) => {
|
|
100
117
|
return `type ${identifierPrefix}Result = ${identifierPrefix}Expand<${identifierPrefix}Expression>;
|
|
101
118
|
type ${identifierPrefix}Expression = ${typeExpression};
|
|
@@ -112,18 +129,40 @@ var createExpandCodeBlock = (typeExpression) => {
|
|
|
112
129
|
type ${identifierPrefix}AppendUnderscore<T extends string> = \`\${T}_\` extends string ? \`\${T}_\` : never;
|
|
113
130
|
type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
|
|
114
131
|
};
|
|
115
|
-
var formatTypeExpression = async (code,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
132
|
+
var formatTypeExpression = async (code, biomeConfiguration) => {
|
|
133
|
+
const input = `type ${identifierPrefix} = ${code}`;
|
|
134
|
+
const javascriptFormatter = {
|
|
135
|
+
...defaultBiomeConfiguration.javascript?.formatter,
|
|
136
|
+
...biomeConfiguration?.javascript?.formatter
|
|
137
|
+
};
|
|
138
|
+
biome.applyConfiguration(projectKey, {
|
|
139
|
+
...defaultBiomeConfiguration,
|
|
140
|
+
...biomeConfiguration,
|
|
141
|
+
formatter: {
|
|
142
|
+
...defaultBiomeConfiguration.formatter,
|
|
143
|
+
...biomeConfiguration?.formatter
|
|
144
|
+
},
|
|
145
|
+
javascript: {
|
|
146
|
+
...defaultBiomeConfiguration.javascript,
|
|
147
|
+
...biomeConfiguration?.javascript,
|
|
148
|
+
formatter: javascriptFormatter
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
const result = biome.formatContent(projectKey, input, {
|
|
152
|
+
filePath: virtualFormatFileName
|
|
153
|
+
});
|
|
154
|
+
if (result.diagnostics.length > 0) {
|
|
155
|
+
throw new Error(biome.printDiagnostics(result.diagnostics, {
|
|
156
|
+
filePath: virtualFormatFileName,
|
|
157
|
+
fileSource: input
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
return result.content.trim().substring(`type ${identifierPrefix} = `.length);
|
|
120
161
|
};
|
|
121
162
|
|
|
122
163
|
// src/index.ts
|
|
123
|
-
var import_node_path = __toESM(require("node:path"));
|
|
124
|
-
var import_typescript2 = __toESM(require("typescript"));
|
|
125
164
|
var findResultIdentifierNode = (node) => {
|
|
126
|
-
if (node.getChildCount()
|
|
165
|
+
if (node.getChildCount() === 0) {
|
|
127
166
|
if (!import_typescript2.default.isIdentifier(node)) {
|
|
128
167
|
return;
|
|
129
168
|
}
|
|
@@ -176,11 +215,11 @@ async function expandMyType(options) {
|
|
|
176
215
|
}
|
|
177
216
|
const typeChecker = program.getTypeChecker();
|
|
178
217
|
const expandedTypeString = typeChecker.typeToString(typeChecker.getTypeAtLocation(resultIdentifierNode), undefined, import_typescript2.default.TypeFormatFlags.NodeBuilderFlagsMask);
|
|
179
|
-
if (options.prettify
|
|
218
|
+
if (options.prettify?.enabled === false) {
|
|
180
219
|
return expandedTypeString;
|
|
181
220
|
}
|
|
182
|
-
return formatTypeExpression(expandedTypeString, options.prettify?.
|
|
221
|
+
return formatTypeExpression(expandedTypeString, options.prettify?.biomeOptions);
|
|
183
222
|
}
|
|
184
223
|
|
|
185
|
-
//# debugId=
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgInNyYy9jb2RlLWdlbmVyYXRvci50cyIsICJzcmMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uczxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0ge1xuICBbUCBpbiBLXTogVFtQXSBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gVFtQXSA6IG5ldmVyO1xufTtcbmV4cG9ydCB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID0gUGFydGlhbDxcbiAgRXh0cmFjdEZ1bmN0aW9uczx0cy5Db21waWxlckhvc3Q+XG4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IGF1Z21lbnRzIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUgZm9yIGV4cGFuZGluZyBhIHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc291cmNlRmlsZU5hbWUgTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gYXVnbWVudC5cbiAqIEBwYXJhbSBjb2RlVG9BZGQgVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgQSByZWNvcmQgb2YgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIGluIHRoZSBjb21waWxlciBob3N0LiBVc2VmdWwgZm9yIG1vY2tpbmcuXG4gKiBAcmV0dXJucyBBIGN1c3RvbSBjb21waWxlciBob3N0IHRoYXQgcmV0dXJucyBhbiBhdWdtZW50ZWQgc291cmNlIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCB0byBleHBhbmQgdGhlIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCA9IChcbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZyxcbiAgY29kZVRvQWRkOiBzdHJpbmcsXG4gIGNvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucyxcbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbikgPT4ge1xuICBjb25zdCBjdXN0b21Db21waWxlckhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3QoY29tcGlsZXJPcHRpb25zID8/IHt9LCB0cnVlKTtcbiAgY29uc3Qgb3ZlcnJpZGVzID0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgPz8ge307XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3ZlcnJpZGVzKSBhcyBBcnJheTxcbiAgICBrZXlvZiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlc1xuICA+KSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBvdmVycmlkZXNba2V5XTtcblxuICAgIGlmIChvdmVycmlkZSkge1xuICAgICAgKGN1c3RvbUNvbXBpbGVySG9zdCBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldID1cbiAgICAgICAgb3ZlcnJpZGU7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLAogICAgImltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBQcmV0dGllck9wdGlvbnMgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJwcmV0dGllclwiO1xuXG5jb25zdCBpZGVudGlmaWVyUHJlZml4ID0gXCJfX0VYUEFORF9NWV9UWVBFX19cIjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUV4cGFuZENvZGVCbG9jayA9ICh0eXBlRXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9ibG9iL21haW4vdGVzdHMvY2FzZXMvY29tcGlsZXIvY29tcHV0ZWRUeXBlc0tleW9mTm9JbmRleFNpZ25hdHVyZVR5cGUudHNcbiAgcmV0dXJuIGB0eXBlICR7aWRlbnRpZmllclByZWZpeH1SZXN1bHQgPSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPCR7aWRlbnRpZmllclByZWZpeH1FeHByZXNzaW9uPjtcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHByZXNzaW9uID0gJHt0eXBlRXhwcmVzc2lvbn07XG5cbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VD4gPSBcbiAgICAgICAgVCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSID8gKC4uLmFyZ3M6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8QT4pID0+ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8Uj5cbiAgICAgIDogVCBleHRlbmRzIFByb21pc2U8aW5mZXIgVT4gPyBQcm9taXNlPCR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRUeXBlQXJndW1lbnQ8VT4+XG4gICAgICA6IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBzdHJpbmcgPyAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFRbS10+IDogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUW0tdPjsgfSAmIHt9O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kVHlwZUFyZ3VtZW50PFQ+ID0gW1QgJiB7fV0gZXh0ZW5kcyBbbmV2ZXJdID8gVCA6IFQgJiB7fSBleHRlbmRzIHZvaWQgPyBUIDogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUICYge30+O1xuXG4gICAgLy8gRm9yY2VzIGEgdW5pb24gb2Ygc3RyaW5nIGxpdGVyYWwgdHlwZXMgdG8gYmUgZXhwYW5kZWRcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRTdHJpbmc8VCBleHRlbmRzIHN0cmluZz4gPSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTwke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUPj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFxcYFxcJHtUfV9cXGAgZXh0ZW5kcyBzdHJpbmcgPyBcXGBcXCR7VH1fXFxgIDogbmV2ZXI7XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgZXh0ZW5kcyBcXGBcXCR7aW5mZXIgVX1fXFxgID8gVSA6IG5ldmVyO2A7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VHlwZUV4cHJlc3Npb24gPSBhc3luYyAoXG4gIGNvZGU6IHN0cmluZyxcbiAgcHJldHRpZXJPcHRpb25zPzogUHJldHRpZXJPcHRpb25zLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgYXdhaXQgZm9ybWF0KFxuICAgICAgYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9ICR7Y29kZX1gLFxuICAgICAgcHJldHRpZXJPcHRpb25zID8/IHtcbiAgICAgICAgcGFyc2VyOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgc2VtaTogZmFsc2UsXG4gICAgICB9LFxuICAgIClcbiAgKVxuICAgIC50cmltKClcbiAgICAuc3Vic3RyaW5nKGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSBgLmxlbmd0aCk7XG59O1xuIiwKICAgICJpbXBvcnQgeyBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgfSBmcm9tIFwiLi9hdWdtZW50ZXItY29tcGlsZXItaG9zdC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LmpzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVFeHBhbmRDb2RlQmxvY2ssXG4gIGZvcm1hdFR5cGVFeHByZXNzaW9uLFxufSBmcm9tIFwiLi9jb2RlLWdlbmVyYXRvci5qc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbi8qKlxuICogRmluZHMgdGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHR5cGUgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICovXG5jb25zdCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT0gMCkge1xuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIHB1dCB0aGUgX188SURFTlRJRklFUj5fXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUpO1xufTtcblxuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZU9wdGlvbnNCYXNlID0ge1xuICAvKipcbiAgICogVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBleHBhbmQuXG4gICAqIEBleGFtcGxlIFwiUmV0dXJuVHlwZTx0eXBlb2YgbXlGdW5jdGlvbj5cIlxuICAgKi9cbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgdHNDb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFByZXR0aWVyIG9wdGlvbnMuXG4gICAqL1xuICBwcmV0dGlmeT86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXR0aWZ5IHRoZSBvdXRwdXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIG9wdGlvbnMuIERvbid0IGZvcmdldCB0byBzZXQgdGhlIHBhcnNlciB0byBcInR5cGVzY3JpcHRcIi5cbiAgICAgKiBAZGVmYXVsdCB7IHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsIHNlbWk6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBvcHRpb25zPzogUHJldHRpZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgZHVtbXlGaWxlTmFtZSA9IFwiZXhwYW5kLW15LXR5cGUtZHVtbXkudHNcIjtcblxuICAgIHJldHVybiBleHBhbmRNeVR5cGUoe1xuICAgICAgc291cmNlRmlsZU5hbWU6IGR1bW15RmlsZU5hbWUsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlYWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgICBpZiAocGF0aC5iYXNlbmFtZShmaWxlTmFtZSkgPT09IGR1bW15RmlsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZVRleHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRzLnN5cy5yZWFkRmlsZShmaWxlTmFtZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgICBwcmV0dGlmeTogb3B0aW9ucy5wcmV0dGlmeSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkU291cmNlRmlsZU5hbWUgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5zb3VyY2VGaWxlTmFtZSk7XG5cbiAgY29uc3QgdHNDb21waWxlck9wdGlvbnMgPSBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zID8/IHtcbiAgICBub0VtaXQ6IHRydWUsXG5cbiAgICBzdHJpY3ROdWxsQ2hlY2tzOiB0cnVlLFxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgaWYgKCF0c0NvbXBpbGVyT3B0aW9ucy5zdHJpY3ROdWxsQ2hlY2tzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwic3RyaWN0TnVsbENoZWNrcyBtdXN0IGJlIGVuYWJsZWQhXCIpO1xuICB9XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0SWRlbnRpZmllck5vZGUgPSBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghcmVzdWx0SWRlbnRpZmllck5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGVTdHJpbmcgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24ocmVzdWx0SWRlbnRpZmllck5vZGUpLFxuICAgIHVuZGVmaW5lZCxcbiAgICB0cy5UeXBlRm9ybWF0RmxhZ3MuTm9kZUJ1aWxkZXJGbGFnc01hc2ssXG4gICk7XG5cbiAgaWYgKG9wdGlvbnMucHJldHRpZnkgJiYgb3B0aW9ucy5wcmV0dGlmeS5lbmFibGVkID09PSBmYWxzZSkge1xuICAgIHJldHVybiBleHBhbmRlZFR5cGVTdHJpbmc7XG4gIH1cblxuICByZXR1cm4gZm9ybWF0VHlwZUV4cHJlc3Npb24oZXhwYW5kZWRUeXBlU3RyaW5nLCBvcHRpb25zLnByZXR0aWZ5Py5vcHRpb25zKTtcbn1cbiIKICBdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZSxJQUFmO0FBa0JPLElBQU0sOEJBQThCLENBQ3pDLGdCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFBQSxFQUNILE1BQU0scUJBQXFCLDBCQUFHLG1CQUFtQixtQkFBbUIsQ0FBQyxHQUFHLElBQUk7QUFBQSxFQUM1RSxNQUFNLFlBQVksaUNBQWlDLENBQUM7QUFBQSxFQUVwRCxXQUFXLE9BQU8sT0FBTyxLQUFLLFNBQVMsR0FFcEM7QUFBQSxJQUNELE1BQU0sV0FBVyxVQUFVO0FBQUEsSUFFM0IsSUFBSSxVQUFVO0FBQUEsTUFDWCxtQkFBMEQsT0FDekQ7QUFBQSxJQUNKO0FBQUEsRUFDRjtBQUFBLEVBRUEsTUFBTSxtQkFBbUIsbUJBQW1CO0FBQUEsRUFFNUMsbUJBQW1CLFdBQVcsQ0FBQyxhQUFhO0FBQUEsSUFDMUMsTUFBTSxXQUFXLGlCQUFpQixRQUFRO0FBQUEsSUFFMUMsSUFBSSxhQUFhLFdBQVc7QUFBQSxNQUMxQixPQUFPO0FBQUEsSUFDVDtBQUFBLElBRUEsSUFBSSxhQUFhLGdCQUFnQjtBQUFBLE1BQy9CLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxPQUFPLEdBQUc7QUFBQSxFQUFjO0FBQUE7QUFBQSxFQUcxQixPQUFPO0FBQUE7OztBQ3JEYyxJQUF2QjtBQUVBLElBQU0sbUJBQW1CO0FBRWxCLElBQU0sd0JBQXdCLENBQUMsbUJBQTJCO0FBQUEsRUFFL0QsT0FBTyxRQUFRLDRCQUE0QiwwQkFBMEI7QUFBQSxXQUM1RCxnQ0FBZ0M7QUFBQTtBQUFBLFdBRWhDO0FBQUEsOERBQ21ELGlDQUFpQztBQUFBLCtDQUNoRDtBQUFBLGtEQUNHLHdDQUF3QztBQUFBO0FBQUEsV0FFL0Usb0dBQW9HO0FBQUE7QUFBQTtBQUFBLFdBR3BHLG9EQUFvRCxvQ0FBb0M7QUFBQSxXQUN4RjtBQUFBLFdBQ0E7QUFBQTtBQUdKLElBQU0sdUJBQXVCLE9BQ2xDLE1BQ0Esb0JBQ0c7QUFBQSxFQUNILFFBQ0UsTUFBTSx1QkFDSixRQUFRLHNCQUFzQixRQUM5QixtQkFBbUI7QUFBQSxJQUNqQixRQUFRO0FBQUEsSUFDUixNQUFNO0FBQUEsRUFDUixDQUNGLEdBRUMsS0FBSyxFQUNMLFVBQVUsUUFBUSxzQkFBc0IsTUFBTTtBQUFBOzs7QUMvQmxDLElBQWpCO0FBRWUsSUFBZjtBQVFBLElBQU0sMkJBQTJCLENBQUMsU0FBdUM7QUFBQSxFQUN2RSxJQUFJLEtBQUssY0FBYyxLQUFLLEdBQUc7QUFBQSxJQUM3QixJQUFJLENBQUMsMkJBQUcsYUFBYSxJQUFJLEdBQUc7QUFBQSxNQUMxQjtBQUFBLElBQ0Y7QUFBQSxJQUlBLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFFQSxPQUFPLDJCQUFHLGFBQWEsTUFBTSx3QkFBd0I7QUFBQTtBQWlFdkQsZUFBc0IsWUFBWSxDQUFDLFNBQThCO0FBQUEsRUFDL0QsSUFBSSxRQUFRLGVBQWUsS0FBSyxNQUFNLElBQUk7QUFBQSxJQUN4QyxPQUFPO0FBQUEsRUFDVDtBQUFBLEVBRUEsSUFBSSxnQkFBZ0IsU0FBUztBQUFBLElBQzNCLE1BQU0sZ0JBQWdCO0FBQUEsSUFFdEIsT0FBTyxhQUFhO0FBQUEsTUFDbEIsZ0JBQWdCO0FBQUEsTUFDaEIsZ0JBQWdCLFFBQVE7QUFBQSxNQUN4QiwrQkFBK0I7QUFBQSxRQUM3QixRQUFRLENBQUMsVUFBa0I7QUFBQSxVQUN6QixJQUFJLHlCQUFLLFNBQVMsUUFBUSxNQUFNLGVBQWU7QUFBQSxZQUM3QyxPQUFPLFFBQVE7QUFBQSxVQUNqQjtBQUFBLFVBRUEsT0FBTywyQkFBRyxJQUFJLFNBQVMsUUFBUTtBQUFBO0FBQUEsTUFFbkM7QUFBQSxNQUNBLG1CQUFtQixRQUFRO0FBQUEsTUFDM0IsVUFBVSxRQUFRO0FBQUEsSUFDcEIsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQUVBLE1BQU0seUJBQXlCLHlCQUFLLFFBQVEsUUFBUSxjQUFjO0FBQUEsRUFFbEUsTUFBTSxvQkFBb0IsUUFBUSxxQkFBcUI7QUFBQSxJQUNyRCxRQUFRO0FBQUEsSUFFUixrQkFBa0I7QUFBQSxJQUNsQiw4QkFBOEI7QUFBQSxJQUM5QiwwQkFBMEI7QUFBQSxJQUMxQiw0QkFBNEI7QUFBQSxJQUM1QixTQUFTO0FBQUEsRUFDWDtBQUFBLEVBRUEsSUFBSSxDQUFDLGtCQUFrQixrQkFBa0I7QUFBQSxJQUN2QyxNQUFNLElBQUksTUFBTSxtQ0FBbUM7QUFBQSxFQUNyRDtBQUFBLEVBRUEsTUFBTSxlQUFlLDRCQUNuQix3QkFDQSxzQkFBc0IsUUFBUSxjQUFjLEdBQzVDLG1CQUNBLFFBQVEsNkJBQ1Y7QUFBQSxFQUVBLE1BQU0sVUFBVSwyQkFBRyxjQUNqQixDQUFDLHNCQUFzQixHQUN2QixtQkFDQSxZQUNGO0FBQUEsRUFFQSxNQUFNLGFBQWEsUUFBUSxjQUFjLHNCQUFzQjtBQUFBLEVBQy9ELElBQUksQ0FBQyxZQUFZO0FBQUEsSUFDZixNQUFNLElBQUksTUFBTSx3QkFBd0I7QUFBQSxFQUMxQztBQUFBLEVBRUEsTUFBTSx1QkFBdUIseUJBQXlCLFVBQVU7QUFBQSxFQUNoRSxJQUFJLENBQUMsc0JBQXNCO0FBQUEsSUFDekIsTUFBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQUEsRUFDbEM7QUFBQSxFQUVBLE1BQU0sY0FBYyxRQUFRLGVBQWU7QUFBQSxFQUMzQyxNQUFNLHFCQUFxQixZQUFZLGFBQ3JDLFlBQVksa0JBQWtCLG9CQUFvQixHQUNsRCxXQUNBLDJCQUFHLGdCQUFnQixvQkFDckI7QUFBQSxFQUVBLElBQUksUUFBUSxZQUFZLFFBQVEsU0FBUyxZQUFZLE9BQU87QUFBQSxJQUMxRCxPQUFPO0FBQUEsRUFDVDtBQUFBLEVBRUEsT0FBTyxxQkFBcUIsb0JBQW9CLFFBQVEsVUFBVSxPQUFPO0FBQUE7IiwKICAiZGVidWdJZCI6ICJGRDYxRDk1QTFCQjNBQzdGNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|
|
224
|
+
//# debugId=914AF96172681B5164756E2164756E21
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2luZGV4LnRzIiwgInNyYy9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50cyIsICJzcmMvY29kZS1nZW5lcmF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBDb25maWd1cmF0aW9uIGFzIEJpb21lQ29uZmlndXJhdGlvbiB9IGZyb20gXCJAYmlvbWVqcy93YXNtLW5vZGVqc1wiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQge1xuICB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuICBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QsXG59IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LmpzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVFeHBhbmRDb2RlQmxvY2ssXG4gIGZvcm1hdFR5cGVFeHByZXNzaW9uLFxufSBmcm9tIFwiLi9jb2RlLWdlbmVyYXRvci5qc1wiO1xuXG4vKipcbiAqIEZpbmRzIHRoZSByZXN1bHQgdHlwZSBpZGVudGlmaWVyIG5vZGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0eXBlIHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqL1xuY29uc3QgZmluZFJlc3VsdElkZW50aWZpZXJOb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09PSAwKSB7XG4gICAgaWYgKCF0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gU2luY2Ugd2UgcHV0IHRoZSBfXzxJREVOVElGSUVSPl9fIHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgICAvLyBmaWxlLCB3ZSBjYW4gcmV0dXJuIHRoZSBmaXJzdCBpZGVudGlmaWVyIHdlIGZpbmQuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZnkgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQmlvbWUgZm9ybWF0dGluZyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIGJpb21lT3B0aW9ucz86IEJpb21lQ29uZmlndXJhdGlvbjtcbiAgfTtcblxuICAvKipcbiAgICogQSByZWNvcmQgb2YgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIGluIHRoZSBjb21waWxlciBob3N0LiBVc2VmdWwgZm9yIG1vY2tpbmdcbiAgICovXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHNvdXJjZSB0ZXh0IHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kTXlUeXBlT3B0aW9ucyA9XG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9uc1xuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIEV4cGFuZHMgYSBUeXBlU2NyaXB0IHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIGV4cGFuZGVkIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShvcHRpb25zOiBFeHBhbmRNeVR5cGVPcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGVFeHByZXNzaW9uLnRyaW0oKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBcIm5ldmVyXCI7XG4gIH1cblxuICBpZiAoXCJzb3VyY2VUZXh0XCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IGR1bW15RmlsZU5hbWUgPSBcImV4cGFuZC1teS10eXBlLWR1bW15LnRzXCI7XG5cbiAgICByZXR1cm4gZXhwYW5kTXlUeXBlKHtcbiAgICAgIHNvdXJjZUZpbGVOYW1lOiBkdW1teUZpbGVOYW1lLFxuICAgICAgdHlwZUV4cHJlc3Npb246IG9wdGlvbnMudHlwZUV4cHJlc3Npb24sXG4gICAgICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlczoge1xuICAgICAgICByZWFkRmlsZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgICAgaWYgKHBhdGguYmFzZW5hbWUoZmlsZU5hbWUpID09PSBkdW1teUZpbGVOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zb3VyY2VUZXh0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cy5zeXMucmVhZEZpbGUoZmlsZU5hbWUpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgICAgcHJldHRpZnk6IG9wdGlvbnMucHJldHRpZnksXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZFNvdXJjZUZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMuc291cmNlRmlsZU5hbWUpO1xuXG4gIGNvbnN0IHRzQ29tcGlsZXJPcHRpb25zID0gb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyA/PyB7XG4gICAgbm9FbWl0OiB0cnVlLFxuXG4gICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgICBhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOiB0cnVlLFxuICAgIGFsbG93QXJiaXRyYXJ5RXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0pzOiB0cnVlLFxuICB9O1xuXG4gIGlmICghdHNDb21waWxlck9wdGlvbnMuc3RyaWN0TnVsbENoZWNrcykge1xuICAgIHRocm93IG5ldyBFcnJvcihcInN0cmljdE51bGxDaGVja3MgbXVzdCBiZSBlbmFibGVkIVwiKTtcbiAgfVxuXG4gIGNvbnN0IGNvbXBpbGVySG9zdCA9IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdChcbiAgICByZXNvbHZlZFNvdXJjZUZpbGVOYW1lLFxuICAgIGNyZWF0ZUV4cGFuZENvZGVCbG9jayhvcHRpb25zLnR5cGVFeHByZXNzaW9uKSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBvcHRpb25zLmNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuICApO1xuXG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKFxuICAgIFtyZXNvbHZlZFNvdXJjZUZpbGVOYW1lXSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBjb21waWxlckhvc3QsXG4gICk7XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IHByb2dyYW0uZ2V0U291cmNlRmlsZShyZXNvbHZlZFNvdXJjZUZpbGVOYW1lKTtcbiAgaWYgKCFzb3VyY2VGaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU291cmNlIGZpbGUgbm90IGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdElkZW50aWZpZXJOb2RlID0gZmluZFJlc3VsdElkZW50aWZpZXJOb2RlKHNvdXJjZUZpbGUpO1xuICBpZiAoIXJlc3VsdElkZW50aWZpZXJOb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgZXhwYW5kZWRUeXBlU3RyaW5nID0gdHlwZUNoZWNrZXIudHlwZVRvU3RyaW5nKFxuICAgIHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKHJlc3VsdElkZW50aWZpZXJOb2RlKSxcbiAgICB1bmRlZmluZWQsXG4gICAgdHMuVHlwZUZvcm1hdEZsYWdzLk5vZGVCdWlsZGVyRmxhZ3NNYXNrLFxuICApO1xuXG4gIGlmIChvcHRpb25zLnByZXR0aWZ5Py5lbmFibGVkID09PSBmYWxzZSkge1xuICAgIHJldHVybiBleHBhbmRlZFR5cGVTdHJpbmc7XG4gIH1cblxuICByZXR1cm4gZm9ybWF0VHlwZUV4cHJlc3Npb24oXG4gICAgZXhwYW5kZWRUeXBlU3RyaW5nLFxuICAgIG9wdGlvbnMucHJldHRpZnk/LmJpb21lT3B0aW9ucyxcbiAgKTtcbn1cbiIsCiAgICAiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uczxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0ge1xuICBbUCBpbiBLXTogRXh0cmFjdDxUW1BdLCAoLi4uYXJnczogbmV2ZXJbXSkgPT4gdW5rbm93bj47XG59O1xuZXhwb3J0IHR5cGUgQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgPSBQYXJ0aWFsPFxuICBFeHRyYWN0RnVuY3Rpb25zPHRzLkNvbXBpbGVySG9zdD5cbj47XG5cbi8qKlxuICogQ3JlYXRlcyBhIGN1c3RvbSBjb21waWxlciBob3N0IHRoYXQgYXVnbWVudHMgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZSBmb3IgZXhwYW5kaW5nIGEgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBzb3VyY2VGaWxlTmFtZSBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBhdWdtZW50LlxuICogQHBhcmFtIGNvZGVUb0FkZCBUeXBlIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gY29tcGlsZXJPcHRpb25zIFR5cGVTY3JpcHQgY29tcGlsZXIgb3B0aW9ucy5cbiAqIEBwYXJhbSBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZy5cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBjb25zdCBvdmVycmlkZXMgPSBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvdmVycmlkZXMpIGFzIEFycmF5PFxuICAgIGtleW9mIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzXG4gID4pIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IG92ZXJyaWRlc1trZXldO1xuXG4gICAgaWYgKG92ZXJyaWRlKSB7XG4gICAgICAoY3VzdG9tQ29tcGlsZXJIb3N0IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gPVxuICAgICAgICBvdmVycmlkZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFJlYWRGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlO1xuXG4gIGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZSA9IChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gb3JpZ2luYWxSZWFkRmlsZShmaWxlTmFtZSk7XG5cbiAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIGlmIChmaWxlTmFtZSAhPT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29kZVRvQWRkfVxcbiR7Y29udGVudHN9YDtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsCiAgICAiaW1wb3J0IHsgQmlvbWUgfSBmcm9tIFwiQGJpb21lanMvanMtYXBpL25vZGVqc1wiO1xuaW1wb3J0IHR5cGUgeyBDb25maWd1cmF0aW9uIGFzIEJpb21lQ29uZmlndXJhdGlvbiB9IGZyb20gXCJAYmlvbWVqcy93YXNtLW5vZGVqc1wiO1xuXG5jb25zdCBpZGVudGlmaWVyUHJlZml4ID0gXCJfX0VYUEFORF9NWV9UWVBFX19cIjtcbmNvbnN0IHZpcnR1YWxGb3JtYXRGaWxlTmFtZSA9IFwiZXhwYW5kLW15LXR5cGUudHNcIjtcbmNvbnN0IGJpb21lID0gbmV3IEJpb21lKCk7XG5jb25zdCB7IHByb2plY3RLZXkgfSA9IGJpb21lLm9wZW5Qcm9qZWN0KCk7XG5cbmNvbnN0IGRlZmF1bHRCaW9tZUNvbmZpZ3VyYXRpb246IEJpb21lQ29uZmlndXJhdGlvbiA9IHtcbiAgZm9ybWF0dGVyOiB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBpbmRlbnRTdHlsZTogXCJzcGFjZVwiLFxuICB9LFxuICBqYXZhc2NyaXB0OiB7XG4gICAgZm9ybWF0dGVyOiB7XG4gICAgICBxdW90ZVN0eWxlOiBcImRvdWJsZVwiLFxuICAgICAgc2VtaWNvbG9uczogXCJhc05lZWRlZFwiLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFxuICAgICAgICBUIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEEpID0+IGluZmVyIFIgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPiA/IFByb21pc2U8JHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFR5cGVBcmd1bWVudDxVPj5cbiAgICAgIDogeyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIHN0cmluZyA/ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRTdHJpbmc8VFtLXT4gOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFRbS10+OyB9ICYge307XG5cbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRUeXBlQXJndW1lbnQ8VD4gPSBbVCAmIHt9XSBleHRlbmRzIFtuZXZlcl0gPyBUIDogVCAmIHt9IGV4dGVuZHMgdm9pZCA/IFQgOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQgJiB7fT47XG5cbiAgICAvLyBGb3JjZXMgYSB1bmlvbiBvZiBzdHJpbmcgbGl0ZXJhbCB0eXBlcyB0byBiZSBleHBhbmRlZFxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUIGV4dGVuZHMgc3RyaW5nPiA9ICR7aWRlbnRpZmllclByZWZpeH1SZW1vdmVVbmRlcnNjb3JlPCR7aWRlbnRpZmllclByZWZpeH1BcHBlbmRVbmRlcnNjb3JlPFQ+PjtcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1BcHBlbmRVbmRlcnNjb3JlPFQgZXh0ZW5kcyBzdHJpbmc+ID0gXFxgXFwke1R9X1xcYCBleHRlbmRzIHN0cmluZyA/IFxcYFxcJHtUfV9cXGAgOiBuZXZlcjtcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1SZW1vdmVVbmRlcnNjb3JlPFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIFxcYFxcJHtpbmZlciBVfV9cXGAgPyBVIDogbmV2ZXI7YDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUeXBlRXhwcmVzc2lvbiA9IGFzeW5jIChcbiAgY29kZTogc3RyaW5nLFxuICBiaW9tZUNvbmZpZ3VyYXRpb24/OiBCaW9tZUNvbmZpZ3VyYXRpb24sXG4pID0+IHtcbiAgY29uc3QgaW5wdXQgPSBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gJHtjb2RlfWA7XG4gIGNvbnN0IGphdmFzY3JpcHRGb3JtYXR0ZXIgPSB7XG4gICAgLi4uZGVmYXVsdEJpb21lQ29uZmlndXJhdGlvbi5qYXZhc2NyaXB0Py5mb3JtYXR0ZXIsXG4gICAgLi4uYmlvbWVDb25maWd1cmF0aW9uPy5qYXZhc2NyaXB0Py5mb3JtYXR0ZXIsXG4gIH07XG5cbiAgYmlvbWUuYXBwbHlDb25maWd1cmF0aW9uKHByb2plY3RLZXksIHtcbiAgICAuLi5kZWZhdWx0QmlvbWVDb25maWd1cmF0aW9uLFxuICAgIC4uLmJpb21lQ29uZmlndXJhdGlvbixcbiAgICBmb3JtYXR0ZXI6IHtcbiAgICAgIC4uLmRlZmF1bHRCaW9tZUNvbmZpZ3VyYXRpb24uZm9ybWF0dGVyLFxuICAgICAgLi4uYmlvbWVDb25maWd1cmF0aW9uPy5mb3JtYXR0ZXIsXG4gICAgfSxcbiAgICBqYXZhc2NyaXB0OiB7XG4gICAgICAuLi5kZWZhdWx0QmlvbWVDb25maWd1cmF0aW9uLmphdmFzY3JpcHQsXG4gICAgICAuLi5iaW9tZUNvbmZpZ3VyYXRpb24/LmphdmFzY3JpcHQsXG4gICAgICBmb3JtYXR0ZXI6IGphdmFzY3JpcHRGb3JtYXR0ZXIsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgcmVzdWx0ID0gYmlvbWUuZm9ybWF0Q29udGVudChwcm9qZWN0S2V5LCBpbnB1dCwge1xuICAgIGZpbGVQYXRoOiB2aXJ0dWFsRm9ybWF0RmlsZU5hbWUsXG4gIH0pO1xuXG4gIGlmIChyZXN1bHQuZGlhZ25vc3RpY3MubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGJpb21lLnByaW50RGlhZ25vc3RpY3MocmVzdWx0LmRpYWdub3N0aWNzLCB7XG4gICAgICAgIGZpbGVQYXRoOiB2aXJ0dWFsRm9ybWF0RmlsZU5hbWUsXG4gICAgICAgIGZpbGVTb3VyY2U6IGlucHV0LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuY29udGVudC50cmltKCkuc3Vic3RyaW5nKGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSBgLmxlbmd0aCk7XG59O1xuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUIsSUFBakI7QUFFZSxJQUFmOzs7QUNGZSxJQUFmO0FBa0JPLElBQU0sOEJBQThCLENBQ3pDLGdCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFBQSxFQUNILE1BQU0scUJBQXFCLDBCQUFHLG1CQUFtQixtQkFBbUIsQ0FBQyxHQUFHLElBQUk7QUFBQSxFQUM1RSxNQUFNLFlBQVksaUNBQWlDLENBQUM7QUFBQSxFQUVwRCxXQUFXLE9BQU8sT0FBTyxLQUFLLFNBQVMsR0FFcEM7QUFBQSxJQUNELE1BQU0sV0FBVyxVQUFVO0FBQUEsSUFFM0IsSUFBSSxVQUFVO0FB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LGdCQUFnQixRQUFRO0FBQUEsTUFDeEIsK0JBQStCO0FBQUEsUUFDN0IsUUFBUSxDQUFDLFVBQWtCO0FBQUEsVUFDekIsSUFBSSx5QkFBSyxTQUFTLFFBQVEsTUFBTSxlQUFlO0FBQUEsWUFDN0MsT0FBTyxRQUFRO0FBQUEsVUFDakI7QUFBQSxVQUVBLE9BQU8sMkJBQUcsSUFBSSxTQUFTLFFBQVE7QUFBQTtBQUFBLE1BRW5DO0FBQUEsTUFDQSxtQkFBbUIsUUFBUTtBQUFBLE1BQzNCLFVBQVUsUUFBUTtBQUFBLElBQ3BCLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxNQUFNLHlCQUF5Qix5QkFBSyxRQUFRLFFBQVEsY0FBYztBQUFBLEVBRWxFLE1BQU0sb0JBQW9CLFFBQVEscUJBQXFCO0FBQUEsSUFDckQsUUFBUTtBQUFBLElBRVIsa0JBQWtCO0FBQUEsSUFDbEIsOEJBQThCO0FBQUEsSUFDOUIsMEJBQTBCO0FBQUEsSUFDMUIsNEJBQTRCO0FBQUEsSUFDNUIsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUVBLElBQUksQ0FBQyxrQkFBa0Isa0JBQWtCO0FBQUEsSUFDdkMsTUFBTSxJQUFJLE1BQU0sbUNBQW1DO0FBQUEsRUFDckQ7QUFBQSxFQUVBLE1BQU0sZUFBZSw0QkFDbkIsd0JBQ0Esc0JBQXNCLFFBQVEsY0FBYyxHQUM1QyxtQkFDQSxRQUFRLDZCQUNWO0FBQUEsRUFFQSxNQUFNLFVBQVUsMkJBQUcsY0FDakIsQ0FBQyxzQkFBc0IsR0FDdkIsbUJBQ0EsWUFDRjtBQUFBLEVBRUEsTUFBTSxhQUFhLFFBQVEsY0FBYyxzQkFBc0I7QUFBQSxFQUMvRCxJQUFJLENBQUMsWUFBWTtBQUFBLElBQ2YsTUFBTSxJQUFJLE1BQU0sd0JBQXdCO0FBQUEsRUFDMUM7QUFBQSxFQUVBLE1BQU0sdUJBQXVCLHlCQUF5QixVQUFVO0FBQUEsRUFDaEUsSUFBSSxDQUFDLHNCQUFzQjtBQUFBLElBQ3pCLE1BQU0sSUFBSSxNQUFNLGdCQUFnQjtBQUFBLEVBQ2xDO0FBQUEsRUFFQSxNQUFNLGNBQWMsUUFBUSxlQUFlO0FBQUEsRUFDM0MsTUFBTSxxQkFBcUIsWUFBWSxhQUNyQyxZQUFZLGtCQUFrQixvQkFBb0IsR0FDbEQsV0FDQSwyQkFBRyxnQkFBZ0Isb0JBQ3JCO0FBQUEsRUFFQSxJQUFJLFFBQVEsVUFBVSxZQUFZLE9BQU87QUFBQSxJQUN2QyxPQUFPO0FBQUEsRUFDVDtBQUFBLEVBRUEsT0FBTyxxQkFDTCxvQkFDQSxRQUFRLFVBQVUsWUFDcEI7QUFBQTsiLAogICJkZWJ1Z0lkIjogIjkxNEFGOTYxNzI2ODFCNTE2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { Options as PrettierOptions } from "prettier";
|
|
1
|
+
import type { Configuration as BiomeConfiguration } from "@biomejs/wasm-nodejs";
|
|
3
2
|
import ts from "typescript";
|
|
3
|
+
import { type CompilerHostFunctionOverrides } from "./augmenter-compiler-host.js";
|
|
4
4
|
export type ExpandTypeOptionsBase = {
|
|
5
5
|
/**
|
|
6
6
|
* The type expression to expand.
|
|
@@ -12,7 +12,7 @@ export type ExpandTypeOptionsBase = {
|
|
|
12
12
|
*/
|
|
13
13
|
tsCompilerOptions?: ts.CompilerOptions;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Prettify options.
|
|
16
16
|
*/
|
|
17
17
|
prettify?: {
|
|
18
18
|
/**
|
|
@@ -21,10 +21,9 @@ export type ExpandTypeOptionsBase = {
|
|
|
21
21
|
*/
|
|
22
22
|
enabled?: boolean;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
25
|
-
* @default { parser: "typescript", semi: false }
|
|
24
|
+
* Biome formatting configuration.
|
|
26
25
|
*/
|
|
27
|
-
|
|
26
|
+
biomeOptions?: BiomeConfiguration;
|
|
28
27
|
};
|
|
29
28
|
/**
|
|
30
29
|
* A record of functions to override in the compiler host. Useful for mocking
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import ts2 from "typescript";
|
|
4
|
+
|
|
1
5
|
// src/augmenter-compiler-host.ts
|
|
2
6
|
import ts from "typescript";
|
|
3
7
|
var createAugmenterCompilerHost = (sourceFileName, codeToAdd, compilerOptions, compilerHostFunctionOverrides) => {
|
|
@@ -25,8 +29,23 @@ ${contents}`;
|
|
|
25
29
|
};
|
|
26
30
|
|
|
27
31
|
// src/code-generator.ts
|
|
28
|
-
import {
|
|
32
|
+
import { Biome } from "@biomejs/js-api/nodejs";
|
|
29
33
|
var identifierPrefix = "__EXPAND_MY_TYPE__";
|
|
34
|
+
var virtualFormatFileName = "expand-my-type.ts";
|
|
35
|
+
var biome = new Biome;
|
|
36
|
+
var { projectKey } = biome.openProject();
|
|
37
|
+
var defaultBiomeConfiguration = {
|
|
38
|
+
formatter: {
|
|
39
|
+
enabled: true,
|
|
40
|
+
indentStyle: "space"
|
|
41
|
+
},
|
|
42
|
+
javascript: {
|
|
43
|
+
formatter: {
|
|
44
|
+
quoteStyle: "double",
|
|
45
|
+
semicolons: "asNeeded"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
30
49
|
var createExpandCodeBlock = (typeExpression) => {
|
|
31
50
|
return `type ${identifierPrefix}Result = ${identifierPrefix}Expand<${identifierPrefix}Expression>;
|
|
32
51
|
type ${identifierPrefix}Expression = ${typeExpression};
|
|
@@ -43,18 +62,40 @@ var createExpandCodeBlock = (typeExpression) => {
|
|
|
43
62
|
type ${identifierPrefix}AppendUnderscore<T extends string> = \`\${T}_\` extends string ? \`\${T}_\` : never;
|
|
44
63
|
type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
|
|
45
64
|
};
|
|
46
|
-
var formatTypeExpression = async (code,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
65
|
+
var formatTypeExpression = async (code, biomeConfiguration) => {
|
|
66
|
+
const input = `type ${identifierPrefix} = ${code}`;
|
|
67
|
+
const javascriptFormatter = {
|
|
68
|
+
...defaultBiomeConfiguration.javascript?.formatter,
|
|
69
|
+
...biomeConfiguration?.javascript?.formatter
|
|
70
|
+
};
|
|
71
|
+
biome.applyConfiguration(projectKey, {
|
|
72
|
+
...defaultBiomeConfiguration,
|
|
73
|
+
...biomeConfiguration,
|
|
74
|
+
formatter: {
|
|
75
|
+
...defaultBiomeConfiguration.formatter,
|
|
76
|
+
...biomeConfiguration?.formatter
|
|
77
|
+
},
|
|
78
|
+
javascript: {
|
|
79
|
+
...defaultBiomeConfiguration.javascript,
|
|
80
|
+
...biomeConfiguration?.javascript,
|
|
81
|
+
formatter: javascriptFormatter
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
const result = biome.formatContent(projectKey, input, {
|
|
85
|
+
filePath: virtualFormatFileName
|
|
86
|
+
});
|
|
87
|
+
if (result.diagnostics.length > 0) {
|
|
88
|
+
throw new Error(biome.printDiagnostics(result.diagnostics, {
|
|
89
|
+
filePath: virtualFormatFileName,
|
|
90
|
+
fileSource: input
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
return result.content.trim().substring(`type ${identifierPrefix} = `.length);
|
|
51
94
|
};
|
|
52
95
|
|
|
53
96
|
// src/index.ts
|
|
54
|
-
import path from "node:path";
|
|
55
|
-
import ts2 from "typescript";
|
|
56
97
|
var findResultIdentifierNode = (node) => {
|
|
57
|
-
if (node.getChildCount()
|
|
98
|
+
if (node.getChildCount() === 0) {
|
|
58
99
|
if (!ts2.isIdentifier(node)) {
|
|
59
100
|
return;
|
|
60
101
|
}
|
|
@@ -107,14 +148,14 @@ async function expandMyType(options) {
|
|
|
107
148
|
}
|
|
108
149
|
const typeChecker = program.getTypeChecker();
|
|
109
150
|
const expandedTypeString = typeChecker.typeToString(typeChecker.getTypeAtLocation(resultIdentifierNode), undefined, ts2.TypeFormatFlags.NodeBuilderFlagsMask);
|
|
110
|
-
if (options.prettify
|
|
151
|
+
if (options.prettify?.enabled === false) {
|
|
111
152
|
return expandedTypeString;
|
|
112
153
|
}
|
|
113
|
-
return formatTypeExpression(expandedTypeString, options.prettify?.
|
|
154
|
+
return formatTypeExpression(expandedTypeString, options.prettify?.biomeOptions);
|
|
114
155
|
}
|
|
115
156
|
export {
|
|
116
157
|
expandMyType
|
|
117
158
|
};
|
|
118
159
|
|
|
119
|
-
//# debugId=
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uczxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0ge1xuICBbUCBpbiBLXTogVFtQXSBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gVFtQXSA6IG5ldmVyO1xufTtcbmV4cG9ydCB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID0gUGFydGlhbDxcbiAgRXh0cmFjdEZ1bmN0aW9uczx0cy5Db21waWxlckhvc3Q+XG4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IGF1Z21lbnRzIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUgZm9yIGV4cGFuZGluZyBhIHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc291cmNlRmlsZU5hbWUgTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gYXVnbWVudC5cbiAqIEBwYXJhbSBjb2RlVG9BZGQgVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgQSByZWNvcmQgb2YgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIGluIHRoZSBjb21waWxlciBob3N0LiBVc2VmdWwgZm9yIG1vY2tpbmcuXG4gKiBAcmV0dXJucyBBIGN1c3RvbSBjb21waWxlciBob3N0IHRoYXQgcmV0dXJucyBhbiBhdWdtZW50ZWQgc291cmNlIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCB0byBleHBhbmQgdGhlIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCA9IChcbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZyxcbiAgY29kZVRvQWRkOiBzdHJpbmcsXG4gIGNvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucyxcbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbikgPT4ge1xuICBjb25zdCBjdXN0b21Db21waWxlckhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3QoY29tcGlsZXJPcHRpb25zID8/IHt9LCB0cnVlKTtcbiAgY29uc3Qgb3ZlcnJpZGVzID0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgPz8ge307XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3ZlcnJpZGVzKSBhcyBBcnJheTxcbiAgICBrZXlvZiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlc1xuICA+KSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBvdmVycmlkZXNba2V5XTtcblxuICAgIGlmIChvdmVycmlkZSkge1xuICAgICAgKGN1c3RvbUNvbXBpbGVySG9zdCBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldID1cbiAgICAgICAgb3ZlcnJpZGU7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLAogICAgImltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBQcmV0dGllck9wdGlvbnMgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJwcmV0dGllclwiO1xuXG5jb25zdCBpZGVudGlmaWVyUHJlZml4ID0gXCJfX0VYUEFORF9NWV9UWVBFX19cIjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUV4cGFuZENvZGVCbG9jayA9ICh0eXBlRXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9ibG9iL21haW4vdGVzdHMvY2FzZXMvY29tcGlsZXIvY29tcHV0ZWRUeXBlc0tleW9mTm9JbmRleFNpZ25hdHVyZVR5cGUudHNcbiAgcmV0dXJuIGB0eXBlICR7aWRlbnRpZmllclByZWZpeH1SZXN1bHQgPSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPCR7aWRlbnRpZmllclByZWZpeH1FeHByZXNzaW9uPjtcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHByZXNzaW9uID0gJHt0eXBlRXhwcmVzc2lvbn07XG5cbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VD4gPSBcbiAgICAgICAgVCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSID8gKC4uLmFyZ3M6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8QT4pID0+ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8Uj5cbiAgICAgIDogVCBleHRlbmRzIFByb21pc2U8aW5mZXIgVT4gPyBQcm9taXNlPCR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRUeXBlQXJndW1lbnQ8VT4+XG4gICAgICA6IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBzdHJpbmcgPyAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFRbS10+IDogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUW0tdPjsgfSAmIHt9O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kVHlwZUFyZ3VtZW50PFQ+ID0gW1QgJiB7fV0gZXh0ZW5kcyBbbmV2ZXJdID8gVCA6IFQgJiB7fSBleHRlbmRzIHZvaWQgPyBUIDogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUICYge30+O1xuXG4gICAgLy8gRm9yY2VzIGEgdW5pb24gb2Ygc3RyaW5nIGxpdGVyYWwgdHlwZXMgdG8gYmUgZXhwYW5kZWRcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRTdHJpbmc8VCBleHRlbmRzIHN0cmluZz4gPSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTwke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUPj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFxcYFxcJHtUfV9cXGAgZXh0ZW5kcyBzdHJpbmcgPyBcXGBcXCR7VH1fXFxgIDogbmV2ZXI7XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgZXh0ZW5kcyBcXGBcXCR7aW5mZXIgVX1fXFxgID8gVSA6IG5ldmVyO2A7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VHlwZUV4cHJlc3Npb24gPSBhc3luYyAoXG4gIGNvZGU6IHN0cmluZyxcbiAgcHJldHRpZXJPcHRpb25zPzogUHJldHRpZXJPcHRpb25zLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgYXdhaXQgZm9ybWF0KFxuICAgICAgYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9ICR7Y29kZX1gLFxuICAgICAgcHJldHRpZXJPcHRpb25zID8/IHtcbiAgICAgICAgcGFyc2VyOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgc2VtaTogZmFsc2UsXG4gICAgICB9LFxuICAgIClcbiAgKVxuICAgIC50cmltKClcbiAgICAuc3Vic3RyaW5nKGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSBgLmxlbmd0aCk7XG59O1xuIiwKICAgICJpbXBvcnQgeyBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgfSBmcm9tIFwiLi9hdWdtZW50ZXItY29tcGlsZXItaG9zdC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LmpzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVFeHBhbmRDb2RlQmxvY2ssXG4gIGZvcm1hdFR5cGVFeHByZXNzaW9uLFxufSBmcm9tIFwiLi9jb2RlLWdlbmVyYXRvci5qc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbi8qKlxuICogRmluZHMgdGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHR5cGUgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICovXG5jb25zdCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT0gMCkge1xuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIHB1dCB0aGUgX188SURFTlRJRklFUj5fXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUpO1xufTtcblxuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZU9wdGlvbnNCYXNlID0ge1xuICAvKipcbiAgICogVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBleHBhbmQuXG4gICAqIEBleGFtcGxlIFwiUmV0dXJuVHlwZTx0eXBlb2YgbXlGdW5jdGlvbj5cIlxuICAgKi9cbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgdHNDb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFByZXR0aWVyIG9wdGlvbnMuXG4gICAqL1xuICBwcmV0dGlmeT86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXR0aWZ5IHRoZSBvdXRwdXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIG9wdGlvbnMuIERvbid0IGZvcmdldCB0byBzZXQgdGhlIHBhcnNlciB0byBcInR5cGVzY3JpcHRcIi5cbiAgICAgKiBAZGVmYXVsdCB7IHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsIHNlbWk6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBvcHRpb25zPzogUHJldHRpZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgZHVtbXlGaWxlTmFtZSA9IFwiZXhwYW5kLW15LXR5cGUtZHVtbXkudHNcIjtcblxuICAgIHJldHVybiBleHBhbmRNeVR5cGUoe1xuICAgICAgc291cmNlRmlsZU5hbWU6IGR1bW15RmlsZU5hbWUsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlYWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgICBpZiAocGF0aC5iYXNlbmFtZShmaWxlTmFtZSkgPT09IGR1bW15RmlsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZVRleHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRzLnN5cy5yZWFkRmlsZShmaWxlTmFtZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgICBwcmV0dGlmeTogb3B0aW9ucy5wcmV0dGlmeSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkU291cmNlRmlsZU5hbWUgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5zb3VyY2VGaWxlTmFtZSk7XG5cbiAgY29uc3QgdHNDb21waWxlck9wdGlvbnMgPSBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zID8/IHtcbiAgICBub0VtaXQ6IHRydWUsXG5cbiAgICBzdHJpY3ROdWxsQ2hlY2tzOiB0cnVlLFxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgaWYgKCF0c0NvbXBpbGVyT3B0aW9ucy5zdHJpY3ROdWxsQ2hlY2tzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwic3RyaWN0TnVsbENoZWNrcyBtdXN0IGJlIGVuYWJsZWQhXCIpO1xuICB9XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0SWRlbnRpZmllck5vZGUgPSBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghcmVzdWx0SWRlbnRpZmllck5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGVTdHJpbmcgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24ocmVzdWx0SWRlbnRpZmllck5vZGUpLFxuICAgIHVuZGVmaW5lZCxcbiAgICB0cy5UeXBlRm9ybWF0RmxhZ3MuTm9kZUJ1aWxkZXJGbGFnc01hc2ssXG4gICk7XG5cbiAgaWYgKG9wdGlvbnMucHJldHRpZnkgJiYgb3B0aW9ucy5wcmV0dGlmeS5lbmFibGVkID09PSBmYWxzZSkge1xuICAgIHJldHVybiBleHBhbmRlZFR5cGVTdHJpbmc7XG4gIH1cblxuICByZXR1cm4gZm9ybWF0VHlwZUV4cHJlc3Npb24oZXhwYW5kZWRUeXBlU3RyaW5nLCBvcHRpb25zLnByZXR0aWZ5Py5vcHRpb25zKTtcbn1cbiIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFBQTtBQWtCTyxJQUFNLDhCQUE4QixDQUN6QyxnQkFDQSxXQUNBLGlCQUNBLGtDQUNHO0FBQUEsRUFDSCxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixtQkFBbUIsQ0FBQyxHQUFHLElBQUk7QUFBQSxFQUM1RSxNQUFNLFlBQVksaUNBQWlDLENBQUM7QUFBQSxFQUVwRCxXQUFXLE9BQU8sT0FBTyxLQUFLLFNBQVMsR0FFcEM7QUFBQSxJQUNELE1BQU0sV0FBVyxVQUFVO0FBQUEsSUFFM0IsSUFBSSxVQUFVO0FBQUEsTUFDWCxtQkFBMEQsT0FDekQ7QUFBQSxJQUNKO0FBQUEsRUFDRjtBQUFBLEVBRUEsTUFBTSxtQkFBbUIsbUJBQW1CO0FBQUEsRUFFNUMsbUJBQW1CLFdBQVcsQ0FBQyxhQUFhO0FBQUEsSUFDMUMsTUFBTSxXQUFXLGlCQUFpQixRQUFRO0FBQUEsSUFFMUMsSUFBSSxhQUFhLFdBQVc7QUFBQSxNQUMxQixPQUFPO0FBQUEsSUFDVDtBQUFBLElBRUEsSUFBSSxhQUFhLGdCQUFnQjtBQUFBLE1BQy9CLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxPQUFPLEdBQUc7QUFBQSxFQUFjO0FBQUE7QUFBQSxFQUcxQixPQUFPO0FBQUE7OztBQ3JEVDtBQUVBLElBQU0sbUJBQW1CO0FBRWxCLElBQU0sd0JBQXdCLENBQUMsbUJBQTJCO0FBQUEsRUFFL0QsT0FBTyxRQUFRLDRCQUE0QiwwQkFBMEI7QUFBQSxXQUM1RCxnQ0FBZ0M7QUFBQTtBQUFBLFdBRWhDO0FBQUEsOERBQ21ELGlDQUFpQztBQUFBLCtDQUNoRDtBQUFBLGtEQUNHLHdDQUF3QztBQUFBO0FBQUEsV0FFL0Usb0dBQW9HO0FBQUE7QUFBQTtBQUFBLFdBR3BHLG9EQUFvRCxvQ0FBb0M7QUFBQSxXQUN4RjtBQUFBLFdBQ0E7QUFBQTtBQUdKLElBQU0sdUJBQXVCLE9BQ2xDLE1BQ0Esb0JBQ0c7QUFBQSxFQUNILFFBQ0UsTUFBTSxPQUNKLFFBQVEsc0JBQXNCLFFBQzlCLG1CQUFtQjtBQUFBLElBQ2pCLFFBQVE7QUFBQSxJQUNSLE1BQU07QUFBQSxFQUNSLENBQ0YsR0FFQyxLQUFLLEVBQ0wsVUFBVSxRQUFRLHNCQUFzQixNQUFNO0FBQUE7OztBQy9CbkQ7QUFFQTtBQVFBLElBQU0sMkJBQTJCLENBQUMsU0FBdUM7QUFBQSxFQUN2RSxJQUFJLEtBQUssY0FBYyxLQUFLLEdBQUc7QUFBQSxJQUM3QixJQUFJLENBQUMsSUFBRyxhQUFhLElBQUksR0FBRztBQUFBLE1BQzFCO0FBQUEsSUFDRjtBQUFBLElBSUEsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVBLE9BQU8sSUFBRyxhQUFhLE1BQU0sd0JBQXdCO0FBQUE7QUFpRXZELGVBQXNCLFlBQVksQ0FBQyxTQUE4QjtBQUFBLEVBQy9ELElBQUksUUFBUSxlQUFlLEtBQUssTUFBTSxJQUFJO0FBQUEsSUFDeEMsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVBLElBQUksZ0JBQWdCLFNBQVM7QUFBQSxJQUMzQixNQUFNLGdCQUFnQjtBQUFBLElBRXRCLE9BQU8sYUFBYTtBQUFBLE1BQ2xCLGdCQUFnQjtBQUFBLE1BQ2hCLGdCQUFnQixRQUFRO0FBQUEsTUFDeEIsK0JBQStCO0FBQUEsUUFDN0IsUUFBUSxDQUFDLFVBQWtCO0FBQUEsVUFDekIsSUFBSSxLQUFLLFNBQVMsUUFBUSxNQUFNLGVBQWU7QUFBQSxZQUM3QyxPQUFPLFFBQVE7QUFBQSxVQUNqQjtBQUFBLFVBRUEsT0FBTyxJQUFHLElBQUksU0FBUyxRQUFRO0FBQUE7QUFBQSxNQUVuQztBQUFBLE1BQ0EsbUJBQW1CLFFBQVE7QUFBQSxNQUMzQixVQUFVLFFBQVE7QUFBQSxJQUNwQixDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsTUFBTSx5QkFBeUIsS0FBSyxRQUFRLFFBQVEsY0FBYztBQUFBLEVBRWxFLE1BQU0sb0JBQW9CLFFBQVEscUJBQXFCO0FBQUEsSUFDckQsUUFBUTtBQUFBLElBRVIsa0JBQWtCO0FBQUEsSUFDbEIsOEJBQThCO0FBQUEsSUFDOUIsMEJBQTBCO0FBQUEsSUFDMUIsNEJBQTRCO0FBQUEsSUFDNUIsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUVBLElBQUksQ0FBQyxrQkFBa0Isa0JBQWtCO0FBQUEsSUFDdkMsTUFBTSxJQUFJLE1BQU0sbUNBQW1DO0FBQUEsRUFDckQ7QUFBQSxFQUVBLE1BQU0sZUFBZSw0QkFDbkIsd0JBQ0Esc0JBQXNCLFFBQVEsY0FBYyxHQUM1QyxtQkFDQSxRQUFRLDZCQUNWO0FBQUEsRUFFQSxNQUFNLFVBQVUsSUFBRyxjQUNqQixDQUFDLHNCQUFzQixHQUN2QixtQkFDQSxZQUNGO0FBQUEsRUFFQSxNQUFNLGFBQWEsUUFBUSxjQUFjLHNCQUFzQjtBQUFBLEVBQy9ELElBQUksQ0FBQyxZQUFZO0FBQUEsSUFDZixNQUFNLElBQUksTUFBTSx3QkFBd0I7QUFBQSxFQUMxQztBQUFBLEVBRUEsTUFBTSx1QkFBdUIseUJBQXlCLFVBQVU7QUFBQSxFQUNoRSxJQUFJLENBQUMsc0JBQXNCO0FBQUEsSUFDekIsTUFBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQUEsRUFDbEM7QUFBQSxFQUVBLE1BQU0sY0FBYyxRQUFRLGVBQWU7QUFBQSxFQUMzQyxNQUFNLHFCQUFxQixZQUFZLGFBQ3JDLFlBQVksa0JBQWtCLG9CQUFvQixHQUNsRCxXQUNBLElBQUcsZ0JBQWdCLG9CQUNyQjtBQUFBLEVBRUEsSUFBSSxRQUFRLFlBQVksUUFBUSxTQUFTLFlBQVksT0FBTztBQUFBLElBQzFELE9BQU87QUFBQSxFQUNUO0FBQUEsRUFFQSxPQUFPLHFCQUFxQixvQkFBb0IsUUFBUSxVQUFVLE9BQU87QUFBQTsiLAogICJkZWJ1Z0lkIjogIkZBNDBFMkZGNEZGNzQ5OUE2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
|
160
|
+
//# debugId=A899C07794769D2464756E2164756E21
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50cyIsICIuLi9zcmMvY29kZS1nZW5lcmF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBDb25maWd1cmF0aW9uIGFzIEJpb21lQ29uZmlndXJhdGlvbiB9IGZyb20gXCJAYmlvbWVqcy93YXNtLW5vZGVqc1wiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQge1xuICB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuICBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QsXG59IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LmpzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVFeHBhbmRDb2RlQmxvY2ssXG4gIGZvcm1hdFR5cGVFeHByZXNzaW9uLFxufSBmcm9tIFwiLi9jb2RlLWdlbmVyYXRvci5qc1wiO1xuXG4vKipcbiAqIEZpbmRzIHRoZSByZXN1bHQgdHlwZSBpZGVudGlmaWVyIG5vZGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0eXBlIHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqL1xuY29uc3QgZmluZFJlc3VsdElkZW50aWZpZXJOb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09PSAwKSB7XG4gICAgaWYgKCF0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gU2luY2Ugd2UgcHV0IHRoZSBfXzxJREVOVElGSUVSPl9fIHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgICAvLyBmaWxlLCB3ZSBjYW4gcmV0dXJuIHRoZSBmaXJzdCBpZGVudGlmaWVyIHdlIGZpbmQuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZnkgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQmlvbWUgZm9ybWF0dGluZyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIGJpb21lT3B0aW9ucz86IEJpb21lQ29uZmlndXJhdGlvbjtcbiAgfTtcblxuICAvKipcbiAgICogQSByZWNvcmQgb2YgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIGluIHRoZSBjb21waWxlciBob3N0LiBVc2VmdWwgZm9yIG1vY2tpbmdcbiAgICovXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHNvdXJjZSB0ZXh0IHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kTXlUeXBlT3B0aW9ucyA9XG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9uc1xuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIEV4cGFuZHMgYSBUeXBlU2NyaXB0IHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIGV4cGFuZGVkIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShvcHRpb25zOiBFeHBhbmRNeVR5cGVPcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGVFeHByZXNzaW9uLnRyaW0oKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBcIm5ldmVyXCI7XG4gIH1cblxuICBpZiAoXCJzb3VyY2VUZXh0XCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IGR1bW15RmlsZU5hbWUgPSBcImV4cGFuZC1teS10eXBlLWR1bW15LnRzXCI7XG5cbiAgICByZXR1cm4gZXhwYW5kTXlUeXBlKHtcbiAgICAgIHNvdXJjZUZpbGVOYW1lOiBkdW1teUZpbGVOYW1lLFxuICAgICAgdHlwZUV4cHJlc3Npb246IG9wdGlvbnMudHlwZUV4cHJlc3Npb24sXG4gICAgICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlczoge1xuICAgICAgICByZWFkRmlsZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgICAgaWYgKHBhdGguYmFzZW5hbWUoZmlsZU5hbWUpID09PSBkdW1teUZpbGVOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zb3VyY2VUZXh0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cy5zeXMucmVhZEZpbGUoZmlsZU5hbWUpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgICAgcHJldHRpZnk6IG9wdGlvbnMucHJldHRpZnksXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZFNvdXJjZUZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMuc291cmNlRmlsZU5hbWUpO1xuXG4gIGNvbnN0IHRzQ29tcGlsZXJPcHRpb25zID0gb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyA/PyB7XG4gICAgbm9FbWl0OiB0cnVlLFxuXG4gICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgICBhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOiB0cnVlLFxuICAgIGFsbG93QXJiaXRyYXJ5RXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0pzOiB0cnVlLFxuICB9O1xuXG4gIGlmICghdHNDb21waWxlck9wdGlvbnMuc3RyaWN0TnVsbENoZWNrcykge1xuICAgIHRocm93IG5ldyBFcnJvcihcInN0cmljdE51bGxDaGVja3MgbXVzdCBiZSBlbmFibGVkIVwiKTtcbiAgfVxuXG4gIGNvbnN0IGNvbXBpbGVySG9zdCA9IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdChcbiAgICByZXNvbHZlZFNvdXJjZUZpbGVOYW1lLFxuICAgIGNyZWF0ZUV4cGFuZENvZGVCbG9jayhvcHRpb25zLnR5cGVFeHByZXNzaW9uKSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBvcHRpb25zLmNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuICApO1xuXG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKFxuICAgIFtyZXNvbHZlZFNvdXJjZUZpbGVOYW1lXSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBjb21waWxlckhvc3QsXG4gICk7XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IHByb2dyYW0uZ2V0U291cmNlRmlsZShyZXNvbHZlZFNvdXJjZUZpbGVOYW1lKTtcbiAgaWYgKCFzb3VyY2VGaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU291cmNlIGZpbGUgbm90IGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdElkZW50aWZpZXJOb2RlID0gZmluZFJlc3VsdElkZW50aWZpZXJOb2RlKHNvdXJjZUZpbGUpO1xuICBpZiAoIXJlc3VsdElkZW50aWZpZXJOb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgZXhwYW5kZWRUeXBlU3RyaW5nID0gdHlwZUNoZWNrZXIudHlwZVRvU3RyaW5nKFxuICAgIHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKHJlc3VsdElkZW50aWZpZXJOb2RlKSxcbiAgICB1bmRlZmluZWQsXG4gICAgdHMuVHlwZUZvcm1hdEZsYWdzLk5vZGVCdWlsZGVyRmxhZ3NNYXNrLFxuICApO1xuXG4gIGlmIChvcHRpb25zLnByZXR0aWZ5Py5lbmFibGVkID09PSBmYWxzZSkge1xuICAgIHJldHVybiBleHBhbmRlZFR5cGVTdHJpbmc7XG4gIH1cblxuICByZXR1cm4gZm9ybWF0VHlwZUV4cHJlc3Npb24oXG4gICAgZXhwYW5kZWRUeXBlU3RyaW5nLFxuICAgIG9wdGlvbnMucHJldHRpZnk/LmJpb21lT3B0aW9ucyxcbiAgKTtcbn1cbiIsCiAgICAiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uczxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0ge1xuICBbUCBpbiBLXTogRXh0cmFjdDxUW1BdLCAoLi4uYXJnczogbmV2ZXJbXSkgPT4gdW5rbm93bj47XG59O1xuZXhwb3J0IHR5cGUgQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgPSBQYXJ0aWFsPFxuICBFeHRyYWN0RnVuY3Rpb25zPHRzLkNvbXBpbGVySG9zdD5cbj47XG5cbi8qKlxuICogQ3JlYXRlcyBhIGN1c3RvbSBjb21waWxlciBob3N0IHRoYXQgYXVnbWVudHMgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZSBmb3IgZXhwYW5kaW5nIGEgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBzb3VyY2VGaWxlTmFtZSBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBhdWdtZW50LlxuICogQHBhcmFtIGNvZGVUb0FkZCBUeXBlIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gY29tcGlsZXJPcHRpb25zIFR5cGVTY3JpcHQgY29tcGlsZXIgb3B0aW9ucy5cbiAqIEBwYXJhbSBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZy5cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBjb25zdCBvdmVycmlkZXMgPSBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvdmVycmlkZXMpIGFzIEFycmF5PFxuICAgIGtleW9mIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzXG4gID4pIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IG92ZXJyaWRlc1trZXldO1xuXG4gICAgaWYgKG92ZXJyaWRlKSB7XG4gICAgICAoY3VzdG9tQ29tcGlsZXJIb3N0IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gPVxuICAgICAgICBvdmVycmlkZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFJlYWRGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlO1xuXG4gIGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZSA9IChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gb3JpZ2luYWxSZWFkRmlsZShmaWxlTmFtZSk7XG5cbiAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIGlmIChmaWxlTmFtZSAhPT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29kZVRvQWRkfVxcbiR7Y29udGVudHN9YDtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsCiAgICAiaW1wb3J0IHsgQmlvbWUgfSBmcm9tIFwiQGJpb21lanMvanMtYXBpL25vZGVqc1wiO1xuaW1wb3J0IHR5cGUgeyBDb25maWd1cmF0aW9uIGFzIEJpb21lQ29uZmlndXJhdGlvbiB9IGZyb20gXCJAYmlvbWVqcy93YXNtLW5vZGVqc1wiO1xuXG5jb25zdCBpZGVudGlmaWVyUHJlZml4ID0gXCJfX0VYUEFORF9NWV9UWVBFX19cIjtcbmNvbnN0IHZpcnR1YWxGb3JtYXRGaWxlTmFtZSA9IFwiZXhwYW5kLW15LXR5cGUudHNcIjtcbmNvbnN0IGJpb21lID0gbmV3IEJpb21lKCk7XG5jb25zdCB7IHByb2plY3RLZXkgfSA9IGJpb21lLm9wZW5Qcm9qZWN0KCk7XG5cbmNvbnN0IGRlZmF1bHRCaW9tZUNvbmZpZ3VyYXRpb246IEJpb21lQ29uZmlndXJhdGlvbiA9IHtcbiAgZm9ybWF0dGVyOiB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBpbmRlbnRTdHlsZTogXCJzcGFjZVwiLFxuICB9LFxuICBqYXZhc2NyaXB0OiB7XG4gICAgZm9ybWF0dGVyOiB7XG4gICAgICBxdW90ZVN0eWxlOiBcImRvdWJsZVwiLFxuICAgICAgc2VtaWNvbG9uczogXCJhc05lZWRlZFwiLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFxuICAgICAgICBUIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEEpID0+IGluZmVyIFIgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPiA/IFByb21pc2U8JHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFR5cGVBcmd1bWVudDxVPj5cbiAgICAgIDogeyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIHN0cmluZyA/ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRTdHJpbmc8VFtLXT4gOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFRbS10+OyB9ICYge307XG5cbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRUeXBlQXJndW1lbnQ8VD4gPSBbVCAmIHt9XSBleHRlbmRzIFtuZXZlcl0gPyBUIDogVCAmIHt9IGV4dGVuZHMgdm9pZCA/IFQgOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQgJiB7fT47XG5cbiAgICAvLyBGb3JjZXMgYSB1bmlvbiBvZiBzdHJpbmcgbGl0ZXJhbCB0eXBlcyB0byBiZSBleHBhbmRlZFxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUIGV4dGVuZHMgc3RyaW5nPiA9ICR7aWRlbnRpZmllclByZWZpeH1SZW1vdmVVbmRlcnNjb3JlPCR7aWRlbnRpZmllclByZWZpeH1BcHBlbmRVbmRlcnNjb3JlPFQ+PjtcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1BcHBlbmRVbmRlcnNjb3JlPFQgZXh0ZW5kcyBzdHJpbmc+ID0gXFxgXFwke1R9X1xcYCBleHRlbmRzIHN0cmluZyA/IFxcYFxcJHtUfV9cXGAgOiBuZXZlcjtcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1SZW1vdmVVbmRlcnNjb3JlPFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIFxcYFxcJHtpbmZlciBVfV9cXGAgPyBVIDogbmV2ZXI7YDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUeXBlRXhwcmVzc2lvbiA9IGFzeW5jIChcbiAgY29kZTogc3RyaW5nLFxuICBiaW9tZUNvbmZpZ3VyYXRpb24/OiBCaW9tZUNvbmZpZ3VyYXRpb24sXG4pID0+IHtcbiAgY29uc3QgaW5wdXQgPSBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gJHtjb2RlfWA7XG4gIGNvbnN0IGphdmFzY3JpcHRGb3JtYXR0ZXIgPSB7XG4gICAgLi4uZGVmYXVsdEJpb21lQ29uZmlndXJhdGlvbi5qYXZhc2NyaXB0Py5mb3JtYXR0ZXIsXG4gICAgLi4uYmlvbWVDb25maWd1cmF0aW9uPy5qYXZhc2NyaXB0Py5mb3JtYXR0ZXIsXG4gIH07XG5cbiAgYmlvbWUuYXBwbHlDb25maWd1cmF0aW9uKHByb2plY3RLZXksIHtcbiAgICAuLi5kZWZhdWx0QmlvbWVDb25maWd1cmF0aW9uLFxuICAgIC4uLmJpb21lQ29uZmlndXJhdGlvbixcbiAgICBmb3JtYXR0ZXI6IHtcbiAgICAgIC4uLmRlZmF1bHRCaW9tZUNvbmZpZ3VyYXRpb24uZm9ybWF0dGVyLFxuICAgICAgLi4uYmlvbWVDb25maWd1cmF0aW9uPy5mb3JtYXR0ZXIsXG4gICAgfSxcbiAgICBqYXZhc2NyaXB0OiB7XG4gICAgICAuLi5kZWZhdWx0QmlvbWVDb25maWd1cmF0aW9uLmphdmFzY3JpcHQsXG4gICAgICAuLi5iaW9tZUNvbmZpZ3VyYXRpb24/LmphdmFzY3JpcHQsXG4gICAgICBmb3JtYXR0ZXI6IGphdmFzY3JpcHRGb3JtYXR0ZXIsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgcmVzdWx0ID0gYmlvbWUuZm9ybWF0Q29udGVudChwcm9qZWN0S2V5LCBpbnB1dCwge1xuICAgIGZpbGVQYXRoOiB2aXJ0dWFsRm9ybWF0RmlsZU5hbWUsXG4gIH0pO1xuXG4gIGlmIChyZXN1bHQuZGlhZ25vc3RpY3MubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGJpb21lLnByaW50RGlhZ25vc3RpY3MocmVzdWx0LmRpYWdub3N0aWNzLCB7XG4gICAgICAgIGZpbGVQYXRoOiB2aXJ0dWFsRm9ybWF0RmlsZU5hbWUsXG4gICAgICAgIGZpbGVTb3VyY2U6IGlucHV0LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuY29udGVudC50cmltKCkuc3Vic3RyaW5nKGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSBgLmxlbmd0aCk7XG59O1xuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQUFBO0FBRUE7OztBQ0ZBO0FBa0JPLElBQU0sOEJBQThCLENBQ3pDLGdCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFBQSxFQUNILE1BQU0scUJBQXFCLEdBQUcsbUJBQW1CLG1CQUFtQixDQUFDLEdBQUcsSUFBSTtBQUFBLEVBQzVFLE1BQU0sWUFBWSxpQ0FBaUMsQ0FBQztBQUFBLEVBRXBELFdBQVcsT0FBTyxPQUFPLEtBQUssU0FBUyxHQUVwQztBQUFBLElBQ0QsTUFBTSxXQUFXLFVBQVU7QUFBQSxJQUUzQixJQUFJLFVBQVU7QUFBQSxNQUNYLG1CQUEwRCxPQUN6RDtBQUFBLElBQ0o7QUFBQSxFQUNGO0FBQUEsRUFFQSxNQUFNLG1CQUFtQixtQkFBbUI7QUFBQSxF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UUFBUSxNQUFNLGVBQWU7QUFBQSxZQUM3QyxPQUFPLFFBQVE7QUFBQSxVQUNqQjtBQUFBLFVBRUEsT0FBTyxJQUFHLElBQUksU0FBUyxRQUFRO0FBQUE7QUFBQSxNQUVuQztBQUFBLE1BQ0EsbUJBQW1CLFFBQVE7QUFBQSxNQUMzQixVQUFVLFFBQVE7QUFBQSxJQUNwQixDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsTUFBTSx5QkFBeUIsS0FBSyxRQUFRLFFBQVEsY0FBYztBQUFBLEVBRWxFLE1BQU0sb0JBQW9CLFFBQVEscUJBQXFCO0FBQUEsSUFDckQsUUFBUTtBQUFBLElBRVIsa0JBQWtCO0FBQUEsSUFDbEIsOEJBQThCO0FBQUEsSUFDOUIsMEJBQTBCO0FBQUEsSUFDMUIsNEJBQTRCO0FBQUEsSUFDNUIsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUVBLElBQUksQ0FBQyxrQkFBa0Isa0JBQWtCO0FBQUEsSUFDdkMsTUFBTSxJQUFJLE1BQU0sbUNBQW1DO0FBQUEsRUFDckQ7QUFBQSxFQUVBLE1BQU0sZUFBZSw0QkFDbkIsd0JBQ0Esc0JBQXNCLFFBQVEsY0FBYyxHQUM1QyxtQkFDQSxRQUFRLDZCQUNWO0FBQUEsRUFFQSxNQUFNLFVBQVUsSUFBRyxjQUNqQixDQUFDLHNCQUFzQixHQUN2QixtQkFDQSxZQUNGO0FBQUEsRUFFQSxNQUFNLGFBQWEsUUFBUSxjQUFjLHNCQUFzQjtBQUFBLEVBQy9ELElBQUksQ0FBQyxZQUFZO0FBQUEsSUFDZixNQUFNLElBQUksTUFBTSx3QkFBd0I7QUFBQSxFQUMxQztBQUFBLEVBRUEsTUFBTSx1QkFBdUIseUJBQXlCLFVBQVU7QUFBQSxFQUNoRSxJQUFJLENBQUMsc0JBQXNCO0FBQUEsSUFDekIsTUFBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQUEsRUFDbEM7QUFBQSxFQUVBLE1BQU0sY0FBYyxRQUFRLGVBQWU7QUFBQSxFQUMzQyxNQUFNLHFCQUFxQixZQUFZLGFBQ3JDLFlBQVksa0JBQWtCLG9CQUFvQixHQUNsRCxXQUNBLElBQUcsZ0JBQWdCLG9CQUNyQjtBQUFBLEVBRUEsSUFBSSxRQUFRLFVBQVUsWUFBWSxPQUFPO0FBQUEsSUFDdkMsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVBLE9BQU8scUJBQ0wsb0JBQ0EsUUFBUSxVQUFVLFlBQ3BCO0FBQUE7IiwKICAiZGVidWdJZCI6ICJBODk5QzA3Nzk0NzY5RDI0NjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expand-my-type",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Expand TypeScript type expressions programmatically",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"expand",
|
|
@@ -38,21 +38,22 @@
|
|
|
38
38
|
"build:cjs": "bun build ./src/index.ts --target node --format cjs --packages external --outfile ./dist/index.cjs --sourcemap=inline",
|
|
39
39
|
"build:esm": "bun build ./src/index.ts ./src/cli.ts --target node --format esm --packages external --outdir ./dist --root ./src --sourcemap=inline",
|
|
40
40
|
"build:types": "tsc -p tsconfig.build.json",
|
|
41
|
-
"check": "bun run typecheck && bun
|
|
41
|
+
"check": "bun run lint && bun run typecheck && bun run test",
|
|
42
|
+
"fix": "biome check --write .",
|
|
42
43
|
"clean": "rm -rf dist",
|
|
43
44
|
"deps:update": "bun update --latest",
|
|
44
|
-
"format": "
|
|
45
|
+
"format": "bun run fix",
|
|
46
|
+
"lint": "bunx @biomejs/biome check .",
|
|
45
47
|
"test": "bun test ./src/index.test.ts",
|
|
46
48
|
"typecheck": "tsc --noEmit"
|
|
47
49
|
},
|
|
48
50
|
"dependencies": {
|
|
49
|
-
"
|
|
51
|
+
"@biomejs/js-api": "^4.0.0",
|
|
52
|
+
"@biomejs/wasm-nodejs": "^2.4.11",
|
|
50
53
|
"typescript": "^6.0.2"
|
|
51
54
|
},
|
|
52
55
|
"devDependencies": {
|
|
53
|
-
"@
|
|
54
|
-
"@types/node": "^
|
|
55
|
-
|
|
56
|
-
},
|
|
57
|
-
"packageManager": "bun@1.3.11"
|
|
56
|
+
"@biomejs/biome": "2.4.11",
|
|
57
|
+
"@types/node": "^25.5.2"
|
|
58
|
+
}
|
|
58
59
|
}
|