payload 4.0.0-internal.5f0cd13 → 4.0.0-internal.63f8536
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/LICENSE.md +1 -1
- package/bin.js +11 -0
- package/dist/admin/RichText.d.ts +2 -2
- package/dist/admin/RichText.d.ts.map +1 -1
- package/dist/admin/RichText.js.map +1 -1
- package/dist/admin/adapters/devReload.d.ts +9 -0
- package/dist/admin/adapters/devReload.d.ts.map +1 -0
- package/dist/admin/adapters/devReload.js +6 -0
- package/dist/admin/adapters/devReload.js.map +1 -0
- package/dist/admin/adapters/index.d.ts +3 -0
- package/dist/admin/adapters/index.d.ts.map +1 -1
- package/dist/admin/adapters/index.js.map +1 -1
- package/dist/admin/adapters/render.d.ts +16 -0
- package/dist/admin/adapters/render.d.ts.map +1 -0
- package/dist/admin/adapters/render.js +7 -0
- package/dist/admin/adapters/render.js.map +1 -0
- package/dist/admin/adapters/views.d.ts +36 -0
- package/dist/admin/adapters/views.d.ts.map +1 -0
- package/dist/admin/adapters/views.js +7 -0
- package/dist/admin/adapters/views.js.map +1 -0
- package/dist/admin/fields/Row.d.ts +2 -2
- package/dist/admin/fields/Row.d.ts.map +1 -1
- package/dist/admin/fields/Row.js.map +1 -1
- package/dist/admin/forms/Description.d.ts +2 -2
- package/dist/admin/forms/Description.d.ts.map +1 -1
- package/dist/admin/forms/Description.js.map +1 -1
- package/dist/admin/forms/Field.d.ts +10 -5
- package/dist/admin/forms/Field.d.ts.map +1 -1
- package/dist/admin/forms/Field.js.map +1 -1
- package/dist/admin/functions/index.d.ts +10 -1
- package/dist/admin/functions/index.d.ts.map +1 -1
- package/dist/admin/functions/index.js.map +1 -1
- package/dist/admin/types.d.ts +3 -2
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/admin/views/dashboard.d.ts +7 -0
- package/dist/admin/views/dashboard.d.ts.map +1 -1
- package/dist/admin/views/dashboard.js.map +1 -1
- package/dist/admin/views/document.d.ts +5 -3
- package/dist/admin/views/document.d.ts.map +1 -1
- package/dist/admin/views/document.js.map +1 -1
- package/dist/admin/views/list.d.ts +5 -0
- package/dist/admin/views/list.d.ts.map +1 -1
- package/dist/admin/views/list.js.map +1 -1
- package/dist/auth/baseFields/apiKey.d.ts +10 -2
- package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
- package/dist/auth/baseFields/apiKey.js +35 -24
- package/dist/auth/baseFields/apiKey.js.map +1 -1
- package/dist/auth/defaultAccess.d.ts +1 -1
- package/dist/auth/defaultAccess.d.ts.map +1 -1
- package/dist/auth/defaultAccess.js +1 -1
- package/dist/auth/defaultAccess.js.map +1 -1
- package/dist/auth/defaultUser.d.ts.map +1 -1
- package/dist/auth/defaultUser.js +2 -1
- package/dist/auth/defaultUser.js.map +1 -1
- package/dist/auth/getAuthFields.js +2 -2
- package/dist/auth/getAuthFields.js.map +1 -1
- package/dist/auth/operations/auth.d.ts +2 -2
- package/dist/auth/operations/auth.d.ts.map +1 -1
- package/dist/auth/operations/auth.js.map +1 -1
- package/dist/auth/operations/login.d.ts +2 -1
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/me.js.map +1 -1
- package/dist/auth/operations/refresh.d.ts.map +1 -1
- package/dist/auth/operations/refresh.js +9 -3
- package/dist/auth/operations/refresh.js.map +1 -1
- package/dist/auth/operations/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/sendVerificationEmail.d.ts +2 -2
- package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
- package/dist/auth/sendVerificationEmail.js +1 -1
- package/dist/auth/sendVerificationEmail.js.map +1 -1
- package/dist/auth/sessions.d.ts +4 -5
- package/dist/auth/sessions.d.ts.map +1 -1
- package/dist/auth/sessions.js +5 -3
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/strategies/apiKey.js.map +1 -1
- package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
- package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
- package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
- package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
- package/dist/auth/types.d.ts +28 -21
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/bin/build.d.ts +25 -0
- package/dist/bin/build.d.ts.map +1 -0
- package/dist/bin/build.js +80 -0
- package/dist/bin/build.js.map +1 -0
- package/dist/bin/build.spec.js +170 -0
- package/dist/bin/build.spec.js.map +1 -0
- package/dist/bin/generateImportMap/index.d.ts.map +1 -1
- package/dist/bin/generateImportMap/index.js +8 -5
- package/dist/bin/generateImportMap/index.js.map +1 -1
- package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
- package/dist/bin/generateImportMap/iterateCollections.js +11 -0
- package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
- package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
- package/dist/bin/generateImportMap/iterateConfig.js +12 -0
- package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
- package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts +5 -1
- package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts.map +1 -1
- package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js +32 -18
- package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js.map +1 -1
- package/dist/bin/generateTypes.d.ts +3 -2
- package/dist/bin/generateTypes.d.ts.map +1 -1
- package/dist/bin/generateTypes.js +4 -0
- package/dist/bin/generateTypes.js.map +1 -1
- package/dist/bin/index.d.ts.map +1 -1
- package/dist/bin/index.js +9 -0
- package/dist/bin/index.js.map +1 -1
- package/dist/bin/loadEnv.d.ts +3 -1
- package/dist/bin/loadEnv.d.ts.map +1 -1
- package/dist/bin/loadEnv.js +40 -10
- package/dist/bin/loadEnv.js.map +1 -1
- package/dist/collections/config/client.d.ts +1 -1
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +1 -0
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/defaults.d.ts +0 -4
- package/dist/collections/config/defaults.d.ts.map +1 -1
- package/dist/collections/config/defaults.js +2 -17
- package/dist/collections/config/defaults.js.map +1 -1
- package/dist/collections/config/defaults.spec.js +47 -0
- package/dist/collections/config/defaults.spec.js.map +1 -0
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +1 -11
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/types.d.ts +11 -7
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/endpoints/create.d.ts.map +1 -1
- package/dist/collections/endpoints/create.js +0 -2
- package/dist/collections/endpoints/create.js.map +1 -1
- package/dist/collections/endpoints/updateByID.d.ts.map +1 -1
- package/dist/collections/endpoints/updateByID.js +1 -2
- package/dist/collections/endpoints/updateByID.js.map +1 -1
- package/dist/collections/operations/count.d.ts.map +1 -1
- package/dist/collections/operations/count.js +1 -0
- package/dist/collections/operations/count.js.map +1 -1
- package/dist/collections/operations/create.d.ts +0 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +15 -6
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js +3 -0
- package/dist/collections/operations/delete.js.map +1 -1
- package/dist/collections/operations/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/findDistinct.js +1 -0
- package/dist/collections/operations/findDistinct.js.map +1 -1
- package/dist/collections/operations/local/count.d.ts +3 -3
- package/dist/collections/operations/local/count.d.ts.map +1 -1
- package/dist/collections/operations/local/count.js.map +1 -1
- package/dist/collections/operations/local/countVersions.d.ts +3 -3
- package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/countVersions.js.map +1 -1
- package/dist/collections/operations/local/create.d.ts +3 -3
- package/dist/collections/operations/local/create.d.ts.map +1 -1
- package/dist/collections/operations/local/create.js.map +1 -1
- package/dist/collections/operations/local/delete.d.ts +3 -3
- package/dist/collections/operations/local/delete.d.ts.map +1 -1
- package/dist/collections/operations/local/delete.js.map +1 -1
- package/dist/collections/operations/local/duplicate.d.ts +3 -3
- package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/local/duplicate.js.map +1 -1
- package/dist/collections/operations/local/find.d.ts +3 -3
- package/dist/collections/operations/local/find.d.ts.map +1 -1
- package/dist/collections/operations/local/find.js.map +1 -1
- package/dist/collections/operations/local/findByID.d.ts +3 -3
- package/dist/collections/operations/local/findByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findByID.js.map +1 -1
- package/dist/collections/operations/local/findDistinct.d.ts +2 -2
- package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/local/findDistinct.js.map +1 -1
- package/dist/collections/operations/local/findVersionByID.d.ts +3 -3
- package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersionByID.js.map +1 -1
- package/dist/collections/operations/local/findVersions.d.ts +3 -3
- package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersions.js.map +1 -1
- package/dist/collections/operations/local/restoreVersion.d.ts +3 -3
- package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/local/restoreVersion.js.map +1 -1
- package/dist/collections/operations/local/update.d.ts +7 -11
- package/dist/collections/operations/local/update.d.ts.map +1 -1
- package/dist/collections/operations/local/update.js +1 -2
- package/dist/collections/operations/local/update.js.map +1 -1
- package/dist/collections/operations/update.d.ts +0 -1
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +8 -4
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts +0 -1
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +1 -5
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts +9 -0
- package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts.map +1 -0
- package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js +170 -0
- package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js.map +1 -0
- package/dist/collections/operations/utilities/types.d.ts +0 -9
- package/dist/collections/operations/utilities/types.d.ts.map +1 -1
- package/dist/collections/operations/utilities/types.js.map +1 -1
- package/dist/collections/operations/utilities/update.d.ts +1 -2
- package/dist/collections/operations/utilities/update.d.ts.map +1 -1
- package/dist/collections/operations/utilities/update.js +64 -65
- package/dist/collections/operations/utilities/update.js.map +1 -1
- package/dist/config/client.d.ts +2 -2
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.d.ts +0 -4
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +0 -78
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/definePlugin.d.ts +10 -10
- package/dist/config/definePlugin.d.ts.map +1 -1
- package/dist/config/definePlugin.js +7 -11
- package/dist/config/definePlugin.js.map +1 -1
- package/dist/config/orderable/index.d.ts.map +1 -1
- package/dist/config/orderable/index.js +23 -0
- package/dist/config/orderable/index.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +137 -13
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +57 -19
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -1
- package/dist/database/getLocalizedPaths.d.ts.map +1 -1
- package/dist/database/getLocalizedPaths.js +1 -1
- package/dist/database/getLocalizedPaths.js.map +1 -1
- package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
- package/dist/database/migrations/migrationsCollection.js +2 -1
- package/dist/database/migrations/migrationsCollection.js.map +1 -1
- package/dist/errors/ValidationError.d.ts +1 -0
- package/dist/errors/ValidationError.d.ts.map +1 -1
- package/dist/errors/ValidationError.js.map +1 -1
- package/dist/exports/internal.d.ts +1 -0
- package/dist/exports/internal.d.ts.map +1 -1
- package/dist/exports/internal.js +1 -0
- package/dist/exports/internal.js.map +1 -1
- package/dist/exports/migrations.d.ts +5 -13
- package/dist/exports/migrations.d.ts.map +1 -1
- package/dist/exports/migrations.js +5 -13
- package/dist/exports/migrations.js.map +1 -1
- package/dist/exports/shared.d.ts +23 -2
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +22 -1
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/baseFields/slug/countVersions.d.ts.map +1 -1
- package/dist/fields/baseFields/slug/countVersions.js +6 -8
- package/dist/fields/baseFields/slug/countVersions.js.map +1 -1
- package/dist/fields/baseFields/slug/generateSlug.d.ts +14 -7
- package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
- package/dist/fields/baseFields/slug/generateSlug.js +53 -73
- package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
- package/dist/fields/baseFields/slug/types.d.ts +14 -0
- package/dist/fields/baseFields/slug/types.d.ts.map +1 -0
- package/dist/fields/baseFields/slug/types.js +6 -0
- package/dist/fields/baseFields/slug/types.js.map +1 -0
- package/dist/fields/config/client.d.ts +3 -3
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/client.js +13 -13
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +40 -4
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/types.d.ts +49 -28
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js +1 -1
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +13 -3
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +3 -3
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.js +2 -2
- package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +11 -2
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/setDefaultBeforeDuplicate.js +1 -0
- package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
- package/dist/fields/sortableFieldTypes.d.ts.map +1 -1
- package/dist/fields/sortableFieldTypes.js +1 -0
- package/dist/fields/sortableFieldTypes.js.map +1 -1
- package/dist/fields/validations.d.ts +4 -1
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +12 -4
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/config/sanitize.d.ts.map +1 -1
- package/dist/globals/config/sanitize.js +2 -6
- package/dist/globals/config/sanitize.js.map +1 -1
- package/dist/globals/config/sanitize.spec.js +43 -0
- package/dist/globals/config/sanitize.spec.js.map +1 -0
- package/dist/globals/endpoints/update.d.ts.map +1 -1
- package/dist/globals/endpoints/update.js +0 -2
- package/dist/globals/endpoints/update.js.map +1 -1
- package/dist/globals/operations/local/countVersions.d.ts +3 -3
- package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/countVersions.js.map +1 -1
- package/dist/globals/operations/local/findOne.d.ts +3 -3
- package/dist/globals/operations/local/findOne.d.ts.map +1 -1
- package/dist/globals/operations/local/findOne.js.map +1 -1
- package/dist/globals/operations/local/findVersionByID.d.ts +3 -3
- package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersionByID.js.map +1 -1
- package/dist/globals/operations/local/findVersions.d.ts +3 -3
- package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersions.js.map +1 -1
- package/dist/globals/operations/local/restoreVersion.d.ts +3 -3
- package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/local/restoreVersion.js.map +1 -1
- package/dist/globals/operations/local/update.d.ts +7 -9
- package/dist/globals/operations/local/update.d.ts.map +1 -1
- package/dist/globals/operations/local/update.js +1 -2
- package/dist/globals/operations/local/update.js.map +1 -1
- package/dist/globals/operations/update.d.ts +0 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +52 -58
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/index.bundled.d.ts +595 -368
- package/dist/index.d.ts +71 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -37
- package/dist/index.js.map +1 -1
- package/dist/kv/adapters/DatabaseKVAdapter.d.ts.map +1 -1
- package/dist/kv/adapters/DatabaseKVAdapter.js +1 -0
- package/dist/kv/adapters/DatabaseKVAdapter.js.map +1 -1
- package/dist/locked-documents/config.d.ts.map +1 -1
- package/dist/locked-documents/config.js +2 -1
- package/dist/locked-documents/config.js.map +1 -1
- package/dist/preferences/config.d.ts.map +1 -1
- package/dist/preferences/config.js +2 -1
- package/dist/preferences/config.js.map +1 -1
- package/dist/preferences/keys.d.ts +4 -0
- package/dist/preferences/keys.d.ts.map +1 -1
- package/dist/preferences/keys.js +4 -1
- package/dist/preferences/keys.js.map +1 -1
- package/dist/preferences/types.d.ts +15 -0
- package/dist/preferences/types.d.ts.map +1 -1
- package/dist/preferences/types.js +3 -1
- package/dist/preferences/types.js.map +1 -1
- package/dist/query-presets/config.d.ts.map +1 -1
- package/dist/query-presets/config.js +75 -35
- package/dist/query-presets/config.js.map +1 -1
- package/dist/query-presets/constraints.d.ts.map +1 -1
- package/dist/query-presets/constraints.js +2 -1
- package/dist/query-presets/constraints.js.map +1 -1
- package/dist/queues/config/collection.d.ts.map +1 -1
- package/dist/queues/config/collection.js +2 -1
- package/dist/queues/config/collection.js.map +1 -1
- package/dist/queues/config/generateJobsJSONSchemas.js +2 -2
- package/dist/queues/config/generateJobsJSONSchemas.js.map +1 -1
- package/dist/queues/config/global.d.ts.map +1 -1
- package/dist/queues/config/global.js +2 -1
- package/dist/queues/config/global.js.map +1 -1
- package/dist/types/index.d.ts +8 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/generateFileData.d.ts +2 -1
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +5 -2
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/matchMimeType.d.ts +8 -0
- package/dist/uploads/matchMimeType.d.ts.map +1 -0
- package/dist/uploads/matchMimeType.js +19 -0
- package/dist/uploads/matchMimeType.js.map +1 -0
- package/dist/uploads/matchMimeType.spec.js +66 -0
- package/dist/uploads/matchMimeType.spec.js.map +1 -0
- package/dist/uploads/safeFetch.d.ts.map +1 -1
- package/dist/uploads/safeFetch.js +11 -5
- package/dist/uploads/safeFetch.js.map +1 -1
- package/dist/uploads/types.d.ts +21 -0
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
- package/dist/utilities/addDataAndFileToRequest.js +6 -0
- package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
- package/dist/utilities/appendDateTimezoneSelectFields.js +2 -2
- package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
- package/dist/utilities/configToJSONSchema.d.ts +36 -2
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +204 -84
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/configToJSONSchema.spec.js +534 -29
- package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
- package/dist/utilities/createLocalReq.d.ts +2 -2
- package/dist/utilities/createLocalReq.d.ts.map +1 -1
- package/dist/utilities/createLocalReq.js.map +1 -1
- package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequest.js +1 -0
- package/dist/utilities/createPayloadRequest.js.map +1 -1
- package/dist/utilities/deepCopyObject.d.ts.map +1 -1
- package/dist/utilities/deepCopyObject.js +8 -0
- package/dist/utilities/deepCopyObject.js.map +1 -1
- package/dist/utilities/dependencies/dependencyChecker.js +1 -1
- package/dist/utilities/dependencies/dependencyChecker.js.map +1 -1
- package/dist/utilities/dependencies/getDependencies.d.ts.map +1 -1
- package/dist/utilities/dependencies/getDependencies.js +5 -5
- package/dist/utilities/dependencies/getDependencies.js.map +1 -1
- package/dist/utilities/dynamicImport.js +1 -1
- package/dist/utilities/dynamicImport.js.map +1 -1
- package/dist/utilities/filterDataToSelectedLocales.d.ts.map +1 -1
- package/dist/utilities/filterDataToSelectedLocales.js +5 -12
- package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
- package/dist/utilities/filterDataToSelectedLocales.spec.js +1 -2
- package/dist/utilities/filterDataToSelectedLocales.spec.js.map +1 -1
- package/dist/utilities/flattenAllFields.d.ts.map +1 -1
- package/dist/utilities/flattenAllFields.js +7 -22
- package/dist/utilities/flattenAllFields.js.map +1 -1
- package/dist/utilities/formatErrors.d.ts.map +1 -1
- package/dist/utilities/formatErrors.js +3 -1
- package/dist/utilities/formatErrors.js.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js +2 -0
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts +7 -1
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.js +24 -7
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
- package/dist/utilities/getFieldByPath.d.ts.map +1 -1
- package/dist/utilities/getFieldByPath.js +1 -1
- package/dist/utilities/getFieldByPath.js.map +1 -1
- package/dist/utilities/getRequestLanguage.d.ts +2 -2
- package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
- package/dist/utilities/getRequestLanguage.js.map +1 -1
- package/dist/utilities/getVersionsConfig.js.map +1 -1
- package/dist/utilities/handleEndpoints.d.ts.map +1 -1
- package/dist/utilities/handleEndpoints.js +7 -3
- package/dist/utilities/handleEndpoints.js.map +1 -1
- package/dist/utilities/isURLAllowed.d.ts.map +1 -1
- package/dist/utilities/isURLAllowed.js +9 -3
- package/dist/utilities/isURLAllowed.js.map +1 -1
- package/dist/utilities/isURLAllowed.spec.js +78 -0
- package/dist/utilities/isURLAllowed.spec.js.map +1 -0
- package/dist/utilities/mergeLocalizedData.d.ts +14 -4
- package/dist/utilities/mergeLocalizedData.d.ts.map +1 -1
- package/dist/utilities/mergeLocalizedData.js +54 -46
- package/dist/utilities/mergeLocalizedData.js.map +1 -1
- package/dist/utilities/mergeLocalizedData.spec.js +23 -23
- package/dist/utilities/mergeLocalizedData.spec.js.map +1 -1
- package/dist/utilities/parseParams/index.d.ts +2 -5
- package/dist/utilities/parseParams/index.d.ts.map +1 -1
- package/dist/utilities/parseParams/index.js.map +1 -1
- package/dist/utilities/parseParams/index.spec.js +0 -9
- package/dist/utilities/parseParams/index.spec.js.map +1 -1
- package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
- package/dist/utilities/telemetry/events/adminInit.js +2 -3
- package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
- package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
- package/dist/utilities/telemetry/events/serverInit.js +2 -3
- package/dist/utilities/telemetry/events/serverInit.js.map +1 -1
- package/dist/utilities/telemetry/index.d.ts +14 -3
- package/dist/utilities/telemetry/index.d.ts.map +1 -1
- package/dist/utilities/telemetry/index.js +6 -1
- package/dist/utilities/telemetry/index.js.map +1 -1
- package/dist/utilities/telemetry/index.spec.js +43 -0
- package/dist/utilities/telemetry/index.spec.js.map +1 -0
- package/dist/utilities/transformColumnPreferences.js +4 -2
- package/dist/utilities/transformColumnPreferences.js.map +1 -1
- package/dist/utilities/traverseFields.d.ts.map +1 -1
- package/dist/utilities/traverseFields.js +2 -4
- package/dist/utilities/traverseFields.js.map +1 -1
- package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
- package/dist/utilities/traverseForLocalizedFields.js +3 -0
- package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
- package/dist/versions/baseFields.d.ts +1 -2
- package/dist/versions/baseFields.d.ts.map +1 -1
- package/dist/versions/baseFields.js +0 -13
- package/dist/versions/baseFields.js.map +1 -1
- package/dist/versions/buildCollectionFields.d.ts.map +1 -1
- package/dist/versions/buildCollectionFields.js +0 -2
- package/dist/versions/buildCollectionFields.js.map +1 -1
- package/dist/versions/buildGlobalFields.d.ts.map +1 -1
- package/dist/versions/buildGlobalFields.js +0 -2
- package/dist/versions/buildGlobalFields.js.map +1 -1
- package/dist/versions/buildSingleLocalePublishData.d.ts +32 -0
- package/dist/versions/buildSingleLocalePublishData.d.ts.map +1 -0
- package/dist/versions/buildSingleLocalePublishData.js +37 -0
- package/dist/versions/buildSingleLocalePublishData.js.map +1 -0
- package/dist/versions/saveVersion.d.ts +0 -2
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +12 -17
- package/dist/versions/saveVersion.js.map +1 -1
- package/dist/versions/schedule/job.d.ts.map +1 -1
- package/dist/versions/schedule/job.js +6 -10
- package/dist/versions/schedule/job.js.map +1 -1
- package/dist/versions/types.d.ts +2 -15
- package/dist/versions/types.d.ts.map +1 -1
- package/dist/versions/types.js.map +1 -1
- package/package.json +9 -6
- package/dist/database/migrations/templates/localizeStatus.d.ts +0 -10
- package/dist/database/migrations/templates/localizeStatus.d.ts.map +0 -1
- package/dist/database/migrations/templates/localizeStatus.js +0 -54
- package/dist/database/migrations/templates/localizeStatus.js.map +0 -1
- package/dist/fields/baseFields/slug/index.d.ts +0 -89
- package/dist/fields/baseFields/slug/index.d.ts.map +0 -1
- package/dist/fields/baseFields/slug/index.js +0 -81
- package/dist/fields/baseFields/slug/index.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/index.d.ts +0 -12
- package/dist/versions/migrations/localizeStatus/index.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/index.js +0 -33
- package/dist/versions/migrations/localizeStatus/index.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/down.d.ts +0 -9
- package/dist/versions/migrations/localizeStatus/mongo/down.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/down.js +0 -112
- package/dist/versions/migrations/localizeStatus/mongo/down.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/index.d.ts +0 -8
- package/dist/versions/migrations/localizeStatus/mongo/index.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/index.js +0 -8
- package/dist/versions/migrations/localizeStatus/mongo/index.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/up.d.ts +0 -9
- package/dist/versions/migrations/localizeStatus/mongo/up.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/up.js +0 -220
- package/dist/versions/migrations/localizeStatus/mongo/up.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/down.d.ts +0 -11
- package/dist/versions/migrations/localizeStatus/sql/down.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/down.js +0 -213
- package/dist/versions/migrations/localizeStatus/sql/down.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/index.d.ts +0 -8
- package/dist/versions/migrations/localizeStatus/sql/index.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/index.js +0 -8
- package/dist/versions/migrations/localizeStatus/sql/index.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts +0 -13
- package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js +0 -51
- package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts +0 -13
- package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js +0 -54
- package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/up.d.ts +0 -11
- package/dist/versions/migrations/localizeStatus/sql/up.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/up.js +0 -277
- package/dist/versions/migrations/localizeStatus/sql/up.js.map +0 -1
- package/dist/versions/saveSnapshot.d.ts +0 -18
- package/dist/versions/saveSnapshot.d.ts.map +0 -1
- package/dist/versions/saveSnapshot.js +0 -38
- package/dist/versions/saveSnapshot.js.map +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { definePlugin } from '../../config/definePlugin.js';
|
|
3
|
+
import { getInstalledPluginSlugs } from './index.js';
|
|
4
|
+
// `getInstalledPluginSlugs` is what populates `baseEvent.plugins` - the list of
|
|
5
|
+
// installed plugin slugs sent with every telemetry event.
|
|
6
|
+
const payloadWithPlugins = (plugins)=>({
|
|
7
|
+
config: {
|
|
8
|
+
plugins
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
describe('telemetry installed plugins', ()=>{
|
|
12
|
+
it('should send only first-party slugs, ignoring custom and slug-less plugins', ()=>{
|
|
13
|
+
const seoPlugin = definePlugin({
|
|
14
|
+
slug: '@payloadcms/plugin-seo',
|
|
15
|
+
plugin: ({ config })=>config
|
|
16
|
+
})();
|
|
17
|
+
const stripePlugin = definePlugin({
|
|
18
|
+
slug: '@payloadcms/plugin-stripe',
|
|
19
|
+
plugin: ({ config })=>config
|
|
20
|
+
})();
|
|
21
|
+
// A user's own plugin — its slug is author-defined and must not be sent.
|
|
22
|
+
const customPlugin = definePlugin({
|
|
23
|
+
slug: 'acme-internal-billing',
|
|
24
|
+
plugin: ({ config })=>config
|
|
25
|
+
})();
|
|
26
|
+
const legacyPlugin = (config)=>config;
|
|
27
|
+
const slugs = getInstalledPluginSlugs(payloadWithPlugins([
|
|
28
|
+
seoPlugin,
|
|
29
|
+
stripePlugin,
|
|
30
|
+
customPlugin,
|
|
31
|
+
legacyPlugin
|
|
32
|
+
]));
|
|
33
|
+
expect(slugs).toEqual([
|
|
34
|
+
'@payloadcms/plugin-seo',
|
|
35
|
+
'@payloadcms/plugin-stripe'
|
|
36
|
+
]);
|
|
37
|
+
});
|
|
38
|
+
it('should send an empty array when no first-party plugins are installed', ()=>{
|
|
39
|
+
expect(getInstalledPluginSlugs(payloadWithPlugins([]))).toEqual([]);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=index.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utilities/telemetry/index.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport type { Plugin } from '../../config/types.js'\nimport type { Payload } from '../../types/index.js'\n\nimport { definePlugin } from '../../config/definePlugin.js'\nimport { getInstalledPluginSlugs } from './index.js'\n\n// `getInstalledPluginSlugs` is what populates `baseEvent.plugins` - the list of\n// installed plugin slugs sent with every telemetry event.\nconst payloadWithPlugins = (plugins: Plugin[]): Payload =>\n ({ config: { plugins } }) as unknown as Payload\n\ndescribe('telemetry installed plugins', () => {\n it('should send only first-party slugs, ignoring custom and slug-less plugins', () => {\n const seoPlugin = definePlugin({\n slug: '@payloadcms/plugin-seo',\n plugin: ({ config }) => config,\n })()\n const stripePlugin = definePlugin({\n slug: '@payloadcms/plugin-stripe',\n plugin: ({ config }) => config,\n })()\n // A user's own plugin — its slug is author-defined and must not be sent.\n const customPlugin = definePlugin({\n slug: 'acme-internal-billing',\n plugin: ({ config }) => config,\n })()\n const legacyPlugin: Plugin = (config) => config\n\n const slugs = getInstalledPluginSlugs(\n payloadWithPlugins([seoPlugin, stripePlugin, customPlugin, legacyPlugin]),\n )\n\n expect(slugs).toEqual(['@payloadcms/plugin-seo', '@payloadcms/plugin-stripe'])\n })\n\n it('should send an empty array when no first-party plugins are installed', () => {\n expect(getInstalledPluginSlugs(payloadWithPlugins([]))).toEqual([])\n })\n})\n"],"names":["describe","expect","it","definePlugin","getInstalledPluginSlugs","payloadWithPlugins","plugins","config","seoPlugin","slug","plugin","stripePlugin","customPlugin","legacyPlugin","slugs","toEqual"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAK7C,SAASC,YAAY,QAAQ,+BAA8B;AAC3D,SAASC,uBAAuB,QAAQ,aAAY;AAEpD,gFAAgF;AAChF,0DAA0D;AAC1D,MAAMC,qBAAqB,CAACC,UACzB,CAAA;QAAEC,QAAQ;YAAED;QAAQ;IAAE,CAAA;AAEzBN,SAAS,+BAA+B;IACtCE,GAAG,6EAA6E;QAC9E,MAAMM,YAAYL,aAAa;YAC7BM,MAAM;YACNC,QAAQ,CAAC,EAAEH,MAAM,EAAE,GAAKA;QAC1B;QACA,MAAMI,eAAeR,aAAa;YAChCM,MAAM;YACNC,QAAQ,CAAC,EAAEH,MAAM,EAAE,GAAKA;QAC1B;QACA,yEAAyE;QACzE,MAAMK,eAAeT,aAAa;YAChCM,MAAM;YACNC,QAAQ,CAAC,EAAEH,MAAM,EAAE,GAAKA;QAC1B;QACA,MAAMM,eAAuB,CAACN,SAAWA;QAEzC,MAAMO,QAAQV,wBACZC,mBAAmB;YAACG;YAAWG;YAAcC;YAAcC;SAAa;QAG1EZ,OAAOa,OAAOC,OAAO,CAAC;YAAC;YAA0B;SAA4B;IAC/E;IAEAb,GAAG,wEAAwE;QACzED,OAAOG,wBAAwBC,mBAAmB,EAAE,IAAIU,OAAO,CAAC,EAAE;IACpE;AACF"}
|
|
@@ -13,8 +13,10 @@
|
|
|
13
13
|
if (typeof columns === 'string') {
|
|
14
14
|
try {
|
|
15
15
|
columnsToTransform = JSON.parse(columns);
|
|
16
|
-
} catch
|
|
17
|
-
|
|
16
|
+
} catch {
|
|
17
|
+
columnsToTransform = columns.includes(',') ? columns.split(',') : [
|
|
18
|
+
columns
|
|
19
|
+
];
|
|
18
20
|
}
|
|
19
21
|
}
|
|
20
22
|
if (columnsToTransform && Array.isArray(columnsToTransform)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/transformColumnPreferences.ts"],"sourcesContent":["import type { Column } from '../admin/types.js'\nimport type { ColumnPreference } from '../preferences/types.js'\n\nexport type ColumnsFromURL = string[]\n\n/**\n * Transforms various forms of columns into `ColumnPreference[]` which is what is stored in the user's preferences table\n * In React state, for example, columns are stored in in their entirety, including React components: `[{ accessor: 'title', active: true, Label: React.ReactNode, ... }]`\n * In the URL, they are stored as an array of strings: `['title', '-slug']`, where the `-` prefix is used to indicate that the column is inactive\n * However in the database, columns must be in this exact shape: `[{ accessor: 'title', active: true }, { accessor: 'slug', active: false }]`\n * This means that when handling columns, they need to be consistently transformed back and forth\n */\nexport const transformColumnsToPreferences = (\n columns: Column[] | ColumnPreference[] | ColumnsFromURL | string | undefined,\n): ColumnPreference[] | undefined => {\n if (!columns) {\n return undefined\n }\n\n let columnsToTransform = columns\n\n // Columns that originate from the URL are a stringified JSON array and need to be parsed first\n if (typeof columns === 'string') {\n try {\n columnsToTransform = JSON.parse(columns)\n } catch
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/transformColumnPreferences.ts"],"sourcesContent":["import type { Column } from '../admin/types.js'\nimport type { ColumnPreference } from '../preferences/types.js'\n\nexport type ColumnsFromURL = string[]\n\n/**\n * Transforms various forms of columns into `ColumnPreference[]` which is what is stored in the user's preferences table\n * In React state, for example, columns are stored in in their entirety, including React components: `[{ accessor: 'title', active: true, Label: React.ReactNode, ... }]`\n * In the URL, they are stored as an array of strings: `['title', '-slug']`, where the `-` prefix is used to indicate that the column is inactive\n * However in the database, columns must be in this exact shape: `[{ accessor: 'title', active: true }, { accessor: 'slug', active: false }]`\n * This means that when handling columns, they need to be consistently transformed back and forth\n */\nexport const transformColumnsToPreferences = (\n columns: Column[] | ColumnPreference[] | ColumnsFromURL | string | undefined,\n): ColumnPreference[] | undefined => {\n if (!columns) {\n return undefined\n }\n\n let columnsToTransform = columns\n\n // Columns that originate from the URL are a stringified JSON array and need to be parsed first\n if (typeof columns === 'string') {\n try {\n columnsToTransform = JSON.parse(columns)\n } catch {\n columnsToTransform = columns.includes(',') ? columns.split(',') : [columns]\n }\n }\n\n if (columnsToTransform && Array.isArray(columnsToTransform)) {\n return columnsToTransform.map((col) => {\n if (typeof col === 'string') {\n const active = col[0] !== '-'\n return { accessor: active ? col : col.slice(1), active }\n }\n\n return { accessor: col.accessor, active: col.active }\n })\n }\n}\n\n/**\n * Does the opposite of `transformColumnsToPreferences`, where `ColumnPreference[]` and `Column[]` are transformed into `ColumnsFromURL`\n * This is useful for storing the columns in the URL, where it appears as a simple comma delimited array of strings\n * The `-` prefix is used to indicate that the column is inactive\n */\nexport const transformColumnsToSearchParams = (\n columns: Column[] | ColumnPreference[],\n): ColumnsFromURL => {\n return columns?.map((col) => (col.active ? col.accessor : `-${col.accessor}`))\n}\n"],"names":["transformColumnsToPreferences","columns","undefined","columnsToTransform","JSON","parse","includes","split","Array","isArray","map","col","active","accessor","slice","transformColumnsToSearchParams"],"mappings":"AAKA;;;;;;CAMC,GACD,OAAO,MAAMA,gCAAgC,CAC3CC;IAEA,IAAI,CAACA,SAAS;QACZ,OAAOC;IACT;IAEA,IAAIC,qBAAqBF;IAEzB,+FAA+F;IAC/F,IAAI,OAAOA,YAAY,UAAU;QAC/B,IAAI;YACFE,qBAAqBC,KAAKC,KAAK,CAACJ;QAClC,EAAE,OAAM;YACNE,qBAAqBF,QAAQK,QAAQ,CAAC,OAAOL,QAAQM,KAAK,CAAC,OAAO;gBAACN;aAAQ;QAC7E;IACF;IAEA,IAAIE,sBAAsBK,MAAMC,OAAO,CAACN,qBAAqB;QAC3D,OAAOA,mBAAmBO,GAAG,CAAC,CAACC;YAC7B,IAAI,OAAOA,QAAQ,UAAU;gBAC3B,MAAMC,SAASD,GAAG,CAAC,EAAE,KAAK;gBAC1B,OAAO;oBAAEE,UAAUD,SAASD,MAAMA,IAAIG,KAAK,CAAC;oBAAIF;gBAAO;YACzD;YAEA,OAAO;gBAAEC,UAAUF,IAAIE,QAAQ;gBAAED,QAAQD,IAAIC,MAAM;YAAC;QACtD;IACF;AACF,EAAC;AAED;;;;CAIC,GACD,OAAO,MAAMG,iCAAiC,CAC5Cd;IAEA,OAAOA,SAASS,IAAI,CAACC,MAASA,IAAIC,MAAM,GAAGD,IAAIE,QAAQ,GAAG,CAAC,CAAC,EAAEF,IAAIE,QAAQ,EAAE;AAC9E,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/utilities/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,KAAK,EAAkC,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/utilities/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,KAAK,EAAkC,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAiGlG,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE;IAC1C;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;IACjB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IAC7C;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;CACxC,KAAK,OAAO,GAAG,IAAI,CAAA;AAEpB,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,sBAAsB,CAAA;IAChC,aAAa,CAAC,EAAE,CAAC,MAAM,UAAU,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAA;IAC5D,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,CAAA;IACjC,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;CACxC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAI,iJAY5B,kBAAkB,KAAG,IA0WvB,CAAA"}
|
|
@@ -15,8 +15,7 @@ const traverseArrayOrBlocksField = ({ callback, callbackStack, config, data, fie
|
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
17
|
if (field.type === 'blocks') {
|
|
18
|
-
for (const _block of field.
|
|
19
|
-
// TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks
|
|
18
|
+
for (const _block of field.blocks){
|
|
20
19
|
const block = typeof _block === 'string' ? config?.blocks?.find((b)=>b.slug === _block) : _block;
|
|
21
20
|
if (block) {
|
|
22
21
|
traverseFields({
|
|
@@ -38,8 +37,7 @@ const traverseArrayOrBlocksField = ({ callback, callbackStack, config, data, fie
|
|
|
38
37
|
for (const ref of data){
|
|
39
38
|
let fields;
|
|
40
39
|
if (field.type === 'blocks' && typeof ref?.blockType === 'string') {
|
|
41
|
-
|
|
42
|
-
const block = field.blockReferences ? config?.blocks?.find((b)=>b.slug === ref.blockType) ?? field.blockReferences.find((b)=>typeof b !== 'string' && b.slug === ref.blockType) : field.blocks.find((b)=>b.slug === ref.blockType);
|
|
40
|
+
const block = config?.blocks?.find((b)=>b.slug === ref.blockType) ?? field.blocks.find((b)=>typeof b !== 'string' && b.slug === ref.blockType);
|
|
43
41
|
fields = block?.fields;
|
|
44
42
|
} else if (field.type === 'array') {
|
|
45
43
|
fields = field.fields;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/traverseFields.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../config/types.js'\nimport type { ArrayField, Block, BlocksField, Field, TabAsField } from '../fields/config/types.js'\n\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldShouldBeLocalized,\n tabHasName,\n} from '../fields/config/types.js'\n\nconst traverseArrayOrBlocksField = ({\n callback,\n callbackStack,\n config,\n data,\n field,\n fillEmpty,\n leavesFirst,\n parentIsLocalized,\n parentPath,\n parentRef,\n}: {\n callback: TraverseFieldsCallback\n callbackStack: (() => ReturnType<TraverseFieldsCallback>)[]\n config?: Config | SanitizedConfig\n data: Record<string, unknown>[]\n field: ArrayField | BlocksField\n fillEmpty: boolean\n leavesFirst: boolean\n parentIsLocalized: boolean\n parentPath: string\n parentRef?: unknown\n}) => {\n if (fillEmpty) {\n if (field.type === 'array') {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: field.fields,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: `${parentPath}${field.name}.`,\n parentRef,\n })\n }\n if (field.type === 'blocks') {\n for (const _block of field.blockReferences ?? field.blocks) {\n // TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks\n const block =\n typeof _block === 'string' ? config?.blocks?.find((b) => b.slug === _block) : _block\n if (block) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: block.fields,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: `${parentPath}${field.name}.`,\n parentRef,\n })\n }\n }\n }\n return\n }\n for (const ref of data) {\n let fields!: Field[]\n if (field.type === 'blocks' && typeof ref?.blockType === 'string') {\n // TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks\n const block = field.blockReferences\n ? ((config?.blocks?.find((b) => b.slug === ref.blockType) ??\n field.blockReferences.find(\n (b) => typeof b !== 'string' && b.slug === ref.blockType,\n )) as Block)\n : field.blocks.find((b) => b.slug === ref.blockType)\n\n fields = block?.fields as Field[]\n } else if (field.type === 'array') {\n fields = field.fields\n }\n\n if (fields) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: `${parentPath}${field.name}.`,\n parentRef,\n ref,\n })\n }\n }\n}\n\nexport type TraverseFieldsCallback = (args: {\n /**\n * The current field\n */\n field: Field | TabAsField\n /**\n * Function that when called will skip the current field and continue to the next\n */\n next?: () => void\n parentIsLocalized: boolean\n parentPath: string\n /**\n * The parent reference object\n */\n parentRef?: Record<string, unknown> | unknown\n /**\n * The current reference object\n */\n ref?: Record<string, unknown> | unknown\n}) => boolean | void\n\ntype TraverseFieldsArgs = {\n callback: TraverseFieldsCallback\n callbackStack?: (() => ReturnType<TraverseFieldsCallback>)[]\n config?: Config | SanitizedConfig\n fields: (Field | TabAsField)[]\n fillEmpty?: boolean\n isTopLevel?: boolean\n /**\n * @default false\n *\n * if this is `true`, the callback functions of the leaf fields will be called before the parent fields.\n * The return value of the callback function will be ignored.\n */\n leavesFirst?: boolean\n parentIsLocalized?: boolean\n parentPath?: string\n parentRef?: Record<string, unknown> | unknown\n ref?: Record<string, unknown> | unknown\n}\n\n/**\n * Iterate a recurse an array of fields, calling a callback for each field\n *\n * @param fields\n * @param callback callback called for each field, discontinue looping if callback returns truthy\n * @param fillEmpty fill empty properties to use this without data\n * @param ref the data or any artifacts assigned in the callback during field recursion\n * @param parentRef the data or any artifacts assigned in the callback during field recursion one level up\n */\nexport const traverseFields = ({\n callback,\n callbackStack: _callbackStack = [],\n config,\n fields,\n fillEmpty = true,\n isTopLevel = true,\n leavesFirst = false,\n parentIsLocalized,\n parentPath = '',\n parentRef = {},\n ref = {},\n}: TraverseFieldsArgs): void => {\n const fieldsMatched = fields.some((field) => {\n let callbackStack: (() => ReturnType<TraverseFieldsCallback>)[] = []\n if (!isTopLevel) {\n callbackStack = _callbackStack\n }\n let skip = false\n const next = () => {\n skip = true\n }\n\n if (!ref || typeof ref !== 'object') {\n return\n }\n\n if (\n !leavesFirst &&\n callback &&\n callback({ field, next, parentIsLocalized: parentIsLocalized!, parentPath, parentRef, ref })\n ) {\n return true\n } else if (leavesFirst) {\n callbackStack.push(() =>\n callback({\n field,\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef,\n ref,\n }),\n )\n }\n\n if (skip) {\n return false\n }\n\n // avoid mutation of ref for all fields\n let currentRef = ref\n let currentParentRef = parentRef\n\n if (field.type === 'tabs' && 'tabs' in field) {\n for (const tab of field.tabs) {\n let tabRef = ref\n\n if (skip) {\n return false\n }\n\n if ('name' in tab && tab.name) {\n if (\n !ref[tab.name as keyof typeof ref] ||\n typeof ref[tab.name as keyof typeof ref] !== 'object'\n ) {\n if (fillEmpty) {\n if (tab.localized) {\n ;(ref as Record<string, any>)[tab.name] = { en: {} }\n } else {\n ;(ref as Record<string, any>)[tab.name] = {}\n }\n } else {\n continue\n }\n }\n\n if (\n callback &&\n !leavesFirst &&\n callback({\n field: { ...tab, type: 'tab' },\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n })\n ) {\n return true\n } else if (leavesFirst) {\n callbackStack.push(() =>\n callback({\n field: { ...tab, type: 'tab' },\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n }),\n )\n }\n\n tabRef = tabRef[tab.name as keyof typeof tabRef]\n\n if (tab.localized) {\n for (const key in tabRef as Record<string, unknown>) {\n if (\n tabRef[key as keyof typeof tabRef] &&\n typeof tabRef[key as keyof typeof tabRef] === 'object'\n ) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: tab.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: true,\n parentPath: `${parentPath}${tab.name}.`,\n parentRef: currentParentRef,\n ref: tabRef[key as keyof typeof tabRef],\n })\n }\n }\n }\n } else {\n if (\n callback &&\n !leavesFirst &&\n callback({\n field: { ...tab, type: 'tab' },\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n })\n ) {\n return true\n } else if (leavesFirst) {\n callbackStack.push(() =>\n callback({\n field: { ...tab, type: 'tab' },\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n }),\n )\n }\n }\n\n if (!tab.localized) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: tab.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: false,\n parentPath: tabHasName(tab) ? `${parentPath}${tab.name}.` : parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n })\n }\n\n if (skip) {\n return false\n }\n }\n\n return\n }\n\n if (field.type === 'tab' || fieldHasSubFields(field) || field.type === 'blocks') {\n if ('name' in field && field.name) {\n currentParentRef = currentRef\n if (!ref[field.name as keyof typeof ref]) {\n if (fillEmpty) {\n if (field.type === 'group' || field.type === 'tab') {\n if (fieldShouldBeLocalized({ field, parentIsLocalized: parentIsLocalized! })) {\n ;(ref as Record<string, any>)[field.name] = { en: {} }\n } else {\n ;(ref as Record<string, any>)[field.name] = {}\n }\n } else if (field.type === 'array' || field.type === 'blocks') {\n if (fieldShouldBeLocalized({ field, parentIsLocalized: parentIsLocalized! })) {\n ;(ref as Record<string, any>)[field.name] = { en: [] }\n } else {\n ;(ref as Record<string, any>)[field.name] = []\n }\n }\n } else {\n return\n }\n }\n currentRef = ref[field.name as keyof typeof ref]\n }\n\n if (\n (field.type === 'tab' || field.type === 'group') &&\n fieldShouldBeLocalized({ field, parentIsLocalized: parentIsLocalized! }) &&\n currentRef &&\n typeof currentRef === 'object'\n ) {\n if (fieldAffectsData(field)) {\n for (const key in currentRef as Record<string, unknown>) {\n if (currentRef[key as keyof typeof currentRef]) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: field.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: true,\n parentPath: field.name ? `${parentPath}${field.name}.` : parentPath,\n parentRef: currentParentRef,\n ref: currentRef[key as keyof typeof currentRef],\n })\n }\n }\n } else {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: field.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized,\n parentRef: currentParentRef,\n ref: currentRef,\n })\n }\n\n return\n }\n\n if (\n (field.type === 'blocks' || field.type === 'array') &&\n currentRef &&\n typeof currentRef === 'object'\n ) {\n // TODO: `?? field.localized ?? false` shouldn't be necessary, but right now it\n // is so that all fields are correctly traversed in copyToLocale and\n // therefore pass the localization integration tests.\n // I tried replacing the `!parentIsLocalized` condition with `parentIsLocalized === false`\n // in `fieldShouldBeLocalized`, but several tests failed. We must be calling it with incorrect\n // parameters somewhere.\n if (\n fieldShouldBeLocalized({\n field,\n parentIsLocalized: parentIsLocalized ?? false,\n })\n ) {\n if (Array.isArray(currentRef)) {\n traverseArrayOrBlocksField({\n callback,\n callbackStack,\n config,\n data: currentRef,\n field,\n fillEmpty,\n leavesFirst,\n parentIsLocalized: true,\n parentPath,\n parentRef: currentParentRef,\n })\n } else {\n for (const key in currentRef as Record<string, unknown>) {\n const localeData = currentRef[key as keyof typeof currentRef]\n if (!Array.isArray(localeData)) {\n continue\n }\n\n traverseArrayOrBlocksField({\n callback,\n callbackStack,\n config,\n data: localeData,\n field,\n fillEmpty,\n leavesFirst,\n parentIsLocalized: true,\n parentPath,\n parentRef: currentParentRef,\n })\n }\n }\n } else if (Array.isArray(currentRef)) {\n traverseArrayOrBlocksField({\n callback,\n callbackStack,\n config,\n data: currentRef as Record<string, unknown>[],\n field,\n fillEmpty,\n leavesFirst,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n })\n }\n } else if (currentRef && typeof currentRef === 'object' && 'fields' in field) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: field.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized,\n parentPath: 'name' in field && field.name ? `${parentPath}${field.name}.` : parentPath,\n parentRef: currentParentRef,\n ref: currentRef,\n })\n }\n }\n\n if (isTopLevel) {\n callbackStack.reverse().forEach((cb) => {\n cb()\n })\n }\n })\n\n // Fallback: Handle dot-notation paths when no fields matched\n if (!fieldsMatched && ref && typeof ref === 'object') {\n Object.keys(ref).forEach((key) => {\n if (key.includes('.')) {\n // Split on first dot only\n const firstDotIndex = key.indexOf('.')\n const fieldName = key.substring(0, firstDotIndex)\n const remainingPath = key.substring(firstDotIndex + 1)\n\n // Create nested structure for this field\n if (!ref[fieldName as keyof typeof ref]) {\n ;(ref as Record<string, unknown>)[fieldName] = {}\n }\n\n const nestedRef = ref[fieldName as keyof typeof ref] as Record<string, unknown>\n\n // Move the value to the nested structure\n nestedRef[remainingPath] = (ref as Record<string, unknown>)[key]\n delete (ref as Record<string, unknown>)[key]\n\n // Recursively process the newly created nested structure\n // The field traversal will naturally handle it if the field exists in the schema\n traverseFields({\n callback,\n callbackStack: _callbackStack,\n config,\n fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized,\n parentPath,\n parentRef,\n ref,\n })\n }\n })\n }\n}\n"],"names":["fieldAffectsData","fieldHasSubFields","fieldShouldBeLocalized","tabHasName","traverseArrayOrBlocksField","callback","callbackStack","config","data","field","fillEmpty","leavesFirst","parentIsLocalized","parentPath","parentRef","type","traverseFields","fields","isTopLevel","localized","name","_block","blockReferences","blocks","block","find","b","slug","ref","blockType","_callbackStack","fieldsMatched","some","skip","next","push","currentRef","currentParentRef","tab","tabs","tabRef","en","key","Array","isArray","localeData","reverse","forEach","cb","Object","keys","includes","firstDotIndex","indexOf","fieldName","substring","remainingPath","nestedRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/traverseFields.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../config/types.js'\nimport type { ArrayField, Block, BlocksField, Field, TabAsField } from '../fields/config/types.js'\n\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldShouldBeLocalized,\n tabHasName,\n} from '../fields/config/types.js'\n\nconst traverseArrayOrBlocksField = ({\n callback,\n callbackStack,\n config,\n data,\n field,\n fillEmpty,\n leavesFirst,\n parentIsLocalized,\n parentPath,\n parentRef,\n}: {\n callback: TraverseFieldsCallback\n callbackStack: (() => ReturnType<TraverseFieldsCallback>)[]\n config?: Config | SanitizedConfig\n data: Record<string, unknown>[]\n field: ArrayField | BlocksField\n fillEmpty: boolean\n leavesFirst: boolean\n parentIsLocalized: boolean\n parentPath: string\n parentRef?: unknown\n}) => {\n if (fillEmpty) {\n if (field.type === 'array') {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: field.fields,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: `${parentPath}${field.name}.`,\n parentRef,\n })\n }\n if (field.type === 'blocks') {\n for (const _block of field.blocks) {\n const block =\n typeof _block === 'string' ? config?.blocks?.find((b) => b.slug === _block) : _block\n if (block) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: block.fields,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: `${parentPath}${field.name}.`,\n parentRef,\n })\n }\n }\n }\n return\n }\n for (const ref of data) {\n let fields!: Field[]\n if (field.type === 'blocks' && typeof ref?.blockType === 'string') {\n const block =\n config?.blocks?.find((b) => b.slug === ref.blockType) ??\n field.blocks.find((b): b is Block => typeof b !== 'string' && b.slug === ref.blockType)\n\n fields = block?.fields as Field[]\n } else if (field.type === 'array') {\n fields = field.fields\n }\n\n if (fields) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: `${parentPath}${field.name}.`,\n parentRef,\n ref,\n })\n }\n }\n}\n\nexport type TraverseFieldsCallback = (args: {\n /**\n * The current field\n */\n field: Field | TabAsField\n /**\n * Function that when called will skip the current field and continue to the next\n */\n next?: () => void\n parentIsLocalized: boolean\n parentPath: string\n /**\n * The parent reference object\n */\n parentRef?: Record<string, unknown> | unknown\n /**\n * The current reference object\n */\n ref?: Record<string, unknown> | unknown\n}) => boolean | void\n\ntype TraverseFieldsArgs = {\n callback: TraverseFieldsCallback\n callbackStack?: (() => ReturnType<TraverseFieldsCallback>)[]\n config?: Config | SanitizedConfig\n fields: (Field | TabAsField)[]\n fillEmpty?: boolean\n isTopLevel?: boolean\n /**\n * @default false\n *\n * if this is `true`, the callback functions of the leaf fields will be called before the parent fields.\n * The return value of the callback function will be ignored.\n */\n leavesFirst?: boolean\n parentIsLocalized?: boolean\n parentPath?: string\n parentRef?: Record<string, unknown> | unknown\n ref?: Record<string, unknown> | unknown\n}\n\n/**\n * Iterate a recurse an array of fields, calling a callback for each field\n *\n * @param fields\n * @param callback callback called for each field, discontinue looping if callback returns truthy\n * @param fillEmpty fill empty properties to use this without data\n * @param ref the data or any artifacts assigned in the callback during field recursion\n * @param parentRef the data or any artifacts assigned in the callback during field recursion one level up\n */\nexport const traverseFields = ({\n callback,\n callbackStack: _callbackStack = [],\n config,\n fields,\n fillEmpty = true,\n isTopLevel = true,\n leavesFirst = false,\n parentIsLocalized,\n parentPath = '',\n parentRef = {},\n ref = {},\n}: TraverseFieldsArgs): void => {\n const fieldsMatched = fields.some((field) => {\n let callbackStack: (() => ReturnType<TraverseFieldsCallback>)[] = []\n if (!isTopLevel) {\n callbackStack = _callbackStack\n }\n let skip = false\n const next = () => {\n skip = true\n }\n\n if (!ref || typeof ref !== 'object') {\n return\n }\n\n if (\n !leavesFirst &&\n callback &&\n callback({ field, next, parentIsLocalized: parentIsLocalized!, parentPath, parentRef, ref })\n ) {\n return true\n } else if (leavesFirst) {\n callbackStack.push(() =>\n callback({\n field,\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef,\n ref,\n }),\n )\n }\n\n if (skip) {\n return false\n }\n\n // avoid mutation of ref for all fields\n let currentRef = ref\n let currentParentRef = parentRef\n\n if (field.type === 'tabs' && 'tabs' in field) {\n for (const tab of field.tabs) {\n let tabRef = ref\n\n if (skip) {\n return false\n }\n\n if ('name' in tab && tab.name) {\n if (\n !ref[tab.name as keyof typeof ref] ||\n typeof ref[tab.name as keyof typeof ref] !== 'object'\n ) {\n if (fillEmpty) {\n if (tab.localized) {\n ;(ref as Record<string, any>)[tab.name] = { en: {} }\n } else {\n ;(ref as Record<string, any>)[tab.name] = {}\n }\n } else {\n continue\n }\n }\n\n if (\n callback &&\n !leavesFirst &&\n callback({\n field: { ...tab, type: 'tab' },\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n })\n ) {\n return true\n } else if (leavesFirst) {\n callbackStack.push(() =>\n callback({\n field: { ...tab, type: 'tab' },\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n }),\n )\n }\n\n tabRef = tabRef[tab.name as keyof typeof tabRef]\n\n if (tab.localized) {\n for (const key in tabRef as Record<string, unknown>) {\n if (\n tabRef[key as keyof typeof tabRef] &&\n typeof tabRef[key as keyof typeof tabRef] === 'object'\n ) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: tab.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: true,\n parentPath: `${parentPath}${tab.name}.`,\n parentRef: currentParentRef,\n ref: tabRef[key as keyof typeof tabRef],\n })\n }\n }\n }\n } else {\n if (\n callback &&\n !leavesFirst &&\n callback({\n field: { ...tab, type: 'tab' },\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n })\n ) {\n return true\n } else if (leavesFirst) {\n callbackStack.push(() =>\n callback({\n field: { ...tab, type: 'tab' },\n next,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n }),\n )\n }\n }\n\n if (!tab.localized) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: tab.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: false,\n parentPath: tabHasName(tab) ? `${parentPath}${tab.name}.` : parentPath,\n parentRef: currentParentRef,\n ref: tabRef,\n })\n }\n\n if (skip) {\n return false\n }\n }\n\n return\n }\n\n if (field.type === 'tab' || fieldHasSubFields(field) || field.type === 'blocks') {\n if ('name' in field && field.name) {\n currentParentRef = currentRef\n if (!ref[field.name as keyof typeof ref]) {\n if (fillEmpty) {\n if (field.type === 'group' || field.type === 'tab') {\n if (fieldShouldBeLocalized({ field, parentIsLocalized: parentIsLocalized! })) {\n ;(ref as Record<string, any>)[field.name] = { en: {} }\n } else {\n ;(ref as Record<string, any>)[field.name] = {}\n }\n } else if (field.type === 'array' || field.type === 'blocks') {\n if (fieldShouldBeLocalized({ field, parentIsLocalized: parentIsLocalized! })) {\n ;(ref as Record<string, any>)[field.name] = { en: [] }\n } else {\n ;(ref as Record<string, any>)[field.name] = []\n }\n }\n } else {\n return\n }\n }\n currentRef = ref[field.name as keyof typeof ref]\n }\n\n if (\n (field.type === 'tab' || field.type === 'group') &&\n fieldShouldBeLocalized({ field, parentIsLocalized: parentIsLocalized! }) &&\n currentRef &&\n typeof currentRef === 'object'\n ) {\n if (fieldAffectsData(field)) {\n for (const key in currentRef as Record<string, unknown>) {\n if (currentRef[key as keyof typeof currentRef]) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: field.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized: true,\n parentPath: field.name ? `${parentPath}${field.name}.` : parentPath,\n parentRef: currentParentRef,\n ref: currentRef[key as keyof typeof currentRef],\n })\n }\n }\n } else {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: field.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized,\n parentRef: currentParentRef,\n ref: currentRef,\n })\n }\n\n return\n }\n\n if (\n (field.type === 'blocks' || field.type === 'array') &&\n currentRef &&\n typeof currentRef === 'object'\n ) {\n // TODO: `?? field.localized ?? false` shouldn't be necessary, but right now it\n // is so that all fields are correctly traversed in copyToLocale and\n // therefore pass the localization integration tests.\n // I tried replacing the `!parentIsLocalized` condition with `parentIsLocalized === false`\n // in `fieldShouldBeLocalized`, but several tests failed. We must be calling it with incorrect\n // parameters somewhere.\n if (\n fieldShouldBeLocalized({\n field,\n parentIsLocalized: parentIsLocalized ?? false,\n })\n ) {\n if (Array.isArray(currentRef)) {\n traverseArrayOrBlocksField({\n callback,\n callbackStack,\n config,\n data: currentRef,\n field,\n fillEmpty,\n leavesFirst,\n parentIsLocalized: true,\n parentPath,\n parentRef: currentParentRef,\n })\n } else {\n for (const key in currentRef as Record<string, unknown>) {\n const localeData = currentRef[key as keyof typeof currentRef]\n if (!Array.isArray(localeData)) {\n continue\n }\n\n traverseArrayOrBlocksField({\n callback,\n callbackStack,\n config,\n data: localeData,\n field,\n fillEmpty,\n leavesFirst,\n parentIsLocalized: true,\n parentPath,\n parentRef: currentParentRef,\n })\n }\n }\n } else if (Array.isArray(currentRef)) {\n traverseArrayOrBlocksField({\n callback,\n callbackStack,\n config,\n data: currentRef as Record<string, unknown>[],\n field,\n fillEmpty,\n leavesFirst,\n parentIsLocalized: parentIsLocalized!,\n parentPath,\n parentRef: currentParentRef,\n })\n }\n } else if (currentRef && typeof currentRef === 'object' && 'fields' in field) {\n traverseFields({\n callback,\n callbackStack,\n config,\n fields: field.fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized,\n parentPath: 'name' in field && field.name ? `${parentPath}${field.name}.` : parentPath,\n parentRef: currentParentRef,\n ref: currentRef,\n })\n }\n }\n\n if (isTopLevel) {\n callbackStack.reverse().forEach((cb) => {\n cb()\n })\n }\n })\n\n // Fallback: Handle dot-notation paths when no fields matched\n if (!fieldsMatched && ref && typeof ref === 'object') {\n Object.keys(ref).forEach((key) => {\n if (key.includes('.')) {\n // Split on first dot only\n const firstDotIndex = key.indexOf('.')\n const fieldName = key.substring(0, firstDotIndex)\n const remainingPath = key.substring(firstDotIndex + 1)\n\n // Create nested structure for this field\n if (!ref[fieldName as keyof typeof ref]) {\n ;(ref as Record<string, unknown>)[fieldName] = {}\n }\n\n const nestedRef = ref[fieldName as keyof typeof ref] as Record<string, unknown>\n\n // Move the value to the nested structure\n nestedRef[remainingPath] = (ref as Record<string, unknown>)[key]\n delete (ref as Record<string, unknown>)[key]\n\n // Recursively process the newly created nested structure\n // The field traversal will naturally handle it if the field exists in the schema\n traverseFields({\n callback,\n callbackStack: _callbackStack,\n config,\n fields,\n fillEmpty,\n isTopLevel: false,\n leavesFirst,\n parentIsLocalized,\n parentPath,\n parentRef,\n ref,\n })\n }\n })\n }\n}\n"],"names":["fieldAffectsData","fieldHasSubFields","fieldShouldBeLocalized","tabHasName","traverseArrayOrBlocksField","callback","callbackStack","config","data","field","fillEmpty","leavesFirst","parentIsLocalized","parentPath","parentRef","type","traverseFields","fields","isTopLevel","localized","name","_block","blocks","block","find","b","slug","ref","blockType","_callbackStack","fieldsMatched","some","skip","next","push","currentRef","currentParentRef","tab","tabs","tabRef","en","key","Array","isArray","localeData","reverse","forEach","cb","Object","keys","includes","firstDotIndex","indexOf","fieldName","substring","remainingPath","nestedRef"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseForLocalizedFields.d.ts","sourceRoot":"","sources":["../../src/utilities/traverseForLocalizedFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEtD,eAAO,MAAM,0BAA0B,GAAI,QAAQ,KAAK,EAAE,KAAG,
|
|
1
|
+
{"version":3,"file":"traverseForLocalizedFields.d.ts","sourceRoot":"","sources":["../../src/utilities/traverseForLocalizedFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEtD,eAAO,MAAM,0BAA0B,GAAI,QAAQ,KAAK,EAAE,KAAG,OA6C5D,CAAA"}
|
|
@@ -15,6 +15,9 @@ export const traverseForLocalizedFields = (fields)=>{
|
|
|
15
15
|
case 'blocks':
|
|
16
16
|
if (field.blocks) {
|
|
17
17
|
for (const block of field.blocks){
|
|
18
|
+
if (typeof block === 'string') {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
18
21
|
if (block.fields && traverseForLocalizedFields(block.fields)) {
|
|
19
22
|
return true;
|
|
20
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/traverseForLocalizedFields.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nexport const traverseForLocalizedFields = (fields: Field[]): boolean => {\n for (const field of fields) {\n if ('localized' in field && field.localized) {\n return true\n }\n\n switch (field.type) {\n case 'array':\n case 'collapsible':\n case 'group':\n case 'row':\n if (field.fields && traverseForLocalizedFields(field.fields)) {\n return true\n }\n break\n\n case 'blocks':\n if (field.blocks) {\n for (const block of field.blocks) {\n if (block.fields && traverseForLocalizedFields(block.fields)) {\n return true\n }\n }\n }\n break\n\n case 'tabs':\n if (field.tabs) {\n for (const tab of field.tabs) {\n if ('localized' in tab && tab.localized) {\n return true\n }\n if ('fields' in tab && tab.fields && traverseForLocalizedFields(tab.fields)) {\n return true\n }\n }\n }\n break\n }\n }\n\n return false\n}\n"],"names":["traverseForLocalizedFields","fields","field","localized","type","blocks","block","tabs","tab"],"mappings":"AAEA,OAAO,MAAMA,6BAA6B,CAACC;IACzC,KAAK,MAAMC,SAASD,OAAQ;QAC1B,IAAI,eAAeC,SAASA,MAAMC,SAAS,EAAE;YAC3C,OAAO;QACT;QAEA,OAAQD,MAAME,IAAI;YAChB,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;gBACH,IAAIF,MAAMD,MAAM,IAAID,2BAA2BE,MAAMD,MAAM,GAAG;oBAC5D,OAAO;gBACT;gBACA;YAEF,KAAK;gBACH,IAAIC,MAAMG,MAAM,EAAE;oBAChB,KAAK,MAAMC,SAASJ,MAAMG,MAAM,CAAE;wBAChC,
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/traverseForLocalizedFields.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nexport const traverseForLocalizedFields = (fields: Field[]): boolean => {\n for (const field of fields) {\n if ('localized' in field && field.localized) {\n return true\n }\n\n switch (field.type) {\n case 'array':\n case 'collapsible':\n case 'group':\n case 'row':\n if (field.fields && traverseForLocalizedFields(field.fields)) {\n return true\n }\n break\n\n case 'blocks':\n if (field.blocks) {\n for (const block of field.blocks) {\n if (typeof block === 'string') {\n continue\n }\n if (block.fields && traverseForLocalizedFields(block.fields)) {\n return true\n }\n }\n }\n break\n\n case 'tabs':\n if (field.tabs) {\n for (const tab of field.tabs) {\n if ('localized' in tab && tab.localized) {\n return true\n }\n if ('fields' in tab && tab.fields && traverseForLocalizedFields(tab.fields)) {\n return true\n }\n }\n }\n break\n }\n }\n\n return false\n}\n"],"names":["traverseForLocalizedFields","fields","field","localized","type","blocks","block","tabs","tab"],"mappings":"AAEA,OAAO,MAAMA,6BAA6B,CAACC;IACzC,KAAK,MAAMC,SAASD,OAAQ;QAC1B,IAAI,eAAeC,SAASA,MAAMC,SAAS,EAAE;YAC3C,OAAO;QACT;QAEA,OAAQD,MAAME,IAAI;YAChB,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;gBACH,IAAIF,MAAMD,MAAM,IAAID,2BAA2BE,MAAMD,MAAM,GAAG;oBAC5D,OAAO;gBACT;gBACA;YAEF,KAAK;gBACH,IAAIC,MAAMG,MAAM,EAAE;oBAChB,KAAK,MAAMC,SAASJ,MAAMG,MAAM,CAAE;wBAChC,IAAI,OAAOC,UAAU,UAAU;4BAC7B;wBACF;wBACA,IAAIA,MAAML,MAAM,IAAID,2BAA2BM,MAAML,MAAM,GAAG;4BAC5D,OAAO;wBACT;oBACF;gBACF;gBACA;YAEF,KAAK;gBACH,IAAIC,MAAMK,IAAI,EAAE;oBACd,KAAK,MAAMC,OAAON,MAAMK,IAAI,CAAE;wBAC5B,IAAI,eAAeC,OAAOA,IAAIL,SAAS,EAAE;4BACvC,OAAO;wBACT;wBACA,IAAI,YAAYK,OAAOA,IAAIP,MAAM,IAAID,2BAA2BQ,IAAIP,MAAM,GAAG;4BAC3E,OAAO;wBACT;oBACF;gBACF;gBACA;QACJ;IACF;IAEA,OAAO;AACT,EAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Field, Option } from '../fields/config/types.js';
|
|
2
2
|
export declare const statuses: Option[];
|
|
3
3
|
export declare const baseVersionFields: ({ localized }: {
|
|
4
4
|
localized: boolean;
|
|
5
5
|
}) => Field[];
|
|
6
|
-
export declare const versionSnapshotField: CheckboxField;
|
|
7
6
|
//# sourceMappingURL=baseFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseFields.d.ts","sourceRoot":"","sources":["../../src/versions/baseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"baseFields.d.ts","sourceRoot":"","sources":["../../src/versions/baseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAE9D,eAAO,MAAM,QAAQ,EAAE,MAAM,EAS5B,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,eAAe;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,KAAG,KAAK,EAgB9E,CAAA"}
|
|
@@ -28,18 +28,5 @@ export const baseVersionFields = ({ localized })=>[
|
|
|
28
28
|
options: statuses
|
|
29
29
|
}
|
|
30
30
|
];
|
|
31
|
-
// When publishing a specific locale,
|
|
32
|
-
// we need to create a new draft which acts as a
|
|
33
|
-
// "snapshot" to retain all existing draft data.
|
|
34
|
-
// This field will be used to exclude any snapshot versions
|
|
35
|
-
// from the admin Versions list
|
|
36
|
-
export const versionSnapshotField = {
|
|
37
|
-
name: 'snapshot',
|
|
38
|
-
type: 'checkbox',
|
|
39
|
-
admin: {
|
|
40
|
-
disabled: true
|
|
41
|
-
},
|
|
42
|
-
index: true
|
|
43
|
-
};
|
|
44
31
|
|
|
45
32
|
//# sourceMappingURL=baseFields.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/versions/baseFields.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type {
|
|
1
|
+
{"version":3,"sources":["../../src/versions/baseFields.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { Field, Option } from '../fields/config/types.js'\n\nexport const statuses: Option[] = [\n {\n label: ({ t }) => t('version:draft'),\n value: 'draft',\n },\n {\n label: ({ t }) => t('version:published'),\n value: 'published',\n },\n]\n\nexport const baseVersionFields = ({ localized }: { localized: boolean }): Field[] => [\n {\n name: '_status',\n type: 'select',\n admin: {\n components: {\n Field: false,\n },\n disabled: { bulkEdit: true },\n },\n defaultValue: 'draft',\n index: true,\n label: ({ t }) => t('version:status'),\n localized: Boolean(localized),\n options: statuses,\n },\n]\n"],"names":["statuses","label","t","value","baseVersionFields","localized","name","type","admin","components","Field","disabled","bulkEdit","defaultValue","index","Boolean","options"],"mappings":"AAAA,oBAAoB;AAGpB,OAAO,MAAMA,WAAqB;IAChC;QACEC,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;QACpBC,OAAO;IACT;IACA;QACEF,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;QACpBC,OAAO;IACT;CACD,CAAA;AAED,OAAO,MAAMC,oBAAoB,CAAC,EAAEC,SAAS,EAA0B,GAAc;QACnF;YACEC,MAAM;YACNC,MAAM;YACNC,OAAO;gBACLC,YAAY;oBACVC,OAAO;gBACT;gBACAC,UAAU;oBAAEC,UAAU;gBAAK;YAC7B;YACAC,cAAc;YACdC,OAAO;YACPb,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBG,WAAWU,QAAQV;YACnBW,SAAShB;QACX;KACD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildCollectionFields.d.ts","sourceRoot":"","sources":["../../src/versions/buildCollectionFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"buildCollectionFields.d.ts","sourceRoot":"","sources":["../../src/versions/buildCollectionFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAItE,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,OAAO,GAAG,KAAK,EACpE,QAAQ,eAAe,EACvB,YAAY,yBAAyB,EACrC,UAAU,CAAC,KACV,IAAI,SAAS,CAAC,GAAG,cAAc,EAAE,GAAG,KAAK,EAwE3C,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { hasAutosaveEnabled, hasDraftsEnabled } from '../utilities/getVersionsConfig.js';
|
|
2
|
-
import { versionSnapshotField } from './baseFields.js';
|
|
3
2
|
export const buildVersionCollectionFields = (config, collection, flatten)=>{
|
|
4
3
|
const fields = [
|
|
5
4
|
{
|
|
@@ -35,7 +34,6 @@ export const buildVersionCollectionFields = (config, collection, flatten)=>{
|
|
|
35
34
|
];
|
|
36
35
|
if (hasDraftsEnabled(collection)) {
|
|
37
36
|
if (config.localization) {
|
|
38
|
-
fields.push(versionSnapshotField);
|
|
39
37
|
fields.push({
|
|
40
38
|
name: 'publishedLocale',
|
|
41
39
|
type: 'select',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/versions/buildCollectionFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { Field, FlattenedField } from '../fields/config/types.js'\n\nimport { hasAutosaveEnabled, hasDraftsEnabled } from '../utilities/getVersionsConfig.js'\
|
|
1
|
+
{"version":3,"sources":["../../src/versions/buildCollectionFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { Field, FlattenedField } from '../fields/config/types.js'\n\nimport { hasAutosaveEnabled, hasDraftsEnabled } from '../utilities/getVersionsConfig.js'\n\nexport const buildVersionCollectionFields = <T extends boolean = false>(\n config: SanitizedConfig,\n collection: SanitizedCollectionConfig,\n flatten?: T,\n): true extends T ? FlattenedField[] : Field[] => {\n const fields: FlattenedField[] = [\n {\n name: 'parent',\n type: 'relationship',\n index: true,\n relationTo: collection.slug,\n },\n {\n name: 'version',\n type: 'group',\n fields: collection.fields.filter((field) => !('name' in field) || field.name !== 'id'),\n ...(flatten && {\n flattenedFields: collection.flattenedFields.filter((each) => each.name !== 'id'),\n })!,\n },\n {\n name: 'createdAt',\n type: 'date',\n admin: {\n disabled: true,\n },\n index: true,\n },\n {\n name: 'updatedAt',\n type: 'date',\n admin: {\n disabled: true,\n },\n index: true,\n },\n ]\n\n if (hasDraftsEnabled(collection)) {\n if (config.localization) {\n fields.push({\n name: 'publishedLocale',\n type: 'select',\n admin: {\n disabled: true,\n },\n index: true,\n options: config.localization.locales.map((locale) => {\n if (typeof locale === 'string') {\n return locale\n }\n\n return locale.code\n }),\n })\n }\n\n fields.push({\n name: 'latest',\n type: 'checkbox',\n admin: {\n disabled: true,\n },\n index: true,\n })\n\n if (hasAutosaveEnabled(collection)) {\n fields.push({\n name: 'autosave',\n type: 'checkbox',\n index: true,\n })\n }\n }\n\n return fields as true extends T ? FlattenedField[] : Field[]\n}\n"],"names":["hasAutosaveEnabled","hasDraftsEnabled","buildVersionCollectionFields","config","collection","flatten","fields","name","type","index","relationTo","slug","filter","field","flattenedFields","each","admin","disabled","localization","push","options","locales","map","locale","code"],"mappings":"AAIA,SAASA,kBAAkB,EAAEC,gBAAgB,QAAQ,oCAAmC;AAExF,OAAO,MAAMC,+BAA+B,CAC1CC,QACAC,YACAC;IAEA,MAAMC,SAA2B;QAC/B;YACEC,MAAM;YACNC,MAAM;YACNC,OAAO;YACPC,YAAYN,WAAWO,IAAI;QAC7B;QACA;YACEJ,MAAM;YACNC,MAAM;YACNF,QAAQF,WAAWE,MAAM,CAACM,MAAM,CAAC,CAACC,QAAU,CAAE,CAAA,UAAUA,KAAI,KAAMA,MAAMN,IAAI,KAAK;YACjF,GAAIF,WAAW;gBACbS,iBAAiBV,WAAWU,eAAe,CAACF,MAAM,CAAC,CAACG,OAASA,KAAKR,IAAI,KAAK;YAC7E,CAAC;QACH;QACA;YACEA,MAAM;YACNC,MAAM;YACNQ,OAAO;gBACLC,UAAU;YACZ;YACAR,OAAO;QACT;QACA;YACEF,MAAM;YACNC,MAAM;YACNQ,OAAO;gBACLC,UAAU;YACZ;YACAR,OAAO;QACT;KACD;IAED,IAAIR,iBAAiBG,aAAa;QAChC,IAAID,OAAOe,YAAY,EAAE;YACvBZ,OAAOa,IAAI,CAAC;gBACVZ,MAAM;gBACNC,MAAM;gBACNQ,OAAO;oBACLC,UAAU;gBACZ;gBACAR,OAAO;gBACPW,SAASjB,OAAOe,YAAY,CAACG,OAAO,CAACC,GAAG,CAAC,CAACC;oBACxC,IAAI,OAAOA,WAAW,UAAU;wBAC9B,OAAOA;oBACT;oBAEA,OAAOA,OAAOC,IAAI;gBACpB;YACF;QACF;QAEAlB,OAAOa,IAAI,CAAC;YACVZ,MAAM;YACNC,MAAM;YACNQ,OAAO;gBACLC,UAAU;YACZ;YACAR,OAAO;QACT;QAEA,IAAIT,mBAAmBI,aAAa;YAClCE,OAAOa,IAAI,CAAC;gBACVZ,MAAM;gBACNC,MAAM;gBACNC,OAAO;YACT;QACF;IACF;IAEA,OAAOH;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildGlobalFields.d.ts","sourceRoot":"","sources":["../../src/versions/buildGlobalFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"buildGlobalFields.d.ts","sourceRoot":"","sources":["../../src/versions/buildGlobalFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAIvE,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,OAAO,GAAG,KAAK,EAChE,QAAQ,eAAe,EACvB,QAAQ,qBAAqB,EAC7B,UAAU,CAAC,KACV,IAAI,SAAS,CAAC,GAAG,cAAc,EAAE,GAAG,KAAK,EAkE3C,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { hasAutosaveEnabled, hasDraftsEnabled } from '../utilities/getVersionsConfig.js';
|
|
2
|
-
import { versionSnapshotField } from './baseFields.js';
|
|
3
2
|
export const buildVersionGlobalFields = (config, global, flatten)=>{
|
|
4
3
|
const fields = [
|
|
5
4
|
{
|
|
@@ -29,7 +28,6 @@ export const buildVersionGlobalFields = (config, global, flatten)=>{
|
|
|
29
28
|
];
|
|
30
29
|
if (hasDraftsEnabled(global)) {
|
|
31
30
|
if (config.localization) {
|
|
32
|
-
fields.push(versionSnapshotField);
|
|
33
31
|
fields.push({
|
|
34
32
|
name: 'publishedLocale',
|
|
35
33
|
type: 'select',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/versions/buildGlobalFields.ts"],"sourcesContent":["import type { SanitizedConfig } from '../config/types.js'\nimport type { Field, FlattenedField } from '../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\n\nimport { hasAutosaveEnabled, hasDraftsEnabled } from '../utilities/getVersionsConfig.js'\
|
|
1
|
+
{"version":3,"sources":["../../src/versions/buildGlobalFields.ts"],"sourcesContent":["import type { SanitizedConfig } from '../config/types.js'\nimport type { Field, FlattenedField } from '../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\n\nimport { hasAutosaveEnabled, hasDraftsEnabled } from '../utilities/getVersionsConfig.js'\n\nexport const buildVersionGlobalFields = <T extends boolean = false>(\n config: SanitizedConfig,\n global: SanitizedGlobalConfig,\n flatten?: T,\n): true extends T ? FlattenedField[] : Field[] => {\n const fields: FlattenedField[] = [\n {\n name: 'version',\n type: 'group',\n fields: global.fields,\n ...(flatten && {\n flattenedFields: global.flattenedFields,\n })!,\n },\n {\n name: 'createdAt',\n type: 'date',\n admin: {\n disabled: true,\n },\n index: true,\n },\n {\n name: 'updatedAt',\n type: 'date',\n admin: {\n disabled: true,\n },\n index: true,\n },\n ]\n\n if (hasDraftsEnabled(global)) {\n if (config.localization) {\n fields.push({\n name: 'publishedLocale',\n type: 'select',\n admin: {\n disabled: true,\n },\n index: true,\n options: config.localization.locales.map((locale) => {\n if (typeof locale === 'string') {\n return locale\n }\n\n return locale.code\n }),\n })\n }\n\n fields.push({\n name: 'latest',\n type: 'checkbox',\n admin: {\n disabled: true,\n },\n index: true,\n })\n\n if (hasAutosaveEnabled(global)) {\n fields.push({\n name: 'autosave',\n type: 'checkbox',\n index: true,\n })\n }\n }\n\n return fields as true extends T ? FlattenedField[] : Field[]\n}\n"],"names":["hasAutosaveEnabled","hasDraftsEnabled","buildVersionGlobalFields","config","global","flatten","fields","name","type","flattenedFields","admin","disabled","index","localization","push","options","locales","map","locale","code"],"mappings":"AAIA,SAASA,kBAAkB,EAAEC,gBAAgB,QAAQ,oCAAmC;AAExF,OAAO,MAAMC,2BAA2B,CACtCC,QACAC,QACAC;IAEA,MAAMC,SAA2B;QAC/B;YACEC,MAAM;YACNC,MAAM;YACNF,QAAQF,OAAOE,MAAM;YACrB,GAAID,WAAW;gBACbI,iBAAiBL,OAAOK,eAAe;YACzC,CAAC;QACH;QACA;YACEF,MAAM;YACNC,MAAM;YACNE,OAAO;gBACLC,UAAU;YACZ;YACAC,OAAO;QACT;QACA;YACEL,MAAM;YACNC,MAAM;YACNE,OAAO;gBACLC,UAAU;YACZ;YACAC,OAAO;QACT;KACD;IAED,IAAIX,iBAAiBG,SAAS;QAC5B,IAAID,OAAOU,YAAY,EAAE;YACvBP,OAAOQ,IAAI,CAAC;gBACVP,MAAM;gBACNC,MAAM;gBACNE,OAAO;oBACLC,UAAU;gBACZ;gBACAC,OAAO;gBACPG,SAASZ,OAAOU,YAAY,CAACG,OAAO,CAACC,GAAG,CAAC,CAACC;oBACxC,IAAI,OAAOA,WAAW,UAAU;wBAC9B,OAAOA;oBACT;oBAEA,OAAOA,OAAOC,IAAI;gBACpB;YACF;QACF;QAEAb,OAAOQ,IAAI,CAAC;YACVP,MAAM;YACNC,MAAM;YACNE,OAAO;gBACLC,UAAU;YACZ;YACAC,OAAO;QACT;QAEA,IAAIZ,mBAAmBI,SAAS;YAC9BE,OAAOQ,IAAI,CAAC;gBACVP,MAAM;gBACNC,MAAM;gBACNI,OAAO;YACT;QACF;IACF;IAEA,OAAON;AACT,EAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Field } from '../fields/config/types.js';
|
|
2
|
+
import type { SanitizedConfig } from '../index.js';
|
|
3
|
+
import type { JsonObject } from '../types/index.js';
|
|
4
|
+
type Args = {
|
|
5
|
+
config: SanitizedConfig;
|
|
6
|
+
/**
|
|
7
|
+
* The current main doc fetched with `locale: 'all'`.
|
|
8
|
+
* For collections, pass the result of `payload.db.findOne`.
|
|
9
|
+
* For globals, pass the result of `payload.db.findGlobal`.
|
|
10
|
+
*/
|
|
11
|
+
currentDoc: JsonObject | null;
|
|
12
|
+
fields: Field[];
|
|
13
|
+
/**
|
|
14
|
+
* The locale being published (e.g. 'en').
|
|
15
|
+
*/
|
|
16
|
+
locale: string;
|
|
17
|
+
/**
|
|
18
|
+
* The full locale-keyed result from `beforeChange` — used as the version data.
|
|
19
|
+
*/
|
|
20
|
+
result: JsonObject;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Builds the data object to write to the main collection/global doc when publishing
|
|
24
|
+
* a single locale. The version row uses `result` as-is (all locales intact); the
|
|
25
|
+
* main doc must only contain previously-published locale data plus the new locale
|
|
26
|
+
* being published now.
|
|
27
|
+
*
|
|
28
|
+
* Returns the merged object (with `_status` set), ready for the DB write.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildLocalizedPublishData({ config, currentDoc, fields, locale, result, }: Args): JsonObject;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=buildSingleLocalePublishData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildSingleLocalePublishData.d.ts","sourceRoot":"","sources":["../../src/versions/buildSingleLocalePublishData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAInD,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,eAAe,CAAA;IACvB;;;;OAIG;IACH,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,MAAM,EAAE,UAAU,CAAA;CACnB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE,IAAI,GAAG,UAAU,CAkCnB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { mergeLocalizedData } from '../utilities/mergeLocalizedData.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds the data object to write to the main collection/global doc when publishing
|
|
4
|
+
* a single locale. The version row uses `result` as-is (all locales intact); the
|
|
5
|
+
* main doc must only contain previously-published locale data plus the new locale
|
|
6
|
+
* being published now.
|
|
7
|
+
*
|
|
8
|
+
* Returns the merged object (with `_status` set), ready for the DB write.
|
|
9
|
+
*/ export function buildLocalizedPublishData({ config, currentDoc, fields, locale, result }) {
|
|
10
|
+
const currentDocStatus = currentDoc?._status && typeof currentDoc._status === 'object' ? currentDoc._status : {};
|
|
11
|
+
// Only carry forward locales that were previously published. The main doc can contain
|
|
12
|
+
// stale draft-locale data written by the initial create (which always inserts into the
|
|
13
|
+
// main collection, even when draft:true). Restricting to published locales prevents that
|
|
14
|
+
// data from leaking into the published doc.
|
|
15
|
+
const previouslyPublishedLocales = Object.entries(currentDocStatus).filter(([, status])=>status === 'published').map(([lc])=>lc);
|
|
16
|
+
const merged = mergeLocalizedData({
|
|
17
|
+
configBlockReferences: config.blocks,
|
|
18
|
+
dataWithLocales: result,
|
|
19
|
+
docWithLocales: currentDoc ?? {},
|
|
20
|
+
fields,
|
|
21
|
+
localesToPreserve: previouslyPublishedLocales,
|
|
22
|
+
localesToUpdate: [
|
|
23
|
+
locale
|
|
24
|
+
]
|
|
25
|
+
});
|
|
26
|
+
// Build the _status map: retain existing per-locale statuses and mark the
|
|
27
|
+
// published locale as 'published'.
|
|
28
|
+
const resultStatus = result._status && typeof result._status === 'object' && !Array.isArray(result._status) ? result._status : {};
|
|
29
|
+
const mergedStatus = {
|
|
30
|
+
...currentDocStatus
|
|
31
|
+
};
|
|
32
|
+
mergedStatus[locale] = resultStatus[locale] ?? 'published';
|
|
33
|
+
merged._status = mergedStatus;
|
|
34
|
+
return merged;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=buildSingleLocalePublishData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/versions/buildSingleLocalePublishData.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\nimport type { SanitizedConfig } from '../index.js'\nimport type { JsonObject } from '../types/index.js'\n\nimport { mergeLocalizedData } from '../utilities/mergeLocalizedData.js'\n\ntype Args = {\n config: SanitizedConfig\n /**\n * The current main doc fetched with `locale: 'all'`.\n * For collections, pass the result of `payload.db.findOne`.\n * For globals, pass the result of `payload.db.findGlobal`.\n */\n currentDoc: JsonObject | null\n fields: Field[]\n /**\n * The locale being published (e.g. 'en').\n */\n locale: string\n /**\n * The full locale-keyed result from `beforeChange` — used as the version data.\n */\n result: JsonObject\n}\n\n/**\n * Builds the data object to write to the main collection/global doc when publishing\n * a single locale. The version row uses `result` as-is (all locales intact); the\n * main doc must only contain previously-published locale data plus the new locale\n * being published now.\n *\n * Returns the merged object (with `_status` set), ready for the DB write.\n */\nexport function buildLocalizedPublishData({\n config,\n currentDoc,\n fields,\n locale,\n result,\n}: Args): JsonObject {\n const currentDocStatus =\n currentDoc?._status && typeof currentDoc._status === 'object'\n ? (currentDoc._status as Record<string, unknown>)\n : {}\n\n // Only carry forward locales that were previously published. The main doc can contain\n // stale draft-locale data written by the initial create (which always inserts into the\n // main collection, even when draft:true). Restricting to published locales prevents that\n // data from leaking into the published doc.\n const previouslyPublishedLocales = Object.entries(currentDocStatus)\n .filter(([, status]) => status === 'published')\n .map(([lc]) => lc)\n\n const merged = mergeLocalizedData({\n configBlockReferences: config.blocks,\n dataWithLocales: result,\n docWithLocales: currentDoc ?? {},\n fields,\n localesToPreserve: previouslyPublishedLocales,\n localesToUpdate: [locale],\n })\n\n // Build the _status map: retain existing per-locale statuses and mark the\n // published locale as 'published'.\n const resultStatus =\n result._status && typeof result._status === 'object' && !Array.isArray(result._status)\n ? (result._status as Record<string, unknown>)\n : {}\n const mergedStatus: Record<string, unknown> = { ...currentDocStatus }\n mergedStatus[locale] = resultStatus[locale] ?? 'published'\n merged._status = mergedStatus\n\n return merged\n}\n"],"names":["mergeLocalizedData","buildLocalizedPublishData","config","currentDoc","fields","locale","result","currentDocStatus","_status","previouslyPublishedLocales","Object","entries","filter","status","map","lc","merged","configBlockReferences","blocks","dataWithLocales","docWithLocales","localesToPreserve","localesToUpdate","resultStatus","Array","isArray","mergedStatus"],"mappings":"AAIA,SAASA,kBAAkB,QAAQ,qCAAoC;AAqBvE;;;;;;;CAOC,GACD,OAAO,SAASC,0BAA0B,EACxCC,MAAM,EACNC,UAAU,EACVC,MAAM,EACNC,MAAM,EACNC,MAAM,EACD;IACL,MAAMC,mBACJJ,YAAYK,WAAW,OAAOL,WAAWK,OAAO,KAAK,WAChDL,WAAWK,OAAO,GACnB,CAAC;IAEP,sFAAsF;IACtF,uFAAuF;IACvF,yFAAyF;IACzF,4CAA4C;IAC5C,MAAMC,6BAA6BC,OAAOC,OAAO,CAACJ,kBAC/CK,MAAM,CAAC,CAAC,GAAGC,OAAO,GAAKA,WAAW,aAClCC,GAAG,CAAC,CAAC,CAACC,GAAG,GAAKA;IAEjB,MAAMC,SAAShB,mBAAmB;QAChCiB,uBAAuBf,OAAOgB,MAAM;QACpCC,iBAAiBb;QACjBc,gBAAgBjB,cAAc,CAAC;QAC/BC;QACAiB,mBAAmBZ;QACnBa,iBAAiB;YAACjB;SAAO;IAC3B;IAEA,0EAA0E;IAC1E,mCAAmC;IACnC,MAAMkB,eACJjB,OAAOE,OAAO,IAAI,OAAOF,OAAOE,OAAO,KAAK,YAAY,CAACgB,MAAMC,OAAO,CAACnB,OAAOE,OAAO,IAChFF,OAAOE,OAAO,GACf,CAAC;IACP,MAAMkB,eAAwC;QAAE,GAAGnB,gBAAgB;IAAC;IACpEmB,YAAY,CAACrB,OAAO,GAAGkB,YAAY,CAAClB,OAAO,IAAI;IAC/CW,OAAOR,OAAO,GAAGkB;IAEjB,OAAOV;AACT"}
|
|
@@ -11,11 +11,9 @@ type Args<T extends JsonObject = JsonObject> = {
|
|
|
11
11
|
id?: number | string;
|
|
12
12
|
operation?: 'create' | 'restoreVersion' | 'update';
|
|
13
13
|
payload: Payload;
|
|
14
|
-
publishSpecificLocale?: string;
|
|
15
14
|
req?: PayloadRequest;
|
|
16
15
|
returning?: boolean;
|
|
17
16
|
select?: SelectType;
|
|
18
|
-
snapshot?: any;
|
|
19
17
|
unpublish?: boolean;
|
|
20
18
|
};
|
|
21
19
|
export declare function saveVersion<TData extends JsonObject = JsonObject>(args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveVersion.d.ts","sourceRoot":"","sources":["../../src/versions/saveVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAA8C,OAAO,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"saveVersion.d.ts","sourceRoot":"","sources":["../../src/versions/saveVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAA8C,OAAO,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAS/E,KAAK,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,yBAAyB,CAAA;IACtC,cAAc,EAAE,CAAC,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,qBAAqB,CAAA;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,QAAQ,GAAG,gBAAgB,GAAG,QAAQ,CAAA;IAClD,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,wBAAsB,WAAW,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EACrE,IAAI,EAAE;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAAA;AAChB,wBAAsB,WAAW,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EACrE,IAAI,EAAE;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GACtC,OAAO,CAAC,UAAU,CAAC,CAAA;AACtB,wBAAsB,WAAW,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EACrE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,CAAA"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { deepCopyObjectSimple } from '../index.js';
|
|
2
|
-
import { getVersionsMax } from '../utilities/getVersionsConfig.js';
|
|
2
|
+
import { getVersionsMax, hasLocalizeStatusEnabled } from '../utilities/getVersionsConfig.js';
|
|
3
3
|
import { sanitizeInternalFields } from '../utilities/sanitizeInternalFields.js';
|
|
4
4
|
import { getQueryDraftsSelect } from './drafts/getQueryDraftsSelect.js';
|
|
5
5
|
import { enforceMaxVersions } from './enforceMaxVersions.js';
|
|
6
|
-
import { saveSnapshot } from './saveSnapshot.js';
|
|
7
6
|
import { updateLatestVersion } from './updateLatestVersion.js';
|
|
8
|
-
export async function saveVersion({ id, autosave, collection, docWithLocales, draft, global, operation, payload,
|
|
7
|
+
export async function saveVersion({ id, autosave, collection, docWithLocales, draft, global, operation, payload, req, returning, select, unpublish }) {
|
|
9
8
|
let result;
|
|
10
9
|
let createdNewVersion = false;
|
|
11
10
|
const now = new Date().toISOString();
|
|
@@ -16,6 +15,16 @@ export async function saveVersion({ id, autosave, collection, docWithLocales, dr
|
|
|
16
15
|
if (versionData._id) {
|
|
17
16
|
delete versionData._id;
|
|
18
17
|
}
|
|
18
|
+
// When localizeStatus is enabled, _status must be stored as a localized object.
|
|
19
|
+
// Callers like restoreVersion set it as a plain string — expand it here.
|
|
20
|
+
const entity = collection ?? global;
|
|
21
|
+
if (entity && payload.config.localization && hasLocalizeStatusEnabled(entity) && typeof versionData._status === 'string') {
|
|
22
|
+
const status = versionData._status;
|
|
23
|
+
versionData._status = Object.fromEntries(payload.config.localization.localeCodes.map((code)=>[
|
|
24
|
+
code,
|
|
25
|
+
status
|
|
26
|
+
]));
|
|
27
|
+
}
|
|
19
28
|
try {
|
|
20
29
|
if (unpublish || autosave) {
|
|
21
30
|
result = await updateLatestVersion({
|
|
@@ -37,7 +46,6 @@ export async function saveVersion({ id, autosave, collection, docWithLocales, dr
|
|
|
37
46
|
createdAt: operation === 'restoreVersion' ? versionData.createdAt : now,
|
|
38
47
|
globalSlug: undefined,
|
|
39
48
|
parent: collection ? id : undefined,
|
|
40
|
-
publishedLocale: publishSpecificLocale || undefined,
|
|
41
49
|
req,
|
|
42
50
|
returning,
|
|
43
51
|
select: getQueryDraftsSelect({
|
|
@@ -54,19 +62,6 @@ export async function saveVersion({ id, autosave, collection, docWithLocales, dr
|
|
|
54
62
|
createVersionArgs.globalSlug = global.slug;
|
|
55
63
|
result = await payload.db.createGlobalVersion(createVersionArgs);
|
|
56
64
|
}
|
|
57
|
-
if (snapshot) {
|
|
58
|
-
await saveSnapshot({
|
|
59
|
-
id,
|
|
60
|
-
autosave,
|
|
61
|
-
collection,
|
|
62
|
-
data: snapshot,
|
|
63
|
-
global,
|
|
64
|
-
payload,
|
|
65
|
-
publishSpecificLocale,
|
|
66
|
-
req,
|
|
67
|
-
select
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
65
|
}
|
|
71
66
|
} catch (err) {
|
|
72
67
|
let errorMessage;
|