@simplysm/core-common 13.0.99 → 14.0.1

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 (181) hide show
  1. package/dist/common.types.d.ts +14 -14
  2. package/dist/common.types.js +2 -1
  3. package/dist/common.types.js.map +1 -6
  4. package/dist/env.d.ts +5 -0
  5. package/dist/env.d.ts.map +1 -1
  6. package/dist/env.js +12 -8
  7. package/dist/env.js.map +1 -6
  8. package/dist/errors/argument-error.d.ts +10 -10
  9. package/dist/errors/argument-error.d.ts.map +1 -1
  10. package/dist/errors/argument-error.js +31 -14
  11. package/dist/errors/argument-error.js.map +1 -6
  12. package/dist/errors/not-implemented-error.d.ts +8 -8
  13. package/dist/errors/not-implemented-error.js +30 -12
  14. package/dist/errors/not-implemented-error.js.map +1 -6
  15. package/dist/errors/sd-error.d.ts +10 -10
  16. package/dist/errors/sd-error.d.ts.map +1 -1
  17. package/dist/errors/sd-error.js +45 -24
  18. package/dist/errors/sd-error.js.map +1 -6
  19. package/dist/errors/timeout-error.d.ts +10 -10
  20. package/dist/errors/timeout-error.js +34 -15
  21. package/dist/errors/timeout-error.js.map +1 -6
  22. package/dist/extensions/arr-ext.d.ts +2 -2
  23. package/dist/extensions/arr-ext.helpers.d.ts +10 -10
  24. package/dist/extensions/arr-ext.helpers.js +112 -89
  25. package/dist/extensions/arr-ext.helpers.js.map +1 -6
  26. package/dist/extensions/arr-ext.js +458 -422
  27. package/dist/extensions/arr-ext.js.map +1 -6
  28. package/dist/extensions/arr-ext.types.d.ts +57 -57
  29. package/dist/extensions/arr-ext.types.d.ts.map +1 -1
  30. package/dist/extensions/arr-ext.types.js +6 -1
  31. package/dist/extensions/arr-ext.types.js.map +1 -6
  32. package/dist/extensions/map-ext.d.ts +16 -16
  33. package/dist/extensions/map-ext.js +27 -22
  34. package/dist/extensions/map-ext.js.map +1 -6
  35. package/dist/extensions/set-ext.d.ts +11 -11
  36. package/dist/extensions/set-ext.js +32 -25
  37. package/dist/extensions/set-ext.js.map +1 -6
  38. package/dist/features/debounce-queue.d.ts +17 -17
  39. package/dist/features/debounce-queue.js +98 -70
  40. package/dist/features/debounce-queue.js.map +1 -6
  41. package/dist/features/event-emitter.d.ts +20 -20
  42. package/dist/features/event-emitter.js +101 -78
  43. package/dist/features/event-emitter.js.map +1 -6
  44. package/dist/features/serial-queue.d.ts +11 -11
  45. package/dist/features/serial-queue.js +78 -57
  46. package/dist/features/serial-queue.js.map +1 -6
  47. package/dist/globals.d.ts +4 -4
  48. package/dist/globals.js +9 -1
  49. package/dist/globals.js.map +1 -6
  50. package/dist/index.js +28 -27
  51. package/dist/index.js.map +1 -6
  52. package/dist/types/date-only.d.ts +64 -64
  53. package/dist/types/date-only.d.ts.map +1 -1
  54. package/dist/types/date-only.js +263 -252
  55. package/dist/types/date-only.js.map +1 -6
  56. package/dist/types/date-time.d.ts +36 -36
  57. package/dist/types/date-time.d.ts.map +1 -1
  58. package/dist/types/date-time.js +196 -288
  59. package/dist/types/date-time.js.map +1 -6
  60. package/dist/types/lazy-gc-map.d.ts +26 -26
  61. package/dist/types/lazy-gc-map.d.ts.map +1 -1
  62. package/dist/types/lazy-gc-map.js +202 -159
  63. package/dist/types/lazy-gc-map.js.map +1 -6
  64. package/dist/types/time.d.ts +23 -23
  65. package/dist/types/time.d.ts.map +1 -1
  66. package/dist/types/time.js +169 -158
  67. package/dist/types/time.js.map +1 -6
  68. package/dist/types/uuid.d.ts +11 -11
  69. package/dist/types/uuid.d.ts.map +1 -1
  70. package/dist/types/uuid.js +95 -70
  71. package/dist/types/uuid.js.map +1 -6
  72. package/dist/utils/bytes.d.ts +17 -17
  73. package/dist/utils/bytes.js +137 -81
  74. package/dist/utils/bytes.js.map +1 -6
  75. package/dist/utils/date-format.d.ts +40 -40
  76. package/dist/utils/date-format.js +187 -101
  77. package/dist/utils/date-format.js.map +1 -6
  78. package/dist/utils/error.d.ts +4 -4
  79. package/dist/utils/error.js +11 -6
  80. package/dist/utils/error.js.map +1 -6
  81. package/dist/utils/json.d.ts +19 -19
  82. package/dist/utils/json.js +187 -135
  83. package/dist/utils/json.js.map +1 -6
  84. package/dist/utils/num.d.ts +20 -20
  85. package/dist/utils/num.js +76 -34
  86. package/dist/utils/num.js.map +1 -6
  87. package/dist/utils/obj.d.ts +111 -111
  88. package/dist/utils/obj.d.ts.map +1 -1
  89. package/dist/utils/obj.js +706 -496
  90. package/dist/utils/obj.js.map +1 -6
  91. package/dist/utils/path.d.ts +10 -10
  92. package/dist/utils/path.js +35 -18
  93. package/dist/utils/path.js.map +1 -6
  94. package/dist/utils/primitive.d.ts +5 -5
  95. package/dist/utils/primitive.js +34 -14
  96. package/dist/utils/primitive.js.map +1 -6
  97. package/dist/utils/str.d.ts +38 -38
  98. package/dist/utils/str.js +217 -113
  99. package/dist/utils/str.js.map +1 -6
  100. package/dist/utils/template-strings.d.ts +26 -26
  101. package/dist/utils/template-strings.js +113 -40
  102. package/dist/utils/template-strings.js.map +1 -6
  103. package/dist/utils/transferable.d.ts +18 -18
  104. package/dist/utils/transferable.js +218 -151
  105. package/dist/utils/transferable.js.map +1 -6
  106. package/dist/utils/wait.d.ts +9 -9
  107. package/dist/utils/wait.js +30 -15
  108. package/dist/utils/wait.js.map +1 -6
  109. package/dist/utils/xml.d.ts +13 -13
  110. package/dist/utils/xml.js +84 -46
  111. package/dist/utils/xml.js.map +1 -6
  112. package/dist/utils/zip.d.ts +22 -22
  113. package/dist/utils/zip.js +172 -148
  114. package/dist/utils/zip.js.map +1 -6
  115. package/package.json +5 -7
  116. package/src/common.types.ts +14 -14
  117. package/src/env.ts +9 -1
  118. package/src/errors/argument-error.ts +15 -15
  119. package/src/errors/not-implemented-error.ts +9 -9
  120. package/src/errors/sd-error.ts +12 -12
  121. package/src/errors/timeout-error.ts +12 -12
  122. package/src/extensions/arr-ext.helpers.ts +16 -16
  123. package/src/extensions/arr-ext.ts +35 -35
  124. package/src/extensions/arr-ext.types.ts +57 -57
  125. package/src/extensions/map-ext.ts +16 -16
  126. package/src/extensions/set-ext.ts +11 -11
  127. package/src/features/debounce-queue.ts +23 -23
  128. package/src/features/event-emitter.ts +25 -25
  129. package/src/features/serial-queue.ts +13 -13
  130. package/src/globals.ts +4 -4
  131. package/src/index.ts +5 -5
  132. package/src/types/date-only.ts +84 -83
  133. package/src/types/date-time.ts +43 -42
  134. package/src/types/lazy-gc-map.ts +44 -44
  135. package/src/types/time.ts +29 -29
  136. package/src/types/uuid.ts +15 -15
  137. package/src/utils/bytes.ts +35 -35
  138. package/src/utils/date-format.ts +59 -59
  139. package/src/utils/error.ts +4 -4
  140. package/src/utils/json.ts +41 -41
  141. package/src/utils/num.ts +20 -20
  142. package/src/utils/obj.ts +138 -138
  143. package/src/utils/path.ts +10 -10
  144. package/src/utils/primitive.ts +6 -6
  145. package/src/utils/str.ts +48 -48
  146. package/src/utils/template-strings.ts +29 -29
  147. package/src/utils/transferable.ts +38 -38
  148. package/src/utils/wait.ts +10 -10
  149. package/src/utils/xml.ts +19 -19
  150. package/src/utils/zip.ts +25 -25
  151. package/README.md +0 -160
  152. package/docs/errors.md +0 -119
  153. package/docs/extensions.md +0 -387
  154. package/docs/features.md +0 -143
  155. package/docs/types.md +0 -287
  156. package/docs/utils.md +0 -757
  157. package/tests/errors/errors.spec.ts +0 -80
  158. package/tests/extensions/array-extension.spec.ts +0 -654
  159. package/tests/extensions/map-extension.spec.ts +0 -117
  160. package/tests/extensions/set-extension.spec.ts +0 -67
  161. package/tests/types/date-only.spec.ts +0 -533
  162. package/tests/types/date-time.spec.ts +0 -246
  163. package/tests/types/lazy-gc-map.spec.ts +0 -606
  164. package/tests/types/time.spec.ts +0 -428
  165. package/tests/types/uuid.spec.ts +0 -74
  166. package/tests/utils/bytes-utils.spec.ts +0 -197
  167. package/tests/utils/date-format.spec.ts +0 -350
  168. package/tests/utils/debounce-queue.spec.ts +0 -226
  169. package/tests/utils/json.spec.ts +0 -400
  170. package/tests/utils/number.spec.ts +0 -136
  171. package/tests/utils/object.spec.ts +0 -810
  172. package/tests/utils/path.spec.ts +0 -70
  173. package/tests/utils/primitive.spec.ts +0 -43
  174. package/tests/utils/sd-event-emitter.spec.ts +0 -189
  175. package/tests/utils/serial-queue.spec.ts +0 -305
  176. package/tests/utils/string.spec.ts +0 -265
  177. package/tests/utils/template-strings.spec.ts +0 -48
  178. package/tests/utils/transferable.spec.ts +0 -639
  179. package/tests/utils/wait.spec.ts +0 -123
  180. package/tests/utils/xml.spec.ts +0 -146
  181. package/tests/utils/zip.spec.ts +0 -221
