expand-my-type 0.4.0 → 0.5.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 +23 -48
- package/dist/cli.js +12 -7
- package/dist/index.cjs +12 -7
- package/dist/index.js +12 -7
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -8,25 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
In TypeScript, expanding a type (also known as computing, resolving,
|
|
10
10
|
simplifying, unpacking, or unwrapping) refers to converting a type expression
|
|
11
|
-
into a flattened type that doesn't reference other types.
|
|
12
|
-
|
|
11
|
+
into a flattened type that doesn't reference other types. This is mostly done
|
|
12
|
+
to improve the readability of type hints shown in editors/IDEs.
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
```typescript
|
|
21
|
-
type ExpandedType = Compute<SomeType>;
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
This is mostly done to improve the readability of type hints shown in editors/IDEs.
|
|
25
|
-
|
|
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.
|
|
14
|
+
**Expand My Type** provides a programmatic way to expand type expressions in
|
|
15
|
+
TypeScript (see [How It Works](#how-it-works) section for more information). It
|
|
16
|
+
gets the source code as input, along with a type expression and returns the
|
|
17
|
+
expanded form as a string. That can be useful for code-generation, testing, and
|
|
18
|
+
debugging complex type errors.
|
|
30
19
|
|
|
31
20
|
Under the hood, it uses the [TypeScript Compiler API][ts-compiler-api] to expand
|
|
32
21
|
the type expression and optionally formats the output using
|
|
@@ -148,43 +137,29 @@ the following ways:
|
|
|
148
137
|
/* { a: string; b: number } */
|
|
149
138
|
```
|
|
150
139
|
|
|
151
|
-
##
|
|
140
|
+
## How It Works
|
|
152
141
|
|
|
153
|
-
Expand My Type uses the following utility
|
|
142
|
+
Expand My Type uses the following utility types to expand the type expression:
|
|
154
143
|
|
|
155
144
|
```typescript
|
|
145
|
+
// Expands a type expression
|
|
156
146
|
type Expand<T> = T extends (...args: infer A) => infer R
|
|
157
147
|
? (...args: Expand<A>) => Expand<R>
|
|
158
|
-
: {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
expanding T in the following snippet:
|
|
169
|
-
|
|
170
|
-
```typescript
|
|
171
|
-
type T = { s: S };
|
|
172
|
-
type S = "a" | "b";
|
|
148
|
+
: {
|
|
149
|
+
[K in keyof T]: T[K] extends string ? ExpandString<T[K]> : Expand<T[K]>;
|
|
150
|
+
} & {};
|
|
151
|
+
|
|
152
|
+
// Forces a union of string literal types to be expanded
|
|
153
|
+
type ExpandString<T extends string> = RemoveUnderscore<AppendUnderscore<T>>;
|
|
154
|
+
type AppendUnderscore<T extends string> = `${T}_` extends string
|
|
155
|
+
? `${T}_`
|
|
156
|
+
: never;
|
|
157
|
+
type RemoveUnderscore<T extends string> = T extends `${infer U}_` ? U : never;
|
|
173
158
|
```
|
|
174
159
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
Expanding recursive type references can lead to infinite loops. When an infinite
|
|
180
|
-
loop occurs, the generated output gets truncated. Therefore, prettifying the
|
|
181
|
-
truncated output will throw an error.
|
|
182
|
-
|
|
183
|
-
## Contributions
|
|
184
|
-
|
|
185
|
-
Considering the limitations above, contributions to improve the expansion
|
|
186
|
-
utility type are more than welcome.
|
|
160
|
+
This approach comes with some limitations. Most notably, expanding a type that
|
|
161
|
+
leads to an infinite recursion might throw an error (when prettify option is
|
|
162
|
+
enabled), return a truncated output, or return any.
|
|
187
163
|
|
|
188
|
-
[compute-type]: https://github.com/microsoft/TypeScript/blob/main/tests/cases/compiler/computedTypesKeyofNoIndexSignatureType.ts
|
|
189
164
|
[prettier]: https://prettier.io
|
|
190
165
|
[ts-compiler-api]: https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API
|
package/dist/cli.js
CHANGED
|
@@ -31,7 +31,12 @@ var createExpandCodeBlock = (typeExpression2) => {
|
|
|
31
31
|
|
|
32
32
|
type ${identifierPrefix}Expand<T> = T extends (...args: infer A) => infer R
|
|
33
33
|
? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
|
|
34
|
-
: { [K in keyof T]: ${identifierPrefix}Expand<T[K]>; } & {}
|
|
34
|
+
: { [K in keyof T]: T[K] extends string ? ${identifierPrefix}ExpandString<T[K]> : ${identifierPrefix}Expand<T[K]>; } & {};
|
|
35
|
+
|
|
36
|
+
// Forces a union of string literal types to be expanded
|
|
37
|
+
type ${identifierPrefix}ExpandString<T extends string> = ${identifierPrefix}RemoveUnderscore<${identifierPrefix}AppendUnderscore<T>>;
|
|
38
|
+
type ${identifierPrefix}AppendUnderscore<T extends string> = \`\${T}_\` extends string ? \`\${T}_\` : never;
|
|
39
|
+
type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
|
|
35
40
|
};
|
|
36
41
|
var formatTypeExpression = async (code, prettierOptions) => {
|
|
37
42
|
return (await format(
|
|
@@ -46,14 +51,14 @@ var formatTypeExpression = async (code, prettierOptions) => {
|
|
|
46
51
|
// src/index.ts
|
|
47
52
|
import path from "node:path";
|
|
48
53
|
import ts2 from "typescript";
|
|
49
|
-
var
|
|
54
|
+
var findResultIdentifierNode = (node) => {
|
|
50
55
|
if (node.getChildCount() == 0) {
|
|
51
56
|
if (!ts2.isIdentifier(node)) {
|
|
52
57
|
return void 0;
|
|
53
58
|
}
|
|
54
59
|
return node;
|
|
55
60
|
}
|
|
56
|
-
return ts2.forEachChild(node,
|
|
61
|
+
return ts2.forEachChild(node, findResultIdentifierNode);
|
|
57
62
|
};
|
|
58
63
|
async function expandMyType(options) {
|
|
59
64
|
if (options.typeExpression.trim() === "") {
|
|
@@ -94,13 +99,13 @@ async function expandMyType(options) {
|
|
|
94
99
|
if (!sourceFile) {
|
|
95
100
|
throw new Error("Source file not found!");
|
|
96
101
|
}
|
|
97
|
-
const
|
|
98
|
-
if (!
|
|
102
|
+
const resultIdentifierNode = findResultIdentifierNode(sourceFile);
|
|
103
|
+
if (!resultIdentifierNode) {
|
|
99
104
|
throw new Error("No node found!");
|
|
100
105
|
}
|
|
101
106
|
const typeChecker = program.getTypeChecker();
|
|
102
107
|
const expandedTypeString = typeChecker.typeToString(
|
|
103
|
-
typeChecker.getTypeAtLocation(
|
|
108
|
+
typeChecker.getTypeAtLocation(resultIdentifierNode),
|
|
104
109
|
void 0,
|
|
105
110
|
ts2.TypeFormatFlags.NodeBuilderFlagsMask
|
|
106
111
|
);
|
|
@@ -209,4 +214,4 @@ var result = await expandMyType({
|
|
|
209
214
|
tsCompilerOptions: tsParsedCommandLine?.options
|
|
210
215
|
});
|
|
211
216
|
console.log(result);
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiLCAiLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uczxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0ge1xuICBbUCBpbiBLXTogVFtQXSBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gVFtQXSA6IG5ldmVyO1xufTtcbmV4cG9ydCB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID0gUGFydGlhbDxcbiAgRXh0cmFjdEZ1bmN0aW9uczx0cy5Db21waWxlckhvc3Q+XG4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IGF1Z21lbnRzIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUgZm9yIGV4cGFuZGluZyBhIHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc291cmNlRmlsZU5hbWUgTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gYXVnbWVudC5cbiAqIEBwYXJhbSBjb2RlVG9BZGQgVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gcmVhZEZpbGVGdW5jdGlvblxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgPSAoXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmcsXG4gIGNvZGVUb0FkZDogc3RyaW5nLFxuICBjb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnMsXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4pID0+IHtcbiAgY29uc3QgY3VzdG9tQ29tcGlsZXJIb3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KGNvbXBpbGVyT3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID8/IHt9KSkge1xuICAgIGN1c3RvbUNvbXBpbGVySG9zdFtrZXldID0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMhW2tleV07XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFJlYWRGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlO1xuXG4gIGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZSA9IChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gb3JpZ2luYWxSZWFkRmlsZShmaWxlTmFtZSk7XG5cbiAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIGlmIChmaWxlTmFtZSAhPT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29kZVRvQWRkfVxcbiR7Y29udGVudHN9YDtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsICJpbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwicHJldHRpZXJcIjtcblxuY29uc3QgaWRlbnRpZmllclByZWZpeCA9IFwiX19FWFBBTkRfTVlfVFlQRV9fXCI7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRDb2RlQmxvY2sgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3Rlc3RzL2Nhc2VzL2NvbXBpbGVyL2NvbXB1dGVkVHlwZXNLZXlvZk5vSW5kZXhTaWduYXR1cmVUeXBlLnRzXG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDwke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbiA9ICR7dHlwZUV4cHJlc3Npb259O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQ+ID0gVCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSXG4gICAgICA/ICguLi5hcmdzOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPEE+KSA9PiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFI+XG4gICAgICA6IHsgW0sgaW4ga2V5b2YgVF06ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNpbXBsZVR5cGVBbGlhcyA9ICh0eXBlRXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHt0eXBlRXhwcmVzc2lvbn07YDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUeXBlRXhwcmVzc2lvbiA9IGFzeW5jIChcbiAgY29kZTogc3RyaW5nLFxuICBwcmV0dGllck9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gJHtjb2RlfWAsXG4gICAgICBwcmV0dGllck9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9IGAubGVuZ3RoKTtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0IH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgfSBmcm9tIFwiLi9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrLFxuICBmb3JtYXRUeXBlRXhwcmVzc2lvbixcbn0gZnJvbSBcIi4vY29kZS1nZW5lcmF0b3IudHNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBQcmV0dGllck9wdGlvbnMgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHRoZSBUWVBFX0VYUEFOREVSX1JFU1VMVCB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAqIEByZXR1cm5zIFRoZSBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZS5cbiAqL1xuY29uc3QgZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT0gMCkge1xuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIHB1dCB0aGUgX188SURFTlRJRklFUj5fXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nXG4gICAqL1xuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCBzb3VyY2UgdGV4dCB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZE15VHlwZU9wdGlvbnMgPVxuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnNcbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcblxuLyoqXG4gKiBFeHBhbmRzIGEgVHlwZVNjcmlwdCB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRoZSBleHBhbmRlZCB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUob3B0aW9uczogRXhwYW5kTXlUeXBlT3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlRXhwcmVzc2lvbi50cmltKCkgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gXCJuZXZlclwiO1xuICB9XG5cbiAgaWYgKFwic291cmNlVGV4dFwiIGluIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZXhwYW5kTXlUeXBlKHtcbiAgICAgIHNvdXJjZUZpbGVOYW1lOiBcImR1bW15LnRzXCIsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlYWRGaWxlKCkge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZVRleHQ7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZFNvdXJjZUZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMuc291cmNlRmlsZU5hbWUpO1xuXG4gIGNvbnN0IHRzQ29tcGlsZXJPcHRpb25zID0gb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyA/PyB7XG4gICAgbm9FbWl0OiB0cnVlLFxuXG4gICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dKczogdHJ1ZSxcbiAgfTtcblxuICBjb25zdCBjb21waWxlckhvc3QgPSBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QoXG4gICAgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSxcbiAgICBjcmVhdGVFeHBhbmRDb2RlQmxvY2sob3B0aW9ucy50eXBlRXhwcmVzc2lvbiksXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgb3B0aW9ucy5jb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCBmaXJzdElkZW50aWZpZXIgPSBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFmaXJzdElkZW50aWZpZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGVTdHJpbmcgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24oZmlyc3RJZGVudGlmaWVyKSxcbiAgICB1bmRlZmluZWQsXG4gICAgdHMuVHlwZUZvcm1hdEZsYWdzLk5vZGVCdWlsZGVyRmxhZ3NNYXNrLFxuICApO1xuXG4gIGlmIChvcHRpb25zLnByZXR0aWZ5ICYmIG9wdGlvbnMucHJldHRpZnkuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZXhwYW5kZWRUeXBlU3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdFR5cGVFeHByZXNzaW9uKGV4cGFuZGVkVHlwZVN0cmluZywgb3B0aW9ucy5wcmV0dGlmeT8ub3B0aW9ucyk7XG59XG4iLCAiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgZXhwYW5kTXlUeXBlIH0gZnJvbSBcIi4vaW5kZXgudHNcIjtcbmltcG9ydCB7IHBhcnNlQXJncywgdHlwZSBQYXJzZUFyZ3NDb25maWcgfSBmcm9tIFwibm9kZTp1dGlsXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxudHlwZSBWYWx1ZXMgPSB7XG4gIGhlbHA/OiBib29sZWFuO1xuICBwcmV0dGlmeTogYm9vbGVhbjtcbiAgdHNjb25maWc/OiBzdHJpbmc7XG59O1xuXG5jb25zdCB0cnlQYXJzZSA9IDxcbiAgVmFsdWVzIGV4dGVuZHMgUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICBzdHJpbmcgfCBib29sZWFuIHwgQXJyYXk8c3RyaW5nIHwgYm9vbGVhbj4gfCB1bmRlZmluZWRcbiAgPixcbiAgT3B0aW9ucyBleHRlbmRzIFBhcnNlQXJnc0NvbmZpZ1tcIm9wdGlvbnNcIl0gPSBQYXJzZUFyZ3NDb25maWdbXCJvcHRpb25zXCJdLFxuPihcbiAgb3B0aW9uczogT3B0aW9ucyxcbik6IHsgZXJyb3I/OiBFcnJvcjsgdmFsdWVzOiBWYWx1ZXM7IHBvc2l0aW9uYWxzOiBzdHJpbmdbXSB9ID0+IHtcbiAgbGV0IHJlc3VsdDogUmV0dXJuVHlwZTx0eXBlb2YgcGFyc2VBcmdzPjtcbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBwYXJzZUFyZ3Moe1xuICAgICAgb3B0aW9ucyxcbiAgICAgIHRva2VuczogdHJ1ZSxcbiAgICAgIGFsbG93UG9zaXRpb25hbHM6IHRydWUsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yLFxuICAgICAgdmFsdWVzOiB7fSBhcyBWYWx1ZXMsXG4gICAgICBwb3NpdGlvbmFsczogW10sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHsgdG9rZW5zLCB2YWx1ZXMsIHBvc2l0aW9uYWxzIH0gPSByZXN1bHQ7XG5cbiAgLy8gUmVwcm9jZXNzIHRoZSBvcHRpb24gdG9rZW5zIGFuZCBvdmVyd3JpdGUgdGhlIHJldHVybmVkIHZhbHVlcy5cbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMgPz8gW10pIHtcbiAgICBpZiAodG9rZW4ua2luZCA9PT0gXCJvcHRpb24tdGVybWluYXRvclwiIHx8IHRva2VuLmtpbmQgPT09IFwicG9zaXRpb25hbFwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4ubmFtZS5zdGFydHNXaXRoKFwibm8tXCIpKSB7XG4gICAgICAvLyBTdG9yZSBmb286ZmFsc2UgZm9yIC0tbm8tZm9vXG4gICAgICBjb25zdCBwb3NpdGl2ZU5hbWUgPSB0b2tlbi5uYW1lLnNsaWNlKFwibm8tXCIubGVuZ3RoKTtcbiAgICAgIHZhbHVlc1twb3NpdGl2ZU5hbWVdID0gZmFsc2U7XG4gICAgICBkZWxldGUgdmFsdWVzW3Rva2VuLm5hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNhdmUgdmFsdWUgc28gbGFzdCBvbmUgd2lucyBpZiBib3RoIC0tZm9vIGFuZCAtLW5vLWZvby5cbiAgICAgIHZhbHVlc1t0b2tlbi5uYW1lXSA9IHRva2VuLnZhbHVlID8/IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgIHZhbHVlczogdmFsdWVzIGFzIFZhbHVlcyxcbiAgICBwb3NpdGlvbmFscyxcbiAgfTtcbn07XG5cbmNvbnN0IHsgZXJyb3IsIHZhbHVlcywgcG9zaXRpb25hbHMgfSA9IHRyeVBhcnNlPFZhbHVlcz4oe1xuICBoZWxwOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgc2hvcnQ6IFwiaFwiLFxuICB9LFxuICBwcmV0dGlmeToge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIHNob3J0OiBcInBcIixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBcIm5vLXByZXR0aWZ5XCI6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBzaG9ydDogXCJQXCIsXG4gIH0sXG4gIHRzY29uZmlnOiB7XG4gICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICBzaG9ydDogXCJjXCIsXG4gIH0sXG59KTtcblxuaWYgKGVycm9yKSB7XG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgdXNhZ2VQcm9tcHQgPSBbXG4gIFwiVXNhZ2U6XCIsXG4gIFwiICBleHBhbmQtbXktdHlwZSBbb3B0aW9uc10gPHNvdXJjZS1maWxlPiA8ZXhwcmVzc2lvbj5cIixcbiAgXCJcIixcbiAgXCJPcHRpb25zOlwiLFxuICBcIiAgLWgsIC0taGVscFxcdFxcdFxcdFNob3cgdGhpcyBoZWxwIG1lc3NhZ2VcIixcbiAgXCIgIC1wLCAtLXByZXR0aWZ5XFx0XFx0UHJldHRpZnkgdGhlIG91dHB1dCAoZGVmYXVsdClcIixcbiAgXCIgIC1QLCAtLW5vLXByZXR0aWZ5XFx0XFx0RG8gbm90IHByZXR0aWZ5IHRoZSBvdXRwdXRcIixcbiAgXCIgIC1jLCAtLXRzY29uZmlnIDxmaWxlPlxcdFxcdFVzZSB0aGUgc3BlY2lmaWVkIHRzY29uZmlnLmpzb24gZmlsZVwiLFxuXS5qb2luKFwiXFxuXCIpO1xuXG5pZiAocG9zaXRpb25hbHMubGVuZ3RoICE9PSAyKSB7XG4gIGNvbnNvbGUuZXJyb3IodXNhZ2VQcm9tcHQpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmlmICh2YWx1ZXMuaGVscCkge1xuICBjb25zb2xlLmVycm9yKHVzYWdlUHJvbXB0KTtcbiAgcHJvY2Vzcy5leGl0KDApO1xufVxuXG5jb25zdCBbc291cmNlRmlsZU5hbWUsIHR5cGVFeHByZXNzaW9uXSA9IHBvc2l0aW9uYWxzO1xuY29uc3QgeyBwcmV0dGlmeSwgdHNjb25maWc6IHRzQ29uZmlnRmlsZU5hbWUgfSA9IHZhbHVlcztcblxubGV0IHRzUGFyc2VkQ29tbWFuZExpbmU6IHRzLlBhcnNlZENvbW1hbmRMaW5lIHwgdW5kZWZpbmVkO1xuXG5pZiAodHNDb25maWdGaWxlTmFtZSkge1xuICBjb25zdCBjb25maWdGaWxlID0gdHMucmVhZENvbmZpZ0ZpbGUodHNDb25maWdGaWxlTmFtZSwgdHMuc3lzLnJlYWRGaWxlKTtcbiAgY29uc3QgY29tcGlsZXJPcHRpb25zID0gdHMucGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQoXG4gICAgY29uZmlnRmlsZS5jb25maWcsXG4gICAgdHMuc3lzLFxuICAgIFwiLi9cIixcbiAgKTtcblxuICB0c1BhcnNlZENvbW1hbmRMaW5lID0gY29tcGlsZXJPcHRpb25zO1xufVxuXG5jb25zdCByZXN1bHQgPSBhd2FpdCBleHBhbmRNeVR5cGUoe1xuICBzb3VyY2VGaWxlTmFtZSxcbiAgdHlwZUV4cHJlc3Npb24sXG4gIHByZXR0aWZ5OiB7XG4gICAgZW5hYmxlZDogcHJldHRpZnksXG4gIH0sXG4gIHRzQ29tcGlsZXJPcHRpb25zOiB0c1BhcnNlZENvbW1hbmRMaW5lPy5vcHRpb25zLFxufSk7XG5cbmNvbnNvbGUubG9nKHJlc3VsdCk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7QUFBQSxPQUFPLFFBQVE7QUFrQlIsSUFBTSw4QkFBOEIsQ0FDekNBLGlCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFDSCxRQUFNLHFCQUFxQixHQUFHLG1CQUFtQixtQkFBbUIsQ0FBQyxHQUFHLElBQUk7QUFDNUUsYUFBVyxPQUFPLE9BQU8sS0FBSyxpQ0FBaUMsQ0FBQyxDQUFDLEdBQUc7QUFDbEUsdUJBQW1CLEdBQUcsSUFBSSw4QkFBK0IsR0FBRztBQUFBLEVBQzlEO0FBRUEsUUFBTSxtQkFBbUIsbUJBQW1CO0FBRTVDLHFCQUFtQixXQUFXLENBQUMsYUFBYTtBQUMxQyxVQUFNLFdB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QSxJQUNOLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxVQUFVO0FBQUEsSUFDUixNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUEsRUFDVDtBQUNGLENBQUM7QUFFRCxJQUFJLE9BQU87QUFDVCxVQUFRLE1BQU0sTUFBTSxPQUFPO0FBQzNCLFVBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBRUEsSUFBTSxjQUFjO0FBQUEsRUFDbEI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsRUFBRSxLQUFLLElBQUk7QUFFWCxJQUFJLFlBQVksV0FBVyxHQUFHO0FBQzVCLFVBQVEsTUFBTSxXQUFXO0FBQ3pCLFVBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBRUEsSUFBSSxPQUFPLE1BQU07QUFDZixVQUFRLE1BQU0sV0FBVztBQUN6QixVQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLElBQU0sQ0FBQyxnQkFBZ0IsY0FBYyxJQUFJO0FBQ3pDLElBQU0sRUFBRSxVQUFVLFVBQVUsaUJBQWlCLElBQUk7QUFFakQsSUFBSTtBQUVKLElBQUksa0JBQWtCO0FBQ3BCLFFBQU0sYUFBYUosSUFBRyxlQUFlLGtCQUFrQkEsSUFBRyxJQUFJLFFBQVE7QUFDdEUsUUFBTSxrQkFBa0JBLElBQUc7QUFBQSxJQUN6QixXQUFXO0FBQUEsSUFDWEEsSUFBRztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBRUEsd0JBQXNCO0FBQ3hCO0FBRUEsSUFBTSxTQUFTLE1BQU0sYUFBYTtBQUFBLEVBQ2hDO0FBQUEsRUFDQTtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLG1CQUFtQixxQkFBcUI7QUFDMUMsQ0FBQztBQUVELFFBQVEsSUFBSSxNQUFNOyIsCiAgIm5hbWVzIjogWyJzb3VyY2VGaWxlTmFtZSIsICJ0eXBlRXhwcmVzc2lvbiIsICJ0cyIsICJ0cyIsICJyZXN1bHQiLCAiZXJyb3IiLCAidmFsdWVzIiwgInBvc2l0aW9uYWxzIl0KfQo=
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiLCAiLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uczxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0ge1xuICBbUCBpbiBLXTogVFtQXSBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gVFtQXSA6IG5ldmVyO1xufTtcbmV4cG9ydCB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID0gUGFydGlhbDxcbiAgRXh0cmFjdEZ1bmN0aW9uczx0cy5Db21waWxlckhvc3Q+XG4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IGF1Z21lbnRzIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUgZm9yIGV4cGFuZGluZyBhIHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc291cmNlRmlsZU5hbWUgTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gYXVnbWVudC5cbiAqIEBwYXJhbSBjb2RlVG9BZGQgVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gcmVhZEZpbGVGdW5jdGlvblxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgPSAoXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmcsXG4gIGNvZGVUb0FkZDogc3RyaW5nLFxuICBjb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnMsXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4pID0+IHtcbiAgY29uc3QgY3VzdG9tQ29tcGlsZXJIb3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KGNvbXBpbGVyT3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID8/IHt9KSkge1xuICAgIGN1c3RvbUNvbXBpbGVySG9zdFtrZXldID0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMhW2tleV07XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFJlYWRGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlO1xuXG4gIGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZSA9IChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gb3JpZ2luYWxSZWFkRmlsZShmaWxlTmFtZSk7XG5cbiAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIGlmIChmaWxlTmFtZSAhPT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29kZVRvQWRkfVxcbiR7Y29udGVudHN9YDtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsICJpbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwicHJldHRpZXJcIjtcblxuY29uc3QgaWRlbnRpZmllclByZWZpeCA9IFwiX19FWFBBTkRfTVlfVFlQRV9fXCI7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRDb2RlQmxvY2sgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3Rlc3RzL2Nhc2VzL2NvbXBpbGVyL2NvbXB1dGVkVHlwZXNLZXlvZk5vSW5kZXhTaWduYXR1cmVUeXBlLnRzXG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDwke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbiA9ICR7dHlwZUV4cHJlc3Npb259O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQ+ID0gVCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSXG4gICAgICA/ICguLi5hcmdzOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPEE+KSA9PiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFI+XG4gICAgICA6IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBzdHJpbmcgPyAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFRbS10+IDogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUW0tdPjsgfSAmIHt9O1xuXG4gICAgLy8gRm9yY2VzIGEgdW5pb24gb2Ygc3RyaW5nIGxpdGVyYWwgdHlwZXMgdG8gYmUgZXhwYW5kZWRcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRTdHJpbmc8VCBleHRlbmRzIHN0cmluZz4gPSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTwke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUPj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFxcYFxcJHtUfV9cXGAgZXh0ZW5kcyBzdHJpbmcgPyBcXGBcXCR7VH1fXFxgIDogbmV2ZXI7XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgZXh0ZW5kcyBcXGBcXCR7aW5mZXIgVX1fXFxgID8gVSA6IG5ldmVyO2A7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlU2ltcGxlVHlwZUFsaWFzID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIGB0eXBlICR7aWRlbnRpZmllclByZWZpeH1SZXN1bHQgPSAke3R5cGVFeHByZXNzaW9ufTtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFR5cGVFeHByZXNzaW9uID0gYXN5bmMgKFxuICBjb2RlOiBzdHJpbmcsXG4gIHByZXR0aWVyT3B0aW9ucz86IFByZXR0aWVyT3B0aW9ucyxcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIGF3YWl0IGZvcm1hdChcbiAgICAgIGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSAke2NvZGV9YCxcbiAgICAgIHByZXR0aWVyT3B0aW9ucyA/PyB7XG4gICAgICAgIHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsXG4gICAgICAgIHNlbWk6IGZhbHNlLFxuICAgICAgfSxcbiAgICApXG4gIClcbiAgICAudHJpbSgpXG4gICAgLnN1YnN0cmluZyhgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gYC5sZW5ndGgpO1xufTtcbiIsICJpbXBvcnQgeyBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgfSBmcm9tIFwiLi9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHsgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVFeHBhbmRDb2RlQmxvY2ssXG4gIGZvcm1hdFR5cGVFeHByZXNzaW9uLFxufSBmcm9tIFwiLi9jb2RlLWdlbmVyYXRvci50c1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbi8qKlxuICogRmluZHMgdGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHR5cGUgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICovXG5jb25zdCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT0gMCkge1xuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIHB1dCB0aGUgX188SURFTlRJRklFUj5fXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUpO1xufTtcblxuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZU9wdGlvbnNCYXNlID0ge1xuICAvKipcbiAgICogVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBleHBhbmQuXG4gICAqIEBleGFtcGxlIFwiUmV0dXJuVHlwZTx0eXBlb2YgbXlGdW5jdGlvbj5cIlxuICAgKi9cbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgdHNDb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFByZXR0aWVyIG9wdGlvbnMuXG4gICAqL1xuICBwcmV0dGlmeT86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXR0aWZ5IHRoZSBvdXRwdXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIG9wdGlvbnMuIERvbid0IGZvcmdldCB0byBzZXQgdGhlIHBhcnNlciB0byBcInR5cGVzY3JpcHRcIi5cbiAgICAgKiBAZGVmYXVsdCB7IHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsIHNlbWk6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBvcHRpb25zPzogUHJldHRpZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogXCJkdW1teS50c1wiLFxuICAgICAgdHlwZUV4cHJlc3Npb246IG9wdGlvbnMudHlwZUV4cHJlc3Npb24sXG4gICAgICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlczoge1xuICAgICAgICByZWFkRmlsZSgpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zb3VyY2VUZXh0O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0SWRlbnRpZmllck5vZGUgPSBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghcmVzdWx0SWRlbnRpZmllck5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGVTdHJpbmcgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24ocmVzdWx0SWRlbnRpZmllck5vZGUpLFxuICAgIHVuZGVmaW5lZCxcbiAgICB0cy5UeXBlRm9ybWF0RmxhZ3MuTm9kZUJ1aWxkZXJGbGFnc01hc2ssXG4gICk7XG5cbiAgaWYgKG9wdGlvbnMucHJldHRpZnkgJiYgb3B0aW9ucy5wcmV0dGlmeS5lbmFibGVkID09PSBmYWxzZSkge1xuICAgIHJldHVybiBleHBhbmRlZFR5cGVTdHJpbmc7XG4gIH1cblxuICByZXR1cm4gZm9ybWF0VHlwZUV4cHJlc3Npb24oZXhwYW5kZWRUeXBlU3RyaW5nLCBvcHRpb25zLnByZXR0aWZ5Py5vcHRpb25zKTtcbn1cbiIsICIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBleHBhbmRNeVR5cGUgfSBmcm9tIFwiLi9pbmRleC50c1wiO1xuaW1wb3J0IHsgcGFyc2VBcmdzLCB0eXBlIFBhcnNlQXJnc0NvbmZpZyB9IGZyb20gXCJub2RlOnV0aWxcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIFZhbHVlcyA9IHtcbiAgaGVscD86IGJvb2xlYW47XG4gIHByZXR0aWZ5OiBib29sZWFuO1xuICB0c2NvbmZpZz86IHN0cmluZztcbn07XG5cbmNvbnN0IHRyeVBhcnNlID0gPFxuICBWYWx1ZXMgZXh0ZW5kcyBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHN0cmluZyB8IGJvb2xlYW4gfCBBcnJheTxzdHJpbmcgfCBib29sZWFuPiB8IHVuZGVmaW5lZFxuICA+LFxuICBPcHRpb25zIGV4dGVuZHMgUGFyc2VBcmdzQ29uZmlnW1wib3B0aW9uc1wiXSA9IFBhcnNlQXJnc0NvbmZpZ1tcIm9wdGlvbnNcIl0sXG4+KFxuICBvcHRpb25zOiBPcHRpb25zLFxuKTogeyBlcnJvcj86IEVycm9yOyB2YWx1ZXM6IFZhbHVlczsgcG9zaXRpb25hbHM6IHN0cmluZ1tdIH0gPT4ge1xuICBsZXQgcmVzdWx0OiBSZXR1cm5UeXBlPHR5cGVvZiBwYXJzZUFyZ3M+O1xuICB0cnkge1xuICAgIHJlc3VsdCA9IHBhcnNlQXJncyh7XG4gICAgICBvcHRpb25zLFxuICAgICAgdG9rZW5zOiB0cnVlLFxuICAgICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3IsXG4gICAgICB2YWx1ZXM6IHt9IGFzIFZhbHVlcyxcbiAgICAgIHBvc2l0aW9uYWxzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgeyB0b2tlbnMsIHZhbHVlcywgcG9zaXRpb25hbHMgfSA9IHJlc3VsdDtcblxuICAvLyBSZXByb2Nlc3MgdGhlIG9wdGlvbiB0b2tlbnMgYW5kIG92ZXJ3cml0ZSB0aGUgcmV0dXJuZWQgdmFsdWVzLlxuICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2VucyA/PyBbXSkge1xuICAgIGlmICh0b2tlbi5raW5kID09PSBcIm9wdGlvbi10ZXJtaW5hdG9yXCIgfHwgdG9rZW4ua2luZCA9PT0gXCJwb3NpdGlvbmFsXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0b2tlbi5uYW1lLnN0YXJ0c1dpdGgoXCJuby1cIikpIHtcbiAgICAgIC8vIFN0b3JlIGZvbzpmYWxzZSBmb3IgLS1uby1mb29cbiAgICAgIGNvbnN0IHBvc2l0aXZlTmFtZSA9IHRva2VuLm5hbWUuc2xpY2UoXCJuby1cIi5sZW5ndGgpO1xuICAgICAgdmFsdWVzW3Bvc2l0aXZlTmFtZV0gPSBmYWxzZTtcbiAgICAgIGRlbGV0ZSB2YWx1ZXNbdG9rZW4ubmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc2F2ZSB2YWx1ZSBzbyBsYXN0IG9uZSB3aW5zIGlmIGJvdGggLS1mb28gYW5kIC0tbm8tZm9vLlxuICAgICAgdmFsdWVzW3Rva2VuLm5hbWVdID0gdG9rZW4udmFsdWUgPz8gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVycm9yOiB1bmRlZmluZWQsXG4gICAgdmFsdWVzOiB2YWx1ZXMgYXMgVmFsdWVzLFxuICAgIHBvc2l0aW9uYWxzLFxuICB9O1xufTtcblxuY29uc3QgeyBlcnJvciwgdmFsdWVzLCBwb3NpdGlvbmFscyB9ID0gdHJ5UGFyc2U8VmFsdWVzPih7XG4gIGhlbHA6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBzaG9ydDogXCJoXCIsXG4gIH0sXG4gIHByZXR0aWZ5OiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgc2hvcnQ6IFwicFwiLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG4gIFwibm8tcHJldHRpZnlcIjoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIHNob3J0OiBcIlBcIixcbiAgfSxcbiAgdHNjb25maWc6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIHNob3J0OiBcImNcIixcbiAgfSxcbn0pO1xuXG5pZiAoZXJyb3IpIHtcbiAgY29uc29sZS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5jb25zdCB1c2FnZVByb21wdCA9IFtcbiAgXCJVc2FnZTpcIixcbiAgXCIgIGV4cGFuZC1teS10eXBlIFtvcHRpb25zXSA8c291cmNlLWZpbGU+IDxleHByZXNzaW9uPlwiLFxuICBcIlwiLFxuICBcIk9wdGlvbnM6XCIsXG4gIFwiICAtaCwgLS1oZWxwXFx0XFx0XFx0U2hvdyB0aGlzIGhlbHAgbWVzc2FnZVwiLFxuICBcIiAgLXAsIC0tcHJldHRpZnlcXHRcXHRQcmV0dGlmeSB0aGUgb3V0cHV0IChkZWZhdWx0KVwiLFxuICBcIiAgLVAsIC0tbm8tcHJldHRpZnlcXHRcXHREbyBub3QgcHJldHRpZnkgdGhlIG91dHB1dFwiLFxuICBcIiAgLWMsIC0tdHNjb25maWcgPGZpbGU+XFx0XFx0VXNlIHRoZSBzcGVjaWZpZWQgdHNjb25maWcuanNvbiBmaWxlXCIsXG5dLmpvaW4oXCJcXG5cIik7XG5cbmlmIChwb3NpdGlvbmFscy5sZW5ndGggIT09IDIpIHtcbiAgY29uc29sZS5lcnJvcih1c2FnZVByb21wdCk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuaWYgKHZhbHVlcy5oZWxwKSB7XG4gIGNvbnNvbGUuZXJyb3IodXNhZ2VQcm9tcHQpO1xuICBwcm9jZXNzLmV4aXQoMCk7XG59XG5cbmNvbnN0IFtzb3VyY2VGaWxlTmFtZSwgdHlwZUV4cHJlc3Npb25dID0gcG9zaXRpb25hbHM7XG5jb25zdCB7IHByZXR0aWZ5LCB0c2NvbmZpZzogdHNDb25maWdGaWxlTmFtZSB9ID0gdmFsdWVzO1xuXG5sZXQgdHNQYXJzZWRDb21tYW5kTGluZTogdHMuUGFyc2VkQ29tbWFuZExpbmUgfCB1bmRlZmluZWQ7XG5cbmlmICh0c0NvbmZpZ0ZpbGVOYW1lKSB7XG4gIGNvbnN0IGNvbmZpZ0ZpbGUgPSB0cy5yZWFkQ29uZmlnRmlsZSh0c0NvbmZpZ0ZpbGVOYW1lLCB0cy5zeXMucmVhZEZpbGUpO1xuICBjb25zdCBjb21waWxlck9wdGlvbnMgPSB0cy5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChcbiAgICBjb25maWdGaWxlLmNvbmZpZyxcbiAgICB0cy5zeXMsXG4gICAgXCIuL1wiLFxuICApO1xuXG4gIHRzUGFyc2VkQ29tbWFuZExpbmUgPSBjb21waWxlck9wdGlvbnM7XG59XG5cbmNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4cGFuZE15VHlwZSh7XG4gIHNvdXJjZUZpbGVOYW1lLFxuICB0eXBlRXhwcmVzc2lvbixcbiAgcHJldHRpZnk6IHtcbiAgICBlbmFibGVkOiBwcmV0dGlmeSxcbiAgfSxcbiAgdHNDb21waWxlck9wdGlvbnM6IHRzUGFyc2VkQ29tbWFuZExpbmU/Lm9wdGlvbnMsXG59KTtcblxuY29uc29sZS5sb2cocmVzdWx0KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7OztBQUFBLE9BQU8sUUFBUTtBQWtCUixJQUFNLDhCQUE4QixDQUN6Q0EsaUJBQ0EsV0FDQSxpQkFDQSxrQ0FDRztBQUNILFFBQU0scUJBQXFCLEdBQUcsbUJBQW1CLG1CQUFtQixDQUFDLEdBQUcsSUFBSTtBQUM1RSxhQUFXLE9BQU8sT0FBTyxLQUFLLGlDQUFpQyxDQUFDLENBQUMsR0FBRztBQUNsRSx1QkFBbUIsR0FBRyxJQUFJLDhCQUErQixHQUFHO0FBQUEsRUFDOUQ7QUFFQSxRQUFNLG1CQUFtQixtQkFBbUI7QUFFNUMscUJBQW1CLFdBQVcsQ0FBQyxhQUFhO0FBQzFDLFVBQU0sV0FBVyxpQkFBaUIsUUFBUTtBQUUxQyxRQUFJLGFBQWEsUUFBVztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksYUFBYUEsaUJBQWdCO0FBQy9CLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxHQUFHLFNBQVM7QUFBQSxFQUFLLFFBQVE7QUFBQSxFQUNsQztBQUVBLFNBQU87QUFDVDs7O0FDN0NBLFNBQVMsY0FBYztBQUV2QixJQUFNLG1CQUFtQjtBQUVsQixJQUFNLHdCQUF3QixDQUFDQyxvQkFBMkI7QUFFL0QsU0FBTyxRQUFRLGdCQUFnQixZQUFZLGdCQUFnQixVQUFVLGdCQUFnQjtBQUFBLFdBQzVFLGdCQUFnQixnQkFBZ0JBLGVBQWM7QUFBQTtBQUFBLFdBRTlDLGdCQUFnQjtBQUFBLG9CQUNQLGdCQUFnQixpQkFBaUIsZ0JBQWdCO0FBQUEsa0RBQ25CLGdCQUFnQix3QkFBd0IsZ0JBQWdCO0FBQUE7QUFBQTtBQUFBLFdBRy9GLGdCQUFnQixvQ0FBb0MsZ0JBQWdCLG9CQUFvQixnQkFBZ0I7QUFBQSxXQUN4Ryxn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QU8sTUFBTTtBQUNmLFVBQVEsTUFBTSxXQUFXO0FBQ3pCLFVBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBRUEsSUFBTSxDQUFDLGdCQUFnQixjQUFjLElBQUk7QUFDekMsSUFBTSxFQUFFLFVBQVUsVUFBVSxpQkFBaUIsSUFBSTtBQUVqRCxJQUFJO0FBRUosSUFBSSxrQkFBa0I7QUFDcEIsUUFBTSxhQUFhSixJQUFHLGVBQWUsa0JBQWtCQSxJQUFHLElBQUksUUFBUTtBQUN0RSxRQUFNLGtCQUFrQkEsSUFBRztBQUFBLElBQ3pCLFdBQVc7QUFBQSxJQUNYQSxJQUFHO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFFQSx3QkFBc0I7QUFDeEI7QUFFQSxJQUFNLFNBQVMsTUFBTSxhQUFhO0FBQUEsRUFDaEM7QUFBQSxFQUNBO0FBQUEsRUFDQSxVQUFVO0FBQUEsSUFDUixTQUFTO0FBQUEsRUFDWDtBQUFBLEVBQ0EsbUJBQW1CLHFCQUFxQjtBQUMxQyxDQUFDO0FBRUQsUUFBUSxJQUFJLE1BQU07IiwKICAibmFtZXMiOiBbInNvdXJjZUZpbGVOYW1lIiwgInR5cGVFeHByZXNzaW9uIiwgInRzIiwgInRzIiwgInJlc3VsdCIsICJlcnJvciIsICJ2YWx1ZXMiLCAicG9zaXRpb25hbHMiXQp9Cg==
|
package/dist/index.cjs
CHANGED
|
@@ -64,7 +64,12 @@ var createExpandCodeBlock = (typeExpression) => {
|
|
|
64
64
|
|
|
65
65
|
type ${identifierPrefix}Expand<T> = T extends (...args: infer A) => infer R
|
|
66
66
|
? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
|
|
67
|
-
: { [K in keyof T]: ${identifierPrefix}Expand<T[K]>; } & {}
|
|
67
|
+
: { [K in keyof T]: T[K] extends string ? ${identifierPrefix}ExpandString<T[K]> : ${identifierPrefix}Expand<T[K]>; } & {};
|
|
68
|
+
|
|
69
|
+
// Forces a union of string literal types to be expanded
|
|
70
|
+
type ${identifierPrefix}ExpandString<T extends string> = ${identifierPrefix}RemoveUnderscore<${identifierPrefix}AppendUnderscore<T>>;
|
|
71
|
+
type ${identifierPrefix}AppendUnderscore<T extends string> = \`\${T}_\` extends string ? \`\${T}_\` : never;
|
|
72
|
+
type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
|
|
68
73
|
};
|
|
69
74
|
var formatTypeExpression = async (code, prettierOptions) => {
|
|
70
75
|
return (await (0, import_prettier.format)(
|
|
@@ -79,14 +84,14 @@ var formatTypeExpression = async (code, prettierOptions) => {
|
|
|
79
84
|
// src/index.ts
|
|
80
85
|
var import_node_path = __toESM(require("path"), 1);
|
|
81
86
|
var import_typescript2 = __toESM(require("typescript"), 1);
|
|
82
|
-
var
|
|
87
|
+
var findResultIdentifierNode = (node) => {
|
|
83
88
|
if (node.getChildCount() == 0) {
|
|
84
89
|
if (!import_typescript2.default.isIdentifier(node)) {
|
|
85
90
|
return void 0;
|
|
86
91
|
}
|
|
87
92
|
return node;
|
|
88
93
|
}
|
|
89
|
-
return import_typescript2.default.forEachChild(node,
|
|
94
|
+
return import_typescript2.default.forEachChild(node, findResultIdentifierNode);
|
|
90
95
|
};
|
|
91
96
|
async function expandMyType(options) {
|
|
92
97
|
if (options.typeExpression.trim() === "") {
|
|
@@ -127,13 +132,13 @@ async function expandMyType(options) {
|
|
|
127
132
|
if (!sourceFile) {
|
|
128
133
|
throw new Error("Source file not found!");
|
|
129
134
|
}
|
|
130
|
-
const
|
|
131
|
-
if (!
|
|
135
|
+
const resultIdentifierNode = findResultIdentifierNode(sourceFile);
|
|
136
|
+
if (!resultIdentifierNode) {
|
|
132
137
|
throw new Error("No node found!");
|
|
133
138
|
}
|
|
134
139
|
const typeChecker = program.getTypeChecker();
|
|
135
140
|
const expandedTypeString = typeChecker.typeToString(
|
|
136
|
-
typeChecker.getTypeAtLocation(
|
|
141
|
+
typeChecker.getTypeAtLocation(resultIdentifierNode),
|
|
137
142
|
void 0,
|
|
138
143
|
import_typescript2.default.TypeFormatFlags.NodeBuilderFlagsMask
|
|
139
144
|
);
|
|
@@ -146,4 +151,4 @@ async function expandMyType(options) {
|
|
|
146
151
|
0 && (module.exports = {
|
|
147
152
|
expandMyType
|
|
148
153
|
});
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50cyIsICIuLi9zcmMvY29kZS1nZW5lcmF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKi9cbmNvbnN0IGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fPElERU5USUZJRVI+X18gdHlwZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgIC8vIGZpbGUsIHdlIGNhbiByZXR1cm4gdGhlIGZpcnN0IGlkZW50aWZpZXIgd2UgZmluZC5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUpO1xufTtcblxuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZU9wdGlvbnNCYXNlID0ge1xuICAvKipcbiAgICogVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBleHBhbmQuXG4gICAqIEBleGFtcGxlIFwiUmV0dXJuVHlwZTx0eXBlb2YgbXlGdW5jdGlvbj5cIlxuICAgKi9cbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgdHNDb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFByZXR0aWVyIG9wdGlvbnMuXG4gICAqL1xuICBwcmV0dGlmeT86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXR0aWZ5IHRoZSBvdXRwdXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIG9wdGlvbnMuIERvbid0IGZvcmdldCB0byBzZXQgdGhlIHBhcnNlciB0byBcInR5cGVzY3JpcHRcIi5cbiAgICAgKiBAZGVmYXVsdCB7IHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsIHNlbWk6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBvcHRpb25zPzogUHJldHRpZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogXCJkdW1teS50c1wiLFxuICAgICAgdHlwZUV4cHJlc3Npb246IG9wdGlvbnMudHlwZUV4cHJlc3Npb24sXG4gICAgICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlczoge1xuICAgICAgICByZWFkRmlsZSgpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zb3VyY2VUZXh0O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgZmlyc3RJZGVudGlmaWVyID0gZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghZmlyc3RJZGVudGlmaWVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgZXhwYW5kZWRUeXBlU3RyaW5nID0gdHlwZUNoZWNrZXIudHlwZVRvU3RyaW5nKFxuICAgIHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGZpcnN0SWRlbnRpZmllciksXG4gICAgdW5kZWZpbmVkLFxuICAgIHRzLlR5cGVGb3JtYXRGbGFncy5Ob2RlQnVpbGRlckZsYWdzTWFzayxcbiAgKTtcblxuICBpZiAob3B0aW9ucy5wcmV0dGlmeSAmJiBvcHRpb25zLnByZXR0aWZ5LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihleHBhbmRlZFR5cGVTdHJpbmcsIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMpO1xufVxuIiwgImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIHJlYWRGaWxlRnVuY3Rpb25cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fSkpIHtcbiAgICBjdXN0b21Db21waWxlckhvc3Rba2V5XSA9IGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIVtrZXldO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcInByZXR0aWVyXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUlxuICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFRbS10+OyB9ICYge307YDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTaW1wbGVUeXBlQWxpYXMgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7dHlwZUV4cHJlc3Npb259O2A7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VHlwZUV4cHJlc3Npb24gPSBhc3luYyAoXG4gIGNvZGU6IHN0cmluZyxcbiAgcHJldHRpZXJPcHRpb25zPzogUHJldHRpZXJPcHRpb25zLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgYXdhaXQgZm9ybWF0KFxuICAgICAgYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9ICR7Y29kZX1gLFxuICAgICAgcHJldHRpZXJPcHRpb25zID8/IHtcbiAgICAgICAgcGFyc2VyOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgc2VtaTogZmFsc2UsXG4gICAgICB9LFxuICAgIClcbiAgKVxuICAgIC50cmltKClcbiAgICAuc3Vic3RyaW5nKGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSBgLmxlbmd0aCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSx3QkFBZTtBQWtCUixJQUFNLDhCQUE4QixDQUN6QyxnQkFDQSxXQUNBLGlCQUNBLGtDQUNHO0FBQ0gsUUFBTSxxQkFBcUIsa0JBQUFBLFFBQUcsbUJBQW1CLG1CQUFtQixDQUFDLEdBQUcsSUFBSTtBQUM1RSxhQUFXLE9BQU8sT0FBTyxLQUFLLGlDQUFpQyxDQUFDLENBQUMsR0FBRztBQUNsRSx1QkFBbUIsR0FBRyxJQUFJLDhCQUErQixHQUFHO0FBQUEsRUFDOUQ7QUFFQSxRQUFNLG1CQUFtQixtQkFBbUI7QUFFNUMscUJBQW1CLFdBQVcsQ0FBQyxhQUFhO0FBQzFDLFVBQU0sV0FBVyxpQkFBaUIsUUFBUTtBQUUxQyxRQUFJLGFBQWEsUUFBVztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksYUFBYSxnQkFBZ0I7QUFDL0IsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLEdBQUcsU0FBUztBQUFBLEVBQUssUUFBUTtBQUFBLEVBQ2xDO0FBRUEsU0FBTztBQUNUOzs7QUM3Q0Esc0JBQXVCO0FBRXZCLElBQU0sbUJBQW1CO0FBRWxCLElBQU0sd0JBQXdCLENBQUMsbUJBQTJCO0FBRS9ELFNBQU8sUUFBUSxnQkFBZ0IsWUFBWSxnQkFBZ0IsVUFBVSxnQkFBZ0I7QUFBQSxXQUM1RSxnQkFBZ0IsZ0JBQWdCLGNBQWM7QUFBQTtBQUFBLFdBRTlDLGdCQUFnQjtBQUFBLG9CQUNQLGdCQUFnQixpQkFBaUIsZ0JBQWdCO0FBQUEsNEJBQ3pDLGdCQUFnQjtBQUM1QztBQU1PLElBQU0sdUJBQXVCLE9BQ2xDLE1BQ0Esb0JBQ0c7QUFDSCxVQUNFLFVBQU07QUFBQSxJQUNKLFFBQVEsZ0JBQWdCLE1BQU0sSUFBSTtBQUFBLElBQ2xDLG1CQUFtQjtBQUFBLE1BQ2pCLFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRixHQUVDLEtBQUssRUFDTCxVQUFVLFFBQVEsZ0JBQWdCLE1BQU0sTUFBTTtBQUNuRDs7O0FGNUJBLHVCQUFpQjtBQUVqQixJQUFBQyxxQkFBZTtBQVFmLElBQU0sNkJBQTZCLENBQUMsU0FBdUM7QUFDekUsTUFBSSxLQUFLLGNBQWMsS0FBSyxHQUFHO0FBQzdCLFFBQUksQ0FBQyxtQkFBQUMsUUFBRyxhQUFhLElBQUksR0FBRztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUlBLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxtQkFBQUEsUUFBRyxhQUFhLE1BQU0sMEJBQTBCO0FBQ3pEO0FBZ0VBLGVBQXNCLGFBQWEsU0FBOEI7QUFDL0QsTUFBSSxRQUFRLGVBQWUsS0FBSyxNQUFNLElBQUk7QUFDeEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGdCQUFnQixTQUFTO0FBQzNCLFdBQU8sYUFBYTtBQUFBLE1BQ2xCLGdCQUFnQjtBQUFBLE1BQ2hCLGdCQUFnQixRQUFRO0FBQUEsTUFDeEIsK0JBQStCO0FBQUEsUUFDN0IsV0FBVztBQUNULGlCQUFPLFFBQVE7QUFBQSxRQUNqQjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLG1CQUFtQixRQUFRO0FBQUEsSUFDN0IsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLHlCQUF5QixpQkFBQUMsUUFBSyxRQUFRLFFBQVEsY0FBYztBQUVsRSxRQUFNLG9CQUFvQixRQUFRLHFCQUFxQjtBQUFBLElBQ3JELFFBQVE7QUFBQSxJQUVSLDhCQUE4QjtBQUFBLElBQzlCLDBCQUEwQjtBQUFBLElBQzFCLDRCQUE0QjtBQUFBLElBQzVCLFNBQVM7QUFBQSxFQUNYO0FBRUEsUUFBTSxlQUFlO0FBQUEsSUFDbkI7QUFBQSxJQUNBLHNCQUFzQixRQUFRLGNBQWM7QUFBQSxJQUM1QztBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1Y7QUFFQSxRQUFNLFVBQVUsbUJBQUFELFFBQUc7QUFBQSxJQUNqQixDQUFDLHNCQUFzQjtBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGFBQWEsUUFBUSxjQUFjLHNCQUFzQjtBQUMvRCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLHdCQUF3QjtBQUFBLEVBQzFDO0FBRUEsUUFBTSxrQkFBa0IsMkJBQTJCLFVBQVU7QUFDN0QsTUFBSSxDQUFDLGlCQUFpQjtBQUNwQixVQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUNsQztBQUVBLFFBQU0sY0FBYyxRQUFRLGVBQWU7QUFDM0MsUUFBTSxxQkFBcUIsWUFBWTtBQUFBLElBQ3JDLFlBQVksa0JBQWtCLGVBQWU7QUFBQSxJQUM3QztBQUFBLElBQ0EsbUJBQUFBLFFBQUcsZ0JBQWdCO0FBQUEsRUFDckI7QUFFQSxNQUFJLFFBQVEsWUFBWSxRQUFRLFNBQVMsWUFBWSxPQUFPO0FBQzFELFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxxQkFBcUIsb0JBQW9CLFFBQVEsVUFBVSxPQUFPO0FBQzNFOyIsCiAgIm5hbWVzIjogWyJ0cyIsICJpbXBvcnRfdHlwZXNjcmlwdCIsICJ0cyIsICJwYXRoIl0KfQo=
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50cyIsICIuLi9zcmMvY29kZS1nZW5lcmF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIE5vZGUgaW4gd2hpY2ggdHlwZSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgdHlwZSBpZGVudGlmaWVyIG5vZGUuXG4gKi9cbmNvbnN0IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSA9IChub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlLmdldENoaWxkQ291bnQoKSA9PSAwKSB7XG4gICAgaWYgKCF0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gU2luY2Ugd2UgcHV0IHRoZSBfXzxJREVOVElGSUVSPl9fIHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgICAvLyBmaWxlLCB3ZSBjYW4gcmV0dXJuIHRoZSBmaXJzdCBpZGVudGlmaWVyIHdlIGZpbmQuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nXG4gICAqL1xuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCBzb3VyY2UgdGV4dCB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZE15VHlwZU9wdGlvbnMgPVxuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnNcbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcblxuLyoqXG4gKiBFeHBhbmRzIGEgVHlwZVNjcmlwdCB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRoZSBleHBhbmRlZCB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUob3B0aW9uczogRXhwYW5kTXlUeXBlT3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlRXhwcmVzc2lvbi50cmltKCkgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gXCJuZXZlclwiO1xuICB9XG5cbiAgaWYgKFwic291cmNlVGV4dFwiIGluIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZXhwYW5kTXlUeXBlKHtcbiAgICAgIHNvdXJjZUZpbGVOYW1lOiBcImR1bW15LnRzXCIsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlYWRGaWxlKCkge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZVRleHQ7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZFNvdXJjZUZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMuc291cmNlRmlsZU5hbWUpO1xuXG4gIGNvbnN0IHRzQ29tcGlsZXJPcHRpb25zID0gb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyA/PyB7XG4gICAgbm9FbWl0OiB0cnVlLFxuXG4gICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dKczogdHJ1ZSxcbiAgfTtcblxuICBjb25zdCBjb21waWxlckhvc3QgPSBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QoXG4gICAgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSxcbiAgICBjcmVhdGVFeHBhbmRDb2RlQmxvY2sob3B0aW9ucy50eXBlRXhwcmVzc2lvbiksXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgb3B0aW9ucy5jb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCByZXN1bHRJZGVudGlmaWVyTm9kZSA9IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFyZXN1bHRJZGVudGlmaWVyTm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5vZGUgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IGV4cGFuZGVkVHlwZVN0cmluZyA9IHR5cGVDaGVja2VyLnR5cGVUb1N0cmluZyhcbiAgICB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihyZXN1bHRJZGVudGlmaWVyTm9kZSksXG4gICAgdW5kZWZpbmVkLFxuICAgIHRzLlR5cGVGb3JtYXRGbGFncy5Ob2RlQnVpbGRlckZsYWdzTWFzayxcbiAgKTtcblxuICBpZiAob3B0aW9ucy5wcmV0dGlmeSAmJiBvcHRpb25zLnByZXR0aWZ5LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihleHBhbmRlZFR5cGVTdHJpbmcsIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMpO1xufVxuIiwgImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIHJlYWRGaWxlRnVuY3Rpb25cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fSkpIHtcbiAgICBjdXN0b21Db21waWxlckhvc3Rba2V5XSA9IGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIVtrZXldO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcInByZXR0aWVyXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUlxuICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUW0tdPiA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtcblxuICAgIC8vIEZvcmNlcyBhIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFsIHR5cGVzIHRvIGJlIGV4cGFuZGVkXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFQgZXh0ZW5kcyBzdHJpbmc+ID0gJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8JHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VD4+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBcXGBcXCR7VH1fXFxgIGV4dGVuZHMgc3RyaW5nID8gXFxgXFwke1R9X1xcYCA6IG5ldmVyO1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgXFxgXFwke2luZmVyIFV9X1xcYCA/IFUgOiBuZXZlcjtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNpbXBsZVR5cGVBbGlhcyA9ICh0eXBlRXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHt0eXBlRXhwcmVzc2lvbn07YDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUeXBlRXhwcmVzc2lvbiA9IGFzeW5jIChcbiAgY29kZTogc3RyaW5nLFxuICBwcmV0dGllck9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gJHtjb2RlfWAsXG4gICAgICBwcmV0dGllck9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9IGAubGVuZ3RoKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLHdCQUFlO0FBa0JSLElBQU0sOEJBQThCLENBQ3pDLGdCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFDSCxRQUFNLHFCQUFxQixrQkFBQUEsUUFBRyxtQkFBbUIsbUJBQW1CLENBQUMsR0FBRyxJQUFJO0FBQzVFLGFBQVcsT0FBTyxPQUFPLEtBQUssaUNBQWlDLENBQUMsQ0FBQyxHQUFHO0FBQ2xFLHVCQUFtQixHQUFHLElBQUksOEJBQStCLEdBQUc7QUFBQSxFQUM5RDtBQUVBLFFBQU0sbUJBQW1CLG1CQUFtQjtBQUU1QyxxQkFBbUIsV0FBVyxDQUFDLGFBQWE7QUFDMUMsVUFBTSxXQUFXLGlCQUFpQixRQUFRO0FBRTFDLFFBQUksYUFBYSxRQUFXO0FBQzFCLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxhQUFhLGdCQUFnQjtBQUMvQixhQUFPO0FBQUEsSUFDVDtBQUVBLFdBQU8sR0FBRyxTQUFTO0FBQUEsRUFBSyxRQUFRO0FBQUEsRUFDbEM7QUFFQSxTQUFPO0FBQ1Q7OztBQzdDQSxzQkFBdUI7QUFFdkIsSUFBTSxtQkFBbUI7QUFFbEIsSUFBTSx3QkFBd0IsQ0FBQyxtQkFBMkI7QUFFL0QsU0FBTyxRQUFRLGdCQUFnQixZQUFZLGdCQUFnQixVQUFVLGdCQUFnQjtBQUFBLFdBQzVFLGdCQUFnQixnQkFBZ0IsY0FBYztBQUFBO0FBQUEsV0FFOUMsZ0JBQWdCO0FBQUEsb0JBQ1AsZ0JBQWdCLGlCQUFpQixnQkFBZ0I7QUFBQSxrREFDbkIsZ0JBQWdCLHdCQUF3QixnQkFBZ0I7QUFBQTtBQUFBO0FBQUEsV0FHL0YsZ0JBQWdCLG9DQUFvQyxnQkFBZ0Isb0JBQW9CLGdCQUFnQjtBQUFBLFdBQ3hHLGdCQUFnQjtBQUFBLFdBQ2hCLGdCQUFnQjtBQUMzQjtBQU1PLElBQU0sdUJBQXVCLE9BQ2xDLE1BQ0Esb0JBQ0c7QUFDSCxVQUNFLFVBQU07QUFBQSxJQUNKLFFBQVEsZ0JBQWdCLE1BQU0sSUFBSTtBQUFBLElBQ2xDLG1CQUFtQjtBQUFBLE1BQ2pCLFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRixHQUVDLEtBQUssRUFDTCxVQUFVLFFBQVEsZ0JBQWdCLE1BQU0sTUFBTTtBQUNuRDs7O0FGakNBLHVCQUFpQjtBQUVqQixJQUFBQyxxQkFBZTtBQVFmLElBQU0sMkJBQTJCLENBQUMsU0FBdUM7QUFDdkUsTUFBSSxLQUFLLGNBQWMsS0FBSyxHQUFHO0FBQzdCLFFBQUksQ0FBQyxtQkFBQUMsUUFBRyxhQUFhLElBQUksR0FBRztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUlBLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxtQkFBQUEsUUFBRyxhQUFhLE1BQU0sd0JBQXdCO0FBQ3ZEO0FBZ0VBLGVBQXNCLGFBQWEsU0FBOEI7QUFDL0QsTUFBSSxRQUFRLGVBQWUsS0FBSyxNQUFNLElBQUk7QUFDeEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGdCQUFnQixTQUFTO0FBQzNCLFdBQU8sYUFBYTtBQUFBLE1BQ2xCLGdCQUFnQjtBQUFBLE1BQ2hCLGdCQUFnQixRQUFRO0FBQUEsTUFDeEIsK0JBQStCO0FBQUEsUUFDN0IsV0FBVztBQUNULGlCQUFPLFFBQVE7QUFBQSxRQUNqQjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLG1CQUFtQixRQUFRO0FBQUEsSUFDN0IsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLHlCQUF5QixpQkFBQUMsUUFBSyxRQUFRLFFBQVEsY0FBYztBQUVsRSxRQUFNLG9CQUFvQixRQUFRLHFCQUFxQjtBQUFBLElBQ3JELFFBQVE7QUFBQSxJQUVSLDhCQUE4QjtBQUFBLElBQzlCLDBCQUEwQjtBQUFBLElBQzFCLDRCQUE0QjtBQUFBLElBQzVCLFNBQVM7QUFBQSxFQUNYO0FBRUEsUUFBTSxlQUFlO0FBQUEsSUFDbkI7QUFBQSxJQUNBLHNCQUFzQixRQUFRLGNBQWM7QUFBQSxJQUM1QztBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1Y7QUFFQSxRQUFNLFVBQVUsbUJBQUFELFFBQUc7QUFBQSxJQUNqQixDQUFDLHNCQUFzQjtBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGFBQWEsUUFBUSxjQUFjLHNCQUFzQjtBQUMvRCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLHdCQUF3QjtBQUFBLEVBQzFDO0FBRUEsUUFBTSx1QkFBdUIseUJBQXlCLFVBQVU7QUFDaEUsTUFBSSxDQUFDLHNCQUFzQjtBQUN6QixVQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUNsQztBQUVBLFFBQU0sY0FBYyxRQUFRLGVBQWU7QUFDM0MsUUFBTSxxQkFBcUIsWUFBWTtBQUFBLElBQ3JDLFlBQVksa0JBQWtCLG9CQUFvQjtBQUFBLElBQ2xEO0FBQUEsSUFDQSxtQkFBQUEsUUFBRyxnQkFBZ0I7QUFBQSxFQUNyQjtBQUVBLE1BQUksUUFBUSxZQUFZLFFBQVEsU0FBUyxZQUFZLE9BQU87QUFDMUQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLHFCQUFxQixvQkFBb0IsUUFBUSxVQUFVLE9BQU87QUFDM0U7IiwKICAibmFtZXMiOiBbInRzIiwgImltcG9ydF90eXBlc2NyaXB0IiwgInRzIiwgInBhdGgiXQp9Cg==
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,12 @@ var createExpandCodeBlock = (typeExpression) => {
|
|
|
29
29
|
|
|
30
30
|
type ${identifierPrefix}Expand<T> = T extends (...args: infer A) => infer R
|
|
31
31
|
? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
|
|
32
|
-
: { [K in keyof T]: ${identifierPrefix}Expand<T[K]>; } & {}
|
|
32
|
+
: { [K in keyof T]: T[K] extends string ? ${identifierPrefix}ExpandString<T[K]> : ${identifierPrefix}Expand<T[K]>; } & {};
|
|
33
|
+
|
|
34
|
+
// Forces a union of string literal types to be expanded
|
|
35
|
+
type ${identifierPrefix}ExpandString<T extends string> = ${identifierPrefix}RemoveUnderscore<${identifierPrefix}AppendUnderscore<T>>;
|
|
36
|
+
type ${identifierPrefix}AppendUnderscore<T extends string> = \`\${T}_\` extends string ? \`\${T}_\` : never;
|
|
37
|
+
type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
|
|
33
38
|
};
|
|
34
39
|
var formatTypeExpression = async (code, prettierOptions) => {
|
|
35
40
|
return (await format(
|
|
@@ -44,14 +49,14 @@ var formatTypeExpression = async (code, prettierOptions) => {
|
|
|
44
49
|
// src/index.ts
|
|
45
50
|
import path from "node:path";
|
|
46
51
|
import ts2 from "typescript";
|
|
47
|
-
var
|
|
52
|
+
var findResultIdentifierNode = (node) => {
|
|
48
53
|
if (node.getChildCount() == 0) {
|
|
49
54
|
if (!ts2.isIdentifier(node)) {
|
|
50
55
|
return void 0;
|
|
51
56
|
}
|
|
52
57
|
return node;
|
|
53
58
|
}
|
|
54
|
-
return ts2.forEachChild(node,
|
|
59
|
+
return ts2.forEachChild(node, findResultIdentifierNode);
|
|
55
60
|
};
|
|
56
61
|
async function expandMyType(options) {
|
|
57
62
|
if (options.typeExpression.trim() === "") {
|
|
@@ -92,13 +97,13 @@ async function expandMyType(options) {
|
|
|
92
97
|
if (!sourceFile) {
|
|
93
98
|
throw new Error("Source file not found!");
|
|
94
99
|
}
|
|
95
|
-
const
|
|
96
|
-
if (!
|
|
100
|
+
const resultIdentifierNode = findResultIdentifierNode(sourceFile);
|
|
101
|
+
if (!resultIdentifierNode) {
|
|
97
102
|
throw new Error("No node found!");
|
|
98
103
|
}
|
|
99
104
|
const typeChecker = program.getTypeChecker();
|
|
100
105
|
const expandedTypeString = typeChecker.typeToString(
|
|
101
|
-
typeChecker.getTypeAtLocation(
|
|
106
|
+
typeChecker.getTypeAtLocation(resultIdentifierNode),
|
|
102
107
|
void 0,
|
|
103
108
|
ts2.TypeFormatFlags.NodeBuilderFlagsMask
|
|
104
109
|
);
|
|
@@ -110,4 +115,4 @@ async function expandMyType(options) {
|
|
|
110
115
|
export {
|
|
111
116
|
expandMyType
|
|
112
117
|
};
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIHJlYWRGaWxlRnVuY3Rpb25cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fSkpIHtcbiAgICBjdXN0b21Db21waWxlckhvc3Rba2V5XSA9IGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIVtrZXldO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcInByZXR0aWVyXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUlxuICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFRbS10+OyB9ICYge307YDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTaW1wbGVUeXBlQWxpYXMgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7dHlwZUV4cHJlc3Npb259O2A7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VHlwZUV4cHJlc3Npb24gPSBhc3luYyAoXG4gIGNvZGU6IHN0cmluZyxcbiAgcHJldHRpZXJPcHRpb25zPzogUHJldHRpZXJPcHRpb25zLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgYXdhaXQgZm9ybWF0KFxuICAgICAgYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9ICR7Y29kZX1gLFxuICAgICAgcHJldHRpZXJPcHRpb25zID8/IHtcbiAgICAgICAgcGFyc2VyOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgc2VtaTogZmFsc2UsXG4gICAgICB9LFxuICAgIClcbiAgKVxuICAgIC50cmltKClcbiAgICAuc3Vic3RyaW5nKGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSBgLmxlbmd0aCk7XG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKi9cbmNvbnN0IGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fPElERU5USUZJRVI+X18gdHlwZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgIC8vIGZpbGUsIHdlIGNhbiByZXR1cm4gdGhlIGZpcnN0IGlkZW50aWZpZXIgd2UgZmluZC5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUpO1xufTtcblxuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZU9wdGlvbnNCYXNlID0ge1xuICAvKipcbiAgICogVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBleHBhbmQuXG4gICAqIEBleGFtcGxlIFwiUmV0dXJuVHlwZTx0eXBlb2YgbXlGdW5jdGlvbj5cIlxuICAgKi9cbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgdHNDb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFByZXR0aWVyIG9wdGlvbnMuXG4gICAqL1xuICBwcmV0dGlmeT86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXR0aWZ5IHRoZSBvdXRwdXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIG9wdGlvbnMuIERvbid0IGZvcmdldCB0byBzZXQgdGhlIHBhcnNlciB0byBcInR5cGVzY3JpcHRcIi5cbiAgICAgKiBAZGVmYXVsdCB7IHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsIHNlbWk6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBvcHRpb25zPzogUHJldHRpZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogXCJkdW1teS50c1wiLFxuICAgICAgdHlwZUV4cHJlc3Npb246IG9wdGlvbnMudHlwZUV4cHJlc3Npb24sXG4gICAgICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlczoge1xuICAgICAgICByZWFkRmlsZSgpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zb3VyY2VUZXh0O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgZmlyc3RJZGVudGlmaWVyID0gZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghZmlyc3RJZGVudGlmaWVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgZXhwYW5kZWRUeXBlU3RyaW5nID0gdHlwZUNoZWNrZXIudHlwZVRvU3RyaW5nKFxuICAgIHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGZpcnN0SWRlbnRpZmllciksXG4gICAgdW5kZWZpbmVkLFxuICAgIHRzLlR5cGVGb3JtYXRGbGFncy5Ob2RlQnVpbGRlckZsYWdzTWFzayxcbiAgKTtcblxuICBpZiAob3B0aW9ucy5wcmV0dGlmeSAmJiBvcHRpb25zLnByZXR0aWZ5LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihleHBhbmRlZFR5cGVTdHJpbmcsIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLE9BQU8sUUFBUTtBQWtCUixJQUFNLDhCQUE4QixDQUN6QyxnQkFDQSxXQUNBLGlCQUNBLGtDQUNHO0FBQ0gsUUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsbUJBQW1CLENBQUMsR0FBRyxJQUFJO0FBQzVFLGFBQVcsT0FBTyxPQUFPLEtBQUssaUNBQWlDLENBQUMsQ0FBQyxHQUFHO0FBQ2xFLHVCQUFtQixHQUFHLElBQUksOEJBQStCLEdBQUc7QUFBQSxFQUM5RDtBQUVBLFFBQU0sbUJBQW1CLG1CQUFtQjtBQUU1QyxxQkFBbUIsV0FBVyxDQUFDLGFBQWE7QUFDMUMsVUFBTSxXQUFXLGlCQUFpQixRQUFRO0FBRTFDLFFBQUksYUFBYSxRQUFXO0FBQzFCLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxhQUFhLGdCQUFnQjtBQUMvQixhQUFPO0FBQUEsSUFDVDtBQUVBLFdBQU8sR0FBRyxTQUFTO0FBQUEsRUFBSyxRQUFRO0FBQUEsRUFDbEM7QUFFQSxTQUFPO0FBQ1Q7OztBQzdDQSxTQUFTLGNBQWM7QUFFdkIsSUFBTSxtQkFBbUI7QUFFbEIsSUFBTSx3QkFBd0IsQ0FBQyxtQkFBMkI7QUFFL0QsU0FBTyxRQUFRLGdCQUFnQixZQUFZLGdCQUFnQixVQUFVLGdCQUFnQjtBQUFBLFdBQzVFLGdCQUFnQixnQkFBZ0IsY0FBYztBQUFBO0FBQUEsV0FFOUMsZ0JBQWdCO0FBQUEsb0JBQ1AsZ0JBQWdCLGlCQUFpQixnQkFBZ0I7QUFBQSw0QkFDekMsZ0JBQWdCO0FBQzVDO0FBTU8sSUFBTSx1QkFBdUIsT0FDbEMsTUFDQSxvQkFDRztBQUNILFVBQ0UsTUFBTTtBQUFBLElBQ0osUUFBUSxnQkFBZ0IsTUFBTSxJQUFJO0FBQUEsSUFDbEMsbUJBQW1CO0FBQUEsTUFDakIsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGLEdBRUMsS0FBSyxFQUNMLFVBQVUsUUFBUSxnQkFBZ0IsTUFBTSxNQUFNO0FBQ25EOzs7QUM1QkEsT0FBTyxVQUFVO0FBRWpCLE9BQU9BLFNBQVE7QUFRZixJQUFNLDZCQUE2QixDQUFDLFNBQXVDO0FBQ3pFLE1BQUksS0FBSyxjQUFjLEtBQUssR0FBRztBQUM3QixRQUFJLENBQUNBLElBQUcsYUFBYSxJQUFJLEdBQUc7QUFDMUIsYUFBTztBQUFBLElBQ1Q7QUFJQSxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU9BLElBQUcsYUFBYSxNQUFNLDBCQUEwQjtBQUN6RDtBQWdFQSxlQUFzQixhQUFhLFNBQThCO0FBQy9ELE1BQUksUUFBUSxlQUFlLEtBQUssTUFBTSxJQUFJO0FBQ3hDLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxnQkFBZ0IsU0FBUztBQUMzQixXQUFPLGFBQWE7QUFBQSxNQUNsQixnQkFBZ0I7QUFBQSxNQUNoQixnQkFBZ0IsUUFBUTtBQUFBLE1BQ3hCLCtCQUErQjtBQUFBLFFBQzdCLFdBQVc7QUFDVCxpQkFBTyxRQUFRO0FBQUEsUUFDakI7QUFBQSxNQUNGO0FBQUEsTUFDQSxtQkFBbUIsUUFBUTtBQUFBLElBQzdCLENBQUM7QUFBQSxFQUNIO0FBRUEsUUFBTSx5QkFBeUIsS0FBSyxRQUFRLFFBQVEsY0FBYztBQUVsRSxRQUFNLG9CQUFvQixRQUFRLHFCQUFxQjtBQUFBLElBQ3JELFFBQVE7QUFBQSxJQUVSLDhCQUE4QjtBQUFBLElBQzlCLDBCQUEwQjtBQUFBLElBQzFCLDRCQUE0QjtBQUFBLElBQzVCLFNBQVM7QUFBQSxFQUNYO0FBRUEsUUFBTSxlQUFlO0FBQUEsSUFDbkI7QUFBQSxJQUNBLHNCQUFzQixRQUFRLGNBQWM7QUFBQSxJQUM1QztBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1Y7QUFFQSxRQUFNLFVBQVVBLElBQUc7QUFBQSxJQUNqQixDQUFDLHNCQUFzQjtBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGFBQWEsUUFBUSxjQUFjLHNCQUFzQjtBQUMvRCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLHdCQUF3QjtBQUFBLEVBQzFDO0FBRUEsUUFBTSxrQkFBa0IsMkJBQTJCLFVBQVU7QUFDN0QsTUFBSSxDQUFDLGlCQUFpQjtBQUNwQixVQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUNsQztBQUVBLFFBQU0sY0FBYyxRQUFRLGVBQWU7QUFDM0MsUUFBTSxxQkFBcUIsWUFBWTtBQUFBLElBQ3JDLFlBQVksa0JBQWtCLGVBQWU7QUFBQSxJQUM3QztBQUFBLElBQ0FBLElBQUcsZ0JBQWdCO0FBQUEsRUFDckI7QUFFQSxNQUFJLFFBQVEsWUFBWSxRQUFRLFNBQVMsWUFBWSxPQUFPO0FBQzFELFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxxQkFBcUIsb0JBQW9CLFFBQVEsVUFBVSxPQUFPO0FBQzNFOyIsCiAgIm5hbWVzIjogWyJ0cyJdCn0K
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIHJlYWRGaWxlRnVuY3Rpb25cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fSkpIHtcbiAgICBjdXN0b21Db21waWxlckhvc3Rba2V5XSA9IGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIVtrZXldO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcInByZXR0aWVyXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUlxuICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUW0tdPiA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtcblxuICAgIC8vIEZvcmNlcyBhIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFsIHR5cGVzIHRvIGJlIGV4cGFuZGVkXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFQgZXh0ZW5kcyBzdHJpbmc+ID0gJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8JHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VD4+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBcXGBcXCR7VH1fXFxgIGV4dGVuZHMgc3RyaW5nID8gXFxgXFwke1R9X1xcYCA6IG5ldmVyO1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgXFxgXFwke2luZmVyIFV9X1xcYCA/IFUgOiBuZXZlcjtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNpbXBsZVR5cGVBbGlhcyA9ICh0eXBlRXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHt0eXBlRXhwcmVzc2lvbn07YDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUeXBlRXhwcmVzc2lvbiA9IGFzeW5jIChcbiAgY29kZTogc3RyaW5nLFxuICBwcmV0dGllck9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gJHtjb2RlfWAsXG4gICAgICBwcmV0dGllck9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9IGAubGVuZ3RoKTtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0IH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgfSBmcm9tIFwiLi9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrLFxuICBmb3JtYXRUeXBlRXhwcmVzc2lvbixcbn0gZnJvbSBcIi4vY29kZS1nZW5lcmF0b3IudHNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBQcmV0dGllck9wdGlvbnMgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG4vKipcbiAqIEZpbmRzIHRoZSByZXN1bHQgdHlwZSBpZGVudGlmaWVyIG5vZGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0eXBlIHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqL1xuY29uc3QgZmluZFJlc3VsdElkZW50aWZpZXJOb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fPElERU5USUZJRVI+X18gdHlwZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgIC8vIGZpbGUsIHdlIGNhbiByZXR1cm4gdGhlIGZpcnN0IGlkZW50aWZpZXIgd2UgZmluZC5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZFJlc3VsdElkZW50aWZpZXJOb2RlKTtcbn07XG5cbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVPcHRpb25zQmFzZSA9IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIGV4cHJlc3Npb24gdG8gZXhwYW5kLlxuICAgKiBAZXhhbXBsZSBcIlJldHVyblR5cGU8dHlwZW9mIG15RnVuY3Rpb24+XCJcbiAgICovXG4gIHR5cGVFeHByZXNzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgY29tcGlsZXIgb3B0aW9ucy5cbiAgICovXG4gIHRzQ29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQcmV0dGllciBvcHRpb25zLlxuICAgKi9cbiAgcHJldHRpZnk/OiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBwcmV0dGlmeSB0aGUgb3V0cHV0LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBQcmV0dGllciBvcHRpb25zLiBEb24ndCBmb3JnZXQgdG8gc2V0IHRoZSBwYXJzZXIgdG8gXCJ0eXBlc2NyaXB0XCIuXG4gICAgICogQGRlZmF1bHQgeyBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLCBzZW1pOiBmYWxzZSB9XG4gICAgICovXG4gICAgb3B0aW9ucz86IFByZXR0aWVyT3B0aW9ucztcbiAgfTtcblxuICAvKipcbiAgICogQSByZWNvcmQgb2YgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIGluIHRoZSBjb21waWxlciBob3N0LiBVc2VmdWwgZm9yIG1vY2tpbmdcbiAgICovXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHNvdXJjZSB0ZXh0IHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kTXlUeXBlT3B0aW9ucyA9XG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9uc1xuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIEV4cGFuZHMgYSBUeXBlU2NyaXB0IHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIGV4cGFuZGVkIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShvcHRpb25zOiBFeHBhbmRNeVR5cGVPcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGVFeHByZXNzaW9uLnRyaW0oKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBcIm5ldmVyXCI7XG4gIH1cblxuICBpZiAoXCJzb3VyY2VUZXh0XCIgaW4gb3B0aW9ucykge1xuICAgIHJldHVybiBleHBhbmRNeVR5cGUoe1xuICAgICAgc291cmNlRmlsZU5hbWU6IFwiZHVtbXkudHNcIixcbiAgICAgIHR5cGVFeHByZXNzaW9uOiBvcHRpb25zLnR5cGVFeHByZXNzaW9uLFxuICAgICAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM6IHtcbiAgICAgICAgcmVhZEZpbGUoKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc291cmNlVGV4dDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0c0NvbXBpbGVyT3B0aW9uczogb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkU291cmNlRmlsZU5hbWUgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5zb3VyY2VGaWxlTmFtZSk7XG5cbiAgY29uc3QgdHNDb21waWxlck9wdGlvbnMgPSBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zID8/IHtcbiAgICBub0VtaXQ6IHRydWUsXG5cbiAgICBhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOiB0cnVlLFxuICAgIGFsbG93QXJiaXRyYXJ5RXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0pzOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IGNvbXBpbGVySG9zdCA9IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdChcbiAgICByZXNvbHZlZFNvdXJjZUZpbGVOYW1lLFxuICAgIGNyZWF0ZUV4cGFuZENvZGVCbG9jayhvcHRpb25zLnR5cGVFeHByZXNzaW9uKSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBvcHRpb25zLmNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuICApO1xuXG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKFxuICAgIFtyZXNvbHZlZFNvdXJjZUZpbGVOYW1lXSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBjb21waWxlckhvc3QsXG4gICk7XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IHByb2dyYW0uZ2V0U291cmNlRmlsZShyZXNvbHZlZFNvdXJjZUZpbGVOYW1lKTtcbiAgaWYgKCFzb3VyY2VGaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU291cmNlIGZpbGUgbm90IGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdElkZW50aWZpZXJOb2RlID0gZmluZFJlc3VsdElkZW50aWZpZXJOb2RlKHNvdXJjZUZpbGUpO1xuICBpZiAoIXJlc3VsdElkZW50aWZpZXJOb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgZXhwYW5kZWRUeXBlU3RyaW5nID0gdHlwZUNoZWNrZXIudHlwZVRvU3RyaW5nKFxuICAgIHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKHJlc3VsdElkZW50aWZpZXJOb2RlKSxcbiAgICB1bmRlZmluZWQsXG4gICAgdHMuVHlwZUZvcm1hdEZsYWdzLk5vZGVCdWlsZGVyRmxhZ3NNYXNrLFxuICApO1xuXG4gIGlmIChvcHRpb25zLnByZXR0aWZ5ICYmIG9wdGlvbnMucHJldHRpZnkuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZXhwYW5kZWRUeXBlU3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdFR5cGVFeHByZXNzaW9uKGV4cGFuZGVkVHlwZVN0cmluZywgb3B0aW9ucy5wcmV0dGlmeT8ub3B0aW9ucyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsT0FBTyxRQUFRO0FBa0JSLElBQU0sOEJBQThCLENBQ3pDLGdCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFDSCxRQUFNLHFCQUFxQixHQUFHLG1CQUFtQixtQkFBbUIsQ0FBQyxHQUFHLElBQUk7QUFDNUUsYUFBVyxPQUFPLE9BQU8sS0FBSyxpQ0FBaUMsQ0FBQyxDQUFDLEdBQUc7QUFDbEUsdUJBQW1CLEdBQUcsSUFBSSw4QkFBK0IsR0FBRztBQUFBLEVBQzlEO0FBRUEsUUFBTSxtQkFBbUIsbUJBQW1CO0FBRTVDLHFCQUFtQixXQUFXLENBQUMsYUFBYTtBQUMxQyxVQUFNLFdBQVcsaUJBQWlCLFFBQVE7QUFFMUMsUUFBSSxhQUFhLFFBQVc7QUFDMUIsYUFBTztB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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.5.0",
|
|
4
4
|
"description": "Expand TypeScript type expressions programmatically",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"expand",
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
59
59
|
"@types/node": "^20.12.12",
|
|
60
|
-
"npm-check-updates": "^16.14.
|
|
61
|
-
"prettier-plugin-packagejson": "^2.
|
|
60
|
+
"npm-check-updates": "^16.14.20",
|
|
61
|
+
"prettier-plugin-packagejson": "^2.5.0",
|
|
62
62
|
"tsup": "^8.0.2",
|
|
63
|
-
"tsx": "^4.
|
|
63
|
+
"tsx": "^4.11.0"
|
|
64
64
|
}
|
|
65
65
|
}
|