payload 3.0.0-alpha.41 → 3.0.0-alpha.42
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/auth.js +1 -1
- package/config.js +1 -1
- package/database.js +1 -1
- package/dist/admin/RichText.js +1 -1
- package/dist/admin/RichText.js.map +1 -0
- package/dist/admin/elements/Cell.js +1 -1
- package/dist/admin/elements/Cell.js.map +1 -0
- package/dist/admin/elements/DatePicker.js +1 -1
- package/dist/admin/elements/DatePicker.js.map +1 -0
- package/dist/admin/elements/PreviewButton.js +1 -1
- package/dist/admin/elements/PreviewButton.js.map +1 -0
- package/dist/admin/elements/PublishButton.js +1 -1
- package/dist/admin/elements/PublishButton.js.map +1 -0
- package/dist/admin/elements/SaveButton.js +1 -1
- package/dist/admin/elements/SaveButton.js.map +1 -0
- package/dist/admin/elements/SaveDraftButton.js +1 -1
- package/dist/admin/elements/SaveDraftButton.js.map +1 -0
- package/dist/admin/elements/Tab.js +1 -1
- package/dist/admin/elements/Tab.js.map +1 -0
- package/dist/admin/forms/Error.js +1 -1
- package/dist/admin/forms/Error.js.map +1 -0
- package/dist/admin/forms/FieldDescription.js +1 -1
- package/dist/admin/forms/FieldDescription.js.map +1 -0
- package/dist/admin/forms/FieldTypes.js +1 -1
- package/dist/admin/forms/FieldTypes.js.map +1 -0
- package/dist/admin/forms/Form.js +1 -1
- package/dist/admin/forms/Form.js.map +1 -0
- package/dist/admin/forms/Label.js +1 -1
- package/dist/admin/forms/Label.js.map +1 -0
- package/dist/admin/forms/RowLabel.js +1 -1
- package/dist/admin/forms/RowLabel.js.map +1 -0
- package/dist/admin/types.js +1 -1
- package/dist/admin/types.js.map +1 -0
- package/dist/admin/views/types.js +1 -1
- package/dist/admin/views/types.js.map +1 -0
- package/dist/assets/assets.d.js +1 -1
- package/dist/assets/assets.d.js.map +1 -0
- package/dist/auth/baseFields/accountLock.js +1 -1
- package/dist/auth/baseFields/accountLock.js.map +1 -0
- package/dist/auth/baseFields/apiKey.js +1 -1
- package/dist/auth/baseFields/apiKey.js.map +1 -0
- package/dist/auth/baseFields/auth.js +1 -1
- package/dist/auth/baseFields/auth.js.map +1 -0
- package/dist/auth/baseFields/verification.js +1 -1
- package/dist/auth/baseFields/verification.js.map +1 -0
- package/dist/auth/cookies.js +1 -1
- package/dist/auth/cookies.js.map +1 -0
- package/dist/auth/crypto.js +1 -1
- package/dist/auth/crypto.js.map +1 -0
- package/dist/auth/defaultAccess.js +1 -1
- package/dist/auth/defaultAccess.js.map +1 -0
- package/dist/auth/defaultUser.js +1 -1
- package/dist/auth/defaultUser.js.map +1 -0
- package/dist/auth/executeAccess.js +1 -1
- package/dist/auth/executeAccess.js.map +1 -0
- package/dist/auth/extractJWT.js +1 -1
- package/dist/auth/extractJWT.js.map +1 -0
- package/dist/auth/getAccessResults.js +1 -1
- package/dist/auth/getAccessResults.js.map +1 -0
- package/dist/auth/getAuthenticatedUser.js +1 -1
- package/dist/auth/getAuthenticatedUser.js.map +1 -0
- package/dist/auth/getFieldsToSign.js +1 -1
- package/dist/auth/getFieldsToSign.js.map +1 -0
- package/dist/auth/index.js +1 -1
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/isLocked.js +1 -1
- package/dist/auth/isLocked.js.map +1 -0
- package/dist/auth/operations/access.js +1 -1
- package/dist/auth/operations/access.js.map +1 -0
- package/dist/auth/operations/forgotPassword.js +1 -1
- package/dist/auth/operations/forgotPassword.js.map +1 -0
- package/dist/auth/operations/init.js +1 -1
- package/dist/auth/operations/init.js.map +1 -0
- package/dist/auth/operations/local/forgotPassword.js +1 -1
- package/dist/auth/operations/local/forgotPassword.js.map +1 -0
- package/dist/auth/operations/local/index.js +1 -1
- package/dist/auth/operations/local/index.js.map +1 -0
- package/dist/auth/operations/local/login.js +1 -1
- package/dist/auth/operations/local/login.js.map +1 -0
- package/dist/auth/operations/local/resetPassword.js +1 -1
- package/dist/auth/operations/local/resetPassword.js.map +1 -0
- package/dist/auth/operations/local/unlock.js +1 -1
- package/dist/auth/operations/local/unlock.js.map +1 -0
- package/dist/auth/operations/local/verifyEmail.js +1 -1
- package/dist/auth/operations/local/verifyEmail.js.map +1 -0
- package/dist/auth/operations/login.js +1 -1
- package/dist/auth/operations/login.js.map +1 -0
- package/dist/auth/operations/logout.js +1 -1
- package/dist/auth/operations/logout.js.map +1 -0
- package/dist/auth/operations/me.js +1 -1
- package/dist/auth/operations/me.js.map +1 -0
- package/dist/auth/operations/refresh.js +1 -1
- package/dist/auth/operations/refresh.js.map +1 -0
- package/dist/auth/operations/registerFirstUser.js +1 -1
- package/dist/auth/operations/registerFirstUser.js.map +1 -0
- package/dist/auth/operations/resetPassword.js +1 -1
- package/dist/auth/operations/resetPassword.js.map +1 -0
- package/dist/auth/operations/unlock.js +1 -1
- package/dist/auth/operations/unlock.js.map +1 -0
- package/dist/auth/operations/verifyEmail.js +1 -1
- package/dist/auth/operations/verifyEmail.js.map +1 -0
- package/dist/auth/sendVerificationEmail.js +1 -1
- package/dist/auth/sendVerificationEmail.js.map +1 -0
- package/dist/auth/strategies/apiKey.js +1 -1
- package/dist/auth/strategies/apiKey.js.map +1 -0
- package/dist/auth/strategies/jwt.js +1 -1
- package/dist/auth/strategies/jwt.js.map +1 -0
- package/dist/auth/strategies/local/authenticate.js +1 -1
- package/dist/auth/strategies/local/authenticate.js.map +1 -0
- package/dist/auth/strategies/local/generatePasswordSaltHash.js +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -0
- package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
- package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -0
- package/dist/auth/strategies/local/register.js +1 -1
- package/dist/auth/strategies/local/register.js.map +1 -0
- package/dist/auth/strategies/local/resetLoginAttempts.js +1 -1
- package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -0
- package/dist/auth/types.js +1 -1
- package/dist/auth/types.js.map +1 -0
- package/dist/bin/generateTypes.js +1 -1
- package/dist/bin/generateTypes.js.map +1 -0
- package/dist/bin/index.js +1 -1
- package/dist/bin/index.js.map +1 -0
- package/dist/bin/loadEnv.js +1 -1
- package/dist/bin/loadEnv.js.map +1 -0
- package/dist/bin/migrate.js +1 -1
- package/dist/bin/migrate.js.map +1 -0
- package/dist/bin/register/clientExtensions.js +1 -1
- package/dist/bin/register/clientExtensions.js.map +1 -0
- package/dist/bin/register/index.js +1 -1
- package/dist/bin/register/index.js.map +1 -0
- package/dist/bin/register/read-default-tsconfig.js +1 -1
- package/dist/bin/register/read-default-tsconfig.js.map +1 -0
- package/dist/bin/register/register.js +1 -1
- package/dist/bin/register/register.js.map +1 -0
- package/dist/collections/config/build.js +1 -1
- package/dist/collections/config/build.js.map +1 -0
- package/dist/collections/config/defaults.js +1 -1
- package/dist/collections/config/defaults.js.map +1 -0
- package/dist/collections/config/sanitize.js +1 -1
- package/dist/collections/config/sanitize.js.map +1 -0
- package/dist/collections/config/schema.js +1 -1
- package/dist/collections/config/schema.js.map +1 -0
- package/dist/collections/config/types.js +1 -1
- package/dist/collections/config/types.js.map +1 -0
- package/dist/collections/dataloader.js +1 -1
- package/dist/collections/dataloader.js.map +1 -0
- package/dist/collections/operations/create.js +1 -1
- package/dist/collections/operations/create.js.map +1 -0
- package/dist/collections/operations/delete.js +1 -1
- package/dist/collections/operations/delete.js.map +1 -0
- package/dist/collections/operations/deleteByID.js +1 -1
- package/dist/collections/operations/deleteByID.js.map +1 -0
- package/dist/collections/operations/docAccess.js +1 -1
- package/dist/collections/operations/docAccess.js.map +1 -0
- package/dist/collections/operations/find.js +1 -1
- package/dist/collections/operations/find.js.map +1 -0
- package/dist/collections/operations/findByID.js +1 -1
- package/dist/collections/operations/findByID.js.map +1 -0
- package/dist/collections/operations/findVersionByID.js +1 -1
- package/dist/collections/operations/findVersionByID.js.map +1 -0
- package/dist/collections/operations/findVersions.js +1 -1
- package/dist/collections/operations/findVersions.js.map +1 -0
- package/dist/collections/operations/local/create.js +1 -1
- package/dist/collections/operations/local/create.js.map +1 -0
- package/dist/collections/operations/local/delete.js +1 -1
- package/dist/collections/operations/local/delete.js.map +1 -0
- package/dist/collections/operations/local/find.js +1 -1
- package/dist/collections/operations/local/find.js.map +1 -0
- package/dist/collections/operations/local/findByID.js +1 -1
- package/dist/collections/operations/local/findByID.js.map +1 -0
- package/dist/collections/operations/local/findVersionByID.js +1 -1
- package/dist/collections/operations/local/findVersionByID.js.map +1 -0
- package/dist/collections/operations/local/findVersions.js +1 -1
- package/dist/collections/operations/local/findVersions.js.map +1 -0
- package/dist/collections/operations/local/index.js +1 -1
- package/dist/collections/operations/local/index.js.map +1 -0
- package/dist/collections/operations/local/restoreVersion.js +1 -1
- package/dist/collections/operations/local/restoreVersion.js.map +1 -0
- package/dist/collections/operations/local/update.js +1 -1
- package/dist/collections/operations/local/update.js.map +1 -0
- package/dist/collections/operations/restoreVersion.js +1 -1
- package/dist/collections/operations/restoreVersion.js.map +1 -0
- package/dist/collections/operations/update.js +1 -1
- package/dist/collections/operations/update.js.map +1 -0
- package/dist/collections/operations/updateByID.js +1 -1
- package/dist/collections/operations/updateByID.js.map +1 -0
- package/dist/collections/operations/utils.js +1 -1
- package/dist/collections/operations/utils.js.map +1 -0
- package/dist/config/build.js +1 -1
- package/dist/config/build.js.map +1 -0
- package/dist/config/createClientConfig.js +1 -1
- package/dist/config/createClientConfig.js.map +1 -0
- package/dist/config/defaults.js +1 -1
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/find.js +1 -1
- package/dist/config/find.js.map +1 -0
- package/dist/config/load.js +1 -1
- package/dist/config/load.js.map +1 -0
- package/dist/config/sanitize.js +1 -1
- package/dist/config/sanitize.js.map +1 -0
- package/dist/config/schema.js +1 -1
- package/dist/config/schema.js.map +1 -0
- package/dist/config/shared/adminViewSchema.js +1 -1
- package/dist/config/shared/adminViewSchema.js.map +1 -0
- package/dist/config/shared/componentSchema.js +1 -1
- package/dist/config/shared/componentSchema.js.map +1 -0
- package/dist/config/types.js +1 -1
- package/dist/config/types.js.map +1 -0
- package/dist/config/validate.js +1 -1
- package/dist/config/validate.js.map +1 -0
- package/dist/database/combineQueries.js +1 -1
- package/dist/database/combineQueries.js.map +1 -0
- package/dist/database/createDatabaseAdapter.js +1 -1
- package/dist/database/createDatabaseAdapter.js.map +1 -0
- package/dist/database/flattenWhereToOperators.js +1 -1
- package/dist/database/flattenWhereToOperators.js.map +1 -0
- package/dist/database/getLocalizedPaths.js +1 -1
- package/dist/database/getLocalizedPaths.js.map +1 -0
- package/dist/database/migrations/createMigration.js +1 -1
- package/dist/database/migrations/createMigration.js.map +1 -0
- package/dist/database/migrations/getMigrations.js +1 -1
- package/dist/database/migrations/getMigrations.js.map +1 -0
- package/dist/database/migrations/migrate.js +1 -1
- package/dist/database/migrations/migrate.js.map +1 -0
- package/dist/database/migrations/migrateDown.js +1 -1
- package/dist/database/migrations/migrateDown.js.map +1 -0
- package/dist/database/migrations/migrateRefresh.js +1 -1
- package/dist/database/migrations/migrateRefresh.js.map +1 -0
- package/dist/database/migrations/migrateReset.js +1 -1
- package/dist/database/migrations/migrateReset.js.map +1 -0
- package/dist/database/migrations/migrateStatus.js +1 -1
- package/dist/database/migrations/migrateStatus.js.map +1 -0
- package/dist/database/migrations/migrationTemplate.js +1 -1
- package/dist/database/migrations/migrationTemplate.js.map +1 -0
- package/dist/database/migrations/migrationsCollection.js +1 -1
- package/dist/database/migrations/migrationsCollection.js.map +1 -0
- package/dist/database/migrations/readMigrationFiles.js +1 -1
- package/dist/database/migrations/readMigrationFiles.js.map +1 -0
- package/dist/database/queryValidation/types.js +1 -1
- package/dist/database/queryValidation/types.js.map +1 -0
- package/dist/database/queryValidation/validateQueryPaths.js +1 -1
- package/dist/database/queryValidation/validateQueryPaths.js.map +1 -0
- package/dist/database/queryValidation/validateSearchParams.js +1 -1
- package/dist/database/queryValidation/validateSearchParams.js.map +1 -0
- package/dist/database/types.js +1 -1
- package/dist/database/types.js.map +1 -0
- package/dist/email/build.js +1 -1
- package/dist/email/build.js.map +1 -0
- package/dist/email/defaults.js +1 -1
- package/dist/email/defaults.js.map +1 -0
- package/dist/email/mockHandler.js +1 -1
- package/dist/email/mockHandler.js.map +1 -0
- package/dist/email/sendEmail.js +1 -1
- package/dist/email/sendEmail.js.map +1 -0
- package/dist/email/types.js +1 -1
- package/dist/email/types.js.map +1 -0
- package/dist/errors/APIError.js +1 -1
- package/dist/errors/APIError.js.map +1 -0
- package/dist/errors/AuthenticationError.js +1 -1
- package/dist/errors/AuthenticationError.js.map +1 -0
- package/dist/errors/DuplicateCollection.js +1 -1
- package/dist/errors/DuplicateCollection.js.map +1 -0
- package/dist/errors/DuplicateFieldName.js +1 -1
- package/dist/errors/DuplicateFieldName.js.map +1 -0
- package/dist/errors/DuplicateGlobal.js +1 -1
- package/dist/errors/DuplicateGlobal.js.map +1 -0
- package/dist/errors/ErrorDeletingFile.js +1 -1
- package/dist/errors/ErrorDeletingFile.js.map +1 -0
- package/dist/errors/FileUploadError.js +1 -1
- package/dist/errors/FileUploadError.js.map +1 -0
- package/dist/errors/Forbidden.js +1 -1
- package/dist/errors/Forbidden.js.map +1 -0
- package/dist/errors/InvalidConfiguration.js +1 -1
- package/dist/errors/InvalidConfiguration.js.map +1 -0
- package/dist/errors/InvalidFieldName.js +1 -1
- package/dist/errors/InvalidFieldName.js.map +1 -0
- package/dist/errors/InvalidFieldRelationship.js +1 -1
- package/dist/errors/InvalidFieldRelationship.js.map +1 -0
- package/dist/errors/InvalidSchema.js +1 -1
- package/dist/errors/InvalidSchema.js.map +1 -0
- package/dist/errors/LockedAuth.js +1 -1
- package/dist/errors/LockedAuth.js.map +1 -0
- package/dist/errors/MissingCollectionLabel.js +1 -1
- package/dist/errors/MissingCollectionLabel.js.map +1 -0
- package/dist/errors/MissingFieldInputOptions.js +1 -1
- package/dist/errors/MissingFieldInputOptions.js.map +1 -0
- package/dist/errors/MissingFieldType.js +1 -1
- package/dist/errors/MissingFieldType.js.map +1 -0
- package/dist/errors/MissingFile.js +1 -1
- package/dist/errors/MissingFile.js.map +1 -0
- package/dist/errors/NotFound.js +1 -1
- package/dist/errors/NotFound.js.map +1 -0
- package/dist/errors/QueryError.js +1 -1
- package/dist/errors/QueryError.js.map +1 -0
- package/dist/errors/TimestampsRequired.js +1 -1
- package/dist/errors/TimestampsRequired.js.map +1 -0
- package/dist/errors/UnathorizedError.js +1 -1
- package/dist/errors/UnathorizedError.js.map +1 -0
- package/dist/errors/ValidationError.js +1 -1
- package/dist/errors/ValidationError.js.map +1 -0
- package/dist/errors/index.js +1 -1
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/types.js +1 -1
- package/dist/errors/types.js.map +1 -0
- package/dist/exports/auth.js +1 -1
- package/dist/exports/auth.js.map +1 -0
- package/dist/exports/components/utilities.js +1 -1
- package/dist/exports/components/utilities.js.map +1 -0
- package/dist/exports/config.js +1 -1
- package/dist/exports/config.js.map +1 -0
- package/dist/exports/database.js +1 -1
- package/dist/exports/database.js.map +1 -0
- package/dist/exports/errors.js +1 -1
- package/dist/exports/errors.js.map +1 -0
- package/dist/exports/fields/index.js +1 -1
- package/dist/exports/fields/index.js.map +1 -0
- package/dist/exports/fields/validations.js +1 -1
- package/dist/exports/fields/validations.js.map +1 -0
- package/dist/exports/operations.js +1 -1
- package/dist/exports/operations.js.map +1 -0
- package/dist/exports/types.js +1 -1
- package/dist/exports/types.js.map +1 -0
- package/dist/exports/utilities.js +1 -1
- package/dist/exports/utilities.js.map +1 -0
- package/dist/exports/versions.js +1 -1
- package/dist/exports/versions.js.map +1 -0
- package/dist/fields/baseFields/baseBlockFields.js +1 -1
- package/dist/fields/baseFields/baseBlockFields.js.map +1 -0
- package/dist/fields/baseFields/baseIDField.js +1 -1
- package/dist/fields/baseFields/baseIDField.js.map +1 -0
- package/dist/fields/config/sanitize.js +1 -1
- package/dist/fields/config/sanitize.js.map +1 -0
- package/dist/fields/config/sanitize.spec.js +1 -1
- package/dist/fields/config/sanitize.spec.js.map +1 -0
- package/dist/fields/config/schema.js +1 -1
- package/dist/fields/config/schema.js.map +1 -0
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/config/types.js.map +1 -0
- package/dist/fields/getDefaultValue.js +1 -1
- package/dist/fields/getDefaultValue.js.map +1 -0
- package/dist/fields/hooks/afterChange/index.js +1 -1
- package/dist/fields/hooks/afterChange/index.js.map +1 -0
- package/dist/fields/hooks/afterChange/promise.js +1 -1
- package/dist/fields/hooks/afterChange/promise.js.map +1 -0
- package/dist/fields/hooks/afterChange/traverseFields.js +1 -1
- package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -0
- package/dist/fields/hooks/afterRead/index.js +1 -1
- package/dist/fields/hooks/afterRead/index.js.map +1 -0
- package/dist/fields/hooks/afterRead/promise.js +1 -1
- package/dist/fields/hooks/afterRead/promise.js.map +1 -0
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -0
- package/dist/fields/hooks/afterRead/traverseFields.js +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -0
- package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js +1 -1
- package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js.map +1 -0
- package/dist/fields/hooks/beforeChange/getExistingRowDoc.js +1 -1
- package/dist/fields/hooks/beforeChange/getExistingRowDoc.js.map +1 -0
- package/dist/fields/hooks/beforeChange/index.js +1 -1
- package/dist/fields/hooks/beforeChange/index.js.map +1 -0
- package/dist/fields/hooks/beforeChange/promise.js +1 -1
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -0
- package/dist/fields/hooks/beforeChange/traverseFields.js +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -0
- package/dist/fields/hooks/beforeValidate/index.js +1 -1
- package/dist/fields/hooks/beforeValidate/index.js.map +1 -0
- package/dist/fields/hooks/beforeValidate/promise.js +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -0
- package/dist/fields/hooks/beforeValidate/traverseFields.js +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -0
- package/dist/fields/mergeBaseFields.js +1 -1
- package/dist/fields/mergeBaseFields.js.map +1 -0
- package/dist/fields/sortableFieldTypes.js +1 -1
- package/dist/fields/sortableFieldTypes.js.map +1 -0
- package/dist/fields/validations.js +1 -1
- package/dist/fields/validations.js.map +1 -0
- package/dist/fields/validations.spec.js +1 -1
- package/dist/fields/validations.spec.js.map +1 -0
- package/dist/globals/config/sanitize.js +1 -1
- package/dist/globals/config/sanitize.js.map +1 -0
- package/dist/globals/config/schema.js +1 -1
- package/dist/globals/config/schema.js.map +1 -0
- package/dist/globals/config/types.js +1 -1
- package/dist/globals/config/types.js.map +1 -0
- package/dist/globals/operations/docAccess.js +1 -1
- package/dist/globals/operations/docAccess.js.map +1 -0
- package/dist/globals/operations/findOne.js +1 -1
- package/dist/globals/operations/findOne.js.map +1 -0
- package/dist/globals/operations/findVersionByID.js +1 -1
- package/dist/globals/operations/findVersionByID.js.map +1 -0
- package/dist/globals/operations/findVersions.js +1 -1
- package/dist/globals/operations/findVersions.js.map +1 -0
- package/dist/globals/operations/local/findOne.js +1 -1
- package/dist/globals/operations/local/findOne.js.map +1 -0
- package/dist/globals/operations/local/findVersionByID.js +1 -1
- package/dist/globals/operations/local/findVersionByID.js.map +1 -0
- package/dist/globals/operations/local/findVersions.js +1 -1
- package/dist/globals/operations/local/findVersions.js.map +1 -0
- package/dist/globals/operations/local/index.js +1 -1
- package/dist/globals/operations/local/index.js.map +1 -0
- package/dist/globals/operations/local/restoreVersion.js +1 -1
- package/dist/globals/operations/local/restoreVersion.js.map +1 -0
- package/dist/globals/operations/local/update.js +1 -1
- package/dist/globals/operations/local/update.js.map +1 -0
- package/dist/globals/operations/restoreVersion.js +1 -1
- package/dist/globals/operations/restoreVersion.js.map +1 -0
- package/dist/globals/operations/update.js +1 -1
- package/dist/globals/operations/update.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -0
- package/dist/localization/middleware.js +1 -1
- package/dist/localization/middleware.js.map +1 -0
- package/dist/localization/sanitizeFallbackLocale.js +1 -1
- package/dist/localization/sanitizeFallbackLocale.js.map +1 -0
- package/dist/preferences/deleteUserPreferences.js +1 -1
- package/dist/preferences/deleteUserPreferences.js.map +1 -0
- package/dist/preferences/operations/delete.d.ts.map +1 -1
- package/dist/preferences/operations/delete.js +1 -2
- package/dist/preferences/operations/delete.js.map +1 -0
- package/dist/preferences/operations/findOne.js +1 -1
- package/dist/preferences/operations/findOne.js.map +1 -0
- package/dist/preferences/operations/update.js +1 -1
- package/dist/preferences/operations/update.js.map +1 -0
- package/dist/preferences/preferencesCollection.js +1 -1
- package/dist/preferences/preferencesCollection.js.map +1 -0
- package/dist/preferences/requestHandlers/delete.js +1 -1
- package/dist/preferences/requestHandlers/delete.js.map +1 -0
- package/dist/preferences/requestHandlers/findOne.js +1 -1
- package/dist/preferences/requestHandlers/findOne.js.map +1 -0
- package/dist/preferences/requestHandlers/update.js +1 -1
- package/dist/preferences/requestHandlers/update.js.map +1 -0
- package/dist/preferences/types.js +1 -1
- package/dist/preferences/types.js.map +1 -0
- package/dist/translations/extractTranslations.js +1 -1
- package/dist/translations/extractTranslations.js.map +1 -0
- package/dist/translations/getLocalI18n.js +1 -1
- package/dist/translations/getLocalI18n.js.map +1 -0
- package/dist/types/constants.js +1 -1
- package/dist/types/constants.js.map +1 -0
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -0
- package/dist/uploads/canResizeImage.js +1 -1
- package/dist/uploads/canResizeImage.js.map +1 -0
- package/dist/uploads/cropImage.js +1 -1
- package/dist/uploads/cropImage.js.map +1 -0
- package/dist/uploads/deleteAssociatedFiles.js +1 -1
- package/dist/uploads/deleteAssociatedFiles.js.map +1 -0
- package/dist/uploads/docWithFilenameExists.js +1 -1
- package/dist/uploads/docWithFilenameExists.js.map +1 -0
- package/dist/uploads/fileExists.js +1 -1
- package/dist/uploads/fileExists.js.map +1 -0
- package/dist/uploads/formatFilesize.js +1 -1
- package/dist/uploads/formatFilesize.js.map +1 -0
- package/dist/uploads/generateFileData.js +1 -1
- package/dist/uploads/generateFileData.js.map +1 -0
- package/dist/uploads/getBaseFields.js +1 -1
- package/dist/uploads/getBaseFields.js.map +1 -0
- package/dist/uploads/getExternalFile.js +1 -1
- package/dist/uploads/getExternalFile.js.map +1 -0
- package/dist/uploads/getFileByPath.js +1 -1
- package/dist/uploads/getFileByPath.js.map +1 -0
- package/dist/uploads/getImageSize.js +1 -1
- package/dist/uploads/getImageSize.js.map +1 -0
- package/dist/uploads/getSafeFilename.js +1 -1
- package/dist/uploads/getSafeFilename.js.map +1 -0
- package/dist/uploads/imageResizer.js +1 -1
- package/dist/uploads/imageResizer.js.map +1 -0
- package/dist/uploads/isImage.d.ts.map +1 -1
- package/dist/uploads/isImage.js +3 -2
- package/dist/uploads/isImage.js.map +1 -0
- package/dist/uploads/mimeTypeValidator.js +1 -1
- package/dist/uploads/mimeTypeValidator.js.map +1 -0
- package/dist/uploads/mimeTypeValidator.spec.js +1 -1
- package/dist/uploads/mimeTypeValidator.spec.js.map +1 -0
- package/dist/uploads/saveBufferToFile.js +1 -1
- package/dist/uploads/saveBufferToFile.js.map +1 -0
- package/dist/uploads/types.js +1 -1
- package/dist/uploads/types.js.map +1 -0
- package/dist/uploads/unlinkTempFiles.js +1 -1
- package/dist/uploads/unlinkTempFiles.js.map +1 -0
- package/dist/uploads/uploadFiles.js +1 -1
- package/dist/uploads/uploadFiles.js.map +1 -0
- package/dist/utilities/checkDuplicateCollections.js +1 -1
- package/dist/utilities/checkDuplicateCollections.js.map +1 -0
- package/dist/utilities/combineMerge.js +1 -1
- package/dist/utilities/combineMerge.js.map +1 -0
- package/dist/utilities/commitTransaction.js +1 -1
- package/dist/utilities/commitTransaction.js.map +1 -0
- package/dist/utilities/configToJSONSchema.js +1 -1
- package/dist/utilities/configToJSONSchema.js.map +1 -0
- package/dist/utilities/configToJSONSchema.spec.js +1 -1
- package/dist/utilities/configToJSONSchema.spec.js.map +1 -0
- package/dist/utilities/convertData.js +1 -1
- package/dist/utilities/convertData.js.map +1 -0
- package/dist/utilities/createArrayFromCommaDelineated.js +1 -1
- package/dist/utilities/createArrayFromCommaDelineated.js.map +1 -0
- package/dist/utilities/createLocalReq.js +1 -1
- package/dist/utilities/createLocalReq.js.map +1 -0
- package/dist/utilities/deepCopyObject.js +1 -1
- package/dist/utilities/deepCopyObject.js.map +1 -0
- package/dist/utilities/deepMerge.js +1 -1
- package/dist/utilities/deepMerge.js.map +1 -0
- package/dist/utilities/fieldSchemaToJSON.js +1 -1
- package/dist/utilities/fieldSchemaToJSON.js.map +1 -0
- package/dist/utilities/flattenTopLevelFields.js +1 -1
- package/dist/utilities/flattenTopLevelFields.js.map +1 -0
- package/dist/utilities/formatLabels.js +1 -1
- package/dist/utilities/formatLabels.js.map +1 -0
- package/dist/utilities/formatLabels.spec.js +1 -1
- package/dist/utilities/formatLabels.spec.js.map +1 -0
- package/dist/utilities/getCSSVariable.js +1 -1
- package/dist/utilities/getCSSVariable.js.map +1 -0
- package/dist/utilities/getCollectionIDFieldTypes.js +1 -1
- package/dist/utilities/getCollectionIDFieldTypes.js.map +1 -0
- package/dist/utilities/getEntityPolicies.js +1 -1
- package/dist/utilities/getEntityPolicies.js.map +1 -0
- package/dist/utilities/getIDType.js +1 -1
- package/dist/utilities/getIDType.js.map +1 -0
- package/dist/utilities/getObjectDotNotation.js +1 -1
- package/dist/utilities/getObjectDotNotation.js.map +1 -0
- package/dist/utilities/getUniqueListBy.js +1 -1
- package/dist/utilities/getUniqueListBy.js.map +1 -0
- package/dist/utilities/initTransaction.js +1 -1
- package/dist/utilities/initTransaction.js.map +1 -0
- package/dist/utilities/isEntityHidden.js +1 -1
- package/dist/utilities/isEntityHidden.js.map +1 -0
- package/dist/utilities/isNumber.js +1 -1
- package/dist/utilities/isNumber.js.map +1 -0
- package/dist/utilities/isPlainObject.js +1 -1
- package/dist/utilities/isPlainObject.js.map +1 -0
- package/dist/utilities/isValidID.js +1 -1
- package/dist/utilities/isValidID.js.map +1 -0
- package/dist/utilities/isolateObjectProperty.js +1 -1
- package/dist/utilities/isolateObjectProperty.js.map +1 -0
- package/dist/utilities/killTransaction.js +1 -1
- package/dist/utilities/killTransaction.js.map +1 -0
- package/dist/utilities/logger.js +1 -1
- package/dist/utilities/logger.js.map +1 -0
- package/dist/utilities/mapAsync.js +1 -1
- package/dist/utilities/mapAsync.js.map +1 -0
- package/dist/utilities/overwriteMerge.js +1 -1
- package/dist/utilities/overwriteMerge.js.map +1 -0
- package/dist/utilities/parseCookies.js +1 -1
- package/dist/utilities/parseCookies.js.map +1 -0
- package/dist/utilities/sanitizeInternalFields.js +1 -1
- package/dist/utilities/sanitizeInternalFields.js.map +1 -0
- package/dist/utilities/setsAreEqual.js +1 -1
- package/dist/utilities/setsAreEqual.js.map +1 -0
- package/dist/utilities/telemetry/events/adminInit.js +1 -1
- package/dist/utilities/telemetry/events/adminInit.js.map +1 -0
- package/dist/utilities/telemetry/events/serverInit.js +1 -1
- package/dist/utilities/telemetry/events/serverInit.js.map +1 -0
- package/dist/utilities/telemetry/index.js +1 -1
- package/dist/utilities/telemetry/index.js.map +1 -0
- package/dist/utilities/telemetry/oneWayHash.js +1 -1
- package/dist/utilities/telemetry/oneWayHash.js.map +1 -0
- package/dist/utilities/timestamp.js +1 -1
- package/dist/utilities/timestamp.js.map +1 -0
- package/dist/utilities/toKebabCase.js +1 -1
- package/dist/utilities/toKebabCase.js.map +1 -0
- package/dist/utilities/wait.js +1 -1
- package/dist/utilities/wait.js.map +1 -0
- package/dist/utilities/wordBoundariesRegex.js +1 -1
- package/dist/utilities/wordBoundariesRegex.js.map +1 -0
- package/dist/versions/baseFields.js +1 -1
- package/dist/versions/baseFields.js.map +1 -0
- package/dist/versions/buildCollectionFields.js +1 -1
- package/dist/versions/buildCollectionFields.js.map +1 -0
- package/dist/versions/buildGlobalFields.js +1 -1
- package/dist/versions/buildGlobalFields.js.map +1 -0
- package/dist/versions/deleteCollectionVersions.js +1 -1
- package/dist/versions/deleteCollectionVersions.js.map +1 -0
- package/dist/versions/drafts/appendVersionToQueryKey.js +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -0
- package/dist/versions/drafts/getQueryDraftsSort.js +1 -1
- package/dist/versions/drafts/getQueryDraftsSort.js.map +1 -0
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -0
- package/dist/versions/enforceMaxVersions.js +1 -1
- package/dist/versions/enforceMaxVersions.js.map +1 -0
- package/dist/versions/getLatestCollectionVersion.js +1 -1
- package/dist/versions/getLatestCollectionVersion.js.map +1 -0
- package/dist/versions/getLatestGlobalVersion.js +1 -1
- package/dist/versions/getLatestGlobalVersion.js.map +1 -0
- package/dist/versions/getVersionsModelName.js +1 -1
- package/dist/versions/getVersionsModelName.js.map +1 -0
- package/dist/versions/saveVersion.js +1 -1
- package/dist/versions/saveVersion.js.map +1 -0
- package/dist/versions/types.js +1 -1
- package/dist/versions/types.js.map +1 -0
- package/errors.js +1 -1
- package/operations.js +1 -1
- package/package.json +2 -2
- package/types.js +1 -1
- package/utilities.js +1 -1
- package/versions.js +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { RichTextAdapter } from '../../../admin/types.js'\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { fieldAffectsData, tabHasName } from '../../config/types.js'\nimport getValueWithDefault from '../../getDefaultValue.js'\nimport { relationshipPopulationPromise } from './relationshipPopulationPromise.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n currentDepth: number\n depth: number\n doc: Record<string, unknown>\n fallbackLocale: null | string\n field: Field | TabAsField\n fieldPromises: Promise<void>[]\n findMany: boolean\n flattenLocales: boolean\n global: SanitizedGlobalConfig | null\n locale: null | string\n overrideAccess: boolean\n populationPromises: Promise<void>[]\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: Record<string, unknown>\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n}\n\n// This function is responsible for the following actions, in order:\n// - Remove hidden fields from response\n// - Flatten locales into requested locale\n// - Sanitize outgoing data (point field, etc.)\n// - Execute field hooks\n// - Execute read access control\n// - Populate relationships\n\nexport const promise = async ({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): Promise<void> => {\n if (\n fieldAffectsData(field) &&\n field.hidden &&\n typeof siblingDoc[field.name] !== 'undefined' &&\n !showHiddenFields\n ) {\n delete siblingDoc[field.name]\n }\n\n const shouldHoistLocalizedValue =\n flattenLocales &&\n fieldAffectsData(field) &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null &&\n field.localized &&\n locale !== 'all' &&\n req.payload.config.localization\n\n if (shouldHoistLocalizedValue) {\n // replace actual value with localized value before sanitizing\n // { [locale]: fields } -> fields\n const value = siblingDoc[field.name][locale]\n\n let hoistedValue = value\n\n if (fallbackLocale && fallbackLocale !== locale) {\n const fallbackValue = siblingDoc[field.name][fallbackLocale]\n const isNullOrUndefined = typeof value === 'undefined' || value === null\n\n if (fallbackValue) {\n switch (field.type) {\n case 'text':\n case 'textarea': {\n if (value === '' || isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n\n default: {\n if (isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n }\n }\n }\n\n siblingDoc[field.name] = hoistedValue\n }\n\n // Sanitize outgoing field value\n switch (field.type) {\n case 'group': {\n // Fill groups with empty objects so fields with hooks within groups can populate\n // themselves virtually as necessary\n if (typeof siblingDoc[field.name] === 'undefined') {\n siblingDoc[field.name] = {}\n }\n\n break\n }\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if (\n tabHasName(tab) &&\n (typeof siblingDoc[tab.name] === 'undefined' || siblingDoc[tab.name] === null)\n ) {\n siblingDoc[tab.name] = {}\n }\n })\n\n break\n }\n\n case 'richText': {\n const editor: RichTextAdapter = field?.editor\n // This is run here AND in the GraphQL Resolver\n if (editor?.populationPromise) {\n const populationPromise = editor.populationPromise({\n context,\n currentDepth,\n depth,\n field,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n\n if (populationPromise) {\n populationPromises.push(populationPromise)\n }\n }\n\n // This is only run here, independent of depth\n if (editor?.afterReadPromise) {\n const afterReadPromise = editor?.afterReadPromise({\n field,\n incomingEditorState: siblingDoc[field.name] as object,\n siblingDoc,\n })\n\n if (afterReadPromise) {\n populationPromises.push(afterReadPromise)\n }\n }\n\n break\n }\n\n case 'point': {\n const pointDoc = siblingDoc[field.name] as Record<string, unknown>\n if (Array.isArray(pointDoc?.coordinates) && pointDoc.coordinates.length === 2) {\n siblingDoc[field.name] = pointDoc.coordinates\n } else {\n siblingDoc[field.name] = undefined\n }\n\n break\n }\n\n default: {\n break\n }\n }\n\n if (fieldAffectsData(field)) {\n // Execute hooks\n if (triggerHooks && field.hooks?.afterRead) {\n await field.hooks.afterRead.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const shouldRunHookOnAllLocales =\n field.localized &&\n (locale === 'all' || !flattenLocales) &&\n typeof siblingDoc[field.name] === 'object'\n\n if (shouldRunHookOnAllLocales) {\n const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) =>\n (async () => {\n const hookedValue = await currentHook({\n collection,\n context,\n data: doc,\n field,\n global,\n operation: 'read',\n originalDoc: doc,\n req,\n siblingData: siblingDoc,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n })(),\n )\n\n await Promise.all(hookPromises)\n } else {\n const hookedValue = await currentHook({\n collection,\n context,\n data: doc,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n req,\n siblingData: siblingDoc,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }, Promise.resolve())\n }\n\n // Execute access control\n let allowDefaultValue = true\n if (triggerAccessControl && field.access && field.access.read) {\n const result = overrideAccess\n ? true\n : await field.access.read({\n id: doc.id as number | string,\n data: doc,\n doc,\n req,\n siblingData: siblingDoc,\n })\n\n if (!result) {\n allowDefaultValue = false\n delete siblingDoc[field.name]\n }\n }\n\n // Set defaultValue on the field for globals being returned without being first created\n // or collection documents created prior to having a default\n if (\n allowDefaultValue &&\n typeof siblingDoc[field.name] === 'undefined' &&\n typeof field.defaultValue !== 'undefined'\n ) {\n siblingDoc[field.name] = await getValueWithDefault({\n defaultValue: field.defaultValue,\n locale,\n user: req.user,\n value: siblingDoc[field.name],\n })\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth,\n depth,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n siblingDoc,\n }),\n )\n }\n }\n\n switch (field.type) {\n case 'group': {\n let groupDoc = siblingDoc[field.name] as Record<string, unknown>\n if (typeof siblingDoc[field.name] !== 'object') groupDoc = {}\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: groupDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'array': {\n const rows = siblingDoc[field.name]\n\n if (Array.isArray(rows)) {\n rows.forEach((row) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingDoc[field.name]\n\n if (Array.isArray(rows)) {\n rows.forEach((row) => {\n const block = field.blocks.find((blockType) => blockType.slug === row.blockType)\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row) => {\n const block = field.blocks.find((blockType) => blockType.slug === row.blockType)\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n\n break\n }\n\n case 'row':\n case 'collapsible': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'tab': {\n let tabDoc = siblingDoc\n if (tabHasName(field)) {\n tabDoc = siblingDoc[field.name] as Record<string, unknown>\n if (typeof siblingDoc[field.name] !== 'object') tabDoc = {}\n }\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: tabDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n fieldPromises,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["fieldAffectsData","tabHasName","getValueWithDefault","relationshipPopulationPromise","traverseFields","promise","collection","context","currentDepth","depth","doc","fallbackLocale","field","fieldPromises","findMany","flattenLocales","global","locale","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","triggerAccessControl","triggerHooks","hidden","name","shouldHoistLocalizedValue","localized","payload","config","localization","value","hoistedValue","fallbackValue","isNullOrUndefined","type","tabs","forEach","tab","editor","populationPromise","push","afterReadPromise","incomingEditorState","pointDoc","Array","isArray","coordinates","length","undefined","hooks","afterRead","reduce","priorHook","currentHook","shouldRunHookOnAllLocales","hookPromises","Object","entries","map","hookedValue","data","operation","originalDoc","siblingData","Promise","all","resolve","allowDefaultValue","access","read","result","id","defaultValue","user","groupDoc","fields","rows","row","values","localeRows","block","blocks","find","blockType","slug","tabDoc"],"mappings":"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"}
|
|
@@ -134,4 +134,4 @@ export const relationshipPopulationPromise = async ({ currentDepth, depth, fallb
|
|
|
134
134
|
await Promise.all(rowPromises);
|
|
135
135
|
};
|
|
136
136
|
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3JlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9pbmRleC5qcydcbmltcG9ydCB0eXBlIHsgUmVsYXRpb25zaGlwRmllbGQsIFVwbG9hZEZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzLmpzJ1xuXG5pbXBvcnQgeyBmaWVsZEhhc01heERlcHRoLCBmaWVsZFN1cHBvcnRzTWFueSB9IGZyb20gJy4uLy4uL2NvbmZpZy90eXBlcy5qcydcblxudHlwZSBQb3B1bGF0ZUFyZ3MgPSB7XG4gIGN1cnJlbnREZXB0aDogbnVtYmVyXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGRhdGFSZWZlcmVuY2U6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgZGVwdGg6IG51bWJlclxuICBmYWxsYmFja0xvY2FsZTogbnVsbCB8IHN0cmluZ1xuICBmaWVsZDogUmVsYXRpb25zaGlwRmllbGQgfCBVcGxvYWRGaWVsZFxuICBpbmRleD86IG51bWJlclxuICBrZXk/OiBzdHJpbmdcbiAgbG9jYWxlOiBudWxsIHwgc3RyaW5nXG4gIG92ZXJyaWRlQWNjZXNzOiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2hvd0hpZGRlbkZpZWxkczogYm9vbGVhblxufVxuXG5jb25zdCBwb3B1bGF0ZSA9IGFzeW5jICh7XG4gIGN1cnJlbnREZXB0aCxcbiAgZGF0YSxcbiAgZGF0YVJlZmVyZW5jZSxcbiAgZGVwdGgsXG4gIGZhbGxiYWNrTG9jYWxlLFxuICBmaWVsZCxcbiAgaW5kZXgsXG4gIGtleSxcbiAgbG9jYWxlLFxuICBvdmVycmlkZUFjY2VzcyxcbiAgcmVxLFxuICBzaG93SGlkZGVuRmllbGRzLFxufTogUG9wdWxhdGVBcmdzKSA9PiB7XG4gIGNvbnN0IGRhdGFUb1VwZGF0ZSA9IGRhdGFSZWZlcmVuY2VcbiAgY29uc3QgcmVsYXRpb24gPSBBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pID8gKGRhdGEucmVsYXRpb25UbyBhcyBzdHJpbmcpIDogZmllbGQucmVsYXRpb25Ub1xuICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbiA9IHJlcS5wYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uXVxuXG4gIGlmIChyZWxhdGVkQ29sbGVjdGlvbikge1xuICAgIGxldCBpZCA9IEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykgPyBkYXRhLnZhbHVlIDogZGF0YVxuICAgIGxldCByZWxhdGlvbnNoaXBWYWx1ZVxuICAgIGNvbnN0IHNob3VsZFBvcHVsYXRlID0gZGVwdGggJiYgY3VycmVudERlcHRoIDw9IGRlcHRoXG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgaWQgIT09ICdzdHJpbmcnICYmXG4gICAgICB0eXBlb2YgaWQgIT09ICdudW1iZXInICYmXG4gICAgICB0eXBlb2YgaWQ/LnRvU3RyaW5nID09PSAnZnVuY3Rpb24nICYmXG4gICAgICB0eXBlb2YgaWQgIT09ICdvYmplY3QnXG4gICAgKSB7XG4gICAgICBpZCA9IGlkLnRvU3RyaW5nKClcbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkUG9wdWxhdGUpIHtcbiAgICAgIHJlbGF0aW9uc2hpcFZhbHVlID0gYXdhaXQgcmVxLnBheWxvYWREYXRhTG9hZGVyLmxvYWQoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFtcbiAgICAgICAgICByZXEudHJhbnNhY3Rpb25JRCxcbiAgICAgICAgICByZWxhdGVkQ29sbGVjdGlvbi5jb25maWcuc2x1ZyxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICBjdXJyZW50RGVwdGggKyAxLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBmYWxsYmFja0xvY2FsZSxcbiAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBdKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXJlbGF0aW9uc2hpcFZhbHVlKSB7XG4gICAgICAvLyBpZHMgYXJlIHZpc2libGUgcmVnYXJkbGVzcyBvZiBhY2Nlc3MgY29udHJvbHNcbiAgICAgIHJlbGF0aW9uc2hpcFZhbHVlID0gaWRcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJyAmJiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgZGF0YVRvVXBkYXRlW2ZpZWxkLm5hbWVdW2tleV1baW5kZXhdLnZhbHVlID0gcmVsYXRpb25zaGlwVmFsdWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFUb1VwZGF0ZVtmaWVsZC5uYW1lXVtrZXldW2luZGV4XSA9IHJlbGF0aW9uc2hpcFZhbHVlXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaW5kZXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICBkYXRhVG9VcGRhdGVbZmllbGQubmFtZV1baW5kZXggPz8ga2V5XS52YWx1ZSA9IHJlbGF0aW9uc2hpcFZhbHVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhVG9VcGRhdGVbZmllbGQubmFtZV1baW5kZXggPz8ga2V5XSA9IHJlbGF0aW9uc2hpcFZhbHVlXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICBkYXRhVG9VcGRhdGVbZmllbGQubmFtZV0udmFsdWUgPSByZWxhdGlvbnNoaXBWYWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhVG9VcGRhdGVbZmllbGQubmFtZV0gPSByZWxhdGlvbnNoaXBWYWx1ZVxuICAgIH1cbiAgfVxufVxuXG50eXBlIFByb21pc2VBcmdzID0ge1xuICBjdXJyZW50RGVwdGg6IG51bWJlclxuICBkZXB0aDogbnVtYmVyXG4gIGZhbGxiYWNrTG9jYWxlOiBudWxsIHwgc3RyaW5nXG4gIGZpZWxkOiBSZWxhdGlvbnNoaXBGaWVsZCB8IFVwbG9hZEZpZWxkXG4gIGxvY2FsZTogbnVsbCB8IHN0cmluZ1xuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM6IGJvb2xlYW5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgYW55PlxufVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UgPSBhc3luYyAoe1xuICBjdXJyZW50RGVwdGgsXG4gIGRlcHRoLFxuICBmYWxsYmFja0xvY2FsZSxcbiAgZmllbGQsXG4gIGxvY2FsZSxcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHJlcSxcbiAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgc2libGluZ0RvYyxcbn06IFByb21pc2VBcmdzKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlc3VsdGluZ0RvYyA9IHNpYmxpbmdEb2NcbiAgY29uc3QgcG9wdWxhdGVEZXB0aCA9IGZpZWxkSGFzTWF4RGVwdGgoZmllbGQpICYmIGZpZWxkLm1heERlcHRoIDwgZGVwdGggPyBmaWVsZC5tYXhEZXB0aCA6IGRlcHRoXG4gIGNvbnN0IHJvd1Byb21pc2VzID0gW11cblxuICBpZiAoZmllbGRTdXBwb3J0c01hbnkoZmllbGQpICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICBpZiAoXG4gICAgICBsb2NhbGUgPT09ICdhbGwnICYmXG4gICAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09IG51bGxcbiAgICApIHtcbiAgICAgIE9iamVjdC5rZXlzKHNpYmxpbmdEb2NbZmllbGQubmFtZV0pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdW2tleV0pKSB7XG4gICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXVtrZXldLmZvckVhY2goKHJlbGF0ZWREb2MsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByb3dQcm9taXNlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCBwb3B1bGF0ZSh7XG4gICAgICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgICAgIGRhdGE6IHNpYmxpbmdEb2NbZmllbGQubmFtZV1ba2V5XVtpbmRleF0sXG4gICAgICAgICAgICAgICAgZGF0YVJlZmVyZW5jZTogcmVzdWx0aW5nRG9jLFxuICAgICAgICAgICAgICAgIGRlcHRoOiBwb3B1bGF0ZURlcHRoLFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb3dQcm9taXNlcy5wdXNoKHJvd1Byb21pc2UoKSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKSkge1xuICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXS5mb3JFYWNoKChyZWxhdGVkRG9jLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCByb3dQcm9taXNlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmIChyZWxhdGVkRG9jKSB7XG4gICAgICAgICAgICBhd2FpdCBwb3B1bGF0ZSh7XG4gICAgICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICAgICAgZGF0YTogcmVsYXRlZERvYyxcbiAgICAgICAgICAgICAgZGF0YVJlZmVyZW5jZTogcmVzdWx0aW5nRG9jLFxuICAgICAgICAgICAgICBkZXB0aDogcG9wdWxhdGVEZXB0aCxcbiAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByb3dQcm9taXNlcy5wdXNoKHJvd1Byb21pc2UoKSlcbiAgICAgIH0pXG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJlxuICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09IG51bGwgJiZcbiAgICBsb2NhbGUgPT09ICdhbGwnXG4gICkge1xuICAgIE9iamVjdC5rZXlzKHNpYmxpbmdEb2NbZmllbGQubmFtZV0pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3Qgcm93UHJvbWlzZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgcG9wdWxhdGUoe1xuICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICBkYXRhOiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdW2tleV0sXG4gICAgICAgICAgZGF0YVJlZmVyZW5jZTogcmVzdWx0aW5nRG9jLFxuICAgICAgICAgIGRlcHRoOiBwb3B1bGF0ZURlcHRoLFxuICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICByb3dQcm9taXNlcy5wdXNoKHJvd1Byb21pc2UoKSlcbiAgICB9KVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocm93UHJvbWlzZXMpXG4gIH0gZWxzZSBpZiAoc2libGluZ0RvY1tmaWVsZC5uYW1lXSkge1xuICAgIGF3YWl0IHBvcHVsYXRlKHtcbiAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgIGRhdGE6IHNpYmxpbmdEb2NbZmllbGQubmFtZV0sXG4gICAgICBkYXRhUmVmZXJlbmNlOiByZXN1bHRpbmdEb2MsXG4gICAgICBkZXB0aDogcG9wdWxhdGVEZXB0aCxcbiAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgZmllbGQsXG4gICAgICBsb2NhbGUsXG4gICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgIHJlcSxcbiAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgfSlcbiAgfVxuICBhd2FpdCBQcm9taXNlLmFsbChyb3dQcm9taXNlcylcbn1cbiJdLCJuYW1lcyI6WyJmaWVsZEhhc01heERlcHRoIiwiZmllbGRTdXBwb3J0c01hbnkiLCJwb3B1bGF0ZSIsImN1cnJlbnREZXB0aCIsImRhdGEiLCJkYXRhUmVmZXJlbmNlIiwiZGVwdGgiLCJmYWxsYmFja0xvY2FsZSIsImZpZWxkIiwiaW5kZXgiLCJrZXkiLCJsb2NhbGUiLCJvdmVycmlkZUFjY2VzcyIsInJlcSIsInNob3dIaWRkZW5GaWVsZHMiLCJkYXRhVG9VcGRhdGUiLCJyZWxhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsInJlbGF0aW9uVG8iLCJyZWxhdGVkQ29sbGVjdGlvbiIsInBheWxvYWQiLCJjb2xsZWN0aW9ucyIsImlkIiwidmFsdWUiLCJyZWxhdGlvbnNoaXBWYWx1ZSIsInNob3VsZFBvcHVsYXRlIiwidG9TdHJpbmciLCJwYXlsb2FkRGF0YUxvYWRlciIsImxvYWQiLCJKU09OIiwic3RyaW5naWZ5IiwidHJhbnNhY3Rpb25JRCIsImNvbmZpZyIsInNsdWciLCJuYW1lIiwicmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UiLCJzaWJsaW5nRG9jIiwicmVzdWx0aW5nRG9jIiwicG9wdWxhdGVEZXB0aCIsIm1heERlcHRoIiwicm93UHJvbWlzZXMiLCJoYXNNYW55IiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJyZWxhdGVkRG9jIiwicm93UHJvbWlzZSIsInB1c2giLCJQcm9taXNlIiwiYWxsIl0sIm1hcHBpbmdzIjoiQUFHQSxTQUFTQSxnQkFBZ0IsRUFBRUMsaUJBQWlCLFFBQVEsd0JBQXVCO0FBaUIzRSxNQUFNQyxXQUFXLE9BQU8sRUFDdEJDLFlBQVksRUFDWkMsSUFBSSxFQUNKQyxhQUFhLEVBQ2JDLEtBQUssRUFDTEMsY0FBYyxFQUNkQyxLQUFLLEVBQ0xDLEtBQUssRUFDTEMsR0FBRyxFQUNIQyxNQUFNLEVBQ05DLGNBQWMsRUFDZEMsR0FBRyxFQUNIQyxnQkFBZ0IsRUFDSDtJQUNiLE1BQU1DLGVBQWVWO0lBQ3JCLE1BQU1XLFdBQVdDLE1BQU1DLE9BQU8sQ0FBQ1YsTUFBTVcsVUFBVSxJQUFLZixLQUFLZSxVQUFVLEdBQWNYLE1BQU1XLFVBQVU7SUFDakcsTUFBTUMsb0JBQW9CUCxJQUFJUSxPQUFPLENBQUNDLFdBQVcsQ0FBQ04sU0FBUztJQUUzRCxJQUFJSSxtQkFBbUI7UUFDckIsSUFBSUcsS0FBS04sTUFBTUMsT0FBTyxDQUFDVixNQUFNVyxVQUFVLElBQUlmLEtBQUtvQixLQUFLLEdBQUdwQjtRQUN4RCxJQUFJcUI7UUFDSixNQUFNQyxpQkFBaUJwQixTQUFTSCxnQkFBZ0JHO1FBRWhELElBQ0UsT0FBT2lCLE9BQU8sWUFDZCxPQUFPQSxPQUFPLFlBQ2QsT0FBT0EsSUFBSUksYUFBYSxjQUN4QixPQUFPSixPQUFPLFVBQ2Q7WUFDQUEsS0FBS0EsR0FBR0ksUUFBUTtRQUNsQjtRQUVBLElBQUlELGdCQUFnQjtZQUNsQkQsb0JBQW9CLE1BQU1aLElBQUllLGlCQUFpQixDQUFDQyxJQUFJLENBQ2xEQyxLQUFLQyxTQUFTLENBQUM7Z0JBQ2JsQixJQUFJbUIsYUFBYTtnQkFDakJaLGtCQUFrQmEsTUFBTSxDQUFDQyxJQUFJO2dCQUM3Qlg7Z0JBQ0FqQjtnQkFDQUgsZUFBZTtnQkFDZlE7Z0JBQ0FKO2dCQUNBSztnQkFDQUU7YUFDRDtRQUVMO1FBRUEsSUFBSSxDQUFDVyxtQkFBbUI7WUFDdEIsZ0RBQWdEO1lBQ2hEQSxvQkFBb0JGO1FBQ3RCO1FBRUEsSUFBSSxPQUFPZCxVQUFVLFlBQVksT0FBT0MsUUFBUSxVQUFVO1lBQ3hELElBQUlPLE1BQU1DLE9BQU8sQ0FBQ1YsTUFBTVcsVUFBVSxHQUFHO2dCQUNuQ0osWUFBWSxDQUFDUCxNQUFNMkIsSUFBSSxDQUFDLENBQUN6QixJQUFJLENBQUNELE1BQU0sQ0FBQ2UsS0FBSyxHQUFHQztZQUMvQyxPQUFPO2dCQUNMVixZQUFZLENBQUNQLE1BQU0yQixJQUFJLENBQUMsQ0FBQ3pCLElBQUksQ0FBQ0QsTUFBTSxHQUFHZ0I7WUFDekM7UUFDRixPQUFPLElBQUksT0FBT2hCLFVBQVUsWUFBWSxPQUFPQyxRQUFRLFVBQVU7WUFDL0QsSUFBSU8sTUFBTUMsT0FBTyxDQUFDVixNQUFNVyxVQUFVLEdBQUc7Z0JBQ25DSixZQUFZLENBQUNQLE1BQU0yQixJQUFJLENBQUMsQ0FBQzFCLFNBQVNDLElBQUksQ0FBQ2MsS0FBSyxHQUFHQztZQUNqRCxPQUFPO2dCQUNMVixZQUFZLENBQUNQLE1BQU0yQixJQUFJLENBQUMsQ0FBQzFCLFNBQVNDLElBQUksR0FBR2U7WUFDM0M7UUFDRixPQUFPLElBQUlSLE1BQU1DLE9BQU8sQ0FBQ1YsTUFBTVcsVUFBVSxHQUFHO1lBQzFDSixZQUFZLENBQUNQLE1BQU0yQixJQUFJLENBQUMsQ0FBQ1gsS0FBSyxHQUFHQztRQUNuQyxPQUFPO1lBQ0xWLFlBQVksQ0FBQ1AsTUFBTTJCLElBQUksQ0FBQyxHQUFHVjtRQUM3QjtJQUNGO0FBQ0Y7QUFjQSxPQUFPLE1BQU1XLGdDQUFnQyxPQUFPLEVBQ2xEakMsWUFBWSxFQUNaRyxLQUFLLEVBQ0xDLGNBQWMsRUFDZEMsS0FBSyxFQUNMRyxNQUFNLEVBQ05DLGNBQWMsRUFDZEMsR0FBRyxFQUNIQyxnQkFBZ0IsRUFDaEJ1QixVQUFVLEVBQ0U7SUFDWixNQUFNQyxlQUFlRDtJQUNyQixNQUFNRSxnQkFBZ0J2QyxpQkFBaUJRLFVBQVVBLE1BQU1nQyxRQUFRLEdBQUdsQyxRQUFRRSxNQUFNZ0MsUUFBUSxHQUFHbEM7SUFDM0YsTUFBTW1DLGNBQWMsRUFBRTtJQUV0QixJQUFJeEMsa0JBQWtCTyxVQUFVQSxNQUFNa0MsT0FBTyxFQUFFO1FBQzdDLElBQ0UvQixXQUFXLFNBQ1gsT0FBTzBCLFVBQVUsQ0FBQzdCLE1BQU0yQixJQUFJLENBQUMsS0FBSyxZQUNsQ0UsVUFBVSxDQUFDN0IsTUFBTTJCLElBQUksQ0FBQyxLQUFLLE1BQzNCO1lBQ0FRLE9BQU9DLElBQUksQ0FBQ1AsVUFBVSxDQUFDN0IsTUFBTTJCLElBQUksQ0FBQyxFQUFFVSxPQUFPLENBQUMsQ0FBQ25DO2dCQUMzQyxJQUFJTyxNQUFNQyxPQUFPLENBQUNtQixVQUFVLENBQUM3QixNQUFNMkIsSUFBSSxDQUFDLENBQUN6QixJQUFJLEdBQUc7b0JBQzlDMkIsVUFBVSxDQUFDN0IsTUFBTTJCLElBQUksQ0FBQyxDQUFDekIsSUFBSSxDQUFDbUMsT0FBTyxDQUFDLENBQUNDLFlBQVlyQzt3QkFDL0MsTUFBTXNDLGFBQWE7NEJBQ2pCLE1BQU03QyxTQUFTO2dDQUNiQztnQ0FDQUMsTUFBTWlDLFVBQVUsQ0FBQzdCLE1BQU0yQixJQUFJLENBQUMsQ0FBQ3pCLElBQUksQ0FBQ0QsTUFBTTtnQ0FDeENKLGVBQWVpQztnQ0FDZmhDLE9BQU9pQztnQ0FDUGhDO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDO2dDQUNBQzs0QkFDRjt3QkFDRjt3QkFDQTJCLFlBQVlPLElBQUksQ0FBQ0Q7b0JBQ25CO2dCQUNGO1lBQ0Y7UUFDRixPQUFPLElBQUk5QixNQUFNQyxPQUFPLENBQUNtQixVQUFVLENBQUM3QixNQUFNMkIsSUFBSSxDQUFDLEdBQUc7WUFDaERFLFVBQVUsQ0FBQzdCLE1BQU0yQixJQUFJLENBQUMsQ0FBQ1UsT0FBTyxDQUFDLENBQUNDLFlBQVlyQztnQkFDMUMsTUFBTXNDLGFBQWE7b0JBQ2pCLElBQUlELFlBQVk7d0JBQ2QsTUFBTTVDLFNBQVM7NEJBQ2JDOzRCQUNBQyxNQUFNMEM7NEJBQ056QyxlQUFlaUM7NEJBQ2ZoQyxPQUFPaUM7NEJBQ1BoQzs0QkFDQUM7NEJBQ0FDOzRCQUNBRTs0QkFDQUM7NEJBQ0FDOzRCQUNBQzt3QkFDRjtvQkFDRjtnQkFDRjtnQkFFQTJCLFlBQVlPLElBQUksQ0FBQ0Q7WUFDbkI7UUFDRjtJQUNGLE9BQU8sSUFDTCxPQUFPVixVQUFVLENBQUM3QixNQUFNMkIsSUFBSSxDQUFDLEtBQUssWUFDbENFLFVBQVUsQ0FBQzdCLE1BQU0yQixJQUFJLENBQUMsS0FBSyxRQUMzQnhCLFdBQVcsT0FDWDtRQUNBZ0MsT0FBT0MsSUFBSSxDQUFDUCxVQUFVLENBQUM3QixNQUFNMkIsSUFBSSxDQUFDLEVBQUVVLE9BQU8sQ0FBQyxDQUFDbkM7WUFDM0MsTUFBTXFDLGFBQWE7Z0JBQ2pCLE1BQU03QyxTQUFTO29CQUNiQztvQkFDQUMsTUFBTWlDLFVBQVUsQ0FBQzdCLE1BQU0yQixJQUFJLENBQUMsQ0FBQ3pCLElBQUk7b0JBQ2pDTCxlQUFlaUM7b0JBQ2ZoQyxPQUFPaUM7b0JBQ1BoQztvQkFDQUM7b0JBQ0FFO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztnQkFDRjtZQUNGO1lBQ0EyQixZQUFZTyxJQUFJLENBQUNEO1FBQ25CO1FBRUEsTUFBTUUsUUFBUUMsR0FBRyxDQUFDVDtJQUNwQixPQUFPLElBQUlKLFVBQVUsQ0FBQzdCLE1BQU0yQixJQUFJLENBQUMsRUFBRTtRQUNqQyxNQUFNakMsU0FBUztZQUNiQztZQUNBQyxNQUFNaUMsVUFBVSxDQUFDN0IsTUFBTTJCLElBQUksQ0FBQztZQUM1QjlCLGVBQWVpQztZQUNmaEMsT0FBT2lDO1lBQ1BoQztZQUNBQztZQUNBRztZQUNBQztZQUNBQztZQUNBQztRQUNGO0lBQ0Y7SUFDQSxNQUFNbUMsUUFBUUMsR0FBRyxDQUFDVDtBQUNwQixFQUFDIn0=
|
|
137
|
+
//# sourceMappingURL=relationshipPopulationPromise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/afterRead/relationshipPopulationPromise.ts"],"sourcesContent":["import type { PayloadRequest } from '../../../types/index.js'\nimport type { RelationshipField, UploadField } from '../../config/types.js'\n\nimport { fieldHasMaxDepth, fieldSupportsMany } from '../../config/types.js'\n\ntype PopulateArgs = {\n currentDepth: number\n data: Record<string, unknown>\n dataReference: Record<string, any>\n depth: number\n fallbackLocale: null | string\n field: RelationshipField | UploadField\n index?: number\n key?: string\n locale: null | string\n overrideAccess: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n}\n\nconst populate = async ({\n currentDepth,\n data,\n dataReference,\n depth,\n fallbackLocale,\n field,\n index,\n key,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n}: PopulateArgs) => {\n const dataToUpdate = dataReference\n const relation = Array.isArray(field.relationTo) ? (data.relationTo as string) : field.relationTo\n const relatedCollection = req.payload.collections[relation]\n\n if (relatedCollection) {\n let id = Array.isArray(field.relationTo) ? data.value : data\n let relationshipValue\n const shouldPopulate = depth && currentDepth <= depth\n\n if (\n typeof id !== 'string' &&\n typeof id !== 'number' &&\n typeof id?.toString === 'function' &&\n typeof id !== 'object'\n ) {\n id = id.toString()\n }\n\n if (shouldPopulate) {\n relationshipValue = await req.payloadDataLoader.load(\n JSON.stringify([\n req.transactionID,\n relatedCollection.config.slug,\n id,\n depth,\n currentDepth + 1,\n locale,\n fallbackLocale,\n overrideAccess,\n showHiddenFields,\n ]),\n )\n }\n\n if (!relationshipValue) {\n // ids are visible regardless of access controls\n relationshipValue = id\n }\n\n if (typeof index === 'number' && typeof key === 'string') {\n if (Array.isArray(field.relationTo)) {\n dataToUpdate[field.name][key][index].value = relationshipValue\n } else {\n dataToUpdate[field.name][key][index] = relationshipValue\n }\n } else if (typeof index === 'number' || typeof key === 'string') {\n if (Array.isArray(field.relationTo)) {\n dataToUpdate[field.name][index ?? key].value = relationshipValue\n } else {\n dataToUpdate[field.name][index ?? key] = relationshipValue\n }\n } else if (Array.isArray(field.relationTo)) {\n dataToUpdate[field.name].value = relationshipValue\n } else {\n dataToUpdate[field.name] = relationshipValue\n }\n }\n}\n\ntype PromiseArgs = {\n currentDepth: number\n depth: number\n fallbackLocale: null | string\n field: RelationshipField | UploadField\n locale: null | string\n overrideAccess: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: Record<string, any>\n}\n\nexport const relationshipPopulationPromise = async ({\n currentDepth,\n depth,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n siblingDoc,\n}: PromiseArgs): Promise<void> => {\n const resultingDoc = siblingDoc\n const populateDepth = fieldHasMaxDepth(field) && field.maxDepth < depth ? field.maxDepth : depth\n const rowPromises = []\n\n if (fieldSupportsMany(field) && field.hasMany) {\n if (\n locale === 'all' &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null\n ) {\n Object.keys(siblingDoc[field.name]).forEach((key) => {\n if (Array.isArray(siblingDoc[field.name][key])) {\n siblingDoc[field.name][key].forEach((relatedDoc, index) => {\n const rowPromise = async () => {\n await populate({\n currentDepth,\n data: siblingDoc[field.name][key][index],\n dataReference: resultingDoc,\n depth: populateDepth,\n fallbackLocale,\n field,\n index,\n key,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n rowPromises.push(rowPromise())\n })\n }\n })\n } else if (Array.isArray(siblingDoc[field.name])) {\n siblingDoc[field.name].forEach((relatedDoc, index) => {\n const rowPromise = async () => {\n if (relatedDoc) {\n await populate({\n currentDepth,\n data: relatedDoc,\n dataReference: resultingDoc,\n depth: populateDepth,\n fallbackLocale,\n field,\n index,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n }\n\n rowPromises.push(rowPromise())\n })\n }\n } else if (\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null &&\n locale === 'all'\n ) {\n Object.keys(siblingDoc[field.name]).forEach((key) => {\n const rowPromise = async () => {\n await populate({\n currentDepth,\n data: siblingDoc[field.name][key],\n dataReference: resultingDoc,\n depth: populateDepth,\n fallbackLocale,\n field,\n key,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n rowPromises.push(rowPromise())\n })\n\n await Promise.all(rowPromises)\n } else if (siblingDoc[field.name]) {\n await populate({\n currentDepth,\n data: siblingDoc[field.name],\n dataReference: resultingDoc,\n depth: populateDepth,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n await Promise.all(rowPromises)\n}\n"],"names":["fieldHasMaxDepth","fieldSupportsMany","populate","currentDepth","data","dataReference","depth","fallbackLocale","field","index","key","locale","overrideAccess","req","showHiddenFields","dataToUpdate","relation","Array","isArray","relationTo","relatedCollection","payload","collections","id","value","relationshipValue","shouldPopulate","toString","payloadDataLoader","load","JSON","stringify","transactionID","config","slug","name","relationshipPopulationPromise","siblingDoc","resultingDoc","populateDepth","maxDepth","rowPromises","hasMany","Object","keys","forEach","relatedDoc","rowPromise","push","Promise","all"],"mappings":"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"}
|
|
@@ -25,4 +25,4 @@ export const traverseFields = ({ collection, context, currentDepth, depth, doc,
|
|
|
25
25
|
});
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
//# sourceMappingURL=
|
|
28
|
+
//# sourceMappingURL=traverseFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/afterRead/traverseFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { promise } from './promise.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n currentDepth: number\n depth: number\n doc: Record<string, unknown>\n fallbackLocale: null | string\n fieldPromises: Promise<void>[]\n fields: (Field | TabAsField)[]\n findMany: boolean\n flattenLocales: boolean\n global: SanitizedGlobalConfig | null\n locale: null | string\n overrideAccess: boolean\n populationPromises: Promise<void>[]\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: Record<string, unknown>\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n}\n\nexport const traverseFields = ({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): void => {\n fields.forEach((field) => {\n fieldPromises.push(\n promise({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n }),\n )\n })\n}\n"],"names":["promise","traverseFields","collection","context","currentDepth","depth","doc","fallbackLocale","fieldPromises","fields","findMany","flattenLocales","global","locale","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","triggerAccessControl","triggerHooks","forEach","field","push"],"mappings":"AAKA,SAASA,OAAO,QAAQ,eAAc;AAwBtC,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,UAAU,EACVC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,GAAG,EACHC,cAAc,EACdC,aAAa,EACbC,MAAM,EACNC,QAAQ,EACRC,cAAc,EACdC,MAAM,EACNC,MAAM,EACNC,cAAc,EACdC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EAChBC,UAAU,EACVC,uBAAuB,IAAI,EAC3BC,eAAe,IAAI,EACd;IACLX,OAAOY,OAAO,CAAC,CAACC;QACdd,cAAce,IAAI,CAChBvB,QAAQ;YACNE;YACAC;YACAC;YACAC;YACAC;YACAC;YACAe;YACAd;YACAE;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;IAEJ;AACF,EAAC"}
|
|
@@ -17,4 +17,4 @@ export const cloneDataFromOriginalDoc = (originalDocData)=>{
|
|
|
17
17
|
return originalDocData;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
//# sourceMappingURL=
|
|
20
|
+
//# sourceMappingURL=cloneDataFromOriginalDoc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/beforeChange/cloneDataFromOriginalDoc.ts"],"sourcesContent":["export const cloneDataFromOriginalDoc = (originalDocData: unknown): unknown => {\n if (Array.isArray(originalDocData)) {\n return originalDocData.map((row) => {\n if (typeof row === 'object' && row != null) {\n return {\n ...row,\n }\n }\n\n return row\n })\n }\n\n if (typeof originalDocData === 'object' && originalDocData !== null) {\n return { ...originalDocData }\n }\n\n return originalDocData\n}\n"],"names":["cloneDataFromOriginalDoc","originalDocData","Array","isArray","map","row"],"mappings":"AAAA,OAAO,MAAMA,2BAA2B,CAACC;IACvC,IAAIC,MAAMC,OAAO,CAACF,kBAAkB;QAClC,OAAOA,gBAAgBG,GAAG,CAAC,CAACC;YAC1B,IAAI,OAAOA,QAAQ,YAAYA,OAAO,MAAM;gBAC1C,OAAO;oBACL,GAAGA,GAAG;gBACR;YACF;YAEA,OAAOA;QACT;IACF;IAEA,IAAI,OAAOJ,oBAAoB,YAAYA,oBAAoB,MAAM;QACnE,OAAO;YAAE,GAAGA,eAAe;QAAC;IAC9B;IAEA,OAAOA;AACT,EAAC"}
|
|
@@ -16,4 +16,4 @@
|
|
|
16
16
|
return {};
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
//# sourceMappingURL=
|
|
19
|
+
//# sourceMappingURL=getExistingRowDoc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/beforeChange/getExistingRowDoc.ts"],"sourcesContent":["/**\n * If there is an incoming row id,\n * and it matches the existing sibling doc id,\n * this is an existing row, so it should be merged.\n * Otherwise, return an empty object.\n */\n\nexport const getExistingRowDoc = (\n incomingRow: Record<string, unknown>,\n existingRows?: unknown,\n): Record<string, unknown> => {\n if (incomingRow.id && Array.isArray(existingRows)) {\n const matchedExistingRow = existingRows.find((existingRow) => {\n if (typeof existingRow === 'object' && 'id' in existingRow) {\n if (existingRow.id === incomingRow.id) return existingRow\n }\n\n return false\n })\n\n if (matchedExistingRow) return matchedExistingRow\n }\n\n return {}\n}\n"],"names":["getExistingRowDoc","incomingRow","existingRows","id","Array","isArray","matchedExistingRow","find","existingRow"],"mappings":"AAAA;;;;;CAKC,GAED,OAAO,MAAMA,oBAAoB,CAC/BC,aACAC;IAEA,IAAID,YAAYE,EAAE,IAAIC,MAAMC,OAAO,CAACH,eAAe;QACjD,MAAMI,qBAAqBJ,aAAaK,IAAI,CAAC,CAACC;YAC5C,IAAI,OAAOA,gBAAgB,YAAY,QAAQA,aAAa;gBAC1D,IAAIA,YAAYL,EAAE,KAAKF,YAAYE,EAAE,EAAE,OAAOK;YAChD;YAEA,OAAO;QACT;QAEA,IAAIF,oBAAoB,OAAOA;IACjC;IAEA,OAAO,CAAC;AACV,EAAC"}
|
|
@@ -31,4 +31,4 @@ export const beforeChange = async ({ id, collection, context, data: incomingData
|
|
|
31
31
|
return data;
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
//# sourceMappingURL=
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/beforeChange/index.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { Operation, PayloadRequest, RequestContext } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { deepCopyObject } from '../../../utilities/deepCopyObject.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args<T> = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n data: Record<string, unknown> | T\n doc: Record<string, unknown> | T\n docWithLocales: Record<string, unknown>\n global: SanitizedGlobalConfig | null\n id?: number | string\n operation: Operation\n req: PayloadRequest\n skipValidation?: boolean\n}\n\nexport const beforeChange = async <T extends Record<string, unknown>>({\n id,\n collection,\n context,\n data: incomingData,\n doc,\n docWithLocales,\n global,\n operation,\n req,\n skipValidation,\n}: Args<T>): Promise<T> => {\n const data = deepCopyObject(incomingData)\n const mergeLocaleActions = []\n const errors: { field: string; message: string }[] = []\n\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n fields: collection?.fields || global?.fields,\n global,\n mergeLocaleActions,\n operation,\n path: '',\n req,\n siblingData: data,\n siblingDoc: doc,\n siblingDocWithLocales: docWithLocales,\n skipValidation,\n })\n\n if (errors.length > 0) {\n throw new ValidationError(errors, req.t)\n }\n\n mergeLocaleActions.forEach((action) => action())\n\n return data\n}\n"],"names":["ValidationError","deepCopyObject","traverseFields","beforeChange","id","collection","context","data","incomingData","doc","docWithLocales","global","operation","req","skipValidation","mergeLocaleActions","errors","fields","path","siblingData","siblingDoc","siblingDocWithLocales","length","t","forEach","action"],"mappings":"AAIA,SAASA,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,sBAAqB;AAepD,OAAO,MAAMC,eAAe,OAA0C,EACpEC,EAAE,EACFC,UAAU,EACVC,OAAO,EACPC,MAAMC,YAAY,EAClBC,GAAG,EACHC,cAAc,EACdC,MAAM,EACNC,SAAS,EACTC,GAAG,EACHC,cAAc,EACN;IACR,MAAMP,OAAON,eAAeO;IAC5B,MAAMO,qBAAqB,EAAE;IAC7B,MAAMC,SAA+C,EAAE;IAEvD,MAAMd,eAAe;QACnBE;QACAC;QACAC;QACAC;QACAE;QACAC;QACAM;QACAC,QAAQZ,YAAYY,UAAUN,QAAQM;QACtCN;QACAI;QACAH;QACAM,MAAM;QACNL;QACAM,aAAaZ;QACba,YAAYX;QACZY,uBAAuBX;QACvBI;IACF;IAEA,IAAIE,OAAOM,MAAM,GAAG,GAAG;QACrB,MAAM,IAAItB,gBAAgBgB,QAAQH,IAAIU,CAAC;IACzC;IAEAR,mBAAmBS,OAAO,CAAC,CAACC,SAAWA;IAEvC,OAAOlB;AACT,EAAC"}
|
|
@@ -304,4 +304,4 @@ export const promise = async ({ id, collection, context, data, doc, docWithLocal
|
|
|
304
304
|
}
|
|
305
305
|
};
|
|
306
306
|
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlQ2hhbmdlL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1lcmdlIGZyb20gJ2RlZXBtZXJnZSdcblxuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcy5qcydcbmltcG9ydCB0eXBlIHsgT3BlcmF0aW9uLCBQYXlsb2FkUmVxdWVzdCwgUmVxdWVzdENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9pbmRleC5qcydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMuanMnXG5cbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEsIHRhYkhhc05hbWUgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMuanMnXG5pbXBvcnQgeyBnZXRFeGlzdGluZ1Jvd0RvYyB9IGZyb20gJy4vZ2V0RXhpc3RpbmdSb3dEb2MuanMnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMuanMnXG5cbnR5cGUgQXJncyA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgZG9jOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBkb2NXaXRoTG9jYWxlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgZXJyb3JzOiB7IGZpZWxkOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9W11cbiAgZmllbGQ6IEZpZWxkIHwgVGFiQXNGaWVsZFxuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZyB8IG51bGxcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgbWVyZ2VMb2NhbGVBY3Rpb25zOiAoKCkgPT4gdm9pZClbXVxuICBvcGVyYXRpb246IE9wZXJhdGlvblxuICBwYXRoOiBzdHJpbmdcbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvY1dpdGhMb2NhbGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2tpcFZhbGlkYXRpb246IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUnVuIGNvbmRpdGlvblxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIFZhbGlkYXRlIGRhdGFcbi8vIC0gVHJhbnNmb3JtIGRhdGEgZm9yIHN0b3JhZ2Vcbi8vIC0gVW5mbGF0dGVuIGxvY2FsZXNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyAoe1xuICBpZCxcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgZGF0YSxcbiAgZG9jLFxuICBkb2NXaXRoTG9jYWxlcyxcbiAgZXJyb3JzLFxuICBmaWVsZCxcbiAgZ2xvYmFsLFxuICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gIG9wZXJhdGlvbixcbiAgcGF0aCxcbiAgcmVxLFxuICBzaWJsaW5nRGF0YSxcbiAgc2libGluZ0RvYyxcbiAgc2libGluZ0RvY1dpdGhMb2NhbGVzLFxuICBza2lwVmFsaWRhdGlvbixcbn06IEFyZ3MpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcGFzc2VzQ29uZGl0aW9uID0gZmllbGQuYWRtaW4/LmNvbmRpdGlvblxuICAgID8gQm9vbGVhbihmaWVsZC5hZG1pbi5jb25kaXRpb24oZGF0YSwgc2libGluZ0RhdGEsIHsgdXNlcjogcmVxLnVzZXIgfSkpXG4gICAgOiB0cnVlXG4gIGxldCBza2lwVmFsaWRhdGlvbkZyb21IZXJlID0gc2tpcFZhbGlkYXRpb24gfHwgIXBhc3Nlc0NvbmRpdGlvblxuXG4gIGNvbnN0IGRlZmF1bHRMb2NhbGUgPSByZXEucGF5bG9hZC5jb25maWc/LmxvY2FsaXphdGlvblxuICAgID8gcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbj8uZGVmYXVsdExvY2FsZVxuICAgIDogJ2VuJ1xuICBjb25zdCBvcGVyYXRpb25Mb2NhbGUgPSByZXEubG9jYWxlIHx8IGRlZmF1bHRMb2NhbGVcblxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAvLyBza2lwIHZhbGlkYXRpb24gaWYgdGhlIGZpZWxkIGlzIGxvY2FsaXplZCBhbmQgdGhlIGluY29taW5nIGRhdGEgaXMgbnVsbFxuICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgb3BlcmF0aW9uTG9jYWxlICE9PSBkZWZhdWx0TG9jYWxlKSB7XG4gICAgICBpZiAoWydhcnJheScsICdibG9ja3MnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSAmJiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gbnVsbCkge1xuICAgICAgICBza2lwVmFsaWRhdGlvbkZyb21IZXJlID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgaG9va3NcbiAgICBpZiAoZmllbGQuaG9va3M/LmJlZm9yZUNoYW5nZSkge1xuICAgICAgYXdhaXQgZmllbGQuaG9va3MuYmVmb3JlQ2hhbmdlLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBjdXJyZW50SG9vaykgPT4ge1xuICAgICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgICBjb25zdCBob29rZWRWYWx1ZSA9IGF3YWl0IGN1cnJlbnRIb29rKHtcbiAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgcHJldmlvdXNTaWJsaW5nRG9jOiBzaWJsaW5nRG9jLFxuICAgICAgICAgIHByZXZpb3VzVmFsdWU6IHNpYmxpbmdEb2NbZmllbGQubmFtZV0sXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgfVxuICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGVcbiAgICBpZiAoIXNraXBWYWxpZGF0aW9uRnJvbUhlcmUgJiYgZmllbGQudmFsaWRhdGUpIHtcbiAgICAgIGNvbnN0IHZhbHVlVG9WYWxpZGF0ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG4gICAgICBsZXQganNvbkVycm9yXG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnanNvbicgJiYgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnc3RyaW5nJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIEpTT04ucGFyc2Uoc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nKVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAganNvbkVycm9yID0gZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCBmaWVsZC52YWxpZGF0ZSh2YWx1ZVRvVmFsaWRhdGUsIHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIGlkLFxuICAgICAgICBkYXRhOiBtZXJnZShkb2MsIGRhdGEsIHsgYXJyYXlNZXJnZTogKF8sIHNvdXJjZSkgPT4gc291cmNlIH0pLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yLW5leHQtbGluZVxuICAgICAgICBqc29uRXJyb3IsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogbWVyZ2Uoc2libGluZ0RvYywgc2libGluZ0RhdGEsIHsgYXJyYXlNZXJnZTogKF8sIHNvdXJjZSkgPT4gc291cmNlIH0pLFxuICAgICAgfSlcblxuICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGAke3BhdGh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgbWVzc2FnZTogdmFsaWRhdGlvblJlc3VsdCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQdXNoIG1lcmdlIGxvY2FsZSBhY3Rpb24gaWYgYXBwbGljYWJsZVxuICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucy5wdXNoKCgpID0+IHtcbiAgICAgICAgaWYgKHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBjb25zdCB7IGxvY2FsaXphdGlvbiB9ID0gcmVxLnBheWxvYWQuY29uZmlnXG4gICAgICAgICAgY29uc3QgbG9jYWxlRGF0YSA9IGxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5yZWR1Y2UoKGxvY2FsaXplZFZhbHVlcywgbG9jYWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlID1cbiAgICAgICAgICAgICAgbG9jYWxlID09PSByZXEubG9jYWxlXG4gICAgICAgICAgICAgICAgPyBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuICAgICAgICAgICAgICAgIDogc2libGluZ0RvY1dpdGhMb2NhbGVzPy5bZmllbGQubmFtZV0/Lltsb2NhbGVdXG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSBsb2NhbGUgdmFsdWUgaWYgaXQncyBub3QgdW5kZWZpbmVkXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4ubG9jYWxpemVkVmFsdWVzLFxuICAgICAgICAgICAgICAgIFtsb2NhbGVdOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsb2NhbGl6ZWRWYWx1ZXNcbiAgICAgICAgICB9LCB7fSlcblxuICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBsb2NhbGVzIHdpdGggZGF0YSwgc2V0IHRoZSBkYXRhXG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGxvY2FsZURhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gbG9jYWxlRGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgIC8vIFRyYW5zZm9ybSBwb2ludCBkYXRhIGZvciBzdG9yYWdlXG4gICAgICBpZiAoXG4gICAgICAgIEFycmF5LmlzQXJyYXkoc2libGluZ0RhdGFbZmllbGQubmFtZV0pICYmXG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdWzBdICE9PSBudWxsICYmXG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdWzFdICE9PSBudWxsXG4gICAgICApIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB7XG4gICAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgICBjb29yZGluYXRlczogW1xuICAgICAgICAgICAgcGFyc2VGbG9hdChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVswXSksXG4gICAgICAgICAgICBwYXJzZUZsb2F0KHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdWzFdKSxcbiAgICAgICAgICBdLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB7fVxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHt9XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBhdGg6IGAke3BhdGh9JHtmaWVsZC5uYW1lfS5gLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgc2libGluZ0RvYzogc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzOiBzaWJsaW5nRG9jV2l0aExvY2FsZXNbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIHNraXBWYWxpZGF0aW9uOiBza2lwVmFsaWRhdGlvbkZyb21IZXJlLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93LCBpKSA9PiB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgIHBhdGg6IGAke3BhdGh9JHtmaWVsZC5uYW1lfS4ke2l9LmAsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKSxcbiAgICAgICAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzOiBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSksXG4gICAgICAgICAgICAgIHNraXBWYWxpZGF0aW9uOiBza2lwVmFsaWRhdGlvbkZyb21IZXJlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICB9KVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93LCBpKSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93U2libGluZ0RvYyA9IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSlcbiAgICAgICAgICBjb25zdCByb3dTaWJsaW5nRG9jV2l0aExvY2FsZXMgPSBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSlcblxuICAgICAgICAgIGNvbnN0IGJsb2NrVHlwZVRvTWF0Y2ggPSByb3cuYmxvY2tUeXBlIHx8IHJvd1NpYmxpbmdEb2MuYmxvY2tUeXBlXG4gICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoYmxvY2tUeXBlKSA9PiBibG9ja1R5cGUuc2x1ZyA9PT0gYmxvY2tUeXBlVG9NYXRjaClcblxuICAgICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucyxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgICAgcGF0aDogYCR7cGF0aH0ke2ZpZWxkLm5hbWV9LiR7aX0uYCxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3dTaWJsaW5nRG9jLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlczogcm93U2libGluZ0RvY1dpdGhMb2NhbGVzLFxuICAgICAgICAgICAgICAgIHNraXBWYWxpZGF0aW9uOiBza2lwVmFsaWRhdGlvbkZyb21IZXJlLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAncm93JzpcbiAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgc2tpcFZhbGlkYXRpb246IHNraXBWYWxpZGF0aW9uRnJvbUhlcmUsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgIGxldCB0YWJQYXRoID0gcGF0aFxuICAgICAgbGV0IHRhYlNpYmxpbmdEYXRhID0gc2libGluZ0RhdGFcbiAgICAgIGxldCB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1xuICAgICAgbGV0IHRhYlNpYmxpbmdEb2NXaXRoTG9jYWxlcyA9IHNpYmxpbmdEb2NXaXRoTG9jYWxlc1xuXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgdGFiUGF0aCA9IGAke3BhdGh9JHtmaWVsZC5uYW1lfS5gXG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgICB0YWJTaWJsaW5nRGF0YSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIHRhYlNpYmxpbmdEb2NXaXRoTG9jYWxlcyA9IHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGRvY1dpdGhMb2NhbGVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucyxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwYXRoOiB0YWJQYXRoLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhOiB0YWJTaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYzogdGFiU2libGluZ0RvYyxcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzOiB0YWJTaWJsaW5nRG9jV2l0aExvY2FsZXMsXG4gICAgICAgIHNraXBWYWxpZGF0aW9uOiBza2lwVmFsaWRhdGlvbkZyb21IZXJlLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWJzJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucyxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwYXRoLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICBzaWJsaW5nRG9jV2l0aExvY2FsZXMsXG4gICAgICAgIHNraXBWYWxpZGF0aW9uOiBza2lwVmFsaWRhdGlvbkZyb21IZXJlLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbIm1lcmdlIiwiZmllbGRBZmZlY3RzRGF0YSIsInRhYkhhc05hbWUiLCJnZXRFeGlzdGluZ1Jvd0RvYyIsInRyYXZlcnNlRmllbGRzIiwicHJvbWlzZSIsImlkIiwiY29sbGVjdGlvbiIsImNvbnRleHQiLCJkYXRhIiwiZG9jIiwiZG9jV2l0aExvY2FsZXMiLCJlcnJvcnMiLCJmaWVsZCIsImdsb2JhbCIsIm1lcmdlTG9jYWxlQWN0aW9ucyIsIm9wZXJhdGlvbiIsInBhdGgiLCJyZXEiLCJzaWJsaW5nRGF0YSIsInNpYmxpbmdEb2MiLCJzaWJsaW5nRG9jV2l0aExvY2FsZXMiLCJza2lwVmFsaWRhdGlvbiIsInBhc3Nlc0NvbmRpdGlvbiIsImFkbWluIiwiY29uZGl0aW9uIiwiQm9vbGVhbiIsInVzZXIiLCJza2lwVmFsaWRhdGlvbkZyb21IZXJlIiwiZGVmYXVsdExvY2FsZSIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJvcGVyYXRpb25Mb2NhbGUiLCJsb2NhbGUiLCJsb2NhbGl6ZWQiLCJpbmNsdWRlcyIsInR5cGUiLCJuYW1lIiwiaG9va3MiLCJiZWZvcmVDaGFuZ2UiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJjdXJyZW50SG9vayIsImhvb2tlZFZhbHVlIiwib3JpZ2luYWxEb2MiLCJwcmV2aW91c1NpYmxpbmdEb2MiLCJwcmV2aW91c1ZhbHVlIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInZhbGlkYXRlIiwidmFsdWVUb1ZhbGlkYXRlIiwianNvbkVycm9yIiwiSlNPTiIsInBhcnNlIiwiZSIsInZhbGlkYXRpb25SZXN1bHQiLCJhcnJheU1lcmdlIiwiXyIsInNvdXJjZSIsInB1c2giLCJtZXNzYWdlIiwibG9jYWxlRGF0YSIsImxvY2FsZUNvZGVzIiwibG9jYWxpemVkVmFsdWVzIiwiZmllbGRWYWx1ZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJjb29yZGluYXRlcyIsInBhcnNlRmxvYXQiLCJmaWVsZHMiLCJyb3dzIiwicHJvbWlzZXMiLCJmb3JFYWNoIiwicm93IiwiaSIsImFsbCIsInJvd1NpYmxpbmdEb2MiLCJyb3dTaWJsaW5nRG9jV2l0aExvY2FsZXMiLCJibG9ja1R5cGVUb01hdGNoIiwiYmxvY2tUeXBlIiwiYmxvY2siLCJibG9ja3MiLCJmaW5kIiwic2x1ZyIsInRhYlBhdGgiLCJ0YWJTaWJsaW5nRGF0YSIsInRhYlNpYmxpbmdEb2MiLCJ0YWJTaWJsaW5nRG9jV2l0aExvY2FsZXMiLCJ0YWJzIiwibWFwIiwidGFiIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLFlBQVc7QUFPN0IsU0FBU0MsZ0JBQWdCLEVBQUVDLFVBQVUsUUFBUSx3QkFBdUI7QUFDcEUsU0FBU0MsaUJBQWlCLFFBQVEseUJBQXdCO0FBQzFELFNBQVNDLGNBQWMsUUFBUSxzQkFBcUI7QUFzQnBELG9FQUFvRTtBQUNwRSxrQkFBa0I7QUFDbEIsd0JBQXdCO0FBQ3hCLGtCQUFrQjtBQUNsQiwrQkFBK0I7QUFDL0Isc0JBQXNCO0FBRXRCLE9BQU8sTUFBTUMsVUFBVSxPQUFPLEVBQzVCQyxFQUFFLEVBQ0ZDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLEdBQUcsRUFDSEMsY0FBYyxFQUNkQyxNQUFN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
|
|
307
|
+
//# sourceMappingURL=promise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/beforeChange/promise.ts"],"sourcesContent":["import merge from 'deepmerge'\n\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { Operation, PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { fieldAffectsData, tabHasName } from '../../config/types.js'\nimport { getExistingRowDoc } from './getExistingRowDoc.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n data: Record<string, unknown>\n doc: Record<string, unknown>\n docWithLocales: Record<string, unknown>\n errors: { field: string; message: string }[]\n field: Field | TabAsField\n global: SanitizedGlobalConfig | null\n id?: number | string\n mergeLocaleActions: (() => void)[]\n operation: Operation\n path: string\n req: PayloadRequest\n siblingData: Record<string, unknown>\n siblingDoc: Record<string, unknown>\n siblingDocWithLocales?: Record<string, unknown>\n skipValidation: boolean\n}\n\n// This function is responsible for the following actions, in order:\n// - Run condition\n// - Execute field hooks\n// - Validate data\n// - Transform data for storage\n// - Unflatten locales\n\nexport const promise = async ({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n field,\n global,\n mergeLocaleActions,\n operation,\n path,\n req,\n siblingData,\n siblingDoc,\n siblingDocWithLocales,\n skipValidation,\n}: Args): Promise<void> => {\n const passesCondition = field.admin?.condition\n ? Boolean(field.admin.condition(data, siblingData, { user: req.user }))\n : true\n let skipValidationFromHere = skipValidation || !passesCondition\n\n const defaultLocale = req.payload.config?.localization\n ? req.payload.config.localization?.defaultLocale\n : 'en'\n const operationLocale = req.locale || defaultLocale\n\n if (fieldAffectsData(field)) {\n // skip validation if the field is localized and the incoming data is null\n if (field.localized && operationLocale !== defaultLocale) {\n if (['array', 'blocks'].includes(field.type) && siblingData[field.name] === null) {\n skipValidationFromHere = true\n }\n }\n\n // Execute hooks\n if (field.hooks?.beforeChange) {\n await field.hooks.beforeChange.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const hookedValue = await currentHook({\n collection,\n context,\n data,\n field,\n global,\n operation,\n originalDoc: doc,\n previousSiblingDoc: siblingDoc,\n previousValue: siblingDoc[field.name],\n req,\n siblingData,\n value: siblingData[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingData[field.name] = hookedValue\n }\n }, Promise.resolve())\n }\n\n // Validate\n if (!skipValidationFromHere && field.validate) {\n const valueToValidate = siblingData[field.name]\n let jsonError\n\n if (field.type === 'json' && typeof siblingData[field.name] === 'string') {\n try {\n JSON.parse(siblingData[field.name] as string)\n } catch (e) {\n jsonError = e\n }\n }\n\n const validationResult = await field.validate(valueToValidate, {\n ...field,\n id,\n data: merge(doc, data, { arrayMerge: (_, source) => source }),\n // @ts-expect-error-next-line\n jsonError,\n operation,\n req,\n siblingData: merge(siblingDoc, siblingData, { arrayMerge: (_, source) => source }),\n })\n\n if (typeof validationResult === 'string') {\n errors.push({\n field: `${path}${field.name}`,\n message: validationResult,\n })\n }\n }\n\n // Push merge locale action if applicable\n if (field.localized) {\n mergeLocaleActions.push(() => {\n if (req.payload.config.localization) {\n const { localization } = req.payload.config\n const localeData = localization.localeCodes.reduce((localizedValues, locale) => {\n const fieldValue =\n locale === req.locale\n ? siblingData[field.name]\n : siblingDocWithLocales?.[field.name]?.[locale]\n\n // update locale value if it's not undefined\n if (typeof fieldValue !== 'undefined') {\n return {\n ...localizedValues,\n [locale]: fieldValue,\n }\n }\n\n return localizedValues\n }, {})\n\n // If there are locales with data, set the data\n if (Object.keys(localeData).length > 0) {\n siblingData[field.name] = localeData\n }\n }\n })\n }\n }\n\n switch (field.type) {\n case 'point': {\n // Transform point data for storage\n if (\n Array.isArray(siblingData[field.name]) &&\n siblingData[field.name][0] !== null &&\n siblingData[field.name][1] !== null\n ) {\n siblingData[field.name] = {\n type: 'Point',\n coordinates: [\n parseFloat(siblingData[field.name][0]),\n parseFloat(siblingData[field.name][1]),\n ],\n }\n }\n\n break\n }\n\n case 'group': {\n if (typeof siblingData[field.name] !== 'object') siblingData[field.name] = {}\n if (typeof siblingDoc[field.name] !== 'object') siblingDoc[field.name] = {}\n if (typeof siblingDocWithLocales[field.name] !== 'object')\n siblingDocWithLocales[field.name] = {}\n\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n fields: field.fields,\n global,\n mergeLocaleActions,\n operation,\n path: `${path}${field.name}.`,\n req,\n siblingData: siblingData[field.name] as Record<string, unknown>,\n siblingDoc: siblingDoc[field.name] as Record<string, unknown>,\n siblingDocWithLocales: siblingDocWithLocales[field.name] as Record<string, unknown>,\n skipValidation: skipValidationFromHere,\n })\n\n break\n }\n\n case 'array': {\n const rows = siblingData[field.name]\n\n if (Array.isArray(rows)) {\n const promises = []\n rows.forEach((row, i) => {\n promises.push(\n traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n fields: field.fields,\n global,\n mergeLocaleActions,\n operation,\n path: `${path}${field.name}.${i}.`,\n req,\n siblingData: row,\n siblingDoc: getExistingRowDoc(row, siblingDoc[field.name]),\n siblingDocWithLocales: getExistingRowDoc(row, siblingDocWithLocales[field.name]),\n skipValidation: skipValidationFromHere,\n }),\n )\n })\n\n await Promise.all(promises)\n }\n\n break\n }\n\n case 'blocks': {\n const rows = siblingData[field.name]\n\n if (Array.isArray(rows)) {\n const promises = []\n rows.forEach((row, i) => {\n const rowSiblingDoc = getExistingRowDoc(row, siblingDoc[field.name])\n const rowSiblingDocWithLocales = getExistingRowDoc(row, siblingDocWithLocales[field.name])\n\n const blockTypeToMatch = row.blockType || rowSiblingDoc.blockType\n const block = field.blocks.find((blockType) => blockType.slug === blockTypeToMatch)\n\n if (block) {\n promises.push(\n traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n fields: block.fields,\n global,\n mergeLocaleActions,\n operation,\n path: `${path}${field.name}.${i}.`,\n req,\n siblingData: row,\n siblingDoc: rowSiblingDoc,\n siblingDocWithLocales: rowSiblingDocWithLocales,\n skipValidation: skipValidationFromHere,\n }),\n )\n }\n })\n\n await Promise.all(promises)\n }\n\n break\n }\n\n case 'row':\n case 'collapsible': {\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n fields: field.fields,\n global,\n mergeLocaleActions,\n operation,\n path,\n req,\n siblingData,\n siblingDoc,\n siblingDocWithLocales,\n skipValidation: skipValidationFromHere,\n })\n\n break\n }\n\n case 'tab': {\n let tabPath = path\n let tabSiblingData = siblingData\n let tabSiblingDoc = siblingDoc\n let tabSiblingDocWithLocales = siblingDocWithLocales\n\n if (tabHasName(field)) {\n tabPath = `${path}${field.name}.`\n if (typeof siblingData[field.name] !== 'object') siblingData[field.name] = {}\n if (typeof siblingDoc[field.name] !== 'object') siblingDoc[field.name] = {}\n if (typeof siblingDocWithLocales[field.name] !== 'object')\n siblingDocWithLocales[field.name] = {}\n\n tabSiblingData = siblingData[field.name] as Record<string, unknown>\n tabSiblingDoc = siblingDoc[field.name] as Record<string, unknown>\n tabSiblingDocWithLocales = siblingDocWithLocales[field.name] as Record<string, unknown>\n }\n\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n fields: field.fields,\n global,\n mergeLocaleActions,\n operation,\n path: tabPath,\n req,\n siblingData: tabSiblingData,\n siblingDoc: tabSiblingDoc,\n siblingDocWithLocales: tabSiblingDocWithLocales,\n skipValidation: skipValidationFromHere,\n })\n\n break\n }\n\n case 'tabs': {\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n global,\n mergeLocaleActions,\n operation,\n path,\n req,\n siblingData,\n siblingDoc,\n siblingDocWithLocales,\n skipValidation: skipValidationFromHere,\n })\n\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["merge","fieldAffectsData","tabHasName","getExistingRowDoc","traverseFields","promise","id","collection","context","data","doc","docWithLocales","errors","field","global","mergeLocaleActions","operation","path","req","siblingData","siblingDoc","siblingDocWithLocales","skipValidation","passesCondition","admin","condition","Boolean","user","skipValidationFromHere","defaultLocale","payload","config","localization","operationLocale","locale","localized","includes","type","name","hooks","beforeChange","reduce","priorHook","currentHook","hookedValue","originalDoc","previousSiblingDoc","previousValue","value","undefined","Promise","resolve","validate","valueToValidate","jsonError","JSON","parse","e","validationResult","arrayMerge","_","source","push","message","localeData","localeCodes","localizedValues","fieldValue","Object","keys","length","Array","isArray","coordinates","parseFloat","fields","rows","promises","forEach","row","i","all","rowSiblingDoc","rowSiblingDocWithLocales","blockTypeToMatch","blockType","block","blocks","find","slug","tabPath","tabSiblingData","tabSiblingDoc","tabSiblingDocWithLocales","tabs","map","tab"],"mappings":"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"}
|
|
@@ -25,4 +25,4 @@ export const traverseFields = async ({ id, collection, context, data, doc, docWi
|
|
|
25
25
|
await Promise.all(promises);
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
//# sourceMappingURL=
|
|
28
|
+
//# sourceMappingURL=traverseFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/beforeChange/traverseFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { Operation, PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { promise } from './promise.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n data: Record<string, unknown>\n doc: Record<string, unknown>\n docWithLocales: Record<string, unknown>\n errors: { field: string; message: string }[]\n fields: (Field | TabAsField)[]\n global: SanitizedGlobalConfig | null\n id?: number | string\n mergeLocaleActions: (() => void)[]\n operation: Operation\n path: string\n req: PayloadRequest\n siblingData: Record<string, unknown>\n siblingDoc: Record<string, unknown>\n siblingDocWithLocales: Record<string, unknown>\n skipValidation?: boolean\n}\n\nexport const traverseFields = async ({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n fields,\n global,\n mergeLocaleActions,\n operation,\n path,\n req,\n siblingData,\n siblingDoc,\n siblingDocWithLocales,\n skipValidation,\n}: Args): Promise<void> => {\n const promises = []\n\n fields.forEach((field) => {\n promises.push(\n promise({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n errors,\n field,\n global,\n mergeLocaleActions,\n operation,\n path,\n req,\n siblingData,\n siblingDoc,\n siblingDocWithLocales,\n skipValidation,\n }),\n )\n })\n\n await Promise.all(promises)\n}\n"],"names":["promise","traverseFields","id","collection","context","data","doc","docWithLocales","errors","fields","global","mergeLocaleActions","operation","path","req","siblingData","siblingDoc","siblingDocWithLocales","skipValidation","promises","forEach","field","push","Promise","all"],"mappings":"AAKA,SAASA,OAAO,QAAQ,eAAc;AAsBtC,OAAO,MAAMC,iBAAiB,OAAO,EACnCC,EAAE,EACFC,UAAU,EACVC,OAAO,EACPC,IAAI,EACJC,GAAG,EACHC,cAAc,EACdC,MAAM,EACNC,MAAM,EACNC,MAAM,EACNC,kBAAkB,EAClBC,SAAS,EACTC,IAAI,EACJC,GAAG,EACHC,WAAW,EACXC,UAAU,EACVC,qBAAqB,EACrBC,cAAc,EACT;IACL,MAAMC,WAAW,EAAE;IAEnBV,OAAOW,OAAO,CAAC,CAACC;QACdF,SAASG,IAAI,CACXtB,QAAQ;YACNE;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAa;YACAX;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;IAEJ;IAEA,MAAMK,QAAQC,GAAG,CAACL;AACpB,EAAC"}
|
|
@@ -19,4 +19,4 @@ export const beforeValidate = async ({ id, collection, context, data: incomingDa
|
|
|
19
19
|
return data;
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
//# sourceMappingURL=
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/beforeValidate/index.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { PayloadRequest, RequestContext } from '../../../types/index.js'\n\nimport { deepCopyObject } from '../../../utilities/deepCopyObject.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args<T> = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n data: Record<string, unknown> | T\n doc?: Record<string, unknown> | T\n global: SanitizedGlobalConfig | null\n id?: number | string\n operation: 'create' | 'update'\n overrideAccess: boolean\n req: PayloadRequest\n}\n\nexport const beforeValidate = async <T extends Record<string, unknown>>({\n id,\n collection,\n context,\n data: incomingData,\n doc,\n global,\n operation,\n overrideAccess,\n req,\n}: Args<T>): Promise<T> => {\n const data = deepCopyObject(incomingData)\n\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n fields: collection?.fields || global?.fields,\n global,\n operation,\n overrideAccess,\n req,\n siblingData: data,\n siblingDoc: doc,\n })\n\n return data\n}\n"],"names":["deepCopyObject","traverseFields","beforeValidate","id","collection","context","data","incomingData","doc","global","operation","overrideAccess","req","fields","siblingData","siblingDoc"],"mappings":"AAIA,SAASA,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,sBAAqB;AAcpD,OAAO,MAAMC,iBAAiB,OAA0C,EACtEC,EAAE,EACFC,UAAU,EACVC,OAAO,EACPC,MAAMC,YAAY,EAClBC,GAAG,EACHC,MAAM,EACNC,SAAS,EACTC,cAAc,EACdC,GAAG,EACK;IACR,MAAMN,OAAON,eAAeO;IAE5B,MAAMN,eAAe;QACnBE;QACAC;QACAC;QACAC;QACAE;QACAK,QAAQT,YAAYS,UAAUJ,QAAQI;QACtCJ;QACAC;QACAC;QACAC;QACAE,aAAaR;QACbS,YAAYP;IACd;IAEA,OAAOF;AACT,EAAC"}
|
|
@@ -338,4 +338,4 @@ export const promise = async ({ id, collection, context, data, doc, field, globa
|
|
|
338
338
|
}
|
|
339
339
|
};
|
|
340
340
|
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvcHJvbWlzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcy5qcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvaW5kZXguanMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzLmpzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lLCB2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMuanMnXG5pbXBvcnQgZ2V0VmFsdWVXaXRoRGVmYXVsdCBmcm9tICcuLi8uLi9nZXREZWZhdWx0VmFsdWUuanMnXG5pbXBvcnQgeyBjbG9uZURhdGFGcm9tT3JpZ2luYWxEb2MgfSBmcm9tICcuLi9iZWZvcmVDaGFuZ2UvY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jLmpzJ1xuaW1wb3J0IHsgZ2V0RXhpc3RpbmdSb3dEb2MgfSBmcm9tICcuLi9iZWZvcmVDaGFuZ2UvZ2V0RXhpc3RpbmdSb3dEb2MuanMnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMuanMnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZGF0YTogVFxuICBkb2M6IFRcbiAgZmllbGQ6IEZpZWxkIHwgVGFiQXNGaWVsZFxuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZyB8IG51bGxcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG92ZXJyaWRlQWNjZXNzOiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2libGluZ0RhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHNpYmxpbmdEb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBmb2xsb3dpbmcgYWN0aW9ucywgaW4gb3JkZXI6XG4vLyAtIFNhbml0aXplIGluY29taW5nIGRhdGFcbi8vIC0gRXhlY3V0ZSBmaWVsZCBob29rc1xuLy8gLSBFeGVjdXRlIGZpZWxkIGFjY2VzcyBjb250cm9sXG4vLyAtIE1lcmdlIG9yaWdpbmFsIGRvY3VtZW50IGRhdGEgaW50byBpbmNvbWluZyBkYXRhXG4vLyAtIENvbXB1dGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHVuZGVmaW5lZCBmaWVsZHNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyA8VD4oe1xuICBpZCxcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgZGF0YSxcbiAgZG9jLFxuICBmaWVsZCxcbiAgZ2xvYmFsLFxuICBvcGVyYXRpb24sXG4gIG92ZXJyaWRlQWNjZXNzLFxuICByZXEsXG4gIHNpYmxpbmdEYXRhLFxuICBzaWJsaW5nRG9jLFxufTogQXJnczxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICBpZiAoZmllbGQubmFtZSA9PT0gJ2lkJykge1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmdcblxuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHBhcnNlRmxvYXQodmFsdWUpXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZmllbGQudHlwZSA9PT0gJ3RleHQnICYmXG4gICAgICAgIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXT8udG9TdHJpbmcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnc3RyaW5nJ1xuICAgICAgKSB7XG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0udG9TdHJpbmcoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNhbml0aXplIGluY29taW5nIGRhdGFcbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1xuICAgICAgICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHRyaW1tZWQubGVuZ3RoID09PSAwID8gbnVsbCA6IHBhcnNlRmxvYXQodHJpbW1lZClcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSkpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmdbXSkubWFwKChjb29yZGluYXRlLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvb3JkaW5hdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gYXMgc3RyaW5nXG4gICAgICAgICAgICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcbiAgICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID09PSAwID8gbnVsbCA6IHBhcnNlRmxvYXQodHJpbW1lZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb29yZGluYXRlXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICBpZiAoc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICd0cnVlJykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB0cnVlXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ2ZhbHNlJykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBmYWxzZVxuICAgICAgICBpZiAoc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICcnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGZhbHNlXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmljaFRleHQnOiB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJpY2hUZXh0SlNPTiA9IEpTT04ucGFyc2Uoc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSByaWNoVGV4dEpTT05cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIERpc3JlZ2FyZCB0aGlzIGRhdGEgYXMgaXQgaXMgbm90IHZhbGlkLlxuICAgICAgICAgICAgLy8gV2lsbCBiZSByZXBvcnRlZCB0byB1c2VyIGJ5IGZpZWxkIHZhbGlkYXRpb25cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzoge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICcnIHx8XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdub25lJyB8fFxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnbnVsbCcgfHxcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiYgZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBbXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHJlbGF0ZWREb2M6IHsgcmVsYXRpb25Ubzogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9LCBpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gcmVsYXRlZERvYy5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdW2ldID0ge1xuICAgICAgICAgICAgICAgICAgLi4ucmVsYXRlZERvYyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJzZUZsb2F0KHJlbGF0ZWREb2MudmFsdWUgYXMgc3RyaW5nKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnICYmXG4gICAgICAgICAgICBmaWVsZC5oYXNNYW55ICE9PSB0cnVlICYmXG4gICAgICAgICAgICB2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24odmFsdWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbiA9IHJlcS5wYXlsb2FkLmNvbmZpZy5jb2xsZWN0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSB2YWx1ZS5yZWxhdGlvblRvLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgIGZpZWxkQWZmZWN0c0RhdGEoY29sbGVjdGlvbkZpZWxkKSAmJiBjb2xsZWN0aW9uRmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHsgLi4udmFsdWUsIHZhbHVlOiBwYXJzZUZsb2F0KHZhbHVlLnZhbHVlIGFzIHN0cmluZykgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHJlbGF0ZWREb2M6IHVua25vd24sIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSBmaWVsZC5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdW2ldID0gcGFyc2VGbG9hdChyZWxhdGVkRG9jIGFzIHN0cmluZylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnICYmIGZpZWxkLmhhc01hbnkgIT09IHRydWUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGZpZWxkLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBJREZpZWxkID0gcmVsYXRlZENvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gcGFyc2VGbG9hdCh2YWx1ZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgLy8gSGFuZGxlIGNhc2VzIG9mIGFycmF5cyBiZWluZyBpbnRlbnRpb25hbGx5IHNldCB0byAwXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJzAnIHx8IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAwKSB7XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgaG9va3NcbiAgICBpZiAoZmllbGQuaG9va3M/LmJlZm9yZVZhbGlkYXRlKSB7XG4gICAgICBhd2FpdCBmaWVsZC5ob29rcy5iZWZvcmVWYWxpZGF0ZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgY3VycmVudEhvb2spID0+IHtcbiAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBvcmlnaW5hbERvYzogZG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGhvb2tlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgYWNjZXNzIGNvbnRyb2xcbiAgICBpZiAoZmllbGQuYWNjZXNzICYmIGZpZWxkLmFjY2Vzc1tvcGVyYXRpb25dKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBvdmVycmlkZUFjY2Vzc1xuICAgICAgICA/IHRydWVcbiAgICAgICAgOiBhd2FpdCBmaWVsZC5hY2Nlc3Nbb3BlcmF0aW9uXSh7IGlkLCBkYXRhLCBkb2MsIHJlcSwgc2libGluZ0RhdGEgfSlcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgZGVsZXRlIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIElmIG5vIGluY29taW5nIGRhdGEsIGJ1dCBleGlzdGluZyBkb2N1bWVudCBkYXRhIGlzIGZvdW5kLCBtZXJnZSBpdCBpblxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGNsb25lRGF0YUZyb21PcmlnaW5hbERvYyhzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKVxuXG4gICAgICAgIC8vIE90aGVyd2lzZSBjb21wdXRlIGRlZmF1bHQgdmFsdWVcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpZWxkLmRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBhd2FpdCBnZXRWYWx1ZVdpdGhEZWZhdWx0KHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICBsb2NhbGU6IHJlcS5sb2NhbGUsXG4gICAgICAgICAgdXNlcjogcmVxLnVzZXIsXG4gICAgICAgICAgdmFsdWU6IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRyYXZlcnNlIHN1YmZpZWxkc1xuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdncm91cCc6IHtcbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgY29uc3QgZ3JvdXBEYXRhID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIGNvbnN0IGdyb3VwRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGE6IGdyb3VwRGF0YSxcbiAgICAgICAgc2libGluZ0RvYzogZ3JvdXBEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgIHNpYmxpbmdEb2M6IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvd1NpYmxpbmdEb2MgPSBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NbZmllbGQubmFtZV0pXG4gICAgICAgICAgY29uc3QgYmxvY2tUeXBlVG9NYXRjaCA9IHJvdy5ibG9ja1R5cGUgfHwgcm93U2libGluZ0RvYy5ibG9ja1R5cGVcbiAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSBibG9ja1R5cGVUb01hdGNoKVxuXG4gICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICByb3cuYmxvY2tUeXBlID0gYmxvY2tUeXBlVG9NYXRjaFxuXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93U2libGluZ0RvYyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWInOiB7XG4gICAgICBsZXQgdGFiU2libGluZ0RhdGFcbiAgICAgIGxldCB0YWJTaWJsaW5nRG9jXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgICAgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVxuICAgICAgICB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGE6IHRhYlNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jOiB0YWJTaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWJzJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiZmllbGRBZmZlY3RzRGF0YSIsInRhYkhhc05hbWUiLCJ2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24iLCJnZXRWYWx1ZVdpdGhEZWZhdWx0IiwiY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jIiwiZ2V0RXhpc3RpbmdSb3dEb2MiLCJ0cmF2ZXJzZUZpZWxkcyIsInByb21pc2UiLCJpZCIsImNvbGxlY3Rpb24iLCJjb250ZXh0IiwiZGF0YSIsImRvYyIsImZpZWxkIiwiZ2xvYmFsIiwib3BlcmF0aW9uIiwib3ZlcnJpZGVBY2Nlc3MiLCJyZXEiLCJzaWJsaW5nRGF0YSIsInNpYmxpbmdEb2MiLCJuYW1lIiwidHlwZSIsInZhbHVlIiwicGFyc2VGbG9hdCIsInRvU3RyaW5nIiwidHJpbW1lZCIsInRyaW0iLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJjb29yZGluYXRlIiwiaSIsInJpY2hUZXh0SlNPTiIsIkpTT04iLCJwYXJzZSIsImhhc01hbnkiLCJyZWxhdGlvblRvIiwiZm9yRWFjaCIsInJlbGF0ZWREb2MiLCJyZWxhdGVkQ29sbGVjdGlvbiIsInBheWxvYWQiLCJjb25maWciLCJjb2xsZWN0aW9ucyIsImZpbmQiLCJzbHVnIiwicmVsYXRpb25zaGlwSURGaWVsZCIsImZpZWxkcyIsImNvbGxlY3Rpb25GaWVsZCIsImhvb2tzIiwiYmVmb3JlVmFsaWRhdGUiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJjdXJyZW50SG9vayIsImhvb2tlZFZhbHVlIiwib3JpZ2luYWxEb2MiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFjY2VzcyIsInJlc3VsdCIsImRlZmF1bHRWYWx1ZSIsImxvY2FsZSIsInVzZXIiLCJncm91cERhdGEiLCJncm91cERvYyIsInJvd3MiLCJwcm9taXNlcyIsInJvdyIsInB1c2giLCJhbGwiLCJyb3dTaWJsaW5nRG9jIiwiYmxvY2tUeXBlVG9NYXRjaCIsImJsb2NrVHlwZSIsImJsb2NrIiwiYmxvY2tzIiwidGFiU2libGluZ0RhdGEiLCJ0YWJTaWJsaW5nRG9jIiwidGFicyIsInRhYiJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DLEdBTXBDLFNBQVNBLGdCQUFnQixFQUFFQyxVQUFVLEVBQUVDLHdCQUF3QixRQUFRLHdCQUF1QjtBQUM5RixPQUFPQyx5QkFBeUIsMkJBQTBCO0FBQzFELFNBQVNDLHdCQUF3QixRQUFRLDhDQUE2QztBQUN0RixTQUFTQyxpQkFBaUIsUUFBUSx1Q0FBc0M7QUFDeEUsU0FBU0MsY0FBYyxRQUFRLHNCQUFxQjtBQWlCcEQsb0VBQW9FO0FBQ3BFLDJCQUEyQjtBQUMzQix3QkFBd0I7QUFDeEIsaUNBQWlDO0FBQ2pDLG9EQUFvRDtBQUNwRCxnREFBZ0Q7QUFFaEQsT0FBTyxNQUFNQyxVQUFVLE9BQVUsRUFDL0JDLEVBQUUsRUFDRkMsVUFBVSxFQUNWQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsR0FBRyxFQUNIQyxLQUFLLEVBQ0xDLE1BQU0sRUFDTkMsU0FB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
|
|
341
|
+
//# sourceMappingURL=promise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/beforeValidate/promise.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { fieldAffectsData, tabHasName, valueIsValueWithRelation } from '../../config/types.js'\nimport getValueWithDefault from '../../getDefaultValue.js'\nimport { cloneDataFromOriginalDoc } from '../beforeChange/cloneDataFromOriginalDoc.js'\nimport { getExistingRowDoc } from '../beforeChange/getExistingRowDoc.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args<T> = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n data: T\n doc: T\n field: Field | TabAsField\n global: SanitizedGlobalConfig | null\n id?: number | string\n operation: 'create' | 'update'\n overrideAccess: boolean\n req: PayloadRequest\n siblingData: Record<string, unknown>\n siblingDoc: Record<string, unknown>\n}\n\n// This function is responsible for the following actions, in order:\n// - Sanitize incoming data\n// - Execute field hooks\n// - Execute field access control\n// - Merge original document data into incoming data\n// - Compute default values for undefined fields\n\nexport const promise = async <T>({\n id,\n collection,\n context,\n data,\n doc,\n field,\n global,\n operation,\n overrideAccess,\n req,\n siblingData,\n siblingDoc,\n}: Args<T>): Promise<void> => {\n if (fieldAffectsData(field)) {\n if (field.name === 'id') {\n if (field.type === 'number' && typeof siblingData[field.name] === 'string') {\n const value = siblingData[field.name] as string\n\n siblingData[field.name] = parseFloat(value)\n }\n\n if (\n field.type === 'text' &&\n typeof siblingData[field.name]?.toString === 'function' &&\n typeof siblingData[field.name] !== 'string'\n ) {\n siblingData[field.name] = siblingData[field.name].toString()\n }\n }\n\n // Sanitize incoming data\n switch (field.type) {\n case 'number': {\n if (typeof siblingData[field.name] === 'string') {\n const value = siblingData[field.name] as string\n const trimmed = value.trim()\n siblingData[field.name] = trimmed.length === 0 ? null : parseFloat(trimmed)\n }\n\n break\n }\n\n case 'point': {\n if (Array.isArray(siblingData[field.name])) {\n siblingData[field.name] = (siblingData[field.name] as string[]).map((coordinate, i) => {\n if (typeof coordinate === 'string') {\n const value = siblingData[field.name][i] as string\n const trimmed = value.trim()\n return trimmed.length === 0 ? null : parseFloat(trimmed)\n }\n return coordinate\n })\n }\n\n break\n }\n\n case 'checkbox': {\n if (siblingData[field.name] === 'true') siblingData[field.name] = true\n if (siblingData[field.name] === 'false') siblingData[field.name] = false\n if (siblingData[field.name] === '') siblingData[field.name] = false\n\n break\n }\n\n case 'richText': {\n if (typeof siblingData[field.name] === 'string') {\n try {\n const richTextJSON = JSON.parse(siblingData[field.name] as string)\n siblingData[field.name] = richTextJSON\n } catch {\n // Disregard this data as it is not valid.\n // Will be reported to user by field validation\n }\n }\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (\n siblingData[field.name] === '' ||\n siblingData[field.name] === 'none' ||\n siblingData[field.name] === 'null' ||\n siblingData[field.name] === null\n ) {\n if (field.type === 'relationship' && field.hasMany === true) {\n siblingData[field.name] = []\n } else {\n siblingData[field.name] = null\n }\n }\n\n const value = siblingData[field.name]\n\n if (Array.isArray(field.relationTo)) {\n if (Array.isArray(value)) {\n value.forEach((relatedDoc: { relationTo: string; value: unknown }, i) => {\n const relatedCollection = req.payload.config.collections.find(\n (collection) => collection.slug === relatedDoc.relationTo,\n )\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name][i] = {\n ...relatedDoc,\n value: parseFloat(relatedDoc.value as string),\n }\n }\n })\n }\n if (\n field.type === 'relationship' &&\n field.hasMany !== true &&\n valueIsValueWithRelation(value)\n ) {\n const relatedCollection = req.payload.config.collections.find(\n (collection) => collection.slug === value.relationTo,\n )\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name] = { ...value, value: parseFloat(value.value as string) }\n }\n }\n } else {\n if (Array.isArray(value)) {\n value.forEach((relatedDoc: unknown, i) => {\n const relatedCollection = req.payload.config.collections.find(\n (collection) => collection.slug === field.relationTo,\n )\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name][i] = parseFloat(relatedDoc as string)\n }\n })\n }\n if (field.type === 'relationship' && field.hasMany !== true && value) {\n const relatedCollection = req.payload.config.collections.find(\n (collection) => collection.slug === field.relationTo,\n )\n const relationshipIDField = relatedCollection.fields.find(\n (collectionField) =>\n fieldAffectsData(collectionField) && collectionField.name === 'id',\n )\n if (relationshipIDField?.type === 'number') {\n siblingData[field.name] = parseFloat(value as string)\n }\n }\n }\n break\n }\n\n case 'array':\n case 'blocks': {\n // Handle cases of arrays being intentionally set to 0\n if (siblingData[field.name] === '0' || siblingData[field.name] === 0) {\n siblingData[field.name] = []\n }\n\n break\n }\n\n default: {\n break\n }\n }\n\n // Execute hooks\n if (field.hooks?.beforeValidate) {\n await field.hooks.beforeValidate.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const hookedValue = await currentHook({\n collection,\n context,\n data,\n field,\n global,\n operation,\n originalDoc: doc,\n req,\n siblingData,\n value: siblingData[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingData[field.name] = hookedValue\n }\n }, Promise.resolve())\n }\n\n // Execute access control\n if (field.access && field.access[operation]) {\n const result = overrideAccess\n ? true\n : await field.access[operation]({ id, data, doc, req, siblingData })\n\n if (!result) {\n delete siblingData[field.name]\n }\n }\n\n if (typeof siblingData[field.name] === 'undefined') {\n // If no incoming data, but existing document data is found, merge it in\n if (typeof siblingDoc[field.name] !== 'undefined') {\n siblingData[field.name] = cloneDataFromOriginalDoc(siblingDoc[field.name])\n\n // Otherwise compute default value\n } else if (typeof field.defaultValue !== 'undefined') {\n siblingData[field.name] = await getValueWithDefault({\n defaultValue: field.defaultValue,\n locale: req.locale,\n user: req.user,\n value: siblingData[field.name],\n })\n }\n }\n }\n\n // Traverse subfields\n switch (field.type) {\n case 'group': {\n if (typeof siblingData[field.name] !== 'object') siblingData[field.name] = {}\n if (typeof siblingDoc[field.name] !== 'object') siblingDoc[field.name] = {}\n\n const groupData = siblingData[field.name] as Record<string, unknown>\n const groupDoc = siblingDoc[field.name] as Record<string, unknown>\n\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n req,\n siblingData: groupData,\n siblingDoc: groupDoc,\n })\n\n break\n }\n\n case 'array': {\n const rows = siblingData[field.name]\n\n if (Array.isArray(rows)) {\n const promises = []\n rows.forEach((row) => {\n promises.push(\n traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n req,\n siblingData: row,\n siblingDoc: getExistingRowDoc(row, siblingDoc[field.name]),\n }),\n )\n })\n await Promise.all(promises)\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingData[field.name]\n\n if (Array.isArray(rows)) {\n const promises = []\n rows.forEach((row) => {\n const rowSiblingDoc = getExistingRowDoc(row, siblingDoc[field.name])\n const blockTypeToMatch = row.blockType || rowSiblingDoc.blockType\n const block = field.blocks.find((blockType) => blockType.slug === blockTypeToMatch)\n\n if (block) {\n row.blockType = blockTypeToMatch\n\n promises.push(\n traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n fields: block.fields,\n global,\n operation,\n overrideAccess,\n req,\n siblingData: row,\n siblingDoc: rowSiblingDoc,\n }),\n )\n }\n })\n await Promise.all(promises)\n }\n\n break\n }\n\n case 'row':\n case 'collapsible': {\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n req,\n siblingData,\n siblingDoc,\n })\n\n break\n }\n\n case 'tab': {\n let tabSiblingData\n let tabSiblingDoc\n if (tabHasName(field)) {\n if (typeof siblingData[field.name] !== 'object') siblingData[field.name] = {}\n if (typeof siblingDoc[field.name] !== 'object') siblingDoc[field.name] = {}\n\n tabSiblingData = siblingData[field.name] as Record<string, unknown>\n tabSiblingDoc = siblingDoc[field.name] as Record<string, unknown>\n } else {\n tabSiblingData = siblingData\n tabSiblingDoc = siblingDoc\n }\n\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n fields: field.fields,\n global,\n operation,\n overrideAccess,\n req,\n siblingData: tabSiblingData,\n siblingDoc: tabSiblingDoc,\n })\n\n break\n }\n\n case 'tabs': {\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n global,\n operation,\n overrideAccess,\n req,\n siblingData,\n siblingDoc,\n })\n\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["fieldAffectsData","tabHasName","valueIsValueWithRelation","getValueWithDefault","cloneDataFromOriginalDoc","getExistingRowDoc","traverseFields","promise","id","collection","context","data","doc","field","global","operation","overrideAccess","req","siblingData","siblingDoc","name","type","value","parseFloat","toString","trimmed","trim","length","Array","isArray","map","coordinate","i","richTextJSON","JSON","parse","hasMany","relationTo","forEach","relatedDoc","relatedCollection","payload","config","collections","find","slug","relationshipIDField","fields","collectionField","hooks","beforeValidate","reduce","priorHook","currentHook","hookedValue","originalDoc","undefined","Promise","resolve","access","result","defaultValue","locale","user","groupData","groupDoc","rows","promises","row","push","all","rowSiblingDoc","blockTypeToMatch","blockType","block","blocks","tabSiblingData","tabSiblingDoc","tabs","tab"],"mappings":"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"}
|
|
@@ -20,4 +20,4 @@ export const traverseFields = async ({ id, collection, context, data, doc, field
|
|
|
20
20
|
await Promise.all(promises);
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
//# sourceMappingURL=
|
|
23
|
+
//# sourceMappingURL=traverseFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/hooks/beforeValidate/traverseFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { promise } from './promise.js'\n\ntype Args<T> = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n data: T\n doc: T\n fields: (Field | TabAsField)[]\n global: SanitizedGlobalConfig | null\n id?: number | string\n operation: 'create' | 'update'\n overrideAccess: boolean\n req: PayloadRequest\n siblingData: Record<string, unknown>\n siblingDoc: Record<string, unknown>\n}\n\nexport const traverseFields = async <T>({\n id,\n collection,\n context,\n data,\n doc,\n fields,\n global,\n operation,\n overrideAccess,\n req,\n siblingData,\n siblingDoc,\n}: Args<T>): Promise<void> => {\n const promises = []\n fields.forEach((field) => {\n promises.push(\n promise({\n id,\n collection,\n context,\n data,\n doc,\n field,\n global,\n operation,\n overrideAccess,\n req,\n siblingData,\n siblingDoc,\n }),\n )\n })\n await Promise.all(promises)\n}\n"],"names":["promise","traverseFields","id","collection","context","data","doc","fields","global","operation","overrideAccess","req","siblingData","siblingDoc","promises","forEach","field","push","Promise","all"],"mappings":"AAKA,SAASA,OAAO,QAAQ,eAAc;AAiBtC,OAAO,MAAMC,iBAAiB,OAAU,EACtCC,EAAE,EACFC,UAAU,EACVC,OAAO,EACPC,IAAI,EACJC,GAAG,EACHC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,cAAc,EACdC,GAAG,EACHC,WAAW,EACXC,UAAU,EACF;IACR,MAAMC,WAAW,EAAE;IACnBP,OAAOQ,OAAO,CAAC,CAACC;QACdF,SAASG,IAAI,CACXjB,QAAQ;YACNE;YACAC;YACAC;YACAC;YACAC;YACAU;YACAR;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;IAEJ;IACA,MAAMK,QAAQC,GAAG,CAACL;AACpB,EAAC"}
|
|
@@ -33,4 +33,4 @@ const mergeBaseFields = (fields, baseFields)=>{
|
|
|
33
33
|
};
|
|
34
34
|
export default mergeBaseFields;
|
|
35
35
|
|
|
36
|
-
//# sourceMappingURL=
|
|
36
|
+
//# sourceMappingURL=mergeBaseFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/mergeBaseFields.ts"],"sourcesContent":["import merge from 'deepmerge'\n\nimport type { Field, FieldWithSubFields } from './config/types.js'\n\nimport { fieldAffectsData, fieldHasSubFields } from './config/types.js'\n\nconst mergeBaseFields = (fields: Field[], baseFields: Field[]): Field[] => {\n const mergedFields = [...(fields || [])]\n\n baseFields.forEach((baseField) => {\n let matchedIndex = null\n\n if (fieldAffectsData(baseField)) {\n const match = mergedFields.find((field, i) => {\n if (fieldAffectsData(field) && field.name === baseField.name) {\n matchedIndex = i\n return true\n }\n\n return false\n })\n\n if (match) {\n const matchCopy: Field = { ...match }\n mergedFields.splice(matchedIndex, 1)\n\n const mergedField = merge<Field>(baseField, matchCopy)\n\n if (fieldHasSubFields(baseField) && fieldHasSubFields(matchCopy)) {\n ;(mergedField as FieldWithSubFields).fields = mergeBaseFields(\n matchCopy.fields,\n baseField.fields,\n )\n }\n\n mergedFields.push(mergedField)\n } else {\n mergedFields.push(baseField)\n }\n }\n })\n\n return mergedFields\n}\n\nexport default mergeBaseFields\n"],"names":["merge","fieldAffectsData","fieldHasSubFields","mergeBaseFields","fields","baseFields","mergedFields","forEach","baseField","matchedIndex","match","find","field","i","name","matchCopy","splice","mergedField","push"],"mappings":"AAAA,OAAOA,WAAW,YAAW;AAI7B,SAASC,gBAAgB,EAAEC,iBAAiB,QAAQ,oBAAmB;AAEvE,MAAMC,kBAAkB,CAACC,QAAiBC;IACxC,MAAMC,eAAe;WAAKF,UAAU,EAAE;KAAE;IAExCC,WAAWE,OAAO,CAAC,CAACC;QAClB,IAAIC,eAAe;QAEnB,IAAIR,iBAAiBO,YAAY;YAC/B,MAAME,QAAQJ,aAAaK,IAAI,CAAC,CAACC,OAAOC;gBACtC,IAAIZ,iBAAiBW,UAAUA,MAAME,IAAI,KAAKN,UAAUM,IAAI,EAAE;oBAC5DL,eAAeI;oBACf,OAAO;gBACT;gBAEA,OAAO;YACT;YAEA,IAAIH,OAAO;gBACT,MAAMK,YAAmB;oBAAE,GAAGL,KAAK;gBAAC;gBACpCJ,aAAaU,MAAM,CAACP,cAAc;gBAElC,MAAMQ,cAAcjB,MAAaQ,WAAWO;gBAE5C,IAAIb,kBAAkBM,cAAcN,kBAAkBa,YAAY;oBAC9DE,YAAmCb,MAAM,GAAGD,gBAC5CY,UAAUX,MAAM,EAChBI,UAAUJ,MAAM;gBAEpB;gBAEAE,aAAaY,IAAI,CAACD;YACpB,OAAO;gBACLX,aAAaY,IAAI,CAACV;YACpB;QACF;IACF;IAEA,OAAOF;AACT;AAEA,eAAeH,gBAAe"}
|
|
@@ -10,4 +10,4 @@ export default [
|
|
|
10
10
|
'date'
|
|
11
11
|
];
|
|
12
12
|
|
|
13
|
-
//# sourceMappingURL=
|
|
13
|
+
//# sourceMappingURL=sortableFieldTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/sortableFieldTypes.ts"],"sourcesContent":["export default ['text', 'textarea', 'code', 'json', 'number', 'email', 'radio', 'select', 'date']\n"],"names":[],"mappings":"AAAA,eAAe;IAAC;IAAQ;IAAY;IAAQ;IAAQ;IAAU;IAAS;IAAS;IAAU;CAAO,CAAA"}
|