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.
- package/.eslintrc.js +2 -1
- package/CHANGELOG.md +33 -0
- package/dist/admin/components/elements/ReactSelect/types.d.ts +1 -1
- package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts +18 -0
- package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +158 -0
- package/dist/admin/components/forms/Form/{buildStateFromSchema.d.ts → buildStateFromSchema/index.d.ts} +4 -3
- package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +25 -0
- package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts +18 -0
- package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +24 -0
- package/dist/admin/components/forms/Form/index.js +2 -6
- package/dist/admin/components/forms/RenderFields/index.js +1 -1
- package/dist/admin/components/forms/field-types/Array/Array.js +4 -2
- package/dist/admin/components/forms/field-types/Blocks/Blocks.js +4 -2
- package/dist/admin/components/forms/field-types/Relationship/index.js +3 -1
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.js +4 -2
- package/dist/admin/components/views/Account/index.js +2 -2
- package/dist/admin/components/views/Global/index.js +4 -4
- package/dist/admin/components/views/collections/Edit/index.js +7 -4
- package/dist/auth/operations/login.js +6 -8
- package/dist/collections/config/types.d.ts +1 -0
- package/dist/collections/operations/create.js +21 -20
- package/dist/collections/operations/delete.js +6 -7
- package/dist/collections/operations/find.js +8 -9
- package/dist/collections/operations/findByID.js +7 -9
- package/dist/collections/operations/findVersionByID.js +7 -9
- package/dist/collections/operations/findVersions.js +8 -10
- package/dist/collections/operations/restoreVersion.js +9 -13
- package/dist/collections/operations/update.js +26 -33
- package/dist/collections/tests/defaultValue.spec.d.ts +1 -0
- package/dist/collections/tests/defaultValue.spec.js +95 -0
- package/dist/collections/tests/hooks.spec.js +5 -1
- package/dist/fields/config/sanitize.d.ts +2 -1
- package/dist/fields/config/sanitize.js +5 -5
- package/dist/fields/config/sanitize.spec.js +30 -19
- package/dist/fields/config/schema.js +16 -15
- package/dist/fields/config/types.d.ts +8 -4
- package/dist/fields/config/types.js +6 -2
- package/dist/fields/getDefaultValue.d.ts +9 -0
- package/dist/fields/getDefaultValue.js +14 -0
- package/dist/fields/hooks/afterChange/index.d.ts +12 -0
- package/dist/fields/hooks/afterChange/index.js +26 -0
- package/dist/fields/hooks/afterChange/promise.d.ts +14 -0
- package/dist/fields/hooks/afterChange/promise.js +104 -0
- package/dist/fields/hooks/afterChange/traverseFields.d.ts +14 -0
- package/dist/fields/hooks/afterChange/traverseFields.js +20 -0
- package/dist/fields/hooks/afterRead/index.d.ts +16 -0
- package/dist/fields/hooks/afterRead/index.js +40 -0
- package/dist/fields/hooks/afterRead/promise.d.ts +18 -0
- package/dist/fields/hooks/afterRead/promise.js +225 -0
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +13 -0
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +84 -0
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +18 -0
- package/dist/fields/hooks/afterRead/traverseFields.js +24 -0
- package/dist/fields/hooks/beforeChange/index.d.ts +16 -0
- package/dist/fields/hooks/beforeChange/index.js +40 -0
- package/dist/fields/hooks/beforeChange/promise.d.ts +25 -0
- package/dist/fields/hooks/beforeChange/promise.js +236 -0
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts +25 -0
- package/dist/fields/hooks/beforeChange/traverseFields.js +27 -0
- package/dist/fields/hooks/beforeValidate/index.d.ts +14 -0
- package/dist/fields/hooks/beforeValidate/index.js +28 -0
- package/dist/fields/hooks/beforeValidate/promise.d.ts +16 -0
- package/dist/fields/hooks/beforeValidate/promise.js +229 -0
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +16 -0
- package/dist/fields/hooks/beforeValidate/traverseFields.js +22 -0
- package/dist/fields/richText/populate.d.ts +1 -3
- package/dist/fields/richText/populate.js +3 -3
- package/dist/fields/richText/recurseNestedFields.d.ts +1 -3
- package/dist/fields/richText/recurseNestedFields.js +7 -15
- package/dist/fields/richText/relationshipPromise.d.ts +6 -9
- package/dist/fields/richText/relationshipPromise.js +11 -15
- package/dist/fields/validations.js +3 -4
- package/dist/globals/config/types.d.ts +1 -0
- package/dist/globals/operations/findOne.js +11 -11
- package/dist/globals/operations/findVersionByID.js +5 -8
- package/dist/globals/operations/findVersions.js +7 -9
- package/dist/globals/operations/restoreVersion.js +12 -14
- package/dist/globals/operations/update.js +29 -33
- package/dist/graphql/schema/buildObjectType.js +3 -5
- package/dist/index.d.ts +0 -2
- package/dist/index.js +1 -3
- package/dist/localization/middleware.js +1 -2
- package/dist/mongoose/buildSchema.js +1 -2
- package/dist/uploads/mimeTypeValidator.js +4 -1
- package/dist/uploads/mimeTypeValidator.spec.js +7 -1
- package/dist/uploads/uploadFile.js +3 -2
- package/dist/versions/drafts/saveCollectionDraft.d.ts +1 -1
- package/dist/versions/drafts/saveCollectionDraft.js +1 -1
- package/dist/versions/ensurePublishedCollectionVersion.js +5 -7
- package/dist/versions/ensurePublishedGlobalVersion.js +5 -6
- package/dist/versions/saveCollectionVersion.js +6 -7
- package/dist/versions/saveGlobalVersion.js +7 -7
- package/dist/versions/tests/globals-graphql.spec.js +2 -2
- package/dist/webpack/getBaseConfig.js +1 -2
- package/docs/fields/array.mdx +1 -1
- package/docs/fields/blocks.mdx +1 -1
- package/docs/fields/checkbox.mdx +1 -1
- package/docs/fields/code.mdx +1 -1
- package/docs/fields/date.mdx +1 -1
- package/docs/fields/email.mdx +1 -1
- package/docs/fields/group.mdx +1 -1
- package/docs/fields/number.mdx +1 -1
- package/docs/fields/overview.mdx +37 -2
- package/docs/fields/point.mdx +1 -1
- package/docs/fields/radio.mdx +1 -1
- package/docs/fields/relationship.mdx +1 -1
- package/docs/fields/rich-text.mdx +1 -1
- package/docs/fields/select.mdx +1 -1
- package/docs/fields/text.mdx +1 -1
- package/docs/fields/textarea.mdx +1 -1
- package/docs/fields/upload.mdx +1 -1
- package/docs/hooks/collections.mdx +1 -0
- package/docs/hooks/fields.mdx +4 -3
- package/docs/hooks/globals.mdx +1 -0
- package/docs/production/preventing-abuse.mdx +16 -5
- package/docs/queries/overview.mdx +1 -1
- package/docs/rest-api/overview.mdx +1 -1
- package/package.json +4 -1
- package/dist/admin/components/forms/Form/buildStateFromSchema.js +0 -140
- package/dist/fields/accessPromise.d.ts +0 -22
- package/dist/fields/accessPromise.js +0 -39
- package/dist/fields/hookPromise.d.ts +0 -16
- package/dist/fields/hookPromise.js +0 -53
- package/dist/fields/performFieldOperations.d.ts +0 -25
- package/dist/fields/performFieldOperations.js +0 -86
- package/dist/fields/relationshipPopulationPromise.d.ts +0 -15
- package/dist/fields/relationshipPopulationPromise.js +0 -86
- package/dist/fields/traverseFields.d.ts +0 -40
- package/dist/fields/traverseFields.js +0 -329
- package/dist/fields/validationPromise.d.ts +0 -22
- package/dist/fields/validationPromise.js +0 -34
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import ObjectID from 'bson-objectid';
|
|
2
|
-
import { fieldAffectsData, fieldIsPresentationalOnly, } from '../../../../fields/config/types';
|
|
3
|
-
const buildValidationPromise = async (fieldState, options) => {
|
|
4
|
-
const validatedFieldState = fieldState;
|
|
5
|
-
let validationResult = true;
|
|
6
|
-
if (typeof fieldState.validate === 'function') {
|
|
7
|
-
validationResult = await fieldState.validate(fieldState.value, options);
|
|
8
|
-
}
|
|
9
|
-
if (typeof validationResult === 'string') {
|
|
10
|
-
validatedFieldState.errorMessage = validationResult;
|
|
11
|
-
validatedFieldState.valid = false;
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
validatedFieldState.valid = true;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
const buildStateFromSchema = async (args) => {
|
|
18
|
-
const { fieldSchema, data: fullData = {}, user, id, operation, } = args;
|
|
19
|
-
if (fieldSchema) {
|
|
20
|
-
const validationPromises = [];
|
|
21
|
-
const structureFieldState = (field, passesCondition, data = {}) => {
|
|
22
|
-
var _a;
|
|
23
|
-
const value = typeof (data === null || data === void 0 ? void 0 : data[field.name]) !== 'undefined' ? data[field.name] : field.defaultValue;
|
|
24
|
-
const fieldState = {
|
|
25
|
-
value,
|
|
26
|
-
initialValue: value,
|
|
27
|
-
valid: true,
|
|
28
|
-
validate: field.validate,
|
|
29
|
-
condition: (_a = field.admin) === null || _a === void 0 ? void 0 : _a.condition,
|
|
30
|
-
passesCondition,
|
|
31
|
-
};
|
|
32
|
-
validationPromises.push(buildValidationPromise(fieldState, {
|
|
33
|
-
...field,
|
|
34
|
-
fullData,
|
|
35
|
-
user,
|
|
36
|
-
siblingData: data,
|
|
37
|
-
id,
|
|
38
|
-
operation,
|
|
39
|
-
}));
|
|
40
|
-
return fieldState;
|
|
41
|
-
};
|
|
42
|
-
const iterateFields = (fields, data, parentPassesCondition, path = '') => fields.reduce((state, field) => {
|
|
43
|
-
var _a, _b;
|
|
44
|
-
let initialData = data;
|
|
45
|
-
if (!fieldIsPresentationalOnly(field) && !((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.disabled)) {
|
|
46
|
-
if (fieldAffectsData(field) && field.defaultValue && typeof (initialData === null || initialData === void 0 ? void 0 : initialData[field.name]) === 'undefined') {
|
|
47
|
-
initialData = { [field.name]: field.defaultValue };
|
|
48
|
-
}
|
|
49
|
-
const passesCondition = Boolean((((_b = field === null || field === void 0 ? void 0 : field.admin) === null || _b === void 0 ? void 0 : _b.condition) ? field.admin.condition(fullData || {}, initialData || {}) : true) && parentPassesCondition);
|
|
50
|
-
if (fieldAffectsData(field)) {
|
|
51
|
-
if (field.type === 'relationship' && (initialData === null || initialData === void 0 ? void 0 : initialData[field.name]) === null) {
|
|
52
|
-
initialData[field.name] = 'null';
|
|
53
|
-
}
|
|
54
|
-
if (field.type === 'array' || field.type === 'blocks') {
|
|
55
|
-
if (Array.isArray(initialData === null || initialData === void 0 ? void 0 : initialData[field.name])) {
|
|
56
|
-
const rows = initialData[field.name];
|
|
57
|
-
if (field.type === 'array') {
|
|
58
|
-
return {
|
|
59
|
-
...state,
|
|
60
|
-
...rows.reduce((rowState, row, i) => {
|
|
61
|
-
const rowPath = `${path}${field.name}.${i}.`;
|
|
62
|
-
return {
|
|
63
|
-
...rowState,
|
|
64
|
-
[`${rowPath}id`]: {
|
|
65
|
-
value: row.id,
|
|
66
|
-
initialValue: row.id || new ObjectID().toHexString(),
|
|
67
|
-
valid: true,
|
|
68
|
-
},
|
|
69
|
-
...iterateFields(field.fields, row, passesCondition, rowPath),
|
|
70
|
-
};
|
|
71
|
-
}, {}),
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
if (field.type === 'blocks') {
|
|
75
|
-
return {
|
|
76
|
-
...state,
|
|
77
|
-
...rows.reduce((rowState, row, i) => {
|
|
78
|
-
const block = field.blocks.find((blockType) => blockType.slug === row.blockType);
|
|
79
|
-
const rowPath = `${path}${field.name}.${i}.`;
|
|
80
|
-
return {
|
|
81
|
-
...rowState,
|
|
82
|
-
[`${rowPath}blockType`]: {
|
|
83
|
-
value: row.blockType,
|
|
84
|
-
initialValue: row.blockType,
|
|
85
|
-
valid: true,
|
|
86
|
-
},
|
|
87
|
-
[`${rowPath}blockName`]: {
|
|
88
|
-
value: row.blockName,
|
|
89
|
-
initialValue: row.blockName,
|
|
90
|
-
valid: true,
|
|
91
|
-
},
|
|
92
|
-
[`${rowPath}id`]: {
|
|
93
|
-
value: row.id,
|
|
94
|
-
initialValue: row.id || new ObjectID().toHexString(),
|
|
95
|
-
valid: true,
|
|
96
|
-
},
|
|
97
|
-
...((block === null || block === void 0 ? void 0 : block.fields) ? iterateFields(block.fields, row, passesCondition, rowPath) : {}),
|
|
98
|
-
};
|
|
99
|
-
}, {}),
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return state;
|
|
104
|
-
}
|
|
105
|
-
// Handle non-array-based nested fields (group, etc)
|
|
106
|
-
if (field.type === 'group') {
|
|
107
|
-
const subFieldData = initialData === null || initialData === void 0 ? void 0 : initialData[field.name];
|
|
108
|
-
return {
|
|
109
|
-
...state,
|
|
110
|
-
...iterateFields(field.fields, subFieldData, passesCondition, `${path}${field.name}.`),
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
return {
|
|
114
|
-
...state,
|
|
115
|
-
[`${path}${field.name}`]: structureFieldState(field, passesCondition, data),
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
// Handle field types that do not use names (row, etc)
|
|
119
|
-
if (field.type === 'row') {
|
|
120
|
-
return {
|
|
121
|
-
...state,
|
|
122
|
-
...iterateFields(field.fields, data, passesCondition, path),
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
const namedField = field;
|
|
126
|
-
// Handle normal fields
|
|
127
|
-
return {
|
|
128
|
-
...state,
|
|
129
|
-
[`${path}${namedField.name}`]: structureFieldState(field, passesCondition, data),
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
return state;
|
|
133
|
-
}, {});
|
|
134
|
-
const resultingState = iterateFields(fieldSchema, fullData, true);
|
|
135
|
-
await Promise.all(validationPromises);
|
|
136
|
-
return resultingState;
|
|
137
|
-
}
|
|
138
|
-
return {};
|
|
139
|
-
};
|
|
140
|
-
export default buildStateFromSchema;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Payload } from '..';
|
|
2
|
-
import { HookName, FieldAffectingData } from './config/types';
|
|
3
|
-
import { Operation } from '../types';
|
|
4
|
-
import { PayloadRequest } from '../express/types';
|
|
5
|
-
declare type Arguments = {
|
|
6
|
-
data: Record<string, unknown>;
|
|
7
|
-
fullData: Record<string, unknown>;
|
|
8
|
-
originalDoc: Record<string, unknown>;
|
|
9
|
-
field: FieldAffectingData;
|
|
10
|
-
operation: Operation;
|
|
11
|
-
overrideAccess: boolean;
|
|
12
|
-
req: PayloadRequest;
|
|
13
|
-
id: string | number;
|
|
14
|
-
relationshipPopulations: (() => Promise<void>)[];
|
|
15
|
-
depth: number;
|
|
16
|
-
currentDepth: number;
|
|
17
|
-
hook: HookName;
|
|
18
|
-
payload: Payload;
|
|
19
|
-
showHiddenFields: boolean;
|
|
20
|
-
};
|
|
21
|
-
declare const accessPromise: ({ data, fullData, field, operation, overrideAccess, req, id, relationshipPopulations, depth, currentDepth, hook, payload, showHiddenFields, originalDoc, }: Arguments) => Promise<void>;
|
|
22
|
-
export default accessPromise;
|
|
@@ -1,39 +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 relationshipPopulationPromise_1 = __importDefault(require("./relationshipPopulationPromise"));
|
|
7
|
-
const accessPromise = async ({ data, fullData, field, operation, overrideAccess, req, id, relationshipPopulations, depth, currentDepth, hook, payload, showHiddenFields, originalDoc, }) => {
|
|
8
|
-
const resultingData = data;
|
|
9
|
-
let accessOperation;
|
|
10
|
-
if (hook === 'afterRead') {
|
|
11
|
-
accessOperation = 'read';
|
|
12
|
-
}
|
|
13
|
-
else if (hook === 'beforeValidate') {
|
|
14
|
-
if (operation === 'update')
|
|
15
|
-
accessOperation = 'update';
|
|
16
|
-
if (operation === 'create')
|
|
17
|
-
accessOperation = 'create';
|
|
18
|
-
}
|
|
19
|
-
if (field.access && field.access[accessOperation]) {
|
|
20
|
-
const result = overrideAccess ? true : await field.access[accessOperation]({ req, id, siblingData: data, data: fullData, doc: originalDoc });
|
|
21
|
-
if (!result) {
|
|
22
|
-
delete resultingData[field.name];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if ((field.type === 'relationship' || field.type === 'upload') && hook === 'afterRead') {
|
|
26
|
-
relationshipPopulations.push((0, relationshipPopulationPromise_1.default)({
|
|
27
|
-
showHiddenFields,
|
|
28
|
-
data,
|
|
29
|
-
field,
|
|
30
|
-
depth,
|
|
31
|
-
currentDepth,
|
|
32
|
-
req,
|
|
33
|
-
overrideAccess,
|
|
34
|
-
payload,
|
|
35
|
-
}));
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
exports.default = accessPromise;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzUHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvYWNjZXNzUHJvbWlzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLG9HQUE0RTtBQXFCNUUsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLEVBQzNCLElBQUksRUFDSixRQUFRLEVBQ1IsS0FBSyxFQUNMLFNBQVMsRUFDVCxjQUFjLEVBQ2QsR0FBRyxFQUNILEVBQUUsRUFDRix1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLFlBQVksRUFDWixJQUFJLEVBQ0osT0FBTyxFQUNQLGdCQUFnQixFQUNoQixXQUFXLEdBQ0QsRUFBaUIsRUFBRTtJQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFFM0IsSUFBSSxlQUFlLENBQUM7SUFFcEIsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1FBQ3hCLGVBQWUsR0FBRyxNQUFNLENBQUM7S0FDMUI7U0FBTSxJQUFJLElBQUksS0FBSyxnQkFBZ0IsRUFBRTtRQUNwQyxJQUFJLFNBQVMsS0FBSyxRQUFRO1lBQUUsZUFBZSxHQUFHLFFBQVEsQ0FBQztRQUN2RCxJQUFJLFNBQVMsS0FBSyxRQUFRO1lBQUUsZUFBZSxHQUFHLFFBQVEsQ0FBQztLQUN4RDtJQUVELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ2pELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUU3SSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO0tBQ0Y7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1FBQ3RGLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFBLHVDQUE2QixFQUFDO1lBQ3pELGdCQUFnQjtZQUNoQixJQUFJO1lBQ0osS0FBSztZQUNMLEtBQUs7WUFDTCxZQUFZO1lBQ1osR0FBRztZQUNILGNBQWM7WUFDZCxPQUFPO1NBQ1IsQ0FBQyxDQUFDLENBQUM7S0FDTDtBQUNILENBQUMsQ0FBQztBQUVGLGtCQUFlLGFBQWEsQ0FBQyJ9
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { PayloadRequest } from '../express/types';
|
|
2
|
-
import { Operation } from '../types';
|
|
3
|
-
import { HookName, FieldAffectingData } from './config/types';
|
|
4
|
-
declare type Arguments = {
|
|
5
|
-
data: Record<string, unknown>;
|
|
6
|
-
field: FieldAffectingData;
|
|
7
|
-
hook: HookName;
|
|
8
|
-
req: PayloadRequest;
|
|
9
|
-
operation: Operation;
|
|
10
|
-
fullOriginalDoc: Record<string, unknown>;
|
|
11
|
-
fullData: Record<string, unknown>;
|
|
12
|
-
flattenLocales: boolean;
|
|
13
|
-
isVersion: boolean;
|
|
14
|
-
};
|
|
15
|
-
declare const hookPromise: (args: Arguments) => Promise<void>;
|
|
16
|
-
export default hookPromise;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const executeHook = async ({ currentHook, fullOriginalDoc, fullData, data, operation, req, value, }) => {
|
|
4
|
-
let hookedValue = await currentHook({
|
|
5
|
-
value,
|
|
6
|
-
originalDoc: fullOriginalDoc,
|
|
7
|
-
data: fullData,
|
|
8
|
-
siblingData: data,
|
|
9
|
-
operation,
|
|
10
|
-
req,
|
|
11
|
-
});
|
|
12
|
-
if (typeof hookedValue === 'undefined') {
|
|
13
|
-
hookedValue = value;
|
|
14
|
-
}
|
|
15
|
-
return hookedValue;
|
|
16
|
-
};
|
|
17
|
-
const hookPromise = async (args) => {
|
|
18
|
-
const { field, hook, req, flattenLocales, data, } = args;
|
|
19
|
-
if (field.hooks && field.hooks[hook]) {
|
|
20
|
-
await field.hooks[hook].reduce(async (priorHook, currentHook) => {
|
|
21
|
-
await priorHook;
|
|
22
|
-
const shouldRunHookOnAllLocales = hook === 'afterRead'
|
|
23
|
-
&& field.localized
|
|
24
|
-
&& (req.locale === 'all' || !flattenLocales)
|
|
25
|
-
&& typeof data[field.name] === 'object';
|
|
26
|
-
if (shouldRunHookOnAllLocales) {
|
|
27
|
-
const hookPromises = Object.entries(data[field.name]).map(([locale, value]) => (async () => {
|
|
28
|
-
const hookedValue = await executeHook({
|
|
29
|
-
...args,
|
|
30
|
-
currentHook,
|
|
31
|
-
value,
|
|
32
|
-
});
|
|
33
|
-
if (hookedValue !== undefined) {
|
|
34
|
-
data[field.name][locale] = hookedValue;
|
|
35
|
-
}
|
|
36
|
-
})());
|
|
37
|
-
await Promise.all(hookPromises);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
const hookedValue = await executeHook({
|
|
41
|
-
...args,
|
|
42
|
-
value: data[field.name],
|
|
43
|
-
currentHook,
|
|
44
|
-
});
|
|
45
|
-
if (hookedValue !== undefined) {
|
|
46
|
-
data[field.name] = hookedValue;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}, Promise.resolve());
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
exports.default = hookPromise;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va1Byb21pc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmllbGRzL2hvb2tQcm9taXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBcUJBLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxFQUN6QixXQUFXLEVBQ1gsZUFBZSxFQUNmLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEdBQ2dCLEVBQUUsRUFBRTtJQUN6QixJQUFJLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQztRQUNsQyxLQUFLO1FBQ0wsV0FBVyxFQUFFLGVBQWU7UUFDNUIsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsSUFBSTtRQUNqQixTQUFTO1FBQ1QsR0FBRztLQUNKLENBQUMsQ0FBQztJQUVILElBQUksT0FBTyxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLFdBQVcsR0FBRyxLQUFLLENBQUM7S0FDckI7SUFFRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBZSxFQUFpQixFQUFFO0lBQzNELE1BQU0sRUFDSixLQUFLLEVBQ0wsSUFBSSxFQUNKLEdBQUcsRUFDSCxjQUFjLEVBQ2QsSUFBSSxHQUNMLEdBQUcsSUFBSSxDQUFDO0lBRVQsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDcEMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFO1lBQzlELE1BQU0sU0FBUyxDQUFDO1lBRWhCLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxLQUFLLFdBQVc7bUJBQ2pELEtBQUssQ0FBQyxTQUFTO21CQUNmLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUM7bUJBQ3pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLENBQUM7WUFFMUMsSUFBSSx5QkFBeUIsRUFBRTtnQkFDN0IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ3pGLE1BQU0sV0FBVyxHQUFHLE1BQU0sV0FBVyxDQUFDO3dCQUNwQyxHQUFHLElBQUk7d0JBQ1AsV0FBVzt3QkFDWCxLQUFLO3FCQUNOLENBQUMsQ0FBQztvQkFFSCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7d0JBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDO3FCQUN4QztnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRU4sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLE1BQU0sV0FBVyxHQUFHLE1BQU0sV0FBVyxDQUFDO29CQUNwQyxHQUFHLElBQUk7b0JBQ1AsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUN2QixXQUFXO2lCQUNaLENBQUMsQ0FBQztnQkFFSCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDO2lCQUNoQzthQUNGO1FBQ0gsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsV0FBVyxDQUFDIn0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Payload } from '..';
|
|
2
|
-
import { SanitizedCollectionConfig } from '../collections/config/types';
|
|
3
|
-
import { SanitizedGlobalConfig } from '../globals/config/types';
|
|
4
|
-
import { Operation } from '../types';
|
|
5
|
-
import { PayloadRequest } from '../express/types';
|
|
6
|
-
import { HookName } from './config/types';
|
|
7
|
-
declare type Arguments = {
|
|
8
|
-
data: Record<string, unknown>;
|
|
9
|
-
operation: Operation;
|
|
10
|
-
hook?: HookName;
|
|
11
|
-
req: PayloadRequest;
|
|
12
|
-
overrideAccess: boolean;
|
|
13
|
-
flattenLocales?: boolean;
|
|
14
|
-
unflattenLocales?: boolean;
|
|
15
|
-
originalDoc?: Record<string, unknown>;
|
|
16
|
-
docWithLocales?: Record<string, unknown>;
|
|
17
|
-
id?: string | number;
|
|
18
|
-
showHiddenFields?: boolean;
|
|
19
|
-
depth?: number;
|
|
20
|
-
currentDepth?: number;
|
|
21
|
-
isVersion?: boolean;
|
|
22
|
-
skipValidation?: boolean;
|
|
23
|
-
};
|
|
24
|
-
export default function performFieldOperations(this: Payload, entityConfig: SanitizedCollectionConfig | SanitizedGlobalConfig, args: Arguments): Promise<any>;
|
|
25
|
-
export {};
|
|
@@ -1,86 +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 errors_1 = require("../errors");
|
|
7
|
-
const sanitizeFallbackLocale_1 = __importDefault(require("../localization/sanitizeFallbackLocale"));
|
|
8
|
-
const traverseFields_1 = __importDefault(require("./traverseFields"));
|
|
9
|
-
const deepCopyObject_1 = __importDefault(require("../utilities/deepCopyObject"));
|
|
10
|
-
async function performFieldOperations(entityConfig, args) {
|
|
11
|
-
const { data, originalDoc: fullOriginalDoc, docWithLocales, operation, hook, req, id, req: { payloadAPI, locale, }, overrideAccess, flattenLocales, unflattenLocales = false, showHiddenFields = false, isVersion = false, skipValidation = false, } = args;
|
|
12
|
-
const fullData = (0, deepCopyObject_1.default)(data);
|
|
13
|
-
const fallbackLocale = (0, sanitizeFallbackLocale_1.default)(req.fallbackLocale);
|
|
14
|
-
let depth = 0;
|
|
15
|
-
if (payloadAPI === 'REST' || payloadAPI === 'local') {
|
|
16
|
-
depth = (args.depth || args.depth === 0) ? parseInt(String(args.depth), 10) : this.config.defaultDepth;
|
|
17
|
-
if (depth > this.config.maxDepth)
|
|
18
|
-
depth = this.config.maxDepth;
|
|
19
|
-
}
|
|
20
|
-
const currentDepth = args.currentDepth || 1;
|
|
21
|
-
// Maintain a top-level list of promises
|
|
22
|
-
// so that all async field access / validations / hooks
|
|
23
|
-
// can run in parallel
|
|
24
|
-
const validationPromises = [];
|
|
25
|
-
const accessPromises = [];
|
|
26
|
-
const relationshipPopulations = [];
|
|
27
|
-
const hookPromises = [];
|
|
28
|
-
const unflattenLocaleActions = [];
|
|
29
|
-
const transformActions = [];
|
|
30
|
-
const errors = [];
|
|
31
|
-
// //////////////////////////////////////////
|
|
32
|
-
// Entry point for field validation
|
|
33
|
-
// //////////////////////////////////////////
|
|
34
|
-
(0, traverseFields_1.default)({
|
|
35
|
-
fields: entityConfig.fields,
|
|
36
|
-
data: fullData,
|
|
37
|
-
originalDoc: fullOriginalDoc,
|
|
38
|
-
path: '',
|
|
39
|
-
flattenLocales,
|
|
40
|
-
locale,
|
|
41
|
-
fallbackLocale,
|
|
42
|
-
accessPromises,
|
|
43
|
-
operation,
|
|
44
|
-
overrideAccess,
|
|
45
|
-
req,
|
|
46
|
-
id,
|
|
47
|
-
relationshipPopulations,
|
|
48
|
-
depth,
|
|
49
|
-
currentDepth,
|
|
50
|
-
hook,
|
|
51
|
-
hookPromises,
|
|
52
|
-
fullOriginalDoc,
|
|
53
|
-
fullData,
|
|
54
|
-
validationPromises,
|
|
55
|
-
errors,
|
|
56
|
-
payload: this,
|
|
57
|
-
showHiddenFields,
|
|
58
|
-
unflattenLocales,
|
|
59
|
-
unflattenLocaleActions,
|
|
60
|
-
transformActions,
|
|
61
|
-
docWithLocales,
|
|
62
|
-
isVersion,
|
|
63
|
-
skipValidation,
|
|
64
|
-
});
|
|
65
|
-
if (hook === 'afterRead') {
|
|
66
|
-
transformActions.forEach((action) => action());
|
|
67
|
-
}
|
|
68
|
-
const hookResults = hookPromises.map((promise) => promise());
|
|
69
|
-
await Promise.all(hookResults);
|
|
70
|
-
const validationResults = validationPromises.map((promise) => promise());
|
|
71
|
-
await Promise.all(validationResults);
|
|
72
|
-
if (errors.length > 0) {
|
|
73
|
-
throw new errors_1.ValidationError(errors);
|
|
74
|
-
}
|
|
75
|
-
if (hook === 'beforeChange') {
|
|
76
|
-
transformActions.forEach((action) => action());
|
|
77
|
-
}
|
|
78
|
-
unflattenLocaleActions.forEach((action) => action());
|
|
79
|
-
const accessResults = accessPromises.map((promise) => promise());
|
|
80
|
-
await Promise.all(accessResults);
|
|
81
|
-
const relationshipPopulationResults = relationshipPopulations.map((population) => population());
|
|
82
|
-
await Promise.all(relationshipPopulationResults);
|
|
83
|
-
return fullData;
|
|
84
|
-
}
|
|
85
|
-
exports.default = performFieldOperations;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZm9ybUZpZWxkT3BlcmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvcGVyZm9ybUZpZWxkT3BlcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHNDQUE0QztBQUM1QyxvR0FBNEU7QUFDNUUsc0VBQThDO0FBTTlDLGlGQUF5RDtBQW9CMUMsS0FBSyxVQUFVLHNCQUFzQixDQUFnQixZQUErRCxFQUFFLElBQWU7SUFDbEosTUFBTSxFQUNKLElBQUksRUFDSixXQUFXLEVBQUUsZUFBZSxFQUM1QixjQUFjLEVBQ2QsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEVBQ0gsRUFBRSxFQUNGLEdBQUcsRUFBRSxFQUNILFVBQVUsRUFDVixNQUFNLEdBQ1AsRUFDRCxjQUFjLEVBQ2QsY0FBYyxFQUNkLGdCQUFnQixHQUFHLEtBQUssRUFDeEIsZ0JBQWdCLEdBQUcsS0FBSyxFQUN4QixTQUFTLEdBQUcsS0FBSyxFQUNqQixjQUFjLEdBQUcsS0FBSyxHQUN2QixHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sUUFBUSxHQUFHLElBQUEsd0JBQWMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUV0QyxNQUFNLGNBQWMsR0FBRyxJQUFBLGdDQUFzQixFQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVsRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxJQUFJLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxLQUFLLE9BQU8sRUFBRTtRQUNuRCxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUV2RyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7S0FDaEU7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUU1Qyx3Q0FBd0M7SUFDeEMsdURBQXVEO0lBQ3ZELHNCQUFzQjtJQUN0QixNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUM5QixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDMUIsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7SUFDbkMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQzVCLE1BQU0sTUFBTSxHQUF5QyxFQUFFLENBQUM7SUFFeEQsNkNBQTZDO0lBQzdDLG1DQUFtQztJQUNuQyw2Q0FBNkM7SUFFN0MsSUFBQSx3QkFBYyxFQUFDO1FBQ2IsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNO1FBQzNCLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLGVBQWU7UUFDNUIsSUFBSSxFQUFFLEVBQUU7UUFDUixjQUFjO1FBQ2QsTUFBTTtRQUNOLGNBQWM7UUFDZCxjQUFjO1FBQ2QsU0FBUztRQUNULGNBQWM7UUFDZCxHQUFHO1FBQ0gsRUFBRTtRQUNGLHVCQUF1QjtRQUN2QixLQUFLO1FBQ0wsWUFBWTtRQUNaLElBQUk7UUFDSixZQUFZO1FBQ1osZUFBZTtRQUNmLFFBQVE7UUFDUixrQkFBa0I7UUFDbEIsTUFBTTtRQUNOLE9BQU8sRUFBRSxJQUFJO1FBQ2IsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixzQkFBc0I7UUFDdEIsZ0JBQWdCO1FBQ2hCLGNBQWM7UUFDZCxTQUFTO1FBQ1QsY0FBYztLQUNmLENBQUMsQ0FBQztJQUVILElBQUksSUFBSSxLQUFLLFdBQVcsRUFBRTtRQUN4QixnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDaEQ7SUFFRCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzdELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUvQixNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN6RSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUVyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSx3QkFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ25DO0lBRUQsSUFBSSxJQUFJLEtBQUssY0FBYyxFQUFFO1FBQzNCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUNoRDtJQUVELHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVyRCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVqQyxNQUFNLDZCQUE2QixHQUFHLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNoRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUVqRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBN0dELHlDQTZHQyJ9
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { PayloadRequest } from '../express/types';
|
|
2
|
-
import { RelationshipField, UploadField } from './config/types';
|
|
3
|
-
import { Payload } from '..';
|
|
4
|
-
declare type PromiseArgs = {
|
|
5
|
-
data: Record<string, any>;
|
|
6
|
-
field: RelationshipField | UploadField;
|
|
7
|
-
depth: number;
|
|
8
|
-
currentDepth: number;
|
|
9
|
-
req: PayloadRequest;
|
|
10
|
-
overrideAccess: boolean;
|
|
11
|
-
payload: Payload;
|
|
12
|
-
showHiddenFields: boolean;
|
|
13
|
-
};
|
|
14
|
-
declare const relationshipPopulationPromise: ({ data, field, depth, currentDepth, req, overrideAccess, payload, showHiddenFields, }: PromiseArgs) => () => Promise<void>;
|
|
15
|
-
export default relationshipPopulationPromise;
|
|
@@ -1,86 +0,0 @@
|
|
|
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, payload, showHiddenFields, }) => {
|
|
5
|
-
const dataToUpdate = dataReference;
|
|
6
|
-
const relation = Array.isArray(field.relationTo) ? data.relationTo : field.relationTo;
|
|
7
|
-
const relatedCollection = 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 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 = ({ data, field, depth, currentDepth, req, overrideAccess, payload, showHiddenFields, }) => async () => {
|
|
46
|
-
const resultingData = data;
|
|
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(data[field.name])) {
|
|
49
|
-
const rowPromises = [];
|
|
50
|
-
data[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: resultingData,
|
|
60
|
-
field,
|
|
61
|
-
index,
|
|
62
|
-
payload,
|
|
63
|
-
showHiddenFields,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
rowPromises.push(rowPromise());
|
|
68
|
-
});
|
|
69
|
-
await Promise.all(rowPromises);
|
|
70
|
-
}
|
|
71
|
-
else if (data[field.name]) {
|
|
72
|
-
await populate({
|
|
73
|
-
depth: populateDepth,
|
|
74
|
-
currentDepth,
|
|
75
|
-
req,
|
|
76
|
-
overrideAccess,
|
|
77
|
-
dataReference: resultingData,
|
|
78
|
-
data: data[field.name],
|
|
79
|
-
field,
|
|
80
|
-
payload,
|
|
81
|
-
showHiddenFields,
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
exports.default = relationshipPopulationPromise;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmllbGRzL3JlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMENBQXFHO0FBZ0JyRyxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsRUFDdEIsS0FBSyxFQUNMLFlBQVksRUFDWixHQUFHLEVBQ0gsY0FBYyxFQUNkLGFBQWEsRUFDYixJQUFJLEVBQ0osS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsZ0JBQWdCLEdBQ0gsRUFBRSxFQUFFO0lBQ2pCLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQztJQUVuQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFVBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDbEcsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXhELElBQUksaUJBQWlCLEVBQUU7UUFDckIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVuRSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFFBQVEsQ0FBQSxLQUFLLFVBQVUsRUFBRTtZQUM1RSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxxQkFBcUIsQ0FBQztRQUUxQixJQUFJLEtBQUssSUFBSSxZQUFZLElBQUksS0FBSyxFQUFFO1lBQ2xDLHFCQUFx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
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Field, HookName } from './config/types';
|
|
2
|
-
import { Operation } from '../types';
|
|
3
|
-
import { PayloadRequest } from '../express/types';
|
|
4
|
-
import { Payload } from '..';
|
|
5
|
-
declare type Arguments = {
|
|
6
|
-
fields: Field[];
|
|
7
|
-
data: Record<string, any>;
|
|
8
|
-
originalDoc: Record<string, any>;
|
|
9
|
-
path: string;
|
|
10
|
-
flattenLocales: boolean;
|
|
11
|
-
locale: string;
|
|
12
|
-
fallbackLocale: string;
|
|
13
|
-
accessPromises: (() => Promise<void>)[];
|
|
14
|
-
operation: Operation;
|
|
15
|
-
overrideAccess: boolean;
|
|
16
|
-
req: PayloadRequest;
|
|
17
|
-
id?: string | number;
|
|
18
|
-
relationshipPopulations: (() => Promise<void>)[];
|
|
19
|
-
depth: number;
|
|
20
|
-
currentDepth: number;
|
|
21
|
-
hook: HookName;
|
|
22
|
-
hookPromises: (() => Promise<void>)[];
|
|
23
|
-
fullOriginalDoc: Record<string, any>;
|
|
24
|
-
fullData: Record<string, any>;
|
|
25
|
-
validationPromises: (() => Promise<string | boolean>)[];
|
|
26
|
-
errors: {
|
|
27
|
-
message: string;
|
|
28
|
-
field: string;
|
|
29
|
-
}[];
|
|
30
|
-
payload: Payload;
|
|
31
|
-
showHiddenFields: boolean;
|
|
32
|
-
unflattenLocales: boolean;
|
|
33
|
-
unflattenLocaleActions: (() => void)[];
|
|
34
|
-
transformActions: (() => void)[];
|
|
35
|
-
docWithLocales?: Record<string, any>;
|
|
36
|
-
skipValidation?: boolean;
|
|
37
|
-
isVersion: boolean;
|
|
38
|
-
};
|
|
39
|
-
declare const traverseFields: (args: Arguments) => void;
|
|
40
|
-
export default traverseFields;
|