es-toolkit 1.3.0 → 1.3.1-dev.78

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/array/dropRightWhile.js +3 -0
  3. package/dist/array/dropRightWhile.js.map +1 -1
  4. package/dist/array/dropRightWhile.mjs +2 -2
  5. package/dist/array/dropWhile.js +3 -0
  6. package/dist/array/dropWhile.js.map +1 -1
  7. package/dist/array/dropWhile.mjs +1 -1
  8. package/dist/array/index.js +3 -0
  9. package/dist/array/index.js.map +1 -1
  10. package/dist/array/index.mjs +2 -2
  11. package/dist/chunk-AL3GJBEI.mjs +26 -0
  12. package/dist/chunk-AL3GJBEI.mjs.map +1 -0
  13. package/dist/{chunk-E7BJSLIX.mjs → chunk-CIRFWC7Y.mjs} +2 -2
  14. package/dist/chunk-FZEZH22H.mjs +1 -0
  15. package/dist/chunk-FZEZH22H.mjs.map +1 -0
  16. package/dist/{chunk-VNMVP3DL.mjs → chunk-JFHM6EY2.mjs} +4 -1
  17. package/dist/{chunk-VNMVP3DL.mjs.map → chunk-JFHM6EY2.mjs.map} +1 -1
  18. package/dist/{chunk-GOXQV6DX.mjs → chunk-MKETZ2RP.mjs} +2 -3
  19. package/dist/{chunk-GOXQV6DX.mjs.map → chunk-MKETZ2RP.mjs.map} +1 -1
  20. package/dist/chunk-VP2LXY75.mjs +12 -0
  21. package/dist/chunk-VP2LXY75.mjs.map +1 -0
  22. package/dist/error/AbortError.d.mts +5 -0
  23. package/dist/error/AbortError.d.ts +5 -0
  24. package/dist/error/AbortError.js +36 -0
  25. package/dist/error/AbortError.js.map +1 -0
  26. package/dist/error/AbortError.mjs +8 -0
  27. package/dist/error/AbortError.mjs.map +1 -0
  28. package/dist/error/index.d.mts +1 -0
  29. package/dist/error/index.d.ts +1 -0
  30. package/dist/error/index.js +38 -0
  31. package/dist/error/index.js.map +1 -0
  32. package/dist/error/index.mjs +9 -0
  33. package/dist/error/index.mjs.map +1 -0
  34. package/dist/function/debounce.js +1 -2
  35. package/dist/function/debounce.js.map +1 -1
  36. package/dist/function/debounce.mjs +1 -1
  37. package/dist/function/index.js +1 -2
  38. package/dist/function/index.js.map +1 -1
  39. package/dist/function/index.mjs +4 -4
  40. package/dist/index.d.mts +1 -0
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.js +28 -5
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.mjs +33 -28
  45. package/dist/math/index.mjs +3 -3
  46. package/dist/predicate/index.mjs +3 -3
  47. package/dist/promise/delay.d.mts +18 -1
  48. package/dist/promise/delay.d.ts +18 -1
  49. package/dist/promise/delay.js +24 -3
  50. package/dist/promise/delay.js.map +1 -1
  51. package/dist/promise/delay.mjs +2 -1
  52. package/dist/promise/index.js +22 -3
  53. package/dist/promise/index.js.map +1 -1
  54. package/dist/promise/index.mjs +2 -1
  55. package/package.json +1 -1
  56. package/dist/chunk-ZBG3EYM3.mjs +0 -11
  57. package/dist/chunk-ZBG3EYM3.mjs.map +0 -1
  58. /package/dist/{chunk-E7BJSLIX.mjs.map → chunk-CIRFWC7Y.mjs.map} +0 -0