@@ -1,103 +1,126 @@
1
+ /**
2
+ * Array 확장 헬퍼 함수
3
+ */
1
4
  import { DateTime } from "../types/date-time.js";
2
5
  import { DateOnly } from "../types/date-only.js";
3
6
  import { Time } from "../types/time.js";
4
7
  import { ArgumentError } from "../errors/argument-error.js";
5
8
  import { equal } from "../utils/obj.js";
6
- function toComparable(value) {
7
- if (value instanceof DateOnly || value instanceof DateTime || value instanceof Time) {
8
- return value.tick;
9
- }
10
- return value;
11
- }
12
- function compareForOrder(pp, pn, desc) {
13
- const cpp = toComparable(pp);
14
- const cpn = toComparable(pn);
15
- if (cpn === cpp) return 0;
16
- if (cpp == null) return desc ? 1 : -1;
17
- if (cpn == null) return desc ? -1 : 1;
18
- if (typeof cpn === "string" && typeof cpp === "string") {
19
- return desc ? cpn.localeCompare(cpp) : cpp.localeCompare(cpn);
20
- }
21
- if (typeof cpn === "number" && typeof cpp === "number") {
22
- if (desc) {
23
- return cpp > cpn ? -1 : cpp < cpn ? 1 : 0;
9
+ /**
10
+ * DateTime, DateOnly, Time을 비교 가능한 원시 값으로 변환
11
+ */
12
+ export function toComparable(value) {
13
+ if (value instanceof DateOnly || value instanceof DateTime || value instanceof Time) {
14
+ return value.tick;
24
15
  }
25
- return cpp < cpn ? -1 : cpp > cpn ? 1 : 0;
26
- }
27
- if (typeof cpn === "boolean" && typeof cpp === "boolean") {
28
- return cpn ? desc ? 1 : -1 : desc ? -1 : 1;
29
- }
30
- throw new ArgumentError("Cannot use orderBy with this type.", {
31
- type1: typeof cpp,
32
- type2: typeof cpn
33
- });
16
+ return value;
34
17
  }
35
- function getDistinctIndices(items, options) {
36
- const opts = typeof options === "boolean" ? { matchAddress: options } : options ?? {};
37
- const result = /* @__PURE__ */ new Set();
38
- if (opts.matchAddress === true) {
39
- const seen2 = /* @__PURE__ */ new Set();
40
- for (let i = 0; i < items.length; i++) {
41
- if (!seen2.has(items[i])) {
42
- seen2.add(items[i]);
43
- result.add(i);
44
- }
18
+ /**
19
+ * 정렬용 비교 함수
20
+ *
21
+ * @param pp 비교 대상 1
22
+ * @param pn 비교 대상 2
23
+ * @param desc true: 내림차순, false: 오름차순
24
+ * @returns 음수: pp가 앞, 0: 같음, 양수: pn이 앞
25
+ * @note null/undefined 값은 오름차순에서 앞, 내림차순에서 뒤로 정렬됨
26
+ */
27
+ export function compareForOrder(pp, pn, desc) {
28
+ const cpp = toComparable(pp);
29
+ const cpn = toComparable(pn);
30
+ if (cpn === cpp)
31
+ return 0;
32
+ if (cpp == null)
33
+ return desc ? 1 : -1;
34
+ if (cpn == null)
35
+ return desc ? -1 : 1;
36
+ if (typeof cpn === "string" && typeof cpp === "string") {
37
+ return desc ? cpn.localeCompare(cpp) : cpp.localeCompare(cpn);
45
38
  }
46
- return result;
47
- }
48
- if (opts.keyFn) {
49
- const seen2 = /* @__PURE__ */ new Set();
50
- for (let i = 0; i < items.length; i++) {
51
- const key = opts.keyFn(items[i]);
52
- if (!seen2.has(key)) {
53
- seen2.add(key);
54
- result.add(i);
55
- }
39
+ if (typeof cpn === "number" && typeof cpp === "number") {
40
+ if (desc) {
41
+ return cpp > cpn ? -1 : cpp < cpn ? 1 : 0;
42
+ }
43
+ return cpp < cpn ? -1 : cpp > cpn ? 1 : 0;
56
44
  }
57
- return result;
58
- }
59
- const seen = /* @__PURE__ */ new Map();
60
- const seenRefs = /* @__PURE__ */ new Set();
61
- for (let i = 0; i < items.length; i++) {
62
- const item = items[i];
63
- if (item === null || typeof item !== "object") {
64
- const type = typeof item;
65
- if (type === "symbol" || type === "function") {
66
- const ref = item;
67
- if (!seenRefs.has(ref)) {
68
- seenRefs.add(ref);
69
- result.add(i);
45
+ if (typeof cpn === "boolean" && typeof cpp === "boolean") {
46
+ // true > false: 오름차순에서 true가 뒤, 내림차순에서 true가 앞
47
+ return cpn ? (desc ? 1 : -1) : desc ? -1 : 1;
48
+ }
49
+ throw new ArgumentError("이 타입으로는 orderBy를 사용할 없습니다.", {
50
+ type1: typeof cpp,
51
+ type2: typeof cpn,
52
+ });
53
+ }
54
+ /**
55
+ * 유지할 index의 Set을 반환 (즉, 각 고유 항목의 첫 번째 등장 위치).
56
+ * matchAddress, keyFn, 기본 타입 기반 등 모든 중복 제거 전략을 처리한다.
57
+ */
58
+ export function getDistinctIndices(items, options) {
59
+ const opts = typeof options === "boolean" ? { matchAddress: options } : (options ?? {});
60
+ const result = new Set();
61
+ // matchAddress: Set 기반 O(n)
62
+ if (opts.matchAddress === true) {
63
+ const seen = new Set();
64
+ for (let i = 0; i < items.length; i++) {
65
+ if (!seen.has(items[i])) {
66
+ seen.add(items[i]);
67
+ result.add(i);
68
+ }
70
69
  }
71
- continue;
72
- }
73
- let key = type + ":";
74
- if (Object.is(item, -0)) {
75
- key += "-0";
76
- } else {
77
- key += String(item);
78
- }
79
- if (!seen.has(key)) {
80
- seen.set(key, item);
81
- result.add(i);
82
- }
83
- continue;
70
+ return result;
84
71
  }
85
- let hasDuplicate = false;
86
- for (const keptIdx of result) {
87
- if (equal(items[keptIdx], item)) {
88
- hasDuplicate = true;
89
- break;
90
- }
72
+ // keyFn 제공됨: 커스텀 key 기반 O(n)
73
+ if (opts.keyFn) {
74
+ const seen = new Set();
75
+ for (let i = 0; i < items.length; i++) {
76
+ const key = opts.keyFn(items[i]);
77
+ if (!seen.has(key)) {
78
+ seen.add(key);
79
+ result.add(i);
80
+ }
81
+ }
82
+ return result;
91
83
  }
92
- if (!hasDuplicate) {
93
- result.add(i);
84
+ // 기본: 엣지 케이스를 포함한 타입 기반 처리
85
+ const seen = new Map();
86
+ const seenRefs = new Set();
87
+ for (let i = 0; i < items.length; i++) {
88
+ const item = items[i];
89
+ if (item === null || typeof item !== "object") {
90
+ const type = typeof item;
91
+ if (type === "symbol" || type === "function") {
92
+ const ref = item;
93
+ if (!seenRefs.has(ref)) {
94
+ seenRefs.add(ref);
95
+ result.add(i);
96
+ }
97
+ continue;
98
+ }
99
+ let key = type + ":";
100
+ if (Object.is(item, -0)) {
101
+ key += "-0";
102
+ }
103
+ else {
104
+ key += String(item);
105
+ }
106
+ if (!seen.has(key)) {
107
+ seen.set(key, item);
108
+ result.add(i);
109
+ }
110
+ continue;
111
+ }
112
+ // 객체: 깊은 비교 (O(n²) — 이미 유지된 항목에서 중복이 없을 때만 추가)
113
+ let hasDuplicate = false;
114
+ for (const keptIdx of result) {
115
+ if (equal(items[keptIdx], item)) {
116
+ hasDuplicate = true;
117
+ break;
118
+ }
119
+ }
120
+ if (!hasDuplicate) {
121
+ result.add(i);
122
+ }
94
123
  }
95
- }
96
- return result;
124
+ return result;
97
125
  }
98
- export {
99
- compareForOrder,
100
- getDistinctIndices,
101
- toComparable
102
- };
103
- //# sourceMappingURL=arr-ext.helpers.js.map
126
+ //# sourceMappingURL=arr-ext.helpers.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/extensions/arr-ext.helpers.ts"],
4
- "mappings": "AAIA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAC9B,SAAS,aAAa;AAMf,SAAS,aAAa,OAA8D;AACzF,MAAI,iBAAiB,YAAY,iBAAiB,YAAY,iBAAiB,MAAM;AACnF,WAAO,MAAM;AAAA,EACf;AACA,SAAO;AACT;AAWO,SAAS,gBAAgB,IAAoB,IAAoB,MAAuB;AAC7F,QAAM,MAAM,aAAa,EAAE;AAC3B,QAAM,MAAM,aAAa,EAAE;AAE3B,MAAI,QAAQ,IAAK,QAAO;AACxB,MAAI,OAAO,KAAM,QAAO,OAAO,IAAI;AACnC,MAAI,OAAO,KAAM,QAAO,OAAO,KAAK;AAEpC,MAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AACtD,WAAO,OAAO,IAAI,cAAc,GAAG,IAAI,IAAI,cAAc,GAAG;AAAA,EAC9D;AACA,MAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AACtD,QAAI,MAAM;AACR,aAAO,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI;AAAA,IAC1C;AACA,WAAO,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI;AAAA,EAC1C;AACA,MAAI,OAAO,QAAQ,aAAa,OAAO,QAAQ,WAAW;AAExD,WAAO,MAAO,OAAO,IAAI,KAAM,OAAO,KAAK;AAAA,EAC7C;AAEA,QAAM,IAAI,cAAc,sCAAsC;AAAA,IAC5D,OAAO,OAAO;AAAA,IACd,OAAO,OAAO;AAAA,EAChB,CAAC;AACH;AAMO,SAAS,mBACd,OACA,SACa;AACb,QAAM,OAAO,OAAO,YAAY,YAAY,EAAE,cAAc,QAAQ,IAAK,WAAW,CAAC;AACrF,QAAM,SAAS,oBAAI,IAAY;AAG/B,MAAI,KAAK,iBAAiB,MAAM;AAC9B,UAAMA,QAAO,oBAAI,IAAW;AAC5B,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAI,CAACA,MAAK,IAAI,MAAM,CAAC,CAAC,GAAG;AACvB,QAAAA,MAAK,IAAI,MAAM,CAAC,CAAC;AACjB,eAAO,IAAI,CAAC;AAAA,MACd;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAGA,MAAI,KAAK,OAAO;AACd,UAAMA,QAAO,oBAAI,IAAqB;AACtC,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,MAAM,KAAK,MAAM,MAAM,CAAC,CAAC;AAC/B,UAAI,CAACA,MAAK,IAAI,GAAG,GAAG;AAClB,QAAAA,MAAK,IAAI,GAAG;AACZ,eAAO,IAAI,CAAC;AAAA,MACd;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAGA,QAAM,OAAO,oBAAI,IAAmB;AACpC,QAAM,WAAW,oBAAI,IAAgD;AAErE,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,OAAO,MAAM,CAAC;AAEpB,QAAI,SAAS,QAAQ,OAAO,SAAS,UAAU;AAC7C,YAAM,OAAO,OAAO;AAEpB,UAAI,SAAS,YAAY,SAAS,YAAY;AAC5C,cAAM,MAAM;AACZ,YAAI,CAAC,SAAS,IAAI,GAAG,GAAG;AACtB,mBAAS,IAAI,GAAG;AAChB,iBAAO,IAAI,CAAC;AAAA,QACd;AACA;AAAA,MACF;AAEA,UAAI,MAAM,OAAO;AACjB,UAAI,OAAO,GAAG,MAAM,EAAE,GAAG;AACvB,eAAO;AAAA,MACT,OAAO;AACL,eAAO,OAAO,IAAI;AAAA,MACpB;AAEA,UAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAClB,aAAK,IAAI,KAAK,IAAI;AAClB,eAAO,IAAI,CAAC;AAAA,MACd;AACA;AAAA,IACF;AAGA,QAAI,eAAe;AACnB,eAAW,WAAW,QAAQ;AAC5B,UAAI,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;AAC/B,uBAAe;AACf;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,cAAc;AACjB,aAAO,IAAI,CAAC;AAAA,IACd;AAAA,EACF;AAEA,SAAO;AACT;",
5
- "names": ["seen"]
6
- }
1
+ {"version":3,"file":"arr-ext.helpers.js","sourceRoot":"","sources":["../../src/extensions/arr-ext.helpers.ts"],"names":[],"mappings":"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"}