@simplysm/service-client 13.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +397 -0
- package/dist/core-common/src/common.types.d.ts +74 -0
- package/dist/core-common/src/common.types.d.ts.map +1 -0
- package/dist/core-common/src/env.d.ts +6 -0
- package/dist/core-common/src/env.d.ts.map +1 -0
- package/dist/core-common/src/errors/argument-error.d.ts +25 -0
- package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/sd-error.d.ts +27 -0
- package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
- package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
- package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
- package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
- package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
- package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
- package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
- package/dist/core-common/src/features/event-emitter.d.ts +66 -0
- package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
- package/dist/core-common/src/features/serial-queue.d.ts +47 -0
- package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
- package/dist/core-common/src/index.d.ts +32 -0
- package/dist/core-common/src/index.d.ts.map +1 -0
- package/dist/core-common/src/types/date-only.d.ts +152 -0
- package/dist/core-common/src/types/date-only.d.ts.map +1 -0
- package/dist/core-common/src/types/date-time.d.ts +96 -0
- package/dist/core-common/src/types/date-time.d.ts.map +1 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
- package/dist/core-common/src/types/time.d.ts +68 -0
- package/dist/core-common/src/types/time.d.ts.map +1 -0
- package/dist/core-common/src/types/uuid.d.ts +35 -0
- package/dist/core-common/src/types/uuid.d.ts.map +1 -0
- package/dist/core-common/src/utils/bytes.d.ts +51 -0
- package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
- package/dist/core-common/src/utils/date-format.d.ts +90 -0
- package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
- package/dist/core-common/src/utils/json.d.ts +34 -0
- package/dist/core-common/src/utils/json.d.ts.map +1 -0
- package/dist/core-common/src/utils/num.d.ts +60 -0
- package/dist/core-common/src/utils/num.d.ts.map +1 -0
- package/dist/core-common/src/utils/obj.d.ts +258 -0
- package/dist/core-common/src/utils/obj.d.ts.map +1 -0
- package/dist/core-common/src/utils/path.d.ts +23 -0
- package/dist/core-common/src/utils/path.d.ts.map +1 -0
- package/dist/core-common/src/utils/primitive.d.ts +18 -0
- package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
- package/dist/core-common/src/utils/str.d.ts +103 -0
- package/dist/core-common/src/utils/str.d.ts.map +1 -0
- package/dist/core-common/src/utils/template-strings.d.ts +84 -0
- package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
- package/dist/core-common/src/utils/transferable.d.ts +47 -0
- package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
- package/dist/core-common/src/utils/wait.d.ts +19 -0
- package/dist/core-common/src/utils/wait.d.ts.map +1 -0
- package/dist/core-common/src/utils/xml.d.ts +36 -0
- package/dist/core-common/src/utils/xml.d.ts.map +1 -0
- package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
- package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
- package/dist/features/event-client.js +74 -0
- package/dist/features/event-client.js.map +7 -0
- package/dist/features/file-client.js +42 -0
- package/dist/features/file-client.js.map +7 -0
- package/dist/features/orm/orm-client-connector.js +41 -0
- package/dist/features/orm/orm-client-connector.js.map +7 -0
- package/dist/features/orm/orm-client-db-context-executor.js +61 -0
- package/dist/features/orm/orm-client-db-context-executor.js.map +7 -0
- package/dist/features/orm/orm-connect-config.js +1 -0
- package/dist/features/orm/orm-connect-config.js.map +7 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +7 -0
- package/dist/orm-common/src/db-context.d.ts +669 -0
- package/dist/orm-common/src/db-context.d.ts.map +1 -0
- package/dist/orm-common/src/errors/db-transaction-error.d.ts +51 -0
- package/dist/orm-common/src/errors/db-transaction-error.d.ts.map +1 -0
- package/dist/orm-common/src/exec/executable.d.ts +79 -0
- package/dist/orm-common/src/exec/executable.d.ts.map +1 -0
- package/dist/orm-common/src/exec/queryable.d.ts +708 -0
- package/dist/orm-common/src/exec/queryable.d.ts.map +1 -0
- package/dist/orm-common/src/exec/search-parser.d.ts +72 -0
- package/dist/orm-common/src/exec/search-parser.d.ts.map +1 -0
- package/dist/orm-common/src/expr/expr-unit.d.ts +25 -0
- package/dist/orm-common/src/expr/expr-unit.d.ts.map +1 -0
- package/dist/orm-common/src/expr/expr.d.ts +1369 -0
- package/dist/orm-common/src/expr/expr.d.ts.map +1 -0
- package/dist/orm-common/src/index.d.ts +32 -0
- package/dist/orm-common/src/index.d.ts.map +1 -0
- package/dist/orm-common/src/models/system-migration.d.ts +10 -0
- package/dist/orm-common/src/models/system-migration.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts +95 -0
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts +66 -0
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts +84 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts +45 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts +84 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts +54 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts +84 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts +52 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/query-builder.d.ts +7 -0
- package/dist/orm-common/src/query-builder/query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/factory/column-builder.d.ts +394 -0
- package/dist/orm-common/src/schema/factory/column-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/factory/index-builder.d.ts +151 -0
- package/dist/orm-common/src/schema/factory/index-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts +337 -0
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/procedure-builder.d.ts +202 -0
- package/dist/orm-common/src/schema/procedure-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/table-builder.d.ts +259 -0
- package/dist/orm-common/src/schema/table-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/view-builder.d.ts +183 -0
- package/dist/orm-common/src/schema/view-builder.d.ts.map +1 -0
- package/dist/orm-common/src/types/column.d.ts +172 -0
- package/dist/orm-common/src/types/column.d.ts.map +1 -0
- package/dist/orm-common/src/types/db.d.ts +175 -0
- package/dist/orm-common/src/types/db.d.ts.map +1 -0
- package/dist/orm-common/src/types/expr.d.ts +474 -0
- package/dist/orm-common/src/types/expr.d.ts.map +1 -0
- package/dist/orm-common/src/types/query-def.d.ts +351 -0
- package/dist/orm-common/src/types/query-def.d.ts.map +1 -0
- package/dist/orm-common/src/utils/result-parser.d.ts +38 -0
- package/dist/orm-common/src/utils/result-parser.d.ts.map +1 -0
- package/dist/protocol/client-protocol-wrapper.js +92 -0
- package/dist/protocol/client-protocol-wrapper.js.map +7 -0
- package/dist/service-client/src/features/event-client.d.ts +14 -0
- package/dist/service-client/src/features/event-client.d.ts.map +1 -0
- package/dist/service-client/src/features/file-client.d.ts +13 -0
- package/dist/service-client/src/features/file-client.d.ts.map +1 -0
- package/dist/service-client/src/features/orm/orm-client-connector.d.ts +10 -0
- package/dist/service-client/src/features/orm/orm-client-connector.d.ts.map +1 -0
- package/dist/service-client/src/features/orm/orm-client-db-context-executor.d.ts +26 -0
- package/dist/service-client/src/features/orm/orm-client-db-context-executor.d.ts.map +1 -0
- package/dist/service-client/src/features/orm/orm-connect-config.d.ts +13 -0
- package/dist/service-client/src/features/orm/orm-connect-config.d.ts.map +1 -0
- package/dist/service-client/src/index.d.ts +12 -0
- package/dist/service-client/src/index.d.ts.map +1 -0
- package/dist/service-client/src/protocol/client-protocol-wrapper.d.ts +23 -0
- package/dist/service-client/src/protocol/client-protocol-wrapper.d.ts.map +1 -0
- package/dist/service-client/src/service-client.d.ts +41 -0
- package/dist/service-client/src/service-client.d.ts.map +1 -0
- package/dist/service-client/src/transport/service-transport.d.ts +24 -0
- package/dist/service-client/src/transport/service-transport.d.ts.map +1 -0
- package/dist/service-client/src/transport/socket-provider.d.ts +31 -0
- package/dist/service-client/src/transport/socket-provider.d.ts.map +1 -0
- package/dist/service-client/src/types/connection-config.d.ts +8 -0
- package/dist/service-client/src/types/connection-config.d.ts.map +1 -0
- package/dist/service-client/src/types/progress.types.d.ts +10 -0
- package/dist/service-client/src/types/progress.types.d.ts.map +1 -0
- package/dist/service-client/src/workers/client-protocol.worker.d.ts +2 -0
- package/dist/service-client/src/workers/client-protocol.worker.d.ts.map +1 -0
- package/dist/service-client.js +114 -0
- package/dist/service-client.js.map +7 -0
- package/dist/service-common/src/index.d.ts +8 -0
- package/dist/service-common/src/index.d.ts.map +1 -0
- package/dist/service-common/src/protocol/protocol.types.d.ts +100 -0
- package/dist/service-common/src/protocol/protocol.types.d.ts.map +1 -0
- package/dist/service-common/src/protocol/service-protocol.d.ts +63 -0
- package/dist/service-common/src/protocol/service-protocol.d.ts.map +1 -0
- package/dist/service-common/src/service-types/auto-update-service.types.d.ts +17 -0
- package/dist/service-common/src/service-types/auto-update-service.types.d.ts.map +1 -0
- package/dist/service-common/src/service-types/crypto-service.types.d.ts +22 -0
- package/dist/service-common/src/service-types/crypto-service.types.d.ts.map +1 -0
- package/dist/service-common/src/service-types/orm-service.types.d.ts +30 -0
- package/dist/service-common/src/service-types/orm-service.types.d.ts.map +1 -0
- package/dist/service-common/src/service-types/smtp-service.types.d.ts +55 -0
- package/dist/service-common/src/service-types/smtp-service.types.d.ts.map +1 -0
- package/dist/service-common/src/types.d.ts +43 -0
- package/dist/service-common/src/types.d.ts.map +1 -0
- package/dist/transport/service-transport.js +112 -0
- package/dist/transport/service-transport.js.map +7 -0
- package/dist/transport/socket-provider.js +170 -0
- package/dist/transport/socket-provider.js.map +7 -0
- package/dist/types/connection-config.js +1 -0
- package/dist/types/connection-config.js.map +7 -0
- package/dist/types/progress.types.js +1 -0
- package/dist/types/progress.types.js.map +7 -0
- package/dist/workers/client-protocol.worker.js +30 -0
- package/dist/workers/client-protocol.worker.js.map +7 -0
- package/package.json +29 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Bytes } from "@simplysm/core-common";
|
|
2
|
+
import type { ServiceMessageDecodeResult, ServiceMessage } from "@simplysm/service-common";
|
|
3
|
+
export declare class ClientProtocolWrapper {
|
|
4
|
+
private readonly _SIZE_THRESHOLD;
|
|
5
|
+
private readonly _protocol;
|
|
6
|
+
private static _worker?;
|
|
7
|
+
private static readonly _workerResolvers;
|
|
8
|
+
private static _workerAvailable;
|
|
9
|
+
private static get workerAvailable();
|
|
10
|
+
private static get worker();
|
|
11
|
+
/**
|
|
12
|
+
* Worker에 작업 위임 및 결과 대기
|
|
13
|
+
* 주의: workerAvailable이 true일 때만 호출해야 함
|
|
14
|
+
*/
|
|
15
|
+
private _runWorker;
|
|
16
|
+
encode(uuid: string, message: ServiceMessage): Promise<{
|
|
17
|
+
chunks: Bytes[];
|
|
18
|
+
totalSize: number;
|
|
19
|
+
}>;
|
|
20
|
+
decode(bytes: Bytes): Promise<ServiceMessageDecodeResult<ServiceMessage>>;
|
|
21
|
+
private _shouldUseWorkerForEncode;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=client-protocol-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-protocol-wrapper.d.ts","sourceRoot":"","sources":["../../../../src/protocol/client-protocol-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG3F,qBAAa,qBAAqB;IAEhC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAa;IAG7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAGnD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAS;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAUrC;IAGH,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAsB;IAErD,OAAO,CAAC,MAAM,KAAK,eAAe,GAKjC;IAED,OAAO,CAAC,MAAM,KAAK,MAAM,GAkCxB;IAED;;;OAGG;YACW,UAAU;IAUlB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAe9F,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;IAgB/E,OAAO,CAAC,yBAAyB;CAalC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Type } from "@simplysm/core-common";
|
|
2
|
+
import { EventEmitter } from "@simplysm/core-common";
|
|
3
|
+
import type { ServiceEventListener } from "@simplysm/service-common";
|
|
4
|
+
import type { ServiceConnectionConfig } from "./types/connection-config";
|
|
5
|
+
import type { ServiceProgress, ServiceProgressState } from "./types/progress.types";
|
|
6
|
+
interface ServiceClientEvents {
|
|
7
|
+
"request-progress": ServiceProgressState;
|
|
8
|
+
"response-progress": ServiceProgressState;
|
|
9
|
+
"state": "connected" | "closed" | "reconnecting";
|
|
10
|
+
"reload": Set<string>;
|
|
11
|
+
}
|
|
12
|
+
export declare class ServiceClient extends EventEmitter<ServiceClientEvents> {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly options: ServiceConnectionConfig;
|
|
15
|
+
private readonly _socket;
|
|
16
|
+
private readonly _transport;
|
|
17
|
+
private readonly _eventClient;
|
|
18
|
+
private readonly _fileClient;
|
|
19
|
+
private _authToken?;
|
|
20
|
+
get connected(): boolean;
|
|
21
|
+
get hostUrl(): string;
|
|
22
|
+
constructor(name: string, options: ServiceConnectionConfig);
|
|
23
|
+
getService<T>(serviceName: string): RemoteService<T>;
|
|
24
|
+
connect(): Promise<void>;
|
|
25
|
+
close(): Promise<void>;
|
|
26
|
+
send(serviceName: string, methodName: string, params: unknown[], progress?: ServiceProgress): Promise<unknown>;
|
|
27
|
+
auth(token: string): Promise<void>;
|
|
28
|
+
addEventListener<T extends ServiceEventListener<unknown, unknown>>(eventType: Type<T>, info: T["$info"], cb: (data: T["$data"]) => PromiseLike<void>): Promise<string>;
|
|
29
|
+
removeEventListener(key: string): Promise<void>;
|
|
30
|
+
emitToServer<T extends ServiceEventListener<unknown, unknown>>(eventType: Type<T>, infoSelector: (item: T["$info"]) => boolean, data: T["$data"]): Promise<void>;
|
|
31
|
+
uploadFile(files: File[] | FileList | {
|
|
32
|
+
name: string;
|
|
33
|
+
data: BlobPart;
|
|
34
|
+
}[]): Promise<import("@simplysm/service-common").ServiceUploadResult[]>;
|
|
35
|
+
downloadFileBuffer(relPath: string): Promise<import("@simplysm/core-common").Bytes>;
|
|
36
|
+
}
|
|
37
|
+
export type RemoteService<T> = {
|
|
38
|
+
[K in keyof T]: T[K] extends (...args: infer P) => infer R ? (...args: P) => Promise<Awaited<R>> : never;
|
|
39
|
+
};
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=service-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-client.d.ts","sourceRoot":"","sources":["../../../src/service-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAQpF,UAAU,mBAAmB;IAC3B,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,mBAAmB,EAAE,oBAAoB,CAAC;IAC1C,OAAO,EAAE,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC;IACjD,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AAED,qBAAa,aAAc,SAAQ,YAAY,CAAC,mBAAmB,CAAC;aAmBhD,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,uBAAuB;IAlBlD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,OAAO,CAAC,UAAU,CAAC,CAAS;IAG5B,IAAI,SAAS,YAEZ;IACD,IAAI,OAAO,WAGV;gBAGiB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,uBAAuB;IAoClD,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC;IAW9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB9G,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,gBAAgB,CAAC,CAAC,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EACrE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAChB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,GAC1C,OAAO,CAAC,MAAM,CAAC;IAKZ,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,YAAY,CAAC,CAAC,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EACjE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAClB,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,OAAO,EAC3C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GACf,OAAO,CAAC,IAAI,CAAC;IAIV,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,EAAE;IAOxE,kBAAkB,CAAC,OAAO,EAAE,MAAM;CAGzC;AAGD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;KAC5B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CACzG,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EventEmitter } from "@simplysm/core-common";
|
|
2
|
+
import type { ServiceClientMessage } from "@simplysm/service-common";
|
|
3
|
+
import type { ServiceProgress } from "../types/progress.types";
|
|
4
|
+
import type { SocketProvider } from "./socket-provider";
|
|
5
|
+
interface ServiceTransportEvents {
|
|
6
|
+
reload: Set<string>;
|
|
7
|
+
event: {
|
|
8
|
+
keys: string[];
|
|
9
|
+
data: unknown;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare class ServiceTransport extends EventEmitter<ServiceTransportEvents> {
|
|
13
|
+
private readonly _socket;
|
|
14
|
+
private readonly _protocol;
|
|
15
|
+
private readonly _pendingRequests;
|
|
16
|
+
private readonly _responseProgressTotalSize;
|
|
17
|
+
constructor(_socket: SocketProvider);
|
|
18
|
+
send(message: ServiceClientMessage, progress?: ServiceProgress): Promise<unknown>;
|
|
19
|
+
private _onMessage;
|
|
20
|
+
private _cancelAllRequests;
|
|
21
|
+
private _toError;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=service-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/service-transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAQ,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAA+C,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAElH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,UAAU,sBAAsB;IAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1C;AAED,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,sBAAsB,CAAC;IAe5D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAdpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAEzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAO7B;IAGJ,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAA6B;gBAE3C,OAAO,EAAE,cAAc;IAa9C,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;YAoCzE,UAAU;IAiExB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,QAAQ;CAKjB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Bytes } from "@simplysm/core-common";
|
|
2
|
+
import { EventEmitter } from "@simplysm/core-common";
|
|
3
|
+
interface SocketProviderEvents {
|
|
4
|
+
message: Bytes;
|
|
5
|
+
state: "connected" | "closed" | "reconnecting";
|
|
6
|
+
}
|
|
7
|
+
export declare class SocketProvider extends EventEmitter<SocketProviderEvents> {
|
|
8
|
+
private readonly _url;
|
|
9
|
+
readonly clientName: string;
|
|
10
|
+
private readonly _maxReconnectCount;
|
|
11
|
+
private readonly _HEARTBEAT_TIMEOUT;
|
|
12
|
+
private readonly _HEARTBEAT_INTERVAL;
|
|
13
|
+
private readonly _RECONNECT_DELAY;
|
|
14
|
+
private readonly _PING_PACKET;
|
|
15
|
+
private _ws?;
|
|
16
|
+
private _isManualClose;
|
|
17
|
+
private _reconnectCount;
|
|
18
|
+
private _heartbeatTimer?;
|
|
19
|
+
private _lastHeartbeatTime;
|
|
20
|
+
get connected(): boolean;
|
|
21
|
+
constructor(_url: string, clientName: string, _maxReconnectCount: number);
|
|
22
|
+
connect(): Promise<void>;
|
|
23
|
+
close(): Promise<void>;
|
|
24
|
+
send(data: Bytes): Promise<void>;
|
|
25
|
+
private _createSocket;
|
|
26
|
+
private _tryReconnect;
|
|
27
|
+
private _startHeartbeat;
|
|
28
|
+
private _stopHeartbeat;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=socket-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket-provider.d.ts","sourceRoot":"","sources":["../../../../src/transport/socket-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAA6B,MAAM,uBAAuB,CAAC;AAKhF,UAAU,oBAAoB;IAC5B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC;CAChD;AAED,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IAqBlE,OAAO,CAAC,QAAQ,CAAC,IAAI;aACL,UAAU,EAAE,MAAM;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IArBrC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IAGzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IAGvD,OAAO,CAAC,GAAG,CAAC,CAAY;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,eAAe,CAAC,CAAiC;IACzD,OAAO,CAAC,kBAAkB,CAAc;IAExC,IAAI,SAAS,IAAI,OAAO,CAEvB;gBAGkB,IAAI,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM;IAKvC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAexB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;YAaxB,aAAa;YAuDb,aAAa;IA6B3B,OAAO,CAAC,eAAe;IAkDvB,OAAO,CAAC,cAAc;CAMvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-config.d.ts","sourceRoot":"","sources":["../../../../src/types/connection-config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+BAA+B;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ServiceProgress {
|
|
2
|
+
request?: (s: ServiceProgressState) => void;
|
|
3
|
+
response?: (s: ServiceProgressState) => void;
|
|
4
|
+
}
|
|
5
|
+
export interface ServiceProgressState {
|
|
6
|
+
uuid: string;
|
|
7
|
+
totalSize: number;
|
|
8
|
+
completedSize: number;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=progress.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.types.d.ts","sourceRoot":"","sources":["../../../../src/types/progress.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-protocol.worker.d.ts","sourceRoot":"","sources":["../../../../src/workers/client-protocol.worker.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { createConsola } from "consola";
|
|
2
|
+
import { EventEmitter } from "@simplysm/core-common";
|
|
3
|
+
import { ServiceTransport } from "./transport/service-transport";
|
|
4
|
+
import { SocketProvider } from "./transport/socket-provider";
|
|
5
|
+
import { EventClient } from "./features/event-client";
|
|
6
|
+
import { FileClient } from "./features/file-client";
|
|
7
|
+
const logger = createConsola().withTag("service-client:ServiceClient");
|
|
8
|
+
class ServiceClient extends EventEmitter {
|
|
9
|
+
constructor(name, options) {
|
|
10
|
+
super();
|
|
11
|
+
this.name = name;
|
|
12
|
+
this.options = options;
|
|
13
|
+
const wsProtocol = options.ssl ? "wss" : "ws";
|
|
14
|
+
const wsUrl = `${wsProtocol}://${options.host}:${options.port}/ws`;
|
|
15
|
+
this._socket = new SocketProvider(wsUrl, this.name, this.options.maxReconnectCount ?? 10);
|
|
16
|
+
this._transport = new ServiceTransport(this._socket);
|
|
17
|
+
this._eventClient = new EventClient(this._transport);
|
|
18
|
+
this._fileClient = new FileClient(this.hostUrl, this.name);
|
|
19
|
+
this._socket.on("state", async (state) => {
|
|
20
|
+
this.emit("state", state);
|
|
21
|
+
if (state === "connected") {
|
|
22
|
+
try {
|
|
23
|
+
if (this._authToken != null) {
|
|
24
|
+
await this.auth(this._authToken);
|
|
25
|
+
}
|
|
26
|
+
await this._eventClient.reRegisterAll();
|
|
27
|
+
} catch (err) {
|
|
28
|
+
logger.error("\uC774\uBCA4\uD2B8 \uB9AC\uC2A4\uB108 \uBCF5\uAD6C \uC2E4\uD328", err);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
this._transport.on("reload", (changedFiles) => {
|
|
33
|
+
this.emit("reload", changedFiles);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// 모듈들
|
|
37
|
+
_socket;
|
|
38
|
+
_transport;
|
|
39
|
+
_eventClient;
|
|
40
|
+
_fileClient;
|
|
41
|
+
_authToken;
|
|
42
|
+
// 상태 접근자
|
|
43
|
+
get connected() {
|
|
44
|
+
return this._socket.connected;
|
|
45
|
+
}
|
|
46
|
+
get hostUrl() {
|
|
47
|
+
const hostProtocol = this.options.ssl ? "https" : "http";
|
|
48
|
+
return `${hostProtocol}://${this.options.host}:${this.options.port}`;
|
|
49
|
+
}
|
|
50
|
+
// 타입 안전성을 위한 Proxy 생성 메소드
|
|
51
|
+
getService(serviceName) {
|
|
52
|
+
return new Proxy({}, {
|
|
53
|
+
get: (_target, prop) => {
|
|
54
|
+
const methodName = String(prop);
|
|
55
|
+
return async (...params) => {
|
|
56
|
+
return this.send(serviceName, methodName, params);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async connect() {
|
|
62
|
+
await this._socket.connect();
|
|
63
|
+
}
|
|
64
|
+
async close() {
|
|
65
|
+
await this._socket.close();
|
|
66
|
+
}
|
|
67
|
+
async send(serviceName, methodName, params, progress) {
|
|
68
|
+
return this._transport.send(
|
|
69
|
+
{
|
|
70
|
+
name: `${serviceName}.${methodName}`,
|
|
71
|
+
body: params
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
request: (state) => {
|
|
75
|
+
var _a;
|
|
76
|
+
this.emit("request-progress", state);
|
|
77
|
+
(_a = progress == null ? void 0 : progress.request) == null ? void 0 : _a.call(progress, state);
|
|
78
|
+
},
|
|
79
|
+
response: (state) => {
|
|
80
|
+
var _a;
|
|
81
|
+
this.emit("response-progress", state);
|
|
82
|
+
(_a = progress == null ? void 0 : progress.response) == null ? void 0 : _a.call(progress, state);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
async auth(token) {
|
|
88
|
+
await this._transport.send({ name: "auth", body: token });
|
|
89
|
+
this._authToken = token;
|
|
90
|
+
}
|
|
91
|
+
async addEventListener(eventType, info, cb) {
|
|
92
|
+
if (!this.connected) throw new Error("\uC11C\uBC84\uC640 \uC5F0\uACB0\uB418\uC5B4\uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.");
|
|
93
|
+
return this._eventClient.addListener(eventType, info, cb);
|
|
94
|
+
}
|
|
95
|
+
async removeEventListener(key) {
|
|
96
|
+
await this._eventClient.removeListener(key);
|
|
97
|
+
}
|
|
98
|
+
async emitToServer(eventType, infoSelector, data) {
|
|
99
|
+
await this._eventClient.emitToServer(eventType, infoSelector, data);
|
|
100
|
+
}
|
|
101
|
+
async uploadFile(files) {
|
|
102
|
+
if (this._authToken == null) {
|
|
103
|
+
throw new Error("\uC778\uC99D \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uD30C\uC77C \uC5C5\uB85C\uB4DC\uB97C \uC704\uD574\uC11C\uB294 \uBA3C\uC800 auth()\uB97C \uD638\uCD9C\uD558\uC5EC \uC778\uC99D\uD574\uC57C \uD569\uB2C8\uB2E4.");
|
|
104
|
+
}
|
|
105
|
+
return this._fileClient.upload(files, this._authToken);
|
|
106
|
+
}
|
|
107
|
+
async downloadFileBuffer(relPath) {
|
|
108
|
+
return this._fileClient.download(relPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export {
|
|
112
|
+
ServiceClient
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=service-client.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/service-client.ts"],
|
|
4
|
+
"sourcesContent": ["import { createConsola } from \"consola\";\nimport type { Type } from \"@simplysm/core-common\";\nimport { EventEmitter } from \"@simplysm/core-common\";\nimport type { ServiceEventListener } from \"@simplysm/service-common\";\n\nimport type { ServiceConnectionConfig } from \"./types/connection-config\";\nimport type { ServiceProgress, ServiceProgressState } from \"./types/progress.types\";\nimport { ServiceTransport } from \"./transport/service-transport\";\nimport { SocketProvider } from \"./transport/socket-provider\";\nimport { EventClient } from \"./features/event-client\";\nimport { FileClient } from \"./features/file-client\";\n\nconst logger = createConsola().withTag(\"service-client:ServiceClient\");\n\ninterface ServiceClientEvents {\n \"request-progress\": ServiceProgressState;\n \"response-progress\": ServiceProgressState;\n \"state\": \"connected\" | \"closed\" | \"reconnecting\";\n \"reload\": Set<string>;\n}\n\nexport class ServiceClient extends EventEmitter<ServiceClientEvents> {\n // \uBAA8\uB4C8\uB4E4\n private readonly _socket: SocketProvider;\n private readonly _transport: ServiceTransport;\n private readonly _eventClient: EventClient;\n private readonly _fileClient: FileClient;\n\n private _authToken?: string;\n\n // \uC0C1\uD0DC \uC811\uADFC\uC790\n get connected() {\n return this._socket.connected;\n }\n get hostUrl() {\n const hostProtocol = this.options.ssl ? \"https\" : \"http\";\n return `${hostProtocol}://${this.options.host}:${this.options.port}`;\n }\n\n constructor(\n public readonly name: string,\n public readonly options: ServiceConnectionConfig,\n ) {\n super();\n\n const wsProtocol = options.ssl ? \"wss\" : \"ws\";\n const wsUrl = `${wsProtocol}://${options.host}:${options.port}/ws`;\n\n // \uBAA8\uB4C8 \uCD08\uAE30\uD654\n this._socket = new SocketProvider(wsUrl, this.name, this.options.maxReconnectCount ?? 10);\n this._transport = new ServiceTransport(this._socket);\n this._eventClient = new EventClient(this._transport);\n this._fileClient = new FileClient(this.hostUrl, this.name);\n\n // \uC774\uBCA4\uD2B8 \uBC14\uC778\uB529\n this._socket.on(\"state\", async (state) => {\n this.emit(\"state\", state);\n\n // \uC7AC\uC5F0\uACB0 \uC2DC \uC774\uBCA4\uD2B8 \uB9AC\uC2A4\uB108 \uC790\uB3D9 \uBCF5\uAD6C\n if (state === \"connected\") {\n try {\n if (this._authToken != null) {\n await this.auth(this._authToken); // \uC7AC\uC778\uC99D\n }\n await this._eventClient.reRegisterAll();\n } catch (err) {\n logger.error(\"\uC774\uBCA4\uD2B8 \uB9AC\uC2A4\uB108 \uBCF5\uAD6C \uC2E4\uD328\", err);\n }\n }\n });\n\n this._transport.on(\"reload\", (changedFiles) => {\n this.emit(\"reload\", changedFiles);\n });\n }\n\n // \uD0C0\uC785 \uC548\uC804\uC131\uC744 \uC704\uD55C Proxy \uC0DD\uC131 \uBA54\uC18C\uB4DC\n getService<T>(serviceName: string): RemoteService<T> {\n return new Proxy({} as RemoteService<T>, {\n get: (_target, prop) => {\n const methodName = String(prop);\n return async (...params: unknown[]) => {\n return this.send(serviceName, methodName, params);\n };\n },\n });\n }\n\n async connect(): Promise<void> {\n await this._socket.connect();\n }\n\n async close(): Promise<void> {\n await this._socket.close();\n }\n\n async send(serviceName: string, methodName: string, params: unknown[], progress?: ServiceProgress): Promise<unknown> {\n return this._transport.send(\n {\n name: `${serviceName}.${methodName}`,\n body: params,\n },\n {\n request: (state) => {\n this.emit(\"request-progress\", state);\n progress?.request?.(state);\n },\n response: (state) => {\n this.emit(\"response-progress\", state);\n progress?.response?.(state);\n },\n },\n );\n }\n\n async auth(token: string): Promise<void> {\n await this._transport.send({ name: \"auth\", body: token });\n this._authToken = token;\n }\n\n async addEventListener<T extends ServiceEventListener<unknown, unknown>>(\n eventType: Type<T>,\n info: T[\"$info\"],\n cb: (data: T[\"$data\"]) => PromiseLike<void>,\n ): Promise<string> {\n if (!this.connected) throw new Error(\"\uC11C\uBC84\uC640 \uC5F0\uACB0\uB418\uC5B4\uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\");\n return this._eventClient.addListener(eventType, info, cb);\n }\n\n async removeEventListener(key: string): Promise<void> {\n await this._eventClient.removeListener(key);\n }\n\n async emitToServer<T extends ServiceEventListener<unknown, unknown>>(\n eventType: Type<T>,\n infoSelector: (item: T[\"$info\"]) => boolean,\n data: T[\"$data\"],\n ): Promise<void> {\n await this._eventClient.emitToServer(eventType, infoSelector, data);\n }\n\n async uploadFile(files: File[] | FileList | { name: string; data: BlobPart }[]) {\n if (this._authToken == null) {\n throw new Error(\"\uC778\uC99D \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uD30C\uC77C \uC5C5\uB85C\uB4DC\uB97C \uC704\uD574\uC11C\uB294 \uBA3C\uC800 auth()\uB97C \uD638\uCD9C\uD558\uC5EC \uC778\uC99D\uD574\uC57C \uD569\uB2C8\uB2E4.\");\n }\n return this._fileClient.upload(files, this._authToken);\n }\n\n async downloadFileBuffer(relPath: string) {\n return this._fileClient.download(relPath);\n }\n}\n\n// T\uC758 \uBAA8\uB4E0 \uBA54\uC18C\uB4DC \uBC18\uD658\uD615\uC744 Promise\uB85C \uAC10\uC2F8\uC8FC\uB294 \uD0C0\uC785 \uBCC0\uD658\uAE30\nexport type RemoteService<T> = {\n [K in keyof T]: T[K] extends (...args: infer P) => infer R ? (...args: P) => Promise<Awaited<R>> : never; // \uD568\uC218\uAC00 \uC544\uB2CC \uD504\uB85C\uD37C\uD2F0\uB294 \uC548\uC500\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./protocol/protocol.types";
|
|
2
|
+
export * from "./protocol/service-protocol";
|
|
3
|
+
export * from "./service-types/orm-service.types";
|
|
4
|
+
export * from "./service-types/crypto-service.types";
|
|
5
|
+
export * from "./service-types/auto-update-service.types";
|
|
6
|
+
export * from "./service-types/smtp-service.types";
|
|
7
|
+
export * from "./types";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../service-common/src/index.ts"],"names":[],"mappings":"AACA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAG5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oCAAoC,CAAC;AAGnD,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/** 서비스 프로토콜 설정 */
|
|
2
|
+
export declare const PROTOCOL_CONFIG: {
|
|
3
|
+
/** 최대 메시지 크기 (100MB) */
|
|
4
|
+
readonly MAX_TOTAL_SIZE: number;
|
|
5
|
+
/** 청킹 임계값 (3MB) */
|
|
6
|
+
readonly SPLIT_MESSAGE_SIZE: number;
|
|
7
|
+
/** 청크 크기 (300KB) */
|
|
8
|
+
readonly CHUNK_SIZE: number;
|
|
9
|
+
/** GC 주기 (10초) */
|
|
10
|
+
readonly GC_INTERVAL: number;
|
|
11
|
+
/** 미완성 메시지 만료 시간 (60초) */
|
|
12
|
+
readonly EXPIRE_TIME: number;
|
|
13
|
+
};
|
|
14
|
+
export type ServiceMessage = ServiceReloadMessage | ServiceRequestMessage | ServiceAuthMessage | ServiceProgressMessage | ServiceResponseMessage | ServiceErrorMessage | ServiceAddEventListenerMessage | ServiceRemoveEventListenerMessage | ServiceGetEventListenerInfosMessage | ServiceEmitEventMessage | ServiceEventMessage;
|
|
15
|
+
export type ServiceServerMessage = ServiceReloadMessage | ServiceResponseMessage | ServiceErrorMessage | ServiceEventMessage;
|
|
16
|
+
export type ServiceServerRawMessage = ServiceProgressMessage | ServiceServerMessage;
|
|
17
|
+
export type ServiceClientMessage = ServiceRequestMessage | ServiceAuthMessage | ServiceAddEventListenerMessage | ServiceRemoveEventListenerMessage | ServiceGetEventListenerInfosMessage | ServiceEmitEventMessage;
|
|
18
|
+
/** 서버: 클라이언트에게 reload 명령 */
|
|
19
|
+
export interface ServiceReloadMessage {
|
|
20
|
+
name: "reload";
|
|
21
|
+
body: {
|
|
22
|
+
clientName: string | undefined;
|
|
23
|
+
changedFileSet: Set<string>;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** 서버: 받은 분할메시지에 대한 progress 알림 */
|
|
27
|
+
export interface ServiceProgressMessage {
|
|
28
|
+
name: "progress";
|
|
29
|
+
body: {
|
|
30
|
+
totalSize: number;
|
|
31
|
+
completedSize: number;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/** 서버: 에러 발생 알림 */
|
|
35
|
+
export interface ServiceErrorMessage {
|
|
36
|
+
name: "error";
|
|
37
|
+
body: {
|
|
38
|
+
name: string;
|
|
39
|
+
message: string;
|
|
40
|
+
code: string;
|
|
41
|
+
stack?: string;
|
|
42
|
+
detail?: unknown;
|
|
43
|
+
cause?: unknown;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** 클라: 인증 메시지 */
|
|
47
|
+
export interface ServiceAuthMessage {
|
|
48
|
+
name: "auth";
|
|
49
|
+
body: string;
|
|
50
|
+
}
|
|
51
|
+
/** 클라: ServiceMethod 요청 */
|
|
52
|
+
export interface ServiceRequestMessage {
|
|
53
|
+
name: `${string}.${string}`;
|
|
54
|
+
body: unknown[];
|
|
55
|
+
}
|
|
56
|
+
/** 서버: ServiceMethod 응답 */
|
|
57
|
+
export interface ServiceResponseMessage {
|
|
58
|
+
name: "response";
|
|
59
|
+
body?: unknown;
|
|
60
|
+
}
|
|
61
|
+
/** 클라: 이벤트 리스너 등록 */
|
|
62
|
+
export interface ServiceAddEventListenerMessage {
|
|
63
|
+
name: "evt:add";
|
|
64
|
+
body: {
|
|
65
|
+
key: string;
|
|
66
|
+
name: string;
|
|
67
|
+
info: unknown;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/** 클라: 이벤트 리스너 제거 */
|
|
71
|
+
export interface ServiceRemoveEventListenerMessage {
|
|
72
|
+
name: "evt:remove";
|
|
73
|
+
body: {
|
|
74
|
+
key: string;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** 클라: 이벤트 리스너 정보 목록 요청 */
|
|
78
|
+
export interface ServiceGetEventListenerInfosMessage {
|
|
79
|
+
name: "evt:gets";
|
|
80
|
+
body: {
|
|
81
|
+
name: string;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/** 클라: 이벤트 발생 */
|
|
85
|
+
export interface ServiceEmitEventMessage {
|
|
86
|
+
name: "evt:emit";
|
|
87
|
+
body: {
|
|
88
|
+
keys: string[];
|
|
89
|
+
data: unknown;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/** 서버: 이벤트 발생 알림 */
|
|
93
|
+
export interface ServiceEventMessage {
|
|
94
|
+
name: "evt:on";
|
|
95
|
+
body: {
|
|
96
|
+
keys: string[];
|
|
97
|
+
data: unknown;
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=protocol.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.types.d.ts","sourceRoot":"","sources":["../../../../../service-common/src/protocol/protocol.types.ts"],"names":[],"mappings":"AAIA,kBAAkB;AAClB,eAAO,MAAM,eAAe;IAC1B,wBAAwB;;IAExB,mBAAmB;;IAEnB,oBAAoB;;IAEpB,kBAAkB;;IAElB,0BAA0B;;CAElB,CAAC;AAMX,MAAM,MAAM,cAAc,GACtB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,sBAAsB,GACtB,sBAAsB,GACtB,mBAAmB,GACnB,8BAA8B,GAC9B,iCAAiC,GACjC,mCAAmC,GACnC,uBAAuB,GACvB,mBAAmB,CAAC;AAExB,MAAM,MAAM,oBAAoB,GAC5B,oBAAoB,GACpB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,CAAC;AAExB,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAEpF,MAAM,MAAM,oBAAoB,GAC5B,qBAAqB,GACrB,kBAAkB,GAClB,8BAA8B,GAC9B,iCAAiC,GACjC,mCAAmC,GACnC,uBAAuB,CAAC;AAM5B,4BAA4B;AAC5B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;KAC7B,CAAC;CACH;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,mBAAmB;AACnB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED,iBAAiB;AACjB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,2BAA2B;AAC3B,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,2BAA2B;AAC3B,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAMD,qBAAqB;AACrB,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,qBAAqB;AACrB,MAAM,WAAW,iCAAiC;IAChD,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,2BAA2B;AAC3B,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,iBAAiB;AACjB,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,oBAAoB;AACpB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Bytes } from "@simplysm/core-common";
|
|
2
|
+
import "@simplysm/core-common";
|
|
3
|
+
import { type ServiceMessage } from "./protocol.types";
|
|
4
|
+
/**
|
|
5
|
+
* 서비스 프로토콜 인코더/디코더
|
|
6
|
+
*
|
|
7
|
+
* Binary Protocol V2:
|
|
8
|
+
* - Header: 28 bytes (UUID 16 + TotalSize 8 + Index 4)
|
|
9
|
+
* - Body: JSON
|
|
10
|
+
* - 자동 청킹: 3MB 초과 시 300KB 단위 분할
|
|
11
|
+
* - 최대 메시지: 100MB
|
|
12
|
+
*/
|
|
13
|
+
export declare class ServiceProtocol {
|
|
14
|
+
/**
|
|
15
|
+
* 메시지 인코딩 (필요 시 자동 분할)
|
|
16
|
+
*/
|
|
17
|
+
encode(uuid: string, message: ServiceMessage): {
|
|
18
|
+
chunks: Bytes[];
|
|
19
|
+
totalSize: number;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* 메시지 청크 인코딩 (헤더 + 바디)
|
|
23
|
+
*
|
|
24
|
+
* 헤더 구조 (28 bytes, Big Endian):
|
|
25
|
+
* ```
|
|
26
|
+
* Offset Size Field
|
|
27
|
+
* ------ ---- -----
|
|
28
|
+
* 0 16 UUID (binary)
|
|
29
|
+
* 16 8 TotalSize (uint64)
|
|
30
|
+
* 24 4 Index (uint32)
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
private _encode;
|
|
34
|
+
private readonly _accumulator;
|
|
35
|
+
/**
|
|
36
|
+
* 프로토콜 인스턴스를 정리한다.
|
|
37
|
+
*
|
|
38
|
+
* 내부 청크 누적기의 GC 타이머를 해제하고 메모리를 정리한다.
|
|
39
|
+
* 프로토콜 인스턴스 사용이 끝나면 반드시 호출해야 한다.
|
|
40
|
+
*/
|
|
41
|
+
dispose(): void;
|
|
42
|
+
/**
|
|
43
|
+
* 메시지 디코딩 (분할 패킷 자동 조립)
|
|
44
|
+
*/
|
|
45
|
+
decode<T extends ServiceMessage>(bytes: Bytes): ServiceMessageDecodeResult<T>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 메시지 디코딩 결과 타입 (유니온)
|
|
49
|
+
*
|
|
50
|
+
* - `type: "complete"`: 모든 청크가 수신되어 메시지 조립이 완료됨
|
|
51
|
+
* - `type: "progress"`: 분할 메시지 수신 중 (일부 청크만 도착)
|
|
52
|
+
*/
|
|
53
|
+
export type ServiceMessageDecodeResult<T extends ServiceMessage> = {
|
|
54
|
+
type: "complete";
|
|
55
|
+
uuid: string;
|
|
56
|
+
message: T;
|
|
57
|
+
} | {
|
|
58
|
+
type: "progress";
|
|
59
|
+
uuid: string;
|
|
60
|
+
totalSize: number;
|
|
61
|
+
completedSize: number;
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=service-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-protocol.d.ts","sourceRoot":"","sources":["../../../../../service-common/src/protocol/service-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,uBAAuB,CAAC;AAE/B,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAExE;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAK1B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAqCrF;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,OAAO;IA0Bf,OAAO,CAAC,QAAQ,CAAC,YAAY,CAU1B;IAEH;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,0BAA0B,CAAC,CAAC,CAAC;CAmE9E;AAED;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,cAAc,IAC3D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 자동 업데이트 서비스 인터페이스
|
|
3
|
+
*
|
|
4
|
+
* 클라이언트 애플리케이션의 최신 버전 정보를 조회한다.
|
|
5
|
+
*/
|
|
6
|
+
export interface AutoUpdateService {
|
|
7
|
+
/**
|
|
8
|
+
* 지정된 플랫폼의 최신 버전 정보를 조회한다.
|
|
9
|
+
* @param platform 대상 플랫폼 (예: "win32", "darwin", "linux")
|
|
10
|
+
* @returns 최신 버전 정보. 버전이 없으면 undefined
|
|
11
|
+
*/
|
|
12
|
+
getLastVersion(platform: string): Promise<{
|
|
13
|
+
version: string;
|
|
14
|
+
downloadPath: string;
|
|
15
|
+
} | undefined>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=auto-update-service.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-update-service.types.d.ts","sourceRoot":"","sources":["../../../../../service-common/src/service-types/auto-update-service.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CACrC;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,GACD,SAAS,CACZ,CAAC;CACH"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Bytes } from "@simplysm/core-common";
|
|
2
|
+
/**
|
|
3
|
+
* 암호화 서비스 인터페이스
|
|
4
|
+
*
|
|
5
|
+
* SHA256 해시 및 AES 대칭키 암호화/복호화 기능을 제공한다.
|
|
6
|
+
*/
|
|
7
|
+
export interface CryptoService {
|
|
8
|
+
/** SHA256 해시 생성 */
|
|
9
|
+
encrypt(data: string | Bytes): Promise<string>;
|
|
10
|
+
/** AES 암호화 */
|
|
11
|
+
encryptAes(data: Bytes): Promise<string>;
|
|
12
|
+
/** AES 복호화 */
|
|
13
|
+
decryptAes(encText: string): Promise<Bytes>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 암호화 서비스 설정
|
|
17
|
+
*/
|
|
18
|
+
export interface CryptoConfig {
|
|
19
|
+
/** AES 암호화 키 */
|
|
20
|
+
key: string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=crypto-service.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-service.types.d.ts","sourceRoot":"","sources":["../../../../../service-common/src/service-types/crypto-service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,cAAc;IACd,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,cAAc;IACd,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,GAAG,EAAE,MAAM,CAAC;CACb"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Dialect, IsolationLevel, QueryDef, ColumnMeta, ResultMeta } from "@simplysm/orm-common";
|
|
2
|
+
/**
|
|
3
|
+
* ORM 서비스 인터페이스
|
|
4
|
+
*
|
|
5
|
+
* 데이터베이스 연결, 트랜잭션 관리, 쿼리 실행 기능을 제공한다.
|
|
6
|
+
* MySQL, MSSQL, PostgreSQL을 지원한다.
|
|
7
|
+
*/
|
|
8
|
+
export interface OrmService {
|
|
9
|
+
getInfo(opt: DbConnOptions & {
|
|
10
|
+
configName: string;
|
|
11
|
+
}): Promise<{
|
|
12
|
+
dialect: Dialect;
|
|
13
|
+
database?: string;
|
|
14
|
+
schema?: string;
|
|
15
|
+
}>;
|
|
16
|
+
connect(opt: Record<string, unknown>): Promise<number>;
|
|
17
|
+
close(connId: number): Promise<void>;
|
|
18
|
+
beginTransaction(connId: number, isolationLevel?: IsolationLevel): Promise<void>;
|
|
19
|
+
commitTransaction(connId: number): Promise<void>;
|
|
20
|
+
rollbackTransaction(connId: number): Promise<void>;
|
|
21
|
+
executeParametrized(connId: number, query: string, params?: unknown[]): Promise<unknown[][]>;
|
|
22
|
+
executeDefs(connId: number, defs: QueryDef[], options?: (ResultMeta | undefined)[]): Promise<unknown[][]>;
|
|
23
|
+
bulkInsert(connId: number, tableName: string, columnDefs: Record<string, ColumnMeta>, records: Record<string, unknown>[]): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
/** 데이터베이스 연결 옵션 */
|
|
26
|
+
export type DbConnOptions = {
|
|
27
|
+
configName?: string;
|
|
28
|
+
config?: Record<string, unknown>;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=orm-service.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-service.types.d.ts","sourceRoot":"","sources":["../../../../../service-common/src/service-types/orm-service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEtG;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC5D,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjF,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE7F,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE1G,UAAU,CACR,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED,mBAAmB;AACnB,MAAM,MAAM,aAAa,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC"}
|