@c9up/station 0.1.10 → 0.1.12

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.
@@ -6,9 +6,28 @@ import type { Resource } from "./types.js";
6
6
  * lands in story 54.7. Iteration order is registration order, which is what
7
7
  * the admin sidebar wants.
8
8
  */
9
+ /**
10
+ * How a registered resource reaches the router.
11
+ *
12
+ * Installed by `StationProvider` once the admin surface is prepared, so a
13
+ * resource declared in a preload becomes mounted routes at the moment it is
14
+ * declared. The provider used to read a SNAPSHOT of this registry in `start()`
15
+ * and give up when it was empty — and providers start before preloads run, so
16
+ * `station.register(...)` written where the docs say to write it arrived after
17
+ * the only pass that would have mounted it.
18
+ */
19
+ export type ResourceMounter = (resource: Resource) => void;
9
20
  export declare class ResourceRegistry {
10
21
  #private;
11
22
  register<T>(resource: Resource<T>): void;
23
+ /**
24
+ * @internal Give the registry a way to mount what it is told about.
25
+ *
26
+ * Mounts everything already registered before it arrived: an application is
27
+ * free to declare a resource at module scope, which runs while the provider
28
+ * is still starting.
29
+ */
30
+ useMounter(mounter: ResourceMounter): void;
12
31
  get(name: string): Resource | undefined;
13
32
  getOrThrow(name: string): Resource;
14
33
  has(name: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceRegistry.d.ts","sourceRoot":"","sources":["../src/ResourceRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;GAMG;AACH,qBAAa,gBAAgB;;IAG5B,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAUxC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAUlC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,KAAK,IAAI,MAAM;IAIf,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC;CAI9B"}
1
+ {"version":3,"file":"ResourceRegistry.d.ts","sourceRoot":"","sources":["../src/ResourceRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;GAMG;AACH;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;AAE3D,qBAAa,gBAAgB;;IAI5B,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAWxC;;;;;;OAMG;IACH,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAK1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAUlC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,KAAK,IAAI,MAAM;IAIf,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC;CAI9B"}
@@ -1,18 +1,25 @@
1
- /**
2
- * Central catalogue of declared resources for a Station-powered admin surface.
3
- *
4
- * Plain data structure: no boot()/start() lifecycle here — provider wiring
5
- * lands in story 54.7. Iteration order is registration order, which is what
6
- * the admin sidebar wants.
7
- */
8
1
  export class ResourceRegistry {
9
2
  #map = new Map();
3
+ #mounter;
10
4
  register(resource) {
11
5
  const existing = this.#map.get(resource.name);
12
6
  if (existing !== undefined) {
13
7
  throw new Error(`[station] ResourceRegistry: duplicate resource name '${resource.name}' (already registered for ${existing.entity.name})`);
14
8
  }
15
9
  this.#map.set(resource.name, resource);
10
+ this.#mounter?.(resource);
11
+ }
12
+ /**
13
+ * @internal Give the registry a way to mount what it is told about.
14
+ *
15
+ * Mounts everything already registered before it arrived: an application is
16
+ * free to declare a resource at module scope, which runs while the provider
17
+ * is still starting.
18
+ */
19
+ useMounter(mounter) {
20
+ this.#mounter = mounter;
21
+ for (const resource of this.#map.values())
22
+ mounter(resource);
16
23
  }
17
24
  get(name) {
18
25
  return this.#map.get(name);
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceRegistry.js","sourceRoot":"","sources":["../src/ResourceRegistry.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;IACnB,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE5C,QAAQ,CAAI,QAAqB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACd,wDAAwD,QAAQ,CAAC,IAAI,6BAA6B,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CACzH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,UAAU,CAAC,IAAY;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACd,kDAAkD,IAAI,GAAG,CACzD,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,GAAG;QACF,MAAM,QAAQ,GAAe,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;CACD"}
1
+ {"version":3,"file":"ResourceRegistry.js","sourceRoot":"","sources":["../src/ResourceRegistry.ts"],"names":[],"mappings":"AAqBA,MAAM,OAAO,gBAAgB;IACnB,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,QAAQ,CAAmB;IAE3B,QAAQ,CAAI,QAAqB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACd,wDAAwD,QAAQ,CAAC,IAAI,6BAA6B,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CACzH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,OAAwB;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,UAAU,CAAC,IAAY;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACd,kDAAkD,IAAI,GAAG,CACzD,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,GAAG;QACF,MAAM,QAAQ,GAAe,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;CACD"}
@@ -172,6 +172,13 @@ export default class StationProvider {
172
172
  register(): void;
173
173
  boot(): Promise<void>;
174
174
  start(): Promise<void>;
175
+ /**
176
+ * The gaps worth reporting once, when the full set of resources is known.
177
+ *
178
+ * `ready()` runs after every preload, so this is the first moment the whole
179
+ * admin surface exists. Nothing is mounted here — the routes were built as
180
+ * each resource was declared.
181
+ */
175
182
  ready(): Promise<void>;
176
183
  shutdown(): Promise<void>;
177
184
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StationProvider.d.ts","sourceRoot":"","sources":["../src/StationProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StationProvider.d.ts","sourceRoot":"","sources":["../src/StationProvider.ts"],"names":[],"mappings":"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"}
@@ -19,9 +19,9 @@
19
19
  */
20
20
  import "./augmentations.js";
21
21
  import { fileURLToPath } from "node:url";
22
- import { inProduction } from "./nodeEnv.js";
23
22
  import { ResourceRegistry } from "./ResourceRegistry.js";
24
- import { setStation } from "./services/main.js";
23
+ import { clearStation, getStation, setStation } from "./services/main.js";
24
+ import { inProduction } from "./vendor/nodeEnv.js";
25
25
  // note: AuditEvent + ResourceAction are used by the CRUD handlers below;
26
26
  // the imports stay in one block for clarity.
27
27
  import { buildFormViewModel } from "./views/form.js";
@@ -394,6 +394,8 @@ let auditCloneWarnEmitted = false;
394
394
  const TEMPLATES_ROOT = fileURLToPath(new URL("../templates/", import.meta.url));
395
395
  export default class StationProvider {
396
396
  app;
397
+ /** What this provider bound, so shutdown only clears its own. */
398
+ #owned;
397
399
  #contexts = new Map();
398
400
  #viewRenderer;
399
401
  /**
@@ -425,15 +427,20 @@ export default class StationProvider {
425
427
  async boot() {
426
428
  // Force-resolve so `setStation` runs even if no preload touches the
427
429
  // singleton. Mirrors AuroraProvider.boot().
428
- await this.app.container.resolve(ResourceRegistry);
430
+ this.#owned =
431
+ await this.app.container.resolve(ResourceRegistry);
429
432
  }
430
433
  async start() {
431
434
  if (this.#started)
432
435
  return;
433
436
  const registry = await this.app.container.resolve(ResourceRegistry);
434
- const resources = registry.all();
435
- if (resources.length === 0)
436
- return;
437
+ // NOT gated on the registry being non-empty any more. Providers start
438
+ // BEFORE preloads run, and a preload is where the docs say to write
439
+ // `station.register(...)`, so reading a snapshot here and giving up when
440
+ // it was empty meant an application that followed the documentation got
441
+ // no admin at all. The surface is prepared here and each resource is
442
+ // mounted as it is declared — the shape upstream's Transmit uses for the
443
+ // same ordering problem.
437
444
  // 54.7 — read the optional `station` config block. Defaults bake
438
445
  // in `requireAuth: true` when @c9up/warden is detected later in
439
446
  // Phase 1, so a host that just installs the peer gets the auth
@@ -445,58 +452,89 @@ export default class StationProvider {
445
452
  if (!peers)
446
453
  return;
447
454
  const { router, atlas, rune } = peers;
448
- // 57.7 fail-closed: a write-capable admin (create/edit) validates + guards
449
- // mass-assignment through a rune-derived schema. If atlas is present (CRUD
450
- // is live) but `@c9up/rune` is NOT installed, refuse to boot rather than
451
- // silently accept unvalidated bodies — there is NO fallback to the deleted
452
- // key-filter (`feedback_security_first`). Read-only admins need no rune.
453
- if (rune === null && resourcesNeedValidation(resources)) {
454
- throw new Error("[station] @c9up/rune is required to validate admin write forms (create/edit) but is not installed. Add @c9up/rune (a Station peer dependency) — Station will NOT fall back to unvalidated mass-assignment. See https://ream.dev/modules/station#mass-assignment.");
455
- }
456
455
  // Phase 1a2 — resolve the SHARED inker renderer (AdonisJS/Edge parity)
457
456
  // and mount Station's package templates as the `station` disk. Unlike
458
457
  // warden (whose absence keeps the open dev-preview path), a view engine
459
458
  // is a HARD render requirement (D2): once an admin surface exists there
460
- // is no page without it. Fail LOUD at boot when @c9up/inker is not wired
461
- // — mirrors #resolveDb's loud-on-missing posture — rather than degrade
462
- // silently or 500 on the first request.
463
- const renderer = await this.#resolveViewRenderer();
464
- // Mount once: `station::<template>` now resolves to this package's
465
- // templates/ dir on the host's single inker engine (edge.mount parity).
466
- renderer.mount("station", TEMPLATES_ROOT);
467
- this.#viewRenderer = renderer;
459
+ // is no page without it.
460
+ //
461
+ // The failure is HELD rather than thrown: with no resource declared
462
+ // there is no admin surface, and an application that installed the
463
+ // provider without ever registering a resource must not be forced to
464
+ // wire a view engine. It is rethrown on the first resource, which is the
465
+ // moment the requirement becomes real.
466
+ let rendererFailure;
467
+ try {
468
+ const renderer = await this.#resolveViewRenderer();
469
+ // Mount once: `station::<template>` now resolves to this package's
470
+ // templates/ dir on the host's single inker engine (edge.mount parity).
471
+ renderer.mount("station", TEMPLATES_ROOT);
472
+ this.#viewRenderer = renderer;
473
+ }
474
+ catch (err) {
475
+ rendererFailure = err;
476
+ }
468
477
  // Phase 1b — wire the warden auth gate (or warn-once when it stays open).
469
478
  await this.#configureAuth(userConfig);
470
- // Phase 2 — build per-resource context ONCE. `#resolveDb()` is
471
- // loud: if the host installed `@c9up/atlas` but didn't register
472
- // `@c9up/atlas/provider` in `reamrc.ts`, AC11's "surface
473
- // AtlasProvider misconfiguration" intent kicks in.
474
479
  const db = await this.#resolveDb();
475
- for (const resource of resources) {
480
+ // Phase 2 — mount every resource, now and as they arrive. The shell (the
481
+ // login surface, the `/admin` index) goes up with the first one: an
482
+ // application with no resources has no admin, and had none before.
483
+ let shellMounted = false;
484
+ registry.useMounter((resource) => {
485
+ if (!shellMounted) {
486
+ if (rendererFailure !== undefined)
487
+ throw rendererFailure;
488
+ try {
489
+ this.#registerShellRoutes(router);
490
+ }
491
+ catch (err) {
492
+ // The router proxy may still throw "Router accessed before
493
+ // initialization" on first property access (a boot-ordering
494
+ // hazard where the proxy module imported but Ignitor's
495
+ // `setRouter` never fired). That is a legitimate degraded-host
496
+ // shape — give up quietly. Anything else propagates.
497
+ if (isRouterProxyUninit(err))
498
+ return;
499
+ throw err;
500
+ }
501
+ shellMounted = true;
502
+ }
503
+ // 57.7 fail-closed: a write-capable admin (create/edit) validates +
504
+ // guards mass-assignment through a rune-derived schema. If atlas is
505
+ // present (CRUD is live) but `@c9up/rune` is NOT installed, refuse
506
+ // rather than silently accept unvalidated bodies — there is NO
507
+ // fallback to the deleted key-filter. Read-only admins need no rune.
508
+ // Checked per resource, so the refusal names the one at fault.
509
+ if (rune === null && resourcesNeedValidation([resource])) {
510
+ throw new Error(`[station] @c9up/rune is required to validate the write forms of the '${resource.name}' admin (create/edit) but is not installed. Add @c9up/rune (a Station peer dependency) — Station will NOT fall back to unvalidated mass-assignment. See https://ream.dev/modules/station#mass-assignment.`);
511
+ }
476
512
  this.#contexts.set(resource, buildResourceContext(resource, db, atlas, rune));
477
- }
478
- // 56.5 + 54.6 boot-time warn-onces. We surface the "auth wired but no
479
- // permissions seeded" and "no audit sink" gaps loud-and-once so a
480
- // half-wired install can't ship to prod without operators noticing.
481
- // (CSRF is no longer a boot-time warn — enforcement is request-time and
482
- // honest now: every write route fail-closes on `ctx.request.csrfProtected`.)
513
+ this.#registerResourceRoutes(router, resource);
514
+ });
515
+ this.#started = true;
516
+ }
517
+ /**
518
+ * The gaps worth reporting once, when the full set of resources is known.
519
+ *
520
+ * `ready()` runs after every preload, so this is the first moment the whole
521
+ * admin surface exists. Nothing is mounted here — the routes were built as
522
+ * each resource was declared.
523
+ */
524
+ async ready() {
525
+ if (!this.#started)
526
+ return;
527
+ const registry = await this.app.container.resolve(ResourceRegistry);
528
+ const resources = registry.all();
529
+ if (resources.length === 0)
530
+ return;
531
+ // 56.5 + 54.6 — "auth wired but no permissions seeded" and "no audit
532
+ // sink" are surfaced loud-and-once so a half-wired install cannot ship to
533
+ // prod without operators noticing. (CSRF is not a boot-time warn:
534
+ // enforcement is request-time, and every write route fail-closes on
535
+ // `ctx.request.csrfProtected`.)
483
536
  this.#warnSeedPermissionsOnce(resources);
484
537
  this.#warnAuditGapsOnce(resources);
485
- // Phase 3 — route registration. The router proxy may still throw
486
- // "Router accessed before initialization" on first property access
487
- // (boot ordering hazard where the proxy module imported but
488
- // Ignitor's `setRouter` never fired). That's another legitimate
489
- // degraded-host shape — silent return. Anything else (slug
490
- // collision, future validation) propagates.
491
- try {
492
- this.#registerAdminRoutes(router, resources);
493
- }
494
- catch (err) {
495
- if (isRouterProxyUninit(err))
496
- return;
497
- throw err;
498
- }
499
- this.#started = true;
500
538
  }
501
539
  /**
502
540
  * Phase 1 — resolve the host router from the container (Ream registers it as
@@ -706,7 +744,17 @@ export default class StationProvider {
706
744
  : ""));
707
745
  }
708
746
  /** Phase 3 — mount the login surface + per-resource CRUD routes. */
709
- #registerAdminRoutes(router, resources) {
747
+ /** Wrap a handler in the auth gate when one is configured. */
748
+ #gate(handler) {
749
+ return this.#authConfig.requireAuth ? this.#withAuth(handler) : handler;
750
+ }
751
+ /**
752
+ * The routes that belong to the admin itself rather than to a resource.
753
+ *
754
+ * Registered once, while the provider starts — before the HTTP server is
755
+ * listening, and before any resource has necessarily been declared.
756
+ */
757
+ #registerShellRoutes(router) {
710
758
  // 54.7 — mount login surface first when auth is required, so
711
759
  // `/admin/login` is reachable even when the auth gate redirects every
712
760
  // other path to it.
@@ -715,14 +763,23 @@ export default class StationProvider {
715
763
  router.post("/admin/login", this.#buildLoginPostHandler());
716
764
  router.post("/admin/logout", this.#buildLogoutHandler());
717
765
  }
718
- const gate = (handler) => this.#authConfig.requireAuth ? this.#withAuth(handler) : handler;
719
- // `/admin` index — send the operator to the first listable resource (or the
720
- // login surface). Without it, the post-login redirect("/admin") lands on a 404.
721
- router.get("/admin", gate(async (ctx) => {
722
- const home = resources.find((r) => r.actions.includes("list"));
766
+ // `/admin` index — send the operator to the first listable resource (or
767
+ // the login surface). Without it, the post-login redirect("/admin") lands
768
+ // on a 404.
769
+ //
770
+ // The registry is read WHEN THE REQUEST ARRIVES, not when this route is
771
+ // built: resources are declared in preloads, so a list captured here
772
+ // would name whatever happened to exist first — or nothing at all.
773
+ router.get("/admin", this.#gate(async (ctx) => {
774
+ const registry = await this.app.container.resolve(ResourceRegistry);
775
+ const home = registry.all().find((r) => r.actions.includes("list"));
723
776
  ctx.response.redirect(home ? `/admin/${home.name}` : "/admin/login");
724
777
  }));
725
- for (const resource of resources) {
778
+ }
779
+ /** Every route one resource contributes, mounted the moment it is declared. */
780
+ #registerResourceRoutes(router, resource) {
781
+ const gate = (handler) => this.#gate(handler);
782
+ {
726
783
  const slug = resource.name;
727
784
  if (resource.actions.includes("list")) {
728
785
  router.get(`/admin/${slug}`, gate(this.#buildListHandler(resource)));
@@ -784,8 +841,15 @@ export default class StationProvider {
784
841
  missingAuditWarned = true;
785
842
  console.warn(`[station] No audit sink configured for write-enabled resources: ${missing.map((r) => r.name).join(", ")}. Pass 'audit:' in defineResource() to persist mutations to your audit log.`);
786
843
  }
787
- async ready() { }
788
- async shutdown() { }
844
+ async shutdown() {
845
+ // Release the module-level singleton, while it is still ours. A stopped
846
+ // application left a dead resource registry reachable through `services/main`, and
847
+ // with two applications in one process the survivor's binding must not
848
+ // be the one cleared.
849
+ if (this.#owned !== undefined && getStation() === this.#owned)
850
+ clearStation();
851
+ this.#owned = undefined;
852
+ }
789
853
  #requireContext(resource) {
790
854
  const ctx = this.#contexts.get(resource);
791
855
  if (!ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"StationProvider.js","sourceRoot":"","sources":["../src/StationProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StationProvider.js","sourceRoot":"","sources":["../src/StationProvider.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,15 @@ import type { ResourceRegistry } from "../ResourceRegistry.js";
13
13
  export declare function setStation(value: ResourceRegistry): void;
14
14
  /** @internal Read the singleton (or `undefined` pre-boot). */
15
15
  export declare function getStation(): ResourceRegistry | undefined;
16
+ /**
17
+ * @internal Release the singleton, so a shut-down application does not leave a
18
+ * dead resource registry reachable through `services/main`.
19
+ *
20
+ * The caller checks ownership first (`getStation() === mine`): two applications
21
+ * share this module in one process, and the one shutting down must not clear
22
+ * what the other has since bound.
23
+ */
24
+ export declare function clearStation(): void;
16
25
  declare const station: ResourceRegistry;
17
26
  export default station;
18
27
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/services/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAExD;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,IAAI,gBAAgB,GAAG,SAAS,CAEzD;AAED,QAAA,MAAM,OAAO,EAAE,gBAWb,CAAC;AAEH,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/services/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAExD;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,IAAI,gBAAgB,GAAG,SAAS,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,QAAA,MAAM,OAAO,EAAE,gBAWb,CAAC;AAEH,eAAe,OAAO,CAAC"}
@@ -17,6 +17,17 @@ export function setStation(value) {
17
17
  export function getStation() {
18
18
  return instance;
19
19
  }
20
+ /**
21
+ * @internal Release the singleton, so a shut-down application does not leave a
22
+ * dead resource registry reachable through `services/main`.
23
+ *
24
+ * The caller checks ownership first (`getStation() === mine`): two applications
25
+ * share this module in one process, and the one shutting down must not clear
26
+ * what the other has since bound.
27
+ */
28
+ export function clearStation() {
29
+ instance = undefined;
30
+ }
20
31
  const station = new Proxy({}, {
21
32
  get(_target, prop) {
22
33
  if (!instance) {
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/services/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,IAAI,QAAsC,CAAC;AAE3C,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,KAAuB;IACjD,QAAQ,GAAG,KAAK,CAAC;AAClB,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,UAAU;IACzB,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,OAAO,GAAqB,IAAI,KAAK,CAAC,EAAsB,EAAE;IACnE,GAAG,CAAC,OAAO,EAAE,IAAI;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,kFAAkF;gBACjF,iEAAiE,CAClE,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/services/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,IAAI,QAAsC,CAAC;AAE3C,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,KAAuB;IACjD,QAAQ,GAAG,KAAK,CAAC;AAClB,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,UAAU;IACzB,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY;IAC3B,QAAQ,GAAG,SAAS,CAAC;AACtB,CAAC;AAED,MAAM,OAAO,GAAqB,IAAI,KAAK,CAAC,EAAsB,EAAE;IACnE,GAAG,CAAC,OAAO,EAAE,IAAI;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,kFAAkF;gBACjF,iEAAiE,CAClE,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,OAAO,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** The canonical name for whatever `NODE_ENV` holds. */
2
+ export declare function normalizeNodeEnv(value: string | undefined): string;
3
+ /** Whether this process is running in production, under any spelling. */
4
+ export declare function inProduction(): boolean;
5
+ //# sourceMappingURL=nodeEnv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeEnv.d.ts","sourceRoot":"","sources":["../../src/vendor/nodeEnv.ts"],"names":[],"mappings":"AAuBA,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAOlE;AAED,yEAAyE;AACzE,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
@@ -1,13 +1,19 @@
1
+ // Generated from scripts/vendor/nodeEnv.ts — do not edit.
2
+ //
3
+ // This package is published and built from its own repository, so the file
4
+ // has to exist here rather than be imported. `pnpm vendor:sync` rewrites it,
5
+ // and `pnpm vendor:check` fails if this copy has drifted from the original.
1
6
  /**
2
- * Reading `NODE_ENV`, with the aliases people actually set.
7
+ * `NODE_ENV`, read the way every runtime actually spells it.
3
8
  *
4
- * `NODE_ENV=prod` is ordinary in a Dockerfile or a platform dashboard. Read
5
- * verbatim it answers "not production" — and here that decides whether an
6
- * admin panel mounts with no authorisation at all.
9
+ * `NODE_ENV=prod` is ordinary in a Dockerfile or a platform dashboard, and a
10
+ * bare `=== "production"` answers "not production" for it. What that costs
11
+ * differs per package, so the consequence is stated where the decision is
12
+ * taken, not here.
7
13
  *
8
- * Duplicated rather than imported: station's peers are all optional, and a
9
- * safety decision that only holds when one of them is installed is not a
10
- * decision.
14
+ * The tables mirror the framework's (`@c9up/ream`, src/env/nodeEnv.ts), which
15
+ * is the origin rather than a peer: it formats to different rules and exposes
16
+ * `currentNodeEnv()` instead of `inProduction()`.
11
17
  */
12
18
  const DEV_ENVS = ["dev", "develop", "development"];
13
19
  const PROD_ENVS = ["prod", "production"];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeEnv.js","sourceRoot":"","sources":["../../src/vendor/nodeEnv.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAE5E;;;;;;;;;;;GAWG;AAEH,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACnD,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACzC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEtC,wDAAwD;AACxD,MAAM,UAAU,gBAAgB,CAAC,KAAyB;IACzD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC;IACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY;IAC3B,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC;AAChE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c9up/station",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "Station — admin scaffolding for the Ream framework. Declarative resource catalogue (defineResource) backing list/show/create/edit/destroy routes, audit, policies.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -7,8 +7,21 @@ import type { Resource } from "./types.js";
7
7
  * lands in story 54.7. Iteration order is registration order, which is what
8
8
  * the admin sidebar wants.
9
9
  */
10
+ /**
11
+ * How a registered resource reaches the router.
12
+ *
13
+ * Installed by `StationProvider` once the admin surface is prepared, so a
14
+ * resource declared in a preload becomes mounted routes at the moment it is
15
+ * declared. The provider used to read a SNAPSHOT of this registry in `start()`
16
+ * and give up when it was empty — and providers start before preloads run, so
17
+ * `station.register(...)` written where the docs say to write it arrived after
18
+ * the only pass that would have mounted it.
19
+ */
20
+ export type ResourceMounter = (resource: Resource) => void;
21
+
10
22
  export class ResourceRegistry {
11
23
  readonly #map = new Map<string, Resource>();
24
+ #mounter?: ResourceMounter;
12
25
 
13
26
  register<T>(resource: Resource<T>): void {
14
27
  const existing = this.#map.get(resource.name);
@@ -18,6 +31,19 @@ export class ResourceRegistry {
18
31
  );
19
32
  }
20
33
  this.#map.set(resource.name, resource);
34
+ this.#mounter?.(resource);
35
+ }
36
+
37
+ /**
38
+ * @internal Give the registry a way to mount what it is told about.
39
+ *
40
+ * Mounts everything already registered before it arrived: an application is
41
+ * free to declare a resource at module scope, which runs while the provider
42
+ * is still starting.
43
+ */
44
+ useMounter(mounter: ResourceMounter): void {
45
+ this.#mounter = mounter;
46
+ for (const resource of this.#map.values()) mounter(resource);
21
47
  }
22
48
 
23
49
  get(name: string): Resource | undefined {
@@ -26,10 +26,10 @@ import type {
26
26
  DatabaseConnection,
27
27
  DateColumnConfig,
28
28
  } from "@c9up/atlas";
29
- import { inProduction } from "./nodeEnv.js";
30
29
  import { ResourceRegistry } from "./ResourceRegistry.js";
31
- import { setStation } from "./services/main.js";
30
+ import { clearStation, getStation, setStation } from "./services/main.js";
32
31
  import type { AuditEvent, Resource, ResourceAction } from "./types.js";
32
+ import { inProduction } from "./vendor/nodeEnv.js";
33
33
  // note: AuditEvent + ResourceAction are used by the CRUD handlers below;
34
34
  // the imports stay in one block for clarity.
35
35
  import { buildFormViewModel } from "./views/form.js";
@@ -834,6 +834,9 @@ let auditCloneWarnEmitted = false;
834
834
  const TEMPLATES_ROOT = fileURLToPath(new URL("../templates/", import.meta.url));
835
835
 
836
836
  export default class StationProvider {
837
+ /** What this provider bound, so shutdown only clears its own. */
838
+ #owned: ResourceRegistry | undefined;
839
+
837
840
  #contexts: Map<Resource, ResourceContext> = new Map();
838
841
  #viewRenderer: InkerViewRenderer | undefined;
839
842
  /**
@@ -871,7 +874,8 @@ export default class StationProvider {
871
874
  async boot(): Promise<void> {
872
875
  // Force-resolve so `setStation` runs even if no preload touches the
873
876
  // singleton. Mirrors AuroraProvider.boot().
874
- await this.app.container.resolve<ResourceRegistry>(ResourceRegistry);
877
+ this.#owned =
878
+ await this.app.container.resolve<ResourceRegistry>(ResourceRegistry);
875
879
  }
876
880
 
877
881
  async start(): Promise<void> {
@@ -879,8 +883,14 @@ export default class StationProvider {
879
883
 
880
884
  const registry =
881
885
  await this.app.container.resolve<ResourceRegistry>(ResourceRegistry);
882
- const resources = registry.all();
883
- if (resources.length === 0) return;
886
+
887
+ // NOT gated on the registry being non-empty any more. Providers start
888
+ // BEFORE preloads run, and a preload is where the docs say to write
889
+ // `station.register(...)`, so reading a snapshot here and giving up when
890
+ // it was empty meant an application that followed the documentation got
891
+ // no admin at all. The surface is prepared here and each resource is
892
+ // mounted as it is declared — the shape upstream's Transmit uses for the
893
+ // same ordering problem.
884
894
 
885
895
  // 54.7 — read the optional `station` config block. Defaults bake
886
896
  // in `requireAuth: true` when @c9up/warden is detected later in
@@ -894,67 +904,94 @@ export default class StationProvider {
894
904
  if (!peers) return;
895
905
  const { router, atlas, rune } = peers;
896
906
 
897
- // 57.7 fail-closed: a write-capable admin (create/edit) validates + guards
898
- // mass-assignment through a rune-derived schema. If atlas is present (CRUD
899
- // is live) but `@c9up/rune` is NOT installed, refuse to boot rather than
900
- // silently accept unvalidated bodies — there is NO fallback to the deleted
901
- // key-filter (`feedback_security_first`). Read-only admins need no rune.
902
- if (rune === null && resourcesNeedValidation(resources)) {
903
- throw new Error(
904
- "[station] @c9up/rune is required to validate admin write forms (create/edit) but is not installed. Add @c9up/rune (a Station peer dependency) — Station will NOT fall back to unvalidated mass-assignment. See https://ream.dev/modules/station#mass-assignment.",
905
- );
906
- }
907
-
908
907
  // Phase 1a2 — resolve the SHARED inker renderer (AdonisJS/Edge parity)
909
908
  // and mount Station's package templates as the `station` disk. Unlike
910
909
  // warden (whose absence keeps the open dev-preview path), a view engine
911
910
  // is a HARD render requirement (D2): once an admin surface exists there
912
- // is no page without it. Fail LOUD at boot when @c9up/inker is not wired
913
- // — mirrors #resolveDb's loud-on-missing posture — rather than degrade
914
- // silently or 500 on the first request.
915
- const renderer = await this.#resolveViewRenderer();
916
- // Mount once: `station::<template>` now resolves to this package's
917
- // templates/ dir on the host's single inker engine (edge.mount parity).
918
- renderer.mount("station", TEMPLATES_ROOT);
919
- this.#viewRenderer = renderer;
911
+ // is no page without it.
912
+ //
913
+ // The failure is HELD rather than thrown: with no resource declared
914
+ // there is no admin surface, and an application that installed the
915
+ // provider without ever registering a resource must not be forced to
916
+ // wire a view engine. It is rethrown on the first resource, which is the
917
+ // moment the requirement becomes real.
918
+ let rendererFailure: unknown;
919
+ try {
920
+ const renderer = await this.#resolveViewRenderer();
921
+ // Mount once: `station::<template>` now resolves to this package's
922
+ // templates/ dir on the host's single inker engine (edge.mount parity).
923
+ renderer.mount("station", TEMPLATES_ROOT);
924
+ this.#viewRenderer = renderer;
925
+ } catch (err) {
926
+ rendererFailure = err;
927
+ }
920
928
 
921
929
  // Phase 1b — wire the warden auth gate (or warn-once when it stays open).
922
930
  await this.#configureAuth(userConfig);
923
931
 
924
- // Phase 2 — build per-resource context ONCE. `#resolveDb()` is
925
- // loud: if the host installed `@c9up/atlas` but didn't register
926
- // `@c9up/atlas/provider` in `reamrc.ts`, AC11's "surface
927
- // AtlasProvider misconfiguration" intent kicks in.
928
932
  const db = await this.#resolveDb();
929
- for (const resource of resources) {
933
+
934
+ // Phase 2 — mount every resource, now and as they arrive. The shell (the
935
+ // login surface, the `/admin` index) goes up with the first one: an
936
+ // application with no resources has no admin, and had none before.
937
+ let shellMounted = false;
938
+ registry.useMounter((resource) => {
939
+ if (!shellMounted) {
940
+ if (rendererFailure !== undefined) throw rendererFailure;
941
+ try {
942
+ this.#registerShellRoutes(router);
943
+ } catch (err) {
944
+ // The router proxy may still throw "Router accessed before
945
+ // initialization" on first property access (a boot-ordering
946
+ // hazard where the proxy module imported but Ignitor's
947
+ // `setRouter` never fired). That is a legitimate degraded-host
948
+ // shape — give up quietly. Anything else propagates.
949
+ if (isRouterProxyUninit(err)) return;
950
+ throw err;
951
+ }
952
+ shellMounted = true;
953
+ }
954
+ // 57.7 fail-closed: a write-capable admin (create/edit) validates +
955
+ // guards mass-assignment through a rune-derived schema. If atlas is
956
+ // present (CRUD is live) but `@c9up/rune` is NOT installed, refuse
957
+ // rather than silently accept unvalidated bodies — there is NO
958
+ // fallback to the deleted key-filter. Read-only admins need no rune.
959
+ // Checked per resource, so the refusal names the one at fault.
960
+ if (rune === null && resourcesNeedValidation([resource])) {
961
+ throw new Error(
962
+ `[station] @c9up/rune is required to validate the write forms of the '${resource.name}' admin (create/edit) but is not installed. Add @c9up/rune (a Station peer dependency) — Station will NOT fall back to unvalidated mass-assignment. See https://ream.dev/modules/station#mass-assignment.`,
963
+ );
964
+ }
930
965
  this.#contexts.set(
931
966
  resource,
932
967
  buildResourceContext(resource, db, atlas, rune),
933
968
  );
934
- }
969
+ this.#registerResourceRoutes(router, resource);
970
+ });
935
971
 
936
- // 56.5 + 54.6 boot-time warn-onces. We surface the "auth wired but no
937
- // permissions seeded" and "no audit sink" gaps loud-and-once so a
938
- // half-wired install can't ship to prod without operators noticing.
939
- // (CSRF is no longer a boot-time warn — enforcement is request-time and
940
- // honest now: every write route fail-closes on `ctx.request.csrfProtected`.)
972
+ this.#started = true;
973
+ }
974
+
975
+ /**
976
+ * The gaps worth reporting once, when the full set of resources is known.
977
+ *
978
+ * `ready()` runs after every preload, so this is the first moment the whole
979
+ * admin surface exists. Nothing is mounted here — the routes were built as
980
+ * each resource was declared.
981
+ */
982
+ async ready(): Promise<void> {
983
+ if (!this.#started) return;
984
+ const registry =
985
+ await this.app.container.resolve<ResourceRegistry>(ResourceRegistry);
986
+ const resources = registry.all();
987
+ if (resources.length === 0) return;
988
+ // 56.5 + 54.6 — "auth wired but no permissions seeded" and "no audit
989
+ // sink" are surfaced loud-and-once so a half-wired install cannot ship to
990
+ // prod without operators noticing. (CSRF is not a boot-time warn:
991
+ // enforcement is request-time, and every write route fail-closes on
992
+ // `ctx.request.csrfProtected`.)
941
993
  this.#warnSeedPermissionsOnce(resources);
942
994
  this.#warnAuditGapsOnce(resources);
943
-
944
- // Phase 3 — route registration. The router proxy may still throw
945
- // "Router accessed before initialization" on first property access
946
- // (boot ordering hazard where the proxy module imported but
947
- // Ignitor's `setRouter` never fired). That's another legitimate
948
- // degraded-host shape — silent return. Anything else (slug
949
- // collision, future validation) propagates.
950
- try {
951
- this.#registerAdminRoutes(router, resources);
952
- } catch (err) {
953
- if (isRouterProxyUninit(err)) return;
954
- throw err;
955
- }
956
-
957
- this.#started = true;
958
995
  }
959
996
 
960
997
  /**
@@ -1198,10 +1235,20 @@ export default class StationProvider {
1198
1235
  }
1199
1236
 
1200
1237
  /** Phase 3 — mount the login surface + per-resource CRUD routes. */
1201
- #registerAdminRoutes(
1202
- router: StationRouter,
1203
- resources: ReadonlyArray<Resource>,
1204
- ): void {
1238
+ /** Wrap a handler in the auth gate when one is configured. */
1239
+ #gate(
1240
+ handler: (ctx: StationHttpContext) => Promise<void>,
1241
+ ): (ctx: StationHttpContext) => Promise<void> {
1242
+ return this.#authConfig.requireAuth ? this.#withAuth(handler) : handler;
1243
+ }
1244
+
1245
+ /**
1246
+ * The routes that belong to the admin itself rather than to a resource.
1247
+ *
1248
+ * Registered once, while the provider starts — before the HTTP server is
1249
+ * listening, and before any resource has necessarily been declared.
1250
+ */
1251
+ #registerShellRoutes(router: StationRouter): void {
1205
1252
  // 54.7 — mount login surface first when auth is required, so
1206
1253
  // `/admin/login` is reachable even when the auth gate redirects every
1207
1254
  // other path to it.
@@ -1211,22 +1258,30 @@ export default class StationProvider {
1211
1258
  router.post("/admin/logout", this.#buildLogoutHandler());
1212
1259
  }
1213
1260
 
1214
- const gate = (
1215
- handler: (ctx: StationHttpContext) => Promise<void>,
1216
- ): ((ctx: StationHttpContext) => Promise<void>) =>
1217
- this.#authConfig.requireAuth ? this.#withAuth(handler) : handler;
1218
-
1219
- // `/admin` index — send the operator to the first listable resource (or the
1220
- // login surface). Without it, the post-login redirect("/admin") lands on a 404.
1261
+ // `/admin` index — send the operator to the first listable resource (or
1262
+ // the login surface). Without it, the post-login redirect("/admin") lands
1263
+ // on a 404.
1264
+ //
1265
+ // The registry is read WHEN THE REQUEST ARRIVES, not when this route is
1266
+ // built: resources are declared in preloads, so a list captured here
1267
+ // would name whatever happened to exist first — or nothing at all.
1221
1268
  router.get(
1222
1269
  "/admin",
1223
- gate(async (ctx) => {
1224
- const home = resources.find((r) => r.actions.includes("list"));
1270
+ this.#gate(async (ctx) => {
1271
+ const registry =
1272
+ await this.app.container.resolve<ResourceRegistry>(ResourceRegistry);
1273
+ const home = registry.all().find((r) => r.actions.includes("list"));
1225
1274
  ctx.response.redirect(home ? `/admin/${home.name}` : "/admin/login");
1226
1275
  }),
1227
1276
  );
1277
+ }
1228
1278
 
1229
- for (const resource of resources) {
1279
+ /** Every route one resource contributes, mounted the moment it is declared. */
1280
+ #registerResourceRoutes(router: StationRouter, resource: Resource): void {
1281
+ const gate = (
1282
+ handler: (ctx: StationHttpContext) => Promise<void>,
1283
+ ): ((ctx: StationHttpContext) => Promise<void>) => this.#gate(handler);
1284
+ {
1230
1285
  const slug = resource.name;
1231
1286
  if (resource.actions.includes("list")) {
1232
1287
  router.get(`/admin/${slug}`, gate(this.#buildListHandler(resource)));
@@ -1310,9 +1365,15 @@ export default class StationProvider {
1310
1365
  );
1311
1366
  }
1312
1367
 
1313
- async ready(): Promise<void> {}
1314
-
1315
- async shutdown(): Promise<void> {}
1368
+ async shutdown(): Promise<void> {
1369
+ // Release the module-level singleton, while it is still ours. A stopped
1370
+ // application left a dead resource registry reachable through `services/main`, and
1371
+ // with two applications in one process the survivor's binding must not
1372
+ // be the one cleared.
1373
+ if (this.#owned !== undefined && getStation() === this.#owned)
1374
+ clearStation();
1375
+ this.#owned = undefined;
1376
+ }
1316
1377
 
1317
1378
  #requireContext(resource: Resource): ResourceContext {
1318
1379
  const ctx = this.#contexts.get(resource);
@@ -23,6 +23,18 @@ export function getStation(): ResourceRegistry | undefined {
23
23
  return instance;
24
24
  }
25
25
 
26
+ /**
27
+ * @internal Release the singleton, so a shut-down application does not leave a
28
+ * dead resource registry reachable through `services/main`.
29
+ *
30
+ * The caller checks ownership first (`getStation() === mine`): two applications
31
+ * share this module in one process, and the one shutting down must not clear
32
+ * what the other has since bound.
33
+ */
34
+ export function clearStation(): void {
35
+ instance = undefined;
36
+ }
37
+
26
38
  const station: ResourceRegistry = new Proxy({} as ResourceRegistry, {
27
39
  get(_target, prop) {
28
40
  if (!instance) {
@@ -1,13 +1,20 @@
1
+ // Generated from scripts/vendor/nodeEnv.ts — do not edit.
2
+ //
3
+ // This package is published and built from its own repository, so the file
4
+ // has to exist here rather than be imported. `pnpm vendor:sync` rewrites it,
5
+ // and `pnpm vendor:check` fails if this copy has drifted from the original.
6
+
1
7
  /**
2
- * Reading `NODE_ENV`, with the aliases people actually set.
8
+ * `NODE_ENV`, read the way every runtime actually spells it.
3
9
  *
4
- * `NODE_ENV=prod` is ordinary in a Dockerfile or a platform dashboard. Read
5
- * verbatim it answers "not production" — and here that decides whether an
6
- * admin panel mounts with no authorisation at all.
10
+ * `NODE_ENV=prod` is ordinary in a Dockerfile or a platform dashboard, and a
11
+ * bare `=== "production"` answers "not production" for it. What that costs
12
+ * differs per package, so the consequence is stated where the decision is
13
+ * taken, not here.
7
14
  *
8
- * Duplicated rather than imported: station's peers are all optional, and a
9
- * safety decision that only holds when one of them is installed is not a
10
- * decision.
15
+ * The tables mirror the framework's (`@c9up/ream`, src/env/nodeEnv.ts), which
16
+ * is the origin rather than a peer: it formats to different rules and exposes
17
+ * `currentNodeEnv()` instead of `inProduction()`.
11
18
  */
12
19
 
13
20
  const DEV_ENVS = ["dev", "develop", "development"];
package/dist/nodeEnv.d.ts DELETED
@@ -1,16 +0,0 @@
1
- /**
2
- * Reading `NODE_ENV`, with the aliases people actually set.
3
- *
4
- * `NODE_ENV=prod` is ordinary in a Dockerfile or a platform dashboard. Read
5
- * verbatim it answers "not production" — and here that decides whether an
6
- * admin panel mounts with no authorisation at all.
7
- *
8
- * Duplicated rather than imported: station's peers are all optional, and a
9
- * safety decision that only holds when one of them is installed is not a
10
- * decision.
11
- */
12
- /** The canonical name for whatever `NODE_ENV` holds. */
13
- export declare function normalizeNodeEnv(value: string | undefined): string;
14
- /** Whether this process is running in production, under any spelling. */
15
- export declare function inProduction(): boolean;
16
- //# sourceMappingURL=nodeEnv.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nodeEnv.d.ts","sourceRoot":"","sources":["../src/nodeEnv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAOlE;AAED,yEAAyE;AACzE,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nodeEnv.js","sourceRoot":"","sources":["../src/nodeEnv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACnD,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACzC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEtC,wDAAwD;AACxD,MAAM,UAAU,gBAAgB,CAAC,KAAyB;IACzD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC;IACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY;IAC3B,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC;AAChE,CAAC"}