@simplysm/core-common 13.0.69 → 13.0.71

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 (151) hide show
  1. package/README.md +66 -267
  2. package/dist/common.types.d.ts +14 -14
  3. package/dist/errors/argument-error.d.ts +10 -10
  4. package/dist/errors/argument-error.d.ts.map +1 -1
  5. package/dist/errors/argument-error.js +2 -2
  6. package/dist/errors/argument-error.js.map +1 -1
  7. package/dist/errors/not-implemented-error.d.ts +8 -8
  8. package/dist/errors/not-implemented-error.js +2 -2
  9. package/dist/errors/not-implemented-error.js.map +1 -1
  10. package/dist/errors/sd-error.d.ts +10 -10
  11. package/dist/errors/sd-error.d.ts.map +1 -1
  12. package/dist/errors/timeout-error.d.ts +10 -10
  13. package/dist/errors/timeout-error.js +3 -3
  14. package/dist/errors/timeout-error.js.map +1 -1
  15. package/dist/extensions/arr-ext.d.ts +2 -2
  16. package/dist/extensions/arr-ext.helpers.d.ts +8 -8
  17. package/dist/extensions/arr-ext.helpers.js +1 -1
  18. package/dist/extensions/arr-ext.helpers.js.map +1 -1
  19. package/dist/extensions/arr-ext.js +13 -13
  20. package/dist/extensions/arr-ext.js.map +1 -1
  21. package/dist/extensions/arr-ext.types.d.ts +57 -57
  22. package/dist/extensions/arr-ext.types.d.ts.map +1 -1
  23. package/dist/extensions/map-ext.d.ts +16 -16
  24. package/dist/extensions/set-ext.d.ts +11 -11
  25. package/dist/features/debounce-queue.d.ts +17 -15
  26. package/dist/features/debounce-queue.d.ts.map +1 -1
  27. package/dist/features/debounce-queue.js +6 -6
  28. package/dist/features/debounce-queue.js.map +1 -1
  29. package/dist/features/event-emitter.d.ts +20 -20
  30. package/dist/features/event-emitter.js +17 -17
  31. package/dist/features/serial-queue.d.ts +11 -11
  32. package/dist/features/serial-queue.js +5 -5
  33. package/dist/features/serial-queue.js.map +1 -1
  34. package/dist/globals.d.ts +4 -4
  35. package/dist/types/date-only.d.ts +64 -64
  36. package/dist/types/date-only.d.ts.map +1 -1
  37. package/dist/types/date-only.js +63 -63
  38. package/dist/types/date-time.d.ts +37 -37
  39. package/dist/types/date-time.d.ts.map +1 -1
  40. package/dist/types/date-time.js +54 -37
  41. package/dist/types/date-time.js.map +1 -1
  42. package/dist/types/lazy-gc-map.d.ts +26 -26
  43. package/dist/types/lazy-gc-map.d.ts.map +1 -1
  44. package/dist/types/lazy-gc-map.js +26 -26
  45. package/dist/types/lazy-gc-map.js.map +1 -1
  46. package/dist/types/time.d.ts +25 -25
  47. package/dist/types/time.d.ts.map +1 -1
  48. package/dist/types/time.js +25 -25
  49. package/dist/types/time.js.map +1 -1
  50. package/dist/types/uuid.d.ts +11 -11
  51. package/dist/types/uuid.d.ts.map +1 -1
  52. package/dist/types/uuid.js +12 -12
  53. package/dist/types/uuid.js.map +1 -1
  54. package/dist/utils/bytes.d.ts +17 -17
  55. package/dist/utils/bytes.js +4 -4
  56. package/dist/utils/bytes.js.map +1 -1
  57. package/dist/utils/date-format.d.ts +45 -45
  58. package/dist/utils/date-format.js +1 -1
  59. package/dist/utils/date-format.js.map +1 -1
  60. package/dist/utils/error.d.ts +4 -4
  61. package/dist/utils/json.d.ts +17 -17
  62. package/dist/utils/json.js +3 -3
  63. package/dist/utils/json.js.map +1 -1
  64. package/dist/utils/num.d.ts +23 -23
  65. package/dist/utils/obj.d.ts +111 -111
  66. package/dist/utils/obj.d.ts.map +1 -1
  67. package/dist/utils/obj.js +3 -3
  68. package/dist/utils/obj.js.map +1 -1
  69. package/dist/utils/path.d.ts +10 -10
  70. package/dist/utils/primitive.d.ts +5 -5
  71. package/dist/utils/primitive.js +1 -1
  72. package/dist/utils/primitive.js.map +1 -1
  73. package/dist/utils/str.d.ts +46 -46
  74. package/dist/utils/str.d.ts.map +1 -1
  75. package/dist/utils/str.js +5 -5
  76. package/dist/utils/str.js.map +1 -1
  77. package/dist/utils/template-strings.d.ts +26 -26
  78. package/dist/utils/transferable.d.ts +18 -18
  79. package/dist/utils/transferable.js +1 -1
  80. package/dist/utils/transferable.js.map +1 -1
  81. package/dist/utils/wait.d.ts +9 -9
  82. package/dist/utils/xml.d.ts +13 -13
  83. package/dist/utils/xml.d.ts.map +1 -1
  84. package/dist/utils/xml.js +1 -0
  85. package/dist/utils/xml.js.map +1 -1
  86. package/dist/zip/sd-zip.d.ts +22 -22
  87. package/dist/zip/sd-zip.js +16 -16
  88. package/package.json +4 -4
  89. package/src/common.types.ts +17 -17
  90. package/src/errors/argument-error.ts +15 -15
  91. package/src/errors/not-implemented-error.ts +9 -9
  92. package/src/errors/sd-error.ts +12 -12
  93. package/src/errors/timeout-error.ts +12 -12
  94. package/src/extensions/arr-ext.helpers.ts +10 -10
  95. package/src/extensions/arr-ext.ts +57 -57
  96. package/src/extensions/arr-ext.types.ts +59 -59
  97. package/src/extensions/map-ext.ts +16 -16
  98. package/src/extensions/set-ext.ts +11 -11
  99. package/src/features/debounce-queue.ts +21 -19
  100. package/src/features/event-emitter.ts +25 -25
  101. package/src/features/serial-queue.ts +13 -13
  102. package/src/globals.ts +4 -4
  103. package/src/index.ts +1 -1
  104. package/src/types/date-only.ts +83 -83
  105. package/src/types/date-time.ts +64 -44
  106. package/src/types/lazy-gc-map.ts +45 -45
  107. package/src/types/time.ts +34 -34
  108. package/src/types/uuid.ts +17 -17
  109. package/src/utils/bytes.ts +35 -35
  110. package/src/utils/date-format.ts +65 -65
  111. package/src/utils/error.ts +4 -4
  112. package/src/utils/json.ts +39 -39
  113. package/src/utils/num.ts +23 -23
  114. package/src/utils/obj.ts +138 -138
  115. package/src/utils/path.ts +10 -10
  116. package/src/utils/primitive.ts +6 -6
  117. package/src/utils/str.ts +260 -261
  118. package/src/utils/template-strings.ts +29 -29
  119. package/src/utils/transferable.ts +284 -284
  120. package/src/utils/wait.ts +10 -10
  121. package/src/utils/xml.ts +20 -19
  122. package/src/zip/sd-zip.ts +25 -25
  123. package/tests/errors/errors.spec.ts +80 -0
  124. package/tests/extensions/array-extension.spec.ts +796 -0
  125. package/tests/extensions/map-extension.spec.ts +147 -0
  126. package/tests/extensions/set-extension.spec.ts +74 -0
  127. package/tests/types/date-only.spec.ts +638 -0
  128. package/tests/types/date-time.spec.ts +391 -0
  129. package/tests/types/lazy-gc-map.spec.ts +692 -0
  130. package/tests/types/time.spec.ts +559 -0
  131. package/tests/types/uuid.spec.ts +74 -0
  132. package/tests/utils/bytes-utils.spec.ts +230 -0
  133. package/tests/utils/date-format.spec.ts +373 -0
  134. package/tests/utils/debounce-queue.spec.ts +272 -0
  135. package/tests/utils/json.spec.ts +486 -0
  136. package/tests/utils/number.spec.ts +157 -0
  137. package/tests/utils/object.spec.ts +829 -0
  138. package/tests/utils/path.spec.ts +78 -0
  139. package/tests/utils/primitive.spec.ts +43 -0
  140. package/tests/utils/sd-event-emitter.spec.ts +216 -0
  141. package/tests/utils/serial-queue.spec.ts +365 -0
  142. package/tests/utils/string.spec.ts +281 -0
  143. package/tests/utils/template-strings.spec.ts +57 -0
  144. package/tests/utils/transferable.spec.ts +703 -0
  145. package/tests/utils/wait.spec.ts +145 -0
  146. package/tests/utils/xml.spec.ts +146 -0
  147. package/tests/zip/sd-zip.spec.ts +238 -0
  148. package/docs/extensions.md +0 -503
  149. package/docs/features.md +0 -109
  150. package/docs/types.md +0 -486
  151. package/docs/utils.md +0 -780
