payload 3.0.0-beta.127 → 3.0.0-beta.129
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/dist/admin/RichText.d.ts +8 -21
- package/dist/admin/RichText.d.ts.map +1 -1
- package/dist/admin/RichText.js.map +1 -1
- package/dist/admin/elements/Cell.d.ts +7 -9
- package/dist/admin/elements/Cell.d.ts.map +1 -1
- package/dist/admin/elements/Cell.js.map +1 -1
- package/dist/admin/fields/Array.d.ts +3 -3
- package/dist/admin/fields/Array.d.ts.map +1 -1
- package/dist/admin/fields/Array.js.map +1 -1
- package/dist/admin/fields/Blocks.d.ts +2 -1
- package/dist/admin/fields/Blocks.d.ts.map +1 -1
- package/dist/admin/fields/Blocks.js.map +1 -1
- package/dist/admin/fields/Checkbox.d.ts +1 -0
- package/dist/admin/fields/Checkbox.d.ts.map +1 -1
- package/dist/admin/fields/Checkbox.js.map +1 -1
- package/dist/admin/fields/Code.d.ts +2 -1
- package/dist/admin/fields/Code.d.ts.map +1 -1
- package/dist/admin/fields/Code.js.map +1 -1
- package/dist/admin/fields/Collapsible.d.ts +5 -2
- package/dist/admin/fields/Collapsible.d.ts.map +1 -1
- package/dist/admin/fields/Collapsible.js.map +1 -1
- package/dist/admin/fields/Date.d.ts +1 -0
- package/dist/admin/fields/Date.d.ts.map +1 -1
- package/dist/admin/fields/Date.js.map +1 -1
- package/dist/admin/fields/Email.d.ts +1 -1
- package/dist/admin/fields/Email.d.ts.map +1 -1
- package/dist/admin/fields/Email.js.map +1 -1
- package/dist/admin/fields/Group.d.ts +5 -2
- package/dist/admin/fields/Group.d.ts.map +1 -1
- package/dist/admin/fields/Group.js.map +1 -1
- package/dist/admin/fields/Hidden.d.ts +7 -6
- package/dist/admin/fields/Hidden.d.ts.map +1 -1
- package/dist/admin/fields/Hidden.js.map +1 -1
- package/dist/admin/fields/JSON.d.ts +1 -0
- package/dist/admin/fields/JSON.d.ts.map +1 -1
- package/dist/admin/fields/JSON.js.map +1 -1
- package/dist/admin/fields/Join.d.ts +3 -1
- package/dist/admin/fields/Join.d.ts.map +1 -1
- package/dist/admin/fields/Join.js.map +1 -1
- package/dist/admin/fields/Number.d.ts +1 -0
- package/dist/admin/fields/Number.d.ts.map +1 -1
- package/dist/admin/fields/Number.js.map +1 -1
- package/dist/admin/fields/Point.d.ts +1 -0
- package/dist/admin/fields/Point.d.ts.map +1 -1
- package/dist/admin/fields/Point.js.map +1 -1
- package/dist/admin/fields/Radio.d.ts +1 -0
- package/dist/admin/fields/Radio.d.ts.map +1 -1
- package/dist/admin/fields/Radio.js.map +1 -1
- package/dist/admin/fields/Relationship.d.ts +1 -0
- package/dist/admin/fields/Relationship.d.ts.map +1 -1
- package/dist/admin/fields/Relationship.js.map +1 -1
- package/dist/admin/fields/RichText.d.ts +3 -2
- package/dist/admin/fields/RichText.d.ts.map +1 -1
- package/dist/admin/fields/RichText.js.map +1 -1
- package/dist/admin/fields/Row.d.ts +1 -2
- package/dist/admin/fields/Row.d.ts.map +1 -1
- package/dist/admin/fields/Row.js.map +1 -1
- package/dist/admin/fields/Select.d.ts +1 -0
- package/dist/admin/fields/Select.d.ts.map +1 -1
- package/dist/admin/fields/Select.js.map +1 -1
- package/dist/admin/fields/Tabs.d.ts +4 -2
- package/dist/admin/fields/Tabs.d.ts.map +1 -1
- package/dist/admin/fields/Tabs.js.map +1 -1
- package/dist/admin/fields/Text.d.ts +1 -0
- package/dist/admin/fields/Text.d.ts.map +1 -1
- package/dist/admin/fields/Text.js.map +1 -1
- package/dist/admin/fields/Textarea.d.ts +1 -0
- package/dist/admin/fields/Textarea.d.ts.map +1 -1
- package/dist/admin/fields/Textarea.js.map +1 -1
- package/dist/admin/fields/UI.d.ts +8 -0
- package/dist/admin/fields/UI.d.ts.map +1 -0
- package/dist/admin/fields/UI.js +3 -0
- package/dist/admin/fields/UI.js.map +1 -0
- package/dist/admin/fields/Upload.d.ts +1 -0
- package/dist/admin/fields/Upload.d.ts.map +1 -1
- package/dist/admin/fields/Upload.js.map +1 -1
- package/dist/admin/forms/Description.d.ts +1 -2
- package/dist/admin/forms/Description.d.ts.map +1 -1
- package/dist/admin/forms/Description.js.map +1 -1
- package/dist/admin/forms/Error.d.ts +0 -2
- package/dist/admin/forms/Error.d.ts.map +1 -1
- package/dist/admin/forms/Error.js.map +1 -1
- package/dist/admin/forms/Field.d.ts +53 -29
- package/dist/admin/forms/Field.d.ts.map +1 -1
- package/dist/admin/forms/Field.js.map +1 -1
- package/dist/admin/forms/Form.d.ts +46 -3
- package/dist/admin/forms/Form.d.ts.map +1 -1
- package/dist/admin/forms/Form.js.map +1 -1
- package/dist/admin/forms/Label.d.ts +1 -2
- package/dist/admin/forms/Label.d.ts.map +1 -1
- package/dist/admin/forms/Label.js.map +1 -1
- package/dist/admin/functions/index.d.ts +44 -0
- package/dist/admin/functions/index.d.ts.map +1 -0
- package/dist/admin/functions/index.js +3 -0
- package/dist/admin/functions/index.js.map +1 -0
- package/dist/admin/types.d.ts +63 -20
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/types.js +4 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/admin/views/types.d.ts +9 -6
- package/dist/admin/views/types.d.ts.map +1 -1
- package/dist/admin/views/types.js.map +1 -1
- package/dist/assets/images/github-banner-nextjs-native.jpg +0 -0
- package/dist/auth/ensureUsernameOrEmail.js +4 -4
- package/dist/auth/ensureUsernameOrEmail.js.map +1 -1
- package/dist/auth/getFieldsToSign.js +13 -13
- package/dist/auth/getFieldsToSign.js.map +1 -1
- package/dist/auth/operations/local/auth.d.ts.map +1 -1
- package/dist/auth/operations/local/auth.js +2 -2
- package/dist/auth/operations/local/auth.js.map +1 -1
- package/dist/auth/operations/login.js +10 -10
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.js +2 -2
- package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
- package/dist/auth/strategies/local/register.js +4 -4
- package/dist/auth/strategies/local/register.js.map +1 -1
- package/dist/bin/generateImportMap/index.d.ts.map +1 -1
- package/dist/bin/generateImportMap/index.js +32 -5
- package/dist/bin/generateImportMap/index.js.map +1 -1
- package/dist/bin/generateImportMap/parsePayloadComponent.d.ts +1 -1
- package/dist/bin/generateImportMap/parsePayloadComponent.js +5 -5
- package/dist/bin/generateImportMap/parsePayloadComponent.js.map +1 -1
- package/dist/bin/migrate.js +17 -17
- package/dist/bin/migrate.js.map +1 -1
- package/dist/collections/config/client.d.ts +23 -35
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +104 -1
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +4 -2
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/types.d.ts +3 -3
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/operations/countVersions.d.ts +14 -0
- package/dist/collections/operations/countVersions.d.ts.map +1 -0
- package/dist/collections/operations/countVersions.js +74 -0
- package/dist/collections/operations/countVersions.js.map +1 -0
- package/dist/collections/operations/local/count.d.ts.map +1 -1
- package/dist/collections/operations/local/count.js +1 -0
- package/dist/collections/operations/local/count.js.map +1 -1
- package/dist/collections/operations/local/countVersions.d.ts +20 -0
- package/dist/collections/operations/local/countVersions.d.ts.map +1 -0
- package/dist/collections/operations/local/countVersions.js +20 -0
- package/dist/collections/operations/local/countVersions.js.map +1 -0
- package/dist/collections/operations/local/index.d.ts +2 -0
- package/dist/collections/operations/local/index.d.ts.map +1 -1
- package/dist/collections/operations/local/index.js +2 -0
- package/dist/collections/operations/local/index.js.map +1 -1
- package/dist/collections/operations/utils.d.ts +6 -0
- package/dist/collections/operations/utils.d.ts.map +1 -1
- package/dist/collections/operations/utils.js.map +1 -1
- package/dist/config/client.d.ts +10 -13
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +36 -0
- package/dist/config/client.js.map +1 -1
- package/dist/config/types.d.ts +20 -15
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/getLocalizedPaths.js +1 -1
- package/dist/database/getLocalizedPaths.js.map +1 -1
- package/dist/database/sanitizeJoinQuery.js +6 -6
- package/dist/database/sanitizeJoinQuery.js.map +1 -1
- package/dist/database/types.d.ts +14 -0
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/errors/ValidationError.d.ts +1 -1
- package/dist/errors/ValidationError.d.ts.map +1 -1
- package/dist/errors/ValidationError.js +1 -1
- package/dist/errors/ValidationError.js.map +1 -1
- package/dist/exports/shared.d.ts +3 -1
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +3 -1
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/config/client.d.ts +16 -1
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/client.js +229 -1
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/sanitize.d.ts +2 -2
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +7 -21
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/sanitizeJoinField.d.ts +2 -2
- package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
- package/dist/fields/config/sanitizeJoinField.js +2 -2
- package/dist/fields/config/sanitizeJoinField.js.map +1 -1
- package/dist/fields/config/types.d.ts +28 -171
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/getFieldPaths.d.ts +25 -8
- package/dist/fields/getFieldPaths.d.ts.map +1 -1
- package/dist/fields/getFieldPaths.js +9 -37
- package/dist/fields/getFieldPaths.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.d.ts +2 -1
- package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js +66 -62
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/traverseFields.js +2 -1
- package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts +2 -1
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +107 -103
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js +2 -1
- package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/index.js.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts +8 -5
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +99 -110
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts +2 -4
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js +2 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.d.ts +2 -1
- package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.js +47 -43
- package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/traverseFields.js +2 -1
- package/dist/fields/hooks/beforeDuplicate/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts +2 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +105 -101
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js +2 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
- package/dist/globals/config/client.d.ts +18 -25
- package/dist/globals/config/client.d.ts.map +1 -1
- package/dist/globals/config/client.js +53 -1
- package/dist/globals/config/client.js.map +1 -1
- package/dist/globals/config/sanitize.d.ts.map +1 -1
- package/dist/globals/config/sanitize.js +3 -1
- package/dist/globals/config/sanitize.js.map +1 -1
- package/dist/globals/operations/countGlobalVersions.d.ts +13 -0
- package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -0
- package/dist/globals/operations/countGlobalVersions.js +49 -0
- package/dist/globals/operations/countGlobalVersions.js.map +1 -0
- package/dist/globals/operations/local/countGlobalVersions.d.ts +20 -0
- package/dist/globals/operations/local/countGlobalVersions.d.ts.map +1 -0
- package/dist/globals/operations/local/countGlobalVersions.js +20 -0
- package/dist/globals/operations/local/countGlobalVersions.js.map +1 -0
- package/dist/globals/operations/local/index.d.ts +2 -0
- package/dist/globals/operations/local/index.d.ts.map +1 -1
- package/dist/globals/operations/local/index.js +2 -0
- package/dist/globals/operations/local/index.js.map +1 -1
- package/dist/index.d.ts +28 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -2
- package/dist/index.js.map +1 -1
- package/dist/queues/config/jobsCollection.d.ts.map +1 -1
- package/dist/queues/config/jobsCollection.js +2 -11
- package/dist/queues/config/jobsCollection.js.map +1 -1
- package/dist/queues/config/types/workflowTypes.d.ts +2 -1
- package/dist/queues/config/types/workflowTypes.d.ts.map +1 -1
- package/dist/queues/config/types/workflowTypes.js.map +1 -1
- package/dist/queues/localAPI.d.ts +2 -0
- package/dist/queues/localAPI.d.ts.map +1 -1
- package/dist/queues/localAPI.js +13 -0
- package/dist/queues/localAPI.js.map +1 -1
- package/dist/utilities/configToJSONSchema.js +232 -232
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/createLocalReq.d.ts +1 -1
- package/dist/utilities/createLocalReq.d.ts.map +1 -1
- package/dist/utilities/createLocalReq.js +4 -4
- package/dist/utilities/createLocalReq.js.map +1 -1
- package/dist/utilities/deepCopyObject.d.ts +1 -0
- package/dist/utilities/deepCopyObject.d.ts.map +1 -1
- package/dist/utilities/deepCopyObject.js +23 -0
- package/dist/utilities/deepCopyObject.js.map +1 -1
- package/dist/utilities/fieldSchemaToJSON.js +17 -17
- package/dist/utilities/fieldSchemaToJSON.js.map +1 -1
- package/dist/utilities/formatErrors.d.ts +6 -0
- package/dist/utilities/formatErrors.d.ts.map +1 -0
- package/dist/utilities/formatErrors.js +56 -0
- package/dist/utilities/formatErrors.js.map +1 -0
- package/dist/utilities/telemetry/conf/index.js +2 -2
- package/dist/utilities/telemetry/conf/index.js.map +1 -1
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +1 -7
- package/dist/versions/saveVersion.js.map +1 -1
- package/dist/versions/types.d.ts +1 -1
- package/dist/versions/types.d.ts.map +1 -1
- package/dist/versions/types.js.map +1 -1
- package/license.md +22 -0
- package/package.json +3 -3
- package/dist/utilities/mergeListSearchAndWhere.d.ts +0 -12
- package/dist/utilities/mergeListSearchAndWhere.d.ts.map +0 -1
- package/dist/utilities/mergeListSearchAndWhere.js +0 -57
- package/dist/utilities/mergeListSearchAndWhere.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/fields/hooks/afterChange/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext } from '../../../index.js'\nimport type { JsonObject, PayloadRequest } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { fieldAffectsData, tabHasName } from '../../config/types.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n data: JsonObject\n doc: JsonObject\n field: Field | TabAsField\n global: null | SanitizedGlobalConfig\n operation: 'create' | 'update'\n /**\n * The parent's path\n */\n parentPath: (number | string)[]\n /**\n * The parent's schemaPath (path without indexes).\n */\n parentSchemaPath: string[]\n previousDoc: JsonObject\n previousSiblingDoc: JsonObject\n req: PayloadRequest\n siblingData: JsonObject\n siblingDoc: JsonObject\n}\n\n// This function is responsible for the following actions, in order:\n// - Execute field hooks\n\nexport const promise = async ({\n collection,\n context,\n data,\n doc,\n field,\n global,\n operation,\n parentPath,\n parentSchemaPath,\n previousDoc,\n previousSiblingDoc,\n req,\n siblingData,\n siblingDoc,\n}: Args): Promise<void> => {\n const { path: fieldPath, schemaPath: fieldSchemaPath } = getFieldPaths({\n field,\n parentPath,\n parentSchemaPath,\n })\n\n if (fieldAffectsData(field)) {\n // Execute hooks\n if (field.hooks?.afterChange) {\n await field.hooks.afterChange.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const hookedValue = await currentHook({\n collection,\n context,\n data,\n field,\n global,\n operation,\n originalDoc: doc,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc,\n previousValue: previousDoc[field.name],\n req,\n schemaPath: fieldSchemaPath,\n siblingData,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }, Promise.resolve())\n }\n }\n\n // Traverse subfields\n switch (field.type) {\n case 'group': {\n await traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc: previousDoc[field.name] as JsonObject,\n req,\n schemaPath: fieldSchemaPath,\n siblingData: (siblingData?.[field.name] as JsonObject) || {},\n siblingDoc: siblingDoc[field.name] as JsonObject,\n })\n\n break\n }\n\n case 'array': {\n const rows = siblingDoc[field.name]\n\n if (Array.isArray(rows)) {\n const promises = []\n rows.forEach((row, i) => {\n promises.push(\n traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n path: [...fieldPath, i],\n previousDoc,\n previousSiblingDoc: previousDoc?.[field.name]?.[i] || ({} as JsonObject),\n req,\n schemaPath: fieldSchemaPath,\n siblingData: siblingData?.[field.name]?.[i] || {},\n siblingDoc: row ? { ...row } : {},\n }),\n )\n })\n await Promise.all(promises)\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingDoc[field.name]\n\n if (Array.isArray(rows)) {\n const promises = []\n rows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n if (block) {\n promises.push(\n traverseFields({\n collection,\n context,\n data,\n doc,\n fields: block.fields,\n global,\n operation,\n path: [...fieldPath, i],\n previousDoc,\n previousSiblingDoc: previousDoc?.[field.name]?.[i] || ({} as JsonObject),\n req,\n schemaPath: fieldSchemaPath,\n siblingData: siblingData?.[field.name]?.[i] || {},\n siblingDoc: row ? { ...row } : {},\n }),\n )\n }\n })\n await Promise.all(promises)\n }\n\n break\n }\n\n case 'row':\n case 'collapsible': {\n await traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc: { ...previousSiblingDoc },\n req,\n schemaPath: fieldSchemaPath,\n siblingData: siblingData || {},\n siblingDoc: { ...siblingDoc },\n })\n\n break\n }\n\n case 'tab': {\n let tabSiblingData = siblingData\n let tabSiblingDoc = siblingDoc\n let tabPreviousSiblingDoc = siblingDoc\n\n if (tabHasName(field)) {\n tabSiblingData = siblingData[field.name] as JsonObject\n tabSiblingDoc = siblingDoc[field.name] as JsonObject\n tabPreviousSiblingDoc = previousDoc[field.name] as JsonObject\n }\n\n await traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc: tabPreviousSiblingDoc,\n req,\n schemaPath: fieldSchemaPath,\n siblingData: tabSiblingData,\n siblingDoc: tabSiblingDoc,\n })\n\n break\n }\n\n case 'tabs': {\n await traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n global,\n operation,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc: { ...previousSiblingDoc },\n req,\n schemaPath: fieldSchemaPath,\n siblingData: siblingData || {},\n siblingDoc: { ...siblingDoc },\n })\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.afterChange?.length) {\n await editor.hooks.afterChange.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const hookedValue = await currentHook({\n collection,\n context,\n data,\n field,\n global,\n operation,\n originalDoc: doc,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc,\n previousValue: previousDoc[field.name],\n req,\n schemaPath: fieldSchemaPath,\n siblingData,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }, Promise.resolve())\n }\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","fieldAffectsData","tabHasName","getFieldPaths","traverseFields","promise","collection","context","data","doc","field","global","operation","parentPath","parentSchemaPath","previousDoc","previousSiblingDoc","req","siblingData","siblingDoc","path","fieldPath","schemaPath","fieldSchemaPath","hooks","afterChange","reduce","priorHook","currentHook","hookedValue","originalDoc","previousValue","name","value","undefined","Promise","resolve","type","fields","rows","Array","isArray","promises","forEach","row","i","push","all","block","blocks","find","blockType","slug","tabSiblingData","tabSiblingDoc","tabPreviousSiblingDoc","tabs","map","tab","editor","Error","length"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/afterChange/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext } from '../../../index.js'\nimport type { JsonObject, PayloadRequest } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { fieldAffectsData, tabHasName } from '../../config/types.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n data: JsonObject\n doc: JsonObject\n field: Field | TabAsField\n fieldIndex: number\n global: null | SanitizedGlobalConfig\n operation: 'create' | 'update'\n /**\n * The parent's path\n */\n parentPath: (number | string)[]\n /**\n * The parent's schemaPath (path without indexes).\n */\n parentSchemaPath: string[]\n previousDoc: JsonObject\n previousSiblingDoc: JsonObject\n req: PayloadRequest\n siblingData: JsonObject\n siblingDoc: JsonObject\n}\n\n// This function is responsible for the following actions, in order:\n// - Execute field hooks\n\nexport const promise = async ({\n collection,\n context,\n data,\n doc,\n field,\n fieldIndex,\n global,\n operation,\n parentPath,\n parentSchemaPath,\n previousDoc,\n previousSiblingDoc,\n req,\n siblingData,\n siblingDoc,\n}: Args): Promise<void> => {\n const { path: _fieldPath, schemaPath: _fieldSchemaPath } = getFieldPaths({\n field,\n index: fieldIndex,\n parentIndexPath: '', // Doesn't matter, as unnamed fields do not affect data, and hooks are only run on fields that affect data\n parentPath: parentPath.join('.'),\n parentSchemaPath: parentSchemaPath.join('.'),\n })\n const fieldPath = _fieldPath ? _fieldPath.split('.') : []\n const fieldSchemaPath = _fieldSchemaPath ? _fieldSchemaPath.split('.') : []\n\n if (fieldAffectsData(field)) {\n // Execute hooks\n if (field.hooks?.afterChange) {\n await field.hooks.afterChange.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const hookedValue = await currentHook({\n collection,\n context,\n data,\n field,\n global,\n operation,\n originalDoc: doc,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc,\n previousValue: previousDoc[field.name],\n req,\n schemaPath: fieldSchemaPath,\n siblingData,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }, Promise.resolve())\n }\n }\n\n // Traverse subfields\n switch (field.type) {\n case 'array': {\n const rows = siblingDoc[field.name]\n\n if (Array.isArray(rows)) {\n const promises = []\n rows.forEach((row, i) => {\n promises.push(\n traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n path: [...fieldPath, i],\n previousDoc,\n previousSiblingDoc: previousDoc?.[field.name]?.[i] || ({} as JsonObject),\n req,\n schemaPath: fieldSchemaPath,\n siblingData: siblingData?.[field.name]?.[i] || {},\n siblingDoc: row ? { ...row } : {},\n }),\n )\n })\n await Promise.all(promises)\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingDoc[field.name]\n\n if (Array.isArray(rows)) {\n const promises = []\n rows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n if (block) {\n promises.push(\n traverseFields({\n collection,\n context,\n data,\n doc,\n fields: block.fields,\n global,\n operation,\n path: [...fieldPath, i],\n previousDoc,\n previousSiblingDoc: previousDoc?.[field.name]?.[i] || ({} as JsonObject),\n req,\n schemaPath: fieldSchemaPath,\n siblingData: siblingData?.[field.name]?.[i] || {},\n siblingDoc: row ? { ...row } : {},\n }),\n )\n }\n })\n await Promise.all(promises)\n }\n\n break\n }\n\n case 'collapsible':\n\n case 'row': {\n await traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc: { ...previousSiblingDoc },\n req,\n schemaPath: fieldSchemaPath,\n siblingData: siblingData || {},\n siblingDoc: { ...siblingDoc },\n })\n\n break\n }\n case 'group': {\n await traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc: previousDoc[field.name] as JsonObject,\n req,\n schemaPath: fieldSchemaPath,\n siblingData: (siblingData?.[field.name] as JsonObject) || {},\n siblingDoc: siblingDoc[field.name] as JsonObject,\n })\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.afterChange?.length) {\n await editor.hooks.afterChange.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const hookedValue = await currentHook({\n collection,\n context,\n data,\n field,\n global,\n operation,\n originalDoc: doc,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc,\n previousValue: previousDoc[field.name],\n req,\n schemaPath: fieldSchemaPath,\n siblingData,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }, Promise.resolve())\n }\n break\n }\n\n case 'tab': {\n let tabSiblingData = siblingData\n let tabSiblingDoc = siblingDoc\n let tabPreviousSiblingDoc = siblingDoc\n\n if (tabHasName(field)) {\n tabSiblingData = siblingData[field.name] as JsonObject\n tabSiblingDoc = siblingDoc[field.name] as JsonObject\n tabPreviousSiblingDoc = previousDoc[field.name] as JsonObject\n }\n\n await traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc: tabPreviousSiblingDoc,\n req,\n schemaPath: fieldSchemaPath,\n siblingData: tabSiblingData,\n siblingDoc: tabSiblingDoc,\n })\n\n break\n }\n\n case 'tabs': {\n await traverseFields({\n collection,\n context,\n data,\n doc,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n global,\n operation,\n path: fieldPath,\n previousDoc,\n previousSiblingDoc: { ...previousSiblingDoc },\n req,\n schemaPath: fieldSchemaPath,\n siblingData: siblingData || {},\n siblingDoc: { ...siblingDoc },\n })\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","fieldAffectsData","tabHasName","getFieldPaths","traverseFields","promise","collection","context","data","doc","field","fieldIndex","global","operation","parentPath","parentSchemaPath","previousDoc","previousSiblingDoc","req","siblingData","siblingDoc","path","_fieldPath","schemaPath","_fieldSchemaPath","index","parentIndexPath","join","fieldPath","split","fieldSchemaPath","hooks","afterChange","reduce","priorHook","currentHook","hookedValue","originalDoc","previousValue","name","value","undefined","Promise","resolve","type","rows","Array","isArray","promises","forEach","row","i","push","fields","all","block","blocks","find","blockType","slug","editor","Error","length","tabSiblingData","tabSiblingDoc","tabPreviousSiblingDoc","tabs","map","tab"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterChange/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,UAAU,CAAA;IACf,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,WAAW,EAAE,UAAU,CAAA;IACvB,kBAAkB,EAAE,UAAU,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,WAAW,EAAE,UAAU,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,oJAexB,IAAI,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterChange/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,UAAU,CAAA;IACf,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,WAAW,EAAE,UAAU,CAAA;IACvB,kBAAkB,EAAE,UAAU,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,WAAW,EAAE,UAAU,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,oJAexB,IAAI,KAAG,OAAO,CAAC,IAAI,CA0BrB,CAAA"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { promise } from './promise.js';
|
|
2
2
|
export const traverseFields = async ({ collection, context, data, doc, fields, global, operation, path, previousDoc, previousSiblingDoc, req, schemaPath, siblingData, siblingDoc })=>{
|
|
3
3
|
const promises = [];
|
|
4
|
-
fields.forEach((field)=>{
|
|
4
|
+
fields.forEach((field, fieldIndex)=>{
|
|
5
5
|
promises.push(promise({
|
|
6
6
|
collection,
|
|
7
7
|
context,
|
|
8
8
|
data,
|
|
9
9
|
doc,
|
|
10
10
|
field,
|
|
11
|
+
fieldIndex,
|
|
11
12
|
global,
|
|
12
13
|
operation,
|
|
13
14
|
parentPath: path,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/fields/hooks/afterChange/traverseFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext } from '../../../index.js'\nimport type { JsonObject, PayloadRequest } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { promise } from './promise.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n data: JsonObject\n doc: JsonObject\n fields: (Field | TabAsField)[]\n global: null | SanitizedGlobalConfig\n operation: 'create' | 'update'\n path: (number | string)[]\n previousDoc: JsonObject\n previousSiblingDoc: JsonObject\n req: PayloadRequest\n schemaPath: string[]\n siblingData: JsonObject\n siblingDoc: JsonObject\n}\n\nexport const traverseFields = async ({\n collection,\n context,\n data,\n doc,\n fields,\n global,\n operation,\n path,\n previousDoc,\n previousSiblingDoc,\n req,\n schemaPath,\n siblingData,\n siblingDoc,\n}: Args): Promise<void> => {\n const promises = []\n\n fields.forEach((field) => {\n promises.push(\n promise({\n collection,\n context,\n data,\n doc,\n field,\n global,\n operation,\n parentPath: path,\n parentSchemaPath: schemaPath,\n previousDoc,\n previousSiblingDoc,\n req,\n siblingData,\n siblingDoc,\n }),\n )\n })\n\n await Promise.all(promises)\n}\n"],"names":["promise","traverseFields","collection","context","data","doc","fields","global","operation","path","previousDoc","previousSiblingDoc","req","schemaPath","siblingData","siblingDoc","promises","forEach","field","push","parentPath","parentSchemaPath","Promise","all"],"mappings":"AAMA,SAASA,OAAO,QAAQ,eAAc;AAmBtC,OAAO,MAAMC,iBAAiB,OAAO,EACnCC,UAAU,EACVC,OAAO,EACPC,IAAI,EACJC,GAAG,EACHC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,IAAI,EACJC,WAAW,EACXC,kBAAkB,EAClBC,GAAG,EACHC,UAAU,EACVC,WAAW,EACXC,UAAU,EACL;IACL,MAAMC,WAAW,EAAE;IAEnBV,OAAOW,OAAO,CAAC,CAACC;
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/afterChange/traverseFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext } from '../../../index.js'\nimport type { JsonObject, PayloadRequest } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { promise } from './promise.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n data: JsonObject\n doc: JsonObject\n fields: (Field | TabAsField)[]\n global: null | SanitizedGlobalConfig\n operation: 'create' | 'update'\n path: (number | string)[]\n previousDoc: JsonObject\n previousSiblingDoc: JsonObject\n req: PayloadRequest\n schemaPath: string[]\n siblingData: JsonObject\n siblingDoc: JsonObject\n}\n\nexport const traverseFields = async ({\n collection,\n context,\n data,\n doc,\n fields,\n global,\n operation,\n path,\n previousDoc,\n previousSiblingDoc,\n req,\n schemaPath,\n siblingData,\n siblingDoc,\n}: Args): Promise<void> => {\n const promises = []\n\n fields.forEach((field, fieldIndex) => {\n promises.push(\n promise({\n collection,\n context,\n data,\n doc,\n field,\n fieldIndex,\n global,\n operation,\n parentPath: path,\n parentSchemaPath: schemaPath,\n previousDoc,\n previousSiblingDoc,\n req,\n siblingData,\n siblingDoc,\n }),\n )\n })\n\n await Promise.all(promises)\n}\n"],"names":["promise","traverseFields","collection","context","data","doc","fields","global","operation","path","previousDoc","previousSiblingDoc","req","schemaPath","siblingData","siblingDoc","promises","forEach","field","fieldIndex","push","parentPath","parentSchemaPath","Promise","all"],"mappings":"AAMA,SAASA,OAAO,QAAQ,eAAc;AAmBtC,OAAO,MAAMC,iBAAiB,OAAO,EACnCC,UAAU,EACVC,OAAO,EACPC,IAAI,EACJC,GAAG,EACHC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,IAAI,EACJC,WAAW,EACXC,kBAAkB,EAClBC,GAAG,EACHC,UAAU,EACVC,WAAW,EACXC,UAAU,EACL;IACL,MAAMC,WAAW,EAAE;IAEnBV,OAAOW,OAAO,CAAC,CAACC,OAAOC;QACrBH,SAASI,IAAI,CACXpB,QAAQ;YACNE;YACAC;YACAC;YACAC;YACAa;YACAC;YACAZ;YACAC;YACAa,YAAYZ;YACZa,kBAAkBT;YAClBH;YACAC;YACAC;YACAE;YACAC;QACF;IAEJ;IAEA,MAAMQ,QAAQC,GAAG,CAACR;AACpB,EAAC"}
|
|
@@ -12,6 +12,7 @@ type Args = {
|
|
|
12
12
|
draft: boolean;
|
|
13
13
|
fallbackLocale: null | string;
|
|
14
14
|
field: Field | TabAsField;
|
|
15
|
+
fieldIndex: number;
|
|
15
16
|
/**
|
|
16
17
|
* fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises
|
|
17
18
|
*/
|
|
@@ -39,6 +40,6 @@ type Args = {
|
|
|
39
40
|
triggerAccessControl?: boolean;
|
|
40
41
|
triggerHooks?: boolean;
|
|
41
42
|
};
|
|
42
|
-
export declare const promise: ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, field, fieldPromises, findMany, flattenLocales, global, locale, overrideAccess, parentPath, parentSchemaPath, populate, populationPromises, req, select, selectMode, showHiddenFields, siblingDoc, triggerAccessControl, triggerHooks, }: Args) => Promise<void>;
|
|
43
|
+
export declare const promise: ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, field, fieldIndex, fieldPromises, findMany, flattenLocales, global, locale, overrideAccess, parentPath, parentSchemaPath, populate, populationPromises, req, select, selectMode, showHiddenFields, siblingDoc, triggerAccessControl, triggerHooks, }: Args) => Promise<void>;
|
|
43
44
|
export {};
|
|
44
45
|
//# sourceMappingURL=promise.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,UAAU,EACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAS9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,UAAU,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC/B;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAUD,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,UAAU,EACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAS9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,UAAU,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC/B;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAUD,eAAO,MAAM,OAAO,iUA2BjB,IAAI,KAAG,OAAO,CAAC,IAAI,CAsrBrB,CAAA"}
|
|
@@ -11,12 +11,16 @@ import { traverseFields } from './traverseFields.js';
|
|
|
11
11
|
// - Execute field hooks
|
|
12
12
|
// - Execute read access control
|
|
13
13
|
// - Populate relationships
|
|
14
|
-
export const promise = async ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, field, fieldPromises, findMany, flattenLocales, global, locale, overrideAccess, parentPath, parentSchemaPath, populate, populationPromises, req, select, selectMode, showHiddenFields, siblingDoc, triggerAccessControl = true, triggerHooks = true })=>{
|
|
15
|
-
const { path:
|
|
14
|
+
export const promise = async ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, field, fieldIndex, fieldPromises, findMany, flattenLocales, global, locale, overrideAccess, parentPath, parentSchemaPath, populate, populationPromises, req, select, selectMode, showHiddenFields, siblingDoc, triggerAccessControl = true, triggerHooks = true })=>{
|
|
15
|
+
const { path: _fieldPath, schemaPath: _fieldSchemaPath } = getFieldPaths({
|
|
16
16
|
field,
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
index: fieldIndex,
|
|
18
|
+
parentIndexPath: '',
|
|
19
|
+
parentPath: parentPath.join('.'),
|
|
20
|
+
parentSchemaPath: parentSchemaPath.join('.')
|
|
19
21
|
});
|
|
22
|
+
const fieldPath = _fieldPath ? _fieldPath.split('.') : [];
|
|
23
|
+
const fieldSchemaPath = _fieldSchemaPath ? _fieldSchemaPath.split('.') : [];
|
|
20
24
|
if (fieldAffectsData(field) && field.hidden && typeof siblingDoc[field.name] !== 'undefined' && !showHiddenFields) {
|
|
21
25
|
delete siblingDoc[field.name];
|
|
22
26
|
}
|
|
@@ -76,13 +80,14 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
|
|
|
76
80
|
}
|
|
77
81
|
break;
|
|
78
82
|
}
|
|
79
|
-
case '
|
|
83
|
+
case 'point':
|
|
80
84
|
{
|
|
81
|
-
field.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
const pointDoc = siblingDoc[field.name];
|
|
86
|
+
if (Array.isArray(pointDoc?.coordinates) && pointDoc.coordinates.length === 2) {
|
|
87
|
+
siblingDoc[field.name] = pointDoc.coordinates;
|
|
88
|
+
} else {
|
|
89
|
+
siblingDoc[field.name] = undefined;
|
|
90
|
+
}
|
|
86
91
|
break;
|
|
87
92
|
}
|
|
88
93
|
case 'richText':
|
|
@@ -96,14 +101,13 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
|
|
|
96
101
|
}
|
|
97
102
|
break;
|
|
98
103
|
}
|
|
99
|
-
case '
|
|
104
|
+
case 'tabs':
|
|
100
105
|
{
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
106
|
+
field.tabs.forEach((tab)=>{
|
|
107
|
+
if (tabHasName(tab) && (typeof siblingDoc[tab.name] === 'undefined' || siblingDoc[tab.name] === null)) {
|
|
108
|
+
siblingDoc[tab.name] = {};
|
|
109
|
+
}
|
|
110
|
+
});
|
|
107
111
|
break;
|
|
108
112
|
}
|
|
109
113
|
default:
|
|
@@ -213,42 +217,6 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
|
|
|
213
217
|
}
|
|
214
218
|
}
|
|
215
219
|
switch(field.type){
|
|
216
|
-
case 'group':
|
|
217
|
-
{
|
|
218
|
-
let groupDoc = siblingDoc[field.name];
|
|
219
|
-
if (typeof siblingDoc[field.name] !== 'object') {
|
|
220
|
-
groupDoc = {};
|
|
221
|
-
}
|
|
222
|
-
const groupSelect = select?.[field.name];
|
|
223
|
-
traverseFields({
|
|
224
|
-
collection,
|
|
225
|
-
context,
|
|
226
|
-
currentDepth,
|
|
227
|
-
depth,
|
|
228
|
-
doc,
|
|
229
|
-
draft,
|
|
230
|
-
fallbackLocale,
|
|
231
|
-
fieldPromises,
|
|
232
|
-
fields: field.fields,
|
|
233
|
-
findMany,
|
|
234
|
-
flattenLocales,
|
|
235
|
-
global,
|
|
236
|
-
locale,
|
|
237
|
-
overrideAccess,
|
|
238
|
-
path: fieldPath,
|
|
239
|
-
populate,
|
|
240
|
-
populationPromises,
|
|
241
|
-
req,
|
|
242
|
-
schemaPath: fieldSchemaPath,
|
|
243
|
-
select: typeof groupSelect === 'object' ? groupSelect : undefined,
|
|
244
|
-
selectMode,
|
|
245
|
-
showHiddenFields,
|
|
246
|
-
siblingDoc: groupDoc,
|
|
247
|
-
triggerAccessControl,
|
|
248
|
-
triggerHooks
|
|
249
|
-
});
|
|
250
|
-
break;
|
|
251
|
-
}
|
|
252
220
|
case 'array':
|
|
253
221
|
{
|
|
254
222
|
const rows = siblingDoc[field.name];
|
|
@@ -432,8 +400,8 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
|
|
|
432
400
|
}
|
|
433
401
|
break;
|
|
434
402
|
}
|
|
435
|
-
case 'row':
|
|
436
403
|
case 'collapsible':
|
|
404
|
+
case 'row':
|
|
437
405
|
{
|
|
438
406
|
traverseFields({
|
|
439
407
|
collection,
|
|
@@ -464,21 +432,13 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
|
|
|
464
432
|
});
|
|
465
433
|
break;
|
|
466
434
|
}
|
|
467
|
-
case '
|
|
435
|
+
case 'group':
|
|
468
436
|
{
|
|
469
|
-
let
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
tabDoc = siblingDoc[field.name];
|
|
473
|
-
if (typeof siblingDoc[field.name] !== 'object') {
|
|
474
|
-
tabDoc = {};
|
|
475
|
-
}
|
|
476
|
-
if (typeof select?.[field.name] === 'object') {
|
|
477
|
-
tabSelect = select?.[field.name];
|
|
478
|
-
}
|
|
479
|
-
} else {
|
|
480
|
-
tabSelect = select;
|
|
437
|
+
let groupDoc = siblingDoc[field.name];
|
|
438
|
+
if (typeof siblingDoc[field.name] !== 'object') {
|
|
439
|
+
groupDoc = {};
|
|
481
440
|
}
|
|
441
|
+
const groupSelect = select?.[field.name];
|
|
482
442
|
traverseFields({
|
|
483
443
|
collection,
|
|
484
444
|
context,
|
|
@@ -499,44 +459,10 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
|
|
|
499
459
|
populationPromises,
|
|
500
460
|
req,
|
|
501
461
|
schemaPath: fieldSchemaPath,
|
|
502
|
-
select:
|
|
503
|
-
selectMode,
|
|
504
|
-
showHiddenFields,
|
|
505
|
-
siblingDoc: tabDoc,
|
|
506
|
-
triggerAccessControl,
|
|
507
|
-
triggerHooks
|
|
508
|
-
});
|
|
509
|
-
break;
|
|
510
|
-
}
|
|
511
|
-
case 'tabs':
|
|
512
|
-
{
|
|
513
|
-
traverseFields({
|
|
514
|
-
collection,
|
|
515
|
-
context,
|
|
516
|
-
currentDepth,
|
|
517
|
-
depth,
|
|
518
|
-
doc,
|
|
519
|
-
draft,
|
|
520
|
-
fallbackLocale,
|
|
521
|
-
fieldPromises,
|
|
522
|
-
fields: field.tabs.map((tab)=>({
|
|
523
|
-
...tab,
|
|
524
|
-
type: 'tab'
|
|
525
|
-
})),
|
|
526
|
-
findMany,
|
|
527
|
-
flattenLocales,
|
|
528
|
-
global,
|
|
529
|
-
locale,
|
|
530
|
-
overrideAccess,
|
|
531
|
-
path: fieldPath,
|
|
532
|
-
populate,
|
|
533
|
-
populationPromises,
|
|
534
|
-
req,
|
|
535
|
-
schemaPath: fieldSchemaPath,
|
|
536
|
-
select,
|
|
462
|
+
select: typeof groupSelect === 'object' ? groupSelect : undefined,
|
|
537
463
|
selectMode,
|
|
538
464
|
showHiddenFields,
|
|
539
|
-
siblingDoc,
|
|
465
|
+
siblingDoc: groupDoc,
|
|
540
466
|
triggerAccessControl,
|
|
541
467
|
triggerHooks
|
|
542
468
|
});
|
|
@@ -628,6 +554,84 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
|
|
|
628
554
|
}
|
|
629
555
|
break;
|
|
630
556
|
}
|
|
557
|
+
case 'tab':
|
|
558
|
+
{
|
|
559
|
+
let tabDoc = siblingDoc;
|
|
560
|
+
let tabSelect;
|
|
561
|
+
if (tabHasName(field)) {
|
|
562
|
+
tabDoc = siblingDoc[field.name];
|
|
563
|
+
if (typeof siblingDoc[field.name] !== 'object') {
|
|
564
|
+
tabDoc = {};
|
|
565
|
+
}
|
|
566
|
+
if (typeof select?.[field.name] === 'object') {
|
|
567
|
+
tabSelect = select?.[field.name];
|
|
568
|
+
}
|
|
569
|
+
} else {
|
|
570
|
+
tabSelect = select;
|
|
571
|
+
}
|
|
572
|
+
traverseFields({
|
|
573
|
+
collection,
|
|
574
|
+
context,
|
|
575
|
+
currentDepth,
|
|
576
|
+
depth,
|
|
577
|
+
doc,
|
|
578
|
+
draft,
|
|
579
|
+
fallbackLocale,
|
|
580
|
+
fieldPromises,
|
|
581
|
+
fields: field.fields,
|
|
582
|
+
findMany,
|
|
583
|
+
flattenLocales,
|
|
584
|
+
global,
|
|
585
|
+
locale,
|
|
586
|
+
overrideAccess,
|
|
587
|
+
path: fieldPath,
|
|
588
|
+
populate,
|
|
589
|
+
populationPromises,
|
|
590
|
+
req,
|
|
591
|
+
schemaPath: fieldSchemaPath,
|
|
592
|
+
select: tabSelect,
|
|
593
|
+
selectMode,
|
|
594
|
+
showHiddenFields,
|
|
595
|
+
siblingDoc: tabDoc,
|
|
596
|
+
triggerAccessControl,
|
|
597
|
+
triggerHooks
|
|
598
|
+
});
|
|
599
|
+
break;
|
|
600
|
+
}
|
|
601
|
+
case 'tabs':
|
|
602
|
+
{
|
|
603
|
+
traverseFields({
|
|
604
|
+
collection,
|
|
605
|
+
context,
|
|
606
|
+
currentDepth,
|
|
607
|
+
depth,
|
|
608
|
+
doc,
|
|
609
|
+
draft,
|
|
610
|
+
fallbackLocale,
|
|
611
|
+
fieldPromises,
|
|
612
|
+
fields: field.tabs.map((tab)=>({
|
|
613
|
+
...tab,
|
|
614
|
+
type: 'tab'
|
|
615
|
+
})),
|
|
616
|
+
findMany,
|
|
617
|
+
flattenLocales,
|
|
618
|
+
global,
|
|
619
|
+
locale,
|
|
620
|
+
overrideAccess,
|
|
621
|
+
path: fieldPath,
|
|
622
|
+
populate,
|
|
623
|
+
populationPromises,
|
|
624
|
+
req,
|
|
625
|
+
schemaPath: fieldSchemaPath,
|
|
626
|
+
select,
|
|
627
|
+
selectMode,
|
|
628
|
+
showHiddenFields,
|
|
629
|
+
siblingDoc,
|
|
630
|
+
triggerAccessControl,
|
|
631
|
+
triggerHooks
|
|
632
|
+
});
|
|
633
|
+
break;
|
|
634
|
+
}
|
|
631
635
|
default:
|
|
632
636
|
{
|
|
633
637
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext } from '../../../index.js'\nimport type {\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectMode,\n SelectType,\n} from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { fieldAffectsData, tabHasName } from '../../config/types.js'\nimport { getDefaultValue } from '../../getDefaultValue.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { relationshipPopulationPromise } from './relationshipPopulationPromise.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n currentDepth: number\n depth: number\n doc: JsonObject\n draft: boolean\n fallbackLocale: null | string\n field: Field | TabAsField\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n findMany: boolean\n flattenLocales: boolean\n global: null | SanitizedGlobalConfig\n locale: null | string\n overrideAccess: boolean\n /**\n * The parent's path.\n */\n parentPath: (number | string)[]\n /**\n * The parent's schemaPath (path without indexes).\n */\n parentSchemaPath: string[]\n populate?: PopulateType\n populationPromises: Promise<void>[]\n req: PayloadRequest\n select?: SelectType\n selectMode?: SelectMode\n showHiddenFields: boolean\n siblingDoc: JsonObject\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n}\n\n// This function is responsible for the following actions, in order:\n// - Remove hidden fields from response\n// - Flatten locales into requested locale\n// - Sanitize outgoing data (point field, etc.)\n// - Execute field hooks\n// - Execute read access control\n// - Populate relationships\n\nexport const promise = async ({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentPath,\n parentSchemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): Promise<void> => {\n const { path: fieldPath, schemaPath: fieldSchemaPath } = getFieldPaths({\n field,\n parentPath,\n parentSchemaPath,\n })\n\n if (\n fieldAffectsData(field) &&\n field.hidden &&\n typeof siblingDoc[field.name] !== 'undefined' &&\n !showHiddenFields\n ) {\n delete siblingDoc[field.name]\n }\n\n if (fieldAffectsData(field) && select && selectMode) {\n if (selectMode === 'include') {\n if (!select[field.name]) {\n delete siblingDoc[field.name]\n return\n }\n }\n\n if (selectMode === 'exclude') {\n if (select[field.name] === false) {\n delete siblingDoc[field.name]\n return\n }\n }\n }\n\n const shouldHoistLocalizedValue =\n flattenLocales &&\n fieldAffectsData(field) &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null &&\n field.localized &&\n locale !== 'all' &&\n req.payload.config.localization\n\n if (shouldHoistLocalizedValue) {\n // replace actual value with localized value before sanitizing\n // { [locale]: fields } -> fields\n const value = siblingDoc[field.name][locale]\n\n let hoistedValue = value\n\n if (fallbackLocale && fallbackLocale !== locale) {\n const fallbackValue = siblingDoc[field.name][fallbackLocale]\n const isNullOrUndefined = typeof value === 'undefined' || value === null\n\n if (fallbackValue) {\n switch (field.type) {\n case 'text':\n case 'textarea': {\n if (value === '' || isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n\n default: {\n if (isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n }\n }\n }\n\n siblingDoc[field.name] = hoistedValue\n }\n\n // Sanitize outgoing field value\n switch (field.type) {\n case 'group': {\n // Fill groups with empty objects so fields with hooks within groups can populate\n // themselves virtually as necessary\n if (typeof siblingDoc[field.name] === 'undefined') {\n siblingDoc[field.name] = {}\n }\n\n break\n }\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if (\n tabHasName(tab) &&\n (typeof siblingDoc[tab.name] === 'undefined' || siblingDoc[tab.name] === null)\n ) {\n siblingDoc[tab.name] = {}\n }\n })\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n // Rich Text fields should use afterRead hooks to do population. The previous editor.populationPromises have been renamed to editor.graphQLPopulationPromises\n break\n }\n\n case 'point': {\n const pointDoc = siblingDoc[field.name] as Record<string, unknown>\n if (Array.isArray(pointDoc?.coordinates) && pointDoc.coordinates.length === 2) {\n siblingDoc[field.name] = pointDoc.coordinates\n } else {\n siblingDoc[field.name] = undefined\n }\n\n break\n }\n\n default: {\n break\n }\n }\n\n if (fieldAffectsData(field)) {\n // Execute hooks\n if (triggerHooks && field.hooks?.afterRead) {\n await field.hooks.afterRead.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const shouldRunHookOnAllLocales =\n field.localized &&\n (locale === 'all' || !flattenLocales) &&\n typeof siblingDoc[field.name] === 'object'\n\n if (shouldRunHookOnAllLocales) {\n const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) =>\n (async () => {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n })(),\n )\n\n await Promise.all(hookPromises)\n } else {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }, Promise.resolve())\n }\n\n // Execute access control\n let allowDefaultValue = true\n if (triggerAccessControl && field.access && field.access.read) {\n const result = overrideAccess\n ? true\n : await field.access.read({\n id: doc.id as number | string,\n data: doc,\n doc,\n req,\n siblingData: siblingDoc,\n })\n\n if (!result) {\n allowDefaultValue = false\n delete siblingDoc[field.name]\n }\n }\n\n // Set defaultValue on the field for globals being returned without being first created\n // or collection documents created prior to having a default\n if (\n allowDefaultValue &&\n typeof siblingDoc[field.name] === 'undefined' &&\n typeof field.defaultValue !== 'undefined'\n ) {\n siblingDoc[field.name] = await getDefaultValue({\n defaultValue: field.defaultValue,\n locale,\n user: req.user,\n value: siblingDoc[field.name],\n })\n }\n\n if (field.type === 'relationship' || field.type === 'upload' || field.type === 'join') {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n populate,\n req,\n showHiddenFields,\n siblingDoc,\n }),\n )\n }\n }\n\n switch (field.type) {\n case 'group': {\n let groupDoc = siblingDoc[field.name] as JsonObject\n if (typeof siblingDoc[field.name] !== 'object') {\n groupDoc = {}\n }\n\n const groupSelect = select?.[field.name]\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: typeof groupSelect === 'object' ? groupSelect : undefined,\n selectMode,\n showHiddenFields,\n siblingDoc: groupDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'array': {\n const rows = siblingDoc[field.name] as JsonObject\n\n const arraySelect = select?.[field.name]\n\n if (selectMode === 'include' && typeof arraySelect === 'object') {\n arraySelect.id = true\n }\n\n if (Array.isArray(rows)) {\n rows.forEach((row, i) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingDoc[field.name]\n\n const blocksSelect = select?.[field.name]\n\n if (Array.isArray(rows)) {\n rows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n let blockSelectMode = selectMode\n\n if (typeof blocksSelect === 'object') {\n // sanitize blocks: {cta: false} to blocks: {cta: {id: true, blockType: true}}\n if (selectMode === 'exclude' && blocksSelect[block.slug] === false) {\n blockSelectMode = 'include'\n blocksSelect[block.slug] = {\n id: true,\n blockType: true,\n }\n } else if (selectMode === 'include') {\n if (!blocksSelect[block.slug]) {\n blocksSelect[block.slug] = {}\n }\n\n if (typeof blocksSelect[block.slug] === 'object') {\n blocksSelect[block.slug]['id'] = true\n blocksSelect[block.slug]['blockType'] = true\n }\n }\n }\n\n const blockSelect = blocksSelect?.[block.slug]\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n\n break\n }\n\n case 'row':\n case 'collapsible': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'tab': {\n let tabDoc = siblingDoc\n let tabSelect: SelectType | undefined\n if (tabHasName(field)) {\n tabDoc = siblingDoc[field.name] as JsonObject\n if (typeof siblingDoc[field.name] !== 'object') {\n tabDoc = {}\n }\n\n if (typeof select?.[field.name] === 'object') {\n tabSelect = select?.[field.name] as SelectType\n }\n } else {\n tabSelect = select\n }\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: tabSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: tabDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.afterRead?.length) {\n await editor.hooks.afterRead.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const shouldRunHookOnAllLocales =\n field.localized &&\n (locale === 'all' || !flattenLocales) &&\n typeof siblingDoc[field.name] === 'object'\n\n if (shouldRunHookOnAllLocales) {\n const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) =>\n (async () => {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n })(),\n )\n\n await Promise.all(hookPromises)\n } else {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }, Promise.resolve())\n }\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","fieldAffectsData","tabHasName","getDefaultValue","getFieldPaths","relationshipPopulationPromise","traverseFields","promise","collection","context","currentDepth","depth","doc","draft","fallbackLocale","field","fieldPromises","findMany","flattenLocales","global","locale","overrideAccess","parentPath","parentSchemaPath","populate","populationPromises","req","select","selectMode","showHiddenFields","siblingDoc","triggerAccessControl","triggerHooks","path","fieldPath","schemaPath","fieldSchemaPath","hidden","name","shouldHoistLocalizedValue","localized","payload","config","localization","value","hoistedValue","fallbackValue","isNullOrUndefined","type","tabs","forEach","tab","editor","Error","pointDoc","Array","isArray","coordinates","length","undefined","hooks","afterRead","reduce","priorHook","currentHook","shouldRunHookOnAllLocales","hookPromises","Object","entries","map","hookedValue","data","operation","originalDoc","siblingData","Promise","all","resolve","allowDefaultValue","access","read","result","id","defaultValue","user","push","groupDoc","groupSelect","fields","rows","arraySelect","row","i","values","localeRows","blocksSelect","block","blocks","find","blockType","slug","blockSelectMode","blockSelect","tabDoc","tabSelect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { RequestContext } from '../../../index.js'\nimport type {\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectMode,\n SelectType,\n} from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { fieldAffectsData, tabHasName } from '../../config/types.js'\nimport { getDefaultValue } from '../../getDefaultValue.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { relationshipPopulationPromise } from './relationshipPopulationPromise.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n currentDepth: number\n depth: number\n doc: JsonObject\n draft: boolean\n fallbackLocale: null | string\n field: Field | TabAsField\n fieldIndex: number\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n findMany: boolean\n flattenLocales: boolean\n global: null | SanitizedGlobalConfig\n locale: null | string\n overrideAccess: boolean\n /**\n * The parent's path.\n */\n parentPath: (number | string)[]\n /**\n * The parent's schemaPath (path without indexes).\n */\n parentSchemaPath: string[]\n populate?: PopulateType\n populationPromises: Promise<void>[]\n req: PayloadRequest\n select?: SelectType\n selectMode?: SelectMode\n showHiddenFields: boolean\n siblingDoc: JsonObject\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n}\n\n// This function is responsible for the following actions, in order:\n// - Remove hidden fields from response\n// - Flatten locales into requested locale\n// - Sanitize outgoing data (point field, etc.)\n// - Execute field hooks\n// - Execute read access control\n// - Populate relationships\n\nexport const promise = async ({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n field,\n fieldIndex,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentPath,\n parentSchemaPath,\n populate,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): Promise<void> => {\n const { path: _fieldPath, schemaPath: _fieldSchemaPath } = getFieldPaths({\n field,\n index: fieldIndex,\n parentIndexPath: '', // Doesn't matter, as unnamed fields do not affect data, and hooks are only run on fields that affect data\n parentPath: parentPath.join('.'),\n parentSchemaPath: parentSchemaPath.join('.'),\n })\n const fieldPath = _fieldPath ? _fieldPath.split('.') : []\n const fieldSchemaPath = _fieldSchemaPath ? _fieldSchemaPath.split('.') : []\n\n if (\n fieldAffectsData(field) &&\n field.hidden &&\n typeof siblingDoc[field.name] !== 'undefined' &&\n !showHiddenFields\n ) {\n delete siblingDoc[field.name]\n }\n\n if (fieldAffectsData(field) && select && selectMode) {\n if (selectMode === 'include') {\n if (!select[field.name]) {\n delete siblingDoc[field.name]\n return\n }\n }\n\n if (selectMode === 'exclude') {\n if (select[field.name] === false) {\n delete siblingDoc[field.name]\n return\n }\n }\n }\n\n const shouldHoistLocalizedValue =\n flattenLocales &&\n fieldAffectsData(field) &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null &&\n field.localized &&\n locale !== 'all' &&\n req.payload.config.localization\n\n if (shouldHoistLocalizedValue) {\n // replace actual value with localized value before sanitizing\n // { [locale]: fields } -> fields\n const value = siblingDoc[field.name][locale]\n\n let hoistedValue = value\n\n if (fallbackLocale && fallbackLocale !== locale) {\n const fallbackValue = siblingDoc[field.name][fallbackLocale]\n const isNullOrUndefined = typeof value === 'undefined' || value === null\n\n if (fallbackValue) {\n switch (field.type) {\n case 'text':\n case 'textarea': {\n if (value === '' || isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n\n default: {\n if (isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n }\n }\n }\n\n siblingDoc[field.name] = hoistedValue\n }\n\n // Sanitize outgoing field value\n switch (field.type) {\n case 'group': {\n // Fill groups with empty objects so fields with hooks within groups can populate\n // themselves virtually as necessary\n if (typeof siblingDoc[field.name] === 'undefined') {\n siblingDoc[field.name] = {}\n }\n\n break\n }\n case 'point': {\n const pointDoc = siblingDoc[field.name] as Record<string, unknown>\n if (Array.isArray(pointDoc?.coordinates) && pointDoc.coordinates.length === 2) {\n siblingDoc[field.name] = pointDoc.coordinates\n } else {\n siblingDoc[field.name] = undefined\n }\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n // Rich Text fields should use afterRead hooks to do population. The previous editor.populationPromises have been renamed to editor.graphQLPopulationPromises\n break\n }\n\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if (\n tabHasName(tab) &&\n (typeof siblingDoc[tab.name] === 'undefined' || siblingDoc[tab.name] === null)\n ) {\n siblingDoc[tab.name] = {}\n }\n })\n\n break\n }\n\n default: {\n break\n }\n }\n\n if (fieldAffectsData(field)) {\n // Execute hooks\n if (triggerHooks && field.hooks?.afterRead) {\n await field.hooks.afterRead.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const shouldRunHookOnAllLocales =\n field.localized &&\n (locale === 'all' || !flattenLocales) &&\n typeof siblingDoc[field.name] === 'object'\n\n if (shouldRunHookOnAllLocales) {\n const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) =>\n (async () => {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n })(),\n )\n\n await Promise.all(hookPromises)\n } else {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }, Promise.resolve())\n }\n\n // Execute access control\n let allowDefaultValue = true\n if (triggerAccessControl && field.access && field.access.read) {\n const result = overrideAccess\n ? true\n : await field.access.read({\n id: doc.id as number | string,\n data: doc,\n doc,\n req,\n siblingData: siblingDoc,\n })\n\n if (!result) {\n allowDefaultValue = false\n delete siblingDoc[field.name]\n }\n }\n\n // Set defaultValue on the field for globals being returned without being first created\n // or collection documents created prior to having a default\n if (\n allowDefaultValue &&\n typeof siblingDoc[field.name] === 'undefined' &&\n typeof field.defaultValue !== 'undefined'\n ) {\n siblingDoc[field.name] = await getDefaultValue({\n defaultValue: field.defaultValue,\n locale,\n user: req.user,\n value: siblingDoc[field.name],\n })\n }\n\n if (field.type === 'relationship' || field.type === 'upload' || field.type === 'join') {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n populate,\n req,\n showHiddenFields,\n siblingDoc,\n }),\n )\n }\n }\n\n switch (field.type) {\n case 'array': {\n const rows = siblingDoc[field.name] as JsonObject\n\n const arraySelect = select?.[field.name]\n\n if (selectMode === 'include' && typeof arraySelect === 'object') {\n arraySelect.id = true\n }\n\n if (Array.isArray(rows)) {\n rows.forEach((row, i) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingDoc[field.name]\n\n const blocksSelect = select?.[field.name]\n\n if (Array.isArray(rows)) {\n rows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n let blockSelectMode = selectMode\n\n if (typeof blocksSelect === 'object') {\n // sanitize blocks: {cta: false} to blocks: {cta: {id: true, blockType: true}}\n if (selectMode === 'exclude' && blocksSelect[block.slug] === false) {\n blockSelectMode = 'include'\n blocksSelect[block.slug] = {\n id: true,\n blockType: true,\n }\n } else if (selectMode === 'include') {\n if (!blocksSelect[block.slug]) {\n blocksSelect[block.slug] = {}\n }\n\n if (typeof blocksSelect[block.slug] === 'object') {\n blocksSelect[block.slug]['id'] = true\n blocksSelect[block.slug]['blockType'] = true\n }\n }\n }\n\n const blockSelect = blocksSelect?.[block.slug]\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n\n break\n }\n\n case 'collapsible':\n\n case 'row': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n case 'group': {\n let groupDoc = siblingDoc[field.name] as JsonObject\n if (typeof siblingDoc[field.name] !== 'object') {\n groupDoc = {}\n }\n\n const groupSelect = select?.[field.name]\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: typeof groupSelect === 'object' ? groupSelect : undefined,\n selectMode,\n showHiddenFields,\n siblingDoc: groupDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.afterRead?.length) {\n await editor.hooks.afterRead.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const shouldRunHookOnAllLocales =\n field.localized &&\n (locale === 'all' || !flattenLocales) &&\n typeof siblingDoc[field.name] === 'object'\n\n if (shouldRunHookOnAllLocales) {\n const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) =>\n (async () => {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n })(),\n )\n\n await Promise.all(hookPromises)\n } else {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }, Promise.resolve())\n }\n break\n }\n\n case 'tab': {\n let tabDoc = siblingDoc\n let tabSelect: SelectType | undefined\n if (tabHasName(field)) {\n tabDoc = siblingDoc[field.name] as JsonObject\n if (typeof siblingDoc[field.name] !== 'object') {\n tabDoc = {}\n }\n\n if (typeof select?.[field.name] === 'object') {\n tabSelect = select?.[field.name] as SelectType\n }\n } else {\n tabSelect = select\n }\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: tabSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: tabDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populate,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","fieldAffectsData","tabHasName","getDefaultValue","getFieldPaths","relationshipPopulationPromise","traverseFields","promise","collection","context","currentDepth","depth","doc","draft","fallbackLocale","field","fieldIndex","fieldPromises","findMany","flattenLocales","global","locale","overrideAccess","parentPath","parentSchemaPath","populate","populationPromises","req","select","selectMode","showHiddenFields","siblingDoc","triggerAccessControl","triggerHooks","path","_fieldPath","schemaPath","_fieldSchemaPath","index","parentIndexPath","join","fieldPath","split","fieldSchemaPath","hidden","name","shouldHoistLocalizedValue","localized","payload","config","localization","value","hoistedValue","fallbackValue","isNullOrUndefined","type","pointDoc","Array","isArray","coordinates","length","undefined","editor","Error","tabs","forEach","tab","hooks","afterRead","reduce","priorHook","currentHook","shouldRunHookOnAllLocales","hookPromises","Object","entries","map","hookedValue","data","operation","originalDoc","siblingData","Promise","all","resolve","allowDefaultValue","access","read","result","id","defaultValue","user","push","rows","arraySelect","row","i","fields","values","localeRows","blocksSelect","block","blocks","find","blockType","slug","blockSelectMode","blockSelect","groupDoc","groupSelect","tabDoc","tabSelect"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,UAAU,EACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,UAAU,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,0SA0BxB,IAAI,KAAG,
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,UAAU,EACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,UAAU,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,0SA0BxB,IAAI,KAAG,IAiCT,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { promise } from './promise.js';
|
|
2
2
|
export const traverseFields = ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, fieldPromises, fields, findMany, flattenLocales, global, locale, overrideAccess, path, populate, populationPromises, req, schemaPath, select, selectMode, showHiddenFields, siblingDoc, triggerAccessControl = true, triggerHooks = true })=>{
|
|
3
|
-
fields.forEach((field)=>{
|
|
3
|
+
fields.forEach((field, fieldIndex)=>{
|
|
4
4
|
fieldPromises.push(promise({
|
|
5
5
|
collection,
|
|
6
6
|
context,
|
|
@@ -10,6 +10,7 @@ export const traverseFields = ({ collection, context, currentDepth, depth, doc,
|
|
|
10
10
|
draft,
|
|
11
11
|
fallbackLocale,
|
|
12
12
|
field,
|
|
13
|
+
fieldIndex,
|
|
13
14
|
fieldPromises,
|
|
14
15
|
findMany,
|
|
15
16
|
flattenLocales,
|