@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.
Files changed (65) hide show
  1. package/package.json +6 -3
  2. package/.cache/typecheck-browser.tsbuildinfo +0 -1
  3. package/.cache/typecheck-node.tsbuildinfo +0 -1
  4. package/.cache/typecheck-tests-browser.tsbuildinfo +0 -1
  5. package/.cache/typecheck-tests-node.tsbuildinfo +0 -1
  6. package/src/common.types.ts +0 -91
  7. package/src/env.ts +0 -11
  8. package/src/errors/argument-error.ts +0 -40
  9. package/src/errors/not-implemented-error.ts +0 -32
  10. package/src/errors/sd-error.ts +0 -53
  11. package/src/errors/timeout-error.ts +0 -36
  12. package/src/extensions/arr-ext.helpers.ts +0 -53
  13. package/src/extensions/arr-ext.ts +0 -777
  14. package/src/extensions/arr-ext.types.ts +0 -258
  15. package/src/extensions/map-ext.ts +0 -86
  16. package/src/extensions/set-ext.ts +0 -68
  17. package/src/features/debounce-queue.ts +0 -116
  18. package/src/features/event-emitter.ts +0 -112
  19. package/src/features/serial-queue.ts +0 -94
  20. package/src/globals.ts +0 -12
  21. package/src/index.ts +0 -55
  22. package/src/types/date-only.ts +0 -329
  23. package/src/types/date-time.ts +0 -294
  24. package/src/types/lazy-gc-map.ts +0 -244
  25. package/src/types/time.ts +0 -210
  26. package/src/types/uuid.ts +0 -113
  27. package/src/utils/bytes.ts +0 -160
  28. package/src/utils/date-format.ts +0 -239
  29. package/src/utils/json.ts +0 -230
  30. package/src/utils/num.ts +0 -97
  31. package/src/utils/obj.ts +0 -956
  32. package/src/utils/path.ts +0 -40
  33. package/src/utils/primitive.ts +0 -33
  34. package/src/utils/str.ts +0 -252
  35. package/src/utils/template-strings.ts +0 -132
  36. package/src/utils/transferable.ts +0 -269
  37. package/src/utils/wait.ts +0 -40
  38. package/src/utils/xml.ts +0 -105
  39. package/src/zip/sd-zip.ts +0 -218
  40. package/tests/errors/errors.spec.ts +0 -196
  41. package/tests/extensions/array-extension.spec.ts +0 -790
  42. package/tests/extensions/map-extension.spec.ts +0 -147
  43. package/tests/extensions/set-extension.spec.ts +0 -74
  44. package/tests/types/date-only.spec.ts +0 -636
  45. package/tests/types/date-time.spec.ts +0 -391
  46. package/tests/types/lazy-gc-map.spec.ts +0 -692
  47. package/tests/types/time.spec.ts +0 -559
  48. package/tests/types/types.spec.ts +0 -55
  49. package/tests/types/uuid.spec.ts +0 -91
  50. package/tests/utils/bytes-utils.spec.ts +0 -230
  51. package/tests/utils/date-format.spec.ts +0 -371
  52. package/tests/utils/debounce-queue.spec.ts +0 -272
  53. package/tests/utils/json.spec.ts +0 -475
  54. package/tests/utils/number.spec.ts +0 -184
  55. package/tests/utils/object.spec.ts +0 -827
  56. package/tests/utils/path.spec.ts +0 -78
  57. package/tests/utils/primitive.spec.ts +0 -55
  58. package/tests/utils/sd-event-emitter.spec.ts +0 -216
  59. package/tests/utils/serial-queue.spec.ts +0 -365
  60. package/tests/utils/string.spec.ts +0 -294
  61. package/tests/utils/template-strings.spec.ts +0 -96
  62. package/tests/utils/transferable.spec.ts +0 -698
  63. package/tests/utils/wait.spec.ts +0 -145
  64. package/tests/utils/xml.spec.ts +0 -146
  65. 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
- });