payload 4.0.0-internal.811e0a4 → 4.0.0-internal.8ba6b5b

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.
Files changed (74) hide show
  1. package/dist/admin/functions/index.d.ts +1 -1
  2. package/dist/admin/functions/index.js.map +1 -1
  3. package/dist/exports/internal.d.ts +1 -0
  4. package/dist/exports/internal.d.ts.map +1 -1
  5. package/dist/exports/internal.js +1 -0
  6. package/dist/exports/internal.js.map +1 -1
  7. package/dist/exports/shared.d.ts +1 -1
  8. package/dist/exports/shared.js.map +1 -1
  9. package/dist/fields/baseFields/slug/countVersions.d.ts.map +1 -1
  10. package/dist/fields/baseFields/slug/countVersions.js +6 -8
  11. package/dist/fields/baseFields/slug/countVersions.js.map +1 -1
  12. package/dist/fields/baseFields/slug/generateSlug.d.ts +14 -7
  13. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  14. package/dist/fields/baseFields/slug/generateSlug.js +53 -73
  15. package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
  16. package/dist/fields/baseFields/slug/types.d.ts +14 -0
  17. package/dist/fields/baseFields/slug/types.d.ts.map +1 -0
  18. package/dist/fields/baseFields/slug/types.js +6 -0
  19. package/dist/fields/baseFields/slug/types.js.map +1 -0
  20. package/dist/fields/config/client.d.ts +1 -1
  21. package/dist/fields/config/client.d.ts.map +1 -1
  22. package/dist/fields/config/client.js +2 -1
  23. package/dist/fields/config/client.js.map +1 -1
  24. package/dist/fields/config/sanitize.d.ts.map +1 -1
  25. package/dist/fields/config/sanitize.js +39 -0
  26. package/dist/fields/config/sanitize.js.map +1 -1
  27. package/dist/fields/config/types.d.ts +31 -7
  28. package/dist/fields/config/types.d.ts.map +1 -1
  29. package/dist/fields/config/types.js.map +1 -1
  30. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  31. package/dist/fields/hooks/afterRead/promise.js +1 -0
  32. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  33. package/dist/fields/setDefaultBeforeDuplicate.js +1 -0
  34. package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
  35. package/dist/fields/sortableFieldTypes.d.ts.map +1 -1
  36. package/dist/fields/sortableFieldTypes.js +1 -0
  37. package/dist/fields/sortableFieldTypes.js.map +1 -1
  38. package/dist/fields/validations.d.ts +4 -1
  39. package/dist/fields/validations.d.ts.map +1 -1
  40. package/dist/fields/validations.js +7 -0
  41. package/dist/fields/validations.js.map +1 -1
  42. package/dist/index.bundled.d.ts +46 -95
  43. package/dist/index.d.ts +2 -3
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +0 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  48. package/dist/utilities/configToJSONSchema.js +1 -0
  49. package/dist/utilities/configToJSONSchema.js.map +1 -1
  50. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  51. package/dist/utilities/isURLAllowed.js +9 -3
  52. package/dist/utilities/isURLAllowed.js.map +1 -1
  53. package/dist/utilities/isURLAllowed.spec.js +78 -0
  54. package/dist/utilities/isURLAllowed.spec.js.map +1 -0
  55. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  56. package/dist/utilities/telemetry/events/adminInit.js +2 -3
  57. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  58. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  59. package/dist/utilities/telemetry/events/serverInit.js +2 -3
  60. package/dist/utilities/telemetry/events/serverInit.js.map +1 -1
  61. package/dist/utilities/telemetry/index.d.ts +14 -3
  62. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  63. package/dist/utilities/telemetry/index.js +6 -1
  64. package/dist/utilities/telemetry/index.js.map +1 -1
  65. package/dist/utilities/telemetry/index.spec.js +43 -0
  66. package/dist/utilities/telemetry/index.spec.js.map +1 -0
  67. package/dist/versions/schedule/job.d.ts.map +1 -1
  68. package/dist/versions/schedule/job.js +4 -1
  69. package/dist/versions/schedule/job.js.map +1 -1
  70. package/package.json +2 -2
  71. package/dist/fields/baseFields/slug/index.d.ts +0 -89
  72. package/dist/fields/baseFields/slug/index.d.ts.map +0 -1
  73. package/dist/fields/baseFields/slug/index.js +0 -81
  74. package/dist/fields/baseFields/slug/index.js.map +0 -1
@@ -2,7 +2,7 @@ import type { AcceptedLanguages } from '@payloadcms/translations';
2
2
  import type { ImportMap } from '../../bin/generateImportMap/index.js';
3
3
  import type { Locale, SanitizedConfig } from '../../config/types.js';
4
4
  import type { PaginatedDocs } from '../../database/types.js';
5
- import type { Slugify } from '../../fields/baseFields/slug/index.js';
5
+ import type { Slugify } from '../../fields/baseFields/slug/types.js';
6
6
  import type { CollectionSlug, ColumnPreference, FieldPaths, GlobalSlug, SanitizedPermissions } from '../../index.js';
7
7
  import type { PayloadRequest, Sort, Where } from '../../types/index.js';
8
8
  import type { ColumnsFromURL } from '../../utilities/transformColumnPreferences.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/admin/functions/index.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\n\nimport type { ImportMap } from '../../bin/generateImportMap/index.js'\nimport type { Locale, SanitizedConfig } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { Slugify } from '../../fields/baseFields/slug/index.js'\nimport type {\n CollectionSlug,\n ColumnPreference,\n FieldPaths,\n GlobalSlug,\n SanitizedPermissions,\n} from '../../index.js'\nimport type { PayloadRequest, Sort, Where } from '../../types/index.js'\nimport type { ColumnsFromURL } from '../../utilities/transformColumnPreferences.js'\nimport type { ComponentRenderer } from '../adapters/render.js'\n\nexport type InitReqResult = {\n cookies: Map<string, string>\n // TODO: Remove in 4.0. Duplicative, already available in req.headers\n headers: Headers\n // TODO: Remove in 4.0. Duplicative, already available in req.i18n.language\n languageCode: AcceptedLanguages\n locale?: Locale\n permissions: SanitizedPermissions\n req: PayloadRequest\n}\n\n/**\n * Determines how server function handlers serialize their return values.\n * - `'rsc'`: Return React nodes (JSX) — requires RSC flight serialization (Next.js)\n * - `'data-only'`: Return JSON-serializable data — for non-RSC adapters (TanStack Start)\n */\nexport type ServerFunctionMode = 'data-only' | 'rsc'\n\nexport type DefaultServerFunctionArgs = {\n importMap: ImportMap\n mode?: ServerFunctionMode\n renderComponent?: ComponentRenderer\n} & Pick<InitReqResult, 'cookies' | 'locale' | 'permissions' | 'req'>\n\nexport type ServerFunctionArgs = {\n args: Record<string, unknown>\n name: string\n}\n\nexport type ServerFunctionClientArgs = {\n args: Record<string, unknown>\n name: string\n}\n\nexport type ServerFunctionClient = (args: ServerFunctionClientArgs) => Promise<unknown> | unknown\n\nexport type ServerFunction<\n TArgs extends object = Record<string, unknown>,\n TReturnType = Promise<unknown> | unknown,\n> = (args: DefaultServerFunctionArgs & TArgs) => TReturnType\n\nexport type ServerFunctionConfig = {\n fn: ServerFunction\n name: string\n}\n\nexport type ServerFunctionHandler = (\n args: {\n config: Promise<SanitizedConfig> | SanitizedConfig\n importMap: ImportMap\n /**\n * A map of server function names to their implementations. These are\n * registered alongside the base server functions and can be called\n * using the useServerFunctions() hook.\n *\n * @example\n * const { serverFunction } = useServerFunctions()\n *\n * const callServerFunction = useCallback(() => {\n *\n * async function call() {\n * const result = (await serverFunction({\n * name: 'record-key',\n * args: {\n * // Your args\n * },\n * }))\n *\n * // Do someting with the result\n * }\n *\n * void call()\n * }, [serverFunction])\n */\n serverFunctions?: Record<string, ServerFunction<any, any>>\n } & ServerFunctionClientArgs,\n) => Promise<unknown>\n\nexport type ListQuery = {\n /*\n * This is an of strings, i.e. `['title', '-slug']`\n * Use `transformColumnsToPreferences` and `transformColumnsToSearchParams` to convert it back and forth\n */\n columns?: ColumnsFromURL\n /*\n * A string representing the field to group by, e.g. `category`\n * A leading hyphen represents descending order, e.g. `-category`\n */\n groupBy?: string\n limit?: number\n page?: number\n preset?: number | string\n queryByGroup?: Record<string, ListQuery>\n /*\n When provided, is automatically injected into the `where` object\n */\n search?: string\n sort?: Sort\n where?: Where\n} & Record<string, unknown>\n\nexport type BuildTableStateArgs = {\n /**\n * If an array is provided, the table will be built to support polymorphic collections.\n */\n collectionSlug: string | string[]\n columns?: ColumnPreference[]\n data?: PaginatedDocs\n /**\n * @deprecated Use `data` instead\n */\n docs?: PaginatedDocs['docs']\n enableRowSelections?: boolean\n orderableFieldName: string\n parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n query?: ListQuery\n renderRowTypes?: boolean\n tableAppearance?: 'condensed' | 'default'\n}\n\nexport type SlugifyServerFunctionArgs = {\n collectionSlug?: CollectionSlug\n globalSlug?: GlobalSlug\n path?: FieldPaths['path']\n} & Omit<Parameters<Slugify>[0], 'req'>\n"],"names":[],"mappings":"AA6IA,WAIuC"}
