@simplysm/core-common 13.0.100 → 14.0.4

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 (184) hide show
  1. package/README.md +86 -92
  2. package/dist/common.types.d.ts +14 -14
  3. package/dist/common.types.js +2 -1
  4. package/dist/common.types.js.map +1 -6
  5. package/dist/env.d.ts +8 -1
  6. package/dist/env.d.ts.map +1 -1
  7. package/dist/env.js +13 -9
  8. package/dist/env.js.map +1 -6
  9. package/dist/errors/argument-error.d.ts +10 -10
  10. package/dist/errors/argument-error.d.ts.map +1 -1
  11. package/dist/errors/argument-error.js +31 -14
  12. package/dist/errors/argument-error.js.map +1 -6
  13. package/dist/errors/not-implemented-error.d.ts +8 -8
  14. package/dist/errors/not-implemented-error.js +30 -12
  15. package/dist/errors/not-implemented-error.js.map +1 -6
  16. package/dist/errors/sd-error.d.ts +10 -10
  17. package/dist/errors/sd-error.d.ts.map +1 -1
  18. package/dist/errors/sd-error.js +45 -24
  19. package/dist/errors/sd-error.js.map +1 -6
  20. package/dist/errors/timeout-error.d.ts +10 -10
  21. package/dist/errors/timeout-error.js +34 -15
  22. package/dist/errors/timeout-error.js.map +1 -6
  23. package/dist/extensions/arr-ext.d.ts +2 -2
  24. package/dist/extensions/arr-ext.helpers.d.ts +10 -10
  25. package/dist/extensions/arr-ext.helpers.js +112 -89
  26. package/dist/extensions/arr-ext.helpers.js.map +1 -6
  27. package/dist/extensions/arr-ext.js +458 -422
  28. package/dist/extensions/arr-ext.js.map +1 -6
  29. package/dist/extensions/arr-ext.types.d.ts +57 -57
  30. package/dist/extensions/arr-ext.types.d.ts.map +1 -1
  31. package/dist/extensions/arr-ext.types.js +6 -1
  32. package/dist/extensions/arr-ext.types.js.map +1 -6
  33. package/dist/extensions/map-ext.d.ts +16 -16
  34. package/dist/extensions/map-ext.js +27 -22
  35. package/dist/extensions/map-ext.js.map +1 -6
  36. package/dist/extensions/set-ext.d.ts +11 -11
  37. package/dist/extensions/set-ext.js +32 -25
  38. package/dist/extensions/set-ext.js.map +1 -6
  39. package/dist/features/debounce-queue.d.ts +17 -17
  40. package/dist/features/debounce-queue.js +98 -70
  41. package/dist/features/debounce-queue.js.map +1 -6
  42. package/dist/features/event-emitter.d.ts +20 -20
  43. package/dist/features/event-emitter.js +101 -78
  44. package/dist/features/event-emitter.js.map +1 -6
  45. package/dist/features/serial-queue.d.ts +11 -11
  46. package/dist/features/serial-queue.js +78 -57
  47. package/dist/features/serial-queue.js.map +1 -6
  48. package/dist/globals.d.ts +4 -4
  49. package/dist/globals.js +9 -1
  50. package/dist/globals.js.map +1 -6
  51. package/dist/index.js +28 -27
  52. package/dist/index.js.map +1 -6
  53. package/dist/types/date-only.d.ts +64 -64
  54. package/dist/types/date-only.d.ts.map +1 -1
  55. package/dist/types/date-only.js +263 -252
  56. package/dist/types/date-only.js.map +1 -6
  57. package/dist/types/date-time.d.ts +36 -36
  58. package/dist/types/date-time.d.ts.map +1 -1
  59. package/dist/types/date-time.js +196 -288
  60. package/dist/types/date-time.js.map +1 -6
  61. package/dist/types/lazy-gc-map.d.ts +26 -26
  62. package/dist/types/lazy-gc-map.d.ts.map +1 -1
  63. package/dist/types/lazy-gc-map.js +202 -159
  64. package/dist/types/lazy-gc-map.js.map +1 -6
  65. package/dist/types/time.d.ts +23 -23
  66. package/dist/types/time.d.ts.map +1 -1
  67. package/dist/types/time.js +169 -158
  68. package/dist/types/time.js.map +1 -6
  69. package/dist/types/uuid.d.ts +11 -11
  70. package/dist/types/uuid.d.ts.map +1 -1
  71. package/dist/types/uuid.js +95 -70
  72. package/dist/types/uuid.js.map +1 -6
  73. package/dist/utils/bytes.d.ts +17 -17
  74. package/dist/utils/bytes.js +137 -81
  75. package/dist/utils/bytes.js.map +1 -6
  76. package/dist/utils/date-format.d.ts +40 -40
  77. package/dist/utils/date-format.js +187 -101
  78. package/dist/utils/date-format.js.map +1 -6
  79. package/dist/utils/error.d.ts +4 -4
  80. package/dist/utils/error.js +11 -6
  81. package/dist/utils/error.js.map +1 -6
  82. package/dist/utils/json.d.ts +19 -19
  83. package/dist/utils/json.js +187 -135
  84. package/dist/utils/json.js.map +1 -6
  85. package/dist/utils/num.d.ts +20 -20
  86. package/dist/utils/num.js +76 -34
  87. package/dist/utils/num.js.map +1 -6
  88. package/dist/utils/obj.d.ts +111 -111
  89. package/dist/utils/obj.d.ts.map +1 -1
  90. package/dist/utils/obj.js +706 -496
  91. package/dist/utils/obj.js.map +1 -6
  92. package/dist/utils/path.d.ts +10 -10
  93. package/dist/utils/path.js +35 -18
  94. package/dist/utils/path.js.map +1 -6
  95. package/dist/utils/primitive.d.ts +5 -5
  96. package/dist/utils/primitive.js +34 -14
  97. package/dist/utils/primitive.js.map +1 -6
  98. package/dist/utils/str.d.ts +38 -38
  99. package/dist/utils/str.js +217 -113
  100. package/dist/utils/str.js.map +1 -6
  101. package/dist/utils/template-strings.d.ts +26 -26
  102. package/dist/utils/template-strings.js +113 -40
  103. package/dist/utils/template-strings.js.map +1 -6
  104. package/dist/utils/transferable.d.ts +18 -18
  105. package/dist/utils/transferable.js +218 -151
  106. package/dist/utils/transferable.js.map +1 -6
  107. package/dist/utils/wait.d.ts +9 -9
  108. package/dist/utils/wait.js +30 -15
  109. package/dist/utils/wait.js.map +1 -6
  110. package/dist/utils/xml.d.ts +13 -13
  111. package/dist/utils/xml.js +84 -46
  112. package/dist/utils/xml.js.map +1 -6
  113. package/dist/utils/zip.d.ts +22 -22
  114. package/dist/utils/zip.js +172 -148
  115. package/dist/utils/zip.js.map +1 -6
  116. package/docs/array-extensions.md +430 -0
  117. package/docs/env.md +52 -0
  118. package/docs/errors.md +41 -56
  119. package/docs/features.md +82 -97
  120. package/docs/type-utilities.md +91 -0
  121. package/docs/types.md +221 -201
  122. package/docs/utils.md +319 -435
  123. package/package.json +7 -5
  124. package/src/common.types.ts +14 -14
  125. package/src/env.ts +12 -3
  126. package/src/errors/argument-error.ts +15 -15
  127. package/src/errors/not-implemented-error.ts +9 -9
  128. package/src/errors/sd-error.ts +12 -12
  129. package/src/errors/timeout-error.ts +12 -12
  130. package/src/extensions/arr-ext.helpers.ts +16 -16
  131. package/src/extensions/arr-ext.ts +35 -35
  132. package/src/extensions/arr-ext.types.ts +57 -57
  133. package/src/extensions/map-ext.ts +16 -16
  134. package/src/extensions/set-ext.ts +11 -11
  135. package/src/features/debounce-queue.ts +23 -23
  136. package/src/features/event-emitter.ts +25 -25
  137. package/src/features/serial-queue.ts +13 -13
  138. package/src/globals.ts +4 -4
  139. package/src/index.ts +5 -5
  140. package/src/types/date-only.ts +84 -83
  141. package/src/types/date-time.ts +43 -42
  142. package/src/types/lazy-gc-map.ts +44 -44
  143. package/src/types/time.ts +29 -29
  144. package/src/types/uuid.ts +15 -15
  145. package/src/utils/bytes.ts +35 -35
  146. package/src/utils/date-format.ts +59 -59
  147. package/src/utils/error.ts +4 -4
  148. package/src/utils/json.ts +41 -41
  149. package/src/utils/num.ts +20 -20
  150. package/src/utils/obj.ts +138 -138
  151. package/src/utils/path.ts +10 -10
  152. package/src/utils/primitive.ts +6 -6
  153. package/src/utils/str.ts +48 -48
  154. package/src/utils/template-strings.ts +29 -29
  155. package/src/utils/transferable.ts +38 -38
  156. package/src/utils/wait.ts +10 -10
  157. package/src/utils/xml.ts +19 -19
  158. package/src/utils/zip.ts +25 -25
  159. package/docs/extensions.md +0 -387
  160. package/tests/errors/errors.spec.ts +0 -80
  161. package/tests/extensions/array-extension.spec.ts +0 -654
  162. package/tests/extensions/map-extension.spec.ts +0 -117
  163. package/tests/extensions/set-extension.spec.ts +0 -67
  164. package/tests/types/date-only.spec.ts +0 -533
  165. package/tests/types/date-time.spec.ts +0 -246
  166. package/tests/types/lazy-gc-map.spec.ts +0 -606
  167. package/tests/types/time.spec.ts +0 -428
  168. package/tests/types/uuid.spec.ts +0 -74
  169. package/tests/utils/bytes-utils.spec.ts +0 -197
  170. package/tests/utils/date-format.spec.ts +0 -350
  171. package/tests/utils/debounce-queue.spec.ts +0 -226
  172. package/tests/utils/json.spec.ts +0 -400
  173. package/tests/utils/number.spec.ts +0 -136
  174. package/tests/utils/object.spec.ts +0 -810
  175. package/tests/utils/path.spec.ts +0 -70
  176. package/tests/utils/primitive.spec.ts +0 -43
  177. package/tests/utils/sd-event-emitter.spec.ts +0 -189
  178. package/tests/utils/serial-queue.spec.ts +0 -305
  179. package/tests/utils/string.spec.ts +0 -265
  180. package/tests/utils/template-strings.spec.ts +0 -48
  181. package/tests/utils/transferable.spec.ts +0 -639
  182. package/tests/utils/wait.spec.ts +0 -123
  183. package/tests/utils/xml.spec.ts +0 -146
  184. package/tests/utils/zip.spec.ts +0 -221