@@ -1,3 +1,6 @@
1
+ interface DelayOptions {
2
+ signal?: AbortSignal;
3
+ }
1
4
  /**
2
5
  * Delays the execution of code for a specified number of milliseconds.
3
6
  *
@@ -5,6 +8,8 @@
5
8
  * with async/await to pause execution.
6
9
  *
7
10
  * @param {number} ms - The number of milliseconds to delay.
11
+ * @param {DelayOptions} options - The options object.
12
+ * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the delay.
8
13
  * @returns {Promise<void>} A Promise that resolves after the specified delay.
9
14
  *
10
15
  * @example
@@ -15,7 +20,19 @@
15
20
  * }
16
21
  *
17
22
  * foo();
23
+ *
24
+ * // With AbortSignal
25
+ * const controller = new AbortController();
26
+ * const { signal } = controller;
27
+ *
28
+ * setTimeout(() => controller.abort(), 50); // Will cancel the delay after 50ms
29
+ * try {
30
+ * await delay(100, { signal });
31
+ * } catch (error) {
32
+ * console.error(error); // Will log 'AbortError'
33
+ * }
34
+ * }
18
35
  */
19
- declare function delay(ms: number): Promise<void>;
36
+ declare function delay(ms: number, { signal }?: DelayOptions): Promise<void>;
20
37
 
21
38
  export { delay };
@@ -23,9 +23,30 @@ __export(delay_exports, {
23
23
  delay: () => delay
24
24
  });
25
25
  module.exports = __toCommonJS(delay_exports);
