payload 0.15.13 → 0.16.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 (131) hide show
  1. package/.eslintrc.js +2 -1
  2. package/CHANGELOG.md +33 -0
  3. package/dist/admin/components/elements/ReactSelect/types.d.ts +1 -1
  4. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts +18 -0
  5. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +158 -0
  6. package/dist/admin/components/forms/Form/{buildStateFromSchema.d.ts → buildStateFromSchema/index.d.ts} +4 -3
  7. package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +25 -0
  8. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts +18 -0
  9. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +24 -0
  10. package/dist/admin/components/forms/Form/index.js +2 -6
  11. package/dist/admin/components/forms/RenderFields/index.js +1 -1
  12. package/dist/admin/components/forms/field-types/Array/Array.js +4 -2
  13. package/dist/admin/components/forms/field-types/Blocks/Blocks.js +4 -2
  14. package/dist/admin/components/forms/field-types/Relationship/index.js +3 -1
  15. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.js +4 -2
  16. package/dist/admin/components/views/Account/index.js +2 -2
  17. package/dist/admin/components/views/Global/index.js +4 -4
  18. package/dist/admin/components/views/collections/Edit/index.js +7 -4
  19. package/dist/auth/operations/login.js +6 -8
  20. package/dist/collections/config/types.d.ts +1 -0
  21. package/dist/collections/operations/create.js +21 -20
  22. package/dist/collections/operations/delete.js +6 -7
  23. package/dist/collections/operations/find.js +8 -9
  24. package/dist/collections/operations/findByID.js +7 -9
  25. package/dist/collections/operations/findVersionByID.js +7 -9
  26. package/dist/collections/operations/findVersions.js +8 -10
  27. package/dist/collections/operations/restoreVersion.js +9 -13
  28. package/dist/collections/operations/update.js +26 -33
  29. package/dist/collections/tests/defaultValue.spec.d.ts +1 -0
  30. package/dist/collections/tests/defaultValue.spec.js +95 -0
  31. package/dist/collections/tests/hooks.spec.js +5 -1
  32. package/dist/fields/config/sanitize.d.ts +2 -1
  33. package/dist/fields/config/sanitize.js +5 -5
  34. package/dist/fields/config/sanitize.spec.js +30 -19
  35. package/dist/fields/config/schema.js +16 -15
  36. package/dist/fields/config/types.d.ts +8 -4
  37. package/dist/fields/config/types.js +6 -2
  38. package/dist/fields/getDefaultValue.d.ts +9 -0
  39. package/dist/fields/getDefaultValue.js +14 -0
  40. package/dist/fields/hooks/afterChange/index.d.ts +12 -0
  41. package/dist/fields/hooks/afterChange/index.js +26 -0
  42. package/dist/fields/hooks/afterChange/promise.d.ts +14 -0
  43. package/dist/fields/hooks/afterChange/promise.js +104 -0
  44. package/dist/fields/hooks/afterChange/traverseFields.d.ts +14 -0
  45. package/dist/fields/hooks/afterChange/traverseFields.js +20 -0
  46. package/dist/fields/hooks/afterRead/index.d.ts +16 -0
  47. package/dist/fields/hooks/afterRead/index.js +40 -0
  48. package/dist/fields/hooks/afterRead/promise.d.ts +18 -0
  49. package/dist/fields/hooks/afterRead/promise.js +225 -0
  50. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +13 -0
  51. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +84 -0
  52. package/dist/fields/hooks/afterRead/traverseFields.d.ts +18 -0
  53. package/dist/fields/hooks/afterRead/traverseFields.js +24 -0
  54. package/dist/fields/hooks/beforeChange/index.d.ts +16 -0
  55. package/dist/fields/hooks/beforeChange/index.js +40 -0
  56. package/dist/fields/hooks/beforeChange/promise.d.ts +25 -0
  57. package/dist/fields/hooks/beforeChange/promise.js +236 -0
  58. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +25 -0
  59. package/dist/fields/hooks/beforeChange/traverseFields.js +27 -0
  60. package/dist/fields/hooks/beforeValidate/index.d.ts +14 -0
  61. package/dist/fields/hooks/beforeValidate/index.js +28 -0
  62. package/dist/fields/hooks/beforeValidate/promise.d.ts +16 -0
  63. package/dist/fields/hooks/beforeValidate/promise.js +229 -0
  64. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +16 -0
  65. package/dist/fields/hooks/beforeValidate/traverseFields.js +22 -0
  66. package/dist/fields/richText/populate.d.ts +1 -3
  67. package/dist/fields/richText/populate.js +3 -3
  68. package/dist/fields/richText/recurseNestedFields.d.ts +1 -3
  69. package/dist/fields/richText/recurseNestedFields.js +7 -15
  70. package/dist/fields/richText/relationshipPromise.d.ts +6 -9
  71. package/dist/fields/richText/relationshipPromise.js +11 -15
  72. package/dist/fields/validations.js +3 -4
  73. package/dist/globals/config/types.d.ts +1 -0
  74. package/dist/globals/operations/findOne.js +11 -11
  75. package/dist/globals/operations/findVersionByID.js +5 -8
  76. package/dist/globals/operations/findVersions.js +7 -9
  77. package/dist/globals/operations/restoreVersion.js +12 -14
  78. package/dist/globals/operations/update.js +29 -33
  79. package/dist/graphql/schema/buildObjectType.js +3 -5
  80. package/dist/index.d.ts +0 -2
  81. package/dist/index.js +1 -3
  82. package/dist/localization/middleware.js +1 -2
  83. package/dist/mongoose/buildSchema.js +1 -2
  84. package/dist/uploads/mimeTypeValidator.js +4 -1
  85. package/dist/uploads/mimeTypeValidator.spec.js +7 -1
  86. package/dist/uploads/uploadFile.js +3 -2
  87. package/dist/versions/drafts/saveCollectionDraft.d.ts +1 -1
  88. package/dist/versions/drafts/saveCollectionDraft.js +1 -1
  89. package/dist/versions/ensurePublishedCollectionVersion.js +5 -7
  90. package/dist/versions/ensurePublishedGlobalVersion.js +5 -6
  91. package/dist/versions/saveCollectionVersion.js +6 -7
  92. package/dist/versions/saveGlobalVersion.js +7 -7
  93. package/dist/versions/tests/globals-graphql.spec.js +2 -2
  94. package/dist/webpack/getBaseConfig.js +1 -2
  95. package/docs/fields/array.mdx +1 -1
  96. package/docs/fields/blocks.mdx +1 -1
  97. package/docs/fields/checkbox.mdx +1 -1
  98. package/docs/fields/code.mdx +1 -1
  99. package/docs/fields/date.mdx +1 -1
  100. package/docs/fields/email.mdx +1 -1
  101. package/docs/fields/group.mdx +1 -1
  102. package/docs/fields/number.mdx +1 -1
  103. package/docs/fields/overview.mdx +37 -2
  104. package/docs/fields/point.mdx +1 -1
  105. package/docs/fields/radio.mdx +1 -1
  106. package/docs/fields/relationship.mdx +1 -1
  107. package/docs/fields/rich-text.mdx +1 -1
  108. package/docs/fields/select.mdx +1 -1
  109. package/docs/fields/text.mdx +1 -1
  110. package/docs/fields/textarea.mdx +1 -1
  111. package/docs/fields/upload.mdx +1 -1
  112. package/docs/hooks/collections.mdx +1 -0
  113. package/docs/hooks/fields.mdx +4 -3
  114. package/docs/hooks/globals.mdx +1 -0
  115. package/docs/production/preventing-abuse.mdx +16 -5
  116. package/docs/queries/overview.mdx +1 -1
  117. package/docs/rest-api/overview.mdx +1 -1
  118. package/package.json +4 -1
  119. package/dist/admin/components/forms/Form/buildStateFromSchema.js +0 -140
  120. package/dist/fields/accessPromise.d.ts +0 -22
  121. package/dist/fields/accessPromise.js +0 -39
  122. package/dist/fields/hookPromise.d.ts +0 -16
  123. package/dist/fields/hookPromise.js +0 -53
  124. package/dist/fields/performFieldOperations.d.ts +0 -25
  125. package/dist/fields/performFieldOperations.js +0 -86
  126. package/dist/fields/relationshipPopulationPromise.d.ts +0 -15
  127. package/dist/fields/relationshipPopulationPromise.js +0 -86
  128. package/dist/fields/traverseFields.d.ts +0 -40
  129. package/dist/fields/traverseFields.js +0 -329
  130. package/dist/fields/validationPromise.d.ts +0 -22
  131. package/dist/fields/validationPromise.js +0 -34
