@strapi/utils 4.10.2-alpha.0 → 4.10.2

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 (130) hide show
  1. package/package.json +2 -2
  2. package/dist/async.d.ts +0 -15
  3. package/dist/async.js +0 -33
  4. package/dist/async.js.map +0 -1
  5. package/dist/code-generator.d.ts +0 -2
  6. package/dist/code-generator.js +0 -11
  7. package/dist/code-generator.js.map +0 -1
  8. package/dist/config.d.ts +0 -8
  9. package/dist/config.js +0 -79
  10. package/dist/config.js.map +0 -1
  11. package/dist/content-types.d.ts +0 -60
  12. package/dist/content-types.js +0 -143
  13. package/dist/content-types.js.map +0 -1
  14. package/dist/env-helper.d.ts +0 -2
  15. package/dist/env-helper.js +0 -83
  16. package/dist/env-helper.js.map +0 -1
  17. package/dist/errors.d.ts +0 -37
  18. package/dist/errors.js +0 -100
  19. package/dist/errors.js.map +0 -1
  20. package/dist/file.d.ts +0 -16
  21. package/dist/file.js +0 -54
  22. package/dist/file.js.map +0 -1
  23. package/dist/format-yup-error.d.ts +0 -10
  24. package/dist/format-yup-error.js +0 -17
  25. package/dist/format-yup-error.js.map +0 -1
  26. package/dist/hooks.d.ts +0 -92
  27. package/dist/hooks.js +0 -89
  28. package/dist/hooks.js.map +0 -1
  29. package/dist/import-default.d.ts +0 -2
  30. package/dist/import-default.js +0 -7
  31. package/dist/import-default.js.map +0 -1
  32. package/dist/index.d.ts +0 -30
  33. package/dist/index.js +0 -82
  34. package/dist/index.js.map +0 -1
  35. package/dist/object-formatting.d.ts +0 -3
  36. package/dist/object-formatting.js +0 -14
  37. package/dist/object-formatting.js.map +0 -1
  38. package/dist/pagination.d.ts +0 -14
  39. package/dist/pagination.js +0 -80
  40. package/dist/pagination.js.map +0 -1
  41. package/dist/parse-multipart.d.ts +0 -8
  42. package/dist/parse-multipart.js +0 -36
  43. package/dist/parse-multipart.js.map +0 -1
  44. package/dist/parse-type.d.ts +0 -1
  45. package/dist/parse-type.js +0 -95
  46. package/dist/parse-type.js.map +0 -1
  47. package/dist/policy.d.ts +0 -41
  48. package/dist/policy.js +0 -109
  49. package/dist/policy.js.map +0 -1
  50. package/dist/print-value.d.ts +0 -2
  51. package/dist/print-value.js +0 -50
  52. package/dist/print-value.js.map +0 -1
  53. package/dist/provider-factory.d.ts +0 -84
  54. package/dist/provider-factory.js +0 -87
  55. package/dist/provider-factory.js.map +0 -1
  56. package/dist/relations.d.ts +0 -10
  57. package/dist/relations.js +0 -23
  58. package/dist/relations.js.map +0 -1
  59. package/dist/sanitize/index.d.ts +0 -28
  60. package/dist/sanitize/index.js +0 -135
  61. package/dist/sanitize/index.js.map +0 -1
  62. package/dist/sanitize/sanitizers.d.ts +0 -10
  63. package/dist/sanitize/sanitizers.js +0 -106
  64. package/dist/sanitize/sanitizers.js.map +0 -1
  65. package/dist/sanitize/visitors/allowed-fields.d.ts +0 -3
  66. package/dist/sanitize/visitors/allowed-fields.js +0 -83
  67. package/dist/sanitize/visitors/allowed-fields.js.map +0 -1
  68. package/dist/sanitize/visitors/index.d.ts +0 -7
  69. package/dist/sanitize/visitors/index.js +0 -21
  70. package/dist/sanitize/visitors/index.js.map +0 -1
  71. package/dist/sanitize/visitors/remove-dynamic-zones.d.ts +0 -3
  72. package/dist/sanitize/visitors/remove-dynamic-zones.js +0 -10
  73. package/dist/sanitize/visitors/remove-dynamic-zones.js.map +0 -1
  74. package/dist/sanitize/visitors/remove-morph-to-relations.d.ts +0 -3
  75. package/dist/sanitize/visitors/remove-morph-to-relations.js +0 -10
  76. package/dist/sanitize/visitors/remove-morph-to-relations.js.map +0 -1
  77. package/dist/sanitize/visitors/remove-password.d.ts +0 -3
  78. package/dist/sanitize/visitors/remove-password.js +0 -9
  79. package/dist/sanitize/visitors/remove-password.js.map +0 -1
  80. package/dist/sanitize/visitors/remove-private.d.ts +0 -3
  81. package/dist/sanitize/visitors/remove-private.js +0 -14
  82. package/dist/sanitize/visitors/remove-private.js.map +0 -1
  83. package/dist/sanitize/visitors/remove-restricted-relations.d.ts +0 -3
  84. package/dist/sanitize/visitors/remove-restricted-relations.js +0 -88
  85. package/dist/sanitize/visitors/remove-restricted-relations.js.map +0 -1
  86. package/dist/sanitize/visitors/restricted-fields.d.ts +0 -3
  87. package/dist/sanitize/visitors/restricted-fields.js +0 -25
  88. package/dist/sanitize/visitors/restricted-fields.js.map +0 -1
  89. package/dist/set-creator-fields.d.ts +0 -9
  90. package/dist/set-creator-fields.js +0 -37
  91. package/dist/set-creator-fields.js.map +0 -1
  92. package/dist/string-formatting.d.ts +0 -16
  93. package/dist/string-formatting.js +0 -85
  94. package/dist/string-formatting.js.map +0 -1
  95. package/dist/template-configuration.d.ts +0 -5
  96. package/dist/template-configuration.js +0 -28
  97. package/dist/template-configuration.js.map +0 -1
  98. package/dist/template.d.ts +0 -9
  99. package/dist/template.js +0 -20
  100. package/dist/template.js.map +0 -1
  101. package/dist/traverse/factory.d.ts +0 -13
  102. package/dist/traverse/factory.js +0 -126
  103. package/dist/traverse/factory.js.map +0 -1
  104. package/dist/traverse/index.d.ts +0 -5
  105. package/dist/traverse/index.js +0 -17
  106. package/dist/traverse/index.js.map +0 -1
  107. package/dist/traverse/query-fields.d.ts +0 -3
  108. package/dist/traverse/query-fields.js +0 -35
  109. package/dist/traverse/query-fields.js.map +0 -1
  110. package/dist/traverse/query-filters.d.ts +0 -3
  111. package/dist/traverse/query-filters.js +0 -73
  112. package/dist/traverse/query-filters.js.map +0 -1
  113. package/dist/traverse/query-populate.d.ts +0 -3
  114. package/dist/traverse/query-populate.js +0 -140
  115. package/dist/traverse/query-populate.js.map +0 -1
  116. package/dist/traverse/query-sort.d.ts +0 -3
  117. package/dist/traverse/query-sort.js +0 -114
  118. package/dist/traverse/query-sort.js.map +0 -1
  119. package/dist/traverse-entity.d.ts +0 -33
  120. package/dist/traverse-entity.js +0 -134
  121. package/dist/traverse-entity.js.map +0 -1
  122. package/dist/types.d.ts +0 -57
  123. package/dist/types.js +0 -4
  124. package/dist/types.js.map +0 -1
  125. package/dist/validators.d.ts +0 -5
  126. package/dist/validators.js +0 -110
  127. package/dist/validators.js.map +0 -1
  128. package/dist/webhook.d.ts +0 -10
  129. package/dist/webhook.js +0 -14
  130. package/dist/webhook.js.map +0 -1
