diff --git a/src/index.ts b/src/index.ts index 1632f30..a1b2931 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,12 +22,12 @@ import { getS3DataTemplatesRoute } from "./routes/data/s3/templates.js"; import { getIPFSDataRoute } from "./routes/data/ipfs.js"; const DEV = process.env.NODE_ENV !== "production"; +if (DEV) (await import("dotenv")).config(); + const DISABLE_IPFS_PERSISTENCE = process.env.DISABLE_IPFS_PERSISTENCE === "true"; const start = async () => { - if (DEV) (await import("dotenv")).config(); - const HOST = requireEnv({ name: "HOST" }); const PORT = requireEnv({ name: "PORT" }); const server = createServer({ diff --git a/src/routes/data/s3/templates.ts b/src/routes/data/s3/templates.ts index a1ce3de..df45020 100644 --- a/src/routes/data/s3/templates.ts +++ b/src/routes/data/s3/templates.ts @@ -60,7 +60,7 @@ export const getS3DataTemplatesRoute = async ({ allow: "multipart/form-data", maxBytes: 5_000_000, // 5Mb multipart: { - output: "stream", + output: "data", }, parse: true, timeout: 60000, @@ -79,7 +79,7 @@ export const getS3DataTemplatesRoute = async ({ }, }, handler: async (request, h) => { - const template = request.payload as Record; + const template = request.payload as Record; for (let fileName of Object.keys(request.payload)) { if (fileName === "/__car" || fileName === "__car") { return badRequest( diff --git a/src/utils.ts b/src/utils.ts index ff55589..cdfd704 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -294,21 +294,16 @@ export const ipfsEncodeJSON = async ({ }; interface DirectoryToCARParams { - directory: Record; + directory: Record; } export const ipfsEncodeDirectory = async ({ directory, }: DirectoryToCARParams): Promise => { - const streamableFiles = Object.entries(directory).map( - ([fileName, readable]) => { - return { - name: fileName, - stream: () => Readable.toWeb(readable), - }; - }, - ); - const encodedDirectory = await UnixFS.encodeDirectory(streamableFiles); + const files = Object.entries(directory).map(([fileName, buffer]) => { + return new File([buffer], fileName); + }); + const encodedDirectory = await UnixFS.encodeDirectory(files); const car = await CAR.encode(encodedDirectory.blocks, encodedDirectory.cid); return { cid: encodedDirectory.cid.toString(), car }; };