@simplysm/core-common 13.0.0-beta.7 → 13.0.2
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 +191 -815
- package/dist/common.types.js +4 -4
- package/dist/common.types.js.map +0 -1
- package/dist/env.js +2 -2
- package/dist/env.js.map +1 -2
- package/dist/errors/argument-error.js +1 -1
- package/dist/errors/argument-error.js.map +0 -1
- package/dist/errors/not-implemented-error.js +1 -1
- package/dist/errors/not-implemented-error.js.map +0 -1
- package/dist/errors/sd-error.js.map +0 -1
- package/dist/errors/timeout-error.js +1 -1
- package/dist/errors/timeout-error.js.map +0 -1
- package/dist/extensions/arr-ext.helpers.js +4 -4
- package/dist/extensions/arr-ext.helpers.js.map +0 -1
- package/dist/extensions/arr-ext.js +9 -9
- package/dist/extensions/arr-ext.js.map +0 -1
- package/dist/extensions/arr-ext.types.js.map +0 -1
- package/dist/extensions/map-ext.js.map +0 -1
- package/dist/extensions/set-ext.js.map +0 -1
- package/dist/features/debounce-queue.d.ts.map +1 -1
- package/dist/features/debounce-queue.js +4 -4
- package/dist/features/debounce-queue.js.map +1 -2
- package/dist/features/event-emitter.js.map +0 -1
- package/dist/features/serial-queue.d.ts.map +1 -1
- package/dist/features/serial-queue.js +5 -5
- package/dist/features/serial-queue.js.map +1 -2
- package/dist/globals.js.map +0 -1
- package/dist/index.js +30 -30
- package/dist/index.js.map +0 -1
- package/dist/types/date-only.js +2 -2
- package/dist/types/date-only.js.map +0 -1
- package/dist/types/date-time.js +2 -2
- package/dist/types/date-time.js.map +0 -1
- package/dist/types/lazy-gc-map.d.ts.map +1 -1
- package/dist/types/lazy-gc-map.js +2 -2
- package/dist/types/lazy-gc-map.js.map +1 -2
- package/dist/types/time.js +2 -2
- package/dist/types/time.js.map +0 -1
- package/dist/types/uuid.js +1 -1
- package/dist/types/uuid.js.map +0 -1
- package/dist/utils/bytes.js +1 -1
- package/dist/utils/bytes.js.map +0 -1
- package/dist/utils/date-format.js.map +0 -1
- package/dist/utils/json.js +8 -8
- package/dist/utils/json.js.map +0 -1
- package/dist/utils/num.js.map +0 -1
- package/dist/utils/obj.js +5 -5
- package/dist/utils/obj.js.map +0 -1
- package/dist/utils/path.js.map +0 -1
- package/dist/utils/primitive.js +5 -5
- package/dist/utils/primitive.js.map +0 -1
- package/dist/utils/str.js.map +0 -1
- package/dist/utils/template-strings.js.map +0 -1
- package/dist/utils/transferable.js +4 -4
- package/dist/utils/transferable.js.map +0 -1
- package/dist/utils/wait.js +1 -1
- package/dist/utils/wait.js.map +0 -1
- package/dist/utils/xml.js.map +0 -1
- package/dist/zip/sd-zip.js.map +0 -1
- package/docs/extensions.md +381 -0
- package/docs/features.md +94 -0
- package/docs/types.md +338 -0
- package/docs/utils.md +631 -0
- package/package.json +5 -3
- package/src/common.types.ts +91 -0
- package/src/env.ts +11 -0
- package/src/errors/argument-error.ts +40 -0
- package/src/errors/not-implemented-error.ts +32 -0
- package/src/errors/sd-error.ts +53 -0
- package/src/errors/timeout-error.ts +36 -0
- package/src/extensions/arr-ext.helpers.ts +53 -0
- package/src/extensions/arr-ext.ts +777 -0
- package/src/extensions/arr-ext.types.ts +258 -0
- package/src/extensions/map-ext.ts +86 -0
- package/src/extensions/set-ext.ts +68 -0
- package/src/features/debounce-queue.ts +116 -0
- package/src/features/event-emitter.ts +112 -0
- package/src/features/serial-queue.ts +94 -0
- package/src/globals.ts +12 -0
- package/src/index.ts +55 -0
- package/src/types/date-only.ts +329 -0
- package/src/types/date-time.ts +294 -0
- package/src/types/lazy-gc-map.ts +244 -0
- package/src/types/time.ts +210 -0
- package/src/types/uuid.ts +113 -0
- package/src/utils/bytes.ts +160 -0
- package/src/utils/date-format.ts +239 -0
- package/src/utils/json.ts +230 -0
- package/src/utils/num.ts +97 -0
- package/src/utils/obj.ts +956 -0
- package/src/utils/path.ts +40 -0
- package/src/utils/primitive.ts +33 -0
- package/src/utils/str.ts +252 -0
- package/src/utils/template-strings.ts +132 -0
- package/src/utils/transferable.ts +269 -0
- package/src/utils/wait.ts +40 -0
- package/src/utils/xml.ts +105 -0
- package/src/zip/sd-zip.ts +218 -0
package/dist/common.types.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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";
|
|
1
|
+
import { DateTime } from "./types/date-time.js";
|
|
2
|
+
import { DateOnly } from "./types/date-only.js";
|
|
3
|
+
import { Time } from "./types/time.js";
|
|
4
|
+
import { Uuid } from "./types/uuid.js";
|
|
5
5
|
//# sourceMappingURL=common.types.js.map
|
package/dist/common.types.js.map
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/common.types.ts"],
|
|
4
|
-
"sourcesContent": ["import { DateTime } from \"./types/date-time\";\nimport { DateOnly } from \"./types/date-only\";\nimport { Time } from \"./types/time\";\nimport { Uuid } from \"./types/uuid\";\n\n//#region Bytes \uD0C0\uC785\n\n/**\n * Buffer \uB300\uC2E0 \uC0AC\uC6A9\uD558\uB294 \uBC14\uC774\uB108\uB9AC \uD0C0\uC785\n */\nexport type Bytes = Uint8Array;\n\n//#endregion\n\n//#region Primitive \uD0C0\uC785\n\n/**\n * Primitive \uD0C0\uC785 \uB9E4\uD551\n * orm-common\uACFC \uACF5\uC720\n */\nexport type PrimitiveTypeMap = {\n string: string;\n number: number;\n boolean: boolean;\n DateTime: DateTime;\n DateOnly: DateOnly;\n Time: Time;\n Uuid: Uuid;\n Bytes: Bytes;\n};\n\n/**\n * Primitive \uD0C0\uC785 \uBB38\uC790\uC5F4 \uD0A4\n */\nexport type PrimitiveTypeStr = keyof PrimitiveTypeMap;\n\n/**\n * Primitive \uD0C0\uC785 \uC720\uB2C8\uC628\n */\nexport type PrimitiveType = PrimitiveTypeMap[PrimitiveTypeStr] | undefined;\n\n//#endregion\n\n//#region \uC720\uD2F8\uB9AC\uD2F0 \uD0C0\uC785\n\n/**\n * \uAE4A\uC740 Partial \uD0C0\uC785\n *\n * \uAC1D\uCCB4\uC758 \uBAA8\uB4E0 \uC18D\uC131\uC744 \uC7AC\uADC0\uC801\uC73C\uB85C \uC120\uD0DD\uC801(optional)\uC73C\uB85C \uB9CC\uB4ED\uB2C8\uB2E4.\n * Primitive \uD0C0\uC785(string, number, boolean \uB4F1)\uC740 \uADF8\uB300\uB85C \uC720\uC9C0\uD558\uACE0,\n * \uAC1D\uCCB4/\uBC30\uC5F4 \uD0C0\uC785\uB9CC \uC7AC\uADC0\uC801\uC73C\uB85C Partial\uC744 \uC801\uC6A9\uD569\uB2C8\uB2E4.\n *\n * @example\n * ```typescript\n * interface User {\n * name: string;\n * profile: {\n * age: number;\n * address: { city: string };\n * };\n * }\n *\n * // \uBAA8\uB4E0 \uAE4A\uC774\uC758 \uC18D\uC131\uC774 \uC120\uD0DD\uC801\uC774 \uB428\n * const partial: DeepPartial<User> = {\n * profile: { address: {} }\n * };\n * ```\n */\nexport type DeepPartial<T> = Partial<{\n [K in keyof T]: T[K] extends PrimitiveType ? T[K] : DeepPartial<T[K]>;\n}>;\n\n/**\n * \uC0DD\uC131\uC790 \uD0C0\uC785\n *\n * \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\uB97C \uD0C0\uC785\uC73C\uB85C \uD45C\uD604\uD560 \uB54C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n * \uC8FC\uB85C \uC758\uC874\uC131 \uC8FC\uC785, \uD329\uD1A0\uB9AC \uD328\uD134, instanceof \uCCB4\uD06C \uB4F1\uC5D0\uC11C \uD65C\uC6A9\uB429\uB2C8\uB2E4.\n *\n * @example\n * function create<T>(ctor: Type<T>): T {\n * return new ctor();\n * }\n *\n * class MyClass { name = \"test\"; }\n * const instance = create(MyClass); // MyClass \uC778\uC2A4\uD134\uC2A4\n */\nexport interface Type<T> extends Function {\n new (...args: unknown[]): T;\n}\n\n//#endregion\n"],
|
|
5
4
|
"mappings": "AAAA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,SAAS,YAAY;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
package/dist/env.js
CHANGED
package/dist/env.js.map
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/env.ts"],
|
|
4
|
-
"
|
|
5
|
-
"mappings": "AAEO,MAAM,MAIT;AAAA,EACF,KAAK,KAAK,MAAM,QAAQ,IAAI,OAAO,QAAQ,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,MAAM,OAAO;AAAA,EAC7F,KAAK,QAAQ,IAAI;AAAA,EACjB,GAAG,QAAQ;AACb;",
|
|
4
|
+
"mappings": "AAEO,MAAM,MAIT;AAAA,EACF,GAAG,QAAQ;AAAA,EACX,KAAK,KAAK,MAAM,QAAQ,IAAI,OAAO,QAAQ,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,MAAM,OAAO;AAAA,EAC7F,KAAK,QAAQ,IAAI;AACnB;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/errors/argument-error.ts"],
|
|
4
|
-
"sourcesContent": ["// yaml \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uC0AC\uC6A9\uD558\uB294 \uC774\uC720:\n// \uC911\uCCA9\uB41C \uAC1D\uCCB4 \uAD6C\uC870\uB97C \uAC00\uB3C5\uC131 \uC88B\uAC8C \uD45C\uD604\uD558\uAE30 \uC704\uD568.\n// JSON.stringify\uBCF4\uB2E4 \uD2B8\uB9AC \uAD6C\uC870\uAC00 \uB354 \uBA85\uD655\uD558\uAC8C \uBCF4\uC784.\nimport YAML from \"yaml\";\nimport { SdError } from \"./sd-error\";\n\n/**\n * \uC778\uC218 \uC624\uB958\n *\n * \uC798\uBABB\uB41C \uC778\uC218\uB97C \uBC1B\uC558\uC744 \uB54C \uBC1C\uC0DD\uC2DC\uD0A4\uB294 \uC5D0\uB7EC\uC774\uB2E4.\n * \uC778\uC218 \uAC1D\uCCB4\uB97C YAML \uD615\uC2DD\uC73C\uB85C \uBA54\uC2DC\uC9C0\uC5D0 \uD3EC\uD568\uD558\uC5EC \uB514\uBC84\uAE45\uC744 \uC6A9\uC774\uD558\uAC8C \uD55C\uB2E4.\n *\n * @example\n * // \uC778\uC218 \uAC1D\uCCB4\uB9CC \uC804\uB2EC\n * throw new ArgumentError({ userId: 123, name: null });\n * // \uACB0\uACFC \uBA54\uC2DC\uC9C0: \"\uC778\uC218\uAC00 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\\n\\nuserId: 123\\nname: null\"\n *\n * @example\n * // \uCEE4\uC2A4\uD140 \uBA54\uC2DC\uC9C0\uC640 \uC778\uC218 \uAC1D\uCCB4 \uC804\uB2EC\n * throw new ArgumentError(\"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uC0AC\uC6A9\uC790\", { userId: 123 });\n * // \uACB0\uACFC \uBA54\uC2DC\uC9C0: \"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uC0AC\uC6A9\uC790\\n\\nuserId: 123\"\n */\nexport class ArgumentError extends SdError {\n /** \uAE30\uBCF8 \uBA54\uC2DC\uC9C0(\"\uC778\uC218\uAC00 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\")\uC640 \uD568\uAED8 \uC778\uC218 \uAC1D\uCCB4\uB97C YAML \uD615\uC2DD\uC73C\uB85C \uCD9C\uB825 */\n constructor(argObj: Record<string, unknown>);\n /** \uCEE4\uC2A4\uD140 \uBA54\uC2DC\uC9C0\uC640 \uD568\uAED8 \uC778\uC218 \uAC1D\uCCB4\uB97C YAML \uD615\uC2DD\uC73C\uB85C \uCD9C\uB825 */\n constructor(message: string, argObj: Record<string, unknown>);\n constructor(arg1: Record<string, unknown> | string, arg2?: Record<string, unknown>);\n constructor(arg1: Record<string, unknown> | string, arg2?: Record<string, unknown>) {\n const message = typeof arg1 === \"string\" ? arg1 : undefined;\n const argObj = typeof arg1 === \"string\" ? arg2 : arg1;\n\n if (argObj != null) {\n super((message ?? \"\uC778\uC218\uAC00 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\") + \"\\n\\n\" + YAML.stringify(argObj));\n } else {\n super(message ?? \"\uC778\uC218\uAC00 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\");\n }\n this.name = \"ArgumentError\";\n }\n}\n"],
|
|
5
4
|
"mappings": "AAGA,OAAO,UAAU;AACjB,SAAS,eAAe;AAkBjB,MAAM,sBAAsB,QAAQ;AAAA,EAMzC,YAAY,MAAwC,MAAgC;AAClF,UAAM,UAAU,OAAO,SAAS,WAAW,OAAO;AAClD,UAAM,SAAS,OAAO,SAAS,WAAW,OAAO;AAEjD,QAAI,UAAU,MAAM;AAClB,aAAO,WAAW,oEAAkB,SAAS,KAAK,UAAU,MAAM,CAAC;AAAA,IACrE,OAAO;AACL,YAAM,WAAW,gEAAc;AAAA,IACjC;AACA,SAAK,OAAO;AAAA,EACd;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/errors/not-implemented-error.ts"],
|
|
4
|
-
"sourcesContent": ["import { SdError } from \"./sd-error\";\n\n/**\n * \uBBF8\uAD6C\uD604 \uC624\uB958\n *\n * \uC544\uC9C1 \uAD6C\uD604\uB418\uC9C0 \uC54A\uC740 \uAE30\uB2A5\uC744 \uD638\uCD9C\uD588\uC744 \uB54C \uBC1C\uC0DD\uC2DC\uD0A4\uB294 \uC5D0\uB7EC\uC774\uB2E4.\n * \uCD94\uC0C1 \uBA54\uC11C\uB4DC \uC2A4\uD141, \uD5A5\uD6C4 \uAD6C\uD604 \uC608\uC815\uC778 \uBD84\uAE30 \uB4F1\uC5D0 \uC0AC\uC6A9\uD55C\uB2E4.\n *\n * @example\n * // \uCD94\uC0C1 \uBA54\uC11C\uB4DC \uAD6C\uD604 \uC804\n * class BaseService {\n * process(): void {\n * throw new NotImplementedError(\"\uC11C\uBE0C\uD074\uB798\uC2A4\uC5D0\uC11C \uAD6C\uD604 \uD544\uC694\");\n * }\n * }\n *\n * @example\n * // \uD5A5\uD6C4 \uAD6C\uD604 \uC608\uC815 \uBD84\uAE30\n * switch (type) {\n * case \"A\": return handleA();\n * case \"B\": throw new NotImplementedError(`\uD0C0\uC785 ${type} \uCC98\uB9AC`);\n * }\n */\nexport class NotImplementedError extends SdError {\n /**\n * @param message \uCD94\uAC00 \uC124\uBA85 \uBA54\uC2DC\uC9C0\n */\n constructor(message?: string) {\n super(\"\uAD6C\uD604\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4\" + (message != null ? \": \" + message : \"\"));\n this.name = \"NotImplementedError\";\n }\n}\n"],
|
|
5
4
|
"mappings": "AAAA,SAAS,eAAe;AAuBjB,MAAM,4BAA4B,QAAQ;AAAA;AAAA;AAAA;AAAA,EAI/C,YAAY,SAAkB;AAC5B,UAAM,oEAAkB,WAAW,OAAO,OAAO,UAAU,GAAG;AAC9D,SAAK,OAAO;AAAA,EACd;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/errors/sd-error.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * \uC624\uB958\uC758 Tree \uAD6C\uC870 \uAD6C\uC131\uC774 \uAC00\uB2A5\uD55C \uC624\uB958 \uD074\uB798\uC2A4\n * ES2024 cause \uC18D\uC131 \uD65C\uC6A9\n *\n * @example\n * // \uC6D0\uC778 \uC5D0\uB7EC\uB97C \uAC10\uC2F8\uC11C \uC0DD\uC131\n * try {\n * await fetch(url);\n * } catch (err) {\n * throw new SdError(err, \"API \uD638\uCD9C \uC2E4\uD328\", \"\uC0AC\uC6A9\uC790 \uB85C\uB4DC \uC2E4\uD328\");\n * }\n * // \uACB0\uACFC \uBA54\uC2DC\uC9C0: \"\uC0AC\uC6A9\uC790 \uB85C\uB4DC \uC2E4\uD328 => API \uD638\uCD9C \uC2E4\uD328 => \uC6D0\uBCF8 \uC5D0\uB7EC \uBA54\uC2DC\uC9C0\"\n *\n * @example\n * // \uBA54\uC2DC\uC9C0\uB9CC\uC73C\uB85C \uC0DD\uC131\n * throw new SdError(\"\uC798\uBABB\uB41C \uC0C1\uD0DC\", \"\uCC98\uB9AC \uBD88\uAC00\");\n * // \uACB0\uACFC \uBA54\uC2DC\uC9C0: \"\uCC98\uB9AC \uBD88\uAC00 => \uC798\uBABB\uB41C \uC0C1\uD0DC\"\n */\nexport class SdError extends Error {\n override cause?: Error;\n\n /** \uC6D0\uC778 \uC5D0\uB7EC\uB97C \uAC10\uC2F8\uC11C \uC0DD\uC131. \uBA54\uC2DC\uC9C0\uB294 \uC5ED\uC21C\uC73C\uB85C \uC5F0\uACB0\uB428 (\uC0C1\uC704 \uBA54\uC2DC\uC9C0 => \uD558\uC704 \uBA54\uC2DC\uC9C0 => \uC6D0\uC778 \uBA54\uC2DC\uC9C0) */\n constructor(cause: Error, ...messages: string[]);\n /** \uBA54\uC2DC\uC9C0\uB9CC\uC73C\uB85C \uC0DD\uC131. \uBA54\uC2DC\uC9C0\uB294 \uC5ED\uC21C\uC73C\uB85C \uC5F0\uACB0\uB428 (\uC0C1\uC704 \uBA54\uC2DC\uC9C0 => \uD558\uC704 \uBA54\uC2DC\uC9C0) */\n constructor(...messages: string[]);\n constructor(arg1?: unknown, ...messages: string[]);\n constructor(arg1?: unknown, ...messages: string[]) {\n const arg1Message =\n arg1 instanceof Error ? arg1.message : typeof arg1 === \"string\" ? arg1 : arg1 != null ? String(arg1) : undefined;\n\n const fullMessage = [arg1Message, ...messages]\n .filter((m) => m != null)\n .reverse()\n .join(\" => \");\n\n const cause = arg1 instanceof Error ? arg1 : undefined;\n\n super(fullMessage, { cause });\n\n Object.setPrototypeOf(this, new.target.prototype);\n this.name = \"SdError\";\n\n // V8 \uC5D4\uC9C4(Node.js, Chrome)\uC5D0\uC11C\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5\uD55C captureStackTrace\n if (\"captureStackTrace\" in Error) {\n (Error.captureStackTrace as (targetObject: object, constructorOpt?: Function) => void)(this, new.target);\n }\n\n // cause \uCCB4\uC778\uC758 stack\uC744 \uD604\uC7AC stack\uC5D0 \uCD94\uAC00\n if (cause?.stack != null) {\n this.stack += `\\n---- cause stack ----\\n${cause.stack}`;\n }\n }\n}\n"],
|
|
5
4
|
"mappings": "AAkBO,MAAM,gBAAgB,MAAM;AAAA,EACxB;AAAA,EAOT,YAAY,SAAmB,UAAoB;AACjD,UAAM,cACJ,gBAAgB,QAAQ,KAAK,UAAU,OAAO,SAAS,WAAW,OAAO,QAAQ,OAAO,OAAO,IAAI,IAAI;AAEzG,UAAM,cAAc,CAAC,aAAa,GAAG,QAAQ,EAC1C,OAAO,CAAC,MAAM,KAAK,IAAI,EACvB,QAAQ,EACR,KAAK,MAAM;AAEd,UAAM,QAAQ,gBAAgB,QAAQ,OAAO;AAE7C,UAAM,aAAa,EAAE,MAAM,CAAC;AAE5B,WAAO,eAAe,MAAM,WAAW,SAAS;AAChD,SAAK,OAAO;AAGZ,QAAI,uBAAuB,OAAO;AAChC,MAAC,MAAM,kBAAgF,MAAM,UAAU;AAAA,IACzG;AAGA,SAAI,+BAAO,UAAS,MAAM;AACxB,WAAK,SAAS;AAAA;AAAA,EAA4B,MAAM,KAAK;AAAA,IACvD;AAAA,EACF;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/errors/timeout-error.ts"],
|
|
4
|
-
"sourcesContent": ["import { SdError } from \"./sd-error\";\n\n/**\n * \uD0C0\uC784\uC544\uC6C3 \uC624\uB958\n *\n * \uB300\uAE30 \uC2DC\uAC04\uC774 \uCD08\uACFC\uB418\uC5C8\uC744 \uB54C \uBC1C\uC0DD\uD558\uB294 \uC5D0\uB7EC\uC774\uB2E4.\n * Wait.until() \uB4F1\uC758 \uBE44\uB3D9\uAE30 \uB300\uAE30 \uD568\uC218\uC5D0\uC11C \uCD5C\uB300 \uC2DC\uB3C4 \uD69F\uC218\uB97C \uCD08\uACFC\uD558\uBA74 \uC790\uB3D9\uC73C\uB85C \uBC1C\uC0DD\uD55C\uB2E4.\n *\n * @example\n * // Wait.until\uC5D0\uC11C \uC790\uB3D9 \uBC1C\uC0DD\n * try {\n * await Wait.until(() => isReady, 100, 50); // 100ms \uAC04\uACA9, \uCD5C\uB300 50\uD68C\n * } catch (err) {\n * if (err instanceof TimeoutError) {\n * console.log(\"\uC2DC\uAC04 \uCD08\uACFC\");\n * }\n * }\n *\n * @example\n * // \uC9C1\uC811 \uBC1C\uC0DD\n * if (elapsed > maxTime) {\n * throw new TimeoutError(undefined, \"API \uC751\uB2F5 \uB300\uAE30 \uCD08\uACFC\");\n * }\n */\nexport class TimeoutError extends SdError {\n /**\n * @param count \uC2DC\uB3C4 \uD69F\uC218\n * @param message \uCD94\uAC00 \uBA54\uC2DC\uC9C0\n */\n constructor(count?: number, message?: string) {\n super(\n \"\uB300\uAE30 \uC2DC\uAC04\uC774 \uCD08\uACFC\uB418\uC5C8\uC2B5\uB2C8\uB2E4\" + (count != null ? `(${count}\uD68C)` : \"\") + (message != null ? `: ${message}` : \"\"),\n );\n this.name = \"TimeoutError\";\n }\n}\n"],
|
|
5
4
|
"mappings": "AAAA,SAAS,eAAe;AAwBjB,MAAM,qBAAqB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxC,YAAY,OAAgB,SAAkB;AAC5C;AAAA,MACE,gFAAoB,SAAS,OAAO,IAAI,KAAK,YAAO,OAAO,WAAW,OAAO,KAAK,OAAO,KAAK;AAAA,IAChG;AACA,SAAK,OAAO;AAAA,EACd;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DateTime } from "../types/date-time";
|
|
2
|
-
import { DateOnly } from "../types/date-only";
|
|
3
|
-
import { Time } from "../types/time";
|
|
4
|
-
import { ArgumentError } from "../errors/argument-error";
|
|
1
|
+
import { DateTime } from "../types/date-time.js";
|
|
2
|
+
import { DateOnly } from "../types/date-only.js";
|
|
3
|
+
import { Time } from "../types/time.js";
|
|
4
|
+
import { ArgumentError } from "../errors/argument-error.js";
|
|
5
5
|
function toComparable(value) {
|
|
6
6
|
if (value instanceof DateOnly || value instanceof DateTime || value instanceof Time) {
|
|
7
7
|
return value.tick;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extensions/arr-ext.helpers.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Array \uD655\uC7A5 \uD5EC\uD37C \uD568\uC218\n */\n\nimport { DateTime } from \"../types/date-time\";\nimport { DateOnly } from \"../types/date-only\";\nimport { Time } from \"../types/time\";\nimport { ArgumentError } from \"../errors/argument-error\";\nimport type { ComparableType } from \"./arr-ext.types\";\n\n/**\n * DateTime, DateOnly, Time\uC744 \uBE44\uAD50 \uAC00\uB2A5\uD55C primitive \uAC12\uC73C\uB85C \uBCC0\uD658\n */\nexport function toComparable(value: ComparableType): string | number | boolean | undefined {\n if (value instanceof DateOnly || value instanceof DateTime || value instanceof Time) {\n return value.tick;\n }\n return value;\n}\n\n/**\n * \uC815\uB82C\uC744 \uC704\uD55C \uBE44\uAD50 \uD568\uC218\n *\n * @param pp \uBE44\uAD50 \uB300\uC0C1 1\n * @param pn \uBE44\uAD50 \uB300\uC0C1 2\n * @param desc true: \uB0B4\uB9BC\uCC28\uC21C, false: \uC624\uB984\uCC28\uC21C\n * @returns \uC74C\uC218: pp\uAC00 \uC55E, 0: \uAC19\uC74C, \uC591\uC218: pn\uC774 \uC55E\n * @note null/undefined \uAC12\uC740 \uC624\uB984\uCC28\uC21C \uC2DC \uC55E\uC73C\uB85C, \uB0B4\uB9BC\uCC28\uC21C \uC2DC \uB4A4\uB85C \uC815\uB82C\uB428\n */\nexport function compareForOrder(pp: ComparableType, pn: ComparableType, desc: boolean): number {\n const cpp = toComparable(pp);\n const cpn = toComparable(pn);\n\n if (cpn === cpp) return 0;\n if (cpp == null) return desc ? 1 : -1;\n if (cpn == null) return desc ? -1 : 1;\n\n if (typeof cpn === \"string\" && typeof cpp === \"string\") {\n return desc ? cpn.localeCompare(cpp) : cpp.localeCompare(cpn);\n }\n if (typeof cpn === \"number\" && typeof cpp === \"number\") {\n if (desc) {\n return cpp > cpn ? -1 : cpp < cpn ? 1 : 0;\n }\n return cpp < cpn ? -1 : cpp > cpn ? 1 : 0;\n }\n if (typeof cpn === \"boolean\" && typeof cpp === \"boolean\") {\n // true > false: \uC624\uB984\uCC28\uC21C \uC2DC true\uAC00 \uB4A4, \uB0B4\uB9BC\uCC28\uC21C \uC2DC true\uAC00 \uC55E\n return cpn ? (desc ? 1 : -1) : desc ? -1 : 1;\n }\n\n throw new ArgumentError(\"orderBy\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uB294 \uD0C0\uC785\uC785\uB2C8\uB2E4.\", { type1: typeof cpp, type2: typeof cpn });\n}\n"],
|
|
5
4
|
"mappings": "AAIA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAMvB,SAAS,aAAa,OAA8D;AACzF,MAAI,iBAAiB,YAAY,iBAAiB,YAAY,iBAAiB,MAAM;AACnF,WAAO,MAAM;AAAA,EACf;AACA,SAAO;AACT;AAWO,SAAS,gBAAgB,IAAoB,IAAoB,MAAuB;AAC7F,QAAM,MAAM,aAAa,EAAE;AAC3B,QAAM,MAAM,aAAa,EAAE;AAE3B,MAAI,QAAQ,IAAK,QAAO;AACxB,MAAI,OAAO,KAAM,QAAO,OAAO,IAAI;AACnC,MAAI,OAAO,KAAM,QAAO,OAAO,KAAK;AAEpC,MAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AACtD,WAAO,OAAO,IAAI,cAAc,GAAG,IAAI,IAAI,cAAc,GAAG;AAAA,EAC9D;AACA,MAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AACtD,QAAI,MAAM;AACR,aAAO,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI;AAAA,IAC1C;AACA,WAAO,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI;AAAA,EAC1C;AACA,MAAI,OAAO,QAAQ,aAAa,OAAO,QAAQ,WAAW;AAExD,WAAO,MAAO,OAAO,IAAI,KAAM,OAAO,KAAK;AAAA,EAC7C;AAEA,QAAM,IAAI,cAAc,wFAA4B,EAAE,OAAO,OAAO,KAAK,OAAO,OAAO,IAAI,CAAC;AAC9F;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./map-ext";
|
|
2
|
-
import { objClone, objEqual, objMerge } from "../utils/obj";
|
|
3
|
-
import { DateTime } from "../types/date-time";
|
|
4
|
-
import { DateOnly } from "../types/date-only";
|
|
5
|
-
import { Time } from "../types/time";
|
|
6
|
-
import { Uuid } from "../types/uuid";
|
|
7
|
-
import { ArgumentError } from "../errors/argument-error";
|
|
8
|
-
import { SdError } from "../errors/sd-error";
|
|
9
|
-
import { compareForOrder } from "./arr-ext.helpers";
|
|
1
|
+
import "./map-ext.js";
|
|
2
|
+
import { objClone, objEqual, objMerge } from "../utils/obj.js";
|
|
3
|
+
import { DateTime } from "../types/date-time.js";
|
|
4
|
+
import { DateOnly } from "../types/date-only.js";
|
|
5
|
+
import { Time } from "../types/time.js";
|
|
6
|
+
import { Uuid } from "../types/uuid.js";
|
|
7
|
+
import { ArgumentError } from "../errors/argument-error.js";
|
|
8
|
+
import { SdError } from "../errors/sd-error.js";
|
|
9
|
+
import { compareForOrder } from "./arr-ext.helpers.js";
|
|
10
10
|
const arrayReadonlyExtensions = {
|
|
11
11
|
single(predicate) {
|
|
12
12
|
const arr = predicate !== void 0 ? this.filter(predicate) : this;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extensions/arr-ext.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Array \uD655\uC7A5 \uBA54\uC11C\uB4DC\n *\n * @remarks \uAC01 \uBA54\uC11C\uB4DC\uC758 TSDoc\uC740 \uD0C0\uC785 \uC815\uC758 \uD30C\uC77C(arr-ext.types.ts) \uCC38\uC870\n */\n\nimport \"./map-ext\";\nimport { objClone, objEqual, objMerge } from \"../utils/obj\";\nimport type { PrimitiveTypeStr, Type } from \"../common.types\";\nimport { DateTime } from \"../types/date-time\";\nimport { DateOnly } from \"../types/date-only\";\nimport { Time } from \"../types/time\";\nimport { Uuid } from \"../types/uuid\";\nimport { ArgumentError } from \"../errors/argument-error\";\nimport { SdError } from \"../errors/sd-error\";\nimport { compareForOrder } from \"./arr-ext.helpers\";\nimport type {\n ReadonlyArrayExt,\n MutableArrayExt,\n ArrayDiffsResult,\n ArrayDiffs2Result,\n TreeArray,\n} from \"./arr-ext.types\";\n\n//#region \uAD6C\uD604\n\nconst arrayReadonlyExtensions: ReadonlyArrayExt<any> & ThisType<any[]> = {\n single<T>(predicate?: (item: T, index: number) => boolean): T | undefined {\n const arr = predicate !== undefined ? this.filter(predicate) : this;\n if (arr.length > 1) {\n throw new ArgumentError(\"\uBCF5\uC218\uC758 \uACB0\uACFC\uBB3C\uC774 \uC788\uC2B5\uB2C8\uB2E4.\", { count: arr.length });\n }\n return arr[0];\n },\n\n first<T>(predicate?: (item: T, index: number) => boolean): T | undefined {\n return predicate !== undefined ? this.find(predicate) : this[0];\n },\n\n async filterAsync<T>(predicate: (item: T, index: number) => Promise<boolean>): Promise<T[]> {\n const arr: T[] = [];\n for (let i = 0; i < this.length; i++) {\n if (await predicate(this[i], i)) {\n arr.push(this[i]);\n }\n }\n return arr;\n },\n\n last<T>(predicate?: (item: T, index: number) => boolean): T | undefined {\n if (predicate !== undefined) {\n for (let i = this.length - 1; i >= 0; i--) {\n if (predicate(this[i], i)) {\n return this[i];\n }\n }\n\n return undefined;\n } else {\n return this[this.length - 1];\n }\n },\n\n filterExists<T>(): NonNullable<T>[] {\n return this.filter((item) => item != null);\n },\n\n ofType<T, N extends T>(type: PrimitiveTypeStr | Type<N>): N[] {\n // PrimitiveTypeStr\uC778 \uACBD\uC6B0\n if (typeof type === \"string\") {\n return this.filter((item) => {\n switch (type) {\n case \"string\":\n return typeof item === \"string\";\n case \"number\":\n return typeof item === \"number\";\n case \"boolean\":\n return typeof item === \"boolean\";\n case \"DateTime\":\n return item instanceof DateTime;\n case \"DateOnly\":\n return item instanceof DateOnly;\n case \"Time\":\n return item instanceof Time;\n case \"Uuid\":\n return item instanceof Uuid;\n case \"Bytes\":\n return item instanceof Uint8Array;\n default: {\n // exhaustive check: PrimitiveTypeStr\uC5D0 \uC0C8 \uD0C0\uC785 \uCD94\uAC00 \uC2DC \uCEF4\uD30C\uC77C \uC5D0\uB7EC \uBC1C\uC0DD\n const _exhaustive: never = type;\n throw new ArgumentError(`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uD0C0\uC785: ${_exhaustive}`);\n }\n }\n }) as N[];\n }\n\n // Type<N> (\uC0DD\uC131\uC790)\uC778 \uACBD\uC6B0\n return this.filter((item) => item instanceof type || item?.constructor === type) as N[];\n },\n\n async mapAsync<T, R>(selector: (item: T, index: number) => Promise<R>): Promise<R[]> {\n const result: R[] = [];\n for (let i = 0; i < this.length; i++) {\n result.push(await selector(this[i], i));\n }\n return result;\n },\n\n mapMany<T, R>(selector?: (item: T, index: number) => R[]): T | R[] {\n const arr = selector ? this.map(selector) : this;\n return arr.flat().filterExists();\n },\n\n async mapManyAsync<T, R>(selector?: (item: T, index: number) => Promise<R[]>): Promise<T | R[]> {\n const arr = selector !== undefined ? await this.mapAsync(selector) : this;\n return arr.mapMany();\n },\n\n parallelAsync<T, R>(fn: (item: T, index: number) => Promise<R>): Promise<R[]> {\n return Promise.all(this.map(fn));\n },\n\n // \uBC30\uC5F4\uC744 \uD0A4\uBCC4\uB85C \uADF8\uB8F9\uD654\n // \uC131\uB2A5 \uACE0\uB824\uC0AC\uD56D:\n // - primitive \uD0A4 (string, number \uB4F1): O(n) - Map \uAE30\uBC18\n // - \uAC1D\uCCB4 \uD0A4: O(n\u00B2) - objEqual \uBE44\uAD50\n groupBy<T, K, V>(\n keySelector: (item: T, index: number) => K,\n valueSelector?: (item: T, index: number) => V,\n ): {\n key: K;\n values: (V | T)[];\n }[] {\n const result: { key: K; values: (V | T)[] }[] = [];\n\n // primitive \uD0A4 \uCD5C\uC801\uD654\uB97C \uC704\uD55C Map (\uD0A4 \uBB38\uC790\uC5F4 -> result \uC778\uB371\uC2A4)\n const primitiveKeyIndex = new Map<string, number>();\n\n for (let i = 0; i < this.length; i++) {\n const keyObj = keySelector(this[i], i);\n const valueObj = valueSelector !== undefined ? valueSelector(this[i], i) : this[i];\n\n // primitive \uD0A4\uB294 Map\uC73C\uB85C O(n) \uCC98\uB9AC\n if (keyObj == null || typeof keyObj !== \"object\") {\n const keyStr = typeof keyObj + \":\" + String(keyObj);\n const existingIndex = primitiveKeyIndex.get(keyStr);\n if (existingIndex !== undefined) {\n result[existingIndex].values.push(valueObj);\n } else {\n primitiveKeyIndex.set(keyStr, result.length);\n result.push({ key: keyObj, values: [valueObj] });\n }\n continue;\n }\n\n // \uAC1D\uCCB4 \uD0A4\uB294 \uAE30\uC874 \uBC29\uC2DD O(n\u00B2)\n const existsRecord = result.find((item) => objEqual(item.key, keyObj));\n if (existsRecord !== undefined) {\n existsRecord.values.push(valueObj);\n } else {\n result.push({ key: keyObj, values: [valueObj] });\n }\n }\n\n return result;\n },\n\n toMap<T, K, V>(\n keySelector: (item: T, index: number) => K,\n valueSelector?: (item: T, index: number) => V,\n ): Map<K, V | T> {\n const result = new Map<K, V | T>();\n\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n\n const keyObj = keySelector(item, i);\n const valueObj = valueSelector !== undefined ? valueSelector(item, i) : item;\n\n if (result.has(keyObj)) {\n throw new ArgumentError(\"\uD0A4\uAC00 \uC911\uBCF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\", { duplicatedKey: keyObj });\n }\n result.set(keyObj, valueObj);\n }\n\n return result;\n },\n\n async toMapAsync<T, K, V>(\n keySelector: (item: T, index: number) => Promise<K> | K,\n valueSelector?: (item: T, index: number) => Promise<V> | V,\n ): Promise<Map<K, V | T>> {\n const result = new Map<K, V | T>();\n\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n\n const keyObj = await keySelector(item, i);\n const valueObj = valueSelector !== undefined ? await valueSelector(item, i) : item;\n\n if (result.has(keyObj)) {\n throw new ArgumentError(\"\uD0A4\uAC00 \uC911\uBCF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\", { duplicatedKey: keyObj });\n }\n result.set(keyObj, valueObj);\n }\n\n return result;\n },\n\n toArrayMap<T, K, V>(\n keySelector: (item: T, index: number) => K,\n valueSelector?: (item: T, index: number) => V,\n ): Map<K, (V | T)[]> {\n const result = new Map<K, (V | T)[]>();\n\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n\n const keyObj = keySelector(item, i);\n const valueObj = valueSelector !== undefined ? valueSelector(item, i) : item;\n\n const arr = result.getOrCreate(keyObj, []);\n arr.push(valueObj);\n }\n\n return result;\n },\n\n toSetMap<T, K, V>(\n keySelector: (item: T, index: number) => K,\n valueSelector?: (item: T, index: number) => V,\n ): Map<K, Set<V | T>> {\n const result = new Map<K, Set<V | T>>();\n\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n\n const keyObj = keySelector(item, i);\n const valueObj = valueSelector !== undefined ? valueSelector(item, i) : item;\n\n const set = result.getOrCreate(keyObj, new Set<V | T>());\n set.add(valueObj);\n }\n\n return result;\n },\n\n toMapValues<T, K, V>(keySelector: (item: T, index: number) => K, valueSelector: (items: T[]) => V): Map<K, V | T> {\n const itemsMap = new Map<K, T[]>();\n\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n\n const keyObj = keySelector(item, i);\n\n const arr = itemsMap.getOrCreate(keyObj, []);\n arr.push(item);\n }\n\n const result = new Map<K, V | T>();\n\n for (const key of itemsMap.keys()) {\n result.set(key, valueSelector(itemsMap.get(key)!));\n }\n\n return result;\n },\n\n toObject<T, V>(\n keySelector: (item: T, index: number) => string,\n valueSelector?: (item: T, index: number) => V,\n ): Record<string, V | T> {\n const result: Record<string, V | T> = {};\n\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n\n const key = keySelector(item, i);\n const valueObj = valueSelector !== undefined ? valueSelector(item, i) : item;\n\n // undefined \uAC12\uC740 \"\uC5C6\uC74C\"\uC73C\uB85C \uCDE8\uAE09\uD558\uC5EC \uB36E\uC5B4\uC4F0\uAE30 \uD5C8\uC6A9\n if (result[key] !== undefined) {\n throw new ArgumentError(\"\uD0A4\uAC00 \uC911\uBCF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\", { duplicatedKey: key });\n }\n result[key] = valueObj;\n }\n\n return result;\n },\n\n toTree<T, K extends keyof T, P extends keyof T>(key: K, parentKey: P): TreeArray<T>[] {\n // O(n) \uCD5C\uC801\uD654: \uB9F5 \uAE30\uBC18 \uC778\uB371\uC2F1\n const childrenMap = this.toArrayMap((item) => item[parentKey]);\n\n const fn = (items: T[]): TreeArray<T>[] => {\n return items.map((item) => ({\n ...objClone(item),\n children: fn(childrenMap.get(item[key]) ?? []),\n }));\n };\n\n const rootItems = this.filter((item1) => item1[parentKey] == null);\n return fn(rootItems);\n },\n\n distinct<T>(options?: boolean | { matchAddress?: boolean; keyFn?: (item: T) => string | number }): T[] {\n // \uC635\uC158 \uC815\uADDC\uD654\n const opts = typeof options === \"boolean\" ? { matchAddress: options } : (options ?? {});\n\n // matchAddress: Set \uAE30\uBC18 O(n)\n if (opts.matchAddress === true) return [...new Set(this)];\n\n // keyFn \uC81C\uACF5 \uC2DC: \uCEE4\uC2A4\uD140 \uD0A4 \uAE30\uBC18 O(n)\n if (opts.keyFn) {\n const seen = new Set<string | number>();\n const result: T[] = [];\n for (const item of this) {\n const key = opts.keyFn(item);\n if (!seen.has(key)) {\n seen.add(key);\n result.push(item);\n }\n }\n return result;\n }\n\n // \uAE30\uBCF8: \uD0C0\uC785\uBCC4 \uCC98\uB9AC\n const seen = new Map<string, T>();\n const seenRefs = new Set<symbol | ((...args: unknown[]) => unknown)>(); // symbol/function\uC6A9 O(n) \uCC98\uB9AC\n const result: T[] = [];\n\n for (const item of this) {\n // primitive \uD0C0\uC785\uC740 \uBE60\uB978 \uACBD\uB85C\n if (item === null || typeof item !== \"object\") {\n const type = typeof item;\n\n // symbol, function\uC740 Set\uC73C\uB85C identity \uBE44\uAD50 (O(n))\n if (type === \"symbol\" || type === \"function\") {\n if (!seenRefs.has(item)) {\n seenRefs.add(item);\n result.push(item);\n }\n continue;\n }\n\n // \uB098\uBA38\uC9C0 primitive\uB294 \uD0C0\uC785 prefix + \uD2B9\uC218 \uCF00\uC774\uC2A4 \uCC98\uB9AC\n let key = type + \":\";\n if (Object.is(item, -0)) {\n key += \"-0\";\n } else {\n key += String(item);\n }\n\n if (!seen.has(key)) {\n seen.set(key, item);\n result.push(item);\n }\n continue;\n }\n\n if (!result.some((item1) => objEqual(item1, item))) {\n result.push(item);\n }\n }\n\n return result;\n },\n\n orderBy<T>(selector?: (item: T) => string | number | DateTime | DateOnly | Time | undefined): T[] {\n return [...this].sort((p, n) => {\n const pp = selector == null ? p : selector(p);\n const pn = selector == null ? n : selector(n);\n return compareForOrder(pp, pn, false);\n });\n },\n\n orderByDesc<T>(selector?: (item: T) => string | number | DateTime | DateOnly | Time | undefined): T[] {\n return [...this].sort((p, n) => {\n const pp = selector == null ? p : selector(p);\n const pn = selector == null ? n : selector(n);\n return compareForOrder(pp, pn, true);\n });\n },\n\n diffs<T, P>(\n target: P[],\n options?: {\n keys?: string[];\n excludes?: string[];\n },\n ): ArrayDiffsResult<T, P>[] {\n const result: ArrayDiffsResult<T, P>[] = [];\n\n const uncheckedTarget = [...target];\n const uncheckedTargetSet = new Set(uncheckedTarget);\n const hasKeys = options?.keys !== undefined && options.keys.length > 0;\n const excludeOpts = { topLevelExcludes: options?.excludes };\n\n // keys \uC635\uC158\uC774 \uC788\uB294 \uACBD\uC6B0 target\uC744 keys \uAE30\uC900\uC73C\uB85C Map\uC5D0 \uBBF8\uB9AC \uC778\uB371\uC2F1\uD558\uC5EC O(n\u00D7m) \u2192 O(n+m) \uAC1C\uC120\n // \uD0A4 \uAC12\uC774 \uAC19\uC740 target\uC774 \uC5EC\uB7EC \uAC1C \uC788\uC744 \uC218 \uC788\uC73C\uBBC0\uB85C \uBC30\uC5F4\uB85C \uC800\uC7A5\n const keyIndexedTarget = hasKeys ? new Map<string, P[]>() : undefined;\n\n if (keyIndexedTarget) {\n for (const targetItem of uncheckedTarget) {\n const keyStr = JSON.stringify(options!.keys!.map((k) => (targetItem as Record<string, unknown>)[k]));\n const arr = keyIndexedTarget.get(keyStr);\n if (arr) {\n arr.push(targetItem);\n } else {\n keyIndexedTarget.set(keyStr, [targetItem]);\n }\n }\n }\n\n for (const sourceItem of this) {\n // \uC804\uCCB4 \uC77C\uCE58(sameTarget) \uC6B0\uC120, \uC5C6\uC73C\uBA74 \uD0A4 \uC77C\uCE58(sameKeyTarget) \uAC80\uC0C9\n let sameTarget: P | undefined;\n let sameKeyTarget: P | undefined;\n\n // Set \uAE30\uBC18 \uAC74\uB108\uB6F0\uAE30\uB85C \uC774\uBBF8 \uB9E4\uCE6D\uB41C \uD56D\uBAA9 \uC2A4\uD0B5 (splice O(n) \uC81C\uAC70)\n for (const targetItem of uncheckedTarget) {\n if (!uncheckedTargetSet.has(targetItem)) continue;\n if (objEqual(targetItem, sourceItem, excludeOpts)) {\n sameTarget = targetItem;\n break;\n }\n }\n\n // \uC804\uCCB4 \uC77C\uCE58\uAC00 \uC5C6\uACE0 keys \uC635\uC158\uC774 \uC788\uC73C\uBA74 Map\uC5D0\uC11C O(1) \uC870\uD68C\n if (sameTarget === undefined && keyIndexedTarget) {\n const sourceKeyStr = JSON.stringify(options!.keys!.map((k) => (sourceItem as Record<string, unknown>)[k]));\n const candidates = keyIndexedTarget.get(sourceKeyStr);\n if (candidates && candidates.length > 0) {\n // uncheckedTargetSet\uC5D0\uC11C O(1) \uC870\uD68C\uB85C \uC544\uC9C1 \uB0A8\uC544\uC788\uB294 \uCCAB \uBC88\uC9F8 \uD56D\uBAA9 \uC120\uD0DD\n sameKeyTarget = candidates.find((c) => uncheckedTargetSet.has(c));\n }\n }\n\n if (sameTarget !== undefined) {\n uncheckedTargetSet.delete(sameTarget);\n } else if (sameKeyTarget !== undefined) {\n result.push({ source: sourceItem, target: sameKeyTarget });\n uncheckedTargetSet.delete(sameKeyTarget);\n } else {\n result.push({ source: sourceItem, target: undefined });\n }\n }\n\n for (const uncheckedTargetItem of uncheckedTargetSet) {\n result.push({ source: undefined, target: uncheckedTargetItem });\n }\n\n return result;\n },\n\n oneWayDiffs<T extends Record<string, unknown>, K extends keyof T>(\n orgItems: T[] | Map<T[K], T>,\n keyPropNameOrFn: K | ((item: T) => K),\n options?: {\n includeSame?: boolean;\n excludes?: string[];\n includes?: string[];\n },\n ): ArrayDiffs2Result<T>[] {\n const orgItemMap =\n orgItems instanceof Map\n ? orgItems\n : orgItems.toMap((orgItem) =>\n typeof keyPropNameOrFn === \"function\" ? keyPropNameOrFn(orgItem) : orgItem[keyPropNameOrFn],\n );\n const includeSame = options?.includeSame ?? false;\n\n const diffs: ArrayDiffs2Result<T>[] = [];\n for (const item of this) {\n const keyValue = typeof keyPropNameOrFn === \"function\" ? keyPropNameOrFn(item) : item[keyPropNameOrFn];\n if (keyValue == null) {\n diffs.push({ type: \"create\", item, orgItem: undefined });\n continue;\n }\n\n const orgItem = orgItemMap.get(keyValue);\n if (!orgItem) {\n diffs.push({ type: \"create\", item, orgItem: undefined });\n continue;\n }\n\n if (\n objEqual(orgItem, item, {\n topLevelExcludes: options?.excludes,\n topLevelIncludes: options?.includes,\n })\n ) {\n if (includeSame) {\n diffs.push({ type: \"same\", item, orgItem });\n }\n continue;\n }\n\n diffs.push({ type: \"update\", item, orgItem });\n }\n return diffs;\n },\n\n merge<T, P>(\n target: P[],\n options?: {\n keys?: string[];\n excludes?: string[];\n },\n ): (T | P | (T & P))[] {\n const diffs = this.diffs(target, options);\n\n const result: (T | P | (T & P))[] = objClone(this);\n\n // source \uD56D\uBAA9\uC758 \uC6D0\uBCF8 \uC778\uB371\uC2A4\uB97C \uBBF8\uB9AC \uACC4\uC0B0\uD558\uC5EC O(n) \uAC80\uC0C9\uC744 O(1)\uB85C \uAC1C\uC120\n const sourceIndexMap = new Map<T, number>();\n for (let i = 0; i < this.length; i++) {\n sourceIndexMap.set(this[i], i);\n }\n\n for (const diff of diffs) {\n // \uBCC0\uACBD\uC2DC\n if (diff.source !== undefined && diff.target !== undefined) {\n const sourceIndex = sourceIndexMap.get(diff.source);\n if (sourceIndex === undefined) {\n throw new SdError(\"\uC608\uC0C1\uCE58 \uBABB\uD55C \uC624\uB958: merge\uC5D0\uC11C source \uD56D\uBAA9\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\");\n }\n result[sourceIndex] = objMerge(diff.source, diff.target);\n }\n // \uCD94\uAC00\uC2DC\n else if (diff.target !== undefined) {\n result.push(diff.target);\n }\n }\n\n return result;\n },\n\n sum<T>(selector?: (item: T, index: number) => number): number {\n let result = 0;\n for (let i = 0; i < this.length; i++) {\n const item = selector !== undefined ? selector(this[i], i) : this[i];\n if (typeof item !== \"number\") {\n throw new ArgumentError(\"sum \uC740 number \uC5D0 \uB300\uD574\uC11C\uB9CC \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\", { type: typeof item });\n }\n result += item;\n }\n\n return result;\n },\n\n min<T>(selector?: (item: T, index: number) => string | number): string | number | undefined {\n let result: string | number | undefined;\n for (let i = 0; i < this.length; i++) {\n const item = selector !== undefined ? selector(this[i], i) : this[i];\n if (typeof item !== \"number\" && typeof item !== \"string\") {\n throw new ArgumentError(\"min \uC740 number/string \uC5D0 \uB300\uD574\uC11C\uB9CC \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\", { type: typeof item });\n }\n if (result === undefined || result > item) {\n result = item;\n }\n }\n\n return result;\n },\n\n max<T>(selector?: (item: T, index: number) => string | number): string | number | undefined {\n let result: string | number | undefined;\n for (let i = 0; i < this.length; i++) {\n const item = selector !== undefined ? selector(this[i], i) : this[i];\n if (typeof item !== \"number\" && typeof item !== \"string\") {\n throw new ArgumentError(\"max \uC740 number/string \uC5D0 \uB300\uD574\uC11C\uB9CC \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\", { type: typeof item });\n }\n if (result === undefined || result < item) {\n result = item;\n }\n }\n\n return result;\n },\n\n shuffle<T>(): T[] {\n if (this.length <= 1) {\n return [...this];\n }\n\n const result = [...this];\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n return result;\n },\n};\n\nconst arrayMutableExtensions: MutableArrayExt<any> & ThisType<any[]> = {\n distinctThis<T>(options?: boolean | { matchAddress?: boolean; keyFn?: (item: T) => string | number }): T[] {\n // \uC635\uC158 \uC815\uADDC\uD654\n const opts = typeof options === \"boolean\" ? { matchAddress: options } : (options ?? {});\n\n // matchAddress: Set \uAE30\uBC18 O(n)\n // \uCCAB \uBC88\uC9F8 \uB4F1\uC7A5\uD55C \uC694\uC18C\uB97C \uC720\uC9C0\uD558\uAE30 \uC704\uD574 \uC815\uBC29\uD5A5 \uC21C\uD68C \uD6C4 \uC81C\uAC70\uD560 \uC778\uB371\uC2A4 \uC218\uC9D1\n if (opts.matchAddress === true) {\n const seen = new Set<T>();\n const toRemove: number[] = [];\n for (let i = 0; i < this.length; i++) {\n if (seen.has(this[i])) {\n toRemove.push(i);\n } else {\n seen.add(this[i]);\n }\n }\n // \uC5ED\uC21C\uC73C\uB85C \uC81C\uAC70 (\uC778\uB371\uC2A4 \uBCC0\uD654 \uBC29\uC9C0)\n for (let i = toRemove.length - 1; i >= 0; i--) {\n this.splice(toRemove[i], 1);\n }\n return this;\n }\n\n // keyFn \uC81C\uACF5 \uC2DC: \uCEE4\uC2A4\uD140 \uD0A4 \uAE30\uBC18 O(n)\n // \uCCAB \uBC88\uC9F8 \uB4F1\uC7A5\uD55C \uC694\uC18C\uB97C \uC720\uC9C0\uD558\uAE30 \uC704\uD574 \uC815\uBC29\uD5A5 \uC21C\uD68C \uD6C4 \uC81C\uAC70\uD560 \uC778\uB371\uC2A4 \uC218\uC9D1\n if (opts.keyFn) {\n const seen = new Set<string | number>();\n const toRemove: number[] = [];\n for (let i = 0; i < this.length; i++) {\n const key = opts.keyFn(this[i]);\n if (seen.has(key)) {\n toRemove.push(i);\n } else {\n seen.add(key);\n }\n }\n // \uC5ED\uC21C\uC73C\uB85C \uC81C\uAC70 (\uC778\uB371\uC2A4 \uBCC0\uD654 \uBC29\uC9C0)\n for (let i = toRemove.length - 1; i >= 0; i--) {\n this.splice(toRemove[i], 1);\n }\n return this;\n }\n\n // \uAE30\uBCF8: \uD0C0\uC785\uBCC4 \uCC98\uB9AC (primitive \uCD5C\uC801\uD654)\n const seen = new Map<string, T>();\n const seenRefs = new Set<symbol | ((...args: unknown[]) => unknown)>();\n const toRemoveSet = new Set<number>();\n\n for (let i = 0; i < this.length; i++) {\n const item = this[i];\n\n // primitive \uD0C0\uC785\uC740 \uBE60\uB978 \uACBD\uB85C O(n)\n if (item === null || typeof item !== \"object\") {\n const type = typeof item;\n\n // symbol, function\uC740 Set\uC73C\uB85C identity \uBE44\uAD50\n if (type === \"symbol\" || type === \"function\") {\n if (seenRefs.has(item)) {\n toRemoveSet.add(i);\n } else {\n seenRefs.add(item);\n }\n continue;\n }\n\n // \uB098\uBA38\uC9C0 primitive\uB294 \uD0C0\uC785 prefix + \uD2B9\uC218 \uCF00\uC774\uC2A4 \uCC98\uB9AC\n let key = type + \":\";\n if (Object.is(item, -0)) {\n key += \"-0\";\n } else {\n key += String(item);\n }\n\n if (seen.has(key)) {\n toRemoveSet.add(i);\n } else {\n seen.set(key, item);\n }\n continue;\n }\n\n // \uAC1D\uCCB4\uB294 \uAE4A\uC740 \uBE44\uAD50 O(n\u00B2) - \uC81C\uAC70\uB418\uC9C0 \uC54A\uC740 \uC774\uC804 \uD56D\uBAA9\uB4E4\uACFC \uBE44\uAD50\n let hasDuplicateBefore = false;\n for (let j = 0; j < i; j++) {\n // toRemoveSet\uC5D0 \uC788\uB294 \uC778\uB371\uC2A4\uB294 \uAC74\uB108\uB700 (O(1) \uC870\uD68C)\n if (toRemoveSet.has(j)) continue;\n if (objEqual(this[j], item)) {\n hasDuplicateBefore = true;\n break;\n }\n }\n if (hasDuplicateBefore) {\n toRemoveSet.add(i);\n }\n }\n\n // \uC5ED\uC21C\uC73C\uB85C \uC81C\uAC70 (\uC778\uB371\uC2A4 \uBCC0\uD654 \uBC29\uC9C0)\n const toRemoveArr = Array.from(toRemoveSet).sort((a, b) => b - a);\n for (const idx of toRemoveArr) {\n this.splice(idx, 1);\n }\n\n return this;\n },\n\n orderByThis<T>(selector?: (item: T) => string | number | DateTime | DateOnly | Time | undefined): T[] {\n return this.sort((p, n) => {\n const pp = selector?.(p) ?? p;\n const pn = selector?.(n) ?? n;\n return compareForOrder(pp, pn, false);\n });\n },\n\n orderByDescThis<T>(selector?: (item: T) => string | number | DateTime | DateOnly | Time | undefined): T[] {\n return this.sort((p, n) => {\n const pp = selector?.(p) ?? p;\n const pn = selector?.(n) ?? n;\n return compareForOrder(pp, pn, true);\n });\n },\n\n insert<T>(index: number, ...items: T[]): T[] {\n this.splice(index, 0, ...items);\n return this;\n },\n\n remove<T>(itemOrSelector: T | ((item: T, index: number) => boolean)): T[] {\n const shouldRemove =\n typeof itemOrSelector === \"function\"\n ? (itemOrSelector as (item: T, index: number) => boolean)\n : (item: T) => item === itemOrSelector;\n\n // \uC5ED\uBC29\uD5A5 \uC21C\uD68C\uB85C \uC778\uB371\uC2A4 \uBCC0\uACBD \uBB38\uC81C \uBC29\uC9C0 (O(n) \uC131\uB2A5)\n for (let i = this.length - 1; i >= 0; i--) {\n if (shouldRemove(this[i], i)) {\n this.splice(i, 1);\n }\n }\n\n return this;\n },\n\n toggle<T>(this: T[], item: T): T[] {\n if (this.includes(item)) {\n this.remove(item);\n } else {\n this.push(item);\n }\n return this;\n },\n\n clear<T>(this: T[]): T[] {\n return this.remove(() => true);\n },\n};\n\nfor (const [name, fn] of Object.entries({\n ...arrayReadonlyExtensions,\n ...arrayMutableExtensions,\n})) {\n Object.defineProperty(Array.prototype, name, {\n value: fn,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n}\n\n//#endregion\n\n//#region \uD0C0\uC785 \uC120\uC5B8\n\ndeclare global {\n interface ReadonlyArray<T> extends ReadonlyArrayExt<T> {}\n interface Array<T> extends ReadonlyArrayExt<T>, MutableArrayExt<T> {}\n}\n\n//#endregion\n\nexport type { ArrayDiffsResult, ArrayDiffs2Result, TreeArray, ComparableType } from \"./arr-ext.types\";\n"],
|
|
5
4
|
"mappings": "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",
|
|
6
5
|
"names": ["seen", "result"]
|
|
7
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extensions/map-ext.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Map \uD655\uC7A5 \uBA54\uC11C\uB4DC\n */\n\ndeclare global {\n interface Map<K, V> {\n /**\n * \uD0A4\uC5D0 \uD574\uB2F9\uD558\uB294 \uAC12\uC774 \uC5C6\uC73C\uBA74 \uC0C8 \uAC12\uC744 \uC124\uC815\uD558\uACE0 \uBC18\uD658\n *\n * @remarks\n * **\uC8FC\uC758**: V \uD0C0\uC785\uC774 \uD568\uC218\uC778 \uACBD\uC6B0(\uC608: `Map<string, () => void>`),\n * \uB450 \uBC88\uC9F8 \uC778\uC790\uB85C \uD568\uC218\uB97C \uC9C1\uC811 \uC804\uB2EC\uD558\uBA74 \uD329\uD1A0\uB9AC\uB85C \uC778\uC2DD\uB418\uC5B4 \uD638\uCD9C\uB429\uB2C8\uB2E4.\n * \uD568\uC218 \uC790\uCCB4\uB97C \uAC12\uC73C\uB85C \uC800\uC7A5\uD558\uB824\uBA74 \uD329\uD1A0\uB9AC\uB85C \uAC10\uC2F8\uC138\uC694.\n *\n * @example\n * ```typescript\n * // \uC77C\uBC18 \uAC12\n * map.getOrCreate(\"key\", 0);\n * map.getOrCreate(\"key\", []);\n *\n * // \uD329\uD1A0\uB9AC \uD568\uC218 (\uACC4\uC0B0 \uBE44\uC6A9\uC774 \uD070 \uACBD\uC6B0)\n * map.getOrCreate(\"key\", () => expensiveComputation());\n *\n * // \uD568\uC218\uB97C \uAC12\uC73C\uB85C \uC800\uC7A5\uD558\uB294 \uACBD\uC6B0\n * const fnMap = new Map<string, () => void>();\n * const myFn = () => console.log(\"hello\");\n * fnMap.getOrCreate(\"key\", () => myFn); // \uD329\uD1A0\uB9AC\uB85C \uAC10\uC2F8\uAE30\n * ```\n */\n getOrCreate(key: K, newValue: V): V;\n getOrCreate(key: K, newValueFn: () => V): V;\n\n /**\n * \uD0A4\uC5D0 \uD574\uB2F9\uD558\uB294 \uAC12\uC744 \uD568\uC218\uB85C \uC5C5\uB370\uC774\uD2B8\uD55C\uB2E4\n *\n * @param key \uC5C5\uB370\uC774\uD2B8\uD560 \uD0A4\n * @param updateFn \uD604\uC7AC \uAC12\uC744 \uBC1B\uC544 \uC0C8 \uAC12\uC744 \uBC18\uD658\uD558\uB294 \uD568\uC218 (\uD0A4\uAC00 \uC5C6\uC73C\uBA74 undefined \uC804\uB2EC)\n *\n * @remarks\n * \uD0A4\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC544\uB3C4 updateFn\uC774 \uD638\uCD9C\uB418\uC5B4 \uC0C8 \uAC12\uC774 \uC124\uC815\uB41C\uB2E4.\n * \uAE30\uC874 \uAC12 \uAE30\uBC18 \uACC4\uC0B0\uC774 \uD544\uC694\uD55C \uACBD\uC6B0 (\uCE74\uC6B4\uD130 \uC99D\uAC00, \uBC30\uC5F4\uC5D0 \uCD94\uAC00 \uB4F1) \uC720\uC6A9\uD558\uB2E4.\n *\n * @example\n * ```typescript\n * const countMap = new Map<string, number>();\n *\n * // \uCE74\uC6B4\uD130 \uC99D\uAC00\n * countMap.update(\"key\", (v) => (v ?? 0) + 1);\n *\n * // \uBC30\uC5F4\uC5D0 \uD56D\uBAA9 \uCD94\uAC00\n * const arrayMap = new Map<string, string[]>();\n * arrayMap.update(\"key\", (v) => [...(v ?? []), \"item\"]);\n * ```\n */\n update(key: K, updateFn: (v: V | undefined) => V): void;\n }\n}\n\nObject.defineProperty(Map.prototype, \"getOrCreate\", {\n value: function <K, V>(this: Map<K, V>, key: K, newValue: V | (() => V)): V {\n if (!this.has(key)) {\n if (typeof newValue === \"function\") {\n this.set(key, (newValue as () => V)());\n } else {\n this.set(key, newValue);\n }\n }\n return this.get(key)!;\n },\n enumerable: false,\n writable: true,\n configurable: true,\n});\n\nObject.defineProperty(Map.prototype, \"update\", {\n value: function <K, V>(this: Map<K, V>, key: K, updateFn: (v: V | undefined) => V): void {\n const val = this.get(key);\n const res = updateFn(val);\n this.set(key, res);\n },\n enumerable: false,\n writable: true,\n configurable: true,\n});\n\nexport {};\n"],
|
|
5
4
|
"mappings": "AA0DA,OAAO,eAAe,IAAI,WAAW,eAAe;AAAA,EAClD,OAAO,SAAiC,KAAQ,UAA4B;AAC1E,QAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAClB,UAAI,OAAO,aAAa,YAAY;AAClC,aAAK,IAAI,KAAM,SAAqB,CAAC;AAAA,MACvC,OAAO;AACL,aAAK,IAAI,KAAK,QAAQ;AAAA,MACxB;AAAA,IACF;AACA,WAAO,KAAK,IAAI,GAAG;AAAA,EACrB;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,cAAc;AAChB,CAAC;AAED,OAAO,eAAe,IAAI,WAAW,UAAU;AAAA,EAC7C,OAAO,SAAiC,KAAQ,UAAyC;AACvF,UAAM,MAAM,KAAK,IAAI,GAAG;AACxB,UAAM,MAAM,SAAS,GAAG;AACxB,SAAK,IAAI,KAAK,GAAG;AAAA,EACnB;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,cAAc;AAChB,CAAC;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extensions/set-ext.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Set \uD655\uC7A5 \uBA54\uC11C\uB4DC\n */\n\ndeclare global {\n interface Set<T> {\n /**\n * \uC5EC\uB7EC \uAC12\uC744 \uD55C \uBC88\uC5D0 \uCD94\uAC00\n */\n adds(...values: T[]): this;\n\n /**\n * \uAC12\uC744 \uD1A0\uAE00\uD55C\uB2E4 (\uC788\uC73C\uBA74 \uC81C\uAC70, \uC5C6\uC73C\uBA74 \uCD94\uAC00)\n *\n * @param value \uD1A0\uAE00\uD560 \uAC12\n * @param addOrDel \uAC15\uC81C\uB85C \uCD94\uAC00(\"add\") \uB610\uB294 \uC81C\uAC70(\"del\") \uC9C0\uC815 (\uC0DD\uB7B5 \uC2DC \uC790\uB3D9 \uD1A0\uAE00)\n * @returns this (\uBA54\uC11C\uB4DC \uCCB4\uC774\uB2DD \uAC00\uB2A5)\n *\n * @remarks\n * addOrDel \uD30C\uB77C\uBBF8\uD130\uB85C \uC870\uAC74\uBD80 \uCD94\uAC00/\uC81C\uAC70\uB97C \uAC04\uACB0\uD558\uAC8C \uD45C\uD604\uD560 \uC218 \uC788\uB2E4.\n *\n * @example\n * ```typescript\n * const set = new Set<number>([1, 2, 3]);\n *\n * set.toggle(2); // 2\uAC00 \uC788\uC73C\uBBC0\uB85C \uC81C\uAC70 \u2192 {1, 3}\n * set.toggle(4); // 4\uAC00 \uC5C6\uC73C\uBBC0\uB85C \uCD94\uAC00 \u2192 {1, 3, 4}\n *\n * // \uC870\uAC74\uBD80 \uD1A0\uAE00\n * const isAdmin = true;\n * set.toggle(5, isAdmin ? \"add\" : \"del\"); // \uAC15\uC81C \uCD94\uAC00\n * ```\n */\n toggle(value: T, addOrDel?: \"add\" | \"del\"): this;\n }\n}\n\nObject.defineProperty(Set.prototype, \"adds\", {\n value: function <T>(this: Set<T>, ...values: T[]): Set<T> {\n for (const val of values) {\n this.add(val);\n }\n return this;\n },\n enumerable: false,\n writable: true,\n configurable: true,\n});\n\nObject.defineProperty(Set.prototype, \"toggle\", {\n value: function <T>(this: Set<T>, value: T, addOrDel?: \"add\" | \"del\"): Set<T> {\n if (addOrDel === \"add\") {\n this.add(value);\n } else if (addOrDel === \"del\") {\n this.delete(value);\n } else if (this.has(value)) {\n this.delete(value);\n } else {\n this.add(value);\n }\n return this;\n },\n enumerable: false,\n writable: true,\n configurable: true,\n});\n\nexport {};\n"],
|
|
5
4
|
"mappings": "AAqCA,OAAO,eAAe,IAAI,WAAW,QAAQ;AAAA,EAC3C,OAAO,YAA8B,QAAqB;AACxD,eAAW,OAAO,QAAQ;AACxB,WAAK,IAAI,GAAG;AAAA,IACd;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,cAAc;AAChB,CAAC;AAED,OAAO,eAAe,IAAI,WAAW,UAAU;AAAA,EAC7C,OAAO,SAA2B,OAAU,UAAkC;AAC5E,QAAI,aAAa,OAAO;AACtB,WAAK,IAAI,KAAK;AAAA,IAChB,WAAW,aAAa,OAAO;AAC7B,WAAK,OAAO,KAAK;AAAA,IACnB,WAAW,KAAK,IAAI,KAAK,GAAG;AAC1B,WAAK,OAAO,KAAK;AAAA,IACnB,OAAO;AACL,WAAK,IAAI,KAAK;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,cAAc;AAChB,CAAC;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debounce-queue.d.ts","sourceRoot":"","sources":["../../src/features/debounce-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,UAAU,mBAAmB;IAC3B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,aAAc,SAAQ,YAAY,CAAC,mBAAmB,CAAC;IAWtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAVpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"debounce-queue.d.ts","sourceRoot":"","sources":["../../src/features/debounce-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,UAAU,mBAAmB;IAC3B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,aAAc,SAAQ,YAAY,CAAC,mBAAmB,CAAC;IAWtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAVpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAEnE,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAA4C;IAE1D;;OAEG;gBAC0B,MAAM,CAAC,EAAE,MAAM,YAAA;IAI5C;;OAEG;IACM,OAAO,IAAI,IAAI;IAUxB;;OAEG;IACM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIjC;;;OAGG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;YAiB3B,YAAY;CA+B3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SdError } from "../errors/sd-error";
|
|
2
|
-
import { EventEmitter } from "./event-emitter";
|
|
3
|
-
import
|
|
1
|
+
import { SdError } from "../errors/sd-error.js";
|
|
2
|
+
import { EventEmitter } from "./event-emitter.js";
|
|
3
|
+
import consola from "consola";
|
|
4
4
|
class DebounceQueue extends EventEmitter {
|
|
5
5
|
/**
|
|
6
6
|
* @param _delay 디바운스 지연 시간 (밀리초). 생략 시 즉시 실행 (다음 이벤트 루프)
|
|
@@ -9,7 +9,7 @@ class DebounceQueue extends EventEmitter {
|
|
|
9
9
|
super();
|
|
10
10
|
this._delay = _delay;
|
|
11
11
|
}
|
|
12
|
-
static _logger =
|
|
12
|
+
static _logger = consola.withTag("DebounceQueue");
|
|
13
13
|
_pendingFn;
|
|
14
14
|
_isRunning = false;
|
|
15
15
|
_isDisposed = false;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/features/debounce-queue.ts"],
|
|
4
|
-
"
|
|
5
|
-
"mappings": "AAoBA,SAAS,eAAe;AACxB,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAMvB,MAAM,sBAAsB,aAAkC;AAAA;AAAA;AAAA;AAAA,EAWnE,YAA6B,QAAiB;AAC5C,UAAM;AADqB;AAAA,EAE7B;AAAA,EAZA,OAAwB,UAAU,cAAc,EAAE,QAAQ,eAAe;AAAA,EAEjE;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAYC,UAAgB;AACvB,SAAK,cAAc;AACnB,QAAI,KAAK,QAAQ;AACf,mBAAa,KAAK,MAAM;AACxB,WAAK,SAAS;AAAA,IAChB;AACA,SAAK,aAAa;AAClB,UAAM,QAAQ;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,CAAU,OAAO,OAAO,IAAU;AAChC,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,IAAsC;AACxC,QAAI,KAAK,YAAa;AAEtB,SAAK,aAAa;AAElB,QAAI,KAAK,QAAQ;AACf,mBAAa,KAAK,MAAM;AACxB,WAAK,SAAS;AAAA,IAChB;AAEA,QAAI,CAAC,KAAK,YAAY;AACpB,WAAK,SAAS,WAAW,MAAM;AAC7B,aAAK,KAAK,aAAa;AAAA,MACzB,GAAG,KAAK,MAAM;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,MAAc,eAA8B;AAC1C,QAAI,KAAK,eAAe,KAAK,cAAc,CAAC,KAAK,WAAY;AAE7D,SAAK,aAAa;AAClB,SAAK,SAAS;AAEd,QAAI;AAGF,aAAO,KAAK,YAAY;AACtB,cAAM,YAAY,KAAK;AACvB,aAAK,aAAa;AAElB,YAAI;AACF,gBAAM,UAAU;AAAA,QAClB,SAAS,KAAK;AACZ,gBAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAChE,gBAAM,UAAU,IAAI,QAAQ,OAAO,4DAAe;AAGlD,cAAI,KAAK,cAAc,OAAO,IAAI,GAAG;AACnC,iBAAK,KAAK,SAAS,OAAO;AAAA,UAC5B,OAAO;AACL,0BAAc,QAAQ,MAAM,OAAO;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,IACF,UAAE;AACA,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AACF;",
|
|
4
|
+
"mappings": "AAoBA,SAAS,eAAe;AACxB,SAAS,oBAAoB;AAC7B,OAAO,aAAa;AAMb,MAAM,sBAAsB,aAAkC;AAAA;AAAA;AAAA;AAAA,EAWnE,YAA6B,QAAiB;AAC5C,UAAM;AADqB;AAAA,EAE7B;AAAA,EAZA,OAAwB,UAAU,QAAQ,QAAQ,eAAe;AAAA,EAEzD;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAYC,UAAgB;AACvB,SAAK,cAAc;AACnB,QAAI,KAAK,QAAQ;AACf,mBAAa,KAAK,MAAM;AACxB,WAAK,SAAS;AAAA,IAChB;AACA,SAAK,aAAa;AAClB,UAAM,QAAQ;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,CAAU,OAAO,OAAO,IAAU;AAChC,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,IAAsC;AACxC,QAAI,KAAK,YAAa;AAEtB,SAAK,aAAa;AAElB,QAAI,KAAK,QAAQ;AACf,mBAAa,KAAK,MAAM;AACxB,WAAK,SAAS;AAAA,IAChB;AAEA,QAAI,CAAC,KAAK,YAAY;AACpB,WAAK,SAAS,WAAW,MAAM;AAC7B,aAAK,KAAK,aAAa;AAAA,MACzB,GAAG,KAAK,MAAM;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,MAAc,eAA8B;AAC1C,QAAI,KAAK,eAAe,KAAK,cAAc,CAAC,KAAK,WAAY;AAE7D,SAAK,aAAa;AAClB,SAAK,SAAS;AAEd,QAAI;AAGF,aAAO,KAAK,YAAY;AACtB,cAAM,YAAY,KAAK;AACvB,aAAK,aAAa;AAElB,YAAI;AACF,gBAAM,UAAU;AAAA,QAClB,SAAS,KAAK;AACZ,gBAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAChE,gBAAM,UAAU,IAAI,QAAQ,OAAO,4DAAe;AAGlD,cAAI,KAAK,cAAc,OAAO,IAAI,GAAG;AACnC,iBAAK,KAAK,SAAS,OAAO;AAAA,UAC5B,OAAO;AACL,0BAAc,QAAQ,MAAM,OAAO;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,IACF,UAAE;AACA,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/features/event-emitter.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * EventTarget \uB798\uD37C - EventEmitter\uC640 \uC720\uC0AC\uD55C API \uC81C\uACF5\n *\n * \uBE0C\uB77C\uC6B0\uC800\uC640 Node.js \uBAA8\uB450\uC5D0\uC11C \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uD0C0\uC785 \uC548\uC804\uD55C \uC774\uBCA4\uD2B8 \uC5D0\uBBF8\uD130\uC774\uB2E4.\n * \uB0B4\uBD80\uC801\uC73C\uB85C EventTarget\uC744 \uC0AC\uC6A9\uD558\uC5EC \uAD6C\uD604\uB418\uC5B4 \uC788\uB2E4.\n *\n * @typeParam T \uC774\uBCA4\uD2B8 \uD0C0\uC785 \uB9F5. \uD0A4\uB294 \uC774\uBCA4\uD2B8 \uC774\uB984, \uAC12\uC740 \uC774\uBCA4\uD2B8 \uB370\uC774\uD130 \uD0C0\uC785\n *\n * @example\n * interface MyEvents {\n * data: string;\n * error: Error;\n * done: void;\n * }\n *\n * class MyEmitter extends EventEmitter<MyEvents> {}\n *\n * const emitter = new MyEmitter();\n * emitter.on(\"data\", (data) => console.log(data)); // data: string\n * emitter.emit(\"data\", \"hello\");\n * emitter.emit(\"done\"); // void \uD0C0\uC785\uC740 \uC778\uC790 \uC5C6\uC774 \uD638\uCD9C\n */\nexport class EventEmitter<T extends { [K in keyof T]: unknown } = Record<string, unknown>> {\n private readonly _target = new EventTarget();\n // \uC774\uBCA4\uD2B8 \uD0C0\uC785\uBCC4\uB85C \uB9AC\uC2A4\uB108 \uB9F5 \uAD00\uB9AC (\uAC19\uC740 \uB9AC\uC2A4\uB108\uB97C \uB2E4\uB978 \uC774\uBCA4\uD2B8\uC5D0 \uB4F1\uB85D \uAC00\uB2A5)\n // \uB2E4\uD615\uC801 \uB9AC\uC2A4\uB108 \uAD00\uB9AC\uB97C \uC704\uD574 Function \uD0C0\uC785 \uC0AC\uC6A9\n private readonly _listenerMap = new Map<string, Map<Function, (e: Event) => void>>();\n\n /**\n * \uC774\uBCA4\uD2B8 \uB9AC\uC2A4\uB108 \uB4F1\uB85D\n *\n * @param type \uC774\uBCA4\uD2B8 \uD0C0\uC785\n * @param listener \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC\n * @note \uAC19\uC740 \uB9AC\uC2A4\uB108\uB97C \uAC19\uC740 \uC774\uBCA4\uD2B8\uC5D0 \uC911\uBCF5 \uB4F1\uB85D\uD558\uBA74 \uBB34\uC2DC\uB428\n */\n on<K extends keyof T & string>(type: K, listener: (data: T[K]) => void): void {\n // \uC774\uBCA4\uD2B8 \uD0C0\uC785\uBCC4 \uB9F5 \uAC00\uC838\uC624\uAC70\uB098 \uC0DD\uC131\n let typeMap = this._listenerMap.get(type);\n if (!typeMap) {\n typeMap = new Map();\n this._listenerMap.set(type, typeMap);\n }\n\n // \uC774\uBBF8 \uD574\uB2F9 \uC774\uBCA4\uD2B8\uC5D0 \uB4F1\uB85D\uB41C \uB9AC\uC2A4\uB108\uBA74 \uBB34\uC2DC (\uC911\uBCF5 \uB4F1\uB85D \uBC29\uC9C0)\n if (typeMap.has(listener)) return;\n\n const wrappedListener = (e: Event) => listener((e as CustomEvent).detail);\n typeMap.set(listener, wrappedListener);\n this._target.addEventListener(type, wrappedListener);\n }\n\n /**\n * \uC774\uBCA4\uD2B8 \uB9AC\uC2A4\uB108 \uC81C\uAC70\n *\n * @param type \uC774\uBCA4\uD2B8 \uD0C0\uC785\n * @param listener \uC81C\uAC70\uD560 \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC\n */\n off<K extends keyof T & string>(type: K, listener: (data: T[K]) => void): void {\n const typeMap = this._listenerMap.get(type);\n if (!typeMap) return;\n\n const wrappedListener = typeMap.get(listener);\n if (wrappedListener) {\n this._target.removeEventListener(type, wrappedListener);\n typeMap.delete(listener);\n\n // \uBE48 \uB9F5 \uC815\uB9AC\n if (typeMap.size === 0) {\n this._listenerMap.delete(type);\n }\n }\n }\n\n /**\n * \uC774\uBCA4\uD2B8 \uBC1C\uC0DD\n *\n * @param type \uC774\uBCA4\uD2B8 \uD0C0\uC785\n * @param args \uC774\uBCA4\uD2B8 \uB370\uC774\uD130 (void \uD0C0\uC785\uC774\uBA74 \uC0DD\uB7B5)\n */\n emit<K extends keyof T & string>(type: K, ...args: T[K] extends void ? [] : [data: T[K]]): void {\n this._target.dispatchEvent(new CustomEvent(type, { detail: args[0] }));\n }\n\n /**\n * \uD2B9\uC815 \uC774\uBCA4\uD2B8\uC758 \uB9AC\uC2A4\uB108 \uC218 \uBC18\uD658\n *\n * @param type \uC774\uBCA4\uD2B8 \uD0C0\uC785\n * @returns \uB4F1\uB85D\uB41C \uB9AC\uC2A4\uB108 \uC218\n */\n listenerCount<K extends keyof T & string>(type: K): number {\n return this._listenerMap.get(type)?.size ?? 0;\n }\n\n /**\n * \uBAA8\uB4E0 \uC774\uBCA4\uD2B8 \uB9AC\uC2A4\uB108\uB97C \uC81C\uAC70\uD55C\uB2E4.\n */\n dispose(): void {\n for (const [type, typeMap] of this._listenerMap) {\n for (const wrappedListener of typeMap.values()) {\n this._target.removeEventListener(type, wrappedListener);\n }\n }\n this._listenerMap.clear();\n }\n\n /**\n * using \uBB38 \uC9C0\uC6D0\n */\n [Symbol.dispose](): void {\n this.dispose();\n }\n}\n"],
|
|
5
4
|
"mappings": "AAsBO,MAAM,aAA8E;AAAA,EACxE,UAAU,IAAI,YAAY;AAAA;AAAA;AAAA,EAG1B,eAAe,oBAAI,IAA+C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASnF,GAA+B,MAAS,UAAsC;AAE5E,QAAI,UAAU,KAAK,aAAa,IAAI,IAAI;AACxC,QAAI,CAAC,SAAS;AACZ,gBAAU,oBAAI,IAAI;AAClB,WAAK,aAAa,IAAI,MAAM,OAAO;AAAA,IACrC;AAGA,QAAI,QAAQ,IAAI,QAAQ,EAAG;AAE3B,UAAM,kBAAkB,CAAC,MAAa,SAAU,EAAkB,MAAM;AACxE,YAAQ,IAAI,UAAU,eAAe;AACrC,SAAK,QAAQ,iBAAiB,MAAM,eAAe;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAgC,MAAS,UAAsC;AAC7E,UAAM,UAAU,KAAK,aAAa,IAAI,IAAI;AAC1C,QAAI,CAAC,QAAS;AAEd,UAAM,kBAAkB,QAAQ,IAAI,QAAQ;AAC5C,QAAI,iBAAiB;AACnB,WAAK,QAAQ,oBAAoB,MAAM,eAAe;AACtD,cAAQ,OAAO,QAAQ;AAGvB,UAAI,QAAQ,SAAS,GAAG;AACtB,aAAK,aAAa,OAAO,IAAI;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,KAAiC,SAAY,MAAmD;AAC9F,SAAK,QAAQ,cAAc,IAAI,YAAY,MAAM,EAAE,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAA0C,MAAiB;AAzF7D;AA0FI,aAAO,UAAK,aAAa,IAAI,IAAI,MAA1B,mBAA6B,SAAQ;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,UAAgB;AACd,eAAW,CAAC,MAAM,OAAO,KAAK,KAAK,cAAc;AAC/C,iBAAW,mBAAmB,QAAQ,OAAO,GAAG;AAC9C,aAAK,QAAQ,oBAAoB,MAAM,eAAe;AAAA,MACxD;AAAA,IACF;AACA,SAAK,aAAa,MAAM;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,OAAO,OAAO,IAAU;AACvB,SAAK,QAAQ;AAAA,EACf;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serial-queue.d.ts","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;AAI/C,UAAU,iBAAiB;IACzB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,WAAY,SAAQ,YAAY,CAAC,iBAAiB,CAAC;IASlD,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"serial-queue.d.ts","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;AAI/C,UAAU,iBAAiB;IACzB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,WAAY,SAAQ,YAAY,CAAC,iBAAiB,CAAC;IASlD,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAEjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;gBAC0B,IAAI,GAAE,MAAU;IAI7C;;OAEG;IACM,OAAO,IAAI,IAAI;IAKxB;;OAEG;IACM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIjC;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;YAK3B,QAAQ;CA+BvB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { SdError } from "../errors/sd-error";
|
|
2
|
-
import { EventEmitter } from "./event-emitter";
|
|
3
|
-
import
|
|
4
|
-
import { waitTime } from "../utils/wait";
|
|
1
|
+
import { SdError } from "../errors/sd-error.js";
|
|
2
|
+
import { EventEmitter } from "./event-emitter.js";
|
|
3
|
+
import consola from "consola";
|
|
4
|
+
import { waitTime } from "../utils/wait.js";
|
|
5
5
|
class SerialQueue extends EventEmitter {
|
|
6
6
|
/**
|
|
7
7
|
* @param _gap 각 작업 사이의 간격 (ms)
|
|
@@ -10,7 +10,7 @@ class SerialQueue extends EventEmitter {
|
|
|
10
10
|
super();
|
|
11
11
|
this._gap = _gap;
|
|
12
12
|
}
|
|
13
|
-
static _logger =
|
|
13
|
+
static _logger = consola.withTag("SerialQueue");
|
|
14
14
|
_queue = [];
|
|
15
15
|
_isQueueRunning = false;
|
|
16
16
|
/**
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/features/serial-queue.ts"],
|
|
4
|
-
"
|
|
5
|
-
"mappings": "AAiBA,SAAS,eAAe;AACxB,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AAMlB,MAAM,oBAAoB,aAAgC;AAAA;AAAA;AAAA;AAAA,EAS/D,YAA6B,OAAe,GAAG;AAC7C,UAAM;AADqB;AAAA,EAE7B;AAAA,EAVA,OAAwB,UAAU,cAAc,EAAE,QAAQ,aAAa;AAAA,EAEtD,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,mEAAiB;AAGpD,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,SAAS,KAAK,IAAI;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,UAAE;AACA,WAAK,kBAAkB;AAAA,IACzB;AAAA,EACF;AACF;",
|
|
4
|
+
"mappings": "AAiBA,SAAS,eAAe;AACxB,SAAS,oBAAoB;AAC7B,OAAO,aAAa;AACpB,SAAS,gBAAgB;AAMlB,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,mEAAiB;AAGpD,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,SAAS,KAAK,IAAI;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,UAAE;AACA,WAAK,kBAAkB;AAAA,IACzB;AAAA,EACF;AACF;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
package/dist/globals.js.map
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import "./extensions/arr-ext";
|
|
2
|
-
import "./extensions/set-ext";
|
|
3
|
-
import "./extensions/map-ext";
|
|
4
|
-
export * from "./env";
|
|
5
|
-
export * from "./errors/sd-error";
|
|
6
|
-
export * from "./errors/argument-error";
|
|
7
|
-
export * from "./errors/not-implemented-error";
|
|
8
|
-
export * from "./errors/timeout-error";
|
|
9
|
-
export * from "./types/uuid";
|
|
10
|
-
export * from "./types/lazy-gc-map";
|
|
11
|
-
export * from "./types/date-time";
|
|
12
|
-
export * from "./types/date-only";
|
|
13
|
-
export * from "./types/time";
|
|
14
|
-
export * from "./features/debounce-queue";
|
|
15
|
-
export * from "./features/serial-queue";
|
|
16
|
-
export * from "./features/event-emitter";
|
|
17
|
-
export * from "./utils/date-format";
|
|
18
|
-
export * from "./utils/bytes";
|
|
19
|
-
export * from "./utils/json";
|
|
20
|
-
export * from "./utils/num";
|
|
21
|
-
export * from "./utils/obj";
|
|
22
|
-
export * from "./utils/primitive";
|
|
23
|
-
export * from "./utils/str";
|
|
24
|
-
export * from "./utils/template-strings";
|
|
25
|
-
export * from "./utils/transferable";
|
|
26
|
-
export * from "./utils/wait";
|
|
27
|
-
export * from "./utils/xml";
|
|
28
|
-
export * from "./utils/path";
|
|
29
|
-
export * from "./zip/sd-zip";
|
|
30
|
-
export * from "./common.types";
|
|
1
|
+
import "./extensions/arr-ext.js";
|
|
2
|
+
import "./extensions/set-ext.js";
|
|
3
|
+
import "./extensions/map-ext.js";
|
|
4
|
+
export * from "./env.js";
|
|
5
|
+
export * from "./errors/sd-error.js";
|
|
6
|
+
export * from "./errors/argument-error.js";
|
|
7
|
+
export * from "./errors/not-implemented-error.js";
|
|
8
|
+
export * from "./errors/timeout-error.js";
|
|
9
|
+
export * from "./types/uuid.js";
|
|
10
|
+
export * from "./types/lazy-gc-map.js";
|
|
11
|
+
export * from "./types/date-time.js";
|
|
12
|
+
export * from "./types/date-only.js";
|
|
13
|
+
export * from "./types/time.js";
|
|
14
|
+
export * from "./features/debounce-queue.js";
|
|
15
|
+
export * from "./features/serial-queue.js";
|
|
16
|
+
export * from "./features/event-emitter.js";
|
|
17
|
+
export * from "./utils/date-format.js";
|
|
18
|
+
export * from "./utils/bytes.js";
|
|
19
|
+
export * from "./utils/json.js";
|
|
20
|
+
export * from "./utils/num.js";
|
|
21
|
+
export * from "./utils/obj.js";
|
|
22
|
+
export * from "./utils/primitive.js";
|
|
23
|
+
export * from "./utils/str.js";
|
|
24
|
+
export * from "./utils/template-strings.js";
|
|
25
|
+
export * from "./utils/transferable.js";
|
|
26
|
+
export * from "./utils/wait.js";
|
|
27
|
+
export * from "./utils/xml.js";
|
|
28
|
+
export * from "./utils/path.js";
|
|
29
|
+
export * from "./zip/sd-zip.js";
|
|
30
|
+
export * from "./common.types.js";
|
|
31
31
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["// @simplysm/core-common\n// \uACF5\uD1B5 \uC720\uD2F8\uB9AC\uD2F0 \uD328\uD0A4\uC9C0\n\nimport \"./extensions/arr-ext\";\nimport \"./extensions/set-ext\";\nimport \"./extensions/map-ext\";\n\nexport * from \"./env\";\n\n// arr-extension\uC5D0\uC11C \uD0C0\uC785\uB9CC re-export\nexport type { ArrayDiffsResult, ArrayDiffs2Result, TreeArray } from \"./extensions/arr-ext\";\n\n//#region errors\nexport * from \"./errors/sd-error\";\nexport * from \"./errors/argument-error\";\nexport * from \"./errors/not-implemented-error\";\nexport * from \"./errors/timeout-error\";\n//#endregion\n\n//#region types\nexport * from \"./types/uuid\";\nexport * from \"./types/lazy-gc-map\";\nexport * from \"./types/date-time\";\nexport * from \"./types/date-only\";\nexport * from \"./types/time\";\n//#endregion\n\n//#region features\nexport * from \"./features/debounce-queue\";\nexport * from \"./features/serial-queue\";\nexport * from \"./features/event-emitter\";\n//#endregion\n\n//#region utils\nexport * from \"./utils/date-format\";\nexport * from \"./utils/bytes\";\nexport * from \"./utils/json\";\nexport * from \"./utils/num\";\nexport * from \"./utils/obj\";\nexport * from \"./utils/primitive\";\nexport * from \"./utils/str\";\nexport * from \"./utils/template-strings\";\nexport * from \"./utils/transferable\";\nexport * from \"./utils/wait\";\nexport * from \"./utils/xml\";\nexport * from \"./utils/path\";\n//#endregion\n\n//#region zip\nexport * from \"./zip/sd-zip\";\n//#endregion\n\n//#region type utilities\nexport * from \"./common.types\";\n//#endregion\n"],
|
|
5
4
|
"mappings": "AAGA,OAAO;AACP,OAAO;AACP,OAAO;AAEP,cAAc;AAMd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAId,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAId,cAAc;AACd,cAAc;AACd,cAAc;AAId,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAId,cAAc;AAId,cAAc;",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
package/dist/types/date-only.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ArgumentError } from "../errors/argument-error";
|
|
2
|
-
import { formatDate, normalizeMonth } from "../utils/date-format";
|
|
1
|
+
import { ArgumentError } from "../errors/argument-error.js";
|
|
2
|
+
import { formatDate, normalizeMonth } from "../utils/date-format.js";
|
|
3
3
|
class DateOnly {
|
|
4
4
|
static MS_PER_DAY = 24 * 60 * 60 * 1e3;
|
|
5
5
|
date;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/types/date-only.ts"],
|
|
4
|
-
"sourcesContent": ["import { ArgumentError } from \"../errors/argument-error\";\nimport { formatDate, normalizeMonth } from \"../utils/date-format\";\n\n/**\n * \uB0A0\uC9DC \uD074\uB798\uC2A4 (\uC2DC\uAC04\uC81C\uC678: yyyy-MM-dd, \uBD88\uBCC0)\n *\n * \uC2DC\uAC04 \uC815\uBCF4 \uC5C6\uC774 \uB0A0\uC9DC\uB9CC \uC800\uC7A5\uD558\uB294 \uBD88\uBCC0 \uD074\uB798\uC2A4\uC774\uB2E4.\n * \uB85C\uCEEC \uD0C0\uC784\uC874\uC744 \uAE30\uC900\uC73C\uB85C \uB3D9\uC791\uD55C\uB2E4.\n *\n * @example\n * const today = new DateOnly();\n * const specific = new DateOnly(2025, 1, 15);\n * const parsed = DateOnly.parse(\"2025-01-15\");\n */\nexport class DateOnly {\n private static readonly MS_PER_DAY = 24 * 60 * 60 * 1000;\n\n readonly date: Date;\n\n /** \uD604\uC7AC\uC2DC\uAC04 */\n constructor();\n /** \uC5F0\uC6D4\uC77C\uB85C \uCD08\uAE30\uD654 */\n constructor(year: number, month: number, day: number);\n /** tick (millisecond)\uC73C\uB85C \uC0DD\uC131 */\n constructor(tick: number);\n /** Date \uD0C0\uC785\uC73C\uB85C \uC0DD\uC131 */\n constructor(date: Date);\n constructor(arg1?: number | Date, arg2?: number, arg3?: number) {\n if (arg1 === undefined) {\n const tick = Date.now();\n const date = new Date(tick);\n this.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n } else if (arg2 !== undefined && arg3 !== undefined) {\n this.date = new Date(arg1 as number, arg2 - 1, arg3);\n } else if (arg1 instanceof Date) {\n const date = arg1;\n this.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n } else {\n const date = new Date(arg1);\n this.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n }\n\n /**\n * \uBB38\uC790\uC5F4\uC744 DateOnly\uB85C \uD30C\uC2F1\n * @param str \uB0A0\uC9DC \uBB38\uC790\uC5F4\n * @returns DateOnly \uC778\uC2A4\uD134\uC2A4\n *\n * \uC9C0\uC6D0 \uD615\uC2DD:\n * - `yyyy-MM-dd` (\uC608: '2024-01-15') - \uBB38\uC790\uC5F4\uC5D0\uC11C \uC9C1\uC811 \uCD94\uCD9C, \uD0C0\uC784\uC874 \uC601\uD5A5 \uC5C6\uC74C\n * - `yyyyMMdd` (\uC608: '20240115') - \uBB38\uC790\uC5F4\uC5D0\uC11C \uC9C1\uC811 \uCD94\uCD9C, \uD0C0\uC784\uC874 \uC601\uD5A5 \uC5C6\uC74C\n * - ISO 8601 (\uC608: '2024-01-15T00:00:00Z') - UTC\uB85C \uD574\uC11D \uD6C4 \uB85C\uCEEC \uD0C0\uC784\uC874 \uBCC0\uD658\n *\n * @note \uC11C\uBC84/\uD074\uB77C\uC774\uC5B8\uD2B8 \uD0C0\uC784\uC874\uC774 \uB2E4\uB978 \uACBD\uC6B0 `yyyy-MM-dd` \uD615\uC2DD \uC0AC\uC6A9 \uAD8C\uC7A5\n * @note DST(\uC77C\uAD11\uC808\uC57D\uC2DC\uAC04) \uC9C0\uC5ED\uC5D0\uC11C ISO 8601 \uD615\uC2DD \uD30C\uC2F1 \uC2DC, \uD30C\uC2F1 \uB300\uC0C1 \uB0A0\uC9DC\uC758 \uC624\uD504\uC14B\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n */\n static parse(str: string): DateOnly {\n // yyyy-MM-dd \uD615\uC2DD (\uD0C0\uC784\uC874 \uC601\uD5A5 \uC5C6\uC74C)\n const matchYMD = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(str);\n if (matchYMD != null) {\n return new DateOnly(Number(matchYMD[1]), Number(matchYMD[2]), Number(matchYMD[3]));\n }\n\n // yyyyMMdd \uD615\uC2DD (\uD0C0\uC784\uC874 \uC601\uD5A5 \uC5C6\uC74C)\n const matchCompact = /^(\\d{4})(\\d{2})(\\d{2})$/.exec(str);\n if (matchCompact != null) {\n return new DateOnly(Number(matchCompact[1]), Number(matchCompact[2]), Number(matchCompact[3]));\n }\n\n // ISO 8601 \uB4F1 \uAE30\uD0C0 \uD615\uC2DD (Date.parse \uC0AC\uC6A9, \uD0C0\uC784\uC874 \uBCC0\uD658 \uC801\uC6A9)\n // Date.parse()\uB294 'Z' \uC811\uBBF8\uC0AC\uAC00 \uC788\uB294 ISO 8601\uC744 UTC tick\uC73C\uB85C \uBC18\uD658\n // getTimezoneOffset()\uC740 \"\uB85C\uCEEC\uC5D0\uC11C UTC\uB85C \uBCC0\uD658\uD560 \uB54C \uB354\uD560 \uBD84\"\uC744 \uBC18\uD658 (KST\uB294 -540\uBD84 = UTC+9)\n // \uC5EC\uAE30\uC11C\uB294 \"UTC \u2192 \uB85C\uCEEC\" \uBCC0\uD658\uC774\uBBC0\uB85C \uBD80\uD638\uB97C \uBC18\uB300\uB85C \uC801\uC6A9 (\uBE84\uC148)\n // \uD30C\uC2F1 \uB300\uC0C1 \uB0A0\uC9DC\uC758 \uC624\uD504\uC14B\uC744 \uC0AC\uC6A9\uD558\uC5EC DST \uC9C0\uC5ED\uC5D0\uC11C\uB3C4 \uC815\uD655\uD55C \uBCC0\uD658\n const utcTick = Date.parse(str);\n if (!Number.isNaN(utcTick)) {\n const tempDate = new Date(utcTick);\n const offsetMinutes = tempDate.getTimezoneOffset();\n const localTick = utcTick - offsetMinutes * 60 * 1000;\n return new DateOnly(localTick);\n }\n\n throw new ArgumentError(`\uB0A0\uC9DC \uD615\uC2DD\uC744 \uD30C\uC2F1\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC9C0\uC6D0 \uD615\uC2DD: 'yyyy-MM-dd', 'yyyyMMdd', ISO 8601 \uB0A0\uC9DC`, {\n input: str,\n });\n }\n\n //#region \uC8FC\uCC28 \uACC4\uC0B0\n\n /**\n * \uAE30\uC900 \uC5F0\uB3C4\uC640 \uC6D4\uC744 \uC8FC\uCC28 \uC815\uBCF4\uB97C \uAE30\uBC18\uC73C\uB85C \uBC18\uD658\n * @param weekStartDay \uC8FC\uC758 \uC2DC\uC791 \uC694\uC77C (0=\uC77C\uC694\uC77C, 1=\uC6D4\uC694\uC77C, ..., 6=\uD1A0\uC694\uC77C). \uAE30\uBCF8\uAC12: 1(\uC6D4\uC694\uC77C)\n * @param minDaysInFirstWeek \uCCAB \uC8FC\uB85C \uAC04\uC8FC\uD560 \uCD5C\uC18C \uC77C\uC218 (1~7). \uAE30\uBCF8\uAC12: 4 (ISO 8601 \uD45C\uC900)\n * @returns \uD574\uB2F9 \uB0A0\uC9DC\uAC00 \uC18D\uD55C \uC8FC\uCC28\uC758 \uAE30\uC900 \uC5F0\uB3C4\uC640 \uC6D4\n *\n * @example\n * // ISO 8601 \uD45C\uC900 (\uC6D4\uC694\uC77C \uC2DC\uC791, \uCCAB \uC8FC \uCD5C\uC18C 4\uC77C)\n * new DateOnly(2024, 1, 1).getBaseYearMonthSeqForWeekSeq(1, 4)\n * // \uBBF8\uAD6D\uC2DD (\uC77C\uC694\uC77C \uC2DC\uC791, \uCCAB \uC8FC \uCD5C\uC18C 1\uC77C)\n * new DateOnly(2024, 1, 1).getBaseYearMonthSeqForWeekSeq(0, 1)\n */\n getBaseYearMonthSeqForWeekSeq(weekStartDay: number = 1, minDaysInFirstWeek: number = 4) {\n // \uC8FC\uC758 \uC2DC\uC791 \uC694\uC77C \uAE30\uC900\uC73C\uB85C \uD604\uC7AC \uB0A0\uC9DC\uC758 \uC694\uC77C \uC778\uB371\uC2A4 \uACC4\uC0B0 (0 = \uC8FC \uC2DC\uC791\uC77C)\n const dayOfWeek = (this.dayOfWeek + 7 - weekStartDay) % 7;\n // \uD604\uC7AC \uC8FC\uC758 \uB0A8\uC740 \uC77C\uC218 (\uD604\uC7AC \uB0A0\uC9DC \uD3EC\uD568)\n const daysInWeek = 7 - dayOfWeek;\n\n // \uD604\uC7AC \uC8FC\uC758 \uB0A8\uC740 \uC77C\uC218\uAC00 \uCCAB \uC8FC \uCD5C\uC18C \uC77C\uC218 \uBBF8\uB9CC\uC774\uBA74 \uC774\uC804 \uC8FC\uB85C \uAC04\uC8FC\n if (daysInWeek < minDaysInFirstWeek) {\n const prevWeek = this.addDays(-7);\n return { year: prevWeek.year, monthSeq: prevWeek.month };\n } else {\n // \uC6D4 \uACBD\uACC4\uB97C \uACE0\uB824\uD55C \uC2E4\uC81C \uC8FC\uC758 \uB0A8\uC740 \uC77C\uC218 \uACC4\uC0B0\n const nextMonthDate = this.addMonths(1).setDay(1);\n const remainedDays = (nextMonthDate.tick - this.tick) / DateOnly.MS_PER_DAY;\n\n // \uC6D4 \uACBD\uACC4\uAE4C\uC9C0\uC758 \uC2E4\uC81C \uC77C\uC218\uC640 \uC8FC\uC758 \uB0A8\uC740 \uC77C\uC218 \uC911 \uC791\uC740 \uAC12\n const realDaysInWeek = Math.min(daysInWeek, remainedDays);\n // \uC6D4 \uACBD\uACC4 \uACE0\uB824 \uC2DC\uC5D0\uB3C4 \uCCAB \uC8FC \uCD5C\uC18C \uC77C\uC218 \uBBF8\uB9CC\uC774\uBA74 \uB2E4\uC74C \uC8FC\uB85C \uAC04\uC8FC\n if (realDaysInWeek < minDaysInFirstWeek) {\n const nextWeek = this.addDays(7);\n return { year: nextWeek.year, monthSeq: nextWeek.month };\n } else {\n return { year: this.year, monthSeq: this.month };\n }\n }\n }\n\n /**\n * \uC8FC\uCC28 \uC815\uBCF4\uB97C \uAE30\uBC18\uC73C\uB85C \uD574\uB2F9 \uC8FC\uC758 \uC2DC\uC791 \uB0A0\uC9DC \uACC4\uC0B0\n * @param weekStartDay \uC8FC\uC758 \uC2DC\uC791 \uC694\uC77C (0=\uC77C\uC694\uC77C, 1=\uC6D4\uC694\uC77C, ..., 6=\uD1A0\uC694\uC77C). \uAE30\uBCF8\uAC12: 1(\uC6D4\uC694\uC77C)\n * @param minDaysInFirstWeek \uCCAB \uC8FC\uB85C \uAC04\uC8FC\uD560 \uCD5C\uC18C \uC77C\uC218 (1~7). \uAE30\uBCF8\uAC12: 4 (ISO 8601 \uD45C\uC900)\n * @returns \uD574\uB2F9 \uB0A0\uC9DC\uAC00 \uC18D\uD55C \uC8FC\uC758 \uC2DC\uC791 \uB0A0\uC9DC\n */\n getWeekSeqStartDate(weekStartDay: number = 1, minDaysInFirstWeek: number = 4) {\n const dayOfWeek = (this.dayOfWeek + 7 - weekStartDay) % 7;\n const daysInFirstWeek = 7 - dayOfWeek;\n\n if (daysInFirstWeek < minDaysInFirstWeek) {\n return this.addDays(-dayOfWeek + 7);\n } else {\n return this.addDays(-dayOfWeek);\n }\n }\n\n /**\n * \uC5F0\uB3C4 \uBC0F \uC8FC\uCC28 \uC21C\uC11C \uC815\uBCF4\uB97C \uBC18\uD658\n * @param weekStartDay \uC8FC\uC758 \uC2DC\uC791 \uC694\uC77C (0=\uC77C\uC694\uC77C, 1=\uC6D4\uC694\uC77C, ..., 6=\uD1A0\uC694\uC77C). \uAE30\uBCF8\uAC12: 1(\uC6D4\uC694\uC77C)\n * @param minDaysInFirstWeek \uCCAB \uC8FC\uB85C \uAC04\uC8FC\uD560 \uCD5C\uC18C \uC77C\uC218 (1~7). \uAE30\uBCF8\uAC12: 4 (ISO 8601 \uD45C\uC900)\n * @returns \uC5F0\uB3C4\uC640 \uD574\uB2F9 \uC5F0\uB3C4 \uAE30\uC900 \uC8FC\uCC28 \uBC88\uD638\n *\n * @example\n * // ISO 8601 \uD45C\uC900 (\uC6D4\uC694\uC77C \uC2DC\uC791, \uCCAB \uC8FC 4\uC77C \uC774\uC0C1)\n * new DateOnly(2025, 1, 6).getWeekSeqOfYear(); // { year: 2025, weekSeq: 2 }\n *\n * // \uBBF8\uAD6D\uC2DD (\uC77C\uC694\uC77C \uC2DC\uC791, \uCCAB \uC8FC 1\uC77C \uC774\uC0C1)\n * new DateOnly(2025, 1, 1).getWeekSeqOfYear(0, 1); // { year: 2025, weekSeq: 1 }\n */\n getWeekSeqOfYear(weekStartDay: number = 1, minDaysInFirstWeek: number = 4): { year: number; weekSeq: number } {\n const base = this.getBaseYearMonthSeqForWeekSeq(weekStartDay, minDaysInFirstWeek);\n\n const firstWeekStart = new DateOnly(base.year, 1, 1).getWeekSeqStartDate(weekStartDay, minDaysInFirstWeek);\n\n const diffDays = (this.tick - firstWeekStart.tick) / DateOnly.MS_PER_DAY;\n return {\n year: base.year,\n weekSeq: Math.floor(diffDays / 7) + 1,\n };\n }\n\n /**\n * \uD574\uB2F9 \uB0A0\uC9DC\uC758 \uC5F0\uB3C4, \uC6D4 \uBC0F \uC8FC\uCC28(weekSeq) \uC815\uBCF4\uB97C \uBC18\uD658\n * @param weekStartDay \uC8FC\uC758 \uC2DC\uC791 \uC694\uC77C (0=\uC77C\uC694\uC77C, 1=\uC6D4\uC694\uC77C, ..., 6=\uD1A0\uC694\uC77C). \uAE30\uBCF8\uAC12: 1(\uC6D4\uC694\uC77C)\n * @param minDaysInFirstWeek \uCCAB \uC8FC\uB85C \uAC04\uC8FC\uD560 \uCD5C\uC18C \uC77C\uC218 (1~7). \uAE30\uBCF8\uAC12: 4 (ISO 8601 \uD45C\uC900)\n * @returns \uC5F0\uB3C4, \uC6D4 \uBC0F \uD574\uB2F9 \uC6D4 \uAE30\uC900 \uC8FC\uCC28 \uBC88\uD638\n *\n * @example\n * // ISO 8601 \uD45C\uC900 (\uC6D4\uC694\uC77C \uC2DC\uC791, \uCCAB \uC8FC 4\uC77C \uC774\uC0C1)\n * new DateOnly(2025, 1, 15).getWeekSeqOfMonth(); // { year: 2025, monthSeq: 1, weekSeq: 3 }\n *\n * // \uBBF8\uAD6D\uC2DD (\uC77C\uC694\uC77C \uC2DC\uC791, \uCCAB \uC8FC 1\uC77C \uC774\uC0C1)\n * new DateOnly(2025, 1, 15).getWeekSeqOfMonth(0, 1); // { year: 2025, monthSeq: 1, weekSeq: 3 }\n */\n getWeekSeqOfMonth(\n weekStartDay: number = 1,\n minDaysInFirstWeek: number = 4,\n ): { year: number; monthSeq: number; weekSeq: number } {\n const base = this.getBaseYearMonthSeqForWeekSeq(weekStartDay, minDaysInFirstWeek);\n\n const firstWeekStart = new DateOnly(base.year, base.monthSeq, 1).getWeekSeqStartDate(\n weekStartDay,\n minDaysInFirstWeek,\n );\n\n const diffDays = (this.tick - firstWeekStart.tick) / DateOnly.MS_PER_DAY;\n return {\n year: base.year,\n monthSeq: base.monthSeq,\n weekSeq: Math.floor(diffDays / 7) + 1,\n };\n }\n\n /**\n * \uC8FC\uCC28 \uC815\uBCF4\uB97C \uAE30\uBC18\uC73C\uB85C \uD574\uB2F9 \uC8FC\uC758 \uC2DC\uC791 \uB0A0\uC9DC \uAC00\uC838\uC624\uAE30\n * @param arg \uC5F0\uB3C4, \uC120\uD0DD\uC801 \uC6D4, \uC8FC\uCC28 \uBC88\uD638\n * @param weekStartDay \uC8FC\uC758 \uC2DC\uC791 \uC694\uC77C (0=\uC77C\uC694\uC77C, 1=\uC6D4\uC694\uC77C, ..., 6=\uD1A0\uC694\uC77C). \uAE30\uBCF8\uAC12: 1(\uC6D4\uC694\uC77C)\n * @param minDaysInFirstWeek \uCCAB \uC8FC\uB85C \uAC04\uC8FC\uD560 \uCD5C\uC18C \uC77C\uC218 (1~7). \uAE30\uBCF8\uAC12: 4 (ISO 8601 \uD45C\uC900)\n * @returns \uD574\uB2F9 \uC8FC\uCC28\uC758 \uC2DC\uC791 \uB0A0\uC9DC\n *\n * @example\n * // 2025\uB144 2\uC8FC\uCC28\uC758 \uC2DC\uC791\uC77C (ISO 8601 \uD45C\uC900)\n * DateOnly.getDateByYearWeekSeq({ year: 2025, weekSeq: 2 }); // 2025-01-06 (\uC6D4\uC694\uC77C)\n *\n * // 2025\uB144 1\uC6D4 3\uC8FC\uCC28\uC758 \uC2DC\uC791\uC77C\n * DateOnly.getDateByYearWeekSeq({ year: 2025, month: 1, weekSeq: 3 }); // 2025-01-13 (\uC6D4\uC694\uC77C)\n */\n static getDateByYearWeekSeq(\n arg: { year: number; month?: number; weekSeq: number },\n weekStartDay: number = 1,\n minDaysInFirstWeek: number = 4,\n ) {\n return new DateOnly(arg.year, arg.month ?? 1, (arg.weekSeq - 1) * 7 + 1).getWeekSeqStartDate(\n weekStartDay,\n minDaysInFirstWeek,\n );\n }\n\n //#endregion\n\n //#region Getters (\uC77D\uAE30 \uC804\uC6A9)\n\n /** \uB0A0\uC9DC \uC138\uD305\uC774 \uC81C\uB300\uB85C \uB418\uC5C8\uB294\uC9C0 \uC5EC\uBD80 */\n get isValid(): boolean {\n return this.date instanceof Date && !Number.isNaN(this.date.getTime());\n }\n\n get year(): number {\n return this.date.getFullYear();\n }\n\n get month(): number {\n return this.date.getMonth() + 1;\n }\n\n get day(): number {\n return this.date.getDate();\n }\n\n get tick(): number {\n return this.date.getTime();\n }\n\n /** \uC694\uC77C (\uC77C~\uD1A0: 0~6) */\n get dayOfWeek(): number {\n return this.date.getDay();\n }\n\n //#endregion\n\n //#region \uBD88\uBCC0 \uBCC0\uD658 \uBA54\uC11C\uB4DC (\uC0C8 \uC778\uC2A4\uD134\uC2A4 \uBC18\uD658)\n\n /** \uC9C0\uC815\uB41C \uC5F0\uB3C4\uB85C \uC0C8 \uC778\uC2A4\uD134\uC2A4 \uBC18\uD658 */\n setYear(year: number): DateOnly {\n return new DateOnly(year, this.month, this.day);\n }\n\n /**\n * \uC9C0\uC815\uB41C \uC6D4\uB85C \uC0C8 DateOnly \uC778\uC2A4\uD134\uC2A4\uB97C \uBC18\uD658\n * @param month \uC124\uC815\uD560 \uC6D4 (1-12, \uBC94\uC704 \uC678 \uAC12\uC740 \uC5F0\uB3C4 \uC870\uC815)\n * @note \uB300\uC0C1 \uC6D4\uC758 \uC77C\uC218\uBCF4\uB2E4 \uD604\uC7AC \uC77C\uC790\uAC00 \uD06C\uBA74 \uD574\uB2F9 \uC6D4\uC758 \uB9C8\uC9C0\uB9C9 \uB0A0\uB85C \uC870\uC815\uB428\n * (\uC608: 1\uC6D4 31\uC77C\uC5D0\uC11C setMonth(2) \u2192 2\uC6D4 28\uC77C \uB610\uB294 29\uC77C)\n */\n setMonth(month: number): DateOnly {\n const normalized = normalizeMonth(this.year, month, this.day);\n return new DateOnly(normalized.year, normalized.month, normalized.day);\n }\n\n /**\n * \uC9C0\uC815\uB41C \uC77C\uC790\uB85C \uC0C8 DateOnly \uC778\uC2A4\uD134\uC2A4\uB97C \uBC18\uD658\n * @param day \uC124\uC815\uD560 \uC77C\uC790\n * @note \uD574\uB2F9 \uC6D4\uC758 \uC720\uD6A8 \uBC94\uC704\uB97C \uBC97\uC5B4\uB098\uB294 \uC77C\uC790\uB294 JavaScript Date \uAE30\uBCF8 \uB3D9\uC791\uC5D0 \uB530\uB77C\n * \uC790\uB3D9\uC73C\uB85C \uB2E4\uC74C/\uC774\uC804 \uB2EC\uB85C \uC870\uC815\uB428 (\uC608: 1\uC6D4\uC5D0 day=32 \u2192 2\uC6D4 1\uC77C)\n */\n setDay(day: number): DateOnly {\n return new DateOnly(this.year, this.month, day);\n }\n\n //#endregion\n\n //#region \uC0B0\uC220 \uBA54\uC11C\uB4DC (\uC0C8 \uC778\uC2A4\uD134\uC2A4 \uBC18\uD658)\n\n /** \uC9C0\uC815\uB41C \uC5F0\uC218\uB97C \uB354\uD55C \uC0C8 \uC778\uC2A4\uD134\uC2A4 \uBC18\uD658 */\n addYears(years: number): DateOnly {\n return this.setYear(this.year + years);\n }\n\n /** \uC9C0\uC815\uB41C \uC6D4\uC218\uB97C \uB354\uD55C \uC0C8 \uC778\uC2A4\uD134\uC2A4 \uBC18\uD658 */\n addMonths(months: number): DateOnly {\n return this.setMonth(this.month + months);\n }\n\n /** \uC9C0\uC815\uB41C \uC77C\uC218\uB97C \uB354\uD55C \uC0C8 \uC778\uC2A4\uD134\uC2A4 \uBC18\uD658 */\n addDays(days: number): DateOnly {\n return new DateOnly(this.tick + days * DateOnly.MS_PER_DAY);\n }\n\n //#endregion\n\n //#region \uD3EC\uB9F7\uD305\n\n /**\n * \uC9C0\uC815\uB41C \uD3EC\uB9F7\uC73C\uB85C \uBB38\uC790\uC5F4 \uBCC0\uD658\n * @param format \uD3EC\uB9F7 \uBB38\uC790\uC5F4\n * @see dtFormat \uC9C0\uC6D0 \uD3EC\uB9F7 \uBB38\uC790\uC5F4 \uCC38\uC870\n */\n toFormatString(formatStr: string): string {\n return formatDate(formatStr, {\n year: this.year,\n month: this.month,\n day: this.day,\n });\n }\n\n toString(): string {\n return this.toFormatString(\"yyyy-MM-dd\");\n }\n\n //#endregion\n}\n"],
|
|
5
4
|
"mappings": "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",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|