@simplysm/core-common 13.0.99 → 14.0.1

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 (181) hide show
  1. package/dist/common.types.d.ts +14 -14
  2. package/dist/common.types.js +2 -1
  3. package/dist/common.types.js.map +1 -6
  4. package/dist/env.d.ts +5 -0
  5. package/dist/env.d.ts.map +1 -1
  6. package/dist/env.js +12 -8
  7. package/dist/env.js.map +1 -6
  8. package/dist/errors/argument-error.d.ts +10 -10
  9. package/dist/errors/argument-error.d.ts.map +1 -1
  10. package/dist/errors/argument-error.js +31 -14
  11. package/dist/errors/argument-error.js.map +1 -6
  12. package/dist/errors/not-implemented-error.d.ts +8 -8
  13. package/dist/errors/not-implemented-error.js +30 -12
  14. package/dist/errors/not-implemented-error.js.map +1 -6
  15. package/dist/errors/sd-error.d.ts +10 -10
  16. package/dist/errors/sd-error.d.ts.map +1 -1
  17. package/dist/errors/sd-error.js +45 -24
  18. package/dist/errors/sd-error.js.map +1 -6
  19. package/dist/errors/timeout-error.d.ts +10 -10
  20. package/dist/errors/timeout-error.js +34 -15
  21. package/dist/errors/timeout-error.js.map +1 -6
  22. package/dist/extensions/arr-ext.d.ts +2 -2
  23. package/dist/extensions/arr-ext.helpers.d.ts +10 -10
  24. package/dist/extensions/arr-ext.helpers.js +112 -89
  25. package/dist/extensions/arr-ext.helpers.js.map +1 -6
  26. package/dist/extensions/arr-ext.js +458 -422
  27. package/dist/extensions/arr-ext.js.map +1 -6
  28. package/dist/extensions/arr-ext.types.d.ts +57 -57
  29. package/dist/extensions/arr-ext.types.d.ts.map +1 -1
  30. package/dist/extensions/arr-ext.types.js +6 -1
  31. package/dist/extensions/arr-ext.types.js.map +1 -6
  32. package/dist/extensions/map-ext.d.ts +16 -16
  33. package/dist/extensions/map-ext.js +27 -22
  34. package/dist/extensions/map-ext.js.map +1 -6
  35. package/dist/extensions/set-ext.d.ts +11 -11
  36. package/dist/extensions/set-ext.js +32 -25
  37. package/dist/extensions/set-ext.js.map +1 -6
  38. package/dist/features/debounce-queue.d.ts +17 -17
  39. package/dist/features/debounce-queue.js +98 -70
  40. package/dist/features/debounce-queue.js.map +1 -6
  41. package/dist/features/event-emitter.d.ts +20 -20
  42. package/dist/features/event-emitter.js +101 -78
  43. package/dist/features/event-emitter.js.map +1 -6
  44. package/dist/features/serial-queue.d.ts +11 -11
  45. package/dist/features/serial-queue.js +78 -57
  46. package/dist/features/serial-queue.js.map +1 -6
  47. package/dist/globals.d.ts +4 -4
  48. package/dist/globals.js +9 -1
  49. package/dist/globals.js.map +1 -6
  50. package/dist/index.js +28 -27
  51. package/dist/index.js.map +1 -6
  52. package/dist/types/date-only.d.ts +64 -64
  53. package/dist/types/date-only.d.ts.map +1 -1
  54. package/dist/types/date-only.js +263 -252
  55. package/dist/types/date-only.js.map +1 -6
  56. package/dist/types/date-time.d.ts +36 -36
  57. package/dist/types/date-time.d.ts.map +1 -1
  58. package/dist/types/date-time.js +196 -288
  59. package/dist/types/date-time.js.map +1 -6
  60. package/dist/types/lazy-gc-map.d.ts +26 -26
  61. package/dist/types/lazy-gc-map.d.ts.map +1 -1
  62. package/dist/types/lazy-gc-map.js +202 -159
  63. package/dist/types/lazy-gc-map.js.map +1 -6
  64. package/dist/types/time.d.ts +23 -23
  65. package/dist/types/time.d.ts.map +1 -1
  66. package/dist/types/time.js +169 -158
  67. package/dist/types/time.js.map +1 -6
  68. package/dist/types/uuid.d.ts +11 -11
  69. package/dist/types/uuid.d.ts.map +1 -1
  70. package/dist/types/uuid.js +95 -70
  71. package/dist/types/uuid.js.map +1 -6
  72. package/dist/utils/bytes.d.ts +17 -17
  73. package/dist/utils/bytes.js +137 -81
  74. package/dist/utils/bytes.js.map +1 -6
  75. package/dist/utils/date-format.d.ts +40 -40
  76. package/dist/utils/date-format.js +187 -101
  77. package/dist/utils/date-format.js.map +1 -6
  78. package/dist/utils/error.d.ts +4 -4
  79. package/dist/utils/error.js +11 -6
  80. package/dist/utils/error.js.map +1 -6
  81. package/dist/utils/json.d.ts +19 -19
  82. package/dist/utils/json.js +187 -135
  83. package/dist/utils/json.js.map +1 -6
  84. package/dist/utils/num.d.ts +20 -20
  85. package/dist/utils/num.js +76 -34
  86. package/dist/utils/num.js.map +1 -6
  87. package/dist/utils/obj.d.ts +111 -111
  88. package/dist/utils/obj.d.ts.map +1 -1
  89. package/dist/utils/obj.js +706 -496
  90. package/dist/utils/obj.js.map +1 -6
  91. package/dist/utils/path.d.ts +10 -10
  92. package/dist/utils/path.js +35 -18
  93. package/dist/utils/path.js.map +1 -6
  94. package/dist/utils/primitive.d.ts +5 -5
  95. package/dist/utils/primitive.js +34 -14
  96. package/dist/utils/primitive.js.map +1 -6
  97. package/dist/utils/str.d.ts +38 -38
  98. package/dist/utils/str.js +217 -113
  99. package/dist/utils/str.js.map +1 -6
  100. package/dist/utils/template-strings.d.ts +26 -26
  101. package/dist/utils/template-strings.js +113 -40
  102. package/dist/utils/template-strings.js.map +1 -6
  103. package/dist/utils/transferable.d.ts +18 -18
  104. package/dist/utils/transferable.js +218 -151
  105. package/dist/utils/transferable.js.map +1 -6
  106. package/dist/utils/wait.d.ts +9 -9
  107. package/dist/utils/wait.js +30 -15
  108. package/dist/utils/wait.js.map +1 -6
  109. package/dist/utils/xml.d.ts +13 -13
  110. package/dist/utils/xml.js +84 -46
  111. package/dist/utils/xml.js.map +1 -6
  112. package/dist/utils/zip.d.ts +22 -22
  113. package/dist/utils/zip.js +172 -148
  114. package/dist/utils/zip.js.map +1 -6
  115. package/package.json +5 -7
  116. package/src/common.types.ts +14 -14
  117. package/src/env.ts +9 -1
  118. package/src/errors/argument-error.ts +15 -15
  119. package/src/errors/not-implemented-error.ts +9 -9
  120. package/src/errors/sd-error.ts +12 -12
  121. package/src/errors/timeout-error.ts +12 -12
  122. package/src/extensions/arr-ext.helpers.ts +16 -16
  123. package/src/extensions/arr-ext.ts +35 -35
  124. package/src/extensions/arr-ext.types.ts +57 -57
  125. package/src/extensions/map-ext.ts +16 -16
  126. package/src/extensions/set-ext.ts +11 -11
  127. package/src/features/debounce-queue.ts +23 -23
  128. package/src/features/event-emitter.ts +25 -25
  129. package/src/features/serial-queue.ts +13 -13
  130. package/src/globals.ts +4 -4
  131. package/src/index.ts +5 -5
  132. package/src/types/date-only.ts +84 -83
  133. package/src/types/date-time.ts +43 -42
  134. package/src/types/lazy-gc-map.ts +44 -44
  135. package/src/types/time.ts +29 -29
  136. package/src/types/uuid.ts +15 -15
  137. package/src/utils/bytes.ts +35 -35
  138. package/src/utils/date-format.ts +59 -59
  139. package/src/utils/error.ts +4 -4
  140. package/src/utils/json.ts +41 -41
  141. package/src/utils/num.ts +20 -20
  142. package/src/utils/obj.ts +138 -138
  143. package/src/utils/path.ts +10 -10
  144. package/src/utils/primitive.ts +6 -6
  145. package/src/utils/str.ts +48 -48
  146. package/src/utils/template-strings.ts +29 -29
  147. package/src/utils/transferable.ts +38 -38
  148. package/src/utils/wait.ts +10 -10
  149. package/src/utils/xml.ts +19 -19
  150. package/src/utils/zip.ts +25 -25
  151. package/README.md +0 -160
  152. package/docs/errors.md +0 -119
  153. package/docs/extensions.md +0 -387
  154. package/docs/features.md +0 -143
  155. package/docs/types.md +0 -287
  156. package/docs/utils.md +0 -757
  157. package/tests/errors/errors.spec.ts +0 -80
  158. package/tests/extensions/array-extension.spec.ts +0 -654
  159. package/tests/extensions/map-extension.spec.ts +0 -117
  160. package/tests/extensions/set-extension.spec.ts +0 -67
  161. package/tests/types/date-only.spec.ts +0 -533
  162. package/tests/types/date-time.spec.ts +0 -246
  163. package/tests/types/lazy-gc-map.spec.ts +0 -606
  164. package/tests/types/time.spec.ts +0 -428
  165. package/tests/types/uuid.spec.ts +0 -74
  166. package/tests/utils/bytes-utils.spec.ts +0 -197
  167. package/tests/utils/date-format.spec.ts +0 -350
  168. package/tests/utils/debounce-queue.spec.ts +0 -226
  169. package/tests/utils/json.spec.ts +0 -400
  170. package/tests/utils/number.spec.ts +0 -136
  171. package/tests/utils/object.spec.ts +0 -810
  172. package/tests/utils/path.spec.ts +0 -70
  173. package/tests/utils/primitive.spec.ts +0 -43
  174. package/tests/utils/sd-event-emitter.spec.ts +0 -189
  175. package/tests/utils/serial-queue.spec.ts +0 -305
  176. package/tests/utils/string.spec.ts +0 -265
  177. package/tests/utils/template-strings.spec.ts +0 -48
  178. package/tests/utils/transferable.spec.ts +0 -639
  179. package/tests/utils/wait.spec.ts +0 -123
  180. package/tests/utils/xml.spec.ts +0 -146
  181. package/tests/utils/zip.spec.ts +0 -221
