expand-my-type 0.1.0 → 0.3.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 +93 -7
- package/dist/cli.js +213 -0
- package/dist/index.cjs +10 -11
- package/dist/index.js +10 -11
- package/package.json +9 -3
package/README.md
CHANGED
|
@@ -23,23 +23,76 @@ type ExpandedType = Compute<SomeType>;
|
|
|
23
23
|
|
|
24
24
|
This is mostly done to improve the readability of type hints shown in editors/IDEs.
|
|
25
25
|
|
|
26
|
-
**Expand My Type** provides a programmatic way to do the same
|
|
27
|
-
source code as input, along with
|
|
28
|
-
form as a string. That can be useful
|
|
29
|
-
complex type errors.
|
|
26
|
+
**Expand My Type** provides a programmatic way to do the same
|
|
27
|
+
(see [limitations](#limitations)). It gets the source code as input, along with
|
|
28
|
+
a type expression and returns the expanded form as a string. That can be useful
|
|
29
|
+
for code-generation, testing, and debugging complex type errors.
|
|
30
30
|
|
|
31
31
|
Under the hood, it uses the [TypeScript Compiler API][ts-compiler-api] to expand
|
|
32
32
|
the type expression and optionally formats the output using
|
|
33
33
|
[Prettier][prettier].
|
|
34
34
|
|
|
35
|
-
#
|
|
35
|
+
# CLI
|
|
36
|
+
|
|
37
|
+
### Installation
|
|
38
|
+
|
|
39
|
+
To install the CLI globally, run:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
npm install -g expand-my-type
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Alternatively, the CLI can be run using `npx`:
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
npx expand-my-type
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### CLI Usage
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Usage:
|
|
55
|
+
expand-my-type [options] <source-file> <expression>
|
|
56
|
+
|
|
57
|
+
Options:
|
|
58
|
+
-h, --help Show this help message
|
|
59
|
+
-p, --prettify Prettify the output (default)
|
|
60
|
+
-P, --no-prettify Do not prettify the output
|
|
61
|
+
-c, --tsconfig <file> Use the specified tsconfig.json file
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Given a file named `example.ts` with the following contents:
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
interface SomeInterface {
|
|
68
|
+
a: number;
|
|
69
|
+
b?: string;
|
|
70
|
+
c: number | undefined;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
type SomeType = {
|
|
74
|
+
d: number;
|
|
75
|
+
e: SomeInterface;
|
|
76
|
+
f: () => void;
|
|
77
|
+
};
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Running the following command expands the type expression `SomeType["e"]`:
|
|
81
|
+
|
|
82
|
+
```sh
|
|
83
|
+
expand-my-type example.ts 'SomeType["e"]'
|
|
84
|
+
# Output:
|
|
85
|
+
# { a: number; b?: string; c: number }
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
# API
|
|
36
89
|
|
|
37
90
|
This package exports a function named `expandMyType` that can be used in one of
|
|
38
91
|
the following ways:
|
|
39
92
|
|
|
40
93
|
1. Expand the type expression in a source file:
|
|
41
94
|
|
|
42
|
-
Given a file named `example.ts` with the following
|
|
95
|
+
Given a file named `example.ts` with the following contents:
|
|
43
96
|
|
|
44
97
|
```typescript
|
|
45
98
|
interface SomeInterface {
|
|
@@ -69,7 +122,7 @@ the following ways:
|
|
|
69
122
|
/* {
|
|
70
123
|
d: number
|
|
71
124
|
e: { a: number; b?: string; c: number }
|
|
72
|
-
f:
|
|
125
|
+
f: () => void
|
|
73
126
|
} */
|
|
74
127
|
```
|
|
75
128
|
|
|
@@ -95,6 +148,39 @@ the following ways:
|
|
|
95
148
|
/* { a: string; b: number } */
|
|
96
149
|
```
|
|
97
150
|
|
|
151
|
+
# Limitations
|
|
152
|
+
|
|
153
|
+
Expand My Type uses the following utility type to expand the type expression:
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
type Expand<T> = T extends (...args: infer A) => infer R
|
|
157
|
+
? (...args: Expand<A>) => Expand<R>
|
|
158
|
+
: { [K in keyof T]: Expand<T[K]> } & {};
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
As a result, the output it generates is what the TypeScript compiler would
|
|
162
|
+
infer from wrapping the type expression with the `Expand` utility type. That
|
|
163
|
+
comes with some limitations. If you know a better approach to expand types, feel
|
|
164
|
+
free to open an issue or a pull request.
|
|
165
|
+
|
|
166
|
+
## Type References to Union String Literal Types
|
|
167
|
+
|
|
168
|
+
Type references to union string literal types are not expanded. For example,
|
|
169
|
+
expanding T in the following code:
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
type T = { s: S };
|
|
173
|
+
type S = "a" | "b";
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
results in `{ s: S }` instead of `{ s: "a" | "b" }`.
|
|
177
|
+
|
|
178
|
+
## Recursive Type References
|
|
179
|
+
|
|
180
|
+
Expanding recursive type references can lead to infinite loops. When an infinite
|
|
181
|
+
loop happens, the generated output gets truncated. Prettifying the truncated
|
|
182
|
+
output will throw an error.
|
|
183
|
+
|
|
98
184
|
[compute-type]: https://github.com/microsoft/TypeScript/blob/main/tests/cases/compiler/computedTypesKeyofNoIndexSignatureType.ts
|
|
99
185
|
[prettier]: https://prettier.io
|
|
100
186
|
[ts-compiler-api]: https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/create-expander-compiler-host.ts
|
|
4
|
+
import ts from "typescript";
|
|
5
|
+
var identifierPrefix = "__TYPE_EXPANDER__";
|
|
6
|
+
var createExpanderCompilerHost = (sourceFileName2, typeExpression2, compilerOptions, getSourceFileFunction) => {
|
|
7
|
+
const customCompilerHost = ts.createCompilerHost(compilerOptions ?? {});
|
|
8
|
+
const originalGetSourceFile = customCompilerHost.getSourceFile;
|
|
9
|
+
customCompilerHost.getSourceFile = (fileName, ...args) => {
|
|
10
|
+
if (fileName === sourceFileName2) {
|
|
11
|
+
const sourceFile = (getSourceFileFunction ?? originalGetSourceFile)(
|
|
12
|
+
fileName,
|
|
13
|
+
...args
|
|
14
|
+
);
|
|
15
|
+
if (sourceFile === void 0) {
|
|
16
|
+
return void 0;
|
|
17
|
+
}
|
|
18
|
+
const sourceText = `type ${identifierPrefix}Result = ${identifierPrefix}Expand<${identifierPrefix}Expression>;
|
|
19
|
+
type ${identifierPrefix}Expression = ${typeExpression2};
|
|
20
|
+
|
|
21
|
+
type ${identifierPrefix}Expand<T> = T extends (...args: infer A) => infer R
|
|
22
|
+
? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
|
|
23
|
+
: { [K in keyof T]: ${identifierPrefix}Expand<T[K]>; } & {};
|
|
24
|
+
|
|
25
|
+
${sourceFile.getFullText()}`;
|
|
26
|
+
return ts.createSourceFile(
|
|
27
|
+
fileName,
|
|
28
|
+
sourceText,
|
|
29
|
+
sourceFile.languageVersion,
|
|
30
|
+
true
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
return originalGetSourceFile(fileName, ...args);
|
|
34
|
+
};
|
|
35
|
+
return customCompilerHost;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// src/index.ts
|
|
39
|
+
import { format } from "prettier";
|
|
40
|
+
import ts2 from "typescript";
|
|
41
|
+
var findTypeExpanderResultNode = (node) => {
|
|
42
|
+
if (node.getChildCount() == 0) {
|
|
43
|
+
if (!ts2.isIdentifier(node)) {
|
|
44
|
+
return void 0;
|
|
45
|
+
}
|
|
46
|
+
return node;
|
|
47
|
+
}
|
|
48
|
+
return ts2.forEachChild(node, findTypeExpanderResultNode);
|
|
49
|
+
};
|
|
50
|
+
async function expandMyType(options) {
|
|
51
|
+
if (options.typeExpression.trim() === "") {
|
|
52
|
+
return "never";
|
|
53
|
+
}
|
|
54
|
+
if ("sourceText" in options) {
|
|
55
|
+
const sourceFile2 = ts2.createSourceFile(
|
|
56
|
+
"test.ts",
|
|
57
|
+
options.sourceText,
|
|
58
|
+
ts2.ScriptTarget.Latest,
|
|
59
|
+
true
|
|
60
|
+
);
|
|
61
|
+
return expandMyType({
|
|
62
|
+
sourceFileName: "test.ts",
|
|
63
|
+
typeExpression: options.typeExpression,
|
|
64
|
+
getSourceFileFunction: () => sourceFile2,
|
|
65
|
+
tsCompilerOptions: options.tsCompilerOptions
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const tsCompilerOptions = options.tsCompilerOptions ?? {
|
|
69
|
+
noEmit: true,
|
|
70
|
+
allowSyntheticDefaultImports: true,
|
|
71
|
+
allowArbitraryExtensions: true,
|
|
72
|
+
allowImportingTsExtensions: true,
|
|
73
|
+
allowJs: true
|
|
74
|
+
};
|
|
75
|
+
const compilerHost = createExpanderCompilerHost(
|
|
76
|
+
options.sourceFileName,
|
|
77
|
+
options.typeExpression,
|
|
78
|
+
tsCompilerOptions,
|
|
79
|
+
options.getSourceFileFunction
|
|
80
|
+
);
|
|
81
|
+
const program = ts2.createProgram(
|
|
82
|
+
[options.sourceFileName],
|
|
83
|
+
tsCompilerOptions,
|
|
84
|
+
compilerHost
|
|
85
|
+
);
|
|
86
|
+
const sourceFile = program.getSourceFile(options.sourceFileName);
|
|
87
|
+
if (!sourceFile) {
|
|
88
|
+
throw new Error("Source file not found!");
|
|
89
|
+
}
|
|
90
|
+
const firstIdentifier = findTypeExpanderResultNode(sourceFile);
|
|
91
|
+
if (!firstIdentifier) {
|
|
92
|
+
throw new Error("No node found!");
|
|
93
|
+
}
|
|
94
|
+
const typeChecker = program.getTypeChecker();
|
|
95
|
+
const expandedType = typeChecker.typeToString(
|
|
96
|
+
typeChecker.getTypeAtLocation(firstIdentifier),
|
|
97
|
+
void 0,
|
|
98
|
+
ts2.TypeFormatFlags.NodeBuilderFlagsMask
|
|
99
|
+
);
|
|
100
|
+
if (options.prettify && options.prettify.enabled === false) {
|
|
101
|
+
return expandedType;
|
|
102
|
+
}
|
|
103
|
+
const dummyTypeName = "__TYPE_EXPANDER_RESULT__";
|
|
104
|
+
return (await format(
|
|
105
|
+
`type ${dummyTypeName} = ${expandedType}`,
|
|
106
|
+
options.prettify?.options ?? {
|
|
107
|
+
parser: "typescript",
|
|
108
|
+
semi: false
|
|
109
|
+
}
|
|
110
|
+
)).trim().substring(`type ${dummyTypeName} = `.length);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// src/cli.ts
|
|
114
|
+
import path from "node:path";
|
|
115
|
+
import { parseArgs } from "node:util";
|
|
116
|
+
import ts3 from "typescript";
|
|
117
|
+
var tryParse = (options) => {
|
|
118
|
+
let result2;
|
|
119
|
+
try {
|
|
120
|
+
result2 = parseArgs({
|
|
121
|
+
options,
|
|
122
|
+
tokens: true,
|
|
123
|
+
allowPositionals: true
|
|
124
|
+
});
|
|
125
|
+
} catch (error2) {
|
|
126
|
+
return {
|
|
127
|
+
error: error2,
|
|
128
|
+
values: {},
|
|
129
|
+
positionals: []
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const { tokens, values: values2, positionals: positionals2 } = result2;
|
|
133
|
+
for (const token of tokens ?? []) {
|
|
134
|
+
if (token.kind === "option-terminator" || token.kind === "positional") {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (token.name.startsWith("no-")) {
|
|
138
|
+
const positiveName = token.name.slice("no-".length);
|
|
139
|
+
values2[positiveName] = false;
|
|
140
|
+
delete values2[token.name];
|
|
141
|
+
} else {
|
|
142
|
+
values2[token.name] = token.value ?? true;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
error: void 0,
|
|
147
|
+
values: values2,
|
|
148
|
+
positionals: positionals2
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
var { error, values, positionals } = tryParse({
|
|
152
|
+
help: {
|
|
153
|
+
type: "boolean",
|
|
154
|
+
short: "h"
|
|
155
|
+
},
|
|
156
|
+
prettify: {
|
|
157
|
+
type: "boolean",
|
|
158
|
+
short: "p",
|
|
159
|
+
default: true
|
|
160
|
+
},
|
|
161
|
+
"no-prettify": {
|
|
162
|
+
type: "boolean",
|
|
163
|
+
short: "P"
|
|
164
|
+
},
|
|
165
|
+
tsconfig: {
|
|
166
|
+
type: "string",
|
|
167
|
+
short: "c"
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
if (error) {
|
|
171
|
+
console.error(error.message);
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
var usagePrompt = [
|
|
175
|
+
"Usage:",
|
|
176
|
+
" expand-my-type [options] <source-file> <expression>",
|
|
177
|
+
"",
|
|
178
|
+
"Options:",
|
|
179
|
+
" -h, --help Show this help message",
|
|
180
|
+
" -p, --prettify Prettify the output (default)",
|
|
181
|
+
" -P, --no-prettify Do not prettify the output",
|
|
182
|
+
" -c, --tsconfig <file> Use the specified tsconfig.json file"
|
|
183
|
+
].join("\n");
|
|
184
|
+
if (positionals.length !== 2) {
|
|
185
|
+
console.error(usagePrompt);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
}
|
|
188
|
+
if (values.help) {
|
|
189
|
+
console.error(usagePrompt);
|
|
190
|
+
process.exit(0);
|
|
191
|
+
}
|
|
192
|
+
var [sourceFileName, typeExpression] = positionals;
|
|
193
|
+
var { prettify, tsconfig: tsConfigFileName } = values;
|
|
194
|
+
var tsParsedCommandLine;
|
|
195
|
+
if (tsConfigFileName) {
|
|
196
|
+
const configFile = ts3.readConfigFile(tsConfigFileName, ts3.sys.readFile);
|
|
197
|
+
const compilerOptions = ts3.parseJsonConfigFileContent(
|
|
198
|
+
configFile.config,
|
|
199
|
+
ts3.sys,
|
|
200
|
+
"./"
|
|
201
|
+
);
|
|
202
|
+
tsParsedCommandLine = compilerOptions;
|
|
203
|
+
}
|
|
204
|
+
var result = await expandMyType({
|
|
205
|
+
sourceFileName: path.resolve(sourceFileName),
|
|
206
|
+
typeExpression,
|
|
207
|
+
prettify: {
|
|
208
|
+
enabled: prettify
|
|
209
|
+
},
|
|
210
|
+
tsCompilerOptions: tsParsedCommandLine?.options
|
|
211
|
+
});
|
|
212
|
+
console.log(result);
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NyZWF0ZS1leHBhbmRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9pbmRleC50cyIsICIuLi9zcmMvY2xpLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuY29uc3QgaWRlbnRpZmllclByZWZpeCA9IFwiX19UWVBFX0VYUEFOREVSX19cIjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gdHlwZUV4cHJlc3Npb24gVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gZ2V0U291cmNlRmlsZUZ1bmN0aW9uIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYHRzLkNvbXBpbGVySG9zdFtcImdldFNvdXJjZUZpbGVcIl1gIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRlckNvbXBpbGVySG9zdCA9IChcbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZyxcbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBnZXRTb3VyY2VGaWxlRnVuY3Rpb24/OiB0cy5Db21waWxlckhvc3RbXCJnZXRTb3VyY2VGaWxlXCJdLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30pO1xuICBjb25zdCBvcmlnaW5hbEdldFNvdXJjZUZpbGUgPSBjdXN0b21Db21waWxlckhvc3QuZ2V0U291cmNlRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QuZ2V0U291cmNlRmlsZSA9IChmaWxlTmFtZSwgLi4uYXJncykgPT4ge1xuICAgIGlmIChmaWxlTmFtZSA9PT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIGNvbnN0IHNvdXJjZUZpbGUgPSAoZ2V0U291cmNlRmlsZUZ1bmN0aW9uID8/IG9yaWdpbmFsR2V0U291cmNlRmlsZSkoXG4gICAgICAgIGZpbGVOYW1lLFxuICAgICAgICAuLi5hcmdzLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNvdXJjZUZpbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3Rlc3RzL2Nhc2VzL2NvbXBpbGVyL2NvbXB1dGVkVHlwZXNLZXlvZk5vSW5kZXhTaWduYXR1cmVUeXBlLnRzXG4gICAgICBjb25zdCBzb3VyY2VUZXh0ID0gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgICAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHByZXNzaW9uID0gJHt0eXBlRXhwcmVzc2lvbn07XG5cbiAgICAgICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQ+ID0gVCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSXG4gICAgICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgICAgIDogeyBbSyBpbiBrZXlvZiBUXTogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUW0tdPjsgfSAmIHt9O1xuICAgICAgICAgIFxuICAgICAgICAke3NvdXJjZUZpbGUuZ2V0RnVsbFRleHQoKX1gO1xuXG4gICAgICByZXR1cm4gdHMuY3JlYXRlU291cmNlRmlsZShcbiAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgIHNvdXJjZVRleHQsXG4gICAgICAgIHNvdXJjZUZpbGUubGFuZ3VhZ2VWZXJzaW9uLFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxHZXRTb3VyY2VGaWxlKGZpbGVOYW1lLCAuLi5hcmdzKTtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsICJpbXBvcnQgeyBjcmVhdGVFeHBhbmRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2NyZWF0ZS1leHBhbmRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyBmb3JtYXQsIHR5cGUgT3B0aW9ucyBhcyBQcmV0dGllck9wdGlvbnMgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHRoZSBUWVBFX0VYUEFOREVSX1JFU1VMVCB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAqIEByZXR1cm5zIFRoZSBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZS5cbiAqL1xuY29uc3QgZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT0gMCkge1xuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIHB1dCB0aGUgX19UWVBFX0VYUEFOREVSX1JFU1VMVF9fIHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgICAvLyBmaWxlLCB3ZSBjYW4gcmV0dXJuIHRoZSBmaXJzdCBpZGVudGlmaWVyIHdlIGZpbmQuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlKTtcbn07XG5cbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVPcHRpb25zQmFzZSA9IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIGV4cHJlc3Npb24gdG8gZXhwYW5kLlxuICAgKiBAZXhhbXBsZSBcIlJldHVyblR5cGU8dHlwZW9mIG15RnVuY3Rpb24+XCJcbiAgICovXG4gIHR5cGVFeHByZXNzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgY29tcGlsZXIgb3B0aW9ucy5cbiAgICovXG4gIHRzQ29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQcmV0dGllciBvcHRpb25zLlxuICAgKi9cbiAgcHJldHRpZnk/OiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBwcmV0dGlmeSB0aGUgb3V0cHV0LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBQcmV0dGllciBvcHRpb25zLiBEb24ndCBmb3JnZXQgdG8gc2V0IHRoZSBwYXJzZXIgdG8gXCJ0eXBlc2NyaXB0XCIuXG4gICAgICogQGRlZmF1bHQgeyBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLCBzZW1pOiBmYWxzZSB9XG4gICAgICovXG4gICAgb3B0aW9ucz86IFByZXR0aWVyT3B0aW9ucztcbiAgfTtcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHNvdXJjZSBmaWxlLiBXaGVuIG5vdCBzcGVjaWZpZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGVmYXVsdCBUeXBlU2NyaXB0IGNvbXBpbGVyIGhvc3QgaXMgdXNlZC5cbiAgICovXG4gIGdldFNvdXJjZUZpbGVGdW5jdGlvbj86IHRzLkNvbXBpbGVySG9zdFtcImdldFNvdXJjZUZpbGVcIl07XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgICBcInRlc3QudHNcIixcbiAgICAgIG9wdGlvbnMuc291cmNlVGV4dCxcbiAgICAgIHRzLlNjcmlwdFRhcmdldC5MYXRlc3QsXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwYW5kTXlUeXBlKHtcbiAgICAgIHNvdXJjZUZpbGVOYW1lOiBcInRlc3QudHNcIixcbiAgICAgIHR5cGVFeHByZXNzaW9uOiBvcHRpb25zLnR5cGVFeHByZXNzaW9uLFxuICAgICAgZ2V0U291cmNlRmlsZUZ1bmN0aW9uOiAoKSA9PiBzb3VyY2VGaWxlLFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlRXhwYW5kZXJDb21waWxlckhvc3QoXG4gICAgb3B0aW9ucy5zb3VyY2VGaWxlTmFtZSxcbiAgICBvcHRpb25zLnR5cGVFeHByZXNzaW9uLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuZ2V0U291cmNlRmlsZUZ1bmN0aW9uLFxuICApO1xuXG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKFxuICAgIFtvcHRpb25zLnNvdXJjZUZpbGVOYW1lXSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBjb21waWxlckhvc3QsXG4gICk7XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IHByb2dyYW0uZ2V0U291cmNlRmlsZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcbiAgaWYgKCFzb3VyY2VGaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU291cmNlIGZpbGUgbm90IGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IGZpcnN0SWRlbnRpZmllciA9IGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlKHNvdXJjZUZpbGUpO1xuICBpZiAoIWZpcnN0SWRlbnRpZmllcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5vZGUgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IGV4cGFuZGVkVHlwZSA9IHR5cGVDaGVja2VyLnR5cGVUb1N0cmluZyhcbiAgICB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihmaXJzdElkZW50aWZpZXIpLFxuICAgIHVuZGVmaW5lZCxcbiAgICB0cy5UeXBlRm9ybWF0RmxhZ3MuTm9kZUJ1aWxkZXJGbGFnc01hc2ssXG4gICk7XG5cbiAgaWYgKG9wdGlvbnMucHJldHRpZnkgJiYgb3B0aW9ucy5wcmV0dGlmeS5lbmFibGVkID09PSBmYWxzZSkge1xuICAgIHJldHVybiBleHBhbmRlZFR5cGU7XG4gIH1cblxuICBjb25zdCBkdW1teVR5cGVOYW1lID0gXCJfX1RZUEVfRVhQQU5ERVJfUkVTVUxUX19cIjtcblxuICByZXR1cm4gKFxuICAgIGF3YWl0IGZvcm1hdChcbiAgICAgIGB0eXBlICR7ZHVtbXlUeXBlTmFtZX0gPSAke2V4cGFuZGVkVHlwZX1gLFxuICAgICAgb3B0aW9ucy5wcmV0dGlmeT8ub3B0aW9ucyA/PyB7XG4gICAgICAgIHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsXG4gICAgICAgIHNlbWk6IGZhbHNlLFxuICAgICAgfSxcbiAgICApXG4gIClcbiAgICAudHJpbSgpXG4gICAgLnN1YnN0cmluZyhgdHlwZSAke2R1bW15VHlwZU5hbWV9ID0gYC5sZW5ndGgpO1xufVxuIiwgIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IGV4cGFuZE15VHlwZSB9IGZyb20gXCIuL2luZGV4LnRzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwYXJzZUFyZ3MsIHR5cGUgUGFyc2VBcmdzQ29uZmlnIH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgVmFsdWVzID0ge1xuICBoZWxwPzogYm9vbGVhbjtcbiAgcHJldHRpZnk6IGJvb2xlYW47XG4gIHRzY29uZmlnPzogc3RyaW5nO1xufTtcblxuY29uc3QgdHJ5UGFyc2UgPSA8XG4gIFZhbHVlcyBleHRlbmRzIFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgc3RyaW5nIHwgYm9vbGVhbiB8IEFycmF5PHN0cmluZyB8IGJvb2xlYW4+IHwgdW5kZWZpbmVkXG4gID4sXG4gIE9wdGlvbnMgZXh0ZW5kcyBQYXJzZUFyZ3NDb25maWdbXCJvcHRpb25zXCJdID0gUGFyc2VBcmdzQ29uZmlnW1wib3B0aW9uc1wiXSxcbj4oXG4gIG9wdGlvbnM6IE9wdGlvbnMsXG4pOiB7IGVycm9yPzogRXJyb3I7IHZhbHVlczogVmFsdWVzOyBwb3NpdGlvbmFsczogc3RyaW5nW10gfSA9PiB7XG4gIGxldCByZXN1bHQ6IFJldHVyblR5cGU8dHlwZW9mIHBhcnNlQXJncz47XG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gcGFyc2VBcmdzKHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICB0b2tlbnM6IHRydWUsXG4gICAgICBhbGxvd1Bvc2l0aW9uYWxzOiB0cnVlLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcixcbiAgICAgIHZhbHVlczoge30gYXMgVmFsdWVzLFxuICAgICAgcG9zaXRpb25hbHM6IFtdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB7IHRva2VucywgdmFsdWVzLCBwb3NpdGlvbmFscyB9ID0gcmVzdWx0O1xuXG4gIC8vIFJlcHJvY2VzcyB0aGUgb3B0aW9uIHRva2VucyBhbmQgb3ZlcndyaXRlIHRoZSByZXR1cm5lZCB2YWx1ZXMuXG4gIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zID8/IFtdKSB7XG4gICAgaWYgKHRva2VuLmtpbmQgPT09IFwib3B0aW9uLXRlcm1pbmF0b3JcIiB8fCB0b2tlbi5raW5kID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLm5hbWUuc3RhcnRzV2l0aChcIm5vLVwiKSkge1xuICAgICAgLy8gU3RvcmUgZm9vOmZhbHNlIGZvciAtLW5vLWZvb1xuICAgICAgY29uc3QgcG9zaXRpdmVOYW1lID0gdG9rZW4ubmFtZS5zbGljZShcIm5vLVwiLmxlbmd0aCk7XG4gICAgICB2YWx1ZXNbcG9zaXRpdmVOYW1lXSA9IGZhbHNlO1xuICAgICAgZGVsZXRlIHZhbHVlc1t0b2tlbi5uYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVzYXZlIHZhbHVlIHNvIGxhc3Qgb25lIHdpbnMgaWYgYm90aCAtLWZvbyBhbmQgLS1uby1mb28uXG4gICAgICB2YWx1ZXNbdG9rZW4ubmFtZV0gPSB0b2tlbi52YWx1ZSA/PyB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZXM6IHZhbHVlcyBhcyBWYWx1ZXMsXG4gICAgcG9zaXRpb25hbHMsXG4gIH07XG59O1xuXG5jb25zdCB7IGVycm9yLCB2YWx1ZXMsIHBvc2l0aW9uYWxzIH0gPSB0cnlQYXJzZTxWYWx1ZXM+KHtcbiAgaGVscDoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIHNob3J0OiBcImhcIixcbiAgfSxcbiAgcHJldHRpZnk6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBzaG9ydDogXCJwXCIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgXCJuby1wcmV0dGlmeVwiOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgc2hvcnQ6IFwiUFwiLFxuICB9LFxuICB0c2NvbmZpZzoge1xuICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgc2hvcnQ6IFwiY1wiLFxuICB9LFxufSk7XG5cbmlmIChlcnJvcikge1xuICBjb25zb2xlLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmNvbnN0IHVzYWdlUHJvbXB0ID0gW1xuICBcIlVzYWdlOlwiLFxuICBcIiAgZXhwYW5kLW15LXR5cGUgW29wdGlvbnNdIDxzb3VyY2UtZmlsZT4gPGV4cHJlc3Npb24+XCIsXG4gIFwiXCIsXG4gIFwiT3B0aW9uczpcIixcbiAgXCIgIC1oLCAtLWhlbHBcXHRcXHRcXHRTaG93IHRoaXMgaGVscCBtZXNzYWdlXCIsXG4gIFwiICAtcCwgLS1wcmV0dGlmeVxcdFxcdFByZXR0aWZ5IHRoZSBvdXRwdXQgKGRlZmF1bHQpXCIsXG4gIFwiICAtUCwgLS1uby1wcmV0dGlmeVxcdFxcdERvIG5vdCBwcmV0dGlmeSB0aGUgb3V0cHV0XCIsXG4gIFwiICAtYywgLS10c2NvbmZpZyA8ZmlsZT5cXHRcXHRVc2UgdGhlIHNwZWNpZmllZCB0c2NvbmZpZy5qc29uIGZpbGVcIixcbl0uam9pbihcIlxcblwiKTtcblxuaWYgKHBvc2l0aW9uYWxzLmxlbmd0aCAhPT0gMikge1xuICBjb25zb2xlLmVycm9yKHVzYWdlUHJvbXB0KTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5pZiAodmFsdWVzLmhlbHApIHtcbiAgY29uc29sZS5lcnJvcih1c2FnZVByb21wdCk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn1cblxuY29uc3QgW3NvdXJjZUZpbGVOYW1lLCB0eXBlRXhwcmVzc2lvbl0gPSBwb3NpdGlvbmFscztcbmNvbnN0IHsgcHJldHRpZnksIHRzY29uZmlnOiB0c0NvbmZpZ0ZpbGVOYW1lIH0gPSB2YWx1ZXM7XG5cbmxldCB0c1BhcnNlZENvbW1hbmRMaW5lOiB0cy5QYXJzZWRDb21tYW5kTGluZSB8IHVuZGVmaW5lZDtcblxuaWYgKHRzQ29uZmlnRmlsZU5hbWUpIHtcbiAgY29uc3QgY29uZmlnRmlsZSA9IHRzLnJlYWRDb25maWdGaWxlKHRzQ29uZmlnRmlsZU5hbWUsIHRzLnN5cy5yZWFkRmlsZSk7XG4gIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KFxuICAgIGNvbmZpZ0ZpbGUuY29uZmlnLFxuICAgIHRzLnN5cyxcbiAgICBcIi4vXCIsXG4gICk7XG5cbiAgdHNQYXJzZWRDb21tYW5kTGluZSA9IGNvbXBpbGVyT3B0aW9ucztcbn1cblxuY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhwYW5kTXlUeXBlKHtcbiAgc291cmNlRmlsZU5hbWU6IHBhdGgucmVzb2x2ZShzb3VyY2VGaWxlTmFtZSksXG4gIHR5cGVFeHByZXNzaW9uLFxuICBwcmV0dGlmeToge1xuICAgIGVuYWJsZWQ6IHByZXR0aWZ5LFxuICB9LFxuICB0c0NvbXBpbGVyT3B0aW9uczogdHNQYXJzZWRDb21tYW5kTGluZT8ub3B0aW9u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LFNBQU87QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLFFBQVFBO0FBQUEsSUFDUixhQUFBQztBQUFBLEVBQ0Y7QUFDRjtBQUVBLElBQU0sRUFBRSxPQUFPLFFBQVEsWUFBWSxJQUFJLFNBQWlCO0FBQUEsRUFDdEQsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLE1BQU07QUFBQSxJQUNOLE9BQU87QUFBQSxJQUNQLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxlQUFlO0FBQUEsSUFDYixNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLEVBQ1Q7QUFDRixDQUFDO0FBRUQsSUFBSSxPQUFPO0FBQ1QsVUFBUSxNQUFNLE1BQU0sT0FBTztBQUMzQixVQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLElBQU0sY0FBYztBQUFBLEVBQ2xCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLEVBQUUsS0FBSyxJQUFJO0FBRVgsSUFBSSxZQUFZLFdBQVcsR0FBRztBQUM1QixVQUFRLE1BQU0sV0FBVztBQUN6QixVQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLElBQUksT0FBTyxNQUFNO0FBQ2YsVUFBUSxNQUFNLFdBQVc7QUFDekIsVUFBUSxLQUFLLENBQUM7QUFDaEI7QUFFQSxJQUFNLENBQUMsZ0JBQWdCLGNBQWMsSUFBSTtBQUN6QyxJQUFNLEVBQUUsVUFBVSxVQUFVLGlCQUFpQixJQUFJO0FBRWpELElBQUk7QUFFSixJQUFJLGtCQUFrQjtBQUNwQixRQUFNLGFBQWFKLElBQUcsZUFBZSxrQkFBa0JBLElBQUcsSUFBSSxRQUFRO0FBQ3RFLFFBQU0sa0JBQWtCQSxJQUFHO0FBQUEsSUFDekIsV0FBVztBQUFBLElBQ1hBLElBQUc7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUVBLHdCQUFzQjtBQUN4QjtBQUVBLElBQU0sU0FBUyxNQUFNLGFBQWE7QUFBQSxFQUNoQyxnQkFBZ0IsS0FBSyxRQUFRLGNBQWM7QUFBQSxFQUMzQztBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLG1CQUFtQixxQkFBcUI7QUFDMUMsQ0FBQztBQUVELFFBQVEsSUFBSSxNQUFNOyIsCiAgIm5hbWVzIjogWyJzb3VyY2VGaWxlTmFtZSIsICJ0eXBlRXhwcmVzc2lvbiIsICJ0cyIsICJzb3VyY2VGaWxlIiwgInRzIiwgInJlc3VsdCIsICJlcnJvciIsICJ2YWx1ZXMiLCAicG9zaXRpb25hbHMiXQp9Cg==
|
package/dist/index.cjs
CHANGED
|
@@ -35,6 +35,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
35
35
|
|
|
36
36
|
// src/create-expander-compiler-host.ts
|
|
37
37
|
var import_typescript = __toESM(require("typescript"), 1);
|
|
38
|
+
var identifierPrefix = "__TYPE_EXPANDER__";
|
|
38
39
|
var createExpanderCompilerHost = (sourceFileName, typeExpression, compilerOptions, getSourceFileFunction) => {
|
|
39
40
|
const customCompilerHost = import_typescript.default.createCompilerHost(compilerOptions ?? {});
|
|
40
41
|
const originalGetSourceFile = customCompilerHost.getSourceFile;
|
|
@@ -47,16 +48,14 @@ var createExpanderCompilerHost = (sourceFileName, typeExpression, compilerOption
|
|
|
47
48
|
if (sourceFile === void 0) {
|
|
48
49
|
return void 0;
|
|
49
50
|
}
|
|
50
|
-
const sourceText =
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
sourceFile.getFullText()
|
|
59
|
-
].join("\n");
|
|
51
|
+
const sourceText = `type ${identifierPrefix}Result = ${identifierPrefix}Expand<${identifierPrefix}Expression>;
|
|
52
|
+
type ${identifierPrefix}Expression = ${typeExpression};
|
|
53
|
+
|
|
54
|
+
type ${identifierPrefix}Expand<T> = T extends (...args: infer A) => infer R
|
|
55
|
+
? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
|
|
56
|
+
: { [K in keyof T]: ${identifierPrefix}Expand<T[K]>; } & {};
|
|
57
|
+
|
|
58
|
+
${sourceFile.getFullText()}`;
|
|
60
59
|
return import_typescript.default.createSourceFile(
|
|
61
60
|
fileName,
|
|
62
61
|
sourceText,
|
|
@@ -147,4 +146,4 @@ async function expandMyType(options) {
|
|
|
147
146
|
0 && (module.exports = {
|
|
148
147
|
expandMyType
|
|
149
148
|
});
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9jcmVhdGUtZXhwYW5kZXItY29tcGlsZXItaG9zdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgY3JlYXRlRXhwYW5kZXJDb21waWxlckhvc3QgfSBmcm9tIFwiLi9jcmVhdGUtZXhwYW5kZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHsgZm9ybWF0LCB0eXBlIE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKi9cbmNvbnN0IGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fVFlQRV9FWFBBTkRFUl9SRVNVTFRfXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzb3VyY2UgZmlsZS4gV2hlbiBub3Qgc3BlY2lmaWVkLCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRlZmF1bHQgVHlwZVNjcmlwdCBjb21waWxlciBob3N0IGlzIHVzZWQuXG4gICAqL1xuICBnZXRTb3VyY2VGaWxlRnVuY3Rpb24/OiB0cy5Db21waWxlckhvc3RbXCJnZXRTb3VyY2VGaWxlXCJdO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHNvdXJjZSB0ZXh0IHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kTXlUeXBlT3B0aW9ucyA9XG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9uc1xuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIEV4cGFuZHMgYSBUeXBlU2NyaXB0IHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIGV4cGFuZGVkIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShvcHRpb25zOiBFeHBhbmRNeVR5cGVPcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGVFeHByZXNzaW9uLnRyaW0oKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBcIm5ldmVyXCI7XG4gIH1cblxuICBpZiAoXCJzb3VyY2VUZXh0XCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHNvdXJjZUZpbGUgPSB0cy5jcmVhdGVTb3VyY2VGaWxlKFxuICAgICAgXCJ0ZXN0LnRzXCIsXG4gICAgICBvcHRpb25zLnNvdXJjZVRleHQsXG4gICAgICB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LFxuICAgICAgdHJ1ZSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogXCJ0ZXN0LnRzXCIsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGdldFNvdXJjZUZpbGVGdW5jdGlvbjogKCkgPT4gc291cmNlRmlsZSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgdHNDb21waWxlck9wdGlvbnMgPSBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zID8/IHtcbiAgICBub0VtaXQ6IHRydWUsXG5cbiAgICBhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOiB0cnVlLFxuICAgIGFsbG93QXJiaXRyYXJ5RXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0pzOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IGNvbXBpbGVySG9zdCA9IGNyZWF0ZUV4cGFuZGVyQ29tcGlsZXJIb3N0KFxuICAgIG9wdGlvbnMuc291cmNlRmlsZU5hbWUsXG4gICAgb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBvcHRpb25zLmdldFNvdXJjZUZpbGVGdW5jdGlvbixcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbb3B0aW9ucy5zb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUob3B0aW9ucy5zb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCBmaXJzdElkZW50aWZpZXIgPSBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFmaXJzdElkZW50aWZpZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGUgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24oZmlyc3RJZGVudGlmaWVyKSxcbiAgICB1bmRlZmluZWQsXG4gICAgdHMuVHlwZUZvcm1hdEZsYWdzLk5vZGVCdWlsZGVyRmxhZ3NNYXNrLFxuICApO1xuXG4gIGlmIChvcHRpb25zLnByZXR0aWZ5ICYmIG9wdGlvbnMucHJldHRpZnkuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZXhwYW5kZWRUeXBlO1xuICB9XG5cbiAgY29uc3QgZHVtbXlUeXBlTmFtZSA9IFwiX19UWVBFX0VYUEFOREVSX1JFU1VMVF9fXCI7XG5cbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2R1bW15VHlwZU5hbWV9ID0gJHtleHBhbmRlZFR5cGV9YCxcbiAgICAgIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtkdW1teVR5cGVOYW1lfSA9IGAubGVuZ3RoKTtcbn1cbiIsICJpbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gdHlwZUV4cHJlc3Npb24gVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gZ2V0U291cmNlRmlsZUZ1bmN0aW9uIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYHRzLkNvbXBpbGVySG9zdFtcImdldFNvdXJjZUZpbGVcIl1gIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRlckNvbXBpbGVySG9zdCA9IChcbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZyxcbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBnZXRTb3VyY2VGaWxlRnVuY3Rpb24/OiB0cy5Db21waWxlckhvc3RbXCJnZXRTb3VyY2VGaWxlXCJdLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30pO1xuICBjb25zdCBvcmlnaW5hbEdldFNvdXJjZUZpbGUgPSBjdXN0b21Db21waWxlckhvc3QuZ2V0U291cmNlRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QuZ2V0U291cmNlRmlsZSA9IChmaWxlTmFtZSwgLi4uYXJncykgPT4ge1xuICAgIGlmIChmaWxlTmFtZSA9PT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIGNvbnN0IHNvdXJjZUZpbGUgPSAoZ2V0U291cmNlRmlsZUZ1bmN0aW9uID8/IG9yaWdpbmFsR2V0U291cmNlRmlsZSkoXG4gICAgICAgIGZpbGVOYW1lLFxuICAgICAgICAuLi5hcmdzLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNvdXJjZUZpbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3VyY2VUZXh0ID0gW1xuICAgICAgICAuLi5bXG4gICAgICAgICAgXCJ0eXBlIF9fVFlQRV9FWFBBTkRFUl9SRVNVTFRfXyA9IF9fVFlQRV9FWFBBTkRFUl9FWFBBTkRfXzxfX1RZUEVfRVhQQU5ERVJfRVhQUkVTU0lPTl9fPjtcIixcbiAgICAgICAgICBgdHlwZSBfX1RZUEVfRVhQQU5ERVJfRVhQUkVTU0lPTl9fID0gJHt0eXBlRXhwcmVzc2lvbn07YCxcbiAgICAgICAgICBcInR5cGUgX19UWVBFX0VYUEFOREVSX0VYUEFORF9fPFQ+ID0ge1wiLFxuICAgICAgICAgIFwiICBbSyBpbiBrZXlvZiBUXTogX19UWVBFX0VYUEFOREVSX0VYUEFORF9fPFRbS10+O1wiLFxuICAgICAgICAgIFwifSAmIHt9O1wiLFxuICAgICAgICBdLFxuICAgICAgICBzb3VyY2VGaWxlLmdldEZ1bGxUZXh0KCksXG4gICAgICBdLmpvaW4oXCJcXG5cIik7XG5cbiAgICAgIHJldHVybiB0cy5jcmVhdGVTb3VyY2VGaWxlKFxuICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgc291cmNlVGV4dCxcbiAgICAgICAgc291cmNlRmlsZS5sYW5ndWFnZVZlcnNpb24sXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldFNvdXJjZUZpbGUoZmlsZU5hbWUsIC4uLmFyZ3MpO1xuICB9O1xuXG4gIHJldHVybiBjdXN0b21Db21waWxlckhvc3Q7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSx3QkFBZTtBQVdSLElBQU0sNkJBQTZCLENBQ3hDLGdCQUNBLGdCQUNBLGlCQUNBLDBCQUNHO0FBQ0gsUUFBTSxxQkFBcUIsa0JBQUFBLFFBQUcsbUJBQW1CLG1CQUFtQixDQUFDLENBQUM7QUFDdEUsUUFBTSx3QkFBd0IsbUJBQW1CO0FBRWpELHFCQUFtQixnQkFBZ0IsQ0FBQyxhQUFhLFNBQVM7QUFDeEQsUUFBSSxhQUFhLGdCQUFnQjtBQUMvQixZQUFNLGNBQWMseUJBQXlCO0FBQUEsUUFDM0M7QUFBQSxRQUNBLEdBQUc7QUFBQSxNQUNMO0FBRUEsVUFBSSxlQUFlLFFBQVc7QUFDNUIsZUFBTztBQUFBLE1BQ1Q7QUFFQSxZQUFNLGFBQWE7QUFBQSxRQUNqQixHQUFHO0FBQUEsVUFDRDtBQUFBLFVBQ0EsdUNBQXVDLGNBQWM7QUFBQSxVQUNyRDtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsUUFDRjtBQUFBLFFBQ0EsV0FBVyxZQUFZO0FBQUEsTUFDekIsRUFBRSxLQUFLLElBQUk7QUFFWCxhQUFPLGtCQUFBQSxRQUFHO0FBQUEsUUFDUjtBQUFBLFFBQ0E7QUFBQSxRQUNBLFdBQVc7QUFBQSxRQUNYO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxXQUFPLHNCQUFzQixVQUFVLEdBQUcsSUFBSTtBQUFBLEVBQ2hEO0FBRUEsU0FBTztBQUNUOzs7QURyREEsc0JBQXdEO0FBQ3hELElBQUFDLHFCQUFlO0FBUWYsSUFBTSw2QkFBNkIsQ0FBQyxTQUF1QztBQUN6RSxNQUFJLEtBQUssY0FBYyxLQUFLLEdBQUc7QUFDN0IsUUFBSSxDQUFDLG1CQUFBQyxRQUFHLGFBQWEsSUFBSSxHQUFHO0FBQzFCLGFBQU87QUFBQSxJQUNUO0FBSUEsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLG1CQUFBQSxRQUFHLGFBQWEsTUFBTSwwQkFBMEI7QUFDekQ7QUErREEsZUFBc0IsYUFBYSxTQUE4QjtBQUMvRCxNQUFJLFFBQVEsZUFBZSxLQUFLLE1BQU0sSUFBSTtBQUN4QyxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksZ0JBQWdCLFNBQVM7QUFDM0IsVUFBTUMsY0FBYSxtQkFBQUQsUUFBRztBQUFBLE1BQ3BCO0FBQUEsTUFDQSxRQUFRO0FBQUEsTUFDUixtQkFBQUEsUUFBRyxhQUFhO0FBQUEsTUFDaEI7QUFBQSxJQUNGO0FBRUEsV0FBTyxhQUFhO0FBQUEsTUFDbEIsZ0JBQWdCO0FBQUEsTUFDaEIsZ0JBQWdCLFFBQVE7QUFBQSxNQUN4Qix1QkFBdUIsTUFBTUM7QUFBQSxNQUM3QixtQkFBbUIsUUFBUTtBQUFBLElBQzdCLENBQUM7QUFBQSxFQUNIO0FBRUEsUUFBTSxvQkFBb0IsUUFBUSxxQkFBcUI7QUFBQSxJQUNyRCxRQUFRO0FBQUEsSUFFUiw4QkFBOEI7QUFBQSxJQUM5QiwwQkFBMEI7QUFBQSxJQUMxQiw0QkFBNEI7QUFBQSxJQUM1QixTQUFTO0FBQUEsRUFDWDtBQUVBLFFBQU0sZUFBZTtBQUFBLElBQ25CLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSO0FBQUEsSUFDQSxRQUFRO0FBQUEsRUFDVjtBQUVBLFFBQU0sVUFBVSxtQkFBQUQsUUFBRztBQUFBLElBQ2pCLENBQUMsUUFBUSxjQUFjO0FBQUEsSUFDdkI7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUVBLFFBQU0sYUFBYSxRQUFRLGNBQWMsUUFBUSxjQUFjO0FBQy9ELE1BQUksQ0FBQyxZQUFZO0FBQ2YsVUFBTSxJQUFJLE1BQU0sd0JBQXdCO0FBQUEsRUFDMUM7QUFFQSxRQUFNLGtCQUFrQiwyQkFBMkIsVUFBVTtBQUM3RCxNQUFJLENBQUMsaUJBQWlCO0FBQ3BCLFVBQU0sSUFBSSxNQUFNLGdCQUFnQjtBQUFBLEVBQ2xDO0FBRUEsUUFBTSxjQUFjLFFBQVEsZUFBZTtBQUMzQyxRQUFNLGVBQWUsWUFBWTtBQUFBLElBQy9CLFlBQVksa0JBQWtCLGVBQWU7QUFBQSxJQUM3QztBQUFBLElBQ0EsbUJBQUFBLFFBQUcsZ0JBQWdCO0FBQUEsRUFDckI7QUFFQSxNQUFJLFFBQVEsWUFBWSxRQUFRLFNBQVMsWUFBWSxPQUFPO0FBQzFELFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxnQkFBZ0I7QUFFdEIsVUFDRSxVQUFNO0FBQUEsSUFDSixRQUFRLGFBQWEsTUFBTSxZQUFZO0FBQUEsSUFDdkMsUUFBUSxVQUFVLFdBQVc7QUFBQSxNQUMzQixRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0YsR0FFQyxLQUFLLEVBQ0wsVUFBVSxRQUFRLGFBQWEsTUFBTSxNQUFNO0FBQ2hEOyIsCiAgIm5hbWVzIjogWyJ0cyIsICJpbXBvcnRfdHlwZXNjcmlwdCIsICJ0cyIsICJzb3VyY2VGaWxlIl0KfQo=
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9jcmVhdGUtZXhwYW5kZXItY29tcGlsZXItaG9zdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgY3JlYXRlRXhwYW5kZXJDb21waWxlckhvc3QgfSBmcm9tIFwiLi9jcmVhdGUtZXhwYW5kZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHsgZm9ybWF0LCB0eXBlIE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKi9cbmNvbnN0IGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fVFlQRV9FWFBBTkRFUl9SRVNVTFRfXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzb3VyY2UgZmlsZS4gV2hlbiBub3Qgc3BlY2lmaWVkLCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRlZmF1bHQgVHlwZVNjcmlwdCBjb21waWxlciBob3N0IGlzIHVzZWQuXG4gICAqL1xuICBnZXRTb3VyY2VGaWxlRnVuY3Rpb24/OiB0cy5Db21waWxlckhvc3RbXCJnZXRTb3VyY2VGaWxlXCJdO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHNvdXJjZSB0ZXh0IHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kTXlUeXBlT3B0aW9ucyA9XG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9uc1xuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIEV4cGFuZHMgYSBUeXBlU2NyaXB0IHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIGV4cGFuZGVkIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShvcHRpb25zOiBFeHBhbmRNeVR5cGVPcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGVFeHByZXNzaW9uLnRyaW0oKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBcIm5ldmVyXCI7XG4gIH1cblxuICBpZiAoXCJzb3VyY2VUZXh0XCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHNvdXJjZUZpbGUgPSB0cy5jcmVhdGVTb3VyY2VGaWxlKFxuICAgICAgXCJ0ZXN0LnRzXCIsXG4gICAgICBvcHRpb25zLnNvdXJjZVRleHQsXG4gICAgICB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LFxuICAgICAgdHJ1ZSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogXCJ0ZXN0LnRzXCIsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGdldFNvdXJjZUZpbGVGdW5jdGlvbjogKCkgPT4gc291cmNlRmlsZSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgdHNDb21waWxlck9wdGlvbnMgPSBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zID8/IHtcbiAgICBub0VtaXQ6IHRydWUsXG5cbiAgICBhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOiB0cnVlLFxuICAgIGFsbG93QXJiaXRyYXJ5RXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0pzOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IGNvbXBpbGVySG9zdCA9IGNyZWF0ZUV4cGFuZGVyQ29tcGlsZXJIb3N0KFxuICAgIG9wdGlvbnMuc291cmNlRmlsZU5hbWUsXG4gICAgb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBvcHRpb25zLmdldFNvdXJjZUZpbGVGdW5jdGlvbixcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbb3B0aW9ucy5zb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUob3B0aW9ucy5zb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCBmaXJzdElkZW50aWZpZXIgPSBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFmaXJzdElkZW50aWZpZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGUgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24oZmlyc3RJZGVudGlmaWVyKSxcbiAgICB1bmRlZmluZWQsXG4gICAgdHMuVHlwZUZvcm1hdEZsYWdzLk5vZGVCdWlsZGVyRmxhZ3NNYXNrLFxuICApO1xuXG4gIGlmIChvcHRpb25zLnByZXR0aWZ5ICYmIG9wdGlvbnMucHJldHRpZnkuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZXhwYW5kZWRUeXBlO1xuICB9XG5cbiAgY29uc3QgZHVtbXlUeXBlTmFtZSA9IFwiX19UWVBFX0VYUEFOREVSX1JFU1VMVF9fXCI7XG5cbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2R1bW15VHlwZU5hbWV9ID0gJHtleHBhbmRlZFR5cGV9YCxcbiAgICAgIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtkdW1teVR5cGVOYW1lfSA9IGAubGVuZ3RoKTtcbn1cbiIsICJpbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuY29uc3QgaWRlbnRpZmllclByZWZpeCA9IFwiX19UWVBFX0VYUEFOREVSX19cIjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gdHlwZUV4cHJlc3Npb24gVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gZ2V0U291cmNlRmlsZUZ1bmN0aW9uIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYHRzLkNvbXBpbGVySG9zdFtcImdldFNvdXJjZUZpbGVcIl1gIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRlckNvbXBpbGVySG9zdCA9IChcbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZyxcbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBnZXRTb3VyY2VGaWxlRnVuY3Rpb24/OiB0cy5Db21waWxlckhvc3RbXCJnZXRTb3VyY2VGaWxlXCJdLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30pO1xuICBjb25zdCBvcmlnaW5hbEdldFNvdXJjZUZpbGUgPSBjdXN0b21Db21waWxlckhvc3QuZ2V0U291cmNlRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QuZ2V0U291cmNlRmlsZSA9IChmaWxlTmFtZSwgLi4uYXJncykgPT4ge1xuICAgIGlmIChmaWxlTmFtZSA9PT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIGNvbnN0IHNvdXJjZUZpbGUgPSAoZ2V0U291cmNlRmlsZUZ1bmN0aW9uID8/IG9yaWdpbmFsR2V0U291cmNlRmlsZSkoXG4gICAgICAgIGZpbGVOYW1lLFxuICAgICAgICAuLi5hcmdzLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNvdXJjZUZpbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3Rlc3RzL2Nhc2VzL2NvbXBpbGVyL2NvbXB1dGVkVHlwZXNLZXlvZk5vSW5kZXhTaWduYXR1cmVUeXBlLnRzXG4gICAgICBjb25zdCBzb3VyY2VUZXh0ID0gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgICAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHByZXNzaW9uID0gJHt0eXBlRXhwcmVzc2lvbn07XG5cbiAgICAgICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQ+ID0gVCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSXG4gICAgICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgICAgIDogeyBbSyBpbiBrZXlvZiBUXTogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUW0tdPjsgfSAmIHt9O1xuICAgICAgICAgIFxuICAgICAgICAke3NvdXJjZUZpbGUuZ2V0RnVsbFRleHQoKX1gO1xuXG4gICAgICByZXR1cm4gdHMuY3JlYXRlU291cmNlRmlsZShcbiAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgIHNvdXJjZVRleHQsXG4gICAgICAgIHNvdXJjZUZpbGUubGFuZ3VhZ2VWZXJzaW9uLFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxHZXRTb3VyY2VGaWxlKGZpbGVOYW1lLCAuLi5hcmdzKTtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsd0JBQWU7QUFFZixJQUFNLG1CQUFtQjtBQVdsQixJQUFNLDZCQUE2QixDQUN4QyxnQkFDQSxnQkFDQSxpQkFDQSwwQkFDRztBQUNILFFBQU0scUJBQXFCLGtCQUFBQSxRQUFHLG1CQUFtQixtQkFBbUIsQ0FBQyxDQUFDO0FBQ3RFLFFBQU0sd0JBQXdCLG1CQUFtQjtBQUVqRCxxQkFBbUIsZ0JBQWdCLENBQUMsYUFBYSxTQUFTO0FBQ3hELFFBQUksYUFBYSxnQkFBZ0I7QUFDL0IsWUFBTSxjQUFjLHlCQUF5QjtBQUFBLFFBQzNDO0FBQUEsUUFDQSxHQUFHO0FBQUEsTUFDTDtBQUVBLFVBQUksZUFBZSxRQUFXO0FBQzVCLGVBQU87QUFBQSxNQUNUO0FBR0EsWUFBTSxhQUFhLFFBQVEsZ0JBQWdCLFlBQVksZ0JBQWdCLFVBQVUsZ0JBQWdCO0FBQUEsZUFDeEYsZ0JBQWdCLGdCQUFnQixjQUFjO0FBQUE7QUFBQSxlQUU5QyxnQkFBZ0I7QUFBQSx3QkFDUCxnQkFBZ0IsaUJB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
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// src/create-expander-compiler-host.ts
|
|
2
2
|
import ts from "typescript";
|
|
3
|
+
var identifierPrefix = "__TYPE_EXPANDER__";
|
|
3
4
|
var createExpanderCompilerHost = (sourceFileName, typeExpression, compilerOptions, getSourceFileFunction) => {
|
|
4
5
|
const customCompilerHost = ts.createCompilerHost(compilerOptions ?? {});
|
|
5
6
|
const originalGetSourceFile = customCompilerHost.getSourceFile;
|
|
@@ -12,16 +13,14 @@ var createExpanderCompilerHost = (sourceFileName, typeExpression, compilerOption
|
|
|
12
13
|
if (sourceFile === void 0) {
|
|
13
14
|
return void 0;
|
|
14
15
|
}
|
|
15
|
-
const sourceText =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
sourceFile.getFullText()
|
|
24
|
-
].join("\n");
|
|
16
|
+
const sourceText = `type ${identifierPrefix}Result = ${identifierPrefix}Expand<${identifierPrefix}Expression>;
|
|
17
|
+
type ${identifierPrefix}Expression = ${typeExpression};
|
|
18
|
+
|
|
19
|
+
type ${identifierPrefix}Expand<T> = T extends (...args: infer A) => infer R
|
|
20
|
+
? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
|
|
21
|
+
: { [K in keyof T]: ${identifierPrefix}Expand<T[K]>; } & {};
|
|
22
|
+
|
|
23
|
+
${sourceFile.getFullText()}`;
|
|
25
24
|
return ts.createSourceFile(
|
|
26
25
|
fileName,
|
|
27
26
|
sourceText,
|
|
@@ -111,4 +110,4 @@ async function expandMyType(options) {
|
|
|
111
110
|
export {
|
|
112
111
|
expandMyType
|
|
113
112
|
};
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NyZWF0ZS1leHBhbmRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGN1c3RvbSBjb21waWxlciBob3N0IHRoYXQgYXVnbWVudHMgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZSBmb3IgZXhwYW5kaW5nIGEgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBzb3VyY2VGaWxlTmFtZSBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBhdWdtZW50LlxuICogQHBhcmFtIHR5cGVFeHByZXNzaW9uIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIGdldFNvdXJjZUZpbGVGdW5jdGlvbiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGB0cy5Db21waWxlckhvc3RbXCJnZXRTb3VyY2VGaWxlXCJdYCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kZXJDb21waWxlckhvc3QgPSAoXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmcsXG4gIHR5cGVFeHByZXNzaW9uOiBzdHJpbmcsXG4gIGNvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucyxcbiAgZ2V0U291cmNlRmlsZUZ1bmN0aW9uPzogdHMuQ29tcGlsZXJIb3N0W1wiZ2V0U291cmNlRmlsZVwiXSxcbikgPT4ge1xuICBjb25zdCBjdXN0b21Db21waWxlckhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3QoY29tcGlsZXJPcHRpb25zID8/IHt9KTtcbiAgY29uc3Qgb3JpZ2luYWxHZXRTb3VyY2VGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LmdldFNvdXJjZUZpbGU7XG5cbiAgY3VzdG9tQ29tcGlsZXJIb3N0LmdldFNvdXJjZUZpbGUgPSAoZmlsZU5hbWUsIC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoZmlsZU5hbWUgPT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICBjb25zdCBzb3VyY2VGaWxlID0gKGdldFNvdXJjZUZpbGVGdW5jdGlvbiA/PyBvcmlnaW5hbEdldFNvdXJjZUZpbGUpKFxuICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgLi4uYXJncyxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzb3VyY2VGaWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlVGV4dCA9IFtcbiAgICAgICAgLi4uW1xuICAgICAgICAgIFwidHlwZSBfX1RZUEVfRVhQQU5ERVJfUkVTVUxUX18gPSBfX1RZUEVfRVhQQU5ERVJfRVhQQU5EX188X19UWVBFX0VYUEFOREVSX0VYUFJFU1NJT05fXz47XCIsXG4gICAgICAgICAgYHR5cGUgX19UWVBFX0VYUEFOREVSX0VYUFJFU1NJT05fXyA9ICR7dHlwZUV4cHJlc3Npb259O2AsXG4gICAgICAgICAgXCJ0eXBlIF9fVFlQRV9FWFBBTkRFUl9FWFBBTkRfXzxUPiA9IHtcIixcbiAgICAgICAgICBcIiAgW0sgaW4ga2V5b2YgVF06IF9fVFlQRV9FWFBBTkRFUl9FWFBBTkRfXzxUW0tdPjtcIixcbiAgICAgICAgICBcIn0gJiB7fTtcIixcbiAgICAgICAgXSxcbiAgICAgICAgc291cmNlRmlsZS5nZXRGdWxsVGV4dCgpLFxuICAgICAgXS5qb2luKFwiXFxuXCIpO1xuXG4gICAgICByZXR1cm4gdHMuY3JlYXRlU291cmNlRmlsZShcbiAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgIHNvdXJjZVRleHQsXG4gICAgICAgIHNvdXJjZUZpbGUubGFuZ3VhZ2VWZXJzaW9uLFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxHZXRTb3VyY2VGaWxlKGZpbGVOYW1lLCAuLi5hcmdzKTtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsICJpbXBvcnQgeyBjcmVhdGVFeHBhbmRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2NyZWF0ZS1leHBhbmRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyBmb3JtYXQsIHR5cGUgT3B0aW9ucyBhcyBQcmV0dGllck9wdGlvbnMgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHRoZSBUWVBFX0VYUEFOREVSX1JFU1VMVCB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAqIEByZXR1cm5zIFRoZSBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZS5cbiAqL1xuY29uc3QgZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT0gMCkge1xuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIHB1dCB0aGUgX19UWVBFX0VYUEFOREVSX1JFU1VMVF9fIHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgICAvLyBmaWxlLCB3ZSBjYW4gcmV0dXJuIHRoZSBmaXJzdCBpZGVudGlmaWVyIHdlIGZpbmQuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlKTtcbn07XG5cbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVPcHRpb25zQmFzZSA9IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIGV4cHJlc3Npb24gdG8gZXhwYW5kLlxuICAgKiBAZXhhbXBsZSBcIlJldHVyblR5cGU8dHlwZW9mIG15RnVuY3Rpb24+XCJcbiAgICovXG4gIHR5cGVFeHByZXNzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgY29tcGlsZXIgb3B0aW9ucy5cbiAgICovXG4gIHRzQ29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQcmV0dGllciBvcHRpb25zLlxuICAgKi9cbiAgcHJldHRpZnk/OiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBwcmV0dGlmeSB0aGUgb3V0cHV0LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBQcmV0dGllciBvcHRpb25zLiBEb24ndCBmb3JnZXQgdG8gc2V0IHRoZSBwYXJzZXIgdG8gXCJ0eXBlc2NyaXB0XCIuXG4gICAgICogQGRlZmF1bHQgeyBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLCBzZW1pOiBmYWxzZSB9XG4gICAgICovXG4gICAgb3B0aW9ucz86IFByZXR0aWVyT3B0aW9ucztcbiAgfTtcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHNvdXJjZSBmaWxlLiBXaGVuIG5vdCBzcGVjaWZpZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGVmYXVsdCBUeXBlU2NyaXB0IGNvbXBpbGVyIGhvc3QgaXMgdXNlZC5cbiAgICovXG4gIGdldFNvdXJjZUZpbGVGdW5jdGlvbj86IHRzLkNvbXBpbGVySG9zdFtcImdldFNvdXJjZUZpbGVcIl07XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgICBcInRlc3QudHNcIixcbiAgICAgIG9wdGlvbnMuc291cmNlVGV4dCxcbiAgICAgIHRzLlNjcmlwdFRhcmdldC5MYXRlc3QsXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwYW5kTXlUeXBlKHtcbiAgICAgIHNvdXJjZUZpbGVOYW1lOiBcInRlc3QudHNcIixcbiAgICAgIHR5cGVFeHByZXNzaW9uOiBvcHRpb25zLnR5cGVFeHByZXNzaW9uLFxuICAgICAgZ2V0U291cmNlRmlsZUZ1bmN0aW9uOiAoKSA9PiBzb3VyY2VGaWxlLFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlRXhwYW5kZXJDb21waWxlckhvc3QoXG4gICAgb3B0aW9ucy5zb3VyY2VGaWxlTmFtZSxcbiAgICBvcHRpb25zLnR5cGVFeHByZXNzaW9uLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuZ2V0U291cmNlRmlsZUZ1bmN0aW9uLFxuICApO1xuXG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKFxuICAgIFtvcHRpb25zLnNvdXJjZUZpbGVOYW1lXSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBjb21waWxlckhvc3QsXG4gICk7XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IHByb2dyYW0uZ2V0U291cmNlRmlsZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcbiAgaWYgKCFzb3VyY2VGaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU291cmNlIGZpbGUgbm90IGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IGZpcnN0SWRlbnRpZmllciA9IGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlKHNvdXJjZUZpbGUpO1xuICBpZiAoIWZpcnN0SWRlbnRpZmllcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5vZGUgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IGV4cGFuZGVkVHlwZSA9IHR5cGVDaGVja2VyLnR5cGVUb1N0cmluZyhcbiAgICB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihmaXJzdElkZW50aWZpZXIpLFxuICAgIHVuZGVmaW5lZCxcbiAgICB0cy5UeXBlRm9ybWF0RmxhZ3MuTm9kZUJ1aWxkZXJGbGFnc01hc2ssXG4gICk7XG5cbiAgaWYgKG9wdGlvbnMucHJldHRpZnkgJiYgb3B0aW9ucy5wcmV0dGlmeS5lbmFibGVkID09PSBmYWxzZSkge1xuICAgIHJldHVybiBleHBhbmRlZFR5cGU7XG4gIH1cblxuICBjb25zdCBkdW1teVR5cGVOYW1lID0gXCJfX1RZUEVfRVhQQU5ERVJfUkVTVUxUX19cIjtcblxuICByZXR1cm4gKFxuICAgIGF3YWl0IGZvcm1hdChcbiAgICAgIGB0eXBlICR7ZHVtbXlUeXBlTmFtZX0gPSAke2V4cGFuZGVkVHlwZX1gLFxuICAgICAgb3B0aW9ucy5wcmV0dGlmeT8ub3B0aW9ucyA/PyB7XG4gICAgICAgIHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsXG4gICAgICAgIHNlbWk6IGZhbHNlLFxuICAgICAgfSxcbiAgICApXG4gIClcbiAgICAudHJpbSgpXG4gICAgLnN1YnN0cmluZyhgdHlwZSAke2R1bW15VHlwZU5hbWV9ID0gYC5sZW5ndGgpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLE9BQU8sUUFBUTtBQVdSLElBQU0sNkJBQTZCLENBQ3hDLGdCQUNBLGdCQUNBLGlCQUNBLDBCQUNHO0FBQ0gsUUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsbUJBQW1CLENBQUMsQ0FBQztBQUN0RSxRQUFNLHdCQUF3QixtQkFBbUI7QUFFakQscUJBQW1CLGdCQUFnQixDQUFDLGFBQWEsU0FBUztBQUN4RCxRQUFJLGFBQWEsZ0JBQWdCO0FBQy9CLFlBQU0sY0FBYyx5QkFBeUI7QUFBQSxRQUMzQztBQUFBLFFBQ0EsR0FBRztBQUFBLE1BQ0w7QUFFQSxVQUFJLGVBQWUsUUFBVztBQUM1QixlQUFPO0FBQUEsTUFDVDtBQUVBLFlBQU0sYUFBYTtBQUFBLFFBQ2pCLEdBQUc7QUFBQSxVQUNEO0FBQUEsVUFDQSx1Q0FBdUMsY0FBYztBQUFBLFVBQ3JEO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxRQUNGO0FBQUEsUUFDQSxXQUFXLFlBQVk7QUFBQSxNQUN6QixFQUFFLEtBQUssSUFBSTtBQUVYLGFBQU8sR0FBRztBQUFBLFFBQ1I7QUFBQSxRQUNBO0FBQUEsUUFDQSxXQUFXO0FBQUEsUUFDWDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBRUEsV0FBTyxzQkFBc0IsVUFBVSxHQUFHLElBQUk7QUFBQSxFQUNoRDtBQUVBLFNBQU87QUFDVDs7O0FDckRBLFNBQVMsY0FBK0M7QUFDeEQsT0FBT0EsU0FBUTtBQVFmLElBQU0sNkJBQTZCLENBQUMsU0FBdUM7QUFDekUsTUFBSSxLQUFLLGNBQWMsS0FBSyxHQUFHO0FBQzdCLFFBQUksQ0FBQ0EsSUFBRyxhQUFhLElBQUksR0FBRztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUlBLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBT0EsSUFBRyxhQUFhLE1BQU0sMEJBQTBCO0FBQ3pEO0FBK0RBLGVBQXNCLGFBQWEsU0FBOEI7QUFDL0QsTUFBSSxRQUFRLGVBQWUsS0FBSyxNQUFNLElBQUk7QUFDeEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGdCQUFnQixTQUFTO0FBQzNCLFVBQU1DLGNBQWFELElBQUc7QUFBQSxNQUNwQjtBQUFBLE1BQ0EsUUFBUTtBQUFBLE1BQ1JBLElBQUcsYUFBYTtBQUFBLE1BQ2hCO0FBQUEsSUFDRjtBQUVBLFdBQU8sYUFBYTtBQUFBLE1BQ2xCLGdCQUFnQjtBQUFBLE1BQ2hCLGdCQUFnQixRQUFRO0FBQUEsTUFDeEIsdUJBQXVCLE1BQU1DO0FBQUEsTUFDN0IsbUJBQW1CLFFBQVE7QUFBQSxJQUM3QixDQUFDO0FBQUEsRUFDSDtBQUVBLFFBQU0sb0JBQW9CLFFBQVEscUJBQXFCO0FBQUEsSUFDckQsUUFBUTtBQUFBLElBRVIsOEJBQThCO0FBQUEsSUFDOUIsMEJBQTBCO0FBQUEsSUFDMUIsNEJBQTRCO0FBQUEsSUFDNUIsU0FBUztBQUFBLEVBQ1g7QUFFQSxRQUFNLGVBQWU7QUFBQSxJQUNuQixRQUFRO0FBQUEsSUFDUixRQUFRO0FBQUEsSUFDUjtBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1Y7QUFFQSxRQUFNLFVBQVVELElBQUc7QUFBQSxJQUNqQixDQUFDLFFBQVEsY0FBYztBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGFBQWEsUUFBUSxjQUFjLFFBQVEsY0FBYztBQUMvRCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLHdCQUF3QjtBQUFBLEVBQzFDO0FBRUEsUUFBTSxrQkFBa0IsMkJBQTJCLFVBQVU7QUFDN0QsTUFBSSxDQUFDLGlCQUFpQjtBQUNwQixVQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUNsQztBQUVBLFFBQU0sY0FBYyxRQUFRLGVBQWU7QUFDM0MsUUFBTSxlQUFlLFlBQVk7QUFBQSxJQUMvQixZQUFZLGtCQUFrQixlQUFlO0FBQUEsSUFDN0M7QUFBQSxJQUNBQSxJQUFHLGdCQUFnQjtBQUFBLEVBQ3JCO0FBRUEsTUFBSSxRQUFRLFlBQVksUUFBUSxTQUFTLFlBQVksT0FBTztBQUMxRCxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sZ0JBQWdCO0FBRXRCLFVBQ0UsTUFBTTtBQUFBLElBQ0osUUFBUSxhQUFhLE1BQU0sWUFBWTtBQUFBLElBQ3ZDLFFBQVEsVUFBVSxXQUFXO0FBQUEsTUFDM0IsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGLEdBRUMsS0FBSyxFQUNMLFVBQVUsUUFBUSxhQUFhLE1BQU0sTUFBTTtBQUNoRDsiLAogICJuYW1lcyI6IFsidHMiLCAic291cmNlRmlsZSJdCn0K
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NyZWF0ZS1leHBhbmRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fVFlQRV9FWFBBTkRFUl9fXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGN1c3RvbSBjb21waWxlciBob3N0IHRoYXQgYXVnbWVudHMgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZSBmb3IgZXhwYW5kaW5nIGEgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBzb3VyY2VGaWxlTmFtZSBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBhdWdtZW50LlxuICogQHBhcmFtIHR5cGVFeHByZXNzaW9uIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIGdldFNvdXJjZUZpbGVGdW5jdGlvbiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGB0cy5Db21waWxlckhvc3RbXCJnZXRTb3VyY2VGaWxlXCJdYCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kZXJDb21waWxlckhvc3QgPSAoXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmcsXG4gIHR5cGVFeHByZXNzaW9uOiBzdHJpbmcsXG4gIGNvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucyxcbiAgZ2V0U291cmNlRmlsZUZ1bmN0aW9uPzogdHMuQ29tcGlsZXJIb3N0W1wiZ2V0U291cmNlRmlsZVwiXSxcbikgPT4ge1xuICBjb25zdCBjdXN0b21Db21waWxlckhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3QoY29tcGlsZXJPcHRpb25zID8/IHt9KTtcbiAgY29uc3Qgb3JpZ2luYWxHZXRTb3VyY2VGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LmdldFNvdXJjZUZpbGU7XG5cbiAgY3VzdG9tQ29tcGlsZXJIb3N0LmdldFNvdXJjZUZpbGUgPSAoZmlsZU5hbWUsIC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoZmlsZU5hbWUgPT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICBjb25zdCBzb3VyY2VGaWxlID0gKGdldFNvdXJjZUZpbGVGdW5jdGlvbiA/PyBvcmlnaW5hbEdldFNvdXJjZUZpbGUpKFxuICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgLi4uYXJncyxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzb3VyY2VGaWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICAgICAgY29uc3Qgc291cmNlVGV4dCA9IGB0eXBlICR7aWRlbnRpZmllclByZWZpeH1SZXN1bHQgPSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPCR7aWRlbnRpZmllclByZWZpeH1FeHByZXNzaW9uPjtcbiAgICAgICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbiA9ICR7dHlwZUV4cHJlc3Npb259O1xuXG4gICAgICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUlxuICAgICAgICAgID8gKC4uLmFyZ3M6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8QT4pID0+ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8Uj5cbiAgICAgICAgICA6IHsgW0sgaW4ga2V5b2YgVF06ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtcbiAgICAgICAgICBcbiAgICAgICAgJHtzb3VyY2VGaWxlLmdldEZ1bGxUZXh0KCl9YDtcblxuICAgICAgcmV0dXJuIHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgICAgIGZpbGVOYW1lLFxuICAgICAgICBzb3VyY2VUZXh0LFxuICAgICAgICBzb3VyY2VGaWxlLmxhbmd1YWdlVmVyc2lvbixcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yaWdpbmFsR2V0U291cmNlRmlsZShmaWxlTmFtZSwgLi4uYXJncyk7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRXhwYW5kZXJDb21waWxlckhvc3QgfSBmcm9tIFwiLi9jcmVhdGUtZXhwYW5kZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHsgZm9ybWF0LCB0eXBlIE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKi9cbmNvbnN0IGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fVFlQRV9FWFBBTkRFUl9SRVNVTFRfXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzb3VyY2UgZmlsZS4gV2hlbiBub3Qgc3BlY2lmaWVkLCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRlZmF1bHQgVHlwZVNjcmlwdCBjb21waWxlciBob3N0IGlzIHVzZWQuXG4gICAqL1xuICBnZXRTb3VyY2VGaWxlRnVuY3Rpb24/OiB0cy5Db21waWxlckhvc3RbXCJnZXRTb3VyY2VGaWxlXCJdO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHNvdXJjZSB0ZXh0IHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kTXlUeXBlT3B0aW9ucyA9XG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9uc1xuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIEV4cGFuZHMgYSBUeXBlU2NyaXB0IHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIGV4cGFuZGVkIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShvcHRpb25zOiBFeHBhbmRNeVR5cGVPcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGVFeHByZXNzaW9uLnRyaW0oKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBcIm5ldmVyXCI7XG4gIH1cblxuICBpZiAoXCJzb3VyY2VUZXh0XCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHNvdXJjZUZpbGUgPSB0cy5jcmVhdGVTb3VyY2VGaWxlKFxuICAgICAgXCJ0ZXN0LnRzXCIsXG4gICAgICBvcHRpb25zLnNvdXJjZVRleHQsXG4gICAgICB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LFxuICAgICAgdHJ1ZSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogXCJ0ZXN0LnRzXCIsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGdldFNvdXJjZUZpbGVGdW5jdGlvbjogKCkgPT4gc291cmNlRmlsZSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgdHNDb21waWxlck9wdGlvbnMgPSBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zID8/IHtcbiAgICBub0VtaXQ6IHRydWUsXG5cbiAgICBhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOiB0cnVlLFxuICAgIGFsbG93QXJiaXRyYXJ5RXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0pzOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IGNvbXBpbGVySG9zdCA9IGNyZWF0ZUV4cGFuZGVyQ29tcGlsZXJIb3N0KFxuICAgIG9wdGlvbnMuc291cmNlRmlsZU5hbWUsXG4gICAgb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBvcHRpb25zLmdldFNvdXJjZUZpbGVGdW5jdGlvbixcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbb3B0aW9ucy5zb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUob3B0aW9ucy5zb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCBmaXJzdElkZW50aWZpZXIgPSBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFmaXJzdElkZW50aWZpZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGUgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24oZmlyc3RJZGVudGlmaWVyKSxcbiAgICB1bmRlZmluZWQsXG4gICAgdHMuVHlwZUZvcm1hdEZsYWdzLk5vZGVCdWlsZGVyRmxhZ3NNYXNrLFxuICApO1xuXG4gIGlmIChvcHRpb25zLnByZXR0aWZ5ICYmIG9wdGlvbnMucHJldHRpZnkuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZXhwYW5kZWRUeXBlO1xuICB9XG5cbiAgY29uc3QgZHVtbXlUeXBlTmFtZSA9IFwiX19UWVBFX0VYUEFOREVSX1JFU1VMVF9fXCI7XG5cbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2R1bW15VHlwZU5hbWV9ID0gJHtleHBhbmRlZFR5cGV9YCxcbiAgICAgIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtkdW1teVR5cGVOYW1lfSA9IGAubGVuZ3RoKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQSxPQUFPLFFBQVE7QUFFZixJQUFNLG1CQUFtQjtBQVdsQixJQUFNLDZCQUE2QixDQUN4QyxnQkFDQSxnQkFDQSxpQkFDQSwwQkFDRztBQUNILFFBQU0scUJBQXFCLEdBQUcsbUJBQW1CLG1CQUFtQixDQUFDLENBQUM7QUFDdEUsUUFBTSx3QkFBd0IsbUJBQW1CO0FBRWpELHFCQUFtQixnQkFBZ0IsQ0FBQyxhQUFhLFNBQVM7QUFDeEQsUUFBSSxhQUFhLGdCQUFnQjtBQUMvQixZQUFNLGNBQWMseUJBQXlCO0FBQUEsUUFDM0M7QUFBQSxRQUNBLEdBQUc7QUFBQSxNQUNMO0FBRUEsVUFBSSxlQUFlLFFBQVc7QUFDNUIsZUFBTztBQUFBLE1BQ1Q7QUFHQSxZQUFNLGFBQWEsUUFBUSxnQkFBZ0IsWUFBWSxnQkFBZ0IsVUFBVSxnQkFBZ0I7QUFBQSxlQUN4RixnQkFBZ0IsZ0JBQWdCLGNBQWM7QUFBQTtBQUFBLGVBRTlDLGdCQUFnQjtBQUFBLHdCQUNQLGdCQUFnQixpQkFBaUIsZ0JBQWdCO0FBQUEsZ0NBQ3pDLGdCQUFnQjtBQUFBO0FBQUEsVUFFdEMsV0FBVyxZQUFZLENB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expand-my-type",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Expand TypeScript type expressions programmatically",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"expand",
|
|
@@ -32,15 +32,21 @@
|
|
|
32
32
|
},
|
|
33
33
|
"main": "dist/index.cjs",
|
|
34
34
|
"types": "dist/index.d.ts",
|
|
35
|
+
"bin": {
|
|
36
|
+
"expand-my-type": "./dist/cli.js"
|
|
37
|
+
},
|
|
35
38
|
"files": [
|
|
36
39
|
"dist/index.cjs",
|
|
37
40
|
"dist/index.d.cts",
|
|
38
41
|
"dist/index.d.ts",
|
|
39
|
-
"dist/index.js"
|
|
42
|
+
"dist/index.js",
|
|
43
|
+
"dist/cli.js"
|
|
40
44
|
],
|
|
41
45
|
"scripts": {
|
|
46
|
+
"bundle-cli": "tsup ./src/cli.ts --format esm --sourcemap inline --silent",
|
|
47
|
+
"bundle-lib": "tsup ./src/index.ts --format cjs,esm --dts --clean --sourcemap inline --silent",
|
|
42
48
|
"format": "prettier --write .",
|
|
43
|
-
"prepare": "
|
|
49
|
+
"prepare": "npm run bundle-lib && npm run bundle-cli",
|
|
44
50
|
"pretest": "tsc",
|
|
45
51
|
"test": "tsx --test --test-reporter spec ./src/index.test.ts"
|
|
46
52
|
},
|