@@ -1,140 +0,0 @@
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
- const fp_1 = require("lodash/fp");
7
- const factory_1 = __importDefault(require("./factory"));
8
- const isKeyword = (keyword) => {
9
- return ({ key, attribute }) => {
10
- return !attribute && keyword === key;
11
- };
12
- };
13
- const isStringArray = (value) => (0, fp_1.isArray)(value) && value.every(fp_1.isString);
14
- const populate = (0, factory_1.default)()
15
- // Array of strings ['foo', 'foo.bar'] => map(recurse), then filter out empty items
16
- .intercept(isStringArray, async (visitor, options, populate, { recurse }) => {
17
- return Promise.all(populate.map((nestedPopulate) => recurse(visitor, options, nestedPopulate)));
18
- })
19
- // Return wildcards as is
20
- .intercept((0, fp_1.eq)('*'), (0, fp_1.constant)('*'))
21
- // Parse string values
22
- .parse(fp_1.isString, () => {
23
- const tokenize = (0, fp_1.split)('.');
24
- const recompose = (0, fp_1.join)('.');
25
- return {
26
- transform: fp_1.trim,
27
- remove(key, data) {
28
- const [root] = tokenize(data);
29
- return root === key ? undefined : data;
30
- },
31
- set(key, value, data) {
32
- const [root] = tokenize(data);
33
- if (root !== key) {
34
- return data;
35
- }
36
- return (0, fp_1.isNil)(value) ? root : `${root}.${value}`;
37
- },
38
- keys(data) {
39
- return [(0, fp_1.first)(tokenize(data))];
40
- },
41
- get(key, data) {
42
- const [root, ...rest] = tokenize(data);
43
- return key === root ? recompose(rest) : undefined;
44
- },
45
- };
46
- })
47
- // Parse object values
48
- .parse(fp_1.isObject, () => ({
49
- transform: fp_1.cloneDeep,
50
- remove(key, data) {
51
- const { [key]: ignored, ...rest } = data;
52
- return rest;
53
- },
54
- set(key, value, data) {
55
- return { ...data, [key]: value };
56
- },
57
- keys(data) {
58
- return Object.keys(data);
59
- },
60
- get(key, data) {
61
- return data[key];
62
- },
63
- }))
64
- .ignore(({ key, attribute }) => {
65
- return ['sort', 'filters', 'fields'].includes(key) && !attribute;
66
- })
67
- .on(
68
- // Handle recursion on populate."populate"
69
- isKeyword('populate'), async ({ key, visitor, path, value, schema }, { set, recurse }) => {
70
- const newValue = await recurse(visitor, { schema, path }, value);
71
- set(key, newValue);
72
- })
73
- .on(isKeyword('on'), async ({ key, visitor, path, value }, { set, recurse }) => {
74
- const newOn = {};
75
- for (const [uid, subPopulate] of Object.entries(value)) {
76
- const model = strapi.getModel(uid);
77
- const newPath = { ...path, raw: `${path.raw}[${uid}]` };
78
- const newSubPopulate = await recurse(visitor, { schema: model, path: newPath }, subPopulate);
79
- newOn[uid] = newSubPopulate;
80
- }
81
- set(key, newOn);
82
- })
83
- // Handle populate on relation
84
- .onRelation(async ({ key, value, attribute, visitor, path, schema }, { set, recurse }) => {
85
- const isMorphRelation = attribute.relation.toLowerCase().startsWith('morph');
86
- if (isMorphRelation) {
87
- // Don't traverse values that cannot be parsed
88
- if (!(0, fp_1.isObject)(value) || !(0, fp_1.isObject)(value?.on)) {
89
- return;
90
- }
91
- // If there is a populate fragment defined, traverse it
92
- const newValue = await recurse(visitor, { schema, path }, { on: value.on });
93
- set(key, { on: newValue });
94
- }
95
- const targetSchemaUID = attribute.target;
96
- const targetSchema = strapi.getModel(targetSchemaUID);
97
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
98
- set(key, newValue);
99
- })
100
- // Handle populate on media
101
- .onMedia(async ({ key, path, visitor, value }, { recurse, set }) => {
102
- const targetSchemaUID = 'plugin::upload.file';
103
- const targetSchema = strapi.getModel(targetSchemaUID);
104
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
105
- set(key, newValue);
106
- })
107
- // Handle populate on components
108
- .onComponent(async ({ key, value, visitor, path, attribute }, { recurse, set }) => {
109
- const targetSchema = strapi.getModel(attribute.component);
110
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
111
- set(key, newValue);
112
- })
113
- // Handle populate on dynamic zones
114
- .onDynamicZone(async ({ key, value, attribute, schema, visitor, path }, { set, recurse }) => {
115
- if ((0, fp_1.isObject)(value)) {
116
- const { components } = attribute;
117
- const { on, ...properties } = value;
118
- const newValue = {};
119
- // Handle legacy DZ params
120
- let newProperties = properties;
121
- for (const componentUID of components) {
122
- const componentSchema = strapi.getModel(componentUID);
123
- newProperties = await recurse(visitor, { schema: componentSchema, path }, newProperties);
124
- }
125
- Object.assign(newValue, newProperties);
126
- // Handle new morph fragment syntax
127
- if (on) {
128
- const newOn = await recurse(visitor, { schema, path }, { on });
129
- // Recompose both syntaxes
130
- Object.assign(newValue, newOn);
131
- }
132
- set(key, newValue);
133
- }
134
- else {
135
- const newValue = await recurse(visitor, { schema, path }, value);
136
- set(key, newValue);
137
- }
138
- });
139
- exports.default = (0, fp_1.curry)(populate.traverse);
140
- //# sourceMappingURL=query-populate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-populate.js","sourceRoot":"","sources":["../../src/traverse/query-populate.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- /// <reference types="lodash" />
2
- declare const _default: import("lodash").CurriedFunction3<any, any, any, Promise<any>>;
3
- export default _default;
@@ -1,114 +0,0 @@
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
- const fp_1 = require("lodash/fp");
7
- const factory_1 = __importDefault(require("./factory"));
8
- const ORDERS = { asc: 'asc', desc: 'desc' };
9
- const ORDER_VALUES = Object.values(ORDERS);
10
- const isSortOrder = (value) => ORDER_VALUES.includes(value.toLowerCase());
11
- const isStringArray = (value) => Array.isArray(value) && value.every(fp_1.isString);
12
- const isObjectArray = (value) => Array.isArray(value) && value.every(fp_1.isObject);
13
- const isNestedSorts = (value) => (0, fp_1.isString)(value) && value.split(',').length > 1;
14
- const sort = (0, factory_1.default)()
15
- .intercept(
16
- // String with chained sorts (foo,bar,foobar) => split, map(recurse), then recompose
17
- isNestedSorts, async (visitor, options, sort, { recurse }) => {
18
- return Promise.all(sort
19
- .split(',')
20
- .map(fp_1.trim)
21
- .map((nestedSort) => recurse(visitor, options, nestedSort))).then((res) => res.filter((part) => !(0, fp_1.isEmpty)(part)).join(','));
22
- })
23
- .intercept(
24
- // Array of strings ['foo', 'foo,bar'] => map(recurse), then filter out empty items
25
- isStringArray, async (visitor, options, sort, { recurse }) => {
26
- return Promise.all(sort.map((nestedSort) => recurse(visitor, options, nestedSort))).then((res) => res.filter((nestedSort) => !(0, fp_1.isEmpty)(nestedSort)));
27
- })
28
- .intercept(
29
- // Array of objects [{ foo: 'asc' }, { bar: 'desc', baz: 'asc' }] => map(recurse), then filter out empty items
30
- isObjectArray, async (visitor, options, sort, { recurse }) => {
31
- return Promise.all(sort.map((nestedSort) => recurse(visitor, options, nestedSort))).then((res) => res.filter((nestedSort) => !(0, fp_1.isEmpty)(nestedSort)));
32
- })
33
- // Parse string values
34
- .parse((sort) => typeof sort === 'string', () => {
35
- const tokenize = (0, fp_1.pipe)((0, fp_1.split)('.'), (0, fp_1.map)((0, fp_1.split)(':')), fp_1.flatten);
36
- const recompose = (parts) => {
37
- if (parts.length === 0) {
38
- return undefined;
39
- }
40
- return parts.reduce((acc, part) => {
41
- if ((0, fp_1.isEmpty)(part)) {
42
- return acc;
43
- }
44
- if (acc === '') {
45
- return part;
46
- }
47
- return isSortOrder(part) ? `${acc}:${part}` : `${acc}.${part}`;
48
- }, '');
49
- };
50
- return {
51
- transform: fp_1.trim,
52
- remove(key, data) {
53
- const [root] = tokenize(data);
54
- return root === key ? undefined : data;
55
- },
56
- set(key, value, data) {
57
- const [root] = tokenize(data);
58
- if (root !== key) {
59
- return data;
60
- }
61
- return (0, fp_1.isNil)(value) ? root : `${root}.${value}`;
62
- },
63
- keys(data) {
64
- return [(0, fp_1.first)(tokenize(data))];
65
- },
66
- get(key, data) {
67
- const [root, ...rest] = tokenize(data);
68
- return key === root ? recompose(rest) : undefined;
69
- },
70
- };
71
- })
72
- // Parse object values
73
- .parse((value) => typeof value === 'object', () => ({
74
- transform: fp_1.cloneDeep,
75
- remove(key, data) {
76
- const { [key]: ignored, ...rest } = data;
77
- return rest;
78
- },
79
- set(key, value, data) {
80
- return { ...data, [key]: value };
81
- },
82
- keys(data) {
83
- return Object.keys(data);
84
- },
85
- get(key, data) {
86
- return data[key];
87
- },
88
- }))
89
- // Handle deep sort on relation
90
- .onRelation(async ({ key, value, attribute, visitor, path }, { set, recurse }) => {
91
- const isMorphRelation = attribute.relation.toLowerCase().startsWith('morph');
92
- if (isMorphRelation) {
93
- return;
94
- }
95
- const targetSchemaUID = attribute.target;
96
- const targetSchema = strapi.getModel(targetSchemaUID);
97
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
98
- set(key, newValue);
99
- })
100
- // Handle deep sort on media
101
- .onMedia(async ({ key, path, visitor, value }, { recurse, set }) => {
102
- const targetSchemaUID = 'plugin::upload.file';
103
- const targetSchema = strapi.getModel(targetSchemaUID);
104
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
105
- set(key, newValue);
106
- })
107
- // Handle deep sort on components
108
- .onComponent(async ({ key, value, visitor, path, attribute }, { recurse, set }) => {
109
- const targetSchema = strapi.getModel(attribute.component);
110
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
111
- set(key, newValue);
112
- });
113
- exports.default = (0, fp_1.curry)(sort.traverse);
114
- //# sourceMappingURL=query-sort.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-sort.js","sourceRoot":"","sources":["../../src/traverse/query-sort.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /// <reference types="lodash" />
2
- import { Attribute, Model } from './types';
3
- export type VisitorUtils = ReturnType<typeof createVisitorUtils>;
4
- export interface VisitorOptions {
5
- data: Record<string, unknown>;
6
- schema: Model;
7
- key: string;
8
- value: Data | Data[];
9
- attribute: Attribute;
10
- path: Path;
11
- }
12
- export interface Visitor {
13
- (visitorOptions: VisitorOptions, visitorUtils: VisitorUtils): void;
14
- }
15
- export interface Data {
16
- [key: string]: Data | Data[];
17
- }
18
- export interface Path {
19
- raw: string | null;
20
- attribute: string | null;
21
- }
22
- interface TraverseOptions {
23
- path?: Path;
24
- schema: Model;
25
- }
26
- declare const createVisitorUtils: ({ data }: {
27
- data: Data;
28
- }) => {
29
- remove(key: string): void;
30
- set(key: string, value: Data): void;
31
- };
32
- declare const _default: import("lodash").CurriedFunction3<Visitor, TraverseOptions, Data, Promise<Data>>;
33
- export default _default;
@@ -1,134 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fp_1 = require("lodash/fp");
4
- const content_types_1 = require("./content-types");
5
- const traverseMorphRelationTarget = async (visitor, path, entry) => {
6
- const targetSchema = strapi.getModel(entry.__type);
7
- const traverseOptions = { schema: targetSchema, path };
8
- return traverseEntity(visitor, traverseOptions, entry);
9
- };
10
- const traverseRelationTarget = (schema) => async (visitor, path, entry) => {
11
- const traverseOptions = { schema, path };
12
- return traverseEntity(visitor, traverseOptions, entry);
13
- };
14
- const traverseMediaTarget = async (visitor, path, entry) => {
15
- const targetSchemaUID = 'plugin::upload.file';
16
- const targetSchema = strapi.getModel(targetSchemaUID);
17
- const traverseOptions = { schema: targetSchema, path };
18
- return traverseEntity(visitor, traverseOptions, entry);
19
- };
20
- const traverseComponent = async (visitor, path, schema, entry) => {
21
- const traverseOptions = { schema, path };
22
- return traverseEntity(visitor, traverseOptions, entry);
23
- };
24
- const visitDynamicZoneEntry = async (visitor, path, entry) => {
25
- const targetSchema = strapi.getModel(entry.__component);
26
- const traverseOptions = { schema: targetSchema, path };
27
- return traverseEntity(visitor, traverseOptions, entry);
28
- };
29
- const traverseEntity = async (visitor, options, entity) => {
30
- const { path = { raw: null, attribute: null }, schema } = options;
31
- // End recursion
32
- if (!(0, fp_1.isObject)(entity) || (0, fp_1.isNil)(schema)) {
33
- return entity;
34
- }
35
- // Don't mutate the original entity object
36
- // only clone at 1st level as the next level will get clone when traversed
37
- const copy = (0, fp_1.clone)(entity);
38
- const visitorUtils = createVisitorUtils({ data: copy });
39
- const keys = Object.keys(copy);
40
- for (let i = 0; i < keys.length; i += 1) {
41
- const key = keys[i];
42
- // Retrieve the attribute definition associated to the key from the schema
43
- const attribute = schema.attributes[key];
44
- // If the attribute doesn't exist within the schema, ignore it
45
- if ((0, fp_1.isNil)(attribute)) {
46
- continue;
47
- }
48
- const newPath = { ...path };
49
- newPath.raw = (0, fp_1.isNil)(path.raw) ? key : `${path.raw}.${key}`;
50
- if (!(0, fp_1.isNil)(attribute)) {
51
- newPath.attribute = (0, fp_1.isNil)(path.attribute) ? key : `${path.attribute}.${key}`;
52
- }
53
- // Visit the current attribute
54
- const visitorOptions = {
55
- data: copy,
56
- schema,
57
- key,
58
- value: copy[key],
59
- attribute,
60
- path: newPath,
61
- };
62
- await visitor(visitorOptions, visitorUtils);
63
- // Extract the value for the current key (after calling the visitor)
64
- const value = copy[key];
65
- // Ignore Nil values
66
- if ((0, fp_1.isNil)(value)) {
67
- continue;
68
- }
69
- if ((0, content_types_1.isRelationalAttribute)(attribute)) {
70
- const isMorphRelation = attribute.relation.toLowerCase().startsWith('morph');
71
- const method = isMorphRelation
72
- ? traverseMorphRelationTarget
73
- : traverseRelationTarget(strapi.getModel(attribute.target));
74
- if ((0, fp_1.isArray)(value)) {
75
- const res = new Array(value.length);
76
- for (let i = 0; i < value.length; i += 1) {
77
- res[i] = await method(visitor, newPath, value[i]);
78
- }
79
- copy[key] = res;
80
- }
81
- else {
82
- copy[key] = await method(visitor, newPath, value);
83
- }
84
- continue;
85
- }
86
- if ((0, content_types_1.isMediaAttribute)(attribute)) {
87
- // need to update copy
88
- if ((0, fp_1.isArray)(value)) {
89
- const res = new Array(value.length);
90
- for (let i = 0; i < value.length; i += 1) {
91
- res[i] = await traverseMediaTarget(visitor, newPath, value[i]);
92
- }
93
- copy[key] = res;
94
- }
95
- else {
96
- copy[key] = await traverseMediaTarget(visitor, newPath, value);
97
- }
98
- continue;
99
- }
100
- if (attribute.type === 'component') {
101
- const targetSchema = strapi.getModel(attribute.component);
102
- if ((0, fp_1.isArray)(value)) {
103
- const res = new Array(value.length);
104
- for (let i = 0; i < value.length; i += 1) {
105
- res[i] = await traverseComponent(visitor, newPath, targetSchema, value[i]);
106
- }
107
- copy[key] = res;
108
- }
109
- else {
110
- copy[key] = await traverseComponent(visitor, newPath, targetSchema, value);
111
- }
112
- continue;
113
- }
114
- if (attribute.type === 'dynamiczone' && (0, fp_1.isArray)(value)) {
115
- const res = new Array(value.length);
116
- for (let i = 0; i < value.length; i += 1) {
117
- res[i] = await visitDynamicZoneEntry(visitor, newPath, value[i]);
118
- }
119
- copy[key] = res;
120
- continue;
121
- }
122
- }
123
- return copy;
124
- };
125
- const createVisitorUtils = ({ data }) => ({
126
- remove(key) {
127
- delete data[key];
128
- },
129
- set(key, value) {
130
- data[key] = value;
131
- },
132
- });
133
- exports.default = (0, fp_1.curry)(traverseEntity);
134
- //# sourceMappingURL=traverse-entity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverse-entity.js","sourceRoot":"","sources":["../src/traverse-entity.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,57 +0,0 @@
1
- import * as Koa from 'koa';
2
- import 'koa-body';
3
- export interface Config {
4
- get<T = unknown>(key: string, defaultVal?: T): T;
5
- }
6
- export interface Attribute {
7
- type: string;
8
- writable?: boolean;
9
- relation?: string;
10
- [key: string]: unknown;
11
- }
12
- export interface RelationalAttribute extends Attribute {
13
- relation: string;
14
- }
15
- export type Kind = 'singleType' | 'collectionType';
16
- export interface Model {
17
- kind: Kind;
18
- info: {
19
- singularName: string;
20
- pluralName: string;
21
- };
22
- options: {
23
- populateCreatorFields: boolean;
24
- };
25
- privateAttributes?: string[];
26
- attributes: Record<string, Attribute>;
27
- }
28
- declare module 'koa' {
29
- interface ExtendableContext {
30
- ok: (response?: string | object) => Koa.Context;
31
- created: (response?: string | object) => Koa.Context;
32
- noContent: (response?: string | object) => Koa.Context;
33
- badRequest: (response?: string | object) => Koa.Context;
34
- unauthorized: (response?: string | object) => Koa.Context;
35
- forbidden: (response?: string | object) => Koa.Context;
36
- notFound: (response?: string | object) => Koa.Context;
37
- locked: (response?: string | object) => Koa.Context;
38
- internalServerError: (response?: string | object) => Koa.Context;
39
- notImplemented: (response?: string | object) => Koa.Context;
40
- }
41
- }
42
- export interface RouteInfo {
43
- endpoint: string;
44
- controller: string;
45
- action: string;
46
- verb: string;
47
- plugin: string;
48
- }
49
- export interface Request extends Koa.Request {
50
- body: {
51
- data?: string;
52
- };
53
- route: RouteInfo;
54
- }
55
- export interface Context extends Koa.ExtendableContext {
56
- request: Request;
57
- }
package/dist/types.js DELETED
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("koa-body");
4
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AACA,oBAAkB"}
@@ -1,5 +0,0 @@
1
- import * as yup from 'yup';
2
- declare const handleYupError: (error: any, errorMessage: any) => never;
3
- declare const validateYupSchema: (schema: any, options?: {}) => (body: any, errorMessage: any) => Promise<any>;
4
- declare const validateYupSchemaSync: (schema: any, options?: {}) => (body: any, errorMessage: any) => any;
5
- export { yup, handleYupError, validateYupSchema, validateYupSchemaSync };
@@ -1,110 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.validateYupSchemaSync = exports.validateYupSchema = exports.handleYupError = exports.yup = void 0;
30
- /* eslint-disable no-template-curly-in-string */
31
- const yup = __importStar(require("yup"));
32
- exports.yup = yup;
33
- const lodash_1 = __importDefault(require("lodash"));
34
- const fp_1 = require("lodash/fp");
35
- const utils = __importStar(require("./string-formatting"));
36
- const errors_1 = require("./errors");
37
- const print_value_1 = __importDefault(require("./print-value"));
38
- const MixedSchemaType = yup.MixedSchema;
39
- const isNotNilTest = (value) => !lodash_1.default.isNil(value);
40
- const isNotNullTest = (value) => !lodash_1.default.isNull(value);
41
- yup.addMethod(yup.mixed, 'notNil', function isNotNill(msg = '${path} must be defined.') {
42
- return this.test('defined', msg, isNotNilTest);
43
- });
44
- yup.addMethod(yup.mixed, 'notNull', function isNotNull(msg = '${path} cannot be null.') {
45
- return this.test('defined', msg, isNotNullTest);
46
- });
47
- yup.addMethod(yup.mixed, 'isFunction', function isFunction(message = '${path} is not a function') {
48
- return this.test('is a function', message, (value) => lodash_1.default.isUndefined(value) || lodash_1.default.isFunction(value));
49
- });
50
- yup.addMethod(yup.string, 'isCamelCase', function isCamelCase(message = '${path} is not in camel case (anExampleOfCamelCase)') {
51
- return this.test('is in camelCase', message, (value) => value ? utils.isCamelCase(value) : false);
52
- });
53
- yup.addMethod(yup.string, 'isKebabCase', function isKebabCase(message = '${path} is not in kebab case (an-example-of-kebab-case)') {
54
- return this.test('is in kebab-case', message, (value) => value ? utils.isKebabCase(value) : false);
55
- });
56
- yup.addMethod(yup.object, 'onlyContainsFunctions', function onlyContainsFunctions(message = '${path} contains values that are not functions') {
57
- return this.test('only contains functions', message, (value) => lodash_1.default.isUndefined(value) || (value && Object.values(value).every(lodash_1.default.isFunction)));
58
- });
59
- class StrapiIDSchema extends MixedSchemaType {
60
- constructor() {
61
- super({ type: 'strapiID' });
62
- }
63
- _typeCheck(value) {
64
- return typeof value === 'string' || (Number.isInteger(value) && value >= 0);
65
- }
66
- }
67
- yup.strapiID = () => new StrapiIDSchema();
68
- const handleYupError = (error, errorMessage) => {
69
- throw new errors_1.YupValidationError(error, errorMessage);
70
- };
71
- exports.handleYupError = handleYupError;
72
- const defaultValidationParam = { strict: true, abortEarly: false };
73
- const validateYupSchema = (schema, options = {}) => async (body, errorMessage) => {
74
- try {
75
- const optionsWithDefaults = (0, fp_1.defaults)(defaultValidationParam, options);
76
- const result = await schema.validate(body, optionsWithDefaults);
77
- return result;
78
- }
79
- catch (e) {
80
- handleYupError(e, errorMessage);
81
- }
82
- };
83
- exports.validateYupSchema = validateYupSchema;
84
- const validateYupSchemaSync = (schema, options = {}) => (body, errorMessage) => {
85
- try {
86
- const optionsWithDefaults = (0, fp_1.defaults)(defaultValidationParam, options);
87
- return schema.validateSync(body, optionsWithDefaults);
88
- }
89
- catch (e) {
90
- handleYupError(e, errorMessage);
91
- }
92
- };
93
- exports.validateYupSchemaSync = validateYupSchemaSync;
94
- // Temporary fix of this issue : https://github.com/jquense/yup/issues/616
95
- yup.setLocale({
96
- mixed: {
97
- notType({ path, type, value, originalValue }) {
98
- const isCast = originalValue != null && originalValue !== value;
99
- const msg = `${path} must be a \`${type}\` type, ` +
100
- `but the final value was: \`${(0, print_value_1.default)(value, true)}\`${isCast ? ` (cast from the value \`${(0, print_value_1.default)(originalValue, true)}\`).` : '.'}`;
101
- /* Remove comment that is not supposed to be seen by the enduser
102
- if (value === null) {
103
- msg += `\n If "null" is intended as an empty value be sure to mark the schema as \`.nullable()\``;
104
- }
105
- */
106
- return msg;
107
- },
108
- },
109
- });
110
- //# sourceMappingURL=validators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}