@c9up/station 0.1.5

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.
Files changed (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/ResourceRegistry.d.ts +18 -0
  4. package/dist/ResourceRegistry.d.ts.map +1 -0
  5. package/dist/ResourceRegistry.js +38 -0
  6. package/dist/ResourceRegistry.js.map +1 -0
  7. package/dist/StationProvider.d.ts +109 -0
  8. package/dist/StationProvider.d.ts.map +1 -0
  9. package/dist/StationProvider.js +1144 -0
  10. package/dist/StationProvider.js.map +1 -0
  11. package/dist/casing.d.ts +27 -0
  12. package/dist/casing.d.ts.map +1 -0
  13. package/dist/casing.js +75 -0
  14. package/dist/casing.js.map +1 -0
  15. package/dist/defineResource.d.ts +9 -0
  16. package/dist/defineResource.d.ts.map +1 -0
  17. package/dist/defineResource.js +84 -0
  18. package/dist/defineResource.js.map +1 -0
  19. package/dist/index.d.ts +7 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +6 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/services/main.d.ts +18 -0
  24. package/dist/services/main.d.ts.map +1 -0
  25. package/dist/services/main.js +31 -0
  26. package/dist/services/main.js.map +1 -0
  27. package/dist/types.d.ts +85 -0
  28. package/dist/types.d.ts.map +1 -0
  29. package/dist/types.js +8 -0
  30. package/dist/types.js.map +1 -0
  31. package/dist/views/errors/404.d.ts +12 -0
  32. package/dist/views/errors/404.d.ts.map +1 -0
  33. package/dist/views/errors/404.js +19 -0
  34. package/dist/views/errors/404.js.map +1 -0
  35. package/dist/views/escape.d.ts +30 -0
  36. package/dist/views/escape.d.ts.map +1 -0
  37. package/dist/views/escape.js +34 -0
  38. package/dist/views/escape.js.map +1 -0
  39. package/dist/views/form.d.ts +34 -0
  40. package/dist/views/form.d.ts.map +1 -0
  41. package/dist/views/form.js +139 -0
  42. package/dist/views/form.js.map +1 -0
  43. package/dist/views/layout.d.ts +24 -0
  44. package/dist/views/layout.d.ts.map +1 -0
  45. package/dist/views/layout.js +85 -0
  46. package/dist/views/layout.js.map +1 -0
  47. package/dist/views/list.d.ts +22 -0
  48. package/dist/views/list.d.ts.map +1 -0
  49. package/dist/views/list.js +85 -0
  50. package/dist/views/list.js.map +1 -0
  51. package/dist/views/login.d.ts +25 -0
  52. package/dist/views/login.d.ts.map +1 -0
  53. package/dist/views/login.js +44 -0
  54. package/dist/views/login.js.map +1 -0
  55. package/dist/views/show.d.ts +17 -0
  56. package/dist/views/show.d.ts.map +1 -0
  57. package/dist/views/show.js +24 -0
  58. package/dist/views/show.js.map +1 -0
  59. package/package.json +63 -0
  60. package/src/ResourceRegistry.ts +49 -0
  61. package/src/StationProvider.ts +1579 -0
  62. package/src/casing.ts +86 -0
  63. package/src/defineResource.ts +126 -0
  64. package/src/index.ts +14 -0
  65. package/src/services/main.ts +39 -0
  66. package/src/types.ts +108 -0
  67. package/src/views/errors/404.ts +27 -0
  68. package/src/views/escape.ts +46 -0
  69. package/src/views/form.ts +191 -0
  70. package/src/views/layout.ts +90 -0
  71. package/src/views/list.ts +121 -0
  72. package/src/views/login.ts +65 -0
  73. package/src/views/show.ts +37 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StationProvider.js","sourceRoot":"","sources":["../src/StationProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Convert an identifier (camelCase / PascalCase / digits / already-lowercase)
3
+ * to kebab-case.
4
+ *
5
+ * BlogPost -> blog-post
6
+ * URLParser -> url-parser (consecutive uppercase = one segment)
7
+ * My2024Post -> my-2024-post (digit boundaries split too)
8
+ * user -> user (idempotent on already-lower input)
9
+ */
10
+ export declare function kebabCase(input: string): string;
11
+ /**
12
+ * Convert kebab-case to space-separated Title Case.
13
+ *
14
+ * blog-posts -> Blog Posts
15
+ */
16
+ export declare function titleCase(input: string): string;
17
+ /**
18
+ * Minimal English pluraliser. Hand-rolled (zero runtime deps).
19
+ *
20
+ * Multi-word kebab inputs only have their LAST segment pluralised:
21
+ *
22
+ * user -> users
23
+ * blog-post -> blog-posts
24
+ * super-man -> super-men
25
+ */
26
+ export declare function pluralise(singular: string): string;
27
+ //# sourceMappingURL=casing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"casing.d.ts","sourceRoot":"","sources":["../src/casing.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW/C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/C;AAqCD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlD"}
package/dist/casing.js ADDED
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Convert an identifier (camelCase / PascalCase / digits / already-lowercase)
3
+ * to kebab-case.
4
+ *
5
+ * BlogPost -> blog-post
6
+ * URLParser -> url-parser (consecutive uppercase = one segment)
7
+ * My2024Post -> my-2024-post (digit boundaries split too)
8
+ * user -> user (idempotent on already-lower input)
9
+ */
10
+ export function kebabCase(input) {
11
+ const upperAfterLowerOrDigit = input.replace(/([a-z0-9])([A-Z])/g, "$1-$2");
12
+ const upperAfterUpperBeforeLower = upperAfterLowerOrDigit.replace(/([A-Z])([A-Z][a-z])/g, "$1-$2");
13
+ const digitAfterLetter = upperAfterUpperBeforeLower.replace(/([A-Za-z])([0-9])/g, "$1-$2");
14
+ return digitAfterLetter.toLowerCase();
15
+ }
16
+ /**
17
+ * Convert kebab-case to space-separated Title Case.
18
+ *
19
+ * blog-posts -> Blog Posts
20
+ */
21
+ export function titleCase(input) {
22
+ return input
23
+ .split("-")
24
+ .map((part) => part.length === 0 ? part : part[0].toUpperCase() + part.slice(1))
25
+ .join(" ");
26
+ }
27
+ /**
28
+ * Irregular plural table. Lookup is on the LAST kebab segment so
29
+ * `super-man` -> `super-men` works while `human` falls through.
30
+ */
31
+ const IRREGULAR_PLURALS = new Map([
32
+ ["person", "people"],
33
+ ["child", "children"],
34
+ ["man", "men"],
35
+ ["woman", "women"],
36
+ ["mouse", "mice"],
37
+ ["goose", "geese"],
38
+ ["tooth", "teeth"],
39
+ ["foot", "feet"],
40
+ ["analysis", "analyses"],
41
+ ["crisis", "crises"],
42
+ ["phenomenon", "phenomena"],
43
+ ["criterion", "criteria"],
44
+ ["datum", "data"],
45
+ ["medium", "media"],
46
+ ]);
47
+ function pluraliseWord(word) {
48
+ const irregular = IRREGULAR_PLURALS.get(word);
49
+ if (irregular !== undefined) {
50
+ return irregular;
51
+ }
52
+ if (/[^aeiou]y$/.test(word)) {
53
+ return `${word.slice(0, -1)}ies`;
54
+ }
55
+ if (/(s|x|z|ch|sh)$/.test(word)) {
56
+ return `${word}es`;
57
+ }
58
+ return `${word}s`;
59
+ }
60
+ /**
61
+ * Minimal English pluraliser. Hand-rolled (zero runtime deps).
62
+ *
63
+ * Multi-word kebab inputs only have their LAST segment pluralised:
64
+ *
65
+ * user -> users
66
+ * blog-post -> blog-posts
67
+ * super-man -> super-men
68
+ */
69
+ export function pluralise(singular) {
70
+ const segments = singular.split("-");
71
+ const last = segments[segments.length - 1];
72
+ segments[segments.length - 1] = pluraliseWord(last);
73
+ return segments.join("-");
74
+ }
75
+ //# sourceMappingURL=casing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"casing.js","sourceRoot":"","sources":["../src/casing.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACtC,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,OAAO,CAChE,sBAAsB,EACtB,OAAO,CACP,CAAC;IACF,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,OAAO,CAC1D,oBAAoB,EACpB,OAAO,CACP,CAAC;IACF,OAAO,gBAAgB,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACtC,OAAO,KAAK;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAChE;SACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,iBAAiB,GAAgC,IAAI,GAAG,CAAC;IAC9D,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,OAAO,EAAE,UAAU,CAAC;IACrB,CAAC,KAAK,EAAE,KAAK,CAAC;IACd,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,WAAW,EAAE,UAAU,CAAC;IACzB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,IAAY;IAClC,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAClC,CAAC;IACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,IAAI,IAAI,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,IAAI,GAAG,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type Resource, type ResourceOptions } from "./types.js";
2
+ /**
3
+ * Build a frozen `Resource` from a developer's declaration.
4
+ *
5
+ * Validation is fail-fast and pre-HTTP: a typo in `actions` or `name` throws
6
+ * here, not at request time, so the offending key surfaces in boot logs.
7
+ */
8
+ export declare function defineResource<T>(options: ResourceOptions<T>): Resource<T>;
9
+ //# sourceMappingURL=defineResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineResource.d.ts","sourceRoot":"","sources":["../src/defineResource.ts"],"names":[],"mappings":"AACA,OAAO,EAKN,KAAK,QAAQ,EAEb,KAAK,eAAe,EACpB,MAAM,YAAY,CAAC;AAUpB;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAoG1E"}
@@ -0,0 +1,84 @@
1
+ import { kebabCase, pluralise, titleCase } from "./casing.js";
2
+ import { RESOURCE_ACTIONS, } from "./types.js";
3
+ const NAME_PATTERN = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
4
+ const ACTION_LOOKUP = new Set(RESOURCE_ACTIONS);
5
+ function isResourceAction(value) {
6
+ return typeof value === "string" && ACTION_LOOKUP.has(value);
7
+ }
8
+ /**
9
+ * Build a frozen `Resource` from a developer's declaration.
10
+ *
11
+ * Validation is fail-fast and pre-HTTP: a typo in `actions` or `name` throws
12
+ * here, not at request time, so the offending key surfaces in boot logs.
13
+ */
14
+ export function defineResource(options) {
15
+ if (typeof options.entity !== "function") {
16
+ throw new TypeError("[station] defineResource: 'entity' must be a class constructor");
17
+ }
18
+ if (options.actions !== undefined) {
19
+ if (!Array.isArray(options.actions) || options.actions.length === 0) {
20
+ throw new Error("[station] defineResource: 'actions' must contain at least one action");
21
+ }
22
+ for (const action of options.actions) {
23
+ if (!isResourceAction(action)) {
24
+ throw new Error(`[station] defineResource: unknown action '${String(action)}' (allowed: list, show, create, edit, destroy)`);
25
+ }
26
+ }
27
+ }
28
+ if (options.name !== undefined && !NAME_PATTERN.test(options.name)) {
29
+ throw new Error(`[station] defineResource: 'name' must be lowercase kebab-case (got: '${options.name}')`);
30
+ }
31
+ const entityName = options.entity.name;
32
+ if (entityName === "") {
33
+ throw new Error("[station] defineResource: 'entity' class has no name (anonymous class); pass 'name:' explicitly");
34
+ }
35
+ const slugBase = kebabCase(entityName);
36
+ const name = options.name ?? pluralise(slugBase);
37
+ if (options.name === undefined && !NAME_PATTERN.test(name)) {
38
+ throw new Error(`[station] defineResource: entity name '${entityName}' produces invalid slug '${name}'; pass 'name:' explicitly to override`);
39
+ }
40
+ const label = options.label ?? titleCase(pluralise(slugBase));
41
+ const enabled = options.actions === undefined
42
+ ? new Set(RESOURCE_ACTIONS)
43
+ : new Set(options.actions);
44
+ const orderedActions = Object.freeze(RESOURCE_ACTIONS.filter((action) => enabled.has(action)));
45
+ // 54.5: validate per-field overrides — keyed by camelCase property
46
+ // name on the entity. Validation is shape-only here; the inferred
47
+ // form vs override merge happens at render time in views/form.ts.
48
+ const formFieldsRaw = options.formFields ?? {};
49
+ const formFields = {};
50
+ for (const [field, override] of Object.entries(formFieldsRaw)) {
51
+ if (override === null || typeof override !== "object") {
52
+ throw new TypeError(`[station] defineResource: 'formFields.${field}' must be an object`);
53
+ }
54
+ formFields[field] = override;
55
+ }
56
+ // 54.6: audit sink shape-check — if provided, must be callable. No
57
+ // extra validation; the sink is exercised lazily on first write.
58
+ let audit;
59
+ if (options.audit !== undefined) {
60
+ if (typeof options.audit !== "function") {
61
+ throw new TypeError(`[station] defineResource: 'audit' must be a function (got ${typeof options.audit})`);
62
+ }
63
+ audit = options.audit;
64
+ }
65
+ // 54.6 hardening: optional audit-failure observability hook.
66
+ let onAuditError;
67
+ if (options.onAuditError !== undefined) {
68
+ if (typeof options.onAuditError !== "function") {
69
+ throw new TypeError(`[station] defineResource: 'onAuditError' must be a function (got ${typeof options.onAuditError})`);
70
+ }
71
+ onAuditError = options.onAuditError;
72
+ }
73
+ const resource = {
74
+ entity: options.entity,
75
+ name,
76
+ label,
77
+ actions: orderedActions,
78
+ audit,
79
+ onAuditError,
80
+ formFields: Object.freeze(formFields),
81
+ };
82
+ return Object.freeze(resource);
83
+ }
84
+ //# sourceMappingURL=defineResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineResource.js","sourceRoot":"","sources":["../src/defineResource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { kebabCase, pluralise, titleCase } from "./casing.js";
2
+ export { defineResource } from "./defineResource.js";
3
+ export { ResourceRegistry } from "./ResourceRegistry.js";
4
+ export type { StationAppContext } from "./StationProvider.js";
5
+ export { default as StationProvider } from "./StationProvider.js";
6
+ export { type AuditEvent, type AuditSink, type FormFieldOverride, RESOURCE_ACTIONS, type Resource, type ResourceAction, type ResourceOptions, } from "./types.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACN,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,eAAe,GACpB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { kebabCase, pluralise, titleCase } from "./casing.js";
2
+ export { defineResource } from "./defineResource.js";
3
+ export { ResourceRegistry } from "./ResourceRegistry.js";
4
+ export { default as StationProvider } from "./StationProvider.js";
5
+ export { RESOURCE_ACTIONS, } from "./types.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAIN,gBAAgB,GAIhB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Default `ResourceRegistry` singleton — Adonis-style:
3
+ *
4
+ * import station from '@c9up/station/services/main'
5
+ *
6
+ * station.register(defineResource({ entity: User }))
7
+ *
8
+ * Populated either by `StationProvider.boot()` (lands in story 54.7) or by
9
+ * the app itself via `setStation(myRegistry)`.
10
+ */
11
+ import type { ResourceRegistry } from "../ResourceRegistry.js";
12
+ /** @internal Bind the singleton (called by StationProvider or by the app). */
13
+ export declare function setStation(value: ResourceRegistry): void;
14
+ /** @internal Read the singleton (or `undefined` pre-boot). */
15
+ export declare function getStation(): ResourceRegistry | undefined;
16
+ declare const station: ResourceRegistry;
17
+ export default station;
18
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Default `ResourceRegistry` singleton — Adonis-style:
3
+ *
4
+ * import station from '@c9up/station/services/main'
5
+ *
6
+ * station.register(defineResource({ entity: User }))
7
+ *
8
+ * Populated either by `StationProvider.boot()` (lands in story 54.7) or by
9
+ * the app itself via `setStation(myRegistry)`.
10
+ */
11
+ let instance;
12
+ /** @internal Bind the singleton (called by StationProvider or by the app). */
13
+ export function setStation(value) {
14
+ instance = value;
15
+ }
16
+ /** @internal Read the singleton (or `undefined` pre-boot). */
17
+ export function getStation() {
18
+ return instance;
19
+ }
20
+ const station = new Proxy({}, {
21
+ get(_target, prop) {
22
+ if (!instance) {
23
+ throw new Error("[station] ResourceRegistry singleton accessed before StationProvider.boot() ran " +
24
+ "or `setStation(myRegistry)` was called. Wire one of them first.");
25
+ }
26
+ const value = Reflect.get(instance, prop, instance);
27
+ return typeof value === "function" ? value.bind(instance) : value;
28
+ },
29
+ });
30
+ export default station;
31
+ //# sourceMappingURL=main.js.map
@@ -0,0 +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"}
@@ -0,0 +1,85 @@
1
+ export type ResourceAction = "list" | "show" | "create" | "edit" | "destroy";
2
+ export declare const RESOURCE_ACTIONS: ReadonlyArray<ResourceAction>;
3
+ /**
4
+ * Audit-trail event (Story 54.6). Emitted AFTER a write action lands
5
+ * successfully — on a 4xx/5xx the event does not fire (the action's
6
+ * effect is the boundary). `before` is present for `edit` and
7
+ * `destroy`; `after` is present for `create` and `edit`.
8
+ */
9
+ export interface AuditEvent {
10
+ readonly action: ResourceAction;
11
+ readonly resource: string;
12
+ readonly recordId?: unknown;
13
+ readonly userId?: unknown;
14
+ readonly before?: Readonly<Record<string, unknown>>;
15
+ readonly after?: Readonly<Record<string, unknown>>;
16
+ readonly at: Date;
17
+ }
18
+ export type AuditSink = (event: AuditEvent) => void | Promise<void>;
19
+ /**
20
+ * Per-field override for the auto-generated form (Story 54.5). Station
21
+ * infers the form from the entity's `@Column` metadata; consumers can
22
+ * override one column at a time without losing the inference for the
23
+ * others.
24
+ */
25
+ export interface FormFieldOverride {
26
+ /** Hide the field from the form entirely (still rendered on show). */
27
+ hidden?: boolean;
28
+ /** Override the rendered `<input type>`. */
29
+ inputType?: "text" | "number" | "email" | "password" | "date" | "datetime-local" | "checkbox" | "textarea";
30
+ /** Override the visible label (defaults to the column name title-cased). */
31
+ label?: string;
32
+ /** Add an `<input placeholder>`. */
33
+ placeholder?: string;
34
+ /** Mark the field as required at the HTML level. */
35
+ required?: boolean;
36
+ }
37
+ export interface ResourceOptions<TEntity> {
38
+ /** Entity class (Atlas `@Entity()`-decorated constructor). */
39
+ entity: new (...args: never[]) => TEntity;
40
+ /** Human-readable label shown in the admin sidebar (e.g. "Users"). */
41
+ label?: string;
42
+ /** Subset of actions to mount. Default: all five. */
43
+ actions?: ReadonlyArray<ResourceAction>;
44
+ /** URL slug override. Default: derived from the entity class name. */
45
+ name?: string;
46
+ /**
47
+ * Audit sink invoked AFTER each successful write (Story 54.6). When
48
+ * omitted, Station falls back to a once-per-process stderr warning
49
+ * so apps don't silently lose audit visibility.
50
+ */
51
+ audit?: AuditSink;
52
+ /**
53
+ * Invoked when the audit sink throws (Story 54.6 hardening, retro
54
+ * 2026-06-01). The mutation has already committed, so this is a
55
+ * compliance-observability hook — emit an alert / enqueue a retry /
56
+ * record the gap. Station does NOT block the user request on an audit
57
+ * failure; without this handler the failure is logged at `error`
58
+ * level. The handler is itself wrapped so a throwing handler can't
59
+ * crash the request.
60
+ */
61
+ onAuditError?: (event: AuditEvent, error: unknown) => void;
62
+ /**
63
+ * Per-field overrides on top of the inferred form (Story 54.5).
64
+ * Keyed by the entity's camelCase property name; absent keys keep
65
+ * the inferred defaults.
66
+ */
67
+ formFields?: Readonly<Record<string, FormFieldOverride>>;
68
+ }
69
+ export interface Resource<TEntity = unknown> {
70
+ /** The entity class passed in. */
71
+ readonly entity: new (...args: never[]) => TEntity;
72
+ /** URL slug — e.g. "users", "blog-posts". Always lowercase, kebab-case. */
73
+ readonly name: string;
74
+ /** Display label — e.g. "Users". Defaults to a title-cased pluralised entity name. */
75
+ readonly label: string;
76
+ /** Frozen list of enabled actions, in canonical order (list, show, create, edit, destroy). */
77
+ readonly actions: ReadonlyArray<ResourceAction>;
78
+ /** Optional audit sink (Story 54.6). */
79
+ readonly audit?: AuditSink;
80
+ /** Optional audit-failure observability hook (Story 54.6 hardening). */
81
+ readonly onAuditError?: (event: AuditEvent, error: unknown) => void;
82
+ /** Frozen per-field overrides for the inferred form (Story 54.5). */
83
+ readonly formFields: Readonly<Record<string, FormFieldOverride>>;
84
+ }
85
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7E,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,cAAc,CAMzD,CAAC;AAEH;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IACjC,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,SAAS,CAAC,EACP,MAAM,GACN,QAAQ,GACR,OAAO,GACP,UAAU,GACV,MAAM,GACN,gBAAgB,GAChB,UAAU,GACV,UAAU,CAAC;IACd,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe,CAAC,OAAO;IACvC,8DAA8D;IAC9D,MAAM,EAAE,KACP,GAAG,IAAI,EAAE,KAAK,EAAE,KACZ,OAAO,CAAC;IACb,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACxC,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D;;;;OAIG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,QAAQ,CAAC,OAAO,GAAG,OAAO;IAC1C,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,KAChB,GAAG,IAAI,EAAE,KAAK,EAAE,KACZ,OAAO,CAAC;IACb,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8FAA8F;IAC9F,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAChD,wCAAwC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;CACjE"}
package/dist/types.js ADDED
@@ -0,0 +1,8 @@
1
+ export const RESOURCE_ACTIONS = Object.freeze([
2
+ "list",
3
+ "show",
4
+ "create",
5
+ "edit",
6
+ "destroy",
7
+ ]);
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAkC,MAAM,CAAC,MAAM,CAAC;IAC5E,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,SAAS;CACT,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Station-branded 404 for `GET /admin/<slug>/:id` where the row doesn't
3
+ * exist. NOT used for unknown slugs (those fall through to Ream's
4
+ * default 404 — see story spec D6).
5
+ */
6
+ import type { Resource } from "../../types.js";
7
+ export interface NotFoundPageInput {
8
+ resource: Resource;
9
+ id: string;
10
+ }
11
+ export declare function renderNotFoundPage(input: NotFoundPageInput): string;
12
+ //# sourceMappingURL=404.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"404.d.ts","sourceRoot":"","sources":["../../../src/views/errors/404.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,MAAM,WAAW,iBAAiB;IACjC,QAAQ,EAAE,QAAQ,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;CACX;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAWnE"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Station-branded 404 for `GET /admin/<slug>/:id` where the row doesn't
3
+ * exist. NOT used for unknown slugs (those fall through to Ream's
4
+ * default 404 — see story spec D6).
5
+ */
6
+ import { escapeHtml, safeHtml } from "../escape.js";
7
+ import { renderLayout } from "../layout.js";
8
+ export function renderNotFoundPage(input) {
9
+ const { resource, id } = input;
10
+ const slug = encodeURIComponent(resource.name);
11
+ const body = `<h1>404 Not Found</h1>` +
12
+ `<p>No ${escapeHtml(resource.label.toLowerCase())} with ID <code>${escapeHtml(id)}</code>.</p>` +
13
+ `<a class="st-backlink" href="/admin/${slug}">← Back to ${escapeHtml(resource.label)}</a>`;
14
+ return renderLayout({
15
+ title: "Not Found",
16
+ bodyHtml: safeHtml(body),
17
+ });
18
+ }
19
+ //# sourceMappingURL=404.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"404.js","sourceRoot":"","sources":["../../../src/views/errors/404.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAO5C,MAAM,UAAU,kBAAkB,CAAC,KAAwB;IAC1D,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAC/B,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,IAAI,GACT,wBAAwB;QACxB,SAAS,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,kBAAkB,UAAU,CAAC,EAAE,CAAC,cAAc;QAC/F,uCAAuC,IAAI,eAAe,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IAC5F,OAAO,YAAY,CAAC;QACnB,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;KACxB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * HTML-escape helpers for Station's hand-rolled view layer.
3
+ *
4
+ * Every dynamic value interpolated into a `${…}` slot in a view template
5
+ * MUST flow through `escapeHtml()`. The lint sweep at
6
+ * `tests/unit/no-unescaped-interpolation.test.ts` enforces this on a
7
+ * grep-pass over `src/views/**` so a missing wrap surfaces as a failing
8
+ * test rather than a stored-XSS bug.
9
+ *
10
+ * `safeHtml()` is the escape hatch for pre-escaped fragments that views
11
+ * compose (e.g., the rendered body the layout helper splices into its
12
+ * shell). The branded shape (`{ readonly __safe: true; readonly html }`)
13
+ * makes the boundary explicit and lets the lint sweep skip lines that
14
+ * mention `__safe` as the only legitimate raw-HTML carrier.
15
+ */
16
+ /** Escape a value for safe interpolation into HTML text or attribute content. */
17
+ export declare function escapeHtml(value: unknown): string;
18
+ /**
19
+ * Branded wrapper marking a string as already HTML-escaped (or
20
+ * deliberately raw, e.g., the inline CSS block in the layout). The
21
+ * lint sweep that bans bare `${…}` interpolations excludes lines
22
+ * containing `__safe`.
23
+ */
24
+ export interface SafeHtml {
25
+ readonly __safe: true;
26
+ readonly html: string;
27
+ }
28
+ /** Mark a string as pre-escaped / deliberately raw HTML. */
29
+ export declare function safeHtml(html: string): SafeHtml;
30
+ //# sourceMappingURL=escape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/views/escape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIjD;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED,4DAA4D;AAC5D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAE/C"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * HTML-escape helpers for Station's hand-rolled view layer.
3
+ *
4
+ * Every dynamic value interpolated into a `${…}` slot in a view template
5
+ * MUST flow through `escapeHtml()`. The lint sweep at
6
+ * `tests/unit/no-unescaped-interpolation.test.ts` enforces this on a
7
+ * grep-pass over `src/views/**` so a missing wrap surfaces as a failing
8
+ * test rather than a stored-XSS bug.
9
+ *
10
+ * `safeHtml()` is the escape hatch for pre-escaped fragments that views
11
+ * compose (e.g., the rendered body the layout helper splices into its
12
+ * shell). The branded shape (`{ readonly __safe: true; readonly html }`)
13
+ * makes the boundary explicit and lets the lint sweep skip lines that
14
+ * mention `__safe` as the only legitimate raw-HTML carrier.
15
+ */
16
+ const ESCAPE_MAP = Object.freeze({
17
+ "&": "&amp;",
18
+ "<": "&lt;",
19
+ ">": "&gt;",
20
+ '"': "&quot;",
21
+ "'": "&#39;",
22
+ });
23
+ /** Escape a value for safe interpolation into HTML text or attribute content. */
24
+ export function escapeHtml(value) {
25
+ if (value === null || value === undefined)
26
+ return "";
27
+ const str = typeof value === "string" ? value : String(value);
28
+ return str.replace(/[&<>"']/g, (ch) => ESCAPE_MAP[ch] ?? ch);
29
+ }
30
+ /** Mark a string as pre-escaped / deliberately raw HTML. */
31
+ export function safeHtml(html) {
32
+ return Object.freeze({ __safe: true, html });
33
+ }
34
+ //# sourceMappingURL=escape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/views/escape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,UAAU,GAAqC,MAAM,CAAC,MAAM,CAAC;IAClE,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,OAAO;CACZ,CAAC,CAAC;AAEH,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,KAAc;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC;AAaD,4DAA4D;AAC5D,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC"}