@zeltjs/adapter-node 0.4.0 → 0.5.0

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/README.md CHANGED
@@ -1,7 +1,11 @@
1
1
  # @zeltjs/adapter-node
2
2
 
3
+ [![Documentation](https://img.shields.io/badge/docs-zeltjs.com-blue)](https://zeltjs.com)
4
+
3
5
  Node.js HTTP server adapter for Zelt applications.
4
6
 
7
+ **[Read the Documentation](https://zeltjs.com)**
8
+
5
9
  ## Installation
6
10
 
7
11
  ```bash
@@ -18,7 +22,3 @@ const app = createHttpApp({ controllers: [...] });
18
22
 
19
23
  serve(app, { port: 3000 });
20
24
  ```
21
-
22
- ## Documentation
23
-
24
- See [zeltjs.com](https://zeltjs.com) for full documentation.
package/dist/index.js CHANGED
@@ -2,7 +2,13 @@ import { createAdaptorServer, serve } from "@hono/node-server";
2
2
  import { CliConfig, Config, EnvConfig } from "@zeltjs/core";
3
3
  import { config } from "dotenv";
4
4
  //#region src/cli.config.ts
5
- var NodeCliConfig = @Config class extends CliConfig {
5
+ function _ts_decorate$2(decorators, target, key, desc) {
6
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ }
11
+ var NodeCliConfig = class extends CliConfig {
6
12
  cwd() {
7
13
  return process.cwd();
8
14
  }
@@ -22,25 +28,46 @@ var NodeCliConfig = @Config class extends CliConfig {
22
28
  process.off(signal, handler);
23
29
  }
24
30
  };
31
+ NodeCliConfig = _ts_decorate$2([Config], NodeCliConfig);
25
32
  //#endregion
26
33
  //#region src/dotenv.config.ts
27
- var DotEnvConfig = @Config class extends EnvConfig {
34
+ function _ts_decorate$1(decorators, target, key, desc) {
35
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
36
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
39
+ }
40
+ function _ts_metadata(k, v) {
41
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
42
+ }
43
+ var DotEnvConfig = class extends EnvConfig {
28
44
  constructor() {
29
- super();
30
- this.paths = [".env"];
45
+ super(), this.paths = [".env"];
31
46
  for (const path of this.paths) config({
32
47
  path,
33
48
  override: true
34
49
  });
35
50
  }
36
51
  };
52
+ DotEnvConfig = _ts_decorate$1([
53
+ Config,
54
+ _ts_metadata("design:type", Function),
55
+ _ts_metadata("design:paramtypes", [])
56
+ ], DotEnvConfig);
37
57
  //#endregion
38
58
  //#region src/process-env.config.ts
39
- var ProcessEnvConfig = @Config class extends EnvConfig {
59
+ function _ts_decorate(decorators, target, key, desc) {
60
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
61
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
62
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
63
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
64
+ }
65
+ var ProcessEnvConfig = class extends EnvConfig {
40
66
  get(key) {
41
67
  return process.env[key];
42
68
  }
43
69
  };
70
+ ProcessEnvConfig = _ts_decorate([Config], ProcessEnvConfig);
44
71
  //#endregion
45
72
  //#region src/on-node.ts
46
73
  const successResult = { exitCode: 0 };
@@ -73,13 +100,11 @@ const createListenForHttp = (appFetch, appShutdown) => {
73
100
  };
74
101
  };
75
102
  };
76
- /** @throws {ZeltLifecycleStateError} */
77
- const runCommand = (CommandClass, get) => {
103
+ /** @throws {ZeltLifecycleStateError} */ const runCommand = (CommandClass, get) => {
78
104
  const instance = get(CommandClass);
79
105
  return Promise.resolve().then(() => instance.run()).then(() => successResult).catch(() => failureResult);
80
106
  };
81
- /** @throws {ZeltLifecycleStateError} */
82
- const createExecForCommands = (hasCommand, getCommands, get, stderr) => {
107
+ /** @throws {ZeltLifecycleStateError} */ const createExecForCommands = (hasCommand, getCommands, get, stderr) => {
83
108
  return async (argv) => {
84
109
  const commandName = argv[0];
85
110
  if (!commandName) {
@@ -107,8 +132,7 @@ const buildHttpNodeApp = (caps, resolver, shutdown, args) => {
107
132
  shutdown
108
133
  };
109
134
  };
110
- /** @throws {ZeltLifecycleStateError} */
111
- const buildCommandNodeApp = (caps, resolver, shutdown, stderr, args) => {
135
+ /** @throws {ZeltLifecycleStateError} */ const buildCommandNodeApp = (caps, resolver, shutdown, stderr, args) => {
112
136
  if (typeof caps.hasCommand !== "function" || typeof caps.getCommands !== "function") return void 0;
113
137
  return {
114
138
  ...resolver,
@@ -124,8 +148,7 @@ const buildSchedulerPart = (caps) => {
124
148
  stopScheduler: caps.stopScheduler
125
149
  };
126
150
  };
127
- /** @throws {ZeltLifecycleStateError} */
128
- const buildNodeApps = (caps, resolver, shutdown, stderr, args) => ({
151
+ /** @throws {ZeltLifecycleStateError} */ const buildNodeApps = (caps, resolver, shutdown, stderr, args) => ({
129
152
  httpResult: buildHttpNodeApp(caps, resolver, shutdown, args),
130
153
  commandResult: buildCommandNodeApp(caps, resolver, shutdown, stderr, args),
131
154
  schedulerPart: buildSchedulerPart(caps)
@@ -154,8 +177,7 @@ const mergeNodeApps = (result, resolver, shutdown, args) => {
154
177
  ...schedulerMethods
155
178
  };
156
179
  };
157
- /** @throws {ZeltLifecycleStateError} */
158
- async function onNode(app, options = {}) {
180
+ /** @throws {ZeltLifecycleStateError} */ async function onNode(app, options = {}) {
159
181
  app.addFallbackConfig(NodeCliConfig);
160
182
  app.addFallbackConfig(ProcessEnvConfig);
161
183
  const readyOptions = { warmup: options.warmup ?? true };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/cli.config.ts","../src/dotenv.config.ts","../src/process-env.config.ts","../src/on-node.ts","../src/serve.ts"],"sourcesContent":["import type { Signal, SignalHandler } from '@zeltjs/core';\nimport { CliConfig, Config } from '@zeltjs/core';\n\n@Config\nexport class NodeCliConfig extends CliConfig {\n override cwd(): string {\n return process.cwd();\n }\n\n override argv(): readonly string[] {\n return process.argv;\n }\n\n override exit(code: number): never {\n process.exit(code);\n }\n\n override setExitCode(code: number): void {\n process.exitCode = code;\n }\n\n override onSignal(signal: Signal, handler: SignalHandler): void {\n process.on(signal, handler);\n }\n\n override offSignal(signal: Signal, handler: SignalHandler): void {\n process.off(signal, handler);\n }\n}\n","import { Config, EnvConfig } from '@zeltjs/core';\nimport { config } from 'dotenv';\n\n@Config\nexport class DotEnvConfig extends EnvConfig {\n protected readonly paths: string[] = ['.env'];\n\n constructor() {\n super();\n for (const path of this.paths) {\n config({ path, override: true });\n }\n }\n}\n","import { Config, EnvConfig } from '@zeltjs/core';\n\n@Config\nexport class ProcessEnvConfig extends EnvConfig {\n override get(key: string): string | undefined {\n return process.env[key];\n }\n}\n","import type { ServerType } from '@hono/node-server';\nimport { serve } from '@hono/node-server';\nimport type {\n CommandApp,\n CommandClass,\n HttpApp,\n ReadyOptions,\n ReadyResult,\n SchedulerApp,\n} from '@zeltjs/core';\n\nimport { NodeCliConfig } from './cli.config';\nimport { ProcessEnvConfig } from './process-env.config';\n\ntype ListenOptions = {\n readonly port?: number;\n readonly hostname?: string;\n};\n\nexport type ServerHandle = {\n readonly address: { port: number; address: string };\n readonly shutdown: () => Promise<void>;\n};\n\nexport type NodeAppOptions = {\n readonly warmup?: boolean;\n};\n\nexport type ExecResult = {\n readonly exitCode: 0 | 1;\n};\n\ntype NodeAppBase = {\n readonly args: readonly string[];\n};\n\nexport type HttpNodeApp = ReadyResult &\n NodeAppBase & {\n readonly listen: (portOrOptions?: number | ListenOptions) => Promise<ServerHandle>;\n readonly shutdown: () => Promise<void>;\n };\n\nexport type CommandNodeApp = ReadyResult &\n NodeAppBase & {\n readonly execCommand: (argv: string[]) => Promise<ExecResult>;\n readonly shutdown: () => Promise<void>;\n };\n\nexport type SchedulerNodeAppPart = {\n readonly startScheduler: () => Promise<void>;\n readonly stopScheduler: () => Promise<void>;\n};\n\nexport type FullNodeApp = HttpNodeApp & CommandNodeApp;\n\nexport type NodeApp = HttpNodeApp | CommandNodeApp | FullNodeApp;\n\ntype Stderr = { write: (s: string) => void };\n\nconst successResult: ExecResult = { exitCode: 0 };\nconst failureResult: ExecResult = { exitCode: 1 };\n\nconst createListenForHttp = (\n appFetch: (request: Request) => Promise<Response>,\n appShutdown: () => Promise<void>,\n): ((portOrOptions?: number | ListenOptions) => Promise<ServerHandle>) => {\n return async (portOrOptions?: number | ListenOptions): Promise<ServerHandle> => {\n const listenOptions: ListenOptions =\n typeof portOrOptions === 'number' ? { port: portOrOptions } : (portOrOptions ?? {});\n\n const port = listenOptions.port ?? 3000;\n const hostname = listenOptions.hostname ?? '0.0.0.0';\n\n let server!: ServerType;\n const serverReady = new Promise<{ port: number; address: string }>((resolve) => {\n server = serve({ fetch: appFetch, port, hostname }, (info) =>\n resolve({ port: info.port, address: info.address }),\n );\n });\n\n const address = await serverReady;\n\n const shutdown = async (): Promise<void> => {\n await new Promise<void>((resolve, reject) => {\n server.close((err) => (err ? reject(err) : resolve()));\n });\n await appShutdown();\n };\n\n return { address, shutdown };\n };\n};\n\n/** @throws {ZeltLifecycleStateError} */\nconst runCommand = (\n CommandClass: CommandClass,\n get: <T extends object>(cls: new (...args: never[]) => T) => T,\n): Promise<ExecResult> => {\n const instance = get(CommandClass);\n return Promise.resolve()\n .then(() => instance.run())\n .then(() => successResult)\n .catch(() => failureResult);\n};\n\n/** @throws {ZeltLifecycleStateError} */\nconst createExecForCommands = (\n hasCommand: (name: string) => boolean,\n getCommands: () => ReadonlyMap<string, CommandClass>,\n get: <T extends object>(cls: new (...args: never[]) => T) => T,\n stderr: Stderr,\n): ((argv: string[]) => Promise<ExecResult>) => {\n return async (argv: string[]): Promise<ExecResult> => {\n const commandName = argv[0];\n if (!commandName) {\n stderr.write('No command specified\\n');\n return failureResult;\n }\n\n if (!hasCommand(commandName)) {\n stderr.write(`Command not found: ${commandName}\\n`);\n return failureResult;\n }\n\n const commandMap = getCommands();\n const CommandClass = commandMap.get(commandName);\n if (!CommandClass) {\n return failureResult;\n }\n\n return runCommand(CommandClass, get);\n };\n};\n\nconst getStderr = (): Stderr => globalThis.process.stderr;\n\nconst getArgs = (): readonly string[] => globalThis.process.argv.slice(2);\n\ntype AppCapabilities = {\n fetch?: (request: Request) => Promise<Response>;\n hasCommand?: (name: string) => boolean;\n getCommands?: () => ReadonlyMap<string, CommandClass>;\n startScheduler?: () => Promise<void>;\n stopScheduler?: () => Promise<void>;\n};\n\ntype AnyApp = HttpApp | CommandApp | SchedulerApp | (HttpApp & CommandApp & SchedulerApp);\n\nconst extractCapabilities = (app: AnyApp): AppCapabilities => app;\n\ntype BuildResult = {\n httpResult: HttpNodeApp | undefined;\n commandResult: CommandNodeApp | undefined;\n schedulerPart: SchedulerNodeAppPart | undefined;\n};\n\nconst buildHttpNodeApp = (\n caps: AppCapabilities,\n resolver: ReadyResult,\n shutdown: () => Promise<void>,\n args: readonly string[],\n): HttpNodeApp | undefined => {\n if (typeof caps.fetch !== 'function') return undefined;\n return { ...resolver, args, listen: createListenForHttp(caps.fetch, shutdown), shutdown };\n};\n\n/** @throws {ZeltLifecycleStateError} */\nconst buildCommandNodeApp = (\n caps: AppCapabilities,\n resolver: ReadyResult,\n shutdown: () => Promise<void>,\n stderr: Stderr,\n args: readonly string[],\n): CommandNodeApp | undefined => {\n if (typeof caps.hasCommand !== 'function' || typeof caps.getCommands !== 'function')\n return undefined;\n return {\n ...resolver,\n args,\n execCommand: createExecForCommands(caps.hasCommand, caps.getCommands, resolver.get, stderr),\n shutdown,\n };\n};\n\nconst buildSchedulerPart = (caps: AppCapabilities): SchedulerNodeAppPart | undefined => {\n if (typeof caps.startScheduler !== 'function' || typeof caps.stopScheduler !== 'function')\n return undefined;\n return {\n startScheduler: caps.startScheduler,\n stopScheduler: caps.stopScheduler,\n };\n};\n\n/** @throws {ZeltLifecycleStateError} */\nconst buildNodeApps = (\n caps: AppCapabilities,\n resolver: ReadyResult,\n shutdown: () => Promise<void>,\n stderr: Stderr,\n args: readonly string[],\n): BuildResult => ({\n httpResult: buildHttpNodeApp(caps, resolver, shutdown, args),\n commandResult: buildCommandNodeApp(caps, resolver, shutdown, stderr, args),\n schedulerPart: buildSchedulerPart(caps),\n});\n\nconst mergeNodeApps = (\n result: BuildResult,\n resolver: ReadyResult,\n shutdown: () => Promise<void>,\n args: readonly string[],\n): NodeApp => {\n const { httpResult, commandResult, schedulerPart } = result;\n const schedulerMethods = schedulerPart ?? {};\n\n if (httpResult && commandResult) {\n const fullApp: FullNodeApp = {\n ...httpResult,\n execCommand: commandResult.execCommand,\n ...schedulerMethods,\n };\n return fullApp;\n }\n if (httpResult) return { ...httpResult, ...schedulerMethods };\n if (commandResult) return { ...commandResult, ...schedulerMethods };\n return { ...resolver, args, shutdown, listen: () => new Promise(() => {}), ...schedulerMethods };\n};\n\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(\n app: HttpApp & CommandApp & SchedulerApp,\n options?: NodeAppOptions,\n): Promise<FullNodeApp & SchedulerNodeAppPart>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(\n app: HttpApp & SchedulerApp,\n options?: NodeAppOptions,\n): Promise<HttpNodeApp & SchedulerNodeAppPart>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(\n app: CommandApp & SchedulerApp,\n options?: NodeAppOptions,\n): Promise<CommandNodeApp & SchedulerNodeAppPart>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(app: HttpApp & CommandApp, options?: NodeAppOptions): Promise<FullNodeApp>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(app: HttpApp, options?: NodeAppOptions): Promise<HttpNodeApp>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(app: CommandApp, options?: NodeAppOptions): Promise<CommandNodeApp>;\n/** @throws {ZeltLifecycleStateError} */\nexport async function onNode(app: AnyApp, options: NodeAppOptions = {}): Promise<NodeApp> {\n app.addFallbackConfig(NodeCliConfig);\n app.addFallbackConfig(ProcessEnvConfig);\n\n const readyOptions: ReadyOptions = { warmup: options.warmup ?? true };\n const resolver = await app.ready(readyOptions);\n\n const caps = extractCapabilities(app);\n const stderr = getStderr();\n const args = getArgs();\n const result = buildNodeApps(caps, resolver, app.shutdown, stderr, args);\n\n return mergeNodeApps(result, resolver, app.shutdown, args);\n}\n","import type { ServerType } from '@hono/node-server';\nimport { serve } from '@hono/node-server';\n\nexport type ServeOptions = {\n port?: number;\n hostname?: string;\n};\n\nexport type AddressInfo = {\n port: number;\n address: string;\n};\n\ntype AppLike = {\n fetch: (request: Request) => Promise<Response>;\n};\n\nconst buildServeOptions = (\n optionsOrCallback: ServeOptions | ((info: AddressInfo) => void) | undefined,\n): ServeOptions => (typeof optionsOrCallback === 'function' ? {} : (optionsOrCallback ?? {}));\n\nconst extractCallback = (\n optionsOrCallback: ServeOptions | ((info: AddressInfo) => void) | undefined,\n maybeCallback: ((info: AddressInfo) => void) | undefined,\n): ((info: AddressInfo) => void) | undefined =>\n typeof optionsOrCallback === 'function' ? optionsOrCallback : maybeCallback;\n\nexport const serveApp = (\n app: AppLike,\n optionsOrCallback?: ServeOptions | ((info: AddressInfo) => void),\n maybeCallback?: (info: AddressInfo) => void,\n): ServerType => {\n const options = buildServeOptions(optionsOrCallback);\n const callback = extractCallback(optionsOrCallback, maybeCallback);\n\n return serve(\n {\n fetch: app.fetch,\n port: options.port ?? 3000,\n hostname: options.hostname ?? '0.0.0.0',\n },\n callback,\n );\n};\n"],"mappings":";;;;AAIA,IAAa,gBADb,CAAC,OAAD,cACmC,UAAU;CAC3C,MAAuB;AACrB,SAAO,QAAQ,KAAK;;CAGtB,OAAmC;AACjC,SAAO,QAAQ;;CAGjB,KAAc,MAAqB;AACjC,UAAQ,KAAK,KAAK;;CAGpB,YAAqB,MAAoB;AACvC,UAAQ,WAAW;;CAGrB,SAAkB,QAAgB,SAA8B;AAC9D,UAAQ,GAAG,QAAQ,QAAQ;;CAG7B,UAAmB,QAAgB,SAA8B;AAC/D,UAAQ,IAAI,QAAQ,QAAQ;;;;;ACtBhC,IAAa,eADb,CAAC,OAAD,cACkC,UAAU;CAG1C,cAAc;AACZ,SAAO;eAH4B,CAAC,OAAO;AAI3C,OAAK,MAAM,QAAQ,KAAK,MACtB,QAAO;GAAE;GAAM,UAAU;GAAM,CAAC;;;;;ACPtC,IAAa,mBADb,CAAC,OAAD,cACsC,UAAU;CAC9C,IAAa,KAAiC;AAC5C,SAAO,QAAQ,IAAI;;;;;ACsDvB,MAAM,gBAA4B,EAAE,UAAU,GAAG;AACjD,MAAM,gBAA4B,EAAE,UAAU,GAAG;AAEjD,MAAM,uBACJ,UACA,gBACwE;AACxE,QAAO,OAAO,kBAAkE;EAC9E,MAAM,gBACJ,OAAO,kBAAkB,WAAW,EAAE,MAAM,eAAe,GAAI,iBAAiB,EAAE;EAEpF,MAAM,OAAO,cAAc,QAAQ;EACnC,MAAM,WAAW,cAAc,YAAY;EAE3C,IAAI;EAOJ,MAAM,UAAU,MAAM,IANE,SAA4C,YAAY;AAC9E,YAAS,MAAM;IAAE,OAAO;IAAU;IAAM;IAAU,GAAG,SACnD,QAAQ;IAAE,MAAM,KAAK;IAAM,SAAS,KAAK;IAAS,CAAC,CACpD;IAG8B;EAEjC,MAAM,WAAW,YAA2B;AAC1C,SAAM,IAAI,SAAe,SAAS,WAAW;AAC3C,WAAO,OAAO,QAAS,MAAM,OAAO,IAAI,GAAG,SAAS,CAAE;KACtD;AACF,SAAM,aAAa;;AAGrB,SAAO;GAAE;GAAS;GAAU;;;;AAKhC,MAAM,cACJ,cACA,QACwB;CACxB,MAAM,WAAW,IAAI,aAAa;AAClC,QAAO,QAAQ,SAAS,CACrB,WAAW,SAAS,KAAK,CAAC,CAC1B,WAAW,cAAc,CACzB,YAAY,cAAc;;;AAI/B,MAAM,yBACJ,YACA,aACA,KACA,WAC8C;AAC9C,QAAO,OAAO,SAAwC;EACpD,MAAM,cAAc,KAAK;AACzB,MAAI,CAAC,aAAa;AAChB,UAAO,MAAM,yBAAyB;AACtC,UAAO;;AAGT,MAAI,CAAC,WAAW,YAAY,EAAE;AAC5B,UAAO,MAAM,sBAAsB,YAAY,IAAI;AACnD,UAAO;;EAIT,MAAM,eADa,aACY,CAAC,IAAI,YAAY;AAChD,MAAI,CAAC,aACH,QAAO;AAGT,SAAO,WAAW,cAAc,IAAI;;;AAIxC,MAAM,kBAA0B,WAAW,QAAQ;AAEnD,MAAM,gBAAmC,WAAW,QAAQ,KAAK,MAAM,EAAE;AAYzE,MAAM,uBAAuB,QAAiC;AAQ9D,MAAM,oBACJ,MACA,UACA,UACA,SAC4B;AAC5B,KAAI,OAAO,KAAK,UAAU,WAAY,QAAO,KAAA;AAC7C,QAAO;EAAE,GAAG;EAAU;EAAM,QAAQ,oBAAoB,KAAK,OAAO,SAAS;EAAE;EAAU;;;AAI3F,MAAM,uBACJ,MACA,UACA,UACA,QACA,SAC+B;AAC/B,KAAI,OAAO,KAAK,eAAe,cAAc,OAAO,KAAK,gBAAgB,WACvE,QAAO,KAAA;AACT,QAAO;EACL,GAAG;EACH;EACA,aAAa,sBAAsB,KAAK,YAAY,KAAK,aAAa,SAAS,KAAK,OAAO;EAC3F;EACD;;AAGH,MAAM,sBAAsB,SAA4D;AACtF,KAAI,OAAO,KAAK,mBAAmB,cAAc,OAAO,KAAK,kBAAkB,WAC7E,QAAO,KAAA;AACT,QAAO;EACL,gBAAgB,KAAK;EACrB,eAAe,KAAK;EACrB;;;AAIH,MAAM,iBACJ,MACA,UACA,UACA,QACA,UACiB;CACjB,YAAY,iBAAiB,MAAM,UAAU,UAAU,KAAK;CAC5D,eAAe,oBAAoB,MAAM,UAAU,UAAU,QAAQ,KAAK;CAC1E,eAAe,mBAAmB,KAAK;CACxC;AAED,MAAM,iBACJ,QACA,UACA,UACA,SACY;CACZ,MAAM,EAAE,YAAY,eAAe,kBAAkB;CACrD,MAAM,mBAAmB,iBAAiB,EAAE;AAE5C,KAAI,cAAc,cAMhB,QAAO;EAJL,GAAG;EACH,aAAa,cAAc;EAC3B,GAAG;EAES;AAEhB,KAAI,WAAY,QAAO;EAAE,GAAG;EAAY,GAAG;EAAkB;AAC7D,KAAI,cAAe,QAAO;EAAE,GAAG;EAAe,GAAG;EAAkB;AACnE,QAAO;EAAE,GAAG;EAAU;EAAM;EAAU,cAAc,IAAI,cAAc,GAAG;EAAE,GAAG;EAAkB;;;AAyBlG,eAAsB,OAAO,KAAa,UAA0B,EAAE,EAAoB;AACxF,KAAI,kBAAkB,cAAc;AACpC,KAAI,kBAAkB,iBAAiB;CAEvC,MAAM,eAA6B,EAAE,QAAQ,QAAQ,UAAU,MAAM;CACrE,MAAM,WAAW,MAAM,IAAI,MAAM,aAAa;CAE9C,MAAM,OAAO,oBAAoB,IAAI;CACrC,MAAM,SAAS,WAAW;CAC1B,MAAM,OAAO,SAAS;AAGtB,QAAO,cAFQ,cAAc,MAAM,UAAU,IAAI,UAAU,QAAQ,KAExC,EAAE,UAAU,IAAI,UAAU,KAAK;;;;ACrP5D,MAAM,qBACJ,sBACkB,OAAO,sBAAsB,aAAa,EAAE,GAAI,qBAAqB,EAAE;AAE3F,MAAM,mBACJ,mBACA,kBAEA,OAAO,sBAAsB,aAAa,oBAAoB;AAEhE,MAAa,YACX,KACA,mBACA,kBACe;CACf,MAAM,UAAU,kBAAkB,kBAAkB;CACpD,MAAM,WAAW,gBAAgB,mBAAmB,cAAc;AAElE,QAAO,MACL;EACE,OAAO,IAAI;EACX,MAAM,QAAQ,QAAQ;EACtB,UAAU,QAAQ,YAAY;EAC/B,EACD,SACD"}
1
+ {"version":3,"file":"index.js","names":["CliConfig","Config","NodeCliConfig","cwd","process","argv","exit","code","setExitCode","exitCode","onSignal","signal","handler","on","offSignal","off","Config","EnvConfig","config","DotEnvConfig","paths","path","override","Config","EnvConfig","ProcessEnvConfig","get","key","process","env","serve","NodeCliConfig","ProcessEnvConfig","successResult","exitCode","failureResult","createListenForHttp","appFetch","appShutdown","portOrOptions","listenOptions","port","hostname","server","serverReady","Promise","resolve","fetch","info","address","shutdown","reject","close","err","runCommand","CommandClass","get","instance","then","run","catch","createExecForCommands","hasCommand","getCommands","stderr","argv","commandName","write","commandMap","getStderr","globalThis","process","getArgs","slice","extractCapabilities","app","buildHttpNodeApp","caps","resolver","args","undefined","listen","buildCommandNodeApp","execCommand","buildSchedulerPart","startScheduler","stopScheduler","buildNodeApps","httpResult","commandResult","schedulerPart","mergeNodeApps","result","schedulerMethods","fullApp","onNode","options","addFallbackConfig","readyOptions","warmup","ready","serve","buildServeOptions","optionsOrCallback","extractCallback","maybeCallback","serveApp","app","options","callback","fetch","port","hostname"],"sources":["../src/cli.config.ts","../src/dotenv.config.ts","../src/process-env.config.ts","../src/on-node.ts","../src/serve.ts"],"sourcesContent":["import type { Signal, SignalHandler } from '@zeltjs/core';\nimport { CliConfig, Config } from '@zeltjs/core';\n\n@Config\nexport class NodeCliConfig extends CliConfig {\n override cwd(): string {\n return process.cwd();\n }\n\n override argv(): readonly string[] {\n return process.argv;\n }\n\n override exit(code: number): never {\n process.exit(code);\n }\n\n override setExitCode(code: number): void {\n process.exitCode = code;\n }\n\n override onSignal(signal: Signal, handler: SignalHandler): void {\n process.on(signal, handler);\n }\n\n override offSignal(signal: Signal, handler: SignalHandler): void {\n process.off(signal, handler);\n }\n}\n","import { Config, EnvConfig } from '@zeltjs/core';\nimport { config } from 'dotenv';\n\n@Config\nexport class DotEnvConfig extends EnvConfig {\n protected readonly paths: string[] = ['.env'];\n\n constructor() {\n super();\n for (const path of this.paths) {\n config({ path, override: true });\n }\n }\n}\n","import { Config, EnvConfig } from '@zeltjs/core';\n\n@Config\nexport class ProcessEnvConfig extends EnvConfig {\n override get(key: string): string | undefined {\n return process.env[key];\n }\n}\n","import type { ServerType } from '@hono/node-server';\nimport { serve } from '@hono/node-server';\nimport type {\n CommandApp,\n CommandClass,\n HttpApp,\n ReadyOptions,\n ReadyResult,\n SchedulerApp,\n} from '@zeltjs/core';\n\nimport { NodeCliConfig } from './cli.config';\nimport { ProcessEnvConfig } from './process-env.config';\n\ntype ListenOptions = {\n readonly port?: number;\n readonly hostname?: string;\n};\n\nexport type ServerHandle = {\n readonly address: { port: number; address: string };\n readonly shutdown: () => Promise<void>;\n};\n\nexport type NodeAppOptions = {\n readonly warmup?: boolean;\n};\n\nexport type ExecResult = {\n readonly exitCode: 0 | 1;\n};\n\ntype NodeAppBase = {\n readonly args: readonly string[];\n};\n\nexport type HttpNodeApp = ReadyResult &\n NodeAppBase & {\n readonly listen: (portOrOptions?: number | ListenOptions) => Promise<ServerHandle>;\n readonly shutdown: () => Promise<void>;\n };\n\nexport type CommandNodeApp = ReadyResult &\n NodeAppBase & {\n readonly execCommand: (argv: string[]) => Promise<ExecResult>;\n readonly shutdown: () => Promise<void>;\n };\n\nexport type SchedulerNodeAppPart = {\n readonly startScheduler: () => Promise<void>;\n readonly stopScheduler: () => Promise<void>;\n};\n\nexport type FullNodeApp = HttpNodeApp & CommandNodeApp;\n\nexport type NodeApp = HttpNodeApp | CommandNodeApp | FullNodeApp;\n\ntype Stderr = { write: (s: string) => void };\n\nconst successResult: ExecResult = { exitCode: 0 };\nconst failureResult: ExecResult = { exitCode: 1 };\n\nconst createListenForHttp = (\n appFetch: (request: Request) => Promise<Response>,\n appShutdown: () => Promise<void>,\n): ((portOrOptions?: number | ListenOptions) => Promise<ServerHandle>) => {\n return async (portOrOptions?: number | ListenOptions): Promise<ServerHandle> => {\n const listenOptions: ListenOptions =\n typeof portOrOptions === 'number' ? { port: portOrOptions } : (portOrOptions ?? {});\n\n const port = listenOptions.port ?? 3000;\n const hostname = listenOptions.hostname ?? '0.0.0.0';\n\n let server!: ServerType;\n const serverReady = new Promise<{ port: number; address: string }>((resolve) => {\n server = serve({ fetch: appFetch, port, hostname }, (info) =>\n resolve({ port: info.port, address: info.address }),\n );\n });\n\n const address = await serverReady;\n\n const shutdown = async (): Promise<void> => {\n await new Promise<void>((resolve, reject) => {\n server.close((err) => (err ? reject(err) : resolve()));\n });\n await appShutdown();\n };\n\n return { address, shutdown };\n };\n};\n\n/** @throws {ZeltLifecycleStateError} */\nconst runCommand = (\n CommandClass: CommandClass,\n get: <T extends object>(cls: new (...args: never[]) => T) => T,\n): Promise<ExecResult> => {\n const instance = get(CommandClass);\n return Promise.resolve()\n .then(() => instance.run())\n .then(() => successResult)\n .catch(() => failureResult);\n};\n\n/** @throws {ZeltLifecycleStateError} */\nconst createExecForCommands = (\n hasCommand: (name: string) => boolean,\n getCommands: () => ReadonlyMap<string, CommandClass>,\n get: <T extends object>(cls: new (...args: never[]) => T) => T,\n stderr: Stderr,\n): ((argv: string[]) => Promise<ExecResult>) => {\n return async (argv: string[]): Promise<ExecResult> => {\n const commandName = argv[0];\n if (!commandName) {\n stderr.write('No command specified\\n');\n return failureResult;\n }\n\n if (!hasCommand(commandName)) {\n stderr.write(`Command not found: ${commandName}\\n`);\n return failureResult;\n }\n\n const commandMap = getCommands();\n const CommandClass = commandMap.get(commandName);\n if (!CommandClass) {\n return failureResult;\n }\n\n return runCommand(CommandClass, get);\n };\n};\n\nconst getStderr = (): Stderr => globalThis.process.stderr;\n\nconst getArgs = (): readonly string[] => globalThis.process.argv.slice(2);\n\ntype AppCapabilities = {\n fetch?: (request: Request) => Promise<Response>;\n hasCommand?: (name: string) => boolean;\n getCommands?: () => ReadonlyMap<string, CommandClass>;\n startScheduler?: () => Promise<void>;\n stopScheduler?: () => Promise<void>;\n};\n\ntype AnyApp = HttpApp | CommandApp | SchedulerApp | (HttpApp & CommandApp & SchedulerApp);\n\nconst extractCapabilities = (app: AnyApp): AppCapabilities => app;\n\ntype BuildResult = {\n httpResult: HttpNodeApp | undefined;\n commandResult: CommandNodeApp | undefined;\n schedulerPart: SchedulerNodeAppPart | undefined;\n};\n\nconst buildHttpNodeApp = (\n caps: AppCapabilities,\n resolver: ReadyResult,\n shutdown: () => Promise<void>,\n args: readonly string[],\n): HttpNodeApp | undefined => {\n if (typeof caps.fetch !== 'function') return undefined;\n return { ...resolver, args, listen: createListenForHttp(caps.fetch, shutdown), shutdown };\n};\n\n/** @throws {ZeltLifecycleStateError} */\nconst buildCommandNodeApp = (\n caps: AppCapabilities,\n resolver: ReadyResult,\n shutdown: () => Promise<void>,\n stderr: Stderr,\n args: readonly string[],\n): CommandNodeApp | undefined => {\n if (typeof caps.hasCommand !== 'function' || typeof caps.getCommands !== 'function')\n return undefined;\n return {\n ...resolver,\n args,\n execCommand: createExecForCommands(caps.hasCommand, caps.getCommands, resolver.get, stderr),\n shutdown,\n };\n};\n\nconst buildSchedulerPart = (caps: AppCapabilities): SchedulerNodeAppPart | undefined => {\n if (typeof caps.startScheduler !== 'function' || typeof caps.stopScheduler !== 'function')\n return undefined;\n return {\n startScheduler: caps.startScheduler,\n stopScheduler: caps.stopScheduler,\n };\n};\n\n/** @throws {ZeltLifecycleStateError} */\nconst buildNodeApps = (\n caps: AppCapabilities,\n resolver: ReadyResult,\n shutdown: () => Promise<void>,\n stderr: Stderr,\n args: readonly string[],\n): BuildResult => ({\n httpResult: buildHttpNodeApp(caps, resolver, shutdown, args),\n commandResult: buildCommandNodeApp(caps, resolver, shutdown, stderr, args),\n schedulerPart: buildSchedulerPart(caps),\n});\n\nconst mergeNodeApps = (\n result: BuildResult,\n resolver: ReadyResult,\n shutdown: () => Promise<void>,\n args: readonly string[],\n): NodeApp => {\n const { httpResult, commandResult, schedulerPart } = result;\n const schedulerMethods = schedulerPart ?? {};\n\n if (httpResult && commandResult) {\n const fullApp: FullNodeApp = {\n ...httpResult,\n execCommand: commandResult.execCommand,\n ...schedulerMethods,\n };\n return fullApp;\n }\n if (httpResult) return { ...httpResult, ...schedulerMethods };\n if (commandResult) return { ...commandResult, ...schedulerMethods };\n return { ...resolver, args, shutdown, listen: () => new Promise(() => {}), ...schedulerMethods };\n};\n\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(\n app: HttpApp & CommandApp & SchedulerApp,\n options?: NodeAppOptions,\n): Promise<FullNodeApp & SchedulerNodeAppPart>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(\n app: HttpApp & SchedulerApp,\n options?: NodeAppOptions,\n): Promise<HttpNodeApp & SchedulerNodeAppPart>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(\n app: CommandApp & SchedulerApp,\n options?: NodeAppOptions,\n): Promise<CommandNodeApp & SchedulerNodeAppPart>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(app: HttpApp & CommandApp, options?: NodeAppOptions): Promise<FullNodeApp>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(app: HttpApp, options?: NodeAppOptions): Promise<HttpNodeApp>;\n/** @throws {ZeltLifecycleStateError} */\nexport function onNode(app: CommandApp, options?: NodeAppOptions): Promise<CommandNodeApp>;\n/** @throws {ZeltLifecycleStateError} */\nexport async function onNode(app: AnyApp, options: NodeAppOptions = {}): Promise<NodeApp> {\n app.addFallbackConfig(NodeCliConfig);\n app.addFallbackConfig(ProcessEnvConfig);\n\n const readyOptions: ReadyOptions = { warmup: options.warmup ?? true };\n const resolver = await app.ready(readyOptions);\n\n const caps = extractCapabilities(app);\n const stderr = getStderr();\n const args = getArgs();\n const result = buildNodeApps(caps, resolver, app.shutdown, stderr, args);\n\n return mergeNodeApps(result, resolver, app.shutdown, args);\n}\n","import type { ServerType } from '@hono/node-server';\nimport { serve } from '@hono/node-server';\n\nexport type ServeOptions = {\n port?: number;\n hostname?: string;\n};\n\nexport type AddressInfo = {\n port: number;\n address: string;\n};\n\ntype AppLike = {\n fetch: (request: Request) => Promise<Response>;\n};\n\nconst buildServeOptions = (\n optionsOrCallback: ServeOptions | ((info: AddressInfo) => void) | undefined,\n): ServeOptions => (typeof optionsOrCallback === 'function' ? {} : (optionsOrCallback ?? {}));\n\nconst extractCallback = (\n optionsOrCallback: ServeOptions | ((info: AddressInfo) => void) | undefined,\n maybeCallback: ((info: AddressInfo) => void) | undefined,\n): ((info: AddressInfo) => void) | undefined =>\n typeof optionsOrCallback === 'function' ? optionsOrCallback : maybeCallback;\n\nexport const serveApp = (\n app: AppLike,\n optionsOrCallback?: ServeOptions | ((info: AddressInfo) => void),\n maybeCallback?: (info: AddressInfo) => void,\n): ServerType => {\n const options = buildServeOptions(optionsOrCallback);\n const callback = extractCallback(optionsOrCallback, maybeCallback);\n\n return serve(\n {\n fetch: app.fetch,\n port: options.port ?? 3000,\n hostname: options.hostname ?? '0.0.0.0',\n },\n callback,\n );\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeltjs/adapter-node",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -23,7 +23,7 @@
23
23
  "dependencies": {
24
24
  "@hono/node-server": "2.0.1",
25
25
  "dotenv": "17.4.2",
26
- "@zeltjs/core": "0.4.0"
26
+ "@zeltjs/core": "0.5.0"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/node": "22.19.17"