@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.
- package/cjs/api/call.config.js +10 -0
- package/cjs/api/call.config.js.map +1 -1
- package/cjs/api/extensions/formData.js +115 -0
- package/cjs/api/extensions/formData.js.map +1 -0
- package/cjs/api/extensions/index.js +1 -0
- package/cjs/api/extensions/index.js.map +1 -1
- package/cjs/dates/tz.js +1 -1
- package/cjs/dates/tz.js.map +1 -1
- package/cjs/structures/queue/tasks.js +72 -20
- package/cjs/structures/queue/tasks.js.map +1 -1
- package/cjs/types/index.js +1 -0
- package/cjs/types/index.js.map +1 -1
- package/cjs/types/isPlainObject.js +15 -0
- package/cjs/types/isPlainObject.js.map +1 -0
- package/cjs/validation/validators.js +1 -1
- package/cjs/validation/validators.js.map +1 -1
- package/esm/api/call.config.js +10 -0
- package/esm/api/call.config.js.map +1 -1
- package/esm/api/extensions/formData.js +111 -0
- package/esm/api/extensions/formData.js.map +1 -0
- package/esm/api/extensions/index.js +1 -0
- package/esm/api/extensions/index.js.map +1 -1
- package/esm/dates/tz.js +1 -1
- package/esm/dates/tz.js.map +1 -1
- package/esm/structures/queue/tasks.js +72 -20
- package/esm/structures/queue/tasks.js.map +1 -1
- package/esm/types/index.js +1 -0
- package/esm/types/index.js.map +1 -1
- package/esm/types/isPlainObject.js +12 -0
- package/esm/types/isPlainObject.js.map +1 -0
- package/esm/validation/validators.js +1 -1
- package/esm/validation/validators.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/tsconfig.types.tsbuildinfo +1 -1
- package/types/api/extensions/formData.d.ts +89 -0
- package/types/api/extensions/index.d.ts +1 -0
- package/types/structures/queue/tasks.d.ts +31 -2
- package/types/types/index.d.ts +1 -0
- package/types/types/isPlainObject.d.ts +5 -0
package/cjs/api/call.config.js
CHANGED
|
@@ -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":";;;
|
|
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
package/cjs/dates/tz.js.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
115
|
+
if (!next || !next.factory || !next.promise) {
|
|
70
116
|
return;
|
|
71
117
|
}
|
|
72
|
-
|
|
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":";;;
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":"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"}
|
package/cjs/types/index.js
CHANGED
|
@@ -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
|
package/cjs/types/index.js.map
CHANGED
|
@@ -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?:\/\/)?(
|
|
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":";;;;AAAA,4EAAyC;AACzC,+DAAyD;AAE5C,QAAA,iBAAiB,GAAG;IAC7B,wCAAwC;IACxC,6CAA6C;IAC7C,IAAI,EAAE,qCAAqC;IAC3C,cAAc,EAAE,iBAAiB;IACjC,KAAK,EAAE,kEAAkE;IAEzE,+CAA+C;IAC/C,mCAAmC;IACnC,sDAAsD;IACtD,mDAAmD;IACnD,QAAQ,EAAE,kDAAkD;IAE5D,WAAW,EAAE,aAAa;IAE1B,qCAAqC;IACrC,SAAS,EAAE,OAAO;IAClB,gBAAgB,EAAE,OAAO;IACzB,cAAc,EAAE,OAAO;IACvB,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":"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"}
|
package/esm/api/call.config.js
CHANGED
|
@@ -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":"AAAA,OAAO,EAAkB,MAAM,kBAAkB,CAAC;
|
|
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 +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
package/esm/dates/tz.js.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
112
|
+
if (!next || !next.factory || !next.promise) {
|
|
67
113
|
return;
|
|
68
114
|
}
|
|
69
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":"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"}
|
package/esm/types/index.js
CHANGED
package/esm/types/index.js.map
CHANGED
|
@@ -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?:\/\/)?(
|
|
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":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,wCAAwC;IACxC,6CAA6C;IAC7C,IAAI,EAAE,qCAAqC;IAC3C,cAAc,EAAE,iBAAiB;IACjC,KAAK,EAAE,kEAAkE;IAEzE,+CAA+C;IAC/C,mCAAmC;IACnC,sDAAsD;IACtD,mDAAmD;IACnD,QAAQ,EAAE,kDAAkD;IAE5D,WAAW,EAAE,aAAa;IAE1B,qCAAqC;IACrC,SAAS,EAAE,OAAO;IAClB,gBAAgB,EAAE,OAAO;IACzB,cAAc,EAAE,OAAO;IACvB,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/tsconfig.cjs.tsbuildinfo
CHANGED
|
@@ -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"}
|
package/tsconfig.esm.tsbuildinfo
CHANGED
|
@@ -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,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
|
-
|
|
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
|
-
|
|
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
|
}
|
package/types/types/index.d.ts
CHANGED
|
@@ -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>;
|