sonamu 0.8.11 → 0.8.13
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/dist/entity/entity-manager.d.ts +4 -1
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +30 -8
- package/dist/testing/parallel-db-manager.d.ts.map +1 -1
- package/dist/testing/parallel-db-manager.js +7 -4
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +9 -2
- package/dist/ui/cdd-service.d.ts +2 -0
- package/dist/ui/cdd-service.d.ts.map +1 -1
- package/dist/ui/cdd-service.js +22 -4
- package/dist/ui-web/assets/{index-CcRgePSa.js → index-CQ_S40bD.js} +76 -75
- package/dist/ui-web/assets/index-egkMxKos.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/model.js +1 -16
- package/package.json +7 -7
- package/src/entity/entity-manager.ts +37 -7
- package/src/skills/sonamu/SKILL.md +5 -1
- package/src/skills/sonamu/api.md +26 -0
- package/src/skills/sonamu/auth.md +1 -1
- package/src/skills/sonamu/cdd.md +441 -0
- package/src/skills/sonamu/entity-relations.md +17 -26
- package/src/skills/sonamu/frontend.md +23 -16
- package/src/skills/sonamu/model.md +1 -0
- package/src/skills/sonamu/workflow.md +47 -1
- package/src/testing/parallel-db-manager.ts +5 -3
- package/src/ui/api.ts +7 -1
- package/src/ui/cdd-service.ts +20 -3
- package/src/utils/model.ts +0 -18
- package/dist/ui-web/assets/index-BwnPfLKr.css +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import { type EntityIndex, type EntityJson } from "../types/types";
|
|
2
3
|
import type { AbsolutePath } from "../utils/path-utils";
|
|
3
4
|
import { Entity } from "./entity";
|
|
@@ -13,7 +14,7 @@ declare class EntityManagerClass {
|
|
|
13
14
|
private tableSpecs;
|
|
14
15
|
isAutoloaded: boolean;
|
|
15
16
|
autoload(_?: boolean): Promise<void>;
|
|
16
|
-
schemaValidate(json: unknown):
|
|
17
|
+
schemaValidate(json: unknown): z.ZodError<{
|
|
17
18
|
id: string;
|
|
18
19
|
title: string;
|
|
19
20
|
table: string;
|
|
@@ -586,6 +587,8 @@ declare class EntityManagerClass {
|
|
|
586
587
|
* @returns
|
|
587
588
|
*/
|
|
588
589
|
getEntityIdFromPath(filePath: AbsolutePath): string;
|
|
590
|
+
private registerNonEntityTypeModulePaths;
|
|
591
|
+
private getModulePathFromTypeFilePath;
|
|
589
592
|
}
|
|
590
593
|
export declare const EntityManager: EntityManagerClass;
|
|
591
594
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-manager.d.ts","sourceRoot":"","sources":["../../src/entity/entity-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity-manager.d.ts","sourceRoot":"","sources":["../../src/entity/entity-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,CAAC,EAAE,MAAM,KAAK,CAAC;AAEvC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AAGrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,MAAM,iBAAiB,GAAG,MAAM,CACpC,IAAI,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,OAAO,GAAG,UAAU,EAChG,MAAM,CACP,CAAC;AACF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AACF,cAAM,kBAAkB;IACtB,OAAO,CAAC,QAAQ,CAAkC;IAC3C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACpD,OAAO,CAAC,UAAU,CAAqC;IAChD,YAAY,EAAE,OAAO,CAAS;IAG/B,QAAQ,CAAC,CAAC,GAAE,OAAe;IA2BjC,cAAc,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKtB,MAAM,CAAC,QAAQ,GAAE,OAAe;IAShC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAS7B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IASjC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKjC,SAAS,IAAI,MAAM,EAAE;IAIrB,cAAc,IAAI,MAAM,EAAE;IAI1B,eAAe,IAAI,MAAM,EAAE;IAO3B,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAO1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,YAAY,CAAC,SAAS,EAAE,SAAS;IAIjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IASpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;IAmBnD;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM;YAMrC,gCAAgC;IAoB9C,OAAO,CAAC,6BAA6B;CAUtC;AAED,eAAO,MAAM,aAAa,oBAA2B,CAAC"}
|
|
@@ -3,9 +3,12 @@ import chalk from "chalk";
|
|
|
3
3
|
import { glob, readFile } from "node:fs/promises";
|
|
4
4
|
import inflection from "inflection";
|
|
5
5
|
import path from "path";
|
|
6
|
-
import { prettifyError } from "zod";
|
|
6
|
+
import { prettifyError, z } from "zod";
|
|
7
7
|
import { Sonamu } from "../api/sonamu.js";
|
|
8
8
|
import { EntityJsonSchema } from "../types/types.js";
|
|
9
|
+
import { globAsync } from "../utils/async-utils.js";
|
|
10
|
+
import { importMembers } from "../utils/esm-utils.js";
|
|
11
|
+
import { runtimePath } from "../utils/path-utils.js";
|
|
9
12
|
import { Entity } from "./entity.js";
|
|
10
13
|
class EntityManagerClass {
|
|
11
14
|
entities = new Map();
|
|
@@ -29,12 +32,7 @@ class EntityManagerClass {
|
|
|
29
32
|
}
|
|
30
33
|
await this.register(json);
|
|
31
34
|
}
|
|
32
|
-
|
|
33
|
-
// console.log(
|
|
34
|
-
// chalk.gray(
|
|
35
|
-
// `[Loading] Loaded entity definitions from "*.entity.json" files: ${count} files.`
|
|
36
|
-
// )
|
|
37
|
-
// );
|
|
35
|
+
await this.registerNonEntityTypeModulePaths();
|
|
38
36
|
this.isAutoloaded = true;
|
|
39
37
|
}
|
|
40
38
|
schemaValidate(json) {
|
|
@@ -134,7 +132,31 @@ class EntityManagerClass {
|
|
|
134
132
|
assert(matched?.[1]);
|
|
135
133
|
return inflection.camelize(matched[1].replace(/-/g, "_"));
|
|
136
134
|
}
|
|
135
|
+
async registerNonEntityTypeModulePaths() {
|
|
136
|
+
const typePathsPatterns = [
|
|
137
|
+
path.join(Sonamu.apiRootPath, runtimePath("src/application/**/*.types.ts")),
|
|
138
|
+
path.join(Sonamu.apiRootPath, runtimePath("src/application/**/*.generated.ts"))
|
|
139
|
+
];
|
|
140
|
+
const typePaths = (await Promise.all(typePathsPatterns.map((pattern)=>globAsync(pattern)))).flat();
|
|
141
|
+
for (const filePath of typePaths){
|
|
142
|
+
const modulePath = this.getModulePathFromTypeFilePath(filePath);
|
|
143
|
+
const importedMembers = await importMembers(filePath);
|
|
144
|
+
for (const { name, value } of importedMembers){
|
|
145
|
+
if (value instanceof z.ZodType) {
|
|
146
|
+
this.setModulePath(name, modulePath);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
getModulePathFromTypeFilePath(filePath) {
|
|
152
|
+
const normalizedPath = filePath.replaceAll("\\", "/");
|
|
153
|
+
const matched = normalizedPath.match(/\/(?:src|dist)\/application\/(.+)\.(?:ts|js)$/);
|
|
154
|
+
if (!matched?.[1]) {
|
|
155
|
+
throw new Error(`타입 파일의 모듈 경로를 계산할 수 없습니다: ${filePath}`);
|
|
156
|
+
}
|
|
157
|
+
return matched[1];
|
|
158
|
+
}
|
|
137
159
|
}
|
|
138
160
|
export const EntityManager = new EntityManagerClass();
|
|
139
161
|
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRpdHkvZW50aXR5LW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBnbG9iLCByZWFkRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBwcmV0dGlmeUVycm9yIH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5SW5kZXgsIHR5cGUgRW50aXR5SnNvbiwgRW50aXR5SnNvblNjaGVtYSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBYnNvbHV0ZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcIi4vZW50aXR5XCI7XG5cbmV4cG9ydCB0eXBlIEVudGl0eU5hbWVzUmVjb3JkID0gUmVjb3JkPFxuICBcImZzXCIgfCBcImZzUGx1cmFsXCIgfCBcImNhbWVsXCIgfCBcImNhbWVsUGx1cmFsXCIgfCBcImNhcGl0YWxcIiB8IFwiY2FwaXRhbFBsdXJhbFwiIHwgXCJ1cHBlclwiIHwgXCJjb25zdGFudFwiLFxuICBzdHJpbmdcbj47XG5leHBvcnQgdHlwZSBUYWJsZVNwZWMgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdW5pcXVlSW5kZXhlczogRW50aXR5SW5kZXhbXTtcbiAganNvbkNvbHVtbnM6IHN0cmluZ1tdO1xufTtcbmNsYXNzIEVudGl0eU1hbmFnZXJDbGFzcyB7XG4gIHByaXZhdGUgZW50aXRpZXM6IE1hcDxzdHJpbmcsIEVudGl0eT4gPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBtb2R1bGVQYXRoczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSB0YWJsZVNwZWNzOiBNYXA8c3RyaW5nLCBUYWJsZVNwZWM+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgaXNBdXRvbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8g6rK966GcIOyghOuLrOuwm+yVhCDrqqjrk6AgZW50aXR5Lmpzb24g7YyM7J28IOuhnOuTnFxuICBhc3luYyBhdXRvbG9hZChfOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5pc0F1dG9sb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGF0aFBhdHRlcm4gPSBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBcIi9zcmMvYXBwbGljYXRpb24vKiovKi5lbnRpdHkuanNvblwiKTtcblxuICAgIGZvciBhd2FpdCAoY29uc3QgZmlsZSBvZiBnbG9iKHBhdGgucmVzb2x2ZShwYXRoUGF0dGVybikpKSB7XG4gICAgICBjb25zdCBqc29uID0gSlNPTi5wYXJzZSgoYXdhaXQgcmVhZEZpbGUoZmlsZSkpLnRvU3RyaW5nKCkpO1xuXG4gICAgICAvLyBlbnRpdHkuanNvbiDsiqTtgqTrp4gg6rKA7KadXG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuc2NoZW1hVmFsaWRhdGUoanNvbik7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShTb25hbXUuYXBpUm9vdFBhdGgsIGZpbGUpO1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBwcmV0dGlmeUVycm9yKGVycm9yKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBjaGFsay5yZWQoYEludmFsaWQgZW50aXR5Lmpzb24gc2NoZW1hOiAke3JlbGF0aXZlUGF0aH1cXG4ke2NoYWxrLnllbGxvdyhlcnJvck1lc3NhZ2UpfWApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyKGpzb24pO1xuICAgIH1cbiAgICAvLyAhZG9TaWxlbnQgJiZcbiAgICAvLyAgIGNvbnNvbGUubG9nKFxuICAgIC8vICAgICBjaGFsay5ncmF5KFxuICAgIC8vICAgICAgIGBbTG9hZGluZ10gTG9hZGVkIGVudGl0eSBkZWZpbml0aW9ucyBmcm9tIFwiKi5lbnRpdHkuanNvblwiIGZpbGVzOiAke2NvdW50fSBmaWxlcy5gXG4gICAgLy8gICAgIClcbiAgICAvLyAgICk7XG5cbiAgICB0aGlzLmlzQXV0b2xvYWRlZCA9IHRydWU7XG4gIH1cblxuICBzY2hlbWFWYWxpZGF0ZShqc29uOiB1bmtub3duKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gRW50aXR5SnNvblNjaGVtYS5zYWZlUGFyc2UoanNvbik7XG4gICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzID8gbnVsbCA6IHJlc3VsdC5lcnJvcjtcbiAgfVxuXG4gIGFzeW5jIHJlbG9hZChkb1NpbGVudDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgdGhpcy5lbnRpdGllcy5jbGVhcigpO1xuICAgIHRoaXMubW9kdWxlUGF0aHMuY2xlYXIoKTtcbiAgICB0aGlzLnRhYmxlU3BlY3MuY2xlYXIoKTtcbiAgICB0aGlzLmlzQXV0b2xvYWRlZCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYXV0b2xvYWQoZG9TaWxlbnQpO1xuICB9XG5cbiAgYXN5bmMgcmVnaXN0ZXIoanNvbjogRW50aXR5SnNvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVudGl0eSA9IG5ldyBFbnRpdHkoanNvbik7XG4gICAgYXdhaXQgZW50aXR5LnJlZ2lzdGVyTW9kdWxlUGF0aHMoKTtcbiAgICBlbnRpdHkucmVnaXN0ZXJUYWJsZVNwZWNzKCk7XG4gICAgdGhpcy5lbnRpdGllcy5zZXQoanNvbi5pZCwgZW50aXR5KTtcbiAgfVxuXG4gIGdldChlbnRpdHlJZDogc3RyaW5nKTogRW50aXR5IHtcbiAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmVudGl0aWVzLmdldChlbnRpdHlJZCk7XG4gICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgRW50aXR5IOyalOyyrSAke2VudGl0eUlkfWApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBnZXRCeVRhYmxlKHRhYmxlOiBzdHJpbmcpOiBFbnRpdHkge1xuICAgIGNvbnN0IGVudGl0eSA9IEFycmF5LmZyb20odGhpcy5lbnRpdGllcy52YWx1ZXMoKSkuZmluZCgoZW50aXR5KSA9PiBlbnRpdHkudGFibGUgPT09IHRhYmxlKTtcbiAgICBpZiAoZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCBFbnRpdHkg7JqU7LKtICR7dGFibGV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGV4aXN0cyhlbnRpdHlJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5lbnRpdGllcy5nZXQoZW50aXR5SWQpO1xuICAgIHJldHVybiBlbnRpdHkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEFsbElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oRW50aXR5TWFuYWdlci5lbnRpdGllcy5rZXlzKCkpLnNvcnQoKTtcbiAgfVxuXG4gIGdldEFsbEVudGl0aWVzKCk6IEVudGl0eVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudGl0aWVzLnZhbHVlcygpKTtcbiAgfVxuXG4gIGdldEFsbFBhcmVudElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsSWRzKCkuZmlsdGVyKChlbnRpdHlJZCkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5ID0gdGhpcy5nZXQoZW50aXR5SWQpO1xuICAgICAgcmV0dXJuIGVudGl0eS5wYXJlbnRJZCA9PT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW5JZHMocGFyZW50SWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxJZHMoKS5maWx0ZXIoKGVudGl0eUlkKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmdldChlbnRpdHlJZCk7XG4gICAgICByZXR1cm4gZW50aXR5LnBhcmVudElkID09PSBwYXJlbnRJZDtcbiAgICB9KTtcbiAgfVxuXG4gIHNldE1vZHVsZVBhdGgoa2V5OiBzdHJpbmcsIG1vZHVsZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIGNvbnNvbGUuZGVidWcoY2hhbGsuY3lhbihgc2V0TW9kdWxlUGF0aCA6OiAke2tleX0gOjogJHttb2R1bGVQYXRofWApKTtcbiAgICB0aGlzLm1vZHVsZVBhdGhzLnNldChrZXksIG1vZHVsZVBhdGgpO1xuICB9XG5cbiAgZ2V0TW9kdWxlUGF0aChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9kdWxlUGF0aCA9IHRoaXMubW9kdWxlUGF0aHMuZ2V0KGtleSk7XG4gICAgaWYgKG1vZHVsZVBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIOuqqOuTiCDtjKjsiqQg7JqU7LKtICR7a2V5fWApO1xuICAgIH1cblxuICAgIHJldHVybiBtb2R1bGVQYXRoO1xuICB9XG5cbiAgc2V0VGFibGVTcGVjKHRhYmxlU3BlYzogVGFibGVTcGVjKSB7XG4gICAgdGhpcy50YWJsZVNwZWNzLnNldCh0YWJsZVNwZWMubmFtZSwgdGFibGVTcGVjKTtcbiAgfVxuXG4gIGdldFRhYmxlU3BlYyhrZXk6IHN0cmluZyk6IFRhYmxlU3BlYyB7XG4gICAgY29uc3QgdGFibGVTcGVjID0gdGhpcy50YWJsZVNwZWNzLmdldChrZXkpO1xuICAgIGlmICh0YWJsZVNwZWMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIO2FjOydtOu4lCDsiqTtjpkg7JqU7LKtICR7a2V5fWApO1xuICAgIH1cblxuICAgIHJldHVybiB0YWJsZVNwZWM7XG4gIH1cblxuICBnZXROYW1lc0Zyb21JZChlbnRpdHlJZDogc3RyaW5nKTogRW50aXR5TmFtZXNSZWNvcmQge1xuICAgIC8vIGVudGl0eUlk6rCAIOuLqOuzteyImCDrj5ntmJUg64uo7Ja07J24IOqyveyasCBMaXN0IOu2meyXrOyEnCDsg53shLFcbiAgICBjb25zdCBwbHVyYWxpemVkID1cbiAgICAgIGluZmxlY3Rpb24ucGx1cmFsaXplKGVudGl0eUlkKSA9PT0gZW50aXR5SWRcbiAgICAgICAgPyBgJHtlbnRpdHlJZH1MaXN0YFxuICAgICAgICA6IGluZmxlY3Rpb24ucGx1cmFsaXplKGVudGl0eUlkKTtcblxuICAgIHJldHVybiB7XG4gICAgICBmczogaW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKGVudGl0eUlkKSkudG9Mb3dlckNhc2UoKSxcbiAgICAgIGZzUGx1cmFsOiBpbmZsZWN0aW9uLmRhc2hlcml6ZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUocGx1cmFsaXplZCkpLnRvTG93ZXJDYXNlKCksXG4gICAgICBjYW1lbDogaW5mbGVjdGlvbi5jYW1lbGl6ZShlbnRpdHlJZCwgdHJ1ZSksXG4gICAgICBjYW1lbFBsdXJhbDogaW5mbGVjdGlvbi5jYW1lbGl6ZShwbHVyYWxpemVkLCB0cnVlKSxcbiAgICAgIGNhcGl0YWw6IGVudGl0eUlkLFxuICAgICAgY2FwaXRhbFBsdXJhbDogcGx1cmFsaXplZCxcbiAgICAgIHVwcGVyOiBlbnRpdHlJZC50b1VwcGVyQ2FzZSgpLFxuICAgICAgY29uc3RhbnQ6IGluZmxlY3Rpb24udW5kZXJzY29yZShlbnRpdHlJZCkudG9VcHBlckNhc2UoKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVudGl0eUlk64qUIE1vZGVs7J2EIOygnOyZuO2VnCBQYXNjYWxDYXNlIOydtOumhOyeheuLiOuLpC4gKGV4LiBcIlVzZXJcIilcbiAgICogQHBhcmFtIGZpbGVQYXRoXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRFbnRpdHlJZEZyb21QYXRoKGZpbGVQYXRoOiBBYnNvbHV0ZVBhdGgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1hdGNoZWQgPSBmaWxlUGF0aC5tYXRjaCgvYXBwbGljYXRpb25cXC8oLispXFwvLyk7XG4gICAgYXNzZXJ0KG1hdGNoZWQ/LlsxXSk7XG4gICAgcmV0dXJuIGluZmxlY3Rpb24uY2FtZWxpemUobWF0Y2hlZFsxXS5yZXBsYWNlKC8tL2csIFwiX1wiKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVudGl0eU1hbmFnZXIgPSBuZXcgRW50aXR5TWFuYWdlckNsYXNzKCk7XG4iXSwibmFtZXMiOlsiYXNzZXJ0IiwiY2hhbGsiLCJnbG9iIiwicmVhZEZpbGUiLCJpbmZsZWN0aW9uIiwicGF0aCIsInByZXR0aWZ5RXJyb3IiLCJTb25hbXUiLCJFbnRpdHlKc29uU2NoZW1hIiwiRW50aXR5IiwiRW50aXR5TWFuYWdlckNsYXNzIiwiZW50aXRpZXMiLCJNYXAiLCJtb2R1bGVQYXRocyIsInRhYmxlU3BlY3MiLCJpc0F1dG9sb2FkZWQiLCJhdXRvbG9hZCIsIl8iLCJwYXRoUGF0dGVybiIsImpvaW4iLCJhcGlSb290UGF0aCIsImZpbGUiLCJyZXNvbHZlIiwianNvbiIsIkpTT04iLCJwYXJzZSIsInRvU3RyaW5nIiwiZXJyb3IiLCJzY2hlbWFWYWxpZGF0ZSIsInJlbGF0aXZlUGF0aCIsInJlbGF0aXZlIiwiZXJyb3JNZXNzYWdlIiwiY29uc29sZSIsInJlZCIsInllbGxvdyIsInJlZ2lzdGVyIiwicmVzdWx0Iiwic2FmZVBhcnNlIiwic3VjY2VzcyIsInJlbG9hZCIsImRvU2lsZW50IiwiY2xlYXIiLCJlbnRpdHkiLCJyZWdpc3Rlck1vZHVsZVBhdGhzIiwicmVnaXN0ZXJUYWJsZVNwZWNzIiwic2V0IiwiaWQiLCJnZXQiLCJlbnRpdHlJZCIsInVuZGVmaW5lZCIsIkVycm9yIiwiZ2V0QnlUYWJsZSIsInRhYmxlIiwiQXJyYXkiLCJmcm9tIiwidmFsdWVzIiwiZmluZCIsImV4aXN0cyIsImdldEFsbElkcyIsIkVudGl0eU1hbmFnZXIiLCJrZXlzIiwic29ydCIsImdldEFsbEVudGl0aWVzIiwiZ2V0QWxsUGFyZW50SWRzIiwiZmlsdGVyIiwicGFyZW50SWQiLCJnZXRDaGlsZHJlbklkcyIsInNldE1vZHVsZVBhdGgiLCJrZXkiLCJtb2R1bGVQYXRoIiwiZ2V0TW9kdWxlUGF0aCIsInNldFRhYmxlU3BlYyIsInRhYmxlU3BlYyIsIm5hbWUiLCJnZXRUYWJsZVNwZWMiLCJnZXROYW1lc0Zyb21JZCIsInBsdXJhbGl6ZWQiLCJwbHVyYWxpemUiLCJmcyIsImRhc2hlcml6ZSIsInVuZGVyc2NvcmUiLCJ0b0xvd2VyQ2FzZSIsImZzUGx1cmFsIiwiY2FtZWwiLCJjYW1lbGl6ZSIsImNhbWVsUGx1cmFsIiwiY2FwaXRhbCIsImNhcGl0YWxQbHVyYWwiLCJ1cHBlciIsInRvVXBwZXJDYXNlIiwiY29uc3RhbnQiLCJnZXRFbnRpdHlJZEZyb21QYXRoIiwiZmlsZVBhdGgiLCJtYXRjaGVkIiwibWF0Y2giLCJyZXBsYWNlIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxZQUFZLFNBQVM7QUFDNUIsT0FBT0MsV0FBVyxRQUFRO0FBQzFCLFNBQVNDLElBQUksRUFBRUMsUUFBUSxRQUFRLG1CQUFjO0FBQzdDLE9BQU9DLGdCQUFnQixhQUFhO0FBQ3BDLE9BQU9DLFVBQVUsT0FBTztBQUN4QixTQUFTQyxhQUFhLFFBQVEsTUFBTTtBQUNwQyxTQUFTQyxNQUFNLFFBQVEsbUJBQWdCO0FBQ3ZDLFNBQTRDQyxnQkFBZ0IsUUFBUSxvQkFBaUI7QUFFckYsU0FBU0MsTUFBTSxRQUFRLGNBQVc7QUFXbEMsTUFBTUM7SUFDSUMsV0FBZ0MsSUFBSUMsTUFBTTtJQUMzQ0MsY0FBbUMsSUFBSUQsTUFB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
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRpdHkvZW50aXR5LW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBnbG9iLCByZWFkRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBwcmV0dGlmeUVycm9yLCB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5SW5kZXgsIHR5cGUgRW50aXR5SnNvbiwgRW50aXR5SnNvblNjaGVtYSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uL3V0aWxzL2FzeW5jLXV0aWxzXCI7XG5pbXBvcnQgeyBpbXBvcnRNZW1iZXJzIH0gZnJvbSBcIi4uL3V0aWxzL2VzbS11dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBBYnNvbHV0ZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgcnVudGltZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcIi4vZW50aXR5XCI7XG5cbmV4cG9ydCB0eXBlIEVudGl0eU5hbWVzUmVjb3JkID0gUmVjb3JkPFxuICBcImZzXCIgfCBcImZzUGx1cmFsXCIgfCBcImNhbWVsXCIgfCBcImNhbWVsUGx1cmFsXCIgfCBcImNhcGl0YWxcIiB8IFwiY2FwaXRhbFBsdXJhbFwiIHwgXCJ1cHBlclwiIHwgXCJjb25zdGFudFwiLFxuICBzdHJpbmdcbj47XG5leHBvcnQgdHlwZSBUYWJsZVNwZWMgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdW5pcXVlSW5kZXhlczogRW50aXR5SW5kZXhbXTtcbiAganNvbkNvbHVtbnM6IHN0cmluZ1tdO1xufTtcbmNsYXNzIEVudGl0eU1hbmFnZXJDbGFzcyB7XG4gIHByaXZhdGUgZW50aXRpZXM6IE1hcDxzdHJpbmcsIEVudGl0eT4gPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBtb2R1bGVQYXRoczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSB0YWJsZVNwZWNzOiBNYXA8c3RyaW5nLCBUYWJsZVNwZWM+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgaXNBdXRvbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8g6rK966GcIOyghOuLrOuwm+yVhCDrqqjrk6AgZW50aXR5Lmpzb24g7YyM7J28IOuhnOuTnFxuICBhc3luYyBhdXRvbG9hZChfOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5pc0F1dG9sb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGF0aFBhdHRlcm4gPSBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBcIi9zcmMvYXBwbGljYXRpb24vKiovKi5lbnRpdHkuanNvblwiKTtcblxuICAgIGZvciBhd2FpdCAoY29uc3QgZmlsZSBvZiBnbG9iKHBhdGgucmVzb2x2ZShwYXRoUGF0dGVybikpKSB7XG4gICAgICBjb25zdCBqc29uID0gSlNPTi5wYXJzZSgoYXdhaXQgcmVhZEZpbGUoZmlsZSkpLnRvU3RyaW5nKCkpO1xuXG4gICAgICAvLyBlbnRpdHkuanNvbiDsiqTtgqTrp4gg6rKA7KadXG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuc2NoZW1hVmFsaWRhdGUoanNvbik7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShTb25hbXUuYXBpUm9vdFBhdGgsIGZpbGUpO1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBwcmV0dGlmeUVycm9yKGVycm9yKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBjaGFsay5yZWQoYEludmFsaWQgZW50aXR5Lmpzb24gc2NoZW1hOiAke3JlbGF0aXZlUGF0aH1cXG4ke2NoYWxrLnllbGxvdyhlcnJvck1lc3NhZ2UpfWApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyKGpzb24pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTtcblxuICAgIHRoaXMuaXNBdXRvbG9hZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNjaGVtYVZhbGlkYXRlKGpzb246IHVua25vd24pIHtcbiAgICBjb25zdCByZXN1bHQgPSBFbnRpdHlKc29uU2NoZW1hLnNhZmVQYXJzZShqc29uKTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyBudWxsIDogcmVzdWx0LmVycm9yO1xuICB9XG5cbiAgYXN5bmMgcmVsb2FkKGRvU2lsZW50OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLmVudGl0aWVzLmNsZWFyKCk7XG4gICAgdGhpcy5tb2R1bGVQYXRocy5jbGVhcigpO1xuICAgIHRoaXMudGFibGVTcGVjcy5jbGVhcigpO1xuICAgIHRoaXMuaXNBdXRvbG9hZGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hdXRvbG9hZChkb1NpbGVudCk7XG4gIH1cblxuICBhc3luYyByZWdpc3Rlcihqc29uOiBFbnRpdHlKc29uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eShqc29uKTtcbiAgICBhd2FpdCBlbnRpdHkucmVnaXN0ZXJNb2R1bGVQYXRocygpO1xuICAgIGVudGl0eS5yZWdpc3RlclRhYmxlU3BlY3MoKTtcbiAgICB0aGlzLmVudGl0aWVzLnNldChqc29uLmlkLCBlbnRpdHkpO1xuICB9XG5cbiAgZ2V0KGVudGl0eUlkOiBzdHJpbmcpOiBFbnRpdHkge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZW50aXRpZXMuZ2V0KGVudGl0eUlkKTtcbiAgICBpZiAoZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCBFbnRpdHkg7JqU7LKtICR7ZW50aXR5SWR9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGdldEJ5VGFibGUodGFibGU6IHN0cmluZyk6IEVudGl0eSB7XG4gICAgY29uc3QgZW50aXR5ID0gQXJyYXkuZnJvbSh0aGlzLmVudGl0aWVzLnZhbHVlcygpKS5maW5kKChlbnRpdHkpID0+IGVudGl0eS50YWJsZSA9PT0gdGFibGUpO1xuICAgIGlmIChlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIEVudGl0eSDsmpTssq0gJHt0YWJsZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgZXhpc3RzKGVudGl0eUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmVudGl0aWVzLmdldChlbnRpdHlJZCk7XG4gICAgcmV0dXJuIGVudGl0eSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0QWxsSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShFbnRpdHlNYW5hZ2VyLmVudGl0aWVzLmtleXMoKSkuc29ydCgpO1xuICB9XG5cbiAgZ2V0QWxsRW50aXRpZXMoKTogRW50aXR5W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpO1xuICB9XG5cbiAgZ2V0QWxsUGFyZW50SWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxJZHMoKS5maWx0ZXIoKGVudGl0eUlkKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmdldChlbnRpdHlJZCk7XG4gICAgICByZXR1cm4gZW50aXR5LnBhcmVudElkID09PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDaGlsZHJlbklkcyhwYXJlbnRJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbElkcygpLmZpbHRlcigoZW50aXR5SWQpID0+IHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0KGVudGl0eUlkKTtcbiAgICAgIHJldHVybiBlbnRpdHkucGFyZW50SWQgPT09IHBhcmVudElkO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0TW9kdWxlUGF0aChrZXk6IHN0cmluZywgbW9kdWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5kZWJ1ZyhjaGFsay5jeWFuKGBzZXRNb2R1bGVQYXRoIDo6ICR7a2V5fSA6OiAke21vZHVsZVBhdGh9YCkpO1xuICAgIHRoaXMubW9kdWxlUGF0aHMuc2V0KGtleSwgbW9kdWxlUGF0aCk7XG4gIH1cblxuICBnZXRNb2R1bGVQYXRoKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQoa2V5KTtcbiAgICBpZiAobW9kdWxlUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg66qo65OIIO2MqOyKpCDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZVBhdGg7XG4gIH1cblxuICBzZXRUYWJsZVNwZWModGFibGVTcGVjOiBUYWJsZVNwZWMpIHtcbiAgICB0aGlzLnRhYmxlU3BlY3Muc2V0KHRhYmxlU3BlYy5uYW1lLCB0YWJsZVNwZWMpO1xuICB9XG5cbiAgZ2V0VGFibGVTcGVjKGtleTogc3RyaW5nKTogVGFibGVTcGVjIHtcbiAgICBjb25zdCB0YWJsZVNwZWMgPSB0aGlzLnRhYmxlU3BlY3MuZ2V0KGtleSk7XG4gICAgaWYgKHRhYmxlU3BlYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg7YWM7J2067iUIOyKpO2OmSDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlU3BlYztcbiAgfVxuXG4gIGdldE5hbWVzRnJvbUlkKGVudGl0eUlkOiBzdHJpbmcpOiBFbnRpdHlOYW1lc1JlY29yZCB7XG4gICAgLy8gZW50aXR5SWTqsIAg64uo67O17IiYIOuPme2YlSDri6jslrTsnbgg6rK97JqwIExpc3Qg67aZ7Jes7IScIOyDneyEsVxuICAgIGNvbnN0IHBsdXJhbGl6ZWQgPVxuICAgICAgaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpID09PSBlbnRpdHlJZFxuICAgICAgICA/IGAke2VudGl0eUlkfUxpc3RgXG4gICAgICAgIDogaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZzOiBpbmZsZWN0aW9uLmRhc2hlcml6ZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgZnNQbHVyYWw6IGluZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShwbHVyYWxpemVkKSkudG9Mb3dlckNhc2UoKSxcbiAgICAgIGNhbWVsOiBpbmZsZWN0aW9uLmNhbWVsaXplKGVudGl0eUlkLCB0cnVlKSxcbiAgICAgIGNhbWVsUGx1cmFsOiBpbmZsZWN0aW9uLmNhbWVsaXplKHBsdXJhbGl6ZWQsIHRydWUpLFxuICAgICAgY2FwaXRhbDogZW50aXR5SWQsXG4gICAgICBjYXBpdGFsUGx1cmFsOiBwbHVyYWxpemVkLFxuICAgICAgdXBwZXI6IGVudGl0eUlkLnRvVXBwZXJDYXNlKCksXG4gICAgICBjb25zdGFudDogaW5mbGVjdGlvbi51bmRlcnNjb3JlKGVudGl0eUlkKS50b1VwcGVyQ2FzZSgpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW50aXR5SWTripQgTW9kZWzsnYQg7KCc7Jm47ZWcIFBhc2NhbENhc2Ug7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlclwiKVxuICAgKiBAcGFyYW0gZmlsZVBhdGhcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldEVudGl0eUlkRnJvbVBhdGgoZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbGVQYXRoLm1hdGNoKC9hcHBsaWNhdGlvblxcLyguKylcXC8vKTtcbiAgICBhc3NlcnQobWF0Y2hlZD8uWzFdKTtcbiAgICByZXR1cm4gaW5mbGVjdGlvbi5jYW1lbGl6ZShtYXRjaGVkWzFdLnJlcGxhY2UoLy0vZywgXCJfXCIpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdHlwZVBhdGhzUGF0dGVybnMgPSBbXG4gICAgICBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBydW50aW1lUGF0aChcInNyYy9hcHBsaWNhdGlvbi8qKi8qLnR5cGVzLnRzXCIpKSxcbiAgICAgIHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIHJ1bnRpbWVQYXRoKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLnRzXCIpKSxcbiAgICBdO1xuICAgIGNvbnN0IHR5cGVQYXRocyA9IChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHR5cGVQYXRoc1BhdHRlcm5zLm1hcCgocGF0dGVybikgPT4gZ2xvYkFzeW5jKHBhdHRlcm4pKSlcbiAgICApLmZsYXQoKTtcblxuICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgdHlwZVBhdGhzKSB7XG4gICAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5nZXRNb2R1bGVQYXRoRnJvbVR5cGVGaWxlUGF0aChmaWxlUGF0aCk7XG4gICAgICBjb25zdCBpbXBvcnRlZE1lbWJlcnMgPSBhd2FpdCBpbXBvcnRNZW1iZXJzPHVua25vd24+KGZpbGVQYXRoKTtcbiAgICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIGltcG9ydGVkTWVtYmVycykge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpIHtcbiAgICAgICAgICB0aGlzLnNldE1vZHVsZVBhdGgobmFtZSwgbW9kdWxlUGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gZmlsZVBhdGgucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpO1xuICAgIGNvbnN0IG1hdGNoZWQgPSBub3JtYWxpemVkUGF0aC5tYXRjaCgvXFwvKD86c3JjfGRpc3QpXFwvYXBwbGljYXRpb25cXC8oLispXFwuKD86dHN8anMpJC8pO1xuXG4gICAgaWYgKCFtYXRjaGVkPy5bMV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7YOA7J6FIO2MjOydvOydmCDrqqjrk4gg6rK966Gc66W8IOqzhOyCsO2VoCDsiJgg7JeG7Iq164uI64ukOiAke2ZpbGVQYXRofWApO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVkWzFdO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBFbnRpdHlNYW5hZ2VyID0gbmV3IEVudGl0eU1hbmFnZXJDbGFzcygpO1xuIl0sIm5hbWVzIjpbImFzc2VydCIsImNoYWxrIiwiZ2xvYiIsInJlYWRGaWxlIiwiaW5mbGVjdGlvbiIsInBhdGgiLCJwcmV0dGlmeUVycm9yIiwieiIsIlNvbmFtdSIsIkVudGl0eUpzb25TY2hlbWEiLCJnbG9iQXN5bmMiLCJpbXBvcnRNZW1iZXJzIiwicnVudGltZVBhdGgiLCJFbnRpdHkiLCJFbnRpdHlNYW5hZ2VyQ2xhc3MiLCJlbnRpdGllcyIsIk1hcCIsIm1vZHVsZVBhdGhzIiwidGFibGVTcGVjcyIsImlzQXV0b2xvYWRlZCIsImF1dG9sb2FkIiwiXyIsInBhdGhQYXR0ZXJuIiwiam9pbiIsImFwaVJvb3RQYXRoIiwiZmlsZSIsInJlc29sdmUiLCJqc29uIiwiSlNPTiIsInBhcnNlIiwidG9TdHJpbmciLCJlcnJvciIsInNjaGVtYVZhbGlkYXRlIiwicmVsYXRpdmVQYXRoIiwicmVsYXRpdmUiLCJlcnJvck1lc3NhZ2UiLCJjb25zb2xlIiwicmVkIiwieWVsbG93IiwicmVnaXN0ZXIiLCJyZWdpc3Rlck5vbkVudGl0eVR5cGVNb2R1bGVQYXRocyIsInJlc3VsdCIsInNhZmVQYXJzZSIsInN1Y2Nlc3MiLCJyZWxvYWQiLCJkb1NpbGVudCIsImNsZWFyIiwiZW50aXR5IiwicmVnaXN0ZXJNb2R1bGVQYXRocyIsInJlZ2lzdGVyVGFibGVTcGVjcyIsInNldCIsImlkIiwiZ2V0IiwiZW50aXR5SWQiLCJ1bmRlZmluZWQiLCJFcnJvciIsImdldEJ5VGFibGUiLCJ0YWJsZSIsIkFycmF5IiwiZnJvbSIsInZhbHVlcyIsImZpbmQiLCJleGlzdHMiLCJnZXRBbGxJZHMiLCJFbnRpdHlNYW5hZ2VyIiwia2V5cyIsInNvcnQiLCJnZXRBbGxFbnRpdGllcyIsImdldEFsbFBhcmVudElkcyIsImZpbHRlciIsInBhcmVudElkIiwiZ2V0Q2hpbGRyZW5JZHMiLCJzZXRNb2R1bGVQYXRoIiwia2V5IiwibW9kdWxlUGF0aCIsImdldE1vZHVsZVBhdGgiLCJzZXRUYWJsZVNwZWMiLCJ0YWJsZVNwZWMiLCJuYW1lIiwiZ2V0VGFibGVTcGVjIiwiZ2V0TmFtZXNGcm9tSWQiLCJwbHVyYWxpemVkIiwicGx1cmFsaXplIiwiZnMiLCJkYXNoZXJpemUiLCJ1bmRlcnNjb3JlIiwidG9Mb3dlckNhc2UiLCJmc1BsdXJhbCIsImNhbWVsIiwiY2FtZWxpemUiLCJjYW1lbFBsdXJhbCIsImNhcGl0YWwiLCJjYXBpdGFsUGx1cmFsIiwidXBwZXIiLCJ0b1VwcGVyQ2FzZSIsImNvbnN0YW50IiwiZ2V0RW50aXR5SWRGcm9tUGF0aCIsImZpbGVQYXRoIiwibWF0Y2hlZCIsIm1hdGNoIiwicmVwbGFjZSIsInR5cGVQYXRoc1BhdHRlcm5zIiwidHlwZVBhdGhzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInBhdHRlcm4iLCJmbGF0IiwiZ2V0TW9kdWxlUGF0aEZyb21UeXBlRmlsZVBhdGgiLCJpbXBvcnRlZE1lbWJlcnMiLCJ2YWx1ZSIsIlpvZFR5cGUiLCJub3JtYWxpemVkUGF0aCIsInJlcGxhY2VBbGwiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVksU0FBUztBQUM1QixPQUFPQyxXQUFXLFFBQVE7QUFDMUIsU0FBU0MsSUFBSSxFQUFFQyxRQUFRLFFBQVEsbUJBQWM7QUFDN0MsT0FBT0MsZ0JBQWdCLGFBQWE7QUFDcEMsT0FBT0MsVUFBVSxPQUFPO0FBQ3hCLFNBQVNDLGFBQWEsRUFBRUMsQ0FBQyxRQUFRLE1BQU07QUFDdkMsU0FBU0MsTUFBTSxRQUFRLG1CQUFnQjtBQUN2QyxTQUE0Q0MsZ0JBQWdCLFFBQVEsb0JBQWlCO0FBQ3JGLFNBQVNDLFNBQVMsUUFBUSwwQkFBdUI7QUFDakQsU0FBU0MsYUFBYSxRQUFRLHdCQUFxQjtBQUVuRCxTQUFTQyxXQUFXLFFBQVEseUJBQXNCO0FBQ2xELFNBQVNDLE1BQU0sUUFBUSxjQUFXO0FBV2xDLE1BQU1DO0lBQ0lDLFdBQWdDLElBQUlDLE1BQU07SUFDM0NDLGNBQW1DLElBQUlELE1BQU07SUFDNUNFLGFBQXFDLElBQUlGLE1BQU07SUFDaERHLGVBQXdCLE1BQU07SUFFckMsK0JBQStCO0lBQy9CLE1BQU1DLFNBQVNDLElBQWEsS0FBSyxFQUFFO1FBQ2pDLElBQUksSUFBSSxDQUFDRixZQUFZLEVBQUU7WUFDckI7UUFDRjtRQUNBLE1BQU1HLGNBQWNqQixLQUFLa0IsSUFBSSxDQUFDZixPQUFPZ0IsV0FBVyxFQUFFO1FBRWxELFdBQVcsTUFBTUMsUUFBUXZCLEtBQUtHLEtBQUtxQixPQUFPLENBQUNKLGNBQWU7WUFDeEQsTUFBTUss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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-db-manager.d.ts","sourceRoot":"","sources":["../../src/testing/parallel-db-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC;;;;;GAKG;AACH,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,IAAI,CAAC,MAAM,EACrB,UAAU,EAAE,MAAM;IAErC;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"parallel-db-manager.d.ts","sourceRoot":"","sources":["../../src/testing/parallel-db-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC;;;;;GAKG;AACH,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,IAAI,CAAC,MAAM,EACrB,UAAU,EAAE,MAAM;IAErC;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C5C;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC1C;;;OAGG;IACH,WAAW,IAAI,MAAM;IAKrB;;OAEG;IACH,cAAc,IAAI,OAAO;CAG1B"}
|
|
@@ -25,8 +25,11 @@ import { createKnexInstance } from "../database/knex.js";
|
|
|
25
25
|
const workerDbNames = Array.from({
|
|
26
26
|
length: this.maxWorkers
|
|
27
27
|
}, (_, i)=>`${this.templateDb}_${i + 1}`);
|
|
28
|
-
// 1. 기존 연결 종료 (병렬)
|
|
29
|
-
await Promise.all(
|
|
28
|
+
// 1. 기존 연결 종료 (병렬) worker DB + template DB (PG 18에서 FILE_COPY 시 template에 exclusive access 필요)
|
|
29
|
+
await Promise.all([
|
|
30
|
+
...workerDbNames,
|
|
31
|
+
this.templateDb
|
|
32
|
+
].map((dbName)=>adminDb.raw(`
|
|
30
33
|
SELECT pg_terminate_backend(pg_stat_activity.pid)
|
|
31
34
|
FROM pg_stat_activity
|
|
32
35
|
WHERE pg_stat_activity.datname = ?
|
|
@@ -37,7 +40,7 @@ import { createKnexInstance } from "../database/knex.js";
|
|
|
37
40
|
// 2. 기존 DB 삭제 (병렬)
|
|
38
41
|
await Promise.all(workerDbNames.map((dbName)=>adminDb.raw(`DROP DATABASE IF EXISTS "${dbName}"`)));
|
|
39
42
|
// 3. 템플릿에서 복제 (병렬)
|
|
40
|
-
await Promise.all(workerDbNames.map((dbName)=>adminDb.raw(`CREATE DATABASE "${dbName}" TEMPLATE "${this.templateDb}"`)));
|
|
43
|
+
await Promise.all(workerDbNames.map((dbName)=>adminDb.raw(`CREATE DATABASE "${dbName}" TEMPLATE "${this.templateDb}" STRATEGY FILE_COPY`)));
|
|
41
44
|
} finally{
|
|
42
45
|
await adminDb.destroy();
|
|
43
46
|
}
|
|
@@ -82,4 +85,4 @@ import { createKnexInstance } from "../database/knex.js";
|
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
87
|
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL3BhcmFsbGVsLWRiLW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IGNyZWF0ZUtuZXhJbnN0YW5jZSB9IGZyb20gXCIuLi9kYXRhYmFzZS9rbmV4XCI7XG5cbi8qKlxuICog67OR66CsIO2FjOyKpO2KuOulvCDsnITtlZwgV29ya2Vy67OEIERCIOq0gOumrCDtgbTrnpjsiqTsnoXri4jri6QuXG4gKlxuICogVml0ZXN07J2YIGdsb2JhbFNldHVwL2dsb2JhbFRlYXJkb3du7JeQ7IScIOyCrOyaqe2VmOyXrFxuICog7YWc7ZSM66a/IERC7JeQ7IScIHdvcmtlciDsiJjrp4ztgbwg7YWM7Iqk7Yq4IERC66W8IOuzteygnC/sgq3soJztlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbGxlbERCTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF4V29ya2VyczogbnVtYmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGJDb25maWc6IEtuZXguQ29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVEYjogc3RyaW5nLFxuICApIHt9XG4gIC8qKlxuICAgKiBXb3JrZXLrs4Qg7YWM7Iqk7Yq4IERC66W8IO2FnO2UjOumv+yXkOyEnCDrs7XsoJztlZjsl6wg7IOd7ISx7ZWp64uI64ukLlxuICAgKiBnbG9iYWxTZXR1cOyXkOyEnCDtmLjstpzrkKnri4jri6QuXG4gICAqL1xuICBhc3luYyBjcmVhdGVXb3JrZXJEYXRhYmFzZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gcG9zdGdyZXMgRELsl5Ag7Jew6rKw7ZWY7JesIENSRUFURSBEQVRBQkFTRSDsi6TtlolcbiAgICBjb25zdCBhZG1pbkRiID0gY3JlYXRlS25leEluc3RhbmNlKHtcbiAgICAgIC4uLnRoaXMuZGJDb25maWcsXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgd29ya2VyRGJOYW1lcyA9IEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiB0aGlzLm1heFdvcmtlcnMgfSxcbiAgICAgICAgKF8sIGkpID0+
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL3BhcmFsbGVsLWRiLW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IGNyZWF0ZUtuZXhJbnN0YW5jZSB9IGZyb20gXCIuLi9kYXRhYmFzZS9rbmV4XCI7XG5cbi8qKlxuICog67OR66CsIO2FjOyKpO2KuOulvCDsnITtlZwgV29ya2Vy67OEIERCIOq0gOumrCDtgbTrnpjsiqTsnoXri4jri6QuXG4gKlxuICogVml0ZXN07J2YIGdsb2JhbFNldHVwL2dsb2JhbFRlYXJkb3du7JeQ7IScIOyCrOyaqe2VmOyXrFxuICog7YWc7ZSM66a/IERC7JeQ7IScIHdvcmtlciDsiJjrp4ztgbwg7YWM7Iqk7Yq4IERC66W8IOuzteygnC/sgq3soJztlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbGxlbERCTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF4V29ya2VyczogbnVtYmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGJDb25maWc6IEtuZXguQ29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVEYjogc3RyaW5nLFxuICApIHt9XG4gIC8qKlxuICAgKiBXb3JrZXLrs4Qg7YWM7Iqk7Yq4IERC66W8IO2FnO2UjOumv+yXkOyEnCDrs7XsoJztlZjsl6wg7IOd7ISx7ZWp64uI64ukLlxuICAgKiBnbG9iYWxTZXR1cOyXkOyEnCDtmLjstpzrkKnri4jri6QuXG4gICAqL1xuICBhc3luYyBjcmVhdGVXb3JrZXJEYXRhYmFzZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gcG9zdGdyZXMgRELsl5Ag7Jew6rKw7ZWY7JesIENSRUFURSBEQVRBQkFTRSDsi6TtlolcbiAgICBjb25zdCBhZG1pbkRiID0gY3JlYXRlS25leEluc3RhbmNlKHtcbiAgICAgIC4uLnRoaXMuZGJDb25maWcsXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgd29ya2VyRGJOYW1lcyA9IEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiB0aGlzLm1heFdvcmtlcnMgfSxcbiAgICAgICAgKF8sIGkpID0+IGAke3RoaXMudGVtcGxhdGVEYn1fJHtpICsgMX1gLFxuICAgICAgKTtcblxuICAgICAgLy8gMS4g6riw7KG0IOyXsOqysCDsooXro4wgKOuzkeugrCkgd29ya2VyIERCICsgdGVtcGxhdGUgREIgKFBHIDE47JeQ7IScIEZJTEVfQ09QWSDsi5wgdGVtcGxhdGXsl5AgZXhjbHVzaXZlIGFjY2VzcyDtlYTsmpQpXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgWy4uLndvcmtlckRiTmFtZXMsIHRoaXMudGVtcGxhdGVEYl0ubWFwKChkYk5hbWUpID0+XG4gICAgICAgICAgYWRtaW5EYi5yYXcoXG4gICAgICAgICAgICBgXG4gICAgICAgICAgICBTRUxFQ1QgcGdfdGVybWluYXRlX2JhY2tlbmQocGdfc3RhdF9hY3Rpdml0eS5waWQpXG4gICAgICAgICAgICBGUk9NIHBnX3N0YXRfYWN0aXZpdHlcbiAgICAgICAgICAgIFdIRVJFIHBnX3N0YXRfYWN0aXZpdHkuZGF0bmFtZSA9ID9cbiAgICAgICAgICAgIEFORCBwaWQgPD4gcGdfYmFja2VuZF9waWQoKVxuICAgICAgICAgIGAsXG4gICAgICAgICAgICBbZGJOYW1lXSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgLy8gMi4g6riw7KG0IERCIOyCreygnCAo67OR66CsKVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHdvcmtlckRiTmFtZXMubWFwKChkYk5hbWUpID0+IGFkbWluRGIucmF3KGBEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBcIiR7ZGJOYW1lfVwiYCkpLFxuICAgICAgKTtcblxuICAgICAgLy8gMy4g7YWc7ZSM66a/7JeQ7IScIOuzteygnCAo67OR66CsKVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHdvcmtlckRiTmFtZXMubWFwKChkYk5hbWUpID0+XG4gICAgICAgICAgYWRtaW5EYi5yYXcoXG4gICAgICAgICAgICBgQ1JFQVRFIERBVEFCQVNFIFwiJHtkYk5hbWV9XCIgVEVNUExBVEUgXCIke3RoaXMudGVtcGxhdGVEYn1cIiBTVFJBVEVHWSBGSUxFX0NPUFlgLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBhZG1pbkRiLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog7IOd7ISx7ZWcIFdvcmtlciBEQuuTpOydhCDsgq3soJztlanri4jri6QuXG4gICAqIGdsb2JhbFRlYXJkb3du7JeQ7IScIO2YuOy2nOuQqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIGRyb3BXb3JrZXJEYXRhYmFzZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYWRtaW5EYiA9IGNyZWF0ZUtuZXhJbnN0YW5jZSh7XG4gICAgICAuLi50aGlzLmRiQ29uZmlnLFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHdvcmtlckRiTmFtZXMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7IGxlbmd0aDogdGhpcy5tYXhXb3JrZXJzIH0sXG4gICAgICAgIChfLCBpKSA9PiBgJHt0aGlzLnRlbXBsYXRlRGJ9XyR7aSArIDF9YCxcbiAgICAgICk7XG5cbiAgICAgIC8vIOyXsOqysCDsooXro4wgKOuzkeugrClcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICB3b3JrZXJEYk5hbWVzLm1hcCgoZGJOYW1lKSA9PlxuICAgICAgICAgIGFkbWluRGIucmF3KFxuICAgICAgICAgICAgYFxuICAgICAgICAgICAgU0VMRUNUIHBnX3Rlcm1pbmF0ZV9iYWNrZW5kKHBnX3N0YXRfYWN0aXZpdHkucGlkKVxuICAgICAgICAgICAgRlJPTSBwZ19zdGF0X2FjdGl2aXR5XG4gICAgICAgICAgICBXSEVSRSBwZ19zdGF0X2FjdGl2aXR5LmRhdG5hbWUgPSA/XG4gICAgICAgICAgICBBTkQgcGlkIDw+IHBnX2JhY2tlbmRfcGlkKClcbiAgICAgICAgICBgLFxuICAgICAgICAgICAgW2RiTmFtZV0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIC8vIERCIOyCreygnCAo67OR66CsKVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHdvcmtlckRiTmFtZXMubWFwKChkYk5hbWUpID0+IGFkbWluRGIucmF3KGBEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBcIiR7ZGJOYW1lfVwiYCkpLFxuICAgICAgKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgYWRtaW5EYi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIO2YhOyerCBXb3JrZXLsnZggSUTrpbwg67CY7ZmY7ZWp64uI64ukLlxuICAgKiBWaXRlc3TripQgVklURVNUX1BPT0xfSUQg7ZmY6rK967OA7IiY66GcIHdvcmtlcuulvCDsi53rs4Ttlanri4jri6QuXG4gICAqL1xuICBnZXRXb3JrZXJJZCgpOiBudW1iZXIge1xuICAgIC8vIFZJVEVTVF9QT09MX0lE64qUIDHrtoDthLAg7Iuc7J6RXG4gICAgcmV0dXJuIHBhcnNlSW50KHByb2Nlc3MuZW52LlZJVEVTVF9QT09MX0lEID8/IFwiMVwiLCAxMCk7XG4gIH1cblxuICAvKipcbiAgICog67OR66CsIO2FjOyKpO2KuCDrqqjrk5zsnbjsp4Ag7ZmV7J247ZWp64uI64ukLlxuICAgKi9cbiAgaXNQYXJhbGxlbE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHByb2Nlc3MuZW52LlNPTkFNVV9XT1JLRVJfREIgPT09IFwidHJ1ZVwiO1xuICB9XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlS25leEluc3RhbmNlIiwiUGFyYWxsZWxEQk1hbmFnZXIiLCJtYXhXb3JrZXJzIiwiZGJDb25maWciLCJ0ZW1wbGF0ZURiIiwiY3JlYXRlV29ya2VyRGF0YWJhc2VzIiwiYWRtaW5EYiIsIndvcmtlckRiTmFtZXMiLCJBcnJheSIsImZyb20iLCJsZW5ndGgiLCJfIiwiaSIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJkYk5hbWUiLCJyYXciLCJkZXN0cm95IiwiZHJvcFdvcmtlckRhdGFiYXNlcyIsImdldFdvcmtlcklkIiwicGFyc2VJbnQiLCJwcm9jZXNzIiwiZW52IiwiVklURVNUX1BPT0xfSUQiLCJpc1BhcmFsbGVsTW9kZSIsIlNPTkFNVV9XT1JLRVJfREIiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLGtCQUFrQixRQUFRLHNCQUFtQjtBQUV0RDs7Ozs7Q0FLQyxHQUNELE9BQU8sTUFBTUM7Ozs7SUFDWCxZQUNFLEFBQWlCQyxVQUFrQixFQUNuQyxBQUFpQkMsUUFBcUIsRUFDdEMsQUFBaUJDLFVBQWtCLENBQ25DO2FBSGlCRixhQUFBQTthQUNBQyxXQUFBQTthQUNBQyxhQUFBQTtJQUNoQjtJQUNIOzs7R0FHQyxHQUNELE1BQU1DLHdCQUF1QztRQUMzQyx1Q0FBdUM7UUFDdkMsTUFBTUMsVUFBVU4sbUJBQW1CO1lBQ2pDLEdBQUcsSUFBSSxDQUFDRyxRQUFRO1FBQ2xCO1FBRUEsSUFBSTtZQUNGLE1BQU1JLGdCQUFnQkMsTUFBTUMsSUFBSSxDQUM5QjtnQkFBRUMsUUFBUSxJQUFJLENBQUNSLFVBQVU7WUFBQyxHQUMxQixDQUFDUyxHQUFHQyxJQUFNLEdBQUcsSUFBSSxDQUFDUixVQUFVLENBQUMsQ0FBQyxFQUFFUSxJQUFJLEdBQUc7WUFHekMsK0ZBQStGO1lBQy9GLE1BQU1DLFFBQVFDLEdBQUcsQ0FDZjttQkFBSVA7Z0JBQWUsSUFBSSxDQUFDSCxVQUFVO2FBQUMsQ0FBQ1csR0FBRyxDQUFDLENBQUNDLFNBQ3ZDVixRQUFRVyxHQUFHLENBQ1QsQ0FBQzs7Ozs7VUFLSCxDQUFDLEVBQ0M7b0JBQUNEO2lCQUFPO1lBS2QsbUJBQW1CO1lBQ25CLE1BQU1ILFFBQVFDLEdBQUcsQ0FDZlAsY0FBY1EsR0FBRyxDQUFDLENBQUNDLFNBQVdWLFFBQVFXLEdBQUcsQ0FBQyxDQUFDLHlCQUF5QixFQUFFRCxPQUFPLENBQUMsQ0FBQztZQUdqRixtQkFBbUI7WUFDbkIsTUFBTUgsUUFBUUMsR0FBRyxDQUNmUCxjQUFjUSxHQUFHLENBQUMsQ0FBQ0MsU0FDakJWLFFBQVFXLEdBQUcsQ0FDVCxDQUFDLGlCQUFpQixFQUFFRCxPQUFPLFlBQVksRUFBRSxJQUFJLENBQUNaLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztRQUl0RixTQUFVO1lBQ1IsTUFBTUUsUUFBUVksT0FBTztRQUN2QjtJQUNGO0lBRUE7OztHQUdDLEdBQ0QsTUFBTUMsc0JBQXFDO1FBQ3pDLE1BQU1iLFVBQVVOLG1CQUFtQjtZQUNqQyxHQUFHLElBQUksQ0FBQ0csUUFBUTtRQUNsQjtRQUVBLElBQUk7WUFDRixNQUFNSSxnQkFBZ0JDLE1BQU1DLElBQUksQ0FDOUI7Z0JBQUVDLFFBQVEsSUFBSSxDQUFDUixVQUFVO1lBQUMsR0FDMUIsQ0FBQ1MsR0FBR0MsSUFBTSxHQUFHLElBQUksQ0FBQ1IsVUFBVSxDQUFDLENBQUMsRUFBRVEsSUFBSSxHQUFHO1lBR3pDLGFBQWE7WUFDYixNQUFNQyxRQUFRQyxHQUFHLENBQ2ZQLGNBQWNRLEdBQUcsQ0FBQyxDQUFDQyxTQUNqQlYsUUFBUVcsR0FBRyxDQUNULENBQUM7Ozs7O1VBS0gsQ0FBQyxFQUNDO29CQUFDRDtpQkFBTztZQUtkLGFBQWE7WUFDYixNQUFNSCxRQUFRQyxHQUFHLENBQ2ZQLGNBQWNRLEdBQUcsQ0FBQyxDQUFDQyxTQUFXVixRQUFRVyxHQUFHLENBQUMsQ0FBQyx5QkFBeUIsRUFBRUQsT0FBTyxDQUFDLENBQUM7UUFFbkYsU0FBVTtZQUNSLE1BQU1WLFFBQVFZLE9BQU87UUFDdkI7SUFDRjtJQUVBOzs7R0FHQyxHQUNERSxjQUFzQjtRQUNwQix5QkFBeUI7UUFDekIsT0FBT0MsU0FBU0MsUUFBUUMsR0FBRyxDQUFDQyxjQUFjLElBQUksS0FBSztJQUNyRDtJQUVBOztHQUVDLEdBQ0RDLGlCQUEwQjtRQUN4QixPQUFPSCxRQUFRQyxHQUFHLENBQUNHLGdCQUFnQixLQUFLO0lBQzFDO0FBQ0YifQ==
|
package/dist/ui/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/ui/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAwC/C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/ui/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAwC/C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAu3C/D"}
|