@@ -1,101 +1,101 @@
1
1
  /**
2
- * Deep clone
3
- * - Supports circular references
4
- * - Supports copying custom types (DateTime, DateOnly, Time, Uuid, Uint8Array)
2
+ * 깊은 복사
3
+ * - 순환 참조 지원
4
+ * - 커스텀 타입 복사 지원 (DateTime, DateOnly, Time, Uuid, Uint8Array)
5
5
  *
6
- * @note Functions and Symbols are not cloned and references are maintained
7
- * @note WeakMap and WeakSet are not supported (copied as generic objects, resulting in empty objects)
8
- * @note Prototype chain is maintained (using Object.setPrototypeOf)
9
- * @note Getters/setters are evaluated as current values and copied (accessor properties themselves are not copied)
6
+ * @note 함수와 Symbol은 복사되지 않고 참조가 유지됨
7
+ * @note WeakMap WeakSet 지원되지 않음 (일반 객체로 복사되어 객체가 )
8
+ * @note 프로토타입 체인이 유지됨 (Object.setPrototypeOf 사용)
9
+ * @note Getter/setter는 현재 값으로 평가되어 복사됨 (접근자 속성 자체는 복사되지 않음)
10
10
  */
11
11
  export declare function clone<TObj>(source: TObj): TObj;
