Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
282 lines
9.7 KiB
Plaintext
282 lines
9.7 KiB
Plaintext
import type { GraphQLNonNull, GraphQLObjectType } from 'graphql';
|
|
import type { DeepRequired, IsAny } from 'ts-essentials';
|
|
import type { CustomPreviewButton, CustomSaveButton, CustomSaveDraftButton, CustomStatus, PublishButtonClientProps, PublishButtonServerProps, UnpublishButtonClientProps, UnpublishButtonServerProps } from '../../admin/types.js';
|
|
import type { Access, CustomComponent, EditConfig, Endpoint, EntityDescription, EntityDescriptionComponent, GeneratePreviewURL, LabelFunction, LivePreviewConfig, MetaConfig, PayloadComponent, StaticLabel } from '../../config/types.js';
|
|
import type { DBIdentifierName } from '../../database/types.js';
|
|
import type { Field, FlattenedField } from '../../fields/config/types.js';
|
|
import type { GeneratedTypes, GlobalAdminCustom, GlobalCustom, GlobalSlug, RequestContext, TypedGlobal, TypedGlobalSelect } from '../../index.js';
|
|
import type { PayloadRequest, SelectIncludeType, Where } from '../../types/index.js';
|
|
import type { IncomingGlobalVersions, SanitizedGlobalVersions } from '../../versions/types.js';
|
|
export type DataFromGlobalSlug<TSlug extends GlobalSlug> = TypedGlobal[TSlug];
|
|
export type SelectFromGlobalSlug<TSlug extends GlobalSlug> = TypedGlobalSelect[TSlug];
|
|
/**
|
|
* Global slugs that do not have drafts enabled.
|
|
* Detects globals without drafts by checking for the absence of the `_status` field.
|
|
*/
|
|
export type GlobalsWithoutDrafts = {
|
|
[TSlug in GlobalSlug]: DataFromGlobalSlug<TSlug> extends {
|
|
_status?: any;
|
|
} ? never : TSlug;
|
|
}[GlobalSlug];
|
|
/**
|
|
* Conditionally allows or forbids the `draft` property based on global configuration.
|
|
* When `strictDraftTypes` is enabled, the `draft` property is forbidden on globals without drafts.
|
|
*/
|
|
export type DraftFlagFromGlobalSlug<TSlug extends GlobalSlug> = GeneratedTypes extends {
|
|
strictDraftTypes: true;
|
|
} ? TSlug extends GlobalsWithoutDrafts ? {
|
|
/**
|
|
* The `draft` property is not allowed because this global does not have `versions.drafts` enabled.
|
|
*/
|
|
draft?: never;
|
|
} : {
|
|
/**
|
|
* Whether the global should be queried from the versions table/collection or not. [More](https://payloadcms.com/docs/versions/drafts#draft-api)
|
|
*/
|
|
draft?: boolean;
|
|
} : {
|
|
/**
|
|
* Whether the global should be queried from the versions table/collection or not. [More](https://payloadcms.com/docs/versions/drafts#draft-api)
|
|
*/
|
|
draft?: boolean;
|
|
};
|
|
export type BeforeValidateHook = (args: {
|
|
context: RequestContext;
|
|
data?: any;
|
|
/** The global which this hook is being run on */
|
|
global: SanitizedGlobalConfig;
|
|
originalDoc?: any;
|
|
/**
|
|
* Whether access control is being overridden for this operation
|
|
*/
|
|
overrideAccess?: boolean;
|
|
req: PayloadRequest;
|
|
}) => any;
|
|
export type BeforeChangeHook = (args: {
|
|
context: RequestContext;
|
|
data: any;
|
|
/** The global which this hook is being run on */
|
|
global: SanitizedGlobalConfig;
|
|
originalDoc?: any;
|
|
/**
|
|
* Whether access control is being overridden for this operation
|
|
*/
|
|
overrideAccess?: boolean;
|
|
req: PayloadRequest;
|
|
}) => any;
|
|
export type AfterChangeHook = (args: {
|
|
context: RequestContext;
|
|
data: any;
|
|
doc: any;
|
|
/** The global which this hook is being run on */
|
|
global: SanitizedGlobalConfig;
|
|
/**
|
|
* Whether access control is being overridden for this operation
|
|
*/
|
|
overrideAccess?: boolean;
|
|
previousDoc: any;
|
|
req: PayloadRequest;
|
|
}) => any;
|
|
export type BeforeReadHook = (args: {
|
|
context: RequestContext;
|
|
doc: any;
|
|
/** The global which this hook is being run on */
|
|
global: SanitizedGlobalConfig;
|
|
/**
|
|
* Whether access control is being overridden for this operation
|
|
*/
|
|
overrideAccess?: boolean;
|
|
req: PayloadRequest;
|
|
}) => any;
|
|
export type AfterReadHook = (args: {
|
|
context: RequestContext;
|
|
doc: any;
|
|
findMany?: boolean;
|
|
/** The global which this hook is being run on */
|
|
global: SanitizedGlobalConfig;
|
|
/**
|
|
* Whether access control is being overridden for this operation
|
|
*/
|
|
overrideAccess?: boolean;
|
|
query?: Where;
|
|
req: PayloadRequest;
|
|
}) => any;
|
|
export type HookOperationType = 'countVersions' | 'read' | 'restoreVersion' | 'update';
|
|
export type BeforeOperationHook = (args: {
|
|
args?: any;
|
|
context: RequestContext;
|
|
/**
|
|
* The Global which this hook is being run on
|
|
* */
|
|
global: SanitizedGlobalConfig;
|
|
/**
|
|
* Hook operation being performed
|
|
*/
|
|
operation: HookOperationType;
|
|
/**
|
|
* Whether access control is being overridden for this operation
|
|
*/
|
|
overrideAccess?: boolean;
|
|
req: PayloadRequest;
|
|
}) => any;
|
|
export type GlobalAdminOptions = {
|
|
/**
|
|
* Custom admin components
|
|
*/
|
|
components?: {
|
|
elements?: {
|
|
/**
|
|
* Inject custom components before the document controls
|
|
*/
|
|
beforeDocumentControls?: CustomComponent[];
|
|
Description?: EntityDescriptionComponent;
|
|
/**
|
|
* Replaces the "Preview" button
|
|
*/
|
|
PreviewButton?: CustomPreviewButton;
|
|
/**
|
|
* Replaces the "Publish" button
|
|
* + drafts must be enabled
|
|
*/
|
|
PublishButton?: PayloadComponent<PublishButtonServerProps, PublishButtonClientProps>;
|
|
/**
|
|
* Replaces the "Save" button
|
|
* + drafts must be disabled
|
|
*/
|
|
SaveButton?: CustomSaveButton;
|
|
/**
|
|
* Replaces the "Save Draft" button
|
|
* + drafts must be enabled
|
|
* + autosave must be disabled
|
|
*/
|
|
SaveDraftButton?: CustomSaveDraftButton;
|
|
/**
|
|
* Replaces the "Status" section
|
|
*/
|
|
Status?: CustomStatus;
|
|
/**
|
|
* Replaces the "Unpublish" button
|
|
* + drafts must be enabled
|
|
*/
|
|
UnpublishButton?: PayloadComponent<UnpublishButtonServerProps, UnpublishButtonClientProps>;
|
|
};
|
|
views?: {
|
|
/**
|
|
* Set to a React component to replace the entire Edit View, including all nested routes.
|
|
* Set to an object to replace or modify individual nested routes, or to add new ones.
|
|
*/
|
|
edit?: EditConfig;
|
|
};
|
|
};
|
|
/** Extension point to add your custom data. Available in server and client. */
|
|
custom?: GlobalAdminCustom;
|
|
/**
|
|
* Custom description for collection
|
|
*/
|
|
description?: EntityDescription;
|
|
/**
|
|
* Specify a navigational group for globals in the admin sidebar.
|
|
* - Provide a string to place the entity in a custom group.
|
|
* - Provide a record to define localized group names.
|
|
* - Set to `false` to exclude the entity from the sidebar / dashboard without disabling its routes.
|
|
*/
|
|
group?: false | Record<string, string> | string;
|
|
/**
|
|
* Exclude the global from the admin nav and routes
|
|
*/
|
|
hidden?: ((args: {
|
|
user: PayloadRequest['user'];
|
|
}) => boolean) | boolean;
|
|
/**
|
|
* Hide the API URL within the Edit View
|
|
*/
|
|
hideAPIURL?: boolean;
|
|
/**
|
|
* Live preview options
|
|
*/
|
|
livePreview?: LivePreviewConfig;
|
|
meta?: MetaConfig;
|
|
/**
|
|
* Function to generate custom preview URL
|
|
*/
|
|
preview?: GeneratePreviewURL;
|
|
};
|
|
export type GlobalConfig<TSlug extends GlobalSlug = any> = {
|
|
/**
|
|
* Do not set this property manually. This is set to true during sanitization, to avoid
|
|
* sanitizing the same global multiple times.
|
|
*/
|
|
_sanitized?: boolean;
|
|
access?: {
|
|
read?: Access;
|
|
readVersions?: Access;
|
|
update?: Access;
|
|
};
|
|
admin?: GlobalAdminOptions;
|
|
/** Extension point to add your custom data. Server only. */
|
|
custom?: GlobalCustom;
|
|
/**
|
|
* Customize the SQL table name
|
|
*/
|
|
dbName?: DBIdentifierName;
|
|
endpoints?: false | Omit<Endpoint, 'root'>[];
|
|
fields: Field[];
|
|
/**
|
|
* Specify which fields should be selected always, regardless of the `select` query which can be useful that the field exists for access control / hooks
|
|
*/
|
|
forceSelect?: IsAny<SelectFromGlobalSlug<TSlug>> extends true ? SelectIncludeType : SelectFromGlobalSlug<TSlug>;
|
|
graphQL?: {
|
|
disableMutations?: true;
|
|
disableQueries?: true;
|
|
name?: string;
|
|
} | false;
|
|
hooks?: {
|
|
afterChange?: AfterChangeHook[];
|
|
afterRead?: AfterReadHook[];
|
|
beforeChange?: BeforeChangeHook[];
|
|
beforeOperation?: BeforeOperationHook[];
|
|
beforeRead?: BeforeReadHook[];
|
|
beforeValidate?: BeforeValidateHook[];
|
|
};
|
|
label?: LabelFunction | StaticLabel;
|
|
/**
|
|
* Enables / Disables the ability to lock documents while editing
|
|
* @default true
|
|
*/
|
|
lockDocuments?: {
|
|
duration: number;
|
|
} | false;
|
|
slug: string;
|
|
/**
|
|
* Options used in typescript generation
|
|
*/
|
|
typescript?: {
|
|
/**
|
|
* Typescript generation name given to the interface type
|
|
*/
|
|
interface?: string;
|
|
};
|
|
versions?: boolean | IncomingGlobalVersions;
|
|
};
|
|
export interface SanitizedGlobalConfig extends Omit<DeepRequired<GlobalConfig>, 'endpoints' | 'fields' | 'slug' | 'versions'> {
|
|
endpoints: Endpoint[] | false;
|
|
fields: Field[];
|
|
/**
|
|
* Fields in the database schema structure
|
|
* Rows / collapsible / tabs w/o name `fields` merged to top, UIs are excluded
|
|
*/
|
|
flattenedFields: FlattenedField[];
|
|
slug: GlobalSlug;
|
|
versions?: SanitizedGlobalVersions;
|
|
}
|
|
export type Globals = {
|
|
config: SanitizedGlobalConfig[];
|
|
graphQL?: {
|
|
[slug: string]: {
|
|
mutationInputType: GraphQLNonNull<any>;
|
|
type: GraphQLObjectType;
|
|
versionType?: GraphQLObjectType;
|
|
};
|
|
} | false;
|
|
};
|
|
//# sourceMappingURL=types.d.ts.map |