@strapi/utils 4.10.1 → 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.
Files changed (164) hide show
  1. package/dist/async.d.ts +15 -0
  2. package/dist/async.js +33 -0
  3. package/dist/async.js.map +1 -0
  4. package/dist/code-generator.d.ts +2 -0
  5. package/dist/code-generator.js +11 -0
  6. package/dist/code-generator.js.map +1 -0
  7. package/dist/config.d.ts +8 -0
  8. package/dist/config.js +79 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/content-types.d.ts +60 -0
  11. package/dist/content-types.js +143 -0
  12. package/dist/content-types.js.map +1 -0
  13. package/dist/env-helper.d.ts +2 -0
  14. package/dist/env-helper.js +83 -0
  15. package/dist/env-helper.js.map +1 -0
  16. package/dist/errors.d.ts +37 -0
  17. package/dist/errors.js +100 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/file.d.ts +16 -0
  20. package/dist/file.js +54 -0
  21. package/dist/file.js.map +1 -0
  22. package/dist/format-yup-error.d.ts +10 -0
  23. package/dist/format-yup-error.js +17 -0
  24. package/dist/format-yup-error.js.map +1 -0
  25. package/dist/hooks.d.ts +92 -0
  26. package/dist/hooks.js +89 -0
  27. package/dist/hooks.js.map +1 -0
  28. package/dist/import-default.d.ts +2 -0
  29. package/dist/import-default.js +7 -0
  30. package/dist/import-default.js.map +1 -0
  31. package/dist/index.d.ts +30 -0
  32. package/dist/index.js +82 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/object-formatting.d.ts +3 -0
  35. package/dist/object-formatting.js +14 -0
  36. package/dist/object-formatting.js.map +1 -0
  37. package/dist/pagination.d.ts +14 -0
  38. package/dist/pagination.js +80 -0
  39. package/dist/pagination.js.map +1 -0
  40. package/dist/parse-multipart.d.ts +8 -0
  41. package/dist/parse-multipart.js +36 -0
  42. package/dist/parse-multipart.js.map +1 -0
  43. package/dist/parse-type.d.ts +1 -0
  44. package/dist/parse-type.js +95 -0
  45. package/dist/parse-type.js.map +1 -0
  46. package/dist/policy.d.ts +41 -0
  47. package/dist/policy.js +109 -0
  48. package/dist/policy.js.map +1 -0
  49. package/dist/print-value.d.ts +2 -0
  50. package/dist/print-value.js +50 -0
  51. package/dist/print-value.js.map +1 -0
  52. package/dist/provider-factory.d.ts +84 -0
  53. package/dist/provider-factory.js +87 -0
  54. package/dist/provider-factory.js.map +1 -0
  55. package/dist/relations.d.ts +10 -0
  56. package/dist/relations.js +23 -0
  57. package/dist/relations.js.map +1 -0
  58. package/dist/sanitize/index.d.ts +28 -0
  59. package/dist/sanitize/index.js +135 -0
  60. package/dist/sanitize/index.js.map +1 -0
  61. package/dist/sanitize/sanitizers.d.ts +10 -0
  62. package/dist/sanitize/sanitizers.js +106 -0
  63. package/dist/sanitize/sanitizers.js.map +1 -0
  64. package/dist/sanitize/visitors/allowed-fields.d.ts +3 -0
  65. package/dist/sanitize/visitors/allowed-fields.js +83 -0
  66. package/dist/sanitize/visitors/allowed-fields.js.map +1 -0
  67. package/dist/sanitize/visitors/index.d.ts +7 -0
  68. package/dist/sanitize/visitors/index.js +21 -0
  69. package/dist/sanitize/visitors/index.js.map +1 -0
  70. package/dist/sanitize/visitors/remove-dynamic-zones.d.ts +3 -0
  71. package/dist/sanitize/visitors/remove-dynamic-zones.js +10 -0
  72. package/dist/sanitize/visitors/remove-dynamic-zones.js.map +1 -0
  73. package/dist/sanitize/visitors/remove-morph-to-relations.d.ts +3 -0
  74. package/dist/sanitize/visitors/remove-morph-to-relations.js +10 -0
  75. package/dist/sanitize/visitors/remove-morph-to-relations.js.map +1 -0
  76. package/dist/sanitize/visitors/remove-password.d.ts +3 -0
  77. package/dist/sanitize/visitors/remove-password.js +9 -0
  78. package/dist/sanitize/visitors/remove-password.js.map +1 -0
  79. package/dist/sanitize/visitors/remove-private.d.ts +3 -0
  80. package/dist/sanitize/visitors/remove-private.js +14 -0
  81. package/dist/sanitize/visitors/remove-private.js.map +1 -0
  82. package/dist/sanitize/visitors/remove-restricted-relations.d.ts +3 -0
  83. package/dist/sanitize/visitors/remove-restricted-relations.js +88 -0
  84. package/dist/sanitize/visitors/remove-restricted-relations.js.map +1 -0
  85. package/dist/sanitize/visitors/restricted-fields.d.ts +3 -0
  86. package/dist/sanitize/visitors/restricted-fields.js +25 -0
  87. package/dist/sanitize/visitors/restricted-fields.js.map +1 -0
  88. package/dist/set-creator-fields.d.ts +9 -0
  89. package/dist/set-creator-fields.js +37 -0
  90. package/dist/set-creator-fields.js.map +1 -0
  91. package/dist/string-formatting.d.ts +16 -0
  92. package/dist/string-formatting.js +85 -0
  93. package/dist/string-formatting.js.map +1 -0
  94. package/dist/template-configuration.d.ts +5 -0
  95. package/dist/template-configuration.js +28 -0
  96. package/dist/template-configuration.js.map +1 -0
  97. package/dist/template.d.ts +9 -0
  98. package/dist/template.js +20 -0
  99. package/dist/template.js.map +1 -0
  100. package/dist/traverse/factory.d.ts +13 -0
  101. package/dist/traverse/factory.js +126 -0
  102. package/dist/traverse/factory.js.map +1 -0
  103. package/dist/traverse/index.d.ts +5 -0
  104. package/dist/traverse/index.js +17 -0
  105. package/dist/traverse/index.js.map +1 -0
  106. package/dist/traverse/query-fields.d.ts +3 -0
  107. package/dist/traverse/query-fields.js +35 -0
  108. package/dist/traverse/query-fields.js.map +1 -0
  109. package/dist/traverse/query-filters.d.ts +3 -0
  110. package/dist/traverse/query-filters.js +73 -0
  111. package/dist/traverse/query-filters.js.map +1 -0
  112. package/dist/traverse/query-populate.d.ts +3 -0
  113. package/dist/traverse/query-populate.js +140 -0
  114. package/dist/traverse/query-populate.js.map +1 -0
  115. package/dist/traverse/query-sort.d.ts +3 -0
  116. package/dist/traverse/query-sort.js +114 -0
  117. package/dist/traverse/query-sort.js.map +1 -0
  118. package/dist/traverse-entity.d.ts +33 -0
  119. package/dist/traverse-entity.js +134 -0
  120. package/dist/traverse-entity.js.map +1 -0
  121. package/dist/types.d.ts +57 -0
  122. package/dist/types.js +4 -0
  123. package/dist/types.js.map +1 -0
  124. package/dist/validators.d.ts +5 -0
  125. package/dist/validators.js +110 -0
  126. package/dist/validators.js.map +1 -0
  127. package/dist/webhook.d.ts +10 -0
  128. package/dist/webhook.js +14 -0
  129. package/dist/webhook.js.map +1 -0
  130. package/index.d.ts +5 -3
  131. package/package.json +2 -2
  132. package/coverage/clover.xml +0 -638
  133. package/coverage/coverage-final.json +0 -24
  134. package/coverage/lcov-report/base.css +0 -224
  135. package/coverage/lcov-report/block-navigation.js +0 -87
  136. package/coverage/lcov-report/favicon.png +0 -0
  137. package/coverage/lcov-report/index.html +0 -146
  138. package/coverage/lcov-report/lib/async.js.html +0 -223
  139. package/coverage/lcov-report/lib/content-types.js.html +0 -643
  140. package/coverage/lcov-report/lib/env-helper.js.html +0 -319
  141. package/coverage/lcov-report/lib/errors.js.html +0 -397
  142. package/coverage/lcov-report/lib/format-yup-error.js.html +0 -145
  143. package/coverage/lcov-report/lib/hooks.js.html +0 -415
  144. package/coverage/lcov-report/lib/import-default.js.html +0 -115
  145. package/coverage/lcov-report/lib/index.html +0 -326
  146. package/coverage/lcov-report/lib/pagination.js.html +0 -382
  147. package/coverage/lcov-report/lib/parse-type.js.html +0 -385
  148. package/coverage/lcov-report/lib/policy.js.html +0 -472
  149. package/coverage/lcov-report/lib/print-value.js.html +0 -241
  150. package/coverage/lcov-report/lib/provider-factory.js.html +0 -433
  151. package/coverage/lcov-report/lib/relations.js.html +0 -178
  152. package/coverage/lcov-report/lib/sanitize/visitors/allowed-fields.js.html +0 -367
  153. package/coverage/lcov-report/lib/sanitize/visitors/index.html +0 -191
  154. package/coverage/lcov-report/lib/sanitize/visitors/index.js.html +0 -112
  155. package/coverage/lcov-report/lib/sanitize/visitors/remove-password.js.html +0 -106
  156. package/coverage/lcov-report/lib/sanitize/visitors/remove-private.js.html +0 -118
  157. package/coverage/lcov-report/lib/sanitize/visitors/remove-restricted-relations.js.html +0 -316
  158. package/coverage/lcov-report/lib/sanitize/visitors/restricted-fields.js.html +0 -181
  159. package/coverage/lcov-report/lib/string-formatting.js.html +0 -322
  160. package/coverage/lcov-report/lib/validators.js.html +0 -445
  161. package/coverage/lcov-report/prettify.css +0 -1
  162. package/coverage/lcov-report/prettify.js +0 -2
  163. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  164. package/coverage/lcov-report/sorter.js +0 -196
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _ = require("lodash");
4
+ const dates = require("date-fns");
5
+ const timeRegex = /^(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]{1,3})?$/;
6
+ const isDate = (v) => {
7
+ return dates.isDate(v);
8
+ };
9
+ const parseTime = (value) => {
10
+ if (isDate(value)) {
11
+ return dates.format(value, 'HH:mm:ss.SSS');
12
+ }
13
+ if (typeof value !== 'string') {
14
+ throw new Error(`Expected a string, got a ${typeof value}`);
15
+ }
16
+ const result = value.match(timeRegex);
17
+ if (result === null) {
18
+ throw new Error('Invalid time format, expected HH:mm:ss.SSS');
19
+ }
20
+ const [, hours, minutes, seconds, fraction = '.000'] = result;
21
+ const fractionPart = _.padEnd(fraction.slice(1), 3, '0');
22
+ return `${hours}:${minutes}:${seconds}.${fractionPart}`;
23
+ };
24
+ const parseDate = (value) => {
25
+ if (isDate(value)) {
26
+ return dates.format(value, 'yyyy-MM-dd');
27
+ }
28
+ try {
29
+ const date = dates.parseISO(value);
30
+ if (dates.isValid(date))
31
+ return dates.format(date, 'yyyy-MM-dd');
32
+ throw new Error(`Invalid format, expected an ISO compatible date`);
33
+ }
34
+ catch (error) {
35
+ throw new Error(`Invalid format, expected an ISO compatible date`);
36
+ }
37
+ };
38
+ const parseDateTimeOrTimestamp = (value) => {
39
+ if (isDate(value)) {
40
+ return value;
41
+ }
42
+ try {
43
+ const date = dates.parseISO(value);
44
+ if (dates.isValid(date))
45
+ return date;
46
+ const milliUnixDate = dates.parse(value, 'T', new Date());
47
+ if (dates.isValid(milliUnixDate))
48
+ return milliUnixDate;
49
+ throw new Error(`Invalid format, expected a timestamp or an ISO date`);
50
+ }
51
+ catch (error) {
52
+ throw new Error(`Invalid format, expected a timestamp or an ISO date`);
53
+ }
54
+ };
55
+ /**
56
+ * Cast basic values based on attribute type
57
+ */
58
+ const parseType = ({ type, value, forceCast = false }) => {
59
+ switch (type) {
60
+ case 'boolean': {
61
+ if (typeof value === 'boolean')
62
+ return value;
63
+ if (['true', 't', '1', 1].includes(value)) {
64
+ return true;
65
+ }
66
+ if (['false', 'f', '0', 0].includes(value)) {
67
+ return false;
68
+ }
69
+ if (forceCast) {
70
+ return Boolean(value);
71
+ }
72
+ throw new Error('Invalid boolean input. Expected "t","1","true","false","0","f"');
73
+ }
74
+ case 'integer':
75
+ case 'biginteger':
76
+ case 'float':
77
+ case 'decimal': {
78
+ return _.toNumber(value);
79
+ }
80
+ case 'time': {
81
+ return parseTime(value);
82
+ }
83
+ case 'date': {
84
+ return parseDate(value);
85
+ }
86
+ case 'timestamp':
87
+ case 'datetime': {
88
+ return parseDateTimeOrTimestamp(value);
89
+ }
90
+ default:
91
+ return value;
92
+ }
93
+ };
94
+ module.exports = parseType;
95
+ //# sourceMappingURL=parse-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-type.js","sourceRoot":"","sources":["../src/parse-type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Policies util
3
+ */
4
+ import type { Context } from './types';
5
+ interface PolicyInfo {
6
+ name: string;
7
+ config: unknown;
8
+ }
9
+ type PolicyConfig = string | PolicyInfo | (() => PolicyInfo);
10
+ interface PolicyContext {
11
+ pluginName?: string;
12
+ apiName?: string;
13
+ }
14
+ interface RouteInfo {
15
+ method: string;
16
+ endpoint: string;
17
+ controller: string;
18
+ action: string;
19
+ plugin: string;
20
+ }
21
+ declare const globalPolicy: ({ method, endpoint, controller, action, plugin }: RouteInfo) => (ctx: Context, next: () => void) => Promise<void>;
22
+ declare const resolvePolicies: (config: PolicyInfo[], policyContext: PolicyContext) => {
23
+ handler: any;
24
+ config: {};
25
+ }[];
26
+ declare const getPolicy: (policyConfig: PolicyConfig, policyContext: PolicyContext) => any;
27
+ interface Options {
28
+ name: string;
29
+ validator?(config: unknown): void;
30
+ handler(...args: any[]): any;
31
+ }
32
+ declare const createPolicy: (options: Options) => {
33
+ name: string;
34
+ validator: (config: unknown) => void;
35
+ handler: (...args: any[]) => any;
36
+ };
37
+ declare const createPolicyContext: (type: string, ctx: object) => {
38
+ is: import("lodash/fp").LodashEq1x1;
39
+ readonly type: string;
40
+ } & object;
41
+ export { getPolicy as get, resolvePolicies as resolve, globalPolicy, createPolicy, createPolicyContext, };
package/dist/policy.js ADDED
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * Policies util
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createPolicyContext = exports.createPolicy = exports.globalPolicy = exports.resolve = exports.get = void 0;
10
+ const lodash_1 = __importDefault(require("lodash"));
11
+ const fp_1 = require("lodash/fp");
12
+ const PLUGIN_PREFIX = 'plugin::';
13
+ const API_PREFIX = 'api::';
14
+ const parsePolicy = (policy) => {
15
+ if (typeof policy === 'string') {
16
+ return { policyName: policy, config: {} };
17
+ }
18
+ const { name, config } = policy;
19
+ return { policyName: name, config };
20
+ };
21
+ const searchLocalPolicy = (policyName, policyContext) => {
22
+ const { pluginName, apiName } = policyContext ?? {};
23
+ if (pluginName) {
24
+ return strapi.policy(`${PLUGIN_PREFIX}${pluginName}.${policyName}`);
25
+ }
26
+ if (apiName) {
27
+ return strapi.policy(`${API_PREFIX}${apiName}.${policyName}`);
28
+ }
29
+ };
30
+ const globalPolicy = ({ method, endpoint, controller, action, plugin }) => {
31
+ return async (ctx, next) => {
32
+ ctx.request.route = {
33
+ endpoint: `${method} ${endpoint}`,
34
+ controller: lodash_1.default.toLower(controller),
35
+ action: lodash_1.default.toLower(action),
36
+ verb: lodash_1.default.toLower(method),
37
+ plugin,
38
+ };
39
+ await next();
40
+ };
41
+ };
42
+ exports.globalPolicy = globalPolicy;
43
+ const resolvePolicies = (config, policyContext) => {
44
+ const { pluginName, apiName } = policyContext ?? {};
45
+ return config.map((policyConfig) => {
46
+ return {
47
+ handler: getPolicy(policyConfig, { pluginName, apiName }),
48
+ config: policyConfig.config || {},
49
+ };
50
+ });
51
+ };
52
+ exports.resolve = resolvePolicies;
53
+ const findPolicy = (name, policyContext) => {
54
+ const { pluginName, apiName } = policyContext ?? {};
55
+ const resolvedPolicy = strapi.policy(name);
56
+ if (resolvedPolicy !== undefined) {
57
+ return resolvedPolicy;
58
+ }
59
+ const localPolicy = searchLocalPolicy(name, { pluginName, apiName });
60
+ if (localPolicy !== undefined) {
61
+ return localPolicy;
62
+ }
63
+ throw new Error(`Could not find policy "${name}"`);
64
+ };
65
+ const getPolicy = (policyConfig, policyContext) => {
66
+ const { pluginName, apiName } = policyContext ?? {};
67
+ if (typeof policyConfig === 'function') {
68
+ return policyConfig;
69
+ }
70
+ const { policyName, config } = parsePolicy(policyConfig);
71
+ const policy = findPolicy(policyName, { pluginName, apiName });
72
+ if (typeof policy === 'function') {
73
+ return policy;
74
+ }
75
+ if (policy.validator) {
76
+ policy.validator(config);
77
+ }
78
+ return policy.handler;
79
+ };
80
+ exports.get = getPolicy;
81
+ const createPolicy = (options) => {
82
+ const { name = 'unnamed', validator, handler } = options;
83
+ const wrappedValidator = (config) => {
84
+ if (validator) {
85
+ try {
86
+ validator(config);
87
+ }
88
+ catch (e) {
89
+ throw new Error(`Invalid config passed to "${name}" policy.`);
90
+ }
91
+ }
92
+ };
93
+ return {
94
+ name,
95
+ validator: wrappedValidator,
96
+ handler,
97
+ };
98
+ };
99
+ exports.createPolicy = createPolicy;
100
+ const createPolicyContext = (type, ctx) => {
101
+ return Object.assign({
102
+ is: (0, fp_1.eq)(type),
103
+ get type() {
104
+ return type;
105
+ },
106
+ }, ctx);
107
+ };
108
+ exports.createPolicyContext = createPolicyContext;
109
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare function printValue(value: unknown, quoteStrings: boolean): string;
2
+ export = printValue;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ // Code copied from the yup library (https://github.com/jquense/yup)
3
+ // https://github.com/jquense/yup/blob/2778b88bdacd5260d593c6468793da2e77daf21f/src/util/printValue.ts
4
+ const { toString } = Object.prototype;
5
+ const errorToString = Error.prototype.toString;
6
+ const regExpToString = RegExp.prototype.toString;
7
+ const symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';
8
+ const SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/;
9
+ function printNumber(val) {
10
+ // eslint-disable-next-line eqeqeq
11
+ if (val != +val)
12
+ return 'NaN';
13
+ const isNegativeZero = val === 0 && 1 / val < 0;
14
+ return isNegativeZero ? '-0' : `${val}`;
15
+ }
16
+ function printSimpleValue(val, quoteStrings = false) {
17
+ if (val == null || val === true || val === false)
18
+ return `${val}`;
19
+ if (typeof val === 'number')
20
+ return printNumber(val);
21
+ if (typeof val === 'string')
22
+ return quoteStrings ? `"${val}"` : val;
23
+ if (typeof val === 'function')
24
+ return `[Function ${val.name || 'anonymous'}]`;
25
+ if (typeof val === 'symbol')
26
+ return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');
27
+ const tag = toString.call(val).slice(8, -1);
28
+ if (tag === 'Date') {
29
+ const v = val;
30
+ return Number.isNaN(v.getTime()) ? `${v}` : v.toISOString();
31
+ }
32
+ if (tag === 'Error' || val instanceof Error)
33
+ return `[${errorToString.call(val)}]`;
34
+ if (tag === 'RegExp')
35
+ return regExpToString.call(val);
36
+ return null;
37
+ }
38
+ function printValue(value, quoteStrings) {
39
+ const result = printSimpleValue(value, quoteStrings);
40
+ if (result !== null)
41
+ return result;
42
+ return JSON.stringify(value, function replacer(key, value) {
43
+ const result = printSimpleValue(this[key], quoteStrings);
44
+ if (result !== null)
45
+ return result;
46
+ return value;
47
+ }, 2);
48
+ }
49
+ module.exports = printValue;
50
+ //# sourceMappingURL=print-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-value.js","sourceRoot":"","sources":["../src/print-value.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,sGAAsG;AAEtG,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;AACtC,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjD,MAAM,cAAc,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AAE5F,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAE7C,SAAS,WAAW,CAAC,GAAW;IAC9B,kCAAkC;IAClC,IAAI,GAAG,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,cAAc,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAChD,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY,EAAE,YAAY,GAAG,KAAK;IAC1D,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,GAAG,GAAG,EAAE,CAAC;IAElE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACpE,IAAI,OAAO,GAAG,KAAK,UAAU;QAAE,OAAO,aAAa,GAAG,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;IAC9E,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAElG,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,GAAG,KAAK,MAAM,EAAE;QAClB,MAAM,CAAC,GAAG,GAAW,CAAC;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC7D;IACD,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACnF,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,YAAqB;IACvD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAEnC,OAAO,IAAI,CAAC,SAAS,CACnB,KAAK,EACL,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC,EACD,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iBAAS,UAAU,CAAC"}
@@ -0,0 +1,84 @@
1
+ interface Options {
2
+ throwOnDuplicates?: boolean;
3
+ }
4
+ /**
5
+ * A Provider factory
6
+ */
7
+ declare const providerFactory: (options?: Options) => {
8
+ hooks: {
9
+ willRegister: {
10
+ call(context: unknown): Promise<void>;
11
+ getHandlers(): import("./hooks").Handler[];
12
+ register(handler: import("./hooks").Handler): {
13
+ getHandlers(): import("./hooks").Handler[];
14
+ register(handler: import("./hooks").Handler): any;
15
+ delete(handler: import("./hooks").Handler): any;
16
+ call(): never;
17
+ };
18
+ delete(handler: import("./hooks").Handler): {
19
+ getHandlers(): import("./hooks").Handler[];
20
+ register(handler: import("./hooks").Handler): any;
21
+ delete(handler: import("./hooks").Handler): any;
22
+ call(): never;
23
+ };
24
+ };
25
+ didRegister: {
26
+ call(context: unknown): Promise<any[]>;
27
+ getHandlers(): import("./hooks").Handler[];
28
+ register(handler: import("./hooks").Handler): {
29
+ getHandlers(): import("./hooks").Handler[];
30
+ register(handler: import("./hooks").Handler): any;
31
+ delete(handler: import("./hooks").Handler): any;
32
+ call(): never;
33
+ };
34
+ delete(handler: import("./hooks").Handler): {
35
+ getHandlers(): import("./hooks").Handler[];
36
+ register(handler: import("./hooks").Handler): any;
37
+ delete(handler: import("./hooks").Handler): any;
38
+ call(): never;
39
+ };
40
+ };
41
+ willDelete: {
42
+ call(context: unknown): Promise<any[]>;
43
+ getHandlers(): import("./hooks").Handler[];
44
+ register(handler: import("./hooks").Handler): {
45
+ getHandlers(): import("./hooks").Handler[];
46
+ register(handler: import("./hooks").Handler): any;
47
+ delete(handler: import("./hooks").Handler): any;
48
+ call(): never;
49
+ };
50
+ delete(handler: import("./hooks").Handler): {
51
+ getHandlers(): import("./hooks").Handler[];
52
+ register(handler: import("./hooks").Handler): any;
53
+ delete(handler: import("./hooks").Handler): any;
54
+ call(): never;
55
+ };
56
+ };
57
+ didDelete: {
58
+ call(context: unknown): Promise<any[]>;
59
+ getHandlers(): import("./hooks").Handler[];
60
+ register(handler: import("./hooks").Handler): {
61
+ getHandlers(): import("./hooks").Handler[];
62
+ register(handler: import("./hooks").Handler): any;
63
+ delete(handler: import("./hooks").Handler): any;
64
+ call(): never;
65
+ };
66
+ delete(handler: import("./hooks").Handler): {
67
+ getHandlers(): import("./hooks").Handler[];
68
+ register(handler: import("./hooks").Handler): any;
69
+ delete(handler: import("./hooks").Handler): any;
70
+ call(): never;
71
+ };
72
+ };
73
+ };
74
+ register(key: string, item: unknown): Promise<any>;
75
+ delete(key: string): Promise<any>;
76
+ get(key: string): any;
77
+ getWhere(filters?: {}): any[];
78
+ values(): any[];
79
+ keys(): any[];
80
+ has(key: string): boolean;
81
+ size(): number;
82
+ clear(): Promise<any>;
83
+ };
84
+ export = providerFactory;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ const fp_1 = require("lodash/fp");
3
+ const hooks_1 = require("./hooks");
4
+ /**
5
+ * @typedef ProviderHooksMap
6
+ * @property willRegister
7
+ * @property didRegister
8
+ * @property willDelete
9
+ * @property didDelete
10
+ */
11
+ /**
12
+ * Creates a new object containing various hooks used by the providers
13
+ * @return {ProviderHooksMap}
14
+ */
15
+ const createProviderHooksMap = () => ({
16
+ // Register events
17
+ willRegister: (0, hooks_1.createAsyncSeriesHook)(),
18
+ didRegister: (0, hooks_1.createAsyncParallelHook)(),
19
+ // Delete events
20
+ willDelete: (0, hooks_1.createAsyncParallelHook)(),
21
+ didDelete: (0, hooks_1.createAsyncParallelHook)(),
22
+ });
23
+ /**
24
+ * A Provider factory
25
+ */
26
+ const providerFactory = (options = {}) => {
27
+ const { throwOnDuplicates = true } = options;
28
+ const state = {
29
+ hooks: createProviderHooksMap(),
30
+ registry: new Map(),
31
+ };
32
+ return {
33
+ hooks: state.hooks,
34
+ async register(key, item) {
35
+ if (throwOnDuplicates && this.has(key)) {
36
+ throw new Error(`Duplicated item key: ${key}`);
37
+ }
38
+ await state.hooks.willRegister.call({ key, value: item });
39
+ state.registry.set(key, item);
40
+ await state.hooks.didRegister.call({ key, value: (0, fp_1.cloneDeep)(item) });
41
+ return this;
42
+ },
43
+ async delete(key) {
44
+ if (this.has(key)) {
45
+ const item = this.get(key);
46
+ await state.hooks.willDelete.call({ key, value: (0, fp_1.cloneDeep)(item) });
47
+ state.registry.delete(key);
48
+ await state.hooks.didDelete.call({ key, value: (0, fp_1.cloneDeep)(item) });
49
+ }
50
+ return this;
51
+ },
52
+ get(key) {
53
+ return state.registry.get(key);
54
+ },
55
+ getWhere(filters = {}) {
56
+ const items = this.values();
57
+ const filtersEntries = Object.entries(filters);
58
+ if (filtersEntries.length === 0) {
59
+ return items;
60
+ }
61
+ return items.filter((item) => {
62
+ return filtersEntries.every(([key, value]) => item[key] === value);
63
+ });
64
+ },
65
+ values() {
66
+ return Array.from(state.registry.values());
67
+ },
68
+ keys() {
69
+ return Array.from(state.registry.keys());
70
+ },
71
+ has(key) {
72
+ return state.registry.has(key);
73
+ },
74
+ size() {
75
+ return state.registry.size;
76
+ },
77
+ async clear() {
78
+ const keys = this.keys();
79
+ for (const key of keys) {
80
+ await this.delete(key);
81
+ }
82
+ return this;
83
+ },
84
+ };
85
+ };
86
+ module.exports = providerFactory;
87
+ //# sourceMappingURL=provider-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../src/provider-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Attribute, Model } from './types';
2
+ declare const getRelationalFields: (contentType: Model) => string[];
3
+ declare const isOneToAny: (attribute: Attribute) => boolean;
4
+ declare const isManyToAny: (attribute: Attribute) => boolean;
5
+ declare const isAnyToOne: (attribute: Attribute) => boolean;
6
+ declare const isAnyToMany: (attribute: Attribute) => boolean;
7
+ export declare const constants: {
8
+ MANY_RELATIONS: string[];
9
+ };
10
+ export { getRelationalFields, isOneToAny, isManyToAny, isAnyToOne, isAnyToMany };
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAnyToMany = exports.isAnyToOne = exports.isManyToAny = exports.isOneToAny = exports.getRelationalFields = exports.constants = void 0;
4
+ const content_types_1 = require("./content-types");
5
+ const MANY_RELATIONS = ['oneToMany', 'manyToMany'];
6
+ const getRelationalFields = (contentType) => {
7
+ return Object.keys(contentType.attributes).filter((attributeName) => {
8
+ return contentType.attributes[attributeName].type === 'relation';
9
+ });
10
+ };
11
+ exports.getRelationalFields = getRelationalFields;
12
+ const isOneToAny = (attribute) => (0, content_types_1.isRelationalAttribute)(attribute) && ['oneToOne', 'oneToMany'].includes(attribute.relation);
13
+ exports.isOneToAny = isOneToAny;
14
+ const isManyToAny = (attribute) => (0, content_types_1.isRelationalAttribute)(attribute) && ['manyToMany', 'manyToOne'].includes(attribute.relation);
15
+ exports.isManyToAny = isManyToAny;
16
+ const isAnyToOne = (attribute) => (0, content_types_1.isRelationalAttribute)(attribute) && ['oneToOne', 'manyToOne'].includes(attribute.relation);
17
+ exports.isAnyToOne = isAnyToOne;
18
+ const isAnyToMany = (attribute) => (0, content_types_1.isRelationalAttribute)(attribute) && ['oneToMany', 'manyToMany'].includes(attribute.relation);
19
+ exports.isAnyToMany = isAnyToMany;
20
+ exports.constants = {
21
+ MANY_RELATIONS,
22
+ };
23
+ //# sourceMappingURL=relations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relations.js","sourceRoot":"","sources":["../src/relations.ts"],"names":[],"mappings":";;;AAEA,mDAAwD;AAExD,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAEnD,MAAM,mBAAmB,GAAG,CAAC,WAAkB,EAAE,EAAE;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE;QAClE,OAAO,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAeO,kDAAmB;AAb5B,MAAM,UAAU,GAAG,CAAC,SAAoB,EAAE,EAAE,CAC1C,IAAA,qCAAqB,EAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAY/D,gCAAU;AAXxC,MAAM,WAAW,GAAG,CAAC,SAAoB,EAAE,EAAE,CAC3C,IAAA,qCAAqB,EAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAUrD,kCAAW;AATrD,MAAM,UAAU,GAAG,CAAC,SAAoB,EAAE,EAAE,CAC1C,IAAA,qCAAqB,EAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAQtC,gCAAU;AAPjE,MAAM,WAAW,GAAG,CAAC,SAAoB,EAAE,EAAE,CAC3C,IAAA,qCAAqB,EAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAM5B,kCAAW;AAJjE,QAAA,SAAS,GAAG;IACvB,cAAc;CACf,CAAC"}
@@ -0,0 +1,28 @@
1
+ import * as visitors from './visitors';
2
+ import * as sanitizers from './sanitizers';
3
+ declare const _default: {
4
+ contentAPI: {
5
+ input: (data: any, schema: any, { auth }?: {
6
+ auth: any;
7
+ }) => any;
8
+ output: (data: any, schema: any, { auth }?: {
9
+ auth: any;
10
+ }) => Promise<unknown>;
11
+ query: (query: any, schema: any, { auth }?: {
12
+ auth: any;
13
+ }) => Promise<any>;
14
+ filters: (filters: any, schema: any, { auth }?: {
15
+ auth: any;
16
+ }) => any;
17
+ sort: (sort: any, schema: any, { auth }?: {
18
+ auth: any;
19
+ }) => Promise<unknown>;
20
+ fields: (fields: any, schema: any) => Promise<unknown>;
21
+ populate: (populate: any, schema: any, { auth }?: {
22
+ auth: any;
23
+ }) => Promise<unknown>;
24
+ };
25
+ sanitizers: typeof sanitizers;
26
+ visitors: typeof visitors;
27
+ };
28
+ export default _default;