@zajno/common 2.8.5 → 2.8.7

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 (41) hide show
  1. package/cjs/api/call.config.js +10 -0
  2. package/cjs/api/call.config.js.map +1 -1
  3. package/cjs/api/extensions/formData.js +115 -0
  4. package/cjs/api/extensions/formData.js.map +1 -0
  5. package/cjs/api/extensions/index.js +1 -0
  6. package/cjs/api/extensions/index.js.map +1 -1
  7. package/cjs/dates/tz.js +1 -1
  8. package/cjs/dates/tz.js.map +1 -1
  9. package/cjs/structures/queue/tasks.js +72 -20
  10. package/cjs/structures/queue/tasks.js.map +1 -1
  11. package/cjs/types/index.js +1 -0
  12. package/cjs/types/index.js.map +1 -1
  13. package/cjs/types/isPlainObject.js +15 -0
  14. package/cjs/types/isPlainObject.js.map +1 -0
  15. package/cjs/validation/validators.js +1 -1
  16. package/cjs/validation/validators.js.map +1 -1
  17. package/esm/api/call.config.js +10 -0
  18. package/esm/api/call.config.js.map +1 -1
  19. package/esm/api/extensions/formData.js +111 -0
  20. package/esm/api/extensions/formData.js.map +1 -0
  21. package/esm/api/extensions/index.js +1 -0
  22. package/esm/api/extensions/index.js.map +1 -1
  23. package/esm/dates/tz.js +1 -1
  24. package/esm/dates/tz.js.map +1 -1
  25. package/esm/structures/queue/tasks.js +72 -20
  26. package/esm/structures/queue/tasks.js.map +1 -1
  27. package/esm/types/index.js +1 -0
  28. package/esm/types/index.js.map +1 -1
  29. package/esm/types/isPlainObject.js +12 -0
  30. package/esm/types/isPlainObject.js.map +1 -0
  31. package/esm/validation/validators.js +1 -1
  32. package/esm/validation/validators.js.map +1 -1
  33. package/package.json +1 -1
  34. package/tsconfig.cjs.tsbuildinfo +1 -1
  35. package/tsconfig.esm.tsbuildinfo +1 -1
  36. package/tsconfig.types.tsbuildinfo +1 -1
  37. package/types/api/extensions/formData.d.ts +89 -0
  38. package/types/api/extensions/index.d.ts +1 -0
  39. package/types/structures/queue/tasks.d.ts +31 -2
  40. package/types/types/index.d.ts +1 -0
  41. package/types/types/isPlainObject.d.ts +5 -0
@@ -2,9 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RequestMeta = void 0;
4
4
  exports.createConfig = createConfig;
5
+ const isPlainObject_js_1 = require("../types/isPlainObject.js");
5
6
  const config_js_1 = require("./config.js");
