payload 3.73.0-internal.e61e2ce → 3.73.0-internal.ff401d9
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/dist/collections/config/types.d.ts +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/config/orderable/fractional-indexing.d.ts +24 -4
- package/dist/config/orderable/fractional-indexing.d.ts.map +1 -1
- package/dist/config/orderable/fractional-indexing.js +80 -13
- package/dist/config/orderable/fractional-indexing.js.map +1 -1
- package/dist/config/types.d.ts +51 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/migrations/getPredefinedMigration.d.ts.map +1 -1
- package/dist/database/migrations/getPredefinedMigration.js +2 -4
- package/dist/database/migrations/getPredefinedMigration.js.map +1 -1
- package/dist/database/types.d.ts +0 -9
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/exports/shared.d.ts +1 -0
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +1 -0
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/config/sanitize.d.ts +10 -1
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +21 -4
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/types.d.ts +1 -1
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js +4 -2
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +21 -0
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/config/types.d.ts +0 -1
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/globals/config/types.js.map +1 -1
- package/dist/index.bundled.d.ts +77 -25
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/query-presets/types.d.ts +12 -0
- package/dist/query-presets/types.d.ts.map +1 -1
- package/dist/query-presets/types.js.map +1 -1
- package/package.json +3 -3
|
@@ -518,7 +518,7 @@ export type CollectionConfig<TSlug extends CollectionSlug = any> = {
|
|
|
518
518
|
* If true, enables custom ordering for the collection, and documents in the listView can be reordered via drag and drop.
|
|
519
519
|
* New documents are inserted at the end of the list according to this parameter.
|
|
520
520
|
*
|
|
521
|
-
* Under the hood, a field with {@link https://
|
|
521
|
+
* Under the hood, a field with {@link https://payloadcms.com/docs/configuration/collections#fractional-indexing|fractional indexing} is used to optimize inserts and reorderings.
|
|
522
522
|
*
|
|
523
523
|
* @default false
|
|
524
524
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/config/types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { GraphQLInputObjectType, GraphQLNonNull, GraphQLObjectType } from 'graphql'\nimport type { DeepRequired, IsAny, MarkOptional } from 'ts-essentials'\n\nimport type { CustomStatus, CustomUpload, ViewTypes } from '../../admin/types.js'\nimport type { Arguments as MeArguments } from '../../auth/operations/me.js'\nimport type {\n Arguments as RefreshArguments,\n Result as RefreshResult,\n} from '../../auth/operations/refresh.js'\nimport type { Auth, ClientUser, IncomingAuthType } from '../../auth/types.js'\nimport type {\n Access,\n AfterErrorHookArgs,\n AfterErrorResult,\n CustomComponent,\n EditConfig,\n Endpoint,\n EntityDescription,\n EntityDescriptionComponent,\n GeneratePreviewURL,\n LabelFunction,\n LivePreviewConfig,\n MetaConfig,\n PayloadComponent,\n StaticLabel,\n} from '../../config/types.js'\nimport type { DBIdentifierName } from '../../database/types.js'\nimport type {\n Field,\n FlattenedField,\n JoinField,\n RelationshipField,\n UploadField,\n} from '../../fields/config/types.js'\nimport type { CollectionFoldersConfiguration } from '../../folders/types.js'\nimport type {\n CollectionAdminCustom,\n CollectionCustom,\n CollectionSlug,\n JsonObject,\n RequestContext,\n TypedAuthOperations,\n TypedCollection,\n TypedCollectionSelect,\n TypedLocale,\n} from '../../index.js'\nimport type {\n PayloadRequest,\n SelectIncludeType,\n SelectType,\n Sort,\n TransformCollectionWithSelect,\n Where,\n} from '../../types/index.js'\nimport type { SanitizedUploadConfig, UploadConfig } from '../../uploads/types.js'\nimport type {\n IncomingCollectionVersions,\n SanitizedCollectionVersions,\n} from '../../versions/types.js'\nimport type {\n AfterOperationArg,\n BeforeOperationArg,\n OperationMap,\n} from '../operations/utilities/types.js'\n\nexport type DataFromCollectionSlug<TSlug extends CollectionSlug> = TypedCollection[TSlug]\n\nexport type SelectFromCollectionSlug<TSlug extends CollectionSlug> = TypedCollectionSelect[TSlug]\n\nexport type AuthOperationsFromCollectionSlug<TSlug extends CollectionSlug> =\n TypedAuthOperations[TSlug]\n\nexport type RequiredDataFromCollection<TData extends JsonObject> = MarkOptional<\n TData,\n 'createdAt' | 'deletedAt' | 'id' | 'updatedAt'\n>\n\nexport type RequiredDataFromCollectionSlug<TSlug extends CollectionSlug> =\n RequiredDataFromCollection<DataFromCollectionSlug<TSlug>>\n\n/**\n * Helper type for draft data INPUT (e.g., create operations) - makes all fields optional except system fields\n * When creating a draft, required fields don't need to be provided as validation is skipped\n * The id field is optional since it's auto-generated\n */\nexport type DraftDataFromCollection<TData extends JsonObject> = Partial<\n Omit<TData, 'createdAt' | 'deletedAt' | 'id' | 'sizes' | 'updatedAt'>\n> &\n Partial<Pick<TData, 'createdAt' | 'deletedAt' | 'id' | 'sizes' | 'updatedAt'>>\n\nexport type DraftDataFromCollectionSlug<TSlug extends CollectionSlug> = DraftDataFromCollection<\n DataFromCollectionSlug<TSlug>\n>\n\n/**\n * Helper type for draft data OUTPUT (e.g., query results) - makes user fields optional but keeps id required\n * When querying drafts, required fields may be null/undefined as validation is skipped, but system fields like id are always present\n */\nexport type QueryDraftDataFromCollection<TData extends JsonObject> = Partial<\n Omit<TData, 'createdAt' | 'deletedAt' | 'id' | 'sizes' | 'updatedAt'>\n> &\n Partial<Pick<TData, 'createdAt' | 'deletedAt' | 'sizes' | 'updatedAt'>> &\n Pick<TData, 'id'>\n\nexport type QueryDraftDataFromCollectionSlug<TSlug extends CollectionSlug> =\n QueryDraftDataFromCollection<DataFromCollectionSlug<TSlug>>\n\nexport type HookOperationType =\n | 'autosave'\n | 'count'\n | 'countVersions'\n | 'create'\n | 'delete'\n | 'forgotPassword'\n | 'login'\n | 'read'\n | 'readDistinct'\n | 'refresh'\n | 'resetPassword'\n | 'restoreVersion'\n | 'update'\n\ntype CreateOrUpdateOperation = Extract<HookOperationType, 'create' | 'update'>\n\nexport type BeforeOperationHook<TOperationGeneric extends CollectionSlug = string> = (\n arg: BeforeOperationArg<TOperationGeneric>,\n) =>\n | Parameters<OperationMap<TOperationGeneric>[keyof OperationMap<TOperationGeneric>]>[0]\n | Promise<Parameters<OperationMap<TOperationGeneric>[keyof OperationMap<TOperationGeneric>]>[0]>\n | Promise<void>\n | void\n\nexport type BeforeValidateHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n data?: Partial<T>\n /**\n * Hook operation being performed\n */\n operation: CreateOrUpdateOperation\n /**\n * Original document before change\n *\n * `undefined` on 'create' operation\n */\n originalDoc?: T\n req: PayloadRequest\n}) => any\n\nexport type BeforeChangeHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n data: Partial<T>\n /**\n * Hook operation being performed\n */\n operation: CreateOrUpdateOperation\n /**\n * Original document before change\n *\n * `undefined` on 'create' operation\n */\n originalDoc?: T\n req: PayloadRequest\n}) => any\n\nexport type AfterChangeHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n data: Partial<T>\n doc: T\n /**\n * Hook operation being performed\n */\n operation: CreateOrUpdateOperation\n previousDoc: T\n req: PayloadRequest\n}) => any\n\nexport type BeforeReadHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n doc: T\n query: { [key: string]: any }\n req: PayloadRequest\n}) => any\n\nexport type AfterReadHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n doc: T\n findMany?: boolean\n query?: { [key: string]: any }\n req: PayloadRequest\n}) => any\n\nexport type BeforeDeleteHook = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n id: number | string\n req: PayloadRequest\n}) => any\n\nexport type AfterDeleteHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n doc: T\n id: number | string\n req: PayloadRequest\n}) => any\n\nexport type AfterOperationHook<TOperationGeneric extends CollectionSlug = string> = (\n arg: AfterOperationArg<TOperationGeneric>,\n) =>\n | Awaited<ReturnType<OperationMap<TOperationGeneric>[keyof OperationMap<TOperationGeneric>]>>\n | Promise<\n Awaited<ReturnType<OperationMap<TOperationGeneric>[keyof OperationMap<TOperationGeneric>]>>\n >\n\nexport type BeforeLoginHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n req: PayloadRequest\n user: T\n}) => any\n\nexport type AfterLoginHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n req: PayloadRequest\n token: string\n user: T\n}) => any\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type AfterLogoutHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n req: PayloadRequest\n}) => any\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type AfterMeHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n req: PayloadRequest\n response: unknown\n}) => any\n\nexport type RefreshHook<T extends TypeWithID = any> = (args: {\n args: RefreshArguments\n user: T\n}) => Promise<RefreshResult | void> | (RefreshResult | void)\n\nexport type MeHook<T extends TypeWithID = any> = (args: {\n args: MeArguments\n user: T\n}) => ({ exp: number; user: T } | void) | Promise<{ exp: number; user: T } | void>\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type AfterRefreshHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n exp: number\n req: PayloadRequest\n token: string\n}) => any\n\nexport type AfterErrorHook = (\n args: { collection: SanitizedCollectionConfig } & AfterErrorHookArgs,\n) => AfterErrorResult | Promise<AfterErrorResult>\n\nexport type AfterForgotPasswordHook = (args: {\n args?: any\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n}) => any\n\nexport type EnableFoldersOptions = {\n // Displays the folder collection and parentFolder field in the document view\n debug?: boolean\n}\n\nexport type BaseFilter = (args: {\n limit: number\n locale?: TypedLocale\n page: number\n req: PayloadRequest\n sort: string\n}) => null | Promise<null | Where> | Where\n\n/**\n * @deprecated Use `BaseFilter` instead.\n */\nexport type BaseListFilter = BaseFilter\n\nexport type CollectionAdminOptions = {\n /**\n * Defines a default base filter which will be applied in the following parts of the admin panel:\n * - List View\n * - Relationship fields for internal links within the Lexical editor\n *\n * This is especially useful for plugins like multi-tenant. For example,\n * a user may have access to multiple tenants, but should only see content\n * related to the currently active or selected tenant in those places.\n */\n baseFilter?: BaseFilter\n /**\n * @deprecated Use `baseFilter` instead. If both are defined,\n * `baseFilter` will take precedence. This property remains only\n * for backward compatibility and may be removed in a future version.\n *\n * Originally, `baseListFilter` was intended to filter only the List View\n * in the admin panel. However, base filtering is often required in other areas\n * such as internal link relationships in the Lexical editor.\n */\n baseListFilter?: BaseListFilter\n /**\n * Custom admin components\n */\n components?: {\n afterList?: CustomComponent[]\n afterListTable?: CustomComponent[]\n beforeList?: CustomComponent[]\n beforeListTable?: CustomComponent[]\n Description?: EntityDescriptionComponent\n /**\n * Components within the edit view\n */\n edit?: {\n /**\n * Inject custom components before the document controls\n */\n beforeDocumentControls?: CustomComponent[]\n /**\n * Inject custom components within the 3-dot menu dropdown\n */\n editMenuItems?: CustomComponent[]\n /**\n * Replaces the \"Preview\" button\n */\n PreviewButton?: CustomComponent\n /**\n * Replaces the \"Publish\" button\n * + drafts must be enabled\n */\n PublishButton?: CustomComponent\n /**\n * Replaces the \"Save\" button\n * + drafts must be disabled\n */\n SaveButton?: CustomComponent\n /**\n * Replaces the \"Save Draft\" button\n * + drafts must be enabled\n * + autosave must be disabled\n */\n SaveDraftButton?: CustomComponent\n /**\n * Replaces the \"Status\" section\n */\n Status?: CustomStatus\n /**\n * Replaces the \"Upload\" section\n * + upload must be enabled\n */\n Upload?: CustomUpload\n }\n listMenuItems?: CustomComponent[]\n views?: {\n /**\n * Replace, modify, or add new \"document\" views.\n * @link https://payloadcms.com/docs/custom-components/document-views\n */\n edit?: EditConfig\n /**\n * Replace or modify the \"list\" view.\n * @link https://payloadcms.com/docs/custom-components/list-view\n */\n list?: {\n actions?: CustomComponent[]\n Component?: PayloadComponent\n }\n }\n }\n /** Extension point to add your custom data. Available in server and client. */\n custom?: CollectionAdminCustom\n /**\n * Default columns to show in list view\n */\n defaultColumns?: string[]\n /**\n * Custom description for collection. This will also be used as JSDoc for the generated types\n */\n description?: EntityDescription\n /**\n * Disable the Copy To Locale button in the edit document view\n * @default false\n */\n disableCopyToLocale?: boolean\n /**\n * Performance opt-in. If true, will use the [Select API](https://payloadcms.com/docs/queries/select) when\n * loading the list view to query only the active columns, as opposed to the entire documents.\n * If your cells require specific fields that may be unselected, such as within hooks, etc.,\n * use `forceSelect` in conjunction with this property.\n *\n * @experimental This is an experimental feature and may change in the future. Use at your own risk.\n */\n enableListViewSelectAPI?: boolean\n enableRichTextLink?: boolean\n enableRichTextRelationship?: boolean\n /**\n * Function to format the URL for document links in the list view.\n * Return null to disable linking for that document.\n * Return a string to customize the link destination.\n * If not provided, uses the default admin edit URL.\n */\n formatDocURL?: (args: {\n collectionSlug: string\n /**\n * The default URL that would normally be used for this document link.\n * You can return this as-is, modify it, or completely replace it.\n */\n defaultURL: string\n doc: Record<string, unknown>\n req: PayloadRequest\n /**\n * The current view context where the link is being generated.\n * Most relevant values for document linking are 'list' and 'trash'.\n */\n viewType?: ViewTypes\n }) => null | string\n /**\n * Specify a navigational group for collections in the admin sidebar.\n * - Provide a string to place the entity in a custom group.\n * - Provide a record to define localized group names.\n * - Set to `false` to exclude the entity from the sidebar / dashboard without disabling its routes.\n */\n group?: false | Record<string, string> | string\n /**\n * @description Enable grouping by a field in the list view.\n * Uses `payload.findDistinct` under the hood to populate the group-by options.\n *\n * @experimental This option is currently in beta and may change in future releases. Use at your own risk.\n */\n groupBy?: boolean\n /**\n * Exclude the collection from the admin nav and routes\n */\n hidden?: ((args: { user: ClientUser }) => boolean) | boolean\n /**\n * Hide the API URL within the Edit view\n */\n hideAPIURL?: boolean\n /**\n * Additional fields to be searched via the full text search\n */\n listSearchableFields?: string[]\n /**\n * Live Preview options.\n *\n * @see https://payloadcms.com/docs/live-preview/overview\n */\n livePreview?: LivePreviewConfig\n meta?: MetaConfig\n pagination?: {\n defaultLimit?: number\n limits?: number[]\n }\n /**\n * Function to generate custom preview URL\n */\n preview?: GeneratePreviewURL\n /**\n * Field to use as title in Edit View and first column in List view\n */\n useAsTitle?: string\n}\n\n/** Manage all aspects of a data collection */\nexport type CollectionConfig<TSlug extends CollectionSlug = any> = {\n /**\n * Do not set this property manually. This is set to true during sanitization, to avoid\n * sanitizing the same collection multiple times.\n */\n _sanitized?: boolean\n /**\n * Access control\n */\n access?: {\n admin?: ({ req }: { req: PayloadRequest }) => boolean | Promise<boolean>\n create?: Access\n delete?: Access\n read?: Access\n readVersions?: Access\n unlock?: Access\n update?: Access\n }\n /**\n * Collection admin options\n */\n admin?: CollectionAdminOptions\n /**\n * Collection login options\n *\n * Use `true` to enable with default options\n */\n auth?: boolean | IncomingAuthType\n /**\n * Configuration for bulk operations\n */\n /** Extension point to add your custom data. Server only. */\n custom?: CollectionCustom\n /**\n * Used to override the default naming of the database table or collection with your using a function or string\n * @WARNING: If you change this property with existing data, you will need to handle the renaming of the table in your database or by using migrations\n */\n dbName?: DBIdentifierName\n defaultPopulate?: IsAny<SelectFromCollectionSlug<TSlug>> extends true\n ? SelectType\n : SelectFromCollectionSlug<TSlug>\n /**\n * Default field to sort by in collection list view\n */\n defaultSort?: Sort\n /**\n * Disable the bulk edit operation for the collection in the admin panel and the API\n */\n disableBulkEdit?: boolean\n /**\n * When true, do not show the \"Duplicate\" button while editing documents within this collection and prevent `duplicate` from all APIs\n */\n disableDuplicate?: boolean\n /**\n * Opt-in to enable query presets for this collection.\n * @see https://payloadcms.com/docs/query-presets/overview\n */\n enableQueryPresets?: boolean\n /**\n * Custom rest api endpoints, set false to disable all rest endpoints for this collection.\n */\n endpoints?: false | Omit<Endpoint, 'root'>[]\n fields: Field[]\n /**\n * Enables folders for this collection\n */\n folders?: boolean | CollectionFoldersConfiguration\n /**\n * Specify which fields should be selected always, regardless of the `select` query which can be useful that the field exists for access control / hooks\n */\n forceSelect?: IsAny<SelectFromCollectionSlug<TSlug>> extends true\n ? SelectIncludeType\n : SelectFromCollectionSlug<TSlug>\n /**\n * GraphQL configuration\n */\n graphQL?:\n | {\n disableMutations?: true\n disableQueries?: true\n pluralName?: string\n singularName?: string\n }\n | false\n /**\n * Hooks to modify Payload functionality\n */\n hooks?: {\n afterChange?: AfterChangeHook[]\n afterDelete?: AfterDeleteHook[]\n afterError?: AfterErrorHook[]\n afterForgotPassword?: AfterForgotPasswordHook[]\n afterLogin?: AfterLoginHook[]\n afterLogout?: AfterLogoutHook[]\n afterMe?: AfterMeHook[]\n afterOperation?: AfterOperationHook<TSlug>[]\n afterRead?: AfterReadHook[]\n afterRefresh?: AfterRefreshHook[]\n beforeChange?: BeforeChangeHook[]\n beforeDelete?: BeforeDeleteHook[]\n beforeLogin?: BeforeLoginHook[]\n beforeOperation?: BeforeOperationHook<TSlug>[]\n beforeRead?: BeforeReadHook[]\n beforeValidate?: BeforeValidateHook[]\n /**\n /**\n * Use the `me` hook to control the `me` operation.\n * Here, you can optionally instruct the me operation to return early,\n * and skip its default logic.\n */\n me?: MeHook[]\n /**\n * Use the `refresh` hook to control the refresh operation.\n * Here, you can optionally instruct the refresh operation to return early,\n * and skip its default logic.\n */\n refresh?: RefreshHook[]\n }\n /**\n * Define compound indexes for this collection.\n * This can be used to either speed up querying/sorting by 2 or more fields at the same time or\n * to ensure uniqueness between several fields.\n * Specify field paths\n * @example\n * [{ unique: true, fields: ['title', 'group.name'] }]\n * @default []\n */\n indexes?: CompoundIndex[]\n /**\n * Label configuration\n */\n labels?: {\n plural?: LabelFunction | StaticLabel\n singular?: LabelFunction | StaticLabel\n }\n /**\n * Enables / Disables the ability to lock documents while editing\n * @default true\n */\n lockDocuments?:\n | {\n duration: number\n }\n | false\n /**\n * If true, enables custom ordering for the collection, and documents in the listView can be reordered via drag and drop.\n * New documents are inserted at the end of the list according to this parameter.\n *\n * Under the hood, a field with {@link https://observablehq.com/@dgreensp/implementing-fractional-indexing|fractional indexing} is used to optimize inserts and reorderings.\n *\n * @default false\n *\n * @experimental There may be frequent breaking changes to this API\n */\n orderable?: boolean\n slug: string\n /**\n * Add `createdAt`, `deletedAt` and `updatedAt` fields\n *\n * @default true\n */\n timestamps?: boolean\n /**\n * Enables trash support for this collection.\n *\n * When enabled, documents will include a `deletedAt` timestamp field.\n * This allows documents to be marked as deleted without being permanently removed.\n * The `deletedAt` field will be set to the current date and time when a document is trashed.\n *\n * @experimental This is a beta feature and its behavior may be refined in future releases.\n * @default false\n */\n trash?: boolean\n /**\n * Options used in typescript generation\n */\n typescript?: {\n /**\n * Typescript generation name given to the interface type\n */\n interface?: string\n }\n /**\n * Customize the handling of incoming file uploads\n *\n * @default false // disable uploads\n */\n upload?: boolean | UploadConfig\n /**\n * Enable versioning. Set it to true to enable default versions settings,\n * or customize versions options by setting the property equal to an object\n * containing the version options.\n *\n * @default false // disable versioning\n */\n versions?: boolean | IncomingCollectionVersions\n}\n\nexport type SanitizedJoin = {\n /**\n * The field configuration defining the join\n */\n field: JoinField\n getForeignPath?(args: { locale?: TypedLocale }): string\n /**\n * The path of the join field in dot notation\n */\n joinPath: string\n /**\n * `parentIsLocalized` is true if any parent field of the\n * field configuration defining the join is localized\n */\n parentIsLocalized: boolean\n targetField: RelationshipField | UploadField\n}\n\nexport type SanitizedJoins = {\n [collectionSlug: string]: SanitizedJoin[]\n}\n\n/**\n * @todo remove the `DeepRequired` in v4.\n * We don't actually guarantee that all properties are set when sanitizing configs.\n */\nexport interface SanitizedCollectionConfig\n extends Omit<\n DeepRequired<CollectionConfig>,\n 'admin' | 'auth' | 'endpoints' | 'fields' | 'folders' | 'slug' | 'upload' | 'versions'\n > {\n admin: CollectionAdminOptions\n auth: Auth\n endpoints: Endpoint[] | false\n fields: Field[]\n /**\n * Fields in the database schema structure\n * Rows / collapsible / tabs w/o name `fields` merged to top, UIs are excluded\n */\n flattenedFields: FlattenedField[]\n /**\n * Object of collections to join 'Join Fields object keyed by collection\n */\n folders: CollectionFoldersConfiguration | false\n joins: SanitizedJoins\n\n /**\n * List of all polymorphic join fields\n */\n polymorphicJoins: SanitizedJoin[]\n\n sanitizedIndexes: SanitizedCompoundIndex[]\n\n slug: CollectionSlug\n upload: SanitizedUploadConfig\n versions?: SanitizedCollectionVersions\n}\n\nexport type Collection = {\n config: SanitizedCollectionConfig\n customIDType?: 'number' | 'text'\n graphQL?: {\n countType: GraphQLObjectType\n JWT: GraphQLObjectType\n mutationInputType: GraphQLNonNull<any>\n paginatedType: GraphQLObjectType\n type: GraphQLObjectType\n updateMutationInputType: GraphQLNonNull<any>\n versionType: GraphQLObjectType\n whereInputType: GraphQLInputObjectType\n }\n}\n\nexport type BulkOperationResult<TSlug extends CollectionSlug, TSelect extends SelectType> = {\n docs: TransformCollectionWithSelect<TSlug, TSelect>[]\n errors: {\n id: DataFromCollectionSlug<TSlug>['id']\n isPublic: boolean\n message: string\n }[]\n}\n\nexport type AuthCollection = {\n config: SanitizedCollectionConfig\n}\n\nexport type LocalizedMeta = {\n [locale: string]: {\n status: 'draft' | 'published'\n updatedAt: string\n }\n}\n\nexport type TypeWithID = {\n id: number | string\n}\n\nexport type TypeWithTimestamps = {\n [key: string]: unknown\n createdAt: string\n deletedAt?: null | string\n id: number | string\n updatedAt: string\n}\n\nexport type CompoundIndex = {\n fields: string[]\n unique?: boolean\n}\n\nexport type SanitizedCompoundIndex = {\n fields: {\n field: FlattenedField\n localizedPath: string\n path: string\n pathHasLocalized: boolean\n }[]\n unique: boolean\n}\n"],"names":[],"mappings":"AAAA,qDAAqD,GAkyBrD,WAQC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/config/types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { GraphQLInputObjectType, GraphQLNonNull, GraphQLObjectType } from 'graphql'\nimport type { DeepRequired, IsAny, MarkOptional } from 'ts-essentials'\n\nimport type { CustomStatus, CustomUpload, ViewTypes } from '../../admin/types.js'\nimport type { Arguments as MeArguments } from '../../auth/operations/me.js'\nimport type {\n Arguments as RefreshArguments,\n Result as RefreshResult,\n} from '../../auth/operations/refresh.js'\nimport type { Auth, ClientUser, IncomingAuthType } from '../../auth/types.js'\nimport type {\n Access,\n AfterErrorHookArgs,\n AfterErrorResult,\n CustomComponent,\n EditConfig,\n Endpoint,\n EntityDescription,\n EntityDescriptionComponent,\n GeneratePreviewURL,\n LabelFunction,\n LivePreviewConfig,\n MetaConfig,\n PayloadComponent,\n StaticLabel,\n} from '../../config/types.js'\nimport type { DBIdentifierName } from '../../database/types.js'\nimport type {\n Field,\n FlattenedField,\n JoinField,\n RelationshipField,\n UploadField,\n} from '../../fields/config/types.js'\nimport type { CollectionFoldersConfiguration } from '../../folders/types.js'\nimport type {\n CollectionAdminCustom,\n CollectionCustom,\n CollectionSlug,\n JsonObject,\n RequestContext,\n TypedAuthOperations,\n TypedCollection,\n TypedCollectionSelect,\n TypedLocale,\n} from '../../index.js'\nimport type {\n PayloadRequest,\n SelectIncludeType,\n SelectType,\n Sort,\n TransformCollectionWithSelect,\n Where,\n} from '../../types/index.js'\nimport type { SanitizedUploadConfig, UploadConfig } from '../../uploads/types.js'\nimport type {\n IncomingCollectionVersions,\n SanitizedCollectionVersions,\n} from '../../versions/types.js'\nimport type {\n AfterOperationArg,\n BeforeOperationArg,\n OperationMap,\n} from '../operations/utilities/types.js'\n\nexport type DataFromCollectionSlug<TSlug extends CollectionSlug> = TypedCollection[TSlug]\n\nexport type SelectFromCollectionSlug<TSlug extends CollectionSlug> = TypedCollectionSelect[TSlug]\n\nexport type AuthOperationsFromCollectionSlug<TSlug extends CollectionSlug> =\n TypedAuthOperations[TSlug]\n\nexport type RequiredDataFromCollection<TData extends JsonObject> = MarkOptional<\n TData,\n 'createdAt' | 'deletedAt' | 'id' | 'updatedAt'\n>\n\nexport type RequiredDataFromCollectionSlug<TSlug extends CollectionSlug> =\n RequiredDataFromCollection<DataFromCollectionSlug<TSlug>>\n\n/**\n * Helper type for draft data INPUT (e.g., create operations) - makes all fields optional except system fields\n * When creating a draft, required fields don't need to be provided as validation is skipped\n * The id field is optional since it's auto-generated\n */\nexport type DraftDataFromCollection<TData extends JsonObject> = Partial<\n Omit<TData, 'createdAt' | 'deletedAt' | 'id' | 'sizes' | 'updatedAt'>\n> &\n Partial<Pick<TData, 'createdAt' | 'deletedAt' | 'id' | 'sizes' | 'updatedAt'>>\n\nexport type DraftDataFromCollectionSlug<TSlug extends CollectionSlug> = DraftDataFromCollection<\n DataFromCollectionSlug<TSlug>\n>\n\n/**\n * Helper type for draft data OUTPUT (e.g., query results) - makes user fields optional but keeps id required\n * When querying drafts, required fields may be null/undefined as validation is skipped, but system fields like id are always present\n */\nexport type QueryDraftDataFromCollection<TData extends JsonObject> = Partial<\n Omit<TData, 'createdAt' | 'deletedAt' | 'id' | 'sizes' | 'updatedAt'>\n> &\n Partial<Pick<TData, 'createdAt' | 'deletedAt' | 'sizes' | 'updatedAt'>> &\n Pick<TData, 'id'>\n\nexport type QueryDraftDataFromCollectionSlug<TSlug extends CollectionSlug> =\n QueryDraftDataFromCollection<DataFromCollectionSlug<TSlug>>\n\nexport type HookOperationType =\n | 'autosave'\n | 'count'\n | 'countVersions'\n | 'create'\n | 'delete'\n | 'forgotPassword'\n | 'login'\n | 'read'\n | 'readDistinct'\n | 'refresh'\n | 'resetPassword'\n | 'restoreVersion'\n | 'update'\n\ntype CreateOrUpdateOperation = Extract<HookOperationType, 'create' | 'update'>\n\nexport type BeforeOperationHook<TOperationGeneric extends CollectionSlug = string> = (\n arg: BeforeOperationArg<TOperationGeneric>,\n) =>\n | Parameters<OperationMap<TOperationGeneric>[keyof OperationMap<TOperationGeneric>]>[0]\n | Promise<Parameters<OperationMap<TOperationGeneric>[keyof OperationMap<TOperationGeneric>]>[0]>\n | Promise<void>\n | void\n\nexport type BeforeValidateHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n data?: Partial<T>\n /**\n * Hook operation being performed\n */\n operation: CreateOrUpdateOperation\n /**\n * Original document before change\n *\n * `undefined` on 'create' operation\n */\n originalDoc?: T\n req: PayloadRequest\n}) => any\n\nexport type BeforeChangeHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n data: Partial<T>\n /**\n * Hook operation being performed\n */\n operation: CreateOrUpdateOperation\n /**\n * Original document before change\n *\n * `undefined` on 'create' operation\n */\n originalDoc?: T\n req: PayloadRequest\n}) => any\n\nexport type AfterChangeHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n data: Partial<T>\n doc: T\n /**\n * Hook operation being performed\n */\n operation: CreateOrUpdateOperation\n previousDoc: T\n req: PayloadRequest\n}) => any\n\nexport type BeforeReadHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n doc: T\n query: { [key: string]: any }\n req: PayloadRequest\n}) => any\n\nexport type AfterReadHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n doc: T\n findMany?: boolean\n query?: { [key: string]: any }\n req: PayloadRequest\n}) => any\n\nexport type BeforeDeleteHook = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n id: number | string\n req: PayloadRequest\n}) => any\n\nexport type AfterDeleteHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n doc: T\n id: number | string\n req: PayloadRequest\n}) => any\n\nexport type AfterOperationHook<TOperationGeneric extends CollectionSlug = string> = (\n arg: AfterOperationArg<TOperationGeneric>,\n) =>\n | Awaited<ReturnType<OperationMap<TOperationGeneric>[keyof OperationMap<TOperationGeneric>]>>\n | Promise<\n Awaited<ReturnType<OperationMap<TOperationGeneric>[keyof OperationMap<TOperationGeneric>]>>\n >\n\nexport type BeforeLoginHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n req: PayloadRequest\n user: T\n}) => any\n\nexport type AfterLoginHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n req: PayloadRequest\n token: string\n user: T\n}) => any\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type AfterLogoutHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n req: PayloadRequest\n}) => any\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type AfterMeHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n req: PayloadRequest\n response: unknown\n}) => any\n\nexport type RefreshHook<T extends TypeWithID = any> = (args: {\n args: RefreshArguments\n user: T\n}) => Promise<RefreshResult | void> | (RefreshResult | void)\n\nexport type MeHook<T extends TypeWithID = any> = (args: {\n args: MeArguments\n user: T\n}) => ({ exp: number; user: T } | void) | Promise<{ exp: number; user: T } | void>\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type AfterRefreshHook<T extends TypeWithID = any> = (args: {\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n exp: number\n req: PayloadRequest\n token: string\n}) => any\n\nexport type AfterErrorHook = (\n args: { collection: SanitizedCollectionConfig } & AfterErrorHookArgs,\n) => AfterErrorResult | Promise<AfterErrorResult>\n\nexport type AfterForgotPasswordHook = (args: {\n args?: any\n /** The collection which this hook is being run on */\n collection: SanitizedCollectionConfig\n context: RequestContext\n}) => any\n\nexport type EnableFoldersOptions = {\n // Displays the folder collection and parentFolder field in the document view\n debug?: boolean\n}\n\nexport type BaseFilter = (args: {\n limit: number\n locale?: TypedLocale\n page: number\n req: PayloadRequest\n sort: string\n}) => null | Promise<null | Where> | Where\n\n/**\n * @deprecated Use `BaseFilter` instead.\n */\nexport type BaseListFilter = BaseFilter\n\nexport type CollectionAdminOptions = {\n /**\n * Defines a default base filter which will be applied in the following parts of the admin panel:\n * - List View\n * - Relationship fields for internal links within the Lexical editor\n *\n * This is especially useful for plugins like multi-tenant. For example,\n * a user may have access to multiple tenants, but should only see content\n * related to the currently active or selected tenant in those places.\n */\n baseFilter?: BaseFilter\n /**\n * @deprecated Use `baseFilter` instead. If both are defined,\n * `baseFilter` will take precedence. This property remains only\n * for backward compatibility and may be removed in a future version.\n *\n * Originally, `baseListFilter` was intended to filter only the List View\n * in the admin panel. However, base filtering is often required in other areas\n * such as internal link relationships in the Lexical editor.\n */\n baseListFilter?: BaseListFilter\n /**\n * Custom admin components\n */\n components?: {\n afterList?: CustomComponent[]\n afterListTable?: CustomComponent[]\n beforeList?: CustomComponent[]\n beforeListTable?: CustomComponent[]\n Description?: EntityDescriptionComponent\n /**\n * Components within the edit view\n */\n edit?: {\n /**\n * Inject custom components before the document controls\n */\n beforeDocumentControls?: CustomComponent[]\n /**\n * Inject custom components within the 3-dot menu dropdown\n */\n editMenuItems?: CustomComponent[]\n /**\n * Replaces the \"Preview\" button\n */\n PreviewButton?: CustomComponent\n /**\n * Replaces the \"Publish\" button\n * + drafts must be enabled\n */\n PublishButton?: CustomComponent\n /**\n * Replaces the \"Save\" button\n * + drafts must be disabled\n */\n SaveButton?: CustomComponent\n /**\n * Replaces the \"Save Draft\" button\n * + drafts must be enabled\n * + autosave must be disabled\n */\n SaveDraftButton?: CustomComponent\n /**\n * Replaces the \"Status\" section\n */\n Status?: CustomStatus\n /**\n * Replaces the \"Upload\" section\n * + upload must be enabled\n */\n Upload?: CustomUpload\n }\n listMenuItems?: CustomComponent[]\n views?: {\n /**\n * Replace, modify, or add new \"document\" views.\n * @link https://payloadcms.com/docs/custom-components/document-views\n */\n edit?: EditConfig\n /**\n * Replace or modify the \"list\" view.\n * @link https://payloadcms.com/docs/custom-components/list-view\n */\n list?: {\n actions?: CustomComponent[]\n Component?: PayloadComponent\n }\n }\n }\n /** Extension point to add your custom data. Available in server and client. */\n custom?: CollectionAdminCustom\n /**\n * Default columns to show in list view\n */\n defaultColumns?: string[]\n /**\n * Custom description for collection. This will also be used as JSDoc for the generated types\n */\n description?: EntityDescription\n /**\n * Disable the Copy To Locale button in the edit document view\n * @default false\n */\n disableCopyToLocale?: boolean\n /**\n * Performance opt-in. If true, will use the [Select API](https://payloadcms.com/docs/queries/select) when\n * loading the list view to query only the active columns, as opposed to the entire documents.\n * If your cells require specific fields that may be unselected, such as within hooks, etc.,\n * use `forceSelect` in conjunction with this property.\n *\n * @experimental This is an experimental feature and may change in the future. Use at your own risk.\n */\n enableListViewSelectAPI?: boolean\n enableRichTextLink?: boolean\n enableRichTextRelationship?: boolean\n /**\n * Function to format the URL for document links in the list view.\n * Return null to disable linking for that document.\n * Return a string to customize the link destination.\n * If not provided, uses the default admin edit URL.\n */\n formatDocURL?: (args: {\n collectionSlug: string\n /**\n * The default URL that would normally be used for this document link.\n * You can return this as-is, modify it, or completely replace it.\n */\n defaultURL: string\n doc: Record<string, unknown>\n req: PayloadRequest\n /**\n * The current view context where the link is being generated.\n * Most relevant values for document linking are 'list' and 'trash'.\n */\n viewType?: ViewTypes\n }) => null | string\n /**\n * Specify a navigational group for collections in the admin sidebar.\n * - Provide a string to place the entity in a custom group.\n * - Provide a record to define localized group names.\n * - Set to `false` to exclude the entity from the sidebar / dashboard without disabling its routes.\n */\n group?: false | Record<string, string> | string\n /**\n * @description Enable grouping by a field in the list view.\n * Uses `payload.findDistinct` under the hood to populate the group-by options.\n *\n * @experimental This option is currently in beta and may change in future releases. Use at your own risk.\n */\n groupBy?: boolean\n /**\n * Exclude the collection from the admin nav and routes\n */\n hidden?: ((args: { user: ClientUser }) => boolean) | boolean\n /**\n * Hide the API URL within the Edit view\n */\n hideAPIURL?: boolean\n /**\n * Additional fields to be searched via the full text search\n */\n listSearchableFields?: string[]\n /**\n * Live Preview options.\n *\n * @see https://payloadcms.com/docs/live-preview/overview\n */\n livePreview?: LivePreviewConfig\n meta?: MetaConfig\n pagination?: {\n defaultLimit?: number\n limits?: number[]\n }\n /**\n * Function to generate custom preview URL\n */\n preview?: GeneratePreviewURL\n /**\n * Field to use as title in Edit View and first column in List view\n */\n useAsTitle?: string\n}\n\n/** Manage all aspects of a data collection */\nexport type CollectionConfig<TSlug extends CollectionSlug = any> = {\n /**\n * Do not set this property manually. This is set to true during sanitization, to avoid\n * sanitizing the same collection multiple times.\n */\n _sanitized?: boolean\n /**\n * Access control\n */\n access?: {\n admin?: ({ req }: { req: PayloadRequest }) => boolean | Promise<boolean>\n create?: Access\n delete?: Access\n read?: Access\n readVersions?: Access\n unlock?: Access\n update?: Access\n }\n /**\n * Collection admin options\n */\n admin?: CollectionAdminOptions\n /**\n * Collection login options\n *\n * Use `true` to enable with default options\n */\n auth?: boolean | IncomingAuthType\n /**\n * Configuration for bulk operations\n */\n /** Extension point to add your custom data. Server only. */\n custom?: CollectionCustom\n /**\n * Used to override the default naming of the database table or collection with your using a function or string\n * @WARNING: If you change this property with existing data, you will need to handle the renaming of the table in your database or by using migrations\n */\n dbName?: DBIdentifierName\n defaultPopulate?: IsAny<SelectFromCollectionSlug<TSlug>> extends true\n ? SelectType\n : SelectFromCollectionSlug<TSlug>\n /**\n * Default field to sort by in collection list view\n */\n defaultSort?: Sort\n /**\n * Disable the bulk edit operation for the collection in the admin panel and the API\n */\n disableBulkEdit?: boolean\n /**\n * When true, do not show the \"Duplicate\" button while editing documents within this collection and prevent `duplicate` from all APIs\n */\n disableDuplicate?: boolean\n /**\n * Opt-in to enable query presets for this collection.\n * @see https://payloadcms.com/docs/query-presets/overview\n */\n enableQueryPresets?: boolean\n /**\n * Custom rest api endpoints, set false to disable all rest endpoints for this collection.\n */\n endpoints?: false | Omit<Endpoint, 'root'>[]\n fields: Field[]\n /**\n * Enables folders for this collection\n */\n folders?: boolean | CollectionFoldersConfiguration\n /**\n * Specify which fields should be selected always, regardless of the `select` query which can be useful that the field exists for access control / hooks\n */\n forceSelect?: IsAny<SelectFromCollectionSlug<TSlug>> extends true\n ? SelectIncludeType\n : SelectFromCollectionSlug<TSlug>\n /**\n * GraphQL configuration\n */\n graphQL?:\n | {\n disableMutations?: true\n disableQueries?: true\n pluralName?: string\n singularName?: string\n }\n | false\n /**\n * Hooks to modify Payload functionality\n */\n hooks?: {\n afterChange?: AfterChangeHook[]\n afterDelete?: AfterDeleteHook[]\n afterError?: AfterErrorHook[]\n afterForgotPassword?: AfterForgotPasswordHook[]\n afterLogin?: AfterLoginHook[]\n afterLogout?: AfterLogoutHook[]\n afterMe?: AfterMeHook[]\n afterOperation?: AfterOperationHook<TSlug>[]\n afterRead?: AfterReadHook[]\n afterRefresh?: AfterRefreshHook[]\n beforeChange?: BeforeChangeHook[]\n beforeDelete?: BeforeDeleteHook[]\n beforeLogin?: BeforeLoginHook[]\n beforeOperation?: BeforeOperationHook<TSlug>[]\n beforeRead?: BeforeReadHook[]\n beforeValidate?: BeforeValidateHook[]\n /**\n /**\n * Use the `me` hook to control the `me` operation.\n * Here, you can optionally instruct the me operation to return early,\n * and skip its default logic.\n */\n me?: MeHook[]\n /**\n * Use the `refresh` hook to control the refresh operation.\n * Here, you can optionally instruct the refresh operation to return early,\n * and skip its default logic.\n */\n refresh?: RefreshHook[]\n }\n /**\n * Define compound indexes for this collection.\n * This can be used to either speed up querying/sorting by 2 or more fields at the same time or\n * to ensure uniqueness between several fields.\n * Specify field paths\n * @example\n * [{ unique: true, fields: ['title', 'group.name'] }]\n * @default []\n */\n indexes?: CompoundIndex[]\n /**\n * Label configuration\n */\n labels?: {\n plural?: LabelFunction | StaticLabel\n singular?: LabelFunction | StaticLabel\n }\n /**\n * Enables / Disables the ability to lock documents while editing\n * @default true\n */\n lockDocuments?:\n | {\n duration: number\n }\n | false\n /**\n * If true, enables custom ordering for the collection, and documents in the listView can be reordered via drag and drop.\n * New documents are inserted at the end of the list according to this parameter.\n *\n * Under the hood, a field with {@link https://payloadcms.com/docs/configuration/collections#fractional-indexing|fractional indexing} is used to optimize inserts and reorderings.\n *\n * @default false\n *\n * @experimental There may be frequent breaking changes to this API\n */\n orderable?: boolean\n slug: string\n /**\n * Add `createdAt`, `deletedAt` and `updatedAt` fields\n *\n * @default true\n */\n timestamps?: boolean\n /**\n * Enables trash support for this collection.\n *\n * When enabled, documents will include a `deletedAt` timestamp field.\n * This allows documents to be marked as deleted without being permanently removed.\n * The `deletedAt` field will be set to the current date and time when a document is trashed.\n *\n * @experimental This is a beta feature and its behavior may be refined in future releases.\n * @default false\n */\n trash?: boolean\n /**\n * Options used in typescript generation\n */\n typescript?: {\n /**\n * Typescript generation name given to the interface type\n */\n interface?: string\n }\n /**\n * Customize the handling of incoming file uploads\n *\n * @default false // disable uploads\n */\n upload?: boolean | UploadConfig\n /**\n * Enable versioning. Set it to true to enable default versions settings,\n * or customize versions options by setting the property equal to an object\n * containing the version options.\n *\n * @default false // disable versioning\n */\n versions?: boolean | IncomingCollectionVersions\n}\n\nexport type SanitizedJoin = {\n /**\n * The field configuration defining the join\n */\n field: JoinField\n getForeignPath?(args: { locale?: TypedLocale }): string\n /**\n * The path of the join field in dot notation\n */\n joinPath: string\n /**\n * `parentIsLocalized` is true if any parent field of the\n * field configuration defining the join is localized\n */\n parentIsLocalized: boolean\n targetField: RelationshipField | UploadField\n}\n\nexport type SanitizedJoins = {\n [collectionSlug: string]: SanitizedJoin[]\n}\n\n/**\n * @todo remove the `DeepRequired` in v4.\n * We don't actually guarantee that all properties are set when sanitizing configs.\n */\nexport interface SanitizedCollectionConfig\n extends Omit<\n DeepRequired<CollectionConfig>,\n 'admin' | 'auth' | 'endpoints' | 'fields' | 'folders' | 'slug' | 'upload' | 'versions'\n > {\n admin: CollectionAdminOptions\n auth: Auth\n endpoints: Endpoint[] | false\n fields: Field[]\n /**\n * Fields in the database schema structure\n * Rows / collapsible / tabs w/o name `fields` merged to top, UIs are excluded\n */\n flattenedFields: FlattenedField[]\n /**\n * Object of collections to join 'Join Fields object keyed by collection\n */\n folders: CollectionFoldersConfiguration | false\n joins: SanitizedJoins\n\n /**\n * List of all polymorphic join fields\n */\n polymorphicJoins: SanitizedJoin[]\n\n sanitizedIndexes: SanitizedCompoundIndex[]\n\n slug: CollectionSlug\n upload: SanitizedUploadConfig\n versions?: SanitizedCollectionVersions\n}\n\nexport type Collection = {\n config: SanitizedCollectionConfig\n customIDType?: 'number' | 'text'\n graphQL?: {\n countType: GraphQLObjectType\n JWT: GraphQLObjectType\n mutationInputType: GraphQLNonNull<any>\n paginatedType: GraphQLObjectType\n type: GraphQLObjectType\n updateMutationInputType: GraphQLNonNull<any>\n versionType: GraphQLObjectType\n whereInputType: GraphQLInputObjectType\n }\n}\n\nexport type BulkOperationResult<TSlug extends CollectionSlug, TSelect extends SelectType> = {\n docs: TransformCollectionWithSelect<TSlug, TSelect>[]\n errors: {\n id: DataFromCollectionSlug<TSlug>['id']\n isPublic: boolean\n message: string\n }[]\n}\n\nexport type AuthCollection = {\n config: SanitizedCollectionConfig\n}\n\nexport type LocalizedMeta = {\n [locale: string]: {\n status: 'draft' | 'published'\n updatedAt: string\n }\n}\n\nexport type TypeWithID = {\n id: number | string\n}\n\nexport type TypeWithTimestamps = {\n [key: string]: unknown\n createdAt: string\n deletedAt?: null | string\n id: number | string\n updatedAt: string\n}\n\nexport type CompoundIndex = {\n fields: string[]\n unique?: boolean\n}\n\nexport type SanitizedCompoundIndex = {\n fields: {\n field: FlattenedField\n localizedPath: string\n path: string\n pathHasLocalized: boolean\n }[]\n unique: boolean\n}\n"],"names":[],"mappings":"AAAA,qDAAqD,GAkyBrD,WAQC"}
|
|
@@ -21,12 +21,32 @@ export function generateKeyBetween(a: string | null | undefined, b: string | nul
|
|
|
21
21
|
*/
|
|
22
22
|
export function generateNKeysBetween(a: string | null | undefined, b: string | null | undefined, n: number, digits?: string): string[];
|
|
23
23
|
/**
|
|
24
|
-
* THIS FILE IS
|
|
24
|
+
* THIS FILE IS BASED ON:
|
|
25
25
|
* https://github.com/rocicorp/fractional-indexing/blob/main/src/index.js
|
|
26
26
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
27
|
+
* MODIFIED FOR PAYLOAD CMS:
|
|
28
|
+
* - Changed the integer part encoding to use only digits for "small" keys and
|
|
29
|
+
* only lowercase letters for "large" keys, ensuring consistent ordering
|
|
30
|
+
* across databases with different collations.
|
|
31
|
+
*
|
|
32
|
+
* - Original algorithm used A-Z (uppercase) for "smaller" integers and a-z (lowercase)
|
|
33
|
+
* for "larger" integers, relying on ASCII ordering where 'Z' < 'a'.
|
|
34
|
+
*
|
|
35
|
+
* - Some databases (e.g., PostgreSQL with default collation) use case-insensitive
|
|
36
|
+
* comparison, treating 'Z' as 'z', which breaks the ordering.
|
|
37
|
+
*
|
|
38
|
+
* - New encoding:
|
|
39
|
+
* - Uses digits '0'-'9' for "small" integers (10 values, lengths 11 down to 2)
|
|
40
|
+
* - Uses lowercase 'a'-'z' for "large" integers (26 values, lengths 2 up to 27)
|
|
41
|
+
* - Digits ALWAYS sort before letters in both ASCII and case-insensitive orderings.
|
|
42
|
+
*
|
|
43
|
+
* - Ordering: '0...' < '1...' < ... < '9..' < 'a.' < 'b..' < ... < 'z...'
|
|
44
|
+
*
|
|
45
|
+
* BACKWARD COMPATIBILITY:
|
|
46
|
+
* - Existing keys starting with lowercase 'a'-'z' remain valid and work correctly.
|
|
47
|
+
* - Keys starting with uppercase 'A'-'Z' (from the old algorithm) will still be
|
|
48
|
+
* parsed for backward compatibility, but they may sort incorrectly in
|
|
49
|
+
* case-insensitive databases. Consider running a migration to convert them.
|
|
30
50
|
*/
|
|
31
51
|
export const BASE_36_DIGITS: "0123456789abcdefghijklmnopqrstuvwxyz";
|
|
32
52
|
//# sourceMappingURL=fractional-indexing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fractional-indexing.d.ts","sourceRoot":"","sources":["../../../src/config/orderable/fractional-indexing.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fractional-indexing.d.ts","sourceRoot":"","sources":["../../../src/config/orderable/fractional-indexing.js"],"names":[],"mappings":"AAqRA;;;;;GAKG;AACH,sCALW,MAAM,GAAG,IAAI,GAAG,SAAS,KACzB,MAAM,GAAG,IAAI,GAAG,SAAS,WACzB,MAAM,YAAC,GACN,MAAM,CA0DjB;AAED;;;;;;;;;;;;;GAaG;AACH,wCANW,MAAM,GAAG,IAAI,GAAG,SAAS,KACzB,MAAM,GAAG,IAAI,GAAG,SAAS,KACzB,MAAM,WACN,MAAM,GACL,MAAM,EAAE,CAmCnB;AAlYD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,6BAA8B,sCAAsC,CAAA"}
|
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
// @ts-no-check
|
|
2
2
|
/**
|
|
3
|
-
* THIS FILE IS
|
|
3
|
+
* THIS FILE IS BASED ON:
|
|
4
4
|
* https://github.com/rocicorp/fractional-indexing/blob/main/src/index.js
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* MODIFIED FOR PAYLOAD CMS:
|
|
7
|
+
* - Changed the integer part encoding to use only digits for "small" keys and
|
|
8
|
+
* only lowercase letters for "large" keys, ensuring consistent ordering
|
|
9
|
+
* across databases with different collations.
|
|
10
|
+
*
|
|
11
|
+
* - Original algorithm used A-Z (uppercase) for "smaller" integers and a-z (lowercase)
|
|
12
|
+
* for "larger" integers, relying on ASCII ordering where 'Z' < 'a'.
|
|
13
|
+
*
|
|
14
|
+
* - Some databases (e.g., PostgreSQL with default collation) use case-insensitive
|
|
15
|
+
* comparison, treating 'Z' as 'z', which breaks the ordering.
|
|
16
|
+
*
|
|
17
|
+
* - New encoding:
|
|
18
|
+
* - Uses digits '0'-'9' for "small" integers (10 values, lengths 11 down to 2)
|
|
19
|
+
* - Uses lowercase 'a'-'z' for "large" integers (26 values, lengths 2 up to 27)
|
|
20
|
+
* - Digits ALWAYS sort before letters in both ASCII and case-insensitive orderings.
|
|
21
|
+
*
|
|
22
|
+
* - Ordering: '0...' < '1...' < ... < '9..' < 'a.' < 'b..' < ... < 'z...'
|
|
23
|
+
*
|
|
24
|
+
* BACKWARD COMPATIBILITY:
|
|
25
|
+
* - Existing keys starting with lowercase 'a'-'z' remain valid and work correctly.
|
|
26
|
+
* - Keys starting with uppercase 'A'-'Z' (from the old algorithm) will still be
|
|
27
|
+
* parsed for backward compatibility, but they may sort incorrectly in
|
|
28
|
+
* case-insensitive databases. Consider running a migration to convert them.
|
|
9
29
|
*/ // License: CC0 (no rights reserved).
|
|
10
30
|
// This is based on https://observablehq.com/@dgreensp/implementing-fractional-indexing
|
|
11
31
|
export const BASE_36_DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz';
|
|
@@ -69,12 +89,24 @@ export const BASE_36_DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz';
|
|
|
69
89
|
}
|
|
70
90
|
}
|
|
71
91
|
/**
|
|
92
|
+
* Returns the length of the integer part based on the head character.
|
|
93
|
+
*
|
|
94
|
+
* New encoding (case-insensitive safe):
|
|
95
|
+
* - SMALL range (digits): '0' = 11 chars, '1' = 10 chars, ..., '9' = 2 chars
|
|
96
|
+
* - LARGE range (lowercase): 'a' = 2 chars, 'b' = 3 chars, ..., 'z' = 27 chars
|
|
97
|
+
*
|
|
98
|
+
* Legacy encoding (for backward compatibility with existing keys):
|
|
99
|
+
* - 'A'-'Z' uppercase: 'A' = 27 chars, 'B' = 26 chars, ..., 'Z' = 2 chars
|
|
100
|
+
*
|
|
72
101
|
* @param {string} head
|
|
73
102
|
* @return {number}
|
|
74
103
|
*/ function getIntegerLength(head) {
|
|
75
|
-
if (head >= '
|
|
104
|
+
if (head >= '0' && head <= '9') {
|
|
105
|
+
return 11 - (head.charCodeAt(0) - '0'.charCodeAt(0));
|
|
106
|
+
} else if (head >= 'a' && head <= 'z') {
|
|
76
107
|
return head.charCodeAt(0) - 'a'.charCodeAt(0) + 2;
|
|
77
108
|
} else if (head >= 'A' && head <= 'Z') {
|
|
109
|
+
// Legacy encoding
|
|
78
110
|
return 'Z'.charCodeAt(0) - head.charCodeAt(0) + 2;
|
|
79
111
|
} else {
|
|
80
112
|
throw new Error('invalid order key head: ' + head);
|
|
@@ -90,11 +122,19 @@ export const BASE_36_DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz';
|
|
|
90
122
|
}
|
|
91
123
|
return key.slice(0, integerPartLength);
|
|
92
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Smallest possible key (for validation)
|
|
127
|
+
* '0' + 10 zeros = smallest valid key in new format
|
|
128
|
+
*/ const SMALLEST_KEY = '0' + BASE_36_DIGITS[0].repeat(10);
|
|
93
129
|
/**
|
|
94
130
|
* @param {string} key
|
|
95
131
|
* @param {string} digits
|
|
96
132
|
* @return {void}
|
|
97
133
|
*/ function validateOrderKey(key, digits) {
|
|
134
|
+
if (key === SMALLEST_KEY) {
|
|
135
|
+
throw new Error('invalid order key: ' + key);
|
|
136
|
+
}
|
|
137
|
+
// Legacy check for old format
|
|
98
138
|
if (key === 'A' + digits[0].repeat(26)) {
|
|
99
139
|
throw new Error('invalid order key: ' + key);
|
|
100
140
|
}
|
|
@@ -126,17 +166,29 @@ export const BASE_36_DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz';
|
|
|
126
166
|
}
|
|
127
167
|
}
|
|
128
168
|
if (carry) {
|
|
169
|
+
if (head === '9') {
|
|
170
|
+
return 'a' + digits[0];
|
|
171
|
+
}
|
|
172
|
+
// Handle legacy uppercase transition
|
|
129
173
|
if (head === 'Z') {
|
|
130
174
|
return 'a' + digits[0];
|
|
131
175
|
}
|
|
132
176
|
if (head === 'z') {
|
|
133
177
|
return null;
|
|
134
178
|
}
|
|
135
|
-
|
|
136
|
-
if (
|
|
179
|
+
let h;
|
|
180
|
+
if (head >= '0' && head <= '8') {
|
|
181
|
+
h = String.fromCharCode(head.charCodeAt(0) + 1);
|
|
182
|
+
digs.pop();
|
|
183
|
+
} else if (head >= 'a' && head <= 'y') {
|
|
184
|
+
h = String.fromCharCode(head.charCodeAt(0) + 1);
|
|
137
185
|
digs.push(digits[0]);
|
|
138
|
-
} else {
|
|
186
|
+
} else if (head >= 'A' && head <= 'Y') {
|
|
187
|
+
// Legacy uppercase
|
|
188
|
+
h = String.fromCharCode(head.charCodeAt(0) + 1);
|
|
139
189
|
digs.pop();
|
|
190
|
+
} else {
|
|
191
|
+
throw new Error('invalid head: ' + head);
|
|
140
192
|
}
|
|
141
193
|
return h + digs.join('');
|
|
142
194
|
} else {
|
|
@@ -163,16 +215,27 @@ export const BASE_36_DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz';
|
|
|
163
215
|
}
|
|
164
216
|
if (borrow) {
|
|
165
217
|
if (head === 'a') {
|
|
166
|
-
return '
|
|
218
|
+
return '9' + digits.slice(-1);
|
|
167
219
|
}
|
|
168
|
-
if (head === '
|
|
220
|
+
if (head === '0') {
|
|
169
221
|
return null;
|
|
170
222
|
}
|
|
171
|
-
|
|
172
|
-
if (
|
|
223
|
+
let h;
|
|
224
|
+
if (head >= '1' && head <= '9') {
|
|
225
|
+
h = String.fromCharCode(head.charCodeAt(0) - 1);
|
|
173
226
|
digs.push(digits.slice(-1));
|
|
174
|
-
} else {
|
|
227
|
+
} else if (head >= 'b' && head <= 'z') {
|
|
228
|
+
h = String.fromCharCode(head.charCodeAt(0) - 1);
|
|
175
229
|
digs.pop();
|
|
230
|
+
} else if (head >= 'B' && head <= 'Z') {
|
|
231
|
+
// Legacy uppercase
|
|
232
|
+
h = String.fromCharCode(head.charCodeAt(0) - 1);
|
|
233
|
+
digs.push(digits.slice(-1));
|
|
234
|
+
} else if (head === 'A') {
|
|
235
|
+
// Legacy uppercase
|
|
236
|
+
return null;
|
|
237
|
+
} else {
|
|
238
|
+
throw new Error('invalid head: ' + head);
|
|
176
239
|
}
|
|
177
240
|
return h + digs.join('');
|
|
178
241
|
} else {
|
|
@@ -205,6 +268,10 @@ export const BASE_36_DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz';
|
|
|
205
268
|
}
|
|
206
269
|
const ib = getIntegerPart(b);
|
|
207
270
|
const fb = b.slice(ib.length);
|
|
271
|
+
if (ib === SMALLEST_KEY) {
|
|
272
|
+
return ib + midpoint('', fb, digits);
|
|
273
|
+
}
|
|
274
|
+
// Legacy check
|
|
208
275
|
if (ib === 'A' + digits[0].repeat(26)) {
|
|
209
276
|
return ib + midpoint('', fb, digits);
|
|
210
277
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/config/orderable/fractional-indexing.js"],"sourcesContent":["// @ts-no-check\n\n/**\n * THIS FILE IS COPIED FROM:\n * https://github.com/rocicorp/fractional-indexing/blob/main/src/index.js\n *\n * I AM NOT INSTALLING THAT LIBRARY BECAUSE JEST COMPLAINS ABOUT THE ESM MODULE AND THE TESTS FAIL.\n * DO NOT MODIFY IT\n * ALSO, I'M DISABLING TS WITH `@ts-no-check` BECAUSE THEY DON'T USE STRICT NULL CHECKS IN THAT REPOSITORY\n */\n\n// License: CC0 (no rights reserved).\n\n// This is based on https://observablehq.com/@dgreensp/implementing-fractional-indexing\n\nexport const BASE_36_DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz'\n\n// `a` may be empty string, `b` is null or non-empty string.\n// `a < b` lexicographically if `b` is non-null.\n// no trailing zeros allowed.\n// digits is a string such as '0123456789' for base 10. Digits must be in\n// ascending character code order!\n/**\n * @param {string} a\n * @param {string | null | undefined} b\n * @param {string} digits\n * @returns {string}\n */\nfunction midpoint(a, b, digits) {\n const zero = digits[0]\n if (b != null && a >= b) {\n throw new Error(a + ' >= ' + b)\n }\n if (a.slice(-1) === zero || (b && b.slice(-1) === zero)) {\n throw new Error('trailing zero')\n }\n if (b) {\n // remove longest common prefix. pad `a` with 0s as we\n // go. note that we don't need to pad `b`, because it can't\n // end before `a` while traversing the common prefix.\n let n = 0\n while ((a[n] || zero) === b[n]) {\n n++\n }\n if (n > 0) {\n return b.slice(0, n) + midpoint(a.slice(n), b.slice(n), digits)\n }\n }\n // first digits (or lack of digit) are different\n const digitA = a ? digits.indexOf(a[0]) : 0\n const digitB = b != null ? digits.indexOf(b[0]) : digits.length\n if (digitB - digitA > 1) {\n const midDigit = Math.round(0.5 * (digitA + digitB))\n return digits[midDigit]\n } else {\n // first digits are consecutive\n if (b && b.length > 1) {\n return b.slice(0, 1)\n } else {\n // `b` is null or has length 1 (a single digit).\n // the first digit of `a` is the previous digit to `b`,\n // or 9 if `b` is null.\n // given, for example, midpoint('49', '5'), return\n // '4' + midpoint('9', null), which will become\n // '4' + '9' + midpoint('', null), which is '495'\n return digits[digitA] + midpoint(a.slice(1), null, digits)\n }\n }\n}\n\n/**\n * @param {string} int\n * @return {void}\n */\n\nfunction validateInteger(int) {\n if (int.length !== getIntegerLength(int[0])) {\n throw new Error('invalid integer part of order key: ' + int)\n }\n}\n\n/**\n * @param {string} head\n * @return {number}\n */\n\nfunction getIntegerLength(head) {\n if (head >= 'a' && head <= 'z') {\n return head.charCodeAt(0) - 'a'.charCodeAt(0) + 2\n } else if (head >= 'A' && head <= 'Z') {\n return 'Z'.charCodeAt(0) - head.charCodeAt(0) + 2\n } else {\n throw new Error('invalid order key head: ' + head)\n }\n}\n\n/**\n * @param {string} key\n * @return {string}\n */\n\nfunction getIntegerPart(key) {\n const integerPartLength = getIntegerLength(key[0])\n if (integerPartLength > key.length) {\n throw new Error('invalid order key: ' + key)\n }\n return key.slice(0, integerPartLength)\n}\n\n/**\n * @param {string} key\n * @param {string} digits\n * @return {void}\n */\n\nfunction validateOrderKey(key, digits) {\n if (key === 'A' + digits[0].repeat(26)) {\n throw new Error('invalid order key: ' + key)\n }\n // getIntegerPart will throw if the first character is bad,\n // or the key is too short. we'd call it to check these things\n // even if we didn't need the result\n const i = getIntegerPart(key)\n const f = key.slice(i.length)\n if (f.slice(-1) === digits[0]) {\n throw new Error('invalid order key: ' + key)\n }\n}\n\n// note that this may return null, as there is a largest integer\n/**\n * @param {string} x\n * @param {string} digits\n * @return {string | null}\n */\nfunction incrementInteger(x, digits) {\n validateInteger(x)\n const [head, ...digs] = x.split('')\n let carry = true\n for (let i = digs.length - 1; carry && i >= 0; i--) {\n const d = digits.indexOf(digs[i]) + 1\n if (d === digits.length) {\n digs[i] = digits[0]\n } else {\n digs[i] = digits[d]\n carry = false\n }\n }\n if (carry) {\n if (head === 'Z') {\n return 'a' + digits[0]\n }\n if (head === 'z') {\n return null\n }\n const h = String.fromCharCode(head.charCodeAt(0) + 1)\n if (h > 'a') {\n digs.push(digits[0])\n } else {\n digs.pop()\n }\n return h + digs.join('')\n } else {\n return head + digs.join('')\n }\n}\n\n// note that this may return null, as there is a smallest integer\n/**\n * @param {string} x\n * @param {string} digits\n * @return {string | null}\n */\n\nfunction decrementInteger(x, digits) {\n validateInteger(x)\n const [head, ...digs] = x.split('')\n let borrow = true\n for (let i = digs.length - 1; borrow && i >= 0; i--) {\n const d = digits.indexOf(digs[i]) - 1\n if (d === -1) {\n digs[i] = digits.slice(-1)\n } else {\n digs[i] = digits[d]\n borrow = false\n }\n }\n if (borrow) {\n if (head === 'a') {\n return 'Z' + digits.slice(-1)\n }\n if (head === 'A') {\n return null\n }\n const h = String.fromCharCode(head.charCodeAt(0) - 1)\n if (h < 'Z') {\n digs.push(digits.slice(-1))\n } else {\n digs.pop()\n }\n return h + digs.join('')\n } else {\n return head + digs.join('')\n }\n}\n\n// `a` is an order key or null (START).\n// `b` is an order key or null (END).\n// `a < b` lexicographically if both are non-null.\n// digits is a string such as '0123456789' for base 10. Digits must be in\n// ascending character code order!\n/**\n * @param {string | null | undefined} a\n * @param {string | null | undefined} b\n * @param {string=} digits\n * @return {string}\n */\nexport function generateKeyBetween(a, b, digits = BASE_36_DIGITS) {\n if (a != null) {\n validateOrderKey(a, digits)\n }\n if (b != null) {\n validateOrderKey(b, digits)\n }\n if (a != null && b != null && a >= b) {\n throw new Error(a + ' >= ' + b)\n }\n if (a == null) {\n if (b == null) {\n return 'a' + digits[0]\n }\n\n const ib = getIntegerPart(b)\n const fb = b.slice(ib.length)\n if (ib === 'A' + digits[0].repeat(26)) {\n return ib + midpoint('', fb, digits)\n }\n if (ib < b) {\n return ib\n }\n const res = decrementInteger(ib, digits)\n if (res == null) {\n throw new Error('cannot decrement any more')\n }\n return res\n }\n\n if (b == null) {\n const ia = getIntegerPart(a)\n const fa = a.slice(ia.length)\n const i = incrementInteger(ia, digits)\n return i == null ? ia + midpoint(fa, null, digits) : i\n }\n\n const ia = getIntegerPart(a)\n const fa = a.slice(ia.length)\n const ib = getIntegerPart(b)\n const fb = b.slice(ib.length)\n if (ia === ib) {\n return ia + midpoint(fa, fb, digits)\n }\n const i = incrementInteger(ia, digits)\n if (i == null) {\n throw new Error('cannot increment any more')\n }\n if (i < b) {\n return i\n }\n return ia + midpoint(fa, null, digits)\n}\n\n/**\n * same preconditions as generateKeysBetween.\n * n >= 0.\n * Returns an array of n distinct keys in sorted order.\n * If a and b are both null, returns [a0, a1, ...]\n * If one or the other is null, returns consecutive \"integer\"\n * keys. Otherwise, returns relatively short keys between\n * a and b.\n * @param {string | null | undefined} a\n * @param {string | null | undefined} b\n * @param {number} n\n * @param {string} digits\n * @return {string[]}\n */\nexport function generateNKeysBetween(a, b, n, digits = BASE_36_DIGITS) {\n if (n === 0) {\n return []\n }\n if (n === 1) {\n return [generateKeyBetween(a, b, digits)]\n }\n if (b == null) {\n let c = generateKeyBetween(a, b, digits)\n const result = [c]\n for (let i = 0; i < n - 1; i++) {\n c = generateKeyBetween(c, b, digits)\n result.push(c)\n }\n return result\n }\n if (a == null) {\n let c = generateKeyBetween(a, b, digits)\n const result = [c]\n for (let i = 0; i < n - 1; i++) {\n c = generateKeyBetween(a, c, digits)\n result.push(c)\n }\n result.reverse()\n return result\n }\n const mid = Math.floor(n / 2)\n const c = generateKeyBetween(a, b, digits)\n return [\n ...generateNKeysBetween(a, c, mid, digits),\n c,\n ...generateNKeysBetween(c, b, n - mid - 1, digits),\n ]\n}\n"],"names":["BASE_36_DIGITS","midpoint","a","b","digits","zero","Error","slice","n","digitA","indexOf","digitB","length","midDigit","Math","round","validateInteger","int","getIntegerLength","head","charCodeAt","getIntegerPart","key","integerPartLength","validateOrderKey","repeat","i","f","incrementInteger","x","digs","split","carry","d","h","String","fromCharCode","push","pop","join","decrementInteger","borrow","generateKeyBetween","ib","fb","res","ia","fa","generateNKeysBetween","c","result","reverse","mid","floor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/config/orderable/fractional-indexing.js"],"sourcesContent":["// @ts-no-check\n\n/**\n * THIS FILE IS BASED ON:\n * https://github.com/rocicorp/fractional-indexing/blob/main/src/index.js\n *\n * MODIFIED FOR PAYLOAD CMS:\n * - Changed the integer part encoding to use only digits for \"small\" keys and\n * only lowercase letters for \"large\" keys, ensuring consistent ordering\n * across databases with different collations.\n *\n * - Original algorithm used A-Z (uppercase) for \"smaller\" integers and a-z (lowercase)\n * for \"larger\" integers, relying on ASCII ordering where 'Z' < 'a'.\n *\n * - Some databases (e.g., PostgreSQL with default collation) use case-insensitive\n * comparison, treating 'Z' as 'z', which breaks the ordering.\n *\n * - New encoding:\n * - Uses digits '0'-'9' for \"small\" integers (10 values, lengths 11 down to 2)\n * - Uses lowercase 'a'-'z' for \"large\" integers (26 values, lengths 2 up to 27)\n * - Digits ALWAYS sort before letters in both ASCII and case-insensitive orderings.\n *\n * - Ordering: '0...' < '1...' < ... < '9..' < 'a.' < 'b..' < ... < 'z...'\n *\n * BACKWARD COMPATIBILITY:\n * - Existing keys starting with lowercase 'a'-'z' remain valid and work correctly.\n * - Keys starting with uppercase 'A'-'Z' (from the old algorithm) will still be\n * parsed for backward compatibility, but they may sort incorrectly in\n * case-insensitive databases. Consider running a migration to convert them.\n */\n\n// License: CC0 (no rights reserved).\n\n// This is based on https://observablehq.com/@dgreensp/implementing-fractional-indexing\n\nexport const BASE_36_DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz'\n\n// `a` may be empty string, `b` is null or non-empty string.\n// `a < b` lexicographically if `b` is non-null.\n// no trailing zeros allowed.\n// digits is a string such as '0123456789' for base 10. Digits must be in\n// ascending character code order!\n/**\n * @param {string} a\n * @param {string | null | undefined} b\n * @param {string} digits\n * @returns {string}\n */\nfunction midpoint(a, b, digits) {\n const zero = digits[0]\n if (b != null && a >= b) {\n throw new Error(a + ' >= ' + b)\n }\n if (a.slice(-1) === zero || (b && b.slice(-1) === zero)) {\n throw new Error('trailing zero')\n }\n if (b) {\n // remove longest common prefix. pad `a` with 0s as we\n // go. note that we don't need to pad `b`, because it can't\n // end before `a` while traversing the common prefix.\n let n = 0\n while ((a[n] || zero) === b[n]) {\n n++\n }\n if (n > 0) {\n return b.slice(0, n) + midpoint(a.slice(n), b.slice(n), digits)\n }\n }\n // first digits (or lack of digit) are different\n const digitA = a ? digits.indexOf(a[0]) : 0\n const digitB = b != null ? digits.indexOf(b[0]) : digits.length\n if (digitB - digitA > 1) {\n const midDigit = Math.round(0.5 * (digitA + digitB))\n return digits[midDigit]\n } else {\n // first digits are consecutive\n if (b && b.length > 1) {\n return b.slice(0, 1)\n } else {\n // `b` is null or has length 1 (a single digit).\n // the first digit of `a` is the previous digit to `b`,\n // or 9 if `b` is null.\n // given, for example, midpoint('49', '5'), return\n // '4' + midpoint('9', null), which will become\n // '4' + '9' + midpoint('', null), which is '495'\n return digits[digitA] + midpoint(a.slice(1), null, digits)\n }\n }\n}\n\n/**\n * @param {string} int\n * @return {void}\n */\n\nfunction validateInteger(int) {\n if (int.length !== getIntegerLength(int[0])) {\n throw new Error('invalid integer part of order key: ' + int)\n }\n}\n\n/**\n * Returns the length of the integer part based on the head character.\n *\n * New encoding (case-insensitive safe):\n * - SMALL range (digits): '0' = 11 chars, '1' = 10 chars, ..., '9' = 2 chars\n * - LARGE range (lowercase): 'a' = 2 chars, 'b' = 3 chars, ..., 'z' = 27 chars\n *\n * Legacy encoding (for backward compatibility with existing keys):\n * - 'A'-'Z' uppercase: 'A' = 27 chars, 'B' = 26 chars, ..., 'Z' = 2 chars\n *\n * @param {string} head\n * @return {number}\n */\nfunction getIntegerLength(head) {\n if (head >= '0' && head <= '9') {\n return 11 - (head.charCodeAt(0) - '0'.charCodeAt(0))\n } else if (head >= 'a' && head <= 'z') {\n return head.charCodeAt(0) - 'a'.charCodeAt(0) + 2\n } else if (head >= 'A' && head <= 'Z') {\n // Legacy encoding\n return 'Z'.charCodeAt(0) - head.charCodeAt(0) + 2\n } else {\n throw new Error('invalid order key head: ' + head)\n }\n}\n\n/**\n * @param {string} key\n * @return {string}\n */\n\nfunction getIntegerPart(key) {\n const integerPartLength = getIntegerLength(key[0])\n if (integerPartLength > key.length) {\n throw new Error('invalid order key: ' + key)\n }\n return key.slice(0, integerPartLength)\n}\n\n/**\n * Smallest possible key (for validation)\n * '0' + 10 zeros = smallest valid key in new format\n */\nconst SMALLEST_KEY = '0' + BASE_36_DIGITS[0].repeat(10)\n\n/**\n * @param {string} key\n * @param {string} digits\n * @return {void}\n */\n\nfunction validateOrderKey(key, digits) {\n if (key === SMALLEST_KEY) {\n throw new Error('invalid order key: ' + key)\n }\n // Legacy check for old format\n if (key === 'A' + digits[0].repeat(26)) {\n throw new Error('invalid order key: ' + key)\n }\n // getIntegerPart will throw if the first character is bad,\n // or the key is too short. we'd call it to check these things\n // even if we didn't need the result\n const i = getIntegerPart(key)\n const f = key.slice(i.length)\n if (f.slice(-1) === digits[0]) {\n throw new Error('invalid order key: ' + key)\n }\n}\n\n// note that this may return null, as there is a largest integer\n/**\n * @param {string} x\n * @param {string} digits\n * @return {string | null}\n */\nfunction incrementInteger(x, digits) {\n validateInteger(x)\n const [head, ...digs] = x.split('')\n let carry = true\n for (let i = digs.length - 1; carry && i >= 0; i--) {\n const d = digits.indexOf(digs[i]) + 1\n if (d === digits.length) {\n digs[i] = digits[0]\n } else {\n digs[i] = digits[d]\n carry = false\n }\n }\n if (carry) {\n if (head === '9') {\n return 'a' + digits[0]\n }\n // Handle legacy uppercase transition\n if (head === 'Z') {\n return 'a' + digits[0]\n }\n if (head === 'z') {\n return null\n }\n\n let h\n if (head >= '0' && head <= '8') {\n h = String.fromCharCode(head.charCodeAt(0) + 1)\n digs.pop()\n } else if (head >= 'a' && head <= 'y') {\n h = String.fromCharCode(head.charCodeAt(0) + 1)\n digs.push(digits[0])\n } else if (head >= 'A' && head <= 'Y') {\n // Legacy uppercase\n h = String.fromCharCode(head.charCodeAt(0) + 1)\n digs.pop()\n } else {\n throw new Error('invalid head: ' + head)\n }\n return h + digs.join('')\n } else {\n return head + digs.join('')\n }\n}\n\n// note that this may return null, as there is a smallest integer\n/**\n * @param {string} x\n * @param {string} digits\n * @return {string | null}\n */\n\nfunction decrementInteger(x, digits) {\n validateInteger(x)\n const [head, ...digs] = x.split('')\n let borrow = true\n for (let i = digs.length - 1; borrow && i >= 0; i--) {\n const d = digits.indexOf(digs[i]) - 1\n if (d === -1) {\n digs[i] = digits.slice(-1)\n } else {\n digs[i] = digits[d]\n borrow = false\n }\n }\n if (borrow) {\n if (head === 'a') {\n return '9' + digits.slice(-1)\n }\n if (head === '0') {\n return null\n }\n\n let h\n if (head >= '1' && head <= '9') {\n h = String.fromCharCode(head.charCodeAt(0) - 1)\n digs.push(digits.slice(-1))\n } else if (head >= 'b' && head <= 'z') {\n h = String.fromCharCode(head.charCodeAt(0) - 1)\n digs.pop()\n } else if (head >= 'B' && head <= 'Z') {\n // Legacy uppercase\n h = String.fromCharCode(head.charCodeAt(0) - 1)\n digs.push(digits.slice(-1))\n } else if (head === 'A') {\n // Legacy uppercase\n return null\n } else {\n throw new Error('invalid head: ' + head)\n }\n return h + digs.join('')\n } else {\n return head + digs.join('')\n }\n}\n\n// `a` is an order key or null (START).\n// `b` is an order key or null (END).\n// `a < b` lexicographically if both are non-null.\n// digits is a string such as '0123456789' for base 10. Digits must be in\n// ascending character code order!\n/**\n * @param {string | null | undefined} a\n * @param {string | null | undefined} b\n * @param {string=} digits\n * @return {string}\n */\nexport function generateKeyBetween(a, b, digits = BASE_36_DIGITS) {\n if (a != null) {\n validateOrderKey(a, digits)\n }\n if (b != null) {\n validateOrderKey(b, digits)\n }\n if (a != null && b != null && a >= b) {\n throw new Error(a + ' >= ' + b)\n }\n if (a == null) {\n if (b == null) {\n return 'a' + digits[0]\n }\n\n const ib = getIntegerPart(b)\n const fb = b.slice(ib.length)\n if (ib === SMALLEST_KEY) {\n return ib + midpoint('', fb, digits)\n }\n // Legacy check\n if (ib === 'A' + digits[0].repeat(26)) {\n return ib + midpoint('', fb, digits)\n }\n if (ib < b) {\n return ib\n }\n const res = decrementInteger(ib, digits)\n if (res == null) {\n throw new Error('cannot decrement any more')\n }\n return res\n }\n\n if (b == null) {\n const ia = getIntegerPart(a)\n const fa = a.slice(ia.length)\n const i = incrementInteger(ia, digits)\n return i == null ? ia + midpoint(fa, null, digits) : i\n }\n\n const ia = getIntegerPart(a)\n const fa = a.slice(ia.length)\n const ib = getIntegerPart(b)\n const fb = b.slice(ib.length)\n if (ia === ib) {\n return ia + midpoint(fa, fb, digits)\n }\n const i = incrementInteger(ia, digits)\n if (i == null) {\n throw new Error('cannot increment any more')\n }\n if (i < b) {\n return i\n }\n return ia + midpoint(fa, null, digits)\n}\n\n/**\n * same preconditions as generateKeysBetween.\n * n >= 0.\n * Returns an array of n distinct keys in sorted order.\n * If a and b are both null, returns [a0, a1, ...]\n * If one or the other is null, returns consecutive \"integer\"\n * keys. Otherwise, returns relatively short keys between\n * a and b.\n * @param {string | null | undefined} a\n * @param {string | null | undefined} b\n * @param {number} n\n * @param {string} digits\n * @return {string[]}\n */\nexport function generateNKeysBetween(a, b, n, digits = BASE_36_DIGITS) {\n if (n === 0) {\n return []\n }\n if (n === 1) {\n return [generateKeyBetween(a, b, digits)]\n }\n if (b == null) {\n let c = generateKeyBetween(a, b, digits)\n const result = [c]\n for (let i = 0; i < n - 1; i++) {\n c = generateKeyBetween(c, b, digits)\n result.push(c)\n }\n return result\n }\n if (a == null) {\n let c = generateKeyBetween(a, b, digits)\n const result = [c]\n for (let i = 0; i < n - 1; i++) {\n c = generateKeyBetween(a, c, digits)\n result.push(c)\n }\n result.reverse()\n return result\n }\n const mid = Math.floor(n / 2)\n const c = generateKeyBetween(a, b, digits)\n return [\n ...generateNKeysBetween(a, c, mid, digits),\n c,\n ...generateNKeysBetween(c, b, n - mid - 1, digits),\n ]\n}\n"],"names":["BASE_36_DIGITS","midpoint","a","b","digits","zero","Error","slice","n","digitA","indexOf","digitB","length","midDigit","Math","round","validateInteger","int","getIntegerLength","head","charCodeAt","getIntegerPart","key","integerPartLength","SMALLEST_KEY","repeat","validateOrderKey","i","f","incrementInteger","x","digs","split","carry","d","h","String","fromCharCode","pop","push","join","decrementInteger","borrow","generateKeyBetween","ib","fb","res","ia","fa","generateNKeysBetween","c","result","reverse","mid","floor"],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -1115,18 +1115,69 @@ export type Config = {
|
|
|
1115
1115
|
* @see https://payloadcms.com/docs/query-presets/overview
|
|
1116
1116
|
*/
|
|
1117
1117
|
queryPresets?: {
|
|
1118
|
+
/**
|
|
1119
|
+
* Define collection-level access control that applies to all presets globally.
|
|
1120
|
+
* This is separate from document-level access (constraints) which users can configure per-preset.
|
|
1121
|
+
*/
|
|
1118
1122
|
access: {
|
|
1119
1123
|
create?: Access<QueryPreset>;
|
|
1120
1124
|
delete?: Access<QueryPreset>;
|
|
1121
1125
|
read?: Access<QueryPreset>;
|
|
1122
1126
|
update?: Access<QueryPreset>;
|
|
1123
1127
|
};
|
|
1128
|
+
/**
|
|
1129
|
+
* Define custom document-level access control options for presets.
|
|
1130
|
+
*
|
|
1131
|
+
* Payload provides sensible defaults (Only Me, Everyone, Specific Users), but you can
|
|
1132
|
+
* add custom constraints for more complex patterns like RBAC.
|
|
1133
|
+
*
|
|
1134
|
+
* @example
|
|
1135
|
+
* ```ts
|
|
1136
|
+
* constraints: {
|
|
1137
|
+
* read: [
|
|
1138
|
+
* {
|
|
1139
|
+
* label: 'Specific Roles',
|
|
1140
|
+
* value: 'specificRoles',
|
|
1141
|
+
* fields: [
|
|
1142
|
+
* {
|
|
1143
|
+
* name: 'roles',
|
|
1144
|
+
* type: 'select',
|
|
1145
|
+
* hasMany: true,
|
|
1146
|
+
* options: [
|
|
1147
|
+
* { label: 'Admin', value: 'admin' },
|
|
1148
|
+
* { label: 'User', value: 'user' },
|
|
1149
|
+
* ],
|
|
1150
|
+
* },
|
|
1151
|
+
* ],
|
|
1152
|
+
* access: ({ req: { user } }) => ({
|
|
1153
|
+
* 'access.read.roles': { in: [user?.roles] },
|
|
1154
|
+
* }),
|
|
1155
|
+
* },
|
|
1156
|
+
* ],
|
|
1157
|
+
* }
|
|
1158
|
+
* ```
|
|
1159
|
+
*
|
|
1160
|
+
* @see https://payloadcms.com/docs/query-presets/overview#custom-access-control
|
|
1161
|
+
*/
|
|
1124
1162
|
constraints: {
|
|
1125
1163
|
create?: QueryPresetConstraints;
|
|
1126
1164
|
delete?: QueryPresetConstraints;
|
|
1127
1165
|
read?: QueryPresetConstraints;
|
|
1128
1166
|
update?: QueryPresetConstraints;
|
|
1129
1167
|
};
|
|
1168
|
+
/**
|
|
1169
|
+
* Used to dynamically filter which constraints are available based on the current user, document data,
|
|
1170
|
+
* or other criteria.
|
|
1171
|
+
*
|
|
1172
|
+
* Some examples of this might include:
|
|
1173
|
+
*
|
|
1174
|
+
* - Ensuring that only "admins" are allowed to make a preset available to "everyone"
|
|
1175
|
+
* - Preventing the "onlyMe" option from being selected based on a hypothetical "disablePrivatePresets" checkbox
|
|
1176
|
+
*
|
|
1177
|
+
* When a user lacks the permission to set a constraint, the option will either be hidden from them, or disabled if it is already saved to that preset.
|
|
1178
|
+
*
|
|
1179
|
+
* @see https://payloadcms.com/docs/query-presets/overview#constraint-access-control
|
|
1180
|
+
*/
|
|
1130
1181
|
filterConstraints?: SelectField['filterOptions'];
|
|
1131
1182
|
labels?: CollectionConfig['labels'];
|
|
1132
1183
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|