26
- function delay(ms) {
27
- return new Promise((resolve) => {
28
- setTimeout(resolve, ms);
26
+
27
+ // src/error/AbortError.ts
28
+ var AbortError = class extends Error {
29
+ constructor(message = "The operation was aborted") {
30
+ super(message);
31
+ this.name = "AbortError";
32
+ }
33
+ };
34
+
35
+ // src/promise/delay.ts
36
+ function delay(ms, { signal } = {}) {
37
+ return new Promise((resolve, reject) => {
38
+ const abortError = () => {
39
+ reject(new AbortError());
40
+ };
41
+ const abortHandler = () => {
42
+ clearTimeout(timeoutId);
43
+ abortError();
44
+ };
45
+ if (signal == null ? void 0 : signal.aborted) {
46
+ return abortError();
47
+ }
48
+ const timeoutId = setTimeout(resolve, ms);
49
+ signal == null ? void 0 : signal.addEventListener("abort", abortHandler, { once: true });
29
50
  });
30
51
  }
31
52
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/promise/delay.ts"],"sourcesContent":["/**\n * Delays the execution of code for a specified number of milliseconds.\n *\n * This function returns a Promise that resolves after the specified delay, allowing you to use it\n * with async/await to pause execution.\n *\n * @param {number} ms - The number of milliseconds to delay.\n * @returns {Promise<void>} A Promise that resolves after the specified delay.\n *\n * @example\n * async function foo() {\n * console.log('Start');\n * await delay(1000); // Delays execution for 1 second\n * console.log('End');\n * }\n *\n * foo();\n */\nexport function delay(ms: number): Promise<void> {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBO,SAAS,MAAM,IAA2B;AAC/C,SAAO,IAAI,QAAQ,aAAW;AAC5B,eAAW,SAAS,EAAE;AAAA,EACxB,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../src/promise/delay.ts","../../src/error/AbortError.ts"],"sourcesContent":["import { AbortError } from '../error/AbortError';\n\ninterface DelayOptions {\n signal?: AbortSignal;\n}\n\n/**\n * Delays the execution of code for a specified number of milliseconds.\n *\n * This function returns a Promise that resolves after the specified delay, allowing you to use it\n * with async/await to pause execution.\n *\n * @param {number} ms - The number of milliseconds to delay.\n * @param {DelayOptions} options - The options object.\n * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the delay.\n * @returns {Promise<void>} A Promise that resolves after the specified delay.\n *\n * @example\n * async function foo() {\n * console.log('Start');\n * await delay(1000); // Delays execution for 1 second\n * console.log('End');\n * }\n *\n * foo();\n *\n * // With AbortSignal\n * const controller = new AbortController();\n * const { signal } = controller;\n *\n * setTimeout(() => controller.abort(), 50); // Will cancel the delay after 50ms\n * try {\n * await delay(100, { signal });\n * } catch (error) {\n * console.error(error); // Will log 'AbortError'\n * }\n * }\n */\nexport function delay(ms: number, { signal }: DelayOptions = {}): Promise<void> {\n return new Promise((resolve, reject) => {\n const abortError = () => {\n reject(new AbortError());\n };\n\n const abortHandler = () => {\n clearTimeout(timeoutId);\n abortError();\n };\n\n if (signal?.aborted) {\n return abortError();\n }\n\n const timeoutId = setTimeout(resolve, ms);\n\n signal?.addEventListener('abort', abortHandler, { once: true });\n });\n}\n","export class AbortError extends Error {\n constructor(message = 'The operation was aborted') {\n super(message);\n this.name = 'AbortError';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,aAAN,cAAyB,MAAM;AAAA,EACpC,YAAY,UAAU,6BAA6B;AACjD,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;;;ADiCO,SAAS,MAAM,IAAY,EAAE,OAAO,IAAkB,CAAC,GAAkB;AAC9E,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,aAAa,MAAM;AACvB,aAAO,IAAI,WAAW,CAAC;AAAA,IACzB;AAEA,UAAM,eAAe,MAAM;AACzB,mBAAa,SAAS;AACtB,iBAAW;AAAA,IACb;AAEA,QAAI,iCAAQ,SAAS;AACnB,aAAO,WAAW;AAAA,IACpB;AAEA,UAAM,YAAY,WAAW,SAAS,EAAE;AAExC,qCAAQ,iBAAiB,SAAS,cAAc,EAAE,MAAM,KAAK;AAAA,EAC/D,CAAC;AACH;","names":[]}
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  delay
3
- } from "../chunk-ZBG3EYM3.mjs";
3
+ } from "../chunk-AL3GJBEI.mjs";
4
+ import "../chunk-VP2LXY75.mjs";
4
5
  import "../chunk-2MM5EJJX.mjs";
5
6
  export {
6
7
  delay
@@ -24,10 +24,29 @@ __export(promise_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(promise_exports);
26
26
 
27
+ // src/error/AbortError.ts
28
+ var AbortError = class extends Error {
29
+ constructor(message = "The operation was aborted") {
30
+ super(message);
31
+ this.name = "AbortError";
32
+ }
33
+ };
34
+
27
35
  // src/promise/delay.ts
28
- function delay(ms) {
29
- return new Promise((resolve) => {
30
- setTimeout(resolve, ms);
36
+ function delay(ms, { signal } = {}) {
37
+ return new Promise((resolve, reject) => {
38
+ const abortError = () => {
39
+ reject(new AbortError());
40
+ };
41
+ const abortHandler = () => {
42
+ clearTimeout(timeoutId);
43
+ abortError();
44
+ };
45
+ if (signal == null ? void 0 : signal.aborted) {
46
+ return abortError();
47
+ }
48
+ const timeoutId = setTimeout(resolve, ms);
49
+ signal == null ? void 0 : signal.addEventListener("abort", abortHandler, { once: true });
31
50
  });
32
51
  }
33
52
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/promise/index.ts","../../src/promise/delay.ts"],"sourcesContent":["export { delay } from './delay';\n","/**\n * Delays the execution of code for a specified number of milliseconds.\n *\n * This function returns a Promise that resolves after the specified delay, allowing you to use it\n * with async/await to pause execution.\n *\n * @param {number} ms - The number of milliseconds to delay.\n * @returns {Promise<void>} A Promise that resolves after the specified delay.\n *\n * @example\n * async function foo() {\n * console.log('Start');\n * await delay(1000); // Delays execution for 1 second\n * console.log('End');\n * }\n *\n * foo();\n */\nexport function delay(ms: number): Promise<void> {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACkBO,SAAS,MAAM,IAA2B;AAC/C,SAAO,IAAI,QAAQ,aAAW;AAC5B,eAAW,SAAS,EAAE;AAAA,EACxB,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../src/promise/index.ts","../../src/error/AbortError.ts","../../src/promise/delay.ts"],"sourcesContent":["export { delay } from './delay';\n","export class AbortError extends Error {\n constructor(message = 'The operation was aborted') {\n super(message);\n this.name = 'AbortError';\n }\n}\n","import { AbortError } from '../error/AbortError';\n\ninterface DelayOptions {\n signal?: AbortSignal;\n}\n\n/**\n * Delays the execution of code for a specified number of milliseconds.\n *\n * This function returns a Promise that resolves after the specified delay, allowing you to use it\n * with async/await to pause execution.\n *\n * @param {number} ms - The number of milliseconds to delay.\n * @param {DelayOptions} options - The options object.\n * @param {AbortSignal} options.signal - An optional AbortSignal to cancel the delay.\n * @returns {Promise<void>} A Promise that resolves after the specified delay.\n *\n * @example\n * async function foo() {\n * console.log('Start');\n * await delay(1000); // Delays execution for 1 second\n * console.log('End');\n * }\n *\n * foo();\n *\n * // With AbortSignal\n * const controller = new AbortController();\n * const { signal } = controller;\n *\n * setTimeout(() => controller.abort(), 50); // Will cancel the delay after 50ms\n * try {\n * await delay(100, { signal });\n * } catch (error) {\n * console.error(error); // Will log 'AbortError'\n * }\n * }\n */\nexport function delay(ms: number, { signal }: DelayOptions = {}): Promise<void> {\n return new Promise((resolve, reject) => {\n const abortError = () => {\n reject(new AbortError());\n };\n\n const abortHandler = () => {\n clearTimeout(timeoutId);\n abortError();\n };\n\n if (signal?.aborted) {\n return abortError();\n }\n\n const timeoutId = setTimeout(resolve, ms);\n\n signal?.addEventListener('abort', abortHandler, { once: true });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,aAAN,cAAyB,MAAM;AAAA,EACpC,YAAY,UAAU,6BAA6B;AACjD,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;;;ACiCO,SAAS,MAAM,IAAY,EAAE,OAAO,IAAkB,CAAC,GAAkB;AAC9E,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,aAAa,MAAM;AACvB,aAAO,IAAI,WAAW,CAAC;AAAA,IACzB;AAEA,UAAM,eAAe,MAAM;AACzB,mBAAa,SAAS;AACtB,iBAAW;AAAA,IACb;AAEA,QAAI,iCAAQ,SAAS;AACnB,aAAO,WAAW;AAAA,IACpB;AAEA,UAAM,YAAY,WAAW,SAAS,EAAE;AAExC,qCAAQ,iBAAiB,SAAS,cAAc,EAAE,MAAM,KAAK;AAAA,EAC/D,CAAC;AACH;","names":[]}
@@ -1,7 +1,8 @@
1
1
  import "../chunk-ARZ5BDR6.mjs";
2
2
  import {
3
3
  delay
4
- } from "../chunk-ZBG3EYM3.mjs";
4
+ } from "../chunk-AL3GJBEI.mjs";
5
+ import "../chunk-VP2LXY75.mjs";
5
6
  import "../chunk-2MM5EJJX.mjs";
6
7
  export {
7
8
  delay
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "es-toolkit",
3
3
  "description": "A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.",
4
- "version": "1.3.0",
4
+ "version": "1.3.1-dev.78+8d80869f",
5
5
  "workspaces": [
6
6
  "docs"
7
7
  ],
@@ -1,11 +0,0 @@
1
- // src/promise/delay.ts
2
- function delay(ms) {
3
- return new Promise((resolve) => {
4
- setTimeout(resolve, ms);
5
- });
6
- }
7
-
8
- export {
9
- delay
10
- };
11
- //# sourceMappingURL=chunk-ZBG3EYM3.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/promise/delay.ts"],"sourcesContent":["/**\n * Delays the execution of code for a specified number of milliseconds.\n *\n * This function returns a Promise that resolves after the specified delay, allowing you to use it\n * with async/await to pause execution.\n *\n * @param {number} ms - The number of milliseconds to delay.\n * @returns {Promise<void>} A Promise that resolves after the specified delay.\n *\n * @example\n * async function foo() {\n * console.log('Start');\n * await delay(1000); // Delays execution for 1 second\n * console.log('End');\n * }\n *\n * foo();\n */\nexport function delay(ms: number): Promise<void> {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n"],"mappings":";AAkBO,SAAS,MAAM,IAA2B;AAC/C,SAAO,IAAI,QAAQ,aAAW;AAC5B,eAAW,SAAS,EAAE;AAAA,EACxB,CAAC;AACH;","names":[]}