@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
1 lines • 3.8 kB
Source Map (JSON)
{"version":3,"sources":["../src/start.ts"],"names":["start","config","then","logger","startWithLoggerAndConfig","catch","shutdownRequests","handleError","exc","error","process","exit","finish","exitCode","run","setUncaughtExceptionCaptureCallback","on","log","shutdown","mod","console","dump","err","teardown","undefined","isShuttingDown"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;AAEO,SAASA,KAAT,CAAeC,MAAf,EAAuC;AAC5C,oDAA2BA,MAA3B,EACGC,IADH,CACSC,MAAD,IAAY;AAChBC,IAAAA,wBAAwB,CAACH,MAAD,EAASE,MAAT,CAAxB;AACD,GAHH,EAIGE,KAJH,CAIS,MAAM;AACX;AACA;AACA;AACD,GARH;AASD;;AAED,IAAIC,gBAAgB,GAAG,CAAvB;;AAEA,SAASF,wBAAT,CAAkCH,MAAlC,EAA0DE,MAA1D,EAA+E;AAC7E,WAASI,WAAT,CAAqBC,GAArB,EAAmC;AACjCL,IAAAA,MAAM,CAACM,KAAP,CAAa,MAAb,EAAqBD,GAArB;AACAE,IAAAA,OAAO,CAACC,IAAR,CAAa,CAAb;AACD;;AAED,WAASC,MAAT,GAAkB;AAChBF,IAAAA,OAAO,CAACG,QAAR,GAAmB,CAAnB;AACD;;AAED,iBAAeC,GAAf,GAAqB;AACnBJ,IAAAA,OAAO,CAACK,mCAAR,CAA4CR,WAA5C;AAEAG,IAAAA,OAAO,CAACM,EAAR,CAAW,QAAX,EAAqB,MAAM;AACzBb,MAAAA,MAAM,CAACc,GAAP,CAAW,oCAAX;AAEAC,MAAAA,QAAQ,GAAGhB,IAAX,CAAgBU,MAAhB,EAAwBP,KAAxB,CAA8BE,WAA9B;AAEAD,MAAAA,gBAAgB,IAAI,CAApB;;AACA,UAAIA,gBAAgB,GAAG,CAAvB,EAA0B;AACxB,qEAAO,SAAP,IACGJ,IADH,CACSiB,GAAD,IAAS;AACbC,UAAAA,OAAO,CAACH,GAAR,CAAY,oBAAZ;AACAE,UAAAA,GAAG,CAACE,IAAJ;AACAD,UAAAA,OAAO,CAACH,GAAR,CAAY,GAAZ;AACD,SALH,EAMGZ,KANH,CAMUiB,GAAD,IAAS;AACdF,UAAAA,OAAO,CAACH,GAAR,CAAYK,GAAZ;AACD,SARH;AASD;;AACD,UAAIhB,gBAAgB,GAAG,CAAvB,EAA0B;AACxBI,QAAAA,OAAO,CAACC,IAAR,CAAa,CAAb;AACD;AACF,KApBD;AAsBAD,IAAAA,OAAO,CAACM,EAAR,CAAW,SAAX,EAAsB,MAAM;AAC1Bb,MAAAA,MAAM,CAACc,GAAP,CAAW,qCAAX;AAEAC,MAAAA,QAAQ,GAAGhB,IAAX,CAAgBU,MAAhB,EAAwBP,KAAxB,CAA8BE,WAA9B;AACD,KAJD;AAMA,UAAMgB,QAAQ,GAAG,MAAM,0BAAUtB,MAAV,EAAkBuB,SAAlB,EAA6BrB,MAA7B,CAAvB;AAEA,QAAIsB,cAAc,GAAG,KAArB;;AACA,UAAMP,QAAQ,GAAG,YAAY;AAC3B,UAAIO,cAAJ,EAAoB;AAClB;AACD;;AACDA,MAAAA,cAAc,GAAG,IAAjB;AACA,YAAMF,QAAQ,EAAd;AACD,KAND;AAOD;;AAEDT,EAAAA,GAAG,GAAGT,KAAN,CAAYE,WAAZ;AACD","sourcesContent":["import { startCore } from './startCore';\nimport { IServiceConfig, BasicLogger } from './shared';\nimport { initializeLoggerOrFallback } from './setup/initializeLogger';\n\nexport function start(config: IServiceConfig) {\n initializeLoggerOrFallback(config)\n .then((logger) => {\n startWithLoggerAndConfig(config, logger);\n })\n .catch(() => {\n // logger initialization cannot throw\n // this handler here is to supress warning\n return;\n });\n}\n\nlet shutdownRequests = 0;\n\nfunction startWithLoggerAndConfig(config: IServiceConfig, logger: BasicLogger) {\n function handleError(exc: unknown) {\n logger.error('💥 ', exc);\n process.exit(1);\n }\n\n function finish() {\n process.exitCode = 0;\n }\n\n async function run() {\n process.setUncaughtExceptionCaptureCallback(handleError);\n\n process.on('SIGINT', () => {\n logger.log('\\nShutting down due to SIGINT...\\n');\n\n shutdown().then(finish).catch(handleError);\n\n shutdownRequests += 1;\n if (shutdownRequests > 1) {\n import('wtfnode')\n .then((mod) => {\n console.log('== Open Handles ==');\n mod.dump();\n console.log(' ');\n })\n .catch((err) => {\n console.log(err);\n });\n }\n if (shutdownRequests > 5) {\n process.exit(1);\n }\n });\n\n process.on('SIGTERM', () => {\n logger.log('\\nShutting down due to SIGTERM...\\n');\n\n shutdown().then(finish).catch(handleError);\n });\n\n const teardown = await startCore(config, undefined, logger);\n\n let isShuttingDown = false;\n const shutdown = async () => {\n if (isShuttingDown) {\n return;\n }\n isShuttingDown = true;\n await teardown();\n };\n }\n\n run().catch(handleError);\n}\n"],"file":"start.js"}