Use Node XLSX reader in campaign import tests

This commit is contained in:
2026-07-11 00:59:44 +02:00
parent 54c9881a25
commit 083c089003

View File

@@ -4,6 +4,7 @@ type XlsxWorkbookSheet = {
data: unknown[][];
};
type XlsxWorkbookReader = (input: ArrayBuffer) => Promise<XlsxWorkbookSheet[]>;
type RawXlsxWorkbookReader = (input: unknown) => Promise<XlsxWorkbookSheet[]>;
export type ImportFieldDefinition = {
name: string;
@@ -210,6 +211,15 @@ async function loadXlsxWorkbookReader(): Promise<XlsxWorkbookReader> {
const module = await import("read-excel-file/browser");
return module.default as XlsxWorkbookReader;
}
const globals = globalThis as typeof globalThis & {
Buffer?: { from(input: ArrayBuffer): unknown };
process?: { versions?: { node?: string } };
};
if (globals.process?.versions?.node && globals.Buffer?.from) {
const dynamicImport = new Function("specifier", "return import(specifier)") as (specifier: string) => Promise<{ default: RawXlsxWorkbookReader }>;
const module = await dynamicImport("read-excel-file/node");
return (input: ArrayBuffer) => module.default(globals.Buffer!.from(input));
}
const module = await import("read-excel-file/universal");
return module.default as XlsxWorkbookReader;
}