@simplysm/core-common 13.0.0-beta.2 → 13.0.0-beta.20

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