12
- /** equal options type */
12
+ /** equal 옵션 타입 */
13
13
  export interface EqualOptions {
14
- /** List of keys to compare. When specified, only those keys are compared (applies only to top level) */
14
+ /** 비교할 key 목록. 지정 해당 key만 비교 (최상위 레벨에만 적용) */
15
15
  topLevelIncludes?: string[];
16
- /** List of keys to exclude from comparison (applies only to top level) */
16
+ /** 비교에서 제외할 key 목록 (최상위 레벨에만 적용) */
17
17
  topLevelExcludes?: string[];
18
- /** Whether to ignore array order. O(n²) complexity when true */
18
+ /** array 순서를 무시할지 여부. true면 O(n²) 복잡도 */
19
19
  ignoreArrayIndex?: boolean;
20
- /** Whether to do shallow comparison. Only compare 1 level (reference comparison) when true */
20
+ /** 얕은 비교 여부. true면 1단계만 비교 (참조 비교) */
21
21
  shallow?: boolean;
22
22
  }
23
23
  /**
24
- * Deep equality comparison
24
+ * 깊은 동등성 비교
25
25
  *
26
- * @param source Comparison target 1
27
- * @param target Comparison target 2
28
- * @param options Comparison options
29
- * @param options.topLevelIncludes List of keys to compare. When specified, only those keys are compared (applies only to top level)
30
- * @example `{ topLevelIncludes: ["id", "name"] }` - Compare only id and name keys
31
- * @param options.topLevelExcludes List of keys to exclude from comparison (applies only to top level)
32
- * @example `{ topLevelExcludes: ["updatedAt"] }` - Compare excluding updatedAt key
33
- * @param options.ignoreArrayIndex Whether to ignore array order. O(n²) complexity when true
34
- * @param options.shallow Whether to do shallow comparison. Only compare 1 level (reference comparison) when true
26
+ * @param source 비교 대상 1
27
+ * @param target 비교 대상 2
28
+ * @param options 비교 옵션
29
+ * @param options.topLevelIncludes 비교할 key 목록. 지정 해당 key만 비교 (최상위 레벨에만 적용)
30
+ * @example `{ topLevelIncludes: ["id", "name"] }` - id name key만 비교
31
+ * @param options.topLevelExcludes 비교에서 제외할 key 목록 (최상위 레벨에만 적용)
32
+ * @example `{ topLevelExcludes: ["updatedAt"] }` - updatedAt key를 제외하고 비교
33
+ * @param options.ignoreArrayIndex array 순서를 무시할지 여부. true면 O(n²) 복잡도
34
+ * @param options.shallow 얕은 비교 여부. true면 1단계만 비교 (참조 비교)
35
35
  *
36
- * @note topLevelIncludes/topLevelExcludes options apply only to object property keys.
37
- * All keys in Map are always included in comparison.
38
- * @note Performance considerations:
39
- * - Basic array comparison: O(n) time complexity
40
- * - When using `ignoreArrayIndex: true`: O(n²) time complexity
41
- * (possible performance degradation on large arrays)
42
- * @note `ignoreArrayIndex: true` behavior characteristics:
43
- * - Ignore array order and check if elements are permutations of the same set
44
- * - Example: `[1,2,3]` and `[3,2,1]` → true, `[1,1,1]` and `[1,2,3]` → false
36
+ * @note topLevelIncludes/topLevelExcludes 옵션은 객체 속성 key에만 적용됨.
37
+ * Map 모든 key는 항상 비교에 포함됨.
38
+ * @note 성능 고려사항:
39
+ * - 기본 array 비교: O(n) 시간 복잡도
40
+ * - `ignoreArrayIndex: true` 사용 시: O(n²) 시간 복잡도
41
+ * (대형 array에서 성능 저하 가능)
42
+ * @note `ignoreArrayIndex: true` 동작 특성:
43
+ * - array 순서를 무시하고 요소가 같은 집합의 순열인지 확인
44
+ * - 예: `[1,2,3]`과 `[3,2,1]` → true, `[1,1,1]`과 `[1,2,3]` → false
45
45
  */
