@strapi/utils 4.10.1-experimental.0 → 4.10.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/async.d.ts +15 -0
- package/dist/async.js +33 -0
- package/dist/async.js.map +1 -0
- package/dist/code-generator.d.ts +2 -0
- package/dist/code-generator.js +11 -0
- package/dist/code-generator.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.js +79 -0
- package/dist/config.js.map +1 -0
- package/dist/content-types.d.ts +60 -0
- package/dist/content-types.js +143 -0
- package/dist/content-types.js.map +1 -0
- package/dist/env-helper.d.ts +2 -0
- package/dist/env-helper.js +83 -0
- package/dist/env-helper.js.map +1 -0
- package/dist/errors.d.ts +37 -0
- package/dist/errors.js +100 -0
- package/dist/errors.js.map +1 -0
- package/dist/file.d.ts +16 -0
- package/dist/file.js +54 -0
- package/dist/file.js.map +1 -0
- package/dist/format-yup-error.d.ts +10 -0
- package/dist/format-yup-error.js +17 -0
- package/dist/format-yup-error.js.map +1 -0
- package/dist/hooks.d.ts +92 -0
- package/dist/hooks.js +89 -0
- package/dist/hooks.js.map +1 -0
- package/dist/import-default.d.ts +2 -0
- package/dist/import-default.js +7 -0
- package/dist/import-default.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/object-formatting.d.ts +3 -0
- package/dist/object-formatting.js +14 -0
- package/dist/object-formatting.js.map +1 -0
- package/dist/pagination.d.ts +14 -0
- package/dist/pagination.js +80 -0
- package/dist/pagination.js.map +1 -0
- package/dist/parse-multipart.d.ts +8 -0
- package/dist/parse-multipart.js +36 -0
- package/dist/parse-multipart.js.map +1 -0
- package/dist/parse-type.d.ts +1 -0
- package/dist/parse-type.js +95 -0
- package/dist/parse-type.js.map +1 -0
- package/dist/policy.d.ts +41 -0
- package/dist/policy.js +109 -0
- package/dist/policy.js.map +1 -0
- package/dist/print-value.d.ts +2 -0
- package/dist/print-value.js +50 -0
- package/dist/print-value.js.map +1 -0
- package/dist/provider-factory.d.ts +84 -0
- package/dist/provider-factory.js +87 -0
- package/dist/provider-factory.js.map +1 -0
- package/dist/relations.d.ts +10 -0
- package/dist/relations.js +23 -0
- package/dist/relations.js.map +1 -0
- package/dist/sanitize/index.d.ts +28 -0
- package/dist/sanitize/index.js +135 -0
- package/dist/sanitize/index.js.map +1 -0
- package/dist/sanitize/sanitizers.d.ts +10 -0
- package/dist/sanitize/sanitizers.js +106 -0
- package/dist/sanitize/sanitizers.js.map +1 -0
- package/dist/sanitize/visitors/allowed-fields.d.ts +3 -0
- package/dist/sanitize/visitors/allowed-fields.js +83 -0
- package/dist/sanitize/visitors/allowed-fields.js.map +1 -0
- package/dist/sanitize/visitors/index.d.ts +7 -0
- package/dist/sanitize/visitors/index.js +21 -0
- package/dist/sanitize/visitors/index.js.map +1 -0
- package/dist/sanitize/visitors/remove-dynamic-zones.d.ts +3 -0
- package/dist/sanitize/visitors/remove-dynamic-zones.js +10 -0
- package/dist/sanitize/visitors/remove-dynamic-zones.js.map +1 -0
- package/dist/sanitize/visitors/remove-morph-to-relations.d.ts +3 -0
- package/dist/sanitize/visitors/remove-morph-to-relations.js +10 -0
- package/dist/sanitize/visitors/remove-morph-to-relations.js.map +1 -0
- package/dist/sanitize/visitors/remove-password.d.ts +3 -0
- package/dist/sanitize/visitors/remove-password.js +9 -0
- package/dist/sanitize/visitors/remove-password.js.map +1 -0
- package/dist/sanitize/visitors/remove-private.d.ts +3 -0
- package/dist/sanitize/visitors/remove-private.js +14 -0
- package/dist/sanitize/visitors/remove-private.js.map +1 -0
- package/dist/sanitize/visitors/remove-restricted-relations.d.ts +3 -0
- package/dist/sanitize/visitors/remove-restricted-relations.js +88 -0
- package/dist/sanitize/visitors/remove-restricted-relations.js.map +1 -0
- package/dist/sanitize/visitors/restricted-fields.d.ts +3 -0
- package/dist/sanitize/visitors/restricted-fields.js +25 -0
- package/dist/sanitize/visitors/restricted-fields.js.map +1 -0
- package/dist/set-creator-fields.d.ts +9 -0
- package/dist/set-creator-fields.js +37 -0
- package/dist/set-creator-fields.js.map +1 -0
- package/dist/string-formatting.d.ts +16 -0
- package/dist/string-formatting.js +85 -0
- package/dist/string-formatting.js.map +1 -0
- package/dist/template-configuration.d.ts +5 -0
- package/dist/template-configuration.js +28 -0
- package/dist/template-configuration.js.map +1 -0
- package/dist/template.d.ts +9 -0
- package/dist/template.js +20 -0
- package/dist/template.js.map +1 -0
- package/dist/traverse/factory.d.ts +13 -0
- package/dist/traverse/factory.js +126 -0
- package/dist/traverse/factory.js.map +1 -0
- package/dist/traverse/index.d.ts +5 -0
- package/dist/traverse/index.js +17 -0
- package/dist/traverse/index.js.map +1 -0
- package/dist/traverse/query-fields.d.ts +3 -0
- package/dist/traverse/query-fields.js +35 -0
- package/dist/traverse/query-fields.js.map +1 -0
- package/dist/traverse/query-filters.d.ts +3 -0
- package/dist/traverse/query-filters.js +73 -0
- package/dist/traverse/query-filters.js.map +1 -0
- package/dist/traverse/query-populate.d.ts +3 -0
- package/dist/traverse/query-populate.js +140 -0
- package/dist/traverse/query-populate.js.map +1 -0
- package/dist/traverse/query-sort.d.ts +3 -0
- package/dist/traverse/query-sort.js +114 -0
- package/dist/traverse/query-sort.js.map +1 -0
- package/dist/traverse-entity.d.ts +33 -0
- package/dist/traverse-entity.js +134 -0
- package/dist/traverse-entity.js.map +1 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/validators.d.ts +5 -0
- package/dist/validators.js +110 -0
- package/dist/validators.js.map +1 -0
- package/dist/webhook.d.ts +10 -0
- package/dist/webhook.js +14 -0
- package/dist/webhook.js.map +1 -0
- package/index.d.ts +5 -3
- package/package.json +2 -2
- package/coverage/clover.xml +0 -638
- package/coverage/coverage-final.json +0 -24
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -146
- package/coverage/lcov-report/lib/async.js.html +0 -223
- package/coverage/lcov-report/lib/content-types.js.html +0 -643
- package/coverage/lcov-report/lib/env-helper.js.html +0 -319
- package/coverage/lcov-report/lib/errors.js.html +0 -397
- package/coverage/lcov-report/lib/format-yup-error.js.html +0 -145
- package/coverage/lcov-report/lib/hooks.js.html +0 -415
- package/coverage/lcov-report/lib/import-default.js.html +0 -115
- package/coverage/lcov-report/lib/index.html +0 -326
- package/coverage/lcov-report/lib/pagination.js.html +0 -382
- package/coverage/lcov-report/lib/parse-type.js.html +0 -385
- package/coverage/lcov-report/lib/policy.js.html +0 -472
- package/coverage/lcov-report/lib/print-value.js.html +0 -241
- package/coverage/lcov-report/lib/provider-factory.js.html +0 -433
- package/coverage/lcov-report/lib/relations.js.html +0 -178
- package/coverage/lcov-report/lib/sanitize/visitors/allowed-fields.js.html +0 -367
- package/coverage/lcov-report/lib/sanitize/visitors/index.html +0 -191
- package/coverage/lcov-report/lib/sanitize/visitors/index.js.html +0 -112
- package/coverage/lcov-report/lib/sanitize/visitors/remove-password.js.html +0 -106
- package/coverage/lcov-report/lib/sanitize/visitors/remove-private.js.html +0 -118
- package/coverage/lcov-report/lib/sanitize/visitors/remove-restricted-relations.js.html +0 -316
- package/coverage/lcov-report/lib/sanitize/visitors/restricted-fields.js.html +0 -181
- package/coverage/lcov-report/lib/string-formatting.js.html +0 -322
- package/coverage/lcov-report/lib/validators.js.html +0 -445
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
package/dist/file.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.writableDiscardStream = exports.getStreamSize = exports.kbytesToBytes = exports.bytesToKbytes = exports.bytesToHumanReadable = exports.streamToBuffer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Utils file containing file treatment utils
|
|
6
|
+
*/
|
|
7
|
+
const node_stream_1 = require("node:stream");
|
|
8
|
+
const kbytesToBytes = (kbytes) => kbytes * 1000;
|
|
9
|
+
exports.kbytesToBytes = kbytesToBytes;
|
|
10
|
+
const bytesToKbytes = (bytes) => Math.round((bytes / 1000) * 100) / 100;
|
|
11
|
+
exports.bytesToKbytes = bytesToKbytes;
|
|
12
|
+
const bytesToHumanReadable = (bytes) => {
|
|
13
|
+
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];
|
|
14
|
+
if (bytes === 0)
|
|
15
|
+
return '0 Bytes';
|
|
16
|
+
const i = parseInt(`${Math.floor(Math.log(bytes) / Math.log(1000))}`, 10);
|
|
17
|
+
return `${Math.round(bytes / 1000 ** i)} ${sizes[i]}`;
|
|
18
|
+
};
|
|
19
|
+
exports.bytesToHumanReadable = bytesToHumanReadable;
|
|
20
|
+
const streamToBuffer = (stream) => new Promise((resolve, reject) => {
|
|
21
|
+
const chunks = [];
|
|
22
|
+
stream.on('data', (chunk) => {
|
|
23
|
+
chunks.push(chunk);
|
|
24
|
+
});
|
|
25
|
+
stream.on('end', () => {
|
|
26
|
+
resolve(Buffer.concat(chunks));
|
|
27
|
+
});
|
|
28
|
+
stream.on('error', reject);
|
|
29
|
+
});
|
|
30
|
+
exports.streamToBuffer = streamToBuffer;
|
|
31
|
+
const getStreamSize = (stream) => new Promise((resolve, reject) => {
|
|
32
|
+
let size = 0;
|
|
33
|
+
stream.on('data', (chunk) => {
|
|
34
|
+
size += Buffer.byteLength(chunk);
|
|
35
|
+
});
|
|
36
|
+
stream.on('close', () => resolve(size));
|
|
37
|
+
stream.on('error', reject);
|
|
38
|
+
stream.resume();
|
|
39
|
+
});
|
|
40
|
+
exports.getStreamSize = getStreamSize;
|
|
41
|
+
/**
|
|
42
|
+
* Create a writeable Node.js stream that discards received data.
|
|
43
|
+
* Useful for testing, draining a stream of data, etc.
|
|
44
|
+
*/
|
|
45
|
+
function writableDiscardStream(options) {
|
|
46
|
+
return new node_stream_1.Writable({
|
|
47
|
+
...options,
|
|
48
|
+
write(chunk, encding, callback) {
|
|
49
|
+
setImmediate(callback);
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
exports.writableDiscardStream = writableDiscardStream;
|
|
54
|
+
//# sourceMappingURL=file.js.map
|
package/dist/file.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,6CAAkE;AAElE,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;AAiDtD,sCAAa;AAhDf,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AA+C9E,sCAAa;AA9Cf,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,EAAE;IAC7C,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AAwCA,oDAAoB;AAtCtB,MAAM,cAAc,GAAG,CAAC,MAAgB,EAAE,EAAE,CAC1C,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QACpB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AA2BH,wCAAc;AAzBhB,MAAM,aAAa,GAAG,CAAC,MAAgB,EAAE,EAAE,CACzC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1B,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,MAAM,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAoBH,sCAAa;AAlBf;;;GAGG;AACH,SAAS,qBAAqB,CAAC,OAAwB;IACrD,OAAO,IAAI,sBAAQ,CAAC;QAClB,GAAG,OAAO;QACV,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ;YAC5B,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAQC,sDAAqB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatYupErrors = void 0;
|
|
4
|
+
const fp_1 = require("lodash/fp");
|
|
5
|
+
const formatYupInnerError = (yupError) => ({
|
|
6
|
+
path: (0, fp_1.toPath)(yupError.path),
|
|
7
|
+
message: yupError.message,
|
|
8
|
+
name: yupError.name,
|
|
9
|
+
});
|
|
10
|
+
const formatYupErrors = (yupError) => ({
|
|
11
|
+
errors: (0, fp_1.isEmpty)(yupError.inner)
|
|
12
|
+
? [formatYupInnerError(yupError)]
|
|
13
|
+
: yupError.inner.map(formatYupInnerError),
|
|
14
|
+
message: yupError.message,
|
|
15
|
+
});
|
|
16
|
+
exports.formatYupErrors = formatYupErrors;
|
|
17
|
+
//# sourceMappingURL=format-yup-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-yup-error.js","sourceRoot":"","sources":["../src/format-yup-error.ts"],"names":[],"mappings":";;;AAAA,kCAA4C;AAG5C,MAAM,mBAAmB,GAAG,CAAC,QAAyB,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,EAAE,IAAA,WAAM,EAAC,QAAQ,CAAC,IAAI,CAAC;IAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;IACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;CACpB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,QAAyB,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,EAAE,IAAA,YAAO,EAAC,QAAQ,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC3C,OAAO,EAAE,QAAQ,CAAC,OAAO;CAC1B,CAAC,CAAC;AAEM,0CAAe"}
|
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export interface Handler {
|
|
2
|
+
(...args: any[]): any;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Create an async series hook.
|
|
6
|
+
* Upon execution, it will execute every handler in order with the same context
|
|
7
|
+
*/
|
|
8
|
+
declare const createAsyncSeriesHook: <T extends Handler = Handler>() => {
|
|
9
|
+
call(context: unknown): Promise<void>;
|
|
10
|
+
getHandlers(): T[];
|
|
11
|
+
register(handler: T): {
|
|
12
|
+
getHandlers(): T[];
|
|
13
|
+
register(handler: T): any;
|
|
14
|
+
delete(handler: T): any;
|
|
15
|
+
call(): never;
|
|
16
|
+
};
|
|
17
|
+
delete(handler: T): {
|
|
18
|
+
getHandlers(): T[];
|
|
19
|
+
register(handler: T): any;
|
|
20
|
+
delete(handler: T): any;
|
|
21
|
+
call(): never;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Create an async series waterfall hook.
|
|
26
|
+
* Upon execution, it will execute every handler in order and pass the return value of the last handler to the next one
|
|
27
|
+
*/
|
|
28
|
+
declare const createAsyncSeriesWaterfallHook: <T extends Handler = Handler>() => {
|
|
29
|
+
call(param: unknown): Promise<unknown>;
|
|
30
|
+
getHandlers(): T[];
|
|
31
|
+
register(handler: T): {
|
|
32
|
+
getHandlers(): T[];
|
|
33
|
+
register(handler: T): any;
|
|
34
|
+
delete(handler: T): any;
|
|
35
|
+
call(): never;
|
|
36
|
+
};
|
|
37
|
+
delete(handler: T): {
|
|
38
|
+
getHandlers(): T[];
|
|
39
|
+
register(handler: T): any;
|
|
40
|
+
delete(handler: T): any;
|
|
41
|
+
call(): never;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Create an async parallel hook.
|
|
46
|
+
* Upon execution, it will execute every registered handler in band.
|
|
47
|
+
*/
|
|
48
|
+
declare const createAsyncParallelHook: <T extends Handler = Handler>() => {
|
|
49
|
+
call(context: unknown): Promise<any[]>;
|
|
50
|
+
getHandlers(): T[];
|
|
51
|
+
register(handler: T): {
|
|
52
|
+
getHandlers(): T[];
|
|
53
|
+
register(handler: T): any;
|
|
54
|
+
delete(handler: T): any;
|
|
55
|
+
call(): never;
|
|
56
|
+
};
|
|
57
|
+
delete(handler: T): {
|
|
58
|
+
getHandlers(): T[];
|
|
59
|
+
register(handler: T): any;
|
|
60
|
+
delete(handler: T): any;
|
|
61
|
+
call(): never;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Create an async parallel hook.
|
|
66
|
+
* Upon execution, it will execute every registered handler in serie and return the first result found.
|
|
67
|
+
*/
|
|
68
|
+
declare const createAsyncBailHook: <T extends Handler = Handler>() => {
|
|
69
|
+
call(context: unknown): Promise<any>;
|
|
70
|
+
getHandlers(): T[];
|
|
71
|
+
register(handler: T): {
|
|
72
|
+
getHandlers(): T[];
|
|
73
|
+
register(handler: T): any;
|
|
74
|
+
delete(handler: T): any;
|
|
75
|
+
call(): never;
|
|
76
|
+
};
|
|
77
|
+
delete(handler: T): {
|
|
78
|
+
getHandlers(): T[];
|
|
79
|
+
register(handler: T): any;
|
|
80
|
+
delete(handler: T): any;
|
|
81
|
+
call(): never;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
export declare const internals: {
|
|
85
|
+
createHook: <T extends Handler = Handler>() => {
|
|
86
|
+
getHandlers(): T[];
|
|
87
|
+
register(handler: T): any;
|
|
88
|
+
delete(handler: T): any;
|
|
89
|
+
call(): never;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
export { createAsyncSeriesHook, createAsyncSeriesWaterfallHook, createAsyncParallelHook, createAsyncBailHook, };
|
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAsyncBailHook = exports.createAsyncParallelHook = exports.createAsyncSeriesWaterfallHook = exports.createAsyncSeriesHook = exports.internals = void 0;
|
|
4
|
+
const fp_1 = require("lodash/fp");
|
|
5
|
+
/**
|
|
6
|
+
* Create a default Strapi hook
|
|
7
|
+
*/
|
|
8
|
+
const createHook = () => {
|
|
9
|
+
const state = {
|
|
10
|
+
handlers: [],
|
|
11
|
+
};
|
|
12
|
+
return {
|
|
13
|
+
getHandlers() {
|
|
14
|
+
return state.handlers;
|
|
15
|
+
},
|
|
16
|
+
register(handler) {
|
|
17
|
+
state.handlers.push(handler);
|
|
18
|
+
return this;
|
|
19
|
+
},
|
|
20
|
+
delete(handler) {
|
|
21
|
+
state.handlers = (0, fp_1.remove)((0, fp_1.eq)(handler), state.handlers);
|
|
22
|
+
return this;
|
|
23
|
+
},
|
|
24
|
+
call() {
|
|
25
|
+
throw new Error('Method not implemented');
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Create an async series hook.
|
|
31
|
+
* Upon execution, it will execute every handler in order with the same context
|
|
32
|
+
*/
|
|
33
|
+
const createAsyncSeriesHook = () => ({
|
|
34
|
+
...createHook(),
|
|
35
|
+
async call(context) {
|
|
36
|
+
for (const handler of this.getHandlers()) {
|
|
37
|
+
await handler(context);
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
exports.createAsyncSeriesHook = createAsyncSeriesHook;
|
|
42
|
+
/**
|
|
43
|
+
* Create an async series waterfall hook.
|
|
44
|
+
* Upon execution, it will execute every handler in order and pass the return value of the last handler to the next one
|
|
45
|
+
*/
|
|
46
|
+
const createAsyncSeriesWaterfallHook = () => ({
|
|
47
|
+
...createHook(),
|
|
48
|
+
async call(param) {
|
|
49
|
+
let res = param;
|
|
50
|
+
for (const handler of this.getHandlers()) {
|
|
51
|
+
res = await handler(res);
|
|
52
|
+
}
|
|
53
|
+
return res;
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
exports.createAsyncSeriesWaterfallHook = createAsyncSeriesWaterfallHook;
|
|
57
|
+
/**
|
|
58
|
+
* Create an async parallel hook.
|
|
59
|
+
* Upon execution, it will execute every registered handler in band.
|
|
60
|
+
*/
|
|
61
|
+
const createAsyncParallelHook = () => ({
|
|
62
|
+
...createHook(),
|
|
63
|
+
async call(context) {
|
|
64
|
+
const promises = this.getHandlers().map((handler) => handler((0, fp_1.cloneDeep)(context)));
|
|
65
|
+
return Promise.all(promises);
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
exports.createAsyncParallelHook = createAsyncParallelHook;
|
|
69
|
+
/**
|
|
70
|
+
* Create an async parallel hook.
|
|
71
|
+
* Upon execution, it will execute every registered handler in serie and return the first result found.
|
|
72
|
+
*/
|
|
73
|
+
const createAsyncBailHook = () => ({
|
|
74
|
+
...createHook(),
|
|
75
|
+
async call(context) {
|
|
76
|
+
for (const handler of this.getHandlers()) {
|
|
77
|
+
const result = await handler(context);
|
|
78
|
+
if (result !== undefined) {
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
exports.createAsyncBailHook = createAsyncBailHook;
|
|
85
|
+
exports.internals = {
|
|
86
|
+
// Internal utils
|
|
87
|
+
createHook,
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":";;;AAAA,kCAAkD;AAMlD;;GAEG;AACH,MAAM,UAAU,GAAG,GAAgC,EAAE;IAKnD,MAAM,KAAK,GAAU;QACnB,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,OAAO;QACL,WAAW;YACT,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QAED,QAAQ,CAAC,OAAU;YACjB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,OAAU;YACf,KAAK,CAAC,QAAQ,GAAG,IAAA,WAAM,EAAC,IAAA,OAAE,EAAC,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAErD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI;YACF,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,qBAAqB,GAAG,GAAgC,EAAE,CAAC,CAAC;IAChE,GAAG,UAAU,EAAK;IAElB,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACxC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;SACxB;IACH,CAAC;CACF,CAAC,CAAC;AA0DD,sDAAqB;AAxDvB;;;GAGG;AACH,MAAM,8BAA8B,GAAG,GAAgC,EAAE,CAAC,CAAC;IACzE,GAAG,UAAU,EAAK;IAElB,KAAK,CAAC,IAAI,CAAC,KAAc;QACvB,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACxC,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;SAC1B;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC,CAAC;AAyCD,wEAA8B;AAvChC;;;GAGG;AACH,MAAM,uBAAuB,GAAG,GAAgC,EAAE,CAAC,CAAC;IAClE,GAAG,UAAU,EAAK;IAElB,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAA,cAAS,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElF,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC;AA4BD,0DAAuB;AA1BzB;;;GAGG;AACH,MAAM,mBAAmB,GAAG,GAAgC,EAAE,CAAC,CAAC;IAC9D,GAAG,UAAU,EAAK;IAElB,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YAEtC,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,OAAO,MAAM,CAAC;aACf;SACF;IACH,CAAC;CACF,CAAC,CAAC;AAWD,kDAAmB;AATR,QAAA,SAAS,GAAG;IACvB,iBAAiB;IACjB,UAAU;CACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-default.js","sourceRoot":"","sources":["../src/import-default.ts"],"names":[],"mappings":";AAAA,uDAAuD;AAEvD,iBAAS,SAAS,aAAa,CAAC,OAAe;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export shared utilities
|
|
3
|
+
*/
|
|
4
|
+
declare const buildQuery: any, hasDeepFilters: any;
|
|
5
|
+
declare const parseMultipartData: any;
|
|
6
|
+
declare const parseType: any;
|
|
7
|
+
declare const policy: any;
|
|
8
|
+
declare const templateConfiguration: any;
|
|
9
|
+
declare const yup: any, handleYupError: any, validateYupSchema: any, validateYupSchemaSync: any;
|
|
10
|
+
declare const errors: any;
|
|
11
|
+
declare const nameToSlug: any, nameToCollectionName: any, getCommonBeginning: any, escapeQuery: any, stringIncludes: any, stringEquals: any, isKebabCase: any, isCamelCase: any, toRegressedEnumValue: any, startsWithANumber: any, joinBy: any, toKebabCase: any;
|
|
12
|
+
declare const removeUndefined: any, keysDeep: any;
|
|
13
|
+
declare const getConfigUrls: any, getAbsoluteAdminUrl: any, getAbsoluteServerUrl: any;
|
|
14
|
+
declare const generateTimestampCode: any;
|
|
15
|
+
declare const contentTypes: any;
|
|
16
|
+
declare const webhook: any;
|
|
17
|
+
declare const env: any;
|
|
18
|
+
declare const relations: any;
|
|
19
|
+
declare const setCreatorFields: any;
|
|
20
|
+
declare const hooks: any;
|
|
21
|
+
declare const providerFactory: any;
|
|
22
|
+
declare const pagination: any;
|
|
23
|
+
declare const sanitize: any;
|
|
24
|
+
declare const traverseEntity: any;
|
|
25
|
+
declare const pipeAsync: any, mapAsync: any, reduceAsync: any, forEachAsync: any;
|
|
26
|
+
declare const convertQueryParams: any;
|
|
27
|
+
declare const importDefault: any;
|
|
28
|
+
declare const template: any;
|
|
29
|
+
declare const file: any;
|
|
30
|
+
declare const traverse: any;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/**
|
|
3
|
+
* Export shared utilities
|
|
4
|
+
*/
|
|
5
|
+
const { buildQuery, hasDeepFilters } = require('./build-query');
|
|
6
|
+
const parseMultipartData = require('./parse-multipart');
|
|
7
|
+
const parseType = require('./parse-type');
|
|
8
|
+
const policy = require('./policy');
|
|
9
|
+
const templateConfiguration = require('./template-configuration');
|
|
10
|
+
const { yup, handleYupError, validateYupSchema, validateYupSchemaSync } = require('./validators');
|
|
11
|
+
const errors = require('./errors');
|
|
12
|
+
const { nameToSlug, nameToCollectionName, getCommonBeginning, escapeQuery, stringIncludes, stringEquals, isKebabCase, isCamelCase, toRegressedEnumValue, startsWithANumber, joinBy, toKebabCase, } = require('./string-formatting');
|
|
13
|
+
const { removeUndefined, keysDeep } = require('./object-formatting');
|
|
14
|
+
const { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } = require('./config');
|
|
15
|
+
const { generateTimestampCode } = require('./code-generator');
|
|
16
|
+
const contentTypes = require('./content-types');
|
|
17
|
+
const webhook = require('./webhook');
|
|
18
|
+
const env = require('./env-helper');
|
|
19
|
+
const relations = require('./relations');
|
|
20
|
+
const setCreatorFields = require('./set-creator-fields');
|
|
21
|
+
const hooks = require('./hooks');
|
|
22
|
+
const providerFactory = require('./provider-factory');
|
|
23
|
+
const pagination = require('./pagination');
|
|
24
|
+
const sanitize = require('./sanitize');
|
|
25
|
+
const traverseEntity = require('./traverse-entity');
|
|
26
|
+
const { pipeAsync, mapAsync, reduceAsync, forEachAsync } = require('./async');
|
|
27
|
+
const convertQueryParams = require('./convert-query-params');
|
|
28
|
+
const importDefault = require('./import-default');
|
|
29
|
+
const template = require('./template');
|
|
30
|
+
const file = require('./file');
|
|
31
|
+
const traverse = require('./traverse');
|
|
32
|
+
module.exports = {
|
|
33
|
+
yup,
|
|
34
|
+
handleYupError,
|
|
35
|
+
policy,
|
|
36
|
+
templateConfiguration,
|
|
37
|
+
buildQuery,
|
|
38
|
+
hasDeepFilters,
|
|
39
|
+
parseMultipartData,
|
|
40
|
+
sanitize,
|
|
41
|
+
traverseEntity,
|
|
42
|
+
parseType,
|
|
43
|
+
nameToSlug,
|
|
44
|
+
toRegressedEnumValue,
|
|
45
|
+
startsWithANumber,
|
|
46
|
+
joinBy,
|
|
47
|
+
nameToCollectionName,
|
|
48
|
+
getCommonBeginning,
|
|
49
|
+
getConfigUrls,
|
|
50
|
+
escapeQuery,
|
|
51
|
+
removeUndefined,
|
|
52
|
+
keysDeep,
|
|
53
|
+
getAbsoluteAdminUrl,
|
|
54
|
+
getAbsoluteServerUrl,
|
|
55
|
+
generateTimestampCode,
|
|
56
|
+
stringIncludes,
|
|
57
|
+
stringEquals,
|
|
58
|
+
template,
|
|
59
|
+
isKebabCase,
|
|
60
|
+
isCamelCase,
|
|
61
|
+
toKebabCase,
|
|
62
|
+
contentTypes,
|
|
63
|
+
webhook,
|
|
64
|
+
env,
|
|
65
|
+
relations,
|
|
66
|
+
setCreatorFields,
|
|
67
|
+
hooks,
|
|
68
|
+
providerFactory,
|
|
69
|
+
pagination,
|
|
70
|
+
pipeAsync,
|
|
71
|
+
mapAsync,
|
|
72
|
+
reduceAsync,
|
|
73
|
+
forEachAsync,
|
|
74
|
+
errors,
|
|
75
|
+
validateYupSchema,
|
|
76
|
+
validateYupSchemaSync,
|
|
77
|
+
convertQueryParams,
|
|
78
|
+
importDefault,
|
|
79
|
+
file,
|
|
80
|
+
traverse,
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.keysDeep = exports.removeUndefined = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const removeUndefined = (obj) => lodash_1.default.pickBy(obj, (value) => typeof value !== 'undefined');
|
|
9
|
+
exports.removeUndefined = removeUndefined;
|
|
10
|
+
const keysDeep = (obj, path = []) => !lodash_1.default.isObject(obj)
|
|
11
|
+
? [path.join('.')]
|
|
12
|
+
: lodash_1.default.reduce(obj, (acc, next, key) => lodash_1.default.concat(acc, keysDeep(next, [...path, key])), []);
|
|
13
|
+
exports.keysDeep = keysDeep;
|
|
14
|
+
//# sourceMappingURL=object-formatting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-formatting.js","sourceRoot":"","sources":["../src/object-formatting.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAEvB,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,gBAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC;AAWvF,0CAAe;AATxB,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,OAAiB,EAAE,EAAY,EAAE,CAC9D,CAAC,gBAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;IACd,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,gBAAC,CAAC,MAAM,CACN,GAAG,EACH,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAC,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EACjE,EAAc,CACf,CAAC;AAEkB,4BAAQ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface PaginationArgs {
|
|
2
|
+
page: number;
|
|
3
|
+
pageSize: number;
|
|
4
|
+
start: number;
|
|
5
|
+
limit: number;
|
|
6
|
+
}
|
|
7
|
+
declare const withDefaultPagination: (args: PaginationArgs, { defaults, maxLimit }?: {
|
|
8
|
+
defaults?: {} | undefined;
|
|
9
|
+
maxLimit?: number | undefined;
|
|
10
|
+
}) => {
|
|
11
|
+
start: number;
|
|
12
|
+
limit: number;
|
|
13
|
+
} & Partial<PaginationArgs>;
|
|
14
|
+
export { withDefaultPagination };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withDefaultPagination = void 0;
|
|
4
|
+
const fp_1 = require("lodash/fp");
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
const STRAPI_DEFAULTS = {
|
|
7
|
+
offset: {
|
|
8
|
+
start: 0,
|
|
9
|
+
limit: 10,
|
|
10
|
+
},
|
|
11
|
+
page: {
|
|
12
|
+
page: 1,
|
|
13
|
+
pageSize: 10,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
const paginationAttributes = ['start', 'limit', 'page', 'pageSize'];
|
|
17
|
+
const withMaxLimit = (limit, maxLimit = -1) => {
|
|
18
|
+
if (maxLimit === -1 || limit < maxLimit) {
|
|
19
|
+
return limit;
|
|
20
|
+
}
|
|
21
|
+
return maxLimit;
|
|
22
|
+
};
|
|
23
|
+
// Ensure minimum page & pageSize values (page >= 1, pageSize >= 0, start >= 0, limit >= 0)
|
|
24
|
+
const ensureMinValues = ({ start, limit }) => ({
|
|
25
|
+
start: Math.max(start, 0),
|
|
26
|
+
limit: limit === -1 ? limit : Math.max(limit, 1),
|
|
27
|
+
});
|
|
28
|
+
const ensureMaxValues = (maxLimit = -1) => ({ start, limit }) => ({
|
|
29
|
+
start,
|
|
30
|
+
limit: withMaxLimit(limit, maxLimit),
|
|
31
|
+
});
|
|
32
|
+
// Apply maxLimit as the limit when limit is -1
|
|
33
|
+
const withNoLimit = (pagination, maxLimit = -1) => ({
|
|
34
|
+
...pagination,
|
|
35
|
+
limit: pagination.limit === -1 ? maxLimit : pagination.limit,
|
|
36
|
+
});
|
|
37
|
+
const withDefaultPagination = (args, { defaults = {}, maxLimit = -1 } = {}) => {
|
|
38
|
+
const defaultValues = (0, fp_1.merge)(STRAPI_DEFAULTS, defaults);
|
|
39
|
+
const usePagePagination = !(0, fp_1.isNil)(args.page) || !(0, fp_1.isNil)(args.pageSize);
|
|
40
|
+
const useOffsetPagination = !(0, fp_1.isNil)(args.start) || !(0, fp_1.isNil)(args.limit);
|
|
41
|
+
const ensureValidValues = (0, fp_1.pipe)(ensureMinValues, ensureMaxValues(maxLimit));
|
|
42
|
+
// If there is no pagination attribute, don't modify the payload
|
|
43
|
+
if (!usePagePagination && !useOffsetPagination) {
|
|
44
|
+
return (0, fp_1.merge)(args, ensureValidValues(defaultValues.offset));
|
|
45
|
+
}
|
|
46
|
+
// If there is page & offset pagination attributes, throw an error
|
|
47
|
+
if (usePagePagination && useOffsetPagination) {
|
|
48
|
+
throw new errors_1.PaginationError('Cannot use both page & offset pagination in the same query');
|
|
49
|
+
}
|
|
50
|
+
const pagination = {
|
|
51
|
+
start: 0,
|
|
52
|
+
limit: 0,
|
|
53
|
+
};
|
|
54
|
+
// Start / Limit
|
|
55
|
+
if (useOffsetPagination) {
|
|
56
|
+
const { start, limit } = (0, fp_1.merge)(defaultValues.offset, args);
|
|
57
|
+
Object.assign(pagination, { start, limit });
|
|
58
|
+
}
|
|
59
|
+
// Page / PageSize
|
|
60
|
+
if (usePagePagination) {
|
|
61
|
+
const { page, pageSize } = (0, fp_1.merge)(defaultValues.page, {
|
|
62
|
+
...args,
|
|
63
|
+
pageSize: Math.max(1, args.pageSize),
|
|
64
|
+
});
|
|
65
|
+
Object.assign(pagination, {
|
|
66
|
+
start: (page - 1) * pageSize,
|
|
67
|
+
limit: pageSize,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// Handle -1 limit
|
|
71
|
+
Object.assign(pagination, withNoLimit(pagination, maxLimit));
|
|
72
|
+
const replacePaginationAttributes = (0, fp_1.pipe)(
|
|
73
|
+
// Remove pagination attributes
|
|
74
|
+
(0, fp_1.omit)(paginationAttributes),
|
|
75
|
+
// Merge the object with the new pagination + ensure minimum & maximum values
|
|
76
|
+
(0, fp_1.merge)(ensureValidValues(pagination)));
|
|
77
|
+
return replacePaginationAttributes(args);
|
|
78
|
+
};
|
|
79
|
+
exports.withDefaultPagination = withDefaultPagination;
|
|
80
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
6
|
+
module.exports = (ctx) => {
|
|
7
|
+
if (!ctx.is('multipart')) {
|
|
8
|
+
return { data: ctx.request.body, files: {} };
|
|
9
|
+
}
|
|
10
|
+
const { body = {}, files = {} } = ctx.request;
|
|
11
|
+
if (!body.data) {
|
|
12
|
+
return ctx.badRequest(`When using multipart/form-data you need to provide your data in a JSON 'data' field.`);
|
|
13
|
+
}
|
|
14
|
+
let data;
|
|
15
|
+
try {
|
|
16
|
+
data = JSON.parse(body.data);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return ctx.badRequest(`Invalid 'data' field. 'data' should be a valid JSON.`);
|
|
20
|
+
}
|
|
21
|
+
const filesToUpload = Object.keys(files).reduce((acc, key) => {
|
|
22
|
+
const fullPath = lodash_1.default.toPath(key);
|
|
23
|
+
if (fullPath.length <= 1 || fullPath[0] !== 'files') {
|
|
24
|
+
return ctx.badRequest(`When using multipart/form-data you need to provide your files by prefixing them with the 'files'.
|
|
25
|
+
For example, when a media file is named "avatar", make sure the form key name is "files.avatar"`);
|
|
26
|
+
}
|
|
27
|
+
const path = lodash_1.default.tail(fullPath);
|
|
28
|
+
acc[path.join('.')] = files[key];
|
|
29
|
+
return acc;
|
|
30
|
+
}, {});
|
|
31
|
+
return {
|
|
32
|
+
data,
|
|
33
|
+
files: filesToUpload,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=parse-multipart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-multipart.js","sourceRoot":"","sources":["../src/parse-multipart.ts"],"names":[],"mappings":";;;;AAAA,oDAAuB;AAGvB,iBAAS,CAAC,GAAY,EAAE,EAAE;IACxB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;QACxB,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;KAC9C;IAED,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IAE9C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACd,OAAO,GAAG,CAAC,UAAU,CACnB,sFAAsF,CACvF,CAAC;KACH;IAED,IAAI,IAAI,CAAC;IACT,IAAI;QACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,GAAG,CAAC,UAAU,CAAC,sDAAsD,CAAC,CAAC;KAC/E;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAG,gBAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;YACnD,OAAO,GAAG,CAAC,UAAU,CACnB;gGACwF,CACzF,CAAC;SACH;QAED,MAAM,IAAI,GAAG,gBAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAmC,CAAC,CAAC;IAExC,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,aAAa;KACrB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|