Skip to content

SubjectMap

SubjectMap<TResources, TCustomResources, TUserSlug, TOrgSlug, TCustomActions> = { [R in TResources[number] as ExtractSlug<R>]: { action: CrudAction | (HasDrafts<R> extends true ? DraftAction : never) | CustomActionsFor<ExtractSlug<R>, TCustomActions>[“query”] | CustomActionsFor<ExtractSlug<R>, TCustomActions>[“mutation”]; data: DeclaredDoc<InferDocType<R>>; indexes: ExtractIndexNames<R>; indexFields: ExtractIndexFields<R>; queryAction: QueryAction | CustomActionsFor<ExtractSlug<R>, TCustomActions>[“query”] } } & { [K in keyof TCustomResources]: { action: TCustomResources[K]["actions"][number]; data: TCustomResources[K]["data"] extends DataTypeCarrier<infer D> ? D : never; indexes: never; indexFields: {}; queryAction: never } } & { [K in AdminCustomSubjectSlug]: { action: typeof ADMIN_CUSTOM_SUBJECTS[K]["actions"][number]; data: never; indexes: never; indexFields: {}; queryAction: never } } & Omit<AuthSubjects<TUserSlug, TOrgSlug, TCustomActions>, ExtractSlug<TResources[number]> | keyof TCustomResources | AdminCustomSubjectSlug>

Defined in: packages/core/src/access/types.ts:582

The complete subject registry: resources (keyed by slug, CRUD + conditional draft actions), custom resources, and the core built-in subjects from ADMIN_CUSTOM_SUBJECTS.

TResources extends readonly AccessResource[] = AccessResource[]

Structural resource tuple ({ slug, versions? }).

TCustomResources extends Record<string, CustomResourceInput> = Record<string, CustomResourceInput>

Custom resource declarations.

TUserSlug extends CollectionSlug = CollectionSlug

User collection slug

TOrgSlug extends CollectionSlug | undefined = undefined

Organization collection slug

TCustomActions extends Partial<Record<TResources[number]["slug"] | TUserSlug | Extract<TOrgSlug, string>, CustomActionsInput>> = { }

extends Record<string, CustomActionsInput> = {}, // NEW