46
46
  export declare function equal(source: unknown, target: unknown, options?: EqualOptions): boolean;
47
- /** merge options type */
47
+ /** merge 옵션 타입 */
48
48
  export interface MergeOptions {
49
- /** Array processing method. "replace": replace with target (default), "concat": merge (deduplicate) */
49
+ /** Array 처리 방식. "replace": target으로 교체 (기본값), "concat": 병합 (중복 제거) */
50
50
  arrayProcess?: "replace" | "concat";
51
- /** Whether to delete the key when target is null */
51
+ /** target이 null일 해당 key 삭제할지 여부 */
52
52
  useDelTargetNull?: boolean;
53
53
  }
54
54
  /**
55
- * Deep merge (merge target into source as base)
55
+ * 깊은 병합 (source를 기반으로 target 병합)
56
56
  *
57
- * @param source Base object
58
- * @param target Object to merge
59
- * @param opt Merge options
60
- * @param opt.arrayProcess Array processing method
61
- * - `"replace"`: Replace with target array (default)
62
- * - `"concat"`: Merge source and target arrays (deduplicate with Set)
63
- * @param opt.useDelTargetNull Whether to delete the key when target value is null
64
- * - `true`: Delete the key from result if target is null
65
- * - `false` or not specified: Keep source value
57
+ * @param source 기본 객체
58
+ * @param target 병합할 객체
59
+ * @param opt 병합 옵션
60
+ * @param opt.arrayProcess Array 처리 방식
61
+ * - `"replace"`: target array 교체 (기본값)
62
+ * - `"concat"`: source target array를 병합 (Set으로 중복 제거)
63
+ * @param opt.useDelTargetNull target 값이 null일 해당 key 삭제할지 여부
64
+ * - `true`: target이 null이면 결과에서 해당 key 삭제
65
+ * - `false` 또는 미지정: source 유지
66
66
  *
67
- * @note Returns a new object without modifying original objects (guarantees immutability)
68
- * @note When using arrayProcess="concat", deduplication is done with Set,
69
- * and for object arrays, deduplication is determined by reference (address) comparison
70
- * @note If types are different, overwrite with target value
67
+ * @note 원본 객체를 수정하지 않고 객체를 반환 (불변성 보장)
68
+ * @note arrayProcess="concat" 사용 Set으로 중복 제거되며,
69
+ * 객체 array의 경우 참조(주소) 비교로 중복 여부 판단
70
+ * @note 타입이 다르면 target 값으로 덮어씀
71
71
  */