1
+ {"version":3,"sources":["../../../src/admin/functions/index.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\n\nimport type { ImportMap } from '../../bin/generateImportMap/index.js'\nimport type { Locale, SanitizedConfig } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { Slugify } from '../../fields/baseFields/slug/types.js'\nimport type {\n CollectionSlug,\n ColumnPreference,\n FieldPaths,\n GlobalSlug,\n SanitizedPermissions,\n} from '../../index.js'\nimport type { PayloadRequest, Sort, Where } from '../../types/index.js'\nimport type { ColumnsFromURL } from '../../utilities/transformColumnPreferences.js'\nimport type { ComponentRenderer } from '../adapters/render.js'\n\nexport type InitReqResult = {\n cookies: Map<string, string>\n // TODO: Remove in 4.0. Duplicative, already available in req.headers\n headers: Headers\n // TODO: Remove in 4.0. Duplicative, already available in req.i18n.language\n languageCode: AcceptedLanguages\n locale?: Locale\n permissions: SanitizedPermissions\n req: PayloadRequest\n}\n\n/**\n * Determines how server function handlers serialize their return values.\n * - `'rsc'`: Return React nodes (JSX) — requires RSC flight serialization (Next.js)\n * - `'data-only'`: Return JSON-serializable data — for non-RSC adapters (TanStack Start)\n */\nexport type ServerFunctionMode = 'data-only' | 'rsc'\n\nexport type DefaultServerFunctionArgs = {\n importMap: ImportMap\n mode?: ServerFunctionMode\n renderComponent?: ComponentRenderer\n} & Pick<InitReqResult, 'cookies' | 'locale' | 'permissions' | 'req'>\n\nexport type ServerFunctionArgs = {\n args: Record<string, unknown>\n name: string\n}\n\nexport type ServerFunctionClientArgs = {\n args: Record<string, unknown>\n name: string\n}\n\nexport type ServerFunctionClient = (args: ServerFunctionClientArgs) => Promise<unknown> | unknown\n\nexport type ServerFunction<\n TArgs extends object = Record<string, unknown>,\n TReturnType = Promise<unknown> | unknown,\n> = (args: DefaultServerFunctionArgs & TArgs) => TReturnType\n\nexport type ServerFunctionConfig = {\n fn: ServerFunction\n name: string\n}\n\nexport type ServerFunctionHandler = (\n args: {\n config: Promise<SanitizedConfig> | SanitizedConfig\n importMap: ImportMap\n /**\n * A map of server function names to their implementations. These are\n * registered alongside the base server functions and can be called\n * using the useServerFunctions() hook.\n *\n * @example\n * const { serverFunction } = useServerFunctions()\n *\n * const callServerFunction = useCallback(() => {\n *\n * async function call() {\n * const result = (await serverFunction({\n * name: 'record-key',\n * args: {\n * // Your args\n * },\n * }))\n *\n * // Do someting with the result\n * }\n *\n * void call()\n * }, [serverFunction])\n */\n serverFunctions?: Record<string, ServerFunction<any, any>>\n } & ServerFunctionClientArgs,\n) => Promise<unknown>\n\nexport type ListQuery = {\n /*\n * This is an of strings, i.e. `['title', '-slug']`\n * Use `transformColumnsToPreferences` and `transformColumnsToSearchParams` to convert it back and forth\n */\n columns?: ColumnsFromURL\n /*\n * A string representing the field to group by, e.g. `category`\n * A leading hyphen represents descending order, e.g. `-category`\n */\n groupBy?: string\n limit?: number\n page?: number\n preset?: number | string\n queryByGroup?: Record<string, ListQuery>\n /*\n When provided, is automatically injected into the `where` object\n */\n search?: string\n sort?: Sort\n where?: Where\n} & Record<string, unknown>\n\nexport type BuildTableStateArgs = {\n /**\n * If an array is provided, the table will be built to support polymorphic collections.\n */\n collectionSlug: string | string[]\n columns?: ColumnPreference[]\n data?: PaginatedDocs\n /**\n * @deprecated Use `data` instead\n */\n docs?: PaginatedDocs['docs']\n enableRowSelections?: boolean\n orderableFieldName: string\n parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n query?: ListQuery\n renderRowTypes?: boolean\n tableAppearance?: 'condensed' | 'default'\n}\n\nexport type SlugifyServerFunctionArgs = {\n collectionSlug?: CollectionSlug\n globalSlug?: GlobalSlug\n path?: FieldPaths['path']\n} & Omit<Parameters<Slugify>[0], 'req'>\n"],"names":[],"mappings":"AA6IA,WAIuC"}
@@ -7,4 +7,5 @@ export { getSafeFileName } from '../uploads/getSafeFilename.js';
7
7
  export { parseRangeHeader } from '../uploads/parseRangeHeader.js';
8
8
  export { getEntityPermissions } from '../utilities/getEntityPermissions/getEntityPermissions.js';
9
9
  export { sanitizePermissions } from '../utilities/sanitizePermissions.js';
10
+ export { sendTelemetryEvent } from '../utilities/telemetry/index.js';
10
11
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/exports/internal.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2DAA2D,CAAA;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/exports/internal.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2DAA2D,CAAA;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA"}
@@ -6,5 +6,6 @@ export { getSafeFileName } from '../uploads/getSafeFilename.js';
6
6
  export { parseRangeHeader } from '../uploads/parseRangeHeader.js';
7
7
  export { getEntityPermissions } from '../utilities/getEntityPermissions/getEntityPermissions.js';
8
8
  export { sanitizePermissions } from '../utilities/sanitizePermissions.js';
9
+ export { sendTelemetryEvent } from '../utilities/telemetry/index.js';
9
10
 
10
11
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/internal.ts"],"sourcesContent":["/**\n * Modules exported here are not part of the public API and are subject to change without notice and without a major version bump.\n */\n\nexport { getExternalFile } from '../uploads/getExternalFile.js'\nexport { getRangeRequestInfo } from '../uploads/getRangeRequestInfo.js'\nexport { getSafeFileName } from '../uploads/getSafeFilename.js'\nexport { parseRangeHeader } from '../uploads/parseRangeHeader.js'\nexport { getEntityPermissions } from '../utilities/getEntityPermissions/getEntityPermissions.js'\nexport { sanitizePermissions } from '../utilities/sanitizePermissions.js'\n"],"names":["getExternalFile","getRangeRequestInfo","getSafeFileName","parseRangeHeader","getEntityPermissions","sanitizePermissions"],"mappings":"AAAA;;CAEC,GAED,SAASA,eAAe,QAAQ,gCAA+B;AAC/D,SAASC,mBAAmB,QAAQ,oCAAmC;AACvE,SAASC,eAAe,QAAQ,gCAA+B;AAC/D,SAASC,gBAAgB,QAAQ,iCAAgC;AACjE,SAASC,oBAAoB,QAAQ,4DAA2D;AAChG,SAASC,mBAAmB,QAAQ,sCAAqC"}
1
+ {"version":3,"sources":["../../src/exports/internal.ts"],"sourcesContent":["/**\n * Modules exported here are not part of the public API and are subject to change without notice and without a major version bump.\n */\n\nexport { getExternalFile } from '../uploads/getExternalFile.js'\nexport { getRangeRequestInfo } from '../uploads/getRangeRequestInfo.js'\nexport { getSafeFileName } from '../uploads/getSafeFilename.js'\nexport { parseRangeHeader } from '../uploads/parseRangeHeader.js'\nexport { getEntityPermissions } from '../utilities/getEntityPermissions/getEntityPermissions.js'\nexport { sanitizePermissions } from '../utilities/sanitizePermissions.js'\nexport { sendTelemetryEvent } from '../utilities/telemetry/index.js'\n"],"names":["getExternalFile","getRangeRequestInfo","getSafeFileName","parseRangeHeader","getEntityPermissions","sanitizePermissions","sendTelemetryEvent"],"mappings":"AAAA;;CAEC,GAED,SAASA,eAAe,QAAQ,gCAA+B;AAC/D,SAASC,mBAAmB,QAAQ,oCAAmC;AACvE,SAASC,eAAe,QAAQ,gCAA+B;AAC/D,SAASC,gBAAgB,QAAQ,iCAAgC;AACjE,SAASC,oBAAoB,QAAQ,4DAA2D;AAChG,SAASC,mBAAmB,QAAQ,sCAAqC;AACzE,SAASC,kBAAkB,QAAQ,kCAAiC"}
@@ -15,7 +15,7 @@ export { combineQueries } from '../database/combineQueries.js';
15
15
  export { APIError, APIErrorName } from '../errors/APIError.js';
16
16
  export { MissingEditorProp } from '../errors/MissingEditorProp.js';
17
17
  export { UnauthorizedError } from '../errors/UnauthorizedError.js';
18
- export { type Slugify } from '../fields/baseFields/slug/index.js';
18
+ export { type Slugify } from '../fields/baseFields/slug/types.js';
19
19
  export { defaultTimezones } from '../fields/baseFields/timezone/defaultTimezones.js';
20
20
  export { createClientBlocks, createClientField, createClientFields, } from '../fields/config/client.js';