@@ -1,46 +1,46 @@
1
1
  /**
2
- * Object types that can be transferred between Workers
2
+ * Worker 전송 가능한 객체 타입
3
3
  *
4
- * Only ArrayBuffer is used in this code.
4
+ * 코드에서는 ArrayBuffer 사용됨.
5
5
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Transferable_objects
6
6
  */
7
7
  type Transferable = ArrayBuffer;
8
8
  /**
9
- * Transferable conversion utility functions
9
+ * Transferable 변환 유틸리티 함수
10
10
  *
11
- * Performs serialization/deserialization for data transfer between Workers.
12
- * Handles custom types that structuredClone does not support.
11
+ * Worker 데이터 전송을 위한 직렬화/역직렬화 수행.
12
+ * structuredClone이 지원하지 않는 커스텀 타입을 처리.
13
13
  *
14
- * Supported types:
14
+ * 지원 타입:
15
15
  * - Date, DateTime, DateOnly, Time, Uuid, RegExp
16
- * - Error (including cause, code, detail)
17
- * - Uint8Array (other TypedArrays not supported, handled as plain objects)
18
- * - Array, Map, Set, plain objects
16
+ * - Error (cause, code, detail 포함)
17
+ * - Uint8Array (다른 TypedArray는 지원하지 않으며 일반 객체로 처리)
18
+ * - Array, Map, Set, 일반 객체
19
19
  *
20
- * @note Circular references cause TypeError in transferableEncode (includes path info)
21
- * @note If the same object is referenced from multiple places, the cached encoding result is reused
20
+ * @note 순환 참조 transferableEncode에서 TypeError 발생 (경로 정보 포함)
21
+ * @note 같은 객체가 여러 곳에서 참조되면 캐싱된 인코딩 결과를 재사용
22
22
  *
23
23
  * @example
24
- * // Send data to Worker
24
+ * // Worker로 데이터 전송
25
25
  * const { result, transferList } = transferableEncode(data);
26
26
  * worker.postMessage(result, transferList);
27
27
  *
28
- * // Receive data from Worker
28
+ * // Worker에서 데이터 수신
29
29
  * const decoded = decode(event.data);
30
30
  */