6
7
  function createConfig(endpointsConfig, api, data, extra) {
7
8
  const { headers, log = 'res', noLoader, ...restExtra } = extra || {};
9
+ // Guard against non-plain objects (e.g. FormData, Blob) that would be destroyed by spread.
10
+ // Only plain objects can be spread for path/query extraction.
11
+ if (data != null && typeof data === 'object' && !(0, isPlainObject_js_1.isPlainObject)(data)) {
12
+ const name = data.constructor?.name ?? typeof data;
13
+ throw new TypeError(`API caller received a non-plain object as data (got ${name}). `
14
+ + 'Only plain objects are supported because data is spread for path/query extraction. '
15
+ + 'For FormData/multipart uploads, pass a plain object and use the IEndpointFormData extension '
16
+ + 'with .asFormData(), or use a beforeRequest hook to replace config.data.');
17
+ }
8
18
  const resultInput = data && { ...data };
9
19
  const pathInputs = {};
10
20
  const queryInputs = {};
@@ -1 +1 @@
1
- {"version":3,"file":"call.config.js","sourceRoot":"","sources":["../../../src/api/call.config.ts"],"names":[],"mappings":";;;AAMA,oCA4EC;AAhFD,2CAAmD;AAInD,SAAgB,YAAY,CACxB,eAAqC,EACrC,GAAM,EACN,IAAiC,EACjC,KAAgC;IAKhC,MAAM,EACF,OAAO,EACP,GAAG,GAAG,KAAK,EACX,QAAQ,EACR,GAAG,SAAS,EACf,GAAG,KAAK,IAAI,EAAE,CAAC;IAEhB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;IACxC,MAAM,UAAU,GAAoC,EAAE,CAAC;IACvD,MAAM,WAAW,GAAc,EAAE,CAAC;IAClC,IAAI,QAAQ,GAAW,EAAE,CAAC;IAE1B,gCAAgC;IAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;IAChC,IAAI,WAAW,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,iCAAiC;IACjC,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC;IACxC,IAAI,WAAW,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC3C,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACZ,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,KAAK,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;YAChD,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;QAClE,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;IACnC,MAAM,MAAM,GAAmC;QAC3C,MAAM;QACN,GAAG,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,UAA0C,CAAC,GAAG,QAAQ;QACxF,IAAI,EAAE,WAAW,IAAI,SAAS;QAC9B,OAAO,EAAE,OAAoB,IAAI,EAAE;QAEnC,KAAK,EAAE,IAAI,WAAW,CAClB,GAAG,EACH,eAAe,EACf,GAAG,EACH,QAAQ,IAAI,MAAgB,KAAK,KAAK,EACtC,SAAmB,CACtB;KACJ,CAAC;IAEF,OAAO;QACH,MAAM;QACN,WAAW;QACX,UAAU;QACV,WAAW;KACd,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAa,WAAW;IAEA;IACA;IACA;IACA;IACA;IALpB,YACoB,GAAM,EACN,cAAoC,IAAI,gCAAoB,EAAE,EAC9D,MAAgB,KAAK,EACrB,WAAoB,KAAK,EACzB,QAAgB,EAA8B;QAJ9C,QAAG,GAAH,GAAG,CAAG;QACN,gBAAW,GAAX,WAAW,CAAmD;QAC9D,QAAG,GAAH,GAAG,CAAkB;QACrB,aAAQ,GAAR,QAAQ,CAAiB;QACzB,UAAK,GAAL,KAAK,CAAyC;IAGlE,CAAC;CACJ;AAVD,kCAUC"}
1
+ {"version":3,"file":"call.config.js","sourceRoot":"","sources":["../../../src/api/call.config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IEndpointFormData = void 0;
4
+ exports.createFormDataSerializer = createFormDataSerializer;
5
+ const isPlainObject_js_1 = require("../../types/isPlainObject.js");
6
+ /**
7
+ * Creates a default FormData serializer.
8
+ *
9
+ * Iterates over own enumerable properties of the data object and appends them to a new FormData instance.
10
+ *
11
+ * - `Blob`/`File` values are appended as-is
12
+ * - `null`/`undefined` values are skipped
13
+ * - Primitive values are converted to strings
14
+ * - Objects/arrays are JSON-stringified by default (configurable via `serializeValue`)
15
+ */
16
+ function createFormDataSerializer(options) {
17
+ const Ctor = options?.FormData ?? globalThis.FormData;
18
+ if (typeof Ctor !== 'function') {
19
+ throw new TypeError('FormData is not available in this environment. '
20
+ + 'Pass a FormData constructor via options.FormData (e.g., from the `form-data` npm package).');
21
+ }
22
+ const serializeValue = options?.serializeValue ?? 'json';
23
+ return (data) => {
24
+ const fd = new Ctor();
25
+ for (const [key, value] of Object.entries(data)) {
26
+ if (value == null) {
27
+ continue;
28
+ }
29
+ if (typeof Blob !== 'undefined' && value instanceof Blob) {
30
+ fd.append(key, value);
31
+ continue;
32
+ }
33
+ if (typeof value !== 'object') {
34
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
35
+ fd.append(key, String(value));
36
+ continue;
37
+ }
38
+ if (typeof serializeValue === 'function') {
39
+ const serialized = serializeValue(key, value);
40
+ if (typeof Blob !== 'undefined' && serialized instanceof Blob) {
41
+ fd.append(key, serialized);
42
+ }
43
+ else {
44
+ fd.append(key, serialized);
45
+ }
46
+ }
47
+ else {
48
+ fd.append(key, JSON.stringify(value));
49
+ }
50
+ }
51
+ return fd;
52
+ };
53
+ }
54
+ var IEndpointFormData;
55
+ (function (IEndpointFormData) {
56
+ IEndpointFormData.extender = (base) => {
57
+ const ext = {
58
+ formData: undefined,
59
+ asFormData(serializer) {
60
+ this.formData = serializer ?? true;
61
+ return this;
62
+ },
63
+ };
64
+ return Object.assign(base, ext);
65
+ };
66
+ function guard(api) {
67
+ return 'formData' in api && !!api.formData;
68
+ }
69
+ IEndpointFormData.guard = guard;
70
+ /**
71
+ * Creates caller hooks for FormData serialization.
72
+ *
73
+ * The hook converts `config.data` (plain object) into a FormData instance using the provided serializer.
74
+ *
75
+ * @param serializer - Default serializer used when endpoint has `.asFormData()` without a custom serializer.
76
+ * Use {@link createFormDataSerializer} for the built-in one, or provide a fully custom function.
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * // Simplest setup (global FormData, JSON-stringify objects)
81
+ * IEndpointFormData.createHooks(createFormDataSerializer())
82
+ *
83
+ * // Custom FormData constructor
84
+ * import FormDataNode from 'form-data';
85
+ * IEndpointFormData.createHooks(createFormDataSerializer({ FormData: FormDataNode as any }))
86
+ *
87
+ * // Fully custom serializer
88
+ * IEndpointFormData.createHooks((data) => {
89
+ * const fd = new FormData();
90
+ * // custom logic...
91
+ * return fd;
92
+ * })
93
+ * ```
94
+ */
95
+ function createHooks(serializer) {
96
+ return {
97
+ beforeRequest: (config) => {
98
+ if (!guard(config._meta.api) || !config.data) {
99
+ return;
100
+ }
101
+ // Skip if data was already transformed by a previous hook (e.g., to FormData, Blob, string)
102
+ if (!(0, isPlainObject_js_1.isPlainObject)(config.data)) {
103
+ return;
104
+ }
105
+ const endpoint = config._meta.api;
106
+ const ser = typeof endpoint.formData === 'function'
107
+ ? endpoint.formData
108
+ : serializer;
109
+ config.data = ser(config.data);
110
+ },
111
+ };
112
+ }
113
+ IEndpointFormData.createHooks = createHooks;
114
+ })(IEndpointFormData || (exports.IEndpointFormData = IEndpointFormData = {}));
115
+ //# sourceMappingURL=formData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formData.js","sourceRoot":"","sources":["../../../../src/api/extensions/formData.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./contentType.js"), exports);
5
+ tslib_1.__exportStar(require("./formData.js"), exports);
5
6
  tslib_1.__exportStar(require("./validation.js"), exports);
6
7
  tslib_1.__exportStar(require("./endpointHooks.js"), exports);
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/extensions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,0DAAgC;AAChC,6DAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/extensions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,wDAA8B;AAC9B,0DAAgC;AAChC,6DAAmC"}
package/cjs/dates/tz.js CHANGED
@@ -38,7 +38,7 @@ var Timezones;
38
38
  if (sign === '+') {
39
39
  result *= -1;
40
40
  }
41
- return result;
41
+ return result || 0;
42
42
  }
43
43
  Timezones.getOffset = getOffset;
44
44
  /** Returns a new date with the specified timezone offset applied.
@@ -1 +1 @@
1
- {"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAC7D,IAAiB,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IA7Be,mBAAS,YA6BxB,CAAA;IAED;;;;MAIE;IACF,SAAgB,eAAe,CAAC,IAAU,EAAE,EAAmB;QAC3D,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,QAAQ;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,yBAAe,kBAO9B,CAAA;AACL,CAAC,EAzDgB,SAAS,yBAAT,SAAS,QAyDzB"}
1
+ {"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAC7D,IAAiB,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,CAAC;IACvB,CAAC;IA7Be,mBAAS,YA6BxB,CAAA;IAED;;;;MAIE;IACF,SAAgB,eAAe,CAAC,IAAU,EAAE,EAAmB;QAC3D,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,QAAQ;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,yBAAe,kBAO9B,CAAA;AACL,CAAC,EAzDgB,SAAS,yBAAT,SAAS,QAyDzB"}
@@ -1,23 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TasksQueue = void 0;
4
+ const manualPromise_js_1 = require("../../async/manualPromise.js");
4
5
  class TasksQueue {
5
6
  limit;
6
7
  _items = [];
7
8
  _running = 0;
8
9
  _logger = null;
9
- constructor(limit) {
10
+ _delayBetweenTasks;
11
+ _onTaskError;
12
+ _delayedTasks = new Set();
13
+ constructor(limit, options) {
10
14
  this.limit = limit;
11
15
  if (!limit || limit < 0) {
12
16
  throw new Error('TasksQueue: limit should be a positive number');
13
17
  }
18
+ this._delayBetweenTasks = options?.delayBetweenTasks ?? 0;
19
+ this._onTaskError = options?.onTaskError;
14
20
  }
15
21
  get isFull() { return this._running >= this.limit; }
16
22
  get running() { return this._running; }
23
+ /** Number of tasks waiting in the queue (not including currently running) */
24
+ get pending() { return this._items.length; }
17
25
  addLogger(logger) {
18
26
  this._logger = logger;
19
27
  return this;
20
28
  }
29
+ /**
30
+ * Enqueue a task factory to run when a slot is available.
31
+ *
32
+ * **Note:** When `onTaskError` is provided in the constructor options and the factory throws,
33
+ * the error is passed to `onTaskError` and the returned promise resolves with `undefined`.
34
+ */
21
35
  enqueue(factory, name) {
22
36
  if (typeof factory !== 'function') {
23
37
  throw new Error('Invalid arg: factory not a function');
@@ -25,39 +39,71 @@ class TasksQueue {
25
39
  if (this.isFull) {
26
40
  const item = {
27
41
  factory,
28
- finish: undefined,
42
+ promise: (0, manualPromise_js_1.createManualPromise)(),
29
43
  name,
30
44
  };
31
- const waitPromise = new Promise((resolve, reject) => {
32
- item.finish = async (res) => {
33
- try {
34
- const rr = await res;
35
- resolve(rr);
36
- return rr;
37
- }
38
- catch (err) {
39
- reject(err);
40
- throw err;
41
- }
42
- };
43
- });
44
45
  this._items.push(item);
45
- return waitPromise;
46
+ return item.promise.promise;
46
47
  }
47
- return this._runFactory(factory);
48
+ return this._runFactory(factory, name)
49
+ .then(res => res.ok === true ? res.result : undefined);
50
+ }
51
+ /** Enqueue a task to run after `delay` ms. Returns a promise and a cancel function. */
52
+ enqueueDelayed(factory, delay, name) {
53
+ const mp = (0, manualPromise_js_1.createManualPromise)();
54
+ let started = false;
55
+ const timer = setTimeout(() => {
56
+ started = true;
57
+ this._delayedTasks.delete(task);
58
+ this.enqueue(factory, name).then(result => mp.resolve(result), err => mp.reject(err));
59
+ }, delay);
60
+ const cancel = () => {
61
+ if (!started) {
62
+ clearTimeout(timer);
63
+ this._delayedTasks.delete(task);
64
+ mp.reject(new Error('Cancelled'));
65
+ }
66
+ };
67
+ const task = { promise: mp.promise, cancel };
68
+ this._delayedTasks.add(task);
69
+ return task;
70
+ }
71
+ /** Remove all pending tasks from the queue. Does not cancel running tasks. Also cancels all delayed enqueues.
72
+ * Pending enqueue() promises are rejected with a 'TasksQueue cleared' error so callers don't hang indefinitely.
73
+ * Delayed tasks are cancelled and their promises are rejected with a 'Cancelled' error. */
74
+ clear() {
75
+ const pending = this._items.splice(0);
76
+ if (pending.length > 0) {
77
+ const clearError = new Error('TasksQueue cleared');
78
+ for (const item of pending) {
79
+ item.promise.reject(clearError);
80
+ }
81
+ }
82
+ const delayed = [...this._delayedTasks];
83
+ for (const task of delayed) {
84
+ task.cancel();
85
+ }
86
+ this._delayedTasks.clear();
48
87
  }
49
88
  _runFactory = async (factory, name) => {
50
89
  this._running++;
51
90
  try {
52
91
  const result = await factory();
53
- return result;
92
+ return { ok: true, result };
54
93
  }
55
94
  catch (err) {
95
+ if (this._onTaskError) {
96
+ this._onTaskError(err, name || factory.name || undefined);
97
+ return { ok: false };
98
+ }
56
99
  this._logger?.warn(`Factory "${name || factory.name || '<unknown>'}" thrown. Rethrowing...`);
57
100
  throw err;
58
101
  }
59
102
  finally {
60
103
  this._running--;
104
+ if (this._delayBetweenTasks > 0 && this._items.length > 0) {
105
+ await new Promise(resolve => setTimeout(resolve, this._delayBetweenTasks));
106
+ }
61
107
  this._tryRunNext();
62
108
  }
63
109
  };
@@ -66,10 +112,16 @@ class TasksQueue {
66
112
  return;
67
113
  }
68
114
  const next = this._items.shift();
69
- if (!next || !next.finish || !next.factory) {
115
+ if (!next || !next.factory || !next.promise) {
70
116
  return;
71
117
  }
72
- await next.finish(this._runFactory(next.factory));
118
+ try {
119
+ const res = await this._runFactory(next.factory, next.name);
120
+ next.promise.resolve(res.ok === true ? res.result : undefined);
121
+ }
122
+ catch (err) {
123
+ next.promise.reject(err);
124
+ }
73
125
  };
74
126
  }
75
127
  exports.TasksQueue = TasksQueue;
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@ tslib_1.__exportStar(require("./deep.js"), exports);
5
5
  tslib_1.__exportStar(require("./getter.js"), exports);
6
6
  tslib_1.__exportStar(require("./comparator.js"), exports);
7
7
  tslib_1.__exportStar(require("./misc.js"), exports);
8
+ tslib_1.__exportStar(require("./isPlainObject.js"), exports);
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0B;AAC1B,sDAA4B;AAC5B,0DAAgC;AAChC,oDAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0B;AAC1B,sDAA4B;AAC5B,0DAAgC;AAChC,oDAA0B;AAC1B,6DAAmC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPlainObject = isPlainObject;
4
+ /**
5
+ * Checks if a value is a plain object (created by `{}`, `Object.create(null)`, or `new Object()`).
6
+ * Returns `false` for class instances like `FormData`, `Blob`, `Buffer`, etc.
7
+ */
8
+ function isPlainObject(value) {
9
+ if (value == null || typeof value !== 'object') {
10
+ return false;
11
+ }
12
+ const proto = Object.getPrototypeOf(value);
13
+ return proto === Object.prototype || proto === null;
14
+ }
15
+ //# sourceMappingURL=isPlainObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPlainObject.js","sourceRoot":"","sources":["../../../src/types/isPlainObject.ts"],"names":[],"mappings":";;AAKA,sCAMC;AAVD;;;GAGG;AACH,SAAgB,aAAa,CAAC,KAAc;IACxC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACxD,CAAC"}
@@ -21,7 +21,7 @@ exports.ValidatorsRegExps = {
21
21
  creditCardNumber: /^\d+$/,
22
22
  expiryDateCard: /^\d+$/,
23
23
  cvv: /^\d+$/,
24
- website: /^(https?:\/\/)?((\p{N}|\p{L})+((((-?(\p{N}|\p{L})+)+)?)\.))+\p{L}{2,}(:[0-9]+)?(\/.*)?$/iu,
24
+ website: /^(https?:\/\/)?([\p{L}\p{N}]+(-[\p{L}\p{N}]+)*\.)+\p{L}{2,}(:[0-9]+)?(\/.*)?$/iu,
25
25
  linkedin: /^(https?:\/\/)?([a-z]+\d*[a-z]*\.)?linkedin\.com\/.*$/i,
26
26
  };
27
27
  exports.Validators = {
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,17 @@
1
1
  import {} from '../types/misc.js';
2
+ import { isPlainObject } from '../types/isPlainObject.js';
2
3
  import { EndpointsPathsConfig } from './config.js';
3
4
  export function createConfig(endpointsConfig, api, data, extra) {
4
5
  const { headers, log = 'res', noLoader, ...restExtra } = extra || {};
6
+ // Guard against non-plain objects (e.g. FormData, Blob) that would be destroyed by spread.
7
+ // Only plain objects can be spread for path/query extraction.
8
+ if (data != null && typeof data === 'object' && !isPlainObject(data)) {
9
+ const name = data.constructor?.name ?? typeof data;
10
+ throw new TypeError(`API caller received a non-plain object as data (got ${name}). `
11
+ + 'Only plain objects are supported because data is spread for path/query extraction. '
12
+ + 'For FormData/multipart uploads, pass a plain object and use the IEndpointFormData extension '
13
+ + 'with .asFormData(), or use a beforeRequest hook to replace config.data.');
14
+ }
5
15
  const resultInput = data && { ...data };
6
16
  const pathInputs = {};
7
17
  const queryInputs = {};
@@ -1 +1 @@
1
- {"version":3,"file":"call.config.js","sourceRoot":"","sources":["../../../src/api/call.config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call.config.js","sourceRoot":"","sources":["../../../src/api/call.config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import { isPlainObject } from '../../types/isPlainObject.js';
2
+ /**
3
+ * Creates a default FormData serializer.
4
+ *
5
+ * Iterates over own enumerable properties of the data object and appends them to a new FormData instance.
6
+ *
7
+ * - `Blob`/`File` values are appended as-is
8
+ * - `null`/`undefined` values are skipped
9
+ * - Primitive values are converted to strings
10
+ * - Objects/arrays are JSON-stringified by default (configurable via `serializeValue`)
11
+ */
12
+ export function createFormDataSerializer(options) {
13
+ const Ctor = options?.FormData ?? globalThis.FormData;
14
+ if (typeof Ctor !== 'function') {
15
+ throw new TypeError('FormData is not available in this environment. '
16
+ + 'Pass a FormData constructor via options.FormData (e.g., from the `form-data` npm package).');
17
+ }
18
+ const serializeValue = options?.serializeValue ?? 'json';
19
+ return (data) => {
20
+ const fd = new Ctor();
21
+ for (const [key, value] of Object.entries(data)) {
22
+ if (value == null) {
23
+ continue;
24
+ }
25
+ if (typeof Blob !== 'undefined' && value instanceof Blob) {
26
+ fd.append(key, value);
27
+ continue;
28
+ }
29
+ if (typeof value !== 'object') {
30
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
31
+ fd.append(key, String(value));
32
+ continue;
33
+ }
34
+ if (typeof serializeValue === 'function') {
35
+ const serialized = serializeValue(key, value);
36
+ if (typeof Blob !== 'undefined' && serialized instanceof Blob) {
37
+ fd.append(key, serialized);
38
+ }
39
+ else {
40
+ fd.append(key, serialized);
41
+ }
42
+ }
43
+ else {
44
+ fd.append(key, JSON.stringify(value));
45
+ }
46
+ }
47
+ return fd;
48
+ };
49
+ }
50
+ export var IEndpointFormData;
51
+ (function (IEndpointFormData) {
52
+ IEndpointFormData.extender = (base) => {
53
+ const ext = {
54
+ formData: undefined,
55
+ asFormData(serializer) {
56
+ this.formData = serializer ?? true;
57
+ return this;
58
+ },
59
+ };
60
+ return Object.assign(base, ext);
61
+ };
62
+ function guard(api) {
63
+ return 'formData' in api && !!api.formData;
64
+ }
65
+ IEndpointFormData.guard = guard;
66
+ /**
67
+ * Creates caller hooks for FormData serialization.
68
+ *
69
+ * The hook converts `config.data` (plain object) into a FormData instance using the provided serializer.
70
+ *
71
+ * @param serializer - Default serializer used when endpoint has `.asFormData()` without a custom serializer.
72
+ * Use {@link createFormDataSerializer} for the built-in one, or provide a fully custom function.
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * // Simplest setup (global FormData, JSON-stringify objects)
77
+ * IEndpointFormData.createHooks(createFormDataSerializer())
78
+ *
79
+ * // Custom FormData constructor
80
+ * import FormDataNode from 'form-data';
81
+ * IEndpointFormData.createHooks(createFormDataSerializer({ FormData: FormDataNode as any }))
82
+ *
83
+ * // Fully custom serializer
84
+ * IEndpointFormData.createHooks((data) => {
85
+ * const fd = new FormData();
86
+ * // custom logic...
87
+ * return fd;
88
+ * })
89
+ * ```
90
+ */
91
+ function createHooks(serializer) {
92
+ return {
93
+ beforeRequest: (config) => {
94
+ if (!guard(config._meta.api) || !config.data) {
95
+ return;
96
+ }
97
+ // Skip if data was already transformed by a previous hook (e.g., to FormData, Blob, string)
98
+ if (!isPlainObject(config.data)) {
99
+ return;
100
+ }
101
+ const endpoint = config._meta.api;
102
+ const ser = typeof endpoint.formData === 'function'
103
+ ? endpoint.formData
104
+ : serializer;
105
+ config.data = ser(config.data);
106
+ },
107
+ };
108
+ }
109
+ IEndpointFormData.createHooks = createHooks;
110
+ })(IEndpointFormData || (IEndpointFormData = {}));
111
+ //# sourceMappingURL=formData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formData.js","sourceRoot":"","sources":["../../../../src/api/extensions/formData.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from './contentType.js';
2
+ export * from './formData.js';
2
3
  export * from './validation.js';
3
4
  export * from './endpointHooks.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
package/esm/dates/tz.js CHANGED
@@ -35,7 +35,7 @@ export var Timezones;
35
35
  if (sign === '+') {
36
36
  result *= -1;
37
37
  }
38
- return result;
38
+ return result || 0;
39
39
  }
40
40
  Timezones.getOffset = getOffset;
41
41
  /** Returns a new date with the specified timezone offset applied.
@@ -1 +1 @@
1
- {"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,KAAW,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IA7Be,mBAAS,YA6BxB,CAAA;IAED;;;;MAIE;IACF,SAAgB,eAAe,CAAC,IAAU,EAAE,EAAmB;QAC3D,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,QAAQ;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,yBAAe,kBAO9B,CAAA;AACL,CAAC,EAzDgB,SAAS,KAAT,SAAS,QAyDzB"}
1
+ {"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,KAAW,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,CAAC;IACvB,CAAC;IA7Be,mBAAS,YA6BxB,CAAA;IAED;;;;MAIE;IACF,SAAgB,eAAe,CAAC,IAAU,EAAE,EAAmB;QAC3D,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,QAAQ;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,yBAAe,kBAO9B,CAAA;AACL,CAAC,EAzDgB,SAAS,KAAT,SAAS,QAyDzB"}
@@ -1,20 +1,34 @@
1
+ import { createManualPromise } from '../../async/manualPromise.js';
1
2
  export class TasksQueue {
2
3
  limit;
3
4
  _items = [];
4
5
  _running = 0;
5
6
  _logger = null;
6
- constructor(limit) {
7
+ _delayBetweenTasks;
8
+ _onTaskError;
9
+ _delayedTasks = new Set();
10
+ constructor(limit, options) {
7
11
  this.limit = limit;
8
12
  if (!limit || limit < 0) {
9
13
  throw new Error('TasksQueue: limit should be a positive number');
10
14
  }
15
+ this._delayBetweenTasks = options?.delayBetweenTasks ?? 0;
16
+ this._onTaskError = options?.onTaskError;
11
17
  }
12
18
  get isFull() { return this._running >= this.limit; }
13
19
  get running() { return this._running; }
20
+ /** Number of tasks waiting in the queue (not including currently running) */
21
+ get pending() { return this._items.length; }
14
22
  addLogger(logger) {
15
23
  this._logger = logger;
16
24
  return this;
17
25
  }
26
+ /**
27
+ * Enqueue a task factory to run when a slot is available.
28
+ *
29
+ * **Note:** When `onTaskError` is provided in the constructor options and the factory throws,
30
+ * the error is passed to `onTaskError` and the returned promise resolves with `undefined`.
31
+ */
18
32
  enqueue(factory, name) {
19
33
  if (typeof factory !== 'function') {
20
34
  throw new Error('Invalid arg: factory not a function');
@@ -22,39 +36,71 @@ export class TasksQueue {
22
36
  if (this.isFull) {
23
37
  const item = {
24
38
  factory,
25
- finish: undefined,
39
+ promise: createManualPromise(),
26
40
  name,
27
41
  };
28
- const waitPromise = new Promise((resolve, reject) => {
29
- item.finish = async (res) => {
30
- try {
31
- const rr = await res;
32
- resolve(rr);
33
- return rr;
34
- }
35
- catch (err) {
36
- reject(err);
37
- throw err;
38
- }
39
- };
40
- });
41
42
  this._items.push(item);
42
- return waitPromise;
43
+ return item.promise.promise;
43
44
  }
44
- return this._runFactory(factory);
45
+ return this._runFactory(factory, name)
46
+ .then(res => res.ok === true ? res.result : undefined);
47
+ }
48
+ /** Enqueue a task to run after `delay` ms. Returns a promise and a cancel function. */
49
+ enqueueDelayed(factory, delay, name) {
50
+ const mp = createManualPromise();
51
+ let started = false;
52
+ const timer = setTimeout(() => {
53
+ started = true;
54
+ this._delayedTasks.delete(task);
55
+ this.enqueue(factory, name).then(result => mp.resolve(result), err => mp.reject(err));
56
+ }, delay);
57
+ const cancel = () => {
58
+ if (!started) {
59
+ clearTimeout(timer);
60
+ this._delayedTasks.delete(task);
61
+ mp.reject(new Error('Cancelled'));
62
+ }
63
+ };
64
+ const task = { promise: mp.promise, cancel };
65
+ this._delayedTasks.add(task);
66
+ return task;
67
+ }
68
+ /** Remove all pending tasks from the queue. Does not cancel running tasks. Also cancels all delayed enqueues.
69
+ * Pending enqueue() promises are rejected with a 'TasksQueue cleared' error so callers don't hang indefinitely.
70
+ * Delayed tasks are cancelled and their promises are rejected with a 'Cancelled' error. */
71
+ clear() {
72
+ const pending = this._items.splice(0);
73
+ if (pending.length > 0) {
74
+ const clearError = new Error('TasksQueue cleared');
75
+ for (const item of pending) {
76
+ item.promise.reject(clearError);
77
+ }
78
+ }
79
+ const delayed = [...this._delayedTasks];
80
+ for (const task of delayed) {
81
+ task.cancel();
82
+ }
83
+ this._delayedTasks.clear();
45
84
  }
46
85
  _runFactory = async (factory, name) => {
47
86
  this._running++;
48
87
  try {
49
88
  const result = await factory();
50
- return result;
89
+ return { ok: true, result };
51
90
  }
52
91
  catch (err) {
92
+ if (this._onTaskError) {
93
+ this._onTaskError(err, name || factory.name || undefined);
94
+ return { ok: false };
95
+ }
53
96
  this._logger?.warn(`Factory "${name || factory.name || '<unknown>'}" thrown. Rethrowing...`);
54
97
  throw err;
55
98
  }
56
99
  finally {
57
100
  this._running--;
101
+ if (this._delayBetweenTasks > 0 && this._items.length > 0) {
102
+ await new Promise(resolve => setTimeout(resolve, this._delayBetweenTasks));
103
+ }
58
104
  this._tryRunNext();
59
105
  }
60
106
  };
@@ -63,10 +109,16 @@ export class TasksQueue {
63
109
  return;
64
110
  }
65
111
  const next = this._items.shift();
66
- if (!next || !next.finish || !next.factory) {
112
+ if (!next || !next.factory || !next.promise) {
67
113
  return;
68
114
  }
69
- await next.finish(this._runFactory(next.factory));
115
+ try {
116
+ const res = await this._runFactory(next.factory, next.name);
117
+ next.promise.resolve(res.ok === true ? res.result : undefined);
118
+ }
119
+ catch (err) {
120
+ next.promise.reject(err);
121
+ }
70
122
  };
71
123
  }
72
124
  //# sourceMappingURL=tasks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ export * from './deep.js';
2
2
  export * from './getter.js';
3
3
  export * from './comparator.js';
4
4
  export * from './misc.js';
5
+ export * from './isPlainObject.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Checks if a value is a plain object (created by `{}`, `Object.create(null)`, or `new Object()`).
3
+ * Returns `false` for class instances like `FormData`, `Blob`, `Buffer`, etc.
4
+ */
5
+ export function isPlainObject(value) {
6
+ if (value == null || typeof value !== 'object') {
7
+ return false;
8
+ }
9
+ const proto = Object.getPrototypeOf(value);
10
+ return proto === Object.prototype || proto === null;
11
+ }
12
+ //# sourceMappingURL=isPlainObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPlainObject.js","sourceRoot":"","sources":["../../../src/types/isPlainObject.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IACxC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACxD,CAAC"}
@@ -17,7 +17,7 @@ export const ValidatorsRegExps = {
17
17
  creditCardNumber: /^\d+$/,
18
18
  expiryDateCard: /^\d+$/,
19
19
  cvv: /^\d+$/,
20
- website: /^(https?:\/\/)?((\p{N}|\p{L})+((((-?(\p{N}|\p{L})+)+)?)\.))+\p{L}{2,}(:[0-9]+)?(\/.*)?$/iu,
20
+ website: /^(https?:\/\/)?([\p{L}\p{N}]+(-[\p{L}\p{N}]+)*\.)+\p{L}{2,}(:[0-9]+)?(\/.*)?$/iu,
21
21
  linkedin: /^(https?:\/\/)?([a-z]+\d*[a-z]*\.)?linkedin\.com\/.*$/i,
22
22
  };
23
23
  export const Validators = {
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zajno/common",
3
- "version": "2.8.5",
3
+ "version": "2.8.7",
4
4
  "description": "Zajno's re-usable utilities for JS/TS projects",
5
5
  "private": false,
6
6
  "type": "module",
@@ -1 +1 @@
1
- {"root":["../src/api/builder.ts","../src/api/call.config.ts","../src/api/call.ts","../src/api/call.types.ts","../src/api/config.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/hooks.ts","../src/api/index.ts","../src/api/interceptor.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/endpointhooks.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/debounce.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/lazy/extensions.ts","../src/lazy/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/empty.ts","../src/logger/index.ts","../src/logger/loggable.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/provider.ts","../src/logger/proxy.ts","../src/logger/types.ts","../src/logger/buffered/base.ts","../src/logger/buffered/buffered.logger.ts","../src/logger/buffered/buffered.memory.ts","../src/logger/buffered/index.ts","../src/logger/buffered/file/buffered.file.ts","../src/logger/buffered/file/index.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/debouncedevent.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/timeout.ts","../src/observing/timer.ts","../src/observing/transition.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/extendobject.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/singleton.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.helpers.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.helpers.ts","../src/structures/path/types.ts","../src/structures/path/utils/combineurls.ts","../src/structures/path/utils/index.ts","../src/structures/path/utils/indextrim.ts","../src/structures/path/utils/optionals.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validationerror.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
1
+ {"root":["../src/api/builder.ts","../src/api/call.config.ts","../src/api/call.ts","../src/api/call.types.ts","../src/api/config.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/hooks.ts","../src/api/index.ts","../src/api/interceptor.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/endpointhooks.ts","../src/api/extensions/formdata.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/debounce.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/lazy/extensions.ts","../src/lazy/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/empty.ts","../src/logger/index.ts","../src/logger/loggable.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/provider.ts","../src/logger/proxy.ts","../src/logger/types.ts","../src/logger/buffered/base.ts","../src/logger/buffered/buffered.logger.ts","../src/logger/buffered/buffered.memory.ts","../src/logger/buffered/index.ts","../src/logger/buffered/file/buffered.file.ts","../src/logger/buffered/file/index.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/debouncedevent.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/timeout.ts","../src/observing/timer.ts","../src/observing/transition.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/extendobject.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/singleton.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.helpers.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.helpers.ts","../src/structures/path/types.ts","../src/structures/path/utils/combineurls.ts","../src/structures/path/utils/index.ts","../src/structures/path/utils/indextrim.ts","../src/structures/path/utils/optionals.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/isplainobject.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validationerror.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
@@ -1 +1 @@
1
- {"root":["../src/api/builder.ts","../src/api/call.config.ts","../src/api/call.ts","../src/api/call.types.ts","../src/api/config.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/hooks.ts","../src/api/index.ts","../src/api/interceptor.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/endpointhooks.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/debounce.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/lazy/extensions.ts","../src/lazy/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/empty.ts","../src/logger/index.ts","../src/logger/loggable.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/provider.ts","../src/logger/proxy.ts","../src/logger/types.ts","../src/logger/buffered/base.ts","../src/logger/buffered/buffered.logger.ts","../src/logger/buffered/buffered.memory.ts","../src/logger/buffered/index.ts","../src/logger/buffered/file/buffered.file.ts","../src/logger/buffered/file/index.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/debouncedevent.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/timeout.ts","../src/observing/timer.ts","../src/observing/transition.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/extendobject.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/singleton.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.helpers.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.helpers.ts","../src/structures/path/types.ts","../src/structures/path/utils/combineurls.ts","../src/structures/path/utils/index.ts","../src/structures/path/utils/indextrim.ts","../src/structures/path/utils/optionals.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validationerror.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
1
+ {"root":["../src/api/builder.ts","../src/api/call.config.ts","../src/api/call.ts","../src/api/call.types.ts","../src/api/config.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/hooks.ts","../src/api/index.ts","../src/api/interceptor.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/endpointhooks.ts","../src/api/extensions/formdata.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/debounce.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/lazy/extensions.ts","../src/lazy/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/empty.ts","../src/logger/index.ts","../src/logger/loggable.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/provider.ts","../src/logger/proxy.ts","../src/logger/types.ts","../src/logger/buffered/base.ts","../src/logger/buffered/buffered.logger.ts","../src/logger/buffered/buffered.memory.ts","../src/logger/buffered/index.ts","../src/logger/buffered/file/buffered.file.ts","../src/logger/buffered/file/index.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/debouncedevent.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/timeout.ts","../src/observing/timer.ts","../src/observing/transition.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/extendobject.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/singleton.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.helpers.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.helpers.ts","../src/structures/path/types.ts","../src/structures/path/utils/combineurls.ts","../src/structures/path/utils/index.ts","../src/structures/path/utils/indextrim.ts","../src/structures/path/utils/optionals.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/isplainobject.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validationerror.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
@@ -1 +1 @@
1
- {"root":["../src/api/builder.ts","../src/api/call.config.ts","../src/api/call.ts","../src/api/call.types.ts","../src/api/config.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/hooks.ts","../src/api/index.ts","../src/api/interceptor.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/endpointhooks.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/debounce.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/lazy/extensions.ts","../src/lazy/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/empty.ts","../src/logger/index.ts","../src/logger/loggable.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/provider.ts","../src/logger/proxy.ts","../src/logger/types.ts","../src/logger/buffered/base.ts","../src/logger/buffered/buffered.logger.ts","../src/logger/buffered/buffered.memory.ts","../src/logger/buffered/index.ts","../src/logger/buffered/file/buffered.file.ts","../src/logger/buffered/file/index.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/debouncedevent.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/timeout.ts","../src/observing/timer.ts","../src/observing/transition.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/extendobject.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/singleton.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.helpers.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.helpers.ts","../src/structures/path/types.ts","../src/structures/path/utils/combineurls.ts","../src/structures/path/utils/index.ts","../src/structures/path/utils/indextrim.ts","../src/structures/path/utils/optionals.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validationerror.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
1
+ {"root":["../src/api/builder.ts","../src/api/call.config.ts","../src/api/call.ts","../src/api/call.types.ts","../src/api/config.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/hooks.ts","../src/api/index.ts","../src/api/interceptor.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/endpointhooks.ts","../src/api/extensions/formdata.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/debounce.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/lazy/extensions.ts","../src/lazy/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/empty.ts","../src/logger/index.ts","../src/logger/loggable.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/provider.ts","../src/logger/proxy.ts","../src/logger/types.ts","../src/logger/buffered/base.ts","../src/logger/buffered/buffered.logger.ts","../src/logger/buffered/buffered.memory.ts","../src/logger/buffered/index.ts","../src/logger/buffered/file/buffered.file.ts","../src/logger/buffered/file/index.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/debouncedevent.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/timeout.ts","../src/observing/timer.ts","../src/observing/transition.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/extendobject.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/singleton.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.helpers.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.helpers.ts","../src/structures/path/types.ts","../src/structures/path/utils/combineurls.ts","../src/structures/path/utils/index.ts","../src/structures/path/utils/indextrim.ts","../src/structures/path/utils/optionals.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/isplainobject.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validationerror.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
@@ -0,0 +1,89 @@
1
+ import type { ApiEndpoint } from '../endpoint.js';
2
+ import type { IEndpointInfo } from '../endpoint.types.js';
3
+ import type { CallerHooks } from '../hooks.js';
4
+ /**
5
+ * Serializer function that converts a plain object into a FormData instance (or similar body).
6
+ */
7
+ export type IFormDataSerializer = (data: Record<string, unknown>) => unknown;
8
+ /**
9
+ * Options for the default FormData serializer factory.
10
+ */
11
+ export interface FormDataSerializerOptions {
12
+ /**
13
+ * FormData constructor to use. Defaults to `globalThis.FormData`.
14
+ *
15
+ * Useful for:
16
+ * - Older Node.js versions using `form-data` npm package
17
+ * - Testing with mocks
18
+ */
19
+ FormData?: new () => FormData;
20
+ /**
21
+ * How to serialize non-primitive, non-Blob values (e.g., nested objects, arrays).
22
+ * - `'json'` (default): `JSON.stringify(value)`
23
+ * - Custom function: `(key, value) => string | Blob`
24
+ */
25
+ serializeValue?: 'json' | ((key: string, value: unknown) => string | Blob);
26
+ }
27
+ /**
28
+ * Creates a default FormData serializer.
29
+ *
30
+ * Iterates over own enumerable properties of the data object and appends them to a new FormData instance.
31
+ *
32
+ * - `Blob`/`File` values are appended as-is
33
+ * - `null`/`undefined` values are skipped
34
+ * - Primitive values are converted to strings
35
+ * - Objects/arrays are JSON-stringified by default (configurable via `serializeValue`)
36
+ */
37
+ export declare function createFormDataSerializer(options?: FormDataSerializerOptions): IFormDataSerializer;
38
+ /**
39
+ * FormData serialization extension for endpoint.
40
+ *
41
+ * Marks an endpoint to have its request body serialized as FormData before sending.
42
+ * Works with any HTTP transport (fetch, axios, etc.) — the library converts the plain object
43
+ * to FormData via a configurable serializer, so the transport receives a ready-to-send FormData body.
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const Endpoint = ApiEndpoint.create.extend(IEndpointFormData.extender);
48
+ *
49
+ * const upload = Endpoint('Upload')
50
+ * .post<{ name: string, file: File }, { url: string }>()
51
+ * .asFormData();
52
+ * ```
53
+ */
54
+ export interface IEndpointFormData {
55
+ /** Whether this endpoint should serialize body data as FormData. `true` uses the default serializer; a function uses a custom one. */
56
+ readonly formData?: boolean | IFormDataSerializer;
57
+ /** Marks this endpoint to serialize request body as FormData using the provided (or default) serializer. */
58
+ asFormData(serializer?: IFormDataSerializer): this;
59
+ }
60
+ export declare namespace IEndpointFormData {
61
+ const extender: ApiEndpoint.IBuilderExtender<IEndpointFormData>;
62
+ function guard(api: IEndpointInfo): api is (IEndpointInfo & IEndpointFormData);
63
+ /**
64
+ * Creates caller hooks for FormData serialization.
65
+ *
66
+ * The hook converts `config.data` (plain object) into a FormData instance using the provided serializer.
67
+ *
68
+ * @param serializer - Default serializer used when endpoint has `.asFormData()` without a custom serializer.
69
+ * Use {@link createFormDataSerializer} for the built-in one, or provide a fully custom function.
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * // Simplest setup (global FormData, JSON-stringify objects)
74
+ * IEndpointFormData.createHooks(createFormDataSerializer())
75
+ *
76
+ * // Custom FormData constructor
77
+ * import FormDataNode from 'form-data';
78
+ * IEndpointFormData.createHooks(createFormDataSerializer({ FormData: FormDataNode as any }))
79
+ *
80
+ * // Fully custom serializer
81
+ * IEndpointFormData.createHooks((data) => {
82
+ * const fd = new FormData();
83
+ * // custom logic...
84
+ * return fd;
85
+ * })
86
+ * ```
87
+ */
88
+ function createHooks(serializer: IFormDataSerializer): CallerHooks<object>;
89
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './contentType.js';
2
+ export * from './formData.js';
2
3
  export * from './validation.js';
3
4
  export * from './endpointHooks.js';
@@ -1,15 +1,44 @@
1
1
  import type { ILogger } from '../../logger/index.js';
2
2
  type Factory<T> = () => Promise<T>;
3
+ export type DelayedTask<T> = {
4
+ /** Promise that resolves with the task result, or rejects if the task throws or is cancelled. */
5
+ readonly promise: Promise<T | undefined>;
6
+ /** Cancel the delayed task. If the task hasn't started yet, the promise rejects with a 'Cancelled' error. */
7
+ readonly cancel: () => void;
8
+ };
9
+ export type TasksQueueOptions = {
10
+ /** Delay in ms to wait after each task before starting the next one. Default: 0 */
11
+ delayBetweenTasks?: number;
12
+ /** Called when a task throws. If provided, the error is NOT propagated to the enqueue() promise. */
13
+ onTaskError?: (error: unknown, name?: string) => void;
14
+ };
3
15
  export declare class TasksQueue<T> {
4
16
  readonly limit: number;
5
17
  private readonly _items;
6
18
  private _running;
7
19
  private _logger;
8
- constructor(limit: number);
20
+ private readonly _delayBetweenTasks;
21
+ private readonly _onTaskError;
22
+ private readonly _delayedTasks;
23
+ constructor(limit: number, options?: TasksQueueOptions);
9
24
  get isFull(): boolean;
10
25
  get running(): number;
26
+ /** Number of tasks waiting in the queue (not including currently running) */
27
+ get pending(): number;
11
28
  addLogger(logger: ILogger): this;
12
- enqueue(factory: Factory<T>, name?: string): Promise<T>;
29
+ /**
30
+ * Enqueue a task factory to run when a slot is available.
31
+ *
32
+ * **Note:** When `onTaskError` is provided in the constructor options and the factory throws,
33
+ * the error is passed to `onTaskError` and the returned promise resolves with `undefined`.
34
+ */
35
+ enqueue(factory: Factory<T>, name?: string): Promise<T | undefined>;
36
+ /** Enqueue a task to run after `delay` ms. Returns a promise and a cancel function. */
37
+ enqueueDelayed(factory: Factory<T>, delay: number, name?: string): DelayedTask<T>;
38
+ /** Remove all pending tasks from the queue. Does not cancel running tasks. Also cancels all delayed enqueues.
39
+ * Pending enqueue() promises are rejected with a 'TasksQueue cleared' error so callers don't hang indefinitely.
40
+ * Delayed tasks are cancelled and their promises are rejected with a 'Cancelled' error. */
41
+ clear(): void;
13
42
  private _runFactory;
14
43
  private _tryRunNext;
15
44
  }
@@ -2,3 +2,4 @@ export * from './deep.js';
2
2
  export * from './getter.js';
3
3
  export * from './comparator.js';
4
4
  export * from './misc.js';
5
+ export * from './isPlainObject.js';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Checks if a value is a plain object (created by `{}`, `Object.create(null)`, or `new Object()`).
3
+ * Returns `false` for class instances like `FormData`, `Blob`, `Buffer`, etc.
4
+ */
5
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;