@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.
- package/dist/common.types.d.ts +14 -14
- package/dist/common.types.js +2 -1
- package/dist/common.types.js.map +1 -6
- package/dist/env.d.ts +5 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +12 -8
- package/dist/env.js.map +1 -6
- package/dist/errors/argument-error.d.ts +10 -10
- package/dist/errors/argument-error.d.ts.map +1 -1
- package/dist/errors/argument-error.js +31 -14
- package/dist/errors/argument-error.js.map +1 -6
- package/dist/errors/not-implemented-error.d.ts +8 -8
- package/dist/errors/not-implemented-error.js +30 -12
- package/dist/errors/not-implemented-error.js.map +1 -6
- package/dist/errors/sd-error.d.ts +10 -10
- package/dist/errors/sd-error.d.ts.map +1 -1
- package/dist/errors/sd-error.js +45 -24
- package/dist/errors/sd-error.js.map +1 -6
- package/dist/errors/timeout-error.d.ts +10 -10
- package/dist/errors/timeout-error.js +34 -15
- package/dist/errors/timeout-error.js.map +1 -6
- package/dist/extensions/arr-ext.d.ts +2 -2
- package/dist/extensions/arr-ext.helpers.d.ts +10 -10
- package/dist/extensions/arr-ext.helpers.js +112 -89
- package/dist/extensions/arr-ext.helpers.js.map +1 -6
- package/dist/extensions/arr-ext.js +458 -422
- package/dist/extensions/arr-ext.js.map +1 -6
- package/dist/extensions/arr-ext.types.d.ts +57 -57
- package/dist/extensions/arr-ext.types.d.ts.map +1 -1
- package/dist/extensions/arr-ext.types.js +6 -1
- package/dist/extensions/arr-ext.types.js.map +1 -6
- package/dist/extensions/map-ext.d.ts +16 -16
- package/dist/extensions/map-ext.js +27 -22
- package/dist/extensions/map-ext.js.map +1 -6
- package/dist/extensions/set-ext.d.ts +11 -11
- package/dist/extensions/set-ext.js +32 -25
- package/dist/extensions/set-ext.js.map +1 -6
- package/dist/features/debounce-queue.d.ts +17 -17
- package/dist/features/debounce-queue.js +98 -70
- package/dist/features/debounce-queue.js.map +1 -6
- package/dist/features/event-emitter.d.ts +20 -20
- package/dist/features/event-emitter.js +101 -78
- package/dist/features/event-emitter.js.map +1 -6
- package/dist/features/serial-queue.d.ts +11 -11
- package/dist/features/serial-queue.js +78 -57
- package/dist/features/serial-queue.js.map +1 -6
- package/dist/globals.d.ts +4 -4
- package/dist/globals.js +9 -1
- package/dist/globals.js.map +1 -6
- package/dist/index.js +28 -27
- package/dist/index.js.map +1 -6
- package/dist/types/date-only.d.ts +64 -64
- package/dist/types/date-only.d.ts.map +1 -1
- package/dist/types/date-only.js +263 -252
- package/dist/types/date-only.js.map +1 -6
- package/dist/types/date-time.d.ts +36 -36
- package/dist/types/date-time.d.ts.map +1 -1
- package/dist/types/date-time.js +196 -288
- package/dist/types/date-time.js.map +1 -6
- package/dist/types/lazy-gc-map.d.ts +26 -26
- package/dist/types/lazy-gc-map.d.ts.map +1 -1
- package/dist/types/lazy-gc-map.js +202 -159
- package/dist/types/lazy-gc-map.js.map +1 -6
- package/dist/types/time.d.ts +23 -23
- package/dist/types/time.d.ts.map +1 -1
- package/dist/types/time.js +169 -158
- package/dist/types/time.js.map +1 -6
- package/dist/types/uuid.d.ts +11 -11
- package/dist/types/uuid.d.ts.map +1 -1
- package/dist/types/uuid.js +95 -70
- package/dist/types/uuid.js.map +1 -6
- package/dist/utils/bytes.d.ts +17 -17
- package/dist/utils/bytes.js +137 -81
- package/dist/utils/bytes.js.map +1 -6
- package/dist/utils/date-format.d.ts +40 -40
- package/dist/utils/date-format.js +187 -101
- package/dist/utils/date-format.js.map +1 -6
- package/dist/utils/error.d.ts +4 -4
- package/dist/utils/error.js +11 -6
- package/dist/utils/error.js.map +1 -6
- package/dist/utils/json.d.ts +19 -19
- package/dist/utils/json.js +187 -135
- package/dist/utils/json.js.map +1 -6
- package/dist/utils/num.d.ts +20 -20
- package/dist/utils/num.js +76 -34
- package/dist/utils/num.js.map +1 -6
- package/dist/utils/obj.d.ts +111 -111
- package/dist/utils/obj.d.ts.map +1 -1
- package/dist/utils/obj.js +706 -496
- package/dist/utils/obj.js.map +1 -6
- package/dist/utils/path.d.ts +10 -10
- package/dist/utils/path.js +35 -18
- package/dist/utils/path.js.map +1 -6
- package/dist/utils/primitive.d.ts +5 -5
- package/dist/utils/primitive.js +34 -14
- package/dist/utils/primitive.js.map +1 -6
- package/dist/utils/str.d.ts +38 -38
- package/dist/utils/str.js +217 -113
- package/dist/utils/str.js.map +1 -6
- package/dist/utils/template-strings.d.ts +26 -26
- package/dist/utils/template-strings.js +113 -40
- package/dist/utils/template-strings.js.map +1 -6
- package/dist/utils/transferable.d.ts +18 -18
- package/dist/utils/transferable.js +218 -151
- package/dist/utils/transferable.js.map +1 -6
- package/dist/utils/wait.d.ts +9 -9
- package/dist/utils/wait.js +30 -15
- package/dist/utils/wait.js.map +1 -6
- package/dist/utils/xml.d.ts +13 -13
- package/dist/utils/xml.js +84 -46
- package/dist/utils/xml.js.map +1 -6
- package/dist/utils/zip.d.ts +22 -22
- package/dist/utils/zip.js +172 -148
- package/dist/utils/zip.js.map +1 -6
- package/package.json +5 -7
- package/src/common.types.ts +14 -14
- package/src/env.ts +9 -1
- package/src/errors/argument-error.ts +15 -15
- package/src/errors/not-implemented-error.ts +9 -9
- package/src/errors/sd-error.ts +12 -12
- package/src/errors/timeout-error.ts +12 -12
- package/src/extensions/arr-ext.helpers.ts +16 -16
- package/src/extensions/arr-ext.ts +35 -35
- package/src/extensions/arr-ext.types.ts +57 -57
- package/src/extensions/map-ext.ts +16 -16
- package/src/extensions/set-ext.ts +11 -11
- package/src/features/debounce-queue.ts +23 -23
- package/src/features/event-emitter.ts +25 -25
- package/src/features/serial-queue.ts +13 -13
- package/src/globals.ts +4 -4
- package/src/index.ts +5 -5
- package/src/types/date-only.ts +84 -83
- package/src/types/date-time.ts +43 -42
- package/src/types/lazy-gc-map.ts +44 -44
- package/src/types/time.ts +29 -29
- package/src/types/uuid.ts +15 -15
- package/src/utils/bytes.ts +35 -35
- package/src/utils/date-format.ts +59 -59
- package/src/utils/error.ts +4 -4
- package/src/utils/json.ts +41 -41
- package/src/utils/num.ts +20 -20
- package/src/utils/obj.ts +138 -138
- package/src/utils/path.ts +10 -10
- package/src/utils/primitive.ts +6 -6
- package/src/utils/str.ts +48 -48
- package/src/utils/template-strings.ts +29 -29
- package/src/utils/transferable.ts +38 -38
- package/src/utils/wait.ts +10 -10
- package/src/utils/xml.ts +19 -19
- package/src/utils/zip.ts +25 -25
- package/README.md +0 -160
- package/docs/errors.md +0 -119
- package/docs/extensions.md +0 -387
- package/docs/features.md +0 -143
- package/docs/types.md +0 -287
- package/docs/utils.md +0 -757
- package/tests/errors/errors.spec.ts +0 -80
- package/tests/extensions/array-extension.spec.ts +0 -654
- package/tests/extensions/map-extension.spec.ts +0 -117
- package/tests/extensions/set-extension.spec.ts +0 -67
- package/tests/types/date-only.spec.ts +0 -533
- package/tests/types/date-time.spec.ts +0 -246
- package/tests/types/lazy-gc-map.spec.ts +0 -606
- package/tests/types/time.spec.ts +0 -428
- package/tests/types/uuid.spec.ts +0 -74
- package/tests/utils/bytes-utils.spec.ts +0 -197
- package/tests/utils/date-format.spec.ts +0 -350
- package/tests/utils/debounce-queue.spec.ts +0 -226
- package/tests/utils/json.spec.ts +0 -400
- package/tests/utils/number.spec.ts +0 -136
- package/tests/utils/object.spec.ts +0 -810
- package/tests/utils/path.spec.ts +0 -70
- package/tests/utils/primitive.spec.ts +0 -43
- package/tests/utils/sd-event-emitter.spec.ts +0 -189
- package/tests/utils/serial-queue.spec.ts +0 -305
- package/tests/utils/string.spec.ts +0 -265
- package/tests/utils/template-strings.spec.ts +0 -48
- package/tests/utils/transferable.spec.ts +0 -639
- package/tests/utils/wait.spec.ts +0 -123
- package/tests/utils/xml.spec.ts +0 -146
- package/tests/utils/zip.spec.ts +0 -221
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { DateTime } from "@simplysm/core-common";
|
|
3
|
-
|
|
4
|
-
describe("DateTime", () => {
|
|
5
|
-
describe("constructor", () => {
|
|
6
|
-
it("default constructor uses current time", () => {
|
|
7
|
-
const before = Date.now();
|
|
8
|
-
const dt = new DateTime();
|
|
9
|
-
const after = Date.now();
|
|
10
|
-
|
|
11
|
-
expect(dt.tick).toBeGreaterThanOrEqual(before);
|
|
12
|
-
expect(dt.tick).toBeLessThanOrEqual(after);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it("creates with year, month, day, hour, minute, second, millisecond", () => {
|
|
16
|
-
const dt = new DateTime(2024, 3, 15, 10, 30, 45, 123);
|
|
17
|
-
|
|
18
|
-
expect(dt.year).toBe(2024);
|
|
19
|
-
expect(dt.month).toBe(3);
|
|
20
|
-
expect(dt.day).toBe(15);
|
|
21
|
-
expect(dt.hour).toBe(10);
|
|
22
|
-
expect(dt.minute).toBe(30);
|
|
23
|
-
expect(dt.second).toBe(45);
|
|
24
|
-
expect(dt.millisecond).toBe(123);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it("creates with tick", () => {
|
|
28
|
-
const tick = 1710489045123;
|
|
29
|
-
const dt = new DateTime(tick);
|
|
30
|
-
|
|
31
|
-
expect(dt.tick).toBe(tick);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it("creates with Date object", () => {
|
|
35
|
-
const date = new Date(2024, 2, 15, 10, 30, 45, 123);
|
|
36
|
-
const dt = new DateTime(date);
|
|
37
|
-
|
|
38
|
-
expect(dt.year).toBe(2024);
|
|
39
|
-
expect(dt.month).toBe(3);
|
|
40
|
-
expect(dt.day).toBe(15);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("creates leap year February 29th", () => {
|
|
44
|
-
const dt = new DateTime(2024, 2, 29);
|
|
45
|
-
|
|
46
|
-
expect(dt.year).toBe(2024);
|
|
47
|
-
expect(dt.month).toBe(2);
|
|
48
|
-
expect(dt.day).toBe(29);
|
|
49
|
-
expect(dt.isValid).toBe(true);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
describe("parse()", () => {
|
|
54
|
-
it("parses ISO 8601 format", () => {
|
|
55
|
-
const dt = DateTime.parse("2024-03-15T10:30:45.123Z");
|
|
56
|
-
|
|
57
|
-
expect(dt.year).toBe(2024);
|
|
58
|
-
expect(dt.month).toBe(3);
|
|
59
|
-
expect(dt.day).toBe(15);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it("parses yyyy-MM-dd HH:mm:ss format", () => {
|
|
63
|
-
const dt = DateTime.parse("2024-03-15 10:30:45");
|
|
64
|
-
|
|
65
|
-
expect(dt.year).toBe(2024);
|
|
66
|
-
expect(dt.month).toBe(3);
|
|
67
|
-
expect(dt.day).toBe(15);
|
|
68
|
-
expect(dt.hour).toBe(10);
|
|
69
|
-
expect(dt.minute).toBe(30);
|
|
70
|
-
expect(dt.second).toBe(45);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it("parses format with milliseconds", () => {
|
|
74
|
-
const dt = DateTime.parse("2024-03-15 10:30:45.123");
|
|
75
|
-
|
|
76
|
-
expect(dt.millisecond).toBe(123);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it("pads 1-digit milliseconds to 100ms unit (ISO 8601)", () => {
|
|
80
|
-
const dt = DateTime.parse("2024-03-15 10:30:45.1");
|
|
81
|
-
|
|
82
|
-
expect(dt.millisecond).toBe(100);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it("pads 2-digit milliseconds to 10ms unit (ISO 8601)", () => {
|
|
86
|
-
const dt = DateTime.parse("2024-03-15 10:30:45.01");
|
|
87
|
-
|
|
88
|
-
expect(dt.millisecond).toBe(10);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it("parses 3-digit milliseconds as-is", () => {
|
|
92
|
-
const dt = DateTime.parse("2024-03-15 10:30:45.001");
|
|
93
|
-
|
|
94
|
-
expect(dt.millisecond).toBe(1);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it("parses yyyyMMddHHmmss format", () => {
|
|
98
|
-
const dt = DateTime.parse("20240315103045");
|
|
99
|
-
|
|
100
|
-
expect(dt.year).toBe(2024);
|
|
101
|
-
expect(dt.month).toBe(3);
|
|
102
|
-
expect(dt.day).toBe(15);
|
|
103
|
-
expect(dt.hour).toBe(10);
|
|
104
|
-
expect(dt.minute).toBe(30);
|
|
105
|
-
expect(dt.second).toBe(45);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it("parses Korean AM/PM format", () => {
|
|
109
|
-
const dtAm = DateTime.parse("2024-03-15 오전 10:30:45");
|
|
110
|
-
expect(dtAm.hour).toBe(10);
|
|
111
|
-
|
|
112
|
-
const dtPm = DateTime.parse("2024-03-15 오후 02:30:45");
|
|
113
|
-
expect(dtPm.hour).toBe(14);
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it("PM 12:00:00 is noon (12 o'clock)", () => {
|
|
117
|
-
const dt = DateTime.parse("2024-03-15 오후 12:00:00");
|
|
118
|
-
|
|
119
|
-
expect(dt.hour).toBe(12);
|
|
120
|
-
expect(dt.minute).toBe(0);
|
|
121
|
-
expect(dt.second).toBe(0);
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
it("AM 12:00:00 is midnight (0 o'clock)", () => {
|
|
125
|
-
const dt = DateTime.parse("2024-03-15 오전 12:00:00");
|
|
126
|
-
|
|
127
|
-
expect(dt.hour).toBe(0);
|
|
128
|
-
expect(dt.minute).toBe(0);
|
|
129
|
-
expect(dt.second).toBe(0);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it("PM 12:30:45 is after noon (12:30:45)", () => {
|
|
133
|
-
const dt = DateTime.parse("2024-03-15 오후 12:30:45");
|
|
134
|
-
|
|
135
|
-
expect(dt.hour).toBe(12);
|
|
136
|
-
expect(dt.minute).toBe(30);
|
|
137
|
-
expect(dt.second).toBe(45);
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
it("AM 12:30:45 is after midnight (0:30:45)", () => {
|
|
141
|
-
const dt = DateTime.parse("2024-03-15 오전 12:30:45");
|
|
142
|
-
|
|
143
|
-
expect(dt.hour).toBe(0);
|
|
144
|
-
expect(dt.minute).toBe(30);
|
|
145
|
-
expect(dt.second).toBe(45);
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
it("throws error for invalid format", () => {
|
|
149
|
-
expect(() => DateTime.parse("invalid")).toThrow();
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
describe("Immutability", () => {
|
|
154
|
-
it("setYear returns new instance", () => {
|
|
155
|
-
const dt1 = new DateTime(2024, 3, 15);
|
|
156
|
-
const dt2 = dt1.setYear(2025);
|
|
157
|
-
|
|
158
|
-
expect(dt1.year).toBe(2024);
|
|
159
|
-
expect(dt2.year).toBe(2025);
|
|
160
|
-
expect(dt1).not.toBe(dt2);
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
it("setMonth returns new instance", () => {
|
|
164
|
-
const dt1 = new DateTime(2024, 3, 15);
|
|
165
|
-
const dt2 = dt1.setMonth(6);
|
|
166
|
-
|
|
167
|
-
expect(dt1.month).toBe(3);
|
|
168
|
-
expect(dt2.month).toBe(6);
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
it("setMonth adjusts to last day of target month", () => {
|
|
172
|
-
// January 31st → February (adjusted to 28th or 29th)
|
|
173
|
-
const dt1 = new DateTime(2024, 1, 31);
|
|
174
|
-
const dt2 = dt1.setMonth(2);
|
|
175
|
-
|
|
176
|
-
expect(dt2.month).toBe(2);
|
|
177
|
-
expect(dt2.day).toBe(29); // 2024 is leap year
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
it("setMonth(13) returns next year January", () => {
|
|
181
|
-
const dt = new DateTime(2024, 6, 15);
|
|
182
|
-
const result = dt.setMonth(13);
|
|
183
|
-
|
|
184
|
-
expect(result.year).toBe(2025);
|
|
185
|
-
expect(result.month).toBe(1);
|
|
186
|
-
expect(result.day).toBe(15);
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
it("setMonth(0) returns previous year December", () => {
|
|
190
|
-
const dt = new DateTime(2024, 6, 15);
|
|
191
|
-
const result = dt.setMonth(0);
|
|
192
|
-
|
|
193
|
-
expect(result.year).toBe(2023);
|
|
194
|
-
expect(result.month).toBe(12);
|
|
195
|
-
expect(result.day).toBe(15);
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
it("setMonth(-1) returns previous year November", () => {
|
|
199
|
-
const dt = new DateTime(2024, 6, 15);
|
|
200
|
-
const result = dt.setMonth(-1);
|
|
201
|
-
|
|
202
|
-
expect(result.year).toBe(2023);
|
|
203
|
-
expect(result.month).toBe(11);
|
|
204
|
-
expect(result.day).toBe(15);
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
describe("Arithmetic Methods", () => {
|
|
209
|
-
it("addDays", () => {
|
|
210
|
-
const dt1 = new DateTime(2024, 3, 15);
|
|
211
|
-
const dt2 = dt1.addDays(20);
|
|
212
|
-
|
|
213
|
-
expect(dt2.month).toBe(4);
|
|
214
|
-
expect(dt2.day).toBe(4);
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
it("addMinutes", () => {
|
|
218
|
-
const dt1 = new DateTime(2024, 3, 15, 10, 30);
|
|
219
|
-
const dt2 = dt1.addMinutes(45);
|
|
220
|
-
|
|
221
|
-
expect(dt2.hour).toBe(11);
|
|
222
|
-
expect(dt2.minute).toBe(15);
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
describe("isValid", () => {
|
|
227
|
-
it("valid datetime returns true", () => {
|
|
228
|
-
const dt = new DateTime(2024, 3, 15, 10, 30, 45);
|
|
229
|
-
expect(dt.isValid).toBe(true);
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
it("invalid datetime returns false", () => {
|
|
233
|
-
const dt = new DateTime(NaN);
|
|
234
|
-
expect(dt.isValid).toBe(false);
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
describe("toString()", () => {
|
|
239
|
-
it("returns ISO 8601 format", () => {
|
|
240
|
-
const dt = new DateTime(2024, 3, 15, 10, 30, 45, 123);
|
|
241
|
-
const str = dt.toString();
|
|
242
|
-
|
|
243
|
-
expect(str).toMatch(/^2024-03-15T10:30:45\.123[+-]\d{2}:\d{2}$/);
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
});
|