expand-my-type 0.6.7 → 0.7.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 +9 -0
- package/dist/augmenter-compiler-host.d.ts +16 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +40 -53
- package/dist/code-generator.d.ts +3 -0
- package/dist/index.cjs +77 -57
- package/dist/index.d.ts +10 -17
- package/dist/index.js +18 -28
- package/package.json +21 -28
- package/dist/index.d.cts +0 -55
package/README.md
CHANGED
|
@@ -137,6 +137,15 @@ the following ways:
|
|
|
137
137
|
/* { a: string; b: number } */
|
|
138
138
|
```
|
|
139
139
|
|
|
140
|
+
For local development in this repository, use Bun:
|
|
141
|
+
|
|
142
|
+
```sh
|
|
143
|
+
bun install
|
|
144
|
+
bun run check
|
|
145
|
+
bun run build
|
|
146
|
+
bun run deps:update
|
|
147
|
+
```
|
|
148
|
+
|
|
140
149
|
## How It Works
|
|
141
150
|
|
|
142
151
|
Expand My Type uses the following utility types to expand the type expression:
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
type ExtractFunctions<T, K extends keyof T = keyof T> = {
|
|
3
|
+
[P in K]: T[P] extends (...args: any[]) => any ? T[P] : never;
|
|
4
|
+
};
|
|
5
|
+
export type CompilerHostFunctionOverrides = Partial<ExtractFunctions<ts.CompilerHost>>;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a custom compiler host that augments the specified source file for expanding a type expression.
|
|
8
|
+
*
|
|
9
|
+
* @param sourceFileName Name of the source file to augment.
|
|
10
|
+
* @param codeToAdd Type expression.
|
|
11
|
+
* @param compilerOptions TypeScript compiler options.
|
|
12
|
+
* @param compilerHostFunctionOverrides A record of functions to override in the compiler host. Useful for mocking.
|
|
13
|
+
* @returns A custom compiler host that returns an augmented source file that can be used to expand the type expression.
|
|
14
|
+
*/
|
|
15
|
+
export declare const createAugmenterCompilerHost: (sourceFileName: string, codeToAdd: string, compilerOptions?: ts.CompilerOptions, compilerHostFunctionOverrides?: CompilerHostFunctionOverrides) => ts.CompilerHost;
|
|
16
|
+
export {};
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
CHANGED
|
@@ -2,18 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
// src/augmenter-compiler-host.ts
|
|
4
4
|
import ts from "typescript";
|
|
5
|
-
var createAugmenterCompilerHost = (
|
|
5
|
+
var createAugmenterCompilerHost = (sourceFileName, codeToAdd, compilerOptions, compilerHostFunctionOverrides) => {
|
|
6
6
|
const customCompilerHost = ts.createCompilerHost(compilerOptions ?? {}, true);
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const overrides = compilerHostFunctionOverrides ?? {};
|
|
8
|
+
for (const key of Object.keys(overrides)) {
|
|
9
|
+
const override = overrides[key];
|
|
10
|
+
if (override) {
|
|
11
|
+
customCompilerHost[key] = override;
|
|
12
|
+
}
|
|
9
13
|
}
|
|
10
14
|
const originalReadFile = customCompilerHost.readFile;
|
|
11
15
|
customCompilerHost.readFile = (fileName) => {
|
|
12
16
|
const contents = originalReadFile(fileName);
|
|
13
|
-
if (contents ===
|
|
17
|
+
if (contents === undefined) {
|
|
14
18
|
return contents;
|
|
15
19
|
}
|
|
16
|
-
if (fileName !==
|
|
20
|
+
if (fileName !== sourceFileName) {
|
|
17
21
|
return contents;
|
|
18
22
|
}
|
|
19
23
|
return `${codeToAdd}
|
|
@@ -25,9 +29,9 @@ ${contents}`;
|
|
|
25
29
|
// src/code-generator.ts
|
|
26
30
|
import { format } from "prettier";
|
|
27
31
|
var identifierPrefix = "__EXPAND_MY_TYPE__";
|
|
28
|
-
var createExpandCodeBlock = (
|
|
32
|
+
var createExpandCodeBlock = (typeExpression) => {
|
|
29
33
|
return `type ${identifierPrefix}Result = ${identifierPrefix}Expand<${identifierPrefix}Expression>;
|
|
30
|
-
type ${identifierPrefix}Expression = ${
|
|
34
|
+
type ${identifierPrefix}Expression = ${typeExpression};
|
|
31
35
|
|
|
32
36
|
type ${identifierPrefix}Expand<T> =
|
|
33
37
|
T extends (...args: infer A) => infer R ? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
|
|
@@ -42,13 +46,10 @@ var createExpandCodeBlock = (typeExpression2) => {
|
|
|
42
46
|
type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
|
|
43
47
|
};
|
|
44
48
|
var formatTypeExpression = async (code, prettierOptions) => {
|
|
45
|
-
return (await format(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
semi: false
|
|
50
|
-
}
|
|
51
|
-
)).trim().substring(`type ${identifierPrefix} = `.length);
|
|
49
|
+
return (await format(`type ${identifierPrefix} = ${code}`, prettierOptions ?? {
|
|
50
|
+
parser: "typescript",
|
|
51
|
+
semi: false
|
|
52
|
+
})).trim().substring(`type ${identifierPrefix} = `.length);
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
// src/index.ts
|
|
@@ -57,7 +58,7 @@ import ts2 from "typescript";
|
|
|
57
58
|
var findResultIdentifierNode = (node) => {
|
|
58
59
|
if (node.getChildCount() == 0) {
|
|
59
60
|
if (!ts2.isIdentifier(node)) {
|
|
60
|
-
return
|
|
61
|
+
return;
|
|
61
62
|
}
|
|
62
63
|
return node;
|
|
63
64
|
}
|
|
@@ -96,17 +97,8 @@ async function expandMyType(options) {
|
|
|
96
97
|
if (!tsCompilerOptions.strictNullChecks) {
|
|
97
98
|
throw new Error("strictNullChecks must be enabled!");
|
|
98
99
|
}
|
|
99
|
-
const compilerHost = createAugmenterCompilerHost(
|
|
100
|
-
|
|
101
|
-
createExpandCodeBlock(options.typeExpression),
|
|
102
|
-
tsCompilerOptions,
|
|
103
|
-
options.compilerHostFunctionOverrides
|
|
104
|
-
);
|
|
105
|
-
const program = ts2.createProgram(
|
|
106
|
-
[resolvedSourceFileName],
|
|
107
|
-
tsCompilerOptions,
|
|
108
|
-
compilerHost
|
|
109
|
-
);
|
|
100
|
+
const compilerHost = createAugmenterCompilerHost(resolvedSourceFileName, createExpandCodeBlock(options.typeExpression), tsCompilerOptions, options.compilerHostFunctionOverrides);
|
|
101
|
+
const program = ts2.createProgram([resolvedSourceFileName], tsCompilerOptions, compilerHost);
|
|
110
102
|
const sourceFile = program.getSourceFile(resolvedSourceFileName);
|
|
111
103
|
if (!sourceFile) {
|
|
112
104
|
throw new Error("Source file not found!");
|
|
@@ -116,11 +108,7 @@ async function expandMyType(options) {
|
|
|
116
108
|
throw new Error("No node found!");
|
|
117
109
|
}
|
|
118
110
|
const typeChecker = program.getTypeChecker();
|
|
119
|
-
const expandedTypeString = typeChecker.typeToString(
|
|
120
|
-
typeChecker.getTypeAtLocation(resultIdentifierNode),
|
|
121
|
-
void 0,
|
|
122
|
-
ts2.TypeFormatFlags.NodeBuilderFlagsMask
|
|
123
|
-
);
|
|
111
|
+
const expandedTypeString = typeChecker.typeToString(typeChecker.getTypeAtLocation(resultIdentifierNode), undefined, ts2.TypeFormatFlags.NodeBuilderFlagsMask);
|
|
124
112
|
if (options.prettify && options.prettify.enabled === false) {
|
|
125
113
|
return expandedTypeString;
|
|
126
114
|
}
|
|
@@ -131,37 +119,37 @@ async function expandMyType(options) {
|
|
|
131
119
|
import { parseArgs } from "node:util";
|
|
132
120
|
import ts3 from "typescript";
|
|
133
121
|
var tryParse = (options) => {
|
|
134
|
-
let
|
|
122
|
+
let result;
|
|
135
123
|
try {
|
|
136
|
-
|
|
124
|
+
result = parseArgs({
|
|
137
125
|
options,
|
|
138
126
|
tokens: true,
|
|
139
127
|
allowPositionals: true
|
|
140
128
|
});
|
|
141
|
-
} catch (
|
|
129
|
+
} catch (error) {
|
|
142
130
|
return {
|
|
143
|
-
error:
|
|
131
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
144
132
|
values: {},
|
|
145
133
|
positionals: []
|
|
146
134
|
};
|
|
147
135
|
}
|
|
148
|
-
const { tokens, values
|
|
136
|
+
const { tokens, values, positionals } = result;
|
|
149
137
|
for (const token of tokens ?? []) {
|
|
150
138
|
if (token.kind === "option-terminator" || token.kind === "positional") {
|
|
151
139
|
continue;
|
|
152
140
|
}
|
|
153
141
|
if (token.name.startsWith("no-")) {
|
|
154
142
|
const positiveName = token.name.slice("no-".length);
|
|
155
|
-
|
|
156
|
-
delete
|
|
143
|
+
values[positiveName] = false;
|
|
144
|
+
delete values[token.name];
|
|
157
145
|
} else {
|
|
158
|
-
|
|
146
|
+
values[token.name] = token.value ?? true;
|
|
159
147
|
}
|
|
160
148
|
}
|
|
161
149
|
return {
|
|
162
|
-
error:
|
|
163
|
-
values
|
|
164
|
-
positionals
|
|
150
|
+
error: undefined,
|
|
151
|
+
values,
|
|
152
|
+
positionals
|
|
165
153
|
};
|
|
166
154
|
};
|
|
167
155
|
var { error, values, positionals } = tryParse({
|
|
@@ -192,11 +180,12 @@ var usagePrompt = [
|
|
|
192
180
|
" expand-my-type [options] <source-file> <expression>",
|
|
193
181
|
"",
|
|
194
182
|
"Options:",
|
|
195
|
-
" -h, --help
|
|
196
|
-
" -p, --prettify
|
|
197
|
-
" -P, --no-prettify
|
|
198
|
-
" -c, --tsconfig <file
|
|
199
|
-
].join(
|
|
183
|
+
" -h, --help\t\t\tShow this help message",
|
|
184
|
+
" -p, --prettify\t\tPrettify the output (default)",
|
|
185
|
+
" -P, --no-prettify\t\tDo not prettify the output",
|
|
186
|
+
" -c, --tsconfig <file>\t\tUse the specified tsconfig.json file"
|
|
187
|
+
].join(`
|
|
188
|
+
`);
|
|
200
189
|
if (positionals.length !== 2) {
|
|
201
190
|
console.error(usagePrompt);
|
|
202
191
|
process.exit(1);
|
|
@@ -210,11 +199,7 @@ var { prettify, tsconfig: tsConfigFileName } = values;
|
|
|
210
199
|
var tsParsedCommandLine;
|
|
211
200
|
if (tsConfigFileName) {
|
|
212
201
|
const configFile = ts3.readConfigFile(tsConfigFileName, ts3.sys.readFile);
|
|
213
|
-
const compilerOptions = ts3.parseJsonConfigFileContent(
|
|
214
|
-
configFile.config,
|
|
215
|
-
ts3.sys,
|
|
216
|
-
"./"
|
|
217
|
-
);
|
|
202
|
+
const compilerOptions = ts3.parseJsonConfigFileContent(configFile.config, ts3.sys, "./");
|
|
218
203
|
tsParsedCommandLine = compilerOptions;
|
|
219
204
|
}
|
|
220
205
|
var result = await expandMyType({
|
|
@@ -226,4 +211,6 @@ var result = await expandMyType({
|
|
|
226
211
|
tsCompilerOptions: tsParsedCommandLine?.options
|
|
227
212
|
});
|
|
228
213
|
console.log(result);
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiLCAiLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uczxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0ge1xuICBbUCBpbiBLXTogVFtQXSBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gVFtQXSA6IG5ldmVyO1xufTtcbmV4cG9ydCB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID0gUGFydGlhbDxcbiAgRXh0cmFjdEZ1bmN0aW9uczx0cy5Db21waWxlckhvc3Q+XG4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IGF1Z21lbnRzIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUgZm9yIGV4cGFuZGluZyBhIHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc291cmNlRmlsZU5hbWUgTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gYXVnbWVudC5cbiAqIEBwYXJhbSBjb2RlVG9BZGQgVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgQSByZWNvcmQgb2YgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIGluIHRoZSBjb21waWxlciBob3N0LiBVc2VmdWwgZm9yIG1vY2tpbmcuXG4gKiBAcmV0dXJucyBBIGN1c3RvbSBjb21waWxlciBob3N0IHRoYXQgcmV0dXJucyBhbiBhdWdtZW50ZWQgc291cmNlIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCB0byBleHBhbmQgdGhlIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCA9IChcbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZyxcbiAgY29kZVRvQWRkOiBzdHJpbmcsXG4gIGNvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucyxcbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbikgPT4ge1xuICBjb25zdCBjdXN0b21Db21waWxlckhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3QoY29tcGlsZXJPcHRpb25zID8/IHt9LCB0cnVlKTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgPz8ge30pKSB7XG4gICAgY3VzdG9tQ29tcGlsZXJIb3N0W2tleV0gPSBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyFba2V5XTtcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsUmVhZEZpbGUgPSBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGU7XG5cbiAgY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlID0gKGZpbGVOYW1lKSA9PiB7XG4gICAgY29uc3QgY29udGVudHMgPSBvcmlnaW5hbFJlYWRGaWxlKGZpbGVOYW1lKTtcblxuICAgIGlmIChjb250ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgaWYgKGZpbGVOYW1lICE9PSBzb3VyY2VGaWxlTmFtZSkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtjb2RlVG9BZGR9XFxuJHtjb250ZW50c31gO1xuICB9O1xuXG4gIHJldHVybiBjdXN0b21Db21waWxlckhvc3Q7XG59O1xuIiwgImltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBQcmV0dGllck9wdGlvbnMgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJwcmV0dGllclwiO1xuXG5jb25zdCBpZGVudGlmaWVyUHJlZml4ID0gXCJfX0VYUEFORF9NWV9UWVBFX19cIjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUV4cGFuZENvZGVCbG9jayA9ICh0eXBlRXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9ibG9iL21haW4vdGVzdHMvY2FzZXMvY29tcGlsZXIvY29tcHV0ZWRUeXBlc0tleW9mTm9JbmRleFNpZ25hdHVyZVR5cGUudHNcbiAgcmV0dXJuIGB0eXBlICR7aWRlbnRpZmllclByZWZpeH1SZXN1bHQgPSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPCR7aWRlbnRpZmllclByZWZpeH1FeHByZXNzaW9uPjtcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHByZXNzaW9uID0gJHt0eXBlRXhwcmVzc2lvbn07XG5cbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VD4gPSBcbiAgICAgICAgVCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSID8gKC4uLmFyZ3M6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8QT4pID0+ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8Uj5cbiAgICAgIDogVCBleHRlbmRzIFByb21pc2U8aW5mZXIgVT4gPyBQcm9taXNlPCR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRUeXBlQXJndW1lbnQ8VT4+XG4gICAgICA6IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBzdHJpbmcgPyAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFRbS10+IDogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUW0tdPjsgfSAmIHt9O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kVHlwZUFyZ3VtZW50PFQ+ID0gW1QgJiB7fV0gZXh0ZW5kcyBbbmV2ZXJdID8gVCA6IFQgJiB7fSBleHRlbmRzIHZvaWQgPyBUIDogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUICYge30+O1xuXG4gICAgLy8gRm9yY2VzIGEgdW5pb24gb2Ygc3RyaW5nIGxpdGVyYWwgdHlwZXMgdG8gYmUgZXhwYW5kZWRcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRTdHJpbmc8VCBleHRlbmRzIHN0cmluZz4gPSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTwke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUPj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFxcYFxcJHtUfV9cXGAgZXh0ZW5kcyBzdHJpbmcgPyBcXGBcXCR7VH1fXFxgIDogbmV2ZXI7XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgZXh0ZW5kcyBcXGBcXCR7aW5mZXIgVX1fXFxgID8gVSA6IG5ldmVyO2A7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VHlwZUV4cHJlc3Npb24gPSBhc3luYyAoXG4gIGNvZGU6IHN0cmluZyxcbiAgcHJldHRpZXJPcHRpb25zPzogUHJldHRpZXJPcHRpb25zLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgYXdhaXQgZm9ybWF0KFxuICAgICAgYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9ICR7Y29kZX1gLFxuICAgICAgcHJldHRpZXJPcHRpb25zID8/IHtcbiAgICAgICAgcGFyc2VyOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgc2VtaTogZmFsc2UsXG4gICAgICB9LFxuICAgIClcbiAgKVxuICAgIC50cmltKClcbiAgICAuc3Vic3RyaW5nKGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSBgLmxlbmd0aCk7XG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIE5vZGUgaW4gd2hpY2ggdHlwZSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgdHlwZSBpZGVudGlmaWVyIG5vZGUuXG4gKi9cbmNvbnN0IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSA9IChub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlLmdldENoaWxkQ291bnQoKSA9PSAwKSB7XG4gICAgaWYgKCF0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gU2luY2Ugd2UgcHV0IHRoZSBfXzxJREVOVElGSUVSPl9fIHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgICAvLyBmaWxlLCB3ZSBjYW4gcmV0dXJuIHRoZSBmaXJzdCBpZGVudGlmaWVyIHdlIGZpbmQuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nXG4gICAqL1xuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCBzb3VyY2UgdGV4dCB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZE15VHlwZU9wdGlvbnMgPVxuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnNcbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcblxuLyoqXG4gKiBFeHBhbmRzIGEgVHlwZVNjcmlwdCB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRoZSBleHBhbmRlZCB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUob3B0aW9uczogRXhwYW5kTXlUeXBlT3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlRXhwcmVzc2lvbi50cmltKCkgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gXCJuZXZlclwiO1xuICB9XG5cbiAgaWYgKFwic291cmNlVGV4dFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCBkdW1teUZpbGVOYW1lID0gXCJleHBhbmQtbXktdHlwZS1kdW1teS50c1wiO1xuXG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogZHVtbXlGaWxlTmFtZSxcbiAgICAgIHR5cGVFeHByZXNzaW9uOiBvcHRpb25zLnR5cGVFeHByZXNzaW9uLFxuICAgICAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM6IHtcbiAgICAgICAgcmVhZEZpbGUoZmlsZU5hbWU6IHN0cmluZykge1xuICAgICAgICAgIGlmIChwYXRoLmJhc2VuYW1lKGZpbGVOYW1lKSA9PT0gZHVtbXlGaWxlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc291cmNlVGV4dDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHMuc3lzLnJlYWRGaWxlKGZpbGVOYW1lKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0c0NvbXBpbGVyT3B0aW9uczogb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyxcbiAgICAgIHByZXR0aWZ5OiBvcHRpb25zLnByZXR0aWZ5LFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIHN0cmljdE51bGxDaGVja3M6IHRydWUsXG4gICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dKczogdHJ1ZSxcbiAgfTtcblxuICBpZiAoIXRzQ29tcGlsZXJPcHRpb25zLnN0cmljdE51bGxDaGVja3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJzdHJpY3ROdWxsQ2hlY2tzIG11c3QgYmUgZW5hYmxlZCFcIik7XG4gIH1cblxuICBjb25zdCBjb21waWxlckhvc3QgPSBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QoXG4gICAgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSxcbiAgICBjcmVhdGVFeHBhbmRDb2RlQmxvY2sob3B0aW9ucy50eXBlRXhwcmVzc2lvbiksXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgb3B0aW9ucy5jb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCByZXN1bHRJZGVudGlmaWVyTm9kZSA9IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFyZXN1bHRJZGVudGlmaWVyTm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5vZGUgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IGV4cGFuZGVkVHlwZVN0cmluZyA9IHR5cGVDaGVja2VyLnR5cGVUb1N0cmluZyhcbiAgICB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihyZXN1bHRJZGVudGlmaWVyTm9kZSksXG4gICAgdW5kZWZpbmVkLFxuICAgIHRzLlR5cGVGb3JtYXRGbGFncy5Ob2RlQnVpbGRlckZsYWdzTWFzayxcbiAgKTtcblxuICBpZiAob3B0aW9ucy5wcmV0dGlmeSAmJiBvcHRpb25zLnByZXR0aWZ5LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihleHBhbmRlZFR5cGVTdHJpbmcsIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMpO1xufVxuIiwgIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IGV4cGFuZE15VHlwZSB9IGZyb20gXCIuL2luZGV4LnRzXCI7XG5pbXBvcnQgeyBwYXJzZUFyZ3MsIHR5cGUgUGFyc2VBcmdzQ29uZmlnIH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgVmFsdWVzID0ge1xuICBoZWxwPzogYm9vbGVhbjtcbiAgcHJldHRpZnk6IGJvb2xlYW47XG4gIHRzY29uZmlnPzogc3RyaW5nO1xufTtcblxuY29uc3QgdHJ5UGFyc2UgPSA8XG4gIFZhbHVlcyBleHRlbmRzIFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgc3RyaW5nIHwgYm9vbGVhbiB8IEFycmF5PHN0cmluZyB8IGJvb2xlYW4+IHwgdW5kZWZpbmVkXG4gID4sXG4gIE9wdGlvbnMgZXh0ZW5kcyBQYXJzZUFyZ3NDb25maWdbXCJvcHRpb25zXCJdID0gUGFyc2VBcmdzQ29uZmlnW1wib3B0aW9uc1wiXSxcbj4oXG4gIG9wdGlvbnM6IE9wdGlvbnMsXG4pOiB7IGVycm9yPzogRXJyb3I7IHZhbHVlczogVmFsdWVzOyBwb3NpdGlvbmFsczogc3RyaW5nW10gfSA9PiB7XG4gIGxldCByZXN1bHQ6IFJldHVyblR5cGU8dHlwZW9mIHBhcnNlQXJncz47XG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gcGFyc2VBcmdzKHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICB0b2tlbnM6IHRydWUsXG4gICAgICBhbGxvd1Bvc2l0aW9uYWxzOiB0cnVlLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcixcbiAgICAgIHZhbHVlczoge30gYXMgVmFsdWVzLFxuICAgICAgcG9zaXRpb25hbHM6IFtdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB7IHRva2VucywgdmFsdWVzLCBwb3NpdGlvbmFscyB9ID0gcmVzdWx0O1xuXG4gIC8vIFJlcHJvY2VzcyB0aGUgb3B0aW9uIHRva2VucyBhbmQgb3ZlcndyaXRlIHRoZSByZXR1cm5lZCB2YWx1ZXMuXG4gIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zID8/IFtdKSB7XG4gICAgaWYgKHRva2VuLmtpbmQgPT09IFwib3B0aW9uLXRlcm1pbmF0b3JcIiB8fCB0b2tlbi5raW5kID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLm5hbWUuc3RhcnRzV2l0aChcIm5vLVwiKSkge1xuICAgICAgLy8gU3RvcmUgZm9vOmZhbHNlIGZvciAtLW5vLWZvb1xuICAgICAgY29uc3QgcG9zaXRpdmVOYW1lID0gdG9rZW4ubmFtZS5zbGljZShcIm5vLVwiLmxlbmd0aCk7XG4gICAgICB2YWx1ZXNbcG9zaXRpdmVOYW1lXSA9IGZhbHNlO1xuICAgICAgZGVsZXRlIHZhbHVlc1t0b2tlbi5uYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVzYXZlIHZhbHVlIHNvIGxhc3Qgb25lIHdpbnMgaWYgYm90aCAtLWZvbyBhbmQgLS1uby1mb28uXG4gICAgICB2YWx1ZXNbdG9rZW4ubmFtZV0gPSB0b2tlbi52YWx1ZSA/PyB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZXM6IHZhbHVlcyBhcyBWYWx1ZXMsXG4gICAgcG9zaXRpb25hbHMsXG4gIH07XG59O1xuXG5jb25zdCB7IGVycm9yLCB2YWx1ZXMsIHBvc2l0aW9uYWxzIH0gPSB0cnlQYXJzZTxWYWx1ZXM+KHtcbiAgaGVscDoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIHNob3J0OiBcImhcIixcbiAgfSxcbiAgcHJldHRpZnk6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBzaG9ydDogXCJwXCIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgXCJuby1wcmV0dGlmeVwiOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgc2hvcnQ6IFwiUFwiLFxuICB9LFxuICB0c2NvbmZpZzoge1xuICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgc2hvcnQ6IFwiY1wiLFxuICB9LFxufSk7XG5cbmlmIChlcnJvcikge1xuICBjb25zb2xlLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmNvbnN0IHVzYWdlUHJvbXB0ID0gW1xuICBcIlVzYWdlOlwiLFxuICBcIiAgZXhwYW5kLW15LXR5cGUgW29wdGlvbnNdIDxzb3VyY2UtZmlsZT4gPGV4cHJlc3Npb24+XCIsXG4gIFwiXCIsXG4gIFwiT3B0aW9uczpcIixcbiAgXCIgIC1oLCAtLWhlbHBcXHRcXHRcXHRTaG93IHRoaXMgaGVscCBtZXNzYWdlXCIsXG4gIFwiICAtcCwgLS1wcmV0dGlmeVxcdFxcdFByZXR0aWZ5IHRoZSBvdXRwdXQgKGRlZmF1bHQpXCIsXG4gIFwiICAtUCwgLS1uby1wcmV0dGlmeVxcdFxcdERvIG5vdCBwcmV0dGlmeSB0aGUgb3V0cHV0XCIsXG4gIFwiICAtYywgLS10c2NvbmZpZyA8ZmlsZT5cXHRcXHRVc2UgdGhlIHNwZWNpZmllZCB0c2NvbmZpZy5qc29uIGZpbGVcIixcbl0uam9pbihcIlxcblwiKTtcblxuaWYgKHBvc2l0aW9uYWxzLmxlbmd0aCAhPT0gMikge1xuICBjb25zb2xlLmVycm9yKHVzYWdlUHJvbXB0KTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5pZiAodmFsdWVzLmhlbHApIHtcbiAgY29uc29sZS5lcnJvcih1c2FnZVByb21wdCk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn1cblxuY29uc3QgW3NvdXJjZUZpbGVOYW1lLCB0eXBlRXhwcmVzc2lvbl0gPSBwb3NpdGlvbmFscztcbmNvbnN0IHsgcHJldHRpZnksIHRzY29uZmlnOiB0c0NvbmZpZ0ZpbGVOYW1lIH0gPSB2YWx1ZXM7XG5cbmxldCB0c1BhcnNlZENvbW1hbmRMaW5lOiB0cy5QYXJzZWRDb21tYW5kTGluZSB8IHVuZGVmaW5lZDtcblxuaWYgKHRzQ29uZmlnRmlsZU5hbWUpIHtcbiAgY29uc3QgY29uZmlnRmlsZSA9IHRzLnJlYWRDb25maWdGaWxlKHRzQ29uZmlnRmlsZU5hbWUsIHRzLnN5cy5yZWFkRmlsZSk7XG4gIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KFxuICAgIGNvbmZpZ0ZpbGUuY29uZmlnLFxuICAgIHRzLnN5cyxcbiAgICBcIi4vXCIsXG4gICk7XG5cbiAgdHNQYXJzZWRDb21tYW5kTGluZSA9IGNvbXBpbGVyT3B0aW9ucztcbn1cblxuY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhwYW5kTXlUeXBlKHtcbiAgc291cmNlRmlsZU5hbWUsXG4gIHR5cGVFeHByZXNzaW9uLFxuICBwcmV0dGlmeToge1xuICAgIGVuYWJsZWQ6IHByZXR0aWZ5LFxuICB9LFxuICB0c0NvbXBpbGVyT3B0aW9uczogdHNQYXJzZWRDb21tYW5kTGluZT8ub3B0aW9ucyxcbn0pO1xuXG5jb25zb2xlLmxvZyhyZXN1bHQpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7O0FBQUEsT0FBTyxRQUFRO0FBa0JSLElBQU0sOEJBQThCLENBQ3pDQSxpQkFDQSxXQUNBLGlCQUNBLGtDQUNHO0FBQ0gsUUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsbUJBQW1CLENBQUMsR0FBRyxJQUFJO0FBQzVFLGFBQVcsT0FBTyxPQUFPLEtBQUssaUNBQWlDLENBQUMsQ0FBQyxHQUFHO0FBQ2xFLHVCQUFt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Z0JBQWdCLGNBQWMsSUFBSTtBQUN6QyxJQUFNLEVBQUUsVUFBVSxVQUFVLGlCQUFpQixJQUFJO0FBRWpELElBQUk7QUFFSixJQUFJLGtCQUFrQjtBQUNwQixRQUFNLGFBQWFKLElBQUcsZUFBZSxrQkFBa0JBLElBQUcsSUFBSSxRQUFRO0FBQ3RFLFFBQU0sa0JBQWtCQSxJQUFHO0FBQUEsSUFDekIsV0FBVztBQUFBLElBQ1hBLElBQUc7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUVBLHdCQUFzQjtBQUN4QjtBQUVBLElBQU0sU0FBUyxNQUFNLGFBQWE7QUFBQSxFQUNoQztBQUFBLEVBQ0E7QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxtQkFBbUIscUJBQXFCO0FBQzFDLENBQUM7QUFFRCxRQUFRLElBQUksTUFBTTsiLAogICJuYW1lcyI6IFsic291cmNlRmlsZU5hbWUiLCAidHlwZUV4cHJlc3Npb24iLCAidHMiLCAidHMiLCAicmVzdWx0IiwgImVycm9yIiwgInZhbHVlcyIsICJwb3NpdGlvbmFscyJdCn0K
|
|
214
|
+
|
|
215
|
+
//# debugId=CDA842588C4AEC4564756E2164756E21
|
|
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+XCIsXG4gIFwiXCIsXG4gIFwiT3B0aW9uczpcIixcbiAgXCIgIC1oLCAtLWhlbHBcXHRcXHRcXHRTaG93IHRoaXMgaGVscCBtZXNzYWdlXCIsXG4gIFwiICAtcCwgLS1wcmV0dGlmeVxcdFxcdFByZXR0aWZ5IHRoZSBvdXRwdXQgKGRlZmF1bHQpXCIsXG4gIFwiICAtUCwgLS1uby1wcmV0dGlmeVxcdFxcdERvIG5vdCBwcmV0dGlmeSB0aGUgb3V0cHV0XCIsXG4gIFwiICAtYywgLS10c2NvbmZpZyA8ZmlsZT5cXHRcXHRVc2UgdGhlIHNwZWNpZmllZCB0c2NvbmZpZy5qc29uIGZpbGVcIixcbl0uam9pbihcIlxcblwiKTtcblxuaWYgKHBvc2l0aW9uYWxzLmxlbmd0aCAhPT0gMikge1xuICBjb25zb2xlLmVycm9yKHVzYWdlUHJvbXB0KTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5pZiAodmFsdWVzLmhlbHApIHtcbiAgY29uc29sZS5lcnJvcih1c2FnZVByb21wdCk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn1cblxuY29uc3QgW3NvdXJjZUZpbGVOYW1lLCB0eXBlRXhwcmVzc2lvbl0gPSBwb3NpdGlvbmFscztcbmNvbnN0IHsgcHJldHRpZnksIHRzY29uZmlnOiB0c0NvbmZpZ0ZpbGVOYW1lIH0gPSB2YWx1ZXM7XG5cbmxldCB0c1BhcnNlZENvbW1hbmRMaW5lOiB0cy5QYXJzZWRDb21tYW5kTGluZSB8IHVuZGVmaW5lZDtcblxuaWYgKHRzQ29uZmlnRmlsZU5hbWUpIHtcbiAgY29uc3QgY29uZmlnRmlsZSA9IHRzLnJlYWRDb25maWdGaWxlKHRzQ29uZmlnRmlsZU5hbWUsIHRzLnN5cy5yZWFkRmlsZSk7XG4gIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KFxuICAgIGNvbmZpZ0ZpbGUuY29uZmlnLFxuICAgIHRzLnN5cyxcbiAgICBcIi4vXCIsXG4gICk7XG5cbiAgdHNQYXJzZWRDb21tYW5kTGluZSA9IGNvbXBpbGVyT3B0aW9ucztcbn1cblxuY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhwYW5kTXlUeXBlKHtcbiAgc291cmNlRmlsZU5hbWUsXG4gIHR5cGVFeHByZXNzaW9uLFxuICBwcmV0dGlmeToge1xuICAgIGVuYWJsZWQ6IHByZXR0aWZ5LFxuICB9LFxuICB0c0NvbXBpbGVyT3B0aW9uczogdHNQYXJzZWRDb21tYW5kTGluZT8ub3B0aW9ucyxcbn0pO1xuXG5jb25zb2xlLmxvZyhyZXN1bHQpO1xuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7O0FBQUE7QUFrQk8sSUFBTSw4QkFBOEIsQ0FDekMsZ0JBQ0EsV0FDQSxpQkFDQSxrQ0FDRztBQUFBLEVBQ0gsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsbUJBQW1CLENBQUMsR0FBRyxJQUFJO0FBQUEsRUFDNUUsTUFBTSxZQUFZLGlDQUFpQyxDQUFDO0FBQUEsRUFFcEQsV0FBVyxPQUFPLE9BQU8sS0FBSyxTQUFTLEdBRXBDO0FBQUEsSUFDRCxNQUFNLFdBQVcsVUFBVTtBQUFBLElBRTNCLElBQUksVUFBVTtBQUFBLE1BQ1gsbUJBQTBELE9BQ3pEO0FBQUEsSUFDSjtBQUFBLEVBQ0Y7QUFBQSxFQUVBLE1BQU0sbUJBQW1CLG1CQUFtQjtBQUFBLEVBRTVDLG1CQUFtQixXQUFXLENBQUMsYUFBYTtBQUFBLElBQzFDLE1BQU0sV0FBVyxpQkFBaUIsUUFBUTtBQUFBLElBRTFDLElBQUksYUFBYSxXQUFXO0FBQUEsTUFDMUIsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLElBQUksYUFBYSxnQkFBZ0I7QUFBQSxNQUMvQixPQUFPO0FBQUEsSUFDVDtBQUFBLElBRUEsT0FBTyxHQUFHO0FBQUEsRUFBYztBQUFBO0FBQUEsRUFHMUIsT0FBTztBQUFBOzs7QUNyRFQ7QUFFQSxJQUFNLG1CQUFtQjtBQUVsQixJQUFNLHdCQUF3QixDQUFDLG1CQUEyQjtBQUFBLEVBRS9ELE9BQU8sUUFBUSw0QkFBNEIsMEJBQTBCO0FBQUEsV0FDNUQsZ0NBQWdDO0FBQUE7QUFBQSxXQUVoQztBQUFBLDhEQUNtRCxpQ0FBaUM7QUFBQSwrQ0FDaEQ7QUFBQSxrREFDRyx3Q0FBd0M7QUFBQTtBQUFBLFdBRS9FLG9HQUFvRztBQUFBO0FBQUE7QUFBQSxXQUdwRyxvREFBb0Qsb0NBQW9DO0FBQUEsV0FDeEY7QUFBQSxXQUNBO0FBQUE7QUFHSixJQUFNLHVCQUF1QixPQUNsQyxNQUNBLG9CQUNHO0FBQUEsRUFDSCxRQUNFLE1BQU0sT0FDSixRQUFRLHNCQUFzQixRQUM5QixtQkFBbUI7QUFBQSxJQUNqQixRQUFRO0FBQUEsSUFDUixNQUFNO0FBQUEsRUFDUixDQUNGLEdBRUMsS0FBSyxFQUNMLFVBQVUsUUFBUSxzQkFBc0IsTUFBTTtBQUFBOzs7QUMvQm5EO0FBRUE7QUFRQSxJQUFNLDJCQUEyQixDQUFDLFNBQXVDO0FBQUEsRUFDdkUsSUFBSSxLQUFLLGNBQWMsS0FBSyxHQUFHO0FBQUEsSUFDN0IsSUFBSSxDQUFDLElBQUcsYUFBYSxJQUFJLEdBQUc7QUFBQSxNQUMxQjtBQUFBLElBQ0Y7QUFBQSxJQUlBLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFFQSxPQUFPLElBQUcsYUFBYSxNQUFNLHdCQUF3QjtBQUFBO0FBaUV2RCxlQUFzQixZQUFZLENBQUMsU0FBOEI7QUFBQSxFQUMvRCxJQUFJLFFBQVEsZUFBZSxLQUFLLE1BQU0sSUFBSTtBQUFBLElBQ3hDLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFFQSxJQUFJLGdCQUFnQixTQUFTO0FBQUEsSUFDM0IsTUFBTSxnQkFBZ0I7QUFBQSxJQUV0QixPQUFPLGFBQWE7QUFBQSxNQUNsQixnQkFBZ0I7QUFBQSxNQUNoQixnQkFBZ0IsUUFBUTtBQUFBLE1BQ3hCLCtCQUErQjtBQUFBLFFBQzdCLFFBQVEsQ0FBQyxVQUFrQjtBQUFBLFVBQ3pCLElBQUksS0FBSyxTQUFTLFFBQVEsTUFBTSxlQUFlO0FBQUEsWUFDN0MsT0FBTyxRQUFRO0FBQUEsVUFDakI7QUFBQSxVQUVBLE9BQU8sSUFBRyxJQUFJLFNBQVMsUUFBUTtBQUFBO0FBQUEsTUFFbkM7QUFBQSxNQUNBLG1CQUFtQixRQUFRO0FBQUEsTUFDM0IsVUFBVSxRQUFRO0FBQUEsSUFDcEIsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQUVBLE1BQU0seUJBQXlCLEtBQUssUUFBUSxRQUFRLGNBQWM7QUFBQSxFQUVsRSxNQUFNLG9CQUFvQixRQUFRLHFCQUFxQjtBQUFBLElBQ3JELFFBQVE7QUFBQSxJQUVSLGtCQUFrQjtBQUFBLElBQ2xCLDhCQUE4QjtBQUFBLElBQzlCLDBCQUEwQjtBQUFBLElBQzFCLDRCQUE0QjtBQUFBLElBQzVCLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFFQSxJQUFJLENBQUMsa0JBQWtCLGtCQUFrQjtBQUFBLElBQ3ZDLE1BQU0sSUFBSSxNQUFNLG1DQUFtQztBQUFBLEVBQ3JEO0FBQUEsRUFFQSxNQUFNLGVBQWUsNEJBQ25CLHdCQUNBLHNCQUFzQixRQUFRLGNBQWMsR0FDNUMsbUJBQ0EsUUFBUSw2QkFDVjtBQUFBLEVBRUEsTUFBTSxVQUFVLElBQUcsY0FDakIsQ0FBQyxzQkFBc0IsR0FDdkIsbUJBQ0EsWUFDRjtBQUFBLEVBRUEsTUFBTSxhQUFhLFFBQVEsY0FBYyxzQkFBc0I7QUFBQSxFQUMvRCxJQUFJLENBQUMsWUFBWTtBQUFBLElBQ2YsTUFBTSxJQUFJLE1BQU0sd0JBQXdCO0FBQUEsRUFDMUM7QUFBQSxFQUVBLE1BQU0sdUJBQXVCLHlCQUF5QixVQUFVO0FBQUEsRUFDaEUsSUFBSSxDQUFDLHNCQUFzQjtBQUFBLElBQ3pCLE1BQU0sSUFBSSxNQUFNLGdCQUFnQjtBQUFBLEVBQ2xDO0FBQUEsRUFFQSxNQUFNLGNBQWMsUUFBUSxlQUFlO0FBQUEsRUFDM0MsTUFBTSxxQkFBcUIsWUFBWSxhQUNyQyxZQUFZLGtCQUFrQixvQkFBb0IsR0FDbEQsV0FDQSxJQUFHLGdCQUFnQixvQkFDckI7QUFBQSxFQUVBLElBQUksUUFBUSxZQUFZLFFBQVEsU0FBUyxZQUFZLE9BQU87QUFBQSxJQUMxRCxPQUFPO0FBQUEsRUFDVDtBQUFBLEVBRUEsT0FBTyxxQkFBcUIsb0JBQW9CLFFBQVEsVUFBVSxPQUFPO0FBQUE7OztBQ3JLM0U7QUFDQTtBQVFBLElBQU0sV0FBVyxDQU9mLFlBQzZEO0FBQUEsRUFDN0QsSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLElBQ0YsU0FBUyxVQUFVO0FBQUEsTUFDakI7QUFBQSxNQUNBLFFBQVE7QUFBQSxNQUNSLGtCQUFrQjtBQUFBLElBQ3BCLENBQUM7QUFBQSxJQUNELE9BQU8sT0FBTztBQUFBLElBQ2QsT0FBTztBQUFBLE1BQ0wsT0FBTyxpQkFBaUIsUUFBUSxRQUFRLElBQUksTUFBTSxPQUFPLEtBQUssQ0FBQztBQUFBLE1BQy9ELFFBQVEsQ0FBQztBQUFBLE1BQ1QsYUFBYSxDQUFDO0FBQUEsSUFDaEI7QUFBQTtBQUFBLEVBR0YsUUFBUSxRQUFRLFFBQVEsZ0JBQWdCO0FBQUEsRUFHeEMsV0FBVyxTQUFTLFVBQVUsQ0FBQyxHQUFHO0FBQUEsSUFDaEMsSUFBSSxNQUFNLFNBQVMsdUJBQXVCLE1BQU0sU0FBUyxjQUFjO0FBQUEsTUFDckU7QUFBQSxJQUNGO0FBQUEsSUFFQSxJQUFJLE1BQU0sS0FBSyxXQUFXLEtBQUssR0FBRztBQUFBLE1BRWhDLE1BQU0sZUFBZSxNQUFNLEtBQUssTUFBTSxNQUFNLE1BQU07QUFBQSxNQUNsRCxPQUFPLGdCQUFnQjtBQUFBLE1BQ3ZCLE9BQU8sT0FBTyxNQUFNO0FBQUEsSUFDdEIsRUFBTztBQUFBLE1BRUwsT0FBTyxNQUFNLFFBQVEsTUFBTSxTQUFTO0FBQUE7QUFBQSxFQUV4QztBQUFBLEVBRUEsT0FBTztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1A7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUFBO0FBR0YsTUFBUSxPQUFPLFFBQVEsZ0JBQWdCLFNBQWlCO0FBQUEsRUFDdEQsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLE1BQU07QUFBQSxJQUNOLE9BQU87QUFBQSxJQUNQLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxlQUFlO0FBQUEsSUFDYixNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLEVBQ1Q7QUFDRixDQUFDO0FBRUQsSUFBSSxPQUFPO0FBQUEsRUFDVCxRQUFRLE1BQU0sTUFBTSxPQUFPO0FBQUEsRUFDM0IsUUFBUSxLQUFLLENBQUM7QUFDaEI7QUFFQSxJQUFNLGNBQWM7QUFBQSxFQUNsQjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRixFQUFFLEtBQUs7QUFBQSxDQUFJO0FBRVgsSUFBSSxZQUFZLFdBQVcsR0FBRztBQUFBLEVBQzVCLFFBQVEsTUFBTSxXQUFXO0FBQUEsRUFDekIsUUFBUSxLQUFLLENBQUM7QUFDaEI7QUFFQSxJQUFJLE9BQU8sTUFBTTtBQUFBLEVBQ2YsUUFBUSxNQUFNLFdBQVc7QUFBQSxFQUN6QixRQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLEtBQU8sZ0JBQWdCLGtCQUFrQjtBQUN6QyxNQUFRLFVBQVUsVUFBVSxxQkFBcUI7QUFFakQsSUFBSTtBQUVKLElBQUksa0JBQWtCO0FBQUEsRUFDcEIsTUFBTSxhQUFhLElBQUcsZUFBZSxrQkFBa0IsSUFBRyxJQUFJLFFBQVE7QUFBQSxFQUN0RSxNQUFNLGtCQUFrQixJQUFHLDJCQUN6QixXQUFXLFFBQ1gsSUFBRyxLQUNILElBQ0Y7QUFBQSxFQUVBLHNCQUFzQjtBQUN4QjtBQUVBLElBQU0sU0FBUyxNQUFNLGFBQWE7QUFBQSxFQUNoQztBQUFBLEVBQ0E7QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxtQkFBbUIscUJBQXFCO0FBQzFDLENBQUM7QUFFRCxRQUFRLElBQUksTUFBTTsiLAogICJkZWJ1Z0lkIjogIkNEQTg0MjU4OEM0QUVDNDU2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
package/dist/index.cjs
CHANGED
|
@@ -1,49 +1,87 @@
|
|
|
1
1
|
var __create = Object.create;
|
|
2
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
function __accessProp(key) {
|
|
8
|
+
return this[key];
|
|
9
|
+
}
|
|
10
|
+
var __toESMCache_node;
|
|
11
|
+
var __toESMCache_esm;
|
|
12
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
13
|
+
var canCache = mod != null && typeof mod === "object";
|
|
14
|
+
if (canCache) {
|
|
15
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
16
|
+
var cached = cache.get(mod);
|
|
17
|
+
if (cached)
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
20
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
21
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
22
|
+
for (let key of __getOwnPropNames(mod))
|
|
23
|
+
if (!__hasOwnProp.call(to, key))
|
|
24
|
+
__defProp(to, key, {
|
|
25
|
+
get: __accessProp.bind(mod, key),
|
|
26
|
+
enumerable: true
|
|
27
|
+
});
|
|
28
|
+
if (canCache)
|
|
29
|
+
cache.set(mod, to);
|
|
30
|
+
return to;
|
|
10
31
|
};
|
|
11
|
-
var
|
|
32
|
+
var __toCommonJS = (from) => {
|
|
33
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
34
|
+
if (entry)
|
|
35
|
+
return entry;
|
|
36
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
12
37
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (
|
|
14
|
-
if (!__hasOwnProp.call(
|
|
15
|
-
__defProp(
|
|
38
|
+
for (var key of __getOwnPropNames(from))
|
|
39
|
+
if (!__hasOwnProp.call(entry, key))
|
|
40
|
+
__defProp(entry, key, {
|
|
41
|
+
get: __accessProp.bind(from, key),
|
|
42
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
43
|
+
});
|
|
16
44
|
}
|
|
17
|
-
|
|
45
|
+
__moduleCache.set(from, entry);
|
|
46
|
+
return entry;
|
|
47
|
+
};
|
|
48
|
+
var __moduleCache;
|
|
49
|
+
var __returnValue = (v) => v;
|
|
50
|
+
function __exportSetter(name, newValue) {
|
|
51
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
52
|
+
}
|
|
53
|
+
var __export = (target, all) => {
|
|
54
|
+
for (var name in all)
|
|
55
|
+
__defProp(target, name, {
|
|
56
|
+
get: all[name],
|
|
57
|
+
enumerable: true,
|
|
58
|
+
configurable: true,
|
|
59
|
+
set: __exportSetter.bind(all, name)
|
|
60
|
+
});
|
|
18
61
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
62
|
|
|
29
63
|
// src/index.ts
|
|
30
|
-
var
|
|
31
|
-
__export(
|
|
64
|
+
var exports_src = {};
|
|
65
|
+
__export(exports_src, {
|
|
32
66
|
expandMyType: () => expandMyType
|
|
33
67
|
});
|
|
34
|
-
module.exports = __toCommonJS(
|
|
68
|
+
module.exports = __toCommonJS(exports_src);
|
|
35
69
|
|
|
36
70
|
// src/augmenter-compiler-host.ts
|
|
37
|
-
var import_typescript = __toESM(require("typescript")
|
|
71
|
+
var import_typescript = __toESM(require("typescript"));
|
|
38
72
|
var createAugmenterCompilerHost = (sourceFileName, codeToAdd, compilerOptions, compilerHostFunctionOverrides) => {
|
|
39
73
|
const customCompilerHost = import_typescript.default.createCompilerHost(compilerOptions ?? {}, true);
|
|
40
|
-
|
|
41
|
-
|
|
74
|
+
const overrides = compilerHostFunctionOverrides ?? {};
|
|
75
|
+
for (const key of Object.keys(overrides)) {
|
|
76
|
+
const override = overrides[key];
|
|
77
|
+
if (override) {
|
|
78
|
+
customCompilerHost[key] = override;
|
|
79
|
+
}
|
|
42
80
|
}
|
|
43
81
|
const originalReadFile = customCompilerHost.readFile;
|
|
44
82
|
customCompilerHost.readFile = (fileName) => {
|
|
45
83
|
const contents = originalReadFile(fileName);
|
|
46
|
-
if (contents ===
|
|
84
|
+
if (contents === undefined) {
|
|
47
85
|
return contents;
|
|
48
86
|
}
|
|
49
87
|
if (fileName !== sourceFileName) {
|
|
@@ -75,22 +113,19 @@ var createExpandCodeBlock = (typeExpression) => {
|
|
|
75
113
|
type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
|
|
76
114
|
};
|
|
77
115
|
var formatTypeExpression = async (code, prettierOptions) => {
|
|
78
|
-
return (await
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
semi: false
|
|
83
|
-
}
|
|
84
|
-
)).trim().substring(`type ${identifierPrefix} = `.length);
|
|
116
|
+
return (await import_prettier.format(`type ${identifierPrefix} = ${code}`, prettierOptions ?? {
|
|
117
|
+
parser: "typescript",
|
|
118
|
+
semi: false
|
|
119
|
+
})).trim().substring(`type ${identifierPrefix} = `.length);
|
|
85
120
|
};
|
|
86
121
|
|
|
87
122
|
// src/index.ts
|
|
88
|
-
var import_node_path = __toESM(require("path")
|
|
89
|
-
var import_typescript2 = __toESM(require("typescript")
|
|
123
|
+
var import_node_path = __toESM(require("node:path"));
|
|
124
|
+
var import_typescript2 = __toESM(require("typescript"));
|
|
90
125
|
var findResultIdentifierNode = (node) => {
|
|
91
126
|
if (node.getChildCount() == 0) {
|
|
92
127
|
if (!import_typescript2.default.isIdentifier(node)) {
|
|
93
|
-
return
|
|
128
|
+
return;
|
|
94
129
|
}
|
|
95
130
|
return node;
|
|
96
131
|
}
|
|
@@ -129,17 +164,8 @@ async function expandMyType(options) {
|
|
|
129
164
|
if (!tsCompilerOptions.strictNullChecks) {
|
|
130
165
|
throw new Error("strictNullChecks must be enabled!");
|
|
131
166
|
}
|
|
132
|
-
const compilerHost = createAugmenterCompilerHost(
|
|
133
|
-
|
|
134
|
-
createExpandCodeBlock(options.typeExpression),
|
|
135
|
-
tsCompilerOptions,
|
|
136
|
-
options.compilerHostFunctionOverrides
|
|
137
|
-
);
|
|
138
|
-
const program = import_typescript2.default.createProgram(
|
|
139
|
-
[resolvedSourceFileName],
|
|
140
|
-
tsCompilerOptions,
|
|
141
|
-
compilerHost
|
|
142
|
-
);
|
|
167
|
+
const compilerHost = createAugmenterCompilerHost(resolvedSourceFileName, createExpandCodeBlock(options.typeExpression), tsCompilerOptions, options.compilerHostFunctionOverrides);
|
|
168
|
+
const program = import_typescript2.default.createProgram([resolvedSourceFileName], tsCompilerOptions, compilerHost);
|
|
143
169
|
const sourceFile = program.getSourceFile(resolvedSourceFileName);
|
|
144
170
|
if (!sourceFile) {
|
|
145
171
|
throw new Error("Source file not found!");
|
|
@@ -149,18 +175,12 @@ async function expandMyType(options) {
|
|
|
149
175
|
throw new Error("No node found!");
|
|
150
176
|
}
|
|
151
177
|
const typeChecker = program.getTypeChecker();
|
|
152
|
-
const expandedTypeString = typeChecker.typeToString(
|
|
153
|
-
typeChecker.getTypeAtLocation(resultIdentifierNode),
|
|
154
|
-
void 0,
|
|
155
|
-
import_typescript2.default.TypeFormatFlags.NodeBuilderFlagsMask
|
|
156
|
-
);
|
|
178
|
+
const expandedTypeString = typeChecker.typeToString(typeChecker.getTypeAtLocation(resultIdentifierNode), undefined, import_typescript2.default.TypeFormatFlags.NodeBuilderFlagsMask);
|
|
157
179
|
if (options.prettify && options.prettify.enabled === false) {
|
|
158
180
|
return expandedTypeString;
|
|
159
181
|
}
|
|
160
182
|
return formatTypeExpression(expandedTypeString, options.prettify?.options);
|
|
161
183
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
expandMyType
|
|
165
|
-
});
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50cyIsICIuLi9zcmMvY29kZS1nZW5lcmF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIE5vZGUgaW4gd2hpY2ggdHlwZSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgdHlwZSBpZGVudGlmaWVyIG5vZGUuXG4gKi9cbmNvbnN0IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSA9IChub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlLmdldENoaWxkQ291bnQoKSA9PSAwKSB7XG4gICAgaWYgKCF0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gU2luY2Ugd2UgcHV0IHRoZSBfXzxJREVOVElGSUVSPl9fIHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgICAvLyBmaWxlLCB3ZSBjYW4gcmV0dXJuIHRoZSBmaXJzdCBpZGVudGlmaWVyIHdlIGZpbmQuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nXG4gICAqL1xuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCBzb3VyY2UgdGV4dCB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZE15VHlwZU9wdGlvbnMgPVxuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnNcbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcblxuLyoqXG4gKiBFeHBhbmRzIGEgVHlwZVNjcmlwdCB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRoZSBleHBhbmRlZCB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUob3B0aW9uczogRXhwYW5kTXlUeXBlT3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlRXhwcmVzc2lvbi50cmltKCkgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gXCJuZXZlclwiO1xuICB9XG5cbiAgaWYgKFwic291cmNlVGV4dFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCBkdW1teUZpbGVOYW1lID0gXCJleHBhbmQtbXktdHlwZS1kdW1teS50c1wiO1xuXG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogZHVtbXlGaWxlTmFtZSxcbiAgICAgIHR5cGVFeHByZXNzaW9uOiBvcHRpb25zLnR5cGVFeHByZXNzaW9uLFxuICAgICAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM6IHtcbiAgICAgICAgcmVhZEZpbGUoZmlsZU5hbWU6IHN0cmluZykge1xuICAgICAgICAgIGlmIChwYXRoLmJhc2VuYW1lKGZpbGVOYW1lKSA9PT0gZHVtbXlGaWxlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc291cmNlVGV4dDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHMuc3lzLnJlYWRGaWxlKGZpbGVOYW1lKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0c0NvbXBpbGVyT3B0aW9uczogb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyxcbiAgICAgIHByZXR0aWZ5OiBvcHRpb25zLnByZXR0aWZ5LFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIHN0cmljdE51bGxDaGVja3M6IHRydWUsXG4gICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dKczogdHJ1ZSxcbiAgfTtcblxuICBpZiAoIXRzQ29tcGlsZXJPcHRpb25zLnN0cmljdE51bGxDaGVja3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJzdHJpY3ROdWxsQ2hlY2tzIG11c3QgYmUgZW5hYmxlZCFcIik7XG4gIH1cblxuICBjb25zdCBjb21waWxlckhvc3QgPSBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QoXG4gICAgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSxcbiAgICBjcmVhdGVFeHBhbmRDb2RlQmxvY2sob3B0aW9ucy50eXBlRXhwcmVzc2lvbiksXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgb3B0aW9ucy5jb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCByZXN1bHRJZGVudGlmaWVyTm9kZSA9IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFyZXN1bHRJZGVudGlmaWVyTm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5vZGUgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IGV4cGFuZGVkVHlwZVN0cmluZyA9IHR5cGVDaGVja2VyLnR5cGVUb1N0cmluZyhcbiAgICB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihyZXN1bHRJZGVudGlmaWVyTm9kZSksXG4gICAgdW5kZWZpbmVkLFxuICAgIHRzLlR5cGVGb3JtYXRGbGFncy5Ob2RlQnVpbGRlckZsYWdzTWFzayxcbiAgKTtcblxuICBpZiAob3B0aW9ucy5wcmV0dGlmeSAmJiBvcHRpb25zLnByZXR0aWZ5LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihleHBhbmRlZFR5cGVTdHJpbmcsIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMpO1xufVxuIiwgImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nLlxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgPSAoXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmcsXG4gIGNvZGVUb0FkZDogc3RyaW5nLFxuICBjb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnMsXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4pID0+IHtcbiAgY29uc3QgY3VzdG9tQ29tcGlsZXJIb3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KGNvbXBpbGVyT3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID8/IHt9KSkge1xuICAgIGN1c3RvbUNvbXBpbGVySG9zdFtrZXldID0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMhW2tleV07XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFJlYWRGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlO1xuXG4gIGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZSA9IChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gb3JpZ2luYWxSZWFkRmlsZShmaWxlTmFtZSk7XG5cbiAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIGlmIChmaWxlTmFtZSAhPT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29kZVRvQWRkfVxcbiR7Y29udGVudHN9YDtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsICJpbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwicHJldHRpZXJcIjtcblxuY29uc3QgaWRlbnRpZmllclByZWZpeCA9IFwiX19FWFBBTkRfTVlfVFlQRV9fXCI7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRDb2RlQmxvY2sgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3Rlc3RzL2Nhc2VzL2NvbXBpbGVyL2NvbXB1dGVkVHlwZXNLZXlvZk5vSW5kZXhTaWduYXR1cmVUeXBlLnRzXG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDwke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbiA9ICR7dHlwZUV4cHJlc3Npb259O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQ+ID0gXG4gICAgICAgIFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUiA/ICguLi5hcmdzOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPEE+KSA9PiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFI+XG4gICAgICA6IFQgZXh0ZW5kcyBQcm9taXNlPGluZmVyIFU+ID8gUHJvbWlzZTwke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kVHlwZUFyZ3VtZW50PFU+PlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUW0tdPiA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFR5cGVBcmd1bWVudDxUPiA9IFtUICYge31dIGV4dGVuZHMgW25ldmVyXSA/IFQgOiBUICYge30gZXh0ZW5kcyB2b2lkID8gVCA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VCAmIHt9PjtcblxuICAgIC8vIEZvcmNlcyBhIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFsIHR5cGVzIHRvIGJlIGV4cGFuZGVkXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFQgZXh0ZW5kcyBzdHJpbmc+ID0gJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8JHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VD4+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBcXGBcXCR7VH1fXFxgIGV4dGVuZHMgc3RyaW5nID8gXFxgXFwke1R9X1xcYCA6IG5ldmVyO1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgXFxgXFwke2luZmVyIFV9X1xcYCA/IFUgOiBuZXZlcjtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFR5cGVFeHByZXNzaW9uID0gYXN5bmMgKFxuICBjb2RlOiBzdHJpbmcsXG4gIHByZXR0aWVyT3B0aW9ucz86IFByZXR0aWVyT3B0aW9ucyxcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIGF3YWl0IGZvcm1hdChcbiAgICAgIGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSAke2NvZGV9YCxcbiAgICAgIHByZXR0aWVyT3B0aW9ucyA/PyB7XG4gICAgICAgIHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsXG4gICAgICAgIHNlbWk6IGZhbHNlLFxuICAgICAgfSxcbiAgICApXG4gIClcbiAgICAudHJpbSgpXG4gICAgLnN1YnN0cmluZyhgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gYC5sZW5ndGgpO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsd0JBQWU7QUFrQlIsSUFBTSw4QkFBOEIsQ0FDekMsZ0JBQ0EsV0FDQSxpQkFDQSxrQ0FDRztBQUNILFFBQU0scUJBQXFCLGtCQUFBQSxRQUFHLG1CQUFtQixtQkFBbUIsQ0FBQyxHQUFHLElBQUk7QUFDNUUsYUFBVyxPQUFPLE9BQU8sS0FBSyxpQ0FBaUMsQ0FBQyxDQUFDLEdBQUc7QUFDbEUsdUJBQW1CLEdBQUcsSUFBSSw4QkFBK0IsR0FBRztBQUFBLEVBQzlEO0FBRUEsUUFBTSxtQkFBbUIsbUJBQW1CO0FBRTVDLHFCQUFtQixXQUFXLENBQUMsYUFBYTtBQUMxQyxVQUFNLFdBQVcsaUJBQWlCLFFBQVE7QUFFMUMsUUFBSSxhQUFhLFFBQVc7QUFDMUIsYUFBTztBQUFBLElBQ1Q7QUFFQSxRQUFJLGFBQWEsZ0JBQWdCO0FBQy9CLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxHQUFHLFNBQVM7QUFBQSxFQUFLLFFBQVE7QUFBQSxFQUNsQztBQUVBLFNBQU87QUFDVDs7O0FDN0NBLHNCQUF1QjtBQUV2QixJQUFNLG1CQUFtQjtBQUVsQixJQUFNLHdCQUF3QixDQUFDLG1CQUEyQjtBQUUvRCxTQUFPLFFBQVEsZ0JBQWdCLFlBQVksZ0JBQWdCLFVBQVUsZ0JBQWdCO0FBQUEsV0FDNUUsZ0JBQWdCLGdCQUFnQixjQUFjO0FBQUE7QUFBQSxXQUU5QyxnQkFBZ0I7QUFB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
|
|
184
|
+
|
|
185
|
+
//# debugId=FD61D95A1BB3AC7F64756E2164756E21
|
|
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==
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Options } from
|
|
3
|
-
|
|
4
|
-
type
|
|
5
|
-
[P in K]: T[P] extends (...args: any[]) => any ? T[P] : never;
|
|
6
|
-
};
|
|
7
|
-
type CompilerHostFunctionOverrides = Partial<ExtractFunctions<ts.CompilerHost>>;
|
|
8
|
-
|
|
9
|
-
type ExpandTypeOptionsBase = {
|
|
1
|
+
import { type CompilerHostFunctionOverrides } from "./augmenter-compiler-host.js";
|
|
2
|
+
import type { Options as PrettierOptions } from "prettier";
|
|
3
|
+
import ts from "typescript";
|
|
4
|
+
export type ExpandTypeOptionsBase = {
|
|
10
5
|
/**
|
|
11
6
|
* The type expression to expand.
|
|
12
7
|
* @example "ReturnType<typeof myFunction>"
|
|
@@ -29,27 +24,25 @@ type ExpandTypeOptionsBase = {
|
|
|
29
24
|
* Prettier options. Don't forget to set the parser to "typescript".
|
|
30
25
|
* @default { parser: "typescript", semi: false }
|
|
31
26
|
*/
|
|
32
|
-
options?:
|
|
27
|
+
options?: PrettierOptions;
|
|
33
28
|
};
|
|
34
29
|
/**
|
|
35
30
|
* A record of functions to override in the compiler host. Useful for mocking
|
|
36
31
|
*/
|
|
37
32
|
compilerHostFunctionOverrides?: CompilerHostFunctionOverrides;
|
|
38
33
|
};
|
|
39
|
-
type ExpandTypeFromSourceFileOptions = ExpandTypeOptionsBase & {
|
|
34
|
+
export type ExpandTypeFromSourceFileOptions = ExpandTypeOptionsBase & {
|
|
40
35
|
/**
|
|
41
36
|
* Name of the source file to evaluate the type expression in.
|
|
42
37
|
*/
|
|
43
38
|
sourceFileName: string;
|
|
44
39
|
};
|
|
45
|
-
type ExpandTypeFromSourceTextOptions = ExpandTypeOptionsBase & {
|
|
40
|
+
export type ExpandTypeFromSourceTextOptions = ExpandTypeOptionsBase & {
|
|
46
41
|
/**
|
|
47
42
|
* TypeScript source text to evaluate the type expression in.
|
|
48
43
|
*/
|
|
49
44
|
sourceText: string;
|
|
50
45
|
};
|
|
51
|
-
type ExpandMyTypeOptions = ExpandTypeFromSourceFileOptions | ExpandTypeFromSourceTextOptions;
|
|
52
|
-
declare function expandMyType(options: ExpandTypeFromSourceTextOptions): Promise<string>;
|
|
53
|
-
declare function expandMyType(options: ExpandTypeFromSourceFileOptions): Promise<string>;
|
|
54
|
-
|
|
55
|
-
export { type ExpandMyTypeOptions, type ExpandTypeFromSourceFileOptions, type ExpandTypeFromSourceTextOptions, type ExpandTypeOptionsBase, expandMyType };
|
|
46
|
+
export type ExpandMyTypeOptions = ExpandTypeFromSourceFileOptions | ExpandTypeFromSourceTextOptions;
|
|
47
|
+
export declare function expandMyType(options: ExpandTypeFromSourceTextOptions): Promise<string>;
|
|
48
|
+
export declare function expandMyType(options: ExpandTypeFromSourceFileOptions): Promise<string>;
|
package/dist/index.js
CHANGED
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
import ts from "typescript";
|
|
3
3
|
var createAugmenterCompilerHost = (sourceFileName, codeToAdd, compilerOptions, compilerHostFunctionOverrides) => {
|
|
4
4
|
const customCompilerHost = ts.createCompilerHost(compilerOptions ?? {}, true);
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const overrides = compilerHostFunctionOverrides ?? {};
|
|
6
|
+
for (const key of Object.keys(overrides)) {
|
|
7
|
+
const override = overrides[key];
|
|
8
|
+
if (override) {
|
|
9
|
+
customCompilerHost[key] = override;
|
|
10
|
+
}
|
|
7
11
|
}
|
|
8
12
|
const originalReadFile = customCompilerHost.readFile;
|
|
9
13
|
customCompilerHost.readFile = (fileName) => {
|
|
10
14
|
const contents = originalReadFile(fileName);
|
|
11
|
-
if (contents ===
|
|
15
|
+
if (contents === undefined) {
|
|
12
16
|
return contents;
|
|
13
17
|
}
|
|
14
18
|
if (fileName !== sourceFileName) {
|
|
@@ -40,13 +44,10 @@ var createExpandCodeBlock = (typeExpression) => {
|
|
|
40
44
|
type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
|
|
41
45
|
};
|
|
42
46
|
var formatTypeExpression = async (code, prettierOptions) => {
|
|
43
|
-
return (await format(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
semi: false
|
|
48
|
-
}
|
|
49
|
-
)).trim().substring(`type ${identifierPrefix} = `.length);
|
|
47
|
+
return (await format(`type ${identifierPrefix} = ${code}`, prettierOptions ?? {
|
|
48
|
+
parser: "typescript",
|
|
49
|
+
semi: false
|
|
50
|
+
})).trim().substring(`type ${identifierPrefix} = `.length);
|
|
50
51
|
};
|
|
51
52
|
|
|
52
53
|
// src/index.ts
|
|
@@ -55,7 +56,7 @@ import ts2 from "typescript";
|
|
|
55
56
|
var findResultIdentifierNode = (node) => {
|
|
56
57
|
if (node.getChildCount() == 0) {
|
|
57
58
|
if (!ts2.isIdentifier(node)) {
|
|
58
|
-
return
|
|
59
|
+
return;
|
|
59
60
|
}
|
|
60
61
|
return node;
|
|
61
62
|
}
|
|
@@ -94,17 +95,8 @@ async function expandMyType(options) {
|
|
|
94
95
|
if (!tsCompilerOptions.strictNullChecks) {
|
|
95
96
|
throw new Error("strictNullChecks must be enabled!");
|
|
96
97
|
}
|
|
97
|
-
const compilerHost = createAugmenterCompilerHost(
|
|
98
|
-
|
|
99
|
-
createExpandCodeBlock(options.typeExpression),
|
|
100
|
-
tsCompilerOptions,
|
|
101
|
-
options.compilerHostFunctionOverrides
|
|
102
|
-
);
|
|
103
|
-
const program = ts2.createProgram(
|
|
104
|
-
[resolvedSourceFileName],
|
|
105
|
-
tsCompilerOptions,
|
|
106
|
-
compilerHost
|
|
107
|
-
);
|
|
98
|
+
const compilerHost = createAugmenterCompilerHost(resolvedSourceFileName, createExpandCodeBlock(options.typeExpression), tsCompilerOptions, options.compilerHostFunctionOverrides);
|
|
99
|
+
const program = ts2.createProgram([resolvedSourceFileName], tsCompilerOptions, compilerHost);
|
|
108
100
|
const sourceFile = program.getSourceFile(resolvedSourceFileName);
|
|
109
101
|
if (!sourceFile) {
|
|
110
102
|
throw new Error("Source file not found!");
|
|
@@ -114,11 +106,7 @@ async function expandMyType(options) {
|
|
|
114
106
|
throw new Error("No node found!");
|
|
115
107
|
}
|
|
116
108
|
const typeChecker = program.getTypeChecker();
|
|
117
|
-
const expandedTypeString = typeChecker.typeToString(
|
|
118
|
-
typeChecker.getTypeAtLocation(resultIdentifierNode),
|
|
119
|
-
void 0,
|
|
120
|
-
ts2.TypeFormatFlags.NodeBuilderFlagsMask
|
|
121
|
-
);
|
|
109
|
+
const expandedTypeString = typeChecker.typeToString(typeChecker.getTypeAtLocation(resultIdentifierNode), undefined, ts2.TypeFormatFlags.NodeBuilderFlagsMask);
|
|
122
110
|
if (options.prettify && options.prettify.enabled === false) {
|
|
123
111
|
return expandedTypeString;
|
|
124
112
|
}
|
|
@@ -127,4 +115,6 @@ async function expandMyType(options) {
|
|
|
127
115
|
export {
|
|
128
116
|
expandMyType
|
|
129
117
|
};
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nLlxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgPSAoXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmcsXG4gIGNvZGVUb0FkZDogc3RyaW5nLFxuICBjb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnMsXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4pID0+IHtcbiAgY29uc3QgY3VzdG9tQ29tcGlsZXJIb3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KGNvbXBpbGVyT3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID8/IHt9KSkge1xuICAgIGN1c3RvbUNvbXBpbGVySG9zdFtrZXldID0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMhW2tleV07XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFJlYWRGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlO1xuXG4gIGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZSA9IChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gb3JpZ2luYWxSZWFkRmlsZShmaWxlTmFtZSk7XG5cbiAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIGlmIChmaWxlTmFtZSAhPT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29kZVRvQWRkfVxcbiR7Y29udGVudHN9YDtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsICJpbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwicHJldHRpZXJcIjtcblxuY29uc3QgaWRlbnRpZmllclByZWZpeCA9IFwiX19FWFBBTkRfTVlfVFlQRV9fXCI7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRDb2RlQmxvY2sgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3Rlc3RzL2Nhc2VzL2NvbXBpbGVyL2NvbXB1dGVkVHlwZXNLZXlvZk5vSW5kZXhTaWduYXR1cmVUeXBlLnRzXG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDwke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbiA9ICR7dHlwZUV4cHJlc3Npb259O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQ+ID0gXG4gICAgICAgIFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUiA/ICguLi5hcmdzOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPEE+KSA9PiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFI+XG4gICAgICA6IFQgZXh0ZW5kcyBQcm9taXNlPGluZmVyIFU+ID8gUHJvbWlzZTwke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kVHlwZUFyZ3VtZW50PFU+PlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUW0tdPiA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFR5cGVBcmd1bWVudDxUPiA9IFtUICYge31dIGV4dGVuZHMgW25ldmVyXSA/IFQgOiBUICYge30gZXh0ZW5kcyB2b2lkID8gVCA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VCAmIHt9PjtcblxuICAgIC8vIEZvcmNlcyBhIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFsIHR5cGVzIHRvIGJlIGV4cGFuZGVkXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFQgZXh0ZW5kcyBzdHJpbmc+ID0gJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8JHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VD4+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBcXGBcXCR7VH1fXFxgIGV4dGVuZHMgc3RyaW5nID8gXFxgXFwke1R9X1xcYCA6IG5ldmVyO1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgXFxgXFwke2luZmVyIFV9X1xcYCA/IFUgOiBuZXZlcjtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFR5cGVFeHByZXNzaW9uID0gYXN5bmMgKFxuICBjb2RlOiBzdHJpbmcsXG4gIHByZXR0aWVyT3B0aW9ucz86IFByZXR0aWVyT3B0aW9ucyxcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIGF3YWl0IGZvcm1hdChcbiAgICAgIGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSAke2NvZGV9YCxcbiAgICAgIHByZXR0aWVyT3B0aW9ucyA/PyB7XG4gICAgICAgIHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsXG4gICAgICAgIHNlbWk6IGZhbHNlLFxuICAgICAgfSxcbiAgICApXG4gIClcbiAgICAudHJpbSgpXG4gICAgLnN1YnN0cmluZyhgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gYC5sZW5ndGgpO1xufTtcbiIsICJpbXBvcnQgeyBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgfSBmcm9tIFwiLi9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHsgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVFeHBhbmRDb2RlQmxvY2ssXG4gIGZvcm1hdFR5cGVFeHByZXNzaW9uLFxufSBmcm9tIFwiLi9jb2RlLWdlbmVyYXRvci50c1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbi8qKlxuICogRmluZHMgdGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHR5cGUgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICovXG5jb25zdCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT0gMCkge1xuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIHB1dCB0aGUgX188SURFTlRJRklFUj5fXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUpO1xufTtcblxuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZU9wdGlvbnNCYXNlID0ge1xuICAvKipcbiAgICogVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBleHBhbmQuXG4gICAqIEBleGFtcGxlIFwiUmV0dXJuVHlwZTx0eXBlb2YgbXlGdW5jdGlvbj5cIlxuICAgKi9cbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgdHNDb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFByZXR0aWVyIG9wdGlvbnMuXG4gICAqL1xuICBwcmV0dGlmeT86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXR0aWZ5IHRoZSBvdXRwdXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIG9wdGlvbnMuIERvbid0IGZvcmdldCB0byBzZXQgdGhlIHBhcnNlciB0byBcInR5cGVzY3JpcHRcIi5cbiAgICAgKiBAZGVmYXVsdCB7IHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsIHNlbWk6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBvcHRpb25zPzogUHJldHRpZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgZHVtbXlGaWxlTmFtZSA9IFwiZXhwYW5kLW15LXR5cGUtZHVtbXkudHNcIjtcblxuICAgIHJldHVybiBleHBhbmRNeVR5cGUoe1xuICAgICAgc291cmNlRmlsZU5hbWU6IGR1bW15RmlsZU5hbWUsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlYWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgICBpZiAocGF0aC5iYXNlbmFtZShmaWxlTmFtZSkgPT09IGR1bW15RmlsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZVRleHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRzLnN5cy5yZWFkRmlsZShmaWxlTmFtZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgICBwcmV0dGlmeTogb3B0aW9ucy5wcmV0dGlmeSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkU291cmNlRmlsZU5hbWUgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5zb3VyY2VGaWxlTmFtZSk7XG5cbiAgY29uc3QgdHNDb21waWxlck9wdGlvbnMgPSBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zID8/IHtcbiAgICBub0VtaXQ6IHRydWUsXG5cbiAgICBzdHJpY3ROdWxsQ2hlY2tzOiB0cnVlLFxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgaWYgKCF0c0NvbXBpbGVyT3B0aW9ucy5zdHJpY3ROdWxsQ2hlY2tzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwic3RyaWN0TnVsbENoZWNrcyBtdXN0IGJlIGVuYWJsZWQhXCIpO1xuICB9XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0SWRlbnRpZmllck5vZGUgPSBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghcmVzdWx0SWRlbnRpZmllck5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGVTdHJpbmcgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24ocmVzdWx0SWRlbnRpZmllck5vZGUpLFxuICAgIHVuZGVmaW5lZCxcbiAgICB0cy5UeXBlRm9ybWF0RmxhZ3MuTm9kZUJ1aWxkZXJGbGFnc01hc2ssXG4gICk7XG5cbiAgaWYgKG9wdGlvbnMucHJldHRpZnkgJiYgb3B0aW9ucy5wcmV0dGlmeS5lbmFibGVkID09PSBmYWxzZSkge1xuICAgIHJldHVybiBleHBhbmRlZFR5cGVTdHJpbmc7XG4gIH1cblxuICByZXR1cm4gZm9ybWF0VHlwZUV4cHJlc3Npb24oZXhwYW5kZWRUeXBlU3RyaW5nLCBvcHRpb25zLnByZXR0aWZ5Py5vcHRpb25zKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQSxPQUFPLFFBQVE7QUFrQlIsSUFBTSw4QkFBOEIsQ0FDekMsZ0JBQ0EsV0FDQSxpQkFDQSxrQ0FDRztBQUNILFFBQU0scUJBQXFCLEdBQUcsbUJBQW1CLG1CQUFtQixDQUFDLEdBQUcsSUFBSTtBQUM1RSxhQUFXLE9BQU8sT0FBTyxLQUFLLGlDQUFpQyxDQUFDLENBQUMsR0FBRztBQUNsRSx1QkFBbUIsR0FBRyxJQUFJLDhCQUErQixHQUFHO0FBQUEsRUFDOUQ7QUFFQSxRQUFNLG1CQUFtQixtQkFBbUI7QUFFNUMscUJBQW1CLFdBQVcsQ0FBQyxhQUFhO0FBQzFDLFVBQU0sV0FBVyxpQkFBaUIsUUFBUTtBQUUxQyxRQUFJLGFBQWEsUUFBVztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksYUFBYSxnQkFBZ0I7QUFDL0IsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLEdBQUcsU0FBUztBQUFBLEVBQUssUUFBUTtBQUFBLEVBQ2xDO0FBRUEsU0FBTztBQUNUOzs7QUM3Q0EsU0FBUyxjQUFjO0FBRXZCLElBQU0sbUJBQW1CO0FBRWxCLElBQU0sd0JBQXdCLENBQUMsbUJBQTJCO0FBRS9ELFNBQU8sUUFBUSxnQkFBZ0IsWUFBWSxnQkFBZ0IsVUFBVSxnQkFBZ0I7QUFBQSxXQUM1RSxnQkFBZ0IsZ0JBQWdCLGNBQWM7QUFBQTtBQUFBLFdBRTlDLGdCQUFnQjtBQUFBLDhEQUNtQyxnQkFBZ0IsaUJBQWlCLGdCQUFnQjtBQUFBLCtDQUNoRSxnQkFBZ0I7QUFBQSxr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
|
|
118
|
+
|
|
119
|
+
//# debugId=FA40E2FF4FF7499A64756E2164756E21
|
|
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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expand-my-type",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Expand TypeScript type expressions programmatically",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"expand",
|
|
@@ -20,14 +20,9 @@
|
|
|
20
20
|
"type": "module",
|
|
21
21
|
"exports": {
|
|
22
22
|
".": {
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
},
|
|
27
|
-
"import": {
|
|
28
|
-
"default": "./dist/index.js",
|
|
29
|
-
"types": "./dist/index.d.ts"
|
|
30
|
-
}
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"require": "./dist/index.cjs",
|
|
25
|
+
"import": "./dist/index.js"
|
|
31
26
|
}
|
|
32
27
|
},
|
|
33
28
|
"main": "dist/index.cjs",
|
|
@@ -36,30 +31,28 @@
|
|
|
36
31
|
"expand-my-type": "./dist/cli.js"
|
|
37
32
|
},
|
|
38
33
|
"files": [
|
|
39
|
-
"dist
|
|
40
|
-
"dist/index.d.cts",
|
|
41
|
-
"dist/index.d.ts",
|
|
42
|
-
"dist/index.js",
|
|
43
|
-
"dist/cli.js"
|
|
34
|
+
"dist"
|
|
44
35
|
],
|
|
45
36
|
"scripts": {
|
|
46
|
-
"
|
|
47
|
-
"
|
|
37
|
+
"build": "bun run clean && bun run build:esm && bun run build:cjs && bun run build:types",
|
|
38
|
+
"build:cjs": "bun build ./src/index.ts --target node --format cjs --packages external --outfile ./dist/index.cjs --sourcemap=inline",
|
|
39
|
+
"build:esm": "bun build ./src/index.ts ./src/cli.ts --target node --format esm --packages external --outdir ./dist --root ./src --sourcemap=inline",
|
|
40
|
+
"build:types": "tsc -p tsconfig.build.json",
|
|
41
|
+
"check": "bun run typecheck && bun test ./src/index.test.ts",
|
|
42
|
+
"clean": "rm -rf dist",
|
|
43
|
+
"deps:update": "bun update --latest",
|
|
48
44
|
"format": "prettier --write .",
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"test": "tsx --test --test-reporter spec ./src/index.test.ts"
|
|
45
|
+
"test": "bun test ./src/index.test.ts",
|
|
46
|
+
"typecheck": "tsc --noEmit"
|
|
52
47
|
},
|
|
53
48
|
"dependencies": {
|
|
54
|
-
"prettier": "^3.
|
|
55
|
-
"typescript": "^
|
|
49
|
+
"prettier": "^3.8.1",
|
|
50
|
+
"typescript": "^6.0.2"
|
|
56
51
|
},
|
|
57
52
|
"devDependencies": {
|
|
58
|
-
"@trivago/prettier-plugin-sort-imports": "^
|
|
59
|
-
"@types/node": "^22.
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
"tsx": "^4.19.1"
|
|
64
|
-
}
|
|
53
|
+
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
|
54
|
+
"@types/node": "^22.19.11",
|
|
55
|
+
"prettier-plugin-packagejson": "^2.5.22"
|
|
56
|
+
},
|
|
57
|
+
"packageManager": "bun@1.3.11"
|
|
65
58
|
}
|
package/dist/index.d.cts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import ts from 'typescript';
|
|
2
|
-
import { Options } from 'prettier';
|
|
3
|
-
|
|
4
|
-
type ExtractFunctions<T, K extends keyof T = keyof T> = {
|
|
5
|
-
[P in K]: T[P] extends (...args: any[]) => any ? T[P] : never;
|
|
6
|
-
};
|
|
7
|
-
type CompilerHostFunctionOverrides = Partial<ExtractFunctions<ts.CompilerHost>>;
|
|
8
|
-
|
|
9
|
-
type ExpandTypeOptionsBase = {
|
|
10
|
-
/**
|
|
11
|
-
* The type expression to expand.
|
|
12
|
-
* @example "ReturnType<typeof myFunction>"
|
|
13
|
-
*/
|
|
14
|
-
typeExpression: string;
|
|
15
|
-
/**
|
|
16
|
-
* TypeScript compiler options.
|
|
17
|
-
*/
|
|
18
|
-
tsCompilerOptions?: ts.CompilerOptions;
|
|
19
|
-
/**
|
|
20
|
-
* Prettier options.
|
|
21
|
-
*/
|
|
22
|
-
prettify?: {
|
|
23
|
-
/**
|
|
24
|
-
* Whether to prettify the output.
|
|
25
|
-
* @default true
|
|
26
|
-
*/
|
|
27
|
-
enabled?: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* Prettier options. Don't forget to set the parser to "typescript".
|
|
30
|
-
* @default { parser: "typescript", semi: false }
|
|
31
|
-
*/
|
|
32
|
-
options?: Options;
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* A record of functions to override in the compiler host. Useful for mocking
|
|
36
|
-
*/
|
|
37
|
-
compilerHostFunctionOverrides?: CompilerHostFunctionOverrides;
|
|
38
|
-
};
|
|
39
|
-
type ExpandTypeFromSourceFileOptions = ExpandTypeOptionsBase & {
|
|
40
|
-
/**
|
|
41
|
-
* Name of the source file to evaluate the type expression in.
|
|
42
|
-
*/
|
|
43
|
-
sourceFileName: string;
|
|
44
|
-
};
|
|
45
|
-
type ExpandTypeFromSourceTextOptions = ExpandTypeOptionsBase & {
|
|
46
|
-
/**
|
|
47
|
-
* TypeScript source text to evaluate the type expression in.
|
|
48
|
-
*/
|
|
49
|
-
sourceText: string;
|
|
50
|
-
};
|
|
51
|
-
type ExpandMyTypeOptions = ExpandTypeFromSourceFileOptions | ExpandTypeFromSourceTextOptions;
|
|
52
|
-
declare function expandMyType(options: ExpandTypeFromSourceTextOptions): Promise<string>;
|
|
53
|
-
declare function expandMyType(options: ExpandTypeFromSourceFileOptions): Promise<string>;
|
|
54
|
-
|
|
55
|
-
export { type ExpandMyTypeOptions, type ExpandTypeFromSourceFileOptions, type ExpandTypeFromSourceTextOptions, type ExpandTypeOptionsBase, expandMyType };
|