flightdeck 0.2.89 → 0.2.90

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.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","names":[],"sources":["../gen/lnav-format-schema.gen.ts","../src/flightdeck.lib.ts","../src/klaxon.lib.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"lib.d.ts","names":[],"sources":["../gen/lnav-format-schema.gen.ts","../src/flightdeck.lib.ts","../src/klaxon.lib.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/lib.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as FLIGHTDECK_UPDATE_PHASES, c as FlightDeckLogger, i as FLIGHTDECK_SETUP_PHASES, l as flightDeckLogSchema, n as FLIGHTDECK_INFO, o as FLIGHTDECK_WARN, r as FLIGHTDECK_LNAV_FORMAT, s as FlightDeck, t as FLIGHTDECK_ERROR, u as isVersionNumber } from "./flightdeck.lib-CgUIGPOF.js";
1
+ import { a as FLIGHTDECK_UPDATE_PHASES, c as FlightDeckLogger, i as FLIGHTDECK_SETUP_PHASES, l as isVersionNumber, n as FLIGHTDECK_INFO, o as FLIGHTDECK_WARN, r as FLIGHTDECK_LNAV_FORMAT, s as FlightDeck, t as FLIGHTDECK_ERROR } from "./flightdeck.lib-DMlmcPLR.js";
2
2
  import { t as klaxon_lib_exports } from "./klaxon.lib-C5FWJaIY.js";
3
3
 
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 };
4
+ export { FLIGHTDECK_ERROR, FLIGHTDECK_INFO, FLIGHTDECK_LNAV_FORMAT, FLIGHTDECK_SETUP_PHASES, FLIGHTDECK_UPDATE_PHASES, FLIGHTDECK_WARN, FlightDeck, FlightDeckLogger, klaxon_lib_exports as Klaxon, isVersionNumber };
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "zod/v3";
2
2
 
3
3
  export const lnavFormatSchema = z