72
72
  export declare function merge<TSource, TMergeTarget>(source: TSource, target: TMergeTarget, opt?: MergeOptions): TSource & TMergeTarget;
73
- /** merge3 options type */
73
+ /** merge3 옵션 타입 */
74
74
  export interface Merge3KeyOptions {
75
- /** List of sub-keys to compare (same as equal's topLevelIncludes) */
75
+ /** 비교할 하위 key 목록 (equal topLevelIncludes와 동일) */
76
76
  keys?: string[];
77
- /** List of sub-keys to exclude from comparison */
77
+ /** 비교에서 제외할 하위 key 목록 */
78
78
  excludes?: string[];
79
- /** Whether to ignore array order */
79
+ /** array 순서를 무시할지 여부 */
80
80
  ignoreArrayIndex?: boolean;
81
81
  }
82
82
  /**
83
- * 3-way merge
83
+ * 3-way 병합
84
84
  *
85
- * Merge by comparing three objects: source, origin, and target.
86
- * - If source and origin are equal and target differsuse target value
87
- * - If target and origin are equal and source differsuse source value
88
- * - If source and target are equal use that value
89
- * - If all three values differ conflict occurs (maintain origin value)
85
+ * source, origin, target 세 객체를 비교하여 병합.
86
+ * - source origin 같고 target 다르면 → target 값 사용
87
+ * - target origin 같고 source 다르면 → source 값 사용
88
+ * - source target 같으면해당 사용
89
+ * - 값이 모두 다르면충돌 발생 (origin 값 유지)
90
90
  *
91
- * @param source Changed version 1
92
- * @param origin Base version (common ancestor)
93
- * @param target Changed version 2
94
- * @param optionsObj Comparison options per key. Specify equal() comparison options individually for each key
95
- * - `keys`: List of sub-keys to compare (same as equal's topLevelIncludes)
96
- * - `excludes`: List of sub-keys to exclude from comparison
97
- * - `ignoreArrayIndex`: Whether to ignore array order
98
- * @returns conflict: Whether conflict occurred, result: Merge result
91
+ * @param source 변경된 버전 1
92
+ * @param origin 기본 버전 (공통 조상)
93
+ * @param target 변경된 버전 2
94
+ * @param optionsObj key별 비교 옵션. key 대해 equal() 비교 옵션을 개별 지정
95
+ * - `keys`: 비교할 하위 key 목록 (equal topLevelIncludes와 동일)
96
+ * - `excludes`: 비교에서 제외할 하위 key 목록
97
+ * - `ignoreArrayIndex`: array 순서를 무시할지 여부
98
+ * @returns conflict: 충돌 발생 여부, result: 병합 결과
99
99
  *
100
100
  * @example
101
101
  * const { conflict, result } = merge3(
@@ -110,10 +110,10 @@ export declare function merge3<S extends Record<string, unknown>, O extends Reco
110
110
  result: O & S & T;
111
111
  };
112
112
  /**
113
- * Exclude specific keys from object
114
- * @param item Source object
115
- * @param omitKeys Array of keys to exclude
116
- * @returns New object with specified keys excluded
113
+ * 객체에서 특정 key 제외
114
+ * @param item 원본 객체
115
+ * @param omitKeys 제외할 key 배열
116
+ * @returns 지정된 key가 제외된 객체
117
117
  * @example
118
118
  * const user = { name: "Alice", age: 30, email: "alice@example.com" };
119
119
  * omit(user, ["email"]);
@@ -121,11 +121,11 @@ export declare function merge3<S extends Record<string, unknown>, O extends Reco
121
121
  */