21
21
  export { fieldAffectsData, fieldHasMaxDepth, fieldHasSubFields, fieldIsArrayType, fieldIsBlockType, fieldIsGroupType, fieldIsHiddenOrDisabled, fieldIsID, fieldIsLocalized, fieldIsPresentationalOnly, fieldIsSidebar, fieldIsVirtual, fieldShouldBeLocalized, fieldSupportsMany, groupHasName, optionIsObject, optionIsValue, optionsAreObjects, tabHasName, valueIsValueWithRelation, } from '../fields/config/types.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/shared.ts"],"sourcesContent":["export { EntityType } from '../admin/views/dashboard.js'\n\nexport {\n generateCookie,\n generateExpiredPayloadCookie,\n generatePayloadCookie,\n getCookieExpiration,\n parseCookies,\n} from '../auth/cookies.js'\n\nexport { extractAccessFromPermission } from '../auth/extractAccessFromPermission.js'\nexport { extractJWT } from '../auth/extractJWT.js'\nexport { getLoginOptions } from '../auth/getLoginOptions.js'\nexport { addSessionToUser, removeExpiredSessions } from '../auth/sessions.js'\n\nexport { getFromImportMap } from '../bin/generateImportMap/utilities/getFromImportMap.js'\nexport { parsePayloadComponent } from '../bin/generateImportMap/utilities/parsePayloadComponent.js'\nexport {\n type ClientCollectionConfig,\n createClientCollectionConfig,\n createClientCollectionConfigs,\n type ServerOnlyCollectionAdminProperties,\n type ServerOnlyCollectionProperties,\n type ServerOnlyUploadProperties,\n} from '../collections/config/client.js'\nexport { defaults as collectionDefaults } from '../collections/config/defaults.js'\n\nexport {\n type ClientConfig,\n createClientConfig,\n type CreateClientConfigArgs,\n createUnauthenticatedClientConfig,\n type ServerOnlyRootAdminProperties,\n type ServerOnlyRootProperties,\n type UnauthenticatedClientConfig,\n} from '../config/client.js'\nexport {\n BASE_36_DIGITS,\n generateKeyBetween,\n generateNKeysBetween,\n} from '../config/orderable/fractional-indexing.js'\nexport { isUserMenuSettingsGroup, serverProps } from '../config/types.js'\nexport { combineQueries } from '../database/combineQueries.js'\n\nexport { APIError, APIErrorName } from '../errors/APIError.js'\nexport { MissingEditorProp } from '../errors/MissingEditorProp.js'\n\nexport { UnauthorizedError } from '../errors/UnauthorizedError.js'\n\nexport { type Slugify } from '../fields/baseFields/slug/index.js'\n\nexport { defaultTimezones } from '../fields/baseFields/timezone/defaultTimezones.js'\n\nexport {\n createClientBlocks,\n createClientField,\n createClientFields,\n} from '../fields/config/client.js'\n\nexport {\n fieldAffectsData,\n fieldHasMaxDepth,\n fieldHasSubFields,\n fieldIsArrayType,\n fieldIsBlockType,\n fieldIsGroupType,\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsLocalized,\n fieldIsPresentationalOnly,\n fieldIsSidebar,\n fieldIsVirtual,\n fieldShouldBeLocalized,\n fieldSupportsMany,\n groupHasName,\n optionIsObject,\n optionIsValue,\n optionsAreObjects,\n tabHasName,\n valueIsValueWithRelation,\n} from '../fields/config/types.js'\nexport { getDefaultValue } from '../fields/getDefaultValue.js'\nexport { getFieldPaths } from '../fields/getFieldPaths.js'\nexport { isFieldDisabled } from '../fields/isFieldDisabled.js'\nexport type { DisabledArea, DisabledOptions } from '../fields/isFieldDisabled.js'\nexport { sortableFieldTypes } from '../fields/sortableFieldTypes.js'\nexport * from '../fields/validations.js'\n\nexport {\n type ClientGlobalConfig,\n createClientGlobalConfig,\n createClientGlobalConfigs,\n type ServerOnlyGlobalAdminProperties,\n type ServerOnlyGlobalProperties,\n} from '../globals/config/client.js'\n\nexport {\n DEFAULT_HIERARCHY_LIST_LIMIT,\n DEFAULT_HIERARCHY_TREE_LIMIT,\n getHierarchyFieldName,\n} from '../hierarchy/constants.js'\n\nexport type { ClientHierarchyConfig, FolderBreadcrumb } from '../hierarchy/types.js'\nexport { PREFERENCE_KEYS } from '../preferences/keys.js'\n\nexport { validOperators, validOperatorSet } from '../types/constants.js'\nexport { formatFilesize } from '../uploads/formatFilesize.js'\nexport { isImage } from '../uploads/isImage.js'\nexport { matchMimeType } from '../uploads/matchMimeType.js'\nexport { appendDateTimezoneSelectFields } from '../utilities/appendDateTimezoneSelectFields.js'\nexport { appendUploadSelectFields } from '../utilities/appendUploadSelectFields.js'\n\nexport { applyLocaleFiltering } from '../utilities/applyLocaleFiltering.js'\n\nexport { canAccessAdmin } from '../utilities/canAccessAdmin.js'\n\nexport { combineWhereConstraints } from '../utilities/combineWhereConstraints.js'\nexport {\n deepCopyObject,\n deepCopyObjectComplex,\n deepCopyObjectSimple,\n deepCopyObjectSimpleWithoutReactComponents,\n} from '../utilities/deepCopyObject.js'\n\nexport {\n deepMerge,\n deepMergeWithCombinedArrays,\n deepMergeWithReactComponents,\n deepMergeWithSourceArrays,\n} from '../utilities/deepMerge.js'\nexport { extractID } from '../utilities/extractID.js'\nexport { flattenAllFields } from '../utilities/flattenAllFields.js'\n\nexport { flattenTopLevelFields } from '../utilities/flattenTopLevelFields.js'\n\nexport { formatAdminURL } from '../utilities/formatAdminURL.js'\nexport { formatErrors } from '../utilities/formatErrors.js'\n\nexport { formatLabels, toWords } from '../utilities/formatLabels.js'\nexport { getBestFitFromSizes } from '../utilities/getBestFitFromSizes.js'\nexport { getBlockSelect } from '../utilities/getBlockSelect.js'\nexport { getDataByPath } from '../utilities/getDataByPath.js'\nexport { getFieldPermissions } from '../utilities/getFieldPermissions.js'\n\nexport { getObjectDotNotation } from '../utilities/getObjectDotNotation.js'\nexport { getSafeRedirect } from '../utilities/getSafeRedirect.js'\nexport { getSelectMode } from '../utilities/getSelectMode.js'\nexport { getSiblingData } from '../utilities/getSiblingData.js'\nexport { getUniqueListBy } from '../utilities/getUniqueListBy.js'\n\nexport {\n getAutosaveInterval,\n getVersionsMax,\n hasAutosaveEnabled,\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n hasScheduledPublishEnabled,\n} from '../utilities/getVersionsConfig.js'\n\nexport { isEntityHidden } from '../utilities/isEntityHidden.js'\n\nexport { isNextBuild } from '../utilities/isNextBuild.js'\n\nexport { isNumber } from '../utilities/isNumber.js'\n\nexport { isPlainObject } from '../utilities/isPlainObject.js'\n\nexport {\n isReactClientComponent,\n isReactComponentOrFunction,\n isReactServerComponentOrFunction,\n} from '../utilities/isReactComponent.js'\n\nexport { logError } from '../utilities/logError.js'\n\nexport {\n hoistQueryParamsToAnd,\n mergeListSearchAndWhere,\n} from '../utilities/mergeListSearchAndWhere.js'\n\nexport { parseDocumentID } from '../utilities/parseDocumentID.js'\n\nexport { reduceFieldsToValues } from '../utilities/reduceFieldsToValues.js'\n\nexport { sanitizeFilename } from '../utilities/sanitizeFilename.js'\n\nexport { sanitizeUrl } from '../utilities/sanitizeUrl.js'\n\nexport { sanitizeUserDataForEmail } from '../utilities/sanitizeUserDataForEmail.js'\n\nexport { setsAreEqual } from '../utilities/setsAreEqual.js'\n\nexport { slugify } from '../utilities/slugify.js'\n\nexport { stripUnselectedFields } from '../utilities/stripUnselectedFields.js'\n\nexport { toKebabCase } from '../utilities/toKebabCase.js'\n\nexport {\n transformColumnsToPreferences,\n transformColumnsToSearchParams,\n} from '../utilities/transformColumnPreferences.js'\n\nexport { transformWhereQuery } from '../utilities/transformWhereQuery.js'\n\nexport { traverseFields } from '../utilities/traverseFields.js'\nexport { unflatten } from '../utilities/unflatten.js'\nexport { validateMimeType } from '../utilities/validateMimeType.js'\nexport { validateWhereQuery } from '../utilities/validateWhereQuery.js'\nexport { wait } from '../utilities/wait.js'\nexport { wordBoundariesRegex } from '../utilities/wordBoundariesRegex.js'\nexport { versionDefaults } from '../versions/defaults.js'\n\nexport { deepMergeSimple } from '@payloadcms/translations/utilities'\n"],"names":["EntityType","generateCookie","generateExpiredPayloadCookie","generatePayloadCookie","getCookieExpiration","parseCookies","extractAccessFromPermission","extractJWT","getLoginOptions","addSessionToUser","removeExpiredSessions","getFromImportMap","parsePayloadComponent","createClientCollectionConfig","createClientCollectionConfigs","defaults","collectionDefaults","createClientConfig","createUnauthenticatedClientConfig","BASE_36_DIGITS","generateKeyBetween","generateNKeysBetween","isUserMenuSettingsGroup","serverProps","combineQueries","APIError","APIErrorName","MissingEditorProp","UnauthorizedError","defaultTimezones","createClientBlocks","createClientField","createClientFields","fieldAffectsData","fieldHasMaxDepth","fieldHasSubFields","fieldIsArrayType","fieldIsBlockType","fieldIsGroupType","fieldIsHiddenOrDisabled","fieldIsID","fieldIsLocalized","fieldIsPresentationalOnly","fieldIsSidebar","fieldIsVirtual","fieldShouldBeLocalized","fieldSupportsMany","groupHasName","optionIsObject","optionIsValue","optionsAreObjects","tabHasName","valueIsValueWithRelation","getDefaultValue","getFieldPaths","isFieldDisabled","sortableFieldTypes","createClientGlobalConfig","createClientGlobalConfigs","DEFAULT_HIERARCHY_LIST_LIMIT","DEFAULT_HIERARCHY_TREE_LIMIT","getHierarchyFieldName","PREFERENCE_KEYS","validOperators","validOperatorSet","formatFilesize","isImage","matchMimeType","appendDateTimezoneSelectFields","appendUploadSelectFields","applyLocaleFiltering","canAccessAdmin","combineWhereConstraints","deepCopyObject","deepCopyObjectComplex","deepCopyObjectSimple","deepCopyObjectSimpleWithoutReactComponents","deepMerge","deepMergeWithCombinedArrays","deepMergeWithReactComponents","deepMergeWithSourceArrays","extractID","flattenAllFields","flattenTopLevelFields","formatAdminURL","formatErrors","formatLabels","toWords","getBestFitFromSizes","getBlockSelect","getDataByPath","getFieldPermissions","getObjectDotNotation","getSafeRedirect","getSelectMode","getSiblingData","getUniqueListBy","getAutosaveInterval","getVersionsMax","hasAutosaveEnabled","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","hasScheduledPublishEnabled","isEntityHidden","isNextBuild","isNumber","isPlainObject","isReactClientComponent","isReactComponentOrFunction","isReactServerComponentOrFunction","logError","hoistQueryParamsToAnd","mergeListSearchAndWhere","parseDocumentID","reduceFieldsToValues","sanitizeFilename","sanitizeUrl","sanitizeUserDataForEmail","setsAreEqual","slugify","stripUnselectedFields","toKebabCase","transformColumnsToPreferences","transformColumnsToSearchParams","transformWhereQuery","traverseFields","unflatten","validateMimeType","validateWhereQuery","wait","wordBoundariesRegex","versionDefaults","deepMergeSimple"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/exports/shared.ts"],"sourcesContent":["export { EntityType } from '../admin/views/dashboard.js'\n\nexport {\n generateCookie,\n generateExpiredPayloadCookie,\n generatePayloadCookie,\n getCookieExpiration,\n parseCookies,\n} from '../auth/cookies.js'\n\nexport { extractAccessFromPermission } from '../auth/extractAccessFromPermission.js'\nexport { extractJWT } from '../auth/extractJWT.js'\nexport { getLoginOptions } from '../auth/getLoginOptions.js'\nexport { addSessionToUser, removeExpiredSessions } from '../auth/sessions.js'\n\nexport { getFromImportMap } from '../bin/generateImportMap/utilities/getFromImportMap.js'\nexport { parsePayloadComponent } from '../bin/generateImportMap/utilities/parsePayloadComponent.js'\nexport {\n type ClientCollectionConfig,\n createClientCollectionConfig,\n createClientCollectionConfigs,\n type ServerOnlyCollectionAdminProperties,\n type ServerOnlyCollectionProperties,\n type ServerOnlyUploadProperties,\n} from '../collections/config/client.js'\nexport { defaults as collectionDefaults } from '../collections/config/defaults.js'\n\nexport {\n type ClientConfig,\n createClientConfig,\n type CreateClientConfigArgs,\n createUnauthenticatedClientConfig,\n type ServerOnlyRootAdminProperties,\n type ServerOnlyRootProperties,\n type UnauthenticatedClientConfig,\n} from '../config/client.js'\nexport {\n BASE_36_DIGITS,\n generateKeyBetween,\n generateNKeysBetween,\n} from '../config/orderable/fractional-indexing.js'\nexport { isUserMenuSettingsGroup, serverProps } from '../config/types.js'\nexport { combineQueries } from '../database/combineQueries.js'\n\nexport { APIError, APIErrorName } from '../errors/APIError.js'\nexport { MissingEditorProp } from '../errors/MissingEditorProp.js'\n\nexport { UnauthorizedError } from '../errors/UnauthorizedError.js'\n\nexport { type Slugify } from '../fields/baseFields/slug/types.js'\n\nexport { defaultTimezones } from '../fields/baseFields/timezone/defaultTimezones.js'\n\nexport {\n createClientBlocks,\n createClientField,\n createClientFields,\n} from '../fields/config/client.js'\n\nexport {\n fieldAffectsData,\n fieldHasMaxDepth,\n fieldHasSubFields,\n fieldIsArrayType,\n fieldIsBlockType,\n fieldIsGroupType,\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsLocalized,\n fieldIsPresentationalOnly,\n fieldIsSidebar,\n fieldIsVirtual,\n fieldShouldBeLocalized,\n fieldSupportsMany,\n groupHasName,\n optionIsObject,\n optionIsValue,\n optionsAreObjects,\n tabHasName,\n valueIsValueWithRelation,\n} from '../fields/config/types.js'\nexport { getDefaultValue } from '../fields/getDefaultValue.js'\nexport { getFieldPaths } from '../fields/getFieldPaths.js'\nexport { isFieldDisabled } from '../fields/isFieldDisabled.js'\nexport type { DisabledArea, DisabledOptions } from '../fields/isFieldDisabled.js'\nexport { sortableFieldTypes } from '../fields/sortableFieldTypes.js'\nexport * from '../fields/validations.js'\n\nexport {\n type ClientGlobalConfig,\n createClientGlobalConfig,\n createClientGlobalConfigs,\n type ServerOnlyGlobalAdminProperties,\n type ServerOnlyGlobalProperties,\n} from '../globals/config/client.js'\n\nexport {\n DEFAULT_HIERARCHY_LIST_LIMIT,\n DEFAULT_HIERARCHY_TREE_LIMIT,\n getHierarchyFieldName,\n} from '../hierarchy/constants.js'\n\nexport type { ClientHierarchyConfig, FolderBreadcrumb } from '../hierarchy/types.js'\nexport { PREFERENCE_KEYS } from '../preferences/keys.js'\n\nexport { validOperators, validOperatorSet } from '../types/constants.js'\nexport { formatFilesize } from '../uploads/formatFilesize.js'\nexport { isImage } from '../uploads/isImage.js'\nexport { matchMimeType } from '../uploads/matchMimeType.js'\nexport { appendDateTimezoneSelectFields } from '../utilities/appendDateTimezoneSelectFields.js'\nexport { appendUploadSelectFields } from '../utilities/appendUploadSelectFields.js'\n\nexport { applyLocaleFiltering } from '../utilities/applyLocaleFiltering.js'\n\nexport { canAccessAdmin } from '../utilities/canAccessAdmin.js'\n\nexport { combineWhereConstraints } from '../utilities/combineWhereConstraints.js'\nexport {\n deepCopyObject,\n deepCopyObjectComplex,\n deepCopyObjectSimple,\n deepCopyObjectSimpleWithoutReactComponents,\n} from '../utilities/deepCopyObject.js'\n\nexport {\n deepMerge,\n deepMergeWithCombinedArrays,\n deepMergeWithReactComponents,\n deepMergeWithSourceArrays,\n} from '../utilities/deepMerge.js'\nexport { extractID } from '../utilities/extractID.js'\nexport { flattenAllFields } from '../utilities/flattenAllFields.js'\n\nexport { flattenTopLevelFields } from '../utilities/flattenTopLevelFields.js'\n\nexport { formatAdminURL } from '../utilities/formatAdminURL.js'\nexport { formatErrors } from '../utilities/formatErrors.js'\n\nexport { formatLabels, toWords } from '../utilities/formatLabels.js'\nexport { getBestFitFromSizes } from '../utilities/getBestFitFromSizes.js'\nexport { getBlockSelect } from '../utilities/getBlockSelect.js'\nexport { getDataByPath } from '../utilities/getDataByPath.js'\nexport { getFieldPermissions } from '../utilities/getFieldPermissions.js'\n\nexport { getObjectDotNotation } from '../utilities/getObjectDotNotation.js'\nexport { getSafeRedirect } from '../utilities/getSafeRedirect.js'\nexport { getSelectMode } from '../utilities/getSelectMode.js'\nexport { getSiblingData } from '../utilities/getSiblingData.js'\nexport { getUniqueListBy } from '../utilities/getUniqueListBy.js'\n\nexport {\n getAutosaveInterval,\n getVersionsMax,\n hasAutosaveEnabled,\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n hasScheduledPublishEnabled,\n} from '../utilities/getVersionsConfig.js'\n\nexport { isEntityHidden } from '../utilities/isEntityHidden.js'\n\nexport { isNextBuild } from '../utilities/isNextBuild.js'\n\nexport { isNumber } from '../utilities/isNumber.js'\n\nexport { isPlainObject } from '../utilities/isPlainObject.js'\n\nexport {\n isReactClientComponent,\n isReactComponentOrFunction,\n isReactServerComponentOrFunction,\n} from '../utilities/isReactComponent.js'\n\nexport { logError } from '../utilities/logError.js'\n\nexport {\n hoistQueryParamsToAnd,\n mergeListSearchAndWhere,\n} from '../utilities/mergeListSearchAndWhere.js'\n\nexport { parseDocumentID } from '../utilities/parseDocumentID.js'\n\nexport { reduceFieldsToValues } from '../utilities/reduceFieldsToValues.js'\n\nexport { sanitizeFilename } from '../utilities/sanitizeFilename.js'\n\nexport { sanitizeUrl } from '../utilities/sanitizeUrl.js'\n\nexport { sanitizeUserDataForEmail } from '../utilities/sanitizeUserDataForEmail.js'\n\nexport { setsAreEqual } from '../utilities/setsAreEqual.js'\n\nexport { slugify } from '../utilities/slugify.js'\n\nexport { stripUnselectedFields } from '../utilities/stripUnselectedFields.js'\n\nexport { toKebabCase } from '../utilities/toKebabCase.js'\n\nexport {\n transformColumnsToPreferences,\n transformColumnsToSearchParams,\n} from '../utilities/transformColumnPreferences.js'\n\nexport { transformWhereQuery } from '../utilities/transformWhereQuery.js'\n\nexport { traverseFields } from '../utilities/traverseFields.js'\nexport { unflatten } from '../utilities/unflatten.js'\nexport { validateMimeType } from '../utilities/validateMimeType.js'\nexport { validateWhereQuery } from '../utilities/validateWhereQuery.js'\nexport { wait } from '../utilities/wait.js'\nexport { wordBoundariesRegex } from '../utilities/wordBoundariesRegex.js'\nexport { versionDefaults } from '../versions/defaults.js'\n\nexport { deepMergeSimple } from '@payloadcms/translations/utilities'\n"],"names":["EntityType","generateCookie","generateExpiredPayloadCookie","generatePayloadCookie","getCookieExpiration","parseCookies","extractAccessFromPermission","extractJWT","getLoginOptions","addSessionToUser","removeExpiredSessions","getFromImportMap","parsePayloadComponent","createClientCollectionConfig","createClientCollectionConfigs","defaults","collectionDefaults","createClientConfig","createUnauthenticatedClientConfig","BASE_36_DIGITS","generateKeyBetween","generateNKeysBetween","isUserMenuSettingsGroup","serverProps","combineQueries","APIError","APIErrorName","MissingEditorProp","UnauthorizedError","defaultTimezones","createClientBlocks","createClientField","createClientFields","fieldAffectsData","fieldHasMaxDepth","fieldHasSubFields","fieldIsArrayType","fieldIsBlockType","fieldIsGroupType","fieldIsHiddenOrDisabled","fieldIsID","fieldIsLocalized","fieldIsPresentationalOnly","fieldIsSidebar","fieldIsVirtual","fieldShouldBeLocalized","fieldSupportsMany","groupHasName","optionIsObject","optionIsValue","optionsAreObjects","tabHasName","valueIsValueWithRelation","getDefaultValue","getFieldPaths","isFieldDisabled","sortableFieldTypes","createClientGlobalConfig","createClientGlobalConfigs","DEFAULT_HIERARCHY_LIST_LIMIT","DEFAULT_HIERARCHY_TREE_LIMIT","getHierarchyFieldName","PREFERENCE_KEYS","validOperators","validOperatorSet","formatFilesize","isImage","matchMimeType","appendDateTimezoneSelectFields","appendUploadSelectFields","applyLocaleFiltering","canAccessAdmin","combineWhereConstraints","deepCopyObject","deepCopyObjectComplex","deepCopyObjectSimple","deepCopyObjectSimpleWithoutReactComponents","deepMerge","deepMergeWithCombinedArrays","deepMergeWithReactComponents","deepMergeWithSourceArrays","extractID","flattenAllFields","flattenTopLevelFields","formatAdminURL","formatErrors","formatLabels","toWords","getBestFitFromSizes","getBlockSelect","getDataByPath","getFieldPermissions","getObjectDotNotation","getSafeRedirect","getSelectMode","getSiblingData","getUniqueListBy","getAutosaveInterval","getVersionsMax","hasAutosaveEnabled","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","hasScheduledPublishEnabled","isEntityHidden","isNextBuild","isNumber","isPlainObject","isReactClientComponent","isReactComponentOrFunction","isReactServerComponentOrFunction","logError","hoistQueryParamsToAnd","mergeListSearchAndWhere","parseDocumentID","reduceFieldsToValues","sanitizeFilename","sanitizeUrl","sanitizeUserDataForEmail","setsAreEqual","slugify","stripUnselectedFields","toKebabCase","transformColumnsToPreferences","transformColumnsToSearchParams","transformWhereQuery","traverseFields","unflatten","validateMimeType","validateWhereQuery","wait","wordBoundariesRegex","versionDefaults","deepMergeSimple"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"countVersions.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/countVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,cAAc,EAEf,MAAM,mBAAmB,CAAA;AAE1B;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,MAAM;IACxC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,MAAM,CA8BjB,CAAA"}
