@zeltjs/adapter-node 0.9.1-canary.3 → 0.9.1-canary.4
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/index.cjs +1 -0
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -90,6 +90,7 @@ const createNodeApp = (readyApp, shutdown, args) => {
|
|
|
90
90
|
};
|
|
91
91
|
/** @throws {ZeltLifecycleStateError} */ async function onNode(app, options = {}) {
|
|
92
92
|
const readyApp = await app.createRuntime({
|
|
93
|
+
...options.configs === void 0 ? {} : { configs: options.configs },
|
|
93
94
|
fallbackConfigs: [NodeCliConfig, ProcessEnvAdaptor],
|
|
94
95
|
warmup: options.warmup ?? true
|
|
95
96
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ServerType, createAdaptorServer } from "@hono/node-server";
|
|
2
|
-
import { CliConfig, ConfiguredFeature, EnvAdaptor, FeatureApp, FeatureReadyCapabilities, HttpFeature, RuntimeApp, Signal, SignalHandler } from "@zeltjs/core";
|
|
2
|
+
import { CliConfig, ConfigClass, ConfiguredFeature, EnvAdaptor, FeatureApp, FeatureReadyCapabilities, HttpFeature, RuntimeApp, Signal, SignalHandler } from "@zeltjs/core";
|
|
3
3
|
|
|
4
4
|
//#region src/node-cli.config.d.ts
|
|
5
5
|
declare class NodeCliConfig extends CliConfig {
|
|
@@ -24,6 +24,7 @@ type ServerHandle = {
|
|
|
24
24
|
readonly shutdown: () => Promise<void>;
|
|
25
25
|
};
|
|
26
26
|
type NodeAppOptions = {
|
|
27
|
+
readonly configs?: readonly ConfigClass<object>[];
|
|
27
28
|
readonly warmup?: boolean;
|
|
28
29
|
};
|
|
29
30
|
type EnvironmentNodeAppPart = {
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/node-cli.config.ts","../src/on-node.ts","../src/process-env.adaptor.ts","../src/serve.lib.ts"],"mappings":";;;;cAIa,aAAA,SAAsB,SAAA;EACxB,GAAA,CAAA;EAIA,IAAA,CAAA;EAIA,IAAA,CAAK,IAAA;EAIL,WAAA,CAAY,IAAA;EAIZ,QAAA,CAAS,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,aAAA;EAIlC,SAAA,CAAU,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,aAAA;AAAA;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/node-cli.config.ts","../src/on-node.ts","../src/process-env.adaptor.ts","../src/serve.lib.ts"],"mappings":";;;;cAIa,aAAA,SAAsB,SAAA;EACxB,GAAA,CAAA;EAIA,IAAA,CAAA;EAIA,IAAA,CAAK,IAAA;EAIL,WAAA,CAAY,IAAA;EAIZ,QAAA,CAAS,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,aAAA;EAIlC,SAAA,CAAU,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,aAAA;AAAA;;;KCXzC,aAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGC,YAAA;EAAA,SACD,OAAA;IAAW,IAAA;IAAc,OAAA;EAAA;EAAA,SACzB,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGf,cAAA;EAAA,SACD,OAAA,YAAmB,WAAA;EAAA,SACnB,MAAA;AAAA;AAAA,KAKN,sBAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,eAAA;EAAA,SACM,MAAA,GAAS,aAAA,YAAyB,aAAA,KAAkB,OAAA,CAAQ,YAAA;AAAA;AAAA,KAGlE,uBAAA,kBAAyC,iBAAA,IAC5C,wBAAA,CAAyB,QAAA,KACtB,QAAA,SAAiB,WAAA,WAAsB,eAAA;AAAA,KAEvC,0BAAA,oBAA8C,iBAAA,8BAC3B,CAAA,YAAa,QAAA,UAAkB,uBAAA,CAAwB,QAAA;AAAA,KAK1E,kBAAA,oBAAsC,iBAAA,MAAuB,UAAA,CAAW,CAAA,IAC3E,sBAAA,GACA,0BAAA,CAA2B,CAAA;AAAA,iBA+Db,MAAA,0BAAgC,iBAAA,GAAA,CAC9C,GAAA,EAAK,UAAA,CAAW,CAAA,GAChB,OAAA,GAAU,cAAA,GACT,OAAA,CAAQ,kBAAA,CAAmB,CAAA;;;cCnHjB,iBAAA,SAA0B,UAAA;EAC5B,GAAA,CAAI,GAAA;AAAA;;;KCDH,YAAA;EACV,IAAA;EACA,QAAA;AAAA;AAAA,KAGU,WAAA;EACV,IAAA;EACA,OAAA;AAAA;AAAA,KAGG,OAAA;EACH,KAAA,GAAQ,OAAA,EAAS,OAAA,KAAY,OAAA,CAAQ,QAAA;AAAA;AAAA,cAa1B,QAAA,GACX,GAAA,EAAK,OAAA,EACL,iBAAA,GAAoB,YAAA,KAAiB,IAAA,EAAM,WAAA,YAC3C,aAAA,IAAiB,IAAA,EAAM,WAAA,cACtB,UAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ServerType, createAdaptorServer } from "@hono/node-server";
|
|
2
|
-
import { CliConfig, ConfiguredFeature, EnvAdaptor, FeatureApp, FeatureReadyCapabilities, HttpFeature, RuntimeApp, Signal, SignalHandler } from "@zeltjs/core";
|
|
2
|
+
import { CliConfig, ConfigClass, ConfiguredFeature, EnvAdaptor, FeatureApp, FeatureReadyCapabilities, HttpFeature, RuntimeApp, Signal, SignalHandler } from "@zeltjs/core";
|
|
3
3
|
|
|
4
4
|
//#region src/node-cli.config.d.ts
|
|
5
5
|
declare class NodeCliConfig extends CliConfig {
|
|
@@ -24,6 +24,7 @@ type ServerHandle = {
|
|
|
24
24
|
readonly shutdown: () => Promise<void>;
|
|
25
25
|
};
|
|
26
26
|
type NodeAppOptions = {
|
|
27
|
+
readonly configs?: readonly ConfigClass<object>[];
|
|
27
28
|
readonly warmup?: boolean;
|
|
28
29
|
};
|
|
29
30
|
type EnvironmentNodeAppPart = {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/node-cli.config.ts","../src/on-node.ts","../src/process-env.adaptor.ts","../src/serve.lib.ts"],"mappings":";;;;cAIa,aAAA,SAAsB,SAAA;EACxB,GAAA,CAAA;EAIA,IAAA,CAAA;EAIA,IAAA,CAAK,IAAA;EAIL,WAAA,CAAY,IAAA;EAIZ,QAAA,CAAS,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,aAAA;EAIlC,SAAA,CAAU,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,aAAA;AAAA;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/node-cli.config.ts","../src/on-node.ts","../src/process-env.adaptor.ts","../src/serve.lib.ts"],"mappings":";;;;cAIa,aAAA,SAAsB,SAAA;EACxB,GAAA,CAAA;EAIA,IAAA,CAAA;EAIA,IAAA,CAAK,IAAA;EAIL,WAAA,CAAY,IAAA;EAIZ,QAAA,CAAS,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,aAAA;EAIlC,SAAA,CAAU,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,aAAA;AAAA;;;KCXzC,aAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGC,YAAA;EAAA,SACD,OAAA;IAAW,IAAA;IAAc,OAAA;EAAA;EAAA,SACzB,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGf,cAAA;EAAA,SACD,OAAA,YAAmB,WAAA;EAAA,SACnB,MAAA;AAAA;AAAA,KAKN,sBAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,eAAA;EAAA,SACM,MAAA,GAAS,aAAA,YAAyB,aAAA,KAAkB,OAAA,CAAQ,YAAA;AAAA;AAAA,KAGlE,uBAAA,mBAAyC,iBAAA,IAC5C,wBAAA,CAAyB,SAAA,KACtB,SAAA,SAAiB,WAAA,WAAsB,eAAA;AAAA,KAEvC,0BAAA,oBAA8C,iBAAA,8BAC3B,CAAA,YAAa,QAAA,UAAkB,uBAAA,CAAwB,QAAA;AAAA,KAK1E,kBAAA,oBAAsC,iBAAA,MAAuB,UAAA,CAAW,CAAA,IAC3E,sBAAA,GACA,0BAAA,CAA2B,CAAA;AAAA,iBA+Db,MAAA,0BAAgC,iBAAA,GAAA,CAC9C,GAAA,EAAK,UAAA,CAAW,CAAA,GAChB,OAAA,GAAU,cAAA,GACT,OAAA,CAAQ,kBAAA,CAAmB,CAAA;;;cCnHjB,iBAAA,SAA0B,UAAA;EAC5B,GAAA,CAAI,GAAA;AAAA;;;KCDH,YAAA;EACV,IAAA;EACA,QAAA;AAAA;AAAA,KAGU,WAAA;EACV,IAAA;EACA,OAAA;AAAA;AAAA,KAGG,OAAA;EACH,KAAA,GAAQ,OAAA,EAAS,OAAA,KAAY,OAAA,CAAQ,QAAA;AAAA;AAAA,cAa1B,QAAA,GACX,GAAA,EAAK,OAAA,EACL,iBAAA,GAAoB,YAAA,KAAiB,IAAA,EAAM,WAAA,YAC3C,aAAA,IAAiB,IAAA,EAAM,WAAA,cACtB,UAAA"}
|
package/dist/index.js
CHANGED
|
@@ -89,6 +89,7 @@ const createNodeApp = (readyApp, shutdown, args) => {
|
|
|
89
89
|
};
|
|
90
90
|
/** @throws {ZeltLifecycleStateError} */ async function onNode(app, options = {}) {
|
|
91
91
|
const readyApp = await app.createRuntime({
|
|
92
|
+
...options.configs === void 0 ? {} : { configs: options.configs },
|
|
92
93
|
fallbackConfigs: [NodeCliConfig, ProcessEnvAdaptor],
|
|
93
94
|
warmup: options.warmup ?? true
|
|
94
95
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["CliConfig","Config","NodeCliConfig","cwd","process","argv","exit","code","setExitCode","exitCode","onSignal","signal","handler","on","offSignal","off","Config","EnvAdaptor","ProcessEnvAdaptor","get","key","process","env","serve","HttpFeature","NodeCliConfig","ProcessEnvAdaptor","closeServer","server","Promise","resolve","reject","close","err","createListenForHttp","appFetch","registerShutdown","portOrOptions","listenOptions","port","hostname","serverReady","fetch","info","address","shutdown","getArgs","globalThis","process","argv","slice","createNodeApp","readyApp","args","base","nodeApp","entry","getFeatureEntries","Object","defineProperty","key","value","capabilities","listen","callback","feature","configurable","enumerable","onNode","app","options","createRuntime","fallbackConfigs","warmup","cliConfig","get","shuttingDown","detachSignals","offSignal","gracefulShutdown","catch","onSignal","serve","buildServeOptions","optionsOrCallback","extractCallback","maybeCallback","serveApp","app","options","callback","fetch","port","hostname"],"sources":["../src/node-cli.config.ts","../src/process-env.adaptor.ts","../src/on-node.ts","../src/serve.lib.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, EnvAdaptor } from '@zeltjs/core';\n\n@Config\nexport class ProcessEnvAdaptor extends EnvAdaptor {\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 ConfiguredFeature,\n FeatureApp,\n FeatureReadyCapabilities,\n RuntimeApp,\n} from '@zeltjs/core';\nimport { HttpFeature } from '@zeltjs/core';\n\nimport { NodeCliConfig } from './node-cli.config';\nimport { ProcessEnvAdaptor } from './process-env.adaptor';\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 } from '@zeltjs/core';\n\ntype EnvironmentNodeAppPart = {\n readonly args: readonly string[];\n readonly shutdown: () => Promise<void>;\n};\n\ntype HttpNodeAppPart = {\n readonly listen: (portOrOptions?: number | ListenOptions) => Promise<ServerHandle>;\n};\n\ntype NodeFeatureCapabilities<TFeature extends ConfiguredFeature> =\n FeatureReadyCapabilities<TFeature> &\n (TFeature extends HttpFeature<string> ? HttpNodeAppPart : unknown);\n\ntype NodeNamespacedCapabilities<F extends readonly ConfiguredFeature[]> = {\n readonly [TFeature in F[number] as TFeature['key']]: NodeFeatureCapabilities<TFeature>;\n};\n\nexport type NodeApp = RuntimeApp<readonly ConfiguredFeature[]> & EnvironmentNodeAppPart;\n\ntype NodeAppForFeatures<F extends readonly ConfiguredFeature[]> = RuntimeApp<F> &\n EnvironmentNodeAppPart &\n NodeNamespacedCapabilities<F>;\n\nconst closeServer = (server: ServerType): Promise<void> =>\n new Promise<void>((resolve, reject) => {\n server.close((err) => (err ? reject(err) : resolve()));\n });\n\nconst createListenForHttp = (\n appFetch: (request: Request) => Promise<Response>,\n registerShutdown: (callback: () => Promise<void>) => () => 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 const shutdown = registerShutdown(() => closeServer(server));\n\n const address = await serverReady;\n\n return { address, shutdown };\n };\n};\n\nconst getArgs = (): readonly string[] => globalThis.process.argv.slice(2);\n\nconst createNodeApp = (\n readyApp: RuntimeApp<readonly ConfiguredFeature[]>,\n shutdown: () => Promise<void>,\n args: readonly string[],\n): NodeApp => {\n const base: RuntimeApp<readonly ConfiguredFeature[]> & EnvironmentNodeAppPart = {\n ...readyApp,\n args,\n shutdown,\n };\n\n const nodeApp: NodeApp = { ...base };\n\n for (const entry of readyApp.getFeatureEntries(HttpFeature)) {\n Object.defineProperty(nodeApp, entry.key, {\n value: {\n ...entry.capabilities,\n listen: createListenForHttp(entry.capabilities.fetch, (callback) =>\n entry.feature.registerShutdown(callback),\n ),\n },\n configurable: true,\n enumerable: true,\n });\n }\n\n return nodeApp;\n};\n\nexport function onNode<const F extends readonly ConfiguredFeature[]>(\n app: FeatureApp<F>,\n options?: NodeAppOptions,\n): Promise<NodeAppForFeatures<F>>;\n\n/** @throws {ZeltLifecycleStateError} */\nexport async function onNode<const F extends readonly ConfiguredFeature[]>(\n app: FeatureApp<F>,\n options: NodeAppOptions = {},\n): Promise<NodeApp> {\n const readyApp = await app.createRuntime({\n fallbackConfigs: [NodeCliConfig, ProcessEnvAdaptor],\n warmup: options.warmup ?? true,\n });\n\n const cliConfig = await readyApp.get(NodeCliConfig);\n\n let shuttingDown = false;\n const detachSignals = (): void => {\n cliConfig.offSignal('SIGINT', gracefulShutdown);\n cliConfig.offSignal('SIGTERM', gracefulShutdown);\n };\n\n const shutdown = async (): Promise<void> => {\n if (shuttingDown) return;\n shuttingDown = true;\n try {\n await readyApp.shutdown();\n } finally {\n detachSignals();\n }\n };\n\n const gracefulShutdown = (): void => {\n void shutdown().catch(() => {});\n };\n\n cliConfig.onSignal('SIGINT', gracefulShutdown);\n cliConfig.onSignal('SIGTERM', gracefulShutdown);\n\n const args = getArgs();\n\n return createNodeApp(readyApp, 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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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["CliConfig","Config","NodeCliConfig","cwd","process","argv","exit","code","setExitCode","exitCode","onSignal","signal","handler","on","offSignal","off","Config","EnvAdaptor","ProcessEnvAdaptor","get","key","process","env","serve","HttpFeature","NodeCliConfig","ProcessEnvAdaptor","closeServer","server","Promise","resolve","reject","close","err","createListenForHttp","appFetch","registerShutdown","portOrOptions","listenOptions","port","hostname","serverReady","fetch","info","address","shutdown","getArgs","globalThis","process","argv","slice","createNodeApp","readyApp","args","base","nodeApp","entry","getFeatureEntries","Object","defineProperty","key","value","capabilities","listen","callback","feature","configurable","enumerable","onNode","app","options","createRuntime","configs","undefined","fallbackConfigs","warmup","cliConfig","get","shuttingDown","detachSignals","offSignal","gracefulShutdown","catch","onSignal","serve","buildServeOptions","optionsOrCallback","extractCallback","maybeCallback","serveApp","app","options","callback","fetch","port","hostname"],"sources":["../src/node-cli.config.ts","../src/process-env.adaptor.ts","../src/on-node.ts","../src/serve.lib.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, EnvAdaptor } from '@zeltjs/core';\n\n@Config\nexport class ProcessEnvAdaptor extends EnvAdaptor {\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 ConfigClass,\n ConfiguredFeature,\n FeatureApp,\n FeatureReadyCapabilities,\n RuntimeApp,\n} from '@zeltjs/core';\nimport { HttpFeature } from '@zeltjs/core';\n\nimport { NodeCliConfig } from './node-cli.config';\nimport { ProcessEnvAdaptor } from './process-env.adaptor';\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 configs?: readonly ConfigClass<object>[];\n readonly warmup?: boolean;\n};\n\nexport type { ExecResult } from '@zeltjs/core';\n\ntype EnvironmentNodeAppPart = {\n readonly args: readonly string[];\n readonly shutdown: () => Promise<void>;\n};\n\ntype HttpNodeAppPart = {\n readonly listen: (portOrOptions?: number | ListenOptions) => Promise<ServerHandle>;\n};\n\ntype NodeFeatureCapabilities<TFeature extends ConfiguredFeature> =\n FeatureReadyCapabilities<TFeature> &\n (TFeature extends HttpFeature<string> ? HttpNodeAppPart : unknown);\n\ntype NodeNamespacedCapabilities<F extends readonly ConfiguredFeature[]> = {\n readonly [TFeature in F[number] as TFeature['key']]: NodeFeatureCapabilities<TFeature>;\n};\n\nexport type NodeApp = RuntimeApp<readonly ConfiguredFeature[]> & EnvironmentNodeAppPart;\n\ntype NodeAppForFeatures<F extends readonly ConfiguredFeature[]> = RuntimeApp<F> &\n EnvironmentNodeAppPart &\n NodeNamespacedCapabilities<F>;\n\nconst closeServer = (server: ServerType): Promise<void> =>\n new Promise<void>((resolve, reject) => {\n server.close((err) => (err ? reject(err) : resolve()));\n });\n\nconst createListenForHttp = (\n appFetch: (request: Request) => Promise<Response>,\n registerShutdown: (callback: () => Promise<void>) => () => 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 const shutdown = registerShutdown(() => closeServer(server));\n\n const address = await serverReady;\n\n return { address, shutdown };\n };\n};\n\nconst getArgs = (): readonly string[] => globalThis.process.argv.slice(2);\n\nconst createNodeApp = (\n readyApp: RuntimeApp<readonly ConfiguredFeature[]>,\n shutdown: () => Promise<void>,\n args: readonly string[],\n): NodeApp => {\n const base: RuntimeApp<readonly ConfiguredFeature[]> & EnvironmentNodeAppPart = {\n ...readyApp,\n args,\n shutdown,\n };\n\n const nodeApp: NodeApp = { ...base };\n\n for (const entry of readyApp.getFeatureEntries(HttpFeature)) {\n Object.defineProperty(nodeApp, entry.key, {\n value: {\n ...entry.capabilities,\n listen: createListenForHttp(entry.capabilities.fetch, (callback) =>\n entry.feature.registerShutdown(callback),\n ),\n },\n configurable: true,\n enumerable: true,\n });\n }\n\n return nodeApp;\n};\n\nexport function onNode<const F extends readonly ConfiguredFeature[]>(\n app: FeatureApp<F>,\n options?: NodeAppOptions,\n): Promise<NodeAppForFeatures<F>>;\n\n/** @throws {ZeltLifecycleStateError} */\nexport async function onNode<const F extends readonly ConfiguredFeature[]>(\n app: FeatureApp<F>,\n options: NodeAppOptions = {},\n): Promise<NodeApp> {\n const readyApp = await app.createRuntime({\n ...(options.configs === undefined ? {} : { configs: options.configs }),\n fallbackConfigs: [NodeCliConfig, ProcessEnvAdaptor],\n warmup: options.warmup ?? true,\n });\n\n const cliConfig = await readyApp.get(NodeCliConfig);\n\n let shuttingDown = false;\n const detachSignals = (): void => {\n cliConfig.offSignal('SIGINT', gracefulShutdown);\n cliConfig.offSignal('SIGTERM', gracefulShutdown);\n };\n\n const shutdown = async (): Promise<void> => {\n if (shuttingDown) return;\n shuttingDown = true;\n try {\n await readyApp.shutdown();\n } finally {\n detachSignals();\n }\n };\n\n const gracefulShutdown = (): void => {\n void shutdown().catch(() => {});\n };\n\n cliConfig.onSignal('SIGINT', gracefulShutdown);\n cliConfig.onSignal('SIGTERM', gracefulShutdown);\n\n const args = getArgs();\n\n return createNodeApp(readyApp, 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.9.1-canary.
|
|
3
|
+
"version": "0.9.1-canary.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"@hono/node-server": "2.0.1"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@zeltjs/core": "0.9.1-canary.
|
|
33
|
+
"@zeltjs/core": "0.9.1-canary.4"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "22.19.17",
|
|
37
|
-
"@zeltjs/core": "0.9.1-canary.
|
|
37
|
+
"@zeltjs/core": "0.9.1-canary.4"
|
|
38
38
|
},
|
|
39
39
|
"volta": {
|
|
40
40
|
"extends": "../../package.json"
|