UNPKG

2.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"defineAkteFile.js","sources":["../../src/defineAkteFile.ts"],"sourcesContent":["import {\n\tAkteFiles,\n\ttype FilesBulkDataFn,\n\ttype FilesDataFn,\n\ttype FilesDefinition,\n} from \"./AkteFiles\";\nimport type { Empty } from \"./types\";\n\ntype FileDefinition<TGlobalData, TData> = Omit<\n\tFilesDefinition<TGlobalData, never[], TData>,\n\t\"bulkData\"\n>;\n\n/**\n * Creates an Akte files instance for a single file.\n *\n * @example\n * \tconst posts = defineAkteFile().from({\n * \t\tpath: \"/about\",\n * \t\tdata() {\n * \t\t\treturn {};\n * \t\t},\n * \t\trender(context) {\n * \t\t\treturn \"...\";\n * \t\t},\n * \t});\n *\n * @typeParam TGlobalData - Global data the Akte files expects.\n * @typeParam TData - Data the Akte files expects (inferred by default)\n * @returns A factory to create the Akte files from.\n */\nexport const defineAkteFile = <TGlobalData, TData = Empty>(): {\n\t/**\n\t * Creates an Akte files instance for a single file from a definition.\n\t *\n\t * @param definition - The definition to create the instance from.\n\t * @returns The created Akte files.\n\t */\n\tfrom: <\n\t\t_TGlobalData extends TGlobalData,\n\t\t_TData extends TData extends Empty\n\t\t\t? _TDataFn extends FilesDataFn<_TGlobalData, never[], unknown>\n\t\t\t\t? Awaited<ReturnType<_TDataFn>>\n\t\t\t\t: undefined\n\t\t\t: TData,\n\t\t_TDataFn extends FilesDataFn<_TGlobalData, never[], unknown> | undefined,\n\t>(\n\t\tdefinition: FileDefinition<_TGlobalData, _TData>,\n\t) => AkteFiles<_TGlobalData, never[], _TData>;\n} => {\n\treturn {\n\t\tfrom: (definition) => {\n\t\t\ttype _FileDataFn = Required<typeof definition>[\"data\"];\n\n\t\t\t// Allows single file to still get build without any data function\n\t\t\tconst data = (() => {}) as unknown as _FileDataFn;\n\n\t\t\tconst bulkData: FilesBulkDataFn<\n\t\t\t\tParameters<_FileDataFn>[0][\"globalData\"],\n\t\t\t\tAwaited<ReturnType<_FileDataFn>>\n\t\t\t> = async (args) => {\n\t\t\t\tif (definition.data) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t[definition.path]: await definition.data({\n\t\t\t\t\t\t\tpath: definition.path,\n\t\t\t\t\t\t\tparams: {},\n\t\t\t\t\t\t\tglobalData: args.globalData,\n\t\t\t\t\t\t}),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn { [definition.path]: {} as Awaited<ReturnType<_FileDataFn>> };\n\t\t\t};\n\n\t\t\treturn new AkteFiles({\n\t\t\t\tdata,\n\t\t\t\t...definition,\n\t\t\t\tbulkData,\n\t\t\t});\n\t\t},\n\t};\n};\n"],"names":[],"mappings":";AA+BO,MAAM,iBAAiB,MAkB1B;AACI,SAAA;AAAA,IACN,MAAM,CAAC,eAAc;AAIpB,YAAM,OAAQ,MAAO;AAAA,MAAA;AAEf,YAAA,WAGF,OAAO,SAAQ;AAClB,YAAI,WAAW,MAAM;AACb,iBAAA;AAAA,YACN,CAAC,WAAW,IAAI,GAAG,MAAM,WAAW,KAAK;AAAA,cACxC,MAAM,WAAW;AAAA,cACjB,QAAQ,CAAE;AAAA,cACV,YAAY,KAAK;AAAA,YAAA,CACjB;AAAA,UAAA;AAAA,QAEF;AAED,eAAO,EAAE,CAAC,WAAW,IAAI,GAAG,CAAsC,EAAA;AAAA,MAAA;AAGnE,aAAO,IAAI,UAAU;AAAA,QACpB;AAAA,QACA,GAAG;AAAA,QACH;AAAA,MAAA,CACA;AAAA,IACF;AAAA,EAAA;AAEF;"}
\No newline at end of file