1
+ {"version":3,"file":"countVersions.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/countVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,cAAc,EACf,MAAM,mBAAmB,CAAA;AAE1B;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,MAAM;IACxC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,MAAM,CA2BjB,CAAA"}
@@ -5,21 +5,19 @@
5
5
  */ export const countVersions = async (args)=>{
6
6
  const { collectionSlug, globalSlug, parentID, req } = args;
7
7
  let countFn;
8
- const where = {
9
- parent: {
10
- equals: parentID
11
- }
12
- };
13
8
  if (collectionSlug) {
14
9
  countFn = ()=>req.payload.countVersions({
15
10
  collection: collectionSlug,
16
- where
11
+ where: {
12
+ parent: {
13
+ equals: parentID
14
+ }
15
+ }
17
16
  });
18
17
  }
19
18
  if (globalSlug) {
20
19
  countFn = ()=>req.payload.countGlobalVersions({
21
- global: globalSlug,
22
- where
20
+ global: globalSlug
23
21
  });
24
22
  }
25
23
  const res = countFn ? await countFn()?.then((res)=>res.totalDocs || 0) || 0 : 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/baseFields/slug/countVersions.ts"],"sourcesContent":["import type {\n CollectionSlug,\n DefaultDocumentIDType,\n GlobalSlug,\n PayloadRequest,\n Where,\n} from '../../../index.js'\n\n/**\n * This is a cross-entity way to count the number of versions for any given document.\n * It will work for both collections and globals.\n * @returns number of versions\n */\nexport const countVersions = async (args: {\n collectionSlug?: CollectionSlug\n globalSlug?: GlobalSlug\n parentID?: DefaultDocumentIDType\n req: PayloadRequest\n}): Promise<number> => {\n const { collectionSlug, globalSlug, parentID, req } = args\n\n let countFn\n\n const where: Where = {\n parent: {\n equals: parentID,\n },\n }\n\n if (collectionSlug) {\n countFn = () =>\n req.payload.countVersions({\n collection: collectionSlug,\n where,\n })\n }\n\n if (globalSlug) {\n countFn = () =>\n req.payload.countGlobalVersions({\n global: globalSlug,\n where,\n })\n }\n\n const res = countFn ? (await countFn()?.then((res) => res.totalDocs || 0)) || 0 : 0\n\n return res\n}\n"],"names":["countVersions","args","collectionSlug","globalSlug","parentID","req","countFn","where","parent","equals","payload","collection","countGlobalVersions","global","res","then","totalDocs"],"mappings":"AAQA;;;;CAIC,GACD,OAAO,MAAMA,gBAAgB,OAAOC;IAMlC,MAAM,EAAEC,cAAc,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,GAAG,EAAE,GAAGJ;IAEtD,IAAIK;IAEJ,MAAMC,QAAe;QACnBC,QAAQ;YACNC,QAAQL;QACV;IACF;IAEA,IAAIF,gBAAgB;QAClBI,UAAU,IACRD,IAAIK,OAAO,CAACV,aAAa,CAAC;gBACxBW,YAAYT;gBACZK;YACF;IACJ;IAEA,IAAIJ,YAAY;QACdG,UAAU,IACRD,IAAIK,OAAO,CAACE,mBAAmB,CAAC;gBAC9BC,QAAQV;gBACRI;YACF;IACJ;IAEA,MAAMO,MAAMR,UAAU,AAAC,MAAMA,WAAWS,KAAK,CAACD,MAAQA,IAAIE,SAAS,IAAI,MAAO,IAAI;IAElF,OAAOF;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/baseFields/slug/countVersions.ts"],"sourcesContent":["import type {\n CollectionSlug,\n DefaultDocumentIDType,\n GlobalSlug,\n PayloadRequest,\n} from '../../../index.js'\n\n/**\n * This is a cross-entity way to count the number of versions for any given document.\n * It will work for both collections and globals.\n * @returns number of versions\n */\nexport const countVersions = async (args: {\n collectionSlug?: CollectionSlug\n globalSlug?: GlobalSlug\n parentID?: DefaultDocumentIDType\n req: PayloadRequest\n}): Promise<number> => {\n const { collectionSlug, globalSlug, parentID, req } = args\n\n let countFn\n\n if (collectionSlug) {\n countFn = () =>\n req.payload.countVersions({\n collection: collectionSlug,\n where: {\n parent: {\n equals: parentID,\n },\n },\n })\n }\n\n if (globalSlug) {\n countFn = () =>\n req.payload.countGlobalVersions({\n global: globalSlug,\n })\n }\n\n const res = countFn ? (await countFn()?.then((res) => res.totalDocs || 0)) || 0 : 0\n\n return res\n}\n"],"names":["countVersions","args","collectionSlug","globalSlug","parentID","req","countFn","payload","collection","where","parent","equals","countGlobalVersions","global","res","then","totalDocs"],"mappings":"AAOA;;;;CAIC,GACD,OAAO,MAAMA,gBAAgB,OAAOC;IAMlC,MAAM,EAAEC,cAAc,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,GAAG,EAAE,GAAGJ;IAEtD,IAAIK;IAEJ,IAAIJ,gBAAgB;QAClBI,UAAU,IACRD,IAAIE,OAAO,CAACP,aAAa,CAAC;gBACxBQ,YAAYN;gBACZO,OAAO;oBACLC,QAAQ;wBACNC,QAAQP;oBACV;gBACF;YACF;IACJ;IAEA,IAAID,YAAY;QACdG,UAAU,IACRD,IAAIE,OAAO,CAACK,mBAAmB,CAAC;gBAC9BC,QAAQV;YACV;IACJ;IAEA,MAAMW,MAAMR,UAAU,AAAC,MAAMA,WAAWS,KAAK,CAACD,MAAQA,IAAIE,SAAS,IAAI,MAAO,IAAI;IAElF,OAAOF;AACT,EAAC"}
@@ -1,12 +1,19 @@
1
1
  import type { FieldHook } from '../../config/types.js';
2
- import type { SlugFieldArgs } from './index.js';
3
- type HookArgs = {
4
- slugFieldName: NonNullable<SlugFieldArgs['name']>;
5
- } & Pick<SlugFieldArgs, 'slugify'> & Required<Pick<SlugFieldArgs, 'useAsSlug'>>;
2
+ import type { Slugify } from './types.js';
3
+ type Args = {
4
+ name: string;
5
+ slugify?: Slugify;
6
+ useAsSlug: string;
7
+ };
6
8
  /**
7
- * This is a `BeforeChange` field hook used to auto-generate the `slug` field.
8
- * See `slugField` for more details.
9
+ * Field `beforeChange` hook for the native `slug` field. Returns the slug value.
10
+ *
11
+ * Auto-tracking is derived statelessly: the slug follows its source while it is
12
+ * empty or still equals `slugify(storedSource)`. Once it diverges (the admin
13
+ * overwrites it), it freezes — and stays frozen, because the stored value keeps
14
+ * differing from `slugify(source)`. Re-aligning (the UI generate button) resumes
15
+ * tracking.
9
16
  */
10
- export declare const generateSlug: ({ slugFieldName, slugify: customSlugify, useAsSlug }: HookArgs) => FieldHook;
17
+ export declare const generateSlug: ({ name, slugify: customSlugify, useAsSlug }: Args) => FieldHook;
11
18
  export {};
12
19
  //# sourceMappingURL=generateSlug.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateSlug.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/generateSlug.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAW,MAAM,YAAY,CAAA;AAMxD,KAAK,QAAQ,GAAG;IACd,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAClD,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAChC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;AAoB5C;;;GAGG;AACH,eAAO,MAAM,YAAY,GACtB,sDAAsD,QAAQ,KAAG,SA6EjE,CAAA"}
1
+ {"version":3,"file":"generateSlug.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/generateSlug.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAMzC,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GACtB,6CAA6C,IAAI,KAAG,SA+DpD,CAAA"}
@@ -1,84 +1,64 @@
1
1
  import { hasAutosaveEnabled } from '../../../utilities/getVersionsConfig.js';
2
2
  import { slugify as defaultSlugify } from '../../../utilities/slugify.js';
3
3
  import { countVersions } from './countVersions.js';
4
- const slugify = ({ customSlugify, data, req, valueToSlugify })=>{
5
- if (customSlugify) {
6
- return customSlugify({
7
- data,
8
- req,
9
- valueToSlugify
10
- });
11
- }
12
- return defaultSlugify(valueToSlugify);
13
- };
14
4
  /**
15
- * This is a `BeforeChange` field hook used to auto-generate the `slug` field.
16
- * See `slugField` for more details.
17
- */ export const generateSlug = ({ slugFieldName, slugify: customSlugify, useAsSlug })=>async ({ collection, data, global, operation, originalDoc, req, value: isChecked })=>{
5
+ * Field `beforeChange` hook for the native `slug` field. Returns the slug value.
6
+ *
7
+ * Auto-tracking is derived statelessly: the slug follows its source while it is
8
+ * empty or still equals `slugify(storedSource)`. Once it diverges (the admin
9
+ * overwrites it), it freezes — and stays frozen, because the stored value keeps
10
+ * differing from `slugify(source)`. Re-aligning (the UI generate button) resumes
11
+ * tracking.
12
+ */ export const generateSlug = ({ name, slugify: customSlugify, useAsSlug })=>async ({ collection, data, global, operation, originalDoc, req, value })=>{
13
+ const source = data?.[useAsSlug];
14
+ const slugify = (valueToSlugify)=>customSlugify ? customSlugify({
15
+ data: data ?? {},
16
+ req,
17
+ valueToSlugify
18
+ }) : defaultSlugify(valueToSlugify);
19
+ const entity = collection || global;
18
20
  if (operation === 'create') {
19
- if (data) {
20
- data[slugFieldName] = slugify({
21
- customSlugify,
22
- data,
23
- req,
24
- // Ensure user-defined slugs are not overwritten during create
25
- // Use a generic falsy check here to include empty strings
26
- valueToSlugify: data?.[slugFieldName] || data?.[useAsSlug]
27
- });
21
+ // Autosave drafts: do not auto-generate on the initial draft — the user is still entering content.
22
+ // Keep the explicit non-slugified value (if any); generation begins on a later autosave.
23
+ if (hasAutosaveEnabled(entity) && data?._status === 'draft') {
24
+ return value || null;
28
25
  }
29
- return Boolean(!data?.[slugFieldName]);
26
+ // Keep an explicitly provided slug; otherwise generate from the source.
27
+ return await slugify(value || source);
30
28
  }
31
- if (operation === 'update') {
32
- // Early return to avoid additional processing
33
- if (!isChecked) {
34
- return false;
35
- }
36
- if (!hasAutosaveEnabled(collection || global)) {
37
- // We can generate the slug at this point
38
- if (data) {
39
- data[slugFieldName] = slugify({
40
- customSlugify,
41
- data,
42
- req,
43
- valueToSlugify: data?.[useAsSlug]
44
- });
45
- }
46
- return Boolean(!data?.[slugFieldName]);
47
- } else {
48
- // If we're publishing, we can avoid querying as we can safely assume we've exceeded the version threshold (2)
49
- const isPublishing = data?._status === 'published';
50
- // Ensure the user can take over the generated slug themselves without it ever being overridden back
51
- const userOverride = data?.[slugFieldName] !== originalDoc?.[slugFieldName];
52
- if (!userOverride) {
53
- if (data) {
54
- // If the fallback is an empty string, we want the slug to return to `null`
55
- // This will ensure that live preview conditions continue to run as expected
56
- data[slugFieldName] = data?.[useAsSlug] ? slugify({
57
- customSlugify,
58
- data,
59
- req,
60
- valueToSlugify: data?.[useAsSlug]
61
- }) : null;
62
- }
63
- }
64
- if (isPublishing || userOverride) {
65
- return false;
66
- }
67
- // Important: ensure `countVersions` is not called unnecessarily often
68
- // That is why this is buried beneath all these conditions
69
- const versionCount = await countVersions({
70
- collectionSlug: collection?.slug,
71
- globalSlug: global?.slug,
72
- parentID: originalDoc?.id,
73
- req
74
- });
75
- if (versionCount <= 2) {
76
- return true;
77
- } else {
78
- return false;
79
- }
80
- }
29
+ const storedSlug = originalDoc?.[name];
30
+ const originalSource = originalDoc?.[useAsSlug];
31
+ // User explicitly edited the slug (or cleared the value): respect it.
32
+ if (value !== undefined && value !== storedSlug) {
33
+ return value;
34
+ }
35
+ // No explicit edit this save. If the stored slug doesn't match what its source
36
+ // would generate, it was customized on an earlier save — keep it frozen.
37
+ const storedSlugIsCustom = storedSlug && storedSlug !== await slugify(originalSource);
38
+ if (storedSlugIsCustom) {
39
+ return storedSlug;
40
+ }
41
+ if (!hasAutosaveEnabled(entity)) {
42
+ // Non-autosave: generate once while empty, then freeze.
43
+ return storedSlug || await slugify(source);
44
+ }
45
+ // Autosave / drafts
46
+ const priorVersions = await countVersions({
47
+ collectionSlug: collection?.slug,
48
+ globalSlug: global?.slug,
49
+ parentID: originalDoc?.id,
50
+ req
51
+ });
52
+ // Do not generate on the very first draft (no prior version yet).
53
+ if (priorVersions === 0) {
54
+ return storedSlug ?? null;
55
+ }
56
+ // Stabilize after publish to protect live URLs.
57
+ if (data?._status === 'published' || originalDoc?._status === 'published') {
58
+ return storedSlug;
81
59
  }
60
+ // Still auto-tracking an unpublished draft with content.
61
+ return source ? await slugify(source) : null;
82
62
  };
83
63
 
84
64
  //# sourceMappingURL=generateSlug.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/baseFields/slug/generateSlug.ts"],"sourcesContent":["import type { PayloadRequest } from '../../../types/index.js'\nimport type { FieldHook } from '../../config/types.js'\nimport type { SlugFieldArgs, Slugify } from './index.js'\n\nimport { hasAutosaveEnabled } from '../../../utilities/getVersionsConfig.js'\nimport { slugify as defaultSlugify } from '../../../utilities/slugify.js'\nimport { countVersions } from './countVersions.js'\n\ntype HookArgs = {\n slugFieldName: NonNullable<SlugFieldArgs['name']>\n} & Pick<SlugFieldArgs, 'slugify'> &\n Required<Pick<SlugFieldArgs, 'useAsSlug'>>\n\nconst slugify = ({\n customSlugify,\n data,\n req,\n valueToSlugify,\n}: {\n customSlugify?: Slugify\n data: Record<string, unknown>\n req: PayloadRequest\n valueToSlugify?: string\n}) => {\n if (customSlugify) {\n return customSlugify({ data, req, valueToSlugify })\n }\n\n return defaultSlugify(valueToSlugify)\n}\n\n/**\n * This is a `BeforeChange` field hook used to auto-generate the `slug` field.\n * See `slugField` for more details.\n */\nexport const generateSlug =\n ({ slugFieldName, slugify: customSlugify, useAsSlug }: HookArgs): FieldHook =>\n async ({ collection, data, global, operation, originalDoc, req, value: isChecked }) => {\n if (operation === 'create') {\n if (data) {\n data[slugFieldName] = slugify({\n customSlugify,\n data,\n req,\n // Ensure user-defined slugs are not overwritten during create\n // Use a generic falsy check here to include empty strings\n valueToSlugify: data?.[slugFieldName] || data?.[useAsSlug],\n })\n }\n\n return Boolean(!data?.[slugFieldName])\n }\n\n if (operation === 'update') {\n // Early return to avoid additional processing\n if (!isChecked) {\n return false\n }\n\n if (!hasAutosaveEnabled(collection || global!)) {\n // We can generate the slug at this point\n if (data) {\n data[slugFieldName] = slugify({\n customSlugify,\n data,\n req,\n valueToSlugify: data?.[useAsSlug],\n })\n }\n\n return Boolean(!data?.[slugFieldName])\n } else {\n // If we're publishing, we can avoid querying as we can safely assume we've exceeded the version threshold (2)\n const isPublishing = data?._status === 'published'\n\n // Ensure the user can take over the generated slug themselves without it ever being overridden back\n const userOverride = data?.[slugFieldName] !== originalDoc?.[slugFieldName]\n\n if (!userOverride) {\n if (data) {\n // If the fallback is an empty string, we want the slug to return to `null`\n // This will ensure that live preview conditions continue to run as expected\n data[slugFieldName] = data?.[useAsSlug]\n ? slugify({\n customSlugify,\n data,\n req,\n valueToSlugify: data?.[useAsSlug],\n })\n : null\n }\n }\n\n if (isPublishing || userOverride) {\n return false\n }\n\n // Important: ensure `countVersions` is not called unnecessarily often\n // That is why this is buried beneath all these conditions\n const versionCount = await countVersions({\n collectionSlug: collection?.slug,\n globalSlug: global?.slug,\n parentID: originalDoc?.id,\n req,\n })\n\n if (versionCount <= 2) {\n return true\n } else {\n return false\n }\n }\n }\n }\n"],"names":["hasAutosaveEnabled","slugify","defaultSlugify","countVersions","customSlugify","data","req","valueToSlugify","generateSlug","slugFieldName","useAsSlug","collection","global","operation","originalDoc","value","isChecked","Boolean","isPublishing","_status","userOverride","versionCount","collectionSlug","slug","globalSlug","parentID","id"],"mappings":"AAIA,SAASA,kBAAkB,QAAQ,0CAAyC;AAC5E,SAASC,WAAWC,cAAc,QAAQ,gCAA+B;AACzE,SAASC,aAAa,QAAQ,qBAAoB;AAOlD,MAAMF,UAAU,CAAC,EACfG,aAAa,EACbC,IAAI,EACJC,GAAG,EACHC,cAAc,EAMf;IACC,IAAIH,eAAe;QACjB,OAAOA,cAAc;YAAEC;YAAMC;YAAKC;QAAe;IACnD;IAEA,OAAOL,eAAeK;AACxB;AAEA;;;CAGC,GACD,OAAO,MAAMC,eACX,CAAC,EAAEC,aAAa,EAAER,SAASG,aAAa,EAAEM,SAAS,EAAY,GAC/D,OAAO,EAAEC,UAAU,EAAEN,IAAI,EAAEO,MAAM,EAAEC,SAAS,EAAEC,WAAW,EAAER,GAAG,EAAES,OAAOC,SAAS,EAAE;QAChF,IAAIH,cAAc,UAAU;YAC1B,IAAIR,MAAM;gBACRA,IAAI,CAACI,cAAc,GAAGR,QAAQ;oBAC5BG;oBACAC;oBACAC;oBACA,8DAA8D;oBAC9D,0DAA0D;oBAC1DC,gBAAgBF,MAAM,CAACI,cAAc,IAAIJ,MAAM,CAACK,UAAU;gBAC5D;YACF;YAEA,OAAOO,QAAQ,CAACZ,MAAM,CAACI,cAAc;QACvC;QAEA,IAAII,cAAc,UAAU;YAC1B,8CAA8C;YAC9C,IAAI,CAACG,WAAW;gBACd,OAAO;YACT;YAEA,IAAI,CAAChB,mBAAmBW,cAAcC,SAAU;gBAC9C,yCAAyC;gBACzC,IAAIP,MAAM;oBACRA,IAAI,CAACI,cAAc,GAAGR,QAAQ;wBAC5BG;wBACAC;wBACAC;wBACAC,gBAAgBF,MAAM,CAACK,UAAU;oBACnC;gBACF;gBAEA,OAAOO,QAAQ,CAACZ,MAAM,CAACI,cAAc;YACvC,OAAO;gBACL,8GAA8G;gBAC9G,MAAMS,eAAeb,MAAMc,YAAY;gBAEvC,oGAAoG;gBACpG,MAAMC,eAAef,MAAM,CAACI,cAAc,KAAKK,aAAa,CAACL,cAAc;gBAE3E,IAAI,CAACW,cAAc;oBACjB,IAAIf,MAAM;wBACR,2EAA2E;wBAC3E,4EAA4E;wBAC5EA,IAAI,CAACI,cAAc,GAAGJ,MAAM,CAACK,UAAU,GACnCT,QAAQ;4BACNG;4BACAC;4BACAC;4BACAC,gBAAgBF,MAAM,CAACK,UAAU;wBACnC,KACA;oBACN;gBACF;gBAEA,IAAIQ,gBAAgBE,cAAc;oBAChC,OAAO;gBACT;gBAEA,sEAAsE;gBACtE,0DAA0D;gBAC1D,MAAMC,eAAe,MAAMlB,cAAc;oBACvCmB,gBAAgBX,YAAYY;oBAC5BC,YAAYZ,QAAQW;oBACpBE,UAAUX,aAAaY;oBACvBpB;gBACF;gBAEA,IAAIe,gBAAgB,GAAG;oBACrB,OAAO;gBACT,OAAO;oBACL,OAAO;gBACT;YACF;QACF;IACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/baseFields/slug/generateSlug.ts"],"sourcesContent":["import type { TypeWithID } from '../../../collections/config/types.js'\nimport type { FieldHook } from '../../config/types.js'\nimport type { Slugify } from './types.js'\n\nimport { hasAutosaveEnabled } from '../../../utilities/getVersionsConfig.js'\nimport { slugify as defaultSlugify } from '../../../utilities/slugify.js'\nimport { countVersions } from './countVersions.js'\n\ntype Args = {\n name: string\n slugify?: Slugify\n useAsSlug: string\n}\n\n/**\n * Field `beforeChange` hook for the native `slug` field. Returns the slug value.\n *\n * Auto-tracking is derived statelessly: the slug follows its source while it is\n * empty or still equals `slugify(storedSource)`. Once it diverges (the admin\n * overwrites it), it freezes and stays frozen, because the stored value keeps\n * differing from `slugify(source)`. Re-aligning (the UI generate button) resumes\n * tracking.\n */\nexport const generateSlug =\n ({ name, slugify: customSlugify, useAsSlug }: Args): FieldHook =>\n async ({ collection, data, global, operation, originalDoc, req, value }) => {\n const source = data?.[useAsSlug]\n\n const slugify = (valueToSlugify: unknown) =>\n customSlugify\n ? customSlugify({ data: (data ?? {}) as TypeWithID, req, valueToSlugify })\n : defaultSlugify(valueToSlugify as string)\n\n const entity = collection || global!\n\n if (operation === 'create') {\n // Autosave drafts: do not auto-generate on the initial draft the user is still entering content.\n // Keep the explicit non-slugified value (if any); generation begins on a later autosave.\n if (hasAutosaveEnabled(entity) && data?._status === 'draft') {\n return value || null\n }\n\n // Keep an explicitly provided slug; otherwise generate from the source.\n return await slugify(value || source)\n }\n\n const storedSlug = originalDoc?.[name]\n const originalSource = originalDoc?.[useAsSlug]\n\n // User explicitly edited the slug (or cleared the value): respect it.\n if (value !== undefined && value !== storedSlug) {\n return value\n }\n\n // No explicit edit this save. If the stored slug doesn't match what its source\n // would generate, it was customized on an earlier save keep it frozen.\n const storedSlugIsCustom = storedSlug && storedSlug !== (await slugify(originalSource))\n\n if (storedSlugIsCustom) {\n return storedSlug\n }\n\n if (!hasAutosaveEnabled(entity)) {\n // Non-autosave: generate once while empty, then freeze.\n return storedSlug || (await slugify(source))\n }\n\n // Autosave / drafts\n const priorVersions = await countVersions({\n collectionSlug: collection?.slug,\n globalSlug: global?.slug,\n parentID: originalDoc?.id,\n req,\n })\n\n // Do not generate on the very first draft (no prior version yet).\n if (priorVersions === 0) {\n return storedSlug ?? null\n }\n\n // Stabilize after publish to protect live URLs.\n if (data?._status === 'published' || originalDoc?._status === 'published') {\n return storedSlug\n }\n\n // Still auto-tracking an unpublished draft with content.\n return source ? await slugify(source) : null\n }\n"],"names":["hasAutosaveEnabled","slugify","defaultSlugify","countVersions","generateSlug","name","customSlugify","useAsSlug","collection","data","global","operation","originalDoc","req","value","source","valueToSlugify","entity","_status","storedSlug","originalSource","undefined","storedSlugIsCustom","priorVersions","collectionSlug","slug","globalSlug","parentID","id"],"mappings":"AAIA,SAASA,kBAAkB,QAAQ,0CAAyC;AAC5E,SAASC,WAAWC,cAAc,QAAQ,gCAA+B;AACzE,SAASC,aAAa,QAAQ,qBAAoB;AAQlD;;;;;;;;CAQC,GACD,OAAO,MAAMC,eACX,CAAC,EAAEC,IAAI,EAAEJ,SAASK,aAAa,EAAEC,SAAS,EAAQ,GAClD,OAAO,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,SAAS,EAAEC,WAAW,EAAEC,GAAG,EAAEC,KAAK,EAAE;QACrE,MAAMC,SAASN,MAAM,CAACF,UAAU;QAEhC,MAAMN,UAAU,CAACe,iBACfV,gBACIA,cAAc;gBAAEG,MAAOA,QAAQ,CAAC;gBAAkBI;gBAAKG;YAAe,KACtEd,eAAec;QAErB,MAAMC,SAAST,cAAcE;QAE7B,IAAIC,cAAc,UAAU;YAC1B,mGAAmG;YACnG,yFAAyF;YACzF,IAAIX,mBAAmBiB,WAAWR,MAAMS,YAAY,SAAS;gBAC3D,OAAOJ,SAAS;YAClB;YAEA,wEAAwE;YACxE,OAAO,MAAMb,QAAQa,SAASC;QAChC;QAEA,MAAMI,aAAaP,aAAa,CAACP,KAAK;QACtC,MAAMe,iBAAiBR,aAAa,CAACL,UAAU;QAE/C,sEAAsE;QACtE,IAAIO,UAAUO,aAAaP,UAAUK,YAAY;YAC/C,OAAOL;QACT;QAEA,+EAA+E;QAC/E,yEAAyE;QACzE,MAAMQ,qBAAqBH,cAAcA,eAAgB,MAAMlB,QAAQmB;QAEvE,IAAIE,oBAAoB;YACtB,OAAOH;QACT;QAEA,IAAI,CAACnB,mBAAmBiB,SAAS;YAC/B,wDAAwD;YACxD,OAAOE,cAAe,MAAMlB,QAAQc;QACtC;QAEA,oBAAoB;QACpB,MAAMQ,gBAAgB,MAAMpB,cAAc;YACxCqB,gBAAgBhB,YAAYiB;YAC5BC,YAAYhB,QAAQe;YACpBE,UAAUf,aAAagB;YACvBf;QACF;QAEA,kEAAkE;QAClE,IAAIU,kBAAkB,GAAG;YACvB,OAAOJ,cAAc;QACvB;QAEA,gDAAgD;QAChD,IAAIV,MAAMS,YAAY,eAAeN,aAAaM,YAAY,aAAa;YACzE,OAAOC;QACT;QAEA,yDAAyD;QACzD,OAAOJ,SAAS,MAAMd,QAAQc,UAAU;IAC1C,EAAC"}
@@ -0,0 +1,14 @@
1
+ import type { TextFieldClientProps } from '../../../admin/types.js';
2
+ import type { TypeWithID } from '../../../collections/config/types.js';
3
+ import type { PayloadRequest } from '../../../types/index.js';
4
+ export type Slugify<T extends TypeWithID = any> = (args: {
5
+ data: T;
6
+ req: PayloadRequest;
7
+ valueToSlugify?: any;
8
+ }) => Promise<string | undefined> | string | undefined;
9
+ /**
10
+ * Props the `SlugField` client component receives. The slug-specific `useAsSlug`
11
+ * arrives on the client field config (it is not a server-only property).
12
+ */
13
+ export type SlugFieldClientProps = TextFieldClientProps;
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/fields/baseFields/slug/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;IACvD,IAAI,EAAE,CAAC,CAAA;IACP,GAAG,EAAE,cAAc,CAAA;IACnB,cAAc,CAAC,EAAE,GAAG,CAAA;CACrB,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;AAEtD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Props the `SlugField` client component receives. The slug-specific `useAsSlug`
3
+ * arrives on the client field config (it is not a server-only property).
4
+ */ export { };
5
+
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/fields/baseFields/slug/types.ts"],"sourcesContent":["import type { TextFieldClientProps } from '../../../admin/types.js'\nimport type { TypeWithID } from '../../../collections/config/types.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nexport type Slugify<T extends TypeWithID = any> = (args: {\n data: T\n req: PayloadRequest\n valueToSlugify?: any\n}) => Promise<string | undefined> | string | undefined\n\n/**\n * Props the `SlugField` client component receives. The slug-specific `useAsSlug`\n * arrives on the client field config (it is not a server-only property).\n */\nexport type SlugFieldClientProps = TextFieldClientProps\n"],"names":[],"mappings":"AAUA;;;CAGC,GACD,WAAuD"}
@@ -3,7 +3,7 @@ import type { ImportMap } from '../../bin/generateImportMap/index.js';
3
3
  import type { Block, ClientBlock, ClientField, Field, FieldBase } from '../../fields/config/types.js';
4
4
  import type { Payload } from '../../types/index.js';
5
5
  export { ClientField };
6
- export type ServerOnlyFieldProperties = 'dbName' | 'editor' | 'enumName' | 'filterOptions' | 'graphQL' | 'jsonSchema' | 'label' | 'validate' | keyof Pick<FieldBase, 'access' | 'custom' | 'defaultValue' | 'hooks'>;
6
+ export type ServerOnlyFieldProperties = 'dbName' | 'editor' | 'enumName' | 'filterOptions' | 'graphQL' | 'jsonSchema' | 'label' | 'slugify' | 'validate' | keyof Pick<FieldBase, 'access' | 'custom' | 'defaultValue' | 'hooks'>;
7
7
  export type ServerOnlyFieldAdminProperties = keyof Pick<FieldBase['admin'], 'components' | 'condition'>;
8
8
  export declare const createClientBlocks: ({ blocks, defaultIDType, i18n, importMap, }: {
9
9
  blocks: (Block | string)[];
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/fields/config/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAyB,UAAU,EAAa,MAAM,0BAA0B,CAAA;AAE5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAErE,OAAO,KAAK,EAGV,KAAK,EAGL,WAAW,EACX,WAAW,EAEX,KAAK,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAUnD,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,eAAe,GACf,SAAS,GACT,YAAY,GACZ,OAAO,GACP,UAAU,GACV,MAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,CAAA;AAEzE,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,SAAS,CAAC,OAAO,CAAC,EAElB,YAAY,GAAG,WAAW,CAC3B,CAAA;AA+BD,eAAO,MAAM,kBAAkB,GAAI,6CAKhC;IACD,MAAM,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,CAAC,WAAW,GAAG,MAAM,CAAC,EAiFzB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,2DAK/B;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAmSH,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,8DAMhC;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAAW,EAiCd,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/fields/config/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAyB,UAAU,EAAa,MAAM,0BAA0B,CAAA;AAE5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAErE,OAAO,KAAK,EAGV,KAAK,EAGL,WAAW,EACX,WAAW,EAEX,KAAK,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAUnD,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,eAAe,GACf,SAAS,GACT,YAAY,GACZ,OAAO,GACP,SAAS,GACT,UAAU,GACV,MAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,CAAA;AAEzE,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,SAAS,CAAC,OAAO,CAAC,EAElB,YAAY,GAAG,WAAW,CAC3B,CAAA;AAgCD,eAAO,MAAM,kBAAkB,GAAI,6CAKhC;IACD,MAAM,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,CAAC,WAAW,GAAG,MAAM,CAAC,EAiFzB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,2DAK/B;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAmSH,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,8DAMhC;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAAW,EAiCd,CAAA"}
@@ -15,7 +15,8 @@ const serverOnlyFieldProperties = [
15
15
  'jsonSchema',
16
16
  'dbName',
17
17
  'enumName',
18
- 'graphQL'
18
+ 'graphQL',
19
+ 'slugify'
19
20
  ];
20
21
  const serverOnlyFieldAdminProperties = [
21
22
  'condition',