@simplysm/core-common 13.0.0-beta.3 → 13.0.0-beta.30

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