122
122
  export declare function omit<T extends Record<string, unknown>, K extends keyof T>(item: T, omitKeys: K[]): Omit<T, K>;
123
123
  /**
124
- * Exclude keys matching condition
124
+ * 조건에 맞는 key 제외
125
125
  * @internal
126
- * @param item Source object
127
- * @param omitKeyFn Function that receives key and returns whether to exclude (true to exclude)
128
- * @returns New object with keys matching condition excluded
126
+ * @param item 원본 객체
127
+ * @param omitKeyFn key 받아 제외 여부를 반환하는 함수 (true 제외)
128
+ * @returns 조건에 맞는 key가 제외된 객체
129
129
  * @example
130
130
  * const data = { name: "Alice", _internal: "secret", age: 30 };
131
131
  * omitByFilter(data, (key) => key.startsWith("_"));
@@ -133,10 +133,10 @@ export declare function omit<T extends Record<string, unknown>, K extends keyof
133
133
  */
134
134
  export declare function omitByFilter<T extends Record<string, unknown>>(item: T, omitKeyFn: (key: keyof T) => boolean): T;
135
135
  /**
136
- * Select specific keys from object
137
- * @param item Source object
138
- * @param keys Array of keys to select
139
- * @returns New object containing only specified keys
136
+ * 객체에서 특정 key만 선택
137
+ * @param item 원본 객체
138
+ * @param keys 선택할 key 배열
139
+ * @returns 지정된 key만 포함된 객체
140
140
  * @example
141
141
  * const user = { name: "Alice", age: 30, email: "alice@example.com" };
142
142
  * pick(user, ["name", "age"]);
@@ -144,62 +144,62 @@ export declare function omitByFilter<T extends Record<string, unknown>>(item: T,
144
144
  */
