payload 0.16.1 → 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 (82) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/auth/operations/login.js +6 -8
  3. package/dist/collections/config/types.d.ts +1 -0
  4. package/dist/collections/operations/create.js +21 -20
  5. package/dist/collections/operations/delete.js +6 -7
  6. package/dist/collections/operations/find.js +8 -9
  7. package/dist/collections/operations/findByID.js +7 -9
  8. package/dist/collections/operations/findVersionByID.js +7 -9
  9. package/dist/collections/operations/findVersions.js +8 -10
  10. package/dist/collections/operations/restoreVersion.js +9 -13
  11. package/dist/collections/operations/update.js +26 -33
  12. package/dist/collections/tests/hooks.spec.js +5 -1
  13. package/dist/fields/config/sanitize.d.ts +2 -1
  14. package/dist/fields/config/sanitize.js +5 -5
  15. package/dist/fields/config/sanitize.spec.js +30 -19
  16. package/dist/fields/config/types.d.ts +6 -4
  17. package/dist/fields/config/types.js +6 -2
  18. package/dist/fields/hooks/afterChange/index.d.ts +12 -0
  19. package/dist/fields/hooks/afterChange/index.js +26 -0
  20. package/dist/fields/hooks/afterChange/promise.d.ts +14 -0
  21. package/dist/fields/hooks/afterChange/promise.js +104 -0
  22. package/dist/fields/hooks/afterChange/traverseFields.d.ts +14 -0
  23. package/dist/fields/hooks/afterChange/traverseFields.js +20 -0
  24. package/dist/fields/hooks/afterRead/index.d.ts +16 -0
  25. package/dist/fields/hooks/afterRead/index.js +40 -0
  26. package/dist/fields/hooks/afterRead/promise.d.ts +18 -0
  27. package/dist/fields/hooks/afterRead/promise.js +225 -0
  28. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +13 -0
  29. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +84 -0
  30. package/dist/fields/hooks/afterRead/traverseFields.d.ts +18 -0
  31. package/dist/fields/hooks/afterRead/traverseFields.js +24 -0
  32. package/dist/fields/hooks/beforeChange/index.d.ts +16 -0
  33. package/dist/fields/hooks/beforeChange/index.js +40 -0
  34. package/dist/fields/hooks/beforeChange/promise.d.ts +25 -0
  35. package/dist/fields/hooks/beforeChange/promise.js +236 -0
  36. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +25 -0
  37. package/dist/fields/hooks/beforeChange/traverseFields.js +27 -0
  38. package/dist/fields/hooks/beforeValidate/index.d.ts +14 -0
  39. package/dist/fields/hooks/beforeValidate/index.js +28 -0
  40. package/dist/fields/hooks/beforeValidate/promise.d.ts +16 -0
  41. package/dist/fields/hooks/beforeValidate/promise.js +229 -0
  42. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +16 -0
  43. package/dist/fields/hooks/beforeValidate/traverseFields.js +22 -0
  44. package/dist/fields/richText/populate.d.ts +1 -3
  45. package/dist/fields/richText/populate.js +3 -3
  46. package/dist/fields/richText/recurseNestedFields.d.ts +1 -3
  47. package/dist/fields/richText/recurseNestedFields.js +7 -15
  48. package/dist/fields/richText/relationshipPromise.d.ts +6 -9
  49. package/dist/fields/richText/relationshipPromise.js +11 -15
  50. package/dist/globals/config/types.d.ts +1 -0
  51. package/dist/globals/operations/findOne.js +11 -11
  52. package/dist/globals/operations/findVersionByID.js +5 -8
  53. package/dist/globals/operations/findVersions.js +7 -9
  54. package/dist/globals/operations/restoreVersion.js +12 -14
  55. package/dist/globals/operations/update.js +29 -33
  56. package/dist/graphql/schema/buildObjectType.js +3 -5
  57. package/dist/index.d.ts +0 -2
  58. package/dist/index.js +1 -3
  59. package/dist/versions/drafts/saveCollectionDraft.d.ts +1 -1
  60. package/dist/versions/drafts/saveCollectionDraft.js +1 -1
  61. package/dist/versions/ensurePublishedCollectionVersion.js +5 -7
  62. package/dist/versions/ensurePublishedGlobalVersion.js +5 -6
  63. package/dist/versions/saveCollectionVersion.js +6 -7
  64. package/dist/versions/saveGlobalVersion.js +7 -7
  65. package/docs/fields/overview.mdx +4 -3
  66. package/docs/hooks/collections.mdx +1 -0
  67. package/docs/hooks/fields.mdx +4 -3
  68. package/docs/hooks/globals.mdx +1 -0
  69. package/docs/production/preventing-abuse.mdx +16 -5
  70. package/package.json +4 -1
  71. package/dist/fields/accessPromise.d.ts +0 -22
  72. package/dist/fields/accessPromise.js +0 -39
  73. package/dist/fields/hookPromise.d.ts +0 -16
  74. package/dist/fields/hookPromise.js +0 -53
  75. package/dist/fields/performFieldOperations.d.ts +0 -25
  76. package/dist/fields/performFieldOperations.js +0 -90
  77. package/dist/fields/relationshipPopulationPromise.d.ts +0 -15
  78. package/dist/fields/relationshipPopulationPromise.js +0 -86
  79. package/dist/fields/traverseFields.d.ts +0 -41
  80. package/dist/fields/traverseFields.js +0 -339
  81. package/dist/fields/validationPromise.d.ts +0 -24
  82. package/dist/fields/validationPromise.js +0 -35
