@decohere/create 0.0.1-dev.23 → 0.0.1-dev.24
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/commonjs/src/models/compose.model.js +56 -4
- package/commonjs/src/models/dev-container.model.js +29 -2
- package/commonjs/src/models/package-json.model.js +11 -6
- package/commonjs/src/runner.js +18 -2
- package/commonjs/src/webapi/create-api.js +65 -5
- package/commonjs/src/webapi/features/auth.feature.js +287 -7
- package/commonjs/src/webapi/features/auth0-cli.js +140 -9
- package/commonjs/src/webapi/features/database.feature.js +56 -24
- package/commonjs/src/webapi/features/postman.feature.js +335 -46
- package/commonjs/src/webapi/models/api-package-json.model.js +4 -1
- package/commonjs/src/webapi/models/auth-config.model.js +4 -1
- package/commonjs/src/webapi/models/controller-source-file.model.js +15 -7
- package/commonjs/src/webapi/models/main-source-file.model.js +28 -4
- package/es6/src/models/compose.model.js +57 -6
- package/es6/src/models/dev-container.model.js +30 -8
- package/es6/src/models/package-json.model.js +11 -6
- package/es6/src/runner.js +19 -3
- package/es6/src/webapi/create-api.js +65 -5
- package/es6/src/webapi/features/auth.feature.js +287 -7
- package/es6/src/webapi/features/auth0-cli.js +122 -9
- package/es6/src/webapi/features/database.feature.js +56 -24
- package/es6/src/webapi/features/postman.feature.js +322 -43
- package/es6/src/webapi/models/api-package-json.model.js +4 -1
- package/es6/src/webapi/models/auth-config.model.js +4 -1
- package/es6/src/webapi/models/controller-source-file.model.js +15 -7
- package/es6/src/webapi/models/main-source-file.model.js +28 -4
- package/package.json +2 -2
- package/types/src/models/compose.model.d.ts +27 -2
- package/types/src/models/dev-container.model.d.ts +12 -0
- package/types/src/models/package-json.model.d.ts +2 -0
- package/types/src/webapi/features/auth.feature.d.ts +3 -0
- package/types/src/webapi/features/auth0-cli.d.ts +25 -3
- package/types/src/webapi/features/postman.feature.d.ts +5 -0
- package/types/src/webapi/models/auth-config.model.d.ts +8 -0
- package/types/src/webapi/models/controller-source-file.model.d.ts +6 -3
- package/types/src/webapi/models/main-source-file.model.d.ts +12 -0
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
1
2
|
import { pick } from "../../domain/prompt.js";
|
|
2
3
|
import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
3
4
|
import * as auth0Cli from "./auth0-cli.js";
|
|
5
|
+
/** Postman OAuth callback URLs (popup + "Authorize using browser"). */ const POSTMAN_CALLBACKS = [
|
|
6
|
+
"https://oauth.pstmn.io/v1/callback",
|
|
7
|
+
"https://oauth.pstmn.io/v1/browser-callback"
|
|
8
|
+
];
|
|
9
|
+
/** Scopes requested for Auth0 access tokens (OIDC + Hello CASL permissions). */ const POSTMAN_SCOPES = [
|
|
10
|
+
"openid",
|
|
11
|
+
"profile",
|
|
12
|
+
"email",
|
|
13
|
+
"read:Hello",
|
|
14
|
+
"create:Hello",
|
|
15
|
+
"update:Hello",
|
|
16
|
+
"delete:Hello"
|
|
17
|
+
].join(" ");
|
|
4
18
|
async function getOptions(_workspace, cliOptions) {
|
|
5
19
|
if (cliOptions.postmanProvider != null) return {};
|
|
6
20
|
const choices = [
|
|
@@ -10,11 +24,11 @@ async function getOptions(_workspace, cliOptions) {
|
|
|
10
24
|
},
|
|
11
25
|
{
|
|
12
26
|
label: "local",
|
|
13
|
-
description: "
|
|
27
|
+
description: "Local View / Native Git files (no API key)"
|
|
14
28
|
},
|
|
15
29
|
{
|
|
16
30
|
label: "api",
|
|
17
|
-
description: "
|
|
31
|
+
description: "also upload to Postman.com (needs API key)"
|
|
18
32
|
}
|
|
19
33
|
];
|
|
20
34
|
const selected = await pick("\n Postman: ", choices, (c)=>`${c.label} — ${c.description}`);
|
|
@@ -25,7 +39,6 @@ async function getOptions(_workspace, cliOptions) {
|
|
|
25
39
|
if (provider === "local") return {
|
|
26
40
|
postmanProvider: "local"
|
|
27
41
|
};
|
|
28
|
-
// api: collect API key + workspace selection
|
|
29
42
|
const apiKey = process.env.POSTMAN_API_KEY ?? await import("../../domain/prompt.js").then((m)=>m.ask("\n Postman API key (app.getpostman.com/settings/me/api-keys): "));
|
|
30
43
|
const headers = {
|
|
31
44
|
"X-Api-Key": apiKey,
|
|
@@ -78,7 +91,7 @@ async function getOptions(_workspace, cliOptions) {
|
|
|
78
91
|
workspaceId
|
|
79
92
|
};
|
|
80
93
|
}
|
|
81
|
-
function
|
|
94
|
+
/** v2.1 JSON — used for Postman.com API upload only. */ function buildCollectionJson(projectName, auth) {
|
|
82
95
|
const authObj = auth?.auth0Domain ? {
|
|
83
96
|
type: "oauth2",
|
|
84
97
|
oauth2: [
|
|
@@ -104,9 +117,19 @@ function buildCollection(projectName, auth) {
|
|
|
104
117
|
},
|
|
105
118
|
{
|
|
106
119
|
key: "scope",
|
|
107
|
-
value:
|
|
120
|
+
value: POSTMAN_SCOPES,
|
|
108
121
|
type: "string"
|
|
109
122
|
},
|
|
123
|
+
{
|
|
124
|
+
key: "redirect_uri",
|
|
125
|
+
value: POSTMAN_CALLBACKS[0],
|
|
126
|
+
type: "string"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
key: "useBrowser",
|
|
130
|
+
value: "true",
|
|
131
|
+
type: "boolean"
|
|
132
|
+
},
|
|
110
133
|
{
|
|
111
134
|
key: "addTokenTo",
|
|
112
135
|
value: "header",
|
|
@@ -116,13 +139,37 @@ function buildCollection(projectName, auth) {
|
|
|
116
139
|
key: "challengeAlgorithm",
|
|
117
140
|
value: "S256",
|
|
118
141
|
type: "string"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
key: "client_authentication",
|
|
145
|
+
value: "body",
|
|
146
|
+
type: "string"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
key: "clientSecret",
|
|
150
|
+
value: "",
|
|
151
|
+
type: "string"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
key: "tokenName",
|
|
155
|
+
value: `${projectName} Access Token`,
|
|
156
|
+
type: "string"
|
|
119
157
|
}
|
|
120
158
|
]
|
|
121
159
|
} : undefined;
|
|
160
|
+
const helloUrl = (path, raw)=>({
|
|
161
|
+
raw: `{{baseUrl}}${raw}`,
|
|
162
|
+
host: [
|
|
163
|
+
"{{baseUrl}}"
|
|
164
|
+
],
|
|
165
|
+
path: path.split("/").filter(Boolean)
|
|
166
|
+
});
|
|
122
167
|
return {
|
|
123
168
|
info: {
|
|
169
|
+
_postman_id: randomUUID(),
|
|
124
170
|
name: `${projectName} WebAPI`,
|
|
125
|
-
schema: "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
|
171
|
+
schema: "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
|
|
172
|
+
description: "Open the project root in Postman Local View (not the postman/ folder). " + "Select the Local environment, then Authorization → Get New Access Token (PKCE)."
|
|
126
173
|
},
|
|
127
174
|
...authObj ? {
|
|
128
175
|
auth: authObj
|
|
@@ -130,46 +177,268 @@ function buildCollection(projectName, auth) {
|
|
|
130
177
|
item: [
|
|
131
178
|
{
|
|
132
179
|
name: "Hello",
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
"hello"
|
|
142
|
-
|
|
180
|
+
item: [
|
|
181
|
+
{
|
|
182
|
+
name: "List (anonymous)",
|
|
183
|
+
request: {
|
|
184
|
+
auth: {
|
|
185
|
+
type: "noauth"
|
|
186
|
+
},
|
|
187
|
+
method: "GET",
|
|
188
|
+
url: helloUrl("hello", "/hello")
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
name: "Get by id",
|
|
193
|
+
request: {
|
|
194
|
+
method: "GET",
|
|
195
|
+
url: helloUrl("hello/:id", "/hello/:id")
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: "Create",
|
|
200
|
+
request: {
|
|
201
|
+
method: "POST",
|
|
202
|
+
header: [
|
|
203
|
+
{
|
|
204
|
+
key: "Content-Type",
|
|
205
|
+
value: "application/json"
|
|
206
|
+
}
|
|
207
|
+
],
|
|
208
|
+
body: {
|
|
209
|
+
mode: "raw",
|
|
210
|
+
raw: '{\n "message": "hello"\n}\n'
|
|
211
|
+
},
|
|
212
|
+
url: helloUrl("hello", "/hello")
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
name: "Update",
|
|
217
|
+
request: {
|
|
218
|
+
method: "PUT",
|
|
219
|
+
header: [
|
|
220
|
+
{
|
|
221
|
+
key: "Content-Type",
|
|
222
|
+
value: "application/json"
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
body: {
|
|
226
|
+
mode: "raw",
|
|
227
|
+
raw: '{\n "message": "updated"\n}\n'
|
|
228
|
+
},
|
|
229
|
+
url: helloUrl("hello/:id", "/hello/:id")
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
name: "Delete",
|
|
234
|
+
request: {
|
|
235
|
+
method: "DELETE",
|
|
236
|
+
url: helloUrl("hello/:id", "/hello/:id")
|
|
237
|
+
}
|
|
143
238
|
}
|
|
144
|
-
|
|
239
|
+
]
|
|
145
240
|
}
|
|
146
241
|
]
|
|
147
242
|
};
|
|
148
243
|
}
|
|
149
|
-
function
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
244
|
+
function yamlQuote(value) {
|
|
245
|
+
if (/[:#{}[\],&*?|<>=!%@`]/.test(value) || value.includes("\n") || value === "") {
|
|
246
|
+
return JSON.stringify(value);
|
|
247
|
+
}
|
|
248
|
+
return value;
|
|
249
|
+
}
|
|
250
|
+
/** Local View / Native Git environment (YAML). */ function buildEnvironmentYaml(name, auth) {
|
|
251
|
+
const values = [
|
|
252
|
+
{
|
|
253
|
+
key: "baseUrl",
|
|
254
|
+
value: "http://localhost:3000"
|
|
255
|
+
}
|
|
256
|
+
];
|
|
257
|
+
if (auth?.auth0Domain) {
|
|
258
|
+
values.push({
|
|
259
|
+
key: "auth0Domain",
|
|
260
|
+
value: auth.auth0Domain
|
|
261
|
+
}, {
|
|
262
|
+
key: "auth0Audience",
|
|
263
|
+
value: auth.auth0Audience ?? ""
|
|
264
|
+
}, {
|
|
265
|
+
key: "auth0ClientId",
|
|
266
|
+
value: auth.auth0ClientId ?? ""
|
|
267
|
+
}, {
|
|
268
|
+
key: "authUrl",
|
|
269
|
+
value: `https://${auth.auth0Domain}/authorize?audience=${auth.auth0Audience ?? ""}`
|
|
270
|
+
}, {
|
|
271
|
+
key: "accessTokenUrl",
|
|
272
|
+
value: `https://${auth.auth0Domain}/oauth/token`
|
|
273
|
+
}, {
|
|
274
|
+
key: "callbackUrl",
|
|
275
|
+
value: POSTMAN_CALLBACKS[0]
|
|
276
|
+
}, {
|
|
277
|
+
key: "scope",
|
|
278
|
+
value: POSTMAN_SCOPES
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
const lines = [
|
|
282
|
+
`name: ${yamlQuote(name)}`,
|
|
283
|
+
"values:"
|
|
284
|
+
];
|
|
285
|
+
for (const v of values){
|
|
286
|
+
lines.push(` - key: ${v.key}`);
|
|
287
|
+
lines.push(` value: ${yamlQuote(v.value)}`);
|
|
288
|
+
lines.push(" enabled: true");
|
|
289
|
+
}
|
|
290
|
+
return `${lines.join("\n")}\n`;
|
|
291
|
+
}
|
|
292
|
+
/** Local View / Native Git collection (v3 multi-file YAML). */ function buildLocalViewFiles(projectName, auth) {
|
|
293
|
+
const collectionDir = `postman/collections/${projectName} WebAPI`;
|
|
294
|
+
const files = [];
|
|
295
|
+
// Postman Local View stores OAuth under auth[].credentials (not the v2.1 oauth2 array).
|
|
296
|
+
// Use concrete https URLs — empty Auth URL yields "Invalid protocol for auth URL".
|
|
297
|
+
const authBlock = auth?.auth0Domain ? [
|
|
298
|
+
"auth:",
|
|
299
|
+
` - id: ${randomUUID()}`,
|
|
300
|
+
" type: oauth2",
|
|
301
|
+
" name: OAuth 2.0",
|
|
302
|
+
" credentials:",
|
|
303
|
+
" addTokenTo: header",
|
|
304
|
+
" grant_type: authorization_code_with_pkce",
|
|
305
|
+
` authUrl: https://${auth.auth0Domain}/authorize?audience=${auth.auth0Audience ?? ""}`,
|
|
306
|
+
` accessTokenUrl: https://${auth.auth0Domain}/oauth/token`,
|
|
307
|
+
` clientId: ${yamlQuote(auth.auth0ClientId ?? "")}`,
|
|
308
|
+
` scope: ${yamlQuote(POSTMAN_SCOPES)}`,
|
|
309
|
+
` redirect_uri: ${POSTMAN_CALLBACKS[0]}`,
|
|
310
|
+
" useBrowser: true",
|
|
311
|
+
" challengeAlgorithm: S256",
|
|
312
|
+
// SPA public client: Auth0 token endpoint rejects Basic auth (feacft Unauthorized).
|
|
313
|
+
" client_authentication: body",
|
|
314
|
+
' clientSecret: ""',
|
|
315
|
+
` tokenName: ${yamlQuote(`${projectName} Access Token`)}`,
|
|
316
|
+
""
|
|
317
|
+
].join("\n") : "";
|
|
318
|
+
files.push({
|
|
319
|
+
filePath: `${collectionDir}/.resources/definition.yaml`,
|
|
320
|
+
content: [
|
|
321
|
+
"$kind: collection",
|
|
322
|
+
`name: ${yamlQuote(`${projectName} WebAPI`)}`,
|
|
323
|
+
"schemaVersion: '3.0'",
|
|
324
|
+
"description: >-",
|
|
325
|
+
" Open this project root in Postman Local View (Files → Open folder).",
|
|
326
|
+
" Select the Local environment, then Authorization → Get New Access Token (PKCE).",
|
|
327
|
+
authBlock
|
|
328
|
+
].filter((l)=>l !== undefined).join("\n").replace(/\n+$/, "\n")
|
|
329
|
+
});
|
|
330
|
+
files.push({
|
|
331
|
+
filePath: `${collectionDir}/Hello/.resources/definition.yaml`,
|
|
332
|
+
content: [
|
|
333
|
+
"$kind: folder",
|
|
334
|
+
"name: Hello",
|
|
335
|
+
"order: 1000",
|
|
336
|
+
""
|
|
337
|
+
].join("\n")
|
|
338
|
+
});
|
|
339
|
+
const requests = [
|
|
340
|
+
{
|
|
341
|
+
file: "List (anonymous).request.yaml",
|
|
342
|
+
yaml: [
|
|
343
|
+
"$kind: http-request",
|
|
344
|
+
"name: List (anonymous)",
|
|
345
|
+
"method: GET",
|
|
346
|
+
'url: "{{baseUrl}}/hello"',
|
|
347
|
+
"auth:",
|
|
348
|
+
" type: noauth",
|
|
349
|
+
"order: 1000",
|
|
350
|
+
""
|
|
351
|
+
].join("\n")
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
file: "Get by id.request.yaml",
|
|
355
|
+
yaml: [
|
|
356
|
+
"$kind: http-request",
|
|
357
|
+
"name: Get by id",
|
|
358
|
+
"method: GET",
|
|
359
|
+
'url: "{{baseUrl}}/hello/:id"',
|
|
360
|
+
"order: 2000",
|
|
361
|
+
""
|
|
362
|
+
].join("\n")
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
file: "Create.request.yaml",
|
|
366
|
+
yaml: [
|
|
367
|
+
"$kind: http-request",
|
|
368
|
+
"name: Create",
|
|
369
|
+
"method: POST",
|
|
370
|
+
'url: "{{baseUrl}}/hello"',
|
|
371
|
+
"headers:",
|
|
372
|
+
" Content-Type: application/json",
|
|
373
|
+
"body:",
|
|
374
|
+
" type: json",
|
|
375
|
+
" content: |-",
|
|
376
|
+
" {",
|
|
377
|
+
' "message": "hello"',
|
|
378
|
+
" }",
|
|
379
|
+
"order: 3000",
|
|
380
|
+
""
|
|
381
|
+
].join("\n")
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
file: "Update.request.yaml",
|
|
385
|
+
yaml: [
|
|
386
|
+
"$kind: http-request",
|
|
387
|
+
"name: Update",
|
|
388
|
+
"method: PUT",
|
|
389
|
+
'url: "{{baseUrl}}/hello/:id"',
|
|
390
|
+
"headers:",
|
|
391
|
+
" Content-Type: application/json",
|
|
392
|
+
"body:",
|
|
393
|
+
" type: json",
|
|
394
|
+
" content: |-",
|
|
395
|
+
" {",
|
|
396
|
+
' "message": "updated"',
|
|
397
|
+
" }",
|
|
398
|
+
"order: 4000",
|
|
399
|
+
""
|
|
400
|
+
].join("\n")
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
file: "Delete.request.yaml",
|
|
404
|
+
yaml: [
|
|
405
|
+
"$kind: http-request",
|
|
406
|
+
"name: Delete",
|
|
407
|
+
"method: DELETE",
|
|
408
|
+
'url: "{{baseUrl}}/hello/:id"',
|
|
409
|
+
"order: 5000",
|
|
410
|
+
""
|
|
411
|
+
].join("\n")
|
|
412
|
+
}
|
|
413
|
+
];
|
|
414
|
+
for (const r of requests){
|
|
415
|
+
files.push({
|
|
416
|
+
filePath: `${collectionDir}/Hello/${r.file}`,
|
|
417
|
+
content: r.yaml
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
return files;
|
|
160
421
|
}
|
|
161
422
|
async function scaffold(workspace, options) {
|
|
162
|
-
if (options.postmanProvider === "none") return;
|
|
423
|
+
if (options.postmanProvider === "none" || options.postmanProvider == null) return;
|
|
163
424
|
const authConfigModel = workspace.getModel(WELL_KNOWN_FILES.AUTH_CONFIG);
|
|
164
425
|
const authCfg = authConfigModel?.config;
|
|
165
426
|
let spaClientId;
|
|
166
|
-
if (
|
|
427
|
+
if (authCfg?.issuerBaseUrl) {
|
|
167
428
|
try {
|
|
168
|
-
const app = auth0Cli.createSpaApp(`${workspace.name} Postman`,
|
|
429
|
+
const app = auth0Cli.createSpaApp(`${workspace.name} Postman`, [
|
|
430
|
+
...POSTMAN_CALLBACKS
|
|
431
|
+
]);
|
|
169
432
|
spaClientId = app.client_id;
|
|
170
433
|
console.log(" ✓ Auth0 SPA app created for Postman PKCE");
|
|
434
|
+
try {
|
|
435
|
+
auth0Cli.enableConnectionForClient(auth0Cli.DB_CONNECTION_NAME, spaClientId);
|
|
436
|
+
console.log(` ✓ Enabled ${auth0Cli.DB_CONNECTION_NAME} on Postman SPA`);
|
|
437
|
+
} catch (err) {
|
|
438
|
+
console.error(` ✗ Failed to enable DB connection on SPA: ${err instanceof Error ? err.message : err}`);
|
|
439
|
+
}
|
|
171
440
|
} catch {
|
|
172
|
-
console.error(" ✗ Failed to create Auth0 SPA app —
|
|
441
|
+
console.error(" ✗ Failed to create Auth0 SPA app — set auth0ClientId in the environment.");
|
|
173
442
|
}
|
|
174
443
|
}
|
|
175
444
|
const auth0Env = authCfg?.issuerBaseUrl ? {
|
|
@@ -178,21 +447,30 @@ async function scaffold(workspace, options) {
|
|
|
178
447
|
auth0ClientId: spaClientId
|
|
179
448
|
} : undefined;
|
|
180
449
|
const projectName = workspace.name;
|
|
181
|
-
const
|
|
182
|
-
const
|
|
450
|
+
const envName = `${projectName} Local`;
|
|
451
|
+
const localFiles = buildLocalViewFiles(projectName, auth0Env);
|
|
452
|
+
const envYaml = buildEnvironmentYaml(envName, auth0Env);
|
|
183
453
|
workspace.addFile({
|
|
184
454
|
files: ()=>[
|
|
185
455
|
{
|
|
186
|
-
filePath:
|
|
187
|
-
content:
|
|
456
|
+
filePath: ".postman/resources.yaml",
|
|
457
|
+
content: [
|
|
458
|
+
"# Open this project root in Postman (Files → Open folder), not the postman/ subfolder.",
|
|
459
|
+
"# Postman fills workspace.id when you connect Local View.",
|
|
460
|
+
"#",
|
|
461
|
+
"# All resources under postman/ are registered automatically.",
|
|
462
|
+
""
|
|
463
|
+
].join("\n")
|
|
188
464
|
},
|
|
189
465
|
{
|
|
190
|
-
filePath: `postman/
|
|
191
|
-
content:
|
|
192
|
-
}
|
|
466
|
+
filePath: `postman/environments/${projectName}-Local.environment.yaml`,
|
|
467
|
+
content: envYaml
|
|
468
|
+
},
|
|
469
|
+
...localFiles
|
|
193
470
|
]
|
|
194
471
|
});
|
|
195
472
|
if (options.postmanProvider === "api" && options.apiKey) {
|
|
473
|
+
const collection = buildCollectionJson(projectName, auth0Env);
|
|
196
474
|
const headers = {
|
|
197
475
|
"X-Api-Key": options.apiKey,
|
|
198
476
|
"Content-Type": "application/json"
|
|
@@ -209,7 +487,7 @@ async function scaffold(workspace, options) {
|
|
|
209
487
|
} else {
|
|
210
488
|
console.error(" ✗ Failed to upload Postman collection");
|
|
211
489
|
}
|
|
212
|
-
const
|
|
490
|
+
const envValues = [
|
|
213
491
|
{
|
|
214
492
|
key: "baseUrl",
|
|
215
493
|
value: "http://localhost:3000",
|
|
@@ -238,8 +516,8 @@ async function scaffold(workspace, options) {
|
|
|
238
516
|
headers,
|
|
239
517
|
body: JSON.stringify({
|
|
240
518
|
environment: {
|
|
241
|
-
name:
|
|
242
|
-
values:
|
|
519
|
+
name: envName,
|
|
520
|
+
values: envValues
|
|
243
521
|
}
|
|
244
522
|
})
|
|
245
523
|
});
|
|
@@ -254,5 +532,6 @@ export const PostmanFeature = {
|
|
|
254
532
|
getOptions,
|
|
255
533
|
scaffold
|
|
256
534
|
};
|
|
535
|
+
export { POSTMAN_CALLBACKS, POSTMAN_SCOPES };
|
|
257
536
|
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL3Bvc3RtYW4uZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwaWNrIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIjtcbmltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVNjYWZmb2xkIH0gZnJvbSBcIi4uLy4uL21vZGVscy9wcm9qZWN0Lm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmUgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2NhZmZvbGQuc2VydmljZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBdXRoQ29uZmlnTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2F1dGgtY29uZmlnLm1vZGVsLmpzXCI7XG5pbXBvcnQgKiBhcyBhdXRoMENsaSBmcm9tIFwiLi9hdXRoMC1jbGkuanNcIjtcblxuZXhwb3J0IHR5cGUgUG9zdG1hbk9wdGlvbnMgPSB7XG5cdHBvc3RtYW5Qcm92aWRlcj86IFwiYXBpXCIgfCBcImxvY2FsXCIgfCBcIm5vbmVcIjtcblx0YXBpS2V5Pzogc3RyaW5nO1xuXHR3b3Jrc3BhY2VJZD86IHN0cmluZztcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE9wdGlvbnMoXG5cdF93b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRjbGlPcHRpb25zOiBQYXJ0aWFsPFBvc3RtYW5PcHRpb25zPixcbik6IFByb21pc2U8UGFydGlhbDxQb3N0bWFuT3B0aW9ucz4+IHtcblx0aWYgKGNsaU9wdGlvbnMucG9zdG1hblByb3ZpZGVyICE9IG51bGwpIHJldHVybiB7fTtcblxuXHRjb25zdCBjaG9pY2VzID0gW1xuXHRcdHsgbGFiZWw6IFwibm9uZVwiIGFzIGNvbnN0LCBkZXNjcmlwdGlvbjogXCJza2lwXCIgfSxcblx0XHR7IGxhYmVsOiBcImxvY2FsXCIgYXMgY29uc3QsIGRlc2NyaXB0aW9uOiBcIndyaXRlIGNvbGxlY3Rpb24gKyBlbnZpcm9ubWVudCBmaWxlc1wiIH0sXG5cdFx0eyBsYWJlbDogXCJhcGlcIiBhcyBjb25zdCwgZGVzY3JpcHRpb246IFwid3JpdGUgZmlsZXMgYW5kIHVwbG9hZCB0byBQb3N0bWFuLmNvbVwiIH0sXG5cdF07XG5cdGNvbnN0IHNlbGVjdGVkID0gYXdhaXQgcGljayhcblx0XHRcIlxcbiAgUG9zdG1hbjogXCIsXG5cdFx0Y2hvaWNlcyxcblx0XHQoYykgPT4gYCR7Yy5sYWJlbH0g4oCUICR7Yy5kZXNjcmlwdGlvbn1gLFxuXHQpO1xuXHRjb25zdCBwcm92aWRlciA9IHNlbGVjdGVkPy5sYWJlbCA/PyBcIm5vbmVcIjtcblxuXHRpZiAocHJvdmlkZXIgPT09IFwibm9uZVwiKSByZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwibm9uZVwiIH07XG5cdGlmIChwcm92aWRlciA9PT0gXCJsb2NhbFwiKSByZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwibG9jYWxcIiB9O1xuXG5cdC8vIGFwaTogY29sbGVjdCBBUEkga2V5ICsgd29ya3NwYWNlIHNlbGVjdGlvblxuXHRjb25zdCBhcGlLZXkgPVxuXHRcdHByb2Nlc3MuZW52LlBPU1RNQU5fQVBJX0tFWSA/P1xuXHRcdChhd2FpdCBpbXBvcnQoXCIuLi8uLi9kb21haW4vcHJvbXB0LmpzXCIpLnRoZW4oKG0pID0+XG5cdFx0XHRtLmFzayhcIlxcbiAgUG9zdG1hbiBBUEkga2V5IChhcHAuZ2V0cG9zdG1hbi5jb20vc2V0dGluZ3MvbWUvYXBpLWtleXMpOiBcIiksXG5cdFx0KSk7XG5cblx0Y29uc3QgaGVhZGVycyA9IHsgXCJYLUFwaS1LZXlcIjogYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXHRjb25zdCB3c1JlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7IGhlYWRlcnMgfSk7XG5cblx0aWYgKCF3c1Jlcy5vaykge1xuXHRcdGNvbnNvbGUuZXJyb3IoXCJcXG4gIFBvc3RtYW4gQVBJIGtleSBpbnZhbGlkIOKAlCBmYWxsaW5nIGJhY2sgdG8gbG9jYWwgZmlsZXMuXCIpO1xuXHRcdHJldHVybiB7IHBvc3RtYW5Qcm92aWRlcjogXCJsb2NhbFwiIH07XG5cdH1cblxuXHRjb25zdCB7IHdvcmtzcGFjZXMgfSA9IChhd2FpdCB3c1Jlcy5qc29uKCkpIGFzIHtcblx0XHR3b3Jrc3BhY2VzOiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0+O1xuXHR9O1xuXG5cdHR5cGUgV3NDaG9pY2UgPSB7IGxhYmVsOiBzdHJpbmc7IGlkOiBzdHJpbmcgfCBudWxsIH07XG5cdGNvbnN0IHdzQ2hvaWNlczogV3NDaG9pY2VbXSA9IFtcblx0XHR7IGxhYmVsOiBcIjxuZXcgd29ya3NwYWNlPlwiLCBpZDogbnVsbCB9LFxuXHRcdC4uLndvcmtzcGFjZXMubWFwKCh3KSA9PiAoeyBsYWJlbDogYCR7dy5uYW1lfSAoJHt3LnR5cGV9KWAsIGlkOiB3LmlkIH0pKSxcblx0XTtcblxuXHRjb25zdCB3c1BpY2tlZCA9IGF3YWl0IHBpY2soXCJcXG4gIFBvc3RtYW4gd29ya3NwYWNlOiBcIiwgd3NDaG9pY2VzLCAoYykgPT4gYy5sYWJlbCk7XG5cblx0bGV0IHdvcmtzcGFjZUlkOiBzdHJpbmc7XG5cdGlmICghd3NQaWNrZWQgfHwgd3NQaWNrZWQuaWQgPT09IG51bGwpIHtcblx0XHRjb25zdCB7IGFzayB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiKTtcblx0XHRjb25zdCB3c05hbWUgPSBhd2FpdCBhc2soYCAgV29ya3NwYWNlIG5hbWU6IGApO1xuXHRcdGNvbnN0IGNyZWF0ZVJlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7XG5cdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0aGVhZGVycyxcblx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgd29ya3NwYWNlOiB7IG5hbWU6IHdzTmFtZSwgdHlwZTogXCJwZXJzb25hbFwiIH0gfSksXG5cdFx0fSk7XG5cdFx0Y29uc3QgeyB3b3Jrc3BhY2U6IHdzIH0gPSAoYXdhaXQgY3JlYXRlUmVzLmpzb24oKSkgYXMgeyB3b3Jrc3BhY2U6IHsgaWQ6IHN0cmluZyB9IH07XG5cdFx0d29ya3NwYWNlSWQgPSB3cy5pZDtcblx0XHRjb25zb2xlLmxvZyhgICDinJMgV29ya3NwYWNlIGNyZWF0ZWQ6ICR7d3NOYW1lfWApO1xuXHR9IGVsc2Uge1xuXHRcdHdvcmtzcGFjZUlkID0gd3NQaWNrZWQuaWQ7XG5cdH1cblxuXHRyZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwiYXBpXCIsIGFwaUtleSwgd29ya3NwYWNlSWQgfTtcbn1cblxudHlwZSBBdXRoMEVudiA9IHtcblx0YXV0aDBEb21haW4/OiBzdHJpbmc7XG5cdGF1dGgwQXVkaWVuY2U/OiBzdHJpbmc7XG5cdGF1dGgwQ2xpZW50SWQ/OiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBidWlsZENvbGxlY3Rpb24ocHJvamVjdE5hbWU6IHN0cmluZywgYXV0aD86IEF1dGgwRW52KTogdW5rbm93biB7XG5cdGNvbnN0IGF1dGhPYmogPSBhdXRoPy5hdXRoMERvbWFpblxuXHRcdD8ge1xuXHRcdFx0XHR0eXBlOiBcIm9hdXRoMlwiLFxuXHRcdFx0XHRvYXV0aDI6IFtcblx0XHRcdFx0XHR7IGtleTogXCJncmFudF90eXBlXCIsIHZhbHVlOiBcImF1dGhvcml6YXRpb25fY29kZV93aXRoX3BrY2VcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGtleTogXCJhdXRoVXJsXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJodHRwczovL3t7YXV0aDBEb21haW59fS9hdXRob3JpemU/YXVkaWVuY2U9e3thdXRoMEF1ZGllbmNlfX1cIixcblx0XHRcdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXk6IFwiYWNjZXNzVG9rZW5VcmxcIixcblx0XHRcdFx0XHRcdHZhbHVlOiBcImh0dHBzOi8ve3thdXRoMERvbWFpbn19L29hdXRoL3Rva2VuXCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiY2xpZW50SWRcIiwgdmFsdWU6IFwie3thdXRoMENsaWVudElkfX1cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcInNjb3BlXCIsIHZhbHVlOiBcIm9wZW5pZCBwcm9maWxlIGVtYWlsXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJhZGRUb2tlblRvXCIsIHZhbHVlOiBcImhlYWRlclwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiY2hhbGxlbmdlQWxnb3JpdGhtXCIsIHZhbHVlOiBcIlMyNTZcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fVxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdHJldHVybiB7XG5cdFx0aW5mbzoge1xuXHRcdFx0bmFtZTogYCR7cHJvamVjdE5hbWV9IFdlYkFQSWAsXG5cdFx0XHRzY2hlbWE6IFwiaHR0cHM6Ly9zY2hlbWEuZ2V0cG9zdG1hbi5jb20vanNvbi9jb2xsZWN0aW9uL3YyLjEuMC9jb2xsZWN0aW9uLmpzb25cIixcblx0XHR9LFxuXHRcdC4uLihhdXRoT2JqID8geyBhdXRoOiBhdXRoT2JqIH0gOiB7fSksXG5cdFx0aXRlbTogW1xuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiBcIkhlbGxvXCIsXG5cdFx0XHRcdHJlcXVlc3Q6IHtcblx0XHRcdFx0XHRtZXRob2Q6IFwiR0VUXCIsXG5cdFx0XHRcdFx0dXJsOiB7IHJhdzogXCJ7e2Jhc2VVcmx9fS9oZWxsb1wiLCBob3N0OiBbXCJ7e2Jhc2VVcmx9fVwiXSwgcGF0aDogW1wiaGVsbG9cIl0gfSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XSxcblx0fTtcbn1cblxuZnVuY3Rpb24gYnVpbGRFbnZpcm9ubWVudFlhbWwobmFtZTogc3RyaW5nLCBhdXRoPzogQXV0aDBFbnYpOiBzdHJpbmcge1xuXHRjb25zdCBhdXRoMFNlY3Rpb24gPSBhdXRoPy5hdXRoMERvbWFpblxuXHRcdD8gW1xuXHRcdFx0XHRcIiAgLSBrZXk6IGF1dGgwRG9tYWluXCIsXG5cdFx0XHRcdGAgICAgdmFsdWU6ICR7YXV0aC5hdXRoMERvbWFpbn1gLFxuXHRcdFx0XHRcIiAgLSBrZXk6IGF1dGgwQXVkaWVuY2VcIixcblx0XHRcdFx0YCAgICB2YWx1ZTogJyR7YXV0aC5hdXRoMEF1ZGllbmNlID8/IFwiXCJ9J2AsXG5cdFx0XHRcdFwiICAtIGtleTogYXV0aDBDbGllbnRJZFwiLFxuXHRcdFx0XHRgICAgIHZhbHVlOiAnJHthdXRoLmF1dGgwQ2xpZW50SWQgPz8gXCJcIn0nYCxcblx0XHRcdFx0XCIgICAgZGVzY3JpcHRpb246IENsaWVudCBJRCBvZiB0aGUgQXV0aDAgU1BBIGFwcGxpY2F0aW9uIHVzZWQgYnkgUG9zdG1hbiBmb3IgUEtDRSBhdXRoZW50aWNhdGlvblwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpICsgXCJcXG5cIlxuXHRcdDogXCJcIjtcblxuXHRyZXR1cm4gYG5hbWU6ICR7bmFtZX1cXG52YWx1ZXM6XFxuICAtIGtleTogYmFzZVVybFxcbiAgICB2YWx1ZTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCdcXG4ke2F1dGgwU2VjdGlvbn1gO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FmZm9sZCh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBvcHRpb25zOiBQb3N0bWFuT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwibm9uZVwiKSByZXR1cm47XG5cblx0Y29uc3QgYXV0aENvbmZpZ01vZGVsID0gd29ya3NwYWNlLmdldE1vZGVsPEF1dGhDb25maWdNb2RlbD4oV0VMTF9LTk9XTl9GSUxFUy5BVVRIX0NPTkZJRyk7XG5cdGNvbnN0IGF1dGhDZmcgPSBhdXRoQ29uZmlnTW9kZWw/LmNvbmZpZztcblxuXHRsZXQgc3BhQ2xpZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwiYXBpXCIgJiYgb3B0aW9ucy5hcGlLZXkgJiYgYXV0aENmZz8uaXNzdWVyQmFzZVVybCkge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBhcHAgPSBhdXRoMENsaS5jcmVhdGVTcGFBcHAoXG5cdFx0XHRcdGAke3dvcmtzcGFjZS5uYW1lfSBQb3N0bWFuYCxcblx0XHRcdFx0XCJodHRwczovL29hdXRoLnBzdG1uLmlvL3YxL2NhbGxiYWNrXCIsXG5cdFx0XHQpO1xuXHRcdFx0c3BhQ2xpZW50SWQgPSBhcHAuY2xpZW50X2lkO1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBBdXRoMCBTUEEgYXBwIGNyZWF0ZWQgZm9yIFBvc3RtYW4gUEtDRVwiKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCIgIOKclyBGYWlsZWQgdG8gY3JlYXRlIEF1dGgwIFNQQSBhcHAg4oCUIGNvbnRpbnVpbmcgd2l0aG91dCBpdC5cIik7XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgYXV0aDBFbnY6IEF1dGgwRW52IHwgdW5kZWZpbmVkID0gYXV0aENmZz8uaXNzdWVyQmFzZVVybFxuXHRcdD8ge1xuXHRcdFx0XHRhdXRoMERvbWFpbjogYXV0aENmZy5pc3N1ZXJCYXNlVXJsLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgXCJcIiksXG5cdFx0XHRcdGF1dGgwQXVkaWVuY2U6IGF1dGhDZmcuYXVkaWVuY2UsXG5cdFx0XHRcdGF1dGgwQ2xpZW50SWQ6IHNwYUNsaWVudElkLFxuXHRcdFx0fVxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IHByb2plY3ROYW1lID0gd29ya3NwYWNlLm5hbWU7XG5cdGNvbnN0IGNvbGxlY3Rpb24gPSBidWlsZENvbGxlY3Rpb24ocHJvamVjdE5hbWUsIGF1dGgwRW52KTtcblx0Y29uc3QgZW52WWFtbCA9IGJ1aWxkRW52aXJvbm1lbnRZYW1sKGAke3Byb2plY3ROYW1lfSDigJQgTG9jYWxgLCBhdXRoMEVudik7XG5cblx0d29ya3NwYWNlLmFkZEZpbGUoe1xuXHRcdGZpbGVzOiAoKSA9PiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBgcG9zdG1hbi9lbnZpcm9ubWVudHMvJHtwcm9qZWN0TmFtZX0gXFx1MjAxNCBMb2NhbC5lbnZpcm9ubWVudC55YW1sYCxcblx0XHRcdFx0Y29udGVudDogZW52WWFtbCxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBgcG9zdG1hbi9jb2xsZWN0aW9ucy8ke3Byb2plY3ROYW1lfS5wb3N0bWFuX2NvbGxlY3Rpb24uanNvbmAsXG5cdFx0XHRcdGNvbnRlbnQ6IGAke0pTT04uc3RyaW5naWZ5KGNvbGxlY3Rpb24sIG51bGwsIDIpfVxcbmAsXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH0pO1xuXG5cdGlmIChvcHRpb25zLnBvc3RtYW5Qcm92aWRlciA9PT0gXCJhcGlcIiAmJiBvcHRpb25zLmFwaUtleSkge1xuXHRcdGNvbnN0IGhlYWRlcnMgPSB7IFwiWC1BcGktS2V5XCI6IG9wdGlvbnMuYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXG5cdFx0Y29uc3QgY29sUmVzID0gYXdhaXQgZmV0Y2goXG5cdFx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vY29sbGVjdGlvbnM/d29ya3NwYWNlPSR7b3B0aW9ucy53b3Jrc3BhY2VJZH1gLFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRoZWFkZXJzLFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7IGNvbGxlY3Rpb24gfSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGNvbFJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGNvbGxlY3Rpb24gdXBsb2FkZWRcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCIgIOKclyBGYWlsZWQgdG8gdXBsb2FkIFBvc3RtYW4gY29sbGVjdGlvblwiKTtcblx0XHR9XG5cblx0XHRjb25zdCBlbnZWYXJzID0gW1xuXHRcdFx0eyBrZXk6IFwiYmFzZVVybFwiLCB2YWx1ZTogXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0Li4uKGF1dGgwRW52Py5hdXRoMERvbWFpblxuXHRcdFx0XHQ/IFtcblx0XHRcdFx0XHRcdHsga2V5OiBcImF1dGgwRG9tYWluXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMERvbWFpbiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0XHRcdFx0eyBrZXk6IFwiYXV0aDBBdWRpZW5jZVwiLCB2YWx1ZTogYXV0aDBFbnYuYXV0aDBBdWRpZW5jZSA/PyBcIlwiLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHRcdFx0XHR7IGtleTogXCJhdXRoMENsaWVudElkXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMENsaWVudElkID8/IFwiXCIsIGVuYWJsZWQ6IHRydWUgfSxcblx0XHRcdFx0XHRdXG5cdFx0XHRcdDogW10pLFxuXHRcdF07XG5cdFx0Y29uc3QgZW52UmVzID0gYXdhaXQgZmV0Y2goXG5cdFx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vZW52aXJvbm1lbnRzP3dvcmtzcGFjZT0ke29wdGlvbnMud29ya3NwYWNlSWR9YCxcblx0XHRcdHtcblx0XHRcdFx0bWV0aG9kOiBcIlBPU1RcIixcblx0XHRcdFx0aGVhZGVycyxcblx0XHRcdFx0Ym9keTogSlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0XHRcdGVudmlyb25tZW50OiB7IG5hbWU6IGAke3Byb2plY3ROYW1lfSDigJQgTG9jYWxgLCB2YWx1ZXM6IGVudlZhcnMgfSxcblx0XHRcdFx0fSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGVudlJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGVudmlyb25tZW50IHVwbG9hZGVkXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiICDinJcgRmFpbGVkIHRvIHVwbG9hZCBQb3N0bWFuIGVudmlyb25tZW50XCIpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY29uc3QgUG9zdG1hbkZlYXR1cmU6IEZlYXR1cmU8UG9zdG1hbk9wdGlvbnM+ID0geyBnZXRPcHRpb25zLCBzY2FmZm9sZCB9O1xuIl0sIm5hbWVzIjpbInBpY2siLCJXRUxMX0tOT1dOX0ZJTEVTIiwiYXV0aDBDbGkiLCJnZXRPcHRpb25zIiwiX3dvcmtzcGFjZSIsImNsaU9wdGlvbnMiLCJwb3N0bWFuUHJvdmlkZXIiLCJjaG9pY2VzIiwibGFiZWwiLCJkZXNjcmlwdGlvbiIsInNlbGVjdGVkIiwiYyIsInByb3ZpZGVyIiwiYXBpS2V5IiwicHJvY2VzcyIsImVudiIsIlBPU1RNQU5fQVBJX0tFWSIsInRoZW4iLCJtIiwiYXNrIiwiaGVhZGVycyIsIndzUmVzIiwiZmV0Y2giLCJvayIsImNvbnNvbGUiLCJlcnJvciIsIndvcmtzcGFjZXMiLCJqc29uIiwid3NDaG9pY2VzIiwiaWQiLCJtYXAiLCJ3IiwibmFtZSIsInR5cGUiLCJ3c1BpY2tlZCIsIndvcmtzcGFjZUlkIiwid3NOYW1lIiwiY3JlYXRlUmVzIiwibWV0aG9kIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3b3Jrc3BhY2UiLCJ3cyIsImxvZyIsImJ1aWxkQ29sbGVjdGlvbiIsInByb2plY3ROYW1lIiwiYXV0aCIsImF1dGhPYmoiLCJhdXRoMERvbWFpbiIsIm9hdXRoMiIsImtleSIsInZhbHVlIiwidW5kZWZpbmVkIiwiaW5mbyIsInNjaGVtYSIsIml0ZW0iLCJyZXF1ZXN0IiwidXJsIiwicmF3IiwiaG9zdCIsInBhdGgiLCJidWlsZEVudmlyb25tZW50WWFtbCIsImF1dGgwU2VjdGlvbiIsImF1dGgwQXVkaWVuY2UiLCJhdXRoMENsaWVudElkIiwiam9pbiIsInNjYWZmb2xkIiwib3B0aW9ucyIsImF1dGhDb25maWdNb2RlbCIsImdldE1vZGVsIiwiQVVUSF9DT05GSUciLCJhdXRoQ2ZnIiwiY29uZmlnIiwic3BhQ2xpZW50SWQiLCJpc3N1ZXJCYXNlVXJsIiwiYXBwIiwiY3JlYXRlU3BhQXBwIiwiY2xpZW50X2lkIiwiYXV0aDBFbnYiLCJyZXBsYWNlIiwiYXVkaWVuY2UiLCJjb2xsZWN0aW9uIiwiZW52WWFtbCIsImFkZEZpbGUiLCJmaWxlcyIsImZpbGVQYXRoIiwiY29udGVudCIsImNvbFJlcyIsImVudlZhcnMiLCJlbmFibGVkIiwiZW52UmVzIiwiZW52aXJvbm1lbnQiLCJ2YWx1ZXMiLCJQb3N0bWFuRmVhdHVyZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsSUFBSSxRQUFRLHlCQUF5QjtBQUM5QyxTQUFTQyxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFJekQsWUFBWUMsY0FBYyxpQkFBaUI7QUFRM0MsZUFBZUMsV0FDZEMsVUFBNkIsRUFDN0JDLFVBQW1DO0lBRW5DLElBQUlBLFdBQVdDLGVBQWUsSUFBSSxNQUFNLE9BQU8sQ0FBQztJQUVoRCxNQUFNQyxVQUFVO1FBQ2Y7WUFBRUMsT0FBTztZQUFpQkMsYUFBYTtRQUFPO1FBQzlDO1lBQUVELE9BQU87WUFBa0JDLGFBQWE7UUFBdUM7UUFDL0U7WUFBRUQsT0FBTztZQUFnQkMsYUFBYTtRQUF3QztLQUM5RTtJQUNELE1BQU1DLFdBQVcsTUFBTVYsS0FDdEIsaUJBQ0FPLFNBQ0EsQ0FBQ0ksSUFBTSxHQUFHQSxFQUFFSCxLQUFLLENBQUMsR0FBRyxFQUFFRyxFQUFFRixXQUFXLEVBQUU7SUFFdkMs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
|
|
537
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL3Bvc3RtYW4uZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIjtcbmltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVNjYWZmb2xkIH0gZnJvbSBcIi4uLy4uL21vZGVscy9wcm9qZWN0Lm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmUgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2NhZmZvbGQuc2VydmljZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBdXRoQ29uZmlnTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2F1dGgtY29uZmlnLm1vZGVsLmpzXCI7XG5pbXBvcnQgKiBhcyBhdXRoMENsaSBmcm9tIFwiLi9hdXRoMC1jbGkuanNcIjtcblxuLyoqIFBvc3RtYW4gT0F1dGggY2FsbGJhY2sgVVJMcyAocG9wdXAgKyBcIkF1dGhvcml6ZSB1c2luZyBicm93c2VyXCIpLiAqL1xuY29uc3QgUE9TVE1BTl9DQUxMQkFDS1MgPSBbXG5cdFwiaHR0cHM6Ly9vYXV0aC5wc3Rtbi5pby92MS9jYWxsYmFja1wiLFxuXHRcImh0dHBzOi8vb2F1dGgucHN0bW4uaW8vdjEvYnJvd3Nlci1jYWxsYmFja1wiLFxuXSBhcyBjb25zdDtcblxuLyoqIFNjb3BlcyByZXF1ZXN0ZWQgZm9yIEF1dGgwIGFjY2VzcyB0b2tlbnMgKE9JREMgKyBIZWxsbyBDQVNMIHBlcm1pc3Npb25zKS4gKi9cbmNvbnN0IFBPU1RNQU5fU0NPUEVTID0gW1xuXHRcIm9wZW5pZFwiLFxuXHRcInByb2ZpbGVcIixcblx0XCJlbWFpbFwiLFxuXHRcInJlYWQ6SGVsbG9cIixcblx0XCJjcmVhdGU6SGVsbG9cIixcblx0XCJ1cGRhdGU6SGVsbG9cIixcblx0XCJkZWxldGU6SGVsbG9cIixcbl0uam9pbihcIiBcIik7XG5cbmV4cG9ydCB0eXBlIFBvc3RtYW5PcHRpb25zID0ge1xuXHRwb3N0bWFuUHJvdmlkZXI/OiBcImFwaVwiIHwgXCJsb2NhbFwiIHwgXCJub25lXCI7XG5cdGFwaUtleT86IHN0cmluZztcblx0d29ya3NwYWNlSWQ/OiBzdHJpbmc7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBnZXRPcHRpb25zKFxuXHRfd29ya3NwYWNlOiBXb3Jrc3BhY2VTY2FmZm9sZCxcblx0Y2xpT3B0aW9uczogUGFydGlhbDxQb3N0bWFuT3B0aW9ucz4sXG4pOiBQcm9taXNlPFBhcnRpYWw8UG9zdG1hbk9wdGlvbnM+PiB7XG5cdGlmIChjbGlPcHRpb25zLnBvc3RtYW5Qcm92aWRlciAhPSBudWxsKSByZXR1cm4ge307XG5cblx0Y29uc3QgY2hvaWNlcyA9IFtcblx0XHR7IGxhYmVsOiBcIm5vbmVcIiBhcyBjb25zdCwgZGVzY3JpcHRpb246IFwic2tpcFwiIH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IFwibG9jYWxcIiBhcyBjb25zdCxcblx0XHRcdGRlc2NyaXB0aW9uOiBcIkxvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGZpbGVzIChubyBBUEkga2V5KVwiLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IFwiYXBpXCIgYXMgY29uc3QsXG5cdFx0XHRkZXNjcmlwdGlvbjogXCJhbHNvIHVwbG9hZCB0byBQb3N0bWFuLmNvbSAobmVlZHMgQVBJIGtleSlcIixcblx0XHR9LFxuXHRdO1xuXHRjb25zdCBzZWxlY3RlZCA9IGF3YWl0IHBpY2soXG5cdFx0XCJcXG4gIFBvc3RtYW46IFwiLFxuXHRcdGNob2ljZXMsXG5cdFx0KGMpID0+IGAke2MubGFiZWx9IOKAlCAke2MuZGVzY3JpcHRpb259YCxcblx0KTtcblx0Y29uc3QgcHJvdmlkZXIgPSBzZWxlY3RlZD8ubGFiZWwgPz8gXCJub25lXCI7XG5cblx0aWYgKHByb3ZpZGVyID09PSBcIm5vbmVcIikgcmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcIm5vbmVcIiB9O1xuXHRpZiAocHJvdmlkZXIgPT09IFwibG9jYWxcIikgcmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcImxvY2FsXCIgfTtcblxuXHRjb25zdCBhcGlLZXkgPVxuXHRcdHByb2Nlc3MuZW52LlBPU1RNQU5fQVBJX0tFWSA/P1xuXHRcdChhd2FpdCBpbXBvcnQoXCIuLi8uLi9kb21haW4vcHJvbXB0LmpzXCIpLnRoZW4oKG0pID0+XG5cdFx0XHRtLmFzayhcIlxcbiAgUG9zdG1hbiBBUEkga2V5IChhcHAuZ2V0cG9zdG1hbi5jb20vc2V0dGluZ3MvbWUvYXBpLWtleXMpOiBcIiksXG5cdFx0KSk7XG5cblx0Y29uc3QgaGVhZGVycyA9IHsgXCJYLUFwaS1LZXlcIjogYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXHRjb25zdCB3c1JlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7IGhlYWRlcnMgfSk7XG5cblx0aWYgKCF3c1Jlcy5vaykge1xuXHRcdGNvbnNvbGUuZXJyb3IoXCJcXG4gIFBvc3RtYW4gQVBJIGtleSBpbnZhbGlkIOKAlCBmYWxsaW5nIGJhY2sgdG8gbG9jYWwgZmlsZXMuXCIpO1xuXHRcdHJldHVybiB7IHBvc3RtYW5Qcm92aWRlcjogXCJsb2NhbFwiIH07XG5cdH1cblxuXHRjb25zdCB7IHdvcmtzcGFjZXMgfSA9IChhd2FpdCB3c1Jlcy5qc29uKCkpIGFzIHtcblx0XHR3b3Jrc3BhY2VzOiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0+O1xuXHR9O1xuXG5cdHR5cGUgV3NDaG9pY2UgPSB7IGxhYmVsOiBzdHJpbmc7IGlkOiBzdHJpbmcgfCBudWxsIH07XG5cdGNvbnN0IHdzQ2hvaWNlczogV3NDaG9pY2VbXSA9IFtcblx0XHR7IGxhYmVsOiBcIjxuZXcgd29ya3NwYWNlPlwiLCBpZDogbnVsbCB9LFxuXHRcdC4uLndvcmtzcGFjZXMubWFwKCh3KSA9PiAoeyBsYWJlbDogYCR7dy5uYW1lfSAoJHt3LnR5cGV9KWAsIGlkOiB3LmlkIH0pKSxcblx0XTtcblxuXHRjb25zdCB3c1BpY2tlZCA9IGF3YWl0IHBpY2soXCJcXG4gIFBvc3RtYW4gd29ya3NwYWNlOiBcIiwgd3NDaG9pY2VzLCAoYykgPT4gYy5sYWJlbCk7XG5cblx0bGV0IHdvcmtzcGFjZUlkOiBzdHJpbmc7XG5cdGlmICghd3NQaWNrZWQgfHwgd3NQaWNrZWQuaWQgPT09IG51bGwpIHtcblx0XHRjb25zdCB7IGFzayB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiKTtcblx0XHRjb25zdCB3c05hbWUgPSBhd2FpdCBhc2soYCAgV29ya3NwYWNlIG5hbWU6IGApO1xuXHRcdGNvbnN0IGNyZWF0ZVJlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7XG5cdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0aGVhZGVycyxcblx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgd29ya3NwYWNlOiB7IG5hbWU6IHdzTmFtZSwgdHlwZTogXCJwZXJzb25hbFwiIH0gfSksXG5cdFx0fSk7XG5cdFx0Y29uc3QgeyB3b3Jrc3BhY2U6IHdzIH0gPSAoYXdhaXQgY3JlYXRlUmVzLmpzb24oKSkgYXMgeyB3b3Jrc3BhY2U6IHsgaWQ6IHN0cmluZyB9IH07XG5cdFx0d29ya3NwYWNlSWQgPSB3cy5pZDtcblx0XHRjb25zb2xlLmxvZyhgICDinJMgV29ya3NwYWNlIGNyZWF0ZWQ6ICR7d3NOYW1lfWApO1xuXHR9IGVsc2Uge1xuXHRcdHdvcmtzcGFjZUlkID0gd3NQaWNrZWQuaWQ7XG5cdH1cblxuXHRyZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwiYXBpXCIsIGFwaUtleSwgd29ya3NwYWNlSWQgfTtcbn1cblxudHlwZSBBdXRoMEVudiA9IHtcblx0YXV0aDBEb21haW4/OiBzdHJpbmc7XG5cdGF1dGgwQXVkaWVuY2U/OiBzdHJpbmc7XG5cdGF1dGgwQ2xpZW50SWQ/OiBzdHJpbmc7XG59O1xuXG4vKiogdjIuMSBKU09OIOKAlCB1c2VkIGZvciBQb3N0bWFuLmNvbSBBUEkgdXBsb2FkIG9ubHkuICovXG5mdW5jdGlvbiBidWlsZENvbGxlY3Rpb25Kc29uKHByb2plY3ROYW1lOiBzdHJpbmcsIGF1dGg/OiBBdXRoMEVudik6IHVua25vd24ge1xuXHRjb25zdCBhdXRoT2JqID0gYXV0aD8uYXV0aDBEb21haW5cblx0XHQ/IHtcblx0XHRcdFx0dHlwZTogXCJvYXV0aDJcIixcblx0XHRcdFx0b2F1dGgyOiBbXG5cdFx0XHRcdFx0eyBrZXk6IFwiZ3JhbnRfdHlwZVwiLCB2YWx1ZTogXCJhdXRob3JpemF0aW9uX2NvZGVfd2l0aF9wa2NlXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXk6IFwiYXV0aFVybFwiLFxuXHRcdFx0XHRcdFx0dmFsdWU6IFwiaHR0cHM6Ly97e2F1dGgwRG9tYWlufX0vYXV0aG9yaXplP2F1ZGllbmNlPXt7YXV0aDBBdWRpZW5jZX19XCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0a2V5OiBcImFjY2Vzc1Rva2VuVXJsXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJodHRwczovL3t7YXV0aDBEb21haW59fS9vYXV0aC90b2tlblwiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNsaWVudElkXCIsIHZhbHVlOiBcInt7YXV0aDBDbGllbnRJZH19XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJzY29wZVwiLCB2YWx1ZTogUE9TVE1BTl9TQ09QRVMsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJyZWRpcmVjdF91cmlcIiwgdmFsdWU6IFBPU1RNQU5fQ0FMTEJBQ0tTWzBdLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwidXNlQnJvd3NlclwiLCB2YWx1ZTogXCJ0cnVlXCIsIHR5cGU6IFwiYm9vbGVhblwiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiYWRkVG9rZW5Ub1wiLCB2YWx1ZTogXCJoZWFkZXJcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNoYWxsZW5nZUFsZ29yaXRobVwiLCB2YWx1ZTogXCJTMjU2XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJjbGllbnRfYXV0aGVudGljYXRpb25cIiwgdmFsdWU6IFwiYm9keVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiY2xpZW50U2VjcmV0XCIsIHZhbHVlOiBcIlwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwidG9rZW5OYW1lXCIsIHZhbHVlOiBgJHtwcm9qZWN0TmFtZX0gQWNjZXNzIFRva2VuYCwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fVxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IGhlbGxvVXJsID0gKHBhdGg6IHN0cmluZywgcmF3OiBzdHJpbmcpID0+ICh7XG5cdFx0cmF3OiBge3tiYXNlVXJsfX0ke3Jhd31gLFxuXHRcdGhvc3Q6IFtcInt7YmFzZVVybH19XCJdLFxuXHRcdHBhdGg6IHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKSxcblx0fSk7XG5cblx0cmV0dXJuIHtcblx0XHRpbmZvOiB7XG5cdFx0XHRfcG9zdG1hbl9pZDogcmFuZG9tVVVJRCgpLFxuXHRcdFx0bmFtZTogYCR7cHJvamVjdE5hbWV9IFdlYkFQSWAsXG5cdFx0XHRzY2hlbWE6IFwiaHR0cHM6Ly9zY2hlbWEuZ2V0cG9zdG1hbi5jb20vanNvbi9jb2xsZWN0aW9uL3YyLjEuMC9jb2xsZWN0aW9uLmpzb25cIixcblx0XHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XHRcIk9wZW4gdGhlIHByb2plY3Qgcm9vdCBpbiBQb3N0bWFuIExvY2FsIFZpZXcgKG5vdCB0aGUgcG9zdG1hbi8gZm9sZGVyKS4gXCIgK1xuXHRcdFx0XHRcIlNlbGVjdCB0aGUgTG9jYWwgZW52aXJvbm1lbnQsIHRoZW4gQXV0aG9yaXphdGlvbiDihpIgR2V0IE5ldyBBY2Nlc3MgVG9rZW4gKFBLQ0UpLlwiLFxuXHRcdH0sXG5cdFx0Li4uKGF1dGhPYmogPyB7IGF1dGg6IGF1dGhPYmogfSA6IHt9KSxcblx0XHRpdGVtOiBbXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiSGVsbG9cIixcblx0XHRcdFx0aXRlbTogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6IFwiTGlzdCAoYW5vbnltb3VzKVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRhdXRoOiB7IHR5cGU6IFwibm9hdXRoXCIgfSxcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiBcIkdFVFwiLFxuXHRcdFx0XHRcdFx0XHR1cmw6IGhlbGxvVXJsKFwiaGVsbG9cIiwgXCIvaGVsbG9cIiksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogXCJHZXQgYnkgaWRcIixcblx0XHRcdFx0XHRcdHJlcXVlc3Q6IHtcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiBcIkdFVFwiLFxuXHRcdFx0XHRcdFx0XHR1cmw6IGhlbGxvVXJsKFwiaGVsbG8vOmlkXCIsIFwiL2hlbGxvLzppZFwiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIkNyZWF0ZVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRcdFx0XHRoZWFkZXI6IFt7IGtleTogXCJDb250ZW50LVR5cGVcIiwgdmFsdWU6IFwiYXBwbGljYXRpb24vanNvblwiIH1dLFxuXHRcdFx0XHRcdFx0XHRib2R5OiB7XG5cdFx0XHRcdFx0XHRcdFx0bW9kZTogXCJyYXdcIixcblx0XHRcdFx0XHRcdFx0XHRyYXc6ICd7XFxuICBcIm1lc3NhZ2VcIjogXCJoZWxsb1wiXFxufVxcbicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsb1wiLCBcIi9oZWxsb1wiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIlVwZGF0ZVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiUFVUXCIsXG5cdFx0XHRcdFx0XHRcdGhlYWRlcjogW3sga2V5OiBcIkNvbnRlbnQtVHlwZVwiLCB2YWx1ZTogXCJhcHBsaWNhdGlvbi9qc29uXCIgfV0sXG5cdFx0XHRcdFx0XHRcdGJvZHk6IHtcblx0XHRcdFx0XHRcdFx0XHRtb2RlOiBcInJhd1wiLFxuXHRcdFx0XHRcdFx0XHRcdHJhdzogJ3tcXG4gIFwibWVzc2FnZVwiOiBcInVwZGF0ZWRcIlxcbn1cXG4nLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR1cmw6IGhlbGxvVXJsKFwiaGVsbG8vOmlkXCIsIFwiL2hlbGxvLzppZFwiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIkRlbGV0ZVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiREVMRVRFXCIsXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsby86aWRcIiwgXCIvaGVsbG8vOmlkXCIpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSxcblx0XHRdLFxuXHR9O1xufVxuXG5mdW5jdGlvbiB5YW1sUXVvdGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICgvWzoje31bXFxdLCYqP3w8Pj0hJUBgXS8udGVzdCh2YWx1ZSkgfHwgdmFsdWUuaW5jbHVkZXMoXCJcXG5cIikgfHwgdmFsdWUgPT09IFwiXCIpIHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIExvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGVudmlyb25tZW50IChZQU1MKS4gKi9cbmZ1bmN0aW9uIGJ1aWxkRW52aXJvbm1lbnRZYW1sKG5hbWU6IHN0cmluZywgYXV0aD86IEF1dGgwRW52KTogc3RyaW5nIHtcblx0Y29uc3QgdmFsdWVzOiBBcnJheTx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0gW1xuXHRcdHsga2V5OiBcImJhc2VVcmxcIiwgdmFsdWU6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwXCIgfSxcblx0XTtcblx0aWYgKGF1dGg/LmF1dGgwRG9tYWluKSB7XG5cdFx0dmFsdWVzLnB1c2goXG5cdFx0XHR7IGtleTogXCJhdXRoMERvbWFpblwiLCB2YWx1ZTogYXV0aC5hdXRoMERvbWFpbiB9LFxuXHRcdFx0eyBrZXk6IFwiYXV0aDBBdWRpZW5jZVwiLCB2YWx1ZTogYXV0aC5hdXRoMEF1ZGllbmNlID8/IFwiXCIgfSxcblx0XHRcdHsga2V5OiBcImF1dGgwQ2xpZW50SWRcIiwgdmFsdWU6IGF1dGguYXV0aDBDbGllbnRJZCA/PyBcIlwiIH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJhdXRoVXJsXCIsXG5cdFx0XHRcdHZhbHVlOiBgaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L2F1dGhvcml6ZT9hdWRpZW5jZT0ke2F1dGguYXV0aDBBdWRpZW5jZSA/PyBcIlwifWAsXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRrZXk6IFwiYWNjZXNzVG9rZW5VcmxcIixcblx0XHRcdFx0dmFsdWU6IGBodHRwczovLyR7YXV0aC5hdXRoMERvbWFpbn0vb2F1dGgvdG9rZW5gLFxuXHRcdFx0fSxcblx0XHRcdHsga2V5OiBcImNhbGxiYWNrVXJsXCIsIHZhbHVlOiBQT1NUTUFOX0NBTExCQUNLU1swXSB9LFxuXHRcdFx0eyBrZXk6IFwic2NvcGVcIiwgdmFsdWU6IFBPU1RNQU5fU0NPUEVTIH0sXG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGxpbmVzID0gW2BuYW1lOiAke3lhbWxRdW90ZShuYW1lKX1gLCBcInZhbHVlczpcIl07XG5cdGZvciAoY29uc3QgdiBvZiB2YWx1ZXMpIHtcblx0XHRsaW5lcy5wdXNoKGAgIC0ga2V5OiAke3Yua2V5fWApO1xuXHRcdGxpbmVzLnB1c2goYCAgICB2YWx1ZTogJHt5YW1sUXVvdGUodi52YWx1ZSl9YCk7XG5cdFx0bGluZXMucHVzaChcIiAgICBlbmFibGVkOiB0cnVlXCIpO1xuXHR9XG5cdHJldHVybiBgJHtsaW5lcy5qb2luKFwiXFxuXCIpfVxcbmA7XG59XG5cbi8qKiBMb2NhbCBWaWV3IC8gTmF0aXZlIEdpdCBjb2xsZWN0aW9uICh2MyBtdWx0aS1maWxlIFlBTUwpLiAqL1xuZnVuY3Rpb24gYnVpbGRMb2NhbFZpZXdGaWxlcyhcblx0cHJvamVjdE5hbWU6IHN0cmluZyxcblx0YXV0aD86IEF1dGgwRW52LFxuKTogQXJyYXk8eyBmaWxlUGF0aDogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT4ge1xuXHRjb25zdCBjb2xsZWN0aW9uRGlyID0gYHBvc3RtYW4vY29sbGVjdGlvbnMvJHtwcm9qZWN0TmFtZX0gV2ViQVBJYDtcblx0Y29uc3QgZmlsZXM6IEFycmF5PHsgZmlsZVBhdGg6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+ID0gW107XG5cblx0Ly8gUG9zdG1hbiBMb2NhbCBWaWV3IHN0b3JlcyBPQXV0aCB1bmRlciBhdXRoW10uY3JlZGVudGlhbHMgKG5vdCB0aGUgdjIuMSBvYXV0aDIgYXJyYXkpLlxuXHQvLyBVc2UgY29uY3JldGUgaHR0cHMgVVJMcyDigJQgZW1wdHkgQXV0aCBVUkwgeWllbGRzIFwiSW52YWxpZCBwcm90b2NvbCBmb3IgYXV0aCBVUkxcIi5cblx0Y29uc3QgYXV0aEJsb2NrID0gYXV0aD8uYXV0aDBEb21haW5cblx0XHQ/IFtcblx0XHRcdFx0XCJhdXRoOlwiLFxuXHRcdFx0XHRgICAtIGlkOiAke3JhbmRvbVVVSUQoKX1gLFxuXHRcdFx0XHRcIiAgICB0eXBlOiBvYXV0aDJcIixcblx0XHRcdFx0XCIgICAgbmFtZTogT0F1dGggMi4wXCIsXG5cdFx0XHRcdFwiICAgIGNyZWRlbnRpYWxzOlwiLFxuXHRcdFx0XHRcIiAgICAgIGFkZFRva2VuVG86IGhlYWRlclwiLFxuXHRcdFx0XHRcIiAgICAgIGdyYW50X3R5cGU6IGF1dGhvcml6YXRpb25fY29kZV93aXRoX3BrY2VcIixcblx0XHRcdFx0YCAgICAgIGF1dGhVcmw6IGh0dHBzOi8vJHthdXRoLmF1dGgwRG9tYWlufS9hdXRob3JpemU/YXVkaWVuY2U9JHthdXRoLmF1dGgwQXVkaWVuY2UgPz8gXCJcIn1gLFxuXHRcdFx0XHRgICAgICAgYWNjZXNzVG9rZW5Vcmw6IGh0dHBzOi8vJHthdXRoLmF1dGgwRG9tYWlufS9vYXV0aC90b2tlbmAsXG5cdFx0XHRcdGAgICAgICBjbGllbnRJZDogJHt5YW1sUXVvdGUoYXV0aC5hdXRoMENsaWVudElkID8/IFwiXCIpfWAsXG5cdFx0XHRcdGAgICAgICBzY29wZTogJHt5YW1sUXVvdGUoUE9TVE1BTl9TQ09QRVMpfWAsXG5cdFx0XHRcdGAgICAgICByZWRpcmVjdF91cmk6ICR7UE9TVE1BTl9DQUxMQkFDS1NbMF19YCxcblx0XHRcdFx0XCIgICAgICB1c2VCcm93c2VyOiB0cnVlXCIsXG5cdFx0XHRcdFwiICAgICAgY2hhbGxlbmdlQWxnb3JpdGhtOiBTMjU2XCIsXG5cdFx0XHRcdC8vIFNQQSBwdWJsaWMgY2xpZW50OiBBdXRoMCB0b2tlbiBlbmRwb2ludCByZWplY3RzIEJhc2ljIGF1dGggKGZlYWNmdCBVbmF1dGhvcml6ZWQpLlxuXHRcdFx0XHRcIiAgICAgIGNsaWVudF9hdXRoZW50aWNhdGlvbjogYm9keVwiLFxuXHRcdFx0XHQnICAgICAgY2xpZW50U2VjcmV0OiBcIlwiJyxcblx0XHRcdFx0YCAgICAgIHRva2VuTmFtZTogJHt5YW1sUXVvdGUoYCR7cHJvamVjdE5hbWV9IEFjY2VzcyBUb2tlbmApfWAsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIilcblx0XHQ6IFwiXCI7XG5cblx0ZmlsZXMucHVzaCh7XG5cdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9Ly5yZXNvdXJjZXMvZGVmaW5pdGlvbi55YW1sYCxcblx0XHRjb250ZW50OiBbXG5cdFx0XHRcIiRraW5kOiBjb2xsZWN0aW9uXCIsXG5cdFx0XHRgbmFtZTogJHt5YW1sUXVvdGUoYCR7cHJvamVjdE5hbWV9IFdlYkFQSWApfWAsXG5cdFx0XHRcInNjaGVtYVZlcnNpb246ICczLjAnXCIsXG5cdFx0XHRcImRlc2NyaXB0aW9uOiA+LVwiLFxuXHRcdFx0XCIgIE9wZW4gdGhpcyBwcm9qZWN0IHJvb3QgaW4gUG9zdG1hbiBMb2NhbCBWaWV3IChGaWxlcyDihpIgT3BlbiBmb2xkZXIpLlwiLFxuXHRcdFx0XCIgIFNlbGVjdCB0aGUgTG9jYWwgZW52aXJvbm1lbnQsIHRoZW4gQXV0aG9yaXphdGlvbiDihpIgR2V0IE5ldyBBY2Nlc3MgVG9rZW4gKFBLQ0UpLlwiLFxuXHRcdFx0YXV0aEJsb2NrLFxuXHRcdF1cblx0XHRcdC5maWx0ZXIoKGwpID0+IGwgIT09IHVuZGVmaW5lZClcblx0XHRcdC5qb2luKFwiXFxuXCIpXG5cdFx0XHQucmVwbGFjZSgvXFxuKyQvLCBcIlxcblwiKSxcblx0fSk7XG5cblx0ZmlsZXMucHVzaCh7XG5cdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9L0hlbGxvLy5yZXNvdXJjZXMvZGVmaW5pdGlvbi55YW1sYCxcblx0XHRjb250ZW50OiBbXCIka2luZDogZm9sZGVyXCIsIFwibmFtZTogSGVsbG9cIiwgXCJvcmRlcjogMTAwMFwiLCBcIlwiXS5qb2luKFwiXFxuXCIpLFxuXHR9KTtcblxuXHRjb25zdCByZXF1ZXN0czogQXJyYXk8e1xuXHRcdGZpbGU6IHN0cmluZztcblx0XHR5YW1sOiBzdHJpbmc7XG5cdH0+ID0gW1xuXHRcdHtcblx0XHRcdGZpbGU6IFwiTGlzdCAoYW5vbnltb3VzKS5yZXF1ZXN0LnlhbWxcIixcblx0XHRcdHlhbWw6IFtcblx0XHRcdFx0XCIka2luZDogaHR0cC1yZXF1ZXN0XCIsXG5cdFx0XHRcdFwibmFtZTogTGlzdCAoYW5vbnltb3VzKVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogR0VUXCIsXG5cdFx0XHRcdCd1cmw6IFwie3tiYXNlVXJsfX0vaGVsbG9cIicsXG5cdFx0XHRcdFwiYXV0aDpcIixcblx0XHRcdFx0XCIgIHR5cGU6IG5vYXV0aFwiLFxuXHRcdFx0XHRcIm9yZGVyOiAxMDAwXCIsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRmaWxlOiBcIkdldCBieSBpZC5yZXF1ZXN0LnlhbWxcIixcblx0XHRcdHlhbWw6IFtcblx0XHRcdFx0XCIka2luZDogaHR0cC1yZXF1ZXN0XCIsXG5cdFx0XHRcdFwibmFtZTogR2V0IGJ5IGlkXCIsXG5cdFx0XHRcdFwibWV0aG9kOiBHRVRcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsby86aWRcIicsXG5cdFx0XHRcdFwib3JkZXI6IDIwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGZpbGU6IFwiQ3JlYXRlLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBDcmVhdGVcIixcblx0XHRcdFx0XCJtZXRob2Q6IFBPU1RcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsb1wiJyxcblx0XHRcdFx0XCJoZWFkZXJzOlwiLFxuXHRcdFx0XHRcIiAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCIsXG5cdFx0XHRcdFwiYm9keTpcIixcblx0XHRcdFx0XCIgIHR5cGU6IGpzb25cIixcblx0XHRcdFx0XCIgIGNvbnRlbnQ6IHwtXCIsXG5cdFx0XHRcdFwiICAgIHtcIixcblx0XHRcdFx0JyAgICAgIFwibWVzc2FnZVwiOiBcImhlbGxvXCInLFxuXHRcdFx0XHRcIiAgICB9XCIsXG5cdFx0XHRcdFwib3JkZXI6IDMwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGZpbGU6IFwiVXBkYXRlLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBVcGRhdGVcIixcblx0XHRcdFx0XCJtZXRob2Q6IFBVVFwiLFxuXHRcdFx0XHQndXJsOiBcInt7YmFzZVVybH19L2hlbGxvLzppZFwiJyxcblx0XHRcdFx0XCJoZWFkZXJzOlwiLFxuXHRcdFx0XHRcIiAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCIsXG5cdFx0XHRcdFwiYm9keTpcIixcblx0XHRcdFx0XCIgIHR5cGU6IGpzb25cIixcblx0XHRcdFx0XCIgIGNvbnRlbnQ6IHwtXCIsXG5cdFx0XHRcdFwiICAgIHtcIixcblx0XHRcdFx0JyAgICAgIFwibWVzc2FnZVwiOiBcInVwZGF0ZWRcIicsXG5cdFx0XHRcdFwiICAgIH1cIixcblx0XHRcdFx0XCJvcmRlcjogNDAwMFwiLFxuXHRcdFx0XHRcIlwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0ZmlsZTogXCJEZWxldGUucmVxdWVzdC55YW1sXCIsXG5cdFx0XHR5YW1sOiBbXG5cdFx0XHRcdFwiJGtpbmQ6IGh0dHAtcmVxdWVzdFwiLFxuXHRcdFx0XHRcIm5hbWU6IERlbGV0ZVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogREVMRVRFXCIsXG5cdFx0XHRcdCd1cmw6IFwie3tiYXNlVXJsfX0vaGVsbG8vOmlkXCInLFxuXHRcdFx0XHRcIm9yZGVyOiA1MDAwXCIsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0fSxcblx0XTtcblxuXHRmb3IgKGNvbnN0IHIgb2YgcmVxdWVzdHMpIHtcblx0XHRmaWxlcy5wdXNoKHtcblx0XHRcdGZpbGVQYXRoOiBgJHtjb2xsZWN0aW9uRGlyfS9IZWxsby8ke3IuZmlsZX1gLFxuXHRcdFx0Y29udGVudDogci55YW1sLFxuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIGZpbGVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FmZm9sZCh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBvcHRpb25zOiBQb3N0bWFuT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwibm9uZVwiIHx8IG9wdGlvbnMucG9zdG1hblByb3ZpZGVyID09IG51bGwpIHJldHVybjtcblxuXHRjb25zdCBhdXRoQ29uZmlnTW9kZWwgPSB3b3Jrc3BhY2UuZ2V0TW9kZWw8QXV0aENvbmZpZ01vZGVsPihXRUxMX0tOT1dOX0ZJTEVTLkFVVEhfQ09ORklHKTtcblx0Y29uc3QgYXV0aENmZyA9IGF1dGhDb25maWdNb2RlbD8uY29uZmlnO1xuXG5cdGxldCBzcGFDbGllbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdGlmIChhdXRoQ2ZnPy5pc3N1ZXJCYXNlVXJsKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFwcCA9IGF1dGgwQ2xpLmNyZWF0ZVNwYUFwcChgJHt3b3Jrc3BhY2UubmFtZX0gUG9zdG1hbmAsIFsuLi5QT1NUTUFOX0NBTExCQUNLU10pO1xuXHRcdFx0c3BhQ2xpZW50SWQgPSBhcHAuY2xpZW50X2lkO1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBBdXRoMCBTUEEgYXBwIGNyZWF0ZWQgZm9yIFBvc3RtYW4gUEtDRVwiKTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGF1dGgwQ2xpLmVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQoYXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FLCBzcGFDbGllbnRJZCk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGAgIOKckyBFbmFibGVkICR7YXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FfSBvbiBQb3N0bWFuIFNQQWApO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdFx0YCAg4pyXIEZhaWxlZCB0byBlbmFibGUgREIgY29ubmVjdGlvbiBvbiBTUEE6ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycn1gLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2gge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0XCIgIOKclyBGYWlsZWQgdG8gY3JlYXRlIEF1dGgwIFNQQSBhcHAg4oCUIHNldCBhdXRoMENsaWVudElkIGluIHRoZSBlbnZpcm9ubWVudC5cIixcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgYXV0aDBFbnY6IEF1dGgwRW52IHwgdW5kZWZpbmVkID0gYXV0aENmZz8uaXNzdWVyQmFzZVVybFxuXHRcdD8ge1xuXHRcdFx0XHRhdXRoMERvbWFpbjogYXV0aENmZy5pc3N1ZXJCYXNlVXJsLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgXCJcIiksXG5cdFx0XHRcdGF1dGgwQXVkaWVuY2U6IGF1dGhDZmcuYXVkaWVuY2UsXG5cdFx0XHRcdGF1dGgwQ2xpZW50SWQ6IHNwYUNsaWVudElkLFxuXHRcdFx0fVxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IHByb2plY3ROYW1lID0gd29ya3NwYWNlLm5hbWU7XG5cdGNvbnN0IGVudk5hbWUgPSBgJHtwcm9qZWN0TmFtZX0gTG9jYWxgO1xuXHRjb25zdCBsb2NhbEZpbGVzID0gYnVpbGRMb2NhbFZpZXdGaWxlcyhwcm9qZWN0TmFtZSwgYXV0aDBFbnYpO1xuXHRjb25zdCBlbnZZYW1sID0gYnVpbGRFbnZpcm9ubWVudFlhbWwoZW52TmFtZSwgYXV0aDBFbnYpO1xuXG5cdHdvcmtzcGFjZS5hZGRGaWxlKHtcblx0XHRmaWxlczogKCkgPT4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCIucG9zdG1hbi9yZXNvdXJjZXMueWFtbFwiLFxuXHRcdFx0XHRjb250ZW50OiBbXG5cdFx0XHRcdFx0XCIjIE9wZW4gdGhpcyBwcm9qZWN0IHJvb3QgaW4gUG9zdG1hbiAoRmlsZXMg4oaSIE9wZW4gZm9sZGVyKSwgbm90IHRoZSBwb3N0bWFuLyBzdWJmb2xkZXIuXCIsXG5cdFx0XHRcdFx0XCIjIFBvc3RtYW4gZmlsbHMgd29ya3NwYWNlLmlkIHdoZW4geW91IGNvbm5lY3QgTG9jYWwgVmlldy5cIixcblx0XHRcdFx0XHRcIiNcIixcblx0XHRcdFx0XHRcIiMgQWxsIHJlc291cmNlcyB1bmRlciBwb3N0bWFuLyBhcmUgcmVnaXN0ZXJlZCBhdXRvbWF0aWNhbGx5LlwiLFxuXHRcdFx0XHRcdFwiXCIsXG5cdFx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBgcG9zdG1hbi9lbnZpcm9ubWVudHMvJHtwcm9qZWN0TmFtZX0tTG9jYWwuZW52aXJvbm1lbnQueWFtbGAsXG5cdFx0XHRcdGNvbnRlbnQ6IGVudllhbWwsXG5cdFx0XHR9LFxuXHRcdFx0Li4ubG9jYWxGaWxlcyxcblx0XHRdLFxuXHR9KTtcblxuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwiYXBpXCIgJiYgb3B0aW9ucy5hcGlLZXkpIHtcblx0XHRjb25zdCBjb2xsZWN0aW9uID0gYnVpbGRDb2xsZWN0aW9uSnNvbihwcm9qZWN0TmFtZSwgYXV0aDBFbnYpO1xuXHRcdGNvbnN0IGhlYWRlcnMgPSB7IFwiWC1BcGktS2V5XCI6IG9wdGlvbnMuYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXG5cdFx0Y29uc3QgY29sUmVzID0gYXdhaXQgZmV0Y2goXG5cdFx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vY29sbGVjdGlvbnM/d29ya3NwYWNlPSR7b3B0aW9ucy53b3Jrc3BhY2VJZH1gLFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRoZWFkZXJzLFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7IGNvbGxlY3Rpb24gfSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGNvbFJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGNvbGxlY3Rpb24gdXBsb2FkZWRcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCIgIOKclyBGYWlsZWQgdG8gdXBsb2FkIFBvc3RtYW4gY29sbGVjdGlvblwiKTtcblx0XHR9XG5cblx0XHRjb25zdCBlbnZWYWx1ZXMgPSBbXG5cdFx0XHR7IGtleTogXCJiYXNlVXJsXCIsIHZhbHVlOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMFwiLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHQuLi4oYXV0aDBFbnY/LmF1dGgwRG9tYWluXG5cdFx0XHRcdD8gW1xuXHRcdFx0XHRcdFx0eyBrZXk6IFwiYXV0aDBEb21haW5cIiwgdmFsdWU6IGF1dGgwRW52LmF1dGgwRG9tYWluLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHRcdFx0XHR7IGtleTogXCJhdXRoMEF1ZGllbmNlXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMEF1ZGllbmNlID8/IFwiXCIsIGVuYWJsZWQ6IHRydWUgfSxcblx0XHRcdFx0XHRcdHsga2V5OiBcImF1dGgwQ2xpZW50SWRcIiwgdmFsdWU6IGF1dGgwRW52LmF1dGgwQ2xpZW50SWQgPz8gXCJcIiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0XHRcdF1cblx0XHRcdFx0OiBbXSksXG5cdFx0XTtcblx0XHRjb25zdCBlbnZSZXMgPSBhd2FpdCBmZXRjaChcblx0XHRcdGBodHRwczovL2FwaS5nZXRwb3N0bWFuLmNvbS9lbnZpcm9ubWVudHM/d29ya3NwYWNlPSR7b3B0aW9ucy53b3Jrc3BhY2VJZH1gLFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRoZWFkZXJzLFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdFx0ZW52aXJvbm1lbnQ6IHsgbmFtZTogZW52TmFtZSwgdmFsdWVzOiBlbnZWYWx1ZXMgfSxcblx0XHRcdFx0fSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGVudlJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGVudmlyb25tZW50IHVwbG9hZGVkXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiICDinJcgRmFpbGVkIHRvIHVwbG9hZCBQb3N0bWFuIGVudmlyb25tZW50XCIpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY29uc3QgUG9zdG1hbkZlYXR1cmU6IEZlYXR1cmU8UG9zdG1hbk9wdGlvbnM+ID0geyBnZXRPcHRpb25zLCBzY2FmZm9sZCB9O1xuZXhwb3J0IHsgUE9TVE1BTl9DQUxMQkFDS1MsIFBPU1RNQU5fU0NPUEVTIH07XG4iXSwibmFtZXMiOlsicmFuZG9tVVVJRCIsInBpY2siLCJXRUxMX0tOT1dOX0ZJTEVTIiwiYXV0aDBDbGkiLCJQT1NUTUFOX0NBTExCQUNLUyIsIlBPU1RNQU5fU0NPUEVTIiwiam9pbiIsImdldE9wdGlvbnMiLCJfd29ya3NwYWNlIiwiY2xpT3B0aW9ucyIsInBvc3RtYW5Qcm92aWRlciIsImNob2ljZXMiLCJsYWJlbCIsImRlc2NyaXB0aW9uIiwic2VsZWN0ZWQiLCJjIiwicHJvdmlkZXIiLCJhcGlLZXkiLCJwcm9jZXNzIiwiZW52IiwiUE9TVE1BTl9BUElfS0VZIiwidGhlbiIsIm0iLCJhc2siLCJoZWFkZXJzIiwid3NSZXMiLCJmZXRjaCIsIm9rIiwiY29uc29sZSIsImVycm9yIiwid29ya3NwYWNlcyIsImpzb24iLCJ3c0Nob2ljZXMiLCJpZCIsIm1hcCIsInciLCJuYW1lIiwidHlwZSIsIndzUGlja2VkIiwid29ya3NwYWNlSWQiLCJ3c05hbWUiLCJjcmVhdGVSZXMiLCJtZXRob2QiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIndvcmtzcGFjZSIsIndzIiwibG9nIiwiYnVpbGRDb2xsZWN0aW9uSnNvbiIsInByb2plY3ROYW1lIiwiYXV0aCIsImF1dGhPYmoiLCJhdXRoMERvbWFpbiIsIm9hdXRoMiIsImtleSIsInZhbHVlIiwidW5kZWZpbmVkIiwiaGVsbG9VcmwiLCJwYXRoIiwicmF3IiwiaG9zdCIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImluZm8iLCJfcG9zdG1hbl9pZCIsInNjaGVtYSIsIml0ZW0iLCJyZXF1ZXN0IiwidXJsIiwiaGVhZGVyIiwibW9kZSIsInlhbWxRdW90ZSIsInRlc3QiLCJpbmNsdWRlcyIsImJ1aWxkRW52aXJvbm1lbnRZYW1sIiwidmFsdWVzIiwicHVzaCIsImF1dGgwQXVkaWVuY2UiLCJhdXRoMENsaWVudElkIiwibGluZXMiLCJ2IiwiYnVpbGRMb2NhbFZpZXdGaWxlcyIsImNvbGxlY3Rpb25EaXIiLCJmaWxlcyIsImF1dGhCbG9jayIsImZpbGVQYXRoIiwiY29udGVudCIsImwiLCJyZXBsYWNlIiwicmVxdWVzdHMiLCJmaWxlIiwieWFtbCIsInIiLCJzY2FmZm9sZCIsIm9wdGlvbnMiLCJhdXRoQ29uZmlnTW9kZWwiLCJnZXRNb2RlbCIsIkFVVEhfQ09ORklHIiwiYXV0aENmZyIsImNvbmZpZyIsInNwYUNsaWVudElkIiwiaXNzdWVyQmFzZVVybCIsImFwcCIsImNyZWF0ZVNwYUFwcCIsImNsaWVudF9pZCIsImVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQiLCJEQl9DT05ORUNUSU9OX05BTUUiLCJlcnIiLCJFcnJvciIsIm1lc3NhZ2UiLCJhdXRoMEVudiIsImF1ZGllbmNlIiwiZW52TmFtZSIsImxvY2FsRmlsZXMiLCJlbnZZYW1sIiwiYWRkRmlsZSIsImNvbGxlY3Rpb24iLCJjb2xSZXMiLCJlbnZWYWx1ZXMiLCJlbmFibGVkIiwiZW52UmVzIiwiZW52aXJvbm1lbnQiLCJQb3N0bWFuRmVhdHVyZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLGNBQWM7QUFDekMsU0FBU0MsSUFBSSxRQUFRLHlCQUF5QjtBQUM5QyxTQUFTQyxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFJekQsWUFBWUMsY0FBYyxpQkFBaUI7QUFFM0MscUVBQXFFLEdBQ3JFLE1BQU1DLG9CQUFvQjtJQUN6QjtJQUNBO0NBQ0E7QUFFRCw4RUFBOEUsR0FDOUUsTUFBTUMsaUJBQWlCO0lBQ3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0EsQ0FBQ0MsSUFBSSxDQUFDO0FBUVAsZUFBZUMsV0FDZEMsVUFBNkIsRUFDN0JDLFVBQW1DO0lBRW5DLElBQUlBLFdBQVdDLGVBQWUsSUFBSSxNQUFNLE9BQU8sQ0FBQztJQUVoRCxNQUFNQyxVQUFVO1FBQ2Y7WUFBRUMsT0FBTztZQUFpQkMsYUFBYTtRQUFPO1FBQzlDO1lBQ0NELE9BQU87WUFDUEMsYUFBYTtRQUNkO1FBQ0E7WUFDQ0QsT0FBTztZQUNQQyxhQUFhO1FBQ2Q7S0FDQTtJQUNELE1BQU1DLFdBQVcsTUFBTWIsS0FDdEIsaUJBQ0FVLFNBQ0EsQ0FBQ0ksSUFBTSxHQUFHQSxFQUFFSCxLQUFLLENBQUMsR0FBRyxFQUFFRyxFQUFFRixXQUFXLEVBQUU7SUFFdkMsTUFBTUcsV0FBV0YsVUFBVUYsU0FBUztJQUVwQyxJQUFJSSxhQUFhLFFBQVEsT0FBTztRQUFFTixpQkFB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
|
|
@@ -31,6 +31,9 @@ import { CREATE_VERSION } from "../../version.js";
|
|
|
31
31
|
version: "0.0.1",
|
|
32
32
|
type: "module",
|
|
33
33
|
main: "src/main.ts",
|
|
34
|
+
scripts: {
|
|
35
|
+
lint: "biome check --write ."
|
|
36
|
+
},
|
|
34
37
|
dependencies: {
|
|
35
38
|
...this._dependencies
|
|
36
39
|
}
|
|
@@ -49,4 +52,4 @@ import { CREATE_VERSION } from "../../version.js";
|
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL21vZGVscy9hcGktcGFja2FnZS1qc29uLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleWVkTW9kZWwsIFNvdXJjZUZpbGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NvdXJjZS1maWxlLmpzXCI7XG5pbXBvcnQgeyBDUkVBVEVfVkVSU0lPTiB9IGZyb20gXCIuLi8uLi92ZXJzaW9uLmpzXCI7XG5cbi8qKlxuICogQnVpbGRlciBmb3IgYHByb2plY3RzL2FwaS9wYWNrYWdlLmpzb25gLlxuICpcbiAqIFN0YXJ0cyB3aXRoIHRoZSBjb3JlIGNvcnRleCArIGNydWNpYmxlIGRlcHMuIEZlYXR1cmVzIGNhbiBjYWxsXG4gKiBgYWRkRGVwZW5kZW5jeWAgLyBgYWRkRGV2RGVwZW5kZW5jeWAgdG8gZXh0ZW5kLlxuICovXG5leHBvcnQgY2xhc3MgQXBpUGFja2FnZUpzb24gaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuQVBJX1BBQ0tBR0VfSlNPTjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9kZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cdHByaXZhdGUgcmVhZG9ubHkgX2RldkRlcGVuZGVuY2llczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb2plY3ROYW1lOiBzdHJpbmcpIHtcblx0XHR0aGlzLl9kZXBlbmRlbmNpZXMgPSB7XG5cdFx0XHRcIkBkZWNvaGVyZS9jb3J0ZXhcIjogQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcIkBkZWNvaGVyZS9jcnVjaWJsZVwiOiBDUkVBVEVfVkVSU0lPTixcblx0XHR9O1xuXHR9XG5cblx0cHVibGljIGFkZERlcGVuZGVuY3kobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9kZXBlbmRlbmNpZXNbbmFtZV0gPSB2ZXJzaW9uO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGFkZERldkRlcGVuZGVuY3kobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9kZXZEZXBlbmRlbmNpZXNbbmFtZV0gPSB2ZXJzaW9uO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGZpbGVzKCk6IFNvdXJjZUZpbGVbXSB7XG5cdFx0Y29uc3QgcGtnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcblx0XHRcdG5hbWU6IGBAJHt0aGlzLnByb2plY3ROYW1lfS9hcGlgLFxuXHRcdFx0dmVyc2lvbjogXCIwLjAuMVwiLFxuXHRcdFx0dHlwZTogXCJtb2R1bGVcIixcblx0XHRcdG1haW46IFwic3JjL21haW4udHNcIixcblx0XHRcdHNjcmlwdHM6IHtcblx0XHRcdFx0bGludDogXCJiaW9tZSBjaGVjayAtLXdyaXRlIC5cIixcblx0XHRcdH0sXG5cdFx0XHRkZXBlbmRlbmNpZXM6IHsgLi4udGhpcy5fZGVwZW5kZW5jaWVzIH0sXG5cdFx0fTtcblx0XHRpZiAoT2JqZWN0LmtleXModGhpcy5fZGV2RGVwZW5kZW5jaWVzKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRwa2cuZGV2RGVwZW5kZW5jaWVzID0geyAuLi50aGlzLl9kZXZEZXBlbmRlbmNpZXMgfTtcblx0XHR9XG5cdFx0cmV0dXJuIFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwicGFja2FnZS5qc29uXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KHBrZywgbnVsbCwgMiksXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiQ1JFQVRFX1ZFUlNJT04iLCJBcGlQYWNrYWdlSnNvbiIsImtleSIsIkFQSV9QQUNLQUdFX0pTT04iLCJfZGVwZW5kZW5jaWVzIiwiX2RldkRlcGVuZGVuY2llcyIsInByb2plY3ROYW1lIiwiYWRkRGVwZW5kZW5jeSIsIm5hbWUiLCJ2ZXJzaW9uIiwiYWRkRGV2RGVwZW5kZW5jeSIsImZpbGVzIiwicGtnIiwidHlwZSIsIm1haW4iLCJzY3JpcHRzIiwibGludCIsImRlcGVuZGVuY2llcyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJkZXZEZXBlbmRlbmNpZXMiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJKU09OIiwic3RyaW5naWZ5Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFFekQsU0FBU0MsY0FBYyxRQUFRLG1CQUFtQjtBQUVsRDs7Ozs7Q0FLQyxHQUNELE9BQU8sTUFBTUM7O0lBQ0lDLE1BQU1ILGlCQUFpQkksZ0JBQWdCLENBQUM7SUFFdkNDLGNBQXNDO0lBQ3RDQyxtQkFBMkMsQ0FBQyxFQUFFO0lBRS9ELFlBQW1CLEFBQWlCQyxXQUFtQixDQUFFO2FBQXJCQSxjQUFBQTtRQUNuQyxJQUFJLENBQUNGLGFBQWEsR0FBRztZQUNwQixvQkFBb0JKO1lBQ3BCLHNCQUFzQkE7UUFDdkI7SUFDRDtJQUVPTyxjQUFjQyxJQUFZLEVBQUVDLE9BQWUsRUFBUTtRQUN6RCxJQUFJLENBQUNMLGFBQWEsQ0FBQ0ksS0FBSyxHQUFHQztRQUMzQixPQUFPLElBQUk7SUFDWjtJQUVPQyxpQkFBaUJGLElBQVksRUFBRUMsT0FBZSxFQUFRO1FBQzVELElBQUksQ0FBQ0osZ0JBQWdCLENBQUNHLEtBQUssR0FBR0M7UUFDOUIsT0FBTyxJQUFJO0lBQ1o7SUFFT0UsUUFBc0I7UUFDNUIsTUFBTUMsTUFBK0I7WUFDcENKLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDRixXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2hDRyxTQUFTO1lBQ1RJLE1BQU07WUFDTkMsTUFBTTtZQUNOQyxTQUFTO2dCQUNSQyxNQUFNO1lBQ1A7WUFDQUMsY0FBYztnQkFBRSxHQUFHLElBQUksQ0FBQ2IsYUFBYTtZQUFDO1FBQ3ZDO1FBQ0EsSUFBSWMsT0FBT0MsSUFBSSxDQUFDLElBQUksQ0FBQ2QsZ0JBQWdCLEVBQUVlLE1BQU0sR0FBRyxHQUFHO1lBQ2xEUixJQUFJUyxlQUFlLEdBQUc7Z0JBQUUsR0FBRyxJQUFJLENBQUNoQixnQkFBZ0I7WUFBQztRQUNsRDtRQUNBLE9BQU87WUFDTjtnQkFDQ2lCLFVBQVU7Z0JBQ1ZDLFNBQVNDLEtBQUtDLFNBQVMsQ0FBQ2IsS0FBSyxNQUFNO1lBQ3BDO1NBQ0E7SUFDRjtBQUNEIn0=
|
|
@@ -11,9 +11,12 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
|
|
|
11
11
|
constructor(config){
|
|
12
12
|
this.config = config;
|
|
13
13
|
}
|
|
14
|
+
setAdminUser(adminUser) {
|
|
15
|
+
this.config.adminUser = adminUser;
|
|
16
|
+
}
|
|
14
17
|
files() {
|
|
15
18
|
return [];
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL21vZGVscy9hdXRoLWNvbmZpZy5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25zdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBLZXllZE1vZGVsLCBTb3VyY2VGaWxlIH0gZnJvbSBcIi4uLy4uL21vZGVscy9zb3VyY2UtZmlsZS5qc1wiO1xuXG5leHBvcnQgdHlwZSBBZG1pblVzZXJDb25maWcgPSB7XG5cdHN1Yjogc3RyaW5nO1xuXHRlbWFpbDogc3RyaW5nO1xuXHRwYXNzd29yZDogc3RyaW5nO1xuXHR1c2VybmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXV0aENvbmZpZyA9IHtcblx0aXNzdWVyQmFzZVVybDogc3RyaW5nO1xuXHRhdWRpZW5jZTogc3RyaW5nO1xuXHRhZG1pblVzZXI/OiBBZG1pblVzZXJDb25maWc7XG59O1xuXG4vKipcbiAqIERhdGEtY2FycmllciBtb2RlbCBmb3IgYXV0aCBjb25maWd1cmF0aW9uLlxuICpcbiAqIFJlZ2lzdGVyZWQgYnkgQXV0aEZlYXR1cmUgd2hlbiBhdXRoMCBpcyBjb25maWd1cmVkLiBPdGhlciBmZWF0dXJlcyAoZS5nLlxuICogUG9zdG1hbkZlYXR1cmUpIHJldHJpZXZlIGl0IHZpYSB3b3Jrc3BhY2UuZ2V0TW9kZWwoV0VMTF9LTk9XTl9GSUxFUy5BVVRIX0NPTkZJRykuXG4gKiBQcm9kdWNlcyBubyBmaWxlcyDigJQgZXhpc3RzIHNvbGVseSBzbyBmZWF0dXJlcyBjYW4gY29tbXVuaWNhdGUgYXV0aCBkZXRhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgQXV0aENvbmZpZ01vZGVsIGltcGxlbWVudHMgS2V5ZWRNb2RlbCB7XG5cdHB1YmxpYyByZWFkb25seSBrZXkgPSBXRUxMX0tOT1dOX0ZJTEVTLkFVVEhfQ09ORklHO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBBdXRoQ29uZmlnKSB7fVxuXG5cdHB1YmxpYyBzZXRBZG1pblVzZXIoYWRtaW5Vc2VyOiBBZG1pblVzZXJDb25maWcpOiB2b2lkIHtcblx0XHR0aGlzLmNvbmZpZy5hZG1pblVzZXIgPSBhZG1pblVzZXI7XG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiQXV0aENvbmZpZ01vZGVsIiwia2V5IiwiQVVUSF9DT05GSUciLCJjb25maWciLCJzZXRBZG1pblVzZXIiLCJhZG1pblVzZXIiLCJmaWxlcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQWdCLFFBQVEsd0JBQXdCO0FBZ0J6RDs7Ozs7O0NBTUMsR0FDRCxPQUFPLE1BQU1DOztJQUNJQyxNQUFNRixpQkFBaUJHLFdBQVcsQ0FBQztJQUVuRCxZQUFtQixBQUFnQkMsTUFBa0IsQ0FBRTthQUFwQkEsU0FBQUE7SUFBcUI7SUFFakRDLGFBQWFDLFNBQTBCLEVBQVE7UUFDckQsSUFBSSxDQUFDRixNQUFNLENBQUNFLFNBQVMsR0FBR0E7SUFDekI7SUFFT0MsUUFBc0I7UUFDNUIsT0FBTyxFQUFFO0lBQ1Y7QUFDRCJ9
|