Use Node XLSX reader in campaign import tests
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user