@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 1.93 kB
Source Map (JSON)
{"version":3,"file":"collection-permissions.mjs","names":[],"sources":["../../../src/libs/permission/collection-permissions.ts"],"sourcesContent":["import type CollectionBuilder from \"../collection/builders/collection-builder/index.js\";\nimport type {\n\tCollectionPermission,\n\tCollectionPermissionAction,\n} from \"./types.js\";\n\ntype CollectionPermissions = {\n\t[TAction in CollectionPermissionAction]: CollectionPermission<TAction>;\n};\n\nexport const collectionPermissionActions = [\n\t\"read\",\n\t\"create\",\n\t\"update\",\n\t\"delete\",\n\t\"restore\",\n\t\"publish\",\n\t\"review\",\n] as const satisfies CollectionPermissionAction[];\n\n/** Builds the canonical document permission for one registered collection. */\nexport const getCollectionPermission = <\n\tTAction extends CollectionPermissionAction,\n>(\n\tcollectionKey: string,\n\taction: TAction,\n): CollectionPermission<TAction> => `documents:${collectionKey}:${action}`;\n\n/** Resolves the document permission required for a collection action. */\nexport const resolveCollectionPermission = <\n\tTAction extends CollectionPermissionAction,\n>(params: {\n\tcollection: CollectionBuilder;\n\taction: TAction;\n}): CollectionPermission<TAction> => {\n\treturn getCollectionPermission(params.collection.key, params.action);\n};\n\n/** Expands every generated document permission for a collection. */\nexport const resolveCollectionPermissions = (\n\tcollection: CollectionBuilder,\n): CollectionPermissions => {\n\treturn Object.fromEntries(\n\t\tcollectionPermissionActions.map((action) => [\n\t\t\taction,\n\t\t\tgetCollectionPermission(collection.key, action),\n\t\t]),\n\t) as CollectionPermissions;\n};\n"],"mappings":"AAUA,MAAa,EAA8B,CAC1C,OACA,SACA,SACA,SACA,UACA,UACA,QACD,EAGa,GAGZ,EACA,IACmC,aAAa,EAAc,GAAG,IAGrD,EAEX,GAIM,EAAwB,EAAO,WAAW,IAAK,EAAO,MAAM,EAIvD,EACZ,GAEO,OAAO,YACb,EAA4B,IAAK,GAAW,CAC3C,EACA,EAAwB,EAAW,IAAK,CAAM,CAC/C,CAAC,CACF"}