@bemedev/permissions
Version:
A library for managing permissions
1 lines • 2.94 kB
Source Map (JSON)
{"version":3,"file":"typings.cjs","sources":["../src/typings.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { typings as _typings, transform } from '@bemedev/types';\nimport type {\n MapS,\n ObjectS,\n PartialCustom,\n TransformO,\n} from '@bemedev/types/lib/transform/types.types';\nimport type { Config, Roles, Strategy } from './types';\n\ntype RessourcesS = Record<\n string,\n { dataType: ObjectS; actions: string[]; __strategy?: Strategy }\n>;\n\ntype TransformRessources<T extends RessourcesS> = {\n [K in keyof T]: {\n dataType: TransformO<T[K]['dataType']>;\n actions: T[K]['actions'];\n __strategy?: unknown extends T[K]['__strategy']\n ? undefined\n : T[K]['__strategy'];\n };\n};\n\ntype Args = {\n ressources: RessourcesS;\n user: MapS | PartialCustom;\n roles: Roles;\n};\n\ntype TransformArgs<T extends Args> = {\n ressources: TransformRessources<T['ressources']>;\n user: TransformO<T['user']>;\n roles: T['roles'];\n};\n\nconst roles = <const R extends Roles>(roles: R) => roles;\n\nconst user = <\n const Rest extends MapS | PartialCustom = MapS | PartialCustom,\n>(\n __?: Rest,\n) => {\n const rest = transform(__);\n return _typings.commons.unknown<\n Readonly<Omit<typeof rest, '__id' | 'roles'>>\n >();\n};\nconst dataType = <const A extends ObjectS>(dataType: A) =>\n transform(dataType);\n\nconst ressources = <const T extends RessourcesS>(ressources: T) => {\n const entries = Object.entries(ressources) as [\n string,\n { dataType: ObjectS; actions: string[]; __strategy: Strategy },\n ][];\n\n const out = entries.reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: {\n ...value,\n dataType: dataType(value.dataType),\n },\n }),\n {} as TransformRessources<T>,\n );\n\n return out;\n};\n\nexport const typings = <const T extends Args>(args: T) => {\n return {\n ressources: (ressources as any)(args.ressources),\n user: user(args.user),\n roles: roles(args.roles),\n } as TransformArgs<T> satisfies Config;\n};\n"],"names":["transform","_typings"],"mappings":";;;;AAAA;AAsCA,MAAM,KAAK,GAAG,CAAwB,KAAQ,KAAK,KAAK;AAExD,MAAM,IAAI,GAAG,CAGX,EAAS,KACP;AACF,IAAaA,eAAS,CAAC,EAAE;AACzB,IAAA,OAAOC,aAAQ,CAAC,OAAO,CAAC,OAAO,EAE5B;AACL,CAAC;AACD,MAAM,QAAQ,GAAG,CAA0B,QAAW,KACpDD,eAAS,CAAC,QAAQ,CAAC;AAErB,MAAM,UAAU,GAAG,CAA8B,UAAa,KAAI;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAGtC;AAEH,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM;AACtB,QAAA,GAAG,GAAG;QACN,CAAC,GAAG,GAAG;AACL,YAAA,GAAG,KAAK;AACR,YAAA,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;AACnC,SAAA;KACF,CAAC,EACF,EAA4B,CAC7B;AAED,IAAA,OAAO,GAAG;AACZ,CAAC;AAEM,MAAM,OAAO,GAAG,CAAuB,IAAO,KAAI;IACvD,OAAO;AACL,QAAA,UAAU,EAAG,UAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,QAAA,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;KACY;AACxC;;;;"}