sonamu 0.9.4 → 0.9.6
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/ai/providers/rtzr/utils.js +2 -2
- package/dist/api/config.d.ts +13 -2
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +1 -1
- package/dist/api/context.d.ts +17 -7
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts +18 -0
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +54 -3
- package/dist/api/index.js +8 -3
- package/dist/api/sonamu.d.ts +24 -9
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +365 -79
- package/dist/api/websocket-helpers.d.ts +24 -0
- package/dist/api/websocket-helpers.d.ts.map +1 -0
- package/dist/api/websocket-helpers.js +77 -0
- package/dist/bin/cli.js +12 -4
- package/dist/database/upsert-builder.js +4 -4
- package/dist/dict/sonamu-dictionary.js +6 -6
- package/dist/entity/entity-manager.js +1 -1
- package/dist/entity/entity.js +3 -3
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -4
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +8 -9
- package/dist/stream/index.d.ts +6 -0
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +13 -2
- package/dist/stream/ws-audience-resolver.d.ts +15 -0
- package/dist/stream/ws-audience-resolver.d.ts.map +1 -0
- package/dist/stream/ws-audience-resolver.js +31 -0
- package/dist/stream/ws-audience.d.ts +28 -0
- package/dist/stream/ws-audience.d.ts.map +1 -0
- package/dist/stream/ws-audience.js +46 -0
- package/dist/stream/ws-cluster-bus.d.ts +23 -0
- package/dist/stream/ws-cluster-bus.d.ts.map +1 -0
- package/dist/stream/ws-cluster-bus.js +18 -0
- package/dist/stream/ws-core.d.ts +15 -0
- package/dist/stream/ws-core.d.ts.map +1 -0
- package/dist/stream/ws-core.js +1 -0
- package/dist/stream/ws-delivery.d.ts +24 -0
- package/dist/stream/ws-delivery.d.ts.map +1 -0
- package/dist/stream/ws-delivery.js +103 -0
- package/dist/stream/ws-local-connection-store.d.ts +10 -0
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -0
- package/dist/stream/ws-local-connection-store.js +44 -0
- package/dist/stream/ws-presence-store.d.ts +61 -0
- package/dist/stream/ws-presence-store.d.ts.map +1 -0
- package/dist/stream/ws-presence-store.js +236 -0
- package/dist/stream/ws-registry.d.ts +42 -0
- package/dist/stream/ws-registry.d.ts.map +1 -0
- package/dist/stream/ws-registry.js +108 -0
- package/dist/stream/ws.d.ts +52 -0
- package/dist/stream/ws.d.ts.map +1 -0
- package/dist/stream/ws.js +397 -0
- package/dist/syncer/api-parser.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +72 -2
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +13 -12
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +7 -4
- package/dist/syncer/event-batcher.d.ts +27 -0
- package/dist/syncer/event-batcher.d.ts.map +1 -0
- package/dist/syncer/event-batcher.js +69 -0
- package/dist/syncer/file-patterns.d.ts +48 -26
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +71 -23
- package/dist/syncer/file-tracking.d.ts +13 -0
- package/dist/syncer/file-tracking.d.ts.map +1 -0
- package/dist/syncer/file-tracking.js +33 -0
- package/dist/syncer/index.js +2 -2
- package/dist/syncer/module-loader.d.ts +2 -11
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +3 -3
- package/dist/syncer/syncer-actions.d.ts +39 -6
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +125 -10
- package/dist/syncer/syncer.d.ts +33 -19
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +168 -168
- package/dist/syncer/watcher.d.ts +8 -0
- package/dist/syncer/watcher.d.ts.map +1 -0
- package/dist/syncer/watcher.js +105 -0
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +2 -1
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +36 -1
- package/dist/testing/bootstrap.d.ts.map +1 -1
- package/dist/testing/bootstrap.js +8 -1
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/data-explorer.js +5 -3
- package/dist/testing/fixture-manager.js +1 -1
- package/dist/types/types.d.ts +2 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +2 -2
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +4 -3
- package/dist/ui/cdd-service.js +1 -1
- package/dist/ui-web/assets/{index-C5KUjXm0.js → index-BmThfg-s.js} +39 -39
- package/dist/ui-web/assets/index-D4rYm-Xz.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.d.ts +27 -3
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +56 -6
- package/dist/utils/formatter.d.ts +7 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +95 -60
- package/dist/utils/fs-utils.d.ts +2 -0
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +10 -2
- package/dist/utils/process-utils.d.ts +6 -0
- package/dist/utils/process-utils.d.ts.map +1 -1
- package/dist/utils/process-utils.js +16 -3
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +2 -2
- package/package.json +7 -5
- package/src/ai/providers/rtzr/utils.ts +1 -1
- package/src/api/__tests__/sonamu.websocket.test.ts +64 -0
- package/src/api/__tests__/websocket-context.types.test.ts +58 -0
- package/src/api/config.ts +28 -2
- package/src/api/context.ts +21 -7
- package/src/api/decorators.ts +101 -1
- package/src/api/sonamu.ts +529 -127
- package/src/api/websocket-helpers.ts +122 -0
- package/src/bin/cli.ts +10 -2
- package/src/database/upsert-builder.ts +3 -3
- package/src/dict/sonamu-dictionary.ts +3 -3
- package/src/entity/entity.ts +1 -1
- package/src/index.ts +6 -0
- package/src/migration/code-generation.ts +6 -11
- package/src/shared/app.shared.ts.txt +312 -4
- package/src/shared/web.shared.ts.txt +340 -4
- package/src/stream/__tests__/ws-contracts.test.ts +381 -0
- package/src/stream/__tests__/ws.test.ts +449 -0
- package/src/stream/index.ts +6 -0
- package/src/stream/ws-audience-resolver.ts +35 -0
- package/src/stream/ws-audience.ts +62 -0
- package/src/stream/ws-cluster-bus.ts +32 -0
- package/src/stream/ws-core.ts +16 -0
- package/src/stream/ws-delivery.ts +138 -0
- package/src/stream/ws-local-connection-store.ts +44 -0
- package/src/stream/ws-presence-store.ts +326 -0
- package/src/stream/ws-registry.ts +138 -0
- package/src/stream/ws.ts +591 -0
- package/src/syncer/__tests__/api-parser.websocket-type-ref.test.ts +78 -0
- package/src/syncer/api-parser.ts +112 -1
- package/src/syncer/checksum.ts +23 -29
- package/src/syncer/code-generator.ts +4 -1
- package/src/syncer/event-batcher.ts +72 -0
- package/src/syncer/file-patterns.ts +98 -30
- package/src/syncer/file-tracking.ts +27 -0
- package/src/syncer/module-loader.ts +5 -12
- package/src/syncer/syncer-actions.ts +179 -17
- package/src/syncer/syncer.ts +250 -287
- package/src/syncer/watcher.ts +128 -0
- package/src/tasks/workflow-manager.ts +1 -0
- package/src/template/__tests__/services.template.websocket.test.ts +79 -0
- package/src/template/implementations/services.template.ts +69 -0
- package/src/testing/bootstrap.ts +8 -1
- package/src/testing/data-explorer.ts +3 -2
- package/src/types/types.ts +20 -2
- package/src/ui/api.ts +10 -1
- package/src/utils/async-utils.ts +71 -4
- package/src/utils/formatter.ts +114 -75
- package/src/utils/fs-utils.ts +9 -0
- package/src/utils/process-utils.ts +17 -0
- package/src/utils/utils.ts +1 -1
- package/dist/ui-web/assets/index-Dr8pRJC_.css +0 -1
|
@@ -1,39 +1,61 @@
|
|
|
1
|
-
import { type AbsolutePath, type
|
|
1
|
+
import { type AbsolutePath, type AppRelativePath } from "../utils/path-utils";
|
|
2
2
|
/**
|
|
3
3
|
* Syncer가 관심 가지고 지켜보는 파일들입니다.
|
|
4
4
|
* 이 파일들에 변경이 생기면 추가적인 작업(이하 "싱크" 또는 "싱크 액션")을 수행합니다.
|
|
5
5
|
* 이 작업이라 함은 파일 복사 또는 템플릿 렌더링을 통한 code generation을 의미합니다.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* 경로 형식: appRoot 기준 상대 경로 (target 디렉토리로 시작, 예: "api/src/...", "web/src/...")
|
|
8
|
+
* 사용: getChecksumPatternGroupInAbsolutePath()로 절대 경로 변환 후 glob 사용
|
|
9
|
+
*
|
|
10
|
+
* 두 가지 의미적 영역:
|
|
11
|
+
* - 입력 (사용자 작성): api 디렉토리에만 위치. 사용자가 직접 편집.
|
|
12
|
+
* - 출력 (sonamu 생성/복사): api 또는 target 디렉토리에 sonamu가 만들어내는 파일.
|
|
13
|
+
*
|
|
14
|
+
* 추적 밖 자산 (부트스트랩 phase에서 매번 보장):
|
|
15
|
+
* - sonamu.shared.ts: 사용자가 커스터마이즈하는 자산. IfNotExists로 1회 생성 후 손대지 않음.
|
|
16
|
+
* - entry-server.generated.tsx: 입력 의존 없는 정적 코드. 매번 overwrite generate.
|
|
17
|
+
*
|
|
18
|
+
* 위 둘은 sync()의 부트스트랩 phase에서 변경 검출 사이클과 무관하게 보장됩니다.
|
|
19
|
+
* 추적 사이클 안에서 할 액션이 없는 자산이라 패턴 그룹에 포함되지 않습니다.
|
|
20
|
+
*
|
|
21
|
+
* 위치 카테고리는 api/targets/anywhere 헬퍼로 명시적으로 표현합니다.
|
|
22
|
+
*
|
|
23
|
+
* FileType은 이 함수의 반환 타입에서 자동 추론됩니다. 키 추가 시 별도 enum/배열을
|
|
24
|
+
* 동기화할 필요 없이 여기 한 군데만 수정하면 됩니다.
|
|
9
25
|
*/
|
|
10
|
-
declare
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
26
|
+
export declare function getChecksumPatternGroup(): {
|
|
27
|
+
config: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
28
|
+
entity: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
29
|
+
frame: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
30
|
+
functions: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
31
|
+
model: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
32
|
+
types: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
33
|
+
workflow: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
34
|
+
i18n: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
35
|
+
generated: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
36
|
+
generatedCopied: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
37
|
+
httpGenerated: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
38
|
+
servicesGenerated: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
39
|
+
sdGenerated: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
40
|
+
typesCopied: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
41
|
+
functionsCopied: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
42
|
+
i18nCopied: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
21
43
|
};
|
|
22
|
-
export { checksumPatternGroup };
|
|
23
|
-
export type FileType = keyof typeof checksumPatternGroup;
|
|
24
|
-
export type GlobPattern<T extends ApiRelativePath | AbsolutePath> = Record<FileType, T>;
|
|
25
44
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
45
|
+
* FileType은 getChecksumPatternGroup의 반환 객체 키에서 자동 추론됩니다.
|
|
46
|
+
* 별도 배열/enum 동기화 불필요 — 패턴 그룹 함수가 진실의 단일 원천.
|
|
47
|
+
*/
|
|
48
|
+
export type FileType = keyof ReturnType<typeof getChecksumPatternGroup>;
|
|
49
|
+
export type GlobPattern<T extends AppRelativePath | AbsolutePath> = Record<FileType, T>;
|
|
50
|
+
/**
|
|
51
|
+
* 빌드 산출물 디렉토리는 alternation 글롭이 의도치 않게 휘말릴 수 있으므로 안전망으로 제외.
|
|
52
|
+
* Node 내장 fs.glob의 exclude 옵션과 함께 사용합니다.
|
|
53
|
+
*/
|
|
54
|
+
export declare const GLOB_EXCLUDE: string[];
|
|
55
|
+
/**
|
|
56
|
+
* appRoot 기준 상대 경로 패턴을 절대 경로 패턴으로 변환합니다.
|
|
31
57
|
*
|
|
32
58
|
* @returns 절대 경로 기반 Glob 패턴 맵
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* // 입력: { entity: "src/application/**\/*.entity.json" }
|
|
36
|
-
* // 출력: { entity: "/Users/.../api/src/application/**\/*.entity.json" }
|
|
37
59
|
*/
|
|
38
60
|
export declare function getChecksumPatternGroupInAbsolutePath(): GlobPattern<AbsolutePath>;
|
|
39
61
|
//# sourceMappingURL=file-patterns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-patterns.d.ts","sourceRoot":"","sources":["../../src/syncer/file-patterns.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE9E
|
|
1
|
+
{"version":3,"file":"file-patterns.d.ts","sourceRoot":"","sources":["../../src/syncer/file-patterns.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;EAsCtC;AAyBD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAExF;;;GAGG;AACH,eAAO,MAAM,YAAY,UAAsE,CAAC;AAEhG;;;;GAIG;AACH,wBAAgB,qCAAqC,IAAI,WAAW,CAAC,YAAY,CAAC,CAQjF"}
|
|
@@ -4,39 +4,87 @@ import path from "path";
|
|
|
4
4
|
|
|
5
5
|
//#region src/syncer/file-patterns.ts
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Syncer가 관심 가지고 지켜보는 파일들입니다.
|
|
8
|
+
* 이 파일들에 변경이 생기면 추가적인 작업(이하 "싱크" 또는 "싱크 액션")을 수행합니다.
|
|
9
|
+
* 이 작업이라 함은 파일 복사 또는 템플릿 렌더링을 통한 code generation을 의미합니다.
|
|
8
10
|
*
|
|
9
|
-
*
|
|
11
|
+
* 경로 형식: appRoot 기준 상대 경로 (target 디렉토리로 시작, 예: "api/src/...", "web/src/...")
|
|
12
|
+
* 사용: getChecksumPatternGroupInAbsolutePath()로 절대 경로 변환 후 glob 사용
|
|
10
13
|
*
|
|
11
|
-
*
|
|
14
|
+
* 두 가지 의미적 영역:
|
|
15
|
+
* - 입력 (사용자 작성): api 디렉토리에만 위치. 사용자가 직접 편집.
|
|
16
|
+
* - 출력 (sonamu 생성/복사): api 또는 target 디렉토리에 sonamu가 만들어내는 파일.
|
|
12
17
|
*
|
|
13
|
-
*
|
|
18
|
+
* 추적 밖 자산 (부트스트랩 phase에서 매번 보장):
|
|
19
|
+
* - sonamu.shared.ts: 사용자가 커스터마이즈하는 자산. IfNotExists로 1회 생성 후 손대지 않음.
|
|
20
|
+
* - entry-server.generated.tsx: 입력 의존 없는 정적 코드. 매번 overwrite generate.
|
|
21
|
+
*
|
|
22
|
+
* 위 둘은 sync()의 부트스트랩 phase에서 변경 검출 사이클과 무관하게 보장됩니다.
|
|
23
|
+
* 추적 사이클 안에서 할 액션이 없는 자산이라 패턴 그룹에 포함되지 않습니다.
|
|
24
|
+
*
|
|
25
|
+
* 위치 카테고리는 api/targets/anywhere 헬퍼로 명시적으로 표현합니다.
|
|
26
|
+
*
|
|
27
|
+
* FileType은 이 함수의 반환 타입에서 자동 추론됩니다. 키 추가 시 별도 enum/배열을
|
|
28
|
+
* 동기화할 필요 없이 여기 한 군데만 수정하면 됩니다.
|
|
29
|
+
*/
|
|
30
|
+
function getChecksumPatternGroup() {
|
|
31
|
+
const { api, targets, anywhere } = globBuilders();
|
|
32
|
+
return {
|
|
33
|
+
config: api("src/sonamu.config.ts"),
|
|
34
|
+
entity: api("src/application/**/*.entity.json"),
|
|
35
|
+
frame: api("src/application/**/*.frame.ts"),
|
|
36
|
+
functions: api("src/application/**/*.functions.ts"),
|
|
37
|
+
model: api("src/application/**/*.model.ts"),
|
|
38
|
+
types: api("src/application/**/*.types.ts"),
|
|
39
|
+
workflow: api("src/application/**/*.workflow.ts"),
|
|
40
|
+
i18n: api("src/i18n/**/!(sd.generated).ts"),
|
|
41
|
+
generated: api("src/application/**/*.generated.{ts,tsx,sso.ts}"),
|
|
42
|
+
generatedCopied: targets("src/services/**/{sonamu,queries}.generated.{ts,tsx,sso.ts}"),
|
|
43
|
+
httpGenerated: api("src/application/**/*.generated.http"),
|
|
44
|
+
servicesGenerated: targets("src/services/services.generated.ts"),
|
|
45
|
+
sdGenerated: anywhere("src/i18n/**/sd.generated.ts"),
|
|
46
|
+
typesCopied: targets("src/services/**/*.types.ts"),
|
|
47
|
+
functionsCopied: targets("src/services/**/*.functions.ts"),
|
|
48
|
+
i18nCopied: targets("src/i18n/**/!(sd.generated).ts")
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 위치 카테고리별 글롭 빌더를 만들어 반환합니다.
|
|
53
|
+
* - api(rest): api 디렉토리에 한정
|
|
54
|
+
* - targets(rest): target 디렉토리들에 한정 (web, app 등)
|
|
55
|
+
* - anywhere(rest): api와 target 모두
|
|
56
|
+
*/
|
|
57
|
+
function globBuilders() {
|
|
58
|
+
const apiDir = Sonamu.config.api.dir;
|
|
59
|
+
const targetDirs = Sonamu.config.sync.targets;
|
|
60
|
+
const braceJoin = (dirs) => dirs.length === 1 ? dirs[0] : `{${dirs.join(",")}}`;
|
|
61
|
+
return {
|
|
62
|
+
api: (pathFromApi) => `${apiDir}/${pathFromApi}`,
|
|
63
|
+
targets: (pathFromTarget) => `${braceJoin(targetDirs)}/${pathFromTarget}`,
|
|
64
|
+
anywhere: (pathFromAnywhere) => `${braceJoin([apiDir, ...targetDirs])}/${pathFromAnywhere}`
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* appRoot 기준 상대 경로 패턴을 절대 경로 패턴으로 변환합니다.
|
|
14
69
|
*
|
|
15
|
-
* @
|
|
16
|
-
* // 입력: { entity: "src/application/**\/*.entity.json" }
|
|
17
|
-
* // 출력: { entity: "/Users/.../api/src/application/**\/*.entity.json" }
|
|
70
|
+
* @returns 절대 경로 기반 Glob 패턴 맵
|
|
18
71
|
*/
|
|
19
72
|
function getChecksumPatternGroupInAbsolutePath() {
|
|
20
|
-
|
|
73
|
+
const group = getChecksumPatternGroup();
|
|
74
|
+
return Object.fromEntries(Object.entries(group).map(([key, value]) => [key, path.join(Sonamu.appRootPath, value)]));
|
|
21
75
|
}
|
|
22
|
-
var
|
|
76
|
+
var GLOB_EXCLUDE;
|
|
23
77
|
var init_file_patterns = __esmMin((() => {
|
|
24
78
|
init_sonamu();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
model: "src/application/**/*.model.ts",
|
|
32
|
-
types: "src/application/**/*.types.ts",
|
|
33
|
-
workflow: "src/application/**/*.workflow.ts",
|
|
34
|
-
i18n: "src/i18n/**/!(sd.generated).ts",
|
|
35
|
-
i18nGenerated: "src/i18n/**/sd.generated.ts"
|
|
36
|
-
};
|
|
79
|
+
GLOB_EXCLUDE = [
|
|
80
|
+
"**/node_modules/**",
|
|
81
|
+
"**/dist/**",
|
|
82
|
+
"**/build/**",
|
|
83
|
+
"**/.turbo/**"
|
|
84
|
+
];
|
|
37
85
|
}));
|
|
38
86
|
|
|
39
87
|
//#endregion
|
|
40
88
|
init_file_patterns();
|
|
41
|
-
export {
|
|
42
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYXR0ZXJucy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtcGF0dGVybnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoLCB0eXBlIEFwaVJlbGF0aXZlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbi8qKlxuICogU3luY2Vy6rCAIOq0gOyLrCDqsIDsp4Dqs6Ag7KeA7Lyc67O064qUIO2MjOydvOuTpOyeheuLiOuLpC5cbiAqIOydtCDtjIzsnbzrk6Tsl5Ag67OA6rK97J20IOyDneq4sOuptCDstpTqsIDsoIHsnbgg7J6R7JeFKOydtO2VmCBcIuyLse2BrFwiIOuYkOuKlCBcIuyLse2BrCDslaHshZhcIinsnYQg7IiY7ZaJ7ZWp64uI64ukLlxuICog7J20IOyekeyXheydtOudvCDtlajsnYAg7YyM7J28IOuzteyCrCDrmJDripQg7YWc7ZSM66a/IOugjOuNlOungeydhCDthrXtlZwgY29kZSBnZW5lcmF0aW9u7J2EIOydmOuvuO2VqeuLiOuLpC5cbiAqXG4gKiAqKuqyveuhnCDtmJXsi50qKjogQVBJIOyDgeuMgCDqsr3roZwgKHNyYy/roZwg7Iuc7J6RKVxuICogKirsgqzsmqkqKjogZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgp66GcIOygiOuMgCDqsr3roZwg67OA7ZmYIO2bhCBnbG9iIOyCrOyaqVxuICovXG5jb25zdCBjaGVja3N1bVBhdHRlcm5Hcm91cCA9IHtcbiAgY29uZmlnOiBcInNyYy9zb25hbXUuY29uZmlnLnRzXCIsXG4gIGVudGl0eTogXCJzcmMvYXBwbGljYXRpb24vKiovKi5lbnRpdHkuanNvblwiLFxuICBmcmFtZTogXCJzcmMvYXBwbGljYXRpb24vKiovKi5mcmFtZS50c1wiLFxuICBmdW5jdGlvbnM6IFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZnVuY3Rpb25zLnRzXCIsXG4gIGdlbmVyYXRlZDogXCJzcmMvYXBwbGljYXRpb24vc29uYW11LmdlbmVyYXRlZC50c1wiLFxuICBtb2RlbDogXCJzcmMvYXBwbGljYXRpb24vKiovKi5tb2RlbC50c1wiLFxuICB0eXBlczogXCJzcmMvYXBwbGljYXRpb24vKiovKi50eXBlcy50c1wiLFxuICB3b3JrZmxvdzogXCJzcmMvYXBwbGljYXRpb24vKiovKi53b3JrZmxvdy50c1wiLFxuICBpMThuOiBcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiLFxuICBpMThuR2VuZXJhdGVkOiBcInNyYy9pMThuLyoqL3NkLmdlbmVyYXRlZC50c1wiLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgQXBpUmVsYXRpdmVQYXRoPjtcblxuZXhwb3J0IHsgY2hlY2tzdW1QYXR0ZXJuR3JvdXAgfTtcbmV4cG9ydCB0eXBlIEZpbGVUeXBlID0ga2V5b2YgdHlwZW9mIGNoZWNrc3VtUGF0dGVybkdyb3VwO1xuZXhwb3J0IHR5cGUgR2xvYlBhdHRlcm48VCBleHRlbmRzIEFwaVJlbGF0aXZlUGF0aCB8IEFic29sdXRlUGF0aD4gPSBSZWNvcmQ8RmlsZVR5cGUsIFQ+O1xuXG4vKipcbiAqIEFQSSDsg4HrjIAg6rK966GcIO2MqO2EtOydhCDsoIjrjIAg6rK966GcIO2MqO2EtOycvOuhnCDrs4DtmZjtlanri4jri6QuXG4gKlxuICogKirrqqnsoIEqKjogR2xvYiDtjKjthLTsnYQg7YyM7J287Iuc7Iqk7YWc7JeQ7IScIOyCrOyaqe2VoCDsiJgg7J6I64qUIOygiOuMgCDqsr3roZzroZwg67OA7ZmYXG4gKlxuICogKirsgqzsmqnsspgqKjogY2hlY2tzdW0udHPsl5DshJwg7Iuk7KCcIO2MjOydvOydhCDssL7snYQg65WMXG4gKlxuICogQHJldHVybnMg7KCI64yAIOqyveuhnCDquLDrsJggR2xvYiDtjKjthLQg66e1XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIOyeheugpTogeyBlbnRpdHk6IFwic3JjL2FwcGxpY2F0aW9uLyoqXFwvKi5lbnRpdHkuanNvblwiIH1cbiAqIC8vIOy2nOugpTogeyBlbnRpdHk6IFwiL1VzZXJzLy4uLi9hcGkvc3JjL2FwcGxpY2F0aW9uLyoqXFwvKi5lbnRpdHkuanNvblwiIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKTogR2xvYlBhdHRlcm48QWJzb2x1dGVQYXRoPiB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMoY2hlY2tzdW1QYXR0ZXJuR3JvdXApLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbXG4gICAgICBrZXksXG4gICAgICBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCB2YWx1ZSksIC8vIEFQSSDsg4HrjIAg6rK966GcIOKGkiDsoIjrjIAg6rK966GcXG4gICAgXSksXG4gICkgYXMgR2xvYlBhdHRlcm48QWJzb2x1dGVQYXRoPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkNBLFNBQWdCLHdDQUFtRTtBQUNqRixRQUFPLE9BQU8sWUFDWixPQUFPLFFBQVEscUJBQXFCLENBQUMsS0FBSyxDQUFDLEtBQUssV0FBVyxDQUN6RCxLQUNBLEtBQUssS0FBSyxPQUFPLGFBQWEsTUFBTSxDQUNyQyxDQUFDLENBQ0g7Ozs7Y0EvQ29DO0NBV2pDLHVCQUF1QjtFQUMzQixRQUFRO0VBQ1IsUUFBUTtFQUNSLE9BQU87RUFDUCxXQUFXO0VBQ1gsV0FBVztFQUNYLE9BQU87RUFDUCxPQUFPO0VBQ1AsVUFBVTtFQUNWLE1BQU07RUFDTixlQUFlO0VBQ2hCIn0=
|
|
89
|
+
export { GLOB_EXCLUDE, getChecksumPatternGroup, getChecksumPatternGroupInAbsolutePath, init_file_patterns };
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYXR0ZXJucy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtcGF0dGVybnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoLCB0eXBlIEFwcFJlbGF0aXZlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbi8qKlxuICogU3luY2Vy6rCAIOq0gOyLrCDqsIDsp4Dqs6Ag7KeA7Lyc67O064qUIO2MjOydvOuTpOyeheuLiOuLpC5cbiAqIOydtCDtjIzsnbzrk6Tsl5Ag67OA6rK97J20IOyDneq4sOuptCDstpTqsIDsoIHsnbgg7J6R7JeFKOydtO2VmCBcIuyLse2BrFwiIOuYkOuKlCBcIuyLse2BrCDslaHshZhcIinsnYQg7IiY7ZaJ7ZWp64uI64ukLlxuICog7J20IOyekeyXheydtOudvCDtlajsnYAg7YyM7J28IOuzteyCrCDrmJDripQg7YWc7ZSM66a/IOugjOuNlOungeydhCDthrXtlZwgY29kZSBnZW5lcmF0aW9u7J2EIOydmOuvuO2VqeuLiOuLpC5cbiAqXG4gKiDqsr3roZwg7ZiV7IudOiBhcHBSb290IOq4sOykgCDsg4HrjIAg6rK966GcICh0YXJnZXQg65SU66CJ7Yag66as66GcIOyLnOyekSwg7JiIOiBcImFwaS9zcmMvLi4uXCIsIFwid2ViL3NyYy8uLi5cIilcbiAqIOyCrOyaqTogZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgp66GcIOygiOuMgCDqsr3roZwg67OA7ZmYIO2bhCBnbG9iIOyCrOyaqVxuICpcbiAqIOuRkCDqsIDsp4Ag7J2Y66+47KCBIOyYgeyXrTpcbiAqIC0g7J6F66ClICjsgqzsmqnsnpAg7J6R7ISxKTogYXBpIOuUlOugie2GoOumrOyXkOunjCDsnITsuZguIOyCrOyaqeyekOqwgCDsp4HsoJEg7Y647KeRLlxuICogLSDstpzroKUgKHNvbmFtdSDsg53shLEv67O17IKsKTogYXBpIOuYkOuKlCB0YXJnZXQg65SU66CJ7Yag66as7JeQIHNvbmFtdeqwgCDrp4zrk6TslrTrgrTripQg7YyM7J28LlxuICpcbiAqIOy2lOyggSDrsJYg7J6Q7IKwICjrtoDtirjsiqTtirjrnqkgcGhhc2Xsl5DshJwg66ek67KIIOuztOyepSk6XG4gKiAtIHNvbmFtdS5zaGFyZWQudHM6IOyCrOyaqeyekOqwgCDsu6TsiqTthLDrp4jsnbTspojtlZjripQg7J6Q7IKwLiBJZk5vdEV4aXN0c+uhnCAx7ZqMIOyDneyEsSDtm4Qg7IaQ64yA7KeAIOyViuydjC5cbiAqIC0gZW50cnktc2VydmVyLmdlbmVyYXRlZC50c3g6IOyeheugpSDsnZjsobQg7JeG64qUIOygleyggSDsvZTrk5wuIOunpOuyiCBvdmVyd3JpdGUgZ2VuZXJhdGUuXG4gKlxuICog7JyEIOuRmOydgCBzeW5jKCnsnZgg67aA7Yq47Iqk7Yq4656pIHBoYXNl7JeQ7IScIOuzgOqyvSDqsoDstpwg7IKs7J207YG06rO8IOustOq0gO2VmOqyjCDrs7TsnqXrkKnri4jri6QuXG4gKiDstpTsoIEg7IKs7J207YG0IOyViOyXkOyEnCDtlaAg7JWh7IWY7J20IOyXhuuKlCDsnpDsgrDsnbTrnbwg7Yyo7YS0IOq3uOujueyXkCDtj6ztlajrkJjsp4Ag7JWK7Iq164uI64ukLlxuICpcbiAqIOychOy5mCDsubTthYzqs6DrpqzripQgYXBpL3RhcmdldHMvYW55d2hlcmUg7Zes7Y2866GcIOuqheyLnOyggeycvOuhnCDtkZztmITtlanri4jri6QuXG4gKlxuICogRmlsZVR5cGXsnYAg7J20IO2VqOyImOydmCDrsJjtmZgg7YOA7J6F7JeQ7IScIOyekOuPmSDstpTroaDrkKnri4jri6QuIO2CpCDstpTqsIAg7IucIOuzhOuPhCBlbnVtL+uwsOyXtOydhFxuICog64+Z6riw7ZmU7ZWgIO2VhOyalCDsl4bsnbQg7Jes6riwIO2VnCDqtbDrjbDrp4wg7IiY7KCV7ZWY66m0IOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwKCkge1xuICAvLyDtl6ztjbwg7ZWo7IiY65OkIOunjOuTpOyWtOyEnCDqsIDsoLjsmLXri4jri6QuXG4gIGNvbnN0IHsgYXBpLCB0YXJnZXRzLCBhbnl3aGVyZSB9ID0gZ2xvYkJ1aWxkZXJzKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTb25hbXUg7J6F7J6l7JeQ7IScIHNvcnVjZeqwgCDrkJjripQg7YyM7J2865Ok7J6F64uI64ukLlxuICAgIC8vIOydtCDsuZzqtazrk6TsnbQg67OA6rK965CY66m0IOydtOuTpOuhnOu2gO2EsCDslaHshZjsnYQg7IiY7ZaJ7ZWY6rOgIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gICAgLy8g66qo64W466as7Y+s7JeQ7IScIOydtCBzb3VyY2Xrk6TsnYAgYXBpIO2UhOuhnOygne2KuOyXkCDtlZzsoJXrkJjrr4DroZwsIGFwaeyXkCDsnojripQg7Lmc6rWs65Ok66eMIOumrOyKpO2Mhe2VqeuLiOuLpC5cbiAgICBjb25maWc6IGFwaShcInNyYy9zb25hbXUuY29uZmlnLnRzXCIpLFxuICAgIGVudGl0eTogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIiksXG4gICAgZnJhbWU6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmZyYW1lLnRzXCIpLFxuICAgIGZ1bmN0aW9uczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZnVuY3Rpb25zLnRzXCIpLFxuICAgIG1vZGVsOiBhcGkoXCJzcmMvYXBwbGljYXRpb24vKiovKi5tb2RlbC50c1wiKSxcbiAgICB0eXBlczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIiksXG4gICAgd29ya2Zsb3c6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLndvcmtmbG93LnRzXCIpLFxuICAgIGkxOG46IGFwaShcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiKSxcblxuICAgIC8vIFNvbmFtdeqwgCDstpzroKXtlZjripQg7IOd7ISxIO2MjOydvOuTpOyeheuLiOuLpC5cbiAgICAvLyDsnbQg7Lmc6rWs65Ok64+EIOygle2VqeyEsSDqsoDspp0g7LCo7JuQ7JeQ7IScIHNvbmFtdS5sb2Nr7JeQIOq4sOuhne2VtOyVvCDtlZjqs6AsXG4gICAgLy8g65iQ7ZWcIOuzgOqyveyLnCDqt7gg7IKs7Iuk7J2EIHN5bmNlcuqwgCDslYzquLDripQg7ZW07JW8IO2VqeuLiOuLpCjruYTroZ0g67OE64uk66W4IOyymOumrOqwgCDsl4bripQg6rK97Jqw64+EIOyeiOyngOunjCkuXG4gICAgLy9cbiAgICAvLyDsnpDsgrAg67O47ISx7JeQIOuUsOudvCDsnITsuZgg7Lm07YWM6rOg66as6rCAIOuLpOultOq4sCDrlYzrrLjsl5AsIOuzuOyEseuzhOuhnCDrtoTrpqztlbTshJwg7ZGc6riw7ZWp64uI64ukLlxuICAgIC8vIC0g7JaR7Kq9Le2VhOyalCDsnpDsgrA6IGFwaeyXkCDsoJXrs7jsnbQg66eM65Ok7Ja07KeEIOuSpCB0YXJnZXTsl5Ag67O17IKs65CoIChzb25hbXUuZ2VuZXJhdGVkLiosIHF1ZXJpZXMuZ2VuZXJhdGVkLnRzKS5cbiAgICAvLyAtIGFwaSDsoITsmqkg7J6Q7IKwOiBhcGnsl5Drp4wg66eM65Ok7Ja07KeQIChzb25hbXUuZ2VuZXJhdGVkLmh0dHApLlxuICAgIC8vIC0gdGFyZ2V0IOyghOyaqSDsnpDsgrA6IHRhcmdldOyXkOunjCDrp4zrk6TslrTsp5AgKHNlcnZpY2VzLmdlbmVyYXRlZC50c+uKlCBzZXJ2aWNlcy50ZW1wbGF0ZeydmCA6dGFyZ2V0IOu2hOuwsCkuXG4gICAgLy9cbiAgICAvLyDsl6zquLDsl5DripQgU29uYW117J2YIOuqqOuToCBzeW5jIOyCsOy2nOusvOydtCDsnojripQg6rKD7J2AIOyVhOuLmeuLiOuLpC5cbiAgICAvLyBzb25hbXUuc2hhcmVkLnRz7JmAIGVudHJ5LXNlcnZlci5nZW5lcmF0ZWQudHN47JmAIOqwmeydgFxuICAgIC8vIHN5bmMg7LSI67CYIDHtmozshLEg67aA7Yq47Iqk7Yq4656pIO2MjOydvOuTpOydgCDqtIDrpqwg7JWIIO2VmOq4sCDrlYzrrLjsl5Ag7Jes6riw7JeQIOumrOyKpO2MheuPhCDslYgg7ZWp64uI64ukLlxuICAgIGdlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLnt0cyx0c3gsc3NvLnRzfVwiKSxcbiAgICBnZW5lcmF0ZWRDb3BpZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvKiove3NvbmFtdSxxdWVyaWVzfS5nZW5lcmF0ZWQue3RzLHRzeCxzc28udHN9XCIpLFxuICAgIGh0dHBHZW5lcmF0ZWQ6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmdlbmVyYXRlZC5odHRwXCIpLFxuICAgIHNlcnZpY2VzR2VuZXJhdGVkOiB0YXJnZXRzKFwic3JjL3NlcnZpY2VzL3NlcnZpY2VzLmdlbmVyYXRlZC50c1wiKSxcbiAgICBzZEdlbmVyYXRlZDogYW55d2hlcmUoXCJzcmMvaTE4bi8qKi9zZC5nZW5lcmF0ZWQudHNcIiksXG4gICAgdHlwZXNDb3BpZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvKiovKi50eXBlcy50c1wiKSxcbiAgICBmdW5jdGlvbnNDb3BpZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvKiovKi5mdW5jdGlvbnMudHNcIiksXG4gICAgaTE4bkNvcGllZDogdGFyZ2V0cyhcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiKSxcbiAgfSBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgQXBwUmVsYXRpdmVQYXRoPjtcbn1cblxuLyoqXG4gKiDsnITsuZgg7Lm07YWM6rOg66as67OEIOq4gOuhrSDruYzrjZTrpbwg66eM65Ok7Ja0IOuwmO2ZmO2VqeuLiOuLpC5cbiAqIC0gYXBpKHJlc3QpOiBhcGkg65SU66CJ7Yag66as7JeQIO2VnOyglVxuICogLSB0YXJnZXRzKHJlc3QpOiB0YXJnZXQg65SU66CJ7Yag66as65Ok7JeQIO2VnOyglSAod2ViLCBhcHAg65OxKVxuICogLSBhbnl3aGVyZShyZXN0KTogYXBp7JmAIHRhcmdldCDrqqjrkZBcbiAqL1xuZnVuY3Rpb24gZ2xvYkJ1aWxkZXJzKCkge1xuICBjb25zdCBhcGlEaXIgPSBTb25hbXUuY29uZmlnLmFwaS5kaXI7XG4gIGNvbnN0IHRhcmdldERpcnMgPSBTb25hbXUuY29uZmlnLnN5bmMudGFyZ2V0cztcblxuICAvLyBOb2RlIOuCtOyepSBmcy5nbG9i7J2YIGJyYWNlIGV4cGFuc2lvbuydgCDri6jsnbwg66mk67KEIHt4feulvCDtkoDsp4Ag7JWK7Jy866+A66GcLCDrqaTrsoTqsIAgMeqwnOydvCDrlYzripQgYWx0ZXJuYXRpb24g7JeG7J20IOyngeygkSDqsrDtlantlanri4jri6QuXG4gIGNvbnN0IGJyYWNlSm9pbiA9IChkaXJzOiByZWFkb25seSBzdHJpbmdbXSkgPT5cbiAgICBkaXJzLmxlbmd0aCA9PT0gMSA/IGRpcnNbMF0gOiBgeyR7ZGlycy5qb2luKFwiLFwiKX19YDtcblxuICByZXR1cm4ge1xuICAgIGFwaTogKHBhdGhGcm9tQXBpOiBzdHJpbmcpID0+IGAke2FwaURpcn0vJHtwYXRoRnJvbUFwaX1gIGFzIEFwcFJlbGF0aXZlUGF0aCxcbiAgICB0YXJnZXRzOiAocGF0aEZyb21UYXJnZXQ6IHN0cmluZykgPT5cbiAgICAgIGAke2JyYWNlSm9pbih0YXJnZXREaXJzKX0vJHtwYXRoRnJvbVRhcmdldH1gIGFzIEFwcFJlbGF0aXZlUGF0aCxcbiAgICBhbnl3aGVyZTogKHBhdGhGcm9tQW55d2hlcmU6IHN0cmluZykgPT5cbiAgICAgIGAke2JyYWNlSm9pbihbYXBpRGlyLCAuLi50YXJnZXREaXJzXSl9LyR7cGF0aEZyb21Bbnl3aGVyZX1gIGFzIEFwcFJlbGF0aXZlUGF0aCxcbiAgfTtcbn1cblxuLyoqXG4gKiBGaWxlVHlwZeydgCBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cOydmCDrsJjtmZgg6rCd7LK0IO2CpOyXkOyEnCDsnpDrj5kg7LaU66Gg65Cp64uI64ukLlxuICog67OE64+EIOuwsOyXtC9lbnVtIOuPmeq4sO2ZlCDrtojtlYTsmpQg4oCUIO2MqO2EtCDqt7jro7kg7ZWo7IiY6rCAIOynhOyLpOydmCDri6jsnbwg7JuQ7LKcLlxuICovXG5leHBvcnQgdHlwZSBGaWxlVHlwZSA9IGtleW9mIFJldHVyblR5cGU8dHlwZW9mIGdldENoZWNrc3VtUGF0dGVybkdyb3VwPjtcbmV4cG9ydCB0eXBlIEdsb2JQYXR0ZXJuPFQgZXh0ZW5kcyBBcHBSZWxhdGl2ZVBhdGggfCBBYnNvbHV0ZVBhdGg+ID0gUmVjb3JkPEZpbGVUeXBlLCBUPjtcblxuLyoqXG4gKiDruYzrk5wg7IKw7Lac66y8IOuUlOugie2GoOumrOuKlCBhbHRlcm5hdGlvbiDquIDroa3snbQg7J2Y64+E7LmYIOyViuqyjCDtnJjrp5DrprQg7IiYIOyeiOycvOuvgOuhnCDslYjsoITrp53snLzroZwg7KCc7Jm4LlxuICogTm9kZSDrgrTsnqUgZnMuZ2xvYuydmCBleGNsdWRlIOyYteyFmOqzvCDtlajqu5gg7IKs7Jqp7ZWp64uI64ukLlxuICovXG5leHBvcnQgY29uc3QgR0xPQl9FWENMVURFID0gW1wiKiovbm9kZV9tb2R1bGVzLyoqXCIsIFwiKiovZGlzdC8qKlwiLCBcIioqL2J1aWxkLyoqXCIsIFwiKiovLnR1cmJvLyoqXCJdO1xuXG4vKipcbiAqIGFwcFJvb3Qg6riw7KSAIOyDgeuMgCDqsr3roZwg7Yyo7YS07J2EIOygiOuMgCDqsr3roZwg7Yyo7YS07Jy866GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAcmV0dXJucyDsoIjrjIAg6rK966GcIOq4sOuwmCBHbG9iIO2MqO2EtCDrp7VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKTogR2xvYlBhdHRlcm48QWJzb2x1dGVQYXRoPiB7XG4gIGNvbnN0IGdyb3VwID0gZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXAoKTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhncm91cCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtcbiAgICAgIGtleSxcbiAgICAgIHBhdGguam9pbihTb25hbXUuYXBwUm9vdFBhdGgsIHZhbHVlKSwgLy8gYXBwUm9vdCDsg4HrjIAg6rK966GcIOKGkiDsoIjrjIAg6rK966GcXG4gICAgXSksXG4gICkgYXMgR2xvYlBhdHRlcm48QWJzb2x1dGVQYXRoPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkEsU0FBZ0IsMEJBQTBCO0NBRXhDLE1BQU0sRUFBRSxLQUFLLFNBQVMsYUFBYSxjQUFjO0FBRWpELFFBQU87RUFJTCxRQUFRLElBQUksdUJBQXVCO0VBQ25DLFFBQVEsSUFBSSxtQ0FBbUM7RUFDL0MsT0FBTyxJQUFJLGdDQUFnQztFQUMzQyxXQUFXLElBQUksb0NBQW9DO0VBQ25ELE9BQU8sSUFBSSxnQ0FBZ0M7RUFDM0MsT0FBTyxJQUFJLGdDQUFnQztFQUMzQyxVQUFVLElBQUksbUNBQW1DO0VBQ2pELE1BQU0sSUFBSSxpQ0FBaUM7RUFjM0MsV0FBVyxJQUFJLGlEQUFpRDtFQUNoRSxpQkFBaUIsUUFBUSw2REFBNkQ7RUFDdEYsZUFBZSxJQUFJLHNDQUFzQztFQUN6RCxtQkFBbUIsUUFBUSxxQ0FBcUM7RUFDaEUsYUFBYSxTQUFTLDhCQUE4QjtFQUNwRCxhQUFhLFFBQVEsNkJBQTZCO0VBQ2xELGlCQUFpQixRQUFRLGlDQUFpQztFQUMxRCxZQUFZLFFBQVEsaUNBQWlDO0VBQ3REOzs7Ozs7OztBQVNILFNBQVMsZUFBZTtDQUN0QixNQUFNLFNBQVMsT0FBTyxPQUFPLElBQUk7Q0FDakMsTUFBTSxhQUFhLE9BQU8sT0FBTyxLQUFLO0NBR3RDLE1BQU0sYUFBYSxTQUNqQixLQUFLLFdBQVcsSUFBSSxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBRW5ELFFBQU87RUFDTCxNQUFNLGdCQUF3QixHQUFHLE9BQU8sR0FBRztFQUMzQyxVQUFVLG1CQUNSLEdBQUcsVUFBVSxXQUFXLENBQUMsR0FBRztFQUM5QixXQUFXLHFCQUNULEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxHQUFHO0VBQzVDOzs7Ozs7O0FBcUJILFNBQWdCLHdDQUFtRTtDQUNqRixNQUFNLFFBQVEseUJBQXlCO0FBQ3ZDLFFBQU8sT0FBTyxZQUNaLE9BQU8sUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssV0FBVyxDQUMxQyxLQUNBLEtBQUssS0FBSyxPQUFPLGFBQWEsTUFBTSxDQUNyQyxDQUFDLENBQ0g7Ozs7Y0FuSG9DO0NBcUcxQixlQUFlO0VBQUM7RUFBc0I7RUFBYztFQUFlO0VBQWUifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type AbsolutePath } from "../utils/path-utils";
|
|
2
|
+
export declare const fileWrittenAt: Map<`/${string}`, number>;
|
|
3
|
+
/**
|
|
4
|
+
* 우리가 디스크에 write한 path를 등록합니다. write 직후 호출하세요.
|
|
5
|
+
* 디스크에서 mtime을 직접 읽어 정확한 값으로 등록합니다.
|
|
6
|
+
*/
|
|
7
|
+
export declare function trackWritten(filePath: AbsolutePath): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* 주어진 path가 가장 최근 우리 write 이후로 외부에서 수정된 적 없는지 확인합니다.
|
|
10
|
+
* true면 "내가 쓴 그대로 남아있음", false면 "외부에서 수정됐거나 우리가 쓴 적 없음".
|
|
11
|
+
*/
|
|
12
|
+
export declare function isLastChangedByMe(filePath: AbsolutePath): Promise<boolean>;
|
|
13
|
+
//# sourceMappingURL=file-tracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-tracking.d.ts","sourceRoot":"","sources":["../../src/syncer/file-tracking.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,aAAa,2BAAkC,CAAC;AAE7D;;;GAGG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { __esmMin } from "../_virtual/rolldown_runtime.js";
|
|
2
|
+
import { stat } from "fs/promises";
|
|
3
|
+
|
|
4
|
+
//#region src/syncer/file-tracking.ts
|
|
5
|
+
/**
|
|
6
|
+
* 우리가 디스크에 write한 path를 등록합니다. write 직후 호출하세요.
|
|
7
|
+
* 디스크에서 mtime을 직접 읽어 정확한 값으로 등록합니다.
|
|
8
|
+
*/
|
|
9
|
+
async function trackWritten(filePath) {
|
|
10
|
+
const fileStat = await stat(filePath);
|
|
11
|
+
fileWrittenAt.set(filePath, fileStat.mtimeMs);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 주어진 path가 가장 최근 우리 write 이후로 외부에서 수정된 적 없는지 확인합니다.
|
|
15
|
+
* true면 "내가 쓴 그대로 남아있음", false면 "외부에서 수정됐거나 우리가 쓴 적 없음".
|
|
16
|
+
*/
|
|
17
|
+
async function isLastChangedByMe(filePath) {
|
|
18
|
+
const registered = fileWrittenAt.get(filePath);
|
|
19
|
+
if (registered === undefined) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
const fileStat = await stat(filePath);
|
|
23
|
+
return fileStat.mtimeMs <= registered;
|
|
24
|
+
}
|
|
25
|
+
var fileWrittenAt;
|
|
26
|
+
var init_file_tracking = __esmMin((() => {
|
|
27
|
+
fileWrittenAt = new Map();
|
|
28
|
+
}));
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
init_file_tracking();
|
|
32
|
+
export { fileWrittenAt, init_file_tracking, isLastChangedByMe, trackWritten };
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10cmFja2luZy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtdHJhY2tpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RhdCB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuXG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBmaWxlV3JpdHRlbkF0ID0gbmV3IE1hcDxBYnNvbHV0ZVBhdGgsIG51bWJlcj4oKTtcblxuLyoqXG4gKiDsmrDrpqzqsIAg65SU7Iqk7YGs7JeQIHdyaXRl7ZWcIHBhdGjrpbwg65Ox66Gd7ZWp64uI64ukLiB3cml0ZSDsp4Htm4Qg7Zi47Lac7ZWY7IS47JqULlxuICog65SU7Iqk7YGs7JeQ7IScIG10aW1l7J2EIOyngeygkSDsnb3slrQg7KCV7ZmV7ZWcIOqwkuycvOuhnCDrk7HroZ3tlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFja1dyaXR0ZW4oZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlU3RhdCA9IGF3YWl0IHN0YXQoZmlsZVBhdGgpO1xuICBmaWxlV3JpdHRlbkF0LnNldChmaWxlUGF0aCwgZmlsZVN0YXQubXRpbWVNcyk7XG59XG5cbi8qKlxuICog7KO87Ja07KeEIHBhdGjqsIAg6rCA7J6lIOy1nOq3vCDsmrDrpqwgd3JpdGUg7J207ZuE66GcIOyZuOu2gOyXkOyEnCDsiJjsoJXrkJwg7KCBIOyXhuuKlOyngCDtmZXsnbjtlanri4jri6QuXG4gKiB0cnVl66m0IFwi64K06rCAIOyTtCDqt7jrjIDroZwg64Ko7JWE7J6I7J2MXCIsIGZhbHNl66m0IFwi7Jm467aA7JeQ7IScIOyImOygleuQkOqxsOuCmCDsmrDrpqzqsIAg7JO0IOyggSDsl4bsnYxcIi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzTGFzdENoYW5nZWRCeU1lKGZpbGVQYXRoOiBBYnNvbHV0ZVBhdGgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgcmVnaXN0ZXJlZCA9IGZpbGVXcml0dGVuQXQuZ2V0KGZpbGVQYXRoKTtcbiAgaWYgKHJlZ2lzdGVyZWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBmaWxlU3RhdCA9IGF3YWl0IHN0YXQoZmlsZVBhdGgpO1xuICByZXR1cm4gZmlsZVN0YXQubXRpbWVNcyA8PSByZWdpc3RlcmVkO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVVBLGVBQXNCLGFBQWEsVUFBdUM7Q0FDeEUsTUFBTSxXQUFXLE1BQU0sS0FBSyxTQUFTO0FBQ3JDLGVBQWMsSUFBSSxVQUFVLFNBQVMsUUFBUTs7Ozs7O0FBTy9DLGVBQXNCLGtCQUFrQixVQUEwQztDQUNoRixNQUFNLGFBQWEsY0FBYyxJQUFJLFNBQVM7QUFDOUMsS0FBSSxlQUFlLFdBQVc7QUFDNUIsU0FBTzs7Q0FFVCxNQUFNLFdBQVcsTUFBTSxLQUFLLFNBQVM7QUFDckMsUUFBTyxTQUFTLFdBQVc7Ozs7Q0FyQmhCLGdCQUFnQixJQUFJLEtBQTJCIn0=
|
package/dist/syncer/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { init_api_parser, readApisFromFile } from "./api-parser.js";
|
|
2
|
-
import {
|
|
2
|
+
import { GLOB_EXCLUDE, getChecksumPatternGroup, getChecksumPatternGroupInAbsolutePath, init_file_patterns } from "./file-patterns.js";
|
|
3
3
|
import { findChangedFilesUsingChecksums, init_checksum, renewChecksums } from "./checksum.js";
|
|
4
4
|
import { generateTemplate, init_code_generator, renderTemplate } from "./code-generator.js";
|
|
5
5
|
import { createEntity, delEntity, init_entity_operations } from "./entity-operations.js";
|
|
@@ -16,5 +16,5 @@ init_module_loader();
|
|
|
16
16
|
init_syncer();
|
|
17
17
|
|
|
18
18
|
//#endregion
|
|
19
|
-
export {
|
|
19
|
+
export { GLOB_EXCLUDE, Syncer, createEntity, delEntity, findChangedFilesUsingChecksums, generateTemplate, getChecksumPatternGroup, getChecksumPatternGroupInAbsolutePath, loadApis, loadModels, loadTypes, loadWorkflows, readApisFromFile, renderTemplate, renewChecksums };
|
|
20
20
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hcGktcGFyc2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jaGVja3N1bVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29kZS1nZW5lcmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2VudGl0eS1vcGVyYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9maWxlLXBhdHRlcm5zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2R1bGUtbG9hZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zeW5jZXJcIjtcbiJdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { type BaseFrameClass } from "../api/base-frame";
|
|
3
|
-
import { type
|
|
3
|
+
import { type ExtendedApi } from "../api/decorators";
|
|
4
4
|
import { type BaseModelClass } from "../database/base-model";
|
|
5
5
|
import { type WorkflowMetadata } from "../tasks/decorator";
|
|
6
|
-
|
|
7
|
-
export type LoadedApis = {
|
|
8
|
-
typeParameters: ApiParamType.TypeParam[];
|
|
9
|
-
parameters: ApiParam[];
|
|
10
|
-
returnType: ApiParamType;
|
|
11
|
-
modelName: string;
|
|
12
|
-
methodName: string;
|
|
13
|
-
path: string;
|
|
14
|
-
options: ApiDecoratorOptions;
|
|
15
|
-
}[];
|
|
6
|
+
export type LoadedApis = ExtendedApi[];
|
|
16
7
|
export type LoadedTypes = {
|
|
17
8
|
[typeName: string]: z.ZodType;
|
|
18
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-loader.d.ts","sourceRoot":"","sources":["../../src/syncer/module-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"module-loader.d.ts","sourceRoot":"","sources":["../../src/syncer/module-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAO3D,MAAM,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC;AAEvC,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,cAAc,CAAC;CACtD,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CA+BpD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,CAmBxD;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,CAoBtD;AAED;;GAEG;AACH,wBAAsB,aAAa,6CA6BlC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/rolldown_runtime.js";
|
|
2
|
-
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
3
2
|
import { globAsync, init_async_utils } from "../utils/async-utils.js";
|
|
3
|
+
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
4
4
|
import { importMembers, init_esm_utils } from "../utils/esm-utils.js";
|
|
5
5
|
import { init_path_utils, runtimePath } from "../utils/path-utils.js";
|
|
6
6
|
import { init_api_parser, readApisFromFile } from "./api-parser.js";
|
|
@@ -50,7 +50,7 @@ async function loadModels() {
|
|
|
50
50
|
*/
|
|
51
51
|
async function loadTypes() {
|
|
52
52
|
const typePathsPatterns = [path.join(Sonamu.apiRootPath, runtimePath("src/application/**/*.types.ts")), path.join(Sonamu.apiRootPath, runtimePath("src/application/**/*.generated.ts"))];
|
|
53
|
-
const typePaths = (await Promise.all(typePathsPatterns.map(globAsync))).flat();
|
|
53
|
+
const typePaths = (await Promise.all(typePathsPatterns.map((pattern) => globAsync(pattern)))).flat();
|
|
54
54
|
const types = {};
|
|
55
55
|
for (const filePath of typePaths) {
|
|
56
56
|
const importedMembers = await importMembers(filePath);
|
|
@@ -90,4 +90,4 @@ var init_module_loader = __esmMin((() => {
|
|
|
90
90
|
//#endregion
|
|
91
91
|
init_module_loader();
|
|
92
92
|
export { init_module_loader, loadApis, loadModels, loadTypes, loadWorkflows };
|
|
93
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWxvYWRlci5qcyIsIm5hbWVzIjpbImFwaXM6IExvYWRlZEFwaXMiLCJtb2RlbHM6IExvYWRlZE1vZGVscyIsInR5cGVzOiBMb2FkZWRUeXBlcyIsInoiLCJ3b3JrZmxvd3M6IE1hcDxzdHJpbmcsIFdvcmtmbG93TWV0YWRhdGFbXT4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL21vZHVsZS1sb2FkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgdHlwZSBCYXNlRnJhbWVDbGFzcyB9IGZyb20gXCIuLi9hcGkvYmFzZS1mcmFtZVwiO1xuaW1wb3J0IHsgdHlwZSBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgQmFzZU1vZGVsQ2xhc3MgfSBmcm9tIFwiLi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHsgdHlwZSBXb3JrZmxvd01ldGFkYXRhIH0gZnJvbSBcIi4uL3Rhc2tzL2RlY29yYXRvclwiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uL3V0aWxzL2FzeW5jLXV0aWxzXCI7XG5pbXBvcnQgeyBpbXBvcnRNZW1iZXJzIH0gZnJvbSBcIi4uL3V0aWxzL2VzbS11dGlsc1wiO1xuaW1wb3J0IHsgcnVudGltZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgdHlwZSBBYnNvbHV0ZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgcmVhZEFwaXNGcm9tRmlsZSB9IGZyb20gXCIuL2FwaS1wYXJzZXJcIjtcblxuZXhwb3J0IHR5cGUgTG9hZGVkQXBpcyA9IEV4dGVuZGVkQXBpW107XG5cbmV4cG9ydCB0eXBlIExvYWRlZFR5cGVzID0geyBbdHlwZU5hbWU6IHN0cmluZ106IHouWm9kVHlwZSB9O1xuXG5leHBvcnQgdHlwZSBMb2FkZWRNb2RlbHMgPSB7XG4gIFttb2RlbE5hbWU6IHN0cmluZ106IEJhc2VNb2RlbENsYXNzIHwgQmFzZUZyYW1lQ2xhc3M7XG59O1xuXG4vKipcbiAqICoubW9kZWwudHPsmYAgKi5mcmFtZS50cyDtjIzsnbzrk6Tsl5DshJwgQVBJIOuplOyGjOuTnOulvCDtjIzsi7HtlZjsl6wg66Gc65Oc7ZWp64uI64ukLlxuICogcmVnaXN0ZXJlZEFwaXPsl5AgQVBJ6rCAIOuTseuhneuQmOyWtCDsnojslrTslbwg7ZWY6riwIOuVjOusuOyXkCwgKi5tb2RlbC50cyDtjIzsnbzrk6TsnYQg66i87KCAIGltcG9ydO2VtOyVvCDtlanri4jri6QuXG4gKiDrlLDrnbzshJwgbG9hZE1vZGVscygp66W8IOuovOyggCDtmLjstpztlbTslbwg7ZWp64uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEFwaXMoKTogUHJvbWlzZTxMb2FkZWRBcGlzPiB7XG4gIC8vIOyWmOuKlCDtirnsnbTtlZjqsozrj4Qg7ZmY6rK97JeQIOuUsOudvCAudHPrgpggLmpz66W8IGltcG9ydO2VmOuKlCDqsr3smrDqsIAg7JWE64uI6rOgLFxuICAvLyDtg4DsnoXsnbQg7IK07JWE7J6I64qUIC50cyDshozsiqQg7L2U65Oc66eM7J2EIOydveyWtOyVvCDtlanri4jri6QuXG4gIC8vIOydtOqyg+ydgCBkZXbshJzrsoQoaG90IHJlbG9hZCnqsIAg7JWE64uMIHByb2R1Y3Rpb24g7ZmY6rK97JeQ7ISc64+EIOuPmeydvO2VqeuLiOuLpC5cbiAgLy8g66qo642465Ok7J2YIC50cyDtjIzsnbzsnbQg7J6I7Ja07JW8IOydtOulvCDsnb3slrTshJwg65287Jqw7Yq466W8IOuTseuhne2VoCDsiJgg7J6I7Ja07JqUIVxuICBjb25zdCBtb2RlbFBhdGhzUGF0dGVybiA9IHBhdGguam9pbihcbiAgICBTb25hbXUuYXBpUm9vdFBhdGgsXG4gICAgXCJzcmMvYXBwbGljYXRpb24vKiovKi57bW9kZWwsZnJhbWV9LnRzXCIsIC8vICEhIHJ1bnRpbWVQYXRoIOyViCDslIAg7KO87J2YICEhXG4gICk7XG4gIGNvbnN0IG1vZGVsUGF0aHMgPSAoYXdhaXQgZ2xvYkFzeW5jKG1vZGVsUGF0aHNQYXR0ZXJuKSkgYXMgQWJzb2x1dGVQYXRoW107XG5cbiAgY29uc3QgYXBpczogTG9hZGVkQXBpcyA9IFtdO1xuICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIG1vZGVsUGF0aHMpIHtcbiAgICBjb25zdCBwYXJzZWRBcGlzID0gYXdhaXQgcmVhZEFwaXNGcm9tRmlsZShmaWxlUGF0aCk7XG4gICAgYXBpcy5wdXNoKC4uLnBhcnNlZEFwaXMpO1xuICB9XG4gIC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIGNoYWxrLmdyYXkoYFtMb2FkaW5nXSBMb2FkZWQgQVBJcyBmcm9tIFwiKi5tb2RlbC50c1wiIGZpbGVzOiAke2NvdW50fSBmaWxlcy5gKVxuICAvLyApO1xuXG4gIGZvciAoY29uc3QgYXBpIG9mIGFwaXMpIHtcbiAgICBpZiAoYXBpLnBhdGggPT09IFwiXCIpIHtcbiAgICAgIC8vIGFwaeydmCDqsr3roZwocGF0aCnqsIAgXCLthYUg67mE7Ja07J6I7J2MXCLsnbgg7IOB7YOc7J6F64uI64ukLlxuICAgICAgLy8g7J2064qUIEBhcGnsmYAg7ZWo6ruYIOyCrOyaqe2VtOyVvCDtlZjripQg642w7L2U66CI7J207YSw6rCAIEBhcGkg7JeG7J20IOu2meydgCDsg4HtmansnoXri4jri6QuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBUEkgJHthcGkubW9kZWxOYW1lfS4ke2FwaS5tZXRob2ROYW1lfSBoYXMgbm8gcGF0aC4gUGxlYXNlIGF0dGFjaCBAYXBpIGRlY29yYXRvciB0byB0aGUgbWV0aG9kLmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcGlzO1xufVxuXG4vKipcbiAqICoubW9kZWwudHPsmYAgKi5mcmFtZS50cyDtjIzsnbzrk6Tsl5DshJwgTW9kZWwvRnJhbWUg7YG0656Y7IqkIOyduOyKpO2EtOyKpOulvCDroZzrk5ztlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkTW9kZWxzKCk6IFByb21pc2U8TG9hZGVkTW9kZWxzPiB7XG4gIGNvbnN0IG1vZGVsUGF0aHNQYXR0ZXJuID0gcGF0aC5qb2luKFxuICAgIFNvbmFtdS5hcGlSb290UGF0aCxcbiAgICBydW50aW1lUGF0aChcInNyYy9hcHBsaWNhdGlvbi8qKi8qLnttb2RlbCxmcmFtZX0udHNcIiksXG4gICk7XG4gIGNvbnN0IG1vZGVsUGF0aHMgPSBhd2FpdCBnbG9iQXN5bmMobW9kZWxQYXRoc1BhdHRlcm4pO1xuXG4gIGNvbnN0IG1vZGVsczogTG9hZGVkTW9kZWxzID0ge307XG4gIGZvciAoY29uc3QgZmlsZVBhdGggb2YgbW9kZWxQYXRocykge1xuICAgIGNvbnN0IGltcG9ydGVkTWVtYmVycyA9IGF3YWl0IGltcG9ydE1lbWJlcnM8QmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcz4oZmlsZVBhdGgpO1xuXG4gICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgaW1wb3J0ZWRNZW1iZXJzKSB7XG4gICAgICBpZiAobmFtZS5lbmRzV2l0aChcIk1vZGVsXCIpIHx8IG5hbWUuZW5kc1dpdGgoXCJGcmFtZVwiKSkge1xuICAgICAgICBtb2RlbHNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbW9kZWxzO1xufVxuXG4vKipcbiAqICoudHlwZXMudHPsmYAgKi5nZW5lcmF0ZWQudHMg7YyM7J2865Ok7JeQ7IScIFpvZCDsiqTtgqTrp4jrpbwg66Gc65Oc7ZWp64uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFR5cGVzKCk6IFByb21pc2U8TG9hZGVkVHlwZXM+IHtcbiAgY29uc3QgdHlwZVBhdGhzUGF0dGVybnMgPSBbXG4gICAgcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgcnVudGltZVBhdGgoXCJzcmMvYXBwbGljYXRpb24vKiovKi50eXBlcy50c1wiKSksXG4gICAgcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgcnVudGltZVBhdGgoXCJzcmMvYXBwbGljYXRpb24vKiovKi5nZW5lcmF0ZWQudHNcIikpLFxuICBdO1xuICBjb25zdCB0eXBlUGF0aHMgPSAoXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodHlwZVBhdGhzUGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBnbG9iQXN5bmMocGF0dGVybikpKVxuICApLmZsYXQoKTtcblxuICBjb25zdCB0eXBlczogTG9hZGVkVHlwZXMgPSB7fTtcbiAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiB0eXBlUGF0aHMpIHtcbiAgICBjb25zdCBpbXBvcnRlZE1lbWJlcnMgPSBhd2FpdCBpbXBvcnRNZW1iZXJzPHouWm9kVHlwZT4oZmlsZVBhdGgpO1xuICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIGltcG9ydGVkTWVtYmVycykge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2Ygei5ab2RUeXBlKSB7XG4gICAgICAgIHR5cGVzW25hbWVdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHR5cGVzO1xufVxuXG4vKipcbiAqICoud29ya2Zsb3cudHMg7YyM7J2865Ok7JeQ7IScIFdvcmtmbG93IOuplO2DgOuNsOydtO2EsOulvCDroZzrk5ztlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkV29ya2Zsb3dzKCkge1xuICBjb25zdCB3b3JrZmxvd1BhdGhzUGF0dGVybiA9IHBhdGguam9pbihcbiAgICBTb25hbXUuYXBpUm9vdFBhdGgsXG4gICAgcnVudGltZVBhdGgoXCJzcmMvYXBwbGljYXRpb24vKiovKi53b3JrZmxvdy50c1wiKSxcbiAgKTtcbiAgY29uc3Qgd29ya2Zsb3dQYXRocyA9IGF3YWl0IGdsb2JBc3luYyh3b3JrZmxvd1BhdGhzUGF0dGVybik7XG4gIGNvbnN0IHdvcmtmbG93czogTWFwPHN0cmluZywgV29ya2Zsb3dNZXRhZGF0YVtdPiA9IG5ldyBNYXAoKTtcbiAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiB3b3JrZmxvd1BhdGhzKSB7XG4gICAgY29uc3QgaW1wb3J0ZWRNZW1iZXJzID0gYXdhaXQgaW1wb3J0TWVtYmVycyhmaWxlUGF0aCk7XG4gICAgd29ya2Zsb3dzLnNldChcbiAgICAgIGZpbGVQYXRoLFxuICAgICAgaW1wb3J0ZWRNZW1iZXJzXG4gICAgICAgIC5maWx0ZXIoKHsgdmFsdWUgfSkgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICBcInR5cGVcIiBpbiB2YWx1ZSAmJlxuICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gXCJ3b3JrZmxvd1wiICYmXG4gICAgICAgICAgICBcImZuXCIgaW4gdmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZS5mbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm1hcCgoeyB2YWx1ZSB9KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlIGFzIFdvcmtmbG93TWV0YWRhdGE7XG4gICAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gd29ya2Zsb3dzO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUE0QkEsZUFBc0IsV0FBZ0M7Q0FLcEQsTUFBTSxvQkFBb0IsS0FBSyxLQUM3QixPQUFPLGFBQ1Asd0NBQ0Q7Q0FDRCxNQUFNLGFBQWMsTUFBTSxVQUFVLGtCQUFrQjtDQUV0RCxNQUFNQSxPQUFtQixFQUFFO0FBQzNCLE1BQUssTUFBTSxZQUFZLFlBQVk7RUFDakMsTUFBTSxhQUFhLE1BQU0saUJBQWlCLFNBQVM7QUFDbkQsT0FBSyxLQUFLLEdBQUcsV0FBVzs7QUFNMUIsTUFBSyxNQUFNLE9BQU8sTUFBTTtBQUN0QixNQUFJLElBQUksU0FBUyxJQUFJO0FBR25CLFNBQU0sSUFBSSxNQUNSLE9BQU8sSUFBSSxVQUFVLEdBQUcsSUFBSSxXQUFXLDJEQUN4Qzs7O0FBSUwsUUFBTzs7Ozs7QUFNVCxlQUFzQixhQUFvQztDQUN4RCxNQUFNLG9CQUFvQixLQUFLLEtBQzdCLE9BQU8sYUFDUCxZQUFZLHdDQUF3QyxDQUNyRDtDQUNELE1BQU0sYUFBYSxNQUFNLFVBQVUsa0JBQWtCO0NBRXJELE1BQU1DLFNBQXVCLEVBQUU7QUFDL0IsTUFBSyxNQUFNLFlBQVksWUFBWTtFQUNqQyxNQUFNLGtCQUFrQixNQUFNLGNBQStDLFNBQVM7QUFFdEYsT0FBSyxNQUFNLEVBQUUsTUFBTSxXQUFXLGlCQUFpQjtBQUM3QyxPQUFJLEtBQUssU0FBUyxRQUFRLElBQUksS0FBSyxTQUFTLFFBQVEsRUFBRTtBQUNwRCxXQUFPLFFBQVE7Ozs7QUFLckIsUUFBTzs7Ozs7QUFNVCxlQUFzQixZQUFrQztDQUN0RCxNQUFNLG9CQUFvQixDQUN4QixLQUFLLEtBQUssT0FBTyxhQUFhLFlBQVksZ0NBQWdDLENBQUMsRUFDM0UsS0FBSyxLQUFLLE9BQU8sYUFBYSxZQUFZLG9DQUFvQyxDQUFDLENBQ2hGO0NBQ0QsTUFBTSxhQUNKLE1BQU0sUUFBUSxJQUFJLGtCQUFrQixLQUFLLFlBQVksVUFBVSxRQUFRLENBQUMsQ0FBQyxFQUN6RSxNQUFNO0NBRVIsTUFBTUMsUUFBcUIsRUFBRTtBQUM3QixNQUFLLE1BQU0sWUFBWSxXQUFXO0VBQ2hDLE1BQU0sa0JBQWtCLE1BQU0sY0FBeUIsU0FBUztBQUNoRSxPQUFLLE1BQU0sRUFBRSxNQUFNLFdBQVcsaUJBQWlCO0FBQzdDLE9BQUksaUJBQWlCQyxJQUFFLFNBQVM7QUFDOUIsVUFBTSxRQUFROzs7O0FBS3BCLFFBQU87Ozs7O0FBTVQsZUFBc0IsZ0JBQWdCO0NBQ3BDLE1BQU0sdUJBQXVCLEtBQUssS0FDaEMsT0FBTyxhQUNQLFlBQVksbUNBQW1DLENBQ2hEO0NBQ0QsTUFBTSxnQkFBZ0IsTUFBTSxVQUFVLHFCQUFxQjtDQUMzRCxNQUFNQyxZQUE2QyxJQUFJLEtBQUs7QUFDNUQsTUFBSyxNQUFNLFlBQVksZUFBZTtFQUNwQyxNQUFNLGtCQUFrQixNQUFNLGNBQWMsU0FBUztBQUNyRCxZQUFVLElBQ1IsVUFDQSxnQkFDRyxRQUFRLEVBQUUsWUFBWTtBQUNyQixVQUNFLE9BQU8sVUFBVSxZQUNqQixVQUFVLFFBQ1YsVUFBVSxTQUNWLE1BQU0sU0FBUyxjQUNmLFFBQVEsU0FDUixPQUFPLE1BQU0sT0FBTztJQUV0QixDQUNELEtBQUssRUFBRSxZQUFZO0FBQ2xCLFVBQU87SUFDUCxDQUNMOztBQUdILFFBQU87OztjQXZJOEI7bUJBR1U7aUJBQ0U7a0JBQ0Q7a0JBRUYifQ==
|
|
@@ -8,7 +8,12 @@ export declare function actionSyncConfig(): Promise<void>;
|
|
|
8
8
|
*/
|
|
9
9
|
export declare function actionGenerateServices(paramsArray: {
|
|
10
10
|
namesRecord: EntityNamesRecord;
|
|
11
|
-
}[]): Promise<
|
|
11
|
+
}[]): Promise<AbsolutePath[]>;
|
|
12
|
+
/**
|
|
13
|
+
* Entity에 딸린 초기 types.ts를 만들어줍니다.
|
|
14
|
+
* @param entityId
|
|
15
|
+
*/
|
|
16
|
+
export declare function actionGenerateInitialTypes(entityId: string): Promise<AbsolutePath[]>;
|
|
12
17
|
/**
|
|
13
18
|
* sonamu.generated.ts와 sonamu.generated.sso.ts를 생성합니다.
|
|
14
19
|
* @returns 생성된 파일 경로 배열.
|
|
@@ -20,14 +25,42 @@ export declare function actionGenerateSchemas(): Promise<AbsolutePath[]>;
|
|
|
20
25
|
*/
|
|
21
26
|
export declare function actionGenerateHttps(): Promise<AbsolutePath>;
|
|
22
27
|
/**
|
|
23
|
-
* queries.generated.ts
|
|
28
|
+
* queries.generated.ts 재생성합니다.
|
|
24
29
|
* @returns 생성된 파일 경로 배열.
|
|
25
30
|
*/
|
|
26
|
-
export declare function
|
|
31
|
+
export declare function actionGenerateSsrQueries(): Promise<AbsolutePath[]>;
|
|
32
|
+
/**
|
|
33
|
+
* entry-server.generated.tsx를 생성합니다.
|
|
34
|
+
* 다른 액션들과 달리, 이미 파일이 있으면 그냥 놔둡니다. 그래서 함수 이름 끝에 써놨어요 ㅎ
|
|
35
|
+
* 입력 의존 없는 정적 코드라 매번 overwrite는 mtime만 갱신하는 의미 없는 동작.
|
|
36
|
+
* 템플릿 자체가 변경된 경우(Sonamu 업그레이드)에는 사용자가 파일을 삭제한 뒤 sync로 재생성.
|
|
37
|
+
* @returns 생성된 파일 경로 배열 (이미 있으면 빈 배열).
|
|
38
|
+
*/
|
|
39
|
+
export declare function actionGenerateSsrEntryServerIfNotExists(): Promise<AbsolutePath[]>;
|
|
27
40
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
41
|
+
* 주어진 .ts 파일들(api에 있다고 가정)을 모든 타겟 디렉토리의 services에 갖다 둡니다.
|
|
42
|
+
* 이때 내부의 sonamu import는 sonamu.shared.ts import로 치환되고,
|
|
43
|
+
* 경로의 /application/은 /services/로 치환됩니다.
|
|
44
|
+
*
|
|
45
|
+
* @param tsPaths 복사할 파일들의 절대 경로
|
|
46
|
+
* @returns 각 타겟에 복사된 파일들의 절대 경로 배열 (flat).
|
|
31
47
|
*/
|
|
32
48
|
export declare function actionSyncFilesToTargets(tsPaths: AbsolutePath[]): Promise<string[]>;
|
|
49
|
+
/**
|
|
50
|
+
* shared 템플릿으로부터 sonamu.shared.ts 파일을 만들어서 모든 타겟 디렉토리에 갖다 둡니다.
|
|
51
|
+
* 파일을 만드는 과정에서 여러 치환 가공이 일어납니다.
|
|
52
|
+
*
|
|
53
|
+
* 다른 액션들과 달리, 이미 파일이 있으면 그냥 놔둡니다. 그래서 함수 이름 끝에 써놨어요 ㅎ
|
|
54
|
+
*/
|
|
55
|
+
export declare function actionCopySharedToTargetsIfNotExists(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Sonamu Dictionary(SD)를 모든 타겟(api + web/app 등)에 동기화합니다.
|
|
58
|
+
*
|
|
59
|
+
* 각 타겟에 대해:
|
|
60
|
+
* - target이 api가 아니면 사용자 작성 locale 파일(ko.ts/en.ts/...)을 api → target으로 복사
|
|
61
|
+
* - sd 템플릿을 렌더링해서 sd.generated.ts 생성 (overwrite)
|
|
62
|
+
*
|
|
63
|
+
* 한 타겟에서 실패해도 다른 타겟은 계속 진행합니다.
|
|
64
|
+
*/
|
|
65
|
+
export declare function actionSyncSonamuDictionary(): Promise<void>;
|
|
33
66
|
//# sourceMappingURL=syncer-actions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncer-actions.d.ts","sourceRoot":"","sources":["../../src/syncer/syncer-actions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"syncer-actions.d.ts","sourceRoot":"","sources":["../../src/syncer/syncer-actions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAMlE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,wBAAsB,gBAAgB,kBAWrC;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE;IACX,WAAW,EAAE,iBAAiB,CAAC;CAChC,EAAE,GACF,OAAO,CAAC,YAAY,EAAE,CAAC,CAazB;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAE1F;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAOrE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CAQjE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAExE;AAED;;;;;;GAMG;AACH,wBAAsB,uCAAuC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAWvF;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkCzF;AAED;;;;;GAKG;AACH,wBAAsB,oCAAoC,IAAI,OAAO,CAAC,IAAI,CAAC,CA+D1E;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBhE"}
|