@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,66 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 비동기 직렬 큐
|
|
3
|
+
*
|
|
4
|
+
* 큐에 추가된 함수들은 순차적으로 실행됨.
|
|
5
|
+
* 하나의 작업이 완료된 후에야 다음 작업이 시작됨.
|
|
6
|
+
* 에러가 발생해도 후속 작업은 계속 실행됨.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const queue = new SerialQueue();
|
|
10
|
+
* queue.run(async () => { await fetch("/api/1"); });
|
|
11
|
+
* queue.run(async () => { await fetch("/api/2"); }); // 1 완료 후 실행
|
|
12
|
+
* queue.run(async () => { await fetch("/api/3"); }); // 2 완료 후 실행
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // 에러 처리
|
|
16
|
+
* queue.on("error", (err) => console.error(err));
|
|
17
|
+
*/
|
|
1
18
|
import { SdError } from "../errors/sd-error.js";
|
|
2
19
|
import { EventEmitter } from "./event-emitter.js";
|
|
3
20
|
import consola from "consola";
|
|
4
21
|
import { time } from "../utils/wait.js";
|
|
5
|
-
class SerialQueue extends EventEmitter {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const fn = this._queue.shift();
|
|
42
|
-
if (!fn) break;
|
|
22
|
+
export class SerialQueue extends EventEmitter {
|
|
23
|
+
_gap;
|
|
24
|
+
static _logger = consola.withTag("SerialQueue");
|
|
25
|
+
_queue = [];
|
|
26
|
+
_isQueueRunning = false;
|
|
27
|
+
/**
|
|
28
|
+
* @param _gap 각 작업 사이의 간격 (ms)
|
|
29
|
+
*/
|
|
30
|
+
constructor(_gap = 0) {
|
|
31
|
+
super();
|
|
32
|
+
this._gap = _gap;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 대기 중인 큐 비우기 (현재 실행 중인 작업은 완료됨)
|
|
36
|
+
*/
|
|
37
|
+
dispose() {
|
|
38
|
+
this._queue.length = 0;
|
|
39
|
+
super.dispose();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* using 문 지원
|
|
43
|
+
*/
|
|
44
|
+
[Symbol.dispose]() {
|
|
45
|
+
this.dispose();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 큐에 함수를 추가하고 실행
|
|
49
|
+
*/
|
|
50
|
+
run(fn) {
|
|
51
|
+
this._queue.push(fn);
|
|
52
|
+
void this._process();
|
|
53
|
+
}
|
|
54
|
+
async _process() {
|
|
55
|
+
if (this._isQueueRunning)
|
|
56
|
+
return;
|
|
57
|
+
this._isQueueRunning = true;
|
|
43
58
|
try {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
59
|
+
while (this._queue.length > 0) {
|
|
60
|
+
const fn = this._queue.shift();
|
|
61
|
+
if (!fn)
|
|
62
|
+
break;
|
|
63
|
+
try {
|
|
64
|
+
await fn();
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
68
|
+
const sdError = new SdError(error, "큐 작업 실행 중 오류 발생");
|
|
69
|
+
// 리스너가 있으면 이벤트로 발행, 없으면 로그 출력
|
|
70
|
+
if (this.listenerCount("error") > 0) {
|
|
71
|
+
this.emit("error", sdError);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
SerialQueue._logger.error(sdError);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (this._gap > 0 && this._queue.length > 0) {
|
|
78
|
+
await time(this._gap);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
53
81
|
}
|
|
54
|
-
|
|
55
|
-
|
|
82
|
+
finally {
|
|
83
|
+
this._isQueueRunning = false;
|
|
56
84
|
}
|
|
57
|
-
}
|
|
58
|
-
} finally {
|
|
59
|
-
this._isQueueRunning = false;
|
|
60
85
|
}
|
|
61
|
-
}
|
|
62
86
|
}
|
|
63
|
-
|
|
64
|
-
SerialQueue
|
|
65
|
-
};
|
|
66
|
-
//# sourceMappingURL=serial-queue.js.map
|
|
87
|
+
//# sourceMappingURL=serial-queue.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/features/serial-queue.ts"],
|
|
4
|
-
"mappings": "AAiBA,SAAS,eAAe;AACxB,SAAS,oBAAoB;AAC7B,OAAO,aAAa;AACpB,SAAS,YAAY;AAMd,MAAM,oBAAoB,aAAgC;AAAA;AAAA;AAAA;AAAA,EAS/D,YAA6B,OAAe,GAAG;AAC7C,UAAM;AADqB;AAAA,EAE7B;AAAA,EAVA,OAAwB,UAAU,QAAQ,QAAQ,aAAa;AAAA,EAE9C,SAAyC,CAAC;AAAA,EACnD,kBAAkB;AAAA;AAAA;AAAA;AAAA,EAYjB,UAAgB;AACvB,SAAK,OAAO,SAAS;AACrB,UAAM,QAAQ;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,CAAU,OAAO,OAAO,IAAU;AAChC,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,IAAsC;AACxC,SAAK,OAAO,KAAK,EAAE;AACnB,SAAK,KAAK,SAAS;AAAA,EACrB;AAAA,EAEA,MAAc,WAA0B;AACtC,QAAI,KAAK,gBAAiB;AAC1B,SAAK,kBAAkB;AAEvB,QAAI;AACF,aAAO,KAAK,OAAO,SAAS,GAAG;AAC7B,cAAM,KAAK,KAAK,OAAO,MAAM;AAC7B,YAAI,CAAC,GAAI;AAET,YAAI;AACF,gBAAM,GAAG;AAAA,QACX,SAAS,KAAK;AACZ,gBAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAChE,gBAAM,UAAU,IAAI,QAAQ,OAAO,2CAA2C;AAG9E,cAAI,KAAK,cAAc,OAAO,IAAI,GAAG;AACnC,iBAAK,KAAK,SAAS,OAAO;AAAA,UAC5B,OAAO;AACL,wBAAY,QAAQ,MAAM,OAAO;AAAA,UACnC;AAAA,QACF;AAEA,YAAI,KAAK,OAAO,KAAK,KAAK,OAAO,SAAS,GAAG;AAC3C,gBAAM,KAAK,KAAK,IAAI;AAAA,QACtB;AAAA,MACF;AAAA,IACF,UAAE;AACA,WAAK,kBAAkB;AAAA,IACzB;AAAA,EACF;AACF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"serial-queue.js","sourceRoot":"","sources":["../../src/features/serial-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAMrC,MAAM,OAAO,WAAY,SAAQ,YAA+B;IASjC;IARrB,MAAM,CAAU,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhD,MAAM,GAAmC,EAAE,CAAC;IACrD,eAAe,GAAG,KAAK,CAAC;IAEhC;;OAEG;IACH,YAA6B,OAAe,CAAC;QAC3C,KAAK,EAAE,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAY;IAE7C,CAAC;IAED;;OAEG;IACM,OAAO;QACd,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACM,CAAC,MAAM,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,EAA8B;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC/B,IAAI,CAAC,EAAE;oBAAE,MAAM;gBAEf,IAAI,CAAC;oBACH,MAAM,EAAE,EAAE,CAAC;gBACb,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;oBAEtD,8BAA8B;oBAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC9B,CAAC;yBAAM,CAAC;wBACN,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBAED,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC;IACH,CAAC"}
|
package/dist/globals.d.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
|
declare global {
|
package/dist/globals.js
CHANGED
package/dist/globals.js.map
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,47 +1,48 @@
|
|
|
1
|
+
// @simplysm/core-common
|
|
2
|
+
// 공통 유틸리티 패키지
|
|
1
3
|
import "./extensions/arr-ext.js";
|
|
2
4
|
import "./extensions/set-ext.js";
|
|
3
5
|
import "./extensions/map-ext.js";
|
|
4
6
|
export * from "./env.js";
|
|
7
|
+
// arr-extension 재내보내기
|
|
5
8
|
export * from "./extensions/arr-ext.js";
|
|
9
|
+
//#region errors
|
|
6
10
|
export * from "./errors/sd-error.js";
|
|
7
11
|
export * from "./errors/argument-error.js";
|
|
8
12
|
export * from "./errors/not-implemented-error.js";
|
|
9
13
|
export * from "./errors/timeout-error.js";
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region types
|
|
10
16
|
export * from "./types/uuid.js";
|
|
11
17
|
export * from "./types/lazy-gc-map.js";
|
|
12
18
|
export * from "./types/date-time.js";
|
|
13
19
|
export * from "./types/date-only.js";
|
|
14
20
|
export * from "./types/time.js";
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region features
|
|
15
23
|
export * from "./features/debounce-queue.js";
|
|
16
24
|
export * from "./features/serial-queue.js";
|
|
17
25
|
export * from "./features/event-emitter.js";
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region utils (네임스페이스 내보내기)
|
|
28
|
+
export * as obj from "./utils/obj.js";
|
|
29
|
+
export * as str from "./utils/str.js";
|
|
30
|
+
export * as num from "./utils/num.js";
|
|
31
|
+
export * as bytes from "./utils/bytes.js";
|
|
32
|
+
export * as path from "./utils/path.js";
|
|
33
|
+
export * as json from "./utils/json.js";
|
|
34
|
+
export * as xml from "./utils/xml.js";
|
|
35
|
+
export * as wait from "./utils/wait.js";
|
|
36
|
+
export * as transfer from "./utils/transferable.js";
|
|
37
|
+
export * as err from "./utils/error.js";
|
|
38
|
+
export * as dt from "./utils/date-format.js";
|
|
39
|
+
export * as primitive from "./utils/primitive.js";
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region utils (직접 내보내기)
|
|
30
42
|
export * from "./utils/template-strings.js";
|
|
31
43
|
export * from "./utils/zip.js";
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region 타입 유틸리티
|
|
32
46
|
export * from "./common.types.js";
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
dt,
|
|
36
|
-
err,
|
|
37
|
-
json,
|
|
38
|
-
num,
|
|
39
|
-
obj,
|
|
40
|
-
path,
|
|
41
|
-
primitive,
|
|
42
|
-
str,
|
|
43
|
-
transfer,
|
|
44
|
-
wait,
|
|
45
|
-
xml
|
|
46
|
-
};
|
|
47
|
-
//# sourceMappingURL=index.js.map
|
|
47
|
+
//#endregion
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts"],
|
|
4
|
-
"mappings": "AAGA,OAAO;AACP,OAAO;AACP,OAAO;AAEP,cAAc;AAGd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAId,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAId,cAAc;AACd,cAAc;AACd,cAAc;AAId,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,SAAS;AACrB,YAAY,UAAU;AACtB,YAAY,cAAc;AAC1B,YAAY,SAAS;AACrB,YAAY,QAAQ;AACpB,YAAY,eAAe;AAI3B,cAAc;AACd,cAAc;AAId,cAAc;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,cAAc;AAEd,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAE9B,cAAc,OAAO,CAAC;AAEtB,sBAAsB;AACtB,cAAc,sBAAsB,CAAC;AAErC,gBAAgB;AAChB,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,YAAY;AAEZ,eAAe;AACf,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,YAAY;AAEZ,kBAAkB;AAClB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,YAAY;AAEZ,6BAA6B;AAC7B,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,YAAY;AAEZ,yBAAyB;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,YAAY;AAEZ,iBAAiB;AACjB,cAAc,gBAAgB,CAAC;AAC/B,YAAY"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 날짜 클래스 (시간 제외: yyyy-MM-dd, 불변)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* 시간 정보 없이 날짜만 저장하는 불변 클래스.
|
|
5
|
+
* 로컬 타임존 기준으로 동작함.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* const today = new DateOnly();
|
|
@@ -12,38 +12,38 @@
|
|
|
12
12
|
export declare class DateOnly {
|
|
13
13
|
private static readonly MS_PER_DAY;
|
|
14
14
|
readonly date: Date;
|
|
15
|
-
/**
|
|
15
|
+
/** 현재 시간 */
|
|
16
16
|
constructor();
|
|
17
|
-
/**
|
|
17
|
+
/** 년, 월, 일로 초기화 */
|
|
18
18
|
constructor(year: number, month: number, day: number);
|
|
19
|
-
/**
|
|
19
|
+
/** tick (밀리초)으로 생성 */
|
|
20
20
|
constructor(tick: number);
|
|
21
|
-
/**
|
|
21
|
+
/** Date 타입으로 생성 */
|
|
22
22
|
constructor(date: Date);
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
25
|
-
* @param str
|
|
26
|
-
* @returns DateOnly
|
|
24
|
+
* 문자열을 DateOnly로 파싱
|
|
25
|
+
* @param str 날짜 문자열
|
|
26
|
+
* @returns DateOnly 인스턴스
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
* - `yyyy-MM-dd` (
|
|
30
|
-
* - `yyyyMMdd` (
|
|
31
|
-
* - ISO 8601 (
|
|
28
|
+
* 지원 형식:
|
|
29
|
+
* - `yyyy-MM-dd` (예: '2024-01-15') - 문자열에서 직접 추출, 타임존 무관
|
|
30
|
+
* - `yyyyMMdd` (예: '20240115') - 문자열에서 직접 추출, 타임존 무관
|
|
31
|
+
* - ISO 8601 (예: '2024-01-15T00:00:00Z') - UTC로 해석 후 로컬 타임존으로 변환
|
|
32
32
|
*
|
|
33
|
-
* @note
|
|
34
|
-
* @note
|
|
33
|
+
* @note 서버/클라이언트 타임존이 다른 경우 `yyyy-MM-dd` 형식 권장
|
|
34
|
+
* @note DST 지역에서 ISO 8601 형식 파싱 시 파싱 대상 날짜의 오프셋이 사용됨.
|
|
35
35
|
*/
|
|
36
36
|
static parse(str: string): DateOnly;
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
39
|
-
* @param weekStartDay
|
|
40
|
-
* @param minDaysInFirstWeek
|
|
41
|
-
* @returns
|
|
38
|
+
* 주차 정보 기반으로 기준 연도와 월 반환
|
|
39
|
+
* @param weekStartDay 주 시작 요일 (0=일요일, 1=월요일, ..., 6=토요일). 기본값: 1(월요일)
|
|
40
|
+
* @param minDaysInFirstWeek 첫 번째 주로 간주되기 위한 최소 일수 (1~7). 기본값: 4 (ISO 8601 표준)
|
|
41
|
+
* @returns 이 날짜가 포함된 주의 기준 연도와 월
|
|
42
42
|
*
|
|
43
43
|
* @example
|
|
44
|
-
* // ISO 8601
|
|
44
|
+
* // ISO 8601 표준 (월요일 시작, 첫 주 최소 4일)
|
|
45
45
|
* new DateOnly(2024, 1, 1).getBaseYearMonthSeqForWeekSeq(1, 4)
|
|
46
|
-
* //
|
|
46
|
+
* // 미국식 (일요일 시작, 첫 주 최소 1일)
|
|
47
47
|
* new DateOnly(2024, 1, 1).getBaseYearMonthSeqForWeekSeq(0, 1)
|
|
48
48
|
*/
|
|
49
49
|
getBaseYearMonthSeqForWeekSeq(weekStartDay?: number, minDaysInFirstWeek?: number): {
|
|
@@ -51,23 +51,23 @@ export declare class DateOnly {
|
|
|
51
51
|
monthSeq: number;
|
|
52
52
|
};
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
55
|
-
* @param weekStartDay
|
|
56
|
-
* @param minDaysInFirstWeek
|
|
57
|
-
* @returns
|
|
54
|
+
* 주차 정보 기반으로 해당 주의 시작 날짜 계산
|
|
55
|
+
* @param weekStartDay 주 시작 요일 (0=일요일, 1=월요일, ..., 6=토요일). 기본값: 1(월요일)
|
|
56
|
+
* @param minDaysInFirstWeek 첫 번째 주로 간주되기 위한 최소 일수 (1~7). 기본값: 4 (ISO 8601 표준)
|
|
57
|
+
* @returns 이 날짜가 포함된 주의 시작 날짜
|
|
58
58
|
*/
|
|
59
59
|
getWeekSeqStartDate(weekStartDay?: number, minDaysInFirstWeek?: number): DateOnly;
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
62
|
-
* @param weekStartDay
|
|
63
|
-
* @param minDaysInFirstWeek
|
|
64
|
-
* @returns
|
|
61
|
+
* 연도와 주차 정보 반환
|
|
62
|
+
* @param weekStartDay 주 시작 요일 (0=일요일, 1=월요일, ..., 6=토요일). 기본값: 1(월요일)
|
|
63
|
+
* @param minDaysInFirstWeek 첫 번째 주로 간주되기 위한 최소 일수 (1~7). 기본값: 4 (ISO 8601 표준)
|
|
64
|
+
* @returns 해당 연도와 그 연도 내의 주차 번호
|
|
65
65
|
*
|
|
66
66
|
* @example
|
|
67
|
-
* // ISO 8601
|
|
67
|
+
* // ISO 8601 표준 (월요일 시작, 첫 주 최소 4일)
|
|
68
68
|
* new DateOnly(2025, 1, 6).getWeekSeqOfYear(); // { year: 2025, weekSeq: 2 }
|
|
69
69
|
*
|
|
70
|
-
* //
|
|
70
|
+
* // 미국식 (일요일 시작, 첫 주 최소 1일)
|
|
71
71
|
* new DateOnly(2025, 1, 1).getWeekSeqOfYear(0, 1); // { year: 2025, weekSeq: 1 }
|
|
72
72
|
*/
|
|
73
73
|
getWeekSeqOfYear(weekStartDay?: number, minDaysInFirstWeek?: number): {
|
|
@@ -75,16 +75,16 @@ export declare class DateOnly {
|
|
|
75
75
|
weekSeq: number;
|
|
76
76
|
};
|
|
77
77
|
/**
|
|
78
|
-
*
|
|
79
|
-
* @param weekStartDay
|
|
80
|
-
* @param minDaysInFirstWeek
|
|
81
|
-
* @returns
|
|
78
|
+
* 해당 날짜의 연도, 월, 주차 정보 반환
|
|
79
|
+
* @param weekStartDay 주 시작 요일 (0=일요일, 1=월요일, ..., 6=토요일). 기본값: 1(월요일)
|
|
80
|
+
* @param minDaysInFirstWeek 첫 번째 주로 간주되기 위한 최소 일수 (1~7). 기본값: 4 (ISO 8601 표준)
|
|
81
|
+
* @returns 연도, 월, 해당 월 내의 주차 번호
|
|
82
82
|
*
|
|
83
83
|
* @example
|
|
84
|
-
* // ISO 8601
|
|
84
|
+
* // ISO 8601 표준 (월요일 시작, 첫 주 최소 4일)
|
|
85
85
|
* new DateOnly(2025, 1, 15).getWeekSeqOfMonth(); // { year: 2025, monthSeq: 1, weekSeq: 3 }
|
|
86
86
|
*
|
|
87
|
-
* //
|
|
87
|
+
* // 미국식 (일요일 시작, 첫 주 최소 1일)
|
|
88
88
|
* new DateOnly(2025, 1, 15).getWeekSeqOfMonth(0, 1); // { year: 2025, monthSeq: 1, weekSeq: 3 }
|
|
89
89
|
*/
|
|
90
90
|
getWeekSeqOfMonth(weekStartDay?: number, minDaysInFirstWeek?: number): {
|
|
@@ -93,58 +93,58 @@ export declare class DateOnly {
|
|
|
93
93
|
weekSeq: number;
|
|
94
94
|
};
|
|
95
95
|
/**
|
|
96
|
-
*
|
|
97
|
-
* @param arg
|
|
98
|
-
* @param weekStartDay
|
|
99
|
-
* @param minDaysInFirstWeek
|
|
100
|
-
* @returns
|
|
96
|
+
* 주차 정보 기반으로 해당 주의 시작 날짜 반환
|
|
97
|
+
* @param arg 연도, 선택적 월, 주차 번호
|
|
98
|
+
* @param weekStartDay 주 시작 요일 (0=일요일, 1=월요일, ..., 6=토요일). 기본값: 1(월요일)
|
|
99
|
+
* @param minDaysInFirstWeek 첫 번째 주로 간주되기 위한 최소 일수 (1~7). 기본값: 4 (ISO 8601 표준)
|
|
100
|
+
* @returns 지정된 주의 시작 날짜
|
|
101
101
|
*
|
|
102
102
|
* @example
|
|
103
|
-
* //
|
|
104
|
-
* DateOnly.getDateByYearWeekSeq({ year: 2025, weekSeq: 2 }); // 2025-01-06 (
|
|
103
|
+
* // 2025년 2주차 시작 날짜 (ISO 8601 표준)
|
|
104
|
+
* DateOnly.getDateByYearWeekSeq({ year: 2025, weekSeq: 2 }); // 2025-01-06 (월요일)
|
|
105
105
|
*
|
|
106
|
-
* //
|
|
107
|
-
* DateOnly.getDateByYearWeekSeq({ year: 2025, month: 1, weekSeq: 3 }); // 2025-01-13 (
|
|
106
|
+
* // 2025년 1월 3주차 시작 날짜
|
|
107
|
+
* DateOnly.getDateByYearWeekSeq({ year: 2025, month: 1, weekSeq: 3 }); // 2025-01-13 (월요일)
|
|
108
108
|
*/
|
|
109
109
|
static getDateByYearWeekSeq(arg: {
|
|
110
110
|
year: number;
|
|
111
111
|
month?: number;
|
|
112
112
|
weekSeq: number;
|
|
113
113
|
}, weekStartDay?: number, minDaysInFirstWeek?: number): DateOnly;
|
|
114
|
-
/**
|
|
114
|
+
/** 날짜가 올바르게 설정되었는지 여부 */
|
|
115
115
|
get isValid(): boolean;
|
|
116
116
|
get year(): number;
|
|
117
117
|
get month(): number;
|
|
118
118
|
get day(): number;
|
|
119
119
|
get tick(): number;
|
|
120
|
-
/**
|
|
120
|
+
/** 요일 (일요일~토요일: 0~6) */
|
|
121
121
|
get dayOfWeek(): number;
|
|
122
|
-
/**
|
|
122
|
+
/** 지정된 연도로 새 인스턴스 반환 */
|
|
123
123
|
setYear(year: number): DateOnly;
|
|
124
124
|
/**
|
|
125
|
-
*
|
|
126
|
-
* @param month
|
|
127
|
-
* @note
|
|
128
|
-
* (
|
|
125
|
+
* 지정된 월로 새 DateOnly 인스턴스 반환
|
|
126
|
+
* @param month 설정할 월 (1-12, 범위 밖의 값은 연도에서 조정됨)
|
|
127
|
+
* @note 현재 일이 대상 월의 일수보다 크면 해당 월의 마지막 일로 조정됨
|
|
128
|
+
* (예: 1월 31일에서 setMonth(2) → 2월 28일 또는 29일)
|
|
129
129
|
*/
|
|
130
130
|
setMonth(month: number): DateOnly;
|
|
131
131
|
/**
|
|
132
|
-
*
|
|
133
|
-
* @param day
|
|
134
|
-
* @note
|
|
135
|
-
* (
|
|
132
|
+
* 지정된 일로 새 DateOnly 인스턴스 반환
|
|
133
|
+
* @param day 설정할 일
|
|
134
|
+
* @note 유효한 월 범위를 벗어나는 일은 JavaScript Date 동작에 따라 자동으로 다음/이전 월로 조정됨
|
|
135
|
+
* (예: 1월에 day=32 → 2월 1일)
|
|
136
136
|
*/
|
|
137
137
|
setDay(day: number): DateOnly;
|
|
138
|
-
/**
|
|
138
|
+
/** 지정된 연수를 더한 새 인스턴스 반환 */
|
|
139
139
|
addYears(years: number): DateOnly;
|
|
140
|
-
/**
|
|
140
|
+
/** 지정된 월수를 더한 새 인스턴스 반환 */
|
|
141
141
|
addMonths(months: number): DateOnly;
|
|
142
|
-
/**
|
|
142
|
+
/** 지정된 일수를 더한 새 인스턴스 반환 */
|
|
143
143
|
addDays(days: number): DateOnly;
|
|
144
144
|
/**
|
|
145
|
-
*
|
|
146
|
-
* @param format
|
|
147
|
-
* @see dtFormat
|
|
145
|
+
* 지정된 형식으로 문자열 변환
|
|
146
|
+
* @param format 형식 문자열
|
|
147
|
+
* @see dtFormat 지원되는 형식 문자열 참조
|
|
148
148
|
*/
|
|
149
149
|
toFormatString(formatStr: string): string;
|
|
150
150
|
toString(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-only.d.ts","sourceRoot":"","sources":["../../src/types/date-only.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAEzD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,
|
|
1
|
+
{"version":3,"file":"date-only.d.ts","sourceRoot":"","sources":["../../src/types/date-only.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAEzD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,YAAY;;IAEZ,mBAAmB;gBACP,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IACpD,sBAAsB;gBACV,IAAI,EAAE,MAAM;IACxB,mBAAmB;gBACP,IAAI,EAAE,IAAI;IAiBtB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAwCnC;;;;;;;;;;;OAWG;IACH,6BAA6B,CAAC,YAAY,GAAE,MAAU,EAAE,kBAAkB,GAAE,MAAU;;;;IA2BtF;;;;;OAKG;IACH,mBAAmB,CAAC,YAAY,GAAE,MAAU,EAAE,kBAAkB,GAAE,MAAU;IAW5E;;;;;;;;;;;;OAYG;IACH,gBAAgB,CACd,YAAY,GAAE,MAAU,EACxB,kBAAkB,GAAE,MAAU,GAC7B;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAepC;;;;;;;;;;;;OAYG;IACH,iBAAiB,CACf,YAAY,GAAE,MAAU,EACxB,kBAAkB,GAAE,MAAU,GAC7B;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAgBtD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,oBAAoB,CACzB,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EACtD,YAAY,GAAE,MAAU,EACxB,kBAAkB,GAAE,MAAU;IAYhC,yBAAyB;IACzB,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,wBAAwB;IACxB,IAAI,SAAS,IAAI,MAAM,CAEtB;IAMD,wBAAwB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAK/B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKjC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAQ7B,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIjC,2BAA2B;IAC3B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAInC,2BAA2B;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAQ/B;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAQzC,QAAQ,IAAI,MAAM;CAKnB"}
|