@simplysm/core-common 13.0.0-beta.6 → 13.0.0-beta.7
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/package.json +6 -3
- package/.cache/typecheck-browser.tsbuildinfo +0 -1
- package/.cache/typecheck-node.tsbuildinfo +0 -1
- package/.cache/typecheck-tests-browser.tsbuildinfo +0 -1
- package/.cache/typecheck-tests-node.tsbuildinfo +0 -1
- package/src/common.types.ts +0 -91
- package/src/env.ts +0 -11
- package/src/errors/argument-error.ts +0 -40
- package/src/errors/not-implemented-error.ts +0 -32
- package/src/errors/sd-error.ts +0 -53
- package/src/errors/timeout-error.ts +0 -36
- package/src/extensions/arr-ext.helpers.ts +0 -53
- package/src/extensions/arr-ext.ts +0 -777
- package/src/extensions/arr-ext.types.ts +0 -258
- package/src/extensions/map-ext.ts +0 -86
- package/src/extensions/set-ext.ts +0 -68
- package/src/features/debounce-queue.ts +0 -116
- package/src/features/event-emitter.ts +0 -112
- package/src/features/serial-queue.ts +0 -94
- package/src/globals.ts +0 -12
- package/src/index.ts +0 -55
- package/src/types/date-only.ts +0 -329
- package/src/types/date-time.ts +0 -294
- package/src/types/lazy-gc-map.ts +0 -244
- package/src/types/time.ts +0 -210
- package/src/types/uuid.ts +0 -113
- package/src/utils/bytes.ts +0 -160
- package/src/utils/date-format.ts +0 -239
- package/src/utils/json.ts +0 -230
- package/src/utils/num.ts +0 -97
- package/src/utils/obj.ts +0 -956
- package/src/utils/path.ts +0 -40
- package/src/utils/primitive.ts +0 -33
- package/src/utils/str.ts +0 -252
- package/src/utils/template-strings.ts +0 -132
- package/src/utils/transferable.ts +0 -269
- package/src/utils/wait.ts +0 -40
- package/src/utils/xml.ts +0 -105
- package/src/zip/sd-zip.ts +0 -218
- package/tests/errors/errors.spec.ts +0 -196
- package/tests/extensions/array-extension.spec.ts +0 -790
- package/tests/extensions/map-extension.spec.ts +0 -147
- package/tests/extensions/set-extension.spec.ts +0 -74
- package/tests/types/date-only.spec.ts +0 -636
- package/tests/types/date-time.spec.ts +0 -391
- package/tests/types/lazy-gc-map.spec.ts +0 -692
- package/tests/types/time.spec.ts +0 -559
- package/tests/types/types.spec.ts +0 -55
- package/tests/types/uuid.spec.ts +0 -91
- package/tests/utils/bytes-utils.spec.ts +0 -230
- package/tests/utils/date-format.spec.ts +0 -371
- package/tests/utils/debounce-queue.spec.ts +0 -272
- package/tests/utils/json.spec.ts +0 -475
- package/tests/utils/number.spec.ts +0 -184
- package/tests/utils/object.spec.ts +0 -827
- package/tests/utils/path.spec.ts +0 -78
- package/tests/utils/primitive.spec.ts +0 -55
- package/tests/utils/sd-event-emitter.spec.ts +0 -216
- package/tests/utils/serial-queue.spec.ts +0 -365
- package/tests/utils/string.spec.ts +0 -294
- package/tests/utils/template-strings.spec.ts +0 -96
- package/tests/utils/transferable.spec.ts +0 -698
- package/tests/utils/wait.spec.ts +0 -145
- package/tests/utils/xml.spec.ts +0 -146
- package/tests/zip/sd-zip.spec.ts +0 -234
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import "../../src/extensions/map-ext";
|
|
3
|
-
|
|
4
|
-
describe("Map.prototype 확장", () => {
|
|
5
|
-
//#region getOrCreate
|
|
6
|
-
|
|
7
|
-
describe("getOrCreate()", () => {
|
|
8
|
-
it("키가 없으면 직접 값을 설정하고 반환한다", () => {
|
|
9
|
-
const map = new Map<string, number>();
|
|
10
|
-
|
|
11
|
-
const result = map.getOrCreate("key", 100);
|
|
12
|
-
|
|
13
|
-
expect(result).toBe(100);
|
|
14
|
-
expect(map.get("key")).toBe(100);
|
|
15
|
-
expect(map.size).toBe(1);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it("키가 없으면 팩토리 함수를 호출하여 설정하고 반환한다", () => {
|
|
19
|
-
const map = new Map<string, number[]>();
|
|
20
|
-
let factoryCalled = false;
|
|
21
|
-
|
|
22
|
-
const result = map.getOrCreate("key", () => {
|
|
23
|
-
factoryCalled = true;
|
|
24
|
-
return [1, 2, 3];
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
expect(factoryCalled).toBe(true);
|
|
28
|
-
expect(result).toEqual([1, 2, 3]);
|
|
29
|
-
expect(map.get("key")).toEqual([1, 2, 3]);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it("키가 있으면 기존 값을 반환하고 팩토리 함수를 호출하지 않는다", () => {
|
|
33
|
-
const map = new Map<string, number>();
|
|
34
|
-
map.set("key", 50);
|
|
35
|
-
let factoryCalled = false;
|
|
36
|
-
|
|
37
|
-
const result = map.getOrCreate("key", () => {
|
|
38
|
-
factoryCalled = true;
|
|
39
|
-
return 100;
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
expect(factoryCalled).toBe(false);
|
|
43
|
-
expect(result).toBe(50);
|
|
44
|
-
expect(map.get("key")).toBe(50);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it("키가 있으면 기존 값을 반환한다 (직접 값)", () => {
|
|
48
|
-
const map = new Map<string, number>();
|
|
49
|
-
map.set("key", 50);
|
|
50
|
-
|
|
51
|
-
const result = map.getOrCreate("key", 100);
|
|
52
|
-
|
|
53
|
-
expect(result).toBe(50);
|
|
54
|
-
expect(map.size).toBe(1);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it("빈 배열을 기본값으로 설정할 수 있다", () => {
|
|
58
|
-
const map = new Map<string, number[]>();
|
|
59
|
-
|
|
60
|
-
const arr = map.getOrCreate("key", []);
|
|
61
|
-
arr.push(1, 2, 3);
|
|
62
|
-
|
|
63
|
-
expect(map.get("key")).toEqual([1, 2, 3]);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("팩토리 함수로 복잡한 객체를 생성할 수 있다", () => {
|
|
67
|
-
const map = new Map<string, { count: number; items: string[] }>();
|
|
68
|
-
|
|
69
|
-
const obj = map.getOrCreate("key", () => ({ count: 0, items: [] }));
|
|
70
|
-
obj.count++;
|
|
71
|
-
obj.items.push("item1");
|
|
72
|
-
|
|
73
|
-
expect(map.get("key")).toEqual({ count: 1, items: ["item1"] });
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
it("V 타입이 함수인 경우 팩토리로 감싸서 저장한다", () => {
|
|
77
|
-
const map = new Map<string, () => number>();
|
|
78
|
-
const fn = () => 42;
|
|
79
|
-
|
|
80
|
-
// 함수를 값으로 저장하려면 팩토리로 감싸야 함
|
|
81
|
-
const result = map.getOrCreate("key", () => fn);
|
|
82
|
-
|
|
83
|
-
expect(result).toBe(fn);
|
|
84
|
-
expect(result()).toBe(42);
|
|
85
|
-
expect(map.get("key")).toBe(fn);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
//#endregion
|
|
90
|
-
|
|
91
|
-
//#region update
|
|
92
|
-
|
|
93
|
-
describe("update()", () => {
|
|
94
|
-
it("존재하는 키의 값을 업데이트한다", () => {
|
|
95
|
-
const map = new Map<string, number>();
|
|
96
|
-
map.set("key", 10);
|
|
97
|
-
|
|
98
|
-
map.update("key", (v) => (v ?? 0) + 5);
|
|
99
|
-
|
|
100
|
-
expect(map.get("key")).toBe(15);
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it("존재하지 않는 키에 대해 undefined를 전달한다", () => {
|
|
104
|
-
const map = new Map<string, number>();
|
|
105
|
-
let receivedValue: number | undefined;
|
|
106
|
-
|
|
107
|
-
map.update("key", (v) => {
|
|
108
|
-
receivedValue = v;
|
|
109
|
-
return 100;
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
expect(receivedValue).toBeUndefined();
|
|
113
|
-
expect(map.get("key")).toBe(100);
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it("콜백의 반환값으로 값을 교체한다", () => {
|
|
117
|
-
const map = new Map<string, string>();
|
|
118
|
-
map.set("key", "hello");
|
|
119
|
-
|
|
120
|
-
map.update("key", (v) => (v ?? "") + " world");
|
|
121
|
-
|
|
122
|
-
expect(map.get("key")).toBe("hello world");
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
it("객체 값을 업데이트할 수 있다", () => {
|
|
126
|
-
const map = new Map<string, { count: number }>();
|
|
127
|
-
map.set("key", { count: 5 });
|
|
128
|
-
|
|
129
|
-
map.update("key", (v) => ({ count: (v?.count ?? 0) + 1 }));
|
|
130
|
-
|
|
131
|
-
expect(map.get("key")).toEqual({ count: 6 });
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
it("여러 번 연속으로 업데이트할 수 있다", () => {
|
|
135
|
-
const map = new Map<string, number>();
|
|
136
|
-
map.set("counter", 0);
|
|
137
|
-
|
|
138
|
-
map.update("counter", (v) => (v ?? 0) + 1);
|
|
139
|
-
map.update("counter", (v) => (v ?? 0) + 1);
|
|
140
|
-
map.update("counter", (v) => (v ?? 0) + 1);
|
|
141
|
-
|
|
142
|
-
expect(map.get("counter")).toBe(3);
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
//#endregion
|
|
147
|
-
});
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import "../../src/extensions/set-ext";
|
|
3
|
-
|
|
4
|
-
describe("Set.prototype 확장", () => {
|
|
5
|
-
//#region adds
|
|
6
|
-
|
|
7
|
-
describe("adds()", () => {
|
|
8
|
-
it("여러 항목을 한 번에 추가한다", () => {
|
|
9
|
-
const set = new Set([1, 2, 3]);
|
|
10
|
-
const result = set.adds(4, 5, 6);
|
|
11
|
-
|
|
12
|
-
expect(result).toBe(set); // 원본 반환
|
|
13
|
-
expect(set.size).toBe(6);
|
|
14
|
-
expect(set.has(4)).toBe(true);
|
|
15
|
-
expect(set.has(5)).toBe(true);
|
|
16
|
-
expect(set.has(6)).toBe(true);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it("중복된 항목은 자동으로 제거된다", () => {
|
|
20
|
-
const set = new Set([1, 2, 3]);
|
|
21
|
-
set.adds(2, 3, 4);
|
|
22
|
-
|
|
23
|
-
expect(set.size).toBe(4); // 1, 2, 3, 4
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it("빈 Set에 여러 항목을 추가한다", () => {
|
|
27
|
-
const set = new Set<number>();
|
|
28
|
-
set.adds(1, 2, 3);
|
|
29
|
-
|
|
30
|
-
expect(set.size).toBe(3);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
//#endregion
|
|
35
|
-
|
|
36
|
-
//#region toggle
|
|
37
|
-
|
|
38
|
-
describe("toggle()", () => {
|
|
39
|
-
it("없는 항목을 추가한다", () => {
|
|
40
|
-
const set = new Set([1, 2, 3]);
|
|
41
|
-
const result = set.toggle(4);
|
|
42
|
-
|
|
43
|
-
expect(result).toBe(set); // 원본 반환
|
|
44
|
-
expect(set.has(4)).toBe(true);
|
|
45
|
-
expect(set.size).toBe(4);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it("있는 항목을 제거한다", () => {
|
|
49
|
-
const set = new Set([1, 2, 3]);
|
|
50
|
-
set.toggle(2);
|
|
51
|
-
|
|
52
|
-
expect(set.has(2)).toBe(false);
|
|
53
|
-
expect(set.size).toBe(2);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it("addOrDel='add'로 강제로 추가한다", () => {
|
|
57
|
-
const set = new Set([1, 2, 3]);
|
|
58
|
-
set.toggle(2, "add"); // 이미 있지만 add 옵션
|
|
59
|
-
|
|
60
|
-
expect(set.has(2)).toBe(true);
|
|
61
|
-
expect(set.size).toBe(3); // 변화 없음
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it("addOrDel='del'로 강제로 제거한다", () => {
|
|
65
|
-
const set = new Set([1, 2, 3]);
|
|
66
|
-
set.toggle(4, "del"); // 없지만 del 옵션
|
|
67
|
-
|
|
68
|
-
expect(set.has(4)).toBe(false);
|
|
69
|
-
expect(set.size).toBe(3); // 변화 없음
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
//#endregion
|
|
74
|
-
});
|