@simplysm/core-common 13.0.0-beta.4 → 13.0.0-beta.41

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