145
145
  export declare function pick<T extends Record<string, unknown>, K extends keyof T>(item: T, pickKeys: K[]): Pick<T, K>;
146
146
  /**
147
- * Get value by chain path
147
+ * 체인 경로로 조회
148
148
  * @example getChainValue(obj, "a.b[0].c")
149
149
  */
150
150
  export declare function getChainValue(obj: unknown, chain: string, optional: true): unknown | undefined;
151
151
  export declare function getChainValue(obj: unknown, chain: string): unknown;
152
152
  /**
153
- * Descend by the same key for depth levels
153
+ * 같은 key 지정된 깊이만큼 하강
154
154
  * @internal
155
- * @param obj Target object
156
- * @param key Key to descend by
157
- * @param depth Depth to descend (1 or more)
158
- * @param optional If true, return undefined without error if null/undefined found in the middle
159
- * @throws ArgumentError If depth is less than 1
155
+ * @param obj 대상 객체
156
+ * @param key 하강에 사용할 key
157
+ * @param depth 하강 깊이 (1 이상)
158
+ * @param optional true이면 중간에 null/undefined 만나도 에러 없이 undefined 반환
159
+ * @throws ArgumentError depth 1 미만인 경우
160
160
  * @example getChainValueByDepth({ parent: { parent: { name: 'a' } } }, 'parent', 2) => { name: 'a' }
161
161
  */
162
162
  export declare function getChainValueByDepth<TObject, TKey extends keyof TObject>(obj: TObject, key: TKey, depth: number, optional: true): TObject[TKey] | undefined;
163
163
  export declare function getChainValueByDepth<TObject, TKey extends keyof TObject>(obj: TObject, key: TKey, depth: number): TObject[TKey];
164
164
  /**
165
- * Set value by chain path
165
+ * 체인 경로로 설정
166
166
  * @example setChainValue(obj, "a.b[0].c", value)
167
167
  */
168
168
  export declare function setChainValue(obj: unknown, chain: string, value: unknown): void;
169
169
  /**
170
- * Delete value by chain path
170
+ * 체인 경로로 삭제
171
171
  * @example deleteChainValue(obj, "a.b[0].c")
172
172
  */
173
173
  export declare function deleteChainValue(obj: unknown, chain: string): void;
174
174
  /**
175
- * Delete keys with undefined values from object
175
+ * 객체에서 undefined 값을 가진 key 삭제
176
176
  * @internal
177
177
  *
178
- * @mutates Modifies the original object directly
178
+ * @mutates 원본 객체를 직접 수정
179
179
  */
180
180
  export declare function clearUndefined<T extends object>(obj: T): T;
181
181
  /**
182
- * Delete all keys from object
182
+ * 객체의 모든 key 삭제
183
183
  * @internal
184
184
  *
185
- * @mutates Modifies the original object directly
185
+ * @mutates 원본 객체를 직접 수정
186
186
  */
187
187
  export declare function clear<T extends Record<string, unknown>>(obj: T): Record<string, never>;
188
188
  /**
189
- * Convert null to undefined (recursive)
189
+ * null undefined 변환 (재귀)
190
190
  * @internal
191
191
  *
192
- * @mutates Modifies the original array/object directly
192
+ * @mutates 원본 array/객체를 직접 수정
193
193
  */
194
194
  export declare function nullToUndefined<TObject>(obj: TObject): TObject | undefined;
195
195
  /**
196
- * Convert flattened object to nested object
196
+ * 평탄화된 객체를 중첩 객체로 변환
197
197
  * @internal
198
198
  * @example unflatten({ "a.b.c": 1 }) => { a: { b: { c: 1 } } }
199
199
  */
