@cosmicdrift/kumiko-dev-server 0.342.0 → 0.343.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.
@@ -1,6 +1,7 @@
1
1
  /// <reference types="bun-types" preserve="true" />
2
2
  import { type AuthRoutesConfig, type ExtraRouteDefinition } from "@cosmicdrift/kumiko-framework/api";
3
3
  import { type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
4
+ import type { ErrorDocsConfig } from "@cosmicdrift/kumiko-framework/errors";
4
5
  import { type TestStack, type TestStackOptions } from "@cosmicdrift/kumiko-framework/stack";
5
6
  import { type PageHeadResolver, type PageHeadSystemQuery } from "@cosmicdrift/kumiko-headless/apex";
6
7
  import { type SystemWireDeps } from "@cosmicdrift/kumiko-server-runtime/extra-routes-deps";
@@ -163,6 +164,8 @@ export type CreateKumikoServerOptions = {
163
164
  * `ServerOptions.trustedProxyHops`. Dev usually runs unproxied, so this
164
165
  * is normally left unset (default 0). */
165
166
  readonly trustedProxyHops?: number;
167
+ /** Links the app's own error reasons to its own docs (`docsUrl` in error responses); framework reasons keep the framework docs link. */
168
+ readonly errorDocs?: ErrorDocsConfig;
166
169
  /** Hook for app-wired co-running components that need the system-write
167
170
  * dispatcher — runs after buildServer, before onAfterSetup (seeds), with
168
171
  * NO `app` (routes are declared via `extraRoutes`, not wired here). */
@@ -602,6 +602,7 @@ export async function createKumikoServer(options) {
602
602
  }),
603
603
  ...(options.extraRoutes !== undefined && { extraRoutes: options.extraRoutes }),
604
604
  ...(options.trustedProxyHops !== undefined && { trustedProxyHops: options.trustedProxyHops }),
605
+ ...(options.errorDocs && { errorDocs: options.errorDocs }),
605
606
  // jobs.consumerLane unset = enqueuer-only; startDevJobRunners below is
606
607
  // the sole consumer/cron-scheduler per lane, so runOnBoot/cron jobs
607
608
  // don't double-fire. queueNamePrefix keeps this boot's queues isolated
@@ -2,6 +2,7 @@ import { type SeedAdminOptions } from "@cosmicdrift/kumiko-bundled-features/auth
2
2
  import type { PostAuthLandingResolver } from "@cosmicdrift/kumiko-framework/api";
3
3
  import { type KmsAdapter } from "@cosmicdrift/kumiko-framework/crypto";
4
4
  import { type FeatureDefinition, type Registry, type ValidateBootOptions } from "@cosmicdrift/kumiko-framework/engine";
5
+ import type { ErrorDocsConfig } from "@cosmicdrift/kumiko-framework/errors";
5
6
  import type { EnvelopeCipher, MasterKeyProvider } from "@cosmicdrift/kumiko-framework/secrets";
6
7
  import type { TestStack } from "@cosmicdrift/kumiko-framework/stack";
7
8
  import type { PageHeadResolver } from "@cosmicdrift/kumiko-headless/apex";
@@ -169,6 +170,8 @@ export type RunDevAppOptions = {
169
170
  * env var. Dev usually runs unproxied, so this is normally left unset
170
171
  * (default 0). */
171
172
  readonly trustedProxyHops?: number;
173
+ /** Links the app's own error reasons to its own docs (`docsUrl` in error responses); framework reasons keep the framework docs link. */
174
+ readonly errorDocs?: ErrorDocsConfig;
172
175
  };
173
176
  export declare function runDevApp(options: RunDevAppOptions): Promise<KumikoServerHandle>;
174
177
  export declare function mergeConfigResolverDefault(ctx: CreateKumikoServerOptions["extraContext"], registry: Registry, envSource: Record<string, string | undefined>, cipher?: EnvelopeCipher): CreateKumikoServerOptions["extraContext"];
@@ -32,7 +32,7 @@ import { assertSessionBootInvariants } from "@cosmicdrift/kumiko-server-runtime/
32
32
  import { watchAndRegenerate } from "./codegen/index.js";
33
33
  import { createKumikoServer, } from "./create-kumiko-server.js";
34
34
  import { renderWelcomeBanner } from "./welcome-banner.js";
35
- import { addConfigAccessorFactory, buildBootExtraContext, requireEnv, resolveAuthMail, } from "@cosmicdrift/kumiko-server-runtime/run-prod-app";
35
+ import { addConfigAccessorFactory, buildBootExtraContext, loggerFromExtraContext, requireEnv, resolveAuthMail, } from "@cosmicdrift/kumiko-server-runtime/run-prod-app";
36
36
  export async function runDevApp(options) {
37
37
  // Auto-mix Standard-Features im auth-mode via composeFeatures (single
38
38
  // source of truth — auch runProdApp und der per-app drizzle-Schema-
@@ -156,6 +156,8 @@ export async function runDevApp(options) {
156
156
  // mit hasAuth:false (configResolver kommt schon aus cfgExtra), App-Werte
157
157
  // (cfgExtra) gewinnen über die Boot-Defaults.
158
158
  const extraContext = (deps) => {
159
+ const base = typeof cfgExtra === "function" ? cfgExtra(deps) : (cfgExtra ?? {});
160
+ const bootLogger = loggerFromExtraContext(base);
159
161
  const boot = buildBootExtraContext({
160
162
  db: deps.db,
161
163
  features,
@@ -164,8 +166,8 @@ export async function runDevApp(options) {
164
166
  hasAuth: false,
165
167
  sseBroker: deps.sseBroker,
166
168
  crypto: bootCrypto,
169
+ ...(bootLogger && { log: bootLogger }),
167
170
  });
168
- const base = typeof cfgExtra === "function" ? cfgExtra(deps) : (cfgExtra ?? {});
169
171
  return {
170
172
  ...boot,
171
173
  ...(options.defaultLocale !== undefined && { defaultLocale: options.defaultLocale }),
@@ -219,6 +221,7 @@ export async function runDevApp(options) {
219
221
  const handle = await createKumikoServer({
220
222
  features,
221
223
  ...(options.clientEntry !== undefined && { clientEntry: options.clientEntry }),
224
+ ...(options.errorDocs && { errorDocs: options.errorDocs }),
222
225
  ...(options.clientEntries !== undefined && { clientEntries: options.clientEntries }),
223
226
  ...(options.hostDispatch !== undefined && { hostDispatch: options.hostDispatch }),
224
227
  ...(options.resolvePageHead !== undefined && { resolvePageHead: options.resolvePageHead }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-dev-server",
3
- "version": "0.342.0",
3
+ "version": "0.343.0",
4
4
  "description": "Dev-tooling for Kumiko apps: local dev-server bootstrap (runDevApp), scaffolding, codegen. Its compose-stacks/env-schema subpaths are consumed at prod boot too — see @cosmicdrift/kumiko-server-runtime for the prod runner itself.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -64,11 +64,11 @@
64
64
  "kumiko-upgrade": "./bin/kumiko-upgrade.ts"
65
65
  },
66
66
  "dependencies": {
67
- "@cosmicdrift/kumiko-bundled-features": "0.342.0",
68
- "@cosmicdrift/kumiko-framework": "0.342.0",
69
- "@cosmicdrift/kumiko-headless": "0.342.0",
70
- "@cosmicdrift/kumiko-renderer-web": "0.342.0",
71
- "@cosmicdrift/kumiko-server-runtime": "0.342.0",
67
+ "@cosmicdrift/kumiko-bundled-features": "0.343.0",
68
+ "@cosmicdrift/kumiko-framework": "0.343.0",
69
+ "@cosmicdrift/kumiko-headless": "0.343.0",
70
+ "@cosmicdrift/kumiko-renderer-web": "0.343.0",
71
+ "@cosmicdrift/kumiko-server-runtime": "0.343.0",
72
72
  "bun-types": "^1.3.13",
73
73
  "ts-morph": "^28.0.0",
74
74
  "zod": "^4.4.3"