@simplysm/service-common 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.
Files changed (158) hide show
  1. package/README.md +336 -0
  2. package/dist/core-common/src/common.types.d.ts +74 -0
  3. package/dist/core-common/src/common.types.d.ts.map +1 -0
  4. package/dist/core-common/src/env.d.ts +6 -0
  5. package/dist/core-common/src/env.d.ts.map +1 -0
  6. package/dist/core-common/src/errors/argument-error.d.ts +25 -0
  7. package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
  8. package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
  9. package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
  10. package/dist/core-common/src/errors/sd-error.d.ts +27 -0
  11. package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
  12. package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
  13. package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
  14. package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
  15. package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
  16. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
  17. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
  18. package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
  19. package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
  20. package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
  21. package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
  22. package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
  23. package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
  24. package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
  25. package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
  26. package/dist/core-common/src/features/event-emitter.d.ts +66 -0
  27. package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
  28. package/dist/core-common/src/features/serial-queue.d.ts +47 -0
  29. package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
  30. package/dist/core-common/src/index.d.ts +32 -0
  31. package/dist/core-common/src/index.d.ts.map +1 -0
  32. package/dist/core-common/src/types/date-only.d.ts +152 -0
  33. package/dist/core-common/src/types/date-only.d.ts.map +1 -0
  34. package/dist/core-common/src/types/date-time.d.ts +96 -0
  35. package/dist/core-common/src/types/date-time.d.ts.map +1 -0
  36. package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
  37. package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
  38. package/dist/core-common/src/types/time.d.ts +68 -0
  39. package/dist/core-common/src/types/time.d.ts.map +1 -0
  40. package/dist/core-common/src/types/uuid.d.ts +35 -0
  41. package/dist/core-common/src/types/uuid.d.ts.map +1 -0
  42. package/dist/core-common/src/utils/bytes.d.ts +51 -0
  43. package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
  44. package/dist/core-common/src/utils/date-format.d.ts +90 -0
  45. package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
  46. package/dist/core-common/src/utils/json.d.ts +34 -0
  47. package/dist/core-common/src/utils/json.d.ts.map +1 -0
  48. package/dist/core-common/src/utils/num.d.ts +60 -0
  49. package/dist/core-common/src/utils/num.d.ts.map +1 -0
  50. package/dist/core-common/src/utils/obj.d.ts +258 -0
  51. package/dist/core-common/src/utils/obj.d.ts.map +1 -0
  52. package/dist/core-common/src/utils/path.d.ts +23 -0
  53. package/dist/core-common/src/utils/path.d.ts.map +1 -0
  54. package/dist/core-common/src/utils/primitive.d.ts +18 -0
  55. package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
  56. package/dist/core-common/src/utils/str.d.ts +103 -0
  57. package/dist/core-common/src/utils/str.d.ts.map +1 -0
  58. package/dist/core-common/src/utils/template-strings.d.ts +84 -0
  59. package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
  60. package/dist/core-common/src/utils/transferable.d.ts +47 -0
  61. package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
  62. package/dist/core-common/src/utils/wait.d.ts +19 -0
  63. package/dist/core-common/src/utils/wait.d.ts.map +1 -0
  64. package/dist/core-common/src/utils/xml.d.ts +36 -0
  65. package/dist/core-common/src/utils/xml.d.ts.map +1 -0
  66. package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
  67. package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
  68. package/dist/index.js +8 -0
  69. package/dist/index.js.map +7 -0
  70. package/dist/orm-common/src/db-context.d.ts +669 -0
  71. package/dist/orm-common/src/db-context.d.ts.map +1 -0
  72. package/dist/orm-common/src/errors/db-transaction-error.d.ts +51 -0
  73. package/dist/orm-common/src/errors/db-transaction-error.d.ts.map +1 -0
  74. package/dist/orm-common/src/exec/executable.d.ts +79 -0
  75. package/dist/orm-common/src/exec/executable.d.ts.map +1 -0
  76. package/dist/orm-common/src/exec/queryable.d.ts +708 -0
  77. package/dist/orm-common/src/exec/queryable.d.ts.map +1 -0
  78. package/dist/orm-common/src/exec/search-parser.d.ts +72 -0
  79. package/dist/orm-common/src/exec/search-parser.d.ts.map +1 -0
  80. package/dist/orm-common/src/expr/expr-unit.d.ts +25 -0
  81. package/dist/orm-common/src/expr/expr-unit.d.ts.map +1 -0
  82. package/dist/orm-common/src/expr/expr.d.ts +1369 -0
  83. package/dist/orm-common/src/expr/expr.d.ts.map +1 -0
  84. package/dist/orm-common/src/index.d.ts +32 -0
  85. package/dist/orm-common/src/index.d.ts.map +1 -0
  86. package/dist/orm-common/src/models/system-migration.d.ts +10 -0
  87. package/dist/orm-common/src/models/system-migration.d.ts.map +1 -0
  88. package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts +95 -0
  89. package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts.map +1 -0
  90. package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts +66 -0
  91. package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts.map +1 -0
  92. package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts +84 -0
  93. package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -0
  94. package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts +45 -0
  95. package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts.map +1 -0
  96. package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts +84 -0
  97. package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -0
  98. package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts +54 -0
  99. package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts.map +1 -0
  100. package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts +84 -0
  101. package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -0
  102. package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts +52 -0
  103. package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -0
  104. package/dist/orm-common/src/query-builder/query-builder.d.ts +7 -0
  105. package/dist/orm-common/src/query-builder/query-builder.d.ts.map +1 -0
  106. package/dist/orm-common/src/schema/factory/column-builder.d.ts +394 -0
  107. package/dist/orm-common/src/schema/factory/column-builder.d.ts.map +1 -0
  108. package/dist/orm-common/src/schema/factory/index-builder.d.ts +151 -0
  109. package/dist/orm-common/src/schema/factory/index-builder.d.ts.map +1 -0
  110. package/dist/orm-common/src/schema/factory/relation-builder.d.ts +337 -0
  111. package/dist/orm-common/src/schema/factory/relation-builder.d.ts.map +1 -0
  112. package/dist/orm-common/src/schema/procedure-builder.d.ts +202 -0
  113. package/dist/orm-common/src/schema/procedure-builder.d.ts.map +1 -0
  114. package/dist/orm-common/src/schema/table-builder.d.ts +259 -0
  115. package/dist/orm-common/src/schema/table-builder.d.ts.map +1 -0
  116. package/dist/orm-common/src/schema/view-builder.d.ts +183 -0
  117. package/dist/orm-common/src/schema/view-builder.d.ts.map +1 -0
  118. package/dist/orm-common/src/types/column.d.ts +172 -0
  119. package/dist/orm-common/src/types/column.d.ts.map +1 -0
  120. package/dist/orm-common/src/types/db.d.ts +175 -0
  121. package/dist/orm-common/src/types/db.d.ts.map +1 -0
  122. package/dist/orm-common/src/types/expr.d.ts +474 -0
  123. package/dist/orm-common/src/types/expr.d.ts.map +1 -0
  124. package/dist/orm-common/src/types/query-def.d.ts +351 -0
  125. package/dist/orm-common/src/types/query-def.d.ts.map +1 -0
  126. package/dist/orm-common/src/utils/result-parser.d.ts +38 -0
  127. package/dist/orm-common/src/utils/result-parser.d.ts.map +1 -0
  128. package/dist/protocol/protocol.types.js +16 -0
  129. package/dist/protocol/protocol.types.js.map +7 -0
  130. package/dist/protocol/service-protocol.js +134 -0
  131. package/dist/protocol/service-protocol.js.map +7 -0
  132. package/dist/service-common/src/index.d.ts +8 -0
  133. package/dist/service-common/src/index.d.ts.map +1 -0
  134. package/dist/service-common/src/protocol/protocol.types.d.ts +100 -0
  135. package/dist/service-common/src/protocol/protocol.types.d.ts.map +1 -0
  136. package/dist/service-common/src/protocol/service-protocol.d.ts +63 -0
  137. package/dist/service-common/src/protocol/service-protocol.d.ts.map +1 -0
  138. package/dist/service-common/src/service-types/auto-update-service.types.d.ts +17 -0
  139. package/dist/service-common/src/service-types/auto-update-service.types.d.ts.map +1 -0
  140. package/dist/service-common/src/service-types/crypto-service.types.d.ts +22 -0
  141. package/dist/service-common/src/service-types/crypto-service.types.d.ts.map +1 -0
  142. package/dist/service-common/src/service-types/orm-service.types.d.ts +30 -0
  143. package/dist/service-common/src/service-types/orm-service.types.d.ts.map +1 -0
  144. package/dist/service-common/src/service-types/smtp-service.types.d.ts +55 -0
  145. package/dist/service-common/src/service-types/smtp-service.types.d.ts.map +1 -0
  146. package/dist/service-common/src/types.d.ts +43 -0
  147. package/dist/service-common/src/types.d.ts.map +1 -0
  148. package/dist/service-types/auto-update-service.types.js +1 -0
  149. package/dist/service-types/auto-update-service.types.js.map +7 -0
  150. package/dist/service-types/crypto-service.types.js +1 -0
  151. package/dist/service-types/crypto-service.types.js.map +7 -0
  152. package/dist/service-types/orm-service.types.js +1 -0
  153. package/dist/service-types/orm-service.types.js.map +7 -0
  154. package/dist/service-types/smtp-service.types.js +1 -0
  155. package/dist/service-types/smtp-service.types.js.map +7 -0
  156. package/dist/types.js +6 -0
  157. package/dist/types.js.map +7 -0
  158. package/package.json +23 -0
