in lambda/dynamic-fronts-fetcher/src/url-handling.ts [34:69]
export async function retrieveContent(file: File): Promise<IncomingDataRow[]> {
const content = await consumeReadable(file.createReadStream());
console.log(`debug: ${file.name} contents:`);
const objects = content.toString('utf-8').split('\n');
for (const line of objects) {
console.log(` ${line}`);
}
return objects
.map((str, ctr) => {
try {
if (IsEmpty.test(str)) return undefined;
return JSON.parse(str) as unknown;
} catch (err) {
console.warn(
`Unparseable content at line ${ctr} of ${file.bucket.name}:${file.name} - '${str}'`,
);
return undefined;
}
})
.map((obj, ctr) => {
if (!obj) return undefined;
const result = IncomingDataRow.safeParse(obj);
if (result.success) {
return result.data;
} else {
console.warn(
`Data from line ${ctr} did not marshal: ${result.error.toString()}. Content was '${JSON.stringify(
obj,
)}'.`,
);
return undefined;
}
})
.filter((obj) => !!obj) as IncomingDataRow[];
}