@toolpad/utils
Version:
Shared utilities used by Toolpad packages.
1 lines • 1.75 kB
Source Map (JSON)
{"version":3,"sources":["../src/http.ts"],"sourcesContent":["import * as http from 'http';\nimport invariant from 'invariant';\n\n/**\n * A Promise wrapper for server.listen\n */\nexport async function listen(handler: http.RequestListener | http.Server, port?: number) {\n const server = typeof handler === 'function' ? http.createServer(handler) : handler;\n let app: http.Server | undefined;\n await new Promise((resolve, reject) => {\n app = server.listen(port);\n app.once('listening', resolve);\n app.once('error', reject);\n });\n\n const address = app?.address();\n invariant(address && typeof address === 'object', 'expected address to be an AddressInfo object');\n\n return {\n port: address.port,\n async close() {\n await new Promise<void>((resolve, reject) => {\n if (app) {\n app.close((err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n } else {\n resolve();\n }\n });\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAsB;AACtB,uBAAsB;AAKtB,eAAsB,OAAO,SAA6C,MAAe;AACvF,QAAM,SAAS,OAAO,YAAY,aAAkB,kBAAa,OAAO,IAAI;AAC5E,MAAI;AACJ,QAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACrC,UAAM,OAAO,OAAO,IAAI;AACxB,QAAI,KAAK,aAAa,OAAO;AAC7B,QAAI,KAAK,SAAS,MAAM;AAAA,EAC1B,CAAC;AAED,QAAM,UAAU,KAAK,QAAQ;AAC7B,uBAAAA,SAAU,WAAW,OAAO,YAAY,UAAU,8CAA8C;AAEhG,SAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,MAAM,QAAQ;AACZ,YAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAC3C,YAAI,KAAK;AACP,cAAI,MAAM,CAAC,QAAQ;AACjB,gBAAI,KAAK;AACP,qBAAO,GAAG;AAAA,YACZ,OAAO;AACL,sBAAQ;AAAA,YACV;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,kBAAQ;AAAA,QACV;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":["invariant"]}