@simplysm/core-browser 13.0.0-beta.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.
- package/.cache/typecheck-browser.tsbuildinfo +1 -0
- package/.cache/typecheck-tests-browser.tsbuildinfo +1 -0
- package/README.md +221 -0
- package/dist/core-browser/src/extensions/element-ext.d.ts +98 -0
- package/dist/core-browser/src/extensions/element-ext.d.ts.map +1 -0
- package/dist/core-browser/src/extensions/html-element-ext.d.ts +54 -0
- package/dist/core-browser/src/extensions/html-element-ext.d.ts.map +1 -0
- package/dist/core-browser/src/index.d.ts +7 -0
- package/dist/core-browser/src/index.d.ts.map +1 -0
- package/dist/core-browser/src/utils/blob.d.ts +10 -0
- package/dist/core-browser/src/utils/blob.d.ts.map +1 -0
- package/dist/core-browser/src/utils/download.d.ts +11 -0
- package/dist/core-browser/src/utils/download.d.ts.map +1 -0
- package/dist/core-common/src/common.types.d.ts +74 -0
- package/dist/core-common/src/common.types.d.ts.map +1 -0
- package/dist/core-common/src/env.d.ts +6 -0
- package/dist/core-common/src/env.d.ts.map +1 -0
- package/dist/core-common/src/errors/argument-error.d.ts +25 -0
- package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/sd-error.d.ts +27 -0
- package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
- package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
- package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
- package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
- package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
- package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
- package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
- package/dist/core-common/src/features/event-emitter.d.ts +66 -0
- package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
- package/dist/core-common/src/features/serial-queue.d.ts +47 -0
- package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
- package/dist/core-common/src/index.d.ts +32 -0
- package/dist/core-common/src/index.d.ts.map +1 -0
- package/dist/core-common/src/types/date-only.d.ts +152 -0
- package/dist/core-common/src/types/date-only.d.ts.map +1 -0
- package/dist/core-common/src/types/date-time.d.ts +96 -0
- package/dist/core-common/src/types/date-time.d.ts.map +1 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
- package/dist/core-common/src/types/time.d.ts +68 -0
- package/dist/core-common/src/types/time.d.ts.map +1 -0
- package/dist/core-common/src/types/uuid.d.ts +35 -0
- package/dist/core-common/src/types/uuid.d.ts.map +1 -0
- package/dist/core-common/src/utils/bytes.d.ts +51 -0
- package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
- package/dist/core-common/src/utils/date-format.d.ts +90 -0
- package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
- package/dist/core-common/src/utils/json.d.ts +34 -0
- package/dist/core-common/src/utils/json.d.ts.map +1 -0
- package/dist/core-common/src/utils/num.d.ts +60 -0
- package/dist/core-common/src/utils/num.d.ts.map +1 -0
- package/dist/core-common/src/utils/obj.d.ts +258 -0
- package/dist/core-common/src/utils/obj.d.ts.map +1 -0
- package/dist/core-common/src/utils/path.d.ts +23 -0
- package/dist/core-common/src/utils/path.d.ts.map +1 -0
- package/dist/core-common/src/utils/primitive.d.ts +18 -0
- package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
- package/dist/core-common/src/utils/str.d.ts +103 -0
- package/dist/core-common/src/utils/str.d.ts.map +1 -0
- package/dist/core-common/src/utils/template-strings.d.ts +84 -0
- package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
- package/dist/core-common/src/utils/transferable.d.ts +47 -0
- package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
- package/dist/core-common/src/utils/wait.d.ts +19 -0
- package/dist/core-common/src/utils/wait.d.ts.map +1 -0
- package/dist/core-common/src/utils/xml.d.ts +36 -0
- package/dist/core-common/src/utils/xml.d.ts.map +1 -0
- package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
- package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
- package/dist/extensions/element-ext.js +122 -0
- package/dist/extensions/element-ext.js.map +7 -0
- package/dist/extensions/html-element-ext.js +50 -0
- package/dist/extensions/html-element-ext.js.map +7 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +7 -0
- package/dist/utils/blob.js +19 -0
- package/dist/utils/blob.js.map +7 -0
- package/dist/utils/download.js +47 -0
- package/dist/utils/download.js.map +7 -0
- package/package.json +26 -0
- package/src/extensions/element-ext.ts +246 -0
- package/src/extensions/html-element-ext.ts +117 -0
- package/src/index.ts +11 -0
- package/src/utils/blob.ts +19 -0
- package/src/utils/download.ts +66 -0
- package/tests/extensions/element-ext.spec.ts +729 -0
- package/tests/extensions/html-element-ext.spec.ts +190 -0
- package/tests/utils/blob.spec.ts +68 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
interface HTMLElement {
|
|
3
|
+
/**
|
|
4
|
+
* 강제 리페인트 (reflow 트리거)
|
|
5
|
+
*/
|
|
6
|
+
repaint(): void;
|
|
7
|
+
/**
|
|
8
|
+
* 부모 요소 기준 상대 위치 계산 (CSS 포지셔닝용)
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* 이 함수는 요소의 위치를 부모 요소 기준으로 계산하되, `window.scrollX/Y`를 포함하여
|
|
12
|
+
* CSS `top`/`left` 속성에 직접 사용할 수 있는 문서 기준 좌표를 반환한다.
|
|
13
|
+
*
|
|
14
|
+
* 주요 사용 사례:
|
|
15
|
+
* - 드롭다운, 팝업 등을 `document.body`에 append 후 위치 지정
|
|
16
|
+
* - 스크롤된 페이지에서도 올바르게 동작
|
|
17
|
+
*
|
|
18
|
+
* 계산에 포함되는 요소:
|
|
19
|
+
* - 뷰포트 기준 위치 (getBoundingClientRect)
|
|
20
|
+
* - 문서 스크롤 위치 (window.scrollX/Y)
|
|
21
|
+
* - 부모 요소 내부 스크롤 (parentEl.scrollTop/Left)
|
|
22
|
+
* - 중간 요소들의 border 두께
|
|
23
|
+
* - CSS transform 변환
|
|
24
|
+
*
|
|
25
|
+
* @param parent - 기준이 될 부모 요소 또는 셀렉터 (예: document.body, ".container")
|
|
26
|
+
* @returns CSS top/left 속성에 사용할 수 있는 좌표
|
|
27
|
+
* @throws {ArgumentError} 부모 요소를 찾을 수 없는 경우
|
|
28
|
+
*/
|
|
29
|
+
getRelativeOffset(parent: HTMLElement | string): {
|
|
30
|
+
top: number;
|
|
31
|
+
left: number;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* 대상이 offset 영역(고정 헤더/고정 열 등)에 가려진 경우, 보이도록 스크롤
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* 이 함수는 대상이 스크롤 영역의 위쪽/왼쪽 경계를 벗어난 경우만 처리한다.
|
|
38
|
+
* 아래쪽/오른쪽으로 스크롤이 필요한 경우는 브라우저의 기본 포커스 스크롤 동작에 의존한다.
|
|
39
|
+
* 주로 고정 헤더나 고정 열이 있는 테이블에서 포커스 이벤트와 함께 사용된다.
|
|
40
|
+
*
|
|
41
|
+
* @param target - 대상의 컨테이너 내 위치 (offsetTop, offsetLeft)
|
|
42
|
+
* @param offset - 가려지면 안 되는 영역 크기 (예: 고정 헤더 높이, 고정 열 너비)
|
|
43
|
+
*/
|
|
44
|
+
scrollIntoViewIfNeeded(target: {
|
|
45
|
+
top: number;
|
|
46
|
+
left: number;
|
|
47
|
+
}, offset?: {
|
|
48
|
+
top: number;
|
|
49
|
+
left: number;
|
|
50
|
+
}): void;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=html-element-ext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-element-ext.d.ts","sourceRoot":"","sources":["../../../../src/extensions/html-element-ext.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,WAAW;QACnB;;WAEG;QACH,OAAO,IAAI,IAAI,CAAC;QAEhB;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAE/E;;;;;;;;;;WAUG;QACH,sBAAsB,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,MAAM,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;KAC7G;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import "./extensions/element-ext";
|
|
2
|
+
import "./extensions/html-element-ext";
|
|
3
|
+
export * from "./extensions/element-ext";
|
|
4
|
+
export * from "./extensions/html-element-ext";
|
|
5
|
+
export * from "./utils/blob";
|
|
6
|
+
export * from "./utils/download";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AAGvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../../../src/utils/blob.ts"],"names":[],"mappings":"AAAA,yBAAiB,SAAS,CAAC;IACzB;;;;;OAKG;IACH,SAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAU3D;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface DownloadProgress {
|
|
2
|
+
receivedLength: number;
|
|
3
|
+
contentLength: number;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* URL에서 바이너리 데이터 다운로드 (진행률 콜백 지원)
|
|
7
|
+
*/
|
|
8
|
+
export declare function downloadBytes(url: string, options?: {
|
|
9
|
+
onProgress?: (progress: DownloadProgress) => void;
|
|
10
|
+
}): Promise<Uint8Array>;
|
|
11
|
+
//# sourceMappingURL=download.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../src/utils/download.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAAE,GAC9D,OAAO,CAAC,UAAU,CAAC,CAsDrB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { DateTime } from "./types/date-time";
|
|
2
|
+
import { DateOnly } from "./types/date-only";
|
|
3
|
+
import { Time } from "./types/time";
|
|
4
|
+
import { Uuid } from "./types/uuid";
|
|
5
|
+
/**
|
|
6
|
+
* Buffer 대신 사용하는 바이너리 타입
|
|
7
|
+
*/
|
|
8
|
+
export type Bytes = Uint8Array;
|
|
9
|
+
/**
|
|
10
|
+
* Primitive 타입 매핑
|
|
11
|
+
* orm-common과 공유
|
|
12
|
+
*/
|
|
13
|
+
export type PrimitiveTypeMap = {
|
|
14
|
+
string: string;
|
|
15
|
+
number: number;
|
|
16
|
+
boolean: boolean;
|
|
17
|
+
DateTime: DateTime;
|
|
18
|
+
DateOnly: DateOnly;
|
|
19
|
+
Time: Time;
|
|
20
|
+
Uuid: Uuid;
|
|
21
|
+
Bytes: Bytes;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Primitive 타입 문자열 키
|
|
25
|
+
*/
|
|
26
|
+
export type PrimitiveTypeStr = keyof PrimitiveTypeMap;
|
|
27
|
+
/**
|
|
28
|
+
* Primitive 타입 유니온
|
|
29
|
+
*/
|
|
30
|
+
export type PrimitiveType = PrimitiveTypeMap[PrimitiveTypeStr] | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* 깊은 Partial 타입
|
|
33
|
+
*
|
|
34
|
+
* 객체의 모든 속성을 재귀적으로 선택적(optional)으로 만듭니다.
|
|
35
|
+
* Primitive 타입(string, number, boolean 등)은 그대로 유지하고,
|
|
36
|
+
* 객체/배열 타입만 재귀적으로 Partial을 적용합니다.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* interface User {
|
|
41
|
+
* name: string;
|
|
42
|
+
* profile: {
|
|
43
|
+
* age: number;
|
|
44
|
+
* address: { city: string };
|
|
45
|
+
* };
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* // 모든 깊이의 속성이 선택적이 됨
|
|
49
|
+
* const partial: DeepPartial<User> = {
|
|
50
|
+
* profile: { address: {} }
|
|
51
|
+
* };
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export type DeepPartial<T> = Partial<{
|
|
55
|
+
[K in keyof T]: T[K] extends PrimitiveType ? T[K] : DeepPartial<T[K]>;
|
|
56
|
+
}>;
|
|
57
|
+
/**
|
|
58
|
+
* 생성자 타입
|
|
59
|
+
*
|
|
60
|
+
* 클래스 생성자를 타입으로 표현할 때 사용합니다.
|
|
61
|
+
* 주로 의존성 주입, 팩토리 패턴, instanceof 체크 등에서 활용됩니다.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* function create<T>(ctor: Type<T>): T {
|
|
65
|
+
* return new ctor();
|
|
66
|
+
* }
|
|
67
|
+
*
|
|
68
|
+
* class MyClass { name = "test"; }
|
|
69
|
+
* const instance = create(MyClass); // MyClass 인스턴스
|
|
70
|
+
*/
|
|
71
|
+
export interface Type<T> extends Function {
|
|
72
|
+
new (...args: unknown[]): T;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=common.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.types.d.ts","sourceRoot":"","sources":["../../../../core-common/src/common.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIpC;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC;AAM/B;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;AAM3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC;KAClC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,CAAE,SAAQ,QAAQ;IACvC,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../core-common/src/env.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG,EAAE;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAKxB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SdError } from "./sd-error";
|
|
2
|
+
/**
|
|
3
|
+
* 인수 오류
|
|
4
|
+
*
|
|
5
|
+
* 잘못된 인수를 받았을 때 발생시키는 에러이다.
|
|
6
|
+
* 인수 객체를 YAML 형식으로 메시지에 포함하여 디버깅을 용이하게 한다.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* // 인수 객체만 전달
|
|
10
|
+
* throw new ArgumentError({ userId: 123, name: null });
|
|
11
|
+
* // 결과 메시지: "인수가 잘못되었습니다.\n\nuserId: 123\nname: null"
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // 커스텀 메시지와 인수 객체 전달
|
|
15
|
+
* throw new ArgumentError("유효하지 않은 사용자", { userId: 123 });
|
|
16
|
+
* // 결과 메시지: "유효하지 않은 사용자\n\nuserId: 123"
|
|
17
|
+
*/
|
|
18
|
+
export declare class ArgumentError extends SdError {
|
|
19
|
+
/** 기본 메시지("인수가 잘못되었습니다.")와 함께 인수 객체를 YAML 형식으로 출력 */
|
|
20
|
+
constructor(argObj: Record<string, unknown>);
|
|
21
|
+
/** 커스텀 메시지와 함께 인수 객체를 YAML 형식으로 출력 */
|
|
22
|
+
constructor(message: string, argObj: Record<string, unknown>);
|
|
23
|
+
constructor(arg1: Record<string, unknown> | string, arg2?: Record<string, unknown>);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=argument-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"argument-error.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/errors/argument-error.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAc,SAAQ,OAAO;IACxC,qDAAqD;gBACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3C,sCAAsC;gBAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAChD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAYnF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SdError } from "./sd-error";
|
|
2
|
+
/**
|
|
3
|
+
* 미구현 오류
|
|
4
|
+
*
|
|
5
|
+
* 아직 구현되지 않은 기능을 호출했을 때 발생시키는 에러이다.
|
|
6
|
+
* 추상 메서드 스텁, 향후 구현 예정인 분기 등에 사용한다.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* // 추상 메서드 구현 전
|
|
10
|
+
* class BaseService {
|
|
11
|
+
* process(): void {
|
|
12
|
+
* throw new NotImplementedError("서브클래스에서 구현 필요");
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // 향후 구현 예정 분기
|
|
18
|
+
* switch (type) {
|
|
19
|
+
* case "A": return handleA();
|
|
20
|
+
* case "B": throw new NotImplementedError(`타입 ${type} 처리`);
|
|
21
|
+
* }
|
|
22
|
+
*/
|
|
23
|
+
export declare class NotImplementedError extends SdError {
|
|
24
|
+
/**
|
|
25
|
+
* @param message 추가 설명 메시지
|
|
26
|
+
*/
|
|
27
|
+
constructor(message?: string);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=not-implemented-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-implemented-error.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/errors/not-implemented-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAoB,SAAQ,OAAO;IAC9C;;OAEG;gBACS,OAAO,CAAC,EAAE,MAAM;CAI7B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 오류의 Tree 구조 구성이 가능한 오류 클래스
|
|
3
|
+
* ES2024 cause 속성 활용
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* // 원인 에러를 감싸서 생성
|
|
7
|
+
* try {
|
|
8
|
+
* await fetch(url);
|
|
9
|
+
* } catch (err) {
|
|
10
|
+
* throw new SdError(err, "API 호출 실패", "사용자 로드 실패");
|
|
11
|
+
* }
|
|
12
|
+
* // 결과 메시지: "사용자 로드 실패 => API 호출 실패 => 원본 에러 메시지"
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // 메시지만으로 생성
|
|
16
|
+
* throw new SdError("잘못된 상태", "처리 불가");
|
|
17
|
+
* // 결과 메시지: "처리 불가 => 잘못된 상태"
|
|
18
|
+
*/
|
|
19
|
+
export declare class SdError extends Error {
|
|
20
|
+
cause?: Error;
|
|
21
|
+
/** 원인 에러를 감싸서 생성. 메시지는 역순으로 연결됨 (상위 메시지 => 하위 메시지 => 원인 메시지) */
|
|
22
|
+
constructor(cause: Error, ...messages: string[]);
|
|
23
|
+
/** 메시지만으로 생성. 메시지는 역순으로 연결됨 (상위 메시지 => 하위 메시지) */
|
|
24
|
+
constructor(...messages: string[]);
|
|
25
|
+
constructor(arg1?: unknown, ...messages: string[]);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=sd-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sd-error.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/errors/sd-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,OAAQ,SAAQ,KAAK;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;IAEvB,gEAAgE;gBACpD,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE;IAC/C,kDAAkD;gBACtC,GAAG,QAAQ,EAAE,MAAM,EAAE;gBACrB,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE;CA2BlD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SdError } from "./sd-error";
|
|
2
|
+
/**
|
|
3
|
+
* 타임아웃 오류
|
|
4
|
+
*
|
|
5
|
+
* 대기 시간이 초과되었을 때 발생하는 에러이다.
|
|
6
|
+
* Wait.until() 등의 비동기 대기 함수에서 최대 시도 횟수를 초과하면 자동으로 발생한다.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* // Wait.until에서 자동 발생
|
|
10
|
+
* try {
|
|
11
|
+
* await Wait.until(() => isReady, 100, 50); // 100ms 간격, 최대 50회
|
|
12
|
+
* } catch (err) {
|
|
13
|
+
* if (err instanceof TimeoutError) {
|
|
14
|
+
* console.log("시간 초과");
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // 직접 발생
|
|
20
|
+
* if (elapsed > maxTime) {
|
|
21
|
+
* throw new TimeoutError(undefined, "API 응답 대기 초과");
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
export declare class TimeoutError extends SdError {
|
|
25
|
+
/**
|
|
26
|
+
* @param count 시도 횟수
|
|
27
|
+
* @param message 추가 메시지
|
|
28
|
+
*/
|
|
29
|
+
constructor(count?: number, message?: string);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=timeout-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout-error.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/errors/timeout-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACvC;;;OAGG;gBACS,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAM7C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Array 확장 메서드
|
|
3
|
+
*
|
|
4
|
+
* @remarks 각 메서드의 TSDoc은 타입 정의 파일(arr-ext.types.ts) 참조
|
|
5
|
+
*/
|
|
6
|
+
import "./map-ext";
|
|
7
|
+
import type { ReadonlyArrayExt, MutableArrayExt } from "./arr-ext.types";
|
|
8
|
+
declare global {
|
|
9
|
+
interface ReadonlyArray<T> extends ReadonlyArrayExt<T> {
|
|
10
|
+
}
|
|
11
|
+
interface Array<T> extends ReadonlyArrayExt<T>, MutableArrayExt<T> {
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export type { ArrayDiffsResult, ArrayDiffs2Result, TreeArray, ComparableType } from "./arr-ext.types";
|
|
15
|
+
//# sourceMappingURL=arr-ext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arr-ext.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/extensions/arr-ext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,WAAW,CAAC;AAUnB,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AA2uBzB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,aAAa,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;KAAG;IACzD,UAAU,KAAK,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;KAAG;CACtE;AAID,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Array 확장 헬퍼 함수
|
|
3
|
+
*/
|
|
4
|
+
import type { ComparableType } from "./arr-ext.types";
|
|
5
|
+
/**
|
|
6
|
+
* DateTime, DateOnly, Time을 비교 가능한 primitive 값으로 변환
|
|
7
|
+
*/
|
|
8
|
+
export declare function toComparable(value: ComparableType): string | number | boolean | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* 정렬을 위한 비교 함수
|
|
11
|
+
*
|
|
12
|
+
* @param pp 비교 대상 1
|
|
13
|
+
* @param pn 비교 대상 2
|
|
14
|
+
* @param desc true: 내림차순, false: 오름차순
|
|
15
|
+
* @returns 음수: pp가 앞, 0: 같음, 양수: pn이 앞
|
|
16
|
+
* @note null/undefined 값은 오름차순 시 앞으로, 내림차순 시 뒤로 정렬됨
|
|
17
|
+
*/
|
|
18
|
+
export declare function compareForOrder(pp: ComparableType, pn: ComparableType, desc: boolean): number;
|
|
19
|
+
//# sourceMappingURL=arr-ext.helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arr-ext.helpers.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/extensions/arr-ext.helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAKzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAuB7F"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Array 확장 타입 정의
|
|
3
|
+
*/
|
|
4
|
+
import type { PrimitiveTypeMap, PrimitiveTypeStr, Type } from "../common.types";
|
|
5
|
+
import type { DateTime } from "../types/date-time";
|
|
6
|
+
import type { DateOnly } from "../types/date-only";
|
|
7
|
+
import type { Time } from "../types/time";
|
|
8
|
+
export interface ReadonlyArrayExt<T> {
|
|
9
|
+
/**
|
|
10
|
+
* 조건에 맞는 단일 요소 반환
|
|
11
|
+
* @param predicate 필터 조건 (생략 시 배열 전체 대상)
|
|
12
|
+
* @returns 요소가 없으면 undefined
|
|
13
|
+
* @throws ArgumentError 조건에 맞는 요소가 2개 이상이면 발생
|
|
14
|
+
*/
|
|
15
|
+
single(predicate?: (item: T, index: number) => boolean): T | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* 첫 번째 요소 반환
|
|
18
|
+
* @param predicate 필터 조건 (생략 시 첫 번째 요소 반환)
|
|
19
|
+
* @returns 요소가 없으면 undefined
|
|
20
|
+
*/
|
|
21
|
+
first(predicate?: (item: T, index: number) => boolean): T | undefined;
|
|
22
|
+
/** 비동기 필터 (순차 실행) */
|
|
23
|
+
filterAsync(predicate: (item: T, index: number) => Promise<boolean>): Promise<T[]>;
|
|
24
|
+
/**
|
|
25
|
+
* 마지막 요소 반환
|
|
26
|
+
* @param predicate 필터 조건 (생략 시 마지막 요소 반환)
|
|
27
|
+
* @returns 요소가 없으면 undefined
|
|
28
|
+
*/
|
|
29
|
+
last(predicate?: (item: T, index: number) => boolean): T | undefined;
|
|
30
|
+
/** null/undefined 제거 */
|
|
31
|
+
filterExists(): NonNullable<T>[];
|
|
32
|
+
/** 특정 타입의 요소만 필터링 (PrimitiveTypeStr 또는 생성자 타입) */
|
|
33
|
+
ofType<K extends PrimitiveTypeStr>(type: K): Extract<T, PrimitiveTypeMap[K]>[];
|
|
34
|
+
ofType<N extends T>(type: Type<N>): N[];
|
|
35
|
+
/** 비동기 매핑 (순차 실행) */
|
|
36
|
+
mapAsync<R>(selector: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
37
|
+
/** 중첩 배열 평탄화 */
|
|
38
|
+
mapMany(): T extends readonly (infer U)[] ? U[] : T;
|
|
39
|
+
/** 매핑 후 평탄화 */
|
|
40
|
+
mapMany<R>(selector: (item: T, index: number) => R[]): R[];
|
|
41
|
+
/** 비동기 매핑 후 평탄화 (순차 실행) */
|
|
42
|
+
mapManyAsync<R>(selector: (item: T, index: number) => Promise<R[]>): Promise<R[]>;
|
|
43
|
+
/**
|
|
44
|
+
* 비동기 병렬 처리 (Promise.all 사용)
|
|
45
|
+
* @note 하나라도 reject되면 전체가 fail-fast로 reject됨 (Promise.all 동작)
|
|
46
|
+
*/
|
|
47
|
+
parallelAsync<R>(fn: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
48
|
+
/**
|
|
49
|
+
* 키 기준 그룹화
|
|
50
|
+
* @param keySelector 그룹 키 선택 함수
|
|
51
|
+
* @note O(n²) 복잡도 (객체 키 지원을 위해 깊은 비교 사용). primitive 키만 필요하면 toArrayMap()이 O(n)으로 더 효율적
|
|
52
|
+
*/
|
|
53
|
+
groupBy<K>(keySelector: (item: T, index: number) => K): {
|
|
54
|
+
key: K;
|
|
55
|
+
values: T[];
|
|
56
|
+
}[];
|
|
57
|
+
/**
|
|
58
|
+
* 키 기준 그룹화 (값 변환 포함)
|
|
59
|
+
* @param keySelector 그룹 키 선택 함수
|
|
60
|
+
* @param valueSelector 값 변환 함수
|
|
61
|
+
* @note O(n²) 복잡도 (객체 키 지원을 위해 깊은 비교 사용). primitive 키만 필요하면 toArrayMap()이 O(n)으로 더 효율적
|
|
62
|
+
*/
|
|
63
|
+
groupBy<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): {
|
|
64
|
+
key: K;
|
|
65
|
+
values: V[];
|
|
66
|
+
}[];
|
|
67
|
+
toMap<K>(keySelector: (item: T, index: number) => K): Map<K, T>;
|
|
68
|
+
toMap<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): Map<K, V>;
|
|
69
|
+
toMapAsync<K>(keySelector: (item: T, index: number) => Promise<K>): Promise<Map<K, T>>;
|
|
70
|
+
toMapAsync<K, V>(keySelector: (item: T, index: number) => Promise<K> | K, valueSelector: (item: T, index: number) => Promise<V> | V): Promise<Map<K, V>>;
|
|
71
|
+
toArrayMap<K>(keySelector: (item: T, index: number) => K): Map<K, T[]>;
|
|
72
|
+
toArrayMap<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): Map<K, V[]>;
|
|
73
|
+
toSetMap<K>(keySelector: (item: T, index: number) => K): Map<K, Set<T>>;
|
|
74
|
+
toSetMap<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): Map<K, Set<V>>;
|
|
75
|
+
toMapValues<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (items: T[]) => V): Map<K, V>;
|
|
76
|
+
toObject(keySelector: (item: T, index: number) => string): Record<string, T>;
|
|
77
|
+
toObject<V>(keySelector: (item: T, index: number) => string, valueSelector: (item: T, index: number) => V): Record<string, V>;
|
|
78
|
+
/**
|
|
79
|
+
* 평탄한 배열을 트리 구조로 변환한다
|
|
80
|
+
*
|
|
81
|
+
* @param keyProp 각 항목의 고유 키 속성명
|
|
82
|
+
* @param parentKey 부모 항목의 키를 참조하는 속성명
|
|
83
|
+
* @returns 루트 항목들의 배열 (각 항목에 children 속성 추가)
|
|
84
|
+
*
|
|
85
|
+
* @remarks
|
|
86
|
+
* - parentKey 값이 null/undefined인 항목이 루트가 된다
|
|
87
|
+
* - 내부적으로 toArrayMap을 사용하여 O(n) 복잡도로 처리한다
|
|
88
|
+
* - 원본 항목은 복사되어 children 속성이 추가된다
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* interface Item {
|
|
93
|
+
* id: number;
|
|
94
|
+
* parentId?: number;
|
|
95
|
+
* name: string;
|
|
96
|
+
* }
|
|
97
|
+
*
|
|
98
|
+
* const items: Item[] = [
|
|
99
|
+
* { id: 1, name: "root" },
|
|
100
|
+
* { id: 2, parentId: 1, name: "child1" },
|
|
101
|
+
* { id: 3, parentId: 1, name: "child2" },
|
|
102
|
+
* { id: 4, parentId: 2, name: "grandchild" },
|
|
103
|
+
* ];
|
|
104
|
+
*
|
|
105
|
+
* const tree = items.toTree("id", "parentId");
|
|
106
|
+
* // [{ id: 1, name: "root", children: [
|
|
107
|
+
* // { id: 2, name: "child1", children: [
|
|
108
|
+
* // { id: 4, name: "grandchild", children: [] }
|
|
109
|
+
* // ]},
|
|
110
|
+
* // { id: 3, name: "child2", children: [] }
|
|
111
|
+
* // ]}]
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
toTree<K extends keyof T, P extends keyof T>(keyProp: K, parentKey: P): TreeArray<T>[];
|
|
115
|
+
/**
|
|
116
|
+
* 중복 제거
|
|
117
|
+
* @param options matchAddress: 주소 비교 (true면 Set 사용), keyFn: 커스텀 키 함수 (O(n) 성능)
|
|
118
|
+
* @note 객체 배열에서 keyFn 없이 사용 시 O(n²) 복잡도. 대량 데이터는 keyFn 사용 권장
|
|
119
|
+
*/
|
|
120
|
+
distinct(options?: boolean | {
|
|
121
|
+
matchAddress?: boolean;
|
|
122
|
+
keyFn?: (item: T) => string | number;
|
|
123
|
+
}): T[];
|
|
124
|
+
orderBy(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
|
|
125
|
+
orderByDesc(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
|
|
126
|
+
/**
|
|
127
|
+
* 두 배열 비교 (INSERT/DELETE/UPDATE)
|
|
128
|
+
* @param target 비교 대상 배열
|
|
129
|
+
* @param options keys: 키 비교용, excludes: 비교 제외 속성
|
|
130
|
+
* @note target에 중복 키가 있으면 첫 번째 매칭만 사용됨
|
|
131
|
+
*/
|
|
132
|
+
diffs<P>(target: P[], options?: {
|
|
133
|
+
keys?: string[];
|
|
134
|
+
excludes?: string[];
|
|
135
|
+
}): ArrayDiffsResult<T, P>[];
|
|
136
|
+
oneWayDiffs<K extends keyof T>(orgItems: T[] | Map<T[K], T>, keyPropNameOrFn: K | ((item: T) => K), options?: {
|
|
137
|
+
includeSame?: boolean;
|
|
138
|
+
excludes?: string[];
|
|
139
|
+
includes?: string[];
|
|
140
|
+
}): ArrayDiffs2Result<T>[];
|
|
141
|
+
merge<P>(target: P[], options?: {
|
|
142
|
+
keys?: string[];
|
|
143
|
+
excludes?: string[];
|
|
144
|
+
}): (T | P | (T & P))[];
|
|
145
|
+
/**
|
|
146
|
+
* 요소의 합계 반환
|
|
147
|
+
* @param selector 값 선택 함수 (생략 시 요소 자체를 number로 사용)
|
|
148
|
+
* @returns 빈 배열인 경우 0 반환
|
|
149
|
+
*/
|
|
150
|
+
sum(selector?: (item: T, index: number) => number): number;
|
|
151
|
+
min(): T extends number | string ? T | undefined : never;
|
|
152
|
+
min<P extends number | string>(selector?: (item: T, index: number) => P): P | undefined;
|
|
153
|
+
max(): T extends number | string ? T | undefined : never;
|
|
154
|
+
max<P extends number | string>(selector?: (item: T, index: number) => P): P | undefined;
|
|
155
|
+
shuffle(): T[];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* 원본 배열을 변경하는 확장 메서드
|
|
159
|
+
* @mutates 모든 메서드가 원본 배열을 직접 변경합니다
|
|
160
|
+
*/
|
|
161
|
+
export interface MutableArrayExt<T> {
|
|
162
|
+
/**
|
|
163
|
+
* 원본 배열에서 중복 제거
|
|
164
|
+
* @param options matchAddress: 주소 비교 (true면 Set 사용), keyFn: 커스텀 키 함수 (O(n) 성능)
|
|
165
|
+
* @note 객체 배열에서 keyFn 없이 사용 시 O(n²) 복잡도. 대량 데이터는 keyFn 사용 권장
|
|
166
|
+
* @mutates
|
|
167
|
+
*/
|
|
168
|
+
distinctThis(options?: boolean | {
|
|
169
|
+
matchAddress?: boolean;
|
|
170
|
+
keyFn?: (item: T) => string | number;
|
|
171
|
+
}): T[];
|
|
172
|
+
/** 원본 배열 오름차순 정렬 @mutates */
|
|
173
|
+
orderByThis(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
|
|
174
|
+
/** 원본 배열 내림차순 정렬 @mutates */
|
|
175
|
+
orderByDescThis(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
|
|
176
|
+
/** 원본 배열에 항목 삽입 @mutates */
|
|
177
|
+
insert(index: number, ...items: T[]): this;
|
|
178
|
+
/** 원본 배열에서 항목 제거 @mutates */
|
|
179
|
+
remove(item: T): this;
|
|
180
|
+
/** 원본 배열에서 조건에 맞는 항목 제거 @mutates */
|
|
181
|
+
remove(selector: (item: T, index: number) => boolean): this;
|
|
182
|
+
/** 원본 배열에서 항목 토글 (있으면 제거, 없으면 추가) @mutates */
|
|
183
|
+
toggle(item: T): this;
|
|
184
|
+
/** 원본 배열 비우기 @mutates */
|
|
185
|
+
clear(): this;
|
|
186
|
+
}
|
|
187
|
+
export type ArrayDiffsResult<T, P> = {
|
|
188
|
+
source: undefined;
|
|
189
|
+
target: P;
|
|
190
|
+
} | {
|
|
191
|
+
source: T;
|
|
192
|
+
target: undefined;
|
|
193
|
+
} | {
|
|
194
|
+
source: T;
|
|
195
|
+
target: P;
|
|
196
|
+
};
|
|
197
|
+
export type ArrayDiffs2Result<T> = {
|
|
198
|
+
type: "create";
|
|
199
|
+
item: T;
|
|
200
|
+
orgItem: undefined;
|
|
201
|
+
} | {
|
|
202
|
+
type: "update";
|
|
203
|
+
item: T;
|
|
204
|
+
orgItem: T;
|
|
205
|
+
} | {
|
|
206
|
+
type: "same";
|
|
207
|
+
item: T;
|
|
208
|
+
orgItem: T;
|
|
209
|
+
};
|
|
210
|
+
export type TreeArray<T> = T & {
|
|
211
|
+
children: TreeArray<T>[];
|
|
212
|
+
};
|
|
213
|
+
/** 정렬/비교 가능한 타입 */
|
|
214
|
+
export type ComparableType = string | number | boolean | DateTime | DateOnly | Time | undefined;
|
|
215
|
+
//# sourceMappingURL=arr-ext.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arr-ext.types.d.ts","sourceRoot":"","sources":["../../../../../core-common/src/extensions/arr-ext.types.ts"],"names":[],"mappings":"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"}
|