@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,8 +1,8 @@
1
1
  /**
2
- * DateTime class (immutable)
2
+ * DateTime 클래스 (불변)
3
3
  *
4
- * Wraps JavaScript Date object to provide immutability and convenient API.
5
- * Supports millisecond precision and operates based on local timezone.
4
+ * JavaScript Date 객체를 래핑하여 불변성과 편리한 API를 제공.
5
+ * 밀리초 정밀도를 지원하고 로컬 타임존 기준으로 동작함.
6
6
  *
7
7
  * @example
8
8
  * const now = new DateTime();
@@ -11,20 +11,20 @@
11
11
  */
12
12
  export declare class DateTime {
13
13
  readonly date: Date;
14
- /** Create with current time */
14
+ /** 현재 시간으로 생성 */
15
15
  constructor();
16
- /** Create with year, month, day, hour, minute, second, millisecond */
16
+ /** 년, 월, 일, 시, 분, 초, 밀리초로 생성 */
17
17
  constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);
18
- /** Create from tick (millisecond) */
18
+ /** tick (밀리초)으로 생성 */
19
19
  constructor(tick: number);
20
- /** Create from Date object */
20
+ /** Date 객체로 생성 */
21
21
  constructor(date: Date);
22
22
  /**
23
- * Parse a string to create DateTime instance
23
+ * 문자열을 파싱하여 DateTime 인스턴스 생성
24
24
  *
25
- * @param str DateTime string
26
- * @returns Parsed DateTime instance
27
- * @throws ArgumentError If unsupported format
25
+ * @param str DateTime 문자열
26
+ * @returns 파싱된 DateTime 인스턴스
27
+ * @throws ArgumentError 지원하지 않는 형식인 경우
28
28
  *
29
29
  * @example
30
30
  * DateTime.parse("2025-01-15 10:30:00") // yyyy-MM-dd HH:mm:ss
@@ -42,53 +42,53 @@ export declare class DateTime {
42
42
  get second(): number;
43
43
  get millisecond(): number;
44
44
  get tick(): number;
45
- /** Day of week (Sunday~Saturday: 0~6) */
45
+ /** 요일 (일요일~토요일: 0~6) */
46
46
  get dayOfWeek(): number;
47
47
  get timezoneOffsetMinutes(): number;
48
- /** Whether the datetime is set correctly */
48
+ /** 날짜시간이 올바르게 설정되었는지 여부 */
49
49
  get isValid(): boolean;
50
- /** Return new instance with specified year */
50
+ /** 지정된 연도로 인스턴스 반환 */
51
51
  setYear(year: number): DateTime;
52
52
  /**
53
- * Return new DateTime instance with specified month
54
- * @param month Month to set (1-12, out-of-range values are adjusted in year)
55
- * @note If current day is greater than target month's day count, it will be adjusted to last day of month
56
- * (e.g., setMonth(2) on Jan 31 Feb 28 or 29)
53
+ * 지정된 월로 DateTime 인스턴스 반환
54
+ * @param month 설정할 (1-12, 범위 밖의 값은 연도에서 조정됨)
55
+ * @note 현재 일이 대상 월의 일수보다 크면 해당 월의 마지막 일로 조정됨
56
+ * (예: 1월 31일에서 setMonth(2) → 2월 28 또는 29)
57
57
  */
58
58
  setMonth(month: number): DateTime;
59
59
  /**
60
- * Return new DateTime instance with specified day
61
- * @param day Day to set
62
- * @note Days outside valid month range are automatically adjusted to next/previous month per JavaScript Date behavior
63
- * (e.g., day=32 in January February 1)
60
+ * 지정된 일로 DateTime 인스턴스 반환
61
+ * @param day 설정할
62
+ * @note 유효한 범위를 벗어나는 일은 JavaScript Date 동작에 따라 자동으로 다음/이전 월로 조정됨
63
+ * (예: 1월에 day=32 → 2월 1)
64
64
  */