@@ -0,0 +1,351 @@
1
+ import type { ColumnPrimitive, DataType } from "./column";
2
+ import type { Expr, WhereExpr } from "./expr";
3
+ /**
4
+ * DB 객체 이름 (테이블, 뷰, 프로시저 등)
5
+ *
6
+ * DBMS별 네임스페이스:
7
+ * - MySQL: `database.name` (schema 무시)
8
+ * - MSSQL: `database.schema.name` (schema 기본값: dbo)
9
+ * - PostgreSQL: `schema.name` (database는 connection용)
10
+ */
11
+ export interface QueryDefObjectName {
12
+ database?: string;
13
+ schema?: string;
14
+ name: string;
15
+ }
16
+ /**
17
+ * CUD 쿼리의 OUTPUT 절 정의
18
+ *
19
+ * INSERT/UPDATE/DELETE 후 반환값 정의
20
+ */
21
+ export interface CudOutputDef {
22
+ columns: string[];
23
+ pkColNames: string[];
24
+ aiColName?: string;
25
+ }
26
+ /**
27
+ * SELECT 쿼리 정의
28
+ *
29
+ * @property type - 쿼리 타입 ("select")
30
+ * @property from - FROM 절 (테이블/서브쿼리)
31
+ * @property as - 테이블 별칭
32
+ * @property select - SELECT 절 컬럼 매핑
33
+ * @property distinct - DISTINCT 여부
34
+ * @property top - TOP N (MSSQL)
35
+ * @property lock - 락 여부
36
+ * @property where - WHERE 조건 배열
37
+ * @property joins - JOIN 정의 배열
38
+ * @property orderBy - ORDER BY [컬럼, 방향] 배열
39
+ * @property limit - LIMIT [offset, count]
40
+ * @property groupBy - GROUP BY 표현식 배열
41
+ * @property having - HAVING 조건 배열
42
+ * @property with - 재귀 CTE 정의
43
+ */
44
+ export interface SelectQueryDef {
45
+ type: "select";
46
+ from?: QueryDefObjectName | SelectQueryDef | SelectQueryDef[] | string;
47
+ as: string;
48
+ select?: Record<string, Expr>;
49
+ distinct?: boolean;
50
+ top?: number;
51
+ lock?: boolean;
52
+ where?: WhereExpr[];
53
+ joins?: SelectQueryDefJoin[];
54
+ orderBy?: [Expr, ("ASC" | "DESC")?][];
55
+ limit?: [number, number];
56
+ groupBy?: Expr[];
57
+ having?: WhereExpr[];
58
+ with?: {
59
+ name: string;
60
+ base: SelectQueryDef;
61
+ recursive: SelectQueryDef;
62
+ };
63
+ }
64
+ /**
65
+ * JOIN 쿼리 정의
66
+ *
67
+ * SelectQueryDef 확장 + isSingle 플래그
68
+ */
69
+ export interface SelectQueryDefJoin extends SelectQueryDef {
70
+ /** 단일 결과 여부 (1:1 관계) */
71
+ isSingle?: boolean;
72
+ }
73
+ /**
74
+ * INSERT 쿼리 정의
75
+ *
76
+ * @property records - 삽입할 레코드 배열
77
+ * @property overrideIdentity - IDENTITY_INSERT 활성화 여부
78
+ * @property output - OUTPUT 절 정의
79
+ */
80
+ export interface InsertQueryDef {
81
+ type: "insert";
82
+ table: QueryDefObjectName;
83
+ records: Record<string, ColumnPrimitive>[];
84
+ overrideIdentity?: boolean;
85
+ output?: CudOutputDef;
86
+ }
87
+ /**
88
+ * 조건부 INSERT 쿼리 정의
89
+ *
90
+ * 존재하지 않는 경우에만 삽입
91
+ */
92
+ export interface InsertIfNotExistsQueryDef {
93
+ type: "insertIfNotExists";
94
+ table: QueryDefObjectName;
95
+ record: Record<string, ColumnPrimitive>;
96
+ existsSelectQuery: SelectQueryDef;
97
+ overrideIdentity?: boolean;
98
+ output?: CudOutputDef;
99
+ }
100
+ /**
101
+ * INSERT INTO SELECT 쿼리 정의
102
+ *
103
+ * 서브쿼리 결과를 삽입
104
+ */
105
+ export interface InsertIntoQueryDef {
106
+ type: "insertInto";
107
+ table: QueryDefObjectName;
108
+ recordsSelectQuery: SelectQueryDef;
109
+ overrideIdentity?: boolean;
110
+ output?: CudOutputDef;
111
+ }
112
+ /**
113
+ * UPDATE 쿼리 정의
114
+ *
115
+ * @property record - 업데이트할 컬럼/값 매핑
116
+ * @property joins - UPDATE JOIN (지원 시)
117
+ */
118
+ export interface UpdateQueryDef {
119
+ type: "update";
120
+ table: QueryDefObjectName;
121
+ as: string;
122
+ record: Record<string, Expr>;
123
+ top?: number;
124
+ where?: WhereExpr[];
125
+ joins?: SelectQueryDefJoin[];
126
+ limit?: [number, number];
127
+ output?: CudOutputDef;
128
+ }
129
+ /**
130
+ * DELETE 쿼리 정의
131
+ */
132
+ export interface DeleteQueryDef {
133
+ type: "delete";
134
+ table: QueryDefObjectName;
135
+ as: string;
136
+ top?: number;
137
+ where?: WhereExpr[];
138
+ joins?: SelectQueryDefJoin[];
139
+ limit?: [number, number];
140
+ output?: CudOutputDef;
141
+ }
142
+ /**
143
+ * UPSERT 쿼리 정의
144
+ *
145
+ * INSERT or UPDATE (MERGE 패턴)
146
+ */
147
+ export interface UpsertQueryDef {
148
+ type: "upsert";
149
+ table: QueryDefObjectName;
150
+ existsSelectQuery: SelectQueryDef;
151
+ insertRecord: Record<string, Expr>;
152
+ updateRecord: Record<string, Expr>;
153
+ overrideIdentity?: boolean;
154
+ output?: CudOutputDef;
155
+ }
156
+ /** FK 제약조건 활성화/비활성화 */
157
+ export interface SwitchFkQueryDef {
158
+ type: "switchFk";
159
+ table: QueryDefObjectName;
160
+ switch: "on" | "off";
161
+ }
162
+ /** 스키마 초기화 (모든 객체 삭제) */
163
+ export interface ClearSchemaQueryDef {
164
+ type: "clearSchema";
165
+ database: string;
166
+ schema?: string;
167
+ }
168
+ /** CREATE TABLE */
169
+ export interface CreateTableQueryDef {
170
+ type: "createTable";
171
+ table: QueryDefObjectName;
172
+ columns: {
173
+ name: string;
174
+ dataType: DataType;
175
+ autoIncrement?: boolean;
176
+ nullable?: boolean;
177
+ default?: ColumnPrimitive;
178
+ }[];
179
+ primaryKey?: string[];
180
+ }
181
+ /** DROP TABLE */
182
+ export interface DropTableQueryDef {
183
+ type: "dropTable";
184
+ table: QueryDefObjectName;
185
+ }
186
+ /** RENAME TABLE */
187
+ export interface RenameTableQueryDef {
188
+ type: "renameTable";
189
+ table: QueryDefObjectName;
190
+ newName: string;
191
+ }
192
+ /** TRUNCATE TABLE */
193
+ export interface TruncateQueryDef {
194
+ type: "truncate";
195
+ table: QueryDefObjectName;
196
+ }
197
+ /** ADD COLUMN */
198
+ export interface AddColumnQueryDef {
199
+ type: "addColumn";
200
+ table: QueryDefObjectName;
201
+ column: {
202
+ name: string;
203
+ dataType: DataType;
204
+ autoIncrement?: boolean;
205
+ nullable?: boolean;
206
+ default?: ColumnPrimitive;
207
+ };
208
+ }
209
+ /** DROP COLUMN */
210
+ export interface DropColumnQueryDef {
211
+ type: "dropColumn";
212
+ table: QueryDefObjectName;
213
+ column: string;
214
+ }
215
+ /** MODIFY COLUMN (타입/속성 변경) */
216
+ export interface ModifyColumnQueryDef {
217
+ type: "modifyColumn";
218
+ table: QueryDefObjectName;
219
+ column: {
220
+ name: string;
221
+ dataType: DataType;
222
+ autoIncrement?: boolean;
223
+ nullable?: boolean;
224
+ default?: ColumnPrimitive;
225
+ };
226
+ }
227
+ /** RENAME COLUMN */
228
+ export interface RenameColumnQueryDef {
229
+ type: "renameColumn";
230
+ table: QueryDefObjectName;
231
+ column: string;
232
+ newName: string;
233
+ }
234
+ /** DROP PRIMARY KEY */
235
+ export interface DropPkQueryDef {
236
+ type: "dropPk";
237
+ table: QueryDefObjectName;
238
+ }
239
+ /** ADD PRIMARY KEY */
240
+ export interface AddPkQueryDef {
241
+ type: "addPk";
242
+ table: QueryDefObjectName;
243
+ columns: string[];
244
+ }
245
+ /** ADD FOREIGN KEY */
246
+ export interface AddFkQueryDef {
247
+ type: "addFk";
248
+ table: QueryDefObjectName;
249
+ foreignKey: {
250
+ name: string;
251
+ fkColumns: string[];
252
+ targetTable: QueryDefObjectName;
253
+ targetPkColumns: string[];
254
+ };
255
+ }
256
+ /** DROP FOREIGN KEY */
257
+ export interface DropFkQueryDef {
258
+ type: "dropFk";
259
+ table: QueryDefObjectName;
260
+ foreignKey: string;
261
+ }
262
+ /** CREATE INDEX */
263
+ export interface AddIdxQueryDef {
264
+ type: "addIdx";
265
+ table: QueryDefObjectName;
266
+ index: {
267
+ name: string;
268
+ columns: {
269
+ name: string;
270
+ orderBy: "ASC" | "DESC";
271
+ }[];
272
+ unique?: boolean;
273
+ };
274
+ }
275
+ /** DROP INDEX */
276
+ export interface DropIdxQueryDef {
277
+ type: "dropIdx";
278
+ table: QueryDefObjectName;
279
+ index: string;
280
+ }
281
+ /** CREATE VIEW */
282
+ export interface CreateViewQueryDef {
283
+ type: "createView";
284
+ view: QueryDefObjectName;
285
+ queryDef: SelectQueryDef;
286
+ }
287
+ /** DROP VIEW */
288
+ export interface DropViewQueryDef {
289
+ type: "dropView";
290
+ view: QueryDefObjectName;
291
+ }
292
+ /** CREATE PROCEDURE */
293
+ export interface CreateProcQueryDef {
294
+ type: "createProc";
295
+ procedure: QueryDefObjectName;
296
+ params?: Array<{
297
+ name: string;
298
+ dataType: DataType;
299
+ nullable?: boolean;
300
+ default?: unknown;
301
+ }>;
302
+ returns?: Array<{
303
+ name: string;
304
+ dataType: DataType;
305
+ nullable?: boolean;
306
+ }>;
307
+ query: string;
308
+ }
309
+ /** DROP PROCEDURE */
310
+ export interface DropProcQueryDef {
311
+ type: "dropProc";
312
+ procedure: QueryDefObjectName;
313
+ }
314
+ /** EXECUTE PROCEDURE */
315
+ export interface ExecProcQueryDef {
316
+ type: "execProc";
317
+ procedure: QueryDefObjectName;
318
+ params: Record<string, Expr> | undefined;
319
+ }
320
+ /** 스키마 존재 여부 확인 */
321
+ export interface SchemaExistsQueryDef {
322
+ type: "schemaExists";
323
+ database: string;
324
+ schema?: string;
325
+ }
326
+ /**
327
+ * DDL (Data Definition Language) 타입 상수
328
+ *
329
+ * 트랜잭션 내 DDL 차단 및 DDL 타입 검증에 사용
330
+ * satisfies 키워드로 DdlQueryDef와의 동기화를 컴파일 타임에 검증
331
+ *
332
+ * @remarks
333
+ * switchFk는 DDL이 아니므로 제외 (트랜잭션 내 사용 가능)
334
+ */
335
+ export declare const DDL_TYPES: readonly ["clearSchema", "createTable", "dropTable", "renameTable", "truncate", "addColumn", "dropColumn", "modifyColumn", "renameColumn", "dropPk", "addPk", "addFk", "dropFk", "addIdx", "dropIdx", "createView", "dropView", "createProc", "dropProc"];
336
+ /** DDL 타입 유니언 */
337
+ export type DdlType = (typeof DDL_TYPES)[number];
338
+ /**
339
+ * 모든 쿼리 정의 유니언 타입
340
+ *
341
+ * DML (SELECT/INSERT/UPDATE/DELETE/UPSERT) +
342
+ * DDL (Table/Column/PK/FK/Index/View/Procedure) +
343
+ * Utils (SwitchFk) + Meta (SchemaExists)
344
+ *
345
+ * @see {@link SelectQueryDef} SELECT 쿼리
346
+ * @see {@link InsertQueryDef} INSERT 쿼리
347
+ * @see {@link UpdateQueryDef} UPDATE 쿼리
348
+ * @see {@link DeleteQueryDef} DELETE 쿼리
349
+ */
350
+ export type QueryDef = SelectQueryDef | InsertQueryDef | InsertIfNotExistsQueryDef | InsertIntoQueryDef | UpdateQueryDef | DeleteQueryDef | UpsertQueryDef | ClearSchemaQueryDef | CreateTableQueryDef | DropTableQueryDef | RenameTableQueryDef | TruncateQueryDef | AddColumnQueryDef | DropColumnQueryDef | ModifyColumnQueryDef | RenameColumnQueryDef | DropPkQueryDef | AddPkQueryDef | AddFkQueryDef | DropFkQueryDef | AddIdxQueryDef | DropIdxQueryDef | CreateViewQueryDef | DropViewQueryDef | CreateProcQueryDef | DropProcQueryDef | ExecProcQueryDef | SwitchFkQueryDef | SchemaExistsQueryDef;
351
+ //# sourceMappingURL=query-def.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-def.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/types/query-def.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { ResultMeta } from "../types/db";
2
+ /**
3
+ * DB 쿼리 결과를 ResultMeta를 통해 TypeScript 객체로 변환
4
+ *
5
+ * @param rawResults - DB에서 받은 raw 결과 배열
6
+ * @param meta - 타입 변환 및 JOIN 구조 정보 (필수)
7
+ * @returns 타입 변환 및 중첩화된 결과 배열. 입력이 비거나 유효한 결과가 없으면 undefined
8
+ * @throws 타입 파싱 실패 시 Error
9
+ *
10
+ * @remarks
11
+ * - meta 필수: meta가 없으면 이 함수를 호출할 필요 없음 (입력 = 출력)
12
+ * - async only: 대용량 처리 시 외부 인터럽트를 위해 동기 버전 미제공
13
+ * - browser/node 모두 지원: setTimeout(resolve, 0)으로 yield
14
+ * - 빈 결과 처리: 입력 배열이 비거나, 파싱 후 모든 레코드가 빈 객체인 경우 undefined 반환
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // 1. 단순 타입 파싱
19
+ * const raw = [{ id: "1", createdAt: "2026-01-07T10:00:00.000Z" }];
20
+ * const meta = { columns: { id: "number", createdAt: "DateTime" }, joins: {} };
21
+ * const result = await parseQueryResult(raw, meta);
22
+ * // [{ id: 1, createdAt: DateTime(...) }]
23
+ *
24
+ * // 2. JOIN 결과 중첩화
25
+ * const raw = [
26
+ * { id: 1, name: "User1", "posts.id": 10, "posts.title": "Post1" },
27
+ * { id: 1, name: "User1", "posts.id": 11, "posts.title": "Post2" },
28
+ * ];
29
+ * const meta = {
30
+ * columns: { id: "number", name: "string", "posts.id": "number", "posts.title": "string" },
31
+ * joins: { posts: { isSingle: false } }
32
+ * };
33
+ * const result = await parseQueryResult(raw, meta);
34
+ * // [{ id: 1, name: "User1", posts: [{ id: 10, title: "Post1" }, { id: 11, title: "Post2" }] }]
35
+ * ```
36
+ */
37
+ export declare function parseQueryResult<T>(rawResults: Record<string, unknown>[], meta: ResultMeta): Promise<T[] | undefined>;
38
+ //# sourceMappingURL=result-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-parser.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/utils/result-parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoH9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACrC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAe1B"}
@@ -0,0 +1,16 @@
1
+ const PROTOCOL_CONFIG = {
2
+ /** 최대 메시지 크기 (100MB) */
3
+ MAX_TOTAL_SIZE: 100 * 1024 * 1024,
4
+ /** 청킹 임계값 (3MB) */
5
+ SPLIT_MESSAGE_SIZE: 3 * 1024 * 1024,
6
+ /** 청크 크기 (300KB) */
7
+ CHUNK_SIZE: 300 * 1024,
8
+ /** GC 주기 (10초) */
9
+ GC_INTERVAL: 10 * 1e3,
10
+ /** 미완성 메시지 만료 시간 (60초) */
11
+ EXPIRE_TIME: 60 * 1e3
12
+ };
13
+ export {
14
+ PROTOCOL_CONFIG
15
+ };
16
+ //# sourceMappingURL=protocol.types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/protocol/protocol.types.ts"],
4
+ "sourcesContent": ["// ----------------------------------------------------------------------\n// Protocol Constants\n// ----------------------------------------------------------------------\n\n/** \uC11C\uBE44\uC2A4 \uD504\uB85C\uD1A0\uCF5C \uC124\uC815 */\nexport const PROTOCOL_CONFIG = {\n /** \uCD5C\uB300 \uBA54\uC2DC\uC9C0 \uD06C\uAE30 (100MB) */\n MAX_TOTAL_SIZE: 100 * 1024 * 1024,\n /** \uCCAD\uD0B9 \uC784\uACC4\uAC12 (3MB) */\n SPLIT_MESSAGE_SIZE: 3 * 1024 * 1024,\n /** \uCCAD\uD06C \uD06C\uAE30 (300KB) */\n CHUNK_SIZE: 300 * 1024,\n /** GC \uC8FC\uAE30 (10\uCD08) */\n GC_INTERVAL: 10 * 1000,\n /** \uBBF8\uC644\uC131 \uBA54\uC2DC\uC9C0 \uB9CC\uB8CC \uC2DC\uAC04 (60\uCD08) */\n EXPIRE_TIME: 60 * 1000,\n} as const;\n\n// ----------------------------------------------------------------------\n// Message Types\n// ----------------------------------------------------------------------\n\nexport type ServiceMessage =\n | ServiceReloadMessage\n | ServiceRequestMessage\n | ServiceAuthMessage\n | ServiceProgressMessage\n | ServiceResponseMessage\n | ServiceErrorMessage\n | ServiceAddEventListenerMessage\n | ServiceRemoveEventListenerMessage\n | ServiceGetEventListenerInfosMessage\n | ServiceEmitEventMessage\n | ServiceEventMessage;\n\nexport type ServiceServerMessage =\n | ServiceReloadMessage // \uC54C\uB9BC\n | ServiceResponseMessage\n | ServiceErrorMessage\n | ServiceEventMessage; // \uC54C\uB9BC\n\nexport type ServiceServerRawMessage = ServiceProgressMessage | ServiceServerMessage;\n\nexport type ServiceClientMessage =\n | ServiceRequestMessage\n | ServiceAuthMessage\n | ServiceAddEventListenerMessage\n | ServiceRemoveEventListenerMessage\n | ServiceGetEventListenerInfosMessage\n | ServiceEmitEventMessage;\n\n// ----------------------------------------------------------------------\n// System \uACF5\uD1B5\n// ----------------------------------------------------------------------\n\n/** \uC11C\uBC84: \uD074\uB77C\uC774\uC5B8\uD2B8\uC5D0\uAC8C reload \uBA85\uB839 */\nexport interface ServiceReloadMessage {\n name: \"reload\";\n body: {\n clientName: string | undefined; // \uD074\uB77C\uC774\uC5B8\uD2B8\uBA85\n changedFileSet: Set<string>; // \uBCC0\uACBD\uD30C\uC77C\uBAA9\uB85D\n };\n}\n\n/** \uC11C\uBC84: \uBC1B\uC740 \uBD84\uD560\uBA54\uC2DC\uC9C0\uC5D0 \uB300\uD55C progress \uC54C\uB9BC */\nexport interface ServiceProgressMessage {\n name: \"progress\";\n body: {\n totalSize: number; // \uCD1D \uD06C\uAE30 (Bytes)\n completedSize: number; // \uC644\uB8CC\uB41C \uD06C\uAE30 (Bytes)\n };\n}\n\n/** \uC11C\uBC84: \uC5D0\uB7EC \uBC1C\uC0DD \uC54C\uB9BC */\nexport interface ServiceErrorMessage {\n name: \"error\";\n body: {\n name: string;\n message: string;\n code: string;\n stack?: string;\n detail?: unknown;\n cause?: unknown;\n };\n}\n\n/** \uD074\uB77C: \uC778\uC99D \uBA54\uC2DC\uC9C0 */\nexport interface ServiceAuthMessage {\n name: \"auth\";\n body: string; // \uD1A0\uD070\n}\n\n// ----------------------------------------------------------------------\n// Service.Method\n// ----------------------------------------------------------------------\n\n/** \uD074\uB77C: ServiceMethod \uC694\uCCAD */\nexport interface ServiceRequestMessage {\n name: `${string}.${string}`; // ${service}.${method}\n body: unknown[]; // params\n}\n\n/** \uC11C\uBC84: ServiceMethod \uC751\uB2F5 */\nexport interface ServiceResponseMessage {\n name: \"response\";\n body?: unknown; // result\n}\n\n// ----------------------------------------------------------------------\n// \uC774\uBCA4\uD2B8\n// ----------------------------------------------------------------------\n\n/** \uD074\uB77C: \uC774\uBCA4\uD2B8 \uB9AC\uC2A4\uB108 \uB4F1\uB85D */\nexport interface ServiceAddEventListenerMessage {\n name: \"evt:add\";\n body: {\n key: string; // \uB9AC\uC2A4\uB108\uD0A4 (uuid) - \uCC28\uD6C4 removeEventListener\uB97C \uC704\uD574\uC11C\uB77C\uB3C4 \uD544\uC694\uD568\n name: string; // \uC774\uBCA4\uD2B8\uBA85 (Type.name)\n info: unknown; // \uC774\uBCA4\uD2B8 \uBC1C\uC0DD\uC2DC, \uB9AC\uC2A4\uB108 \uD544\uD130\uB9C1\uC774 \uAC00\uB2A5\uD558\uB3C4\uB85D \uD558\uAE30 \uC704\uD55C \"\uCD94\uAC00 \uB9AC\uC2A4\uB108 \uC815\uBCF4\"\n };\n}\n\n/** \uD074\uB77C: \uC774\uBCA4\uD2B8 \uB9AC\uC2A4\uB108 \uC81C\uAC70 */\nexport interface ServiceRemoveEventListenerMessage {\n name: \"evt:remove\";\n body: {\n key: string; // \uB9AC\uC2A4\uB108\uD0A4 (uuid)\n };\n}\n\n/** \uD074\uB77C: \uC774\uBCA4\uD2B8 \uB9AC\uC2A4\uB108 \uC815\uBCF4 \uBAA9\uB85D \uC694\uCCAD */\nexport interface ServiceGetEventListenerInfosMessage {\n name: \"evt:gets\";\n body: {\n name: string; // \uC774\uBCA4\uD2B8\uBA85\n };\n}\n\n/** \uD074\uB77C: \uC774\uBCA4\uD2B8 \uBC1C\uC0DD */\nexport interface ServiceEmitEventMessage {\n name: \"evt:emit\";\n body: {\n keys: string[]; // \uB9AC\uC2A4\uB108\uD0A4 \uBAA9\uB85D\n data: unknown; // \uB370\uC774\uD130\n };\n}\n\n/** \uC11C\uBC84: \uC774\uBCA4\uD2B8 \uBC1C\uC0DD \uC54C\uB9BC */\nexport interface ServiceEventMessage {\n name: \"evt:on\";\n body: {\n keys: string[]; // \uB9AC\uC2A4\uB108\uD0A4 \uBAA9\uB85D\n data: unknown; // \uB370\uC774\uD130\n };\n}\n"],
5
+ "mappings": "AAKO,MAAM,kBAAkB;AAAA;AAAA,EAE7B,gBAAgB,MAAM,OAAO;AAAA;AAAA,EAE7B,oBAAoB,IAAI,OAAO;AAAA;AAAA,EAE/B,YAAY,MAAM;AAAA;AAAA,EAElB,aAAa,KAAK;AAAA;AAAA,EAElB,aAAa,KAAK;AACpB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,134 @@
1
+ import "@simplysm/core-common";
2
+ import { ArgumentError, jsonStringify, jsonParse, LazyGcMap, Uuid, bytesConcat } from "@simplysm/core-common";
3
+ import { PROTOCOL_CONFIG } from "./protocol.types";
4
+ class ServiceProtocol {
5
+ // -------------------------------------------------------------------
6
+ // Encoding
7
+ // -------------------------------------------------------------------
8
+ /**
9
+ * 메시지 인코딩 (필요 시 자동 분할)
10
+ */
11
+ encode(uuid, message) {
12
+ const msgJson = jsonStringify([message.name, ..."body" in message ? [message.body] : []]);
13
+ const msgBytes = new TextEncoder().encode(msgJson);
14
+ const totalSize = msgBytes.length;
15
+ if (totalSize > PROTOCOL_CONFIG.MAX_TOTAL_SIZE) {
16
+ throw new ArgumentError("\uBA54\uC2DC\uC9C0 \uD06C\uAE30\uAC00 \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4.", {
17
+ totalSize,
18
+ maxSize: PROTOCOL_CONFIG.MAX_TOTAL_SIZE
19
+ });
20
+ }
21
+ if (totalSize <= PROTOCOL_CONFIG.SPLIT_MESSAGE_SIZE) {
22
+ return { chunks: [this._encode({ uuid, totalSize, index: 0 }, msgBytes)], totalSize };
23
+ }
24
+ const chunks = [];
25
+ let offset = 0;
26
+ let index = 0;
27
+ while (offset < totalSize) {
28
+ const chunkBodyBytes = msgBytes.subarray(offset, offset + PROTOCOL_CONFIG.CHUNK_SIZE);
29
+ const chunk = this._encode({ uuid, totalSize, index }, chunkBodyBytes);
30
+ chunks.push(chunk);
31
+ offset += PROTOCOL_CONFIG.CHUNK_SIZE;
32
+ index++;
33
+ }
34
+ return { chunks, totalSize };
35
+ }
36
+ /**
37
+ * 메시지 청크 인코딩 (헤더 + 바디)
38
+ *
39
+ * 헤더 구조 (28 bytes, Big Endian):
40
+ * ```
41
+ * Offset Size Field
42
+ * ------ ---- -----
43
+ * 0 16 UUID (binary)
44
+ * 16 8 TotalSize (uint64)
45
+ * 24 4 Index (uint32)
46
+ * ```
47
+ */
48
+ _encode(header, bodyBytes) {
49
+ const headerBytes = new Uint8Array(28);
50
+ const uuidBytes = new Uuid(header.uuid).toBytes();
51
+ headerBytes.set(uuidBytes, 0);
52
+ const headerView = new DataView(headerBytes.buffer, headerBytes.byteOffset, headerBytes.byteLength);
53
+ headerView.setBigUint64(16, BigInt(header.totalSize), false);
54
+ headerView.setUint32(24, header.index, false);
55
+ return bytesConcat([headerBytes, ...bodyBytes ? [bodyBytes] : []]);
56
+ }
57
+ // -------------------------------------------------------------------
58
+ // Decoding
59
+ // -------------------------------------------------------------------
60
+ _accumulator = new LazyGcMap({
61
+ gcInterval: PROTOCOL_CONFIG.GC_INTERVAL,
62
+ expireTime: PROTOCOL_CONFIG.EXPIRE_TIME
63
+ });
64
+ /**
65
+ * 프로토콜 인스턴스를 정리한다.
66
+ *
67
+ * 내부 청크 누적기의 GC 타이머를 해제하고 메모리를 정리한다.
68
+ * 프로토콜 인스턴스 사용이 끝나면 반드시 호출해야 한다.
69
+ */
70
+ dispose() {
71
+ this._accumulator.dispose();
72
+ }
73
+ /**
74
+ * 메시지 디코딩 (분할 패킷 자동 조립)
75
+ */
76
+ decode(bytes) {
77
+ if (bytes.length < 28) {
78
+ throw new ArgumentError("\uBC84\uD37C \uD06C\uAE30\uAC00 \uD5E4\uB354 \uD06C\uAE30\uBCF4\uB2E4 \uC791\uC2B5\uB2C8\uB2E4.", {
79
+ bufferSize: bytes.length,
80
+ minimumSize: 28
81
+ });
82
+ }
83
+ const uuidBytes = bytes.subarray(0, 16);
84
+ const uuid = Uuid.fromBytes(uuidBytes).toString();
85
+ const headerView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
86
+ const totalSize = Number(headerView.getBigUint64(16, false));
87
+ const index = headerView.getUint32(24, false);
88
+ if (totalSize > PROTOCOL_CONFIG.MAX_TOTAL_SIZE) {
89
+ throw new ArgumentError("\uBA54\uC2DC\uC9C0 \uD06C\uAE30\uAC00 \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4.", {
90
+ totalSize,
91
+ maxSize: PROTOCOL_CONFIG.MAX_TOTAL_SIZE
92
+ });
93
+ }
94
+ const bodyBytes = bytes.subarray(28);
95
+ const accItem = this._accumulator.getOrCreate(uuid, () => ({
96
+ totalSize,
97
+ completedSize: 0,
98
+ chunks: []
99
+ }));
100
+ if (accItem.chunks[index] == null) {
101
+ accItem.chunks[index] = bodyBytes;
102
+ accItem.completedSize += bodyBytes.length;
103
+ }
104
+ if (accItem.completedSize < accItem.totalSize) {
105
+ return {
106
+ type: "progress",
107
+ uuid,
108
+ totalSize,
109
+ completedSize: accItem.completedSize
110
+ };
111
+ } else {
112
+ this._accumulator.delete(uuid);
113
+ const resultBytes = bytesConcat(accItem.chunks.filterExists());
114
+ let messageArr;
115
+ try {
116
+ messageArr = jsonParse(new TextDecoder().decode(resultBytes));
117
+ } catch (err) {
118
+ throw new ArgumentError("\uBA54\uC2DC\uC9C0 \uB514\uCF54\uB529\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.", { uuid, cause: err });
119
+ }
120
+ return {
121
+ type: "complete",
122
+ uuid,
123
+ message: {
124
+ name: messageArr[0],
125
+ body: messageArr[1]
126
+ }
127
+ };
128
+ }
129
+ }
130
+ }
131
+ export {
132
+ ServiceProtocol
133
+ };
134
+ //# sourceMappingURL=service-protocol.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/protocol/service-protocol.ts"],
4
+ "sourcesContent": ["import type { Bytes } from \"@simplysm/core-common\";\nimport \"@simplysm/core-common\";\nimport { ArgumentError, jsonStringify, jsonParse, LazyGcMap, Uuid, bytesConcat } from \"@simplysm/core-common\";\nimport { PROTOCOL_CONFIG, type ServiceMessage } from \"./protocol.types\";\n\n/**\n * \uC11C\uBE44\uC2A4 \uD504\uB85C\uD1A0\uCF5C \uC778\uCF54\uB354/\uB514\uCF54\uB354\n *\n * Binary Protocol V2:\n * - Header: 28 bytes (UUID 16 + TotalSize 8 + Index 4)\n * - Body: JSON\n * - \uC790\uB3D9 \uCCAD\uD0B9: 3MB \uCD08\uACFC \uC2DC 300KB \uB2E8\uC704 \uBD84\uD560\n * - \uCD5C\uB300 \uBA54\uC2DC\uC9C0: 100MB\n */\nexport class ServiceProtocol {\n // -------------------------------------------------------------------\n // Encoding\n // -------------------------------------------------------------------\n\n /**\n * \uBA54\uC2DC\uC9C0 \uC778\uCF54\uB529 (\uD544\uC694 \uC2DC \uC790\uB3D9 \uBD84\uD560)\n */\n encode(uuid: string, message: ServiceMessage): { chunks: Bytes[]; totalSize: number } {\n const msgJson = jsonStringify([message.name, ...(\"body\" in message ? [message.body] : [])]);\n const msgBytes = new TextEncoder().encode(msgJson);\n\n const totalSize = msgBytes.length;\n\n // \uC804\uCCB4 \uC0AC\uC774\uC988 \uC81C\uD55C \uCCB4\uD06C (\uAC00\uC7A5 \uBA3C\uC800 \uC218\uD589)\n if (totalSize > PROTOCOL_CONFIG.MAX_TOTAL_SIZE) {\n throw new ArgumentError(\"\uBA54\uC2DC\uC9C0 \uD06C\uAE30\uAC00 \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4.\", {\n totalSize,\n maxSize: PROTOCOL_CONFIG.MAX_TOTAL_SIZE,\n });\n }\n\n // \uC0AC\uC774\uC988\uAC00 \uC791\uC73C\uBA74 \uADF8\uB300\uB85C \uBC18\uD658\n if (totalSize <= PROTOCOL_CONFIG.SPLIT_MESSAGE_SIZE) {\n return { chunks: [this._encode({ uuid, totalSize, index: 0 }, msgBytes)], totalSize };\n }\n\n // \uBD84\uD560 \uCC98\uB9AC\n const chunks: Bytes[] = [];\n let offset = 0;\n let index = 0;\n\n while (offset < totalSize) {\n const chunkBodyBytes = msgBytes.subarray(offset, offset + PROTOCOL_CONFIG.CHUNK_SIZE);\n\n const chunk = this._encode({ uuid, totalSize, index }, chunkBodyBytes);\n chunks.push(chunk);\n\n offset += PROTOCOL_CONFIG.CHUNK_SIZE;\n index++;\n }\n\n return { chunks, totalSize };\n }\n\n /**\n * \uBA54\uC2DC\uC9C0 \uCCAD\uD06C \uC778\uCF54\uB529 (\uD5E4\uB354 + \uBC14\uB514)\n *\n * \uD5E4\uB354 \uAD6C\uC870 (28 bytes, Big Endian):\n * ```\n * Offset Size Field\n * ------ ---- -----\n * 0 16 UUID (binary)\n * 16 8 TotalSize (uint64)\n * 24 4 Index (uint32)\n * ```\n */\n private _encode(\n header: {\n uuid: string;\n totalSize: number;\n index: number;\n },\n bodyBytes?: Bytes,\n ): Bytes {\n const headerBytes = new Uint8Array(28);\n\n // UUID (0-15)\n const uuidBytes = new Uuid(header.uuid).toBytes();\n headerBytes.set(uuidBytes, 0);\n\n // TotalSize (16-23), Index (24-27)\n const headerView = new DataView(headerBytes.buffer, headerBytes.byteOffset, headerBytes.byteLength);\n headerView.setBigUint64(16, BigInt(header.totalSize), false);\n headerView.setUint32(24, header.index, false);\n\n return bytesConcat([headerBytes, ...(bodyBytes ? [bodyBytes] : [])]);\n }\n\n // -------------------------------------------------------------------\n // Decoding\n // -------------------------------------------------------------------\n\n private readonly _accumulator = new LazyGcMap<\n string,\n {\n totalSize: number;\n completedSize: number;\n chunks: (Bytes | undefined)[];\n }\n >({\n gcInterval: PROTOCOL_CONFIG.GC_INTERVAL,\n expireTime: PROTOCOL_CONFIG.EXPIRE_TIME,\n });\n\n /**\n * \uD504\uB85C\uD1A0\uCF5C \uC778\uC2A4\uD134\uC2A4\uB97C \uC815\uB9AC\uD55C\uB2E4.\n *\n * \uB0B4\uBD80 \uCCAD\uD06C \uB204\uC801\uAE30\uC758 GC \uD0C0\uC774\uBA38\uB97C \uD574\uC81C\uD558\uACE0 \uBA54\uBAA8\uB9AC\uB97C \uC815\uB9AC\uD55C\uB2E4.\n * \uD504\uB85C\uD1A0\uCF5C \uC778\uC2A4\uD134\uC2A4 \uC0AC\uC6A9\uC774 \uB05D\uB098\uBA74 \uBC18\uB4DC\uC2DC \uD638\uCD9C\uD574\uC57C \uD55C\uB2E4.\n */\n dispose(): void {\n this._accumulator.dispose();\n }\n\n /**\n * \uBA54\uC2DC\uC9C0 \uB514\uCF54\uB529 (\uBD84\uD560 \uD328\uD0B7 \uC790\uB3D9 \uC870\uB9BD)\n */\n decode<T extends ServiceMessage>(bytes: Bytes): ServiceMessageDecodeResult<T> {\n if (bytes.length < 28) {\n throw new ArgumentError(\"\uBC84\uD37C \uD06C\uAE30\uAC00 \uD5E4\uB354 \uD06C\uAE30\uBCF4\uB2E4 \uC791\uC2B5\uB2C8\uB2E4.\", {\n bufferSize: bytes.length,\n minimumSize: 28,\n });\n }\n\n // 1. \uD5E4\uB354 \uC77D\uAE30\n\n // UUID\n const uuidBytes = bytes.subarray(0, 16);\n const uuid = Uuid.fromBytes(uuidBytes).toString();\n\n // TOTAL_SIZE, INDEX\n const headerView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const totalSize = Number(headerView.getBigUint64(16, false));\n const index = headerView.getUint32(24, false);\n\n // \uC804\uCCB4 \uC0AC\uC774\uC988 \uC81C\uD55C \uCCB4\uD06C (\uAC00\uC7A5 \uBA3C\uC800 \uC218\uD589)\n if (totalSize > PROTOCOL_CONFIG.MAX_TOTAL_SIZE) {\n throw new ArgumentError(\"\uBA54\uC2DC\uC9C0 \uD06C\uAE30\uAC00 \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4.\", {\n totalSize,\n maxSize: PROTOCOL_CONFIG.MAX_TOTAL_SIZE,\n });\n }\n\n const bodyBytes = bytes.subarray(28);\n\n const accItem = this._accumulator.getOrCreate(uuid, () => ({\n totalSize,\n completedSize: 0,\n chunks: [],\n }));\n if (accItem.chunks[index] == null) {\n // \uD328\uD0B7\uC911\uBCF5 \uBC29\uC5B4\n accItem.chunks[index] = bodyBytes;\n accItem.completedSize += bodyBytes.length;\n }\n\n if (accItem.completedSize < accItem.totalSize) {\n return {\n type: \"progress\",\n uuid: uuid,\n totalSize: totalSize,\n completedSize: accItem.completedSize,\n };\n } else {\n this._accumulator.delete(uuid); // \uBA54\uBAA8\uB9AC \uD574\uC81C\n\n const resultBytes = bytesConcat(accItem.chunks.filterExists());\n let messageArr: [string, unknown];\n try {\n messageArr = jsonParse<[string, unknown]>(new TextDecoder().decode(resultBytes));\n } catch (err) {\n throw new ArgumentError(\"\uBA54\uC2DC\uC9C0 \uB514\uCF54\uB529\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.\", { uuid, cause: err });\n }\n return {\n type: \"complete\",\n uuid: uuid,\n message: {\n name: messageArr[0],\n body: messageArr[1],\n } as T,\n };\n }\n }\n}\n\n/**\n * \uBA54\uC2DC\uC9C0 \uB514\uCF54\uB529 \uACB0\uACFC \uD0C0\uC785 (\uC720\uB2C8\uC628)\n *\n * - `type: \"complete\"`: \uBAA8\uB4E0 \uCCAD\uD06C\uAC00 \uC218\uC2E0\uB418\uC5B4 \uBA54\uC2DC\uC9C0 \uC870\uB9BD\uC774 \uC644\uB8CC\uB428\n * - `type: \"progress\"`: \uBD84\uD560 \uBA54\uC2DC\uC9C0 \uC218\uC2E0 \uC911 (\uC77C\uBD80 \uCCAD\uD06C\uB9CC \uB3C4\uCC29)\n */\nexport type ServiceMessageDecodeResult<T extends ServiceMessage> =\n | { type: \"complete\"; uuid: string; message: T }\n | { type: \"progress\"; uuid: string; totalSize: number; completedSize: number };\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":["../../../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"}