@@ -1,329 +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 validationPromise_1 = __importDefault(require("./validationPromise"));
7
- const accessPromise_1 = __importDefault(require("./accessPromise"));
8
- const hookPromise_1 = __importDefault(require("./hookPromise"));
9
- const types_1 = require("./config/types");
10
- const relationshipPromise_1 = __importDefault(require("./richText/relationshipPromise"));
11
- const traverseFields = (args) => {
12
- const { fields, data = {}, originalDoc = {}, path, flattenLocales, locale, fallbackLocale, accessPromises, operation, overrideAccess, req, id, relationshipPopulations, depth, currentDepth, hook, hookPromises, fullOriginalDoc, fullData, validationPromises, errors, payload, showHiddenFields, unflattenLocaleActions, unflattenLocales, transformActions, docWithLocales = {}, skipValidation, isVersion, } = args;
13
- fields.forEach((field) => {
14
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
15
- const dataCopy = data;
16
- if (hook === 'afterRead') {
17
- if (field.type === 'group') {
18
- // Fill groups with empty objects so fields with hooks within groups can populate
19
- // themselves virtually as necessary
20
- if (typeof data[field.name] === 'undefined' && typeof originalDoc[field.name] === 'undefined') {
21
- data[field.name] = {};
22
- }
23
- }
24
- if ((0, types_1.fieldAffectsData)(field) && field.hidden && typeof data[field.name] !== 'undefined' && !showHiddenFields) {
25
- delete data[field.name];
26
- }
27
- if (field.type === 'point') {
28
- transformActions.push(() => {
29
- var _a;
30
- if (((_a = data[field.name]) === null || _a === void 0 ? void 0 : _a.coordinates) && Array.isArray(data[field.name].coordinates) && data[field.name].coordinates.length === 2) {
31
- data[field.name] = data[field.name].coordinates;
32
- }
33
- });
34
- }
35
- }
36
- if ((field.type === 'upload' || field.type === 'relationship')
37
- && (data[field.name] === '' || data[field.name] === 'none' || data[field.name] === 'null')) {
38
- if (field.type === 'relationship' && field.hasMany === true) {
39
- dataCopy[field.name] = [];
40
- }
41
- else {
42
- dataCopy[field.name] = null;
43
- }
44
- }
45
- if (field.type === 'relationship' && field.hasMany && (data[field.name] === '' || data[field.name] === 'none' || data[field.name] === 'null' || data[field.name] === null)) {
46
- dataCopy[field.name] = [];
47
- }
48
- if (field.type === 'number' && typeof data[field.name] === 'string') {
49
- const trimmed = data[field.name].trim();
50
- dataCopy[field.name] = (trimmed.length === 0) ? null : parseFloat(trimmed);
51
- }
52
- if ((0, types_1.fieldAffectsData)(field) && field.name === 'id') {
53
- if (field.type === 'number' && typeof data[field.name] === 'string') {
54
- dataCopy[field.name] = parseFloat(data[field.name]);
55
- }
56
- if (field.type === 'text' && typeof ((_a = data[field.name]) === null || _a === void 0 ? void 0 : _a.toString) === 'function' && typeof data[field.name] !== 'string') {
57
- dataCopy[field.name] = dataCopy[field.name].toString();
58
- }
59
- }
60
- if (field.type === 'checkbox') {
61
- if (data[field.name] === 'true')
62
- dataCopy[field.name] = true;
63
- if (data[field.name] === 'false')
64
- dataCopy[field.name] = false;
65
- if (data[field.name] === '')
66
- dataCopy[field.name] = false;
67
- }
68
- if (field.type === 'richText') {
69
- if (typeof data[field.name] === 'string') {
70
- try {
71
- const richTextJSON = JSON.parse(data[field.name]);
72
- dataCopy[field.name] = richTextJSON;
73
- }
74
- catch {
75
- // Disregard this data as it is not valid.
76
- // Will be reported to user by field validation
77
- }
78
- }
79
- if (((((_c = (_b = field.admin) === null || _b === void 0 ? void 0 : _b.elements) === null || _c === void 0 ? void 0 : _c.includes('relationship')) || ((_e = (_d = field.admin) === null || _d === void 0 ? void 0 : _d.elements) === null || _e === void 0 ? void 0 : _e.includes('upload'))) || !((_f = field === null || field === void 0 ? void 0 : field.admin) === null || _f === void 0 ? void 0 : _f.elements)) && hook === 'afterRead') {
80
- relationshipPopulations.push((0, relationshipPromise_1.default)({
81
- req,
82
- data,
83
- payload,
84
- overrideAccess,
85
- depth,
86
- field,
87
- currentDepth,
88
- showHiddenFields,
89
- }));
90
- }
91
- }
92
- const hasLocalizedValue = (0, types_1.fieldAffectsData)(field)
93
- && (typeof (data === null || data === void 0 ? void 0 : data[field.name]) === 'object' && (data === null || data === void 0 ? void 0 : data[field.name]) !== null)
94
- && field.name
95
- && field.localized
96
- && locale !== 'all'
97
- && flattenLocales;
98
- if (hasLocalizedValue) {
99
- let localizedValue = data[field.name][locale];
100
- if (typeof localizedValue === 'undefined' && fallbackLocale)
101
- localizedValue = data[field.name][fallbackLocale];
102
- if (typeof localizedValue === 'undefined' && field.type === 'group')
103
- localizedValue = {};
104
- if (typeof localizedValue === 'undefined')
105
- localizedValue = null;
106
- dataCopy[field.name] = localizedValue;
107
- }
108
- if ((0, types_1.fieldAffectsData)(field) && field.localized && unflattenLocales) {
109
- unflattenLocaleActions.push(() => {
110
- const localeData = payload.config.localization.locales.reduce((locales, localeID) => {
111
- var _a, _b, _c;
112
- let valueToSet;
113
- if (localeID === locale) {
114
- if (typeof data[field.name] !== 'undefined') {
115
- valueToSet = data[field.name];
116
- }
117
- else if ((_a = docWithLocales === null || docWithLocales === void 0 ? void 0 : docWithLocales[field.name]) === null || _a === void 0 ? void 0 : _a[localeID]) {
118
- valueToSet = (_b = docWithLocales === null || docWithLocales === void 0 ? void 0 : docWithLocales[field.name]) === null || _b === void 0 ? void 0 : _b[localeID];
119
- }
120
- }
121
- else {
122
- valueToSet = (_c = docWithLocales === null || docWithLocales === void 0 ? void 0 : docWithLocales[field.name]) === null || _c === void 0 ? void 0 : _c[localeID];
123
- }
124
- if (typeof valueToSet !== 'undefined') {
125
- return {
126
- ...locales,
127
- [localeID]: valueToSet,
128
- };
129
- }
130
- return locales;
131
- }, {});
132
- // If there are locales with data, set the data
133
- if (Object.keys(localeData).length > 0) {
134
- data[field.name] = localeData;
135
- }
136
- });
137
- }
138
- if ((0, types_1.fieldAffectsData)(field)) {
139
- accessPromises.push(() => (0, accessPromise_1.default)({
140
- data,
141
- fullData,
142
- originalDoc,
143
- field,
144
- operation,
145
- overrideAccess,
146
- req,
147
- id,
148
- relationshipPopulations,
149
- depth,
150
- currentDepth,
151
- hook,
152
- payload,
153
- showHiddenFields,
154
- }));
155
- hookPromises.push(() => (0, hookPromise_1.default)({
156
- data,
157
- field,
158
- hook,
159
- req,
160
- operation,
161
- fullOriginalDoc,
162
- fullData,
163
- flattenLocales,
164
- isVersion,
165
- }));
166
- }
167
- const passesCondition = (((_g = field.admin) === null || _g === void 0 ? void 0 : _g.condition) && hook === 'beforeChange') ? field.admin.condition(fullData, data) : true;
168
- const skipValidationFromHere = skipValidation || !passesCondition;
169
- if ((0, types_1.fieldHasSubFields)(field)) {
170
- if (!(0, types_1.fieldAffectsData)(field)) {
171
- traverseFields({
172
- ...args,
173
- fields: field.fields,
174
- skipValidation: skipValidationFromHere,
175
- });
176
- }
177
- else if ((0, types_1.fieldIsArrayType)(field)) {
178
- if (Array.isArray(data[field.name])) {
179
- for (let i = 0; i < data[field.name].length; i += 1) {
180
- if (typeof (data[field.name][i]) === 'undefined') {
181
- data[field.name][i] = {};
182
- }
183
- traverseFields({
184
- ...args,
185
- fields: field.fields,
186
- data: data[field.name][i] || {},
187
- originalDoc: (_h = originalDoc === null || originalDoc === void 0 ? void 0 : originalDoc[field.name]) === null || _h === void 0 ? void 0 : _h[i],
188
- docWithLocales: (_j = docWithLocales === null || docWithLocales === void 0 ? void 0 : docWithLocales[field.name]) === null || _j === void 0 ? void 0 : _j[i],
189
- path: `${path}${field.name}.${i}.`,
190
- skipValidation: skipValidationFromHere,
191
- showHiddenFields,
192
- });
193
- }
194
- }
195
- }
196
- else {
197
- traverseFields({
198
- ...args,
199
- fields: field.fields,
200
- data: data[field.name],
201
- originalDoc: originalDoc[field.name],
202
- docWithLocales: docWithLocales === null || docWithLocales === void 0 ? void 0 : docWithLocales[field.name],
203
- path: `${path}${field.name}.`,
204
- skipValidation: skipValidationFromHere,
205
- showHiddenFields,
206
- });
207
- }
208
- }
209
- if ((0, types_1.fieldIsBlockType)(field)) {
210
- if (Array.isArray(data[field.name])) {
211
- data[field.name].forEach((rowData, i) => {
212
- var _a, _b;
213
- const block = field.blocks.find((blockType) => blockType.slug === rowData.blockType);
214
- if (block) {
215
- traverseFields({
216
- ...args,
217
- fields: block.fields,
218
- data: rowData || {},
219
- originalDoc: (_a = originalDoc === null || originalDoc === void 0 ? void 0 : originalDoc[field.name]) === null || _a === void 0 ? void 0 : _a[i],
220
- docWithLocales: (_b = docWithLocales === null || docWithLocales === void 0 ? void 0 : docWithLocales[field.name]) === null || _b === void 0 ? void 0 : _b[i],
221
- path: `${path}${field.name}.${i}.`,
222
- skipValidation: skipValidationFromHere,
223
- showHiddenFields,
224
- });
225
- }
226
- });
227
- }
228
- }
229
- if (hook === 'beforeChange' && (0, types_1.fieldAffectsData)(field)) {
230
- const updatedData = data;
231
- if ((data === null || data === void 0 ? void 0 : data[field.name]) === undefined && (originalDoc === null || originalDoc === void 0 ? void 0 : originalDoc[field.name]) === undefined && field.defaultValue) {
232
- updatedData[field.name] = field.defaultValue;
233
- }
234
- if (field.type === 'relationship' || field.type === 'upload') {
235
- if (Array.isArray(field.relationTo)) {
236
- if (Array.isArray(dataCopy[field.name])) {
237
- dataCopy[field.name].forEach((relatedDoc, i) => {
238
- const relatedCollection = payload.config.collections.find((collection) => collection.slug === relatedDoc.relationTo);
239
- const relationshipIDField = relatedCollection.fields.find((collectionField) => (0, types_1.fieldAffectsData)(collectionField) && collectionField.name === 'id');
240
- if ((relationshipIDField === null || relationshipIDField === void 0 ? void 0 : relationshipIDField.type) === 'number') {
241
- dataCopy[field.name][i] = { ...relatedDoc, value: parseFloat(relatedDoc.value) };
242
- }
243
- });
244
- }
245
- if (field.type === 'relationship' && field.hasMany !== true && ((_k = dataCopy[field.name]) === null || _k === void 0 ? void 0 : _k.relationTo)) {
246
- const relatedCollection = payload.config.collections.find((collection) => collection.slug === dataCopy[field.name].relationTo);
247
- const relationshipIDField = relatedCollection.fields.find((collectionField) => (0, types_1.fieldAffectsData)(collectionField) && collectionField.name === 'id');
248
- if ((relationshipIDField === null || relationshipIDField === void 0 ? void 0 : relationshipIDField.type) === 'number') {
249
- dataCopy[field.name] = { ...dataCopy[field.name], value: parseFloat(dataCopy[field.name].value) };
250
- }
251
- }
252
- }
253
- else {
254
- if (Array.isArray(dataCopy[field.name])) {
255
- dataCopy[field.name].forEach((relatedDoc, i) => {
256
- const relatedCollection = payload.config.collections.find((collection) => collection.slug === field.relationTo);
257
- const relationshipIDField = relatedCollection.fields.find((collectionField) => (0, types_1.fieldAffectsData)(collectionField) && collectionField.name === 'id');
258
- if ((relationshipIDField === null || relationshipIDField === void 0 ? void 0 : relationshipIDField.type) === 'number') {
259
- dataCopy[field.name][i] = parseFloat(relatedDoc);
260
- }
261
- });
262
- }
263
- if (field.type === 'relationship' && field.hasMany !== true && dataCopy[field.name]) {
264
- const relatedCollection = payload.config.collections.find((collection) => collection.slug === field.relationTo);
265
- const relationshipIDField = relatedCollection.fields.find((collectionField) => (0, types_1.fieldAffectsData)(collectionField) && collectionField.name === 'id');
266
- if ((relationshipIDField === null || relationshipIDField === void 0 ? void 0 : relationshipIDField.type) === 'number') {
267
- dataCopy[field.name] = parseFloat(dataCopy[field.name]);
268
- }
269
- }
270
- }
271
- }
272
- if (field.type === 'point' && data[field.name]) {
273
- transformActions.push(() => {
274
- if (Array.isArray(data[field.name]) && data[field.name][0] !== null && data[field.name][1] !== null) {
275
- data[field.name] = {
276
- type: 'Point',
277
- coordinates: [
278
- parseFloat(data[field.name][0]),
279
- parseFloat(data[field.name][1]),
280
- ],
281
- };
282
- }
283
- });
284
- }
285
- if (field.type === 'array' || field.type === 'blocks') {
286
- const hasRowsOfNewData = Array.isArray(data[field.name]);
287
- const newRowCount = hasRowsOfNewData ? data[field.name].length : undefined;
288
- // Handle cases of arrays being intentionally set to 0
289
- if (data[field.name] === '0' || data[field.name] === 0 || data[field.name] === null) {
290
- updatedData[field.name] = [];
291
- }
292
- const hasRowsOfExistingData = Array.isArray(originalDoc[field.name]);
293
- const existingRowCount = hasRowsOfExistingData ? originalDoc[field.name].length : 0;
294
- validationPromises.push(() => (0, validationPromise_1.default)({
295
- errors,
296
- hook,
297
- data: { [field.name]: newRowCount },
298
- fullData,
299
- originalDoc: { [field.name]: existingRowCount },
300
- fullOriginalDoc,
301
- field,
302
- path,
303
- skipValidation: skipValidationFromHere,
304
- user: req.user,
305
- operation,
306
- id,
307
- }));
308
- }
309
- else if ((0, types_1.fieldAffectsData)(field)) {
310
- validationPromises.push(() => (0, validationPromise_1.default)({
311
- errors,
312
- hook,
313
- data,
314
- fullData,
315
- originalDoc,
316
- fullOriginalDoc,
317
- field,
318
- path,
319
- skipValidation: skipValidationFromHere,
320
- user: req.user,
321
- operation,
322
- id,
323
- }));
324
- }
325
- }
326
- });
327
- };
328
- exports.default = traverseFields;
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVyc2VGaWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmllbGRzL3RyYXZlcnNlRmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNEVBQW9EO0FBQ3BELG9FQUE0QztBQUM1QyxnRUFBd0M7QUFDeEMsMENBT3dCO0FBSXhCLHlGQUF5RTtBQWtDekUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFlLEVBQVEsRUFBRTtJQUMvQyxNQUFNLEVBQ0osTUFBTSxFQUNOLElBQUksR0FBRyxFQUFFLEVBQ1QsV0FBVyxHQUFHLEVBQUUsRUFDaEIsSUFBSSxFQUNKLGNBQWMsRUFDZCxNQUFNLEVBQ04sY0FBYyxFQUNkLGNBQWMsRUFDZCxTQUFTLEVBQ1QsY0FBYyxFQUNkLEdBQUcsRUFDSCxFQUFFLEVBQ0YsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxZQUFZLEVBQ1osSUFBSSxFQUNKLFlBQVksRUFDWixlQUFlLEVBQ2YsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixNQUFNLEVBQ04sT0FBTyxFQUNQLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixjQUFjLEdBQUcsRUFBRSxFQUNuQixjQUFjLEVBQ2QsU0FBUyxHQUNWLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFOztRQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3hCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQzFCLGlGQUFpRjtnQkFDakYsb0NBQW9DO2dCQUNwQyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFdBQVcsRUFBRTtv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
@@ -1,22 +0,0 @@
1
- import { User } from '../auth';
2
- import { Operation } from '../types';
3
- import { HookName, FieldAffectingData } from './config/types';
4
- declare type Arguments = {
5
- hook: HookName;
6
- field: FieldAffectingData;
7
- path: string;
8
- errors: {
9
- message: string;
10
- field: string;
11
- }[];
12
- data: Record<string, unknown>;
13
- fullData: Record<string, unknown>;
14
- originalDoc: Record<string, unknown>;
15
- fullOriginalDoc: Record<string, unknown>;
16
- id?: string | number;
17
- skipValidation?: boolean;
18
- user: User;
19
- operation: Operation;
20
- };
21
- declare const validationPromise: ({ errors, hook, originalDoc, fullOriginalDoc, data, fullData, id, field, path, skipValidation, user, operation, }: Arguments) => Promise<string | boolean>;
22
- export default validationPromise;
@@ -1,34 +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 deepmerge_1 = __importDefault(require("deepmerge"));
7
- const validationPromise = async ({ errors, hook, originalDoc, fullOriginalDoc, data, fullData, id, field, path, skipValidation, user, operation, }) => {
8
- if (hook !== 'beforeChange' || skipValidation)
9
- return true;
10
- const hasCondition = field.admin && field.admin.condition;
11
- const shouldValidate = field.validate && !hasCondition;
12
- let valueToValidate = data === null || data === void 0 ? void 0 : data[field.name];
13
- if (valueToValidate === undefined)
14
- valueToValidate = originalDoc === null || originalDoc === void 0 ? void 0 : originalDoc[field.name];
15
- if (valueToValidate === undefined)
16
- valueToValidate = field.defaultValue;
17
- const result = shouldValidate ? await field.validate(valueToValidate, {
18
- ...field,
19
- data: (0, deepmerge_1.default)(fullOriginalDoc, fullData),
20
- siblingData: (0, deepmerge_1.default)(originalDoc, data),
21
- id,
22
- operation,
23
- user,
24
- }) : true;
25
- if (typeof result === 'string') {
26
- errors.push({
27
- message: result,
28
- field: `${path}${field.name}`,
29
- });
30
- }
31
- return result;
32
- };
33
- exports.default = validationPromise;
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvblByb21pc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmllbGRzL3ZhbGlkYXRpb25Qcm9taXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQThCO0FBb0I5QixNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFBRSxFQUMvQixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxlQUFlLEVBQ2YsSUFBSSxFQUNKLFFBQVEsRUFDUixFQUFFLEVBQ0YsS0FBSyxFQUNMLElBQUksRUFDSixjQUFjLEVBQ2QsSUFBSSxFQUNKLFNBQVMsR0FDQyxFQUE2QixFQUFFO0lBQ3pDLElBQUksSUFBSSxLQUFLLGNBQWMsSUFBSSxjQUFjO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFM0QsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUMxRCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBRXZELElBQUksZUFBZSxHQUFHLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsSUFBSSxlQUFlLEtBQUssU0FBUztRQUFFLGVBQWUsR0FBRyxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9FLElBQUksZUFBZSxLQUFLLFNBQVM7UUFBRSxlQUFlLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztJQUV4RSxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUU7UUFDcEUsR0FBRyxLQUFLO1FBQ1IsSUFBSSxFQUFFLElBQUEsbUJBQUssRUFBQyxlQUFlLEVBQUUsUUFBUSxDQUFDO1FBQ3RDLFdBQVcsRUFBRSxJQUFBLG1CQUFLLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztRQUNyQyxFQUFFO1FBQ0YsU0FBUztRQUNULElBQUk7S0FDTCxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVWLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1FBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDVixPQUFPLEVBQUUsTUFBTTtZQUNmLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFO1NBQzlCLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsaUJBQWlCLENBQUMifQ==