flightdeck 0.2.31 → 0.2.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lib.js CHANGED
@@ -1,4 +1,4 @@
1
- import { FLIGHTDECK_ERROR, FLIGHTDECK_INFO, FLIGHTDECK_LNAV_FORMAT, FLIGHTDECK_SETUP_PHASES, FLIGHTDECK_UPDATE_PHASES, FLIGHTDECK_WARN, FlightDeck, FlightDeckLogger, flightDeckLogSchema, isVersionNumber } from "./flightdeck.lib-C59Q6GuJ.js";
1
+ import { FLIGHTDECK_ERROR, FLIGHTDECK_INFO, FLIGHTDECK_LNAV_FORMAT, FLIGHTDECK_SETUP_PHASES, FLIGHTDECK_UPDATE_PHASES, FLIGHTDECK_WARN, FlightDeck, FlightDeckLogger, flightDeckLogSchema, isVersionNumber } from "./flightdeck.lib-DKgZNVMu.js";
2
2
  import { klaxon_lib_exports } from "./klaxon.lib-CNw2A3ce.js";
3
3
 
4
4
  export { FLIGHTDECK_ERROR, FLIGHTDECK_INFO, FLIGHTDECK_LNAV_FORMAT, FLIGHTDECK_SETUP_PHASES, FLIGHTDECK_UPDATE_PHASES, FLIGHTDECK_WARN, FlightDeck, FlightDeckLogger, klaxon_lib_exports as Klaxon, flightDeckLogSchema, isVersionNumber };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flightdeck",
3
- "version": "0.2.31",
3
+ "version": "0.2.33",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "Jeremy Banka",
@@ -29,24 +29,24 @@
29
29
  "dependencies": {
30
30
  "@t3-oss/env-core": "0.13.4",
31
31
  "cron": "4.3.0",
32
- "zod": "3.24.3",
33
- "atom.io": "0.33.2",
32
+ "zod": "3.24.4",
34
33
  "comline": "0.2.5",
35
- "safedeposit": "0.1.1"
34
+ "safedeposit": "0.1.1",
35
+ "atom.io": "0.33.3"
36
36
  },
37
37
  "devDependencies": {
38
- "@types/bun": "npm:bun-types@1.2.11",
38
+ "@types/bun": "npm:bun-types@1.2.13",
39
39
  "@biomejs/js-api": "0.7.1",
40
40
  "@biomejs/wasm-nodejs": "1.9.4",
41
- "@types/node": "22.15.3",
41
+ "@types/node": "22.15.18",
42
42
  "@types/tmp": "0.2.6",
43
43
  "concurrently": "9.1.2",
44
- "eslint": "9.26.0",
44
+ "eslint": "9.27.0",
45
45
  "json-schema-to-zod": "2.6.1",
46
46
  "rimraf": "6.0.1",
47
47
  "tmp": "0.2.3",
48
- "tsdown": "0.10.2",
49
- "vitest": "3.1.2",
48
+ "tsdown": "0.11.11",
49
+ "vitest": "3.1.3",
50
50
  "varmint": "0.5.0"
51
51
  },
