{"version":3,"file":"createRPCMiddleware.cjs","sources":["../../src/createRPCMiddleware.ts"],"sourcesContent":["import { Buffer } from \"node:buffer\";\nimport { IncomingMessage, ServerResponse } from \"node:http\";\n\nimport { OnErrorEventHandler, Procedures } from \"./types\";\nimport { handleRPCRequest } from \"./handleRPCRequest\";\n\nexport type RPCMiddleware<TProcedures extends Procedures> = {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t(req: IncomingMessage, res: ServerResponse, next: (err?: Error) => any): void;\n\t_procedures: TProcedures;\n};\n\nexport type CreateRPCMiddlewareArgs<TProcedures extends Procedures> = {\n\tprocedures: TProcedures;\n\tonError?: OnErrorEventHandler;\n};\n\nexport const createRPCMiddleware = <TProcedures extends Procedures>(\n\targs: CreateRPCMiddlewareArgs<TProcedures>,\n): RPCMiddleware<TProcedures> => {\n\tconst fn: RPCMiddleware<TProcedures> = (req, res, next) => {\n\t\tif (req.method !== \"POST\") {\n\t\t\tres.statusCode = 405;\n\n\t\t\tres.end();\n\n\t\t\treturn next();\n\t\t}\n\n\t\tconst requestBodyChunks: Buffer[] = [];\n\n\t\treq.on(\"data\", (chunk) => {\n\t\t\trequestBodyChunks.push(chunk);\n\t\t});\n\n\t\treq.on(\"end\", async () => {\n\t\t\tconst { body, headers, statusCode } = await handleRPCRequest({\n\t\t\t\tprocedures: args.procedures,\n\t\t\t\tbody: Buffer.concat(requestBodyChunks),\n\t\t\t\tonError: args.onError,\n\t\t\t});\n\n\t\t\tif (statusCode) {\n\t\t\t\tres.statusCode = statusCode;\n\t\t\t}\n\n\t\t\tfor (const headerName in headers) {\n\t\t\t\tres.setHeader(headerName, headers[headerName]);\n\t\t\t}\n\n\t\t\tres.end(Buffer.from(body), \"binary\");\n\n\t\t\tnext();\n\t\t});\n\t};\n\n\tfn._procedures = args.procedures;\n\n\treturn fn;\n};\n"],"names":["handleRPCRequest","Buffer"],"mappings":";;;;AAiBa,MAAA,sBAAsB,CAClC,SAC+B;AAC/B,QAAM,KAAiC,CAAC,KAAK,KAAK,SAAQ;AACrD,QAAA,IAAI,WAAW,QAAQ;AAC1B,UAAI,aAAa;AAEjB,UAAI,IAAG;AAEP,aAAO;IACP;AAED,UAAM,oBAA8B,CAAA;AAEhC,QAAA,GAAG,QAAQ,CAAC,UAAS;AACxB,wBAAkB,KAAK,KAAK;AAAA,IAAA,CAC5B;AAEG,QAAA,GAAG,OAAO,YAAW;AACxB,YAAM,EAAE,MAAM,SAAS,WAAY,IAAG,MAAMA,iBAAAA,iBAAiB;AAAA,QAC5D,YAAY,KAAK;AAAA,QACjB,MAAMC,YAAAA,OAAO,OAAO,iBAAiB;AAAA,QACrC,SAAS,KAAK;AAAA,MAAA,CACd;AAED,UAAI,YAAY;AACf,YAAI,aAAa;AAAA,MACjB;AAED,iBAAW,cAAc,SAAS;AACjC,YAAI,UAAU,YAAY,QAAQ,UAAU,CAAC;AAAA,MAC7C;AAED,UAAI,IAAIA,YAAA,OAAO,KAAK,IAAI,GAAG,QAAQ;;KAGnC;AAAA,EAAA;AAGF,KAAG,cAAc,KAAK;AAEf,SAAA;AACR;;"}