31
31
  /**
32
- * Convert objects using Simplysm types to plain objects
33
- * Serializes in a form that can be sent to a Worker
32
+ * Simplysm 타입을 사용하는 객체를 일반 객체로 변환
33
+ * Worker로 전송 가능한 형태로 직렬화
34
34
  *
35
- * @throws TypeError if circular reference is detected
35
+ * @throws TypeError 순환 참조가 감지된 경우
36
36
  */
37
37
  export declare function encode(obj: unknown): {
38
38
  result: unknown;
39
39
  transferList: Transferable[];
40
40
  };
41
41
  /**
42
- * Convert serialized objects to objects using Simplysm types
43
- * Deserialize data received from a Worker
42
+ * 직렬화된 객체를 Simplysm 타입을 사용하는 객체로 변환
43
+ * Worker에서 수신한 데이터 역직렬화
44
44
  */
45
45
  export declare function decode(obj: unknown): unknown;
46
46
  export {};
@@ -2,166 +2,233 @@ import { DateTime } from "../types/date-time.js";
2
2
  import { DateOnly } from "../types/date-only.js";
3
3
  import { Time } from "../types/time.js";
4
4
  import { Uuid } from "../types/uuid.js";
5
- function encode(obj) {
6
- const transferList = [];
7
- const ancestors = /* @__PURE__ */ new Set();
8
- const cache = /* @__PURE__ */ new Map();
9
- const result = encodeImpl(obj, transferList, [], ancestors, cache);
10
- return { result, transferList };
5
+ /**
6
+ * Transferable 변환 유틸리티 함수
7
+ *
8
+ * Worker 데이터 전송을 위한 직렬화/역직렬화 수행.
9
+ * structuredClone이 지원하지 않는 커스텀 타입을 처리.
10
+ *
11
+ * 지원 타입:
12
+ * - Date, DateTime, DateOnly, Time, Uuid, RegExp
13
+ * - Error (cause, code, detail 포함)
14
+ * - Uint8Array (다른 TypedArray는 지원하지 않으며 일반 객체로 처리)
15
+ * - Array, Map, Set, 일반 객체
16
+ *
17
+ * @note 순환 참조 시 transferableEncode에서 TypeError 발생 (경로 정보 포함)
18
+ * @note 같은 객체가 여러 곳에서 참조되면 캐싱된 인코딩 결과를 재사용
19
+ *
20
+ * @example
21
+ * // Worker로 데이터 전송
22
+ * const { result, transferList } = transferableEncode(data);
23
+ * worker.postMessage(result, transferList);
24
+ *
25
+ * // Worker에서 데이터 수신
26
+ * const decoded = decode(event.data);
27
+ */
28
+ //#region encode
29
+ /**
30
+ * Simplysm 타입을 사용하는 객체를 일반 객체로 변환
31
+ * Worker로 전송 가능한 형태로 직렬화
32
+ *
33
+ * @throws TypeError 순환 참조가 감지된 경우
34
+ */
35
+ export function encode(obj) {
36
+ const transferList = [];
37
+ const ancestors = new Set();
38
+ const cache = new Map();
39
+ const result = encodeImpl(obj, transferList, [], ancestors, cache);
40
+ return { result, transferList };
11
41
  }
12
42
  function encodeImpl(obj, transferList, path, ancestors, cache) {
13
- if (obj == null) return obj;
14
- if (typeof obj === "object") {
15
- if (ancestors.has(obj)) {
16
- const currentPath = path.length > 0 ? path.join(".") : "root";
17
- throw new TypeError(`Circular reference detected: ${currentPath}`);
18
- }
19
- const cached = cache.get(obj);
20
- if (cached !== void 0) return cached;
21
- ancestors.add(obj);
22
- }
23
- let result;
24
- try {
25
- if (obj instanceof Uint8Array) {
26
- const isSharedArrayBuffer = typeof SharedArrayBuffer !== "undefined" && obj.buffer instanceof SharedArrayBuffer;
27
- const buffer = obj.buffer;
28
- if (!isSharedArrayBuffer && !transferList.includes(buffer)) {
29
- transferList.push(buffer);
30
- }
31
- result = obj;
32
- } else if (obj instanceof Date) {
33
- result = { __type__: "Date", data: obj.getTime() };
34
- } else if (obj instanceof DateTime) {
35
- result = { __type__: "DateTime", data: obj.tick };
36
- } else if (obj instanceof DateOnly) {
37
- result = { __type__: "DateOnly", data: obj.tick };
38
- } else if (obj instanceof Time) {
39
- result = { __type__: "Time", data: obj.tick };
40
- } else if (obj instanceof Uuid) {
41
- result = { __type__: "Uuid", data: obj.toString() };
42
- } else if (obj instanceof RegExp) {
43
- result = { __type__: "RegExp", data: { source: obj.source, flags: obj.flags } };
44
- } else if (obj instanceof Error) {
45
- const errObj = obj;
46
- result = {
47
- __type__: "Error",
48
- data: {
49
- name: errObj.name,
50
- message: errObj.message,
51
- stack: errObj.stack,
52
- ...errObj.code !== void 0 ? { code: errObj.code } : {},
53
- ...errObj.detail !== void 0 ? {
54
- detail: encodeImpl(
55
- errObj.detail,
56
- transferList,
57
- [...path, "detail"],
58
- ancestors,
59
- cache
60
- )
61
- } : {},
62
- ...errObj.cause !== void 0 ? {
63
- cause: encodeImpl(errObj.cause, transferList, [...path, "cause"], ancestors, cache)
64
- } : {}
65
- }
66
- };
67
- } else if (Array.isArray(obj)) {
68
- result = obj.map(
69
- (item, idx) => encodeImpl(item, transferList, [...path, idx], ancestors, cache)
70
- );
71
- } else if (obj instanceof Map) {
72
- let idx = 0;
73
- result = new Map(
74
- Array.from(obj.entries()).map(([k, v]) => {
75
- const keyPath = [...path, `Map[${idx}].key`];
76
- const valuePath = [...path, `Map[${idx}].value`];
77
- idx++;
78
- return [
79
- encodeImpl(k, transferList, keyPath, ancestors, cache),
80
- encodeImpl(v, transferList, valuePath, ancestors, cache)
81
- ];
82
- })
83
- );
84
- } else if (obj instanceof Set) {
85
- let idx = 0;
86
- result = new Set(
87
- Array.from(obj).map(
88
- (v) => encodeImpl(v, transferList, [...path, `Set[${idx++}]`], ancestors, cache)
89
- )
90
- );
91
- } else if (typeof obj === "object") {
92
- const res = {};
93
- const record = obj;
94
- for (const key of Object.keys(record)) {
95
- res[key] = encodeImpl(record[key], transferList, [...path, key], ancestors, cache);
96
- }
97
- result = res;
98
- } else {
99
- return obj;
100
- }
43
+ if (obj == null)
44
+ return obj;
45
+ // 객체 타입 처리: 순환 참조 감지 + 캐시
101
46
  if (typeof obj === "object") {
102
- cache.set(obj, result);
47
+ // 순환 참조 감지 (현재 재귀 스택에 있는 객체)
48
+ if (ancestors.has(obj)) {
49
+ const currentPath = path.length > 0 ? path.join(".") : "root";
50
+ throw new TypeError(`순환 참조 감지됨: ${currentPath}`);
51
+ }
52
+ // 이미 인코딩된 객체이면 캐싱된 결과 재사용
53
+ const cached = cache.get(obj);
54
+ if (cached !== undefined)
55
+ return cached;
56
+ // 재귀 스택에 추가
57
+ ancestors.add(obj);
103
58
  }
104
- return result;
105
- } finally {
106
- if (typeof obj === "object") {
107
- ancestors.delete(obj);
59
+ let result;
60
+ try {
61
+ // 1. Uint8Array
62
+ if (obj instanceof Uint8Array) {
63
+ // SharedArrayBuffer는 이미 공유 메모리이므로 transferList에 추가하지 않음
64
+ // zero-copy 전송을 위해 ArrayBuffer만 transferList에 추가
65
+ const isSharedArrayBuffer = typeof SharedArrayBuffer !== "undefined" && obj.buffer instanceof SharedArrayBuffer;
66
+ const buffer = obj.buffer;
67
+ if (!isSharedArrayBuffer && !transferList.includes(buffer)) {
68
+ transferList.push(buffer);
69
+ }
70
+ result = obj;
71
+ }
72
+ // 2. 특수 타입 변환 (JSON.stringify 없이 태그된 객체로 변환)
73
+ else if (obj instanceof Date) {
74
+ result = { __type__: "Date", data: obj.getTime() };
75
+ }
76
+ else if (obj instanceof DateTime) {
77
+ result = { __type__: "DateTime", data: obj.tick };
78
+ }
79
+ else if (obj instanceof DateOnly) {
80
+ result = { __type__: "DateOnly", data: obj.tick };
81
+ }
82
+ else if (obj instanceof Time) {
83
+ result = { __type__: "Time", data: obj.tick };
84
+ }
85
+ else if (obj instanceof Uuid) {
86
+ result = { __type__: "Uuid", data: obj.toString() };
87
+ }
88
+ else if (obj instanceof RegExp) {
89
+ result = { __type__: "RegExp", data: { source: obj.source, flags: obj.flags } };
90
+ }
91
+ else if (obj instanceof Error) {
92
+ const errObj = obj;
93
+ result = {
94
+ __type__: "Error",
95
+ data: {
96
+ name: errObj.name,
97
+ message: errObj.message,
98
+ stack: errObj.stack,
99
+ ...(errObj.code !== undefined ? { code: errObj.code } : {}),
100
+ ...(errObj.detail !== undefined
101
+ ? {
102
+ detail: encodeImpl(errObj.detail, transferList, [...path, "detail"], ancestors, cache),
103
+ }
104
+ : {}),
105
+ ...(errObj.cause !== undefined
106
+ ? {
107
+ cause: encodeImpl(errObj.cause, transferList, [...path, "cause"], ancestors, cache),
108
+ }
109
+ : {}),
110
+ },
111
+ };
112
+ }
113
+ // 3. Array 재귀
114
+ else if (Array.isArray(obj)) {
115
+ result = obj.map((item, idx) => encodeImpl(item, transferList, [...path, idx], ancestors, cache));
116
+ }
117
+ // 4. Map 재귀
118
+ else if (obj instanceof Map) {
119
+ let idx = 0;
120
+ result = new Map(Array.from(obj.entries()).map(([k, v]) => {
121
+ const keyPath = [...path, `Map[${idx}].key`];
122
+ const valuePath = [...path, `Map[${idx}].value`];
123
+ idx++;
124
+ return [
125
+ encodeImpl(k, transferList, keyPath, ancestors, cache),
126
+ encodeImpl(v, transferList, valuePath, ancestors, cache),
127
+ ];
128
+ }));
129
+ }
130
+ // 5. Set 재귀
131
+ else if (obj instanceof Set) {
132
+ let idx = 0;
133
+ result = new Set(Array.from(obj).map((v) => encodeImpl(v, transferList, [...path, `Set[${idx++}]`], ancestors, cache)));
134
+ }
135
+ // 6. 일반 객체 재귀
136
+ else if (typeof obj === "object") {
137
+ const res = {};
138
+ const record = obj;
139
+ for (const key of Object.keys(record)) {
140
+ res[key] = encodeImpl(record[key], transferList, [...path, key], ancestors, cache);
141
+ }
142
+ result = res;
143
+ }
144
+ // 7. 원시 타입
145
+ else {
146
+ return obj;
147
+ }
148
+ // 캐시에 저장 (성공 시에만)
149
+ if (typeof obj === "object") {
150
+ cache.set(obj, result);
151
+ }
152
+ return result;
153
+ }
154
+ finally {
155
+ // 재귀 스택에서 제거 (예외 발생 시에도 반드시 실행)
156
+ if (typeof obj === "object") {
157
+ ancestors.delete(obj);
158
+ }
108
159
  }
109
- }
110
160
  }
111
- function decode(obj) {
112
- if (obj == null) return obj;
113
- if (typeof obj === "object" && "__type__" in obj && "data" in obj) {
114
- const typed = obj;
115
- const data = typed.data;
116
- if (typed.__type__ === "Date" && typeof data === "number") return new Date(data);
117
- if (typed.__type__ === "DateTime" && typeof data === "number") return new DateTime(data);
118
- if (typed.__type__ === "DateOnly" && typeof data === "number") return new DateOnly(data);
119
- if (typed.__type__ === "Time" && typeof data === "number") return new Time(data);
120
- if (typed.__type__ === "Uuid" && typeof data === "string") return new Uuid(data);
121
- if (typed.__type__ === "RegExp" && typeof data === "object" && data !== null) {
122
- const regexData = data;
123
- return new RegExp(regexData.source, regexData.flags);
161
+ //#endregion
162
+ //#region decode
163
+ /**
164
+ * 직렬화된 객체를 Simplysm 타입을 사용하는 객체로 변환
165
+ * Worker에서 수신한 데이터 역직렬화
166
+ */
167
+ export function decode(obj) {
168
+ if (obj == null)
169
+ return obj;
170
+ // 1. 태그된 객체에서 특수 타입 복원
171
+ if (typeof obj === "object" && "__type__" in obj && "data" in obj) {
172
+ const typed = obj;
173
+ const data = typed.data;
174
+ if (typed.__type__ === "Date" && typeof data === "number")
175
+ return new Date(data);
176
+ if (typed.__type__ === "DateTime" && typeof data === "number")
177
+ return new DateTime(data);
178
+ if (typed.__type__ === "DateOnly" && typeof data === "number")
179
+ return new DateOnly(data);
180
+ if (typed.__type__ === "Time" && typeof data === "number")
181
+ return new Time(data);
182
+ if (typed.__type__ === "Uuid" && typeof data === "string")
183
+ return new Uuid(data);
184
+ if (typed.__type__ === "RegExp" && typeof data === "object" && data !== null) {
185
+ const regexData = data;
186
+ return new RegExp(regexData.source, regexData.flags);
187
+ }
188
+ if (typed.__type__ === "Error" && typeof data === "object" && data !== null) {
189
+ const errorData = data;
190
+ const err = new Error(errorData.message);
191
+ err.name = errorData.name;
192
+ err.stack = errorData.stack;
193
+ if (errorData.code !== undefined)
194
+ err.code = errorData.code;
195
+ if (errorData.cause !== undefined)
196
+ err.cause = decode(errorData.cause);
197
+ if (errorData.detail !== undefined)
198
+ err.detail = decode(errorData.detail);
199
+ return err;
200
+ }
124
201
  }
125
- if (typed.__type__ === "Error" && typeof data === "object" && data !== null) {
126
- const errorData = data;
127
- const err = new Error(errorData.message);
128
- err.name = errorData.name;
129
- err.stack = errorData.stack;
130
- if (errorData.code !== void 0) err.code = errorData.code;
131
- if (errorData.cause !== void 0) err.cause = decode(errorData.cause);
132
- if (errorData.detail !== void 0) err.detail = decode(errorData.detail);
133
- return err;
202
+ // 2. Array 재귀
203
+ if (Array.isArray(obj)) {
204
+ return obj.map((item) => decode(item));
134
205
  }
135
- }
136
- if (Array.isArray(obj)) {
137
- return obj.map((item) => decode(item));
138
- }
139
- if (obj instanceof Map) {
140
- const newMap = /* @__PURE__ */ new Map();
141
- for (const [k, v] of obj) {
142
- newMap.set(decode(k), decode(v));
206
+ // 3. Map 재귀
207
+ if (obj instanceof Map) {
208
+ const newMap = new Map();
209
+ for (const [k, v] of obj) {
210
+ newMap.set(decode(k), decode(v));
211
+ }
212
+ return newMap;
143
213
  }
144
- return newMap;
145
- }
146
- if (obj instanceof Set) {
147
- const newSet = /* @__PURE__ */ new Set();
148
- for (const v of obj) {
149
- newSet.add(decode(v));
214
+ // 4. Set 재귀
215
+ if (obj instanceof Set) {
216
+ const newSet = new Set();
217
+ for (const v of obj) {
218
+ newSet.add(decode(v));
219
+ }
220
+ return newSet;
150
221
  }
151
- return newSet;
152
- }
153
- if (typeof obj === "object") {
154
- const record = obj;
155
- const result = {};
156
- for (const key of Object.keys(record)) {
157
- result[key] = decode(record[key]);
222
+ // 5. 객체 재귀
223
+ if (typeof obj === "object") {
224
+ const record = obj;
225
+ const result = {};
226
+ for (const key of Object.keys(record)) {
227
+ result[key] = decode(record[key]);
228
+ }
229
+ return result;
158
230
  }
159
- return result;
160
- }
161
- return obj;
231
+ return obj;
162
232
  }
163
- export {
164
- decode,
165
- encode
166
- };
167
- //# sourceMappingURL=transferable.js.map
233
+ //#endregion
234
+ //# sourceMappingURL=transferable.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/transferable.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
1
+ {"version":3,"file":"transferable.js","sourceRoot":"","sources":["../../src/utils/transferable.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,19 @@
1
1
  /**
2
- * Wait until a condition becomes true
3
- * @param forwarder Condition function
4
- * @param milliseconds Check interval (default: 100ms)
5
- * @param maxCount Maximum number of attempts (undefined for unlimited)
2
+ * 조건이 true가 때까지 대기
3
+ * @param forwarder 조건 함수
4
+ * @param milliseconds 확인 간격 (기본값: 100ms)
5
+ * @param maxCount 최대 시도 횟수 (undefined이면 무제한)
6
6
  *
7
- * @note Returns immediately if the condition is true on the first call.
7
+ * @note 번째 호출에서 조건이 true이면 즉시 반환.
8
8
  * @example
9
- * // maxCount=3: checks condition up to 3 times, throws TimeoutError if all are false
9
+ * // maxCount=3: 최대 3번 조건 확인, 모두 false이면 TimeoutError 발생
10
10
  * await waitUntil(() => someCondition, 100, 3);
11
- * @throws TimeoutError when maximum number of attempts is exceeded
11
+ * @throws TimeoutError 최대 시도 횟수를 초과했을
12
12
  */
13
13
  export declare function until(forwarder: () => boolean | Promise<boolean>, milliseconds?: number, maxCount?: number): Promise<void>;
14
14
  /**
15
- * Wait for a specified amount of time
16
- * @param millisecond Wait time (ms)
15
+ * 지정된 시간만큼 대기
16
+ * @param millisecond 대기 시간 (ms)
17
17
  */
18
18
  export declare function time(millisecond: number): Promise<void>;
19
19
  //# sourceMappingURL=wait.d.ts.map
@@ -1,19 +1,34 @@
1
+ /**
2
+ * 대기 유틸리티 함수
3
+ */
1
4
  import { TimeoutError } from "../errors/timeout-error.js";
2
- async function until(forwarder, milliseconds, maxCount) {
3
- let count = 0;
4
- while (!await forwarder()) {
5
- count++;
6
- if (maxCount !== void 0 && count >= maxCount) {
7
- throw new TimeoutError(count);
5
+ /**
6
+ * 조건이 true가 될 때까지 대기
7
+ * @param forwarder 조건 함수
8
+ * @param milliseconds 확인 간격 (기본값: 100ms)
9
+ * @param maxCount 최대 시도 횟수 (undefined이면 무제한)
10
+ *
11
+ * @note 첫 번째 호출에서 조건이 true이면 즉시 반환.
12
+ * @example
13
+ * // maxCount=3: 최대 3번 조건 확인, 모두 false이면 TimeoutError 발생
14
+ * await waitUntil(() => someCondition, 100, 3);
15
+ * @throws TimeoutError 최대 시도 횟수를 초과했을 때
16
+ */
17
+ export async function until(forwarder, milliseconds, maxCount) {
18
+ let count = 0;
19
+ while (!(await forwarder())) {
20
+ count++;
21
+ if (maxCount !== undefined && count >= maxCount) {
22
+ throw new TimeoutError(count);
23
+ }
24
+ await time(milliseconds ?? 100);
8
25
  }
9
- await time(milliseconds ?? 100);
10
- }
11
26
  }
12
- async function time(millisecond) {
13
- return new Promise((resolve) => setTimeout(resolve, millisecond));
27
+ /**
28
+ * 지정된 시간만큼 대기
29
+ * @param millisecond 대기 시간 (ms)
30
+ */
31
+ export async function time(millisecond) {
32
+ return new Promise((resolve) => setTimeout(resolve, millisecond));
14
33
  }
15
- export {
16
- time,
17
- until
18
- };
19
- //# sourceMappingURL=wait.js.map
34
+ //# sourceMappingURL=wait.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/wait.ts"],
4
- "mappings": "AAGA,SAAS,oBAAoB;AAc7B,eAAsB,MACpB,WACA,cACA,UACe;AACf,MAAI,QAAQ;AACZ,SAAO,CAAE,MAAM,UAAU,GAAI;AAC3B;AACA,QAAI,aAAa,UAAa,SAAS,UAAU;AAC/C,YAAM,IAAI,aAAa,KAAK;AAAA,IAC9B;AAEA,UAAM,KAAK,gBAAgB,GAAG;AAAA,EAChC;AACF;AAMA,eAAsB,KAAK,aAAoC;AAC7D,SAAO,IAAI,QAAc,CAAC,YAAY,WAAW,SAAS,WAAW,CAAC;AACxE;",
5
- "names": []
6
- }
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/utils/wait.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,SAA2C,EAC3C,YAAqB,EACrB,QAAiB;IAEjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,EAAE,CAAC;QAC5B,KAAK,EAAE,CAAC;QACR,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YAChD,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,WAAmB;IAC5C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1E,CAAC"}
@@ -1,16 +1,16 @@
1
1
  /**
2
- * XML conversion utility
2
+ * XML 변환 유틸리티
3
3
  */
4
4
  import type { XmlBuilderOptions } from "fast-xml-parser";
5
5
  /**
6
- * Parse XML string into an object
7
- * @param str XML string
8
- * @param options Options
9
- * @param options.stripTagPrefix Whether to remove tag prefix (namespace)
10
- * @returns Parsed object. Structure:
11
- * - Attributes: grouped in `$` object
12
- * - Text nodes: stored in `_` key
13
- * - Child elements: converted to array (except root element)
6
+ * XML 문자열을 객체로 파싱
7
+ * @param str XML 문자열
8
+ * @param options 옵션
9
+ * @param options.stripTagPrefix 태그 접두사(네임스페이스) 제거 여부
10
+ * @returns 파싱된 객체. 구조:
11
+ * - 속성: `$` 객체에 그룹화
12
+ * - 텍스트 노드: `_` key에 저장
13
+ * - 자식 요소: array로 변환 (루트 요소 제외)
14
14
  * @example
15
15
  * xmlParse('<root id="1"><item>hello</item></root>');
16
16
  * // { root: { $: { id: "1" }, item: [{ _: "hello" }] } }
@@ -19,10 +19,10 @@ export declare function parse(str: string, options?: {
19
19
  stripTagPrefix?: boolean;
20
20
  }): unknown;
21
21
  /**
22
- * Serialize object to XML string
23
- * @param obj Object to serialize
24
- * @param options fast-xml-parser XmlBuilderOptions (optional)
25
- * @returns XML string
22
+ * 객체를 XML 문자열로 직렬화
23
+ * @param obj 직렬화할 객체
24
+ * @param options fast-xml-parser XmlBuilderOptions (선택사항)
25
+ * @returns XML 문자열
26
26
  * @example
27
27
  * xmlStringify({
28
28
  * root: {