@buildvision/nest-sdk-generator 1.2.1 → 2.0.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/build/analyzer/controllers.js +9 -1
- package/build/analyzer/extractor.js +6 -17
- package/build/analyzer/methods.js +2 -4
- package/build/analyzer/module.js +4 -7
- package/build/analyzer/params.d.ts +59 -17
- package/build/analyzer/params.js +135 -130
- package/build/analyzer/route.d.ts +4 -1
- package/build/analyzer/route.js +9 -5
- package/build/bin.js +0 -0
- package/build/generator/genmodules.d.ts +8 -9
- package/build/generator/genmodules.js +134 -109
- package/build/generator/index.js +2 -7
- package/build/logging.js +4 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/bun.lockb +0 -0
- package/package.json +3 -2
- package/src/analyzer/controllers.ts +13 -1
- package/src/analyzer/extractor.ts +6 -20
- package/src/analyzer/methods.ts +3 -5
- package/src/analyzer/module.ts +4 -9
- package/src/analyzer/params.ts +197 -181
- package/src/analyzer/route.ts +6 -2
- package/src/generator/genmodules.ts +155 -125
- package/src/generator/index.ts +1 -5
- package/src/logging.ts +2 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/src/analyzer/decorator.ts +0 -29
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* @file Generate SDK modules
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import { SdkController } from '../analyzer/controller'
|
|
6
6
|
import { SdkModules } from '../analyzer/controllers'
|
|
7
7
|
import { SdkHttpMethod, SdkMethod } from '../analyzer/methods'
|
|
8
|
-
import {
|
|
9
|
-
import { resolveRouteWith, unparseRoute } from '../analyzer/route'
|
|
8
|
+
import { SdkMethodParam, getParamResolvedTypes, isParamResolvedType } from '../analyzer/params'
|
|
9
|
+
import { paramsFromRoute, resolveRouteWith, unparseRoute } from '../analyzer/route'
|
|
10
10
|
import { ResolvedTypeDeps, normalizeExternalFilePath } from '../analyzer/typedeps'
|
|
11
11
|
import { panic } from '../logging'
|
|
12
12
|
|
|
@@ -19,163 +19,160 @@ export function generateSdkModules(modules: SdkModules): Map<string, string> {
|
|
|
19
19
|
/** Generated module files */
|
|
20
20
|
const genFiles = new Map<string, string>()
|
|
21
21
|
|
|
22
|
+
/** Index file content: Exports all controllers */
|
|
23
|
+
const indexContent: string[] = []
|
|
24
|
+
|
|
22
25
|
// Iterate over each module
|
|
23
26
|
for (const [moduleName, controllers] of modules) {
|
|
24
27
|
// Iterate over each of the module's controllers
|
|
25
28
|
for (const [controllerName, controller] of controllers) {
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
genFiles.set(controller.camelClassName + '.ts', generateController(moduleName, controller))
|
|
30
|
+
indexContent.push(`export { default as ${controller.camelClassName} } from "./${controller.camelClassName}";`)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
28
33
|
|
|
29
|
-
|
|
30
|
-
out.push(`/// Controller: "${controllerName}" registered as "${controller.registrationName}" (${controller.methods.length} routes)`)
|
|
31
|
-
out.push('')
|
|
32
|
-
out.push('import { request } from "../central";')
|
|
34
|
+
genFiles.set('index.ts', indexContent.join('\n'))
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
return genFiles
|
|
37
|
+
}
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
export function generateController(moduleName: string, controller: SdkController): string {
|
|
40
|
+
const controllerName = controller.camelClassName
|
|
41
|
+
/** Generated controller's content */
|
|
42
|
+
const out: string[] = []
|
|
37
43
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
out.push('/// Parent module: ' + moduleName)
|
|
45
|
+
out.push(`/// Controller: "${controllerName}" registered as "${controller.registrationName}" (${controller.methods.length} routes)`)
|
|
46
|
+
out.push(`/// File Path: ${controller.path}`)
|
|
47
|
+
out.push('')
|
|
48
|
+
out.push('import { request } from "./central";')
|
|
41
49
|
|
|
42
|
-
|
|
50
|
+
const imports = new Map<string, string[]>()
|
|
43
51
|
|
|
44
|
-
|
|
45
|
-
depsToImport.push(...args.values())
|
|
46
|
-
}
|
|
52
|
+
const depsToImport = new Array<ResolvedTypeDeps>()
|
|
47
53
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
// Iterate over each controller
|
|
55
|
+
for (const method of controller.methods.values()) {
|
|
56
|
+
const { routeParams, queryParams, bodyParams } = method.params
|
|
51
57
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
58
|
+
depsToImport.push(method.returnType)
|
|
59
|
+
depsToImport.push(...getParamResolvedTypes(routeParams))
|
|
60
|
+
depsToImport.push(...getParamResolvedTypes(queryParams))
|
|
61
|
+
depsToImport.push(...getParamResolvedTypes(bodyParams))
|
|
62
|
+
}
|
|
60
63
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (!imported) {
|
|
67
|
-
imported = []
|
|
68
|
-
imports.set(file, imported)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
for (const typ of types) {
|
|
72
|
-
if (!imported.includes(typ)) {
|
|
73
|
-
imported.push(typ)
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
64
|
+
// Build the imports list
|
|
65
|
+
for (const dep of depsToImport) {
|
|
66
|
+
for (const [file, types] of dep.dependencies) {
|
|
67
|
+
let imported = imports.get(file)
|
|
78
68
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
)
|
|
69
|
+
if (!imported) {
|
|
70
|
+
imported = []
|
|
71
|
+
imports.set(file, imported)
|
|
83
72
|
}
|
|
84
73
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
(acc, method) => {
|
|
90
|
-
if (method.httpMethod === SdkHttpMethod.Get) {
|
|
91
|
-
acc.queries.push(method)
|
|
92
|
-
} else {
|
|
93
|
-
acc.mutations.push(method)
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return acc
|
|
97
|
-
},
|
|
98
|
-
{ mutations: [] as SdkMethod[], queries: [] as SdkMethod[] }
|
|
99
|
-
);
|
|
100
|
-
|
|
101
|
-
out.push(` queries: {`)
|
|
102
|
-
|
|
103
|
-
for (const method of queries) {
|
|
104
|
-
out.push(generateSdkMethod(method))
|
|
74
|
+
for (const typ of types) {
|
|
75
|
+
if (!imported.includes(typ)) {
|
|
76
|
+
imported.push(typ)
|
|
77
|
+
}
|
|
105
78
|
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
106
81
|
|
|
107
|
-
|
|
82
|
+
for (const [file, types] of imports) {
|
|
83
|
+
out.push(
|
|
84
|
+
`import type { ${types.join(', ')} } from "../_types/${normalizeExternalFilePath(file.replace(/\\/g, '/')).replace(/\\/g, '/')}";`
|
|
85
|
+
)
|
|
86
|
+
}
|
|
108
87
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
88
|
+
out.push('')
|
|
89
|
+
out.push(`export default {`)
|
|
90
|
+
|
|
91
|
+
const { mutations, queries } = controller.methods.reduce(
|
|
92
|
+
(acc, method) => {
|
|
93
|
+
if (method.httpMethod === SdkHttpMethod.Get) {
|
|
94
|
+
acc.queries.push(method)
|
|
95
|
+
} else {
|
|
96
|
+
acc.mutations.push(method)
|
|
113
97
|
}
|
|
114
98
|
|
|
115
|
-
|
|
99
|
+
return acc
|
|
100
|
+
},
|
|
101
|
+
{ mutations: [] as SdkMethod[], queries: [] as SdkMethod[] }
|
|
102
|
+
);
|
|
116
103
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
/** Generated module's content */
|
|
124
|
-
const moduleContent: string[] = []
|
|
125
|
-
|
|
126
|
-
moduleContent.push('/// Module name: ' + moduleName)
|
|
127
|
-
moduleContent.push('')
|
|
104
|
+
out.push(` queries: {`)
|
|
105
|
+
|
|
106
|
+
for (const method of queries) {
|
|
107
|
+
out.push(generateSdkMethod(method, controller))
|
|
108
|
+
}
|
|
128
109
|
|
|
129
|
-
|
|
130
|
-
moduleContent.push(`export { default as ${controller} } from "./${controller}";`)
|
|
131
|
-
}
|
|
110
|
+
out.push(' },')
|
|
132
111
|
|
|
133
|
-
|
|
134
|
-
|
|
112
|
+
out.push(` mutations: {`)
|
|
113
|
+
|
|
114
|
+
for (const method of mutations) {
|
|
115
|
+
out.push(generateSdkMethod(method, controller))
|
|
135
116
|
}
|
|
136
117
|
|
|
137
|
-
|
|
118
|
+
out.push(' },')
|
|
119
|
+
|
|
120
|
+
out.push('')
|
|
121
|
+
out.push('};')
|
|
122
|
+
return out.join('\n');
|
|
138
123
|
}
|
|
139
124
|
|
|
140
|
-
export function generateSdkMethod(method: SdkMethod): string {
|
|
125
|
+
export function generateSdkMethod(method: SdkMethod, controller: SdkController): string {
|
|
141
126
|
const out = [];
|
|
142
127
|
const ret = method.returnType.resolvedType
|
|
143
128
|
const promised = ret.startsWith('Promise<') ? ret : `Promise<${ret}>`
|
|
129
|
+
const paramsType = generateSdkMethodParams(method)
|
|
144
130
|
|
|
145
131
|
out.push('')
|
|
132
|
+
out.push(` // ${controller.camelClassName}.${method.name}`)
|
|
146
133
|
out.push(` // ${method.httpMethod} @ ${unparseRoute(method.route)}`)
|
|
147
|
-
out.push(` ${
|
|
148
|
-
out.push(
|
|
134
|
+
out.push(` // ${controller.path}`)
|
|
135
|
+
out.push(`${generateSdkMethodSignature(method)} {`)
|
|
136
|
+
out.push(generateSdkMethodBody(method))
|
|
149
137
|
out.push(' },')
|
|
150
138
|
return out.join('\n')
|
|
151
139
|
}
|
|
152
140
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
141
|
+
export function generateSdkMethodSignature(method: SdkMethod, prefix = ' '): string {
|
|
142
|
+
const ret = method.returnType.resolvedType
|
|
143
|
+
const promised = ret.startsWith('Promise<') ? ret : `Promise<${ret}>`
|
|
144
|
+
const paramsType = generateSdkMethodParams(method)
|
|
145
|
+
|
|
146
|
+
return `${prefix}${method.name}(${paramsType}): ${promised}`
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function generateSdkMethodParams(method: SdkMethod): string {
|
|
150
|
+
const { params, httpMethod, name } = method;
|
|
151
|
+
|
|
152
|
+
if (httpMethod === SdkHttpMethod.Get && params.bodyParams) {
|
|
153
|
+
panic(`${httpMethod} ${name} should not have Body params`)
|
|
154
|
+
}
|
|
155
|
+
if (httpMethod !== SdkHttpMethod.Get && params.queryParams) {
|
|
156
|
+
panic(`${httpMethod} ${name} should not have Query params`)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const inputTypes = [];
|
|
160
|
+
|
|
161
|
+
if (params.routeParams) {
|
|
162
|
+
inputTypes.push(methodParamsToString(params.routeParams))
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (params.queryParams) {
|
|
166
|
+
inputTypes.push(methodParamsToString(params.queryParams))
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (params.bodyParams) {
|
|
170
|
+
inputTypes.push(methodParamsToString(params.bodyParams))
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const mergedInputType = inputTypes.join(' &\n')
|
|
174
|
+
|
|
175
|
+
return mergedInputType ? `params: ${mergedInputType}` : ''
|
|
179
176
|
}
|
|
180
177
|
|
|
181
178
|
/**
|
|
@@ -183,12 +180,45 @@ export function generateSdkMethodParams(params: SdkMethodParams): string {
|
|
|
183
180
|
* @param method
|
|
184
181
|
* @returns
|
|
185
182
|
*/
|
|
186
|
-
export function
|
|
187
|
-
const
|
|
183
|
+
export function generateSdkMethodBody(method: SdkMethod, prefix = ' '): string {
|
|
184
|
+
const output = []
|
|
185
|
+
const { route, httpMethod } = method
|
|
186
|
+
const routeParams = paramsFromRoute(route)
|
|
187
|
+
const resolvedRoute = resolveRouteWith(route, (param) => '${' + param + '}')
|
|
188
|
+
const hasAnyParams = method.params.routeParams || method.params.queryParams || method.params.bodyParams
|
|
188
189
|
|
|
189
190
|
if (resolvedRoute instanceof Error) {
|
|
190
191
|
panic('Internal error: failed to resolve route: ' + resolvedRoute.message)
|
|
191
192
|
}
|
|
193
|
+
const routeParamsSpread = routeParams.length > 0 ? `${routeParams.join(', ')},` : ''
|
|
194
|
+
|
|
195
|
+
// Destructure parameters if they exist
|
|
196
|
+
if (hasAnyParams) {
|
|
197
|
+
output.push(`const { ${routeParamsSpread} ...rest } = params`)
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
const isGet = httpMethod === SdkHttpMethod.Get
|
|
201
|
+
const body = isGet || !hasAnyParams ? "null" : "rest"
|
|
202
|
+
const query = isGet && hasAnyParams ? "rest" : "{}"
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
output.push(`return request('${httpMethod}', \`${resolvedRoute}\`, ${body}, ${query})`)
|
|
206
|
+
return output.join('\n')
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export function methodParamsToString(params: SdkMethodParam): string {
|
|
210
|
+
if (params === null) {
|
|
211
|
+
return ''
|
|
212
|
+
}
|
|
192
213
|
|
|
193
|
-
|
|
214
|
+
if (isParamResolvedType(params)) {
|
|
215
|
+
return params.resolvedType
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const output = ["{"]
|
|
219
|
+
for (const [name, type] of Object.entries(params)) {
|
|
220
|
+
output.push(`${name}: ${type.resolvedType},`)
|
|
221
|
+
}
|
|
222
|
+
output.push("}")
|
|
223
|
+
return output.join("\n")
|
|
194
224
|
}
|
package/src/generator/index.ts
CHANGED
|
@@ -26,11 +26,7 @@ export default async function generatorCli(config: Config, sdkContent: SdkConten
|
|
|
26
26
|
if (config.overwriteOldOutputDir === false) {
|
|
27
27
|
panic("Please provide an output directory that doesn't exist yet")
|
|
28
28
|
} else {
|
|
29
|
-
|
|
30
|
-
panic("Provided output path exists but doesn't seem to contain an SDK output. Please check the output directory.")
|
|
31
|
-
} else {
|
|
32
|
-
fs.rmSync(output, { recursive: true })
|
|
33
|
-
}
|
|
29
|
+
fs.rmSync(output, { recursive: true })
|
|
34
30
|
}
|
|
35
31
|
}
|
|
36
32
|
|
package/src/logging.ts
CHANGED
|
@@ -21,7 +21,9 @@ export function unreachable(message: string, ...params: Array<number | string>):
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export function warn(message: string, ...params: Array<number | string>) {
|
|
24
|
+
if (config.verbose) {
|
|
24
25
|
console.warn(chalk.yellow(format(message, ...params)))
|
|
26
|
+
}
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
export function println(message: string, ...params: Array<number | string>) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/@ts-morph/common/lib/typescript.d.ts","./node_modules/@ts-morph/common/lib/ts-morph-common.d.ts","./node_modules/ts-morph/lib/ts-morph.d.ts","./node_modules/chalk/index.d.ts","./src/config.ts","./src/logging.ts","./src/analyzer/builtin.ts","./src/utils.ts","./src/analyzer/route.ts","./src/analyzer/typedeps.ts","./src/analyzer/params.ts","./src/analyzer/methods.ts","./src/analyzer/controller.ts","./src/analyzer/module.ts","./src/analyzer/controllers.ts","./src/analyzer/classdeps.ts","./src/analyzer/extractor.ts","./src/analyzer/index.ts","./src/generator/genmodules.ts","./src/generator/gentypes.ts","./node_modules/@types/prettier/index.d.ts","./src/generator/prettier.ts","./src/generator/sdk-interface.ts","./src/generator/index.ts","./src/bin.ts","./node_modules/@types/minimist/index.d.ts","./node_modules/@types/node/ts4.8/assert.d.ts","./node_modules/@types/node/ts4.8/assert/strict.d.ts","./node_modules/@types/node/ts4.8/globals.d.ts","./node_modules/@types/node/ts4.8/async_hooks.d.ts","./node_modules/@types/node/ts4.8/buffer.d.ts","./node_modules/@types/node/ts4.8/child_process.d.ts","./node_modules/@types/node/ts4.8/cluster.d.ts","./node_modules/@types/node/ts4.8/console.d.ts","./node_modules/@types/node/ts4.8/constants.d.ts","./node_modules/@types/node/ts4.8/crypto.d.ts","./node_modules/@types/node/ts4.8/dgram.d.ts","./node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","./node_modules/@types/node/ts4.8/dns.d.ts","./node_modules/@types/node/ts4.8/dns/promises.d.ts","./node_modules/@types/node/ts4.8/domain.d.ts","./node_modules/@types/node/ts4.8/dom-events.d.ts","./node_modules/@types/node/ts4.8/events.d.ts","./node_modules/@types/node/ts4.8/fs.d.ts","./node_modules/@types/node/ts4.8/fs/promises.d.ts","./node_modules/@types/node/ts4.8/http.d.ts","./node_modules/@types/node/ts4.8/http2.d.ts","./node_modules/@types/node/ts4.8/https.d.ts","./node_modules/@types/node/ts4.8/inspector.d.ts","./node_modules/@types/node/ts4.8/module.d.ts","./node_modules/@types/node/ts4.8/net.d.ts","./node_modules/@types/node/ts4.8/os.d.ts","./node_modules/@types/node/ts4.8/path.d.ts","./node_modules/@types/node/ts4.8/perf_hooks.d.ts","./node_modules/@types/node/ts4.8/process.d.ts","./node_modules/@types/node/ts4.8/punycode.d.ts","./node_modules/@types/node/ts4.8/querystring.d.ts","./node_modules/@types/node/ts4.8/readline.d.ts","./node_modules/@types/node/ts4.8/readline/promises.d.ts","./node_modules/@types/node/ts4.8/repl.d.ts","./node_modules/@types/node/ts4.8/stream.d.ts","./node_modules/@types/node/ts4.8/stream/promises.d.ts","./node_modules/@types/node/ts4.8/stream/consumers.d.ts","./node_modules/@types/node/ts4.8/stream/web.d.ts","./node_modules/@types/node/ts4.8/string_decoder.d.ts","./node_modules/@types/node/ts4.8/test.d.ts","./node_modules/@types/node/ts4.8/timers.d.ts","./node_modules/@types/node/ts4.8/timers/promises.d.ts","./node_modules/@types/node/ts4.8/tls.d.ts","./node_modules/@types/node/ts4.8/trace_events.d.ts","./node_modules/@types/node/ts4.8/tty.d.ts","./node_modules/@types/node/ts4.8/url.d.ts","./node_modules/@types/node/ts4.8/util.d.ts","./node_modules/@types/node/ts4.8/v8.d.ts","./node_modules/@types/node/ts4.8/vm.d.ts","./node_modules/@types/node/ts4.8/wasi.d.ts","./node_modules/@types/node/ts4.8/worker_threads.d.ts","./node_modules/@types/node/ts4.8/zlib.d.ts","./node_modules/@types/node/ts4.8/globals.global.d.ts","./node_modules/@types/node/ts4.8/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"f84c28802d5c44429c86180eed9bb73826f2efd559205632ecb23d904b0a1a8c","5b62cb32ae66c8d1d420f2a807cd81dd1e5e68547eeacd738d41c39b64b6687c","01d183dc38180ca94b2751133213800c337e78d759498bc150adcda54271265e","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c57015012f9720cebf36a538c82d990d793c2c70a30116fe29f9c286abcff7c3","ccb918ecabee2ac8d6c7067e89cb8bc6c40cf62ff19e08570bfa8a1f8583f27a","8157e1133662959c7ddbcc92699c54e4fae658ef1110502f9b9a2b8153d768a9","1dd6493cd596960db56a1f49a51dbd11a5de9b3c10094e87358fc11126b671f7",{"version":"19049e66949f92e28f549138d20a9cdfea3beb508f36bb6acdde1bed20193ddf","signature":"0bf5fc1706602d94de1ca8efcbfebae49a2f0b3703466b7c5d01fd25bbf35d8e"},"8abd878edf3529a6ba9c4332d0574ef9eb4f7e024982c402aff517c9e8eb3377",{"version":"71ff574edfced1d02d31f69ab0377b84aa83206533f4e2d9cc4ebe2d47d3184a","signature":"1ac49289ea925e904b854ef1d9b5123f5afaea5d14388fbfea49c9a065221993"},{"version":"1c9513e492bcc5b7eb67b62e18bb30d8e10ed7468ec7df27b01326473be7c897","signature":"6b04076217e270b79065e1e1254dd6a36aed91477a89c33ec1e910d2366ccc64"},"412b29eac99c4fb5b9cdde05fbf313da9d78854f724b5039353c0478bdde3c4a","a9a78b115d1a534d608af164588eeac9e0eb9c33f18559d10ea9e81624a4993a","7b66c986f643701116b78a36293fb09bd68de76bfb96246d4e8791d9af8ae20e","b81692ed3cf6ea0d72b8783799a23da975abd7b0420a157dd1ffd9c11d4c00ce","e54b2b753293a60930aebff05690eed98435d5e37de543a7d48fe0fd6d0dbb6a","65f1347c65f686439265e15fd964e5bd3ab37b709392056fffb5503e78aa7a76",{"version":"b834e590413c8dd9cb9a39b879232a8b0366f87b52b20b5c70549a7521bb5ef4","signature":"d27664542e7a0075ec7c810e049d696f4e254901cb45792bee129980e61e6395"},"46f72b19c34a476fc472d965fe3f6a714e1c111bd048e55c666ad44b41ed0a6a","d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","e7c44a15049b101c892b8a0c37ec3d4295f2cc0afe196fe0d9a8e90bb0d607a9","6b3ae16e022e27554be5262b22915d1ffd452fc97499276a909ba9e5bf009095",{"version":"b1cbc1160425edf8789aa2ec28198bb9f418ac49d3b94b75b0defeb83df5bf9f","signature":"fc42ade730e2ce07d81d0581eb49139f1d236aabce2a7cfc6441e7685a314599"},{"version":"ed03ccc8b8e87e538f0c71a0a73ebabfc0e2035df3c166f274a3628433f4879a","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012"},"fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"02873d070f9cb79f50833fbf4a9a27ac578a2edf8ddb8421eba1b37faba83bfb","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"c0db280fa6b09d7b8d6720a19a47f485956a41ee0e6914f1b704033eb69c6058","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","dab86d9604fe40854ef3c0a6f9e8948873dc3509213418e5e457f410fd11200f","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","489532ff54b714f0e0939947a1c560e516d3ae93d51d639ab02e907a0e950114","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","d903fafe96674bc0b2ac38a5be4a8fc07b14c2548d1cdb165a80ea24c44c0c54","5eec82ac21f84d83586c59a16b9b8502d34505d1393393556682fe7e7fde9ef2","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true},"d4ac44f01d42f541631c5fc88d0ed8efac29a3a3ad9a745d9fd58f8b61ed132e","7c013aa892414a7fdcfd861ae524a668eaa3ede8c7c0acafaf611948122c8d93","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","3163f47436da41706c6e2b3c1511f3b7cce9f9f3905b2f3e01246c48b4ba7d14","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","223c37f62ce09a3d99e77498acdee7b2705a4ae14552fbdb4093600cd9164f3f",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","4c8525f256873c7ba3135338c647eaf0ca7115a1a2805ae2d0056629461186ce","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"4c50342e1b65d3bee2ed4ab18f84842d5724ad11083bd666d8705dc7a6079d80","affectsGlobalScope":true},"06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"652ee9c5103e89102d87bc20d167a02a0e3e5e53665674466c8cfea8a9e418c7"],"options":{"declaration":true,"downlevelIteration":true,"experimentalDecorators":true,"inlineSourceMap":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"strict":true,"target":2,"useUnknownInCatchVariables":true},"fileIdsList":[[54,126],[126],[80,126],[83,126],[84,89,117,126],[85,96,97,104,114,125,126],[85,86,96,104,126],[87,126],[88,89,97,105,126],[89,114,122,126],[90,92,96,104,126],[91,126],[92,93,126],[96,126],[94,96,126],[96,97,98,114,125,126],[96,97,98,111,114,117,126],[126,130],[92,99,104,114,125,126],[96,97,99,100,104,114,122,125,126],[99,101,114,122,125,126],[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132],[96,102,126],[103,125,126],[92,96,104,114,126],[105,126],[106,126],[83,107,126],[108,124,126,130],[109,126],[110,126],[96,111,112,126],[111,113,126,128],[84,96,114,115,116,117,126],[84,114,116,126],[114,115,126],[117,126],[118,126],[96,120,121,126],[120,121,126],[89,104,114,122,126],[123,126],[104,124,126],[84,99,110,125,126],[89,126],[114,126,127],[126,128],[126,129],[84,89,96,98,107,114,125,126,128,130],[114,126,131],[55,126],[58,126],[56,59,63,106,126],[56,59,65,106,126],[56,59,61,66,67,105,106,126],[56,58,59,63,64,68,69,106,126],[56,58,59,60,68,70,97,106,126],[56,57,59,62,63,64,126],[56,59,106,126],[56,59,62,63,65,126],[58,59,71,77,106,126],[57,97,106,126],[59,62,63,64,65,66,68,126],[63,70,106,126],[58,59,63,71,72,73,75,76,97,106,126],[58,59,61,74,97,126],[57,58,126],[97,106,126],[56,62,63,64],[56,62,63,65],[64,65,66,68],[58,71]],"referencedMap":[[55,1],[54,2],[79,2],[80,3],[81,3],[83,4],[84,5],[85,6],[86,7],[87,8],[88,9],[89,10],[90,11],[91,12],[92,13],[93,13],[95,14],[94,15],[96,14],[97,16],[98,17],[82,18],[132,2],[99,19],[100,20],[101,21],[133,22],[102,23],[103,24],[104,25],[105,26],[106,27],[107,28],[108,29],[109,30],[110,31],[111,32],[112,32],[113,33],[114,34],[116,35],[115,36],[117,37],[118,38],[119,2],[120,39],[121,40],[122,41],[123,42],[124,43],[125,44],[126,45],[127,46],[128,47],[129,48],[130,49],[131,50],[74,2],[57,2],[56,51],[12,2],[11,2],[2,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[3,2],[4,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[32,2],[33,2],[34,2],[35,2],[7,2],[36,2],[41,2],[42,2],[37,2],[38,2],[39,2],[40,2],[8,2],[46,2],[43,2],[44,2],[45,2],[47,2],[9,2],[48,2],[49,2],[50,2],[51,2],[52,2],[1,2],[10,2],[53,2],[60,52],[69,53],[66,54],[68,55],[70,56],[71,57],[65,58],[67,59],[64,60],[62,2],[63,59],[78,61],[58,62],[72,63],[73,64],[77,65],[75,66],[76,2],[59,67],[61,68]],"exportedModulesMap":[[55,1],[54,2],[79,2],[80,3],[81,3],[83,4],[84,5],[85,6],[86,7],[87,8],[88,9],[89,10],[90,11],[91,12],[92,13],[93,13],[95,14],[94,15],[96,14],[97,16],[98,17],[82,18],[132,2],[99,19],[100,20],[101,21],[133,22],[102,23],[103,24],[104,25],[105,26],[106,27],[107,28],[108,29],[109,30],[110,31],[111,32],[112,32],[113,33],[114,34],[116,35],[115,36],[117,37],[118,38],[119,2],[120,39],[121,40],[122,41],[123,42],[124,43],[125,44],[126,45],[127,46],[128,47],[129,48],[130,49],[131,50],[74,2],[57,2],[56,51],[12,2],[11,2],[2,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[3,2],[4,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[32,2],[33,2],[34,2],[35,2],[7,2],[36,2],[41,2],[42,2],[37,2],[38,2],[39,2],[40,2],[8,2],[46,2],[43,2],[44,2],[45,2],[47,2],[9,2],[48,2],[49,2],[50,2],[51,2],[52,2],[1,2],[10,2],[53,2],[60,52],[69,53],[66,54],[68,55],[70,56],[71,57],[65,69],[67,59],[64,70],[63,59],[58,62],[72,71],[73,64],[77,72],[75,66],[76,2],[59,67],[61,68]],"semanticDiagnosticsPerFile":[55,54,79,80,81,83,84,85,86,87,88,89,90,91,92,93,95,94,96,97,98,82,132,99,100,101,133,102,103,104,105,106,107,108,109,110,111,112,113,114,116,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,74,57,56,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,32,33,34,35,7,36,41,42,37,38,39,40,8,46,43,44,45,47,9,48,49,50,51,52,1,10,53,60,69,66,68,70,71,65,67,64,62,63,78,58,72,73,77,75,76,59,61],"affectedFilesPendingEmit":[[55,1],[54,1],[79,1],[80,1],[81,1],[83,1],[84,1],[85,1],[86,1],[87,1],[88,1],[89,1],[90,1],[91,1],[92,1],[93,1],[95,1],[94,1],[96,1],[97,1],[98,1],[82,1],[132,1],[99,1],[100,1],[101,1],[133,1],[102,1],[103,1],[104,1],[105,1],[106,1],[107,1],[108,1],[109,1],[110,1],[111,1],[112,1],[113,1],[114,1],[116,1],[115,1],[117,1],[118,1],[119,1],[120,1],[121,1],[122,1],[123,1],[124,1],[125,1],[126,1],[127,1],[128,1],[129,1],[130,1],[131,1],[74,1],[57,1],[56,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[60,1],[69,1],[66,1],[68,1],[70,1],[71,1],[65,1],[67,1],[64,1],[62,1],[63,1],[78,1],[58,1],[72,1],[73,1],[77,1],[75,1],[76,1],[59,1],[61,1]]},"version":"4.8.4"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Utilities for analyzing the source API's decorators
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { Decorator, Node } from 'ts-morph'
|
|
6
|
-
import { format } from '../logging'
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Expect a decorator to have a single, string literal argument
|
|
10
|
-
* @param dec The decorator
|
|
11
|
-
* @returns Nothing if the decorator has no argument, a { lit: string } if the decorator has a string literal, an Error else
|
|
12
|
-
*/
|
|
13
|
-
export function expectSingleStrLitDecorator(dec: Decorator): string | null | Error {
|
|
14
|
-
const args = dec.getArguments()
|
|
15
|
-
|
|
16
|
-
if (args.length > 1) {
|
|
17
|
-
return new Error(`Multiple (${args.length}) arguments were provided to the decorator`)
|
|
18
|
-
} else if (args.length === 0) {
|
|
19
|
-
return null
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const [arg] = args
|
|
23
|
-
|
|
24
|
-
if (!Node.isStringLiteral(arg)) {
|
|
25
|
-
return new Error(format('The argument provided to the decorator is not a string literal:\n>>> {cyan}', arg.getText()))
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return arg.getLiteralText()
|
|
29
|
-
}
|