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,20 @@
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, operation, promises, req, siblingData, siblingDoc, }) => {
6
+ fields.forEach((field) => {
7
+ promises.push((0, promise_1.promise)({
8
+ data,
9
+ doc,
10
+ field,
11
+ operation,
12
+ promises,
13
+ req,
14
+ siblingData,
15
+ siblingDoc,
16
+ }));
17
+ });
18
+ };
19
+ exports.traverseFields = traverseFields;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVyc2VGaWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmllbGRzL2hvb2tzL2FmdGVyQ2hhbmdlL3RyYXZlcnNlRmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVDQUFvQztBQWM3QixNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQzdCLElBQUksRUFDSixHQUFHLEVBQ0gsTUFBTSxFQUNOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEdBQ0wsRUFBUSxFQUFFO0lBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBQSxpQkFBTyxFQUFDO1lBQ3BCLElBQUk7WUFDSixHQUFHO1lBQ0gsS0FBSztZQUNMLFNBQVM7WUFDVCxRQUFRO1lBQ1IsR0FBRztZQUNILFdBQVc7WUFDWCxVQUFVO1NBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQXRCVyxRQUFBLGNBQWMsa0JBc0J6QiJ9
@@ -0,0 +1,16 @@
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
+ currentDepth?: number;
6
+ depth: number;
7
+ doc: Record<string, unknown>;
8
+ entityConfig: SanitizedCollectionConfig | SanitizedGlobalConfig;
9
+ findMany?: boolean;
10
+ flattenLocales?: boolean;
11
+ req: PayloadRequest;
12
+ overrideAccess: boolean;
13
+ showHiddenFields: boolean;
14
+ };
15
+ export declare function afterRead<T = any>(args: Args): Promise<T>;
16
+ export {};
@@ -0,0 +1,40 @@
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.afterRead = void 0;
7
+ const traverseFields_1 = require("./traverseFields");
8
+ const deepCopyObject_1 = __importDefault(require("../../../utilities/deepCopyObject"));
9
+ async function afterRead(args) {
10
+ const { currentDepth: incomingCurrentDepth, depth: incomingDepth, doc: incomingDoc, entityConfig, findMany, flattenLocales = true, req, overrideAccess, showHiddenFields, } = args;
11
+ const doc = (0, deepCopyObject_1.default)(incomingDoc);
12
+ const fieldPromises = [];
13
+ const populationPromises = [];
14
+ let depth = 0;
15
+ if (req.payloadAPI === 'REST' || req.payloadAPI === 'local') {
16
+ depth = (incomingDepth || incomingDepth === 0) ? parseInt(String(incomingDepth), 10) : req.payload.config.defaultDepth;
17
+ if (depth > req.payload.config.maxDepth)
18
+ depth = req.payload.config.maxDepth;
19
+ }
20
+ const currentDepth = incomingCurrentDepth || 1;
21
+ (0, traverseFields_1.traverseFields)({
22
+ currentDepth,
23
+ depth,
24
+ doc,
25
+ fields: entityConfig.fields,
26
+ fieldPromises,
27
+ findMany,
28
+ flattenLocales,
29
+ overrideAccess,
30
+ populationPromises,
31
+ req,
32
+ siblingDoc: doc,
33
+ showHiddenFields,
34
+ });
35
+ await Promise.all(fieldPromises);
36
+ await Promise.all(populationPromises);
37
+ return doc;
38
+ }
39
+ exports.afterRead = afterRead;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmllbGRzL2hvb2tzL2FmdGVyUmVhZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxxREFBa0Q7QUFDbEQsdUZBQStEO0FBY3hELEtBQUssVUFBVSxTQUFTLENBQVUsSUFBVTtJQUNqRCxNQUFNLEVBQ0osWUFBWSxFQUFFLG9CQUFvQixFQUNsQyxLQUFLLEVBQUUsYUFBYSxFQUNwQixHQUFHLEVBQUUsV0FBVyxFQUNoQixZQUFZLEVBQ1osUUFBUSxFQUNSLGNBQWMsR0FBRyxJQUFJLEVBQ3JCLEdBQUcsRUFDSCxjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxHQUFHLEdBQUcsSUFBQSx3QkFBYyxFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUN6QixNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUU5QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssT0FBTyxFQUFFO1FBQzNELEtBQUssR0FBRyxDQUFDLGFBQWEsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUV2SCxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztLQUM5RTtJQUVELE1BQU0sWUFBWSxHQUFHLG9CQUFvQixJQUFJLENBQUMsQ0FBQztJQUUvQyxJQUFBLCtCQUFjLEVBQUM7UUFDYixZQUFZO1FBQ1osS0FBSztRQUNMLEdBQUc7UUFDSCxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU07UUFDM0IsYUFBYTtRQUNiLFFBQVE7UUFDUixjQUFjO1FBQ2QsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixHQUFHO1FBQ0gsVUFBVSxFQUFFLEdBQUc7UUFDZixnQkFBZ0I7S0FDakIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQTlDRCw4QkE4Q0MifQ==
@@ -0,0 +1,18 @@
1
+ import { Field } from '../../config/types';
2
+ import { PayloadRequest } from '../../../express/types';
3
+ declare type Args = {
4
+ currentDepth: number;
5
+ depth: number;
6
+ doc: Record<string, unknown>;
7
+ field: Field;
8
+ fieldPromises: Promise<void>[];
9
+ findMany: boolean;
10
+ flattenLocales: boolean;
11
+ populationPromises: Promise<void>[];
12
+ req: PayloadRequest;
13
+ overrideAccess: boolean;
14
+ siblingDoc: Record<string, unknown>;
15
+ showHiddenFields: boolean;
16
+ };
17
+ export declare const promise: ({ currentDepth, depth, doc, field, fieldPromises, findMany, flattenLocales, overrideAccess, populationPromises, req, siblingDoc, showHiddenFields, }: Args) => Promise<void>;
18
+ export {};
@@ -0,0 +1,225 @@
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 types_1 = require("../../config/types");
9
+ const traverseFields_1 = require("./traverseFields");
10
+ const relationshipPromise_1 = __importDefault(require("../../richText/relationshipPromise"));
11
+ const relationshipPopulationPromise_1 = __importDefault(require("./relationshipPopulationPromise"));
12
+ // This function is responsible for the following actions, in order:
13
+ // - Remove hidden fields from response
14
+ // - Flatten locales into requested locale
15
+ // - Sanitize outgoing data (point field, etc)
16
+ // - Execute field hooks
17
+ // - Execute read access control
18
+ // - Populate relationships
19
+ const promise = async ({ currentDepth, depth, doc, field, fieldPromises, findMany, flattenLocales, overrideAccess, populationPromises, req, siblingDoc, showHiddenFields, }) => {
20
+ var _a, _b, _c, _d, _e, _f;
21
+ if ((0, types_1.fieldAffectsData)(field) && field.hidden && typeof siblingDoc[field.name] !== 'undefined' && !showHiddenFields) {
22
+ delete siblingDoc[field.name];
23
+ }
24
+ const hasLocalizedValue = flattenLocales
25
+ && (0, types_1.fieldAffectsData)(field)
26
+ && (typeof siblingDoc[field.name] === 'object' && siblingDoc[field.name] !== null)
27
+ && field.name
28
+ && field.localized
29
+ && req.locale !== 'all';
30
+ if (hasLocalizedValue) {
31
+ let localizedValue = siblingDoc[field.name][req.locale];
32
+ if (typeof localizedValue === 'undefined' && req.fallbackLocale)
33
+ localizedValue = siblingDoc[field.name][req.fallbackLocale];
34
+ if (typeof localizedValue === 'undefined' && field.type === 'group')
35
+ localizedValue = {};
36
+ if (typeof localizedValue === 'undefined')
37
+ localizedValue = null;
38
+ siblingDoc[field.name] = localizedValue;
39
+ }
40
+ // Sanitize outgoing data
41
+ switch (field.type) {
42
+ case 'group': {
43
+ // Fill groups with empty objects so fields with hooks within groups can populate
44
+ // themselves virtually as necessary
45
+ if (typeof siblingDoc[field.name] === 'undefined') {
46
+ siblingDoc[field.name] = {};
47
+ }
48
+ break;
49
+ }
50
+ case 'richText': {
51
+ if (((((_b = (_a = field.admin) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.includes('relationship')) || ((_d = (_c = field.admin) === null || _c === void 0 ? void 0 : _c.elements) === null || _d === void 0 ? void 0 : _d.includes('upload'))) || !((_e = field === null || field === void 0 ? void 0 : field.admin) === null || _e === void 0 ? void 0 : _e.elements))) {
52
+ populationPromises.push((0, relationshipPromise_1.default)({
53
+ currentDepth,
54
+ depth,
55
+ field,
56
+ overrideAccess,
57
+ req,
58
+ siblingDoc,
59
+ showHiddenFields,
60
+ }));
61
+ }
62
+ break;
63
+ }
64
+ case 'point': {
65
+ const pointDoc = siblingDoc[field.name];
66
+ if (Array.isArray(pointDoc === null || pointDoc === void 0 ? void 0 : pointDoc.coordinates) && pointDoc.coordinates.length === 2) {
67
+ siblingDoc[field.name] = pointDoc.coordinates;
68
+ }
69
+ break;
70
+ }
71
+ default: {
72
+ break;
73
+ }
74
+ }
75
+ if ((0, types_1.fieldAffectsData)(field)) {
76
+ // Execute hooks
77
+ if ((_f = field.hooks) === null || _f === void 0 ? void 0 : _f.afterRead) {
78
+ await field.hooks.afterRead.reduce(async (priorHook, currentHook) => {
79
+ await priorHook;
80
+ const shouldRunHookOnAllLocales = field.localized
81
+ && (req.locale === 'all' || !flattenLocales)
82
+ && typeof siblingDoc[field.name] === 'object';
83
+ if (shouldRunHookOnAllLocales) {
84
+ const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) => (async () => {
85
+ const hookedValue = await currentHook({
86
+ value,
87
+ originalDoc: doc,
88
+ data: doc,
89
+ siblingData: siblingDoc[field.name],
90
+ operation: 'read',
91
+ req,
92
+ });
93
+ if (hookedValue !== undefined) {
94
+ siblingDoc[field.name][locale] = hookedValue;
95
+ }
96
+ })());
97
+ await Promise.all(hookPromises);
98
+ }
99
+ else {
100
+ const hookedValue = await currentHook({
101
+ data: doc,
102
+ findMany,
103
+ originalDoc: doc,
104
+ operation: 'read',
105
+ siblingData: siblingDoc[field.name],
106
+ req,
107
+ value: siblingDoc[field.name],
108
+ });
109
+ if (hookedValue !== undefined) {
110
+ siblingDoc[field.name] = hookedValue;
111
+ }
112
+ }
113
+ }, Promise.resolve());
114
+ }
115
+ // Execute access control
116
+ if (field.access && field.access.read) {
117
+ const result = overrideAccess ? true : await field.access.read({ req, id: doc.id, siblingData: siblingDoc, data: doc, doc });
118
+ if (!result) {
119
+ delete siblingDoc[field.name];
120
+ }
121
+ }
122
+ if (field.type === 'relationship' || field.type === 'upload') {
123
+ populationPromises.push((0, relationshipPopulationPromise_1.default)({
124
+ currentDepth,
125
+ depth,
126
+ field,
127
+ overrideAccess,
128
+ req,
129
+ showHiddenFields,
130
+ siblingDoc,
131
+ }));
132
+ }
133
+ }
134
+ switch (field.type) {
135
+ case 'group': {
136
+ let groupDoc = siblingDoc[field.name];
137
+ if (typeof siblingDoc[field.name] !== 'object')
138
+ groupDoc = {};
139
+ (0, traverseFields_1.traverseFields)({
140
+ currentDepth,
141
+ depth,
142
+ doc,
143
+ fieldPromises,
144
+ fields: field.fields,
145
+ findMany,
146
+ flattenLocales,
147
+ overrideAccess,
148
+ populationPromises,
149
+ req,
150
+ siblingDoc: groupDoc,
151
+ showHiddenFields,
152
+ });
153
+ break;
154
+ }
155
+ case 'array': {
156
+ const rows = siblingDoc[field.name];
157
+ if (Array.isArray(rows)) {
158
+ rows.forEach((row, i) => {
159
+ (0, traverseFields_1.traverseFields)({
160
+ currentDepth,
161
+ depth,
162
+ doc,
163
+ fields: field.fields,
164
+ fieldPromises,
165
+ findMany,
166
+ flattenLocales,
167
+ overrideAccess,
168
+ populationPromises,
169
+ req,
170
+ siblingDoc: row || {},
171
+ showHiddenFields,
172
+ });
173
+ });
174
+ }
175
+ break;
176
+ }
177
+ case 'blocks': {
178
+ const rows = siblingDoc[field.name];
179
+ if (Array.isArray(rows)) {
180
+ rows.forEach((row, i) => {
181
+ const block = field.blocks.find((blockType) => blockType.slug === row.blockType);
182
+ if (block) {
183
+ (0, traverseFields_1.traverseFields)({
184
+ currentDepth,
185
+ depth,
186
+ doc,
187
+ fields: block.fields,
188
+ fieldPromises,
189
+ findMany,
190
+ flattenLocales,
191
+ overrideAccess,
192
+ populationPromises,
193
+ req,
194
+ siblingDoc: row || {},
195
+ showHiddenFields,
196
+ });
197
+ }
198
+ });
199
+ }
200
+ break;
201
+ }
202
+ case 'row': {
203
+ (0, traverseFields_1.traverseFields)({
204
+ currentDepth,
205
+ depth,
206
+ doc,
207
+ fieldPromises,
208
+ fields: field.fields,
209
+ findMany,
210
+ flattenLocales,
211
+ overrideAccess,
212
+ populationPromises,
213
+ req,
214
+ siblingDoc,
215
+ showHiddenFields,
216
+ });
217
+ break;
218
+ }
219
+ default: {
220
+ break;
221
+ }
222
+ }
223
+ };
224
+ exports.promise = promise;
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3Byb21pc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0NBQXNDO0FBQ3RDLDhDQUE2RDtBQUU3RCxxREFBa0Q7QUFDbEQsNkZBQTZFO0FBQzdFLG9HQUE0RTtBQWlCNUUsb0VBQW9FO0FBQ3BFLHVDQUF1QztBQUN2QywwQ0FBMEM7QUFDMUMsOENBQThDO0FBQzlDLHdCQUF3QjtBQUN4QixnQ0FBZ0M7QUFDaEMsMkJBQTJCO0FBRXBCLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxFQUM1QixZQUFZLEVBQ1osS0FBSyxFQUNMLEdBQUcsRUFDSCxLQUFLLEVBQ0wsYUFBYSxFQUNiLFFBQVEsRUFDUixjQUFjLEVBQ2QsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixHQUFHLEVBQ0gsVUFBVSxFQUNWLGdCQUFnQixHQUNYLEVBQWlCLEVBQUU7O0lBQ3hCLElBQUksSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtRQUNqSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDL0I7SUFFRCxNQUFNLGlCQUFpQixHQUFHLGNBQWM7V0FDckMsSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUM7V0FDdkIsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDO1dBQy9FLEtBQUssQ0FBQyxJQUFJO1dBQ1YsS0FBSyxDQUFDLFNBQVM7V0FDZixHQUFHLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQztJQUV4QixJQUFJLGlCQUFpQixFQUFFO1FBQ3JCLElBQUksY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksT0FBTyxjQUFjLEtBQUssV0FBVyxJQUFJLEdBQUcsQ0FBQyxjQUFjO1lBQUUsY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdILElBQUksT0FBTyxjQUFjLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTztZQUFFLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekYsSUFBSSxPQUFPLGNBQWMsS0FBSyxXQUFXO1lBQUUsY0FBYyxHQUFHLElBQUksQ0FBQztRQUNqRSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQztLQUN6QztJQUVELHlCQUF5QjtJQUN6QixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDbEIsS0FBSyxPQUFPLENBQUMsQ0FBQztZQUNaLGlGQUFpRjtZQUNqRixvQ0FBb0M7WUFDcEMsSUFBSSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssV0FBVyxFQUFFO2dCQUNqRCxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUM3QjtZQUVELE1BQU07U0FDUDtRQUVELEtBQUssVUFBVSxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsQ0FBQyxDQUFBLE1BQUEsTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxRQUFRLDBDQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBSSxNQUFBLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsUUFBUSwwQ0FBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxLQUFLLDBDQUFFLFFBQVEsQ0FBQSxDQUFDLEVBQUU7Z0JBQy9ILGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFBLDZCQUEyQixFQUFDO29CQUNsRCxZQUFZO29CQUNaLEtBQUs7b0JBQ0wsS0FBSztvQkFDTCxjQUFjO29CQUNkLEdBQUc7b0JBQ0gsVUFBVTtvQkFDVixnQkFBZ0I7aUJBQ2pCLENBQUMsQ0FBQyxDQUFDO2FBQ0w7WUFFRCxNQUFNO1NBQ1A7UUFFRCxLQUFLLE9BQU8sQ0FBQyxDQUFDO1lBQ1osTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQVEsQ0FBQztZQUMvQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDN0UsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO2FBQy9DO1lBRUQsTUFBTTtTQUNQO1FBRUQsT0FBTyxDQUFDLENBQUM7WUFDUCxNQUFNO1NBQ1A7S0FDRjtJQUVELElBQUksSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsRUFBRTtRQUMzQixnQkFBZ0I7UUFDaEIsSUFBSSxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLFNBQVMsRUFBRTtZQUMxQixNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFO2dCQUNsRSxNQUFNLFNBQVMsQ0FBQztnQkFFaEIsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLENBQUMsU0FBUzt1QkFDOUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQzt1QkFDekMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQztnQkFFOUMsSUFBSSx5QkFBeUIsRUFBRTtvQkFDN0IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7d0JBQy9GLE1BQU0sV0FBVyxHQUFHLE1BQU0sV0FBVyxDQUFDOzRCQUNwQyxLQUFLOzRCQUNMLFdBQVcsRUFBRSxHQUFHOzRCQUNoQixJQUFJLEVBQUUsR0FBRzs0QkFDVCxXQUFXLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7NEJBQ25DLFNBQVMsRUFBRSxNQUFNOzRCQUNqQixHQUFHO3lCQUNKLENBQUMsQ0FBQzt3QkFFSCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7NEJBQzdCLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDO3lCQUM5QztvQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBRU4sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUNqQztxQkFBTTtvQkFDTCxNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQzt3QkFDcEMsSUFBSSxFQUFFLEdBQUc7d0JBQ1QsUUFBUTt3QkFDUixXQUFXLEVBQUUsR0FBRzt3QkFDaEIsU0FBUyxFQUFFLE1BQU07d0JBQ2pCLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDbkMsR0FBRzt3QkFDSCxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7cUJBQzlCLENBQUMsQ0FBQztvQkFFSCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7d0JBQzdCLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDO3FCQUN0QztpQkFDRjtZQUNILENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUN2QjtRQUVELHlCQUF5QjtRQUN6QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFxQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRWhKLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9CO1NBQ0Y7UUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzVELGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFBLHVDQUE2QixFQUFDO2dCQUNwRCxZQUFZO2dCQUNaLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxjQUFjO2dCQUNkLEdBQUc7Z0JBQ0gsZ0JBQWdCO2dCQUNoQixVQUFVO2FBQ1gsQ0FBQyxDQUFDLENBQUM7U0FDTDtLQUNGO0lBRUQsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQ2xCLEtBQUssT0FBTyxDQUFDLENBQUM7WUFDWixJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBNEIsQ0FBQztZQUNqRSxJQUFJLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRO2dCQUFFLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFFOUQsSUFBQSwrQkFBYyxFQUFDO2dCQUNiLFlBQVk7Z0JBQ1osS0FBSztnQkFDTCxHQUFHO2dCQUNILGFBQWE7Z0JBQ2IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNwQixRQUFRO2dCQUNSLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxrQkFBa0I7Z0JBQ2xCLEdBQUc7Z0JBQ0gsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLGdCQUFnQjthQUNqQixDQUFDLENBQUM7WUFFSCxNQUFNO1NBQ1A7UUFFRCxLQUFLLE9BQU8sQ0FBQyxDQUFDO1lBQ1osTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVwQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3RCLElBQUEsK0JBQWMsRUFBQzt3QkFDYixZQUFZO3dCQUNaLEtBQUs7d0JBQ0wsR0FBRzt3QkFDSCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07d0JBQ3BCLGFBQWE7d0JBQ2IsUUFBUTt3QkFDUixjQUFjO3dCQUNkLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixHQUFHO3dCQUNILFVBQVUsRUFBRSxHQUFHLElBQUksRUFBRTt3QkFDckIsZ0JBQWdCO3FCQUNqQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUNELE1BQU07U0FDUDtRQUVELEtBQUssUUFBUSxDQUFDLENBQUM7WUFDYixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXBDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUVqRixJQUFJLEtBQUssRUFBRTt3QkFDVCxJQUFBLCtCQUFjLEVBQUM7NEJBQ2IsWUFBWTs0QkFDWixLQUFLOzRCQUNMLEdBQUc7NEJBQ0gsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNOzRCQUNwQixhQUFhOzRCQUNiLFFBQVE7NEJBQ1IsY0FBYzs0QkFDZCxjQUFjOzRCQUNkLGtCQUFrQjs0QkFDbEIsR0FBRzs0QkFDSCxVQUFVLEVBQUUsR0FBRyxJQUFJLEVBQUU7NEJBQ3JCLGdCQUFnQjt5QkFDakIsQ0FBQyxDQUFDO3FCQUNKO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxNQUFNO1NBQ1A7UUFFRCxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ1YsSUFBQSwrQkFBYyxFQUFDO2dCQUNiLFlBQVk7Z0JBQ1osS0FBSztnQkFDTCxHQUFHO2dCQUNILGFBQWE7Z0JBQ2IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNwQixRQUFRO2dCQUNSLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxrQkFBa0I7Z0JBQ2xCLEdBQUc7Z0JBQ0gsVUFBVTtnQkFDVixnQkFBZ0I7YUFDakIsQ0FBQyxDQUFDO1lBRUgsTUFBTTtTQUNQO1FBRUQsT0FBTyxDQUFDLENBQUM7WUFDUCxNQUFNO1NBQ1A7S0FDRjtBQUNILENBQUMsQ0FBQztBQWpQVyxRQUFBLE9BQU8sV0FpUGxCIn0=
@@ -0,0 +1,13 @@
1
+ import { PayloadRequest } from '../../../express/types';
2
+ import { RelationshipField, UploadField } from '../../config/types';
3
+ declare type PromiseArgs = {
4
+ siblingDoc: Record<string, any>;
5
+ field: RelationshipField | UploadField;
6
+ depth: number;
7
+ currentDepth: number;
8
+ req: PayloadRequest;
9
+ overrideAccess: boolean;
10
+ showHiddenFields: boolean;
11
+ };
12
+ declare const relationshipPopulationPromise: ({ siblingDoc, field, depth, currentDepth, req, overrideAccess, showHiddenFields, }: PromiseArgs) => Promise<void>;
13
+ export default relationshipPopulationPromise;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const types_1 = require("../../config/types");
4
+ const populate = async ({ depth, currentDepth, req, overrideAccess, dataReference, data, field, index, showHiddenFields, }) => {
5
+ const dataToUpdate = dataReference;
6
+ const relation = Array.isArray(field.relationTo) ? data.relationTo : field.relationTo;
7
+ const relatedCollection = req.payload.collections[relation];
8
+ if (relatedCollection) {
9
+ let idString = Array.isArray(field.relationTo) ? data.value : data;
10
+ if (typeof idString !== 'string' && typeof (idString === null || idString === void 0 ? void 0 : idString.toString) === 'function') {
11
+ idString = idString.toString();
12
+ }
13
+ let populatedRelationship;
14
+ if (depth && currentDepth <= depth) {
15
+ populatedRelationship = await req.payload.findByID({
16
+ req,
17
+ collection: relatedCollection.config.slug,
18
+ id: idString,
19
+ currentDepth: currentDepth + 1,
20
+ overrideAccess: typeof overrideAccess === 'undefined' ? false : overrideAccess,
21
+ disableErrors: true,
22
+ depth,
23
+ showHiddenFields,
24
+ });
25
+ }
26
+ // If populatedRelationship comes back, update value
27
+ if (populatedRelationship || populatedRelationship === null) {
28
+ if (typeof index === 'number') {
29
+ if (Array.isArray(field.relationTo)) {
30
+ dataToUpdate[field.name][index].value = populatedRelationship;
31
+ }
32
+ else {
33
+ dataToUpdate[field.name][index] = populatedRelationship;
34
+ }
35
+ }
36
+ else if (Array.isArray(field.relationTo)) {
37
+ dataToUpdate[field.name].value = populatedRelationship;
38
+ }
39
+ else {
40
+ dataToUpdate[field.name] = populatedRelationship;
41
+ }
42
+ }
43
+ }
44
+ };
45
+ const relationshipPopulationPromise = async ({ siblingDoc, field, depth, currentDepth, req, overrideAccess, showHiddenFields, }) => {
46
+ const resultingDoc = siblingDoc;
47
+ const populateDepth = (0, types_1.fieldHasMaxDepth)(field) && field.maxDepth < depth ? field.maxDepth : depth;
48
+ if ((0, types_1.fieldSupportsMany)(field) && field.hasMany && Array.isArray(siblingDoc[field.name])) {
49
+ const rowPromises = [];
50
+ siblingDoc[field.name].forEach((relatedDoc, index) => {
51
+ const rowPromise = async () => {
52
+ if (relatedDoc) {
53
+ await populate({
54
+ depth: populateDepth,
55
+ currentDepth,
56
+ req,
57
+ overrideAccess,
58
+ data: relatedDoc,
59
+ dataReference: resultingDoc,
60
+ field,
61
+ index,
62
+ showHiddenFields,
63
+ });
64
+ }
65
+ };
66
+ rowPromises.push(rowPromise());
67
+ });
68
+ await Promise.all(rowPromises);
69
+ }
70
+ else if (siblingDoc[field.name]) {
71
+ await populate({
72
+ depth: populateDepth,
73
+ currentDepth,
74
+ req,
75
+ overrideAccess,
76
+ dataReference: resultingDoc,
77
+ data: siblingDoc[field.name],
78
+ field,
79
+ showHiddenFields,
80
+ });
81
+ }
82
+ };
83
+ exports.default = relationshipPopulationPromise;
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmllbGRzL2hvb2tzL2FmdGVyUmVhZC9yZWxhdGlvbnNoaXBQb3B1bGF0aW9uUHJvbWlzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDhDQUF5RztBQWN6RyxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsRUFDdEIsS0FBSyxFQUNMLFlBQVksRUFDWixHQUFHLEVBQ0gsY0FBYyxFQUNkLGFBQWEsRUFDYixJQUFJLEVBQ0osS0FBSyxFQUNMLEtBQUssRUFDTCxnQkFBZ0IsR0FDSCxFQUFFLEVBQUU7SUFDakIsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDO0lBRW5DLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsVUFBcUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUNsRyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTVELElBQUksaUJBQWlCLEVBQUU7UUFDckIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVuRSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFFBQVEsQ0FBQSxLQUFLLFVBQVUsRUFBRTtZQUM1RSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxxQkFBcUIsQ0FBQztRQUUxQixJQUFJLEtBQUssSUFBSSxZQUFZLElBQUks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
@@ -0,0 +1,18 @@
1
+ import { Field } from '../../config/types';
2
+ import { PayloadRequest } from '../../../express/types';
3
+ declare type Args = {
4
+ currentDepth: number;
5
+ depth: number;
6
+ doc: Record<string, unknown>;
7
+ fieldPromises: Promise<void>[];
8
+ fields: Field[];
9
+ findMany: boolean;
10
+ flattenLocales: boolean;
11
+ populationPromises: Promise<void>[];
12
+ req: PayloadRequest;
13
+ overrideAccess: boolean;
14
+ siblingDoc: Record<string, unknown>;
15
+ showHiddenFields: boolean;
16
+ };
17
+ export declare const traverseFields: ({ currentDepth, depth, doc, fieldPromises, fields, findMany, flattenLocales, overrideAccess, populationPromises, req, siblingDoc, showHiddenFields, }: Args) => void;
18
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.traverseFields = void 0;
4
+ const promise_1 = require("./promise");
5
+ const traverseFields = ({ currentDepth, depth, doc, fieldPromises, fields, findMany, flattenLocales, overrideAccess, populationPromises, req, siblingDoc, showHiddenFields, }) => {
6
+ fields.forEach((field) => {
7
+ fieldPromises.push((0, promise_1.promise)({
8
+ currentDepth,
9
+ depth,
10
+ doc,
11
+ field,
12
+ fieldPromises,
13
+ findMany,
14
+ flattenLocales,
15
+ overrideAccess,
16
+ populationPromises,
17
+ req,
18
+ siblingDoc,
19
+ showHiddenFields,
20
+ }));
21
+ });
22
+ };
23
+ exports.traverseFields = traverseFields;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVyc2VGaWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmllbGRzL2hvb2tzL2FmdGVyUmVhZC90cmF2ZXJzZUZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx1Q0FBb0M7QUFrQjdCLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFDN0IsWUFBWSxFQUNaLEtBQUssRUFDTCxHQUFHLEVBQ0gsYUFBYSxFQUNiLE1BQU0sRUFDTixRQUFRLEVBQ1IsY0FBYyxFQUNkLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsR0FBRyxFQUNILFVBQVUsRUFDVixnQkFBZ0IsR0FDWCxFQUFRLEVBQUU7SUFDZixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDdkIsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFBLGlCQUFPLEVBQUM7WUFDekIsWUFBWTtZQUNaLEtBQUs7WUFDTCxHQUFHO1lBQ0gsS0FBSztZQUNMLGFBQWE7WUFDYixRQUFRO1lBQ1IsY0FBYztZQUNkLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsR0FBRztZQUNILFVBQVU7WUFDVixnQkFBZ0I7U0FDakIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQTlCVyxRQUFBLGNBQWMsa0JBOEJ6QiJ9
@@ -0,0 +1,16 @@
1
+ import { SanitizedCollectionConfig } from '../../../collections/config/types';
2
+ import { SanitizedGlobalConfig } from '../../../globals/config/types';
3
+ import { Operation } from '../../../types';
4
+ import { PayloadRequest } from '../../../express/types';
5
+ declare type Args = {
6
+ data: Record<string, unknown>;
7
+ doc: Record<string, unknown>;
8
+ docWithLocales: Record<string, unknown>;
9
+ entityConfig: SanitizedCollectionConfig | SanitizedGlobalConfig;
10
+ id?: string | number;
11
+ operation: Operation;
12
+ req: PayloadRequest;
13
+ skipValidation?: boolean;
14
+ };
15
+ export declare const beforeChange: ({ data: incomingData, doc, docWithLocales, entityConfig, id, operation, req, skipValidation, }: Args) => Promise<Record<string, unknown>>;
16
+ export {};
@@ -0,0 +1,40 @@
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.beforeChange = void 0;
7
+ const traverseFields_1 = require("./traverseFields");
8
+ const errors_1 = require("../../../errors");
9
+ const deepCopyObject_1 = __importDefault(require("../../../utilities/deepCopyObject"));
10
+ const beforeChange = async ({ data: incomingData, doc, docWithLocales, entityConfig, id, operation, req, skipValidation, }) => {
11
+ const data = (0, deepCopyObject_1.default)(incomingData);
12
+ const promises = [];
13
+ const mergeLocaleActions = [];
14
+ const errors = [];
15
+ (0, traverseFields_1.traverseFields)({
16
+ data,
17
+ doc,
18
+ docWithLocales,
19
+ errors,
20
+ id,
21
+ operation,
22
+ path: '',
23
+ mergeLocaleActions,
24
+ promises,
25
+ req,
26
+ siblingData: data,
27
+ siblingDoc: doc,
28
+ siblingDocWithLocales: docWithLocales,
29
+ fields: entityConfig.fields,
30
+ skipValidation,
31
+ });
32
+ await Promise.all(promises);
33
+ if (errors.length > 0) {
34
+ throw new errors_1.ValidationError(errors);
35
+ }
36
+ mergeLocaleActions.forEach((action) => action());
37
+ return data;
38
+ };
39
+ exports.beforeChange = beforeChange;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmllbGRzL2hvb2tzL2JlZm9yZUNoYW5nZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSxxREFBa0Q7QUFDbEQsNENBQWtEO0FBQ2xELHVGQUErRDtBQWF4RCxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsRUFDakMsSUFBSSxFQUFFLFlBQVksRUFDbEIsR0FBRyxFQUNILGNBQWMsRUFDZCxZQUFZLEVBQ1osRUFBRSxFQUNGLFNBQVMsRUFDVCxHQUFHLEVBQ0gsY0FBYyxHQUNULEVBQW9DLEVBQUU7SUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBQSx3QkFBYyxFQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBeUMsRUFBRSxDQUFDO0lBRXhELElBQUEsK0JBQWMsRUFBQztRQUNiLElBQUk7UUFDSixHQUFHO1FBQ0gsY0FBYztRQUNkLE1BQU07UUFDTixFQUFFO1FBQ0YsU0FBUztRQUNULElBQUksRUFBRSxFQUFFO1FBQ1Isa0JBQWtCO1FBQ2xCLFFBQVE7UUFDUixHQUFHO1FBQ0gsV0FBVyxFQUFFLElBQUk7UUFDakIsVUFBVSxFQUFFLEdBQUc7UUFDZixxQkFBcUIsRUFBRSxjQUFjO1FBQ3JDLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTTtRQUMzQixjQUFjO0tBQ2YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTVCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDckIsTUFBTSxJQUFJLHdCQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDbkM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFakQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUExQ1csUUFBQSxZQUFZLGdCQTBDdkIifQ==
@@ -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
+ field: 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 promise: ({ data, doc, docWithLocales, errors, field, id, mergeLocaleActions, operation, path, promises, req, siblingData, siblingDoc, siblingDocWithLocales, skipValidation, }: Args) => Promise<void>;
25
+ export {};