200
200
  export declare function unflatten(flatObj: Record<string, unknown>): Record<string, unknown>;
201
201
  /**
202
- * Convert properties with undefined to optional
202
+ * undefined를 가진 속성을 optional로 변환
203
203
  * @example { a: string; b: string | undefined } → { a: string; b?: string | undefined }
204
204
  */
205
205
  export type UndefToOptional<TObject> = {
@@ -208,28 +208,28 @@ export type UndefToOptional<TObject> = {
208
208
  [K in keyof TObject as undefined extends TObject[K] ? never : K]: TObject[K];
209
209
  };
210
210
  /**
211
- * Convert optional properties to required + undefined union
211
+ * optional 속성을 필수 + undefined 유니온으로 변환
212
212
  * @example { a: string; b?: string } → { a: string; b: string | undefined }
213
213
  */
214
214
  export type OptionalToUndef<TObject> = {
215
215
  [K in keyof TObject]-?: {} extends Pick<TObject, K> ? TObject[K] | undefined : TObject[K];
216
216
  };
217
217
  /**
218
- * Type-safe version of Object.keys
219
- * @param obj Object to extract keys from
220
- * @returns Array of object keys
218
+ * 타입 안전한 Object.keys
219
+ * @param obj key를 추출할 객체
220
+ * @returns 객체 key 배열
221
221
  */
222
222
  export declare function keys<T extends object>(obj: T): (keyof T)[];
223
223
  /**
224
- * Type-safe version of Object.entries
225
- * @param obj Object to extract entries from
226
- * @returns Array of [key, value] tuples
224
+ * 타입 안전한 Object.entries
225
+ * @param obj 엔트리를 추출할 객체
226
+ * @returns [key, value] 튜플 배열
227
227
  */
228
228
  export declare function entries<T extends object>(obj: T): Entries<T>;
229
229
  /**
230
- * Type-safe version of Object.fromEntries
231
- * @param entries Array of [key, value] tuples
232
- * @returns Created object
230
+ * 타입 안전한 Object.fromEntries
231
+ * @param entries [key, value] 튜플 배열
232
+ * @returns 생성된 객체
233
233
  */
234
234
  export declare function fromEntries<T extends [string, unknown]>(entryPairs: T[]): {
235
235
  [K in T[0]]: T[1];
@@ -238,18 +238,18 @@ type Entries<TObject> = {
238
238
  [K in keyof TObject]: [K, TObject[K]];
239
239
  }[keyof TObject][];
240
240
  /**
241
- * Transform each entry of object and return new object
242
- * @param obj Object to transform
243
- * @param fn Transform function (key, value) => [newKey, newValue]
244
- * @returns New object with transformed keys and values
241
+ * 객체의 엔트리를 변환하여 객체 반환
242
+ * @param obj 변환할 객체
243
+ * @param fn 변환 함수 (key, value) => [newKey, newValue]
244
+ * @returns key와 value가 변환된 객체
245
245
  * @example
246
246
  * const colors = { primary: "255, 0, 0", secondary: "0, 255, 0" };
247
247
  *
248
- * // Transform only values
248
+ * // 값만 변환
249
249
  * map(colors, (key, rgb) => [null, `rgb(${rgb})`]);
250
250
  * // { primary: "rgb(255, 0, 0)", secondary: "rgb(0, 255, 0)" }
251
251
  *
252
- * // Transform both keys and values
252
+ * // key와 모두 변환
253
253
  * map(colors, (key, rgb) => [`${key}Light`, `rgb(${rgb})`]);
254
254
  * // { primaryLight: "rgb(255, 0, 0)", secondaryLight: "rgb(0, 255, 0)" }
255
255
  */
@@ -1 +1 @@
1
- {"version":3,"file":"obj.d.ts","sourceRoot":"","sources":["../../src/utils/obj.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"obj.d.ts","sourceRoot":"","sources":["../../src/utils/obj.ts"],"names":[],"mappings":"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"}