payload 4.0.0-internal.e7d4ebc → 4.0.0-internal.ee5d8bd
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/bin.js +17 -24
- package/dist/admin/RichText.d.ts +26 -4
- package/dist/admin/RichText.d.ts.map +1 -1
- package/dist/admin/RichText.js.map +1 -1
- package/dist/admin/adapters/devReload.d.ts +13 -0
- package/dist/admin/adapters/devReload.d.ts.map +1 -1
- package/dist/admin/adapters/devReload.js +14 -1
- package/dist/admin/adapters/devReload.js.map +1 -1
- package/dist/admin/adapters/router.d.ts +1 -1
- package/dist/admin/adapters/router.d.ts.map +1 -1
- package/dist/admin/adapters/router.js.map +1 -1
- package/dist/admin/fields/Array.d.ts +11 -13
- package/dist/admin/fields/Array.d.ts.map +1 -1
- package/dist/admin/fields/Array.js.map +1 -1
- package/dist/admin/fields/Blocks.d.ts +13 -16
- package/dist/admin/fields/Blocks.d.ts.map +1 -1
- package/dist/admin/fields/Blocks.js.map +1 -1
- package/dist/admin/fields/Checkbox.d.ts +11 -13
- package/dist/admin/fields/Checkbox.d.ts.map +1 -1
- package/dist/admin/fields/Checkbox.js.map +1 -1
- package/dist/admin/fields/Code.d.ts +11 -13
- package/dist/admin/fields/Code.d.ts.map +1 -1
- package/dist/admin/fields/Code.js.map +1 -1
- package/dist/admin/fields/Collapsible.d.ts +11 -13
- package/dist/admin/fields/Collapsible.d.ts.map +1 -1
- package/dist/admin/fields/Collapsible.js.map +1 -1
- package/dist/admin/fields/Date.d.ts +11 -13
- package/dist/admin/fields/Date.d.ts.map +1 -1
- package/dist/admin/fields/Date.js.map +1 -1
- package/dist/admin/fields/Email.d.ts +11 -13
- package/dist/admin/fields/Email.d.ts.map +1 -1
- package/dist/admin/fields/Email.js.map +1 -1
- package/dist/admin/fields/Group.d.ts +11 -13
- package/dist/admin/fields/Group.d.ts.map +1 -1
- package/dist/admin/fields/Group.js.map +1 -1
- package/dist/admin/fields/JSON.d.ts +11 -13
- package/dist/admin/fields/JSON.d.ts.map +1 -1
- package/dist/admin/fields/JSON.js.map +1 -1
- package/dist/admin/fields/Join.d.ts +12 -14
- package/dist/admin/fields/Join.d.ts.map +1 -1
- package/dist/admin/fields/Join.js.map +1 -1
- package/dist/admin/fields/Number.d.ts +11 -13
- package/dist/admin/fields/Number.d.ts.map +1 -1
- package/dist/admin/fields/Number.js.map +1 -1
- package/dist/admin/fields/Point.d.ts +11 -13
- package/dist/admin/fields/Point.d.ts.map +1 -1
- package/dist/admin/fields/Point.js.map +1 -1
- package/dist/admin/fields/Radio.d.ts +11 -13
- package/dist/admin/fields/Radio.d.ts.map +1 -1
- package/dist/admin/fields/Radio.js.map +1 -1
- package/dist/admin/fields/Relationship.d.ts +11 -13
- package/dist/admin/fields/Relationship.d.ts.map +1 -1
- package/dist/admin/fields/Relationship.js.map +1 -1
- package/dist/admin/fields/RichText.d.ts +13 -15
- package/dist/admin/fields/RichText.d.ts.map +1 -1
- package/dist/admin/fields/RichText.js.map +1 -1
- package/dist/admin/fields/Row.d.ts +10 -12
- package/dist/admin/fields/Row.d.ts.map +1 -1
- package/dist/admin/fields/Row.js.map +1 -1
- package/dist/admin/fields/Select.d.ts +11 -13
- package/dist/admin/fields/Select.d.ts.map +1 -1
- package/dist/admin/fields/Select.js.map +1 -1
- package/dist/admin/fields/Tabs.d.ts +11 -13
- package/dist/admin/fields/Tabs.d.ts.map +1 -1
- package/dist/admin/fields/Tabs.js.map +1 -1
- package/dist/admin/fields/Text.d.ts +11 -13
- package/dist/admin/fields/Text.d.ts.map +1 -1
- package/dist/admin/fields/Text.js.map +1 -1
- package/dist/admin/fields/Textarea.d.ts +11 -13
- package/dist/admin/fields/Textarea.d.ts.map +1 -1
- package/dist/admin/fields/Textarea.js.map +1 -1
- package/dist/admin/fields/UI.d.ts +3 -5
- package/dist/admin/fields/UI.d.ts.map +1 -1
- package/dist/admin/fields/UI.js.map +1 -1
- package/dist/admin/fields/Upload.d.ts +11 -13
- package/dist/admin/fields/Upload.d.ts.map +1 -1
- package/dist/admin/fields/Upload.js.map +1 -1
- package/dist/admin/forms/Description.d.ts +0 -2
- package/dist/admin/forms/Description.d.ts.map +1 -1
- package/dist/admin/forms/Description.js.map +1 -1
- package/dist/admin/forms/Diff.d.ts +5 -27
- package/dist/admin/forms/Diff.d.ts.map +1 -1
- package/dist/admin/forms/Diff.js.map +1 -1
- package/dist/admin/forms/Error.d.ts +0 -2
- package/dist/admin/forms/Error.d.ts.map +1 -1
- package/dist/admin/forms/Error.js.map +1 -1
- package/dist/admin/forms/Field.d.ts +6 -4
- package/dist/admin/forms/Field.d.ts.map +1 -1
- package/dist/admin/forms/Field.js.map +1 -1
- package/dist/admin/forms/Form.d.ts +2 -0
- package/dist/admin/forms/Form.d.ts.map +1 -1
- package/dist/admin/forms/Form.js.map +1 -1
- package/dist/admin/forms/Label.d.ts +2 -2
- package/dist/admin/forms/Label.d.ts.map +1 -1
- package/dist/admin/forms/Label.js.map +1 -1
- package/dist/admin/functions/index.d.ts +15 -7
- package/dist/admin/functions/index.d.ts.map +1 -1
- package/dist/admin/functions/index.js.map +1 -1
- package/dist/admin/getRequestLocale.d.ts +6 -0
- package/dist/admin/getRequestLocale.d.ts.map +1 -0
- package/dist/admin/getRequestLocale.js +38 -0
- package/dist/admin/getRequestLocale.js.map +1 -0
- package/dist/admin/initAdminContext.d.ts +39 -0
- package/dist/admin/initAdminContext.d.ts.map +1 -0
- package/dist/admin/initAdminContext.js +151 -0
- package/dist/admin/initAdminContext.js.map +1 -0
- package/dist/admin/types.d.ts +32 -32
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/admin/views/dashboard.d.ts +2 -2
- package/dist/admin/views/dashboard.d.ts.map +1 -1
- package/dist/admin/views/dashboard.js.map +1 -1
- package/dist/admin/views/index.d.ts +2 -2
- package/dist/admin/views/index.d.ts.map +1 -1
- package/dist/admin/views/index.js.map +1 -1
- package/dist/admin/views/list.d.ts +22 -1
- package/dist/admin/views/list.d.ts.map +1 -1
- package/dist/admin/views/list.js.map +1 -1
- package/dist/auth/applyUserReadAccess.d.ts +13 -0
- package/dist/auth/applyUserReadAccess.d.ts.map +1 -0
- package/dist/auth/applyUserReadAccess.js +41 -0
- package/dist/auth/applyUserReadAccess.js.map +1 -0
- package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.js +20 -0
- package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.js.map +1 -0
- package/dist/auth/baseFields/apiKey/encryptAPIKey.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/encryptAPIKey.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/encryptAPIKey.js +11 -0
- package/dist/auth/baseFields/apiKey/encryptAPIKey.js.map +1 -0
- package/dist/auth/baseFields/apiKey/getAPIKeyLast4.d.ts +3 -0
- package/dist/auth/baseFields/apiKey/getAPIKeyLast4.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/getAPIKeyLast4.js +5 -0
- package/dist/auth/baseFields/apiKey/getAPIKeyLast4.js.map +1 -0
- package/dist/auth/baseFields/apiKey/omitAPIKey.d.ts +5 -0
- package/dist/auth/baseFields/apiKey/omitAPIKey.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/omitAPIKey.js +11 -0
- package/dist/auth/baseFields/apiKey/omitAPIKey.js.map +1 -0
- package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.js +5 -0
- package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.js.map +1 -0
- package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.js +5 -0
- package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.js.map +1 -0
- package/dist/auth/baseFields/apiKey/setAPIKeyIndex.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/setAPIKeyIndex.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/setAPIKeyIndex.js +12 -0
- package/dist/auth/baseFields/apiKey/setAPIKeyIndex.js.map +1 -0
- package/dist/auth/baseFields/apiKey/setKeyLast4.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/setKeyLast4.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/setKeyLast4.js +12 -0
- package/dist/auth/baseFields/apiKey/setKeyLast4.js.map +1 -0
- package/dist/auth/baseFields/apiKey.d.ts +6 -6
- package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
- package/dist/auth/baseFields/apiKey.js +88 -57
- package/dist/auth/baseFields/apiKey.js.map +1 -1
- package/dist/auth/baseFields/auth.d.ts +1 -0
- package/dist/auth/baseFields/auth.d.ts.map +1 -1
- package/dist/auth/baseFields/auth.js +9 -0
- package/dist/auth/baseFields/auth.js.map +1 -1
- package/dist/auth/createAuthToken.d.ts +26 -0
- package/dist/auth/createAuthToken.d.ts.map +1 -0
- package/dist/auth/createAuthToken.js +39 -0
- package/dist/auth/createAuthToken.js.map +1 -0
- package/dist/auth/crypto.d.ts +73 -2
- package/dist/auth/crypto.d.ts.map +1 -1
- package/dist/auth/crypto.js +90 -13
- package/dist/auth/crypto.js.map +1 -1
- package/dist/auth/defaultUnlockAccess.d.ts +3 -0
- package/dist/auth/defaultUnlockAccess.d.ts.map +1 -0
- package/dist/auth/defaultUnlockAccess.js +8 -0
- package/dist/auth/defaultUnlockAccess.js.map +1 -0
- package/dist/auth/endpoints/access.d.ts.map +1 -1
- package/dist/auth/endpoints/access.js +1 -1
- package/dist/auth/endpoints/access.js.map +1 -1
- package/dist/auth/endpoints/forgotPassword.d.ts.map +1 -1
- package/dist/auth/endpoints/forgotPassword.js +1 -1
- package/dist/auth/endpoints/forgotPassword.js.map +1 -1
- package/dist/auth/endpoints/index.d.ts +1 -0
- package/dist/auth/endpoints/index.d.ts.map +1 -1
- package/dist/auth/endpoints/index.js +8 -0
- package/dist/auth/endpoints/index.js.map +1 -1
- package/dist/auth/endpoints/login.d.ts.map +1 -1
- package/dist/auth/endpoints/login.js +3 -12
- package/dist/auth/endpoints/login.js.map +1 -1
- package/dist/auth/endpoints/logout.d.ts.map +1 -1
- package/dist/auth/endpoints/logout.js +1 -1
- package/dist/auth/endpoints/logout.js.map +1 -1
- package/dist/auth/endpoints/me.d.ts.map +1 -1
- package/dist/auth/endpoints/me.js +1 -1
- package/dist/auth/endpoints/me.js.map +1 -1
- package/dist/auth/endpoints/refresh.d.ts.map +1 -1
- package/dist/auth/endpoints/refresh.js +6 -7
- package/dist/auth/endpoints/refresh.js.map +1 -1
- package/dist/auth/endpoints/registerFirstUser.d.ts.map +1 -1
- package/dist/auth/endpoints/registerFirstUser.js +1 -1
- package/dist/auth/endpoints/registerFirstUser.js.map +1 -1
- package/dist/auth/endpoints/resetPassword.d.ts.map +1 -1
- package/dist/auth/endpoints/resetPassword.js +1 -1
- package/dist/auth/endpoints/resetPassword.js.map +1 -1
- package/dist/auth/endpoints/revealAPIKey.d.ts +7 -0
- package/dist/auth/endpoints/revealAPIKey.d.ts.map +1 -0
- package/dist/auth/endpoints/revealAPIKey.js +122 -0
- package/dist/auth/endpoints/revealAPIKey.js.map +1 -0
- package/dist/auth/endpoints/unlock.d.ts.map +1 -1
- package/dist/auth/endpoints/unlock.js +1 -1
- package/dist/auth/endpoints/unlock.js.map +1 -1
- package/dist/auth/endpoints/verifyEmail.d.ts.map +1 -1
- package/dist/auth/endpoints/verifyEmail.js +1 -1
- package/dist/auth/endpoints/verifyEmail.js.map +1 -1
- package/dist/auth/executeAccess.d.ts +2 -1
- package/dist/auth/executeAccess.d.ts.map +1 -1
- package/dist/auth/executeAccess.js +2 -1
- package/dist/auth/executeAccess.js.map +1 -1
- package/dist/auth/getAccessResults.d.ts.map +1 -1
- package/dist/auth/getAccessResults.js +5 -2
- package/dist/auth/getAccessResults.js.map +1 -1
- package/dist/auth/getAuthFields.d.ts +1 -1
- package/dist/auth/getAuthFields.d.ts.map +1 -1
- package/dist/auth/getAuthFields.js +7 -4
- package/dist/auth/getAuthFields.js.map +1 -1
- package/dist/auth/getFieldsToSign.d.ts.map +1 -1
- package/dist/auth/getFieldsToSign.js +20 -10
- package/dist/auth/getFieldsToSign.js.map +1 -1
- package/dist/auth/getLoginOptions.js.map +1 -1
- package/dist/auth/jwt.d.ts.map +1 -1
- package/dist/auth/jwt.js +3 -1
- package/dist/auth/jwt.js.map +1 -1
- package/dist/auth/jwtAuth.d.ts +9 -0
- package/dist/auth/jwtAuth.d.ts.map +1 -0
- package/dist/auth/jwtAuth.js +8 -0
- package/dist/auth/jwtAuth.js.map +1 -0
- package/dist/auth/loginWithCookie.d.ts +33 -0
- package/dist/auth/loginWithCookie.d.ts.map +1 -0
- package/dist/auth/loginWithCookie.js +35 -0
- package/dist/auth/loginWithCookie.js.map +1 -0
- package/dist/auth/operations/access.d.ts.map +1 -1
- package/dist/auth/operations/access.js +3 -9
- package/dist/auth/operations/access.js.map +1 -1
- package/dist/auth/operations/auth.d.ts.map +1 -1
- package/dist/auth/operations/auth.js +16 -21
- package/dist/auth/operations/auth.js.map +1 -1
- package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
- package/dist/auth/operations/forgotPassword.js +100 -15
- package/dist/auth/operations/forgotPassword.js.map +1 -1
- package/dist/auth/operations/local/auth.js +7 -4
- package/dist/auth/operations/local/auth.js.map +1 -1
- package/dist/auth/operations/local/forgotPassword.d.ts +2 -2
- package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
- package/dist/auth/operations/local/forgotPassword.js +6 -3
- package/dist/auth/operations/local/forgotPassword.js.map +1 -1
- package/dist/auth/operations/local/login.d.ts +2 -2
- package/dist/auth/operations/local/login.d.ts.map +1 -1
- package/dist/auth/operations/local/login.js +7 -3
- package/dist/auth/operations/local/login.js.map +1 -1
- package/dist/auth/operations/local/resetPassword.js +5 -2
- package/dist/auth/operations/local/resetPassword.js.map +1 -1
- package/dist/auth/operations/local/unlock.d.ts +2 -2
- package/dist/auth/operations/local/unlock.d.ts.map +1 -1
- package/dist/auth/operations/local/unlock.js +6 -3
- package/dist/auth/operations/local/unlock.js.map +1 -1
- package/dist/auth/operations/local/verifyEmail.js +5 -2
- package/dist/auth/operations/local/verifyEmail.js.map +1 -1
- package/dist/auth/operations/login.d.ts +2 -0
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +54 -43
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/logout.d.ts.map +1 -1
- package/dist/auth/operations/logout.js +3 -1
- package/dist/auth/operations/logout.js.map +1 -1
- package/dist/auth/operations/me.d.ts +0 -7
- package/dist/auth/operations/me.d.ts.map +1 -1
- package/dist/auth/operations/me.js +1 -7
- package/dist/auth/operations/me.js.map +1 -1
- package/dist/auth/operations/refresh.d.ts +8 -7
- package/dist/auth/operations/refresh.d.ts.map +1 -1
- package/dist/auth/operations/refresh.js +80 -30
- package/dist/auth/operations/refresh.js.map +1 -1
- package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
- package/dist/auth/operations/registerFirstUser.js +4 -4
- package/dist/auth/operations/registerFirstUser.js.map +1 -1
- package/dist/auth/operations/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/resetPassword.js +87 -42
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/operations/unlock.d.ts.map +1 -1
- package/dist/auth/operations/unlock.js +2 -1
- package/dist/auth/operations/unlock.js.map +1 -1
- package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
- package/dist/auth/operations/verifyEmail.js +3 -1
- package/dist/auth/operations/verifyEmail.js.map +1 -1
- package/dist/auth/refreshAuthToken.d.ts +32 -0
- package/dist/auth/refreshAuthToken.d.ts.map +1 -0
- package/dist/auth/refreshAuthToken.js +113 -0
- package/dist/auth/refreshAuthToken.js.map +1 -0
- package/dist/auth/rotateSecret.d.ts +51 -0
- package/dist/auth/rotateSecret.d.ts.map +1 -0
- package/dist/auth/rotateSecret.js +131 -0
- package/dist/auth/rotateSecret.js.map +1 -0
- package/dist/auth/serverFunctions/cookies.d.ts +47 -0
- package/dist/auth/serverFunctions/cookies.d.ts.map +1 -0
- package/dist/auth/serverFunctions/cookies.js +52 -0
- package/dist/auth/serverFunctions/cookies.js.map +1 -0
- package/dist/auth/serverFunctions/login.d.ts +29 -0
- package/dist/auth/serverFunctions/login.d.ts.map +1 -0
- package/dist/auth/serverFunctions/login.js +65 -0
- package/dist/auth/serverFunctions/login.js.map +1 -0
- package/dist/auth/serverFunctions/logout.d.ts +17 -0
- package/dist/auth/serverFunctions/logout.d.ts.map +1 -0
- package/dist/auth/serverFunctions/logout.js +59 -0
- package/dist/auth/serverFunctions/logout.js.map +1 -0
- package/dist/auth/serverFunctions/refresh.d.ts +17 -0
- package/dist/auth/serverFunctions/refresh.d.ts.map +1 -0
- package/dist/auth/serverFunctions/refresh.js +62 -0
- package/dist/auth/serverFunctions/refresh.js.map +1 -0
- package/dist/auth/sessions.d.ts +9 -2
- package/dist/auth/sessions.d.ts.map +1 -1
- package/dist/auth/sessions.js +9 -5
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/strategies/apiKey.d.ts.map +1 -1
- package/dist/auth/strategies/apiKey.js +48 -4
- package/dist/auth/strategies/apiKey.js.map +1 -1
- package/dist/auth/strategies/jwt.d.ts.map +1 -1
- package/dist/auth/strategies/jwt.js +84 -12
- package/dist/auth/strategies/jwt.js.map +1 -1
- package/dist/auth/strategies/local/authenticate.d.ts +5 -1
- package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
- package/dist/auth/strategies/local/authenticate.js +8 -3
- package/dist/auth/strategies/local/authenticate.js.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts +9 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.js +61 -34
- package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
- package/dist/auth/strategies/local/register.d.ts.map +1 -1
- package/dist/auth/strategies/local/register.js +1 -0
- package/dist/auth/strategies/local/register.js.map +1 -1
- package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
- package/dist/auth/strategies/local/resetLoginAttempts.js +2 -0
- package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -1
- package/dist/auth/types.d.ts +71 -20
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/auth/withBaseAccess.d.ts +22 -0
- package/dist/auth/withBaseAccess.d.ts.map +1 -0
- package/dist/auth/withBaseAccess.js +66 -0
- package/dist/auth/withBaseAccess.js.map +1 -0
- package/dist/cli/commands/build/build.d.ts +44 -0
- package/dist/cli/commands/build/build.d.ts.map +1 -0
- package/dist/cli/commands/build/build.js +225 -0
- package/dist/cli/commands/build/build.js.map +1 -0
- package/dist/cli/commands/build/index.d.ts +2 -0
- package/dist/cli/commands/build/index.d.ts.map +1 -0
- package/dist/cli/commands/build/index.js +26 -0
- package/dist/cli/commands/build/index.js.map +1 -0
- package/dist/cli/commands/collections/countDocuments.d.ts +2 -0
- package/dist/cli/commands/collections/countDocuments.d.ts.map +1 -0
- package/dist/cli/commands/collections/countDocuments.js +37 -0
- package/dist/cli/commands/collections/countDocuments.js.map +1 -0
- package/dist/cli/commands/collections/countVersions.d.ts +2 -0
- package/dist/cli/commands/collections/countVersions.d.ts.map +1 -0
- package/dist/cli/commands/collections/countVersions.js +36 -0
- package/dist/cli/commands/collections/countVersions.js.map +1 -0
- package/dist/cli/commands/collections/createDocuments.d.ts +2 -0
- package/dist/cli/commands/collections/createDocuments.d.ts.map +1 -0
- package/dist/cli/commands/collections/createDocuments.js +132 -0
- package/dist/cli/commands/collections/createDocuments.js.map +1 -0
- package/dist/cli/commands/collections/deleteDocuments.d.ts +2 -0
- package/dist/cli/commands/collections/deleteDocuments.d.ts.map +1 -0
- package/dist/cli/commands/collections/deleteDocuments.js +64 -0
- package/dist/cli/commands/collections/deleteDocuments.js.map +1 -0
- package/dist/cli/commands/collections/duplicateDocument.d.ts +2 -0
- package/dist/cli/commands/collections/duplicateDocument.d.ts.map +1 -0
- package/dist/cli/commands/collections/duplicateDocument.js +109 -0
- package/dist/cli/commands/collections/duplicateDocument.js.map +1 -0
- package/dist/cli/commands/collections/findDistinct.d.ts +2 -0
- package/dist/cli/commands/collections/findDistinct.d.ts.map +1 -0
- package/dist/cli/commands/collections/findDistinct.js +52 -0
- package/dist/cli/commands/collections/findDistinct.js.map +1 -0
- package/dist/cli/commands/collections/findDocuments.d.ts +2 -0
- package/dist/cli/commands/collections/findDocuments.d.ts.map +1 -0
- package/dist/cli/commands/collections/findDocuments.js +79 -0
- package/dist/cli/commands/collections/findDocuments.js.map +1 -0
- package/dist/cli/commands/collections/findVersionByID.d.ts +2 -0
- package/dist/cli/commands/collections/findVersionByID.d.ts.map +1 -0
- package/dist/cli/commands/collections/findVersionByID.js +48 -0
- package/dist/cli/commands/collections/findVersionByID.js.map +1 -0
- package/dist/cli/commands/collections/findVersions.d.ts +2 -0
- package/dist/cli/commands/collections/findVersions.d.ts.map +1 -0
- package/dist/cli/commands/collections/findVersions.js +57 -0
- package/dist/cli/commands/collections/findVersions.js.map +1 -0
- package/dist/cli/commands/collections/getCollectionSchema.d.ts +2 -0
- package/dist/cli/commands/collections/getCollectionSchema.d.ts.map +1 -0
- package/dist/cli/commands/collections/getCollectionSchema.js +61 -0
- package/dist/cli/commands/collections/getCollectionSchema.js.map +1 -0
- package/dist/cli/commands/collections/restoreVersion.d.ts +2 -0
- package/dist/cli/commands/collections/restoreVersion.d.ts.map +1 -0
- package/dist/cli/commands/collections/restoreVersion.js +47 -0
- package/dist/cli/commands/collections/restoreVersion.js.map +1 -0
- package/dist/cli/commands/collections/updateDocument.d.ts +2 -0
- package/dist/cli/commands/collections/updateDocument.d.ts.map +1 -0
- package/dist/cli/commands/collections/updateDocument.js +192 -0
- package/dist/cli/commands/collections/updateDocument.js.map +1 -0
- package/dist/cli/commands/data/input.d.ts +28 -0
- package/dist/cli/commands/data/input.d.ts.map +1 -0
- package/dist/cli/commands/data/input.js +76 -0
- package/dist/cli/commands/data/input.js.map +1 -0
- package/dist/cli/commands/data/utilities.d.ts +65 -0
- package/dist/cli/commands/data/utilities.d.ts.map +1 -0
- package/dist/cli/commands/data/utilities.js +67 -0
- package/dist/cli/commands/data/utilities.js.map +1 -0
- package/dist/cli/commands/generateDBSchema.d.ts +2 -0
- package/dist/cli/commands/generateDBSchema.d.ts.map +1 -0
- package/dist/cli/commands/generateDBSchema.js +29 -0
- package/dist/cli/commands/generateDBSchema.js.map +1 -0
- package/dist/cli/commands/generateImportMap/frameworkConventions.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/frameworkConventions.js.map +1 -0
- package/dist/cli/commands/generateImportMap/generateImportMap.d.ts +48 -0
- package/dist/cli/commands/generateImportMap/generateImportMap.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/generateImportMap.js +114 -0
- package/dist/cli/commands/generateImportMap/generateImportMap.js.map +1 -0
- package/dist/cli/commands/generateImportMap/index.d.ts +2 -0
- package/dist/cli/commands/generateImportMap/index.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/index.js +18 -0
- package/dist/cli/commands/generateImportMap/index.js.map +1 -0
- package/dist/cli/commands/generateImportMap/iterateCollections.d.ts +12 -0
- package/dist/cli/commands/generateImportMap/iterateCollections.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/iterateCollections.js.map +1 -0
- package/dist/cli/commands/generateImportMap/iterateConfig.d.ts +10 -0
- package/dist/cli/commands/generateImportMap/iterateConfig.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/iterateConfig.js +128 -0
- package/dist/cli/commands/generateImportMap/iterateConfig.js.map +1 -0
- package/dist/cli/commands/generateImportMap/iterateFields.d.ts +12 -0
- package/dist/cli/commands/generateImportMap/iterateFields.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/iterateFields.js.map +1 -0
- package/dist/cli/commands/generateImportMap/iterateGlobals.d.ts +12 -0
- package/dist/cli/commands/generateImportMap/iterateGlobals.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/iterateGlobals.js.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/addPayloadComponentToImportMap.d.ts +15 -0
- package/dist/cli/commands/generateImportMap/utilities/addPayloadComponentToImportMap.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/addPayloadComponentToImportMap.js.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/getFromImportMap.d.ts +9 -0
- package/dist/cli/commands/generateImportMap/utilities/getFromImportMap.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/getFromImportMap.js.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/getImportMapToBaseDirPath.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/getImportMapToBaseDirPath.js.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/parsePayloadComponent.d.ts +6 -0
- package/dist/cli/commands/generateImportMap/utilities/parsePayloadComponent.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/parsePayloadComponent.js.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/resolveImportMapFilePath.d.ts.map +1 -0
- package/dist/cli/commands/generateImportMap/utilities/resolveImportMapFilePath.js +65 -0
- package/dist/cli/commands/generateImportMap/utilities/resolveImportMapFilePath.js.map +1 -0
- package/dist/cli/commands/generateTypes.d.ts +12 -0
- package/dist/cli/commands/generateTypes.d.ts.map +1 -0
- package/dist/cli/commands/generateTypes.js +105 -0
- package/dist/cli/commands/generateTypes.js.map +1 -0
- package/dist/cli/commands/getConfigInfo.d.ts +2 -0
- package/dist/cli/commands/getConfigInfo.d.ts.map +1 -0
- package/dist/cli/commands/getConfigInfo.js +23 -0
- package/dist/cli/commands/getConfigInfo.js.map +1 -0
- package/dist/cli/commands/globals/countGlobalVersions.d.ts +2 -0
- package/dist/cli/commands/globals/countGlobalVersions.d.ts.map +1 -0
- package/dist/cli/commands/globals/countGlobalVersions.js +36 -0
- package/dist/cli/commands/globals/countGlobalVersions.js.map +1 -0
- package/dist/cli/commands/globals/findGlobal.d.ts +2 -0
- package/dist/cli/commands/globals/findGlobal.d.ts.map +1 -0
- package/dist/cli/commands/globals/findGlobal.js +42 -0
- package/dist/cli/commands/globals/findGlobal.js.map +1 -0
- package/dist/cli/commands/globals/findGlobalVersionByID.d.ts +2 -0
- package/dist/cli/commands/globals/findGlobalVersionByID.d.ts.map +1 -0
- package/dist/cli/commands/globals/findGlobalVersionByID.js +46 -0
- package/dist/cli/commands/globals/findGlobalVersionByID.js.map +1 -0
- package/dist/cli/commands/globals/findGlobalVersions.d.ts +2 -0
- package/dist/cli/commands/globals/findGlobalVersions.d.ts.map +1 -0
- package/dist/cli/commands/globals/findGlobalVersions.js +55 -0
- package/dist/cli/commands/globals/findGlobalVersions.js.map +1 -0
- package/dist/cli/commands/globals/getGlobalSchema.d.ts +2 -0
- package/dist/cli/commands/globals/getGlobalSchema.d.ts.map +1 -0
- package/dist/cli/commands/globals/getGlobalSchema.js +46 -0
- package/dist/cli/commands/globals/getGlobalSchema.js.map +1 -0
- package/dist/cli/commands/globals/restoreGlobalVersion.d.ts +2 -0
- package/dist/cli/commands/globals/restoreGlobalVersion.d.ts.map +1 -0
- package/dist/cli/commands/globals/restoreGlobalVersion.js +46 -0
- package/dist/cli/commands/globals/restoreGlobalVersion.js.map +1 -0
- package/dist/cli/commands/globals/updateGlobal.d.ts +2 -0
- package/dist/cli/commands/globals/updateGlobal.d.ts.map +1 -0
- package/dist/cli/commands/globals/updateGlobal.js +95 -0
- package/dist/cli/commands/globals/updateGlobal.js.map +1 -0
- package/dist/cli/commands/help.d.ts +2 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +42 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/info.d.ts +2 -0
- package/dist/cli/commands/info.d.ts.map +1 -0
- package/dist/cli/commands/info.js +78 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/jobs/handleSchedules.d.ts +2 -0
- package/dist/cli/commands/jobs/handleSchedules.d.ts.map +1 -0
- package/dist/cli/commands/jobs/handleSchedules.js +17 -0
- package/dist/cli/commands/jobs/handleSchedules.js.map +1 -0
- package/dist/cli/commands/jobs/run.d.ts +2 -0
- package/dist/cli/commands/jobs/run.d.ts.map +1 -0
- package/dist/cli/commands/jobs/run.js +30 -0
- package/dist/cli/commands/jobs/run.js.map +1 -0
- package/dist/cli/commands/migrate/create.d.ts +2 -0
- package/dist/cli/commands/migrate/create.d.ts.map +1 -0
- package/dist/cli/commands/migrate/create.js +44 -0
- package/dist/cli/commands/migrate/create.js.map +1 -0
- package/dist/cli/commands/migrate/down.d.ts +2 -0
- package/dist/cli/commands/migrate/down.d.ts.map +1 -0
- package/dist/cli/commands/migrate/down.js +22 -0
- package/dist/cli/commands/migrate/down.js.map +1 -0
- package/dist/cli/commands/migrate/fresh.d.ts +2 -0
- package/dist/cli/commands/migrate/fresh.d.ts.map +1 -0
- package/dist/cli/commands/migrate/fresh.js +28 -0
- package/dist/cli/commands/migrate/fresh.js.map +1 -0
- package/dist/cli/commands/migrate/initialize.d.ts +11 -0
- package/dist/cli/commands/migrate/initialize.d.ts.map +1 -0
- package/dist/cli/commands/migrate/initialize.js +17 -0
- package/dist/cli/commands/migrate/initialize.js.map +1 -0
- package/dist/cli/commands/migrate/refresh.d.ts +2 -0
- package/dist/cli/commands/migrate/refresh.d.ts.map +1 -0
- package/dist/cli/commands/migrate/refresh.js +22 -0
- package/dist/cli/commands/migrate/refresh.js.map +1 -0
- package/dist/cli/commands/migrate/reset.d.ts +2 -0
- package/dist/cli/commands/migrate/reset.d.ts.map +1 -0
- package/dist/cli/commands/migrate/reset.js +22 -0
- package/dist/cli/commands/migrate/reset.js.map +1 -0
- package/dist/cli/commands/migrate/run.d.ts +2 -0
- package/dist/cli/commands/migrate/run.d.ts.map +1 -0
- package/dist/cli/commands/migrate/run.js +28 -0
- package/dist/cli/commands/migrate/run.js.map +1 -0
- package/dist/cli/commands/migrate/status.d.ts +2 -0
- package/dist/cli/commands/migrate/status.d.ts.map +1 -0
- package/dist/cli/commands/migrate/status.js +22 -0
- package/dist/cli/commands/migrate/status.js.map +1 -0
- package/dist/cli/commands/run.d.ts +2 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +45 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/defineCLICommand.d.ts +32 -0
- package/dist/cli/defineCLICommand.d.ts.map +1 -0
- package/dist/cli/defineCLICommand.js +26 -0
- package/dist/cli/defineCLICommand.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +95 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/program/createHelp.d.ts +8 -0
- package/dist/cli/program/createHelp.d.ts.map +1 -0
- package/dist/cli/program/createHelp.js +26 -0
- package/dist/cli/program/createHelp.js.map +1 -0
- package/dist/cli/program/loadCommands.d.ts +12 -0
- package/dist/cli/program/loadCommands.d.ts.map +1 -0
- package/dist/cli/program/loadCommands.js +62 -0
- package/dist/cli/program/loadCommands.js.map +1 -0
- package/dist/cli/program/normalizeHelpArguments.d.ts +12 -0
- package/dist/cli/program/normalizeHelpArguments.d.ts.map +1 -0
- package/dist/cli/program/normalizeHelpArguments.js +34 -0
- package/dist/cli/program/normalizeHelpArguments.js.map +1 -0
- package/dist/cli/program/registerCommand.d.ts +10 -0
- package/dist/cli/program/registerCommand.d.ts.map +1 -0
- package/dist/cli/program/registerCommand.js +185 -0
- package/dist/cli/program/registerCommand.js.map +1 -0
- package/dist/cli/runtime/createRuntime.d.ts +9 -0
- package/dist/cli/runtime/createRuntime.d.ts.map +1 -0
- package/dist/cli/runtime/createRuntime.js +81 -0
- package/dist/cli/runtime/createRuntime.js.map +1 -0
- package/dist/cli/runtime/getCommandInput.d.ts +17 -0
- package/dist/cli/runtime/getCommandInput.d.ts.map +1 -0
- package/dist/cli/runtime/getCommandInput.js +86 -0
- package/dist/cli/runtime/getCommandInput.js.map +1 -0
- package/dist/cli/runtime/invokeCommand.d.ts +23 -0
- package/dist/cli/runtime/invokeCommand.d.ts.map +1 -0
- package/dist/cli/runtime/invokeCommand.js +107 -0
- package/dist/cli/runtime/invokeCommand.js.map +1 -0
- package/dist/cli/runtime/loadEnv.d.ts.map +1 -0
- package/dist/cli/runtime/loadEnv.js +58 -0
- package/dist/cli/runtime/loadEnv.js.map +1 -0
- package/dist/cli/runtime/output.d.ts +50 -0
- package/dist/cli/runtime/output.d.ts.map +1 -0
- package/dist/cli/runtime/output.js +125 -0
- package/dist/cli/runtime/output.js.map +1 -0
- package/dist/cli/runtime/redirectOutputToStderr.d.ts +8 -0
- package/dist/cli/runtime/redirectOutputToStderr.d.ts.map +1 -0
- package/dist/cli/runtime/redirectOutputToStderr.js +31 -0
- package/dist/cli/runtime/redirectOutputToStderr.js.map +1 -0
- package/dist/collections/config/client.d.ts +5 -4
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +8 -4
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/defaults.d.ts +8 -4
- package/dist/collections/config/defaults.d.ts.map +1 -1
- package/dist/collections/config/defaults.js +56 -34
- package/dist/collections/config/defaults.js.map +1 -1
- package/dist/collections/config/sanitize.d.ts +4 -8
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +115 -27
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/types.d.ts +91 -55
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/config/useAsThumbnail.d.ts +6 -0
- package/dist/collections/config/useAsThumbnail.d.ts.map +1 -0
- package/dist/collections/config/useAsThumbnail.js +21 -0
- package/dist/collections/config/useAsThumbnail.js.map +1 -0
- package/dist/collections/endpoints/count.d.ts.map +1 -1
- package/dist/collections/endpoints/count.js +1 -1
- package/dist/collections/endpoints/count.js.map +1 -1
- package/dist/collections/endpoints/create.d.ts.map +1 -1
- package/dist/collections/endpoints/create.js +1 -1
- package/dist/collections/endpoints/create.js.map +1 -1
- package/dist/collections/endpoints/delete.d.ts.map +1 -1
- package/dist/collections/endpoints/delete.js +1 -1
- package/dist/collections/endpoints/delete.js.map +1 -1
- package/dist/collections/endpoints/deleteByID.d.ts.map +1 -1
- package/dist/collections/endpoints/deleteByID.js +1 -1
- package/dist/collections/endpoints/deleteByID.js.map +1 -1
- package/dist/collections/endpoints/docAccess.d.ts.map +1 -1
- package/dist/collections/endpoints/docAccess.js +1 -1
- package/dist/collections/endpoints/docAccess.js.map +1 -1
- package/dist/collections/endpoints/duplicate.d.ts.map +1 -1
- package/dist/collections/endpoints/duplicate.js +1 -1
- package/dist/collections/endpoints/duplicate.js.map +1 -1
- package/dist/collections/endpoints/find.d.ts.map +1 -1
- package/dist/collections/endpoints/find.js +1 -1
- package/dist/collections/endpoints/find.js.map +1 -1
- package/dist/collections/endpoints/findByID.d.ts.map +1 -1
- package/dist/collections/endpoints/findByID.js +1 -1
- package/dist/collections/endpoints/findByID.js.map +1 -1
- package/dist/collections/endpoints/findDistinct.d.ts.map +1 -1
- package/dist/collections/endpoints/findDistinct.js +1 -1
- package/dist/collections/endpoints/findDistinct.js.map +1 -1
- package/dist/collections/endpoints/findVersionByID.d.ts.map +1 -1
- package/dist/collections/endpoints/findVersionByID.js +1 -1
- package/dist/collections/endpoints/findVersionByID.js.map +1 -1
- package/dist/collections/endpoints/findVersions.d.ts.map +1 -1
- package/dist/collections/endpoints/findVersions.js +1 -1
- package/dist/collections/endpoints/findVersions.js.map +1 -1
- package/dist/collections/endpoints/index.d.ts +1 -0
- package/dist/collections/endpoints/index.d.ts.map +1 -1
- package/dist/collections/endpoints/index.js +23 -5
- package/dist/collections/endpoints/index.js.map +1 -1
- package/dist/collections/endpoints/renameFile.d.ts +3 -0
- package/dist/collections/endpoints/renameFile.d.ts.map +1 -0
- package/dist/collections/endpoints/renameFile.js +31 -0
- package/dist/collections/endpoints/renameFile.js.map +1 -0
- package/dist/collections/endpoints/restoreVersion.d.ts.map +1 -1
- package/dist/collections/endpoints/restoreVersion.js +1 -1
- package/dist/collections/endpoints/restoreVersion.js.map +1 -1
- package/dist/collections/endpoints/update.d.ts.map +1 -1
- package/dist/collections/endpoints/update.js +1 -1
- package/dist/collections/endpoints/update.js.map +1 -1
- package/dist/collections/endpoints/updateByID.d.ts.map +1 -1
- package/dist/collections/endpoints/updateByID.js +1 -1
- package/dist/collections/endpoints/updateByID.js.map +1 -1
- package/dist/collections/endpoints/validate.d.ts +19 -0
- package/dist/collections/endpoints/validate.d.ts.map +1 -0
- package/dist/collections/endpoints/validate.js +89 -0
- package/dist/collections/endpoints/validate.js.map +1 -0
- package/dist/collections/operations/count.d.ts.map +1 -1
- package/dist/collections/operations/count.js +65 -70
- package/dist/collections/operations/count.js.map +1 -1
- package/dist/collections/operations/countVersions.d.ts.map +1 -1
- package/dist/collections/operations/countVersions.js +61 -66
- package/dist/collections/operations/countVersions.js.map +1 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +246 -30
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js +300 -129
- package/dist/collections/operations/delete.js.map +1 -1
- package/dist/collections/operations/deleteByID.d.ts.map +1 -1
- package/dist/collections/operations/deleteByID.js +71 -13
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/docAccess.d.ts.map +1 -1
- package/dist/collections/operations/docAccess.js +21 -26
- package/dist/collections/operations/docAccess.js.map +1 -1
- package/dist/collections/operations/find.d.ts.map +1 -1
- package/dist/collections/operations/find.js +248 -246
- package/dist/collections/operations/find.js.map +1 -1
- package/dist/collections/operations/findByID.d.ts.map +1 -1
- package/dist/collections/operations/findByID.js +258 -215
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/collections/operations/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/findDistinct.js +236 -155
- package/dist/collections/operations/findDistinct.js.map +1 -1
- package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/findVersionByID.js +168 -125
- package/dist/collections/operations/findVersionByID.js.map +1 -1
- package/dist/collections/operations/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/findVersions.js +179 -147
- package/dist/collections/operations/findVersions.js.map +1 -1
- package/dist/collections/operations/inputSchemas.d.ts +877 -0
- package/dist/collections/operations/inputSchemas.d.ts.map +1 -0
- package/dist/collections/operations/inputSchemas.js +217 -0
- package/dist/collections/operations/inputSchemas.js.map +1 -0
- package/dist/collections/operations/local/count.d.ts +2 -7
- package/dist/collections/operations/local/count.d.ts.map +1 -1
- package/dist/collections/operations/local/count.js +6 -3
- package/dist/collections/operations/local/count.js.map +1 -1
- package/dist/collections/operations/local/countVersions.d.ts +2 -7
- package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/countVersions.js +6 -3
- package/dist/collections/operations/local/countVersions.js.map +1 -1
- package/dist/collections/operations/local/create.d.ts +2 -7
- package/dist/collections/operations/local/create.d.ts.map +1 -1
- package/dist/collections/operations/local/create.js +6 -3
- package/dist/collections/operations/local/create.js.map +1 -1
- package/dist/collections/operations/local/delete.d.ts +2 -7
- package/dist/collections/operations/local/delete.d.ts.map +1 -1
- package/dist/collections/operations/local/delete.js +6 -3
- package/dist/collections/operations/local/delete.js.map +1 -1
- package/dist/collections/operations/local/duplicate.d.ts +2 -7
- package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/local/duplicate.js +6 -3
- package/dist/collections/operations/local/duplicate.js.map +1 -1
- package/dist/collections/operations/local/find.d.ts +2 -7
- package/dist/collections/operations/local/find.d.ts.map +1 -1
- package/dist/collections/operations/local/find.js +6 -3
- package/dist/collections/operations/local/find.js.map +1 -1
- package/dist/collections/operations/local/findByID.d.ts +2 -7
- package/dist/collections/operations/local/findByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findByID.js +6 -3
- package/dist/collections/operations/local/findByID.js.map +1 -1
- package/dist/collections/operations/local/findDistinct.d.ts +2 -7
- package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/local/findDistinct.js +6 -3
- package/dist/collections/operations/local/findDistinct.js.map +1 -1
- package/dist/collections/operations/local/findVersionByID.d.ts +2 -7
- package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersionByID.js +6 -3
- package/dist/collections/operations/local/findVersionByID.js.map +1 -1
- package/dist/collections/operations/local/findVersions.d.ts +2 -7
- package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersions.js +6 -3
- package/dist/collections/operations/local/findVersions.js.map +1 -1
- package/dist/collections/operations/local/renameFile.d.ts +17 -0
- package/dist/collections/operations/local/renameFile.d.ts.map +1 -0
- package/dist/collections/operations/local/renameFile.js +28 -0
- package/dist/collections/operations/local/renameFile.js.map +1 -0
- package/dist/collections/operations/local/restoreVersion.d.ts +2 -7
- package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/local/restoreVersion.js +6 -3
- package/dist/collections/operations/local/restoreVersion.js.map +1 -1
- package/dist/collections/operations/local/update.d.ts +2 -7
- package/dist/collections/operations/local/update.d.ts.map +1 -1
- package/dist/collections/operations/local/update.js +6 -3
- package/dist/collections/operations/local/update.js.map +1 -1
- package/dist/collections/operations/local/validate.d.ts +63 -0
- package/dist/collections/operations/local/validate.d.ts.map +1 -0
- package/dist/collections/operations/local/validate.js +59 -0
- package/dist/collections/operations/local/validate.js.map +1 -0
- package/dist/collections/operations/renameFile.d.ts +15 -0
- package/dist/collections/operations/renameFile.d.ts.map +1 -0
- package/dist/collections/operations/renameFile.js +298 -0
- package/dist/collections/operations/renameFile.js.map +1 -0
- package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/restoreVersion.js +101 -29
- package/dist/collections/operations/restoreVersion.js.map +1 -1
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +207 -34
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +124 -6
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utilities/prefetchVersionForInheritedReadAccess.d.ts +15 -0
- package/dist/collections/operations/utilities/prefetchVersionForInheritedReadAccess.d.ts.map +1 -0
- package/dist/collections/operations/utilities/prefetchVersionForInheritedReadAccess.js +54 -0
- package/dist/collections/operations/utilities/prefetchVersionForInheritedReadAccess.js.map +1 -0
- package/dist/collections/operations/utilities/update.d.ts +4 -3
- package/dist/collections/operations/utilities/update.d.ts.map +1 -1
- package/dist/collections/operations/utilities/update.js +264 -150
- package/dist/collections/operations/utilities/update.js.map +1 -1
- package/dist/collections/operations/utilities/validateUniqueConstraints.d.ts +11 -0
- package/dist/collections/operations/utilities/validateUniqueConstraints.d.ts.map +1 -0
- package/dist/collections/operations/utilities/validateUniqueConstraints.js +100 -0
- package/dist/collections/operations/utilities/validateUniqueConstraints.js.map +1 -0
- package/dist/collections/operations/validate.d.ts +22 -0
- package/dist/collections/operations/validate.d.ts.map +1 -0
- package/dist/collections/operations/validate.js +165 -0
- package/dist/collections/operations/validate.js.map +1 -0
- package/dist/config/assertNoLegacySharpConfig.d.ts +21 -0
- package/dist/config/assertNoLegacySharpConfig.d.ts.map +1 -0
- package/dist/config/assertNoLegacySharpConfig.js +50 -0
- package/dist/config/assertNoLegacySharpConfig.js.map +1 -0
- package/dist/config/build.d.ts.map +1 -1
- package/dist/config/build.js +22 -1
- package/dist/config/build.js.map +1 -1
- package/dist/config/client.d.ts +2 -2
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +6 -6
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +99 -43
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/definePlugin.js.map +1 -1
- package/dist/config/orderable/index.d.ts +1 -1
- package/dist/config/orderable/index.d.ts.map +1 -1
- package/dist/config/orderable/index.js +74 -17
- package/dist/config/orderable/index.js.map +1 -1
- package/dist/config/orderable/utils/getJoinScopeContext.d.ts.map +1 -1
- package/dist/config/orderable/utils/getJoinScopeContext.js +1 -0
- package/dist/config/orderable/utils/getJoinScopeContext.js.map +1 -1
- package/dist/config/orderable/utils/resolvePendingTargetKey.d.ts.map +1 -1
- package/dist/config/orderable/utils/resolvePendingTargetKey.js +1 -0
- package/dist/config/orderable/utils/resolvePendingTargetKey.js.map +1 -1
- package/dist/config/sanitize.d.ts +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +101 -40
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +541 -441
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/createDatabaseAdapter.d.ts +1 -1
- package/dist/database/createDatabaseAdapter.d.ts.map +1 -1
- package/dist/database/createDatabaseAdapter.js +4 -2
- package/dist/database/createDatabaseAdapter.js.map +1 -1
- package/dist/database/createSchemaBuildContext.d.ts +12 -0
- package/dist/database/createSchemaBuildContext.d.ts.map +1 -0
- package/dist/database/createSchemaBuildContext.js +24 -0
- package/dist/database/createSchemaBuildContext.js.map +1 -0
- package/dist/database/defaultBatchProcessing.d.ts +3 -0
- package/dist/database/defaultBatchProcessing.d.ts.map +1 -0
- package/dist/database/defaultBatchProcessing.js +93 -0
- package/dist/database/defaultBatchProcessing.js.map +1 -0
- package/dist/database/defaultCopy.d.ts +3 -0
- package/dist/database/defaultCopy.d.ts.map +1 -0
- package/dist/database/defaultCopy.js +73 -0
- package/dist/database/defaultCopy.js.map +1 -0
- package/dist/database/getLocalizedPaths.d.ts +2 -1
- package/dist/database/getLocalizedPaths.d.ts.map +1 -1
- package/dist/database/getLocalizedPaths.js +12 -3
- package/dist/database/getLocalizedPaths.js.map +1 -1
- package/dist/database/isNestedRelationshipQuery.d.ts +14 -0
- package/dist/database/isNestedRelationshipQuery.d.ts.map +1 -0
- package/dist/database/isNestedRelationshipQuery.js +19 -0
- package/dist/database/isNestedRelationshipQuery.js.map +1 -0
- package/dist/database/migrations/createMigration.d.ts.map +1 -1
- package/dist/database/migrations/createMigration.js +4 -0
- package/dist/database/migrations/createMigration.js.map +1 -1
- package/dist/database/migrations/getMigrations.d.ts.map +1 -1
- package/dist/database/migrations/getMigrations.js +1 -0
- package/dist/database/migrations/getMigrations.js.map +1 -1
- package/dist/database/migrations/getPredefinedMigration.js +2 -2
- package/dist/database/migrations/getPredefinedMigration.js.map +1 -1
- package/dist/database/migrations/migrate.d.ts.map +1 -1
- package/dist/database/migrations/migrate.js +14 -2
- package/dist/database/migrations/migrate.js.map +1 -1
- package/dist/database/migrations/migrateDown.d.ts +2 -2
- package/dist/database/migrations/migrateDown.d.ts.map +1 -1
- package/dist/database/migrations/migrateDown.js +17 -4
- package/dist/database/migrations/migrateDown.js.map +1 -1
- package/dist/database/migrations/migrateRefresh.d.ts +2 -2
- package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
- package/dist/database/migrations/migrateRefresh.js +16 -4
- package/dist/database/migrations/migrateRefresh.js.map +1 -1
- package/dist/database/migrations/migrateReset.d.ts +2 -2
- package/dist/database/migrations/migrateReset.d.ts.map +1 -1
- package/dist/database/migrations/migrateReset.js +17 -3
- package/dist/database/migrations/migrateReset.js.map +1 -1
- package/dist/database/migrations/migrateStatus.d.ts +2 -2
- package/dist/database/migrations/migrateStatus.d.ts.map +1 -1
- package/dist/database/migrations/migrateStatus.js +11 -6
- package/dist/database/migrations/migrateStatus.js.map +1 -1
- package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
- package/dist/database/migrations/migrationsCollection.js +1 -0
- package/dist/database/migrations/migrationsCollection.js.map +1 -1
- package/dist/database/prefixWherePaths.d.ts +6 -0
- package/dist/database/prefixWherePaths.d.ts.map +1 -0
- package/dist/database/prefixWherePaths.js +19 -0
- package/dist/database/prefixWherePaths.js.map +1 -0
- package/dist/database/queryValidation/validateQueryPaths.d.ts +2 -1
- package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
- package/dist/database/queryValidation/validateQueryPaths.js +12 -2
- package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
- package/dist/database/queryValidation/validateSearchParams.d.ts +2 -1
- package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
- package/dist/database/queryValidation/validateSearchParams.js +88 -7
- package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
- package/dist/database/queryValidation/validateSortQuery.d.ts +23 -0
- package/dist/database/queryValidation/validateSortQuery.d.ts.map +1 -0
- package/dist/database/queryValidation/validateSortQuery.js +54 -0
- package/dist/database/queryValidation/validateSortQuery.js.map +1 -0
- package/dist/database/sanitizeJoinQuery.d.ts.map +1 -1
- package/dist/database/sanitizeJoinQuery.js +9 -1
- package/dist/database/sanitizeJoinQuery.js.map +1 -1
- package/dist/database/sanitizeWhereQuery.d.ts +1 -1
- package/dist/database/sanitizeWhereQuery.d.ts.map +1 -1
- package/dist/database/sanitizeWhereQuery.js +44 -1
- package/dist/database/sanitizeWhereQuery.js.map +1 -1
- package/dist/database/types.d.ts +98 -8
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/duplicateDocument/index.js +1 -0
- package/dist/duplicateDocument/index.js.map +1 -1
- package/dist/errors/APIError.d.ts +4 -0
- package/dist/errors/APIError.d.ts.map +1 -1
- package/dist/errors/APIError.js +6 -2
- package/dist/errors/APIError.js.map +1 -1
- package/dist/errors/AuthenticationError.d.ts.map +1 -1
- package/dist/errors/AuthenticationError.js +2 -1
- package/dist/errors/AuthenticationError.js.map +1 -1
- package/dist/errors/DuplicateCollection.d.ts.map +1 -1
- package/dist/errors/DuplicateCollection.js +1 -0
- package/dist/errors/DuplicateCollection.js.map +1 -1
- package/dist/errors/DuplicateFieldName.d.ts.map +1 -1
- package/dist/errors/DuplicateFieldName.js +1 -0
- package/dist/errors/DuplicateFieldName.js.map +1 -1
- package/dist/errors/DuplicateGlobal.d.ts.map +1 -1
- package/dist/errors/DuplicateGlobal.js +1 -0
- package/dist/errors/DuplicateGlobal.js.map +1 -1
- package/dist/errors/ErrorDeletingFile.d.ts.map +1 -1
- package/dist/errors/ErrorDeletingFile.js +2 -1
- package/dist/errors/ErrorDeletingFile.js.map +1 -1
- package/dist/errors/FileRetrievalError.d.ts.map +1 -1
- package/dist/errors/FileRetrievalError.js +2 -1
- package/dist/errors/FileRetrievalError.js.map +1 -1
- package/dist/errors/FileUploadError.d.ts.map +1 -1
- package/dist/errors/FileUploadError.js +2 -1
- package/dist/errors/FileUploadError.js.map +1 -1
- package/dist/errors/Forbidden.d.ts.map +1 -1
- package/dist/errors/Forbidden.js +2 -1
- package/dist/errors/Forbidden.js.map +1 -1
- package/dist/errors/InvalidConfiguration.d.ts.map +1 -1
- package/dist/errors/InvalidConfiguration.js +2 -1
- package/dist/errors/InvalidConfiguration.js.map +1 -1
- package/dist/errors/InvalidFieldJoin.d.ts.map +1 -1
- package/dist/errors/InvalidFieldJoin.js +1 -0
- package/dist/errors/InvalidFieldJoin.js.map +1 -1
- package/dist/errors/InvalidFieldName.d.ts.map +1 -1
- package/dist/errors/InvalidFieldName.js +1 -0
- package/dist/errors/InvalidFieldName.js.map +1 -1
- package/dist/errors/InvalidFieldRelationship.d.ts.map +1 -1
- package/dist/errors/InvalidFieldRelationship.js +1 -0
- package/dist/errors/InvalidFieldRelationship.js.map +1 -1
- package/dist/errors/InvalidSchema.d.ts.map +1 -1
- package/dist/errors/InvalidSchema.js +2 -1
- package/dist/errors/InvalidSchema.js.map +1 -1
- package/dist/errors/Locked.d.ts.map +1 -1
- package/dist/errors/Locked.js +2 -1
- package/dist/errors/Locked.js.map +1 -1
- package/dist/errors/LockedAuth.d.ts.map +1 -1
- package/dist/errors/LockedAuth.js +2 -1
- package/dist/errors/LockedAuth.js.map +1 -1
- package/dist/errors/MissingCollectionLabel.d.ts.map +1 -1
- package/dist/errors/MissingCollectionLabel.js +1 -0
- package/dist/errors/MissingCollectionLabel.js.map +1 -1
- package/dist/errors/MissingEditorProp.d.ts.map +1 -1
- package/dist/errors/MissingEditorProp.js +1 -0
- package/dist/errors/MissingEditorProp.js.map +1 -1
- package/dist/errors/MissingFieldInputOptions.d.ts.map +1 -1
- package/dist/errors/MissingFieldInputOptions.js +1 -0
- package/dist/errors/MissingFieldInputOptions.js.map +1 -1
- package/dist/errors/MissingFieldType.d.ts.map +1 -1
- package/dist/errors/MissingFieldType.js +1 -0
- package/dist/errors/MissingFieldType.js.map +1 -1
- package/dist/errors/MissingFile.d.ts.map +1 -1
- package/dist/errors/MissingFile.js +2 -1
- package/dist/errors/MissingFile.js.map +1 -1
- package/dist/errors/NotFound.d.ts.map +1 -1
- package/dist/errors/NotFound.js +2 -1
- package/dist/errors/NotFound.js.map +1 -1
- package/dist/errors/QueryError.d.ts.map +1 -1
- package/dist/errors/QueryError.js +2 -1
- package/dist/errors/QueryError.js.map +1 -1
- package/dist/errors/ReservedFieldName.d.ts.map +1 -1
- package/dist/errors/ReservedFieldName.js +1 -0
- package/dist/errors/ReservedFieldName.js.map +1 -1
- package/dist/errors/TimestampsRequired.d.ts.map +1 -1
- package/dist/errors/TimestampsRequired.js +1 -0
- package/dist/errors/TimestampsRequired.js.map +1 -1
- package/dist/errors/TransformerContractError.d.ts +11 -0
- package/dist/errors/TransformerContractError.d.ts.map +1 -0
- package/dist/errors/TransformerContractError.js +15 -0
- package/dist/errors/TransformerContractError.js.map +1 -0
- package/dist/errors/UnauthorizedError.d.ts.map +1 -1
- package/dist/errors/UnauthorizedError.js +2 -1
- package/dist/errors/UnauthorizedError.js.map +1 -1
- package/dist/errors/UnverifiedEmail.d.ts.map +1 -1
- package/dist/errors/UnverifiedEmail.js +2 -1
- package/dist/errors/UnverifiedEmail.js.map +1 -1
- package/dist/errors/ValidationError.d.ts +6 -0
- package/dist/errors/ValidationError.d.ts.map +1 -1
- package/dist/errors/ValidationError.js +12 -8
- package/dist/errors/ValidationError.js.map +1 -1
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +1 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/exports/auth.d.ts +5 -0
- package/dist/exports/auth.d.ts.map +1 -0
- package/dist/exports/auth.js +6 -0
- package/dist/exports/auth.js.map +1 -0
- package/dist/exports/build-config.d.ts +9 -0
- package/dist/exports/build-config.d.ts.map +1 -0
- package/dist/exports/build-config.js +38 -0
- package/dist/exports/build-config.js.map +1 -0
- package/dist/exports/cli.d.ts +4 -0
- package/dist/exports/cli.d.ts.map +1 -0
- package/dist/exports/cli.js +4 -0
- package/dist/exports/cli.js.map +1 -0
- package/dist/exports/cliBuiltin.d.ts +37 -0
- package/dist/exports/cliBuiltin.d.ts.map +1 -0
- package/dist/exports/cliBuiltin.js +38 -0
- package/dist/exports/cliBuiltin.js.map +1 -0
- package/dist/exports/internal.d.ts +21 -2
- package/dist/exports/internal.d.ts.map +1 -1
- package/dist/exports/internal.js +19 -3
- package/dist/exports/internal.js.map +1 -1
- package/dist/exports/node.d.ts +2 -2
- package/dist/exports/node.d.ts.map +1 -1
- package/dist/exports/node.js +2 -2
- package/dist/exports/node.js.map +1 -1
- package/dist/exports/shared.d.ts +11 -4
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +10 -4
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/baseFields/authorship/index.d.ts +30 -0
- package/dist/fields/baseFields/authorship/index.d.ts.map +1 -0
- package/dist/fields/baseFields/authorship/index.js +153 -0
- package/dist/fields/baseFields/authorship/index.js.map +1 -0
- package/dist/fields/baseFields/authorship/types.d.ts +28 -0
- package/dist/fields/baseFields/authorship/types.d.ts.map +1 -0
- package/dist/fields/baseFields/authorship/types.js +10 -0
- package/dist/fields/baseFields/authorship/types.js.map +1 -0
- package/dist/fields/baseFields/slug/duplicateContext.d.ts +11 -0
- package/dist/fields/baseFields/slug/duplicateContext.d.ts.map +1 -0
- package/dist/fields/baseFields/slug/duplicateContext.js +21 -0
- package/dist/fields/baseFields/slug/duplicateContext.js.map +1 -0
- package/dist/fields/baseFields/slug/fillEmptyLocalizedSlugs.d.ts +23 -0
- package/dist/fields/baseFields/slug/fillEmptyLocalizedSlugs.d.ts.map +1 -0
- package/dist/fields/baseFields/slug/fillEmptyLocalizedSlugs.js +65 -0
- package/dist/fields/baseFields/slug/fillEmptyLocalizedSlugs.js.map +1 -0
- package/dist/fields/baseFields/slug/generateSlug.d.ts +12 -18
- package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
- package/dist/fields/baseFields/slug/generateSlug.js +101 -40
- package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
- package/dist/fields/baseFields/slug/generateSlugBeforeDuplicate.d.ts +18 -0
- package/dist/fields/baseFields/slug/generateSlugBeforeDuplicate.d.ts.map +1 -0
- package/dist/fields/baseFields/slug/generateSlugBeforeDuplicate.js +20 -0
- package/dist/fields/baseFields/slug/generateSlugBeforeDuplicate.js.map +1 -0
- package/dist/fields/baseFields/slug/getSlugFallbackValue.d.ts +23 -0
- package/dist/fields/baseFields/slug/getSlugFallbackValue.d.ts.map +1 -0
- package/dist/fields/baseFields/slug/getSlugFallbackValue.js +24 -0
- package/dist/fields/baseFields/slug/getSlugFallbackValue.js.map +1 -0
- package/dist/fields/baseFields/slug/hasValue.d.ts +3 -0
- package/dist/fields/baseFields/slug/hasValue.d.ts.map +1 -0
- package/dist/fields/baseFields/slug/hasValue.js +3 -0
- package/dist/fields/baseFields/slug/hasValue.js.map +1 -0
- package/dist/fields/config/client.d.ts +1 -1
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/client.js +1 -1
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/reservedFieldNames.d.ts.map +1 -1
- package/dist/fields/config/reservedFieldNames.js.map +1 -1
- package/dist/fields/config/sanitize.d.ts +6 -6
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +33 -22
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/types.d.ts +66 -55
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts +14 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts.map +1 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.js +36 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.js.map +1 -0
- package/dist/fields/hooks/beforeChange/index.d.ts +11 -3
- package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/index.js +6 -2
- package/dist/fields/hooks/beforeChange/index.js.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts +7 -3
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +168 -41
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts +7 -3
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js +6 -2
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.js +4 -0
- package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/getFallbackValue.d.ts +2 -1
- package/dist/fields/hooks/beforeValidate/getFallbackValue.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/getFallbackValue.js +2 -2
- package/dist/fields/hooks/beforeValidate/getFallbackValue.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/index.d.ts +8 -3
- package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/index.js +3 -1
- package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts +8 -3
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +24 -9
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +8 -3
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js +5 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
- package/dist/fields/validateJSONSchema.browser.d.ts +4 -0
- package/dist/fields/validateJSONSchema.browser.d.ts.map +1 -0
- package/dist/fields/validateJSONSchema.browser.js +3 -0
- package/dist/fields/validateJSONSchema.browser.js.map +1 -0
- package/dist/fields/validateJSONSchema.d.ts +15 -0
- package/dist/fields/validateJSONSchema.d.ts.map +1 -0
- package/dist/fields/validateJSONSchema.js +44 -0
- package/dist/fields/validateJSONSchema.js.map +1 -0
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +19 -42
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/config/client.d.ts +2 -2
- package/dist/globals/config/client.d.ts.map +1 -1
- package/dist/globals/config/client.js +1 -0
- package/dist/globals/config/client.js.map +1 -1
- package/dist/globals/config/sanitize.d.ts +3 -7
- package/dist/globals/config/sanitize.d.ts.map +1 -1
- package/dist/globals/config/sanitize.js +82 -9
- package/dist/globals/config/sanitize.js.map +1 -1
- package/dist/globals/config/types.d.ts +52 -18
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/globals/config/types.js.map +1 -1
- package/dist/globals/endpoints/docAccess.d.ts.map +1 -1
- package/dist/globals/endpoints/docAccess.js +1 -1
- package/dist/globals/endpoints/docAccess.js.map +1 -1
- package/dist/globals/endpoints/findOne.d.ts.map +1 -1
- package/dist/globals/endpoints/findOne.js +1 -1
- package/dist/globals/endpoints/findOne.js.map +1 -1
- package/dist/globals/endpoints/findVersionByID.d.ts.map +1 -1
- package/dist/globals/endpoints/findVersionByID.js +1 -1
- package/dist/globals/endpoints/findVersionByID.js.map +1 -1
- package/dist/globals/endpoints/findVersions.d.ts.map +1 -1
- package/dist/globals/endpoints/findVersions.js +1 -1
- package/dist/globals/endpoints/findVersions.js.map +1 -1
- package/dist/globals/endpoints/index.d.ts.map +1 -1
- package/dist/globals/endpoints/index.js +6 -0
- package/dist/globals/endpoints/index.js.map +1 -1
- package/dist/globals/endpoints/restoreVersion.d.ts.map +1 -1
- package/dist/globals/endpoints/restoreVersion.js +1 -1
- package/dist/globals/endpoints/restoreVersion.js.map +1 -1
- package/dist/globals/endpoints/update.d.ts.map +1 -1
- package/dist/globals/endpoints/update.js +1 -1
- package/dist/globals/endpoints/update.js.map +1 -1
- package/dist/globals/endpoints/validate.d.ts +11 -0
- package/dist/globals/endpoints/validate.d.ts.map +1 -0
- package/dist/globals/endpoints/validate.js +49 -0
- package/dist/globals/endpoints/validate.js.map +1 -0
- package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
- package/dist/globals/operations/countGlobalVersions.js +57 -55
- package/dist/globals/operations/countGlobalVersions.js.map +1 -1
- package/dist/globals/operations/docAccess.d.ts.map +1 -1
- package/dist/globals/operations/docAccess.js +21 -26
- package/dist/globals/operations/docAccess.js.map +1 -1
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findOne.js +169 -174
- package/dist/globals/operations/findOne.js.map +1 -1
- package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/findVersionByID.js +117 -106
- package/dist/globals/operations/findVersionByID.js.map +1 -1
- package/dist/globals/operations/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/findVersions.js +123 -109
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/globals/operations/inputSchemas.d.ts +365 -0
- package/dist/globals/operations/inputSchemas.d.ts.map +1 -0
- package/dist/globals/operations/inputSchemas.js +104 -0
- package/dist/globals/operations/inputSchemas.js.map +1 -0
- package/dist/globals/operations/local/countVersions.d.ts +2 -7
- package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/countVersions.js +6 -3
- package/dist/globals/operations/local/countVersions.js.map +1 -1
- package/dist/globals/operations/local/findOne.d.ts +2 -7
- package/dist/globals/operations/local/findOne.d.ts.map +1 -1
- package/dist/globals/operations/local/findOne.js +6 -3
- package/dist/globals/operations/local/findOne.js.map +1 -1
- package/dist/globals/operations/local/findVersionByID.d.ts +2 -7
- package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersionByID.js +6 -3
- package/dist/globals/operations/local/findVersionByID.js.map +1 -1
- package/dist/globals/operations/local/findVersions.d.ts +2 -7
- package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersions.js +6 -3
- package/dist/globals/operations/local/findVersions.js.map +1 -1
- package/dist/globals/operations/local/restoreVersion.d.ts +2 -7
- package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/local/restoreVersion.js +6 -3
- package/dist/globals/operations/local/restoreVersion.js.map +1 -1
- package/dist/globals/operations/local/update.d.ts +2 -7
- package/dist/globals/operations/local/update.d.ts.map +1 -1
- package/dist/globals/operations/local/update.js +6 -3
- package/dist/globals/operations/local/update.js.map +1 -1
- package/dist/globals/operations/local/validate.d.ts +43 -0
- package/dist/globals/operations/local/validate.d.ts.map +1 -0
- package/dist/globals/operations/local/validate.js +54 -0
- package/dist/globals/operations/local/validate.js.map +1 -0
- package/dist/globals/operations/restoreVersion.d.ts +2 -3
- package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/restoreVersion.js +85 -29
- package/dist/globals/operations/restoreVersion.js.map +1 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +151 -19
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/globals/operations/validate.d.ts +21 -0
- package/dist/globals/operations/validate.d.ts.map +1 -0
- package/dist/globals/operations/validate.js +133 -0
- package/dist/globals/operations/validate.js.map +1 -0
- package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -1
- package/dist/hierarchy/addHierarchyToCollection.js +32 -19
- package/dist/hierarchy/addHierarchyToCollection.js.map +1 -1
- package/dist/hierarchy/createFolderField.js.map +1 -1
- package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +1 -1
- package/dist/hierarchy/hooks/collectionAfterDelete.js +1 -0
- package/dist/hierarchy/hooks/collectionAfterDelete.js.map +1 -1
- package/dist/hierarchy/hooks/collectionBeforeChange.js +2 -1
- package/dist/hierarchy/hooks/collectionBeforeChange.js.map +1 -1
- package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +1 -1
- package/dist/hierarchy/hooks/collectionBeforeDelete.js +1 -0
- package/dist/hierarchy/hooks/collectionBeforeDelete.js.map +1 -1
- package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +1 -1
- package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js +71 -33
- package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js.map +1 -1
- package/dist/hierarchy/resolveHierarchyCollections.js +38 -23
- package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -1
- package/dist/hierarchy/utils/computePaths.d.ts.map +1 -1
- package/dist/hierarchy/utils/computePaths.js.map +1 -1
- package/dist/index.bundled.d.ts +3752 -1469
- package/dist/index.d.ts +155 -57
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +126 -70
- package/dist/index.js.map +1 -1
- package/dist/kv/adapters/DatabaseKVAdapter.d.ts.map +1 -1
- package/dist/kv/adapters/DatabaseKVAdapter.js +2 -1
- package/dist/kv/adapters/DatabaseKVAdapter.js.map +1 -1
- package/dist/llm-instructions/addLLMInstructions.d.ts +5 -0
- package/dist/llm-instructions/addLLMInstructions.d.ts.map +1 -0
- package/dist/llm-instructions/addLLMInstructions.js +31 -0
- package/dist/llm-instructions/addLLMInstructions.js.map +1 -0
- package/dist/llm-instructions/getInstructionTargetAccess.d.ts +8 -0
- package/dist/llm-instructions/getInstructionTargetAccess.d.ts.map +1 -0
- package/dist/llm-instructions/getInstructionTargetAccess.js +40 -0
- package/dist/llm-instructions/getInstructionTargetAccess.js.map +1 -0
- package/dist/llm-instructions/getInstructions.d.ts +8 -0
- package/dist/llm-instructions/getInstructions.d.ts.map +1 -0
- package/dist/llm-instructions/getInstructions.js +46 -0
- package/dist/llm-instructions/getInstructions.js.map +1 -0
- package/dist/llm-instructions/getInstructionsCollection.d.ts +6 -0
- package/dist/llm-instructions/getInstructionsCollection.d.ts.map +1 -0
- package/dist/llm-instructions/getInstructionsCollection.js +369 -0
- package/dist/llm-instructions/getInstructionsCollection.js.map +1 -0
- package/dist/llm-instructions/shared.d.ts +11 -0
- package/dist/llm-instructions/shared.d.ts.map +1 -0
- package/dist/llm-instructions/shared.js +3 -0
- package/dist/llm-instructions/shared.js.map +1 -0
- package/dist/locked-documents/config.d.ts.map +1 -1
- package/dist/locked-documents/config.js +1 -0
- package/dist/locked-documents/config.js.map +1 -1
- package/dist/preferences/config.d.ts.map +1 -1
- package/dist/preferences/config.js +3 -1
- package/dist/preferences/config.js.map +1 -1
- package/dist/preferences/keys.d.ts +4 -0
- package/dist/preferences/keys.d.ts.map +1 -1
- package/dist/preferences/keys.js +3 -0
- package/dist/preferences/keys.js.map +1 -1
- package/dist/preferences/requestHandlers/delete.d.ts.map +1 -1
- package/dist/preferences/requestHandlers/delete.js +1 -1
- package/dist/preferences/requestHandlers/delete.js.map +1 -1
- package/dist/preferences/requestHandlers/findOne.d.ts.map +1 -1
- package/dist/preferences/requestHandlers/findOne.js +1 -1
- package/dist/preferences/requestHandlers/findOne.js.map +1 -1
- package/dist/preferences/requestHandlers/update.d.ts.map +1 -1
- package/dist/preferences/requestHandlers/update.js +1 -1
- package/dist/preferences/requestHandlers/update.js.map +1 -1
- package/dist/preferences/types.d.ts +8 -0
- package/dist/preferences/types.d.ts.map +1 -1
- package/dist/preferences/types.js +1 -3
- package/dist/preferences/types.js.map +1 -1
- package/dist/query-presets/access.d.ts +3 -1
- package/dist/query-presets/access.d.ts.map +1 -1
- package/dist/query-presets/access.js +2 -1
- package/dist/query-presets/access.js.map +1 -1
- package/dist/query-presets/config.d.ts.map +1 -1
- package/dist/query-presets/config.js +2 -1
- package/dist/query-presets/config.js.map +1 -1
- package/dist/query-presets/constraints.js +1 -1
- package/dist/query-presets/constraints.js.map +1 -1
- package/dist/query-presets/preventLockout.js +6 -3
- package/dist/query-presets/preventLockout.js.map +1 -1
- package/dist/queues/config/collection.d.ts.map +1 -1
- package/dist/queues/config/collection.js +44 -43
- package/dist/queues/config/collection.js.map +1 -1
- package/dist/queues/config/global.d.ts +5 -6
- package/dist/queues/config/global.d.ts.map +1 -1
- package/dist/queues/config/global.js +2 -1
- package/dist/queues/config/global.js.map +1 -1
- package/dist/queues/config/types/index.d.ts +33 -25
- package/dist/queues/config/types/index.d.ts.map +1 -1
- package/dist/queues/config/types/index.js.map +1 -1
- package/dist/queues/config/types/taskTypes.d.ts +4 -7
- package/dist/queues/config/types/taskTypes.d.ts.map +1 -1
- package/dist/queues/config/types/taskTypes.js.map +1 -1
- package/dist/queues/config/types/workflowJSONTypes.d.ts +10 -9
- package/dist/queues/config/types/workflowJSONTypes.d.ts.map +1 -1
- package/dist/queues/config/types/workflowJSONTypes.js.map +1 -1
- package/dist/queues/config/types/workflowTypes.d.ts +11 -58
- package/dist/queues/config/types/workflowTypes.d.ts.map +1 -1
- package/dist/queues/config/types/workflowTypes.js.map +1 -1
- package/dist/queues/endpoints/handleSchedules.d.ts.map +1 -1
- package/dist/queues/endpoints/handleSchedules.js +3 -2
- package/dist/queues/endpoints/handleSchedules.js.map +1 -1
- package/dist/queues/endpoints/run.d.ts.map +1 -1
- package/dist/queues/endpoints/run.js +2 -1
- package/dist/queues/endpoints/run.js.map +1 -1
- package/dist/queues/errors/handleTaskError.js +4 -4
- package/dist/queues/errors/handleTaskError.js.map +1 -1
- package/dist/queues/errors/handleWorkflowError.js +1 -1
- package/dist/queues/errors/handleWorkflowError.js.map +1 -1
- package/dist/queues/errors/index.d.ts +6 -0
- package/dist/queues/errors/index.d.ts.map +1 -1
- package/dist/queues/errors/index.js +5 -0
- package/dist/queues/errors/index.js.map +1 -1
- package/dist/queues/localAPI.d.ts +10 -63
- package/dist/queues/localAPI.d.ts.map +1 -1
- package/dist/queues/localAPI.js +90 -78
- package/dist/queues/localAPI.js.map +1 -1
- package/dist/queues/operations/handleSchedules/countRunnableOrActiveJobsForQueue.d.ts +4 -4
- package/dist/queues/operations/handleSchedules/countRunnableOrActiveJobsForQueue.d.ts.map +1 -1
- package/dist/queues/operations/handleSchedules/countRunnableOrActiveJobsForQueue.js.map +1 -1
- package/dist/queues/operations/handleSchedules/index.d.ts +1 -1
- package/dist/queues/operations/handleSchedules/index.d.ts.map +1 -1
- package/dist/queues/operations/handleSchedules/index.js +2 -1
- package/dist/queues/operations/handleSchedules/index.js.map +1 -1
- package/dist/queues/operations/runJobs/heartbeat.d.ts +13 -0
- package/dist/queues/operations/runJobs/heartbeat.d.ts.map +1 -0
- package/dist/queues/operations/runJobs/heartbeat.js +66 -0
- package/dist/queues/operations/runJobs/heartbeat.js.map +1 -0
- package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/index.js +133 -84
- package/dist/queues/operations/runJobs/index.js.map +1 -1
- package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJSONJob/index.js +6 -3
- package/dist/queues/operations/runJobs/runJSONJob/index.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +6 -6
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts +2 -1
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +39 -8
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/importHandlerPath.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/index.js +4 -4
- package/dist/queues/operations/runJobs/runJob/index.js.map +1 -1
- package/dist/queues/utilities/updateJob.d.ts.map +1 -1
- package/dist/queues/utilities/updateJob.js +22 -4
- package/dist/queues/utilities/updateJob.js.map +1 -1
- package/dist/types/constants.d.ts +21 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/constants.js +23 -0
- package/dist/types/constants.js.map +1 -1
- package/dist/types/index.d.ts +21 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/operations.d.ts +9 -0
- package/dist/types/operations.d.ts.map +1 -0
- package/dist/types/operations.js +3 -0
- package/dist/types/operations.js.map +1 -0
- package/dist/types/validation.d.ts +18 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +8 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/uploads/assertClientUploadAccess.d.ts +7 -0
- package/dist/uploads/assertClientUploadAccess.d.ts.map +1 -0
- package/dist/uploads/assertClientUploadAccess.js +29 -0
- package/dist/uploads/assertClientUploadAccess.js.map +1 -0
- package/dist/uploads/assertClientUploadAllowed.d.ts +10 -0
- package/dist/uploads/assertClientUploadAllowed.d.ts.map +1 -0
- package/dist/uploads/assertClientUploadAllowed.js +41 -0
- package/dist/uploads/assertClientUploadAllowed.js.map +1 -0
- package/dist/uploads/checkFileAccess.d.ts +2 -1
- package/dist/uploads/checkFileAccess.d.ts.map +1 -1
- package/dist/uploads/checkFileAccess.js +17 -22
- package/dist/uploads/checkFileAccess.js.map +1 -1
- package/dist/uploads/checkFileRestrictions.d.ts +11 -1
- package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
- package/dist/uploads/checkFileRestrictions.js +79 -28
- package/dist/uploads/checkFileRestrictions.js.map +1 -1
- package/dist/uploads/clientUploadReceipt.d.ts +29 -0
- package/dist/uploads/clientUploadReceipt.d.ts.map +1 -0
- package/dist/uploads/clientUploadReceipt.js +76 -0
- package/dist/uploads/clientUploadReceipt.js.map +1 -0
- package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.js +69 -12
- package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
- package/dist/uploads/detectSvgFromXml.d.ts +1 -4
- package/dist/uploads/detectSvgFromXml.d.ts.map +1 -1
- package/dist/uploads/detectSvgFromXml.js +2 -41
- package/dist/uploads/detectSvgFromXml.js.map +1 -1
- package/dist/uploads/docWithFilenameExists.d.ts +2 -1
- package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
- package/dist/uploads/docWithFilenameExists.js +19 -11
- package/dist/uploads/docWithFilenameExists.js.map +1 -1
- package/dist/uploads/downloadFileToBuffer.d.ts +11 -0
- package/dist/uploads/downloadFileToBuffer.d.ts.map +1 -0
- package/dist/uploads/downloadFileToBuffer.js +72 -0
- package/dist/uploads/downloadFileToBuffer.js.map +1 -0
- package/dist/uploads/endpoints/getFile.d.ts +17 -0
- package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
- package/dist/uploads/endpoints/getFile.js +76 -13
- package/dist/uploads/endpoints/getFile.js.map +1 -1
- package/dist/uploads/endpoints/index.js +2 -2
- package/dist/uploads/endpoints/index.js.map +1 -1
- package/dist/uploads/endpoints/pasteURL.d.ts +3 -0
- package/dist/uploads/endpoints/pasteURL.d.ts.map +1 -0
- package/dist/uploads/endpoints/pasteURL.js +80 -0
- package/dist/uploads/endpoints/pasteURL.js.map +1 -0
- package/dist/uploads/endpoints/uploadInstructions.d.ts.map +1 -1
- package/dist/uploads/endpoints/uploadInstructions.js +29 -26
- package/dist/uploads/endpoints/uploadInstructions.js.map +1 -1
- package/dist/uploads/fetchAPI-multipart/handlers.d.ts +2 -2
- package/dist/uploads/fetchAPI-multipart/handlers.d.ts.map +1 -1
- package/dist/uploads/fetchAPI-multipart/handlers.js +18 -5
- package/dist/uploads/fetchAPI-multipart/handlers.js.map +1 -1
- package/dist/uploads/fetchAPI-multipart/index.d.ts.map +1 -1
- package/dist/uploads/fetchAPI-multipart/index.js +24 -2
- package/dist/uploads/fetchAPI-multipart/index.js.map +1 -1
- package/dist/uploads/fetchAPI-multipart/isEligibleRequest.js +1 -2
- package/dist/uploads/fetchAPI-multipart/isEligibleRequest.js.map +1 -1
- package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts +0 -6
- package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
- package/dist/uploads/fetchAPI-multipart/processMultipart.js +147 -131
- package/dist/uploads/fetchAPI-multipart/processMultipart.js.map +1 -1
- package/dist/uploads/fetchAPI-stream-file/index.d.ts +4 -1
- package/dist/uploads/fetchAPI-stream-file/index.d.ts.map +1 -1
- package/dist/uploads/fetchAPI-stream-file/index.js +9 -2
- package/dist/uploads/fetchAPI-stream-file/index.js.map +1 -1
- package/dist/uploads/fetchWithRedirects.d.ts +19 -0
- package/dist/uploads/fetchWithRedirects.d.ts.map +1 -0
- package/dist/uploads/fetchWithRedirects.js +53 -0
- package/dist/uploads/fetchWithRedirects.js.map +1 -0
- package/dist/uploads/fileVersioning/archive.d.ts +29 -0
- package/dist/uploads/fileVersioning/archive.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/archive.js +277 -0
- package/dist/uploads/fileVersioning/archive.js.map +1 -0
- package/dist/uploads/fileVersioning/cleanup.d.ts +29 -0
- package/dist/uploads/fileVersioning/cleanup.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/cleanup.js +288 -0
- package/dist/uploads/fileVersioning/cleanup.js.map +1 -0
- package/dist/uploads/fileVersioning/cloudStorage.d.ts +24 -0
- package/dist/uploads/fileVersioning/cloudStorage.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/cloudStorage.js +260 -0
- package/dist/uploads/fileVersioning/cloudStorage.js.map +1 -0
- package/dist/uploads/fileVersioning/fileOperationManager.d.ts +65 -0
- package/dist/uploads/fileVersioning/fileOperationManager.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/fileOperationManager.js +324 -0
- package/dist/uploads/fileVersioning/fileOperationManager.js.map +1 -0
- package/dist/uploads/fileVersioning/localStorage.d.ts +9 -0
- package/dist/uploads/fileVersioning/localStorage.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/localStorage.js +78 -0
- package/dist/uploads/fileVersioning/localStorage.js.map +1 -0
- package/dist/uploads/fileVersioning/markHistoricalFileURLs.d.ts +8 -0
- package/dist/uploads/fileVersioning/markHistoricalFileURLs.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/markHistoricalFileURLs.js +49 -0
- package/dist/uploads/fileVersioning/markHistoricalFileURLs.js.map +1 -0
- package/dist/uploads/fileVersioning/naming.d.ts +12 -0
- package/dist/uploads/fileVersioning/naming.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/naming.js +47 -0
- package/dist/uploads/fileVersioning/naming.js.map +1 -0
- package/dist/uploads/fileVersioning/resolveHistoricalFile.d.ts +11 -0
- package/dist/uploads/fileVersioning/resolveHistoricalFile.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/resolveHistoricalFile.js +73 -0
- package/dist/uploads/fileVersioning/resolveHistoricalFile.js.map +1 -0
- package/dist/uploads/fileVersioning/restore.d.ts +12 -0
- package/dist/uploads/fileVersioning/restore.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/restore.js +147 -0
- package/dist/uploads/fileVersioning/restore.js.map +1 -0
- package/dist/uploads/fileVersioning/storedFiles.d.ts +23 -0
- package/dist/uploads/fileVersioning/storedFiles.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/storedFiles.js +185 -0
- package/dist/uploads/fileVersioning/storedFiles.js.map +1 -0
- package/dist/uploads/fileVersioning/types.d.ts +18 -0
- package/dist/uploads/fileVersioning/types.d.ts.map +1 -0
- package/dist/uploads/fileVersioning/types.js +3 -0
- package/dist/uploads/fileVersioning/types.js.map +1 -0
- package/dist/uploads/formatFilesize.js +1 -1
- package/dist/uploads/formatFilesize.js.map +1 -1
- package/dist/uploads/generateFileData.d.ts +31 -1
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +437 -199
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/generateFilePathOrURL.d.ts +1 -1
- package/dist/uploads/generateFilePathOrURL.d.ts.map +1 -1
- package/dist/uploads/generateFilePathOrURL.js +1 -1
- package/dist/uploads/generateFilePathOrURL.js.map +1 -1
- package/dist/uploads/generateImageSizeFilename.d.ts.map +1 -0
- package/dist/uploads/generateImageSizeFilename.js.map +1 -0
- package/dist/uploads/generatePayloadFileURL.d.ts +25 -0
- package/dist/uploads/generatePayloadFileURL.d.ts.map +1 -0
- package/dist/uploads/generatePayloadFileURL.js +64 -0
- package/dist/uploads/generatePayloadFileURL.js.map +1 -0
- package/dist/uploads/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +96 -10
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/getFileContentRequirement.d.ts +39 -0
- package/dist/uploads/getFileContentRequirement.d.ts.map +1 -0
- package/dist/uploads/getFileContentRequirement.js +45 -0
- package/dist/uploads/getFileContentRequirement.js.map +1 -0
- package/dist/uploads/getFileFromUploadInstructions.d.ts.map +1 -1
- package/dist/uploads/getFileFromUploadInstructions.js +348 -10
- package/dist/uploads/getFileFromUploadInstructions.js.map +1 -1
- package/dist/uploads/getFileTypeFallback.d.ts.map +1 -1
- package/dist/uploads/getFileTypeFallback.js +3 -1
- package/dist/uploads/getFileTypeFallback.js.map +1 -1
- package/dist/uploads/getFileTypeIdentity.d.ts +19 -0
- package/dist/uploads/getFileTypeIdentity.d.ts.map +1 -0
- package/dist/uploads/getFileTypeIdentity.js +34 -0
- package/dist/uploads/getFileTypeIdentity.js.map +1 -0
- package/dist/uploads/getImageSize.d.ts +8 -1
- package/dist/uploads/getImageSize.d.ts.map +1 -1
- package/dist/uploads/getImageSize.js +11 -19
- package/dist/uploads/getImageSize.js.map +1 -1
- package/dist/uploads/getRangeRequestInfo.d.ts.map +1 -1
- package/dist/uploads/getRangeRequestInfo.js +1 -1
- package/dist/uploads/getRangeRequestInfo.js.map +1 -1
- package/dist/uploads/hasCropOrResizeEdit.d.ts +7 -0
- package/dist/uploads/hasCropOrResizeEdit.d.ts.map +1 -0
- package/dist/uploads/hasCropOrResizeEdit.js +6 -0
- package/dist/uploads/hasCropOrResizeEdit.js.map +1 -0
- package/dist/uploads/hasFullFileContents.d.ts +13 -0
- package/dist/uploads/hasFullFileContents.d.ts.map +1 -0
- package/dist/uploads/hasFullFileContents.js +12 -0
- package/dist/uploads/hasFullFileContents.js.map +1 -0
- package/dist/uploads/isAnimatedImage.d.ts +8 -0
- package/dist/uploads/isAnimatedImage.d.ts.map +1 -0
- package/dist/uploads/isAnimatedImage.js +22 -0
- package/dist/uploads/isAnimatedImage.js.map +1 -0
- package/dist/uploads/isProcessableImage.d.ts +2 -0
- package/dist/uploads/isProcessableImage.d.ts.map +1 -0
- package/dist/uploads/isProcessableImage.js +7 -0
- package/dist/uploads/isProcessableImage.js.map +1 -0
- package/dist/uploads/parseFilename.d.ts.map +1 -0
- package/dist/uploads/parseFilename.js.map +1 -0
- package/dist/uploads/probeImageSize.d.ts +39 -0
- package/dist/uploads/probeImageSize.d.ts.map +1 -0
- package/dist/uploads/probeImageSize.js +374 -0
- package/dist/uploads/probeImageSize.js.map +1 -0
- package/dist/uploads/resolveURLUploadInput.d.ts +25 -0
- package/dist/uploads/resolveURLUploadInput.d.ts.map +1 -0
- package/dist/uploads/resolveURLUploadInput.js +53 -0
- package/dist/uploads/resolveURLUploadInput.js.map +1 -0
- package/dist/uploads/safeFetch.d.ts.map +1 -1
- package/dist/uploads/safeFetch.js +3 -2
- package/dist/uploads/safeFetch.js.map +1 -1
- package/dist/uploads/sanitizeUploadData.d.ts +27 -0
- package/dist/uploads/sanitizeUploadData.d.ts.map +1 -0
- package/dist/uploads/sanitizeUploadData.js +166 -0
- package/dist/uploads/sanitizeUploadData.js.map +1 -0
- package/dist/uploads/stagedUpload.js +1 -1
- package/dist/uploads/stagedUpload.js.map +1 -1
- package/dist/uploads/transformers/createLazySourceGetter.d.ts +15 -0
- package/dist/uploads/transformers/createLazySourceGetter.d.ts.map +1 -0
- package/dist/uploads/transformers/createLazySourceGetter.js +22 -0
- package/dist/uploads/transformers/createLazySourceGetter.js.map +1 -0
- package/dist/uploads/transformers/finalizeFileResponse.d.ts +14 -0
- package/dist/uploads/transformers/finalizeFileResponse.d.ts.map +1 -0
- package/dist/uploads/transformers/finalizeFileResponse.js +49 -0
- package/dist/uploads/transformers/finalizeFileResponse.js.map +1 -0
- package/dist/uploads/transformers/getSourceFileResponse.d.ts +16 -0
- package/dist/uploads/transformers/getSourceFileResponse.d.ts.map +1 -0
- package/dist/uploads/transformers/getSourceFileResponse.js +17 -0
- package/dist/uploads/transformers/getSourceFileResponse.js.map +1 -0
- package/dist/uploads/transformers/handleDynamicFileRequest.d.ts +18 -0
- package/dist/uploads/transformers/handleDynamicFileRequest.d.ts.map +1 -0
- package/dist/uploads/transformers/handleDynamicFileRequest.js +305 -0
- package/dist/uploads/transformers/handleDynamicFileRequest.js.map +1 -0
- package/dist/uploads/transformers/matchesMimeType.d.ts +11 -0
- package/dist/uploads/transformers/matchesMimeType.d.ts.map +1 -0
- package/dist/uploads/transformers/matchesMimeType.js +39 -0
- package/dist/uploads/transformers/matchesMimeType.js.map +1 -0
- package/dist/uploads/transformers/planTransformerPipeline.d.ts +26 -0
- package/dist/uploads/transformers/planTransformerPipeline.d.ts.map +1 -0
- package/dist/uploads/transformers/planTransformerPipeline.js +36 -0
- package/dist/uploads/transformers/planTransformerPipeline.js.map +1 -0
- package/dist/uploads/transformers/resolveUploadDocument.d.ts +51 -0
- package/dist/uploads/transformers/resolveUploadDocument.d.ts.map +1 -0
- package/dist/uploads/transformers/resolveUploadDocument.js +103 -0
- package/dist/uploads/transformers/resolveUploadDocument.js.map +1 -0
- package/dist/uploads/transformers/transformUploadFile.d.ts +18 -0
- package/dist/uploads/transformers/transformUploadFile.d.ts.map +1 -0
- package/dist/uploads/transformers/transformUploadFile.js +30 -0
- package/dist/uploads/transformers/transformUploadFile.js.map +1 -0
- package/dist/uploads/transformers/types.d.ts +71 -0
- package/dist/uploads/transformers/types.d.ts.map +1 -0
- package/dist/uploads/transformers/types.js +6 -0
- package/dist/uploads/transformers/types.js.map +1 -0
- package/dist/uploads/transformers/uploadTransformerBridge.d.ts +48 -0
- package/dist/uploads/transformers/uploadTransformerBridge.d.ts.map +1 -0
- package/dist/uploads/transformers/uploadTransformerBridge.js +22 -0
- package/dist/uploads/transformers/uploadTransformerBridge.js.map +1 -0
- package/dist/uploads/transformers/validateTransformers.d.ts +11 -0
- package/dist/uploads/transformers/validateTransformers.d.ts.map +1 -0
- package/dist/uploads/transformers/validateTransformers.js +67 -0
- package/dist/uploads/transformers/validateTransformers.js.map +1 -0
- package/dist/uploads/transformers/withFileTransformAccessContext.d.ts +13 -0
- package/dist/uploads/transformers/withFileTransformAccessContext.d.ts.map +1 -0
- package/dist/uploads/transformers/withFileTransformAccessContext.js +18 -0
- package/dist/uploads/transformers/withFileTransformAccessContext.js.map +1 -0
- package/dist/uploads/types.d.ts +118 -67
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/uploads/unlinkTempFiles.d.ts +1 -1
- package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
- package/dist/uploads/unlinkTempFiles.js +19 -14
- package/dist/uploads/unlinkTempFiles.js.map +1 -1
- package/dist/uploads/uploadContentSecurityPolicy.d.ts +2 -0
- package/dist/uploads/uploadContentSecurityPolicy.d.ts.map +1 -0
- package/dist/uploads/uploadContentSecurityPolicy.js +3 -0
- package/dist/uploads/uploadContentSecurityPolicy.js.map +1 -0
- package/dist/uploads/uploadFiles.d.ts.map +1 -1
- package/dist/uploads/uploadFiles.js +9 -2
- package/dist/uploads/uploadFiles.js.map +1 -1
- package/dist/uploads/validateISOBaseMediaFile.d.ts +4 -0
- package/dist/uploads/validateISOBaseMediaFile.d.ts.map +1 -0
- package/dist/uploads/validateISOBaseMediaFile.js +91 -0
- package/dist/uploads/validateISOBaseMediaFile.js.map +1 -0
- package/dist/uploads/validateSvg.d.ts +10 -4
- package/dist/uploads/validateSvg.d.ts.map +1 -1
- package/dist/uploads/validateSvg.js +280 -40
- package/dist/uploads/validateSvg.js.map +1 -1
- package/dist/uploads/validateUploadFilename.d.ts +3 -0
- package/dist/uploads/validateUploadFilename.d.ts.map +1 -0
- package/dist/uploads/validateUploadFilename.js +13 -0
- package/dist/uploads/validateUploadFilename.js.map +1 -0
- package/dist/uploads/validateUploadURL.d.ts +13 -0
- package/dist/uploads/validateUploadURL.d.ts.map +1 -0
- package/dist/uploads/validateUploadURL.js +37 -0
- package/dist/uploads/validateUploadURL.js.map +1 -0
- package/dist/utilities/addDataAndFileToRequest.js +3 -1
- package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js +0 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -1
- package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
- package/dist/utilities/appendNonTrashedFilter.d.ts +1 -1
- package/dist/utilities/appendNonTrashedFilter.d.ts.map +1 -1
- package/dist/utilities/appendNonTrashedFilter.js.map +1 -1
- package/dist/utilities/appendUploadSelectFields.d.ts.map +1 -1
- package/dist/utilities/appendUploadSelectFields.js +4 -3
- package/dist/utilities/appendUploadSelectFields.js.map +1 -1
- package/dist/utilities/assertNoValidationWrite.d.ts +8 -0
- package/dist/utilities/assertNoValidationWrite.d.ts.map +1 -0
- package/dist/utilities/assertNoValidationWrite.js +12 -0
- package/dist/utilities/assertNoValidationWrite.js.map +1 -0
- package/dist/utilities/batchProcessing.d.ts +23 -0
- package/dist/utilities/batchProcessing.d.ts.map +1 -0
- package/dist/utilities/batchProcessing.js +34 -0
- package/dist/utilities/batchProcessing.js.map +1 -0
- package/dist/utilities/canAccessAdmin.d.ts.map +1 -1
- package/dist/utilities/canAccessAdmin.js +2 -0
- package/dist/utilities/canAccessAdmin.js.map +1 -1
- package/dist/utilities/checkDocumentLockStatus.d.ts +19 -0
- package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
- package/dist/utilities/checkDocumentLockStatus.js +74 -0
- package/dist/utilities/checkDocumentLockStatus.js.map +1 -1
- package/dist/utilities/cloneValidationRequest.d.ts +15 -0
- package/dist/utilities/cloneValidationRequest.d.ts.map +1 -0
- package/dist/utilities/cloneValidationRequest.js +153 -0
- package/dist/utilities/cloneValidationRequest.js.map +1 -0
- package/dist/utilities/commitTransaction.d.ts.map +1 -1
- package/dist/utilities/commitTransaction.js +4 -0
- package/dist/utilities/commitTransaction.js.map +1 -1
- package/dist/utilities/configToJSONSchema.js +1 -1
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/createPayloadRequest.d.ts +12 -10
- package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequest.js +98 -81
- package/dist/utilities/createPayloadRequest.js.map +1 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.d.ts +25 -0
- package/dist/utilities/createPayloadRequestFromWebRequest.d.ts.map +1 -0
- package/dist/utilities/createPayloadRequestFromWebRequest.js +101 -0
- package/dist/utilities/createPayloadRequestFromWebRequest.js.map +1 -0
- package/dist/utilities/deepCopyObject.d.ts.map +1 -1
- package/dist/utilities/deepCopyObject.js +110 -19
- package/dist/utilities/deepCopyObject.js.map +1 -1
- package/dist/utilities/deepMerge.d.ts +6 -0
- package/dist/utilities/deepMerge.d.ts.map +1 -1
- package/dist/utilities/deepMerge.js +19 -0
- package/dist/utilities/deepMerge.js.map +1 -1
- package/dist/utilities/documentMatchingWhereExists.d.ts +20 -0
- package/dist/utilities/documentMatchingWhereExists.d.ts.map +1 -0
- package/dist/utilities/documentMatchingWhereExists.js +28 -0
- package/dist/utilities/documentMatchingWhereExists.js.map +1 -0
- package/dist/utilities/entityInputSchema/filterFieldsByAccess.d.ts +30 -0
- package/dist/utilities/entityInputSchema/filterFieldsByAccess.d.ts.map +1 -0
- package/dist/utilities/entityInputSchema/filterFieldsByAccess.js +73 -0
- package/dist/utilities/entityInputSchema/filterFieldsByAccess.js.map +1 -0
- package/dist/utilities/entityInputSchema/getEntityInputSchema.d.ts +23 -0
- package/dist/utilities/entityInputSchema/getEntityInputSchema.d.ts.map +1 -0
- package/dist/utilities/entityInputSchema/getEntityInputSchema.js +73 -0
- package/dist/utilities/entityInputSchema/getEntityInputSchema.js.map +1 -0
- package/dist/utilities/entityInputSchema/sanitizeEntitySchema.d.ts +17 -0
- package/dist/utilities/entityInputSchema/sanitizeEntitySchema.d.ts.map +1 -0
- package/dist/utilities/entityInputSchema/sanitizeEntitySchema.js +409 -0
- package/dist/utilities/entityInputSchema/sanitizeEntitySchema.js.map +1 -0
- package/dist/utilities/entityInputSchema/types.d.ts +18 -0
- package/dist/utilities/entityInputSchema/types.d.ts.map +1 -0
- package/dist/utilities/entityInputSchema/types.js +3 -0
- package/dist/utilities/entityInputSchema/types.js.map +1 -0
- package/dist/utilities/entityInputSchema/validateEntityData.d.ts +13 -0
- package/dist/utilities/entityInputSchema/validateEntityData.d.ts.map +1 -0
- package/dist/utilities/entityInputSchema/validateEntityData.js +140 -0
- package/dist/utilities/entityInputSchema/validateEntityData.js.map +1 -0
- package/dist/utilities/fieldPath.d.ts +13 -0
- package/dist/utilities/fieldPath.d.ts.map +1 -0
- package/dist/utilities/fieldPath.js +51 -0
- package/dist/utilities/fieldPath.js.map +1 -0
- package/dist/utilities/fieldValueExists.d.ts +16 -0
- package/dist/utilities/fieldValueExists.d.ts.map +1 -0
- package/dist/utilities/fieldValueExists.js +25 -0
- package/dist/utilities/fieldValueExists.js.map +1 -0
- package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
- package/dist/utilities/flattenAllFields.js +1 -1
- package/dist/utilities/flattenAllFields.js.map +1 -1
- package/dist/utilities/flattenDataByLocale.d.ts +18 -0
- package/dist/utilities/flattenDataByLocale.d.ts.map +1 -0
- package/dist/utilities/flattenDataByLocale.js +171 -0
- package/dist/utilities/flattenDataByLocale.js.map +1 -0
- package/dist/utilities/formatAdminURL.d.ts +1 -0
- package/dist/utilities/formatAdminURL.d.ts.map +1 -1
- package/dist/utilities/formatAdminURL.js +22 -4
- package/dist/utilities/formatAdminURL.js.map +1 -1
- package/dist/utilities/formatErrors.d.ts.map +1 -1
- package/dist/utilities/formatErrors.js +11 -1
- package/dist/utilities/formatErrors.js.map +1 -1
- package/dist/utilities/getAccessOperationRequest.d.ts +10 -0
- package/dist/utilities/getAccessOperationRequest.d.ts.map +1 -0
- package/dist/utilities/getAccessOperationRequest.js +11 -0
- package/dist/utilities/getAccessOperationRequest.js.map +1 -0
- package/dist/utilities/getEntityPermissions/entityDocExists.d.ts.map +1 -1
- package/dist/utilities/getEntityPermissions/entityDocExists.js +36 -5
- package/dist/utilities/getEntityPermissions/entityDocExists.js.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js +10 -2
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.js +9 -2
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
- package/dist/utilities/getFieldPermissions.d.ts +1 -1
- package/dist/utilities/getFieldPermissions.d.ts.map +1 -1
- package/dist/utilities/getFieldPermissions.js +3 -1
- package/dist/utilities/getFieldPermissions.js.map +1 -1
- package/dist/utilities/getNextVersion.d.ts +10 -0
- package/dist/utilities/getNextVersion.d.ts.map +1 -0
- package/dist/utilities/getNextVersion.js +23 -0
- package/dist/utilities/getNextVersion.js.map +1 -0
- package/dist/utilities/getObjectDotNotation.d.ts.map +1 -1
- package/dist/utilities/getObjectDotNotation.js +7 -1
- package/dist/utilities/getObjectDotNotation.js.map +1 -1
- package/dist/utilities/getRequestOrigin.d.ts.map +1 -1
- package/dist/utilities/getRequestOrigin.js.map +1 -1
- package/dist/utilities/getSafeRedirect.d.ts.map +1 -1
- package/dist/utilities/getSafeRedirect.js +16 -9
- package/dist/utilities/getSafeRedirect.js.map +1 -1
- package/dist/utilities/getTopLevelFieldNames.d.ts +2 -0
- package/dist/utilities/getTopLevelFieldNames.d.ts.map +1 -0
- package/dist/utilities/getTopLevelFieldNames.js +3 -0
- package/dist/utilities/getTopLevelFieldNames.js.map +1 -0
- package/dist/utilities/getUniqueFieldValue.d.ts +28 -0
- package/dist/utilities/getUniqueFieldValue.d.ts.map +1 -0
- package/dist/utilities/getUniqueFieldValue.js +27 -0
- package/dist/utilities/getUniqueFieldValue.js.map +1 -0
- package/dist/utilities/getVersionsConfig.d.ts +4 -0
- package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
- package/dist/utilities/getVersionsConfig.js +5 -0
- package/dist/utilities/getVersionsConfig.js.map +1 -1
- package/dist/utilities/getVirtualFieldNames.d.ts +14 -0
- package/dist/utilities/getVirtualFieldNames.d.ts.map +1 -0
- package/dist/utilities/getVirtualFieldNames.js +35 -0
- package/dist/utilities/getVirtualFieldNames.js.map +1 -0
- package/dist/utilities/handleEndpoints.d.ts.map +1 -1
- package/dist/utilities/handleEndpoints.js +18 -9
- package/dist/utilities/handleEndpoints.js.map +1 -1
- package/dist/utilities/headersWithCors.js +1 -1
- package/dist/utilities/headersWithCors.js.map +1 -1
- package/dist/utilities/httpStatus.d.ts +16 -0
- package/dist/utilities/httpStatus.d.ts.map +1 -0
- package/dist/utilities/httpStatus.js +16 -0
- package/dist/utilities/httpStatus.js.map +1 -0
- package/dist/utilities/initTransaction.d.ts +3 -0
- package/dist/utilities/initTransaction.d.ts.map +1 -1
- package/dist/utilities/initTransaction.js +4 -0
- package/dist/utilities/initTransaction.js.map +1 -1
- package/dist/utilities/isErrorPublic.d.ts.map +1 -1
- package/dist/utilities/isErrorPublic.js +1 -1
- package/dist/utilities/isErrorPublic.js.map +1 -1
- package/dist/utilities/isValidationErrorPathLocalized.d.ts +20 -0
- package/dist/utilities/isValidationErrorPathLocalized.d.ts.map +1 -0
- package/dist/utilities/isValidationErrorPathLocalized.js +150 -0
- package/dist/utilities/isValidationErrorPathLocalized.js.map +1 -0
- package/dist/utilities/killTransaction.d.ts +7 -0
- package/dist/utilities/killTransaction.d.ts.map +1 -1
- package/dist/utilities/killTransaction.js +11 -0
- package/dist/utilities/killTransaction.js.map +1 -1
- package/dist/utilities/logError.d.ts.map +1 -1
- package/dist/utilities/logError.js +5 -2
- package/dist/utilities/logError.js.map +1 -1
- package/dist/utilities/nextJsDevReloadStrategy.d.ts +7 -0
- package/dist/utilities/nextJsDevReloadStrategy.d.ts.map +1 -0
- package/dist/utilities/nextJsDevReloadStrategy.js +68 -0
- package/dist/utilities/nextJsDevReloadStrategy.js.map +1 -0
- package/dist/utilities/parseDocumentID.d.ts +4 -1
- package/dist/utilities/parseDocumentID.d.ts.map +1 -1
- package/dist/utilities/parseDocumentID.js +7 -1
- package/dist/utilities/parseDocumentID.js.map +1 -1
- package/dist/utilities/parseParams/index.d.ts.map +1 -1
- package/dist/utilities/parseParams/index.js +3 -1
- package/dist/utilities/parseParams/index.js.map +1 -1
- package/dist/utilities/parseValidationLocale.d.ts +9 -0
- package/dist/utilities/parseValidationLocale.d.ts.map +1 -0
- package/dist/utilities/parseValidationLocale.js +30 -0
- package/dist/utilities/parseValidationLocale.js.map +1 -0
- package/dist/utilities/resolvePublishAllLocales.d.ts +13 -0
- package/dist/utilities/resolvePublishAllLocales.d.ts.map +1 -0
- package/dist/utilities/resolvePublishAllLocales.js +10 -0
- package/dist/utilities/resolvePublishAllLocales.js.map +1 -0
- package/dist/utilities/resolveValidationLocales.d.ts +32 -0
- package/dist/utilities/resolveValidationLocales.d.ts.map +1 -0
- package/dist/utilities/resolveValidationLocales.js +74 -0
- package/dist/utilities/resolveValidationLocales.js.map +1 -0
- package/dist/utilities/routeError.d.ts.map +1 -1
- package/dist/utilities/routeError.js +1 -1
- package/dist/utilities/routeError.js.map +1 -1
- package/dist/utilities/runLocaleScopedValidation.d.ts +28 -0
- package/dist/utilities/runLocaleScopedValidation.d.ts.map +1 -0
- package/dist/utilities/runLocaleScopedValidation.js +126 -0
- package/dist/utilities/runLocaleScopedValidation.js.map +1 -0
- package/dist/utilities/runValidationLifecycle.d.ts +41 -0
- package/dist/utilities/runValidationLifecycle.d.ts.map +1 -0
- package/dist/utilities/runValidationLifecycle.js +118 -0
- package/dist/utilities/runValidationLifecycle.js.map +1 -0
- package/dist/utilities/sanitizePopulateParam.js.map +1 -1
- package/dist/utilities/sanitizeUploadPrefix.d.ts +5 -0
- package/dist/utilities/sanitizeUploadPrefix.d.ts.map +1 -0
- package/dist/utilities/sanitizeUploadPrefix.js +18 -0
- package/dist/utilities/sanitizeUploadPrefix.js.map +1 -0
- package/dist/utilities/sharedInputSchemas.d.ts +52 -0
- package/dist/utilities/sharedInputSchemas.d.ts.map +1 -0
- package/dist/utilities/sharedInputSchemas.js +101 -0
- package/dist/utilities/sharedInputSchemas.js.map +1 -0
- package/dist/utilities/telemetry/conf/index.d.ts +4 -1
- package/dist/utilities/telemetry/conf/index.d.ts.map +1 -1
- package/dist/utilities/telemetry/conf/index.js.map +1 -1
- package/dist/utilities/telemetry/featureInfo/getFeatureInfo.d.ts +4 -0
- package/dist/utilities/telemetry/featureInfo/getFeatureInfo.d.ts.map +1 -0
- package/dist/utilities/telemetry/featureInfo/getFeatureInfo.js +262 -0
- package/dist/utilities/telemetry/featureInfo/getFeatureInfo.js.map +1 -0
- package/dist/utilities/telemetry/featureInfo/types.d.ts +63 -0
- package/dist/utilities/telemetry/featureInfo/types.d.ts.map +1 -0
- package/dist/utilities/telemetry/featureInfo/types.js +3 -0
- package/dist/utilities/telemetry/featureInfo/types.js.map +1 -0
- package/dist/utilities/telemetry/getProjectContext.d.ts +16 -0
- package/dist/utilities/telemetry/getProjectContext.d.ts.map +1 -0
- package/dist/utilities/telemetry/getProjectContext.js +43 -0
- package/dist/utilities/telemetry/getProjectContext.js.map +1 -0
- package/dist/utilities/telemetry/index.d.ts +6 -1
- package/dist/utilities/telemetry/index.d.ts.map +1 -1
- package/dist/utilities/telemetry/index.js +21 -1
- package/dist/utilities/telemetry/index.js.map +1 -1
- package/dist/utilities/toValidationResult.d.ts +13 -0
- package/dist/utilities/toValidationResult.d.ts.map +1 -0
- package/dist/utilities/toValidationResult.js +20 -0
- package/dist/utilities/toValidationResult.js.map +1 -0
- package/dist/utilities/transformPointDataToPayload.d.ts +7 -0
- package/dist/utilities/transformPointDataToPayload.d.ts.map +1 -0
- package/dist/utilities/transformPointDataToPayload.js +28 -0
- package/dist/utilities/transformPointDataToPayload.js.map +1 -0
- package/dist/utilities/traverseFields.d.ts.map +1 -1
- package/dist/utilities/traverseFields.js +25 -36
- package/dist/utilities/traverseFields.js.map +1 -1
- package/dist/utilities/unflatten.d.ts.map +1 -1
- package/dist/utilities/unflatten.js +21 -9
- package/dist/utilities/unflatten.js.map +1 -1
- package/dist/utilities/unflattenData.d.ts +3 -0
- package/dist/utilities/unflattenData.d.ts.map +1 -0
- package/dist/utilities/unflattenData.js +14 -0
- package/dist/utilities/unflattenData.js.map +1 -0
- package/dist/utilities/zod.d.ts +5 -0
- package/dist/utilities/zod.d.ts.map +1 -0
- package/dist/utilities/zod.js +21 -0
- package/dist/utilities/zod.js.map +1 -0
- package/dist/versions/allLocalesPublicationStatus.d.ts +38 -0
- package/dist/versions/allLocalesPublicationStatus.d.ts.map +1 -0
- package/dist/versions/allLocalesPublicationStatus.js +57 -0
- package/dist/versions/allLocalesPublicationStatus.js.map +1 -0
- package/dist/versions/deleteCollectionVersions.d.ts +11 -1
- package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
- package/dist/versions/deleteCollectionVersions.js +10 -3
- package/dist/versions/deleteCollectionVersions.js.map +1 -1
- package/dist/versions/deleteScheduledPublishJobs.d.ts +5 -1
- package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
- package/dist/versions/deleteScheduledPublishJobs.js +11 -5
- package/dist/versions/deleteScheduledPublishJobs.js.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts +1 -0
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.js +6 -12
- package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +11 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js +28 -6
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
- package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
- package/dist/versions/enforceMaxVersions.js +14 -0
- package/dist/versions/enforceMaxVersions.js.map +1 -1
- package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
- package/dist/versions/getLatestGlobalVersion.js +10 -2
- package/dist/versions/getLatestGlobalVersion.js.map +1 -1
- package/dist/versions/getRestoredStatusesToAuthorize.d.ts +9 -0
- package/dist/versions/getRestoredStatusesToAuthorize.d.ts.map +1 -0
- package/dist/versions/getRestoredStatusesToAuthorize.js +22 -0
- package/dist/versions/getRestoredStatusesToAuthorize.js.map +1 -0
- package/dist/versions/isInheritedReadVersionsAccess.d.ts +6 -0
- package/dist/versions/isInheritedReadVersionsAccess.d.ts.map +1 -0
- package/dist/versions/isInheritedReadVersionsAccess.js +30 -0
- package/dist/versions/isInheritedReadVersionsAccess.js.map +1 -0
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +2 -0
- package/dist/versions/saveVersion.js.map +1 -1
- package/dist/versions/schedule/job.d.ts +2 -2
- package/dist/versions/schedule/job.d.ts.map +1 -1
- package/dist/versions/schedule/job.js +22 -11
- package/dist/versions/schedule/job.js.map +1 -1
- package/dist/versions/schedule/types.d.ts +5 -1
- package/dist/versions/schedule/types.d.ts.map +1 -1
- package/dist/versions/schedule/types.js.map +1 -1
- package/package.json +61 -36
- package/skills/payload/SKILL.md +544 -0
- package/skills/payload/reference/ACCESS-CONTROL-ADVANCED.md +718 -0
- package/skills/payload/reference/ACCESS-CONTROL.md +700 -0
- package/skills/payload/reference/ADAPTERS.md +312 -0
- package/skills/payload/reference/ADVANCED.md +393 -0
- package/skills/payload/reference/COLLECTIONS.md +336 -0
- package/skills/payload/reference/ENDPOINTS.md +644 -0
- package/skills/payload/reference/FIELD-TYPE-GUARDS.md +553 -0
- package/skills/payload/reference/FIELDS.md +748 -0
- package/skills/payload/reference/HOOKS.md +186 -0
- package/skills/payload/reference/PLUGIN-DEVELOPMENT.md +1445 -0
- package/skills/payload/reference/QUERIES.md +282 -0
- package/dist/auth/cookies.spec.js +0 -34
- package/dist/auth/cookies.spec.js.map +0 -1
- package/dist/auth/strategies/local/authenticate.spec.js +0 -83
- package/dist/auth/strategies/local/authenticate.spec.js.map +0 -1
- package/dist/bin/build.d.ts +0 -49
- package/dist/bin/build.d.ts.map +0 -1
- package/dist/bin/build.js +0 -226
- package/dist/bin/build.js.map +0 -1
- package/dist/bin/build.spec.js +0 -594
- package/dist/bin/build.spec.js.map +0 -1
- package/dist/bin/frameworkConventions.d.ts.map +0 -1
- package/dist/bin/frameworkConventions.js.map +0 -1
- package/dist/bin/generateImportMap/generateImportMap.spec.js +0 -176
- package/dist/bin/generateImportMap/generateImportMap.spec.js.map +0 -1
- package/dist/bin/generateImportMap/index.d.ts +0 -44
- package/dist/bin/generateImportMap/index.d.ts.map +0 -1
- package/dist/bin/generateImportMap/index.js +0 -109
- package/dist/bin/generateImportMap/index.js.map +0 -1
- package/dist/bin/generateImportMap/iterateCollections.d.ts +0 -12
- package/dist/bin/generateImportMap/iterateCollections.d.ts.map +0 -1
- package/dist/bin/generateImportMap/iterateCollections.js.map +0 -1
- package/dist/bin/generateImportMap/iterateConfig.d.ts +0 -10
- package/dist/bin/generateImportMap/iterateConfig.d.ts.map +0 -1
- package/dist/bin/generateImportMap/iterateConfig.js +0 -128
- package/dist/bin/generateImportMap/iterateConfig.js.map +0 -1
- package/dist/bin/generateImportMap/iterateFields.d.ts +0 -12
- package/dist/bin/generateImportMap/iterateFields.d.ts.map +0 -1
- package/dist/bin/generateImportMap/iterateFields.js.map +0 -1
- package/dist/bin/generateImportMap/iterateGlobals.d.ts +0 -12
- package/dist/bin/generateImportMap/iterateGlobals.d.ts.map +0 -1
- package/dist/bin/generateImportMap/iterateGlobals.js.map +0 -1
- package/dist/bin/generateImportMap/utilities/addPayloadComponentToImportMap.d.ts +0 -15
- package/dist/bin/generateImportMap/utilities/addPayloadComponentToImportMap.d.ts.map +0 -1
- package/dist/bin/generateImportMap/utilities/addPayloadComponentToImportMap.js.map +0 -1
- package/dist/bin/generateImportMap/utilities/getFromImportMap.d.ts +0 -9
- package/dist/bin/generateImportMap/utilities/getFromImportMap.d.ts.map +0 -1
- package/dist/bin/generateImportMap/utilities/getFromImportMap.js.map +0 -1
- package/dist/bin/generateImportMap/utilities/getImportMapToBaseDirPath.d.ts.map +0 -1
- package/dist/bin/generateImportMap/utilities/getImportMapToBaseDirPath.js.map +0 -1
- package/dist/bin/generateImportMap/utilities/parsePayloadComponent.d.ts +0 -6
- package/dist/bin/generateImportMap/utilities/parsePayloadComponent.d.ts.map +0 -1
- package/dist/bin/generateImportMap/utilities/parsePayloadComponent.js.map +0 -1
- package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts.map +0 -1
- package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js +0 -65
- package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js.map +0 -1
- package/dist/bin/generateTypes.d.ts +0 -6
- package/dist/bin/generateTypes.d.ts.map +0 -1
- package/dist/bin/generateTypes.js +0 -79
- package/dist/bin/generateTypes.js.map +0 -1
- package/dist/bin/index.d.ts +0 -2
- package/dist/bin/index.d.ts.map +0 -1
- package/dist/bin/index.js +0 -200
- package/dist/bin/index.js.map +0 -1
- package/dist/bin/info.d.ts +0 -2
- package/dist/bin/info.d.ts.map +0 -1
- package/dist/bin/info.js +0 -56
- package/dist/bin/info.js.map +0 -1
- package/dist/bin/loadEnv.d.ts.map +0 -1
- package/dist/bin/loadEnv.js +0 -58
- package/dist/bin/loadEnv.js.map +0 -1
- package/dist/bin/migrate.d.ts +0 -15
- package/dist/bin/migrate.d.ts.map +0 -1
- package/dist/bin/migrate.js +0 -102
- package/dist/bin/migrate.js.map +0 -1
- package/dist/collections/config/defaults.spec.js +0 -47
- package/dist/collections/config/defaults.spec.js.map +0 -1
- package/dist/collections/config/sanitize.spec.js +0 -120
- package/dist/collections/config/sanitize.spec.js.map +0 -1
- package/dist/collections/config/useAsTitle.spec.js +0 -187
- package/dist/collections/config/useAsTitle.spec.js.map +0 -1
- package/dist/database/defaultUpdateJobs.d.ts +0 -3
- package/dist/database/defaultUpdateJobs.d.ts.map +0 -1
- package/dist/database/defaultUpdateJobs.js +0 -41
- package/dist/database/defaultUpdateJobs.js.map +0 -1
- package/dist/database/migrations/findMigrationDir.spec.js +0 -47
- package/dist/database/migrations/findMigrationDir.spec.js.map +0 -1
- package/dist/fields/config/reservedFieldNames.spec.js +0 -149
- package/dist/fields/config/reservedFieldNames.spec.js.map +0 -1
- package/dist/fields/config/sanitize.spec.js +0 -745
- package/dist/fields/config/sanitize.spec.js.map +0 -1
- package/dist/fields/isFieldDisabled.spec.js +0 -134
- package/dist/fields/isFieldDisabled.spec.js.map +0 -1
- package/dist/fields/validations.spec.js +0 -990
- package/dist/fields/validations.spec.js.map +0 -1
- package/dist/globals/config/sanitize.spec.js +0 -43
- package/dist/globals/config/sanitize.spec.js.map +0 -1
- package/dist/hierarchy/utils/getLocalizedValue.spec.js +0 -250
- package/dist/hierarchy/utils/getLocalizedValue.spec.js.map +0 -1
- package/dist/locked-documents/config.spec.js +0 -298
- package/dist/locked-documents/config.spec.js.map +0 -1
- package/dist/uploads/checkFileAccess.spec.js +0 -109
- package/dist/uploads/checkFileAccess.spec.js.map +0 -1
- package/dist/uploads/cropImage.d.ts +0 -30
- package/dist/uploads/cropImage.d.ts.map +0 -1
- package/dist/uploads/cropImage.js +0 -58
- package/dist/uploads/cropImage.js.map +0 -1
- package/dist/uploads/endpoints/getFileFromURL.d.ts +0 -3
- package/dist/uploads/endpoints/getFileFromURL.d.ts.map +0 -1
- package/dist/uploads/endpoints/getFileFromURL.js +0 -116
- package/dist/uploads/endpoints/getFileFromURL.js.map +0 -1
- package/dist/uploads/fetchAPI-multipart/isEligibleRequest.spec.js +0 -29
- package/dist/uploads/fetchAPI-multipart/isEligibleRequest.spec.js.map +0 -1
- package/dist/uploads/getExternalFile.d.ts +0 -10
- package/dist/uploads/getExternalFile.d.ts.map +0 -1
- package/dist/uploads/getExternalFile.js +0 -73
- package/dist/uploads/getExternalFile.js.map +0 -1
- package/dist/uploads/getSafeFilename.spec.js +0 -274
- package/dist/uploads/getSafeFilename.spec.js.map +0 -1
- package/dist/uploads/image-resizing/createImageSize.d.ts +0 -24
- package/dist/uploads/image-resizing/createImageSize.d.ts.map +0 -1
- package/dist/uploads/image-resizing/createImageSize.js +0 -23
- package/dist/uploads/image-resizing/createImageSize.js.map +0 -1
- package/dist/uploads/image-resizing/createImageSizes.d.ts +0 -39
- package/dist/uploads/image-resizing/createImageSizes.d.ts.map +0 -1
- package/dist/uploads/image-resizing/createImageSizes.js +0 -208
- package/dist/uploads/image-resizing/createImageSizes.js.map +0 -1
- package/dist/uploads/image-resizing/extractHeightFromImage.d.ts +0 -9
- package/dist/uploads/image-resizing/extractHeightFromImage.d.ts.map +0 -1
- package/dist/uploads/image-resizing/extractHeightFromImage.js +0 -13
- package/dist/uploads/image-resizing/extractHeightFromImage.js.map +0 -1
- package/dist/uploads/image-resizing/generateImageSizeFilename.d.ts.map +0 -1
- package/dist/uploads/image-resizing/generateImageSizeFilename.js.map +0 -1
- package/dist/uploads/image-resizing/getImageResizeAction.d.ts +0 -24
- package/dist/uploads/image-resizing/getImageResizeAction.d.ts.map +0 -1
- package/dist/uploads/image-resizing/getImageResizeAction.js +0 -56
- package/dist/uploads/image-resizing/getImageResizeAction.js.map +0 -1
- package/dist/uploads/image-resizing/parseFilename.d.ts.map +0 -1
- package/dist/uploads/image-resizing/parseFilename.js.map +0 -1
- package/dist/uploads/image-resizing/sanitizeResizeConfig.d.ts +0 -11
- package/dist/uploads/image-resizing/sanitizeResizeConfig.d.ts.map +0 -1
- package/dist/uploads/image-resizing/sanitizeResizeConfig.js +0 -20
- package/dist/uploads/image-resizing/sanitizeResizeConfig.js.map +0 -1
- package/dist/uploads/matchMimeType.spec.js +0 -66
- package/dist/uploads/matchMimeType.spec.js.map +0 -1
- package/dist/uploads/mimeTypeValidator.spec.js +0 -84
- package/dist/uploads/mimeTypeValidator.spec.js.map +0 -1
- package/dist/uploads/optionallyAppendMetadata.d.ts +0 -12
- package/dist/uploads/optionallyAppendMetadata.d.ts.map +0 -1
- package/dist/uploads/optionallyAppendMetadata.js +0 -17
- package/dist/uploads/optionallyAppendMetadata.js.map +0 -1
- package/dist/uploads/tempFile.d.ts +0 -7
- package/dist/uploads/tempFile.d.ts.map +0 -1
- package/dist/uploads/tempFile.js +0 -39
- package/dist/uploads/tempFile.js.map +0 -1
- package/dist/utilities/addDataAndFileToRequest.spec.js +0 -41
- package/dist/utilities/addDataAndFileToRequest.spec.js.map +0 -1
- package/dist/utilities/addSelectGenericsToGeneratedTypes.spec.js +0 -563
- package/dist/utilities/addSelectGenericsToGeneratedTypes.spec.js.map +0 -1
- package/dist/utilities/combineWhereConstraints.spec.js +0 -131
- package/dist/utilities/combineWhereConstraints.spec.js.map +0 -1
- package/dist/utilities/configToJSONSchema.spec.js +0 -1162
- package/dist/utilities/configToJSONSchema.spec.js.map +0 -1
- package/dist/utilities/createLocalReq.d.ts +0 -15
- package/dist/utilities/createLocalReq.d.ts.map +0 -1
- package/dist/utilities/createLocalReq.js +0 -110
- package/dist/utilities/createLocalReq.js.map +0 -1
- package/dist/utilities/createLocalReq.spec.js +0 -125
- package/dist/utilities/createLocalReq.spec.js.map +0 -1
- package/dist/utilities/filterDataToSelectedLocales.spec.js +0 -529
- package/dist/utilities/filterDataToSelectedLocales.spec.js.map +0 -1
- package/dist/utilities/flattenTopLevelFields.spec.js +0 -659
- package/dist/utilities/flattenTopLevelFields.spec.js.map +0 -1
- package/dist/utilities/formatAdminURL.spec.js +0 -168
- package/dist/utilities/formatAdminURL.spec.js.map +0 -1
- package/dist/utilities/formatErrors.spec.js +0 -101
- package/dist/utilities/formatErrors.spec.js.map +0 -1
- package/dist/utilities/formatLabels.spec.js +0 -38
- package/dist/utilities/formatLabels.spec.js.map +0 -1
- package/dist/utilities/getFieldByPath.spec.js +0 -157
- package/dist/utilities/getFieldByPath.spec.js.map +0 -1
- package/dist/utilities/getFieldPermissions.spec.js +0 -78
- package/dist/utilities/getFieldPermissions.spec.js.map +0 -1
- package/dist/utilities/getRequestOrigin.spec.js +0 -151
- package/dist/utilities/getRequestOrigin.spec.js.map +0 -1
- package/dist/utilities/getSafeRedirect.spec.js +0 -84
- package/dist/utilities/getSafeRedirect.spec.js.map +0 -1
- package/dist/utilities/isURLAllowed.spec.js +0 -78
- package/dist/utilities/isURLAllowed.spec.js.map +0 -1
- package/dist/utilities/isolateObjectProperty.spec.js +0 -120
- package/dist/utilities/isolateObjectProperty.spec.js.map +0 -1
- package/dist/utilities/mergeLocalizedData.spec.js +0 -1108
- package/dist/utilities/mergeLocalizedData.spec.js.map +0 -1
- package/dist/utilities/optionsAreEqual.spec.js +0 -319
- package/dist/utilities/optionsAreEqual.spec.js.map +0 -1
- package/dist/utilities/parseParams/index.spec.js +0 -384
- package/dist/utilities/parseParams/index.spec.js.map +0 -1
- package/dist/utilities/profiling.spec.js +0 -53
- package/dist/utilities/profiling.spec.js.map +0 -1
- package/dist/utilities/sanitizePermissions.spec.js +0 -1639
- package/dist/utilities/sanitizePermissions.spec.js.map +0 -1
- package/dist/utilities/sanitizeUserDataForEmail.spec.js +0 -134
- package/dist/utilities/sanitizeUserDataForEmail.spec.js.map +0 -1
- package/dist/utilities/telemetry/index.spec.js +0 -43
- package/dist/utilities/telemetry/index.spec.js.map +0 -1
- package/dist/utilities/traverseFields.spec.js +0 -53
- package/dist/utilities/traverseFields.spec.js.map +0 -1
- package/dist/utilities/validateTimezones.spec.js +0 -493
- package/dist/utilities/validateTimezones.spec.js.map +0 -1
- /package/dist/{bin → cli/commands/generateImportMap}/frameworkConventions.d.ts +0 -0
- /package/dist/{bin → cli/commands/generateImportMap}/frameworkConventions.js +0 -0
- /package/dist/{bin → cli/commands}/generateImportMap/iterateCollections.js +0 -0
- /package/dist/{bin → cli/commands}/generateImportMap/iterateFields.js +0 -0
- /package/dist/{bin → cli/commands}/generateImportMap/iterateGlobals.js +0 -0
- /package/dist/{bin → cli/commands}/generateImportMap/utilities/addPayloadComponentToImportMap.js +0 -0
- /package/dist/{bin → cli/commands}/generateImportMap/utilities/getFromImportMap.js +0 -0
- /package/dist/{bin → cli/commands}/generateImportMap/utilities/getImportMapToBaseDirPath.d.ts +0 -0
- /package/dist/{bin → cli/commands}/generateImportMap/utilities/getImportMapToBaseDirPath.js +0 -0
- /package/dist/{bin → cli/commands}/generateImportMap/utilities/parsePayloadComponent.js +0 -0
- /package/dist/{bin → cli/commands}/generateImportMap/utilities/resolveImportMapFilePath.d.ts +0 -0
- /package/dist/{bin → cli/runtime}/loadEnv.d.ts +0 -0
- /package/dist/uploads/{image-resizing/generateImageSizeFilename.d.ts → generateImageSizeFilename.d.ts} +0 -0
- /package/dist/uploads/{image-resizing/generateImageSizeFilename.js → generateImageSizeFilename.js} +0 -0
- /package/dist/uploads/{image-resizing/parseFilename.d.ts → parseFilename.d.ts} +0 -0
- /package/dist/uploads/{image-resizing/parseFilename.js → parseFilename.js} +0 -0
|
@@ -3,10 +3,49 @@ import { extractID } from '../../utilities/extractID.js';
|
|
|
3
3
|
import { getTranslatedLabel } from '../../utilities/getTranslatedLabel.js';
|
|
4
4
|
export const ensureSafeCollectionsChange = ({ folderFieldName, foldersSlug, parentFieldName = 'folder', typeFieldName = 'hierarchyType' })=>async ({ data, originalDoc, req })=>{
|
|
5
5
|
const currentParentDocID = extractID(originalDoc || {});
|
|
6
|
-
const
|
|
6
|
+
const hasSubmittedParent = Object.hasOwn(data ?? {}, parentFieldName);
|
|
7
|
+
const hasSubmittedTypes = Object.hasOwn(data ?? {}, typeFieldName);
|
|
8
|
+
const parentValue = hasSubmittedParent ? data?.[parentFieldName] : originalDoc?.[parentFieldName];
|
|
9
|
+
const newParentDocID = extractID(parentValue || {});
|
|
10
|
+
const originalParentDocID = extractID(originalDoc?.[parentFieldName] || {});
|
|
11
|
+
const typeValue = hasSubmittedTypes ? data?.[typeFieldName] : originalDoc?.[typeFieldName];
|
|
12
|
+
const types = getStringValues(typeValue);
|
|
13
|
+
const originalTypes = getStringValues(originalDoc?.[typeFieldName]);
|
|
14
|
+
const hasParentChange = originalDoc ? newParentDocID !== originalParentDocID : hasSubmittedParent;
|
|
15
|
+
const hasTypeChange = originalDoc ? !haveSameValues({
|
|
16
|
+
first: types,
|
|
17
|
+
second: originalTypes
|
|
18
|
+
}) : hasSubmittedTypes;
|
|
19
|
+
const hierarchyConfig = req.payload.collections[foldersSlug]?.config.hierarchy;
|
|
20
|
+
const configuredTypes = hierarchyConfig && typeof hierarchyConfig === 'object' ? Object.keys(hierarchyConfig.relatedCollections) : [];
|
|
21
|
+
if ((hasParentChange || hasTypeChange) && newParentDocID) {
|
|
22
|
+
// Scope inheritance is an integrity constraint, so validate against the parent even when the
|
|
23
|
+
// requester cannot read it. Only select scope data to avoid exposing inaccessible metadata.
|
|
24
|
+
const parentFolder = await req.payload.findByID({
|
|
25
|
+
id: newParentDocID,
|
|
26
|
+
collection: foldersSlug,
|
|
27
|
+
overrideAccess: true,
|
|
28
|
+
req,
|
|
29
|
+
select: {
|
|
30
|
+
[typeFieldName]: true
|
|
31
|
+
},
|
|
32
|
+
user: req.user
|
|
33
|
+
});
|
|
34
|
+
const parentTypes = Array.isArray(parentFolder[typeFieldName]) ? parentFolder[typeFieldName].filter((collectionSlug)=>typeof collectionSlug === 'string') : [];
|
|
35
|
+
const parentAllowsEveryConfiguredType = configuredTypes.length > 0 && configuredTypes.every((collectionSlug)=>parentTypes.includes(collectionSlug));
|
|
36
|
+
if (parentTypes.length > 0 && !parentAllowsEveryConfiguredType) {
|
|
37
|
+
if (types.length === 0) {
|
|
38
|
+
throw new APIError(`The folder "${data?.name || originalDoc.name}" must have folder-type set since its parent folder has a folder-type set.`, 400);
|
|
39
|
+
}
|
|
40
|
+
const disallowedTypes = types.filter((collectionSlug)=>!parentTypes.includes(collectionSlug));
|
|
41
|
+
if (disallowedTypes.length > 0) {
|
|
42
|
+
throw new APIError(`The folder "${data?.name || originalDoc.name}" cannot allow collection types that its parent does not allow: ${disallowedTypes.join(', ')}`, 400);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
7
46
|
if (Array.isArray(data?.[typeFieldName]) && data[typeFieldName].length > 0) {
|
|
8
47
|
const typeFieldValue = data[typeFieldName];
|
|
9
|
-
const currentlyAssignedCollections = Array.isArray(originalDoc?.[typeFieldName]) && originalDoc[typeFieldName].length > 0 ? originalDoc[typeFieldName] :
|
|
48
|
+
const currentlyAssignedCollections = Array.isArray(originalDoc?.[typeFieldName]) && originalDoc[typeFieldName].length > 0 ? originalDoc[typeFieldName] : configuredTypes;
|
|
10
49
|
/**
|
|
11
50
|
* Check if the assigned collections have changed.
|
|
12
51
|
* example:
|
|
@@ -16,7 +55,7 @@ export const ensureSafeCollectionsChange = ({ folderFieldName, foldersSlug, pare
|
|
|
16
55
|
* The user is narrowing the types of documents that can be associated with this folder.
|
|
17
56
|
* If the user is only expanding the types of documents that can be associated with this folder,
|
|
18
57
|
* we do not need to do anything.
|
|
19
|
-
*/ const newCollections = currentlyAssignedCollections
|
|
58
|
+
*/ const newCollections = currentlyAssignedCollections.filter((collectionSlug)=>!typeFieldValue.includes(collectionSlug));
|
|
20
59
|
if (newCollections && newCollections.length > 0) {
|
|
21
60
|
let dependentCollection = null;
|
|
22
61
|
if (typeof currentParentDocID === 'string' || typeof currentParentDocID === 'number') {
|
|
@@ -38,8 +77,27 @@ export const ensureSafeCollectionsChange = ({ folderFieldName, foldersSlug, pare
|
|
|
38
77
|
break;
|
|
39
78
|
}
|
|
40
79
|
}
|
|
41
|
-
// Also check for child folders
|
|
80
|
+
// Also check for child folders whose effective scope is broader than the new scope.
|
|
42
81
|
if (!dependentCollection) {
|
|
82
|
+
const childScopeConditions = [
|
|
83
|
+
{
|
|
84
|
+
[typeFieldName]: {
|
|
85
|
+
in: newCollections
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
];
|
|
89
|
+
const newScopeAllowsEveryConfiguredType = configuredTypes.every((collectionSlug)=>typeFieldValue.includes(collectionSlug));
|
|
90
|
+
if (!newScopeAllowsEveryConfiguredType) {
|
|
91
|
+
childScopeConditions.push({
|
|
92
|
+
[typeFieldName]: {
|
|
93
|
+
exists: false
|
|
94
|
+
}
|
|
95
|
+
}, {
|
|
96
|
+
[typeFieldName]: {
|
|
97
|
+
not_in: configuredTypes
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
43
101
|
const childFoldersResult = await req.payload.find({
|
|
44
102
|
collection: foldersSlug,
|
|
45
103
|
limit: 1,
|
|
@@ -47,15 +105,13 @@ export const ensureSafeCollectionsChange = ({ folderFieldName, foldersSlug, pare
|
|
|
47
105
|
req,
|
|
48
106
|
where: {
|
|
49
107
|
and: [
|
|
50
|
-
{
|
|
51
|
-
[typeFieldName]: {
|
|
52
|
-
in: newCollections
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
108
|
{
|
|
56
109
|
[parentFieldName]: {
|
|
57
110
|
equals: currentParentDocID
|
|
58
111
|
}
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
or: childScopeConditions
|
|
59
115
|
}
|
|
60
116
|
]
|
|
61
117
|
}
|
|
@@ -77,32 +133,14 @@ export const ensureSafeCollectionsChange = ({ folderFieldName, foldersSlug, pare
|
|
|
77
133
|
}
|
|
78
134
|
return data;
|
|
79
135
|
}
|
|
80
|
-
} else if ((data?.[typeFieldName] === null || Array.isArray(data?.[typeFieldName]) && data?.[typeFieldName].length === 0) && newParentDocID) {
|
|
81
|
-
// attempting to set the type to catch-all, so we need to ensure that the parent allows this
|
|
82
|
-
let parentFolder;
|
|
83
|
-
if (typeof newParentDocID === 'string' || typeof newParentDocID === 'number') {
|
|
84
|
-
try {
|
|
85
|
-
parentFolder = await req.payload.findByID({
|
|
86
|
-
id: newParentDocID,
|
|
87
|
-
collection: foldersSlug,
|
|
88
|
-
overrideAccess: true,
|
|
89
|
-
req,
|
|
90
|
-
select: {
|
|
91
|
-
name: true,
|
|
92
|
-
[typeFieldName]: true
|
|
93
|
-
},
|
|
94
|
-
user: req.user
|
|
95
|
-
});
|
|
96
|
-
} catch (_) {
|
|
97
|
-
// parent folder does not exist
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
const parentTypeValue = parentFolder?.[typeFieldName];
|
|
101
|
-
if (parentFolder && parentTypeValue && Array.isArray(parentTypeValue) && parentTypeValue.length > 0) {
|
|
102
|
-
throw new APIError(`The folder "${data?.name || originalDoc.name}" must have folder-type set since its parent folder ${parentFolder?.name ? `"${parentFolder?.name}" ` : ''}has a folder-type set.`, 400);
|
|
103
|
-
}
|
|
104
136
|
}
|
|
105
137
|
return data;
|
|
106
138
|
};
|
|
139
|
+
function getStringValues(value) {
|
|
140
|
+
return Array.isArray(value) ? value.filter((item)=>typeof item === 'string') : [];
|
|
141
|
+
}
|
|
142
|
+
function haveSameValues({ first, second }) {
|
|
143
|
+
return first.length === second.length && first.every((value)=>second.includes(value));
|
|
144
|
+
}
|
|
107
145
|
|
|
108
146
|
//# sourceMappingURL=ensureSafeCollectionsChange.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hierarchy/hooks/ensureSafeCollectionsChange.ts"],"sourcesContent":["import { APIError, type CollectionBeforeValidateHook, type CollectionSlug } from '../../index.js'\nimport { extractID } from '../../utilities/extractID.js'\nimport { getTranslatedLabel } from '../../utilities/getTranslatedLabel.js'\n\nexport const ensureSafeCollectionsChange =\n ({\n folderFieldName,\n foldersSlug,\n parentFieldName = 'folder',\n typeFieldName = 'hierarchyType',\n }: {\n folderFieldName: string\n foldersSlug: CollectionSlug\n parentFieldName?: string\n typeFieldName?: string\n }): CollectionBeforeValidateHook =>\n async ({ data, originalDoc, req }) => {\n const currentParentDocID = extractID(originalDoc || {})\n const newParentDocID = extractID(\n data?.[parentFieldName] || originalDoc?.[parentFieldName] || {},\n )\n if (Array.isArray(data?.[typeFieldName]) && data[typeFieldName].length > 0) {\n const typeFieldValue = data[typeFieldName] as string[]\n const currentlyAssignedCollections: string[] | undefined =\n Array.isArray(originalDoc?.[typeFieldName]) && originalDoc[typeFieldName].length > 0\n ? originalDoc[typeFieldName]\n : undefined\n /**\n * Check if the assigned collections have changed.\n * example:\n * - originalAssignedCollections: ['posts', 'pages']\n * - folderType: ['posts']\n *\n * The user is narrowing the types of documents that can be associated with this folder.\n * If the user is only expanding the types of documents that can be associated with this folder,\n * we do not need to do anything.\n */\n const newCollections = currentlyAssignedCollections\n ? // user is narrowing the current scope of the folder\n currentlyAssignedCollections.filter((c) => !typeFieldValue.includes(c))\n : // user is adding a scope to the folder\n typeFieldValue\n\n if (newCollections && newCollections.length > 0) {\n let dependentCollection: null | string = null\n\n if (typeof currentParentDocID === 'string' || typeof currentParentDocID === 'number') {\n // Check each collection being removed for dependent documents\n for (const collectionSlug of newCollections) {\n const result = await req.payload.find({\n collection: collectionSlug,\n limit: 1,\n overrideAccess: true,\n req,\n where: {\n [folderFieldName]: { equals: currentParentDocID },\n },\n })\n\n if (result.totalDocs > 0) {\n dependentCollection = collectionSlug\n break\n }\n }\n\n // Also check for child folders with these types\n if (!dependentCollection) {\n const childFoldersResult = await req.payload.find({\n collection: foldersSlug,\n limit: 1,\n overrideAccess: true,\n req,\n where: {\n and: [\n { [typeFieldName]: { in: newCollections } },\n { [parentFieldName]: { equals: currentParentDocID } },\n ],\n },\n })\n\n if (childFoldersResult.totalDocs > 0) {\n dependentCollection = foldersSlug\n }\n }\n }\n\n if (dependentCollection) {\n const translatedLabels = newCollections.map((collectionSlug) => {\n if (req.payload.collections[collectionSlug]?.config.labels.singular) {\n return getTranslatedLabel(\n req.payload.collections[collectionSlug]?.config.labels.plural,\n req.i18n,\n )\n }\n return collectionSlug\n })\n\n const isFolder = dependentCollection === foldersSlug\n throw new APIError(\n `The folder \"${data.name || originalDoc.name}\" contains ${isFolder ? 'folders' : 'documents'} that still belong to the following collections: ${translatedLabels.join(', ')}`,\n 400,\n )\n }\n\n return data\n }\n } else if (\n (data?.[typeFieldName] === null ||\n (Array.isArray(data?.[typeFieldName]) && data?.[typeFieldName].length === 0)) &&\n newParentDocID\n ) {\n // attempting to set the type to catch-all, so we need to ensure that the parent allows this\n let parentFolder\n if (typeof newParentDocID === 'string' || typeof newParentDocID === 'number') {\n try {\n parentFolder = await req.payload.findByID({\n id: newParentDocID,\n collection: foldersSlug,\n overrideAccess: true,\n req,\n select: {\n name: true,\n [typeFieldName]: true,\n },\n user: req.user,\n })\n } catch (_) {\n // parent folder does not exist\n }\n }\n\n const parentTypeValue = parentFolder?.[typeFieldName]\n if (\n parentFolder &&\n parentTypeValue &&\n Array.isArray(parentTypeValue) &&\n parentTypeValue.length > 0\n ) {\n throw new APIError(\n `The folder \"${data?.name || originalDoc.name}\" must have folder-type set since its parent folder ${parentFolder?.name ? `\"${parentFolder?.name}\" ` : ''}has a folder-type set.`,\n 400,\n )\n }\n }\n\n return data\n }\n"],"names":["APIError","extractID","getTranslatedLabel","ensureSafeCollectionsChange","folderFieldName","foldersSlug","parentFieldName","typeFieldName","data","originalDoc","req","currentParentDocID","newParentDocID","Array","isArray","length","typeFieldValue","currentlyAssignedCollections","undefined","newCollections","filter","c","includes","dependentCollection","collectionSlug","result","payload","find","collection","limit","overrideAccess","where","equals","totalDocs","childFoldersResult","and","in","translatedLabels","map","collections","config","labels","singular","plural","i18n","isFolder","name","join","parentFolder","findByID","id","select","user","_","parentTypeValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/hierarchy/hooks/ensureSafeCollectionsChange.ts"],"sourcesContent":["import {\n APIError,\n type CollectionBeforeValidateHook,\n type CollectionSlug,\n type Where,\n} from '../../index.js'\nimport { extractID } from '../../utilities/extractID.js'\nimport { getTranslatedLabel } from '../../utilities/getTranslatedLabel.js'\n\nexport const ensureSafeCollectionsChange =\n ({\n folderFieldName,\n foldersSlug,\n parentFieldName = 'folder',\n typeFieldName = 'hierarchyType',\n }: {\n folderFieldName: string\n foldersSlug: CollectionSlug\n parentFieldName?: string\n typeFieldName?: string\n }): CollectionBeforeValidateHook =>\n async ({ data, originalDoc, req }) => {\n const currentParentDocID = extractID(originalDoc || {})\n const hasSubmittedParent = Object.hasOwn(data ?? {}, parentFieldName)\n const hasSubmittedTypes = Object.hasOwn(data ?? {}, typeFieldName)\n const parentValue = hasSubmittedParent\n ? data?.[parentFieldName]\n : originalDoc?.[parentFieldName]\n const newParentDocID = extractID(parentValue || {})\n const originalParentDocID = extractID(originalDoc?.[parentFieldName] || {})\n const typeValue = hasSubmittedTypes ? data?.[typeFieldName] : originalDoc?.[typeFieldName]\n const types = getStringValues(typeValue)\n const originalTypes = getStringValues(originalDoc?.[typeFieldName])\n\n const hasParentChange = originalDoc\n ? newParentDocID !== originalParentDocID\n : hasSubmittedParent\n const hasTypeChange = originalDoc\n ? !haveSameValues({ first: types, second: originalTypes })\n : hasSubmittedTypes\n\n const hierarchyConfig = req.payload.collections[foldersSlug]?.config.hierarchy\n const configuredTypes =\n hierarchyConfig && typeof hierarchyConfig === 'object'\n ? Object.keys(hierarchyConfig.relatedCollections)\n : []\n\n if ((hasParentChange || hasTypeChange) && newParentDocID) {\n // Scope inheritance is an integrity constraint, so validate against the parent even when the\n // requester cannot read it. Only select scope data to avoid exposing inaccessible metadata.\n const parentFolder = await req.payload.findByID({\n id: newParentDocID,\n collection: foldersSlug,\n overrideAccess: true,\n req,\n select: {\n [typeFieldName]: true,\n },\n user: req.user,\n })\n\n const parentTypes = Array.isArray(parentFolder[typeFieldName])\n ? (parentFolder[typeFieldName] as unknown[]).filter(\n (collectionSlug): collectionSlug is string => typeof collectionSlug === 'string',\n )\n : []\n\n const parentAllowsEveryConfiguredType =\n configuredTypes.length > 0 &&\n configuredTypes.every((collectionSlug) => parentTypes.includes(collectionSlug))\n\n if (parentTypes.length > 0 && !parentAllowsEveryConfiguredType) {\n if (types.length === 0) {\n throw new APIError(\n `The folder \"${data?.name || originalDoc.name}\" must have folder-type set since its parent folder has a folder-type set.`,\n 400,\n )\n }\n\n const disallowedTypes = types.filter(\n (collectionSlug) => !parentTypes.includes(collectionSlug),\n )\n\n if (disallowedTypes.length > 0) {\n throw new APIError(\n `The folder \"${data?.name || originalDoc.name}\" cannot allow collection types that its parent does not allow: ${disallowedTypes.join(', ')}`,\n 400,\n )\n }\n }\n }\n\n if (Array.isArray(data?.[typeFieldName]) && data[typeFieldName].length > 0) {\n const typeFieldValue = data[typeFieldName] as string[]\n\n const currentlyAssignedCollections =\n Array.isArray(originalDoc?.[typeFieldName]) && originalDoc[typeFieldName].length > 0\n ? originalDoc[typeFieldName]\n : configuredTypes\n\n /**\n * Check if the assigned collections have changed.\n * example:\n * - originalAssignedCollections: ['posts', 'pages']\n * - folderType: ['posts']\n *\n * The user is narrowing the types of documents that can be associated with this folder.\n * If the user is only expanding the types of documents that can be associated with this folder,\n * we do not need to do anything.\n */\n const newCollections = currentlyAssignedCollections.filter(\n (collectionSlug) => !typeFieldValue.includes(collectionSlug),\n )\n\n if (newCollections && newCollections.length > 0) {\n let dependentCollection: null | string = null\n\n if (typeof currentParentDocID === 'string' || typeof currentParentDocID === 'number') {\n // Check each collection being removed for dependent documents\n for (const collectionSlug of newCollections) {\n const result = await req.payload.find({\n collection: collectionSlug,\n limit: 1,\n overrideAccess: true,\n req,\n where: {\n [folderFieldName]: { equals: currentParentDocID },\n },\n })\n\n if (result.totalDocs > 0) {\n dependentCollection = collectionSlug\n break\n }\n }\n\n // Also check for child folders whose effective scope is broader than the new scope.\n if (!dependentCollection) {\n const childScopeConditions: Where[] = [{ [typeFieldName]: { in: newCollections } }]\n const newScopeAllowsEveryConfiguredType = configuredTypes.every((collectionSlug) =>\n typeFieldValue.includes(collectionSlug),\n )\n\n if (!newScopeAllowsEveryConfiguredType) {\n childScopeConditions.push(\n { [typeFieldName]: { exists: false } },\n { [typeFieldName]: { not_in: configuredTypes } },\n )\n }\n\n const childFoldersResult = await req.payload.find({\n collection: foldersSlug,\n limit: 1,\n overrideAccess: true,\n req,\n where: {\n and: [\n { [parentFieldName]: { equals: currentParentDocID } },\n { or: childScopeConditions },\n ],\n },\n })\n\n if (childFoldersResult.totalDocs > 0) {\n dependentCollection = foldersSlug\n }\n }\n }\n\n if (dependentCollection) {\n const translatedLabels = newCollections.map((collectionSlug) => {\n if (req.payload.collections[collectionSlug]?.config.labels.singular) {\n return getTranslatedLabel(\n req.payload.collections[collectionSlug]?.config.labels.plural,\n req.i18n,\n )\n }\n return collectionSlug\n })\n\n const isFolder = dependentCollection === foldersSlug\n throw new APIError(\n `The folder \"${data.name || originalDoc.name}\" contains ${isFolder ? 'folders' : 'documents'} that still belong to the following collections: ${translatedLabels.join(', ')}`,\n 400,\n )\n }\n\n return data\n }\n }\n\n return data\n }\n\nfunction getStringValues(value: unknown): string[] {\n return Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : []\n}\n\nfunction haveSameValues({ first, second }: { first: string[]; second: string[] }): boolean {\n return first.length === second.length && first.every((value) => second.includes(value))\n}\n"],"names":["APIError","extractID","getTranslatedLabel","ensureSafeCollectionsChange","folderFieldName","foldersSlug","parentFieldName","typeFieldName","data","originalDoc","req","currentParentDocID","hasSubmittedParent","Object","hasOwn","hasSubmittedTypes","parentValue","newParentDocID","originalParentDocID","typeValue","types","getStringValues","originalTypes","hasParentChange","hasTypeChange","haveSameValues","first","second","hierarchyConfig","payload","collections","config","hierarchy","configuredTypes","keys","relatedCollections","parentFolder","findByID","id","collection","overrideAccess","select","user","parentTypes","Array","isArray","filter","collectionSlug","parentAllowsEveryConfiguredType","length","every","includes","name","disallowedTypes","join","typeFieldValue","currentlyAssignedCollections","newCollections","dependentCollection","result","find","limit","where","equals","totalDocs","childScopeConditions","in","newScopeAllowsEveryConfiguredType","push","exists","not_in","childFoldersResult","and","or","translatedLabels","map","labels","singular","plural","i18n","isFolder","value","item"],"mappings":"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"}
|
|
@@ -93,7 +93,7 @@ import { injectHierarchyButton } from './injectHierarchyButton.js';
|
|
|
93
93
|
if (hierarchyConfig.collectionSpecific) {
|
|
94
94
|
injectTypeField({
|
|
95
95
|
config,
|
|
96
|
-
hierarchyCollection
|
|
96
|
+
hierarchyCollection,
|
|
97
97
|
parentFieldName: hierarchyConfig.parentFieldName,
|
|
98
98
|
sanitizedRelatedCollections,
|
|
99
99
|
typeFieldName: hierarchyConfig.collectionSpecific.fieldName
|
|
@@ -116,7 +116,7 @@ import { injectHierarchyButton } from './injectHierarchyButton.js';
|
|
|
116
116
|
// Add afterDelete hook to clear folder references from related documents
|
|
117
117
|
if (Object.keys(sanitizedRelatedCollections).length > 0) {
|
|
118
118
|
injectAfterDeleteHook({
|
|
119
|
-
hierarchyCollection
|
|
119
|
+
hierarchyCollection,
|
|
120
120
|
sanitizedRelatedCollections
|
|
121
121
|
});
|
|
122
122
|
}
|
|
@@ -151,17 +151,30 @@ import { injectHierarchyButton } from './injectHierarchyButton.js';
|
|
|
151
151
|
return existingResult;
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
154
|
+
return validateCollectionSpecificHierarchy({
|
|
155
|
+
hierarchySlug,
|
|
156
|
+
options,
|
|
157
|
+
typeFieldName,
|
|
158
|
+
value
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
hierarchyField.validate = validate;
|
|
162
|
+
}
|
|
163
|
+
const validateCollectionSpecificHierarchy = async ({ hierarchySlug, options, typeFieldName, value })=>{
|
|
164
|
+
if (!value || Array.isArray(value) && value.length === 0) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
const { collectionSlug, overrideAccess, previousValue, req } = options;
|
|
168
|
+
const newIDs = (Array.isArray(value) ? value : [
|
|
169
|
+
value
|
|
170
|
+
]).map((item)=>extractID(item));
|
|
171
|
+
const previousIDs = new Set((Array.isArray(previousValue) ? previousValue : previousValue ? [
|
|
172
|
+
previousValue
|
|
173
|
+
] : []).map((item)=>extractID(item)));
|
|
174
|
+
for (const newID of newIDs){
|
|
175
|
+
if (previousIDs.has(newID)) {
|
|
176
|
+
continue;
|
|
163
177
|
}
|
|
164
|
-
// Fetch the hierarchy item to check its type field
|
|
165
178
|
let parentItem = null;
|
|
166
179
|
if (typeof newID === 'string' || typeof newID === 'number') {
|
|
167
180
|
try {
|
|
@@ -183,18 +196,13 @@ import { injectHierarchyButton } from './injectHierarchyButton.js';
|
|
|
183
196
|
return `Hierarchy item with ID ${newID} not found`;
|
|
184
197
|
}
|
|
185
198
|
const allowedTypes = parentItem[typeFieldName] || [];
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
return true;
|
|
189
|
-
}
|
|
190
|
-
// Check if this collection is allowed
|
|
191
|
-
if (collectionSlug && allowedTypes.includes(collectionSlug)) {
|
|
192
|
-
return true;
|
|
199
|
+
if (allowedTypes.length === 0 || collectionSlug && allowedTypes.includes(collectionSlug)) {
|
|
200
|
+
continue;
|
|
193
201
|
}
|
|
194
202
|
return `Hierarchy item "${newID}" does not allow documents of type "${collectionSlug}"`;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
}
|
|
203
|
+
}
|
|
204
|
+
return true;
|
|
205
|
+
};
|
|
198
206
|
/**
|
|
199
207
|
* Injects the hierarchyType select field into a hierarchy collection.
|
|
200
208
|
*/ function injectTypeField({ config, hierarchyCollection, parentFieldName, sanitizedRelatedCollections, typeFieldName }) {
|
|
@@ -221,10 +229,17 @@ import { injectHierarchyButton } from './injectHierarchyButton.js';
|
|
|
221
229
|
position: 'sidebar'
|
|
222
230
|
},
|
|
223
231
|
hasMany: true,
|
|
232
|
+
label: ({ t })=>t('general:allowedTypes'),
|
|
224
233
|
options: collectionOptions
|
|
225
234
|
};
|
|
226
235
|
hierarchyCollection.fields = hierarchyCollection.fields || [];
|
|
227
|
-
|
|
236
|
+
// This can run again on the same `fields` array, so replace the field if it already exists
|
|
237
|
+
const existingTypeFieldIndex = hierarchyCollection.fields.findIndex((field)=>fieldAffectsData(field) && field.name === typeFieldName);
|
|
238
|
+
if (existingTypeFieldIndex === -1) {
|
|
239
|
+
hierarchyCollection.fields.push(typeField);
|
|
240
|
+
} else {
|
|
241
|
+
hierarchyCollection.fields[existingTypeFieldIndex] = typeField;
|
|
242
|
+
}
|
|
228
243
|
// Recompute flattenedFields since we added a field after initial sanitization
|
|
229
244
|
// This is required for the field to be queryable
|
|
230
245
|
if ('flattenedFields' in hierarchyCollection) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hierarchy/resolveHierarchyCollections.ts"],"sourcesContent":["import type { CollectionConfig, SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { Config } from '../config/types.js'\nimport type {\n JoinField,\n Option,\n RelationshipField,\n SelectField,\n Validate,\n} from '../fields/config/types.js'\nimport type { Document } from '../types/index.js'\nimport type {\n HierarchyJoinFieldConfig,\n SanitizedHierarchyConfig,\n SanitizedHierarchyRelatedCollection,\n} from './types.js'\n\nimport { sanitizeJoinField } from '../fields/config/sanitizeJoinField.js'\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport { extractID } from '../utilities/extractID.js'\nimport { flattenAllFields } from '../utilities/flattenAllFields.js'\nimport { getHierarchyFieldName } from './constants.js'\nimport { hierarchyCollectionAfterDelete } from './hooks/collectionAfterDelete.js'\nimport { injectHierarchyButton } from './injectHierarchyButton.js'\n\n/**\n * Resolves hierarchy relationships across collections.\n *\n * This function runs after individual collection sanitization to establish\n * cross-collection hierarchy relationships. It discovers which collections\n * reference each hierarchy and configures the necessary fields, components,\n * and hooks.\n *\n * @remarks\n * Must be called after all collections are sanitized.\n *\n * **What it does:**\n * - Discovers related collections by scanning for hierarchy relationship fields\n * - Injects `HierarchyButton` component when `custom.hierarchy.injectHeaderButton` is set\n * - Adds `collectionSpecific` validation to ensure hierarchy items accept the document type\n * - Injects the `hierarchyType` select field when `collectionSpecific` is enabled\n * - Injects join field when `joinField` is configured\n * - Adds `afterDelete` hook to clear hierarchy references when items are deleted\n * - Populates `relatedCollections` in the sanitized hierarchy config\n */\nexport const resolveHierarchyCollections = (config: Config): void => {\n const hierarchyCollections =\n config.collections?.filter((col) => col.hierarchy && typeof col.hierarchy === 'object') || []\n\n for (const hierarchyCollection of hierarchyCollections) {\n const hierarchy = hierarchyCollection.hierarchy\n\n // TypeScript guard - hierarchy is guaranteed to be an object by the filter above\n if (!hierarchy || typeof hierarchy !== 'object') {\n continue\n }\n\n const hierarchyConfig = hierarchy as SanitizedHierarchyConfig\n const defaultFieldName = getHierarchyFieldName(hierarchyCollection.slug)\n const parentFieldName = hierarchyConfig.parentFieldName ?? defaultFieldName\n const isParentFieldNameOverridden = parentFieldName !== defaultFieldName\n const collectionSpecific = hierarchyConfig.collectionSpecific\n const typeFieldName = collectionSpecific ? collectionSpecific.fieldName : undefined\n const allowHasMany = hierarchyConfig.allowHasMany ?? true\n\n // Build relatedCollections by scanning all collections for hierarchy fields\n const sanitizedRelatedCollections: Record<string, SanitizedHierarchyRelatedCollection> = {}\n\n const selfParentField = hierarchyCollection.fields.find(\n (field) =>\n fieldAffectsData(field) &&\n field.name === parentFieldName &&\n field.type === 'relationship' &&\n (field as RelationshipField).relationTo === hierarchyCollection.slug,\n ) as RelationshipField | undefined\n\n // Check if the hierarchy collection's own parent field should be replaced with a header button\n if (selfParentField?.custom?.hierarchy?.injectHeaderButton === true) {\n injectHierarchyButton({\n collection: hierarchyCollection,\n fieldName: parentFieldName,\n hierarchyCollectionSlug: hierarchyCollection.slug,\n parentFieldName: hierarchyConfig.parentFieldName,\n })\n }\n\n for (const collection of config.collections || []) {\n // Skip the hierarchy collection itself (handled above)\n if (collection.slug === hierarchyCollection.slug) {\n continue\n }\n\n // Find hierarchy field by the default name (what createFolderField uses)\n const hierarchyField = collection.fields.find(\n (field) =>\n fieldAffectsData(field) &&\n field.name === defaultFieldName &&\n field.type === 'relationship' &&\n (field as RelationshipField).relationTo === hierarchyCollection.slug,\n ) as RelationshipField | undefined\n\n // If parentFieldName is overridden, rename the field to match\n if (hierarchyField && isParentFieldNameOverridden) {\n hierarchyField.name = parentFieldName\n }\n\n if (!hierarchyField) {\n continue\n }\n\n const fieldHasMany = hierarchyField.hasMany ?? allowHasMany\n\n // If collectionSpecific, inject validation to check hierarchy allows this collection type\n if (collectionSpecific) {\n injectCollectionSpecificValidation({\n hierarchyField,\n hierarchySlug: hierarchyCollection.slug,\n typeFieldName: typeFieldName!,\n })\n }\n\n // Store discovered collection with hasMany info\n sanitizedRelatedCollections[collection.slug] = {\n fieldName: parentFieldName,\n hasMany: fieldHasMany,\n }\n\n // Inject HierarchyButton if field requests it\n if (hierarchyField.custom?.hierarchy?.injectHeaderButton === true) {\n injectHierarchyButton({\n collection,\n fieldName: parentFieldName,\n hierarchyCollectionSlug: hierarchyCollection.slug,\n parentFieldName: hierarchyConfig.parentFieldName,\n })\n }\n }\n\n // If collectionSpecific, add type field to hierarchy collection\n if (hierarchyConfig.collectionSpecific) {\n injectTypeField({\n config,\n hierarchyCollection: hierarchyCollection as SanitizedCollectionConfig,\n parentFieldName: hierarchyConfig.parentFieldName,\n sanitizedRelatedCollections,\n typeFieldName: hierarchyConfig.collectionSpecific.fieldName,\n })\n }\n\n // If joinField is configured, add the join field to query children\n if (hierarchyConfig.joinField) {\n injectJoinField({\n config,\n hierarchyCollection: hierarchyCollection as SanitizedCollectionConfig,\n joinFieldConfig: hierarchyConfig.joinField,\n parentFieldName,\n relatedSlugs: Object.keys(sanitizedRelatedCollections),\n })\n }\n\n // Update hierarchy config with sanitized relatedCollections\n if (hierarchyConfig) {\n hierarchyConfig.relatedCollections = sanitizedRelatedCollections\n }\n\n // Add afterDelete hook to clear folder references from related documents\n if (Object.keys(sanitizedRelatedCollections).length > 0) {\n injectAfterDeleteHook({\n hierarchyCollection: hierarchyCollection as SanitizedCollectionConfig,\n sanitizedRelatedCollections,\n })\n }\n\n // Add sidebar tab for this hierarchy collection (unless explicitly disabled)\n if (hierarchyConfig.admin.injectSidebarTab !== false) {\n injectSidebarTab({\n config,\n hierarchyCollection,\n hierarchyConfig,\n })\n\n // Hide from nav when sidebar tab is injected (unless user explicitly set group)\n if (hierarchyCollection.admin?.group === undefined) {\n hierarchyCollection.admin = {\n ...hierarchyCollection.admin,\n group: false,\n }\n }\n }\n }\n}\n\n/**\n * Injects validation for collectionSpecific hierarchy fields.\n * Ensures the selected hierarchy item allows documents of this collection type.\n */\nfunction injectCollectionSpecificValidation({\n hierarchyField,\n hierarchySlug,\n typeFieldName,\n}: {\n hierarchyField: RelationshipField\n hierarchySlug: string\n typeFieldName: string\n}): void {\n const existingValidate = hierarchyField.validate\n\n const validate: Validate<unknown> = async (value, options) => {\n // Run existing validation first if present\n if (existingValidate) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const existingResult = await existingValidate(value as any, options as any)\n if (existingResult !== true) {\n return existingResult\n }\n }\n\n // No hierarchy selected, no validation needed\n if (!value) {\n return true\n }\n\n const { collectionSlug, overrideAccess, previousValue, req } = options\n const newID = extractID<Document>(value)\n\n // Value didn't change, no validation needed\n if (previousValue && extractID<Document>(previousValue) === newID) {\n return true\n }\n\n // Fetch the hierarchy item to check its type field\n let parentItem: Document | null = null\n if (typeof newID === 'string' || typeof newID === 'number') {\n try {\n parentItem = await req.payload.findByID({\n id: newID,\n collection: hierarchySlug,\n depth: 0,\n overrideAccess: overrideAccess ?? false,\n req,\n select: { [typeFieldName]: true },\n })\n } catch {\n return `Hierarchy item with ID ${newID} not found`\n }\n }\n\n if (!parentItem) {\n return `Hierarchy item with ID ${newID} not found`\n }\n\n const allowedTypes: string[] = (parentItem[typeFieldName] as string[]) || []\n\n // If hierarchy has no types, it accepts all collections\n if (allowedTypes.length === 0) {\n return true\n }\n\n // Check if this collection is allowed\n if (collectionSlug && allowedTypes.includes(collectionSlug)) {\n return true\n }\n\n return `Hierarchy item \"${newID}\" does not allow documents of type \"${collectionSlug}\"`\n }\n\n hierarchyField.validate = validate\n}\n\n/**\n * Injects the hierarchyType select field into a hierarchy collection.\n */\nfunction injectTypeField({\n config,\n hierarchyCollection,\n parentFieldName,\n sanitizedRelatedCollections,\n typeFieldName,\n}: {\n config: Config\n hierarchyCollection: CollectionConfig | SanitizedCollectionConfig\n parentFieldName: string\n sanitizedRelatedCollections: Record<string, SanitizedHierarchyRelatedCollection>\n typeFieldName: string\n}): void {\n const collectionOptions: Option[] = Object.keys(sanitizedRelatedCollections).map((slug) => {\n const relatedCollection = config.collections?.find((c) => c.slug === slug)\n return {\n label: relatedCollection?.labels?.plural || slug,\n value: slug,\n }\n })\n\n const typeField: SelectField = {\n name: typeFieldName,\n type: 'select',\n admin: {\n components: {\n Field: {\n path: '@payloadcms/ui/rsc#HierarchyTypeFieldServer',\n serverProps: {\n collectionOptions,\n parentFieldName,\n },\n },\n },\n position: 'sidebar',\n },\n hasMany: true,\n options: collectionOptions,\n }\n\n hierarchyCollection.fields = hierarchyCollection.fields || []\n hierarchyCollection.fields.push(typeField)\n\n // Recompute flattenedFields since we added a field after initial sanitization\n // This is required for the field to be queryable\n if ('flattenedFields' in hierarchyCollection) {\n hierarchyCollection.flattenedFields = flattenAllFields({\n fields: hierarchyCollection.fields,\n })\n }\n}\n\n/**\n * Injects a join field to query all children of a hierarchy item.\n */\nfunction injectJoinField({\n config,\n hierarchyCollection,\n joinFieldConfig,\n parentFieldName,\n relatedSlugs,\n}: {\n config: Config\n hierarchyCollection: SanitizedCollectionConfig\n joinFieldConfig: HierarchyJoinFieldConfig\n parentFieldName: string\n relatedSlugs: string[]\n}): void {\n const { name, admin: userAdmin, ...userConfig } = joinFieldConfig\n\n const hasJoinField = hierarchyCollection.fields?.some(\n (field) => 'name' in field && field.name === name,\n )\n\n if (hasJoinField) {\n return\n }\n\n const joinField: JoinField = {\n // User config (spread first so auto-generated values take precedence for required fields)\n ...userConfig,\n // Auto-generated values (these cannot be overridden)\n name,\n type: 'join',\n collection: [hierarchyCollection.slug, ...relatedSlugs],\n hasMany: true,\n on: parentFieldName,\n // Merge admin config\n admin: {\n ...userAdmin,\n },\n }\n\n hierarchyCollection.fields = hierarchyCollection.fields || []\n hierarchyCollection.fields.push(joinField)\n\n // Sanitize the join field to register it properly\n sanitizeJoinField({\n config,\n field: joinField,\n joins: hierarchyCollection.joins,\n parentIsLocalized: false,\n polymorphicJoins: hierarchyCollection.polymorphicJoins,\n })\n\n // Recompute flattenedFields since we added a field after initial sanitization\n hierarchyCollection.flattenedFields = flattenAllFields({\n fields: hierarchyCollection.fields,\n })\n}\n\n/**\n * Injects afterDelete hook to clear hierarchy references from related documents.\n */\nfunction injectAfterDeleteHook({\n hierarchyCollection,\n sanitizedRelatedCollections,\n}: {\n hierarchyCollection: CollectionConfig | SanitizedCollectionConfig\n sanitizedRelatedCollections: Record<string, SanitizedHierarchyRelatedCollection>\n}): void {\n // Build map of collection slugs to their field names\n const relatedCollectionFieldMap: Record<string, string> = {}\n for (const [slug, relatedConfig] of Object.entries(sanitizedRelatedCollections)) {\n relatedCollectionFieldMap[slug] = relatedConfig.fieldName\n }\n\n hierarchyCollection.hooks = hierarchyCollection.hooks || {}\n hierarchyCollection.hooks.afterDelete = [\n ...(hierarchyCollection.hooks.afterDelete || []),\n hierarchyCollectionAfterDelete({ relatedCollections: relatedCollectionFieldMap }),\n ]\n}\n\n/**\n * Injects a sidebar tab for a hierarchy collection.\n */\nfunction injectSidebarTab({\n config,\n hierarchyCollection,\n hierarchyConfig,\n}: {\n config: Config\n hierarchyCollection: CollectionConfig\n hierarchyConfig: SanitizedHierarchyConfig\n}): void {\n const tabSlug = `hierarchy-${hierarchyCollection.slug}`\n const Icon = hierarchyConfig.admin.components.Icon\n\n // Initialize admin config structure\n config.admin = config.admin || {}\n config.admin.components = config.admin.components || {}\n config.admin.components.sidebar = config.admin.components.sidebar || {}\n config.admin.components.sidebar.tabs = config.admin.components.sidebar.tabs || []\n\n // Check if tab already exists\n const hasTab = config.admin.components.sidebar.tabs.some((tab) => tab.slug === tabSlug)\n\n if (!hasTab) {\n config.admin.components.sidebar.tabs.push({\n slug: tabSlug,\n components: {\n Content: {\n clientProps: {\n hierarchyCollectionSlug: hierarchyCollection.slug,\n },\n path: '@payloadcms/ui/rsc#HierarchySidebarTabServer',\n },\n Icon,\n },\n label: hierarchyCollection.labels?.plural || hierarchyCollection.slug,\n })\n }\n}\n"],"names":["sanitizeJoinField","fieldAffectsData","extractID","flattenAllFields","getHierarchyFieldName","hierarchyCollectionAfterDelete","injectHierarchyButton","resolveHierarchyCollections","config","hierarchyCollections","collections","filter","col","hierarchy","hierarchyCollection","hierarchyConfig","defaultFieldName","slug","parentFieldName","isParentFieldNameOverridden","collectionSpecific","typeFieldName","fieldName","undefined","allowHasMany","sanitizedRelatedCollections","selfParentField","fields","find","field","name","type","relationTo","custom","injectHeaderButton","collection","hierarchyCollectionSlug","hierarchyField","fieldHasMany","hasMany","injectCollectionSpecificValidation","hierarchySlug","injectTypeField","joinField","injectJoinField","joinFieldConfig","relatedSlugs","Object","keys","relatedCollections","length","injectAfterDeleteHook","admin","injectSidebarTab","group","existingValidate","validate","value","options","existingResult","collectionSlug","overrideAccess","previousValue","req","newID","parentItem","payload","findByID","id","depth","select","allowedTypes","includes","collectionOptions","map","relatedCollection","c","label","labels","plural","typeField","components","Field","path","serverProps","position","push","flattenedFields","userAdmin","userConfig","hasJoinField","some","on","joins","parentIsLocalized","polymorphicJoins","relatedCollectionFieldMap","relatedConfig","entries","hooks","afterDelete","tabSlug","Icon","sidebar","tabs","hasTab","tab","Content","clientProps"],"mappings":"AAgBA,SAASA,iBAAiB,QAAQ,wCAAuC;AACzE,SAASC,gBAAgB,QAAQ,4BAA2B;AAC5D,SAASC,SAAS,QAAQ,4BAA2B;AACrD,SAASC,gBAAgB,QAAQ,mCAAkC;AACnE,SAASC,qBAAqB,QAAQ,iBAAgB;AACtD,SAASC,8BAA8B,QAAQ,mCAAkC;AACjF,SAASC,qBAAqB,QAAQ,6BAA4B;AAElE;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,MAAMC,8BAA8B,CAACC;IAC1C,MAAMC,uBACJD,OAAOE,WAAW,EAAEC,OAAO,CAACC,MAAQA,IAAIC,SAAS,IAAI,OAAOD,IAAIC,SAAS,KAAK,aAAa,EAAE;IAE/F,KAAK,MAAMC,uBAAuBL,qBAAsB;QACtD,MAAMI,YAAYC,oBAAoBD,SAAS;QAE/C,iFAAiF;QACjF,IAAI,CAACA,aAAa,OAAOA,cAAc,UAAU;YAC/C;QACF;QAEA,MAAME,kBAAkBF;QACxB,MAAMG,mBAAmBZ,sBAAsBU,oBAAoBG,IAAI;QACvE,MAAMC,kBAAkBH,gBAAgBG,eAAe,IAAIF;QAC3D,MAAMG,8BAA8BD,oBAAoBF;QACxD,MAAMI,qBAAqBL,gBAAgBK,kBAAkB;QAC7D,MAAMC,gBAAgBD,qBAAqBA,mBAAmBE,SAAS,GAAGC;QAC1E,MAAMC,eAAeT,gBAAgBS,YAAY,IAAI;QAErD,4EAA4E;QAC5E,MAAMC,8BAAmF,CAAC;QAE1F,MAAMC,kBAAkBZ,oBAAoBa,MAAM,CAACC,IAAI,CACrD,CAACC,QACC5B,iBAAiB4B,UACjBA,MAAMC,IAAI,KAAKZ,mBACfW,MAAME,IAAI,KAAK,kBACf,AAACF,MAA4BG,UAAU,KAAKlB,oBAAoBG,IAAI;QAGxE,+FAA+F;QAC/F,IAAIS,iBAAiBO,QAAQpB,WAAWqB,uBAAuB,MAAM;YACnE5B,sBAAsB;gBACpB6B,YAAYrB;gBACZQ,WAAWJ;gBACXkB,yBAAyBtB,oBAAoBG,IAAI;gBACjDC,iBAAiBH,gBAAgBG,eAAe;YAClD;QACF;QAEA,KAAK,MAAMiB,cAAc3B,OAAOE,WAAW,IAAI,EAAE,CAAE;YACjD,uDAAuD;YACvD,IAAIyB,WAAWlB,IAAI,KAAKH,oBAAoBG,IAAI,EAAE;gBAChD;YACF;YAEA,yEAAyE;YACzE,MAAMoB,iBAAiBF,WAAWR,MAAM,CAACC,IAAI,CAC3C,CAACC,QACC5B,iBAAiB4B,UACjBA,MAAMC,IAAI,KAAKd,oBACfa,MAAME,IAAI,KAAK,kBACf,AAACF,MAA4BG,UAAU,KAAKlB,oBAAoBG,IAAI;YAGxE,8DAA8D;YAC9D,IAAIoB,kBAAkBlB,6BAA6B;gBACjDkB,eAAeP,IAAI,GAAGZ;YACxB;YAEA,IAAI,CAACmB,gBAAgB;gBACnB;YACF;YAEA,MAAMC,eAAeD,eAAeE,OAAO,IAAIf;YAE/C,0FAA0F;YAC1F,IAAIJ,oBAAoB;gBACtBoB,mCAAmC;oBACjCH;oBACAI,eAAe3B,oBAAoBG,IAAI;oBACvCI,eAAeA;gBACjB;YACF;YAEA,gDAAgD;YAChDI,2BAA2B,CAACU,WAAWlB,IAAI,CAAC,GAAG;gBAC7CK,WAAWJ;gBACXqB,SAASD;YACX;YAEA,8CAA8C;YAC9C,IAAID,eAAeJ,MAAM,EAAEpB,WAAWqB,uBAAuB,MAAM;gBACjE5B,sBAAsB;oBACpB6B;oBACAb,WAAWJ;oBACXkB,yBAAyBtB,oBAAoBG,IAAI;oBACjDC,iBAAiBH,gBAAgBG,eAAe;gBAClD;YACF;QACF;QAEA,gEAAgE;QAChE,IAAIH,gBAAgBK,kBAAkB,EAAE;YACtCsB,gBAAgB;gBACdlC;gBACAM,qBAAqBA;gBACrBI,iBAAiBH,gBAAgBG,eAAe;gBAChDO;gBACAJ,eAAeN,gBAAgBK,kBAAkB,CAACE,SAAS;YAC7D;QACF;QAEA,mEAAmE;QACnE,IAAIP,gBAAgB4B,SAAS,EAAE;YAC7BC,gBAAgB;gBACdpC;gBACAM,qBAAqBA;gBACrB+B,iBAAiB9B,gBAAgB4B,SAAS;gBAC1CzB;gBACA4B,cAAcC,OAAOC,IAAI,CAACvB;YAC5B;QACF;QAEA,4DAA4D;QAC5D,IAAIV,iBAAiB;YACnBA,gBAAgBkC,kBAAkB,GAAGxB;QACvC;QAEA,yEAAyE;QACzE,IAAIsB,OAAOC,IAAI,CAACvB,6BAA6ByB,MAAM,GAAG,GAAG;YACvDC,sBAAsB;gBACpBrC,qBAAqBA;gBACrBW;YACF;QACF;QAEA,6EAA6E;QAC7E,IAAIV,gBAAgBqC,KAAK,CAACC,gBAAgB,KAAK,OAAO;YACpDA,iBAAiB;gBACf7C;gBACAM;gBACAC;YACF;YAEA,gFAAgF;YAChF,IAAID,oBAAoBsC,KAAK,EAAEE,UAAU/B,WAAW;gBAClDT,oBAAoBsC,KAAK,GAAG;oBAC1B,GAAGtC,oBAAoBsC,KAAK;oBAC5BE,OAAO;gBACT;YACF;QACF;IACF;AACF,EAAC;AAED;;;CAGC,GACD,SAASd,mCAAmC,EAC1CH,cAAc,EACdI,aAAa,EACbpB,aAAa,EAKd;IACC,MAAMkC,mBAAmBlB,eAAemB,QAAQ;IAEhD,MAAMA,WAA8B,OAAOC,OAAOC;QAChD,2CAA2C;QAC3C,IAAIH,kBAAkB;YACpB,8DAA8D;YAC9D,MAAMI,iBAAiB,MAAMJ,iBAAiBE,OAAcC;YAC5D,IAAIC,mBAAmB,MAAM;gBAC3B,OAAOA;YACT;QACF;QAEA,8CAA8C;QAC9C,IAAI,CAACF,OAAO;YACV,OAAO;QACT;QAEA,MAAM,EAAEG,cAAc,EAAEC,cAAc,EAAEC,aAAa,EAAEC,GAAG,EAAE,GAAGL;QAC/D,MAAMM,QAAQ9D,UAAoBuD;QAElC,4CAA4C;QAC5C,IAAIK,iBAAiB5D,UAAoB4D,mBAAmBE,OAAO;YACjE,OAAO;QACT;QAEA,mDAAmD;QACnD,IAAIC,aAA8B;QAClC,IAAI,OAAOD,UAAU,YAAY,OAAOA,UAAU,UAAU;YAC1D,IAAI;gBACFC,aAAa,MAAMF,IAAIG,OAAO,CAACC,QAAQ,CAAC;oBACtCC,IAAIJ;oBACJ7B,YAAYM;oBACZ4B,OAAO;oBACPR,gBAAgBA,kBAAkB;oBAClCE;oBACAO,QAAQ;wBAAE,CAACjD,cAAc,EAAE;oBAAK;gBAClC;YACF,EAAE,OAAM;gBACN,OAAO,CAAC,uBAAuB,EAAE2C,MAAM,UAAU,CAAC;YACpD;QACF;QAEA,IAAI,CAACC,YAAY;YACf,OAAO,CAAC,uBAAuB,EAAED,MAAM,UAAU,CAAC;QACpD;QAEA,MAAMO,eAAyB,AAACN,UAAU,CAAC5C,cAAc,IAAiB,EAAE;QAE5E,wDAAwD;QACxD,IAAIkD,aAAarB,MAAM,KAAK,GAAG;YAC7B,OAAO;QACT;QAEA,sCAAsC;QACtC,IAAIU,kBAAkBW,aAAaC,QAAQ,CAACZ,iBAAiB;YAC3D,OAAO;QACT;QAEA,OAAO,CAAC,gBAAgB,EAAEI,MAAM,oCAAoC,EAAEJ,eAAe,CAAC,CAAC;IACzF;IAEAvB,eAAemB,QAAQ,GAAGA;AAC5B;AAEA;;CAEC,GACD,SAASd,gBAAgB,EACvBlC,MAAM,EACNM,mBAAmB,EACnBI,eAAe,EACfO,2BAA2B,EAC3BJ,aAAa,EAOd;IACC,MAAMoD,oBAA8B1B,OAAOC,IAAI,CAACvB,6BAA6BiD,GAAG,CAAC,CAACzD;QAChF,MAAM0D,oBAAoBnE,OAAOE,WAAW,EAAEkB,KAAK,CAACgD,IAAMA,EAAE3D,IAAI,KAAKA;QACrE,OAAO;YACL4D,OAAOF,mBAAmBG,QAAQC,UAAU9D;YAC5CwC,OAAOxC;QACT;IACF;IAEA,MAAM+D,YAAyB;QAC7BlD,MAAMT;QACNU,MAAM;QACNqB,OAAO;YACL6B,YAAY;gBACVC,OAAO;oBACLC,MAAM;oBACNC,aAAa;wBACXX;wBACAvD;oBACF;gBACF;YACF;YACAmE,UAAU;QACZ;QACA9C,SAAS;QACTmB,SAASe;IACX;IAEA3D,oBAAoBa,MAAM,GAAGb,oBAAoBa,MAAM,IAAI,EAAE;IAC7Db,oBAAoBa,MAAM,CAAC2D,IAAI,CAACN;IAEhC,8EAA8E;IAC9E,iDAAiD;IACjD,IAAI,qBAAqBlE,qBAAqB;QAC5CA,oBAAoByE,eAAe,GAAGpF,iBAAiB;YACrDwB,QAAQb,oBAAoBa,MAAM;QACpC;IACF;AACF;AAEA;;CAEC,GACD,SAASiB,gBAAgB,EACvBpC,MAAM,EACNM,mBAAmB,EACnB+B,eAAe,EACf3B,eAAe,EACf4B,YAAY,EAOb;IACC,MAAM,EAAEhB,IAAI,EAAEsB,OAAOoC,SAAS,EAAE,GAAGC,YAAY,GAAG5C;IAElD,MAAM6C,eAAe5E,oBAAoBa,MAAM,EAAEgE,KAC/C,CAAC9D,QAAU,UAAUA,SAASA,MAAMC,IAAI,KAAKA;IAG/C,IAAI4D,cAAc;QAChB;IACF;IAEA,MAAM/C,YAAuB;QAC3B,0FAA0F;QAC1F,GAAG8C,UAAU;QACb,qDAAqD;QACrD3D;QACAC,MAAM;QACNI,YAAY;YAACrB,oBAAoBG,IAAI;eAAK6B;SAAa;QACvDP,SAAS;QACTqD,IAAI1E;QACJ,qBAAqB;QACrBkC,OAAO;YACL,GAAGoC,SAAS;QACd;IACF;IAEA1E,oBAAoBa,MAAM,GAAGb,oBAAoBa,MAAM,IAAI,EAAE;IAC7Db,oBAAoBa,MAAM,CAAC2D,IAAI,CAAC3C;IAEhC,kDAAkD;IAClD3C,kBAAkB;QAChBQ;QACAqB,OAAOc;QACPkD,OAAO/E,oBAAoB+E,KAAK;QAChCC,mBAAmB;QACnBC,kBAAkBjF,oBAAoBiF,gBAAgB;IACxD;IAEA,8EAA8E;IAC9EjF,oBAAoByE,eAAe,GAAGpF,iBAAiB;QACrDwB,QAAQb,oBAAoBa,MAAM;IACpC;AACF;AAEA;;CAEC,GACD,SAASwB,sBAAsB,EAC7BrC,mBAAmB,EACnBW,2BAA2B,EAI5B;IACC,qDAAqD;IACrD,MAAMuE,4BAAoD,CAAC;IAC3D,KAAK,MAAM,CAAC/E,MAAMgF,cAAc,IAAIlD,OAAOmD,OAAO,CAACzE,6BAA8B;QAC/EuE,yBAAyB,CAAC/E,KAAK,GAAGgF,cAAc3E,SAAS;IAC3D;IAEAR,oBAAoBqF,KAAK,GAAGrF,oBAAoBqF,KAAK,IAAI,CAAC;IAC1DrF,oBAAoBqF,KAAK,CAACC,WAAW,GAAG;WAClCtF,oBAAoBqF,KAAK,CAACC,WAAW,IAAI,EAAE;QAC/C/F,+BAA+B;YAAE4C,oBAAoB+C;QAA0B;KAChF;AACH;AAEA;;CAEC,GACD,SAAS3C,iBAAiB,EACxB7C,MAAM,EACNM,mBAAmB,EACnBC,eAAe,EAKhB;IACC,MAAMsF,UAAU,CAAC,UAAU,EAAEvF,oBAAoBG,IAAI,EAAE;IACvD,MAAMqF,OAAOvF,gBAAgBqC,KAAK,CAAC6B,UAAU,CAACqB,IAAI;IAElD,oCAAoC;IACpC9F,OAAO4C,KAAK,GAAG5C,OAAO4C,KAAK,IAAI,CAAC;IAChC5C,OAAO4C,KAAK,CAAC6B,UAAU,GAAGzE,OAAO4C,KAAK,CAAC6B,UAAU,IAAI,CAAC;IACtDzE,OAAO4C,KAAK,CAAC6B,UAAU,CAACsB,OAAO,GAAG/F,OAAO4C,KAAK,CAAC6B,UAAU,CAACsB,OAAO,IAAI,CAAC;IACtE/F,OAAO4C,KAAK,CAAC6B,UAAU,CAACsB,OAAO,CAACC,IAAI,GAAGhG,OAAO4C,KAAK,CAAC6B,UAAU,CAACsB,OAAO,CAACC,IAAI,IAAI,EAAE;IAEjF,8BAA8B;IAC9B,MAAMC,SAASjG,OAAO4C,KAAK,CAAC6B,UAAU,CAACsB,OAAO,CAACC,IAAI,CAACb,IAAI,CAAC,CAACe,MAAQA,IAAIzF,IAAI,KAAKoF;IAE/E,IAAI,CAACI,QAAQ;QACXjG,OAAO4C,KAAK,CAAC6B,UAAU,CAACsB,OAAO,CAACC,IAAI,CAAClB,IAAI,CAAC;YACxCrE,MAAMoF;YACNpB,YAAY;gBACV0B,SAAS;oBACPC,aAAa;wBACXxE,yBAAyBtB,oBAAoBG,IAAI;oBACnD;oBACAkE,MAAM;gBACR;gBACAmB;YACF;YACAzB,OAAO/D,oBAAoBgE,MAAM,EAAEC,UAAUjE,oBAAoBG,IAAI;QACvE;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/hierarchy/resolveHierarchyCollections.ts"],"sourcesContent":["import type { CollectionConfig, SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { Config } from '../config/types.js'\nimport type {\n JoinField,\n Option,\n RelationshipField,\n SelectField,\n Validate,\n} from '../fields/config/types.js'\nimport type { Document } from '../types/index.js'\nimport type {\n HierarchyJoinFieldConfig,\n SanitizedHierarchyConfig,\n SanitizedHierarchyRelatedCollection,\n} from './types.js'\n\nimport { sanitizeJoinField } from '../fields/config/sanitizeJoinField.js'\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport { extractID } from '../utilities/extractID.js'\nimport { flattenAllFields } from '../utilities/flattenAllFields.js'\nimport { getHierarchyFieldName } from './constants.js'\nimport { hierarchyCollectionAfterDelete } from './hooks/collectionAfterDelete.js'\nimport { injectHierarchyButton } from './injectHierarchyButton.js'\n\n/**\n * Resolves hierarchy relationships across collections.\n *\n * This function runs after individual collection sanitization to establish\n * cross-collection hierarchy relationships. It discovers which collections\n * reference each hierarchy and configures the necessary fields, components,\n * and hooks.\n *\n * @remarks\n * Must be called after all collections are sanitized.\n *\n * **What it does:**\n * - Discovers related collections by scanning for hierarchy relationship fields\n * - Injects `HierarchyButton` component when `custom.hierarchy.injectHeaderButton` is set\n * - Adds `collectionSpecific` validation to ensure hierarchy items accept the document type\n * - Injects the `hierarchyType` select field when `collectionSpecific` is enabled\n * - Injects join field when `joinField` is configured\n * - Adds `afterDelete` hook to clear hierarchy references when items are deleted\n * - Populates `relatedCollections` in the sanitized hierarchy config\n */\nexport const resolveHierarchyCollections = (config: Config): void => {\n const hierarchyCollections =\n config.collections?.filter((col) => col.hierarchy && typeof col.hierarchy === 'object') || []\n\n for (const hierarchyCollection of hierarchyCollections) {\n const hierarchy = hierarchyCollection.hierarchy\n\n // TypeScript guard - hierarchy is guaranteed to be an object by the filter above\n if (!hierarchy || typeof hierarchy !== 'object') {\n continue\n }\n\n const hierarchyConfig = hierarchy as SanitizedHierarchyConfig\n const defaultFieldName = getHierarchyFieldName(hierarchyCollection.slug)\n const parentFieldName = hierarchyConfig.parentFieldName ?? defaultFieldName\n const isParentFieldNameOverridden = parentFieldName !== defaultFieldName\n const collectionSpecific = hierarchyConfig.collectionSpecific\n const typeFieldName = collectionSpecific ? collectionSpecific.fieldName : undefined\n const allowHasMany = hierarchyConfig.allowHasMany ?? true\n\n // Build relatedCollections by scanning all collections for hierarchy fields\n const sanitizedRelatedCollections: Record<string, SanitizedHierarchyRelatedCollection> = {}\n\n const selfParentField = hierarchyCollection.fields.find(\n (field) =>\n fieldAffectsData(field) &&\n field.name === parentFieldName &&\n field.type === 'relationship' &&\n field.relationTo === hierarchyCollection.slug,\n ) as RelationshipField | undefined\n\n // Check if the hierarchy collection's own parent field should be replaced with a header button\n if (selfParentField?.custom?.hierarchy?.injectHeaderButton === true) {\n injectHierarchyButton({\n collection: hierarchyCollection,\n fieldName: parentFieldName,\n hierarchyCollectionSlug: hierarchyCollection.slug,\n parentFieldName: hierarchyConfig.parentFieldName,\n })\n }\n\n for (const collection of config.collections || []) {\n // Skip the hierarchy collection itself (handled above)\n if (collection.slug === hierarchyCollection.slug) {\n continue\n }\n\n // Find hierarchy field by the default name (what createFolderField uses)\n const hierarchyField = collection.fields.find(\n (field) =>\n fieldAffectsData(field) &&\n field.name === defaultFieldName &&\n field.type === 'relationship' &&\n field.relationTo === hierarchyCollection.slug,\n ) as RelationshipField | undefined\n\n // If parentFieldName is overridden, rename the field to match\n if (hierarchyField && isParentFieldNameOverridden) {\n hierarchyField.name = parentFieldName\n }\n\n if (!hierarchyField) {\n continue\n }\n\n const fieldHasMany = hierarchyField.hasMany ?? allowHasMany\n\n // If collectionSpecific, inject validation to check hierarchy allows this collection type\n if (collectionSpecific) {\n injectCollectionSpecificValidation({\n hierarchyField,\n hierarchySlug: hierarchyCollection.slug,\n typeFieldName: typeFieldName!,\n })\n }\n\n // Store discovered collection with hasMany info\n sanitizedRelatedCollections[collection.slug] = {\n fieldName: parentFieldName,\n hasMany: fieldHasMany,\n }\n\n // Inject HierarchyButton if field requests it\n if (hierarchyField.custom?.hierarchy?.injectHeaderButton === true) {\n injectHierarchyButton({\n collection,\n fieldName: parentFieldName,\n hierarchyCollectionSlug: hierarchyCollection.slug,\n parentFieldName: hierarchyConfig.parentFieldName,\n })\n }\n }\n\n // If collectionSpecific, add type field to hierarchy collection\n if (hierarchyConfig.collectionSpecific) {\n injectTypeField({\n config,\n hierarchyCollection,\n parentFieldName: hierarchyConfig.parentFieldName,\n sanitizedRelatedCollections,\n typeFieldName: hierarchyConfig.collectionSpecific.fieldName,\n })\n }\n\n // If joinField is configured, add the join field to query children\n if (hierarchyConfig.joinField) {\n injectJoinField({\n config,\n hierarchyCollection: hierarchyCollection as SanitizedCollectionConfig,\n joinFieldConfig: hierarchyConfig.joinField,\n parentFieldName,\n relatedSlugs: Object.keys(sanitizedRelatedCollections),\n })\n }\n\n // Update hierarchy config with sanitized relatedCollections\n if (hierarchyConfig) {\n hierarchyConfig.relatedCollections = sanitizedRelatedCollections\n }\n\n // Add afterDelete hook to clear folder references from related documents\n if (Object.keys(sanitizedRelatedCollections).length > 0) {\n injectAfterDeleteHook({\n hierarchyCollection,\n sanitizedRelatedCollections,\n })\n }\n\n // Add sidebar tab for this hierarchy collection (unless explicitly disabled)\n if (hierarchyConfig.admin.injectSidebarTab !== false) {\n injectSidebarTab({\n config,\n hierarchyCollection,\n hierarchyConfig,\n })\n\n // Hide from nav when sidebar tab is injected (unless user explicitly set group)\n if (hierarchyCollection.admin?.group === undefined) {\n hierarchyCollection.admin = {\n ...hierarchyCollection.admin,\n group: false,\n }\n }\n }\n }\n}\n\n/**\n * Injects validation for collectionSpecific hierarchy fields.\n * Ensures the selected hierarchy item allows documents of this collection type.\n */\nfunction injectCollectionSpecificValidation({\n hierarchyField,\n hierarchySlug,\n typeFieldName,\n}: {\n hierarchyField: RelationshipField\n hierarchySlug: string\n typeFieldName: string\n}): void {\n const existingValidate = hierarchyField.validate\n\n const validate: Validate<unknown> = async (value, options) => {\n // Run existing validation first if present\n if (existingValidate) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const existingResult = await existingValidate(value as any, options as any)\n if (existingResult !== true) {\n return existingResult\n }\n }\n\n return validateCollectionSpecificHierarchy({\n hierarchySlug,\n options,\n typeFieldName,\n value,\n })\n }\n\n hierarchyField.validate = validate\n}\n\ntype HierarchyValidationOptions = Parameters<Validate<unknown>>[1]\n\nconst validateCollectionSpecificHierarchy = async ({\n hierarchySlug,\n options,\n typeFieldName,\n value,\n}: {\n hierarchySlug: string\n options: HierarchyValidationOptions\n typeFieldName: string\n value: unknown\n}): Promise<string | true> => {\n if (!value || (Array.isArray(value) && value.length === 0)) {\n return true\n }\n\n const { collectionSlug, overrideAccess, previousValue, req } = options\n const newIDs = (Array.isArray(value) ? value : [value]).map((item) => extractID<Document>(item))\n\n const previousIDs = new Set(\n (Array.isArray(previousValue) ? previousValue : previousValue ? [previousValue] : []).map(\n (item) => extractID<Document>(item),\n ),\n )\n\n for (const newID of newIDs) {\n if (previousIDs.has(newID)) {\n continue\n }\n\n let parentItem: Document | null = null\n if (typeof newID === 'string' || typeof newID === 'number') {\n try {\n parentItem = await req.payload.findByID({\n id: newID,\n collection: hierarchySlug,\n depth: 0,\n overrideAccess: overrideAccess ?? false,\n req,\n select: { [typeFieldName]: true },\n })\n } catch {\n return `Hierarchy item with ID ${newID} not found`\n }\n }\n\n if (!parentItem) {\n return `Hierarchy item with ID ${newID} not found`\n }\n\n const allowedTypes: string[] = (parentItem[typeFieldName] as string[]) || []\n\n if (allowedTypes.length === 0 || (collectionSlug && allowedTypes.includes(collectionSlug))) {\n continue\n }\n\n return `Hierarchy item \"${newID}\" does not allow documents of type \"${collectionSlug}\"`\n }\n\n return true\n}\n\n/**\n * Injects the hierarchyType select field into a hierarchy collection.\n */\nfunction injectTypeField({\n config,\n hierarchyCollection,\n parentFieldName,\n sanitizedRelatedCollections,\n typeFieldName,\n}: {\n config: Config\n hierarchyCollection: CollectionConfig | SanitizedCollectionConfig\n parentFieldName: string\n sanitizedRelatedCollections: Record<string, SanitizedHierarchyRelatedCollection>\n typeFieldName: string\n}): void {\n const collectionOptions: Option[] = Object.keys(sanitizedRelatedCollections).map((slug) => {\n const relatedCollection = config.collections?.find((c) => c.slug === slug)\n\n return {\n label: relatedCollection?.labels?.plural || slug,\n value: slug,\n }\n })\n\n const typeField: SelectField = {\n name: typeFieldName,\n type: 'select',\n admin: {\n components: {\n Field: {\n path: '@payloadcms/ui/rsc#HierarchyTypeFieldServer',\n serverProps: {\n collectionOptions,\n parentFieldName,\n },\n },\n },\n position: 'sidebar',\n },\n hasMany: true,\n label: ({ t }) => t('general:allowedTypes'),\n options: collectionOptions,\n }\n\n hierarchyCollection.fields = hierarchyCollection.fields || []\n\n // This can run again on the same `fields` array, so replace the field if it already exists\n const existingTypeFieldIndex = hierarchyCollection.fields.findIndex(\n (field) => fieldAffectsData(field) && field.name === typeFieldName,\n )\n\n if (existingTypeFieldIndex === -1) {\n hierarchyCollection.fields.push(typeField)\n } else {\n hierarchyCollection.fields[existingTypeFieldIndex] = typeField\n }\n\n // Recompute flattenedFields since we added a field after initial sanitization\n // This is required for the field to be queryable\n if ('flattenedFields' in hierarchyCollection) {\n hierarchyCollection.flattenedFields = flattenAllFields({\n fields: hierarchyCollection.fields,\n })\n }\n}\n\n/**\n * Injects a join field to query all children of a hierarchy item.\n */\nfunction injectJoinField({\n config,\n hierarchyCollection,\n joinFieldConfig,\n parentFieldName,\n relatedSlugs,\n}: {\n config: Config\n hierarchyCollection: SanitizedCollectionConfig\n joinFieldConfig: HierarchyJoinFieldConfig\n parentFieldName: string\n relatedSlugs: string[]\n}): void {\n const { name, admin: userAdmin, ...userConfig } = joinFieldConfig\n\n const hasJoinField = hierarchyCollection.fields?.some(\n (field) => 'name' in field && field.name === name,\n )\n\n if (hasJoinField) {\n return\n }\n\n const joinField: JoinField = {\n // User config (spread first so auto-generated values take precedence for required fields)\n ...userConfig,\n // Auto-generated values (these cannot be overridden)\n name,\n type: 'join',\n collection: [hierarchyCollection.slug, ...relatedSlugs],\n hasMany: true,\n on: parentFieldName,\n // Merge admin config\n admin: {\n ...userAdmin,\n },\n }\n\n hierarchyCollection.fields = hierarchyCollection.fields || []\n hierarchyCollection.fields.push(joinField)\n\n // Sanitize the join field to register it properly\n sanitizeJoinField({\n config,\n field: joinField,\n joins: hierarchyCollection.joins,\n parentIsLocalized: false,\n polymorphicJoins: hierarchyCollection.polymorphicJoins,\n })\n\n // Recompute flattenedFields since we added a field after initial sanitization\n hierarchyCollection.flattenedFields = flattenAllFields({\n fields: hierarchyCollection.fields,\n })\n}\n\n/**\n * Injects afterDelete hook to clear hierarchy references from related documents.\n */\nfunction injectAfterDeleteHook({\n hierarchyCollection,\n sanitizedRelatedCollections,\n}: {\n hierarchyCollection: CollectionConfig | SanitizedCollectionConfig\n sanitizedRelatedCollections: Record<string, SanitizedHierarchyRelatedCollection>\n}): void {\n // Build map of collection slugs to their field names\n const relatedCollectionFieldMap: Record<string, string> = {}\n for (const [slug, relatedConfig] of Object.entries(sanitizedRelatedCollections)) {\n relatedCollectionFieldMap[slug] = relatedConfig.fieldName\n }\n\n hierarchyCollection.hooks = hierarchyCollection.hooks || {}\n hierarchyCollection.hooks.afterDelete = [\n ...(hierarchyCollection.hooks.afterDelete || []),\n hierarchyCollectionAfterDelete({ relatedCollections: relatedCollectionFieldMap }),\n ]\n}\n\n/**\n * Injects a sidebar tab for a hierarchy collection.\n */\nfunction injectSidebarTab({\n config,\n hierarchyCollection,\n hierarchyConfig,\n}: {\n config: Config\n hierarchyCollection: CollectionConfig\n hierarchyConfig: SanitizedHierarchyConfig\n}): void {\n const tabSlug = `hierarchy-${hierarchyCollection.slug}`\n const Icon = hierarchyConfig.admin.components.Icon\n\n // Initialize admin config structure\n config.admin = config.admin || {}\n config.admin.components = config.admin.components || {}\n config.admin.components.sidebar = config.admin.components.sidebar || {}\n config.admin.components.sidebar.tabs = config.admin.components.sidebar.tabs || []\n\n // Check if tab already exists\n const hasTab = config.admin.components.sidebar.tabs.some((tab) => tab.slug === tabSlug)\n\n if (!hasTab) {\n config.admin.components.sidebar.tabs.push({\n slug: tabSlug,\n components: {\n Content: {\n clientProps: {\n hierarchyCollectionSlug: hierarchyCollection.slug,\n },\n path: '@payloadcms/ui/rsc#HierarchySidebarTabServer',\n },\n Icon,\n },\n label: hierarchyCollection.labels?.plural || hierarchyCollection.slug,\n })\n }\n}\n"],"names":["sanitizeJoinField","fieldAffectsData","extractID","flattenAllFields","getHierarchyFieldName","hierarchyCollectionAfterDelete","injectHierarchyButton","resolveHierarchyCollections","config","hierarchyCollections","collections","filter","col","hierarchy","hierarchyCollection","hierarchyConfig","defaultFieldName","slug","parentFieldName","isParentFieldNameOverridden","collectionSpecific","typeFieldName","fieldName","undefined","allowHasMany","sanitizedRelatedCollections","selfParentField","fields","find","field","name","type","relationTo","custom","injectHeaderButton","collection","hierarchyCollectionSlug","hierarchyField","fieldHasMany","hasMany","injectCollectionSpecificValidation","hierarchySlug","injectTypeField","joinField","injectJoinField","joinFieldConfig","relatedSlugs","Object","keys","relatedCollections","length","injectAfterDeleteHook","admin","injectSidebarTab","group","existingValidate","validate","value","options","existingResult","validateCollectionSpecificHierarchy","Array","isArray","collectionSlug","overrideAccess","previousValue","req","newIDs","map","item","previousIDs","Set","newID","has","parentItem","payload","findByID","id","depth","select","allowedTypes","includes","collectionOptions","relatedCollection","c","label","labels","plural","typeField","components","Field","path","serverProps","position","t","existingTypeFieldIndex","findIndex","push","flattenedFields","userAdmin","userConfig","hasJoinField","some","on","joins","parentIsLocalized","polymorphicJoins","relatedCollectionFieldMap","relatedConfig","entries","hooks","afterDelete","tabSlug","Icon","sidebar","tabs","hasTab","tab","Content","clientProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computePaths.d.ts","sourceRoot":"","sources":["../../../src/hierarchy/utils/computePaths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAQpE,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,yBAAyB,CAAA;IACrC,GAAG,EAAE,QAAQ,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;IACzC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;CAC3C,CAAA;AAgFD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"computePaths.d.ts","sourceRoot":"","sources":["../../../src/hierarchy/utils/computePaths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAQpE,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,yBAAyB,CAAA;IACrC,GAAG,EAAE,QAAQ,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;IACzC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;CAC3C,CAAA;AAgFD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0dtF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hierarchy/utils/computePaths.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Document, PayloadRequest } from '../../types/index.js'\n\nimport { slugify as payloadSlugify } from '../../utilities/slugify.js'\nimport { HIERARCHY_SLUG_PATH_FIELD, HIERARCHY_TITLE_PATH_FIELD } from '../constants.js'\nimport { buildLocalizedHierarchyPaths } from './buildLocalizedHierarchyPaths.js'\nimport { findFieldByName, findUseAsTitleField } from './findUseAsTitle.js'\nimport { getLocalizedValue } from './getLocalizedValue.js'\n\ntype ComputePathsArgs = {\n collection: SanitizedCollectionConfig\n doc: Document\n draft?: boolean\n locale?: string\n parentFieldName: string\n req: PayloadRequest\n slugPathFieldName?: string\n titlePathFieldName?: string\n}\n\ntype ComputePathsResult = {\n slugPath: Record<string, string> | string\n titlePath: Record<string, string> | string\n}\n\n// Helper to get title value - returns string for single locale, object for 'all' locales\nconst getTitleValue = ({\n document,\n isTitleLocalized = false,\n locale,\n req,\n titleFieldName,\n}: {\n document: Document\n isTitleLocalized?: boolean\n locale?: string\n req: PayloadRequest\n titleFieldName: string\n}): Record<string, string> | string => {\n const titleValue = document[titleFieldName]\n\n if (!titleValue) {\n return document.id?.toString() || 'untitled'\n }\n\n // If field is localized and we want all locales, return the full object\n if (isTitleLocalized && locale === 'all' && typeof titleValue === 'object') {\n return titleValue\n }\n\n // Single locale - use getLocalizedValue to handle fallback\n if (isTitleLocalized && typeof titleValue === 'object') {\n const localizedValue = getLocalizedValue({\n fallbackLocale: req.fallbackLocale,\n fieldType: 'text',\n locale: locale || req.locale || 'en',\n value: titleValue,\n })\n return localizedValue || document.id?.toString() || 'untitled'\n }\n\n return titleValue\n}\n\n// Helper to get slug value from a dedicated slug field\nconst getSlugFieldValue = ({\n document,\n isSlugLocalized = false,\n locale,\n req,\n slugFieldName,\n}: {\n document: Document\n isSlugLocalized?: boolean\n locale?: string\n req: PayloadRequest\n slugFieldName: string\n}): Record<string, string> | string | undefined => {\n const slugValue = document[slugFieldName]\n\n if (!slugValue) {\n return undefined\n }\n\n // If field is localized and we want all locales, return the full object\n if (isSlugLocalized && locale === 'all' && typeof slugValue === 'object') {\n return slugValue\n }\n\n // Single locale - use getLocalizedValue to handle fallback\n if (isSlugLocalized && typeof slugValue === 'object') {\n const localizedValue = getLocalizedValue({\n fallbackLocale: req.fallbackLocale,\n fieldType: 'text',\n locale: locale || req.locale || 'en',\n value: slugValue,\n })\n return localizedValue || undefined\n }\n\n return slugValue\n}\n\n/**\n * Computes both slug and title breadcrumb paths for a document by walking up the parent chain.\n * More efficient than computing them separately since it only walks the chain once.\n *\n * Note: Ancestor fetches always use `overrideAccess: true` to ensure paths are complete.\n * If a user can read a document, they should see its full breadcrumb path even if they\n * cannot read all ancestor documents. This prevents broken breadcrumbs and provides\n * better UX at the cost of minimal information leakage (ancestor titles in paths).\n *\n * @param args - Configuration for path computation\n * @returns Object with slugPath and titlePath\n */\nexport async function computePaths(args: ComputePathsArgs): Promise<ComputePathsResult> {\n const {\n collection,\n doc,\n draft = false,\n locale,\n parentFieldName,\n req,\n slugPathFieldName = HIERARCHY_SLUG_PATH_FIELD,\n titlePathFieldName = HIERARCHY_TITLE_PATH_FIELD,\n } = args\n\n const slugify =\n (collection.hierarchy !== false && collection.hierarchy.slugify) ||\n ((text: string) => payloadSlugify(text) || '')\n const { localized: isTitleLocalized, titleFieldName } = findUseAsTitleField(collection)\n\n // Check for dedicated slug field\n const slugFieldName = collection.hierarchy !== false ? collection.hierarchy.slugField : undefined\n const slugFieldInfo = slugFieldName ? findFieldByName(collection, slugFieldName) : undefined\n const isSlugFieldLocalized = slugFieldInfo?.localized ?? false\n\n // Initialize cache if it doesn't exist\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context = req.context as any\n if (!context.hierarchyAncestorCache) {\n context.hierarchyAncestorCache = {}\n }\n if (!context.hierarchyAncestorCache[collection.slug]) {\n context.hierarchyAncestorCache[collection.slug] = {}\n }\n\n // Initialize cache stats if debug is enabled\n if (req.payload.config.debug && !context.hierarchyCacheStats) {\n context.hierarchyCacheStats = {\n hits: 0,\n misses: 0,\n queries: 0,\n }\n }\n\n const parentValue = doc[parentFieldName]\n let parentID: number | string | undefined\n\n if (!parentValue) {\n // No parent - root document\n parentID = undefined\n } else {\n // Extract ID from parent value\n // Parent can be:\n // - Plain ID (string/number)\n // - Populated object with { id: ... }\n if (typeof parentValue === 'object' && 'id' in parentValue) {\n parentID = parentValue.id\n } else {\n parentID = parentValue as number | string\n }\n }\n\n if (parentID) {\n // Parent is always from the same collection (self-referential)\n const parentCollectionConfig = collection\n const parentHierarchyConfig = parentCollectionConfig.hierarchy\n\n // If parent collection doesn't have hierarchy, we can't compute paths through it\n if (!parentHierarchyConfig || !parentCollectionConfig) {\n const titleValue = getTitleValue({\n document: doc,\n isTitleLocalized,\n locale,\n req,\n titleFieldName,\n })\n\n const slugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n if (isTitleLocalized && locale === 'all') {\n return buildLocalizedHierarchyPaths({\n req,\n slugify,\n slugValue: slugValue as Record<string, string> | undefined,\n titleValue: titleValue as Record<string, string>,\n })\n }\n\n return {\n slugPath: slugValue !== undefined ? (slugValue as string) : slugify(titleValue as string),\n titlePath: titleValue as string,\n }\n }\n\n // Initialize cache for parent collection if needed\n if (!context.hierarchyAncestorCache[collection.slug]) {\n context.hierarchyAncestorCache[collection.slug] = {}\n }\n\n const cache = context.hierarchyAncestorCache[collection.slug]\n const cacheKey = `${parentID}_${locale || 'default'}`\n\n // Check cache first\n let parent = cache[cacheKey]\n\n if (parent) {\n // Cache hit\n if (context.hierarchyCacheStats) {\n context.hierarchyCacheStats.hits += 1\n }\n } else {\n // Cache miss - fetch parent\n if (context.hierarchyCacheStats) {\n context.hierarchyCacheStats.misses += 1\n context.hierarchyCacheStats.queries += 1\n }\n\n const parentTitleField = findUseAsTitleField(parentCollectionConfig).titleFieldName\n\n // parentID is guaranteed to be defined here (we're inside if (parentID))\n const validParentID = parentID\n\n // Create new context with computeHierarchyPaths enabled to trigger recursive path computation\n const parentReq = {\n ...req,\n context: {\n ...req.context,\n computeHierarchyPaths: true,\n },\n }\n\n // Fetch parent\n // When locale === 'all', we need special handling because Payload doesn't support\n // fetching all locales of a draft document (drafts are stored per-locale).\n // Strategy: Try published first, fallback to fetching each locale separately for drafts.\n const fetchParent = async () => {\n if (locale === 'all') {\n try {\n // First try to fetch published version with all locales\n return await req.payload.findByID({\n id: validParentID,\n collection: collection.slug,\n depth: 0,\n locale,\n overrideAccess: true,\n req: parentReq,\n select: {\n [parentHierarchyConfig.parentFieldName]: true,\n [parentHierarchyConfig.slugPathFieldName]: true,\n [parentHierarchyConfig.titlePathFieldName]: true,\n [parentTitleField]: true,\n ...(slugFieldName ? { [slugFieldName]: true } : {}),\n },\n user: req.user,\n })\n } catch (_error) {\n // Published version not found, must be a draft\n // Payload doesn't support fetching all locales of a draft with a single query\n // So we need to fetch each locale separately and combine the path data\n const locales = req.payload.config.localization\n ? req.payload.config.localization.localeCodes\n : []\n const parentPathsByLocale: Record<\n string,\n { slugPath?: string; title?: string; titlePath?: string }\n > = {}\n\n // Get parent collection's slugify function (may differ from child's)\n const parentSlugify =\n (parentCollectionConfig.hierarchy !== false &&\n parentCollectionConfig.hierarchy.slugify) ||\n ((text: string) => payloadSlugify(text) || '')\n\n // Fetch parent for each locale to get paths\n for (const loc of locales) {\n // Create a new request with this specific locale but keep computeHierarchyPaths flag\n const localeReq = {\n ...req,\n context: {\n ...req.context,\n computeHierarchyPaths: true,\n },\n locale: loc,\n }\n\n try {\n const parentForLocale = await req.payload.findByID({\n id: validParentID,\n collection: collection.slug,\n depth: 0,\n draft: true,\n locale: loc,\n overrideAccess: true,\n req: localeReq,\n user: req.user,\n })\n\n // Extract the path fields and title from the parent\n // If paths weren't computed (undefined), compute them manually for root documents\n let parentSlugPath = parentForLocale[parentHierarchyConfig.slugPathFieldName]\n let parentTitlePath = parentForLocale[parentHierarchyConfig.titlePathFieldName]\n const parentTitle = parentForLocale[parentTitleField]\n\n // If paths are undefined, this might be a root document - compute paths from title\n if (!parentSlugPath && parentTitle) {\n parentSlugPath = parentSlugify(parentTitle)\n }\n if (!parentTitlePath && parentTitle) {\n parentTitlePath = parentTitle\n }\n\n parentPathsByLocale[loc] = {\n slugPath: parentSlugPath,\n title: parentTitle,\n titlePath: parentTitlePath,\n }\n } catch (_localeError) {\n // This locale doesn't exist, skip it\n }\n }\n\n // Combine the path data from all locales into a single parent object\n const combinedSlugPaths: Record<string, string | undefined> = {}\n const combinedTitlePaths: Record<string, string | undefined> = {}\n const combinedTitles: Record<string, string | undefined> = {}\n\n for (const loc of locales) {\n if (parentPathsByLocale[loc]) {\n combinedSlugPaths[loc] = parentPathsByLocale[loc].slugPath\n combinedTitlePaths[loc] = parentPathsByLocale[loc].titlePath\n combinedTitles[loc] = parentPathsByLocale[loc].title\n }\n }\n\n // Return a parent object with only the hierarchy fields we need\n // (all properly formatted as multi-locale objects)\n return {\n id: validParentID,\n [parentHierarchyConfig.slugPathFieldName]: combinedSlugPaths,\n [parentHierarchyConfig.titlePathFieldName]: combinedTitlePaths,\n [parentTitleField]: combinedTitles,\n }\n }\n } else {\n // Normal case: single locale, can pass draft parameter\n return await req.payload.findByID({\n id: validParentID,\n collection: collection.slug,\n depth: 0,\n draft,\n locale,\n overrideAccess: true,\n req: parentReq,\n select: {\n [parentHierarchyConfig.parentFieldName]: true,\n [parentHierarchyConfig.slugPathFieldName]: true,\n [parentHierarchyConfig.titlePathFieldName]: true,\n [parentTitleField]: true,\n ...(slugFieldName ? { [slugFieldName]: true } : {}),\n },\n user: req.user,\n })\n }\n }\n\n try {\n parent = await fetchParent()\n\n // Store in cache\n cache[cacheKey] = parent\n } catch {\n // If we can't fetch the parent at all (even with fallbacks), treat this as a root document\n // This can happen with complex draft/locale combinations\n parentID = undefined\n }\n }\n\n // If parent fetch failed, treat as root document\n if (!parentID || !parent) {\n const titleValue = getTitleValue({\n document: doc,\n isTitleLocalized,\n locale,\n req,\n titleFieldName,\n })\n\n const slugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n if (isTitleLocalized && locale === 'all') {\n return buildLocalizedHierarchyPaths({\n req,\n slugify,\n slugValue: slugValue as Record<string, string> | undefined,\n titleValue: titleValue as Record<string, string>,\n })\n }\n\n return {\n slugPath: slugValue !== undefined ? (slugValue as string) : slugify(titleValue as string),\n titlePath: titleValue as string,\n }\n }\n\n const docTitle = getTitleValue({ document: doc, isTitleLocalized, locale, req, titleFieldName })\n\n // Cache the current document (in its own collection's cache)\n const currentDocCacheKey = `${doc.id}_${locale || 'default'}`\n if (!context.hierarchyAncestorCache[collection.slug]) {\n context.hierarchyAncestorCache[collection.slug] = {}\n }\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey] = {\n [parentFieldName]: parentID,\n [slugPathFieldName]: undefined, // Will be set below\n [titleFieldName]: docTitle,\n [titlePathFieldName]: undefined, // Will be set below\n }\n\n // Get parent's path field names from hierarchy config\n const parentSlugPathFieldName =\n parentCollectionConfig.hierarchy !== false\n ? parentCollectionConfig.hierarchy.slugPathFieldName\n : HIERARCHY_SLUG_PATH_FIELD\n const parentTitlePathFieldName =\n parentCollectionConfig.hierarchy !== false\n ? parentCollectionConfig.hierarchy.titlePathFieldName\n : HIERARCHY_TITLE_PATH_FIELD\n\n // Handle localized case (locale === 'all' with localized title field)\n if (isTitleLocalized && locale === 'all') {\n // Parent might have non-localized title field, resulting in string paths instead of objects\n // Convert parent paths to objects if they're strings (use same value for all locales)\n let parentSlugPathObj: Record<string, string> | undefined = parent[\n parentSlugPathFieldName\n ] as Record<string, string> | undefined\n let parentTitlePathObj: Record<string, string> | undefined = parent[\n parentTitlePathFieldName\n ] as Record<string, string> | undefined\n\n // If parent paths are strings (non-localized parent), convert to objects for all locales\n if (typeof parentSlugPathObj === 'string') {\n const locales = req.payload.config.localization\n ? req.payload.config.localization.localeCodes\n : []\n const slugValue = parentSlugPathObj\n parentSlugPathObj = {}\n for (const loc of locales) {\n parentSlugPathObj[loc] = slugValue\n }\n }\n\n if (typeof parentTitlePathObj === 'string') {\n const locales = req.payload.config.localization\n ? req.payload.config.localization.localeCodes\n : []\n const titleValue = parentTitlePathObj\n parentTitlePathObj = {}\n for (const loc of locales) {\n parentTitlePathObj[loc] = titleValue\n }\n }\n\n // Get slug value if slugField is configured\n const docSlugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n // If parent paths are undefined (parent fetch failed or paths not computed),\n // buildLocalizedHierarchyPaths will handle it by using just the child's title\n const result = buildLocalizedHierarchyPaths({\n parentSlugPath: parentSlugPathObj,\n parentTitlePath: parentTitlePathObj,\n req,\n slugify,\n slugValue: docSlugValue as Record<string, string> | undefined,\n titleValue: docTitle as Record<string, string>,\n })\n\n // Update cache with computed paths\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey][slugPathFieldName] =\n result.slugPath\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey][titlePathFieldName] =\n result.titlePath\n\n return result\n }\n\n // Single locale case - get slug value if slugField is configured\n const singleLocaleSlugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n const slugSegment =\n singleLocaleSlugValue !== undefined\n ? (singleLocaleSlugValue as string)\n : slugify(docTitle as string)\n\n const result = {\n slugPath: (parent[parentSlugPathFieldName] as string) + '/' + slugSegment,\n titlePath: (parent[parentTitlePathFieldName] as string) + '/' + (docTitle as string),\n }\n\n // Update cache with computed paths\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey][slugPathFieldName] =\n result.slugPath\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey][titlePathFieldName] =\n result.titlePath\n\n return result\n } else {\n // Root document (no parent)\n const titleValue = getTitleValue({\n document: doc,\n isTitleLocalized,\n locale,\n req,\n titleFieldName,\n })\n context.hierarchyAncestorCache[collection.slug][doc.id] = {\n [parentFieldName]: null,\n [titleFieldName]: titleValue,\n }\n\n const rootSlugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n // Handle localized case (locale === 'all' with localized title field)\n if (isTitleLocalized && locale === 'all') {\n return buildLocalizedHierarchyPaths({\n req,\n slugify,\n slugValue: rootSlugValue as Record<string, string> | undefined,\n titleValue: titleValue as Record<string, string>,\n })\n }\n\n // Single locale case\n return {\n slugPath:\n rootSlugValue !== undefined ? (rootSlugValue as string) : slugify(titleValue as string),\n titlePath: titleValue as string,\n }\n }\n}\n"],"names":["slugify","payloadSlugify","HIERARCHY_SLUG_PATH_FIELD","HIERARCHY_TITLE_PATH_FIELD","buildLocalizedHierarchyPaths","findFieldByName","findUseAsTitleField","getLocalizedValue","getTitleValue","document","isTitleLocalized","locale","req","titleFieldName","titleValue","id","toString","localizedValue","fallbackLocale","fieldType","value","getSlugFieldValue","isSlugLocalized","slugFieldName","slugValue","undefined","computePaths","args","collection","doc","draft","parentFieldName","slugPathFieldName","titlePathFieldName","hierarchy","text","localized","slugField","slugFieldInfo","isSlugFieldLocalized","context","hierarchyAncestorCache","slug","payload","config","debug","hierarchyCacheStats","hits","misses","queries","parentValue","parentID","parentCollectionConfig","parentHierarchyConfig","slugPath","titlePath","cache","cacheKey","parent","parentTitleField","validParentID","parentReq","computeHierarchyPaths","fetchParent","findByID","depth","overrideAccess","select","user","_error","locales","localization","localeCodes","parentPathsByLocale","parentSlugify","loc","localeReq","parentForLocale","parentSlugPath","parentTitlePath","parentTitle","title","_localeError","combinedSlugPaths","combinedTitlePaths","combinedTitles","docTitle","currentDocCacheKey","parentSlugPathFieldName","parentTitlePathFieldName","parentSlugPathObj","parentTitlePathObj","docSlugValue","result","singleLocaleSlugValue","slugSegment","rootSlugValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/hierarchy/utils/computePaths.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Document, PayloadRequest } from '../../types/index.js'\n\nimport { slugify as payloadSlugify } from '../../utilities/slugify.js'\nimport { HIERARCHY_SLUG_PATH_FIELD, HIERARCHY_TITLE_PATH_FIELD } from '../constants.js'\nimport { buildLocalizedHierarchyPaths } from './buildLocalizedHierarchyPaths.js'\nimport { findFieldByName, findUseAsTitleField } from './findUseAsTitle.js'\nimport { getLocalizedValue } from './getLocalizedValue.js'\n\ntype ComputePathsArgs = {\n collection: SanitizedCollectionConfig\n doc: Document\n draft?: boolean\n locale?: string\n parentFieldName: string\n req: PayloadRequest\n slugPathFieldName?: string\n titlePathFieldName?: string\n}\n\ntype ComputePathsResult = {\n slugPath: Record<string, string> | string\n titlePath: Record<string, string> | string\n}\n\n// Helper to get title value - returns string for single locale, object for 'all' locales\nconst getTitleValue = ({\n document,\n isTitleLocalized = false,\n locale,\n req,\n titleFieldName,\n}: {\n document: Document\n isTitleLocalized?: boolean\n locale?: string\n req: PayloadRequest\n titleFieldName: string\n}): Record<string, string> | string => {\n const titleValue = document[titleFieldName]\n\n if (!titleValue) {\n return document.id?.toString() || 'untitled'\n }\n\n // If field is localized and we want all locales, return the full object\n if (isTitleLocalized && locale === 'all' && typeof titleValue === 'object') {\n return titleValue\n }\n\n // Single locale - use getLocalizedValue to handle fallback\n if (isTitleLocalized && typeof titleValue === 'object') {\n const localizedValue = getLocalizedValue({\n fallbackLocale: req.fallbackLocale,\n fieldType: 'text',\n locale: locale || req.locale || 'en',\n value: titleValue,\n })\n return localizedValue || document.id?.toString() || 'untitled'\n }\n\n return titleValue\n}\n\n// Helper to get slug value from a dedicated slug field\nconst getSlugFieldValue = ({\n document,\n isSlugLocalized = false,\n locale,\n req,\n slugFieldName,\n}: {\n document: Document\n isSlugLocalized?: boolean\n locale?: string\n req: PayloadRequest\n slugFieldName: string\n}): Record<string, string> | string | undefined => {\n const slugValue = document[slugFieldName]\n\n if (!slugValue) {\n return undefined\n }\n\n // If field is localized and we want all locales, return the full object\n if (isSlugLocalized && locale === 'all' && typeof slugValue === 'object') {\n return slugValue\n }\n\n // Single locale - use getLocalizedValue to handle fallback\n if (isSlugLocalized && typeof slugValue === 'object') {\n const localizedValue = getLocalizedValue({\n fallbackLocale: req.fallbackLocale,\n fieldType: 'text',\n locale: locale || req.locale || 'en',\n value: slugValue,\n })\n return localizedValue || undefined\n }\n\n return slugValue\n}\n\n/**\n * Computes both slug and title breadcrumb paths for a document by walking up the parent chain.\n * More efficient than computing them separately since it only walks the chain once.\n *\n * Note: Ancestor fetches always use `overrideAccess: true` to ensure paths are complete.\n * If a user can read a document, they should see its full breadcrumb path even if they\n * cannot read all ancestor documents. This prevents broken breadcrumbs and provides\n * better UX at the cost of minimal information leakage (ancestor titles in paths).\n *\n * @param args - Configuration for path computation\n * @returns Object with slugPath and titlePath\n */\nexport async function computePaths(args: ComputePathsArgs): Promise<ComputePathsResult> {\n const {\n collection,\n doc,\n draft = false,\n locale,\n parentFieldName,\n req,\n slugPathFieldName = HIERARCHY_SLUG_PATH_FIELD,\n titlePathFieldName = HIERARCHY_TITLE_PATH_FIELD,\n } = args\n\n const slugify =\n (collection.hierarchy !== false && collection.hierarchy.slugify) ||\n ((text: string) => payloadSlugify(text) || '')\n const { localized: isTitleLocalized, titleFieldName } = findUseAsTitleField(collection)\n\n // Check for dedicated slug field\n const slugFieldName = collection.hierarchy !== false ? collection.hierarchy.slugField : undefined\n const slugFieldInfo = slugFieldName ? findFieldByName(collection, slugFieldName) : undefined\n const isSlugFieldLocalized = slugFieldInfo?.localized ?? false\n\n // Initialize cache if it doesn't exist\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context = req.context as any\n if (!context.hierarchyAncestorCache) {\n context.hierarchyAncestorCache = {}\n }\n if (!context.hierarchyAncestorCache[collection.slug]) {\n context.hierarchyAncestorCache[collection.slug] = {}\n }\n\n // Initialize cache stats if debug is enabled\n if (req.payload.config.debug && !context.hierarchyCacheStats) {\n context.hierarchyCacheStats = {\n hits: 0,\n misses: 0,\n queries: 0,\n }\n }\n\n const parentValue = doc[parentFieldName]\n let parentID: number | string | undefined\n\n if (!parentValue) {\n // No parent - root document\n parentID = undefined\n } else {\n // Extract ID from parent value\n // Parent can be:\n // - Plain ID (string/number)\n // - Populated object with { id: ... }\n if (typeof parentValue === 'object' && 'id' in parentValue) {\n parentID = parentValue.id\n } else {\n parentID = parentValue as number | string\n }\n }\n\n if (parentID) {\n // Parent is always from the same collection (self-referential)\n const parentCollectionConfig = collection\n const parentHierarchyConfig = parentCollectionConfig.hierarchy\n\n // If parent collection doesn't have hierarchy, we can't compute paths through it\n if (!parentHierarchyConfig || !parentCollectionConfig) {\n const titleValue = getTitleValue({\n document: doc,\n isTitleLocalized,\n locale,\n req,\n titleFieldName,\n })\n\n const slugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n if (isTitleLocalized && locale === 'all') {\n return buildLocalizedHierarchyPaths({\n req,\n slugify,\n slugValue: slugValue as Record<string, string> | undefined,\n titleValue: titleValue as Record<string, string>,\n })\n }\n\n return {\n slugPath: slugValue !== undefined ? slugValue : slugify(titleValue as string),\n titlePath: titleValue as string,\n }\n }\n\n // Initialize cache for parent collection if needed\n if (!context.hierarchyAncestorCache[collection.slug]) {\n context.hierarchyAncestorCache[collection.slug] = {}\n }\n\n const cache = context.hierarchyAncestorCache[collection.slug]\n const cacheKey = `${parentID}_${locale || 'default'}`\n\n // Check cache first\n let parent = cache[cacheKey]\n\n if (parent) {\n // Cache hit\n if (context.hierarchyCacheStats) {\n context.hierarchyCacheStats.hits += 1\n }\n } else {\n // Cache miss - fetch parent\n if (context.hierarchyCacheStats) {\n context.hierarchyCacheStats.misses += 1\n context.hierarchyCacheStats.queries += 1\n }\n\n const parentTitleField = findUseAsTitleField(parentCollectionConfig).titleFieldName\n\n // parentID is guaranteed to be defined here (we're inside if (parentID))\n const validParentID = parentID\n\n // Create new context with computeHierarchyPaths enabled to trigger recursive path computation\n const parentReq = {\n ...req,\n context: {\n ...req.context,\n computeHierarchyPaths: true,\n },\n }\n\n // Fetch parent\n // When locale === 'all', we need special handling because Payload doesn't support\n // fetching all locales of a draft document (drafts are stored per-locale).\n // Strategy: Try published first, fallback to fetching each locale separately for drafts.\n const fetchParent = async () => {\n if (locale === 'all') {\n try {\n // First try to fetch published version with all locales\n return await req.payload.findByID({\n id: validParentID,\n collection: collection.slug,\n depth: 0,\n locale,\n overrideAccess: true,\n req: parentReq,\n select: {\n [parentHierarchyConfig.parentFieldName]: true,\n [parentHierarchyConfig.slugPathFieldName]: true,\n [parentHierarchyConfig.titlePathFieldName]: true,\n [parentTitleField]: true,\n ...(slugFieldName ? { [slugFieldName]: true } : {}),\n },\n user: req.user,\n })\n } catch (_error) {\n // Published version not found, must be a draft\n // Payload doesn't support fetching all locales of a draft with a single query\n // So we need to fetch each locale separately and combine the path data\n const locales = req.payload.config.localization\n ? req.payload.config.localization.localeCodes\n : []\n const parentPathsByLocale: Record<\n string,\n { slugPath?: string; title?: string; titlePath?: string }\n > = {}\n\n // Get parent collection's slugify function (may differ from child's)\n const parentSlugify =\n (parentCollectionConfig.hierarchy !== false &&\n parentCollectionConfig.hierarchy.slugify) ||\n ((text: string) => payloadSlugify(text) || '')\n\n // Fetch parent for each locale to get paths\n for (const loc of locales) {\n // Create a new request with this specific locale but keep computeHierarchyPaths flag\n const localeReq = {\n ...req,\n context: {\n ...req.context,\n computeHierarchyPaths: true,\n },\n locale: loc,\n }\n\n try {\n const parentForLocale = await req.payload.findByID({\n id: validParentID,\n collection: collection.slug,\n depth: 0,\n draft: true,\n locale: loc,\n overrideAccess: true,\n req: localeReq,\n user: req.user,\n })\n\n // Extract the path fields and title from the parent\n // If paths weren't computed (undefined), compute them manually for root documents\n let parentSlugPath = parentForLocale[parentHierarchyConfig.slugPathFieldName]\n let parentTitlePath = parentForLocale[parentHierarchyConfig.titlePathFieldName]\n const parentTitle = parentForLocale[parentTitleField]\n\n // If paths are undefined, this might be a root document - compute paths from title\n if (!parentSlugPath && parentTitle) {\n parentSlugPath = parentSlugify(parentTitle)\n }\n if (!parentTitlePath && parentTitle) {\n parentTitlePath = parentTitle\n }\n\n parentPathsByLocale[loc] = {\n slugPath: parentSlugPath,\n title: parentTitle,\n titlePath: parentTitlePath,\n }\n } catch (_localeError) {\n // This locale doesn't exist, skip it\n }\n }\n\n // Combine the path data from all locales into a single parent object\n const combinedSlugPaths: Record<string, string | undefined> = {}\n const combinedTitlePaths: Record<string, string | undefined> = {}\n const combinedTitles: Record<string, string | undefined> = {}\n\n for (const loc of locales) {\n if (parentPathsByLocale[loc]) {\n combinedSlugPaths[loc] = parentPathsByLocale[loc].slugPath\n combinedTitlePaths[loc] = parentPathsByLocale[loc].titlePath\n combinedTitles[loc] = parentPathsByLocale[loc].title\n }\n }\n\n // Return a parent object with only the hierarchy fields we need\n // (all properly formatted as multi-locale objects)\n return {\n id: validParentID,\n [parentHierarchyConfig.slugPathFieldName]: combinedSlugPaths,\n [parentHierarchyConfig.titlePathFieldName]: combinedTitlePaths,\n [parentTitleField]: combinedTitles,\n }\n }\n } else {\n // Normal case: single locale, can pass draft parameter\n return await req.payload.findByID({\n id: validParentID,\n collection: collection.slug,\n depth: 0,\n draft,\n locale,\n overrideAccess: true,\n req: parentReq,\n select: {\n [parentHierarchyConfig.parentFieldName]: true,\n [parentHierarchyConfig.slugPathFieldName]: true,\n [parentHierarchyConfig.titlePathFieldName]: true,\n [parentTitleField]: true,\n ...(slugFieldName ? { [slugFieldName]: true } : {}),\n },\n user: req.user,\n })\n }\n }\n\n try {\n parent = await fetchParent()\n\n // Store in cache\n cache[cacheKey] = parent\n } catch {\n // If we can't fetch the parent at all (even with fallbacks), treat this as a root document\n // This can happen with complex draft/locale combinations\n parentID = undefined\n }\n }\n\n // If parent fetch failed, treat as root document\n if (!parentID || !parent) {\n const titleValue = getTitleValue({\n document: doc,\n isTitleLocalized,\n locale,\n req,\n titleFieldName,\n })\n\n const slugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n if (isTitleLocalized && locale === 'all') {\n return buildLocalizedHierarchyPaths({\n req,\n slugify,\n slugValue: slugValue as Record<string, string> | undefined,\n titleValue: titleValue as Record<string, string>,\n })\n }\n\n return {\n slugPath: slugValue !== undefined ? slugValue : slugify(titleValue as string),\n titlePath: titleValue as string,\n }\n }\n\n const docTitle = getTitleValue({ document: doc, isTitleLocalized, locale, req, titleFieldName })\n\n // Cache the current document (in its own collection's cache)\n const currentDocCacheKey = `${doc.id}_${locale || 'default'}`\n if (!context.hierarchyAncestorCache[collection.slug]) {\n context.hierarchyAncestorCache[collection.slug] = {}\n }\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey] = {\n [parentFieldName]: parentID,\n [slugPathFieldName]: undefined, // Will be set below\n [titleFieldName]: docTitle,\n [titlePathFieldName]: undefined, // Will be set below\n }\n\n // Get parent's path field names from hierarchy config\n const parentSlugPathFieldName =\n parentCollectionConfig.hierarchy !== false\n ? parentCollectionConfig.hierarchy.slugPathFieldName\n : HIERARCHY_SLUG_PATH_FIELD\n const parentTitlePathFieldName =\n parentCollectionConfig.hierarchy !== false\n ? parentCollectionConfig.hierarchy.titlePathFieldName\n : HIERARCHY_TITLE_PATH_FIELD\n\n // Handle localized case (locale === 'all' with localized title field)\n if (isTitleLocalized && locale === 'all') {\n // Parent might have non-localized title field, resulting in string paths instead of objects\n // Convert parent paths to objects if they're strings (use same value for all locales)\n let parentSlugPathObj: Record<string, string> | undefined = parent[\n parentSlugPathFieldName\n ] as Record<string, string> | undefined\n let parentTitlePathObj: Record<string, string> | undefined = parent[\n parentTitlePathFieldName\n ] as Record<string, string> | undefined\n\n // If parent paths are strings (non-localized parent), convert to objects for all locales\n if (typeof parentSlugPathObj === 'string') {\n const locales = req.payload.config.localization\n ? req.payload.config.localization.localeCodes\n : []\n const slugValue = parentSlugPathObj\n parentSlugPathObj = {}\n for (const loc of locales) {\n parentSlugPathObj[loc] = slugValue\n }\n }\n\n if (typeof parentTitlePathObj === 'string') {\n const locales = req.payload.config.localization\n ? req.payload.config.localization.localeCodes\n : []\n const titleValue = parentTitlePathObj\n parentTitlePathObj = {}\n for (const loc of locales) {\n parentTitlePathObj[loc] = titleValue\n }\n }\n\n // Get slug value if slugField is configured\n const docSlugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n // If parent paths are undefined (parent fetch failed or paths not computed),\n // buildLocalizedHierarchyPaths will handle it by using just the child's title\n const result = buildLocalizedHierarchyPaths({\n parentSlugPath: parentSlugPathObj,\n parentTitlePath: parentTitlePathObj,\n req,\n slugify,\n slugValue: docSlugValue as Record<string, string> | undefined,\n titleValue: docTitle as Record<string, string>,\n })\n\n // Update cache with computed paths\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey][slugPathFieldName] =\n result.slugPath\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey][titlePathFieldName] =\n result.titlePath\n\n return result\n }\n\n // Single locale case - get slug value if slugField is configured\n const singleLocaleSlugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n const slugSegment =\n singleLocaleSlugValue !== undefined\n ? (singleLocaleSlugValue as string)\n : slugify(docTitle as string)\n\n const result = {\n slugPath: (parent[parentSlugPathFieldName] as string) + '/' + slugSegment,\n titlePath: (parent[parentTitlePathFieldName] as string) + '/' + (docTitle as string),\n }\n\n // Update cache with computed paths\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey][slugPathFieldName] =\n result.slugPath\n context.hierarchyAncestorCache[collection.slug][currentDocCacheKey][titlePathFieldName] =\n result.titlePath\n\n return result\n } else {\n // Root document (no parent)\n const titleValue = getTitleValue({\n document: doc,\n isTitleLocalized,\n locale,\n req,\n titleFieldName,\n })\n context.hierarchyAncestorCache[collection.slug][doc.id] = {\n [parentFieldName]: null,\n [titleFieldName]: titleValue,\n }\n\n const rootSlugValue = slugFieldName\n ? getSlugFieldValue({\n document: doc,\n isSlugLocalized: isSlugFieldLocalized,\n locale,\n req,\n slugFieldName,\n })\n : undefined\n\n // Handle localized case (locale === 'all' with localized title field)\n if (isTitleLocalized && locale === 'all') {\n return buildLocalizedHierarchyPaths({\n req,\n slugify,\n slugValue: rootSlugValue as Record<string, string> | undefined,\n titleValue: titleValue as Record<string, string>,\n })\n }\n\n // Single locale case\n return {\n slugPath: rootSlugValue !== undefined ? rootSlugValue : slugify(titleValue as string),\n titlePath: titleValue as string,\n }\n }\n}\n"],"names":["slugify","payloadSlugify","HIERARCHY_SLUG_PATH_FIELD","HIERARCHY_TITLE_PATH_FIELD","buildLocalizedHierarchyPaths","findFieldByName","findUseAsTitleField","getLocalizedValue","getTitleValue","document","isTitleLocalized","locale","req","titleFieldName","titleValue","id","toString","localizedValue","fallbackLocale","fieldType","value","getSlugFieldValue","isSlugLocalized","slugFieldName","slugValue","undefined","computePaths","args","collection","doc","draft","parentFieldName","slugPathFieldName","titlePathFieldName","hierarchy","text","localized","slugField","slugFieldInfo","isSlugFieldLocalized","context","hierarchyAncestorCache","slug","payload","config","debug","hierarchyCacheStats","hits","misses","queries","parentValue","parentID","parentCollectionConfig","parentHierarchyConfig","slugPath","titlePath","cache","cacheKey","parent","parentTitleField","validParentID","parentReq","computeHierarchyPaths","fetchParent","findByID","depth","overrideAccess","select","user","_error","locales","localization","localeCodes","parentPathsByLocale","parentSlugify","loc","localeReq","parentForLocale","parentSlugPath","parentTitlePath","parentTitle","title","_localeError","combinedSlugPaths","combinedTitlePaths","combinedTitles","docTitle","currentDocCacheKey","parentSlugPathFieldName","parentTitlePathFieldName","parentSlugPathObj","parentTitlePathObj","docSlugValue","result","singleLocaleSlugValue","slugSegment","rootSlugValue"],"mappings":"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"}
|