@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.
- package/dist/ResourceRegistry.d.ts +19 -0
- package/dist/ResourceRegistry.d.ts.map +1 -1
- package/dist/ResourceRegistry.js +14 -7
- package/dist/ResourceRegistry.js.map +1 -1
- package/dist/StationProvider.d.ts +7 -0
- package/dist/StationProvider.d.ts.map +1 -1
- package/dist/StationProvider.js +121 -57
- package/dist/StationProvider.js.map +1 -1
- package/dist/services/main.d.ts +9 -0
- package/dist/services/main.d.ts.map +1 -1
- package/dist/services/main.js +11 -0
- package/dist/services/main.js.map +1 -1
- package/dist/vendor/nodeEnv.d.ts +5 -0
- package/dist/vendor/nodeEnv.d.ts.map +1 -0
- package/dist/{nodeEnv.js → vendor/nodeEnv.js} +13 -7
- package/dist/vendor/nodeEnv.js.map +1 -0
- package/package.json +1 -1
- package/src/ResourceRegistry.ts +26 -0
- package/src/StationProvider.ts +128 -67
- package/src/services/main.ts +12 -0
- package/src/{nodeEnv.ts → vendor/nodeEnv.ts} +14 -7
- package/dist/nodeEnv.d.ts +0 -16
- package/dist/nodeEnv.d.ts.map +0 -1
- package/dist/nodeEnv.js.map +0 -1
|
@@ -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;;
|
|
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"}
|
package/dist/ResourceRegistry.js
CHANGED
|
@@ -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":"
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAEX,cAAc,EAGd,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"StationProvider.d.ts","sourceRoot":"","sources":["../src/StationProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/StationProvider.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
435
|
-
|
|
436
|
-
|
|
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.
|
|
461
|
-
//
|
|
462
|
-
//
|
|
463
|
-
|
|
464
|
-
//
|
|
465
|
-
//
|
|
466
|
-
|
|
467
|
-
|
|
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
|
-
|
|
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
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
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
|
-
|
|
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
|
-
|
|
719
|
-
//
|
|
720
|
-
//
|
|
721
|
-
|
|
722
|
-
|
|
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
|
-
|
|
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
|
|
788
|
-
|
|
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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"}
|
package/dist/services/main.d.ts
CHANGED
|
@@ -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"}
|
package/dist/services/main.js
CHANGED
|
@@ -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
|
-
*
|
|
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
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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.
|
|
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",
|
package/src/ResourceRegistry.ts
CHANGED
|
@@ -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 {
|
package/src/StationProvider.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
883
|
-
|
|
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.
|
|
913
|
-
//
|
|
914
|
-
//
|
|
915
|
-
|
|
916
|
-
//
|
|
917
|
-
//
|
|
918
|
-
|
|
919
|
-
|
|
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
|
-
|
|
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
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
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
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
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
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
//
|
|
1220
|
-
//
|
|
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
|
|
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
|
-
|
|
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
|
|
1314
|
-
|
|
1315
|
-
|
|
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);
|
package/src/services/main.ts
CHANGED
|
@@ -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
|
-
*
|
|
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
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
|
package/dist/nodeEnv.d.ts.map
DELETED
|
@@ -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"}
|
package/dist/nodeEnv.js.map
DELETED
|
@@ -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"}
|