@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.
- 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 +5 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +12 -8
- 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/package.json +5 -7
- package/src/common.types.ts +14 -14
- package/src/env.ts +9 -1
- 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/README.md +0 -160
- package/docs/errors.md +0 -119
- package/docs/extensions.md +0 -387
- package/docs/features.md +0 -143
- package/docs/types.md +0 -287
- package/docs/utils.md +0 -757
- 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
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 비동기 디바운스 큐
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* 짧은 시간 내에 여러 번 호출되면 마지막 요청만 실행하고
|
|
5
|
+
* 이전 요청은 무시한다. 입력 필드 자동완성,
|
|
6
|
+
* 연속적인 상태 변경 일괄 처리 등에 유용함.
|
|
7
7
|
*
|
|
8
8
|
* @remarks
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* 실행 중에 추가된 요청은 디바운스 지연 없이 현재 실행이
|
|
10
|
+
* 완료된 직후 즉시 처리됨. 이는 실행 완료 전에 도착한
|
|
11
|
+
* 요청을 놓치지 않기 위한 의도적인 설계임.
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
|
-
* const queue = new DebounceQueue(300); // 300ms
|
|
15
|
-
* queue.run(() => console.log("1")); //
|
|
16
|
-
* queue.run(() => console.log("2")); //
|
|
17
|
-
* queue.run(() => console.log("3")); //
|
|
14
|
+
* const queue = new DebounceQueue(300); // 300ms 지연
|
|
15
|
+
* queue.run(() => console.log("1")); // 무시됨
|
|
16
|
+
* queue.run(() => console.log("2")); // 무시됨
|
|
17
|
+
* queue.run(() => console.log("3")); // 300ms 후 실행
|
|
18
18
|
*
|
|
19
19
|
* @example
|
|
20
|
-
* //
|
|
20
|
+
* // 에러 처리
|
|
21
21
|
* queue.on("error", (err) => console.error(err));
|
|
22
22
|
*/
|
|
23
23
|
import { SdError } from "../errors/sd-error";
|
|
@@ -37,18 +37,18 @@ export class DebounceQueue extends EventEmitter<DebounceQueueEvents> {
|
|
|
37
37
|
private _timer: ReturnType<typeof setTimeout> | undefined;
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
|
-
* @param _delay
|
|
40
|
+
* @param _delay 디바운스 지연 시간 (밀리초). 생략 시 즉시 실행 (다음 이벤트 루프)
|
|
41
41
|
*/
|
|
42
42
|
constructor(private readonly _delay?: number) {
|
|
43
43
|
super();
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
|
-
*
|
|
47
|
+
* 대기 중인 작업과 타이머 정리
|
|
48
48
|
*/
|
|
49
49
|
override dispose(): void {
|
|
50
50
|
this._isDisposed = true;
|
|
51
|
-
if (this._timer) {
|
|
51
|
+
if (this._timer != null) {
|
|
52
52
|
clearTimeout(this._timer);
|
|
53
53
|
this._timer = undefined;
|
|
54
54
|
}
|
|
@@ -57,22 +57,22 @@ export class DebounceQueue extends EventEmitter<DebounceQueueEvents> {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
60
|
+
* using 문 지원
|
|
61
61
|
*/
|
|
62
62
|
override [Symbol.dispose](): void {
|
|
63
63
|
this.dispose();
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
67
|
+
* 큐에 함수 추가
|
|
68
|
+
* 이전에 추가된 함수가 있으면 교체됨
|
|
69
69
|
*/
|
|
70
70
|
run(fn: () => void | Promise<void>): void {
|
|
71
71
|
if (this._isDisposed) return;
|
|
72
72
|
|
|
73
73
|
this._pendingFn = fn;
|
|
74
74
|
|
|
75
|
-
if (this._timer) {
|
|
75
|
+
if (this._timer != null) {
|
|
76
76
|
clearTimeout(this._timer);
|
|
77
77
|
this._timer = undefined;
|
|
78
78
|
}
|
|
@@ -91,8 +91,8 @@ export class DebounceQueue extends EventEmitter<DebounceQueueEvents> {
|
|
|
91
91
|
this._timer = undefined;
|
|
92
92
|
|
|
93
93
|
try {
|
|
94
|
-
//
|
|
95
|
-
//
|
|
94
|
+
// 실행 중에 새 요청이 들어오면 디바운스 지연 없이 즉시 처리
|
|
95
|
+
// 실행 완료 전에 도착한 요청을 실행 직후 즉시 처리하기 위한 의도적인 설계
|
|
96
96
|
while (this._pendingFn) {
|
|
97
97
|
const currentFn = this._pendingFn;
|
|
98
98
|
this._pendingFn = undefined;
|
|
@@ -101,9 +101,9 @@ export class DebounceQueue extends EventEmitter<DebounceQueueEvents> {
|
|
|
101
101
|
await currentFn();
|
|
102
102
|
} catch (err) {
|
|
103
103
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
104
|
-
const sdError = new SdError(error, "
|
|
104
|
+
const sdError = new SdError(error, "작업 실행 중 오류 발생");
|
|
105
105
|
|
|
106
|
-
//
|
|
106
|
+
// 리스너가 있으면 이벤트로 발행, 없으면 로그 출력
|
|
107
107
|
if (this.listenerCount("error") > 0) {
|
|
108
108
|
this.emit("error", sdError);
|
|
109
109
|
} else {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* EventTarget
|
|
2
|
+
* EventTarget 래퍼 - EventEmitter와 유사한 API 제공
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* 브라우저와 Node.js 모두에서 사용 가능한 타입 안전한 이벤트 이미터.
|
|
5
|
+
* 내부적으로 EventTarget을 사용하여 구현됨.
|
|
6
6
|
*
|
|
7
|
-
* @typeParam TEvents
|
|
7
|
+
* @typeParam TEvents 이벤트 타입 맵. key는 이벤트 이름, value는 이벤트 데이터 타입
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* interface MyEvents {
|
|
@@ -18,32 +18,32 @@
|
|
|
18
18
|
* const emitter = new MyEmitter();
|
|
19
19
|
* emitter.on("data", (data) => console.log(data)); // data: string
|
|
20
20
|
* emitter.emit("data", "hello");
|
|
21
|
-
* emitter.emit("done"); // void
|
|
21
|
+
* emitter.emit("done"); // void 타입은 인자 없이 호출
|
|
22
22
|
*/
|
|
23
23
|
export class EventEmitter<
|
|
24
24
|
TEvents extends { [K in keyof TEvents]: unknown } = Record<string, unknown>,
|
|
25
25
|
> {
|
|
26
26
|
private readonly _target = new EventTarget();
|
|
27
|
-
//
|
|
28
|
-
//
|
|
27
|
+
// 이벤트 타입별 리스너 맵 관리 (같은 리스너를 다른 이벤트에 등록 가능)
|
|
28
|
+
// 다형성 리스너 관리를 위해 Function 타입 사용
|
|
29
29
|
private readonly _listenerMap = new Map<string, Map<Function, (e: Event) => void>>();
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
32
|
+
* 이벤트 리스너 등록
|
|
33
33
|
*
|
|
34
|
-
* @param type
|
|
35
|
-
* @param listener
|
|
36
|
-
* @note
|
|
34
|
+
* @param type 이벤트 타입
|
|
35
|
+
* @param listener 이벤트 핸들러
|
|
36
|
+
* @note 같은 리스너를 같은 이벤트에 중복 등록하면 무시됨
|
|
37
37
|
*/
|
|
38
38
|
on<TEventName extends keyof TEvents & string>(type: TEventName, listener: (data: TEvents[TEventName]) => void): void {
|
|
39
|
-
//
|
|
39
|
+
// 이벤트 타입에 대한 맵 조회 또는 생성
|
|
40
40
|
let typeMap = this._listenerMap.get(type);
|
|
41
41
|
if (!typeMap) {
|
|
42
42
|
typeMap = new Map();
|
|
43
43
|
this._listenerMap.set(type, typeMap);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
//
|
|
46
|
+
// 이 이벤트에 이미 등록된 리스너이면 무시 (중복 등록 방지)
|
|
47
47
|
if (typeMap.has(listener)) return;
|
|
48
48
|
|
|
49
49
|
const wrappedListener = (e: Event) => listener((e as CustomEvent).detail);
|
|
@@ -52,10 +52,10 @@ export class EventEmitter<
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
55
|
+
* 이벤트 리스너 제거
|
|
56
56
|
*
|
|
57
|
-
* @param type
|
|
58
|
-
* @param listener
|
|
57
|
+
* @param type 이벤트 타입
|
|
58
|
+
* @param listener 제거할 이벤트 핸들러
|
|
59
59
|
*/
|
|
60
60
|
off<TEventName extends keyof TEvents & string>(type: TEventName, listener: (data: TEvents[TEventName]) => void): void {
|
|
61
61
|
const typeMap = this._listenerMap.get(type);
|
|
@@ -66,7 +66,7 @@ export class EventEmitter<
|
|
|
66
66
|
this._target.removeEventListener(type, wrappedListener);
|
|
67
67
|
typeMap.delete(listener);
|
|
68
68
|
|
|
69
|
-
//
|
|
69
|
+
// 빈 맵 정리
|
|
70
70
|
if (typeMap.size === 0) {
|
|
71
71
|
this._listenerMap.delete(type);
|
|
72
72
|
}
|
|
@@ -74,10 +74,10 @@ export class EventEmitter<
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
/**
|
|
77
|
-
*
|
|
77
|
+
* 이벤트 발행
|
|
78
78
|
*
|
|
79
|
-
* @param type
|
|
80
|
-
* @param args
|
|
79
|
+
* @param type 이벤트 타입
|
|
80
|
+
* @param args 이벤트 데이터 (void 타입이면 생략)
|
|
81
81
|
*/
|
|
82
82
|
emit<TEventName extends keyof TEvents & string>(
|
|
83
83
|
type: TEventName,
|
|
@@ -87,17 +87,17 @@ export class EventEmitter<
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
/**
|
|
90
|
-
*
|
|
90
|
+
* 특정 이벤트의 리스너 수 반환
|
|
91
91
|
*
|
|
92
|
-
* @param type
|
|
93
|
-
* @returns
|
|
92
|
+
* @param type 이벤트 타입
|
|
93
|
+
* @returns 등록된 리스너 수
|
|
94
94
|
*/
|
|
95
95
|
listenerCount<TEventName extends keyof TEvents & string>(type: TEventName): number {
|
|
96
96
|
return this._listenerMap.get(type)?.size ?? 0;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
/**
|
|
100
|
-
*
|
|
100
|
+
* 모든 이벤트 리스너 제거
|
|
101
101
|
*/
|
|
102
102
|
dispose(): void {
|
|
103
103
|
for (const [type, typeMap] of this._listenerMap) {
|
|
@@ -109,7 +109,7 @@ export class EventEmitter<
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
/**
|
|
112
|
-
*
|
|
112
|
+
* using 문 지원
|
|
113
113
|
*/
|
|
114
114
|
[Symbol.dispose](): void {
|
|
115
115
|
this.dispose();
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 비동기 직렬 큐
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* 큐에 추가된 함수들은 순차적으로 실행됨.
|
|
5
|
+
* 하나의 작업이 완료된 후에야 다음 작업이 시작됨.
|
|
6
|
+
* 에러가 발생해도 후속 작업은 계속 실행됨.
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
9
9
|
* const queue = new SerialQueue();
|
|
10
10
|
* queue.run(async () => { await fetch("/api/1"); });
|
|
11
|
-
* queue.run(async () => { await fetch("/api/2"); }); //
|
|
12
|
-
* queue.run(async () => { await fetch("/api/3"); }); //
|
|
11
|
+
* queue.run(async () => { await fetch("/api/2"); }); // 1 완료 후 실행
|
|
12
|
+
* queue.run(async () => { await fetch("/api/3"); }); // 2 완료 후 실행
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
|
-
* //
|
|
15
|
+
* // 에러 처리
|
|
16
16
|
* queue.on("error", (err) => console.error(err));
|
|
17
17
|
*/
|
|
18
18
|
import { SdError } from "../errors/sd-error";
|
|
@@ -31,14 +31,14 @@ export class SerialQueue extends EventEmitter<SerialQueueEvents> {
|
|
|
31
31
|
private _isQueueRunning = false;
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
* @param _gap
|
|
34
|
+
* @param _gap 각 작업 사이의 간격 (ms)
|
|
35
35
|
*/
|
|
36
36
|
constructor(private readonly _gap: number = 0) {
|
|
37
37
|
super();
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
41
|
+
* 대기 중인 큐 비우기 (현재 실행 중인 작업은 완료됨)
|
|
42
42
|
*/
|
|
43
43
|
override dispose(): void {
|
|
44
44
|
this._queue.length = 0;
|
|
@@ -46,14 +46,14 @@ export class SerialQueue extends EventEmitter<SerialQueueEvents> {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* using 문 지원
|
|
50
50
|
*/
|
|
51
51
|
override [Symbol.dispose](): void {
|
|
52
52
|
this.dispose();
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
56
|
+
* 큐에 함수를 추가하고 실행
|
|
57
57
|
*/
|
|
58
58
|
run(fn: () => void | Promise<void>): void {
|
|
59
59
|
this._queue.push(fn);
|
|
@@ -73,9 +73,9 @@ export class SerialQueue extends EventEmitter<SerialQueueEvents> {
|
|
|
73
73
|
await fn();
|
|
74
74
|
} catch (err) {
|
|
75
75
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
76
|
-
const sdError = new SdError(error, "
|
|
76
|
+
const sdError = new SdError(error, "큐 작업 실행 중 오류 발생");
|
|
77
77
|
|
|
78
|
-
//
|
|
78
|
+
// 리스너가 있으면 이벤트로 발행, 없으면 로그 출력
|
|
79
79
|
if (this.listenerCount("error") > 0) {
|
|
80
80
|
this.emit("error", sdError);
|
|
81
81
|
} else {
|
package/src/globals.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 개발 모드 활성화 여부
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
4
|
+
* 빌드 시점에 치환됨:
|
|
5
|
+
* - 라이브러리 빌드: 치환되지 않음 (그대로 유지)
|
|
6
|
+
* - 클라이언트/서버 빌드: `define: { '__DEV__': 'true/false' }`로 치환
|
|
7
7
|
*/
|
|
8
8
|
export {};
|
|
9
9
|
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @simplysm/core-common
|
|
2
|
-
//
|
|
2
|
+
// 공통 유틸리티 패키지
|
|
3
3
|
|
|
4
4
|
import "./extensions/arr-ext";
|
|
5
5
|
import "./extensions/set-ext";
|
|
@@ -7,7 +7,7 @@ import "./extensions/map-ext";
|
|
|
7
7
|
|
|
8
8
|
export * from "./env";
|
|
9
9
|
|
|
10
|
-
// arr-extension
|
|
10
|
+
// arr-extension 재내보내기
|
|
11
11
|
export * from "./extensions/arr-ext";
|
|
12
12
|
|
|
13
13
|
//#region errors
|
|
@@ -31,7 +31,7 @@ export * from "./features/serial-queue";
|
|
|
31
31
|
export * from "./features/event-emitter";
|
|
32
32
|
//#endregion
|
|
33
33
|
|
|
34
|
-
//#region utils (
|
|
34
|
+
//#region utils (네임스페이스 내보내기)
|
|
35
35
|
export * as obj from "./utils/obj";
|
|
36
36
|
export * as str from "./utils/str";
|
|
37
37
|
export * as num from "./utils/num";
|
|
@@ -46,11 +46,11 @@ export * as dt from "./utils/date-format";
|
|
|
46
46
|
export * as primitive from "./utils/primitive";
|
|
47
47
|
//#endregion
|
|
48
48
|
|
|
49
|
-
//#region utils (
|
|
49
|
+
//#region utils (직접 내보내기)
|
|
50
50
|
export * from "./utils/template-strings";
|
|
51
51
|
export * from "./utils/zip";
|
|
52
52
|
//#endregion
|
|
53
53
|
|
|
54
|
-
//#region
|
|
54
|
+
//#region 타입 유틸리티
|
|
55
55
|
export * from "./common.types";
|
|
56
56
|
//#endregion
|