52
52
  "scripts": {
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/only-throw-error */
1
2
  import { execSync, spawn } from "node:child_process"
2
3
  import { createServer } from "node:http"
3
4
  import { homedir } from "node:os"
@@ -169,7 +170,7 @@ export class FlightDeck<S extends string = string> {
169
170
  this.logger.info(`> storage("updatePhase") >`, updatePhase)
170
171
  if (updatePhase === `notified`) {
171
172
  this.updateAvailabilityChecker = new CronJob(
172
- `30 * * * * *`,
173
+ `*/30 * * * * *`,
173
174
  async () => {
174
175
  await this.seekUpdate(versionForeignInput)
175
176
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"flightdeck.lib-C59Q6GuJ.js","names":["version: string","options: FlightDeckOptions<S>","data: Uint8Array[]","serviceName: S","packageName: string","processCode: number","serviceName?: string","options?: { jsonLogging: boolean }","level:\n\t\t\t| typeof FLIGHTDECK_ERROR\n\t\t\t| typeof FLIGHTDECK_INFO\n\t\t\t| typeof FLIGHTDECK_WARN","log: FlightDeckLog"],"sources":["../src/flightdeck.env.ts","../src/flightdeck.lib.ts"],"sourcesContent":["import { createEnv } from \"@t3-oss/env-core\"\nimport { z } from \"zod\"\n\nexport const env = createEnv({\n\tserver: { FLIGHTDECK_SECRET: z.string().optional() },\n\tclientPrefix: `NEVER`,\n\tclient: {},\n\truntimeEnv: import.meta.env as Record<string, string>,\n\temptyStringAsUndefined: true,\n})\n","import { execSync, spawn } from \"node:child_process\"\nimport { createServer } from \"node:http\"\nimport { homedir } from \"node:os\"\nimport { resolve } from \"node:path\"\nimport { inspect } from \"node:util\"\n\nimport { Future } from \"atom.io/internal\"\nimport { discoverType } from \"atom.io/introspection\"\nimport { fromEntries, toEntries } from \"atom.io/json\"\nimport { ChildSocket } from \"atom.io/realtime-server\"\nimport { CronJob } from \"cron\"\nimport { FilesystemStorage } from \"safedeposit\"\nimport { z } from \"zod\"\n\nimport type { LnavFormat } from \"../gen/lnav-format-schema.gen\"\nimport { env } from \"./flightdeck.env\"\n\nexport const FLIGHTDECK_SETUP_PHASES = [`downloaded`, `installed`] as const\n\nexport type FlightDeckSetupPhase = (typeof FLIGHTDECK_SETUP_PHASES)[number]\n\nexport const FLIGHTDECK_UPDATE_PHASES = [`notified`, `confirmed`] as const\n\nexport type FlightDeckUpdatePhase = (typeof FLIGHTDECK_UPDATE_PHASES)[number]\n\nexport function isVersionNumber(version: string): boolean {\n\treturn (\n\t\t/^\\d+\\.\\d+\\.\\d+$/.test(version) || !Number.isNaN(Number.parseFloat(version))\n\t)\n}\n\nexport type FlightDeckOptions<S extends string = string> = {\n\tpackageName: string\n\tservices: { [service in S]: { run: string; waitFor: boolean } }\n\tscripts: {\n\t\tdownload: string\n\t\tinstall: string\n\t\tcheckAvailability?: string\n\t}\n\tport?: number | undefined\n\tflightdeckRootDir?: string | undefined\n\tjsonLogging?: boolean | undefined\n}\n\nexport class FlightDeck<S extends string = string> {\n\tpublic readonly options: FlightDeckOptions<S>\n\tprotected safety = 0\n\n\tprotected storage: FilesystemStorage<{\n\t\tsetupPhase: FlightDeckSetupPhase\n\t\tupdatePhase: FlightDeckUpdatePhase\n\t\tupdateAwaitedVersion: string\n\t}>\n\tprotected services: {\n\t\t[service in S]: ChildSocket<\n\t\t\t{ timeToStop: []; updatesReady: [] },\n\t\t\t{ readyToUpdate: []; alive: [] }\n\t\t> | null\n\t}\n\tprotected serviceIdx: { readonly [service in S]: number }\n\tpublic defaultServicesReadyToUpdate: { readonly [service in S]: boolean }\n\tpublic servicesReadyToUpdate: { [service in S]: boolean }\n\tpublic autoRespawnDeadServices: boolean\n\n\tprotected logger: Pick<Console, `error` | `info` | `warn`>\n\tprotected serviceLoggers: {\n\t\treadonly [service in S]: FlightDeckLogger\n\t}\n\n\tprotected updateAvailabilityChecker: CronJob | null = null\n\n\tpublic servicesLive: Future<void>[]\n\tpublic servicesDead: Future<void>[]\n\tpublic live = new Future(() => {})\n\tpublic dead = new Future(() => {})\n\n\tprotected restartTimes: number[] = []\n\n\tpublic constructor(options: FlightDeckOptions<S>) {\n\t\tthis.options = options\n\t\tconst { FLIGHTDECK_SECRET } = env\n\t\tconst { flightdeckRootDir = resolve(homedir(), `.flightdeck`) } = options\n\t\tconst port = options.port ?? 8080\n\t\tconst origin = `http://localhost:${port}`\n\n\t\tconst servicesEntries = toEntries(options.services)\n\t\tthis.services = fromEntries(\n\t\t\tservicesEntries.map(([serviceName]) => [serviceName, null]),\n\t\t)\n\t\tthis.serviceIdx = fromEntries(\n\t\t\tservicesEntries.map(([serviceName], idx) => [serviceName, idx]),\n\t\t)\n\t\tthis.defaultServicesReadyToUpdate = fromEntries(\n\t\t\tservicesEntries.map(([serviceName, { waitFor }]) => [\n\t\t\t\tserviceName,\n\t\t\t\t!waitFor,\n\t\t\t]),\n\t\t)\n\t\tthis.servicesReadyToUpdate = { ...this.defaultServicesReadyToUpdate }\n\t\tthis.autoRespawnDeadServices = true\n\n\t\tthis.logger = new FlightDeckLogger(\n\t\t\tthis.options.packageName,\n\t\t\tprocess.pid,\n\t\t\tundefined,\n\t\t\t{ jsonLogging: this.options.jsonLogging ?? false },\n\t\t)\n\t\tthis.serviceLoggers = fromEntries(\n\t\t\tservicesEntries.map(([serviceName]) => [\n\t\t\t\tserviceName,\n\t\t\t\tnew FlightDeckLogger(\n\t\t\t\t\tthis.options.packageName,\n\t\t\t\t\tprocess.pid,\n\t\t\t\t\tserviceName,\n\t\t\t\t\t{ jsonLogging: this.options.jsonLogging ?? false },\n\t\t\t\t),\n\t\t\t]),\n\t\t)\n\n\t\tthis.servicesLive = servicesEntries.map(() => new Future(() => {}))\n\t\tthis.servicesDead = servicesEntries.map(() => new Future(() => {}))\n\t\tthis.live.use(Promise.all(this.servicesLive))\n\t\tthis.dead.use(Promise.all(this.servicesDead))\n\n\t\tthis.storage = new FilesystemStorage({\n\t\t\tpath: resolve(flightdeckRootDir, `storage`, options.packageName),\n\t\t})\n\n\t\tif (FLIGHTDECK_SECRET === undefined) {\n\t\t\tthis.logger.warn(\n\t\t\t\t`No FLIGHTDECK_SECRET environment variable found. FlightDeck will not run an update server.`,\n\t\t\t)\n\t\t} else {\n\t\t\tcreateServer((req, res) => {\n\t\t\t\tlet data: Uint8Array[] = []\n\t\t\t\treq\n\t\t\t\t\t.on(`data`, (chunk) => {\n\t\t\t\t\t\tdata.push(chunk instanceof Buffer ? chunk : Buffer.from(chunk))\n\t\t\t\t\t})\n\t\t\t\t\t.on(`end`, async () => {\n\t\t\t\t\t\tconst authHeader = req.headers.authorization\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (typeof req.url === `undefined`) throw 400\n\t\t\t\t\t\t\tconst expectedAuthHeader = `Bearer ${FLIGHTDECK_SECRET}`\n\t\t\t\t\t\t\tif (authHeader !== `Bearer ${FLIGHTDECK_SECRET}`) {\n\t\t\t\t\t\t\t\tthis.logger.info(\n\t\t\t\t\t\t\t\t\t`Unauthorized: needed \\`${expectedAuthHeader}\\`, got \\`${authHeader}\\``,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tthrow 401\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst url = new URL(req.url, origin)\n\t\t\t\t\t\t\tthis.logger.info(req.method, url.pathname)\n\n\t\t\t\t\t\t\tconst versionForeignInput = Buffer.concat(data).toString()\n\t\t\t\t\t\t\tif (!isVersionNumber(versionForeignInput)) {\n\t\t\t\t\t\t\t\tthrow 400\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tres.writeHead(200)\n\t\t\t\t\t\t\tres.end()\n\n\t\t\t\t\t\t\tthis.storage.setItem(`updatePhase`, `notified`)\n\t\t\t\t\t\t\tthis.storage.setItem(`updateAwaitedVersion`, versionForeignInput)\n\t\t\t\t\t\t\tconst { checkAvailability } = options.scripts\n\t\t\t\t\t\t\tif (checkAvailability) {\n\t\t\t\t\t\t\t\tawait this.updateAvailabilityChecker?.stop()\n\t\t\t\t\t\t\t\tawait this.seekUpdate(versionForeignInput)\n\t\t\t\t\t\t\t\tconst updatePhase = this.storage.getItem(`updatePhase`)\n\t\t\t\t\t\t\t\tthis.logger.info(`> storage(\"updatePhase\") >`, updatePhase)\n\t\t\t\t\t\t\t\tif (updatePhase === `notified`) {\n\t\t\t\t\t\t\t\t\tthis.updateAvailabilityChecker = new CronJob(\n\t\t\t\t\t\t\t\t\t\t`30 * * * * *`,\n\t\t\t\t\t\t\t\t\t\tasync () => {\n\t\t\t\t\t\t\t\t\t\t\tawait this.seekUpdate(versionForeignInput)\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tthis.updateAvailabilityChecker.start()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.downloadPackage()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (thrown) {\n\t\t\t\t\t\t\tthis.logger.error(thrown, req.url)\n\t\t\t\t\t\t\tif (typeof thrown === `number`) {\n\t\t\t\t\t\t\t\tres.writeHead(thrown)\n\t\t\t\t\t\t\t\tres.end()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tdata = []\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t}).listen(port, () => {\n\t\t\t\tthis.logger.info(`Server started on port ${port}`)\n\t\t\t})\n\t\t}\n\n\t\tthis.startAllServices()\n\t\t\t.then(() => {\n\t\t\t\tthis.logger.info(`All services started.`)\n\t\t\t})\n\t\t\t.catch((thrown) => {\n\t\t\t\tif (thrown instanceof Error) {\n\t\t\t\t\tthis.logger.error(`Failed to start all services:`, thrown.message)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tprotected async seekUpdate(version: string): Promise<void> {\n\t\tthis.logger.info(`Checking for updates...`)\n\t\tconst { checkAvailability } = this.options.scripts\n\t\tif (!checkAvailability) {\n\t\t\tthis.logger.info(`No checkAvailability script found.`)\n\t\t\treturn\n\t\t}\n\t\ttry {\n\t\t\tconst out = execSync(`${checkAvailability} ${version}`)\n\t\t\tthis.logger.info(`Check stdout:`, out.toString())\n\t\t\tawait this.updateAvailabilityChecker?.stop()\n\t\t\tthis.storage.setItem(`updatePhase`, `confirmed`)\n\t\t\tthis.downloadPackage()\n\t\t\tthis.announceUpdate()\n\t\t} catch (thrown) {\n\t\t\tif (thrown instanceof Error) {\n\t\t\t\tthis.logger.error(`Check failed:`, thrown.message)\n\t\t\t} else {\n\t\t\t\tconst thrownType = discoverType(thrown)\n\t\t\t\tthis.logger.error(`Check threw`, thrownType, thrown)\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected announceUpdate(): void {\n\t\tfor (const entry of toEntries(this.services)) {\n\t\t\tconst [serviceName, service] = entry\n\t\t\tif (service) {\n\t\t\t\tif (this.options.services[serviceName].waitFor) {\n\t\t\t\t\tservice.emit(`updatesReady`)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.startService(serviceName)\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected tryUpdate(): void {\n\t\tif (toEntries(this.servicesReadyToUpdate).every(([, isReady]) => isReady)) {\n\t\t\tthis.logger.info(`All services are ready to update.`)\n\t\t\tthis.stopAllServices()\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.logger.info(`All services stopped; starting up fresh...`)\n\t\t\t\t\tthis.startAllServices()\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tthis.logger.info(`All services started; we're back online.`)\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((thrown) => {\n\t\t\t\t\t\t\tif (thrown instanceof Error) {\n\t\t\t\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t\t\t\t`Failed to start all services:`,\n\t\t\t\t\t\t\t\t\tthrown.message,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((thrown) => {\n\t\t\t\t\tif (thrown instanceof Error) {\n\t\t\t\t\t\tthis.logger.error(`Failed to stop all services:`, thrown.message)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\tprotected startAllServices(): Future<unknown> {\n\t\tthis.logger.info(`Starting all services...`)\n\t\tthis.autoRespawnDeadServices = true\n\t\tconst setupPhase = this.storage.getItem(`setupPhase`)\n\t\tthis.logger.info(`> storage(\"setupPhase\") >`, setupPhase)\n\t\tswitch (setupPhase) {\n\t\t\tcase null:\n\t\t\t\tthis.logger.info(`Starting from scratch.`)\n\t\t\t\tthis.downloadPackage()\n\t\t\t\tthis.installPackage()\n\t\t\t\treturn this.startAllServices()\n\t\t\tcase `downloaded`:\n\t\t\t\tthis.logger.info(`Found package downloaded but not installed.`)\n\t\t\t\tthis.installPackage()\n\t\t\t\treturn this.startAllServices()\n\t\t\tcase `installed`: {\n\t\t\t\tfor (const [serviceName] of toEntries(this.services)) {\n\t\t\t\t\tthis.startService(serviceName)\n\t\t\t\t}\n\t\t\t\treturn this.live\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected startService(serviceName: S): void {\n\t\tthis.logger.info(\n\t\t\t`Starting service ${this.options.packageName}::${serviceName}, try ${this.safety}/2...`,\n\t\t)\n\t\tif (this.safety >= 2) {\n\t\t\tthrow new Error(`Out of tries...`)\n\t\t}\n\t\tthis.safety++\n\n\t\tconst [exe, ...args] = this.options.services[serviceName].run.split(` `)\n\t\tconst serviceProcess = spawn(exe, args, {\n\t\t\tcwd: this.options.flightdeckRootDir,\n\t\t\tenv: import.meta.env as Record<string, string>,\n\t\t})\n\t\tconst serviceLogger = this.serviceLoggers[serviceName]\n\t\tconst service = (this.services[serviceName] = new ChildSocket(\n\t\t\tserviceProcess,\n\t\t\t`${this.options.packageName}::${serviceName}`,\n\t\t\tserviceLogger,\n\t\t))\n\t\tserviceLogger.processCode = service.process.pid ?? -1\n\t\tthis.services[serviceName].onAny((...messages) => {\n\t\t\tserviceLogger.info(`💬`, ...messages)\n\t\t})\n\t\tthis.services[serviceName].on(`readyToUpdate`, () => {\n\t\t\tthis.logger.info(`Service \"${serviceName}\" is ready to update.`)\n\t\t\tthis.servicesReadyToUpdate[serviceName] = true\n\t\t\tthis.tryUpdate()\n\t\t})\n\t\tthis.services[serviceName].on(`alive`, () => {\n\t\t\tthis.servicesLive[this.serviceIdx[serviceName]].use(Promise.resolve())\n\t\t\tthis.servicesDead[this.serviceIdx[serviceName]] = new Future(() => {})\n\t\t\tif (this.dead.done) {\n\t\t\t\tthis.dead = new Future(() => {})\n\t\t\t}\n\t\t\tthis.dead.use(Promise.all(this.servicesDead))\n\t\t})\n\t\tthis.services[serviceName].process.once(`close`, (exitCode) => {\n\t\t\tthis.logger.info(\n\t\t\t\t`Auto-respawn saw \"${serviceName}\" exit with code ${exitCode}`,\n\t\t\t)\n\t\t\tthis.services[serviceName] = null\n\t\t\tif (!this.autoRespawnDeadServices) {\n\t\t\t\tthis.logger.info(`Auto-respawn is off; \"${serviceName}\" rests.`)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst updatePhase = this.storage.getItem(`updatePhase`)\n\t\t\tthis.logger.info(`> storage(\"updatePhase\") >`, updatePhase)\n\t\t\tconst updatesAreReady = updatePhase === `confirmed`\n\t\t\tif (updatesAreReady) {\n\t\t\t\tthis.serviceLoggers[serviceName].info(`Updating before startup...`)\n\t\t\t\tthis.restartTimes = []\n\t\t\t\tthis.installPackage()\n\t\t\t\tthis.startService(serviceName)\n\t\t\t} else {\n\t\t\t\tconst now = Date.now()\n\t\t\t\tconst fiveMinutesAgo = now - 5 * 60 * 1000\n\t\t\t\tthis.restartTimes = this.restartTimes.filter(\n\t\t\t\t\t(time) => time > fiveMinutesAgo,\n\t\t\t\t)\n\t\t\t\tthis.restartTimes.push(now)\n\n\t\t\t\tif (this.restartTimes.length < 5) {\n\t\t\t\t\tthis.serviceLoggers[serviceName].info(`Crashed. Restarting...`)\n\t\t\t\t\tthis.startService(serviceName)\n\t\t\t\t} else {\n\t\t\t\t\tthis.serviceLoggers[serviceName].info(\n\t\t\t\t\t\t`Crashed 5 times in 5 minutes. Not restarting.`,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\tthis.safety = 0\n\t}\n\n\tprotected downloadPackage(): void {\n\t\tthis.logger.info(`Downloading...`)\n\t\ttry {\n\t\t\tconst out = execSync(this.options.scripts.download)\n\t\t\tthis.logger.info(`Download stdout:`, out.toString())\n\t\t\tthis.storage.setItem(`setupPhase`, `downloaded`)\n\t\t\tthis.logger.info(`Downloaded!`)\n\t\t} catch (thrown) {\n\t\t\tif (thrown instanceof Error) {\n\t\t\t\tthis.logger.error(`Failed to get the latest release: ${thrown.message}`)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n\n\tprotected installPackage(): void {\n\t\tthis.logger.info(`Installing...`)\n\n\t\ttry {\n\t\t\tconst out = execSync(this.options.scripts.install)\n\t\t\tthis.logger.info(`Install stdout:`, out.toString())\n\t\t\tthis.storage.setItem(`setupPhase`, `installed`)\n\t\t\tthis.logger.info(`Installed!`)\n\t\t} catch (thrown) {\n\t\t\tif (thrown instanceof Error) {\n\t\t\t\tthis.logger.error(`Failed to get the latest release: ${thrown.message}`)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n\n\tpublic stopAllServices(): Future<unknown> {\n\t\tthis.logger.info(`Stopping all services... auto-respawn disabled.`)\n\t\tthis.autoRespawnDeadServices = false\n\t\tfor (const [serviceName] of toEntries(this.services)) {\n\t\t\tthis.stopService(serviceName)\n\t\t}\n\t\treturn this.dead\n\t}\n\n\tpublic stopService(serviceName: S): void {\n\t\tconst service = this.services[serviceName]\n\t\tif (service) {\n\t\t\tthis.logger.info(`Stopping service \"${serviceName}\"...`)\n\t\t\tthis.servicesDead[this.serviceIdx[serviceName]].use(\n\t\t\t\tnew Promise((pass) => {\n\t\t\t\t\tservice.emit(`timeToStop`)\n\t\t\t\t\tservice.process.once(`close`, (exitCode) => {\n\t\t\t\t\t\tthis.logger.info(\n\t\t\t\t\t\t\t`Stopped service \"${serviceName}\"; exited with code ${exitCode}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tthis.services[serviceName] = null\n\t\t\t\t\t\tpass()\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\tthis.dead.use(Promise.all(this.servicesDead))\n\t\t\tthis.servicesLive[this.serviceIdx[serviceName]] = new Future(() => {})\n\t\t\tif (this.live.done) {\n\t\t\t\tthis.live = new Future(() => {})\n\t\t\t}\n\t\t\tthis.live.use(Promise.all(this.servicesLive))\n\t\t} else {\n\t\t\tthis.serviceLoggers[serviceName].error(\n\t\t\t\t`Tried to stop service, but it wasn't running.`,\n\t\t\t)\n\t\t}\n\t}\n}\n\nexport const FLIGHTDECK_INFO = `info`\nexport const FLIGHTDECK_WARN = `warn`\nexport const FLIGHTDECK_ERROR = `ERR!`\n\nexport const flightDeckLogSchema = z.object({\n\tlevel: z.union([\n\t\tz.literal(FLIGHTDECK_INFO),\n\t\tz.literal(FLIGHTDECK_WARN),\n\t\tz.literal(FLIGHTDECK_ERROR),\n\t]),\n\ttimestamp: z.number(),\n\tpackage: z.string(),\n\tservice: z.string().optional(),\n\tprocess: z.number(),\n\tbody: z.string(),\n})\nexport type FlightDeckLog = z.infer<typeof flightDeckLogSchema>\n\nconst LINE_FORMAT = `line-format` satisfies keyof LnavFormat\nconst VALUE = `value` satisfies keyof LnavFormat\n\nexport type LnavFormatVisualComponent = Exclude<\n\tExclude<LnavFormat[`line-format`], undefined>[number],\n\tstring\n>\n\nexport type LnavFormatBreakdown = Exclude<LnavFormat[`value`], undefined>\nexport type MemberOf<T> = T[keyof T]\nexport type LnavFormatValueDefinition = MemberOf<LnavFormatBreakdown>\n\nexport type FlightDeckFormat = {\n\t[LINE_FORMAT]: (\n\t\t| string\n\t\t| (LnavFormatVisualComponent & {\n\t\t\t\tfield: keyof FlightDeckLog | `__level__` | `__timestamp__`\n\t\t })\n\t)[]\n\t[VALUE]: {\n\t\t[K in keyof FlightDeckLog]: LnavFormatValueDefinition & {\n\t\t\tkind: FlightDeckLog[K] extends number | undefined\n\t\t\t\t? `integer`\n\t\t\t\t: FlightDeckLog[K] extends string | undefined\n\t\t\t\t\t? `string`\n\t\t\t\t\t: never\n\t\t}\n\t}\n}\n\nexport const FLIGHTDECK_LNAV_FORMAT = {\n\ttitle: `FlightDeck Log`,\n\tdescription: `Format for events logged by the FlightDeck process manager.`,\n\t\"file-type\": `json`,\n\t\"timestamp-field\": `timestamp`,\n\t\"timestamp-divisor\": 1000,\n\t\"module-field\": `package`,\n\t\"opid-field\": `service`,\n\t\"level-field\": `level`,\n\tlevel: {\n\t\tinfo: FLIGHTDECK_INFO,\n\t\twarning: FLIGHTDECK_WARN,\n\t\terror: FLIGHTDECK_ERROR,\n\t},\n\n\t[LINE_FORMAT]: [\n\t\t{\n\t\t\tfield: `level`,\n\t\t},\n\t\t{\n\t\t\tprefix: ` `,\n\t\t\tfield: `__timestamp__`,\n\t\t\t\"timestamp-format\": `%Y-%m-%dT%H:%M:%S.%L%Z`,\n\t\t},\n\t\t{\n\t\t\tprefix: ` `,\n\t\t\tfield: `process`,\n\t\t\t\"min-width\": 5,\n\t\t},\n\t\t{\n\t\t\tprefix: `:`,\n\t\t\tfield: `package`,\n\t\t},\n\t\t{\n\t\t\tprefix: `:`,\n\t\t\tfield: `service`,\n\t\t\t\"default-value\": ``,\n\t\t},\n\t\t{\n\t\t\tprefix: `: `,\n\t\t\tfield: `body`,\n\t\t},\n\t],\n\n\t[VALUE]: {\n\t\ttimestamp: {\n\t\t\tkind: `integer`,\n\t\t},\n\t\tlevel: {\n\t\t\tkind: `string`,\n\t\t},\n\t\tpackage: {\n\t\t\tkind: `string`,\n\t\t},\n\t\tservice: {\n\t\t\tkind: `string`,\n\t\t},\n\t\tprocess: {\n\t\t\tkind: `integer`,\n\t\t},\n\t\tbody: {\n\t\t\tkind: `string`,\n\t\t},\n\t},\n} as const satisfies FlightDeckFormat & LnavFormat\n\nexport class FlightDeckLogger\n\timplements Pick<Console, `error` | `info` | `warn`>\n{\n\tpublic readonly packageName: string\n\tpublic readonly serviceName?: string\n\tpublic readonly jsonLogging: boolean\n\tpublic processCode: number\n\tpublic constructor(\n\t\tpackageName: string,\n\t\tprocessCode: number,\n\t\tserviceName?: string,\n\t\toptions?: { jsonLogging: boolean },\n\t) {\n\t\tthis.packageName = packageName\n\t\tif (serviceName) {\n\t\t\tthis.serviceName = serviceName\n\t\t}\n\t\tthis.processCode = processCode\n\t\tthis.jsonLogging = options?.jsonLogging ?? false\n\t}\n\tprotected log(\n\t\tlevel:\n\t\t\t| typeof FLIGHTDECK_ERROR\n\t\t\t| typeof FLIGHTDECK_INFO\n\t\t\t| typeof FLIGHTDECK_WARN,\n\t\t...messages: unknown[]\n\t): void {\n\t\tif (this.jsonLogging) {\n\t\t\tlet body = messages\n\t\t\t\t.map((message) =>\n\t\t\t\t\ttypeof message === `string`\n\t\t\t\t\t\t? message\n\t\t\t\t\t\t: inspect(message, false, null, true),\n\t\t\t\t)\n\t\t\t\t.join(` `)\n\t\t\tif (body.includes(`\\n`)) {\n\t\t\t\tbody = `\\n ${body.split(`\\n`).join(`\\n `)}`\n\t\t\t}\n\t\t\tconst log: FlightDeckLog = {\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tlevel,\n\t\t\t\tprocess: this.processCode,\n\t\t\t\tpackage: this.packageName,\n\t\t\t\tbody,\n\t\t\t}\n\t\t\tif (this.serviceName) {\n\t\t\t\tlog.service = this.serviceName\n\t\t\t}\n\t\t\tprocess.stdout.write(JSON.stringify(log) + `\\n`)\n\t\t} else {\n\t\t\tconst source = this.serviceName\n\t\t\t\t? `${this.packageName}:${this.serviceName}`\n\t\t\t\t: this.packageName\n\t\t\tswitch (level) {\n\t\t\t\tcase FLIGHTDECK_INFO:\n\t\t\t\t\tconsole.log(`${source}:`, ...messages)\n\t\t\t\t\tbreak\n\t\t\t\tcase FLIGHTDECK_WARN:\n\t\t\t\t\tconsole.warn(`${source}:`, ...messages)\n\t\t\t\t\tbreak\n\t\t\t\tcase FLIGHTDECK_ERROR:\n\t\t\t\t\tconsole.error(`${source}:`, ...messages)\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tpublic info(...messages: unknown[]): void {\n\t\tthis.log(FLIGHTDECK_INFO, ...messages)\n\t}\n\n\tpublic warn(...messages: unknown[]): void {\n\t\tthis.log(FLIGHTDECK_WARN, ...messages)\n\t}\n\n\tpublic error(...messages: unknown[]): void {\n\t\tthis.log(FLIGHTDECK_ERROR, ...messages)\n\t}\n}\n"],"mappings":"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"}
package/dist/lib.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"lib.d.ts","names":[],"sources":["../../atom.io/dist/transceivers/set-rtx/index.d.ts","../../atom.io/dist/main/index.d.ts","../../atom.io/dist/json/index.d.ts","../../atom.io/dist/internal/index.d.ts","../../atom.io/dist/realtime-server/index.d.ts","../../safedeposit/dist/safedeposit.d.ts","../gen/lnav-format-schema.gen.d.ts","../src/flightdeck.lib.d.ts","../src/klaxon.lib.d.ts"],"sourcesContent":null,"mappings":"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AAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA;CAAA,MAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,EAAA;CAAA,MAAA,E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"}