@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.
- package/README.md +86 -92
- package/dist/common.types.d.ts +14 -14
- package/dist/common.types.js +2 -1
- package/dist/common.types.js.map +1 -6
- package/dist/env.d.ts +8 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +13 -9
- package/dist/env.js.map +1 -6
- package/dist/errors/argument-error.d.ts +10 -10
- package/dist/errors/argument-error.d.ts.map +1 -1
- package/dist/errors/argument-error.js +31 -14
- package/dist/errors/argument-error.js.map +1 -6
- package/dist/errors/not-implemented-error.d.ts +8 -8
- package/dist/errors/not-implemented-error.js +30 -12
- package/dist/errors/not-implemented-error.js.map +1 -6
- package/dist/errors/sd-error.d.ts +10 -10
- package/dist/errors/sd-error.d.ts.map +1 -1
- package/dist/errors/sd-error.js +45 -24
- package/dist/errors/sd-error.js.map +1 -6
- package/dist/errors/timeout-error.d.ts +10 -10
- package/dist/errors/timeout-error.js +34 -15
- package/dist/errors/timeout-error.js.map +1 -6
- package/dist/extensions/arr-ext.d.ts +2 -2
- package/dist/extensions/arr-ext.helpers.d.ts +10 -10
- package/dist/extensions/arr-ext.helpers.js +112 -89
- package/dist/extensions/arr-ext.helpers.js.map +1 -6
- package/dist/extensions/arr-ext.js +458 -422
- package/dist/extensions/arr-ext.js.map +1 -6
- package/dist/extensions/arr-ext.types.d.ts +57 -57
- package/dist/extensions/arr-ext.types.d.ts.map +1 -1
- package/dist/extensions/arr-ext.types.js +6 -1
- package/dist/extensions/arr-ext.types.js.map +1 -6
- package/dist/extensions/map-ext.d.ts +16 -16
- package/dist/extensions/map-ext.js +27 -22
- package/dist/extensions/map-ext.js.map +1 -6
- package/dist/extensions/set-ext.d.ts +11 -11
- package/dist/extensions/set-ext.js +32 -25
- package/dist/extensions/set-ext.js.map +1 -6
- package/dist/features/debounce-queue.d.ts +17 -17
- package/dist/features/debounce-queue.js +98 -70
- package/dist/features/debounce-queue.js.map +1 -6
- package/dist/features/event-emitter.d.ts +20 -20
- package/dist/features/event-emitter.js +101 -78
- package/dist/features/event-emitter.js.map +1 -6
- package/dist/features/serial-queue.d.ts +11 -11
- package/dist/features/serial-queue.js +78 -57
- package/dist/features/serial-queue.js.map +1 -6
- package/dist/globals.d.ts +4 -4
- package/dist/globals.js +9 -1
- package/dist/globals.js.map +1 -6
- package/dist/index.js +28 -27
- package/dist/index.js.map +1 -6
- package/dist/types/date-only.d.ts +64 -64
- package/dist/types/date-only.d.ts.map +1 -1
- package/dist/types/date-only.js +263 -252
- package/dist/types/date-only.js.map +1 -6
- package/dist/types/date-time.d.ts +36 -36
- package/dist/types/date-time.d.ts.map +1 -1
- package/dist/types/date-time.js +196 -288
- package/dist/types/date-time.js.map +1 -6
- package/dist/types/lazy-gc-map.d.ts +26 -26
- package/dist/types/lazy-gc-map.d.ts.map +1 -1
- package/dist/types/lazy-gc-map.js +202 -159
- package/dist/types/lazy-gc-map.js.map +1 -6
- package/dist/types/time.d.ts +23 -23
- package/dist/types/time.d.ts.map +1 -1
- package/dist/types/time.js +169 -158
- package/dist/types/time.js.map +1 -6
- package/dist/types/uuid.d.ts +11 -11
- package/dist/types/uuid.d.ts.map +1 -1
- package/dist/types/uuid.js +95 -70
- package/dist/types/uuid.js.map +1 -6
- package/dist/utils/bytes.d.ts +17 -17
- package/dist/utils/bytes.js +137 -81
- package/dist/utils/bytes.js.map +1 -6
- package/dist/utils/date-format.d.ts +40 -40
- package/dist/utils/date-format.js +187 -101
- package/dist/utils/date-format.js.map +1 -6
- package/dist/utils/error.d.ts +4 -4
- package/dist/utils/error.js +11 -6
- package/dist/utils/error.js.map +1 -6
- package/dist/utils/json.d.ts +19 -19
- package/dist/utils/json.js +187 -135
- package/dist/utils/json.js.map +1 -6
- package/dist/utils/num.d.ts +20 -20
- package/dist/utils/num.js +76 -34
- package/dist/utils/num.js.map +1 -6
- package/dist/utils/obj.d.ts +111 -111
- package/dist/utils/obj.d.ts.map +1 -1
- package/dist/utils/obj.js +706 -496
- package/dist/utils/obj.js.map +1 -6
- package/dist/utils/path.d.ts +10 -10
- package/dist/utils/path.js +35 -18
- package/dist/utils/path.js.map +1 -6
- package/dist/utils/primitive.d.ts +5 -5
- package/dist/utils/primitive.js +34 -14
- package/dist/utils/primitive.js.map +1 -6
- package/dist/utils/str.d.ts +38 -38
- package/dist/utils/str.js +217 -113
- package/dist/utils/str.js.map +1 -6
- package/dist/utils/template-strings.d.ts +26 -26
- package/dist/utils/template-strings.js +113 -40
- package/dist/utils/template-strings.js.map +1 -6
- package/dist/utils/transferable.d.ts +18 -18
- package/dist/utils/transferable.js +218 -151
- package/dist/utils/transferable.js.map +1 -6
- package/dist/utils/wait.d.ts +9 -9
- package/dist/utils/wait.js +30 -15
- package/dist/utils/wait.js.map +1 -6
- package/dist/utils/xml.d.ts +13 -13
- package/dist/utils/xml.js +84 -46
- package/dist/utils/xml.js.map +1 -6
- package/dist/utils/zip.d.ts +22 -22
- package/dist/utils/zip.js +172 -148
- package/dist/utils/zip.js.map +1 -6
- package/docs/array-extensions.md +430 -0
- package/docs/env.md +52 -0
- package/docs/errors.md +41 -56
- package/docs/features.md +82 -97
- package/docs/type-utilities.md +91 -0
- package/docs/types.md +221 -201
- package/docs/utils.md +319 -435
- package/package.json +7 -5
- package/src/common.types.ts +14 -14
- package/src/env.ts +12 -3
- package/src/errors/argument-error.ts +15 -15
- package/src/errors/not-implemented-error.ts +9 -9
- package/src/errors/sd-error.ts +12 -12
- package/src/errors/timeout-error.ts +12 -12
- package/src/extensions/arr-ext.helpers.ts +16 -16
- package/src/extensions/arr-ext.ts +35 -35
- package/src/extensions/arr-ext.types.ts +57 -57
- package/src/extensions/map-ext.ts +16 -16
- package/src/extensions/set-ext.ts +11 -11
- package/src/features/debounce-queue.ts +23 -23
- package/src/features/event-emitter.ts +25 -25
- package/src/features/serial-queue.ts +13 -13
- package/src/globals.ts +4 -4
- package/src/index.ts +5 -5
- package/src/types/date-only.ts +84 -83
- package/src/types/date-time.ts +43 -42
- package/src/types/lazy-gc-map.ts +44 -44
- package/src/types/time.ts +29 -29
- package/src/types/uuid.ts +15 -15
- package/src/utils/bytes.ts +35 -35
- package/src/utils/date-format.ts +59 -59
- package/src/utils/error.ts +4 -4
- package/src/utils/json.ts +41 -41
- package/src/utils/num.ts +20 -20
- package/src/utils/obj.ts +138 -138
- package/src/utils/path.ts +10 -10
- package/src/utils/primitive.ts +6 -6
- package/src/utils/str.ts +48 -48
- package/src/utils/template-strings.ts +29 -29
- package/src/utils/transferable.ts +38 -38
- package/src/utils/wait.ts +10 -10
- package/src/utils/xml.ts +19 -19
- package/src/utils/zip.ts +25 -25
- package/docs/extensions.md +0 -387
- package/tests/errors/errors.spec.ts +0 -80
- package/tests/extensions/array-extension.spec.ts +0 -654
- package/tests/extensions/map-extension.spec.ts +0 -117
- package/tests/extensions/set-extension.spec.ts +0 -67
- package/tests/types/date-only.spec.ts +0 -533
- package/tests/types/date-time.spec.ts +0 -246
- package/tests/types/lazy-gc-map.spec.ts +0 -606
- package/tests/types/time.spec.ts +0 -428
- package/tests/types/uuid.spec.ts +0 -74
- package/tests/utils/bytes-utils.spec.ts +0 -197
- package/tests/utils/date-format.spec.ts +0 -350
- package/tests/utils/debounce-queue.spec.ts +0 -226
- package/tests/utils/json.spec.ts +0 -400
- package/tests/utils/number.spec.ts +0 -136
- package/tests/utils/object.spec.ts +0 -810
- package/tests/utils/path.spec.ts +0 -70
- package/tests/utils/primitive.spec.ts +0 -43
- package/tests/utils/sd-event-emitter.spec.ts +0 -189
- package/tests/utils/serial-queue.spec.ts +0 -305
- package/tests/utils/string.spec.ts +0 -265
- package/tests/utils/template-strings.spec.ts +0 -48
- package/tests/utils/transferable.spec.ts +0 -639
- package/tests/utils/wait.spec.ts +0 -123
- package/tests/utils/xml.spec.ts +0 -146
- package/tests/utils/zip.spec.ts +0 -221
package/dist/utils/obj.d.ts
CHANGED
|
@@ -1,101 +1,101 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* -
|
|
4
|
-
* -
|
|
2
|
+
* 깊은 복사
|
|
3
|
+
* - 순환 참조 지원
|
|
4
|
+
* - 커스텀 타입 복사 지원 (DateTime, DateOnly, Time, Uuid, Uint8Array)
|
|
5
5
|
*
|
|
6
|
-
* @note
|
|
7
|
-
* @note WeakMap
|
|
8
|
-
* @note
|
|
9
|
-
* @note
|
|
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
|
|
12
|
+
/** equal 옵션 타입 */
|
|
13
13
|
export interface EqualOptions {
|
|
14
|
-
/**
|
|
14
|
+
/** 비교할 key 목록. 지정 시 해당 key만 비교 (최상위 레벨에만 적용) */
|
|
15
15
|
topLevelIncludes?: string[];
|
|
16
|
-
/**
|
|
16
|
+
/** 비교에서 제외할 key 목록 (최상위 레벨에만 적용) */
|
|
17
17
|
topLevelExcludes?: string[];
|
|
18
|
-
/**
|
|
18
|
+
/** array 순서를 무시할지 여부. true면 O(n²) 복잡도 */
|
|
19
19
|
ignoreArrayIndex?: boolean;
|
|
20
|
-
/**
|
|
20
|
+
/** 얕은 비교 여부. true면 1단계만 비교 (참조 비교) */
|
|
21
21
|
shallow?: boolean;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* 깊은 동등성 비교
|
|
25
25
|
*
|
|
26
|
-
* @param source
|
|
27
|
-
* @param target
|
|
28
|
-
* @param options
|
|
29
|
-
* @param options.topLevelIncludes
|
|
30
|
-
* @example `{ topLevelIncludes: ["id", "name"] }` -
|
|
31
|
-
* @param options.topLevelExcludes
|
|
32
|
-
* @example `{ topLevelExcludes: ["updatedAt"] }` -
|
|
33
|
-
* @param options.ignoreArrayIndex
|
|
34
|
-
* @param options.shallow
|
|
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
|
|
37
|
-
*
|
|
38
|
-
* @note
|
|
39
|
-
* -
|
|
40
|
-
* -
|
|
41
|
-
* (
|
|
42
|
-
* @note `ignoreArrayIndex: true`
|
|
43
|
-
* -
|
|
44
|
-
* -
|
|
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
|
|
47
|
+
/** merge 옵션 타입 */
|
|
48
48
|
export interface MergeOptions {
|
|
49
|
-
/** Array
|
|
49
|
+
/** Array 처리 방식. "replace": target으로 교체 (기본값), "concat": 병합 (중복 제거) */
|
|
50
50
|
arrayProcess?: "replace" | "concat";
|
|
51
|
-
/**
|
|
51
|
+
/** target이 null일 때 해당 key를 삭제할지 여부 */
|
|
52
52
|
useDelTargetNull?: boolean;
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
55
|
+
* 깊은 병합 (source를 기반으로 target을 병합)
|
|
56
56
|
*
|
|
57
|
-
* @param source
|
|
58
|
-
* @param target
|
|
59
|
-
* @param opt
|
|
60
|
-
* @param opt.arrayProcess Array
|
|
61
|
-
* - `"replace"`:
|
|
62
|
-
* - `"concat"`:
|
|
63
|
-
* @param opt.useDelTargetNull
|
|
64
|
-
* - `true`:
|
|
65
|
-
* - `false`
|
|
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
|
|
68
|
-
* @note
|
|
69
|
-
*
|
|
70
|
-
* @note
|
|
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
|
|
73
|
+
/** merge3 옵션 타입 */
|
|
74
74
|
export interface Merge3KeyOptions {
|
|
75
|
-
/**
|
|
75
|
+
/** 비교할 하위 key 목록 (equal의 topLevelIncludes와 동일) */
|
|
76
76
|
keys?: string[];
|
|
77
|
-
/**
|
|
77
|
+
/** 비교에서 제외할 하위 key 목록 */
|
|
78
78
|
excludes?: string[];
|
|
79
|
-
/**
|
|
79
|
+
/** array 순서를 무시할지 여부 */
|
|
80
80
|
ignoreArrayIndex?: boolean;
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
|
-
* 3-way
|
|
83
|
+
* 3-way 병합
|
|
84
84
|
*
|
|
85
|
-
*
|
|
86
|
-
* -
|
|
87
|
-
* -
|
|
88
|
-
* -
|
|
89
|
-
* -
|
|
85
|
+
* source, origin, target 세 객체를 비교하여 병합.
|
|
86
|
+
* - source와 origin이 같고 target이 다르면 → target 값 사용
|
|
87
|
+
* - target과 origin이 같고 source가 다르면 → source 값 사용
|
|
88
|
+
* - source와 target이 같으면 → 해당 값 사용
|
|
89
|
+
* - 세 값이 모두 다르면 → 충돌 발생 (origin 값 유지)
|
|
90
90
|
*
|
|
91
|
-
* @param source
|
|
92
|
-
* @param origin
|
|
93
|
-
* @param target
|
|
94
|
-
* @param optionsObj
|
|
95
|
-
* - `keys`:
|
|
96
|
-
* - `excludes`:
|
|
97
|
-
* - `ignoreArrayIndex`:
|
|
98
|
-
* @returns conflict:
|
|
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
|
-
*
|
|
114
|
-
* @param item
|
|
115
|
-
* @param omitKeys
|
|
116
|
-
* @returns
|
|
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
|
-
*
|
|
124
|
+
* 조건에 맞는 key 제외
|
|
125
125
|
* @internal
|
|
126
|
-
* @param item
|
|
127
|
-
* @param omitKeyFn
|
|
128
|
-
* @returns
|
|
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
|
-
*
|
|
137
|
-
* @param item
|
|
138
|
-
* @param keys
|
|
139
|
-
* @returns
|
|
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
|
-
*
|
|
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
|
-
*
|
|
153
|
+
* 같은 key로 지정된 깊이만큼 하강
|
|
154
154
|
* @internal
|
|
155
|
-
* @param obj
|
|
156
|
-
* @param key
|
|
157
|
-
* @param depth
|
|
158
|
-
* @param optional
|
|
159
|
-
* @throws ArgumentError
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
175
|
+
* 객체에서 undefined 값을 가진 key 삭제
|
|
176
176
|
* @internal
|
|
177
177
|
*
|
|
178
|
-
* @mutates
|
|
178
|
+
* @mutates 원본 객체를 직접 수정
|
|
179
179
|
*/
|
|
180
180
|
export declare function clearUndefined<T extends object>(obj: T): T;
|
|
181
181
|
/**
|
|
182
|
-
*
|
|
182
|
+
* 객체의 모든 key 삭제
|
|
183
183
|
* @internal
|
|
184
184
|
*
|
|
185
|
-
* @mutates
|
|
185
|
+
* @mutates 원본 객체를 직접 수정
|
|
186
186
|
*/
|
|
187
187
|
export declare function clear<T extends Record<string, unknown>>(obj: T): Record<string, never>;
|
|
188
188
|
/**
|
|
189
|
-
*
|
|
189
|
+
* null을 undefined로 변환 (재귀)
|
|
190
190
|
* @internal
|
|
191
191
|
*
|
|
192
|
-
* @mutates
|
|
192
|
+
* @mutates 원본 array/객체를 직접 수정
|
|
193
193
|
*/
|
|
194
194
|
export declare function nullToUndefined<TObject>(obj: TObject): TObject | undefined;
|
|
195
195
|
/**
|
|
196
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
219
|
-
* @param obj
|
|
220
|
-
* @returns
|
|
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
|
-
*
|
|
225
|
-
* @param obj
|
|
226
|
-
* @returns
|
|
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
|
-
*
|
|
231
|
-
* @param entries
|
|
232
|
-
* @returns
|
|
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
|
-
*
|
|
242
|
-
* @param obj
|
|
243
|
-
* @param fn
|
|
244
|
-
* @returns
|
|
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
|
-
* //
|
|
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
|
-
* //
|
|
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
|
*/
|
package/dist/utils/obj.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obj.d.ts","sourceRoot":"","sources":["../../src/utils/obj.ts"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,CAE9C;AAoHD,
|
|
1
|
+
{"version":3,"file":"obj.d.ts","sourceRoot":"","sources":["../../src/utils/obj.ts"],"names":[],"mappings":"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"}
|