65
65
  setDay(day: number): DateTime;
66
- /** Return new instance with specified hour */
66
+ /** 지정된 시로 인스턴스 반환 */
67
67
  setHour(hour: number): DateTime;
68
- /** Return new instance with specified minute */
68
+ /** 지정된 분으로 인스턴스 반환 */
69
69
  setMinute(minute: number): DateTime;
70
- /** Return new instance with specified second */
70
+ /** 지정된 초로 인스턴스 반환 */
71
71
  setSecond(second: number): DateTime;
72
- /** Return new instance with specified millisecond */
72
+ /** 지정된 밀리초로 인스턴스 반환 */
73
73
  setMillisecond(millisecond: number): DateTime;
74
- /** Return new instance with specified years added */
74
+ /** 지정된 연수를 더한 인스턴스 반환 */
75
75
  addYears(years: number): DateTime;
76
- /** Return new instance with specified months added */
76
+ /** 지정된 월수를 더한 인스턴스 반환 */
77
77
  addMonths(months: number): DateTime;
78
- /** Return new instance with specified days added */
78
+ /** 지정된 일수를 더한 인스턴스 반환 */
79
79
  addDays(days: number): DateTime;
80
- /** Return new instance with specified hours added */
80
+ /** 지정된 시간을 더한 인스턴스 반환 */
81
81
  addHours(hours: number): DateTime;
82
- /** Return new instance with specified minutes added */
82
+ /** 지정된 분을 더한 인스턴스 반환 */
83
83
  addMinutes(minutes: number): DateTime;
84
- /** Return new instance with specified seconds added */
84
+ /** 지정된 초를 더한 인스턴스 반환 */
85
85
  addSeconds(seconds: number): DateTime;
86
- /** Return new instance with specified milliseconds added */
86
+ /** 지정된 밀리초를 더한 인스턴스 반환 */
87
87
  addMilliseconds(milliseconds: number): DateTime;
88
88
  /**
89
- * Convert to string with specified format
90
- * @param format Format string
91
- * @see dtFormat for supported format strings
89
+ * 지정된 형식으로 문자열 변환
90
+ * @param format 형식 문자열
91
+ * @see dtFormat 지원되는 형식 문자열 참조
92
92
  */
93
93
  toFormatString(formatStr: string): string;
