payload 4.0.0-internal.d28e9fb → 4.0.0-internal.fa345ef
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 +4 -17
- package/dist/admin/RichText.d.ts.map +1 -1
- package/dist/admin/RichText.js.map +1 -1
- package/dist/admin/adapters/cookies.d.ts +21 -0
- package/dist/admin/adapters/cookies.d.ts.map +1 -0
- package/dist/admin/adapters/cookies.js +3 -0
- package/dist/admin/adapters/cookies.js.map +1 -0
- 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 +7 -0
- package/dist/admin/adapters/index.d.ts.map +1 -0
- package/dist/admin/adapters/index.js +3 -0
- package/dist/admin/adapters/index.js.map +1 -0
- 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/router.d.ts +56 -0
- package/dist/admin/adapters/router.d.ts.map +1 -0
- package/dist/admin/adapters/router.js +3 -0
- package/dist/admin/adapters/router.js.map +1 -0
- package/dist/admin/adapters/server.d.ts +23 -0
- package/dist/admin/adapters/server.d.ts.map +1 -0
- package/dist/admin/adapters/server.js +6 -0
- package/dist/admin/adapters/server.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/elements/Table.d.ts +1 -0
- package/dist/admin/elements/Table.d.ts.map +1 -1
- package/dist/admin/elements/Table.js.map +1 -1
- 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 +9 -0
- 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/hierarchyList.d.ts +1 -0
- package/dist/admin/views/hierarchyList.d.ts.map +1 -1
- package/dist/admin/views/hierarchyList.js.map +1 -1
- package/dist/admin/views/list.d.ts +10 -1
- 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/cookies.d.ts.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/ensureUsernameOrEmail.d.ts.map +1 -1
- package/dist/auth/executeAccess.d.ts.map +1 -1
- package/dist/auth/executeAuthStrategies.d.ts.map +1 -1
- package/dist/auth/extractAccessFromPermission.d.ts.map +1 -1
- package/dist/auth/extractJWT.d.ts.map +1 -1
- package/dist/auth/getAuthFields.d.ts.map +1 -1
- package/dist/auth/getAuthFields.js +2 -2
- package/dist/auth/getAuthFields.js.map +1 -1
- package/dist/auth/getFieldsToSign.d.ts.map +1 -1
- package/dist/auth/getLoginOptions.d.ts.map +1 -1
- package/dist/auth/isUserLocked.d.ts.map +1 -1
- package/dist/auth/jwt.d.ts.map +1 -1
- package/dist/auth/operations/access.d.ts.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/forgotPassword.d.ts.map +1 -1
- package/dist/auth/operations/init.d.ts.map +1 -1
- package/dist/auth/operations/local/auth.d.ts.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/logout.d.ts.map +1 -1
- package/dist/auth/operations/me.d.ts.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/registerFirstUser.d.ts.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/operations/unlock.d.ts.map +1 -1
- package/dist/auth/operations/verifyEmail.d.ts.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.d.ts.map +1 -1
- package/dist/auth/strategies/apiKey.js +6 -17
- package/dist/auth/strategies/apiKey.js.map +1 -1
- package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.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/strategies/local/register.d.ts.map +1 -1
- package/dist/auth/strategies/local/resetLoginAttempts.d.ts.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/iterateFields.d.ts.map +1 -1
- package/dist/bin/generateImportMap/iterateFields.js +4 -1
- package/dist/bin/generateImportMap/iterateFields.js.map +1 -1
- package/dist/bin/generateImportMap/utilities/getFromImportMap.d.ts.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 +11 -1
- 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/bin/migrate.d.ts.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 +10 -1
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +214 -230
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/sanitizeCompoundIndexes.d.ts.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/config/useAsTitle.d.ts.map +1 -1
- package/dist/collections/dataloader.d.ts.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/countVersions.d.ts.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/deleteByID.d.ts.map +1 -1
- package/dist/collections/operations/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/find.d.ts.map +1 -1
- package/dist/collections/operations/findByID.d.ts.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/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/findVersions.d.ts.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/restoreVersion.d.ts.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/buildAfterOperation.d.ts.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/sanitizeSortQuery.d.ts.map +1 -1
- 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/build.d.ts.map +1 -1
- package/dist/config/build.js +8 -0
- package/dist/config/build.js.map +1 -1
- package/dist/config/client.d.ts +3 -3
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +2 -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 +362 -271
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +125 -38
- 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/combineQueries.d.ts.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/findMigrationDir.d.ts.map +1 -1
- package/dist/database/migrations/getPredefinedMigration.d.ts.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/database/migrations/readMigrationFiles.d.ts.map +1 -1
- package/dist/database/migrations/writeMigrationIndex.d.ts.map +1 -1
- package/dist/database/sanitizeJoinQuery.d.ts.map +1 -1
- package/dist/database/sanitizeWhereQuery.d.ts.map +1 -1
- package/dist/duplicateDocument/index.d.ts.map +1 -1
- package/dist/email/getStringifiedToAddress.d.ts.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 +0 -1
- package/dist/exports/internal.d.ts.map +1 -1
- package/dist/exports/internal.js +0 -1
- 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 -1
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +23 -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/generateSlug.d.ts.map +1 -1
- package/dist/fields/baseFields/slug/index.js +1 -1
- package/dist/fields/baseFields/slug/index.js.map +1 -1
- 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 +12 -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 +315 -338
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
- package/dist/fields/config/types.d.ts +45 -66
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/getDefaultValue.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/promise.d.ts.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/afterChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +12 -3
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/getExistingRowDoc.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/index.d.ts.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/beforeChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/index.d.ts.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.d.ts.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/beforeDuplicate/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/index.d.ts.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/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
- package/dist/fields/isFieldDisabled.d.ts.map +1 -1
- package/dist/fields/mergeBaseFields.d.ts.map +1 -1
- package/dist/fields/setDefaultBeforeDuplicate.d.ts.map +1 -1
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +5 -4
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/config/client.d.ts.map +1 -1
- package/dist/globals/config/sanitize.d.ts +6 -1
- package/dist/globals/config/sanitize.d.ts.map +1 -1
- package/dist/globals/config/sanitize.js +122 -132
- 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/countGlobalVersions.d.ts.map +1 -1
- package/dist/globals/operations/docAccess.d.ts.map +1 -1
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/findVersions.d.ts.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/restoreVersion.d.ts.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/hierarchy/addHierarchyToCollection.d.ts.map +1 -1
- package/dist/hierarchy/buildParentField.d.ts.map +1 -1
- package/dist/hierarchy/constants.d.ts.map +1 -1
- package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -1
- package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +1 -1
- package/dist/hierarchy/hooks/collectionAfterRead.d.ts.map +1 -1
- package/dist/hierarchy/hooks/collectionBeforeChange.d.ts.map +1 -1
- package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +1 -1
- package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts.map +1 -1
- package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +1 -1
- package/dist/hierarchy/injectHierarchyButton.d.ts.map +1 -1
- package/dist/hierarchy/resolveHierarchyCollections.d.ts.map +1 -1
- package/dist/hierarchy/resolveHierarchyCollections.js +1 -1
- package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -1
- package/dist/hierarchy/sanitizeHierarchyCollection.d.ts.map +1 -1
- package/dist/hierarchy/sanitizeHierarchyCollection.js +3 -1
- package/dist/hierarchy/sanitizeHierarchyCollection.js.map +1 -1
- package/dist/hierarchy/types.d.ts +8 -1
- package/dist/hierarchy/types.d.ts.map +1 -1
- package/dist/hierarchy/types.js.map +1 -1
- package/dist/index.bundled.d.ts +808 -366
- package/dist/index.d.ts +72 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +55 -55
- 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/deleteUserPreferences.d.ts.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/access.d.ts.map +1 -1
- package/dist/query-presets/config.d.ts.map +1 -1
- package/dist/query-presets/config.js +77 -37
- 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 +3 -2
- 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.d.ts +1 -1
- package/dist/queues/config/generateJobsJSONSchemas.d.ts.map +1 -1
- package/dist/queues/config/generateJobsJSONSchemas.js +33 -12
- 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/queues/endpoints/run.d.ts.map +1 -1
- package/dist/queues/localAPI.d.ts.map +1 -1
- package/dist/queues/operations/handleSchedules/getQueuesWithSchedules.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -1
- package/dist/queues/utilities/getJobTaskStatus.d.ts.map +1 -1
- package/dist/translations/getLocalI18n.d.ts.map +1 -1
- package/dist/types/index.d.ts +18 -8
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/checkFileAccess.d.ts.map +1 -1
- package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
- package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
- package/dist/uploads/endpoints/getFileFromURL.d.ts.map +1 -1
- package/dist/uploads/endpoints/getFileFromURL.js +9 -5
- package/dist/uploads/endpoints/getFileFromURL.js.map +1 -1
- package/dist/uploads/fetchAPI-multipart/isEligibleRequest.d.ts.map +1 -1
- package/dist/uploads/fetchAPI-multipart/processNested.d.ts.map +1 -1
- package/dist/uploads/fetchAPI-multipart/utilities.d.ts.map +1 -1
- package/dist/uploads/fileExists.d.ts.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/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +7 -19
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/getExternalFile.d.ts.map +1 -1
- package/dist/uploads/getFileByPath.d.ts.map +1 -1
- package/dist/uploads/getFileTypeFallback.d.ts.map +1 -1
- package/dist/uploads/getSafeFilename.d.ts.map +1 -1
- package/dist/uploads/image-resizing/createImageSize.d.ts.map +1 -1
- package/dist/uploads/image-resizing/generateImageSizeFilename.d.ts.map +1 -1
- package/dist/uploads/image-resizing/getImageResizeAction.d.ts.map +1 -1
- package/dist/uploads/image-resizing/parseFilename.d.ts.map +1 -1
- package/dist/uploads/image-resizing/sanitizeResizeConfig.d.ts.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/mimeTypeValidator.d.ts.map +1 -1
- package/dist/uploads/safeFetch.d.ts +1 -1
- 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/saveBufferToFile.d.ts.map +1 -1
- package/dist/uploads/tempFile.d.ts.map +1 -1
- package/dist/uploads/types.d.ts +33 -29
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/uploads/uploadFiles.d.ts.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/addLocalesToRequest.d.ts.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
- package/dist/utilities/appendDateTimezoneSelectFields.d.ts.map +1 -1
- package/dist/utilities/appendDateTimezoneSelectFields.js +2 -2
- package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
- package/dist/utilities/appendNonTrashedFilter.d.ts.map +1 -1
- package/dist/utilities/appendUploadSelectFields.d.ts.map +1 -1
- package/dist/utilities/canAccessAdmin.d.ts.map +1 -1
- package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.d.ts +68 -16
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +311 -117
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/configToJSONSchema.spec.js +619 -85
- 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/dependencies/resolveFrom.d.ts.map +1 -1
- package/dist/utilities/dynamicImport.js +1 -1
- package/dist/utilities/dynamicImport.js.map +1 -1
- package/dist/utilities/escapeRegExp.d.ts.map +1 -1
- package/dist/utilities/extractID.d.ts.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 +78 -102
- package/dist/utilities/flattenAllFields.js.map +1 -1
- package/dist/utilities/formatAdminURL.d.ts.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/formatLabels.d.ts.map +1 -1
- package/dist/utilities/getBestFitFromSizes.d.ts.map +1 -1
- package/dist/utilities/getBlockSelect.d.ts.map +1 -1
- package/dist/utilities/getDataByPath.d.ts.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/getFieldPermissions.d.ts.map +1 -1
- package/dist/utilities/getObjectDotNotation.d.ts.map +1 -1
- package/dist/utilities/getRequestEntity.d.ts.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/getRequestOrigin.d.ts.map +1 -1
- package/dist/utilities/getSafeRedirect.d.ts.map +1 -1
- package/dist/utilities/getSelectMode.d.ts.map +1 -1
- package/dist/utilities/getSiblingData.d.ts.map +1 -1
- package/dist/utilities/getTranslatedLabel.d.ts.map +1 -1
- package/dist/utilities/getVersionsConfig.d.ts.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 -4
- package/dist/utilities/handleEndpoints.js.map +1 -1
- package/dist/utilities/headersWithCors.d.ts.map +1 -1
- package/dist/utilities/isEntityHidden.d.ts.map +1 -1
- package/dist/utilities/isURLAllowed.d.ts.map +1 -1
- package/dist/utilities/isValidID.d.ts.map +1 -1
- package/dist/utilities/logError.d.ts.map +1 -1
- package/dist/utilities/logger.d.ts.map +1 -1
- package/dist/utilities/mergeHeaders.d.ts.map +1 -1
- package/dist/utilities/mergeListSearchAndWhere.d.ts.map +1 -1
- 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/optionsAreEqual.d.ts.map +1 -1
- package/dist/utilities/parseBooleanString.d.ts.map +1 -1
- package/dist/utilities/parseCookies.d.ts.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/profiling.d.ts.map +1 -1
- package/dist/utilities/reduceFieldsToValues.d.ts.map +1 -1
- package/dist/utilities/resolveSelect.d.ts.map +1 -1
- package/dist/utilities/routeError.d.ts.map +1 -1
- package/dist/utilities/sanitizeFallbackLocale.d.ts.map +1 -1
- package/dist/utilities/sanitizeInternalFields.d.ts.map +1 -1
- package/dist/utilities/sanitizeJoinParams.d.ts.map +1 -1
- package/dist/utilities/sanitizePopulateParam.d.ts.map +1 -1
- package/dist/utilities/sanitizeSelect.d.ts.map +1 -1
- package/dist/utilities/sanitizeSelectParam.d.ts.map +1 -1
- package/dist/utilities/sanitizeSortParams.d.ts.map +1 -1
- package/dist/utilities/setsAreEqual.d.ts.map +1 -1
- package/dist/utilities/slugify.d.ts.map +1 -1
- package/dist/utilities/stripUnselectedFields.d.ts.map +1 -1
- package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
- package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
- package/dist/utilities/telemetry/index.d.ts.map +1 -1
- package/dist/utilities/telemetry/oneWayHash.d.ts.map +1 -1
- package/dist/utilities/timestamp.d.ts.map +1 -1
- package/dist/utilities/toKebabCase.d.ts.map +1 -1
- package/dist/utilities/transformColumnPreferences.d.ts.map +1 -1
- package/dist/utilities/transformColumnPreferences.js +4 -2
- package/dist/utilities/transformColumnPreferences.js.map +1 -1
- package/dist/utilities/transformWhereQuery.d.ts.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/utilities/unflatten.d.ts.map +1 -1
- package/dist/utilities/validateMimeType.d.ts.map +1 -1
- package/dist/utilities/validateTimezones.d.ts.map +1 -1
- package/dist/utilities/validateWhereQuery.d.ts.map +1 -1
- package/dist/utilities/wordBoundariesRegex.d.ts.map +1 -1
- package/dist/utilities/wrapInternalEndpoints.d.ts.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/buildVersionCompoundIndexes.d.ts.map +1 -1
- package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
- package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
- package/dist/versions/drafts/getQueryDraftsSelect.d.ts.map +1 -1
- package/dist/versions/drafts/getQueryDraftsSort.d.ts.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
- package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
- package/dist/versions/migrations/localizeStatus/shared.d.ts.map +1 -1
- 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 +2 -9
- 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 +23 -20
- 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/utilities/sanitizeProfiler.d.ts +0 -38
- package/dist/utilities/sanitizeProfiler.d.ts.map +0 -1
- package/dist/utilities/sanitizeProfiler.js +0 -101
- package/dist/utilities/sanitizeProfiler.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
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
import type { Field } from '../fields/config/types.js';
|
|
2
2
|
import type { SanitizedConfig } from '../index.js';
|
|
3
3
|
import type { JsonObject } from '../types/index.js';
|
|
4
|
-
type
|
|
4
|
+
type MergeLocalizedDataArgs = {
|
|
5
5
|
configBlockReferences: SanitizedConfig['blocks'];
|
|
6
6
|
dataWithLocales: JsonObject;
|
|
7
7
|
docWithLocales: JsonObject;
|
|
8
8
|
fields: Field[];
|
|
9
|
+
/**
|
|
10
|
+
* Which locales from `docWithLocales` to retain in the output.
|
|
11
|
+
* When omitted, all locales in `docWithLocales` are preserved (default behaviour).
|
|
12
|
+
* Pass an explicit list (e.g. the currently-published locales) to discard locales
|
|
13
|
+
* that should not be carried forward — for example, when publishing a single locale
|
|
14
|
+
* you want to avoid leaking draft data that was written to the main doc by an earlier
|
|
15
|
+
* create/update with `draft: true`.
|
|
16
|
+
*/
|
|
17
|
+
localesToPreserve?: string[];
|
|
18
|
+
localesToUpdate: string[];
|
|
9
19
|
parentIsLocalized?: boolean;
|
|
10
|
-
selectedLocales: string[];
|
|
11
20
|
};
|
|
12
21
|
/**
|
|
13
22
|
* Merges data from dataWithLocales onto docWithLocales for specified locales.
|
|
14
|
-
* For localized fields, merges only the specified locales while preserving others
|
|
23
|
+
* For localized fields, merges only the specified locales while preserving others
|
|
24
|
+
* (or only `localesToPreserve` if supplied).
|
|
15
25
|
* For non-localized fields, keeps existing values from docWithLocales unchanged.
|
|
16
26
|
* Returns a new object without mutating the original.
|
|
17
27
|
*/
|
|
18
|
-
export declare function mergeLocalizedData({ configBlockReferences, dataWithLocales, docWithLocales, fields,
|
|
28
|
+
export declare function mergeLocalizedData({ configBlockReferences, dataWithLocales, docWithLocales, fields, localesToPreserve, localesToUpdate, parentIsLocalized, }: MergeLocalizedDataArgs): JsonObject;
|
|
19
29
|
export {};
|
|
20
30
|
//# sourceMappingURL=mergeLocalizedData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeLocalizedData.d.ts","sourceRoot":"","sources":["../../src/utilities/mergeLocalizedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,KAAK,EAAkB,MAAM,2BAA2B,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"mergeLocalizedData.d.ts","sourceRoot":"","sources":["../../src/utilities/mergeLocalizedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,KAAK,EAAkB,MAAM,2BAA2B,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAsDnD,KAAK,sBAAsB,GAAG;IAC5B,qBAAqB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAChD,eAAe,EAAE,UAAU,CAAA;IAC3B,cAAc,EAAE,UAAU,CAAA;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,iBAAyB,GAC1B,EAAE,sBAAsB,GAAG,UAAU,CAmSrC"}
|
|
@@ -26,12 +26,31 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
26
26
|
}
|
|
27
27
|
return names;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Returns a copy of `existingValue` (a locale-keyed object) keeping only locales
|
|
31
|
+
* that are in `localesToPreserve` (when provided) or all locales (when not provided).
|
|
32
|
+
*/ function filterPreservedData(existingValue, localesToPreserve) {
|
|
33
|
+
const existing = existingValue && typeof existingValue === 'object' ? existingValue : {};
|
|
34
|
+
if (!localesToPreserve) {
|
|
35
|
+
return {
|
|
36
|
+
...existing
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const out = {};
|
|
40
|
+
for (const lc of localesToPreserve){
|
|
41
|
+
if (lc in existing) {
|
|
42
|
+
out[lc] = existing[lc];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
29
47
|
/**
|
|
30
48
|
* Merges data from dataWithLocales onto docWithLocales for specified locales.
|
|
31
|
-
* For localized fields, merges only the specified locales while preserving others
|
|
49
|
+
* For localized fields, merges only the specified locales while preserving others
|
|
50
|
+
* (or only `localesToPreserve` if supplied).
|
|
32
51
|
* For non-localized fields, keeps existing values from docWithLocales unchanged.
|
|
33
52
|
* Returns a new object without mutating the original.
|
|
34
|
-
*/ export function mergeLocalizedData({ configBlockReferences, dataWithLocales, docWithLocales, fields, parentIsLocalized = false
|
|
53
|
+
*/ export function mergeLocalizedData({ configBlockReferences, dataWithLocales, docWithLocales, fields, localesToPreserve, localesToUpdate, parentIsLocalized = false }) {
|
|
35
54
|
if (!docWithLocales || typeof docWithLocales !== 'object') {
|
|
36
55
|
return dataWithLocales || docWithLocales;
|
|
37
56
|
}
|
|
@@ -58,10 +77,8 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
58
77
|
if (fieldIsLocalized) {
|
|
59
78
|
// If localized, handle locale keys
|
|
60
79
|
if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {
|
|
61
|
-
const updatedArray =
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
for (const locale of selectedLocales){
|
|
80
|
+
const updatedArray = filterPreservedData(existingValue, localesToPreserve);
|
|
81
|
+
for (const locale of localesToUpdate){
|
|
65
82
|
if (locale in newValue) {
|
|
66
83
|
updatedArray[locale] = newValue[locale];
|
|
67
84
|
}
|
|
@@ -80,8 +97,9 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
80
97
|
dataWithLocales: newItem,
|
|
81
98
|
docWithLocales: existingItem,
|
|
82
99
|
fields: field.fields,
|
|
83
|
-
|
|
84
|
-
|
|
100
|
+
localesToPreserve,
|
|
101
|
+
localesToUpdate,
|
|
102
|
+
parentIsLocalized
|
|
85
103
|
});
|
|
86
104
|
});
|
|
87
105
|
}
|
|
@@ -96,10 +114,8 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
96
114
|
if (fieldIsLocalized) {
|
|
97
115
|
// If localized, handle locale keys
|
|
98
116
|
if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {
|
|
99
|
-
const updatedData =
|
|
100
|
-
|
|
101
|
-
};
|
|
102
|
-
for (const locale of selectedLocales){
|
|
117
|
+
const updatedData = filterPreservedData(existingValue, localesToPreserve);
|
|
118
|
+
for (const locale of localesToUpdate){
|
|
103
119
|
if (locale in newValue) {
|
|
104
120
|
updatedData[locale] = newValue[locale];
|
|
105
121
|
}
|
|
@@ -112,18 +128,11 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
112
128
|
} else if (Array.isArray(newValue)) {
|
|
113
129
|
// Non-localized blocks - still process children for any localized fields
|
|
114
130
|
result[field.name] = newValue.map((newBlockData, index)=>{
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
} else {
|
|
121
|
-
block = blockOrReference;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
} else if (field.blocks) {
|
|
125
|
-
block = field.blocks.find((b)=>b.slug === newBlockData.blockType);
|
|
126
|
-
}
|
|
131
|
+
const blockOrSlug = field.blocks.find((b)=>{
|
|
132
|
+
const slug = typeof b === 'string' ? b : b.slug;
|
|
133
|
+
return slug === newBlockData.blockType;
|
|
134
|
+
});
|
|
135
|
+
const block = typeof blockOrSlug === 'string' ? configBlockReferences?.find((b)=>b.slug === blockOrSlug) : blockOrSlug;
|
|
127
136
|
if (block) {
|
|
128
137
|
const blockData = Array.isArray(existingValue) && existingValue[index] ? existingValue[index] : {};
|
|
129
138
|
const merged = mergeLocalizedData({
|
|
@@ -131,8 +140,9 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
131
140
|
dataWithLocales: newBlockData,
|
|
132
141
|
docWithLocales: blockData,
|
|
133
142
|
fields: block?.fields || [],
|
|
134
|
-
|
|
135
|
-
|
|
143
|
+
localesToPreserve,
|
|
144
|
+
localesToUpdate,
|
|
145
|
+
parentIsLocalized
|
|
136
146
|
});
|
|
137
147
|
// blockType, id, blockName are set by Payload internally
|
|
138
148
|
// and not part of block.fields, so they must be preserved explicitly
|
|
@@ -156,10 +166,8 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
156
166
|
const existingValue = docWithLocales[field.name];
|
|
157
167
|
if (fieldIsLocalized) {
|
|
158
168
|
if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {
|
|
159
|
-
const groupData =
|
|
160
|
-
|
|
161
|
-
};
|
|
162
|
-
for (const locale of selectedLocales){
|
|
169
|
+
const groupData = filterPreservedData(existingValue, localesToPreserve);
|
|
170
|
+
for (const locale of localesToUpdate){
|
|
163
171
|
if (locale in newValue && typeof newValue[locale] === 'object') {
|
|
164
172
|
groupData[locale] = newValue[locale];
|
|
165
173
|
}
|
|
@@ -176,8 +184,9 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
176
184
|
dataWithLocales: newValue,
|
|
177
185
|
docWithLocales: existingValue || {},
|
|
178
186
|
fields: field.fields,
|
|
179
|
-
|
|
180
|
-
|
|
187
|
+
localesToPreserve,
|
|
188
|
+
localesToUpdate,
|
|
189
|
+
parentIsLocalized
|
|
181
190
|
});
|
|
182
191
|
}
|
|
183
192
|
}
|
|
@@ -193,10 +202,8 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
193
202
|
const existingValue = docWithLocales[field.name] || {};
|
|
194
203
|
// If localized, handle locale keys
|
|
195
204
|
if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {
|
|
196
|
-
const merged =
|
|
197
|
-
|
|
198
|
-
};
|
|
199
|
-
for (const locale of selectedLocales){
|
|
205
|
+
const merged = filterPreservedData(existingValue, localesToPreserve);
|
|
206
|
+
for (const locale of localesToUpdate){
|
|
200
207
|
if (locale in newValue) {
|
|
201
208
|
merged[locale] = newValue[locale];
|
|
202
209
|
}
|
|
@@ -231,8 +238,9 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
231
238
|
dataWithLocales,
|
|
232
239
|
docWithLocales,
|
|
233
240
|
fields: field.fields,
|
|
234
|
-
|
|
235
|
-
|
|
241
|
+
localesToPreserve,
|
|
242
|
+
localesToUpdate,
|
|
243
|
+
parentIsLocalized
|
|
236
244
|
});
|
|
237
245
|
// Only copy fields that belong to this layout field to avoid overwriting already-processed fields
|
|
238
246
|
const fieldNames = collectFlattenedFieldNames(field.fields);
|
|
@@ -257,10 +265,8 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
257
265
|
const existingValue = docWithLocales[tab.name];
|
|
258
266
|
if (tabIsLocalized) {
|
|
259
267
|
if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {
|
|
260
|
-
const merged =
|
|
261
|
-
|
|
262
|
-
};
|
|
263
|
-
for (const locale of selectedLocales){
|
|
268
|
+
const merged = filterPreservedData(existingValue, localesToPreserve);
|
|
269
|
+
for (const locale of localesToUpdate){
|
|
264
270
|
if (locale in newValue && typeof newValue[locale] === 'object') {
|
|
265
271
|
merged[locale] = newValue[locale];
|
|
266
272
|
}
|
|
@@ -277,8 +283,9 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
277
283
|
dataWithLocales: newValue,
|
|
278
284
|
docWithLocales: existingValue || {},
|
|
279
285
|
fields: tab.fields,
|
|
280
|
-
|
|
281
|
-
|
|
286
|
+
localesToPreserve,
|
|
287
|
+
localesToUpdate,
|
|
288
|
+
parentIsLocalized
|
|
282
289
|
});
|
|
283
290
|
}
|
|
284
291
|
}
|
|
@@ -289,8 +296,9 @@ import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/
|
|
|
289
296
|
dataWithLocales,
|
|
290
297
|
docWithLocales,
|
|
291
298
|
fields: tab.fields,
|
|
292
|
-
|
|
293
|
-
|
|
299
|
+
localesToPreserve,
|
|
300
|
+
localesToUpdate,
|
|
301
|
+
parentIsLocalized
|
|
294
302
|
});
|
|
295
303
|
// Only copy fields that belong to this tab to avoid overwriting already-processed fields
|
|
296
304
|
const tabFieldNames = collectFlattenedFieldNames(tab.fields);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/mergeLocalizedData.ts"],"sourcesContent":["import type { Block, Field, FlattenedBlock } from '../fields/config/types.js'\nimport type { SanitizedConfig } from '../index.js'\nimport type { JsonObject } from '../types/index.js'\n\nimport { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/config/types.js'\n\n/**\n * Collects field names at the current data level, recursing through pass-through fields\n * (row, collapsible, unnamed group, unnamed tab) but stopping at named fields.\n */\nfunction collectFlattenedFieldNames(fields: Field[]): Set<string> {\n const names = new Set<string>()\n for (const field of fields) {\n if (fieldAffectsData(field)) {\n names.add(field.name)\n } else if ('fields' in field && Array.isArray(field.fields)) {\n // Pass-through fields (row, collapsible, unnamed group)\n for (const name of collectFlattenedFieldNames(field.fields)) {\n names.add(name)\n }\n } else if (field.type === 'tabs') {\n for (const tab of field.tabs) {\n if (tabHasName(tab)) {\n names.add(tab.name)\n } else {\n for (const name of collectFlattenedFieldNames(tab.fields)) {\n names.add(name)\n }\n }\n }\n }\n }\n return names\n}\n\ntype MergeDataToSelectedLocalesArgs = {\n configBlockReferences: SanitizedConfig['blocks']\n dataWithLocales: JsonObject\n docWithLocales: JsonObject\n fields: Field[]\n parentIsLocalized?: boolean\n selectedLocales: string[]\n}\n\n/**\n * Merges data from dataWithLocales onto docWithLocales for specified locales.\n * For localized fields, merges only the specified locales while preserving others.\n * For non-localized fields, keeps existing values from docWithLocales unchanged.\n * Returns a new object without mutating the original.\n */\nexport function mergeLocalizedData({\n configBlockReferences,\n dataWithLocales,\n docWithLocales,\n fields,\n parentIsLocalized = false,\n selectedLocales,\n}: MergeDataToSelectedLocalesArgs): JsonObject {\n if (!docWithLocales || typeof docWithLocales !== 'object') {\n return dataWithLocales || docWithLocales\n }\n\n const result: JsonObject = { ...docWithLocales }\n\n for (const field of fields) {\n if (fieldAffectsData(field)) {\n // If the parent is localized, all children are inherently \"localized\"\n if (parentIsLocalized && dataWithLocales[field.name]) {\n result[field.name] = dataWithLocales[field.name]\n continue\n }\n\n const fieldIsLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n switch (field.type) {\n case 'array': {\n if (field.name in dataWithLocales) {\n const newValue = dataWithLocales[field.name]\n const existingValue = docWithLocales[field.name]\n\n if (fieldIsLocalized) {\n // If localized, handle locale keys\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const updatedArray: Record<string, unknown> = { ...(existingValue || {}) }\n\n for (const locale of selectedLocales) {\n if (locale in newValue) {\n updatedArray[locale] = newValue[locale]\n }\n }\n\n result[field.name] = updatedArray\n } else {\n // Preserve existing value if new value is not a valid object\n result[field.name] = existingValue\n }\n } else if (Array.isArray(newValue)) {\n // Non-localized array - still process children for any localized fields\n result[field.name] = newValue.map((newItem: JsonObject, index: number) => {\n const existingItem = existingValue?.[index] || {}\n\n return mergeLocalizedData({\n configBlockReferences,\n dataWithLocales: newItem,\n docWithLocales: existingItem,\n fields: field.fields,\n parentIsLocalized,\n selectedLocales,\n })\n })\n }\n }\n break\n }\n\n case 'blocks': {\n if (field.name in dataWithLocales) {\n const newValue = dataWithLocales[field.name]\n const existingValue = docWithLocales[field.name]\n\n if (fieldIsLocalized) {\n // If localized, handle locale keys\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const updatedData: Record<string, unknown> = { ...(existingValue || {}) }\n\n for (const locale of selectedLocales) {\n if (locale in newValue) {\n updatedData[locale] = newValue[locale]\n }\n }\n\n result[field.name] = updatedData\n } else {\n // Preserve existing value if new value is not a valid object\n result[field.name] = existingValue\n }\n } else if (Array.isArray(newValue)) {\n // Non-localized blocks - still process children for any localized fields\n result[field.name] = newValue.map((newBlockData: JsonObject, index: number) => {\n let block: Block | FlattenedBlock | undefined\n if (configBlockReferences && field.blockReferences) {\n for (const blockOrReference of field.blockReferences) {\n if (typeof blockOrReference === 'string') {\n block = configBlockReferences.find((b) => b.slug === newBlockData.blockType)\n } else {\n block = blockOrReference\n }\n }\n } else if (field.blocks) {\n block = field.blocks.find((b) => b.slug === newBlockData.blockType)\n }\n\n if (block) {\n const blockData =\n Array.isArray(existingValue) && existingValue[index]\n ? (existingValue[index] as JsonObject)\n : {}\n\n const merged = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales: newBlockData,\n docWithLocales: blockData,\n fields: block?.fields || [],\n parentIsLocalized,\n selectedLocales,\n })\n\n // blockType, id, blockName are set by Payload internally\n // and not part of block.fields, so they must be preserved explicitly\n merged.blockType = newBlockData.blockType\n merged.id = newBlockData.id\n merged.blockName = newBlockData.blockName\n\n return merged\n }\n\n return newBlockData\n })\n }\n }\n break\n }\n\n case 'group': {\n if (fieldAffectsData(field) && field.name) {\n // Named groups create a nested data structure\n if (field.name in dataWithLocales) {\n const newValue = dataWithLocales[field.name]\n const existingValue = docWithLocales[field.name]\n\n if (fieldIsLocalized) {\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const groupData: Record<string, unknown> = { ...(existingValue || {}) }\n\n for (const locale of selectedLocales) {\n if (locale in newValue && typeof newValue[locale] === 'object') {\n groupData[locale] = newValue[locale]\n }\n }\n\n result[field.name] = groupData\n } else {\n // Preserve existing value if new value is not a valid object\n result[field.name] = existingValue\n }\n } else if (typeof newValue === 'object' && !Array.isArray(newValue)) {\n // Non-localized group - still process children for any localized fields\n result[field.name] = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales: newValue,\n docWithLocales: existingValue || {},\n fields: field.fields,\n parentIsLocalized,\n selectedLocales,\n })\n }\n }\n }\n break\n }\n\n default: {\n // For all other data-affecting fields (text, number, select, etc.)\n if (fieldIsLocalized) {\n if (field.name in dataWithLocales) {\n const newValue = dataWithLocales[field.name]\n const existingValue = docWithLocales[field.name] || {}\n\n // If localized, handle locale keys\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const merged: Record<string, unknown> = { ...existingValue }\n\n for (const locale of selectedLocales) {\n if (locale in newValue) {\n merged[locale] = newValue[locale]\n }\n }\n\n result[field.name] = merged\n } else if (parentIsLocalized) {\n // Child of localized parent - replace with new value\n result[field.name] = newValue\n } else {\n // Preserve existing value if new value is not a valid object\n result[field.name] = existingValue\n }\n }\n } else if (parentIsLocalized) {\n result[field.name] = dataWithLocales[field.name]\n } else {\n result[field.name] =\n field.name in dataWithLocales\n ? dataWithLocales[field.name]\n : docWithLocales[field.name]\n }\n break\n }\n }\n } else {\n // Layout-only fields that don't affect data structure\n switch (field.type) {\n case 'collapsible':\n case 'group':\n case 'row': {\n // These pass through the same data level\n const merged = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales,\n docWithLocales,\n fields: field.fields,\n parentIsLocalized,\n selectedLocales,\n })\n // Only copy fields that belong to this layout field to avoid overwriting already-processed fields\n const fieldNames = collectFlattenedFieldNames(field.fields)\n for (const name of fieldNames) {\n if (name in merged) {\n result[name] = merged[name]\n }\n }\n break\n }\n\n case 'tabs': {\n for (const tab of field.tabs) {\n if (tabHasName(tab)) {\n // Named tabs create a nested data structure and can be localized\n const tabIsLocalized = fieldShouldBeLocalized({ field: tab, parentIsLocalized })\n\n if (tab.name in dataWithLocales) {\n const newValue = dataWithLocales[tab.name]\n const existingValue = docWithLocales[tab.name]\n\n if (tabIsLocalized) {\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const merged: Record<string, unknown> = { ...(existingValue || {}) }\n\n for (const locale of selectedLocales) {\n if (locale in newValue && typeof newValue[locale] === 'object') {\n merged[locale] = newValue[locale]\n }\n }\n\n result[tab.name] = merged\n } else {\n // Preserve existing value if new value is not a valid object\n result[tab.name] = existingValue\n }\n } else if (typeof newValue === 'object' && !Array.isArray(newValue)) {\n // Non-localized tab - still process children for any localized fields\n result[tab.name] = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales: newValue as JsonObject,\n docWithLocales: existingValue || {},\n fields: tab.fields,\n parentIsLocalized,\n selectedLocales,\n })\n }\n }\n } else {\n // Unnamed tabs pass through the same data level\n const merged = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales,\n docWithLocales,\n fields: tab.fields,\n parentIsLocalized,\n selectedLocales,\n })\n // Only copy fields that belong to this tab to avoid overwriting already-processed fields\n const tabFieldNames = collectFlattenedFieldNames(tab.fields)\n for (const name of tabFieldNames) {\n if (name in merged) {\n result[name] = merged[name]\n }\n }\n }\n }\n break\n }\n }\n }\n }\n\n return result\n}\n"],"names":["fieldAffectsData","fieldShouldBeLocalized","tabHasName","collectFlattenedFieldNames","fields","names","Set","field","add","name","Array","isArray","type","tab","tabs","mergeLocalizedData","configBlockReferences","dataWithLocales","docWithLocales","parentIsLocalized","selectedLocales","result","fieldIsLocalized","newValue","existingValue","updatedArray","locale","map","newItem","index","existingItem","updatedData","newBlockData","block","blockReferences","blockOrReference","find","b","slug","blockType","blocks","blockData","merged","id","blockName","groupData","fieldNames","tabIsLocalized","tabFieldNames"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/mergeLocalizedData.ts"],"sourcesContent":["import type { Block, Field, FlattenedBlock } from '../fields/config/types.js'\nimport type { SanitizedConfig } from '../index.js'\nimport type { JsonObject } from '../types/index.js'\n\nimport { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from '../fields/config/types.js'\n\n/**\n * Collects field names at the current data level, recursing through pass-through fields\n * (row, collapsible, unnamed group, unnamed tab) but stopping at named fields.\n */\nfunction collectFlattenedFieldNames(fields: Field[]): Set<string> {\n const names = new Set<string>()\n for (const field of fields) {\n if (fieldAffectsData(field)) {\n names.add(field.name)\n } else if ('fields' in field && Array.isArray(field.fields)) {\n // Pass-through fields (row, collapsible, unnamed group)\n for (const name of collectFlattenedFieldNames(field.fields)) {\n names.add(name)\n }\n } else if (field.type === 'tabs') {\n for (const tab of field.tabs) {\n if (tabHasName(tab)) {\n names.add(tab.name)\n } else {\n for (const name of collectFlattenedFieldNames(tab.fields)) {\n names.add(name)\n }\n }\n }\n }\n }\n return names\n}\n\n/**\n * Returns a copy of `existingValue` (a locale-keyed object) keeping only locales\n * that are in `localesToPreserve` (when provided) or all locales (when not provided).\n */\nfunction filterPreservedData(\n existingValue: unknown,\n localesToPreserve: string[] | undefined,\n): Record<string, unknown> {\n const existing = existingValue && typeof existingValue === 'object' ? existingValue : {}\n if (!localesToPreserve) {\n return { ...(existing as Record<string, unknown>) }\n }\n const out: Record<string, unknown> = {}\n for (const lc of localesToPreserve) {\n if (lc in (existing as Record<string, unknown>)) {\n out[lc] = (existing as Record<string, unknown>)[lc]\n }\n }\n return out\n}\n\ntype MergeLocalizedDataArgs = {\n configBlockReferences: SanitizedConfig['blocks']\n dataWithLocales: JsonObject\n docWithLocales: JsonObject\n fields: Field[]\n /**\n * Which locales from `docWithLocales` to retain in the output.\n * When omitted, all locales in `docWithLocales` are preserved (default behaviour).\n * Pass an explicit list (e.g. the currently-published locales) to discard locales\n * that should not be carried forward — for example, when publishing a single locale\n * you want to avoid leaking draft data that was written to the main doc by an earlier\n * create/update with `draft: true`.\n */\n localesToPreserve?: string[]\n localesToUpdate: string[]\n parentIsLocalized?: boolean\n}\n\n/**\n * Merges data from dataWithLocales onto docWithLocales for specified locales.\n * For localized fields, merges only the specified locales while preserving others\n * (or only `localesToPreserve` if supplied).\n * For non-localized fields, keeps existing values from docWithLocales unchanged.\n * Returns a new object without mutating the original.\n */\nexport function mergeLocalizedData({\n configBlockReferences,\n dataWithLocales,\n docWithLocales,\n fields,\n localesToPreserve,\n localesToUpdate,\n parentIsLocalized = false,\n}: MergeLocalizedDataArgs): JsonObject {\n if (!docWithLocales || typeof docWithLocales !== 'object') {\n return dataWithLocales || docWithLocales\n }\n\n const result: JsonObject = { ...docWithLocales }\n\n for (const field of fields) {\n if (fieldAffectsData(field)) {\n // If the parent is localized, all children are inherently \"localized\"\n if (parentIsLocalized && dataWithLocales[field.name]) {\n result[field.name] = dataWithLocales[field.name]\n continue\n }\n\n const fieldIsLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n switch (field.type) {\n case 'array': {\n if (field.name in dataWithLocales) {\n const newValue = dataWithLocales[field.name]\n const existingValue = docWithLocales[field.name]\n\n if (fieldIsLocalized) {\n // If localized, handle locale keys\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const updatedArray = filterPreservedData(existingValue, localesToPreserve)\n\n for (const locale of localesToUpdate) {\n if (locale in newValue) {\n updatedArray[locale] = newValue[locale]\n }\n }\n\n result[field.name] = updatedArray\n } else {\n // Preserve existing value if new value is not a valid object\n result[field.name] = existingValue\n }\n } else if (Array.isArray(newValue)) {\n // Non-localized array - still process children for any localized fields\n result[field.name] = newValue.map((newItem: JsonObject, index: number) => {\n const existingItem = existingValue?.[index] || {}\n\n return mergeLocalizedData({\n configBlockReferences,\n dataWithLocales: newItem,\n docWithLocales: existingItem,\n fields: field.fields,\n localesToPreserve,\n localesToUpdate,\n parentIsLocalized,\n })\n })\n }\n }\n break\n }\n\n case 'blocks': {\n if (field.name in dataWithLocales) {\n const newValue = dataWithLocales[field.name]\n const existingValue = docWithLocales[field.name]\n\n if (fieldIsLocalized) {\n // If localized, handle locale keys\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const updatedData = filterPreservedData(existingValue, localesToPreserve)\n\n for (const locale of localesToUpdate) {\n if (locale in newValue) {\n updatedData[locale] = newValue[locale]\n }\n }\n\n result[field.name] = updatedData\n } else {\n // Preserve existing value if new value is not a valid object\n result[field.name] = existingValue\n }\n } else if (Array.isArray(newValue)) {\n // Non-localized blocks - still process children for any localized fields\n result[field.name] = newValue.map((newBlockData: JsonObject, index: number) => {\n const blockOrSlug = field.blocks.find((b) => {\n const slug = typeof b === 'string' ? b : b.slug\n return slug === newBlockData.blockType\n })\n const block: Block | FlattenedBlock | undefined =\n typeof blockOrSlug === 'string'\n ? configBlockReferences?.find((b) => b.slug === blockOrSlug)\n : blockOrSlug\n\n if (block) {\n const blockData =\n Array.isArray(existingValue) && existingValue[index]\n ? (existingValue[index] as JsonObject)\n : {}\n\n const merged = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales: newBlockData,\n docWithLocales: blockData,\n fields: block?.fields || [],\n localesToPreserve,\n localesToUpdate,\n parentIsLocalized,\n })\n\n // blockType, id, blockName are set by Payload internally\n // and not part of block.fields, so they must be preserved explicitly\n merged.blockType = newBlockData.blockType\n merged.id = newBlockData.id\n merged.blockName = newBlockData.blockName\n\n return merged\n }\n\n return newBlockData\n })\n }\n }\n break\n }\n\n case 'group': {\n if (fieldAffectsData(field) && field.name) {\n // Named groups create a nested data structure\n if (field.name in dataWithLocales) {\n const newValue = dataWithLocales[field.name]\n const existingValue = docWithLocales[field.name]\n\n if (fieldIsLocalized) {\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const groupData = filterPreservedData(existingValue, localesToPreserve)\n\n for (const locale of localesToUpdate) {\n if (locale in newValue && typeof newValue[locale] === 'object') {\n groupData[locale] = newValue[locale]\n }\n }\n\n result[field.name] = groupData\n } else {\n // Preserve existing value if new value is not a valid object\n result[field.name] = existingValue\n }\n } else if (typeof newValue === 'object' && !Array.isArray(newValue)) {\n // Non-localized group - still process children for any localized fields\n result[field.name] = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales: newValue,\n docWithLocales: existingValue || {},\n fields: field.fields,\n localesToPreserve,\n localesToUpdate,\n parentIsLocalized,\n })\n }\n }\n }\n break\n }\n\n default: {\n // For all other data-affecting fields (text, number, select, etc.)\n if (fieldIsLocalized) {\n if (field.name in dataWithLocales) {\n const newValue = dataWithLocales[field.name]\n const existingValue = docWithLocales[field.name] || {}\n\n // If localized, handle locale keys\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const merged = filterPreservedData(existingValue, localesToPreserve)\n\n for (const locale of localesToUpdate) {\n if (locale in newValue) {\n merged[locale] = newValue[locale]\n }\n }\n\n result[field.name] = merged\n } else if (parentIsLocalized) {\n // Child of localized parent - replace with new value\n result[field.name] = newValue\n } else {\n // Preserve existing value if new value is not a valid object\n result[field.name] = existingValue\n }\n }\n } else if (parentIsLocalized) {\n result[field.name] = dataWithLocales[field.name]\n } else {\n result[field.name] =\n field.name in dataWithLocales\n ? dataWithLocales[field.name]\n : docWithLocales[field.name]\n }\n break\n }\n }\n } else {\n // Layout-only fields that don't affect data structure\n switch (field.type) {\n case 'collapsible':\n case 'group':\n case 'row': {\n // These pass through the same data level\n const merged = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales,\n docWithLocales,\n fields: field.fields,\n localesToPreserve,\n localesToUpdate,\n parentIsLocalized,\n })\n // Only copy fields that belong to this layout field to avoid overwriting already-processed fields\n const fieldNames = collectFlattenedFieldNames(field.fields)\n for (const name of fieldNames) {\n if (name in merged) {\n result[name] = merged[name]\n }\n }\n break\n }\n\n case 'tabs': {\n for (const tab of field.tabs) {\n if (tabHasName(tab)) {\n // Named tabs create a nested data structure and can be localized\n const tabIsLocalized = fieldShouldBeLocalized({ field: tab, parentIsLocalized })\n\n if (tab.name in dataWithLocales) {\n const newValue = dataWithLocales[tab.name]\n const existingValue = docWithLocales[tab.name]\n\n if (tabIsLocalized) {\n if (newValue && typeof newValue === 'object' && !Array.isArray(newValue)) {\n const merged = filterPreservedData(existingValue, localesToPreserve)\n\n for (const locale of localesToUpdate) {\n if (locale in newValue && typeof newValue[locale] === 'object') {\n merged[locale] = newValue[locale]\n }\n }\n\n result[tab.name] = merged\n } else {\n // Preserve existing value if new value is not a valid object\n result[tab.name] = existingValue\n }\n } else if (typeof newValue === 'object' && !Array.isArray(newValue)) {\n // Non-localized tab - still process children for any localized fields\n result[tab.name] = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales: newValue as JsonObject,\n docWithLocales: existingValue || {},\n fields: tab.fields,\n localesToPreserve,\n localesToUpdate,\n parentIsLocalized,\n })\n }\n }\n } else {\n // Unnamed tabs pass through the same data level\n const merged = mergeLocalizedData({\n configBlockReferences,\n dataWithLocales,\n docWithLocales,\n fields: tab.fields,\n localesToPreserve,\n localesToUpdate,\n parentIsLocalized,\n })\n // Only copy fields that belong to this tab to avoid overwriting already-processed fields\n const tabFieldNames = collectFlattenedFieldNames(tab.fields)\n for (const name of tabFieldNames) {\n if (name in merged) {\n result[name] = merged[name]\n }\n }\n }\n }\n break\n }\n }\n }\n }\n\n return result\n}\n"],"names":["fieldAffectsData","fieldShouldBeLocalized","tabHasName","collectFlattenedFieldNames","fields","names","Set","field","add","name","Array","isArray","type","tab","tabs","filterPreservedData","existingValue","localesToPreserve","existing","out","lc","mergeLocalizedData","configBlockReferences","dataWithLocales","docWithLocales","localesToUpdate","parentIsLocalized","result","fieldIsLocalized","newValue","updatedArray","locale","map","newItem","index","existingItem","updatedData","newBlockData","blockOrSlug","blocks","find","b","slug","blockType","block","blockData","merged","id","blockName","groupData","fieldNames","tabIsLocalized","tabFieldNames"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
2
|
import { mergeLocalizedData } from './mergeLocalizedData.js';
|
|
3
3
|
describe('mergeLocalizedData', ()=>{
|
|
4
|
-
const
|
|
4
|
+
const localesToUpdate = [
|
|
5
5
|
'en'
|
|
6
6
|
];
|
|
7
7
|
const configBlockReferences = [];
|
|
@@ -32,7 +32,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
32
32
|
dataWithLocales,
|
|
33
33
|
docWithLocales,
|
|
34
34
|
fields,
|
|
35
|
-
|
|
35
|
+
localesToUpdate
|
|
36
36
|
});
|
|
37
37
|
expect(result.title).toEqual({
|
|
38
38
|
en: 'Updated English Title',
|
|
@@ -57,7 +57,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
57
57
|
title: 'Old Title'
|
|
58
58
|
},
|
|
59
59
|
fields,
|
|
60
|
-
|
|
60
|
+
localesToUpdate
|
|
61
61
|
});
|
|
62
62
|
expect(result.title).toBe('New Title');
|
|
63
63
|
const missingData = mergeLocalizedData({
|
|
@@ -67,7 +67,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
67
67
|
title: 'Old Title'
|
|
68
68
|
},
|
|
69
69
|
fields,
|
|
70
|
-
|
|
70
|
+
localesToUpdate
|
|
71
71
|
});
|
|
72
72
|
expect(missingData.title).toBe('Old Title');
|
|
73
73
|
const updatedData = mergeLocalizedData({
|
|
@@ -77,7 +77,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
77
77
|
},
|
|
78
78
|
docWithLocales: {},
|
|
79
79
|
fields,
|
|
80
|
-
|
|
80
|
+
localesToUpdate
|
|
81
81
|
});
|
|
82
82
|
expect(updatedData.title).toBe('Updated Title');
|
|
83
83
|
});
|
|
@@ -126,7 +126,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
126
126
|
dataWithLocales,
|
|
127
127
|
docWithLocales,
|
|
128
128
|
fields,
|
|
129
|
-
|
|
129
|
+
localesToUpdate
|
|
130
130
|
});
|
|
131
131
|
expect(result.meta).toEqual({
|
|
132
132
|
en: {
|
|
@@ -181,7 +181,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
181
181
|
dataWithLocales,
|
|
182
182
|
docWithLocales,
|
|
183
183
|
fields,
|
|
184
|
-
|
|
184
|
+
localesToUpdate
|
|
185
185
|
});
|
|
186
186
|
expect(result.meta).toEqual({
|
|
187
187
|
title: {
|
|
@@ -241,7 +241,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
241
241
|
dataWithLocales,
|
|
242
242
|
docWithLocales,
|
|
243
243
|
fields,
|
|
244
|
-
|
|
244
|
+
localesToUpdate
|
|
245
245
|
});
|
|
246
246
|
expect(result.items).toEqual({
|
|
247
247
|
en: [
|
|
@@ -309,7 +309,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
309
309
|
dataWithLocales,
|
|
310
310
|
docWithLocales,
|
|
311
311
|
fields,
|
|
312
|
-
|
|
312
|
+
localesToUpdate
|
|
313
313
|
});
|
|
314
314
|
expect(result.items).toEqual([
|
|
315
315
|
{
|
|
@@ -378,7 +378,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
378
378
|
dataWithLocales,
|
|
379
379
|
docWithLocales,
|
|
380
380
|
fields,
|
|
381
|
-
|
|
381
|
+
localesToUpdate
|
|
382
382
|
});
|
|
383
383
|
expect(result.content).toEqual({
|
|
384
384
|
en: [
|
|
@@ -463,7 +463,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
463
463
|
dataWithLocales,
|
|
464
464
|
docWithLocales,
|
|
465
465
|
fields,
|
|
466
|
-
|
|
466
|
+
localesToUpdate
|
|
467
467
|
});
|
|
468
468
|
expect(result.content).toEqual({
|
|
469
469
|
en: [
|
|
@@ -530,7 +530,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
530
530
|
dataWithLocales,
|
|
531
531
|
docWithLocales,
|
|
532
532
|
fields,
|
|
533
|
-
|
|
533
|
+
localesToUpdate
|
|
534
534
|
});
|
|
535
535
|
expect(result.meta).toEqual({
|
|
536
536
|
en: {
|
|
@@ -575,7 +575,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
575
575
|
dataWithLocales,
|
|
576
576
|
docWithLocales,
|
|
577
577
|
fields,
|
|
578
|
-
|
|
578
|
+
localesToUpdate
|
|
579
579
|
});
|
|
580
580
|
expect(result.title).toEqual({
|
|
581
581
|
en: 'Updated EN Title',
|
|
@@ -653,7 +653,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
653
653
|
dataWithLocales,
|
|
654
654
|
docWithLocales,
|
|
655
655
|
fields,
|
|
656
|
-
|
|
656
|
+
localesToUpdate
|
|
657
657
|
});
|
|
658
658
|
expect(result.outer).toEqual({
|
|
659
659
|
en: {
|
|
@@ -705,7 +705,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
705
705
|
dataWithLocales,
|
|
706
706
|
docWithLocales,
|
|
707
707
|
fields,
|
|
708
|
-
|
|
708
|
+
localesToUpdate: [
|
|
709
709
|
'en',
|
|
710
710
|
'es'
|
|
711
711
|
]
|
|
@@ -765,7 +765,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
765
765
|
dataWithLocales,
|
|
766
766
|
docWithLocales,
|
|
767
767
|
fields,
|
|
768
|
-
|
|
768
|
+
localesToUpdate: [
|
|
769
769
|
'es'
|
|
770
770
|
]
|
|
771
771
|
});
|
|
@@ -835,7 +835,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
835
835
|
dataWithLocales,
|
|
836
836
|
docWithLocales,
|
|
837
837
|
fields,
|
|
838
|
-
|
|
838
|
+
localesToUpdate: [
|
|
839
839
|
'en'
|
|
840
840
|
]
|
|
841
841
|
});
|
|
@@ -884,7 +884,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
884
884
|
dataWithLocales,
|
|
885
885
|
docWithLocales,
|
|
886
886
|
fields,
|
|
887
|
-
|
|
887
|
+
localesToUpdate: [
|
|
888
888
|
'en'
|
|
889
889
|
]
|
|
890
890
|
});
|
|
@@ -929,7 +929,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
929
929
|
dataWithLocales,
|
|
930
930
|
docWithLocales,
|
|
931
931
|
fields,
|
|
932
|
-
|
|
932
|
+
localesToUpdate: [
|
|
933
933
|
'en'
|
|
934
934
|
]
|
|
935
935
|
});
|
|
@@ -943,7 +943,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
943
943
|
describe('block metadata preservation', ()=>{
|
|
944
944
|
it('should preserve blockType, id, and blockName when existing doc has no blocks', ()=>{
|
|
945
945
|
// Reproduces the bug where autosave creates a doc without blocks,
|
|
946
|
-
// then blocks are added and
|
|
946
|
+
// then blocks are added and publishing a specific locale drops metadata
|
|
947
947
|
const fields = [
|
|
948
948
|
{
|
|
949
949
|
name: 'layout',
|
|
@@ -981,7 +981,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
981
981
|
dataWithLocales,
|
|
982
982
|
docWithLocales,
|
|
983
983
|
fields,
|
|
984
|
-
|
|
984
|
+
localesToUpdate: [
|
|
985
985
|
'en'
|
|
986
986
|
]
|
|
987
987
|
});
|
|
@@ -1030,7 +1030,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
1030
1030
|
dataWithLocales,
|
|
1031
1031
|
docWithLocales,
|
|
1032
1032
|
fields,
|
|
1033
|
-
|
|
1033
|
+
localesToUpdate: [
|
|
1034
1034
|
'en'
|
|
1035
1035
|
]
|
|
1036
1036
|
});
|
|
@@ -1090,7 +1090,7 @@ describe('mergeLocalizedData', ()=>{
|
|
|
1090
1090
|
dataWithLocales,
|
|
1091
1091
|
docWithLocales,
|
|
1092
1092
|
fields,
|
|
1093
|
-
|
|
1093
|
+
localesToUpdate: [
|
|
1094
1094
|
'en'
|
|
1095
1095
|
]
|
|
1096
1096
|
});
|