4
4
  .object({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flightdeck",
3
- "version": "0.2.89",
3
+ "version": "0.2.90",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "Jeremy Banka",
@@ -27,28 +27,29 @@
27
27
  "klaxon": "./bin/klaxon.bin.js"
28
28
  },
29
29
  "dependencies": {
30
+ "arktype": "2.1.25",
30
31
  "@t3-oss/env-core": "0.13.8",
31
32
  "cron": "4.3.3",
32
- "zod": "3.25.76",
33
33
  "atom.io": "0.44.0",
34
- "comline": "0.3.3",
34
+ "comline": "0.4.0",
35
35
  "safedeposit": "0.1.2"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@biomejs/js-api": "4.0.0",
39
- "@biomejs/wasm-nodejs": "2.3.0",
39
+ "@biomejs/wasm-nodejs": "2.3.2",
40
40
  "@types/bun": "npm:bun-types@1.3.1",
41
- "@types/node": "24.9.1",
41
+ "@types/node": "24.9.2",
42
42
  "@types/tmp": "0.2.6",
43
- "@typescript/native-preview": "7.0.0-dev.20251026.1",
43
+ "@typescript/native-preview": "7.0.0-dev.20251027.1",
44
44
  "concurrently": "9.2.1",
45
45
  "eslint": "9.38.0",
46
46
  "json-schema-to-zod": "2.6.1",
47
47
  "rimraf": "6.0.1",
48
48
  "tmp": "0.2.5",
49
- "tsdown": "0.15.10",
50
- "vitest": "4.0.3",
51
- "varmint": "0.5.7"
49
+ "tsdown": "0.15.11",
50
+ "vitest": "4.0.4",
51
+ "zod": "4.1.12",
52
+ "varmint": "0.5.8"
52
53
  },
53
54
  "scripts": {
54
55
  "gen": "bun ./__scripts__/gen.bun.ts",
@@ -1,8 +1,8 @@
1
1
  import { createEnv } from "@t3-oss/env-core"
2
- import { z } from "zod/v4"
2
+ import { type } from "arktype"
3
3
 
4
4
  export const env = createEnv({
5
- server: { FLIGHTDECK_SECRET: z.string().optional() },
5
+ server: { FLIGHTDECK_SECRET: type(`string`, `|`, `undefined`) },
6
6
  clientPrefix: `NEVER`,
7
7
  client: {},
8
8
  runtimeEnv: import.meta.env as Record<string, string>,
@@ -12,7 +12,6 @@ import { fromEntries, toEntries } from "atom.io/json"
12
12
  import { ChildSocket } from "atom.io/realtime-server"
13
13
  import { CronJob } from "cron"
14
14
  import { FilesystemStorage } from "safedeposit"
15
- import { z } from "zod/v4"
16
15
 
17
16
  import type { LnavFormat } from "../gen/lnav-format-schema.gen"
18
17
  import { env } from "./flightdeck.env"
@@ -445,19 +444,17 @@ export const FLIGHTDECK_INFO = `info`
445
444
  export const FLIGHTDECK_WARN = `warn`
446
445
  export const FLIGHTDECK_ERROR = `ERR!`
447
446
 
448
- export const flightDeckLogSchema = z.object({
449
- level: z.union([
450
- z.literal(FLIGHTDECK_INFO),
451
- z.literal(FLIGHTDECK_WARN),
452
- z.literal(FLIGHTDECK_ERROR),
453
- ]),
454
- timestamp: z.number(),
455
- package: z.string(),
456
- service: z.string().optional(),
457
- process: z.number(),
458
- body: z.string(),
459
- })
460
- export type FlightDeckLog = z.infer<typeof flightDeckLogSchema>
447
+ export type FlightDeckLog = {
448
+ level:
449
+ | typeof FLIGHTDECK_ERROR
450
+ | typeof FLIGHTDECK_INFO
451
+ | typeof FLIGHTDECK_WARN
452
+ timestamp: number
453
+ package: string
454
+ service?: string
455
+ process: number
456
+ body: string
457
+ }
461
458
 
462
459
  const LINE_FORMAT = `line-format` satisfies keyof LnavFormat
463
460
  const VALUE = `value` satisfies keyof LnavFormat
@@ -2,9 +2,15 @@
2
2
 
3
3
  import * as path from "node:path"
4
4
 
5
+ import { type } from "arktype"
5
6
  import type { OptionsGroup } from "comline"
6
- import { cli, optional, parseBooleanOption, parseNumberOption } from "comline"
7
- import { z } from "zod/v4"
7
+ import {
8
+ cli,
9
+ optional,
10
+ options,
11
+ parseBooleanOption,
12
+ parseNumberOption,
13
+ } from "comline"
8
14
 
9
15
  import type { FlightDeckOptions } from "./flightdeck.lib"
10
16
  import { FlightDeck, FlightDeckLogger } from "./flightdeck.lib"
@@ -19,23 +25,21 @@ Object.assign(console, {
19
25
  error: CLI_LOGGER.error.bind(CLI_LOGGER),
20
26
  })
21
27
 
22
- const FLIGHTDECK_MANUAL = {
23
- optionsSchema: z.object({
24
- port: z.number().optional(),
25
- packageName: z.string(),
26
- services: z.record(
27
- z.string(),
28
- z.object({ run: z.string(), waitFor: z.boolean() }),
29
- ),
30
- flightdeckRootDir: z.string(),
31
- scripts: z.object({
32
- download: z.string(),
33
- install: z.string(),
34
- checkAvailability: z.string(),
35
- }),
36
- jsonLogging: z.boolean().optional(),
28
+ const FLIGHTDECK_MANUAL = options(
29
+ `Run the FlightDeck process manager.`,
30
+ type({
31
+ "port?": `number`,
32
+ packageName: `string`,
33
+ services: { "[string]": { run: `string`, waitFor: `boolean` } },
34
+ flightdeckRootDir: `string`,
35
+ scripts: {
36
+ download: `string`,
37
+ install: `string`,
38
+ checkAvailability: `string`,
39
+ },
40
+ "jsonLogging?": `boolean`,
37
41
  }),
38
- options: {
42
+ {
39
43
  port: {
40
44
  flag: `p`,
41
45
  required: false,
@@ -77,13 +81,12 @@ const FLIGHTDECK_MANUAL = {
77
81
  parse: parseBooleanOption,
78
82
  },
79
83
  },
80
- } satisfies OptionsGroup<FlightDeckOptions>
84
+ ) satisfies OptionsGroup<FlightDeckOptions>
81
85
 
82
- const SCHEMA_MANUAL = {
83
- optionsSchema: z.object({
84
- outdir: z.string().optional(),
85
- }),
86
- options: {
86
+ const SCHEMA_MANUAL = options(
87
+ `Write a json schema for the FlightDeck options.`,
88
+ type({ "outdir?": `string` }),
89
+ {
87
90
  outdir: {
88
91
  flag: `o`,
89
92
  required: false,
@@ -91,7 +94,7 @@ const SCHEMA_MANUAL = {
91
94
  example: `--outdir=./dist`,
92
95
  },
93
96
  },
94
- } satisfies OptionsGroup<{ outdir?: string | undefined }>
97
+ ) satisfies OptionsGroup<{ outdir?: string | undefined }>
95
98
 
96
99
  const parse = cli(
97
100
  {
package/src/klaxon.x.ts CHANGED
@@ -1,21 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { cli, required } from "comline"
4
- import { z } from "zod/v4"
3
+ import { type Type, type } from "arktype"
4
+ import { cli, options, required } from "comline"
5
5
 
6
6
  import * as Klaxon from "./klaxon.lib"
7
7
 
8
- const changesetsPublishedPackagesSchema: z.ZodSchema<Klaxon.ScrambleOptions> =
9
- z.object({
10
- packageConfig: z.record(z.string(), z.object({ endpoint: z.string() })),
11
- secretsConfig: z.record(z.string(), z.string()),
12
- publishedPackages: z.array(
13
- z.object({
14
- name: z.string(),
15
- version: z.string(),
16
- }),
17
- ),
18
- })
8
+ const changesetsPublishedPackagesSchema: Type<Klaxon.ScrambleOptions> = type({
9
+ packageConfig: { "[string]": { endpoint: `string` } },
10
+ secretsConfig: { "[string]": `string` },
11
+ publishedPackages: [{ name: `string`, version: `string` }, `[]`],
12
+ })
19
13
 
20
14
  const klaxon = cli({
21
15
  cliName: `klaxon`,
@@ -23,32 +17,29 @@ const klaxon = cli({
23
17
  scramble: null,
24
18
  }),
25
19
  routeOptions: {
26
- scramble: {
27
- options: {
28
- packageConfig: {
29
- description: `Maps the names of your packages to the endpoints that klaxon will POST to.`,
30
- example: `--packageConfig="{\\"my-app\\":{\\"endpoint\\":\\"https://my-app.com\\"}}"`,
31
- flag: `c`,
32
- parse: JSON.parse,
33
- required: true,
34
- },
35
- secretsConfig: {
36
- description: `Maps the names of your packages to the secrets that klaxon will use to authenticate with their respective endpoints.`,
37
- example: `--secretsConfig="{\\"my-app\\":\\"XXXX-XXXX-XXXX\\"}"`,
38
- flag: `s`,
39
- parse: JSON.parse,
40
- required: true,
41
- },
42
- publishedPackages: {
43
- description: `The output of the "Publish" step in Changesets.`,
44
- example: `--publishedPackages="[{\\"name\\":\\"my-app\\",\\"version\\":\\"0.0.0\\"}]"`,
45
- flag: `p`,
46
- parse: JSON.parse,
47
- required: true,
48
- },
20
+ scramble: options(``, changesetsPublishedPackagesSchema, {
21
+ packageConfig: {
22
+ description: `Maps the names of your packages to the endpoints that klaxon will POST to.`,
23
+ example: `--packageConfig="{\\"my-app\\":{\\"endpoint\\":\\"https://my-app.com\\"}}"`,
24
+ flag: `c`,
25
+ parse: JSON.parse,
26
+ required: true,
27
+ },
28
+ secretsConfig: {
29
+ description: `Maps the names of your packages to the secrets that klaxon will use to authenticate with their respective endpoints.`,
30
+ example: `--secretsConfig="{\\"my-app\\":\\"XXXX-XXXX-XXXX\\"}"`,
31
+ flag: `s`,
32
+ parse: JSON.parse,
33
+ required: true,
34
+ },
35
+ publishedPackages: {
36
+ description: `The output of the "Publish" step in Changesets.`,
37
+ example: `--publishedPackages="[{\\"name\\":\\"my-app\\",\\"version\\":\\"0.0.0\\"}]"`,
38
+ flag: `p`,
39
+ parse: JSON.parse,
40
+ required: true,
49
41
  },
50
- optionsSchema: changesetsPublishedPackagesSchema,
51
- },
42
+ }),
52
43
  },
53
44
  })
54
45
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"flightdeck.lib-CgUIGPOF.js","names":["data: Uint8Array[]","log: FlightDeckLog"],"sources":["../src/flightdeck.env.ts","../src/flightdeck.lib.ts"],"sourcesContent":["import { createEnv } from \"@t3-oss/env-core\"\nimport { z } from \"zod/v4\"\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","/* eslint-disable @typescript-eslint/only-throw-error */\nimport type { ChildProcessWithoutNullStreams } from \"node:child_process\"\nimport { 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/v4\"\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\tChildProcessWithoutNullStreams\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.proc.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].proc.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.proc.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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"}