@zeltjs/adapter-bun 0.10.1-canary.0 → 0.11.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/dist/index.cjs CHANGED
@@ -75,7 +75,7 @@ const createBunApp = (readyApp, shutdown, args) => {
75
75
  for (const entry of readyApp.getFeatureEntries(_zeltjs_core.HttpFeature)) Object.defineProperty(bunApp, entry.key, {
76
76
  value: {
77
77
  ...entry.capabilities,
78
- serve: createServeForHttp(entry.capabilities.fetch, (callback) => entry.feature.registerShutdown(callback))
78
+ serve: createServeForHttp(entry.capabilities.fetch, (callback) => readyApp.registerShutdown(callback))
79
79
  },
80
80
  configurable: true,
81
81
  enumerable: true
@@ -85,6 +85,7 @@ const createBunApp = (readyApp, shutdown, args) => {
85
85
  /** @throws {ZeltLifecycleStateError} */ async function onBun(app, options = {}) {
86
86
  const readyApp = await app.createRuntime({
87
87
  ...options.configs === void 0 ? {} : { configs: options.configs },
88
+ ...options.prebuilt === void 0 ? {} : { prebuilt: options.prebuilt },
88
89
  fallbackConfigs: [BunCliConfig, BunEnvAdaptor],
89
90
  warmup: options.warmup ?? true
90
91
  });
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { CliConfig, CommandCapabilities, ConfigClass, ConfiguredFeature, EnvAdaptor, ExecResult, FeatureApp, FeatureReadyCapabilities, HttpFeature, RuntimeApp, Signal, SignalHandler } from "@zeltjs/core";
1
+ import { CliConfig, CommandCapabilities, ConfigClass, ConfiguredFeature, EnvAdaptor, ExecResult, FeatureApp, FeatureReadyCapabilities, HttpFeature, RuntimeApp, Signal, SignalHandler, ZeltPrebuilt } from "@zeltjs/core";
2
2
 
3
3
  //#region src/bun-cli.config.d.ts
4
4
  declare class BunCliConfig extends CliConfig {
@@ -30,6 +30,7 @@ type ServerHandle = {
30
30
  type BunAppOptions = {
31
31
  readonly configs?: readonly ConfigClass<object>[];
32
32
  readonly warmup?: boolean;
33
+ readonly prebuilt?: ZeltPrebuilt;
33
34
  };
34
35
  type BunAppBase = {
35
36
  readonly get: <T extends object>(cls: new (...args: never[]) => T) => Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/bun-cli.config.ts","../src/bun-env.adaptor.ts","../src/on-bun.ts"],"mappings":";;;cAIa,YAAA,SAAqB,SAAA;EACvB,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;;;cCtBjC,aAAA,SAAsB,UAAA;EACxB,GAAA,CAAI,GAAA;AAAA;;;KCSV,YAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGC,YAAA;EAAA,SACD,OAAA;IAAW,IAAA;IAAc,QAAA;EAAA;EAAA,SACzB,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGf,aAAA;EAAA,SACD,OAAA,YAAmB,WAAA;EAAA,SACnB,MAAA;AAAA;AAAA,KAKN,UAAA;EAAA,SACM,GAAA,qBAAwB,GAAA,UAAa,IAAA,cAAkB,CAAA,KAAM,OAAA,CAAQ,CAAA;EAAA,SACrE,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,qBAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,cAAA;EAAA,SACM,KAAA,GAAQ,OAAA,GAAU,YAAA,KAAiB,YAAA;AAAA;AAAA,KAGzC,sBAAA,kBAAwC,iBAAA,IAC3C,wBAAA,CAAyB,QAAA,KACtB,QAAA,SAAiB,WAAA,WAAsB,cAAA;AAAA,KAEvC,yBAAA,oBAA6C,iBAAA,8BAC1B,CAAA,YAAa,QAAA,UAAkB,sBAAA,CAAuB,QAAA;AAAA,KAGlE,UAAA,GAAa,UAAA,GACvB,UAAA,WAAqB,WAAA;EAAA,SACV,IAAA,EAAM,UAAA,WAAqB,WAAA,aAAwB,cAAA;AAAA;AAAA,KAGpD,aAAA,GAAgB,UAAA;EAAA,SAAwB,QAAA,EAAU,mBAAA;AAAA;AAAA,KAElD,UAAA,GAAa,UAAA,GAAa,aAAA;AAAA,KAE1B,MAAA,GAAS,UAAA,UAAoB,iBAAA,MAAuB,qBAAA;AAAA,KAE3D,iBAAA,oBAAqC,iBAAA,MAAuB,UAAA,CAAW,CAAA,IAC1E,qBAAA,GACA,yBAAA,CAA0B,CAAA;AAAA,iBAyDZ,KAAA,0BAA+B,iBAAA,GAAA,CAC7C,GAAA,EAAK,UAAA,CAAW,CAAA,GAChB,OAAA,GAAU,aAAA,GACT,OAAA,CAAQ,iBAAA,CAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/bun-cli.config.ts","../src/bun-env.adaptor.ts","../src/on-bun.ts"],"mappings":";;;cAIa,YAAA,SAAqB,SAAA;EACvB,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;;;cCtBjC,aAAA,SAAsB,UAAA;EACxB,GAAA,CAAI,GAAA;AAAA;;;KCUV,YAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGC,YAAA;EAAA,SACD,OAAA;IAAW,IAAA;IAAc,QAAA;EAAA;EAAA,SACzB,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGf,aAAA;EAAA,SACD,OAAA,YAAmB,WAAA;EAAA,SACnB,MAAA;EAAA,SACA,QAAA,GAAW,YAAA;AAAA;AAAA,KAKjB,UAAA;EAAA,SACM,GAAA,qBAAwB,GAAA,UAAa,IAAA,cAAkB,CAAA,KAAM,OAAA,CAAQ,CAAA;EAAA,SACrE,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,qBAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,cAAA;EAAA,SACM,KAAA,GAAQ,OAAA,GAAU,YAAA,KAAiB,YAAA;AAAA;AAAA,KAGzC,sBAAA,kBAAwC,iBAAA,IAC3C,wBAAA,CAAyB,QAAA,KACtB,QAAA,SAAiB,WAAA,WAAsB,cAAA;AAAA,KAEvC,yBAAA,oBAA6C,iBAAA,8BAC1B,CAAA,YAAa,QAAA,UAAkB,sBAAA,CAAuB,QAAA;AAAA,KAGlE,UAAA,GAAa,UAAA,GACvB,UAAA,WAAqB,WAAA;EAAA,SACV,IAAA,EAAM,UAAA,WAAqB,WAAA,aAAwB,cAAA;AAAA;AAAA,KAGpD,aAAA,GAAgB,UAAA;EAAA,SAAwB,QAAA,EAAU,mBAAA;AAAA;AAAA,KAElD,UAAA,GAAa,UAAA,GAAa,aAAA;AAAA,KAE1B,MAAA,GAAS,UAAA,UAAoB,iBAAA,MAAuB,qBAAA;AAAA,KAE3D,iBAAA,oBAAqC,iBAAA,MAAuB,UAAA,CAAW,CAAA,IAC1E,qBAAA,GACA,yBAAA,CAA0B,CAAA;AAAA,iBAyDZ,KAAA,0BAA+B,iBAAA,GAAA,CAC7C,GAAA,EAAK,UAAA,CAAW,CAAA,GAChB,OAAA,GAAU,aAAA,GACT,OAAA,CAAQ,iBAAA,CAAkB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { CliConfig, CommandCapabilities, ConfigClass, ConfiguredFeature, EnvAdaptor, ExecResult, FeatureApp, FeatureReadyCapabilities, HttpFeature, RuntimeApp, Signal, SignalHandler } from "@zeltjs/core";
1
+ import { CliConfig, CommandCapabilities, ConfigClass, ConfiguredFeature, EnvAdaptor, ExecResult, FeatureApp, FeatureReadyCapabilities, HttpFeature, RuntimeApp, Signal, SignalHandler, ZeltPrebuilt } from "@zeltjs/core";
2
2
 
3
3
  //#region src/bun-cli.config.d.ts
4
4
  declare class BunCliConfig extends CliConfig {
@@ -30,6 +30,7 @@ type ServerHandle = {
30
30
  type BunAppOptions = {
31
31
  readonly configs?: readonly ConfigClass<object>[];
32
32
  readonly warmup?: boolean;
33
+ readonly prebuilt?: ZeltPrebuilt;
33
34
  };
34
35
  type BunAppBase = {
35
36
  readonly get: <T extends object>(cls: new (...args: never[]) => T) => Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/bun-cli.config.ts","../src/bun-env.adaptor.ts","../src/on-bun.ts"],"mappings":";;;cAIa,YAAA,SAAqB,SAAA;EACvB,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;;;cCtBjC,aAAA,SAAsB,UAAA;EACxB,GAAA,CAAI,GAAA;AAAA;;;KCSV,YAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGC,YAAA;EAAA,SACD,OAAA;IAAW,IAAA;IAAc,QAAA;EAAA;EAAA,SACzB,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGf,aAAA;EAAA,SACD,OAAA,YAAmB,WAAA;EAAA,SACnB,MAAA;AAAA;AAAA,KAKN,UAAA;EAAA,SACM,GAAA,qBAAwB,GAAA,UAAa,IAAA,cAAkB,CAAA,KAAM,OAAA,CAAQ,CAAA;EAAA,SACrE,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,qBAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,cAAA;EAAA,SACM,KAAA,GAAQ,OAAA,GAAU,YAAA,KAAiB,YAAA;AAAA;AAAA,KAGzC,sBAAA,mBAAwC,iBAAA,IAC3C,wBAAA,CAAyB,SAAA,KACtB,SAAA,SAAiB,WAAA,WAAsB,cAAA;AAAA,KAEvC,yBAAA,oBAA6C,iBAAA,8BAC1B,CAAA,YAAa,QAAA,UAAkB,sBAAA,CAAuB,QAAA;AAAA,KAGlE,UAAA,GAAa,UAAA,GACvB,UAAA,WAAqB,WAAA;EAAA,SACV,IAAA,EAAM,UAAA,WAAqB,WAAA,aAAwB,cAAA;AAAA;AAAA,KAGpD,aAAA,GAAgB,UAAA;EAAA,SAAwB,QAAA,EAAU,mBAAA;AAAA;AAAA,KAElD,UAAA,GAAa,UAAA,GAAa,aAAA;AAAA,KAE1B,MAAA,GAAS,UAAA,UAAoB,iBAAA,MAAuB,qBAAA;AAAA,KAE3D,iBAAA,oBAAqC,iBAAA,MAAuB,UAAA,CAAW,CAAA,IAC1E,qBAAA,GACA,yBAAA,CAA0B,CAAA;AAAA,iBAyDZ,KAAA,0BAA+B,iBAAA,GAAA,CAC7C,GAAA,EAAK,UAAA,CAAW,CAAA,GAChB,OAAA,GAAU,aAAA,GACT,OAAA,CAAQ,iBAAA,CAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/bun-cli.config.ts","../src/bun-env.adaptor.ts","../src/on-bun.ts"],"mappings":";;;cAIa,YAAA,SAAqB,SAAA;EACvB,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;;;cCtBjC,aAAA,SAAsB,UAAA;EACxB,GAAA,CAAI,GAAA;AAAA;;;KCUV,YAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGC,YAAA;EAAA,SACD,OAAA;IAAW,IAAA;IAAc,QAAA;EAAA;EAAA,SACzB,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGf,aAAA;EAAA,SACD,OAAA,YAAmB,WAAA;EAAA,SACnB,MAAA;EAAA,SACA,QAAA,GAAW,YAAA;AAAA;AAAA,KAKjB,UAAA;EAAA,SACM,GAAA,qBAAwB,GAAA,UAAa,IAAA,cAAkB,CAAA,KAAM,OAAA,CAAQ,CAAA;EAAA,SACrE,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,qBAAA;EAAA,SACM,IAAA;EAAA,SACA,QAAA,QAAgB,OAAA;AAAA;AAAA,KAGtB,cAAA;EAAA,SACM,KAAA,GAAQ,OAAA,GAAU,YAAA,KAAiB,YAAA;AAAA;AAAA,KAGzC,sBAAA,mBAAwC,iBAAA,IAC3C,wBAAA,CAAyB,SAAA,KACtB,SAAA,SAAiB,WAAA,WAAsB,cAAA;AAAA,KAEvC,yBAAA,oBAA6C,iBAAA,8BAC1B,CAAA,YAAa,QAAA,UAAkB,sBAAA,CAAuB,QAAA;AAAA,KAGlE,UAAA,GAAa,UAAA,GACvB,UAAA,WAAqB,WAAA;EAAA,SACV,IAAA,EAAM,UAAA,WAAqB,WAAA,aAAwB,cAAA;AAAA;AAAA,KAGpD,aAAA,GAAgB,UAAA;EAAA,SAAwB,QAAA,EAAU,mBAAA;AAAA;AAAA,KAElD,UAAA,GAAa,UAAA,GAAa,aAAA;AAAA,KAE1B,MAAA,GAAS,UAAA,UAAoB,iBAAA,MAAuB,qBAAA;AAAA,KAE3D,iBAAA,oBAAqC,iBAAA,MAAuB,UAAA,CAAW,CAAA,IAC1E,qBAAA,GACA,yBAAA,CAA0B,CAAA;AAAA,iBAyDZ,KAAA,0BAA+B,iBAAA,GAAA,CAC7C,GAAA,EAAK,UAAA,CAAW,CAAA,GAChB,OAAA,GAAU,aAAA,GACT,OAAA,CAAQ,iBAAA,CAAkB,CAAA"}
package/dist/index.js CHANGED
@@ -74,7 +74,7 @@ const createBunApp = (readyApp, shutdown, args) => {
74
74
  for (const entry of readyApp.getFeatureEntries(HttpFeature)) Object.defineProperty(bunApp, entry.key, {
75
75
  value: {
76
76
  ...entry.capabilities,
77
- serve: createServeForHttp(entry.capabilities.fetch, (callback) => entry.feature.registerShutdown(callback))
77
+ serve: createServeForHttp(entry.capabilities.fetch, (callback) => readyApp.registerShutdown(callback))
78
78
  },
79
79
  configurable: true,
80
80
  enumerable: true
@@ -84,6 +84,7 @@ const createBunApp = (readyApp, shutdown, args) => {
84
84
  /** @throws {ZeltLifecycleStateError} */ async function onBun(app, options = {}) {
85
85
  const readyApp = await app.createRuntime({
86
86
  ...options.configs === void 0 ? {} : { configs: options.configs },
87
+ ...options.prebuilt === void 0 ? {} : { prebuilt: options.prebuilt },
87
88
  fallbackConfigs: [BunCliConfig, BunEnvAdaptor],
88
89
  warmup: options.warmup ?? true
89
90
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["CliConfig","Config","BunCliConfig","cwd","process","argv","Bun","exit","code","setExitCode","exitCode","onSignal","signal","handler","on","offSignal","off","Config","EnvAdaptor","BunEnvAdaptor","get","key","Bun","env","HttpFeature","BunCliConfig","BunEnvAdaptor","createServeForHttp","appFetch","registerShutdown","options","port","hostname","server","Bun","serve","fetch","shutdown","stop","address","getArgs","argv","slice","createBunApp","readyApp","args","base","bunApp","entry","getFeatureEntries","Object","defineProperty","key","value","capabilities","callback","feature","configurable","enumerable","onBun","app","createRuntime","configs","undefined","fallbackConfigs","warmup","cliConfig","get","shuttingDown","detachSignals","offSignal","gracefulShutdown","catch","onSignal"],"sources":["../src/bun-cli.config.ts","../src/bun-env.adaptor.ts","../src/on-bun.ts"],"sourcesContent":["import type { Signal, SignalHandler } from '@zeltjs/core';\nimport { CliConfig, Config } from '@zeltjs/core';\n\n@Config\nexport class BunCliConfig extends CliConfig {\n override cwd(): string {\n return process.cwd();\n }\n\n override argv(): readonly string[] {\n return Bun.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 BunEnvAdaptor extends EnvAdaptor {\n override get(key: string): string | undefined {\n return Bun.env[key];\n }\n}\n","import type {\n CommandCapabilities,\n ConfigClass,\n ConfiguredFeature,\n FeatureApp,\n FeatureReadyCapabilities,\n RuntimeApp,\n} from '@zeltjs/core';\nimport { HttpFeature } from '@zeltjs/core';\n\nimport { BunCliConfig } from './bun-cli.config';\nimport { BunEnvAdaptor } from './bun-env.adaptor';\n\ntype ServeOptions = {\n readonly port?: number;\n readonly hostname?: string;\n};\n\nexport type ServerHandle = {\n readonly address: { port: number; hostname: string };\n readonly shutdown: () => Promise<void>;\n};\n\nexport type BunAppOptions = {\n readonly configs?: readonly ConfigClass<object>[];\n readonly warmup?: boolean;\n};\n\nexport type { ExecResult } from '@zeltjs/core';\n\ntype BunAppBase = {\n readonly get: <T extends object>(cls: new (...args: never[]) => T) => Promise<T>;\n readonly args: readonly string[];\n readonly shutdown: () => Promise<void>;\n};\n\ntype EnvironmentBunAppPart = {\n readonly args: readonly string[];\n readonly shutdown: () => Promise<void>;\n};\n\ntype HttpBunAppPart = {\n readonly serve: (options?: ServeOptions) => ServerHandle;\n};\n\ntype BunFeatureCapabilities<TFeature extends ConfiguredFeature> =\n FeatureReadyCapabilities<TFeature> &\n (TFeature extends HttpFeature<string> ? HttpBunAppPart : unknown);\n\ntype BunNamespacedCapabilities<F extends readonly ConfiguredFeature[]> = {\n readonly [TFeature in F[number] as TFeature['key']]: BunFeatureCapabilities<TFeature>;\n};\n\nexport type HttpBunApp = BunAppBase &\n RuntimeApp<readonly [HttpFeature]> & {\n readonly http: RuntimeApp<readonly [HttpFeature]>['http'] & HttpBunAppPart;\n };\n\nexport type CommandBunApp = BunAppBase & { readonly commands: CommandCapabilities };\n\nexport type FullBunApp = HttpBunApp & CommandBunApp;\n\nexport type BunApp = RuntimeApp<readonly ConfiguredFeature[]> & EnvironmentBunAppPart;\n\ntype BunAppForFeatures<F extends readonly ConfiguredFeature[]> = RuntimeApp<F> &\n EnvironmentBunAppPart &\n BunNamespacedCapabilities<F>;\n\nconst createServeForHttp = (\n appFetch: (request: Request) => Promise<Response>,\n registerShutdown: (callback: () => Promise<void>) => () => Promise<void>,\n): ((options?: ServeOptions) => ServerHandle) => {\n return (options?: ServeOptions): ServerHandle => {\n const port = options?.port ?? 3000;\n const hostname = options?.hostname ?? '0.0.0.0';\n\n const server = Bun.serve({\n fetch: appFetch,\n port,\n hostname,\n });\n const shutdown = registerShutdown(async () => {\n await server.stop();\n });\n\n return {\n address: { port: server.port ?? port, hostname: server.hostname ?? hostname },\n shutdown,\n };\n };\n};\n\nconst getArgs = (): readonly string[] => Bun.argv.slice(2);\n\nconst createBunApp = (\n readyApp: RuntimeApp<readonly ConfiguredFeature[]>,\n shutdown: () => Promise<void>,\n args: readonly string[],\n): BunApp => {\n const base: RuntimeApp<readonly ConfiguredFeature[]> & EnvironmentBunAppPart = {\n ...readyApp,\n args,\n shutdown,\n };\n\n const bunApp: BunApp = { ...base };\n\n for (const entry of readyApp.getFeatureEntries(HttpFeature)) {\n Object.defineProperty(bunApp, entry.key, {\n value: {\n ...entry.capabilities,\n serve: createServeForHttp(entry.capabilities.fetch, (callback) =>\n entry.feature.registerShutdown(callback),\n ),\n },\n configurable: true,\n enumerable: true,\n });\n }\n\n return bunApp;\n};\n\nexport function onBun<const F extends readonly ConfiguredFeature[]>(\n app: FeatureApp<F>,\n options?: BunAppOptions,\n): Promise<BunAppForFeatures<F>>;\n\n/** @throws {ZeltLifecycleStateError} */\nexport async function onBun<const F extends readonly ConfiguredFeature[]>(\n app: FeatureApp<F>,\n options: BunAppOptions = {},\n): Promise<BunApp> {\n const readyApp = await app.createRuntime({\n ...(options.configs === undefined ? {} : { configs: options.configs }),\n fallbackConfigs: [BunCliConfig, BunEnvAdaptor],\n warmup: options.warmup ?? true,\n });\n\n const cliConfig = await readyApp.get(BunCliConfig);\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 createBunApp(readyApp, shutdown, args);\n}\n"],"mappings":";;;;;;;;AAIA,IAAaE,eAAb,cAAkCF,UAAAA;CACvBG,MAAc;AACrB,SAAOC,QAAQD,KAAG;;CAGXE,OAA0B;AACjC,SAAOC,IAAID;;CAGJE,KAAKC,MAAqB;AACjCJ,UAAQG,KAAKC,KAAAA;;CAGNC,YAAYD,MAAoB;AACvCJ,UAAQM,WAAWF;;CAGZG,SAASC,QAAgBC,SAA8B;AAC9DT,UAAQU,GAAGF,QAAQC,QAAAA;;CAGZE,UAAUH,QAAgBC,SAA8B;AAC/DT,UAAQY,IAAIJ,QAAQC,QAAAA;;;;;;;;;;;;ACvBxB,IAAaM,gBAAb,cAAmCD,WAAAA;CACxBE,IAAIC,KAAiC;AAC5C,SAAOC,IAAIC,IAAIF;;;;;;AC+DnB,MAAMM,sBACJC,UACAC,qBAAAA;AAEA,SAAQC,YAAAA;EACN,MAAMC,OAAOD,SAASC,QAAQ;EAC9B,MAAMC,WAAWF,SAASE,YAAY;EAEtC,MAAMC,SAASC,IAAIC,MAAM;GACvBC,OAAOR;GACPG;GACAC;GACF,CAAA;EACA,MAAMK,WAAWR,iBAAiB,YAAA;AAChC,SAAMI,OAAOK,MAAI;IACnB;AAEA,SAAO;GACLC,SAAS;IAAER,MAAME,OAAOF,QAAQA;IAAMC,UAAUC,OAAOD,YAAYA;IAAS;GAC5EK;GACF;;;AAIJ,MAAMG,gBAAmCN,IAAIO,KAAKC,MAAM,EAAA;AAExD,MAAMC,gBACJC,UACAP,UACAQ,SAAAA;CAQA,MAAME,SAAiB;EALrB,GAAGH;EACHC;EACAR;EAG+B;AAEjC,MAAK,MAAMW,SAASJ,SAASK,kBAAkBzB,YAAAA,CAC7C0B,QAAOC,eAAeJ,QAAQC,MAAMI,KAAK;EACvCC,OAAO;GACL,GAAGL,MAAMM;GACTnB,OAAOR,mBAAmBqB,MAAMM,aAAalB,QAAQmB,aACnDP,MAAMQ,QAAQ3B,iBAAiB0B,SAAAA,CAAAA;GAEnC;EACAE,cAAc;EACdC,YAAY;EACd,CAAA;AAGF,QAAOX;;yCAST,eAAsBY,MACpBC,KACA9B,UAAyB,EAAE,EAAA;CAE3B,MAAMc,WAAW,MAAMgB,IAAIC,cAAc;EACvC,GAAI/B,QAAQgC,YAAYC,KAAAA,IAAY,EAAC,GAAI,EAAED,SAAShC,QAAQgC,SAAS;EACrEE,iBAAiB,CAACvC,cAAcC,cAAc;EAC9CuC,QAAQnC,QAAQmC,UAAU;EAC5B,CAAA;CAEA,MAAMC,YAAY,MAAMtB,SAASuB,IAAI1C,aAAAA;CAErC,IAAI2C,eAAe;CACnB,MAAMC,sBAAgB;AACpBH,YAAUI,UAAU,UAAUC,iBAAAA;AAC9BL,YAAUI,UAAU,WAAWC,iBAAAA;;CAGjC,MAAMlC,WAAW,YAAA;AACf,MAAI+B,aAAc;AAClBA,iBAAe;AACf,MAAI;AACF,SAAMxB,SAASP,UAAQ;YACf;AACRgC,kBAAAA;;;CAIJ,MAAME,yBAAmB;AAClBlC,YAAAA,CAAWmC,YAAM,GAAO;;AAG/BN,WAAUO,SAAS,UAAUF,iBAAAA;AAC7BL,WAAUO,SAAS,WAAWF,iBAAAA;AAI9B,QAAO5B,aAAaC,UAAUP,UAFjBG,SAE2BK,CAAAA"}
1
+ {"version":3,"file":"index.js","names":["CliConfig","Config","BunCliConfig","cwd","process","argv","Bun","exit","code","setExitCode","exitCode","onSignal","signal","handler","on","offSignal","off","Config","EnvAdaptor","BunEnvAdaptor","get","key","Bun","env","HttpFeature","BunCliConfig","BunEnvAdaptor","createServeForHttp","appFetch","registerShutdown","options","port","hostname","server","Bun","serve","fetch","shutdown","stop","address","getArgs","argv","slice","createBunApp","readyApp","args","base","bunApp","entry","getFeatureEntries","Object","defineProperty","key","value","capabilities","callback","configurable","enumerable","onBun","app","createRuntime","configs","undefined","prebuilt","fallbackConfigs","warmup","cliConfig","get","shuttingDown","detachSignals","offSignal","gracefulShutdown","catch","onSignal"],"sources":["../src/bun-cli.config.ts","../src/bun-env.adaptor.ts","../src/on-bun.ts"],"sourcesContent":["import type { Signal, SignalHandler } from '@zeltjs/core';\nimport { CliConfig, Config } from '@zeltjs/core';\n\n@Config\nexport class BunCliConfig extends CliConfig {\n override cwd(): string {\n return process.cwd();\n }\n\n override argv(): readonly string[] {\n return Bun.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 BunEnvAdaptor extends EnvAdaptor {\n override get(key: string): string | undefined {\n return Bun.env[key];\n }\n}\n","import type {\n CommandCapabilities,\n ConfigClass,\n ConfiguredFeature,\n FeatureApp,\n FeatureReadyCapabilities,\n RuntimeApp,\n ZeltPrebuilt,\n} from '@zeltjs/core';\nimport { HttpFeature } from '@zeltjs/core';\n\nimport { BunCliConfig } from './bun-cli.config';\nimport { BunEnvAdaptor } from './bun-env.adaptor';\n\ntype ServeOptions = {\n readonly port?: number;\n readonly hostname?: string;\n};\n\nexport type ServerHandle = {\n readonly address: { port: number; hostname: string };\n readonly shutdown: () => Promise<void>;\n};\n\nexport type BunAppOptions = {\n readonly configs?: readonly ConfigClass<object>[];\n readonly warmup?: boolean;\n readonly prebuilt?: ZeltPrebuilt;\n};\n\nexport type { ExecResult } from '@zeltjs/core';\n\ntype BunAppBase = {\n readonly get: <T extends object>(cls: new (...args: never[]) => T) => Promise<T>;\n readonly args: readonly string[];\n readonly shutdown: () => Promise<void>;\n};\n\ntype EnvironmentBunAppPart = {\n readonly args: readonly string[];\n readonly shutdown: () => Promise<void>;\n};\n\ntype HttpBunAppPart = {\n readonly serve: (options?: ServeOptions) => ServerHandle;\n};\n\ntype BunFeatureCapabilities<TFeature extends ConfiguredFeature> =\n FeatureReadyCapabilities<TFeature> &\n (TFeature extends HttpFeature<string> ? HttpBunAppPart : unknown);\n\ntype BunNamespacedCapabilities<F extends readonly ConfiguredFeature[]> = {\n readonly [TFeature in F[number] as TFeature['key']]: BunFeatureCapabilities<TFeature>;\n};\n\nexport type HttpBunApp = BunAppBase &\n RuntimeApp<readonly [HttpFeature]> & {\n readonly http: RuntimeApp<readonly [HttpFeature]>['http'] & HttpBunAppPart;\n };\n\nexport type CommandBunApp = BunAppBase & { readonly commands: CommandCapabilities };\n\nexport type FullBunApp = HttpBunApp & CommandBunApp;\n\nexport type BunApp = RuntimeApp<readonly ConfiguredFeature[]> & EnvironmentBunAppPart;\n\ntype BunAppForFeatures<F extends readonly ConfiguredFeature[]> = RuntimeApp<F> &\n EnvironmentBunAppPart &\n BunNamespacedCapabilities<F>;\n\nconst createServeForHttp = (\n appFetch: (request: Request) => Promise<Response>,\n registerShutdown: (callback: () => Promise<void>) => () => Promise<void>,\n): ((options?: ServeOptions) => ServerHandle) => {\n return (options?: ServeOptions): ServerHandle => {\n const port = options?.port ?? 3000;\n const hostname = options?.hostname ?? '0.0.0.0';\n\n const server = Bun.serve({\n fetch: appFetch,\n port,\n hostname,\n });\n const shutdown = registerShutdown(async () => {\n await server.stop();\n });\n\n return {\n address: { port: server.port ?? port, hostname: server.hostname ?? hostname },\n shutdown,\n };\n };\n};\n\nconst getArgs = (): readonly string[] => Bun.argv.slice(2);\n\nconst createBunApp = (\n readyApp: RuntimeApp<readonly ConfiguredFeature[]>,\n shutdown: () => Promise<void>,\n args: readonly string[],\n): BunApp => {\n const base: RuntimeApp<readonly ConfiguredFeature[]> & EnvironmentBunAppPart = {\n ...readyApp,\n args,\n shutdown,\n };\n\n const bunApp: BunApp = { ...base };\n\n for (const entry of readyApp.getFeatureEntries(HttpFeature)) {\n Object.defineProperty(bunApp, entry.key, {\n value: {\n ...entry.capabilities,\n serve: createServeForHttp(entry.capabilities.fetch, (callback) =>\n readyApp.registerShutdown(callback),\n ),\n },\n configurable: true,\n enumerable: true,\n });\n }\n\n return bunApp;\n};\n\nexport function onBun<const F extends readonly ConfiguredFeature[]>(\n app: FeatureApp<F>,\n options?: BunAppOptions,\n): Promise<BunAppForFeatures<F>>;\n\n/** @throws {ZeltLifecycleStateError} */\nexport async function onBun<const F extends readonly ConfiguredFeature[]>(\n app: FeatureApp<F>,\n options: BunAppOptions = {},\n): Promise<BunApp> {\n const readyApp = await app.createRuntime({\n ...(options.configs === undefined ? {} : { configs: options.configs }),\n ...(options.prebuilt === undefined ? {} : { prebuilt: options.prebuilt }),\n fallbackConfigs: [BunCliConfig, BunEnvAdaptor],\n warmup: options.warmup ?? true,\n });\n\n const cliConfig = await readyApp.get(BunCliConfig);\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 createBunApp(readyApp, shutdown, args);\n}\n"],"mappings":";;;;;;;;AAIA,IAAaE,eAAb,cAAkCF,UAAAA;CACvBG,MAAc;AACrB,SAAOC,QAAQD,KAAG;;CAGXE,OAA0B;AACjC,SAAOC,IAAID;;CAGJE,KAAKC,MAAqB;AACjCJ,UAAQG,KAAKC,KAAAA;;CAGNC,YAAYD,MAAoB;AACvCJ,UAAQM,WAAWF;;CAGZG,SAASC,QAAgBC,SAA8B;AAC9DT,UAAQU,GAAGF,QAAQC,QAAAA;;CAGZE,UAAUH,QAAgBC,SAA8B;AAC/DT,UAAQY,IAAIJ,QAAQC,QAAAA;;;;;;;;;;;;ACvBxB,IAAaM,gBAAb,cAAmCD,WAAAA;CACxBE,IAAIC,KAAiC;AAC5C,SAAOC,IAAIC,IAAIF;;;;;;ACiEnB,MAAMM,sBACJC,UACAC,qBAAAA;AAEA,SAAQC,YAAAA;EACN,MAAMC,OAAOD,SAASC,QAAQ;EAC9B,MAAMC,WAAWF,SAASE,YAAY;EAEtC,MAAMC,SAASC,IAAIC,MAAM;GACvBC,OAAOR;GACPG;GACAC;GACF,CAAA;EACA,MAAMK,WAAWR,iBAAiB,YAAA;AAChC,SAAMI,OAAOK,MAAI;IACnB;AAEA,SAAO;GACLC,SAAS;IAAER,MAAME,OAAOF,QAAQA;IAAMC,UAAUC,OAAOD,YAAYA;IAAS;GAC5EK;GACF;;;AAIJ,MAAMG,gBAAmCN,IAAIO,KAAKC,MAAM,EAAA;AAExD,MAAMC,gBACJC,UACAP,UACAQ,SAAAA;CAQA,MAAME,SAAiB;EALrB,GAAGH;EACHC;EACAR;EAG+B;AAEjC,MAAK,MAAMW,SAASJ,SAASK,kBAAkBzB,YAAAA,CAC7C0B,QAAOC,eAAeJ,QAAQC,MAAMI,KAAK;EACvCC,OAAO;GACL,GAAGL,MAAMM;GACTnB,OAAOR,mBAAmBqB,MAAMM,aAAalB,QAAQmB,aACnDX,SAASf,iBAAiB0B,SAAAA,CAAAA;GAE9B;EACAC,cAAc;EACdC,YAAY;EACd,CAAA;AAGF,QAAOV;;yCAST,eAAsBW,MACpBC,KACA7B,UAAyB,EAAE,EAAA;CAE3B,MAAMc,WAAW,MAAMe,IAAIC,cAAc;EACvC,GAAI9B,QAAQ+B,YAAYC,KAAAA,IAAY,EAAC,GAAI,EAAED,SAAS/B,QAAQ+B,SAAS;EACrE,GAAI/B,QAAQiC,aAAaD,KAAAA,IAAY,EAAC,GAAI,EAAEC,UAAUjC,QAAQiC,UAAU;EACxEC,iBAAiB,CAACvC,cAAcC,cAAc;EAC9CuC,QAAQnC,QAAQmC,UAAU;EAC5B,CAAA;CAEA,MAAMC,YAAY,MAAMtB,SAASuB,IAAI1C,aAAAA;CAErC,IAAI2C,eAAe;CACnB,MAAMC,sBAAgB;AACpBH,YAAUI,UAAU,UAAUC,iBAAAA;AAC9BL,YAAUI,UAAU,WAAWC,iBAAAA;;CAGjC,MAAMlC,WAAW,YAAA;AACf,MAAI+B,aAAc;AAClBA,iBAAe;AACf,MAAI;AACF,SAAMxB,SAASP,UAAQ;YACf;AACRgC,kBAAAA;;;CAIJ,MAAME,yBAAmB;AAClBlC,YAAAA,CAAWmC,YAAM,GAAO;;AAG/BN,WAAUO,SAAS,UAAUF,iBAAAA;AAC7BL,WAAUO,SAAS,WAAWF,iBAAAA;AAI9B,QAAO5B,aAAaC,UAAUP,UAFjBG,SAE2BK,CAAAA"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@zeltjs/adapter-bun",
3
- "version": "0.10.1-canary.0",
3
+ "version": "0.11.0",
4
+ "description": "Bun adapter for the Zelt framework",
4
5
  "type": "module",
5
6
  "license": "MIT",
6
7
  "repository": {
@@ -27,11 +28,11 @@
27
28
  "dist"
28
29
  ],
29
30
  "peerDependencies": {
30
- "@zeltjs/core": "0.10.1-canary.0"
31
+ "@zeltjs/core": "0.11.0"
31
32
  },
32
33
  "devDependencies": {
33
34
  "@types/bun": "1.2.17",
34
- "@zeltjs/core": "0.10.1-canary.0"
35
+ "@zeltjs/core": "0.11.0"
35
36
  },
36
37
  "volta": {
37
38
  "extends": "../../package.json"