@@ -0,0 +1,236 @@
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.promise = void 0;
7
+ /* eslint-disable no-param-reassign */
8
+ const deepmerge_1 = __importDefault(require("deepmerge"));
9
+ const types_1 = require("../../config/types");
10
+ const getDefaultValue_1 = __importDefault(require("../../getDefaultValue"));
11
+ const traverseFields_1 = require("./traverseFields");
12
+ // This function is responsible for the following actions, in order:
13
+ // - Run condition
14
+ // - Merge original document data into incoming data
15
+ // - Compute default values for undefined fields
16
+ // - Execute field hooks
17
+ // - Validate data
18
+ // - Transform data for storage
19
+ // - Unflatten locales
20
+ const promise = async ({ data, doc, docWithLocales, errors, field, id, mergeLocaleActions, operation, path, promises, req, siblingData, siblingDoc, siblingDocWithLocales, skipValidation, }) => {
21
+ var _a, _b;
22
+ const passesCondition = ((_a = field.admin) === null || _a === void 0 ? void 0 : _a.condition) ? field.admin.condition(data, siblingData) : true;
23
+ const skipValidationFromHere = skipValidation || !passesCondition;
24
+ if ((0, types_1.fieldAffectsData)(field)) {
25
+ if (typeof siblingData[field.name] === 'undefined') {
26
+ // If no incoming data, but existing document data is found, merge it in
27
+ if (typeof siblingDoc[field.name] !== 'undefined') {
28
+ if (field.localized && typeof siblingDoc[field.name] === 'object') {
29
+ siblingData[field.name] = siblingDoc[field.name][req.locale];
30
+ }
31
+ else {
32
+ siblingData[field.name] = siblingDoc[field.name];
33
+ }
34
+ // Otherwise compute default value
35
+ }
36
+ else if (typeof field.defaultValue !== 'undefined') {
37
+ siblingData[field.name] = await (0, getDefaultValue_1.default)({
38
+ value: siblingData[field.name],
39
+ defaultValue: field.defaultValue,
40
+ locale: req.locale,
41
+ user: req.user,
42
+ });
43
+ }
44
+ }
45
+ // Execute hooks
46
+ if ((_b = field.hooks) === null || _b === void 0 ? void 0 : _b.beforeChange) {
47
+ await field.hooks.beforeChange.reduce(async (priorHook, currentHook) => {
48
+ await priorHook;
49
+ const hookedValue = await currentHook({
50
+ value: siblingData[field.name],
51
+ originalDoc: doc,
52
+ data,
53
+ siblingData,
54
+ operation,
55
+ req,
56
+ });
57
+ if (hookedValue !== undefined) {
58
+ siblingData[field.name] = hookedValue;
59
+ }
60
+ }, Promise.resolve());
61
+ }
62
+ // Validate
63
+ if (!skipValidationFromHere && field.validate) {
64
+ let valueToValidate;
65
+ if (['array', 'blocks'].includes(field.type)) {
66
+ const rows = siblingData[field.name];
67
+ valueToValidate = Array.isArray(rows) ? rows.length : 0;
68
+ }
69
+ else {
70
+ valueToValidate = siblingData[field.name];
71
+ }
72
+ const validationResult = await field.validate(valueToValidate, {
73
+ ...field,
74
+ data: (0, deepmerge_1.default)(doc, data),
75
+ siblingData: (0, deepmerge_1.default)(siblingDoc, siblingData),
76
+ id,
77
+ operation,
78
+ user: req.user,
79
+ payload: req.payload,
80
+ });
81
+ if (typeof validationResult === 'string') {
82
+ errors.push({
83
+ message: validationResult,
84
+ field: `${path}${field.name}`,
85
+ });
86
+ }
87
+ }
88
+ // Push merge locale action if applicable
89
+ if (field.localized) {
90
+ mergeLocaleActions.push(() => {
91
+ const localeData = req.payload.config.localization.locales.reduce((locales, localeID) => {
92
+ var _a;
93
+ let valueToSet = siblingData[field.name];
94
+ if (localeID !== req.locale) {
95
+ valueToSet = (_a = siblingDocWithLocales === null || siblingDocWithLocales === void 0 ? void 0 : siblingDocWithLocales[field.name]) === null || _a === void 0 ? void 0 : _a[localeID];
96
+ }
97
+ if (typeof valueToSet !== 'undefined') {
98
+ return {
99
+ ...locales,
100
+ [localeID]: valueToSet,
101
+ };
102
+ }
103
+ return locales;
104
+ }, {});
105
+ // If there are locales with data, set the data
106
+ if (Object.keys(localeData).length > 0) {
107
+ siblingData[field.name] = localeData;
108
+ }
109
+ });
110
+ }
111
+ }
112
+ switch (field.type) {
113
+ case 'point': {
114
+ // Transform point data for storage
115
+ if (Array.isArray(siblingData[field.name]) && siblingData[field.name][0] !== null && siblingData[field.name][1] !== null) {
116
+ siblingData[field.name] = {
117
+ type: 'Point',
118
+ coordinates: [
119
+ parseFloat(siblingData[field.name][0]),
120
+ parseFloat(siblingData[field.name][1]),
121
+ ],
122
+ };
123
+ }
124
+ break;
125
+ }
126
+ case 'group': {
127
+ let groupData = siblingData[field.name];
128
+ let groupDoc = siblingDoc[field.name];
129
+ let groupDocWithLocales = siblingDocWithLocales[field.name];
130
+ if (typeof siblingData[field.name] !== 'object')
131
+ groupData = {};
132
+ if (typeof siblingDoc[field.name] !== 'object')
133
+ groupDoc = {};
134
+ if (typeof siblingDocWithLocales[field.name] !== 'object')
135
+ groupDocWithLocales = {};
136
+ (0, traverseFields_1.traverseFields)({
137
+ data,
138
+ doc,
139
+ docWithLocales,
140
+ errors,
141
+ fields: field.fields,
142
+ id,
143
+ mergeLocaleActions,
144
+ operation,
145
+ path: `${path}${field.name}.`,
146
+ promises,
147
+ req,
148
+ siblingData: groupData,
149
+ siblingDoc: groupDoc,
150
+ siblingDocWithLocales: groupDocWithLocales,
151
+ skipValidation: skipValidationFromHere,
152
+ });
153
+ break;
154
+ }
155
+ case 'array': {
156
+ const rows = siblingData[field.name];
157
+ if (Array.isArray(rows)) {
158
+ rows.forEach((row, i) => {
159
+ var _a, _b;
160
+ (0, traverseFields_1.traverseFields)({
161
+ data,
162
+ doc,
163
+ docWithLocales,
164
+ errors,
165
+ fields: field.fields,
166
+ id,
167
+ mergeLocaleActions,
168
+ operation,
169
+ path: `${path}${field.name}.${i}.`,
170
+ promises,
171
+ req,
172
+ siblingData: row,
173
+ siblingDoc: ((_a = siblingDoc[field.name]) === null || _a === void 0 ? void 0 : _a[i]) || {},
174
+ siblingDocWithLocales: ((_b = siblingDocWithLocales[field.name]) === null || _b === void 0 ? void 0 : _b[i]) || {},
175
+ skipValidation: skipValidationFromHere,
176
+ });
177
+ });
178
+ }
179
+ break;
180
+ }
181
+ case 'blocks': {
182
+ const rows = siblingData[field.name];
183
+ if (Array.isArray(rows)) {
184
+ rows.forEach((row, i) => {
185
+ var _a, _b;
186
+ const block = field.blocks.find((blockType) => blockType.slug === row.blockType);
187
+ if (block) {
188
+ (0, traverseFields_1.traverseFields)({
189
+ data,
190
+ doc,
191
+ docWithLocales,
192
+ errors,
193
+ fields: block.fields,
194
+ id,
195
+ mergeLocaleActions,
196
+ operation,
197
+ path: `${path}${field.name}.${i}.`,
198
+ promises,
199
+ req,
200
+ siblingData: row,
201
+ siblingDoc: ((_a = siblingDoc[field.name]) === null || _a === void 0 ? void 0 : _a[i]) || {},
202
+ siblingDocWithLocales: ((_b = siblingDocWithLocales[field.name]) === null || _b === void 0 ? void 0 : _b[i]) || {},
203
+ skipValidation: skipValidationFromHere,
204
+ });
205
+ }
206
+ });
207
+ }
208
+ break;
209
+ }
210
+ case 'row': {
211
+ (0, traverseFields_1.traverseFields)({
212
+ data,
213
+ doc,
214
+ docWithLocales,
215
+ errors,
216
+ fields: field.fields,
217
+ id,
218
+ mergeLocaleActions,
219
+ operation,
220
+ path,
221
+ promises,
222
+ req,
223
+ siblingData,
224
+ siblingDoc,
225
+ siblingDocWithLocales,
226
+ skipValidation: skipValidationFromHere,
227
+ });
228
+ break;
229
+ }
230
+ default: {
231
+ break;
232
+ }
233
+ }
234
+ };
235
+ exports.promise = promise;
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlQ2hhbmdlL3Byb21pc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0NBQXNDO0FBQ3RDLDBEQUE4QjtBQUM5Qiw4Q0FBNkQ7QUFHN0QsNEVBQXdEO0FBQ3hELHFEQUFrRDtBQW9CbEQsb0VBQW9FO0FBQ3BFLGtCQUFrQjtBQUNsQixvREFBb0Q7QUFDcEQsZ0RBQWdEO0FBQ2hELHdCQUF3QjtBQUN4QixrQkFBa0I7QUFDbEIsK0JBQStCO0FBQy9CLHNCQUFzQjtBQUVmLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxFQUM1QixJQUFJLEVBQ0osR0FBRyxFQUNILGNBQWMsRUFDZCxNQUFNLEVBQ04sS0FBSyxFQUNMLEVBQUUsRUFDRixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULElBQUksRUFDSixRQUFRLEVBQ1IsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YscUJBQXFCLEVBQ3JCLGNBQWMsR0FDVCxFQUFpQixFQUFFOztJQUN4QixNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25HLE1BQU0sc0JBQXNCLEdBQUcsY0FBYyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBRWxFLElBQUksSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsRUFBRTtRQUMzQixJQUFJLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFDbEQsd0VBQXdFO1lBQ3hFLElBQUksT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFdBQVcsRUFBRTtnQkFD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
@@ -0,0 +1,25 @@
1
+ import { Field } from '../../config/types';
2
+ import { Operation } from '../../../types';
3
+ import { PayloadRequest } from '../../../express/types';
4
+ declare type Args = {
5
+ data: Record<string, unknown>;
6
+ doc: Record<string, unknown>;
7
+ docWithLocales: Record<string, unknown>;
8
+ errors: {
9
+ message: string;
10
+ field: string;
11
+ }[];
12
+ fields: Field[];
13
+ id?: string | number;
14
+ mergeLocaleActions: (() => void)[];
15
+ operation: Operation;
16
+ path: string;
17
+ promises: Promise<void>[];
18
+ req: PayloadRequest;
19
+ siblingData: Record<string, unknown>;
20
+ siblingDoc: Record<string, unknown>;
21
+ siblingDocWithLocales: Record<string, unknown>;
22
+ skipValidation?: boolean;
23
+ };
24
+ export declare const traverseFields: ({ data, doc, docWithLocales, errors, fields, id, mergeLocaleActions, operation, path, promises, req, siblingData, siblingDoc, siblingDocWithLocales, skipValidation, }: Args) => void;
25
+ export {};
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.traverseFields = void 0;
4
+ const promise_1 = require("./promise");
5
+ const traverseFields = ({ data, doc, docWithLocales, errors, fields, id, mergeLocaleActions, operation, path, promises, req, siblingData, siblingDoc, siblingDocWithLocales, skipValidation, }) => {
6
+ fields.forEach((field) => {
7
+ promises.push((0, promise_1.promise)({
8
+ data,
9
+ doc,
10
+ docWithLocales,
11
+ errors,
12
+ field,
13
+ id,
14
+ mergeLocaleActions,
15
+ operation,
16
+ path,
17
+ promises,
18
+ req,
19
+ siblingData,
20
+ siblingDoc,
21
+ siblingDocWithLocales,
22
+ skipValidation,
23
+ }));
24
+ });
25
+ };
26
+ exports.traverseFields = traverseFields;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVyc2VGaWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmllbGRzL2hvb2tzL2JlZm9yZUNoYW5nZS90cmF2ZXJzZUZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx1Q0FBb0M7QUFzQjdCLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFDN0IsSUFBSSxFQUNKLEdBQUcsRUFDSCxjQUFjLEVBQ2QsTUFBTSxFQUNOLE1BQU0sRUFDTixFQUFFLEVBQ0Ysa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxJQUFJLEVBQ0osUUFBUSxFQUNSLEdBQUcsRUFDSCxXQUFXLEVBQ1gsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixjQUFjLEdBQ1QsRUFBUSxFQUFFO0lBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBQSxpQkFBTyxFQUFDO1lBQ3BCLElBQUk7WUFDSixHQUFHO1lBQ0gsY0FBYztZQUNkLE1BQU07WUFDTixLQUFLO1lBQ0wsRUFBRTtZQUNGLGtCQUFrQjtZQUNsQixTQUFTO1lBQ1QsSUFBSTtZQUNKLFFBQVE7WUFDUixHQUFHO1lBQ0gsV0FBVztZQUNYLFVBQVU7WUFDVixxQkFBcUI7WUFDckIsY0FBYztTQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFwQ1csUUFBQSxjQUFjLGtCQW9DekIifQ==
@@ -0,0 +1,14 @@
1
+ import { SanitizedCollectionConfig } from '../../../collections/config/types';
2
+ import { SanitizedGlobalConfig } from '../../../globals/config/types';
3
+ import { PayloadRequest } from '../../../express/types';
4
+ declare type Args = {
5
+ data: Record<string, unknown>;
6
+ doc: Record<string, unknown>;
7
+ entityConfig: SanitizedCollectionConfig | SanitizedGlobalConfig;
8
+ id?: string | number;
9
+ operation: 'create' | 'update';
10
+ overrideAccess: boolean;
11
+ req: PayloadRequest;
12
+ };
13
+ export declare const beforeValidate: ({ data: incomingData, doc, entityConfig, id, operation, overrideAccess, req, }: Args) => Promise<Record<string, unknown>>;
14
+ export {};
@@ -0,0 +1,28 @@
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.beforeValidate = void 0;
7
+ const traverseFields_1 = require("./traverseFields");
8
+ const deepCopyObject_1 = __importDefault(require("../../../utilities/deepCopyObject"));
9
+ const beforeValidate = async ({ data: incomingData, doc, entityConfig, id, operation, overrideAccess, req, }) => {
10
+ const promises = [];
11
+ const data = (0, deepCopyObject_1.default)(incomingData);
12
+ (0, traverseFields_1.traverseFields)({
13
+ data,
14
+ doc,
15
+ fields: entityConfig.fields,
16
+ id,
17
+ operation,
18
+ overrideAccess,
19
+ promises,
20
+ req,
21
+ siblingData: data,
22
+ siblingDoc: doc,
23
+ });
24
+ await Promise.all(promises);
25
+ return data;
26
+ };
27
+ exports.beforeValidate = beforeValidate;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmllbGRzL2hvb2tzL2JlZm9yZVZhbGlkYXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLHFEQUFrRDtBQUNsRCx1RkFBK0Q7QUFZeEQsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLEVBQ25DLElBQUksRUFBRSxZQUFZLEVBQ2xCLEdBQUcsRUFDSCxZQUFZLEVBQ1osRUFBRSxFQUNGLFNBQVMsRUFDVCxjQUFjLEVBQ2QsR0FBRyxHQUNFLEVBQW9DLEVBQUU7SUFDM0MsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUEsd0JBQWMsRUFBQyxZQUFZLENBQUMsQ0FBQztJQUUxQyxJQUFBLCtCQUFjLEVBQUM7UUFDYixJQUFJO1FBQ0osR0FBRztRQUNILE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTTtRQUMzQixFQUFFO1FBQ0YsU0FBUztRQUNULGNBQWM7UUFDZCxRQUFRO1FBQ1IsR0FBRztRQUNILFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFVBQVUsRUFBRSxHQUFHO0tBQ2hCLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU1QixPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQTVCVyxRQUFBLGNBQWMsa0JBNEJ6QiJ9
@@ -0,0 +1,16 @@
1
+ import { PayloadRequest } from '../../../express/types';
2
+ import { Field } from '../../config/types';
3
+ declare type Args = {
4
+ data: Record<string, unknown>;
5
+ doc: Record<string, unknown>;
6
+ field: Field;
7
+ id?: string | number;
8
+ operation: 'create' | 'update';
9
+ overrideAccess: boolean;
10
+ promises: Promise<void>[];
11
+ req: PayloadRequest;
12
+ siblingData: Record<string, unknown>;
13
+ siblingDoc: Record<string, unknown>;
14
+ };
15
+ export declare const promise: ({ data, doc, field, id, operation, overrideAccess, promises, req, siblingData, siblingDoc, }: Args) => Promise<void>;
16
+ export {};
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promise = void 0;
4
+ const types_1 = require("../../config/types");
5
+ const traverseFields_1 = require("./traverseFields");
6
+ // This function is responsible for the following actions, in order:
7
+ // - Sanitize incoming data
8
+ // - Execute field hooks
9
+ // - Execute field access control
10
+ const promise = async ({ data, doc, field, id, operation, overrideAccess, promises, req, siblingData, siblingDoc, }) => {
11
+ var _a, _b;
12
+ if ((0, types_1.fieldAffectsData)(field)) {
13
+ if (field.name === 'id') {
14
+ if (field.type === 'number' && typeof siblingData[field.name] === 'string') {
15
+ const value = siblingData[field.name];
16
+ siblingData[field.name] = parseFloat(value);
17
+ }
18
+ if (field.type === 'text' && typeof ((_a = siblingData[field.name]) === null || _a === void 0 ? void 0 : _a.toString) === 'function' && typeof siblingData[field.name] !== 'string') {
19
+ siblingData[field.name] = siblingData[field.name].toString();
20
+ }
21
+ }
22
+ // Sanitize incoming data
23
+ switch (field.type) {
24
+ case 'number': {
25
+ if (typeof siblingData[field.name] === 'string') {
26
+ const value = siblingData[field.name];
27
+ const trimmed = value.trim();
28
+ siblingData[field.name] = (trimmed.length === 0) ? null : parseFloat(trimmed);
29
+ }
30
+ break;
31
+ }
32
+ case 'checkbox': {
33
+ if (siblingData[field.name] === 'true')
34
+ siblingData[field.name] = true;
35
+ if (siblingData[field.name] === 'false')
36
+ siblingData[field.name] = false;
37
+ if (siblingData[field.name] === '')
38
+ siblingData[field.name] = false;
39
+ break;
40
+ }
41
+ case 'richText': {
42
+ if (typeof siblingData[field.name] === 'string') {
43
+ try {
44
+ const richTextJSON = JSON.parse(siblingData[field.name]);
45
+ siblingData[field.name] = richTextJSON;
46
+ }
47
+ catch {
48
+ // Disregard this data as it is not valid.
49
+ // Will be reported to user by field validation
50
+ }
51
+ }
52
+ break;
53
+ }
54
+ case 'relationship':
55
+ case 'upload': {
56
+ if (siblingData[field.name] === '' || siblingData[field.name] === 'none' || siblingData[field.name] === 'null' || siblingData[field.name] === null) {
57
+ if (field.type === 'relationship' && field.hasMany === true) {
58
+ siblingData[field.name] = [];
59
+ }
60
+ else {
61
+ siblingData[field.name] = null;
62
+ }
63
+ }
64
+ const value = siblingData[field.name];
65
+ if (Array.isArray(field.relationTo)) {
66
+ if (Array.isArray(value)) {
67
+ value.forEach((relatedDoc, i) => {
68
+ const relatedCollection = req.payload.config.collections.find((collection) => collection.slug === relatedDoc.relationTo);
69
+ const relationshipIDField = relatedCollection.fields.find((collectionField) => (0, types_1.fieldAffectsData)(collectionField) && collectionField.name === 'id');
70
+ if ((relationshipIDField === null || relationshipIDField === void 0 ? void 0 : relationshipIDField.type) === 'number') {
71
+ siblingData[field.name][i] = { ...relatedDoc, value: parseFloat(relatedDoc.value) };
72
+ }
73
+ });
74
+ }
75
+ if (field.type === 'relationship' && field.hasMany !== true && (0, types_1.valueIsValueWithRelation)(value)) {
76
+ const relatedCollection = req.payload.config.collections.find((collection) => collection.slug === value.relationTo);
77
+ const relationshipIDField = relatedCollection.fields.find((collectionField) => (0, types_1.fieldAffectsData)(collectionField) && collectionField.name === 'id');
78
+ if ((relationshipIDField === null || relationshipIDField === void 0 ? void 0 : relationshipIDField.type) === 'number') {
79
+ siblingData[field.name] = { ...value, value: parseFloat(value.value) };
80
+ }
81
+ }
82
+ }
83
+ else {
84
+ if (Array.isArray(value)) {
85
+ value.forEach((relatedDoc, i) => {
86
+ const relatedCollection = req.payload.config.collections.find((collection) => collection.slug === field.relationTo);
87
+ const relationshipIDField = relatedCollection.fields.find((collectionField) => (0, types_1.fieldAffectsData)(collectionField) && collectionField.name === 'id');
88
+ if ((relationshipIDField === null || relationshipIDField === void 0 ? void 0 : relationshipIDField.type) === 'number') {
89
+ siblingData[field.name][i] = parseFloat(relatedDoc);
90
+ }
91
+ });
92
+ }
93
+ if (field.type === 'relationship' && field.hasMany !== true && value) {
94
+ const relatedCollection = req.payload.config.collections.find((collection) => collection.slug === field.relationTo);
95
+ const relationshipIDField = relatedCollection.fields.find((collectionField) => (0, types_1.fieldAffectsData)(collectionField) && collectionField.name === 'id');
96
+ if ((relationshipIDField === null || relationshipIDField === void 0 ? void 0 : relationshipIDField.type) === 'number') {
97
+ siblingData[field.name] = parseFloat(value);
98
+ }
99
+ }
100
+ }
101
+ break;
102
+ }
103
+ case 'array':
104
+ case 'blocks': {
105
+ // Handle cases of arrays being intentionally set to 0
106
+ if (siblingData[field.name] === '0' || siblingData[field.name] === 0 || siblingData[field.name] === null) {
107
+ siblingData[field.name] = [];
108
+ }
109
+ break;
110
+ }
111
+ default: {
112
+ break;
113
+ }
114
+ }
115
+ // Execute hooks
116
+ if ((_b = field.hooks) === null || _b === void 0 ? void 0 : _b.beforeValidate) {
117
+ await field.hooks.beforeValidate.reduce(async (priorHook, currentHook) => {
118
+ await priorHook;
119
+ const hookedValue = await currentHook({
120
+ value: siblingData[field.name],
121
+ originalDoc: doc,
122
+ data,
123
+ siblingData,
124
+ operation,
125
+ req,
126
+ });
127
+ if (hookedValue !== undefined) {
128
+ siblingData[field.name] = hookedValue;
129
+ }
130
+ }, Promise.resolve());
131
+ }
132
+ // Execute access control
133
+ if (field.access && field.access[operation]) {
134
+ const result = overrideAccess ? true : await field.access[operation]({ req, id, siblingData, data, doc });
135
+ if (!result) {
136
+ delete siblingData[field.name];
137
+ }
138
+ }
139
+ }
140
+ // Traverse subfields
141
+ switch (field.type) {
142
+ case 'group': {
143
+ let groupData = siblingData[field.name];
144
+ let groupDoc = siblingDoc[field.name];
145
+ if (typeof siblingData[field.name] !== 'object')
146
+ groupData = {};
147
+ if (typeof siblingDoc[field.name] !== 'object')
148
+ groupDoc = {};
149
+ (0, traverseFields_1.traverseFields)({
150
+ data,
151
+ doc,
152
+ fields: field.fields,
153
+ id,
154
+ operation,
155
+ overrideAccess,
156
+ promises,
157
+ req,
158
+ siblingData: groupData,
159
+ siblingDoc: groupDoc,
160
+ });
161
+ break;
162
+ }
163
+ case 'array': {
164
+ const rows = siblingData[field.name];
165
+ if (Array.isArray(rows)) {
166
+ rows.forEach((row, i) => {
167
+ var _a;
168
+ (0, traverseFields_1.traverseFields)({
169
+ data,
170
+ doc,
171
+ fields: field.fields,
172
+ id,
173
+ operation,
174
+ overrideAccess,
175
+ promises,
176
+ req,
177
+ siblingData: row,
178
+ siblingDoc: ((_a = siblingDoc[field.name]) === null || _a === void 0 ? void 0 : _a[i]) || {},
179
+ });
180
+ });
181
+ }
182
+ break;
183
+ }
184
+ case 'blocks': {
185
+ const rows = siblingData[field.name];
186
+ if (Array.isArray(rows)) {
187
+ rows.forEach((row, i) => {
188
+ var _a;
189
+ const block = field.blocks.find((blockType) => blockType.slug === row.blockType);
190
+ if (block) {
191
+ (0, traverseFields_1.traverseFields)({
192
+ data,
193
+ doc,
194
+ fields: block.fields,
195
+ id,
196
+ operation,
197
+ overrideAccess,
198
+ promises,
199
+ req,
200
+ siblingData: row,
201
+ siblingDoc: ((_a = siblingDoc[field.name]) === null || _a === void 0 ? void 0 : _a[i]) || {},
202
+ });
203
+ }
204
+ });
205
+ }
206
+ break;
207
+ }
208
+ case 'row': {
209
+ (0, traverseFields_1.traverseFields)({
210
+ data,
211
+ doc,
212
+ fields: field.fields,
213
+ id,
214
+ operation,
215
+ overrideAccess,
216
+ promises,
217
+ req,
218
+ siblingData,
219
+ siblingDoc,
220
+ });
221
+ break;
222
+ }
223
+ default: {
224
+ break;
225
+ }
226
+ }
227
+ };
228
+ exports.promise = promise;
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvcHJvbWlzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw4Q0FBdUY7QUFDdkYscURBQWtEO0FBZWxELG9FQUFvRTtBQUNwRSwyQkFBMkI7QUFDM0Isd0JBQXdCO0FBQ3hCLGlDQUFpQztBQUUxQixNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsRUFDNUIsSUFBSSxFQUNKLEdBQUcsRUFDSCxLQUFLLEVBQ0wsRUFBRSxFQUNGLFNBQVMsRUFDVCxjQUFjLEVBQ2QsUUFBUSxFQUNSLEdBQUcsRUFDSCxXQUFXLEVBQ1gsVUFBVSxHQUNMLEVBQWlCLEVBQUU7O0lBQ3hCLElBQUksSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsRUFBRTtRQUMzQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFDMUUsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQVcsQ0FBQztnQkFFaEQsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0M7WUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQSxNQUFBLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLDBDQUFFLFFBQVEsQ0FBQSxLQUFLLFVBQVUsSUFBSSxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUNuSSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENB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
@@ -0,0 +1,16 @@
1
+ import { PayloadRequest } from '../../../express/types';
2
+ import { Field } from '../../config/types';
3
+ declare type Args = {
4
+ data: Record<string, unknown>;
5
+ doc: Record<string, unknown>;
6
+ fields: Field[];
7
+ id?: string | number;
8
+ operation: 'create' | 'update';
9
+ overrideAccess: boolean;
10
+ promises: Promise<void>[];
11
+ req: PayloadRequest;
12
+ siblingData: Record<string, unknown>;
13
+ siblingDoc: Record<string, unknown>;
14
+ };
15
+ export declare const traverseFields: ({ data, doc, fields, id, operation, overrideAccess, promises, req, siblingData, siblingDoc, }: Args) => void;
16
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.traverseFields = void 0;
4
+ const promise_1 = require("./promise");
5
+ const traverseFields = ({ data, doc, fields, id, operation, overrideAccess, promises, req, siblingData, siblingDoc, }) => {
6
+ fields.forEach((field) => {
7
+ promises.push((0, promise_1.promise)({
8
+ data,
9
+ doc,
10
+ field,
11
+ id,
12
+ operation,
13
+ overrideAccess,
14
+ promises,
15
+ req,
16
+ siblingData,
17
+ siblingDoc,
18
+ }));
19
+ });
20
+ };
21
+ exports.traverseFields = traverseFields;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVyc2VGaWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmllbGRzL2hvb2tzL2JlZm9yZVZhbGlkYXRlL3RyYXZlcnNlRmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHVDQUFvQztBQWU3QixNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQzdCLElBQUksRUFDSixHQUFHLEVBQ0gsTUFBTSxFQUNOLEVBQUUsRUFDRixTQUFTLEVBQ1QsY0FBYyxFQUNkLFFBQVEsRUFDUixHQUFHLEVBQ0gsV0FBVyxFQUNYLFVBQVUsR0FDTCxFQUFRLEVBQUU7SUFDZixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLGlCQUFPLEVBQUM7WUFDcEIsSUFBSTtZQUNKLEdBQUc7WUFDSCxLQUFLO1lBQ0wsRUFBRTtZQUNGLFNBQVM7WUFDVCxjQUFjO1lBQ2QsUUFBUTtZQUNSLEdBQUc7WUFDSCxXQUFXO1lBQ1gsVUFBVTtTQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUExQlcsUUFBQSxjQUFjLGtCQTBCekIifQ==