@@ -22,17 +22,17 @@ class DateTime {
22
22
  }
23
23
  }
24
24
  /**
25
- * 문자열을 파싱하여 DateTime 인스턴스를 생성
25
+ * Parse a string to create DateTime instance
26
26
  *
27
- * @param str 날짜시간 문자열
28
- * @returns 파싱된 DateTime 인스턴스
29
- * @throws ArgumentError 지원하지 않는 형식인 경우
27
+ * @param str DateTime string
28
+ * @returns Parsed DateTime instance
29
+ * @throws ArgumentError If unsupported format
30
30
  *
31
31
  * @example
32
32
  * DateTime.parse("2025-01-15 10:30:00") // yyyy-MM-dd HH:mm:ss
33
33
  * DateTime.parse("2025-01-15 10:30:00.123") // yyyy-MM-dd HH:mm:ss.fff
34
34
  * DateTime.parse("20250115103000") // yyyyMMddHHmmss
35
- * DateTime.parse("2025-01-15 오전 10:30:00") // yyyy-MM-dd 오전/오후 HH:mm:ss
35
+ * DateTime.parse("2025-01-15 AM 10:30:00") // yyyy-MM-dd AM/PM HH:mm:ss
36
36
  * DateTime.parse("2025-01-15T10:30:00Z") // ISO 8601
37
37
  */