94
94
  toString(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"date-time.d.ts","sourceRoot":"","sources":["../../src/types/date-time.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,+BAA+B;;IAE/B,sEAAsE;gBAEpE,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM;IAEtB,qCAAqC;gBACzB,IAAI,EAAE,MAAM;IACxB,8BAA8B;gBAClB,IAAI,EAAE,IAAI;IA6BtB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAiFnC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,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,yCAAyC;IACzC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED,4CAA4C;IAC5C,IAAI,OAAO,IAAI,OAAO,CAErB;IAMD,8CAA8C;IAC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAY/B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAajC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAY7B,8CAA8C;IAC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAY/B,gDAAgD;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAYnC,gDAAgD;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAYnC,qDAAqD;IACrD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ;IAgB7C,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIjC,sDAAsD;IACtD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAInC,oDAAoD;IACpD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAI/B,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIjC,uDAAuD;IACvD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAIrC,uDAAuD;IACvD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAIrC,4DAA4D;IAC5D,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ;IAQ/C;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAazC,QAAQ,IAAI,MAAM;CAKnB"}
1
+ {"version":3,"file":"date-time.d.ts","sourceRoot":"","sources":["../../src/types/date-time.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,iBAAiB;;IAEjB,gCAAgC;gBAE9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM;IAEtB,sBAAsB;gBACV,IAAI,EAAE,MAAM;IACxB,kBAAkB;gBACN,IAAI,EAAE,IAAI;IA6BtB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAiFnC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,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,wBAAwB;IACxB,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED,2BAA2B;IAC3B,IAAI,OAAO,IAAI,OAAO,CAErB;IAMD,wBAAwB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAa/B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAajC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAY7B,uBAAuB;IACvB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAY/B,wBAAwB;IACxB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAYnC,uBAAuB;IACvB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAYnC,yBAAyB;IACzB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ;IAgB7C,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIjC,2BAA2B;IAC3B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAInC,2BAA2B;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAI/B,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIjC,0BAA0B;IAC1B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAIrC,0BAA0B;IAC1B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAIrC,4BAA4B;IAC5B,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ;IAQ/C;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAazC,QAAQ,IAAI,MAAM;CAKnB"}
@@ -1,297 +1,205 @@
1
1
  import { ArgumentError } from "../errors/argument-error.js";
2
2
  import { convert12To24, format, normalizeMonth } from "../utils/date-format.js";
3
- class DateTime {
4
- date;
5
- constructor(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
6
- if (arg1 === void 0) {
7
- this.date = /* @__PURE__ */ new Date();
8
- } else if (arg2 !== void 0 && arg3 !== void 0) {
9
- this.date = new Date(
10
- arg1,
11
- arg2 - 1,
12
- arg3,
13
- arg4 ?? 0,
14
- arg5 ?? 0,
15
- arg6 ?? 0,
16
- arg7 ?? 0
17
- );
18
- } else if (arg1 instanceof Date) {
19
- this.date = new Date(arg1.getTime());
20
- } else {
21
- this.date = new Date(arg1);
3
+ /**
4
+ * DateTime 클래스 (불변)
5
+ *
6
+ * JavaScript Date 객체를 래핑하여 불변성과 편리한 API를 제공.
7
+ * 밀리초 정밀도를 지원하고 로컬 타임존 기준으로 동작함.
8
+ *
9
+ * @example
10
+ * const now = new DateTime();
11
+ * const specific = new DateTime(2025, 1, 15, 10, 30, 0);
12
+ * const parsed = DateTime.parse("2025-01-15 10:30:00");
13
+ */
14
+ export class DateTime {
15
+ date;
16
+ constructor(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
17
+ if (arg1 === undefined) {
18
+ this.date = new Date();
19
+ }
20
+ else if (arg2 !== undefined && arg3 !== undefined) {
21
+ this.date = new Date(arg1, arg2 - 1, arg3, arg4 ?? 0, arg5 ?? 0, arg6 ?? 0, arg7 ?? 0);
22
+ }
23
+ else if (arg1 instanceof Date) {
24
+ this.date = new Date(arg1.getTime());
25
+ }
26
+ else {
27
+ this.date = new Date(arg1);
28
+ }
22
29
  }
23
- }
24
- /**
25
- * Parse a string to create DateTime instance
26
- *
27
- * @param str DateTime string
28
- * @returns Parsed DateTime instance
29
- * @throws ArgumentError If unsupported format
30
- *
31
- * @example
32
- * DateTime.parse("2025-01-15 10:30:00") // yyyy-MM-dd HH:mm:ss
33
- * DateTime.parse("2025-01-15 10:30:00.123") // yyyy-MM-dd HH:mm:ss.fff
34
- * DateTime.parse("20250115103000") // yyyyMMddHHmmss
35
- * DateTime.parse("2025-01-15 AM 10:30:00") // yyyy-MM-dd AM/PM HH:mm:ss
36
- * DateTime.parse("2025-01-15T10:30:00Z") // ISO 8601
37
- */
38
- static parse(str) {
39
- const parsedTick = Date.parse(str);
40
- if (!Number.isNaN(parsedTick)) {
41
- return new DateTime(parsedTick);
30
+ /**
31
+ * 문자열을 파싱하여 DateTime 인스턴스 생성
32
+ *
33
+ * @param str DateTime 문자열
34
+ * @returns 파싱된 DateTime 인스턴스
35
+ * @throws ArgumentError 지원하지 않는 형식인 경우
36
+ *
37
+ * @example
38
+ * DateTime.parse("2025-01-15 10:30:00") // yyyy-MM-dd HH:mm:ss
39
+ * DateTime.parse("2025-01-15 10:30:00.123") // yyyy-MM-dd HH:mm:ss.fff
40
+ * DateTime.parse("20250115103000") // yyyyMMddHHmmss
41
+ * DateTime.parse("2025-01-15 AM 10:30:00") // yyyy-MM-dd AM/PM HH:mm:ss
42
+ * DateTime.parse("2025-01-15T10:30:00Z") // ISO 8601
43
+ */
44
+ static parse(str) {
45
+ const parsedTick = Date.parse(str);
46
+ if (!Number.isNaN(parsedTick)) {
47
+ return new DateTime(parsedTick);
48
+ }
49
+ 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(str);
50
+ if (match1 != null) {
51
+ const rawHour = Number(match1[5]);
52
+ const isPM = match1[4].toUpperCase() === "PM";
53
+ const hour = convert12To24(rawHour, isPM);
54
+ return new DateTime(Number(match1[1]), Number(match1[2]), Number(match1[3]), hour, Number(match1[6]), Number(match1[7]), match1[9] ? Number(match1[9].padEnd(3, "0")) : undefined);
55
+ }
56
+ // 한국어 오전/오후 형식
57
+ 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(str);
58
+ if (matchKorean != null) {
59
+ const rawHour = Number(matchKorean[5]);
60
+ const isPM = matchKorean[4] === "오후";
61
+ const hour = convert12To24(rawHour, isPM);
62
+ return new DateTime(Number(matchKorean[1]), Number(matchKorean[2]), Number(matchKorean[3]), hour, Number(matchKorean[6]), Number(matchKorean[7]), matchKorean[9] ? Number(matchKorean[9].padEnd(3, "0")) : undefined);
63
+ }
64
+ const match2 = /^[0-9]{14}$/.exec(str);
65
+ if (match2 != null) {
66
+ return new DateTime(Number(str.substring(0, 4)), Number(str.substring(4, 6)), Number(str.substring(6, 8)), Number(str.substring(8, 10)), Number(str.substring(10, 12)), Number(str.substring(12, 14)));
67
+ }
68
+ const match3 = /^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})(\.([0-9]{1,3}))?$/.exec(str);
69
+ if (match3 != null) {
70
+ return new DateTime(Number(match3[1]), Number(match3[2]), Number(match3[3]), Number(match3[4]), Number(match3[5]), Number(match3[6]), match3[8] ? Number(match3[8].padEnd(3, "0")) : undefined);
71
+ }
72
+ throw new ArgumentError(`날짜시간 형식 파싱 실패. 지원 형식: 'yyyy-MM-dd HH:mm:ss', 'yyyyMMddHHmmss', 'yyyy-MM-dd AM/PM HH:mm:ss', ISO 8601`, { input: str });
42
73
  }
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
- str
45
- );
46
- if (match1 != null) {
47
- const rawHour = Number(match1[5]);
48
- const isPM = match1[4].toUpperCase() === "PM";
49
- const hour = convert12To24(rawHour, isPM);
50
- return new DateTime(
51
- Number(match1[1]),
52
- Number(match1[2]),
53
- Number(match1[3]),
54
- hour,
55
- Number(match1[6]),
56
- Number(match1[7]),
57
- match1[9] ? Number(match1[9].padEnd(3, "0")) : void 0
58
- );
74
+ //#region Getters (읽기 전용)
75
+ get year() {
76
+ return this.date.getFullYear();
59
77
  }
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
- );
78
+ get month() {
79
+ return this.date.getMonth() + 1;
76
80
  }
77
- const match2 = /^[0-9]{14}$/.exec(str);
78
- if (match2 != null) {
79
- return new DateTime(
80
- Number(str.substring(0, 4)),
81
- Number(str.substring(4, 6)),
82
- Number(str.substring(6, 8)),
83
- Number(str.substring(8, 10)),
84
- Number(str.substring(10, 12)),
85
- Number(str.substring(12, 14))
86
- );
81
+ get day() {
82
+ return this.date.getDate();
87
83
  }
88
- const match3 = /^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})(\.([0-9]{1,3}))?$/.exec(
89
- str
90
- );
91
- if (match3 != null) {
92
- return new DateTime(
93
- Number(match3[1]),
94
- Number(match3[2]),
95
- Number(match3[3]),
96
- Number(match3[4]),
97
- Number(match3[5]),
98
- Number(match3[6]),
99
- match3[8] ? Number(match3[8].padEnd(3, "0")) : void 0
100
- );
84
+ get hour() {
85
+ return this.date.getHours();
86
+ }
87
+ get minute() {
88
+ return this.date.getMinutes();
89
+ }
90
+ get second() {
91
+ return this.date.getSeconds();
92
+ }
93
+ get millisecond() {
94
+ return this.date.getMilliseconds();
95
+ }
96
+ get tick() {
97
+ return this.date.getTime();
98
+ }
99
+ /** 요일 (일요일~토요일: 0~6) */
100
+ get dayOfWeek() {
101
+ return this.date.getDay();
102
+ }
103
+ get timezoneOffsetMinutes() {
104
+ return -this.date.getTimezoneOffset();
105
+ }
106
+ /** 날짜시간이 올바르게 설정되었는지 여부 */
107
+ get isValid() {
108
+ return this.date instanceof Date && !Number.isNaN(this.date.getTime());
109
+ }
110
+ //#endregion
111
+ //#region 불변 변환 메서드 (새 인스턴스 반환)
112
+ /** 지정된 연도로 새 인스턴스 반환 */
113
+ setYear(year) {
114
+ const lastDay = new Date(year, this.month, 0).getDate();
115
+ return new DateTime(year, this.month, Math.min(this.day, lastDay), this.hour, this.minute, this.second, this.millisecond);
116
+ }
117
+ /**
118
+ * 지정된 월로 새 DateTime 인스턴스 반환
119
+ * @param month 설정할 월 (1-12, 범위 밖의 값은 연도에서 조정됨)
120
+ * @note 현재 일이 대상 월의 일수보다 크면 해당 월의 마지막 일로 조정됨
121
+ * (예: 1월 31일에서 setMonth(2) → 2월 28일 또는 29일)
122
+ */
123
+ setMonth(month) {
124
+ const normalized = normalizeMonth(this.year, month, this.day);
125
+ return new DateTime(normalized.year, normalized.month, normalized.day, this.hour, this.minute, this.second, this.millisecond);
126
+ }
127
+ /**
128
+ * 지정된 일로 새 DateTime 인스턴스 반환
129
+ * @param day 설정할 일
130
+ * @note 유효한 월 범위를 벗어나는 일은 JavaScript Date 동작에 따라 자동으로 다음/이전 월로 조정됨
131
+ * (예: 1월에 day=32 → 2월 1일)
132
+ */
133
+ setDay(day) {
134
+ return new DateTime(this.year, this.month, day, this.hour, this.minute, this.second, this.millisecond);
135
+ }
136
+ /** 지정된 시로 새 인스턴스 반환 */
137
+ setHour(hour) {
138
+ return new DateTime(this.year, this.month, this.day, hour, this.minute, this.second, this.millisecond);
139
+ }
140
+ /** 지정된 분으로 새 인스턴스 반환 */
141
+ setMinute(minute) {
142
+ return new DateTime(this.year, this.month, this.day, this.hour, minute, this.second, this.millisecond);
143
+ }
144
+ /** 지정된 초로 새 인스턴스 반환 */
145
+ setSecond(second) {
146
+ return new DateTime(this.year, this.month, this.day, this.hour, this.minute, second, this.millisecond);
147
+ }
148
+ /** 지정된 밀리초로 새 인스턴스 반환 */
149
+ setMillisecond(millisecond) {
150
+ return new DateTime(this.year, this.month, this.day, this.hour, this.minute, this.second, millisecond);
151
+ }
152
+ //#endregion
153
+ //#region 산술 메서드 (새 인스턴스 반환)
154
+ /** 지정된 연수를 더한 새 인스턴스 반환 */
155
+ addYears(years) {
156
+ return this.setYear(this.year + years);
157
+ }
158
+ /** 지정된 월수를 더한 새 인스턴스 반환 */
159
+ addMonths(months) {
160
+ return this.setMonth(this.month + months);
161
+ }
162
+ /** 지정된 일수를 더한 새 인스턴스 반환 */
163
+ addDays(days) {
164
+ return new DateTime(this.tick + days * 24 * 60 * 60 * 1000);
165
+ }
166
+ /** 지정된 시간을 더한 새 인스턴스 반환 */
167
+ addHours(hours) {
168
+ return new DateTime(this.tick + hours * 60 * 60 * 1000);
169
+ }
170
+ /** 지정된 분을 더한 새 인스턴스 반환 */
171
+ addMinutes(minutes) {
172
+ return new DateTime(this.tick + minutes * 60 * 1000);
173
+ }
174
+ /** 지정된 초를 더한 새 인스턴스 반환 */
175
+ addSeconds(seconds) {
176
+ return new DateTime(this.tick + seconds * 1000);
177
+ }
178
+ /** 지정된 밀리초를 더한 새 인스턴스 반환 */
179
+ addMilliseconds(milliseconds) {
180
+ return new DateTime(this.tick + milliseconds);
181
+ }
182
+ //#endregion
183
+ //#region Formatting
184
+ /**
185
+ * 지정된 형식으로 문자열 변환
186
+ * @param format 형식 문자열
187
+ * @see dtFormat 지원되는 형식 문자열 참조
188
+ */
189
+ toFormatString(formatStr) {
190
+ return format(formatStr, {
191
+ year: this.year,
192
+ month: this.month,
193
+ day: this.day,
194
+ hour: this.hour,
195
+ minute: this.minute,
196
+ second: this.second,
197
+ millisecond: this.millisecond,
198
+ timezoneOffsetMinutes: this.timezoneOffsetMinutes,
199
+ });
200
+ }
201
+ toString() {
202
+ return this.toFormatString("yyyy-MM-ddTHH:mm:ss.fffzzz");
101
203
  }
102
- throw new ArgumentError(
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`,
104
- { input: str }
105
- );
106
- }
107
- //#region Getters (read-only)
108
- get year() {
109
- return this.date.getFullYear();
110
- }
111
- get month() {
112
- return this.date.getMonth() + 1;
113
- }
114
- get day() {
115
- return this.date.getDate();
116
- }
117
- get hour() {
118
- return this.date.getHours();
119
- }
120
- get minute() {
121
- return this.date.getMinutes();
122
- }
123
- get second() {
124
- return this.date.getSeconds();
125
- }
126
- get millisecond() {
127
- return this.date.getMilliseconds();
128
- }
129
- get tick() {
130
- return this.date.getTime();
131
- }
132
- /** Day of week (Sunday~Saturday: 0~6) */
133
- get dayOfWeek() {
134
- return this.date.getDay();
135
- }
136
- get timezoneOffsetMinutes() {
137
- return -this.date.getTimezoneOffset();
138
- }
139
- /** Whether the datetime is set correctly */
140
- get isValid() {
141
- return this.date instanceof Date && !Number.isNaN(this.date.getTime());
142
- }
143
- //#endregion
144
- //#region Immutable transformation methods (returns new instance)
145
- /** Return new instance with specified year */
146
- setYear(year) {
147
- return new DateTime(
148
- year,
149
- this.month,
150
- this.day,
151
- this.hour,
152
- this.minute,
153
- this.second,
154
- this.millisecond
155
- );
156
- }
157
- /**
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)
162
- */
163
- setMonth(month) {
164
- const normalized = normalizeMonth(this.year, month, this.day);
165
- return new DateTime(
166
- normalized.year,
167
- normalized.month,
168
- normalized.day,
169
- this.hour,
170
- this.minute,
171
- this.second,
172
- this.millisecond
173
- );
174
- }
175
- /**
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)
180
- */
181
- setDay(day) {
182
- return new DateTime(
183
- this.year,
184
- this.month,
185
- day,
186
- this.hour,
187
- this.minute,
188
- this.second,
189
- this.millisecond
190
- );
191
- }
192
- /** Return new instance with specified hour */
193
- setHour(hour) {
194
- return new DateTime(
195
- this.year,
196
- this.month,
197
- this.day,
198
- hour,
199
- this.minute,
200
- this.second,
201
- this.millisecond
202
- );
203
- }
204
- /** Return new instance with specified minute */
205
- setMinute(minute) {
206
- return new DateTime(
207
- this.year,
208
- this.month,
209
- this.day,
210
- this.hour,
211
- minute,
212
- this.second,
213
- this.millisecond
214
- );
215
- }
216
- /** Return new instance with specified second */
217
- setSecond(second) {
218
- return new DateTime(
219
- this.year,
220
- this.month,
221
- this.day,
222
- this.hour,
223
- this.minute,
224
- second,
225
- this.millisecond
226
- );
227
- }
228
- /** Return new instance with specified millisecond */
229
- setMillisecond(millisecond) {
230
- return new DateTime(
231
- this.year,
232
- this.month,
233
- this.day,
234
- this.hour,
235
- this.minute,
236
- this.second,
237
- millisecond
238
- );
239
- }
240
- //#endregion
241
- //#region Arithmetic methods (returns new instance)
242
- /** Return new instance with specified years added */
243
- addYears(years) {
244
- return this.setYear(this.year + years);
245
- }
246
- /** Return new instance with specified months added */
247
- addMonths(months) {
248
- return this.setMonth(this.month + months);
249
- }
250
- /** Return new instance with specified days added */
251
- addDays(days) {
252
- return new DateTime(this.tick + days * 24 * 60 * 60 * 1e3);
253
- }
254
- /** Return new instance with specified hours added */
255
- addHours(hours) {
256
- return new DateTime(this.tick + hours * 60 * 60 * 1e3);
257
- }
258
- /** Return new instance with specified minutes added */
259
- addMinutes(minutes) {
260
- return new DateTime(this.tick + minutes * 60 * 1e3);
261
- }
262
- /** Return new instance with specified seconds added */
263
- addSeconds(seconds) {
264
- return new DateTime(this.tick + seconds * 1e3);
265
- }
266
- /** Return new instance with specified milliseconds added */
267
- addMilliseconds(milliseconds) {
268
- return new DateTime(this.tick + milliseconds);
269
- }
270
- //#endregion
271
- //#region Formatting
272
- /**
273
- * Convert to string with specified format
274
- * @param format Format string
275
- * @see dtFormat for supported format strings
276
- */
277
- toFormatString(formatStr) {
278
- return format(formatStr, {
279
- year: this.year,
280
- month: this.month,
281
- day: this.day,
282
- hour: this.hour,
283
- minute: this.minute,
284
- second: this.second,
285
- millisecond: this.millisecond,
286
- timezoneOffsetMinutes: this.timezoneOffsetMinutes
287
- });
288
- }
289
- toString() {
290
- return this.toFormatString("yyyy-MM-ddTHH:mm:ss.fffzzz");
291
- }
292
- //#endregion
293
204
  }
294
- export {
295
- DateTime
296
- };
297
- //# sourceMappingURL=date-time.js.map
205
+ //# sourceMappingURL=date-time.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/types/date-time.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
1
+ {"version":3,"file":"date-time.js","sourceRoot":"","sources":["../../src/types/date-time.ts"],"names":[],"mappings":"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"}