38
38
  static parse(str) {
@@ -40,12 +40,12 @@ class DateTime {
40
40
  if (!Number.isNaN(parsedTick)) {
41
41
  return new DateTime(parsedTick);
42
42
  }
43
- const match1 = /^([0-9]{4})-([0-9]{2})-([0-9]{2}) (오전|오후) ([0-9]{1,2}):([0-9]{2}):([0-9]{2})(\.([0-9]{1,3}))?$/.exec(
43
+ const match1 = /^([0-9]{4})-([0-9]{2})-([0-9]{2}) (AM|PM) ([0-9]{1,2}):([0-9]{2}):([0-9]{2})(\.([0-9]{1,3}))?$/i.exec(
44
44
  str
45
45
  );
46
46
  if (match1 != null) {
47
47
  const rawHour = Number(match1[5]);
48
- const isPM = match1[4] === "\uC624\uD6C4";
48
+ const isPM = match1[4].toUpperCase() === "PM";
49
49
  const hour = convert12To24(rawHour, isPM);
50
50
  return new DateTime(
51
51
  Number(match1[1]),
@@ -57,6 +57,23 @@ class DateTime {
57
57
  match1[9] ? Number(match1[9].padEnd(3, "0")) : void 0
58
58
  );
59
59
  }
60
+ const matchKorean = /^([0-9]{4})-([0-9]{2})-([0-9]{2}) (오전|오후) ([0-9]{1,2}):([0-9]{2}):([0-9]{2})(\.([0-9]{1,3}))?$/.exec(
61
+ str
62
+ );
63
+ if (matchKorean != null) {
64
+ const rawHour = Number(matchKorean[5]);
65
+ const isPM = matchKorean[4] === "\uC624\uD6C4";
66
+ const hour = convert12To24(rawHour, isPM);
67
+ return new DateTime(
68
+ Number(matchKorean[1]),
69
+ Number(matchKorean[2]),
70
+ Number(matchKorean[3]),
71
+ hour,
72
+ Number(matchKorean[6]),
73
+ Number(matchKorean[7]),
74
+ matchKorean[9] ? Number(matchKorean[9].padEnd(3, "0")) : void 0
75
+ );
76
+ }
60
77
  const match2 = /^[0-9]{14}$/.exec(str);
61
78
  if (match2 != null) {
62
79
  return new DateTime(
@@ -83,11 +100,11 @@ class DateTime {
83
100
  );
84
101
  }
85
102
  throw new ArgumentError(
86
- `\uB0A0\uC9DC\uC2DC\uAC04 \uD615\uC2DD\uC744 \uD30C\uC2F1\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC9C0\uC6D0 \uD615\uC2DD: 'yyyy-MM-dd HH:mm:ss', 'yyyyMMddHHmmss', 'yyyy-MM-dd \uC624\uC804/\uC624\uD6C4 HH:mm:ss', ISO 8601`,
103
+ `Failed to parse datetime format. Supported formats: 'yyyy-MM-dd HH:mm:ss', 'yyyyMMddHHmmss', 'yyyy-MM-dd AM/PM HH:mm:ss', ISO 8601`,
87
104
  { input: str }
88
105
  );
89
106
  }
90
- //#region Getters (읽기 전용)
107
+ //#region Getters (read-only)
91
108
  get year() {
92
109
  return this.date.getFullYear();
93
110
  }
@@ -112,20 +129,20 @@ class DateTime {
112
129
  get tick() {
113
130
  return this.date.getTime();
114
131
  }
115
- /** 요일 (일~토: 0~6) */
132
+ /** Day of week (Sunday~Saturday: 0~6) */
116
133
  get dayOfWeek() {
117
134
  return this.date.getDay();
118
135
  }
119
136
  get timezoneOffsetMinutes() {
120
137
  return -this.date.getTimezoneOffset();
121
138
  }
122
- /** 날짜시간 세팅이 제대로 되었는지 여부 */
139
+ /** Whether the datetime is set correctly */
123
140
  get isValid() {
124
141
  return this.date instanceof Date && !Number.isNaN(this.date.getTime());
125
142
  }
126
143
  //#endregion
127
- //#region 불변 변환 메서드 ( 인스턴스 반환)
128
- /** 지정된 연도로 인스턴스 반환 */
144
+ //#region Immutable transformation methods (returns new instance)
145
+ /** Return new instance with specified year */
129
146
  setYear(year) {
130
147
  return new DateTime(
131
148
  year,
@@ -138,10 +155,10 @@ class DateTime {
138
155
  );
139
156
  }
140
157
  /**
141
- * 지정된 월로 DateTime 인스턴스를 반환
142
- * @param month 설정할 (1-12, 범위 값은 연도 조정)
143
- * @note 대상 월의 일수보다 현재 일자가 크면 해당 월의 마지막 날로 조정됨
144
- * (예: 1월 31일에서 setMonth(2) → 2월 28 또는 29)
158
+ * Return new DateTime instance with specified month
159
+ * @param month Month to set (1-12, out-of-range values are adjusted in year)
160
+ * @note If current day is greater than target month's day count, it will be adjusted to last day of month
161
+ * (e.g., setMonth(2) on Jan 31 Feb 28 or 29)
145
162
  */
146
163
  setMonth(month) {
147
164
  const normalized = normalizeMonth(this.year, month, this.day);
@@ -156,10 +173,10 @@ class DateTime {
156
173
  );
157
174
  }
158
175
  /**
159
- * 지정된 일자로 DateTime 인스턴스를 반환
160
- * @param day 설정할 일자
161
- * @note 해당 월의 유효 범위를 벗어나는 일자는 JavaScript Date 기본 동작에 따라
162
- * 자동으로 다음/이전 달로 조정됨 (예: 1월에 day=32 → 2월 1)
176
+ * Return new DateTime instance with specified day
177
+ * @param day Day to set
178
+ * @note Days outside valid month range are automatically adjusted to next/previous month per JavaScript Date behavior
179
+ * (e.g., day=32 in January February 1)
163
180
  */
164
181
  setDay(day) {
165
182
  return new DateTime(
@@ -172,7 +189,7 @@ class DateTime {
172
189
  this.millisecond
173
190
  );
174
191
  }
175
- /** 지정된 시로 인스턴스 반환 */
192
+ /** Return new instance with specified hour */
176
193
  setHour(hour) {
177
194
  return new DateTime(
178
195
  this.year,
@@ -184,7 +201,7 @@ class DateTime {
184
201
  this.millisecond
185
202
  );
186
203
  }
187
- /** 지정된 분으로 인스턴스 반환 */
204
+ /** Return new instance with specified minute */
188
205
  setMinute(minute) {
189
206
  return new DateTime(
190
207
  this.year,
@@ -196,7 +213,7 @@ class DateTime {
196
213
  this.millisecond
197
214
  );
198
215
  }
199
- /** 지정된 초로 인스턴스 반환 */
216
+ /** Return new instance with specified second */
200
217
  setSecond(second) {
201
218
  return new DateTime(
202
219
  this.year,
@@ -208,7 +225,7 @@ class DateTime {
208
225
  this.millisecond
209
226
  );
210
227
  }
211
- /** 지정된 밀리초로 인스턴스 반환 */
228
+ /** Return new instance with specified millisecond */
212
229
  setMillisecond(millisecond) {
213
230
  return new DateTime(
214
231
  this.year,
@@ -221,41 +238,41 @@ class DateTime {
221
238
  );
222
239
  }
223
240
  //#endregion
224
- //#region 산술 메서드 ( 인스턴스 반환)
225
- /** 지정된 연수를 더한 인스턴스 반환 */
241
+ //#region Arithmetic methods (returns new instance)
242
+ /** Return new instance with specified years added */
226
243
  addYears(years) {
227
244
  return this.setYear(this.year + years);
228
245
  }
229
- /** 지정된 월수를 더한 인스턴스 반환 */
246
+ /** Return new instance with specified months added */
230
247
  addMonths(months) {
231
248
  return this.setMonth(this.month + months);
232
249
  }
233
- /** 지정된 일수를 더한 인스턴스 반환 */
250
+ /** Return new instance with specified days added */
234
251
  addDays(days) {
235
252
  return new DateTime(this.tick + days * 24 * 60 * 60 * 1e3);
236
253
  }
237
- /** 지정된 시간을 더한 인스턴스 반환 */
254
+ /** Return new instance with specified hours added */
238
255
  addHours(hours) {
239
256
  return new DateTime(this.tick + hours * 60 * 60 * 1e3);
240
257
  }
241
- /** 지정된 분을 더한 인스턴스 반환 */
258
+ /** Return new instance with specified minutes added */
242
259
  addMinutes(minutes) {
243
260
  return new DateTime(this.tick + minutes * 60 * 1e3);
244
261
  }
245
- /** 지정된 초를 더한 인스턴스 반환 */
262
+ /** Return new instance with specified seconds added */
246
263
  addSeconds(seconds) {
247
264
  return new DateTime(this.tick + seconds * 1e3);
248
265
  }
249
- /** 지정된 밀리초를 더한 인스턴스 반환 */
266
+ /** Return new instance with specified milliseconds added */
250
267
  addMilliseconds(milliseconds) {
251
268
  return new DateTime(this.tick + milliseconds);
252
269
  }
253
270
  //#endregion
254
- //#region 포맷팅
271
+ //#region Formatting
255
272
  /**
256
- * 지정된 포맷으로 문자열 변환
257
- * @param format 포맷 문자열
258
- * @see dtFormat 지원 포맷 문자열 참조
273
+ * Convert to string with specified format
274
+ * @param format Format string
275
+ * @see dtFormat for supported format strings
259
276
  */
260
277
  toFormatString(formatStr) {
261
278
  return formatDate(formatStr, {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/types/date-time.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,18 +1,18 @@
1
1
  /**
2
- * 자동 만료 기능이 있는 Map
3
- * LRU 방식으로 접근 시간 갱신, 일정 시간 미접근 자동 삭제
2
+ * Map with automatic expiration feature
3
+ * Updates access time in LRU manner, auto-deletes if not accessed for specified time
4
4
  *
5
- * @note 인스턴스 사용 후 반드시 dispose() 호출하거나 using 문을 사용해야 함.
6
- * 그렇지 않으면 GC 타이머가 계속 동작하여 메모리 누수 발생.
5
+ * @note Must call dispose() or use 'using' statement after use.
6
+ * Otherwise GC timer continues running and causes memory leak.
7
7
  *
8
8
  * @example
9
- * // using 사용 (권장)
9
+ * // using statement (recommended)
10
10
  * using map = new LazyGcMap({ gcInterval: 10000, expireTime: 60000 });
11
11
  *
12
- * // 또는 명시적 dispose() 호출
12
+ * // Or explicit dispose() call
13
13
  * const map = new LazyGcMap({ gcInterval: 10000, expireTime: 60000 });
14
14
  * try {
15
- * // ... 사용
15
+ * // ... usage
16
16
  * } finally {
17
17
  * map.dispose();
18
18
  * }
@@ -25,46 +25,46 @@ export declare class LazyGcMap<TKey, TValue> {
25
25
  private _isGcRunning;
26
26
  private _isDestroyed;
27
27
  /**
28
- * @param _options 설정 옵션
29
- * @param _options.gcInterval GC 주기 (밀리초). 기본값: expireTime의 1/10 (최소 1000ms)
30
- * @param _options.expireTime 만료 시간 (밀리초). 마지막 접근 시간이 지나면 삭제됨. 예: 60000 (60)
31
- * @param _options.onExpire 만료 호출되는 콜백. 비동기 함수도 가능하며, 에러 발생 로깅 계속 진행됨
28
+ * @param _options Configuration options
29
+ * @param _options.gcInterval GC interval in milliseconds. Default: 1/10 of expireTime (minimum 1000ms)
30
+ * @param _options.expireTime Expiration time in milliseconds. Deleted after this time since last access. Example: 60000 (60 seconds)
31
+ * @param _options.onExpire Callback called on expiration. Can be async function, errors are logged and continue execution
32
32
  */
33
33
  constructor(_options: {
34
34
  gcInterval?: number;
35
35
  expireTime: number;
36
36
  onExpire?: (key: TKey, value: TValue) => void | Promise<void>;
37
37
  });
38
- /** 저장된 항목 */
38
+ /** Number of stored items */
39
39
  get size(): number;
40
- /** 존재 여부 확인 (접근 시간 갱신 안함) */
40
+ /** Check if key exists (does not update access time) */
41
41
  has(key: TKey): boolean;
42
- /** 조회 (접근 시간 갱신됨) */
42
+ /** Get value (updates access time) */
43
43
  get(key: TKey): TValue | undefined;
44
- /** 저장 (접근 시간 설정 GC 타이머 시작) */
44
+ /** Store value (sets access time and starts GC timer) */
45
45
  set(key: TKey, value: TValue): void;
46
- /** 항목 삭제 (비었으면 GC 타이머 중지) */
46
+ /** Delete item (stops GC timer if empty) */
47
47
  delete(key: TKey): boolean;
48
- /** 인스턴스 정리 (GC 타이머 중지 데이터 삭제) */
48
+ /** Clean up instance (stop GC timer and delete data) */
49
49
  dispose(): void;
50
- /** using 지원 */
50
+ /** Support for 'using' statement */
51
51
  [Symbol.dispose](): void;
52
52
  /**
53
- * 모든 항목 삭제 (인스턴스는 계속 사용 가능)
53
+ * Delete all items (instance can still be used)
54
54
  */
55
55
  clear(): void;
56
56
  /**
57
- * 키에 해당하는 값을 반환하고, 없으면 factory 생성 저장하여 반환
58
- * @param key 조회할
59
- * @param factory 키가 없을 값을 생성하는 함수
60
- * @returns 기존 또는 새로 생성된 값
57
+ * Return value for key, or create and store via factory if not found
58
+ * @param key Key to look up
59
+ * @param factory Function to create value if key not found
60
+ * @returns Existing or newly created value
61
61
  */
62
62
  getOrCreate(key: TKey, factory: () => TValue): TValue;
63
- /** 값들만 순회 (Iterator) */
63
+ /** Iterate over values only (Iterator) */
64
64
  values(): IterableIterator<TValue>;
65
- /** 키들만 순회 (Iterator) */
65
+ /** Iterate over keys only (Iterator) */
66
66
  keys(): IterableIterator<TKey>;
67
- /** 엔트리 순회 (Iterator) */
67
+ /** Iterate over entries (Iterator) */
68
68
  entries(): IterableIterator<[TKey, TValue]>;
69
69
  private _startGc;
70
70
  private _runGc;
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-gc-map.d.ts","sourceRoot":"","sources":["../../src/types/lazy-gc-map.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,SAAS,CAAC,IAAI,EAAE,MAAM;IAoB/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAnB3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAG/D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0D;IAG/E,OAAO,CAAC,QAAQ,CAAC,CAAiC;IAElD,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;;OAKG;gBAEgB,QAAQ,EAAE;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/D;IAGH,eAAe;IACf,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,+BAA+B;IAC/B,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAKvB,uBAAuB;IACvB,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS;IAUlC,kCAAkC;IAClC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOnC,6BAA6B;IAC7B,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAU1B,mCAAmC;IACnC,OAAO,IAAI,IAAI;IAOf,iBAAiB;IACjB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,GAAG,MAAM;IAerD,wBAAwB;IACvB,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAOnC,wBAAwB;IACvB,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAK/B,wBAAwB;IACvB,OAAO,IAAI,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAS5C,OAAO,CAAC,QAAQ;YAUF,MAAM;IAmDpB,OAAO,CAAC,OAAO;CAQhB"}
1
+ {"version":3,"file":"lazy-gc-map.d.ts","sourceRoot":"","sources":["../../src/types/lazy-gc-map.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,SAAS,CAAC,IAAI,EAAE,MAAM;IAoB/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAnB3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAG/D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0D;IAG/E,OAAO,CAAC,QAAQ,CAAC,CAAiC;IAElD,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;;OAKG;gBAEgB,QAAQ,EAAE;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/D;IAGH,6BAA6B;IAC7B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,wDAAwD;IACxD,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAKvB,sCAAsC;IACtC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS;IAUlC,yDAAyD;IACzD,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOnC,4CAA4C;IAC5C,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAU1B,wDAAwD;IACxD,OAAO,IAAI,IAAI;IAOf,oCAAoC;IACpC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,GAAG,MAAM;IAerD,0CAA0C;IACzC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAOnC,wCAAwC;IACvC,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAK/B,sCAAsC;IACrC,OAAO,IAAI,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAS5C,OAAO,CAAC,QAAQ;YAUF,MAAM;IAmDpB,OAAO,CAAC,OAAO;CAQhB"}
@@ -1,33 +1,33 @@
1
1
  import consola from "consola";
2
2
  class LazyGcMap {
3
3
  /**
4
- * @param _options 설정 옵션
5
- * @param _options.gcInterval GC 주기 (밀리초). 기본값: expireTime의 1/10 (최소 1000ms)
6
- * @param _options.expireTime 만료 시간 (밀리초). 마지막 접근 시간이 지나면 삭제됨. 예: 60000 (60)
7
- * @param _options.onExpire 만료 호출되는 콜백. 비동기 함수도 가능하며, 에러 발생 로깅 계속 진행됨
4
+ * @param _options Configuration options
5
+ * @param _options.gcInterval GC interval in milliseconds. Default: 1/10 of expireTime (minimum 1000ms)
6
+ * @param _options.expireTime Expiration time in milliseconds. Deleted after this time since last access. Example: 60000 (60 seconds)
7
+ * @param _options.onExpire Callback called on expiration. Can be async function, errors are logged and continue execution
8
8
  */
9
9
  constructor(_options) {
10
10
  this._options = _options;
11
11
  }
12
12
  static _logger = consola.withTag("LazyGcMap");
13
- // 실제 데이터와 마지막 접근 시간을 함께 저장
13
+ // Store actual data and last access time together
14
14
  _map = /* @__PURE__ */ new Map();
15
- // GC 타이머
15
+ // GC timer
16
16
  _gcTimer;
17
- // GC 실행 플래그 (중복 실행 방지)
17
+ // Flag to prevent duplicate GC runs
18
18
  _isGcRunning = false;
19
- // destroy 호출 여부
19
+ // Whether dispose() has been called
20
20
  _isDestroyed = false;
21
- /** 저장된 항목 */
21
+ /** Number of stored items */
22
22
  get size() {
23
23
  return this._map.size;
24
24
  }
25
- /** 존재 여부 확인 (접근 시간 갱신 안함) */
25
+ /** Check if key exists (does not update access time) */
26
26
  has(key) {
27
27
  if (this._isDestroyed) return false;
28
28
  return this._map.has(key);
29
29
  }
30
- /** 조회 (접근 시간 갱신됨) */
30
+ /** Get value (updates access time) */
31
31
  get(key) {
32
32
  if (this._isDestroyed) return void 0;
33
33
  const item = this._map.get(key);
@@ -35,13 +35,13 @@ class LazyGcMap {
35
35
  item.lastAccess = Date.now();
36
36
  return item.value;
37
37
  }
38
- /** 저장 (접근 시간 설정 GC 타이머 시작) */
38
+ /** Store value (sets access time and starts GC timer) */
39
39
  set(key, value) {
40
40
  if (this._isDestroyed) return;
41
41
  this._map.set(key, { value, lastAccess: Date.now() });
42
42
  this._startGc();
43
43
  }
44
- /** 항목 삭제 (비었으면 GC 타이머 중지) */
44
+ /** Delete item (stops GC timer if empty) */
45
45
  delete(key) {
46
46
  if (this._isDestroyed) return false;
47
47
  const result = this._map.delete(key);
@@ -50,19 +50,19 @@ class LazyGcMap {
50
50
  }
51
51
  return result;
52
52
  }
53
- /** 인스턴스 정리 (GC 타이머 중지 데이터 삭제) */
53
+ /** Clean up instance (stop GC timer and delete data) */
54
54
  dispose() {
55
55
  if (this._isDestroyed) return;
56
56
  this._isDestroyed = true;
57
57
  this._map.clear();
58
58
  this._stopGc();
59
59
  }
60
- /** using 지원 */
60
+ /** Support for 'using' statement */
61
61
  [Symbol.dispose]() {
62
62
  this.dispose();
63
63
  }
64
64
  /**
65
- * 모든 항목 삭제 (인스턴스는 계속 사용 가능)
65
+ * Delete all items (instance can still be used)
66
66
  */
67
67
  clear() {
68
68
  if (this._isDestroyed) return;
@@ -70,14 +70,14 @@ class LazyGcMap {
70
70
  this._stopGc();
71
71
  }
72
72
  /**
73
- * 키에 해당하는 값을 반환하고, 없으면 factory 생성 저장하여 반환
74
- * @param key 조회할
75
- * @param factory 키가 없을 값을 생성하는 함수
76
- * @returns 기존 또는 새로 생성된 값
73
+ * Return value for key, or create and store via factory if not found
74
+ * @param key Key to look up
75
+ * @param factory Function to create value if key not found
76
+ * @returns Existing or newly created value
77
77
  */
78
78
  getOrCreate(key, factory) {
79
79
  if (this._isDestroyed) {
80
- throw new Error("LazyGcMap\uC774 \uC774\uBBF8 dispose\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
80
+ throw new Error("LazyGcMap has already been disposed.");
81
81
  }
82
82
  const item = this._map.get(key);
83
83
  if (item == null) {
@@ -88,26 +88,26 @@ class LazyGcMap {
88
88
  item.lastAccess = Date.now();
89
89
  return item.value;
90
90
  }
91
- /** 값들만 순회 (Iterator) */
91
+ /** Iterate over values only (Iterator) */
92
92
  *values() {
93
93
  if (this._isDestroyed) return;
94
94
  for (const item of this._map.values()) {
95
95
  yield item.value;
96
96
  }
97
97
  }
98
- /** 키들만 순회 (Iterator) */
98
+ /** Iterate over keys only (Iterator) */
99
99
  *keys() {
100
100
  if (this._isDestroyed) return;
101
101
  yield* this._map.keys();
102
102
  }
103
- /** 엔트리 순회 (Iterator) */
103
+ /** Iterate over entries (Iterator) */
104
104
  *entries() {
105
105
  if (this._isDestroyed) return;
106
106
  for (const [key, item] of this._map.entries()) {
107
107
  yield [key, item.value];
108
108
  }
109
109
  }
110
- //#region GC 로직
110
+ //#region GC logic
111
111
  _startGc() {
112
112
  if (this._isDestroyed) return;
113
113
  if (this._gcTimer != null) return;
@@ -136,7 +136,7 @@ class LazyGcMap {
136
136
  try {
137
137
  await this._options.onExpire(key, item.value);
138
138
  } catch (err) {
139
- LazyGcMap._logger.error("onExpire \uCF5C\uBC31 \uC5D0\uB7EC", err);
139
+ LazyGcMap._logger.error("onExpire callback error", err);
140
140
  }
141
141
  }
142
142
  const afterItem = this._map.get(key);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/types/lazy-gc-map.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
- * 시간 클래스 (날짜제외: HH:mm:ss.fff, 불변)
2
+ * Time class (without date: HH:mm:ss.fff, immutable)
3
3
  *
4
- * 날짜 정보 없이 시간만 저장하는 불변 클래스이다.
5
- * 24시간을 초과하거나 음수인 경우 자동으로 정규화된다.
4
+ * An immutable class that stores only time without date information.
5
+ * Values exceeding 24 hours or negative values are automatically normalized.
6
6
  *
7
7
  * @example
8
8
  * const now = new Time();
@@ -12,26 +12,26 @@
12
12
  export declare class Time {
13
13
  private static readonly MS_PER_DAY;
14
14
  private readonly _tick;
15
- /** 현재 시간으로 생성 */
15
+ /** Create with current time */
16
16
  constructor();
17
- /** 시분초밀리초로 생성 */
17
+ /** Create with hour, minute, second, millisecond */
18
18
  constructor(hour: number, minute: number, second?: number, millisecond?: number);
19
- /** tick (밀리초)으로 생성 */
19
+ /** Create from tick (millisecond) */
20
20
  constructor(tick: number);
21
- /** Date 객체에서 시간 부분만 추출하여 생성 */
21
+ /** Create by extracting time part only from Date object */
22
22
  constructor(date: Date);
23
23
  /**
24
- * 문자열을 파싱하여 Time 인스턴스를 생성
24
+ * Parse a string to create Time instance
25
25
  *
26
- * @param str 시간 문자열
27
- * @returns 파싱된 Time 인스턴스
28
- * @throws ArgumentError 지원하지 않는 형식인 경우
26
+ * @param str Time string
27
+ * @returns Parsed Time instance
28
+ * @throws ArgumentError If unsupported format
29
29
  *
30
30
  * @example
31
31
  * Time.parse("10:30:00") // HH:mm:ss
32
32
  * Time.parse("10:30:00.123") // HH:mm:ss.fff
33
- * Time.parse("오전 10:30:00") // 오전/오후 HH:mm:ss
34
- * Time.parse("2025-01-15T10:30:00") // ISO 8601 (시간 부분만 추출)
33
+ * Time.parse("AM 10:30:00") // AM/PM HH:mm:ss
34
+ * Time.parse("2025-01-15T10:30:00") // ISO 8601 (extract time part only)
35
35
  */
36
36
  static parse(str: string): Time;
37
37
  get hour(): number;
@@ -39,28 +39,28 @@ export declare class Time {
39
39
  get second(): number;
40
40
  get millisecond(): number;
41
41
  get tick(): number;
42
- /** 시간 세팅이 제대로 되었는지 여부 */
42
+ /** Whether time is set correctly */
43
43
  get isValid(): boolean;
44
- /** 지정된 시로 인스턴스 반환 */
44
+ /** Return new instance with specified hour */
45
45
  setHour(hour: number): Time;
46
- /** 지정된 분으로 인스턴스 반환 */
46
+ /** Return new instance with specified minute */
47
47
  setMinute(minute: number): Time;
48
- /** 지정된 초로 인스턴스 반환 */
48
+ /** Return new instance with specified second */
49
49
  setSecond(second: number): Time;
50
- /** 지정된 밀리초로 인스턴스 반환 */
50
+ /** Return new instance with specified millisecond */
51
51
  setMillisecond(millisecond: number): Time;
52
- /** 지정된 시간을 더한 인스턴스 반환 (24시간 순환) */
52
+ /** Return new instance with specified hours added (24-hour wraparound) */
53
53
  addHours(hours: number): Time;
54
- /** 지정된 분을 더한 인스턴스 반환 (24시간 순환) */
54
+ /** Return new instance with specified minutes added (24-hour wraparound) */
55
55
  addMinutes(minutes: number): Time;
56
- /** 지정된 초를 더한 인스턴스 반환 (24시간 순환) */
56
+ /** Return new instance with specified seconds added (24-hour wraparound) */
57
57
  addSeconds(seconds: number): Time;
58
- /** 지정된 밀리초를 더한 인스턴스 반환 (24시간 순환) */
58
+ /** Return new instance with specified milliseconds added (24-hour wraparound) */
59
59
  addMilliseconds(milliseconds: number): Time;
60
60
  /**
61
- * 지정된 포맷으로 문자열 변환
62
- * @param format 포맷 문자열
63
- * @see dtFormat 지원 포맷 문자열 참조
61
+ * Convert to string with specified format
62
+ * @param format Format string
63
+ * @see dtFormat for supported format strings
64
64
  */
65
65
  toFormatString(formatStr: string): string;
66
66
  toString(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/types/time.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAEzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,iBAAiB;;IAEjB,iBAAiB;gBACL,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAC/E,sBAAsB;gBACV,IAAI,EAAE,MAAM;IACxB,+BAA+B;gBACnB,IAAI,EAAE,IAAI;IA8BtB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA+C/B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,yBAAyB;IACzB,IAAI,OAAO,IAAI,OAAO,CAErB;IAMD,uBAAuB;IACvB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,wBAAwB;IACxB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,uBAAuB;IACvB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,yBAAyB;IACzB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQzC,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,oCAAoC;IACpC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,oCAAoC;IACpC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,sCAAsC;IACtC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAU3C;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IASzC,QAAQ,IAAI,MAAM;CAKnB"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/types/time.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAEzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,+BAA+B;;IAE/B,oDAAoD;gBACxC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAC/E,qCAAqC;gBACzB,IAAI,EAAE,MAAM;IACxB,2DAA2D;gBAC/C,IAAI,EAAE,IAAI;IA8BtB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA+C/B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,oCAAoC;IACpC,IAAI,OAAO,IAAI,OAAO,CAErB;IAMD,8CAA8C;IAC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,gDAAgD;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,gDAAgD;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,qDAAqD;IACrD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQzC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,4EAA4E;IAC5E,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,4EAA4E;IAC5E,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,iFAAiF;IACjF,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAU3C;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IASzC,QAAQ,IAAI,MAAM;CAKnB"}