@fougere/core 0.5.0-alpha.0 → 0.6.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/boot/Emissions.d.ts +2 -2
  2. package/dist/boot/Emissions.d.ts.map +1 -1
  3. package/dist/boot/Emissions.js +1 -1
  4. package/dist/boot/HandlerFacade.d.ts +1 -1
  5. package/dist/boot/HandlerFacade.d.ts.map +1 -1
  6. package/dist/boot/HandlerFacade.js +1 -1
  7. package/dist/boot/HandlerFacade.js.map +1 -1
  8. package/dist/boot/auth.d.ts +6 -6
  9. package/dist/boot/auth.d.ts.map +1 -1
  10. package/dist/boot/boot.d.ts +2 -2
  11. package/dist/boot/boot.d.ts.map +1 -1
  12. package/dist/boot/boot.js +1 -1
  13. package/dist/boot/boot.js.map +1 -1
  14. package/dist/boot/bootstrap.d.ts.map +1 -1
  15. package/dist/boot/bootstrap.js +47 -38
  16. package/dist/boot/bootstrap.js.map +1 -1
  17. package/dist/boot/card.d.ts +21 -0
  18. package/dist/boot/card.d.ts.map +1 -0
  19. package/dist/boot/card.js +100 -0
  20. package/dist/boot/card.js.map +1 -0
  21. package/dist/boot/frame.d.ts +3 -3
  22. package/dist/boot/frame.d.ts.map +1 -1
  23. package/dist/boot/frame.js +7 -7
  24. package/dist/boot/frame.js.map +1 -1
  25. package/dist/boot/hosted.d.ts +8 -2
  26. package/dist/boot/hosted.d.ts.map +1 -1
  27. package/dist/boot/hosted.js +10 -10
  28. package/dist/boot/hosted.js.map +1 -1
  29. package/dist/boot/ownership.d.ts +7 -5
  30. package/dist/boot/ownership.d.ts.map +1 -1
  31. package/dist/boot/ownership.js +9 -14
  32. package/dist/boot/ownership.js.map +1 -1
  33. package/dist/boot/ports.d.ts +2 -2
  34. package/dist/boot/ports.d.ts.map +1 -1
  35. package/dist/boot/ports.js +1 -1
  36. package/dist/boot/runner.d.ts +28 -0
  37. package/dist/boot/runner.d.ts.map +1 -0
  38. package/dist/boot/runner.js +26 -0
  39. package/dist/boot/runner.js.map +1 -0
  40. package/dist/boot/seed.d.ts +2 -2
  41. package/dist/boot/seed.d.ts.map +1 -1
  42. package/dist/boot/seed.js +5 -5
  43. package/dist/boot/seed.js.map +1 -1
  44. package/dist/boot/statement-drift.d.ts +2 -1
  45. package/dist/boot/statement-drift.d.ts.map +1 -1
  46. package/dist/boot/statement-drift.js.map +1 -1
  47. package/dist/boot/together.d.ts +4 -4
  48. package/dist/boot/together.d.ts.map +1 -1
  49. package/dist/boot/together.js +17 -19
  50. package/dist/boot/together.js.map +1 -1
  51. package/dist/boot/types.d.ts +12 -11
  52. package/dist/boot/types.d.ts.map +1 -1
  53. package/dist/contract/CallLog.d.ts +2 -2
  54. package/dist/contract/CallLog.d.ts.map +1 -1
  55. package/dist/contract/RouteAddress.d.ts +2 -0
  56. package/dist/contract/RouteAddress.d.ts.map +1 -1
  57. package/dist/contract/RouteAddress.js.map +1 -1
  58. package/dist/{scan/declare.d.ts → declare.d.ts} +3 -3
  59. package/dist/declare.d.ts.map +1 -0
  60. package/dist/{scan/declare.js → declare.js} +3 -3
  61. package/dist/declare.js.map +1 -0
  62. package/dist/{scan → descriptor}/Fronds.d.ts +6 -7
  63. package/dist/descriptor/Fronds.d.ts.map +1 -0
  64. package/dist/{scan → descriptor}/Fronds.js +6 -7
  65. package/dist/descriptor/Fronds.js.map +1 -0
  66. package/dist/{scan → descriptor}/frond.d.ts +7 -47
  67. package/dist/descriptor/frond.d.ts.map +1 -0
  68. package/dist/{scan → descriptor}/frond.js.map +1 -1
  69. package/dist/dispatch/ArgumentResolver.d.ts +5 -2
  70. package/dist/dispatch/ArgumentResolver.d.ts.map +1 -1
  71. package/dist/dispatch/ArgumentResolver.js +48 -3
  72. package/dist/dispatch/ArgumentResolver.js.map +1 -1
  73. package/dist/dispatch/DispatchEvent.d.ts +1 -1
  74. package/dist/dispatch/DispatchEvent.d.ts.map +1 -1
  75. package/dist/dispatch/PresenterArgumentResolver.d.ts +1 -1
  76. package/dist/dispatch/PresenterArgumentResolver.d.ts.map +1 -1
  77. package/dist/dispatch/PresenterArgumentResolver.js +1 -1
  78. package/dist/dispatch/Route.d.ts +1 -2
  79. package/dist/dispatch/Route.d.ts.map +1 -1
  80. package/dist/dispatch/StorageGuard.d.ts +2 -2
  81. package/dist/dispatch/StorageGuard.d.ts.map +1 -1
  82. package/dist/dispatch/StorageGuard.js +7 -7
  83. package/dist/dispatch/StorageGuard.js.map +1 -1
  84. package/dist/effective-operation.d.ts +29 -3
  85. package/dist/effective-operation.d.ts.map +1 -1
  86. package/dist/effective-operation.js +52 -1
  87. package/dist/effective-operation.js.map +1 -1
  88. package/dist/emit.d.ts +1 -1
  89. package/dist/frond-config.d.ts +2 -2
  90. package/dist/graph.d.ts +1 -1
  91. package/dist/graph.d.ts.map +1 -1
  92. package/dist/imports.d.ts +1 -1
  93. package/dist/imports.d.ts.map +1 -1
  94. package/dist/index.d.ts +15 -10
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +9 -6
  97. package/dist/index.js.map +1 -1
  98. package/dist/node.d.ts +2 -2
  99. package/dist/node.d.ts.map +1 -1
  100. package/dist/node.js +2 -2
  101. package/dist/node.js.map +1 -1
  102. package/dist/prefab/collector.d.ts +2 -2
  103. package/dist/prefab/collector.js +2 -2
  104. package/dist/prefab/crud.d.ts +5 -5
  105. package/dist/prefab/crud.d.ts.map +1 -1
  106. package/dist/prefab/crud.js +12 -12
  107. package/dist/prefab/crud.js.map +1 -1
  108. package/dist/prefab/mirror.d.ts +5 -5
  109. package/dist/prefab/mirror.d.ts.map +1 -1
  110. package/dist/prefab/mirror.js +5 -5
  111. package/dist/prefab/mirror.js.map +1 -1
  112. package/dist/prefab/presenter.d.ts +2 -2
  113. package/dist/prefab/presenter.js +2 -2
  114. package/dist/prefab/repository.d.ts +14 -14
  115. package/dist/prefab/repository.d.ts.map +1 -1
  116. package/dist/prefab/repository.js +19 -19
  117. package/dist/prefab/repository.js.map +1 -1
  118. package/dist/rows.d.ts +40 -0
  119. package/dist/rows.d.ts.map +1 -0
  120. package/dist/rows.js +146 -0
  121. package/dist/rows.js.map +1 -0
  122. package/dist/scan/conventions.d.ts +8 -12
  123. package/dist/scan/conventions.d.ts.map +1 -1
  124. package/dist/scan/conventions.js +0 -13
  125. package/dist/scan/conventions.js.map +1 -1
  126. package/dist/scan/emit.d.ts +1 -1
  127. package/dist/scan/emit.d.ts.map +1 -1
  128. package/dist/scan/emit.js +1 -1
  129. package/dist/scan/emit.js.map +1 -1
  130. package/dist/scan/handler-parser.d.ts +11 -56
  131. package/dist/scan/handler-parser.d.ts.map +1 -1
  132. package/dist/scan/handler-parser.js +2 -2
  133. package/dist/scan/handler-parser.js.map +1 -1
  134. package/dist/scan/result.d.ts +41 -0
  135. package/dist/scan/result.d.ts.map +1 -0
  136. package/dist/scan/result.js +2 -0
  137. package/dist/scan/result.js.map +1 -0
  138. package/dist/scan/scanner.d.ts +18 -1
  139. package/dist/scan/scanner.d.ts.map +1 -1
  140. package/dist/scan/scanner.js +34 -17
  141. package/dist/scan/scanner.js.map +1 -1
  142. package/dist/scan/statement.d.ts +1 -1
  143. package/dist/scan/statement.d.ts.map +1 -1
  144. package/dist/scan/statement.js.map +1 -1
  145. package/dist/{orm.d.ts → storage.d.ts} +98 -16
  146. package/dist/storage.d.ts.map +1 -0
  147. package/dist/{orm.js → storage.js} +53 -5
  148. package/dist/storage.js.map +1 -0
  149. package/dist/verify.d.ts +1 -1
  150. package/dist/verify.d.ts.map +1 -1
  151. package/dist/verify.js +2 -2
  152. package/dist/verify.js.map +1 -1
  153. package/dist/{boot → wire}/binding.d.ts +2 -10
  154. package/dist/wire/binding.d.ts.map +1 -0
  155. package/dist/{boot → wire}/binding.js +0 -52
  156. package/dist/wire/binding.js.map +1 -0
  157. package/dist/wire/call.d.ts +2 -40
  158. package/dist/wire/call.d.ts.map +1 -1
  159. package/dist/wire/call.js +0 -125
  160. package/dist/wire/call.js.map +1 -1
  161. package/dist/wire/operation.d.ts +5 -31
  162. package/dist/wire/operation.d.ts.map +1 -1
  163. package/dist/wire/operation.js +0 -51
  164. package/dist/wire/operation.js.map +1 -1
  165. package/dist/wire/signature.d.ts +58 -0
  166. package/dist/wire/signature.d.ts.map +1 -0
  167. package/dist/wire/signature.js +2 -0
  168. package/dist/wire/signature.js.map +1 -0
  169. package/package.json +3 -3
  170. package/src/boot/Emissions.ts +2 -2
  171. package/src/boot/HandlerFacade.ts +3 -3
  172. package/src/boot/auth.ts +6 -6
  173. package/src/boot/boot.ts +3 -3
  174. package/src/boot/bootstrap.ts +50 -39
  175. package/src/boot/card.ts +113 -0
  176. package/src/boot/frame.ts +7 -7
  177. package/src/boot/hosted.ts +11 -14
  178. package/src/boot/ownership.ts +14 -15
  179. package/src/boot/ports.ts +2 -2
  180. package/src/boot/runner.ts +34 -0
  181. package/src/boot/seed.ts +6 -6
  182. package/src/boot/statement-drift.ts +5 -4
  183. package/src/boot/together.ts +24 -25
  184. package/src/boot/types.ts +12 -11
  185. package/src/contract/CallLog.ts +2 -2
  186. package/src/contract/RouteAddress.ts +3 -0
  187. package/src/{scan/declare.ts → declare.ts} +5 -5
  188. package/src/{scan → descriptor}/Fronds.ts +6 -7
  189. package/src/{scan → descriptor}/frond.ts +7 -48
  190. package/src/dispatch/ArgumentResolver.ts +53 -7
  191. package/src/dispatch/DispatchEvent.ts +1 -1
  192. package/src/dispatch/PresenterArgumentResolver.ts +2 -2
  193. package/src/dispatch/Route.ts +1 -3
  194. package/src/dispatch/StorageGuard.ts +7 -7
  195. package/src/effective-operation.ts +63 -11
  196. package/src/emit.ts +1 -1
  197. package/src/frond-config.ts +2 -2
  198. package/src/graph.ts +1 -1
  199. package/src/imports.ts +1 -1
  200. package/src/index.ts +15 -13
  201. package/src/node.ts +2 -2
  202. package/src/prefab/collector.ts +2 -2
  203. package/src/prefab/crud.ts +18 -18
  204. package/src/prefab/mirror.ts +8 -8
  205. package/src/prefab/presenter.ts +2 -2
  206. package/src/prefab/repository.ts +32 -32
  207. package/src/rows.ts +155 -0
  208. package/src/scan/conventions.ts +0 -18
  209. package/src/scan/emit.ts +3 -5
  210. package/src/scan/handler-parser.ts +14 -67
  211. package/src/scan/result.ts +42 -0
  212. package/src/scan/scanner.ts +44 -21
  213. package/src/scan/statement.ts +2 -1
  214. package/src/{orm.ts → storage.ts} +126 -17
  215. package/src/verify.ts +3 -3
  216. package/src/{boot → wire}/binding.ts +2 -66
  217. package/src/wire/call.ts +1 -129
  218. package/src/wire/operation.ts +5 -62
  219. package/src/wire/signature.ts +59 -0
  220. package/dist/boot/binding.d.ts.map +0 -1
  221. package/dist/boot/binding.js.map +0 -1
  222. package/dist/orm.d.ts.map +0 -1
  223. package/dist/orm.js.map +0 -1
  224. package/dist/scan/Fronds.d.ts.map +0 -1
  225. package/dist/scan/Fronds.js.map +0 -1
  226. package/dist/scan/declare.d.ts.map +0 -1
  227. package/dist/scan/declare.js.map +0 -1
  228. package/dist/scan/frond.d.ts.map +0 -1
  229. /package/dist/{scan → descriptor}/frond.js +0 -0
@@ -0,0 +1,100 @@
1
+ /**
2
+ * What an app says about ITSELF — the `rpc.discover` answer, built from the app.
3
+ *
4
+ * The shape is `wire/`'s: it crosses a process boundary. Building one needs an App,
5
+ * which is why the function lives here and the shape does not.
6
+ */
7
+ import { Card } from '@fougere/schema';
8
+ import { factsAnnouncedBy } from '../emit.js';
9
+ import { facadeKeyOf } from '../wire/call.js';
10
+ /**
11
+ * Serialize what the app hosts, for one audience. Served on `rpc.discover`,
12
+ * cached by callers.
13
+ *
14
+ * Hosting means answering: an entity with no façade declares no operation, so
15
+ * it is not among the DOORS — publishing its shape would hand an anonymous caller
16
+ * the structure of tables it can never reach (the auth tables, typically), and
17
+ * `fougere sync` would rebuild a schema with nothing to call on it.
18
+ *
19
+ * `facts` is the one thing that shape-without-a-door rule does not cover, and the
20
+ * reason is the opposite of a leak: an entity nobody exposed is silent, whereas a
21
+ * fact was explicitly declared to leave.
22
+ *
23
+ * `surface` makes that sentence audience-aware rather than app-wide: a door
24
+ * answers with what IT serves. Nothing falls back to the full façade — under a
25
+ * named surface, an entity with no façade of its own is simply not there.
26
+ */
27
+ export function identityCardOf(app, surface) {
28
+ const declared = app.fronds.schemas();
29
+ return {
30
+ fronds: app.fronds.map((frond) => {
31
+ // What the frond answers to, not what it stores. This walked `frond.entities`, so a
32
+ // handler carrying no entity — a health check, a search across shapes — was built,
33
+ // served, and absent from the card: `sync` could not generate its door and a remote
34
+ // consumer had no way to know it existed. The boot has said "pointing at nothing is
35
+ // legal" since handlers became the subject; the card had not caught up.
36
+ const byEntity = new Map(frond.entities.map((entity) => [entity.name, entity]));
37
+ const addresses = [...new Set([
38
+ ...frond.entities.map((entity) => entity.name),
39
+ ...frond.handlers.map((handler) => handler.address),
40
+ ])];
41
+ return {
42
+ name: frond.name,
43
+ doors: addresses.flatMap((address) => {
44
+ const ops = facadeOps(app, address, surface);
45
+ if (ops.length === 0)
46
+ return [];
47
+ const entity = byEntity.get(address);
48
+ return [{
49
+ name: address,
50
+ ops,
51
+ // Absent when nothing of that name is stored. A door is still a door.
52
+ ...(entity ? { schema: Card.fromSchema(entity.entityClass, address).descriptor } : {}),
53
+ }];
54
+ }),
55
+ /**
56
+ * What leaves on its own — the same list on every surface, deliberately.
57
+ *
58
+ * A door has an audience; a fact does not. `Emit<T>` names a subject and *the
59
+ * number of readers is not the emitter's business* (`emit.ts`), so narrowing this
60
+ * by `surface` would invent an axis the primitive refuses. The consequence is
61
+ * stated rather than hidden: a fact's SHAPE is readable by anyone who can read the
62
+ * card at all. What must not be published must not be announced.
63
+ */
64
+ facts: factsAnnouncedBy(frond.handlers).map((name) => {
65
+ const entityClass = declared.get(name);
66
+ return { name, ...(entityClass ? { schema: Card.fromSchema(entityClass, name).descriptor } : {}) };
67
+ }),
68
+ };
69
+ }),
70
+ };
71
+ }
72
+ function facadeOps(app, entityName, surface) {
73
+ let facade;
74
+ try {
75
+ facade = app.container.resolve(facadeKeyOf(entityName, surface));
76
+ }
77
+ catch {
78
+ return [];
79
+ }
80
+ // The façade is the list of names; the model is the resolved terms.
81
+ const effective = app.operationsFor(entityName, surface);
82
+ if (!effective) {
83
+ throw new Error(`Facade '${facadeKeyOf(entityName, surface)}' exists without an effective operation table.`);
84
+ }
85
+ return Object.keys(facade).map((name) => {
86
+ const contract = effective.get(name);
87
+ if (!contract) {
88
+ throw new Error(`Facade '${facadeKeyOf(entityName, surface)}' serves '${name}' without an effective contract.`);
89
+ }
90
+ return {
91
+ name,
92
+ ...(contract?.description && { description: contract.description }),
93
+ ...(contract?.input && { input: Card.fromSchema(contract.input, name).descriptor }),
94
+ ...(contract?.output && { output: Card.fromSchema(contract.output, name).descriptor }),
95
+ ...(contract?.cardinality && { cardinality: contract.cardinality }),
96
+ kind: contract.kind,
97
+ };
98
+ });
99
+ }
100
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/boot/card.ts"],"names":[],"mappings":"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"}
@@ -25,13 +25,13 @@ export interface Undo {
25
25
  run(): Promise<void>;
26
26
  }
27
27
  /**
28
- * The ORM a member is handed inside a compensated frame: the same port, writing the same
28
+ * The storage a member is handed inside a compensated frame: the same port, writing the same
29
29
  * rows, leaving an inverse behind each time.
30
30
  *
31
- * `Object.create` for the same reason `StorageGuard` uses it — the ORM keeps every gesture
31
+ * `Object.create` for the same reason `StorageGuard` uses it — the storage keeps every gesture
32
32
  * it had, including the ones this knows nothing about.
33
33
  */
34
- export declare function recording<T extends object>(orm: T, entity: string, fields: Fields, journal: Undo[]): T;
34
+ export declare function recording<T extends object>(storage: T, entity: string, fields: Fields, journal: Undo[]): T;
35
35
  /**
36
36
  * Replay the inverses, most recent first, and report rather than pretend.
37
37
  *
@@ -1 +1 @@
1
- {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/boot/frame.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAgC,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,sDAAsD;AACtD,MAAM,WAAW,IAAI;IACnB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAqDD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CA8FtG;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAkBlG"}
1
+ {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/boot/frame.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAgC,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,sDAAsD;AACtD,MAAM,WAAW,IAAI;IACnB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAqDD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CA8F1G;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAkBlG"}
@@ -24,7 +24,7 @@ const pick = (row, keys) => Object.fromEntries(keys.map((key) => [key, row[key]]
24
24
  *
25
25
  * The inverse of an upsert is derivable exactly when the conflict is the primary key: read
26
26
  * the rows by key first, then restore the ones that were there and delete the ones that
27
- * were not. `SqlEntityOrm` spells `onConflict(pk)` on SQLite and Postgres, so that holds —
27
+ * were not. `SqlStorage` spells `onConflict(pk)` on SQLite and Postgres, so that holds —
28
28
  * but MySQL's `onDuplicateKeyUpdate` fires on ANY unique constraint, and a row that
29
29
  * conflicts on a unique email while carrying a different key would be restored under a key
30
30
  * the write never touched.
@@ -48,22 +48,22 @@ function refuseAmbiguousUpsert(entity, gesture) {
48
48
  `create/update explicitly.`);
49
49
  }
50
50
  /**
51
- * The ORM a member is handed inside a compensated frame: the same port, writing the same
51
+ * The storage a member is handed inside a compensated frame: the same port, writing the same
52
52
  * rows, leaving an inverse behind each time.
53
53
  *
54
- * `Object.create` for the same reason `StorageGuard` uses it — the ORM keeps every gesture
54
+ * `Object.create` for the same reason `StorageGuard` uses it — the storage keeps every gesture
55
55
  * it had, including the ones this knows nothing about.
56
56
  */
57
- export function recording(orm, entity, fields, journal) {
58
- const base = orm;
57
+ export function recording(storage, entity, fields, journal) {
58
+ const base = storage;
59
59
  if (typeof base.create !== 'function' || typeof base.update !== 'function')
60
- return orm;
60
+ return storage;
61
61
  const key = FieldSet.of(fields).primary;
62
62
  if (!key) {
63
63
  throw new Error(`${entity} declares no primary field, so a write to it cannot be taken back by ` +
64
64
  `identity — and this frame has no transaction to do it instead.`);
65
65
  }
66
- const recorded = Object.create(orm);
66
+ const recorded = Object.create(storage);
67
67
  recorded.create = async function (...args) {
68
68
  const row = await base.create.apply(this, args);
69
69
  const id = String(row[key]);
@@ -1 +1 @@
1
- {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/boot/frame.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/boot/frame.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,8 @@
16
16
  * because the point of stating is to decide. Empty is what "I named none" looks like, and
17
17
  * `frond()` builds every member, so an empty one is filled rather than enforced.
18
18
  */
19
- import type { FrondDescriptor, ScanResult } from '../scan/frond.js';
19
+ import type { FrondDescriptor } from '../descriptor/frond.js';
20
+ import type { ScanResult } from '../scan/result.js';
20
21
  /** Where an app's fronds come from — either, or both. */
21
22
  export interface HostedSources {
22
23
  /** What the app states. No disk was read, so no diagnostic can come from it. */
@@ -24,6 +25,11 @@ export interface HostedSources {
24
25
  /** What a scanner found, and what it could not do. */
25
26
  scan?: ScanResult | (() => Promise<ScanResult> | ScanResult);
26
27
  }
27
- /** What the app hosts, and what the scan — if it ran — could not do. */
28
+ /**
29
+ * What the app hosts, and what the scan — if it ran — could not do.
30
+ *
31
+ * Neither key is EMPTY rather than refused: whether an app with no frond is legitimate
32
+ * depends on what else it declares, and this function is handed none of that.
33
+ */
28
34
  export declare function hostedBy(sources: HostedSources): Promise<ScanResult>;
29
35
  //# sourceMappingURL=hosted.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hosted.d.ts","sourceRoot":"","sources":["../../src/boot/hosted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGpE,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,sDAAsD;IACtD,IAAI,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;CAC9D;AA2BD,wEAAwE;AACxE,wBAAsB,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAqB1E"}
1
+ {"version":3,"file":"hosted.d.ts","sourceRoot":"","sources":["../../src/boot/hosted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,sDAAsD;IACtD,IAAI,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;CAC9D;AA2BD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAY1E"}
@@ -1,4 +1,4 @@
1
- import { Fronds } from '../scan/Fronds.js';
1
+ import { Fronds } from '../descriptor/Fronds.js';
2
2
  /** A stated frond, completed by what a scan found under the same name. */
3
3
  function completed(stated, found) {
4
4
  if (!found)
@@ -18,21 +18,21 @@ function completed(stated, found) {
18
18
  seeds: fill('seeds'),
19
19
  };
20
20
  }
21
- /** What the app hosts, and what the scan — if it ran — could not do. */
21
+ /**
22
+ * What the app hosts, and what the scan — if it ran — could not do.
23
+ *
24
+ * Neither key is EMPTY rather than refused: whether an app with no frond is legitimate
25
+ * depends on what else it declares, and this function is handed none of that.
26
+ */
22
27
  export async function hostedBy(sources) {
23
28
  const scanned = sources.scan
24
29
  ? await (typeof sources.scan === 'function' ? sources.scan() : sources.scan)
25
30
  : undefined;
26
- if (!sources.fronds) {
27
- if (!scanned) {
28
- throw new Error('createApp needs `fronds:` (what this app states) or `scan:` (what a scanner found). '
29
- + 'Neither was given, so nothing is hosted.');
30
- }
31
- return scanned;
32
- }
31
+ if (!sources.fronds)
32
+ return scanned ?? { fronds: Fronds.hosting([]), diagnostics: [] };
33
33
  const found = scanned?.fronds ?? [];
34
34
  const stated = sources.fronds.map((f) => completed(f, found.find((s) => s.name === f.name)));
35
35
  const unstated = found.filter((f) => !sources.fronds.some((s) => s.name === f.name));
36
- return { fronds: Fronds.scanned([...stated, ...unstated]), diagnostics: scanned?.diagnostics ?? [] };
36
+ return { fronds: Fronds.hosting([...stated, ...unstated]), diagnostics: scanned?.diagnostics ?? [] };
37
37
  }
38
38
  //# sourceMappingURL=hosted.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/boot/hosted.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAa3C,0EAA0E;AAC1E,SAAS,SAAS,CAAC,MAAuB,EAAE,KAAkC;IAC5E,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAE1B,qFAAqF;IACrF,uFAAuF;IACvF,sFAAsF;IACtF,MAAM,IAAI,GAAG,CAAqB,MAAS,EAAsB,EAAE,CACjE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjE,OAAO;QACL,GAAG,KAAK;QACR,GAAG,MAAM;QACT,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;QAC5B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;QAC1B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;QAC1B,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;QAC9B,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;QAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;KACrB,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAsB;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;QAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5E,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,sFAAsF;kBACpF,0CAA0C,CAC7C,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtF,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE,EAAE,CAAC;AACvG,CAAC"}
1
+ {"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/boot/hosted.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAajD,0EAA0E;AAC1E,SAAS,SAAS,CAAC,MAAuB,EAAE,KAAkC;IAC5E,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAE1B,qFAAqF;IACrF,uFAAuF;IACvF,sFAAsF;IACtF,MAAM,IAAI,GAAG,CAAqB,MAAS,EAAsB,EAAE,CACjE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjE,OAAO;QACL,GAAG,KAAK;QACR,GAAG,MAAM;QACT,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;QAC5B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;QAC1B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;QAC1B,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;QAC9B,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;QAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;KACrB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAsB;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;QAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5E,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAEvF,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtF,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE,EAAE,CAAC;AACvG,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { FrondDescriptor, ProviderEntry } from '../scan/frond.js';
1
+ import type { FrondDescriptor, ProviderEntry } from '../descriptor/frond.js';
2
2
  /**
3
3
  * Who owns an entity's storage.
4
4
  *
@@ -9,19 +9,21 @@ import type { FrondDescriptor, ProviderEntry } from '../scan/frond.js';
9
9
  */
10
10
  export declare function ownersOf(providers: readonly ProviderEntry[]): Map<string, string>;
11
11
  /**
12
- * `EntityOrm<E>` is not a word of the user's vocabulary — `<E>Repository` is the one way in.
12
+ * `Storage<E>` is not a word of the user's vocabulary — `<E>Repository` is the one way in.
13
13
  *
14
14
  * A door judges and projects; a HOLDER keeps the storage. So the rule is not about which
15
15
  * directory a file sits in but about which of the two a class is: a handler, a presenter and
16
- * a collector may never name an ORM, and a provider may name only the ORM of what its prefab
17
- * was built on — which is `Repository` and `Mirror`, without either being named here.
16
+ * a collector may never name the port, and a provider may name only the storage of what its
17
+ * prefab was built on — which is `Repository` and `Mirror`, without either being named here.
18
18
  *
19
19
  * What it buys beyond one word instead of two: an entity that becomes owned later needs no
20
20
  * call site to move, because none of them ever spelled the storage.
21
21
  *
22
+ * `known` answers what the key's suffix cannot: `FileStorage` is an ordinary class name.
23
+ *
22
24
  * Refused at boot rather than reported by `verify`, which nothing calls at startup.
23
25
  */
24
- export declare function refuseOrmInUserCode(frond: FrondDescriptor, owners: Map<string, string>): void;
26
+ export declare function refuseStorageInUserCode(frond: FrondDescriptor, owners: Map<string, string>, known: (entity: string) => boolean): void;
25
27
  /**
26
28
  * An owned entity has no automatic CRUD — said at boot, not at the first request.
27
29
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKvE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBjF;AAaD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAoC7F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiB3F"}
1
+ {"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAK7E;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBjF;AAaD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,GACjC,IAAI,CAoCN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiB3F"}
@@ -1,7 +1,7 @@
1
1
  import { lowerFirst } from '@fougere/schema';
2
2
  import { targetOf } from '../prefab/prefab.js';
3
3
  import { ownedBy, repositoryKeyOf } from '../prefab/repository.js';
4
- import { ormKeyOf } from '../orm.js';
4
+ import { entityOfStorageKey } from '../storage.js';
5
5
  /**
6
6
  * Who owns an entity's storage.
7
7
  *
@@ -33,7 +33,7 @@ export function ownersOf(providers) {
33
33
  }
34
34
  /**
35
35
  * The entities a class was BUILT ON — what a prefab may legitimately be handed the storage
36
- * of. Empty for a plain service, which is why one cannot ask for an ORM at all.
36
+ * of. Empty for a plain service, which is why one cannot ask for a storage at all.
37
37
  */
38
38
  function builtOn(ctor) {
39
39
  const owned = ownedBy(ctor);
@@ -43,19 +43,21 @@ function builtOn(ctor) {
43
43
  return target?.name ? [lowerFirst(target.name)] : [];
44
44
  }
45
45
  /**
46
- * `EntityOrm<E>` is not a word of the user's vocabulary — `<E>Repository` is the one way in.
46
+ * `Storage<E>` is not a word of the user's vocabulary — `<E>Repository` is the one way in.
47
47
  *
48
48
  * A door judges and projects; a HOLDER keeps the storage. So the rule is not about which
49
49
  * directory a file sits in but about which of the two a class is: a handler, a presenter and
50
- * a collector may never name an ORM, and a provider may name only the ORM of what its prefab
51
- * was built on — which is `Repository` and `Mirror`, without either being named here.
50
+ * a collector may never name the port, and a provider may name only the storage of what its
51
+ * prefab was built on — which is `Repository` and `Mirror`, without either being named here.
52
52
  *
53
53
  * What it buys beyond one word instead of two: an entity that becomes owned later needs no
54
54
  * call site to move, because none of them ever spelled the storage.
55
55
  *
56
+ * `known` answers what the key's suffix cannot: `FileStorage` is an ordinary class name.
57
+ *
56
58
  * Refused at boot rather than reported by `verify`, which nothing calls at startup.
57
59
  */
58
- export function refuseOrmInUserCode(frond, owners) {
60
+ export function refuseStorageInUserCode(frond, owners, known) {
59
61
  const doors = [
60
62
  ...frond.handlers.map((h) => ({ ...h, kind: 'handler' })),
61
63
  ...frond.presenters.map((p) => ({ ...p, kind: 'presenter' })),
@@ -65,7 +67,7 @@ export function refuseOrmInUserCode(frond, owners) {
65
67
  for (const decl of [...doors, ...holders]) {
66
68
  const allowed = decl.kind === 'provider' ? builtOn(decl.ctor) : [];
67
69
  for (const dep of decl.deps) {
68
- const entity = entityOfOrmKey(dep);
70
+ const entity = entityOfStorageKey(dep, known);
69
71
  if (!entity)
70
72
  continue;
71
73
  const owner = owners.get(entity);
@@ -117,11 +119,4 @@ export function refuseCrudOnOwned(frond, owners) {
117
119
  + ` ${handler.filePath}`);
118
120
  }
119
121
  }
120
- /** `'PostOrm'` → `'post'`, and nothing for a key that is not one. */
121
- function entityOfOrmKey(dep) {
122
- if (!dep.endsWith('Orm') || dep === 'Orm')
123
- return undefined;
124
- const entity = lowerFirst(dep.slice(0, -'Orm'.length));
125
- return ormKeyOf(entity) === dep ? entity : undefined;
126
- }
127
122
  //# sourceMappingURL=ownership.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ownership.js","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ownership.js","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import type { ProviderEntry } from '../scan/frond.js';
1
+ import type { ProviderEntry } from '../descriptor/frond.js';
2
2
  /**
3
3
  * A port is a class something already answers under. Nothing declares one — the
4
4
  * prototype chain states it, so `class StripePayment extends Payment` IS the whole
5
5
  * registration, and so is `class MyLogger extends Logger` over a builtin.
6
6
  *
7
7
  * This is the fourth reading of the rule the other three already apply: the type
8
- * names the SUBJECT (`EntityOrm<E>`, `Emit<F>`, `Facade<H>`) and the container
8
+ * names the SUBJECT (`Storage<E>`, `Emit<F>`, `Facade<H>`) and the container
9
9
  * holds the realization. Providers were the one case where the type named the
10
10
  * realization instead, so `constructor(private payment: Payment)` resolved to the
11
11
  * base class and a handler got an object whose method did not exist.
@@ -1 +1 @@
1
- {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/boot/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACzC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CA6C5B"}
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/boot/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACzC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CA6C5B"}
@@ -4,7 +4,7 @@
4
4
  * registration, and so is `class MyLogger extends Logger` over a builtin.
5
5
  *
6
6
  * This is the fourth reading of the rule the other three already apply: the type
7
- * names the SUBJECT (`EntityOrm<E>`, `Emit<F>`, `Facade<H>`) and the container
7
+ * names the SUBJECT (`Storage<E>`, `Emit<F>`, `Facade<H>`) and the container
8
8
  * holds the realization. Providers were the one case where the type named the
9
9
  * realization instead, so `constructor(private payment: Payment)` resolved to the
10
10
  * base class and a handler got an object whose method did not exist.
@@ -0,0 +1,28 @@
1
+ /**
2
+ * A Transport built from an app — the two ways a call enters this process.
3
+ *
4
+ * `Transport` is `wire/`'s shape; making one needs an App and the transport entry.
5
+ */
6
+ import type { App } from './types.js';
7
+ import type { Transport } from '../wire/call.js';
8
+ /**
9
+ * Build the local runner — the reference realization of Transport.
10
+ *
11
+ * Resolves strictly from the app's own container: a call that lands here is
12
+ * judged here. A miss is a typed NOT_FOUND, never a forward to another remote.
13
+ */
14
+ export declare function createLocalRunner(app: App, surface?: string): Transport;
15
+ /**
16
+ * Build the app runner — same judgment, but resolution follows the app's
17
+ * topology: local façades and remote doublures alike. This is the runner
18
+ * an app's own entry points (browser endpoint, bridges) stand on.
19
+ *
20
+ * `surface` is the audience this runner serves, and it belongs to the DOOR that
21
+ * builds the runner, never to the call: a caller cannot name its own audience
22
+ * any more than it can name its own identity (`state` is stamped server-side
23
+ * for the same reason). Reaching the admin door IS the proof. So `FrondCall`
24
+ * gains nothing and the wire format gains nothing — a remote frond's audience
25
+ * is simply which URL `remotes:` points at.
26
+ */
27
+ export declare function createAppRunner(app: App, surface?: string): Transport;
28
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/boot/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAEvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAErE"}
@@ -0,0 +1,26 @@
1
+ import { createTransportEntry } from '../entry/TransportEntry.js';
2
+ /**
3
+ * Build the local runner — the reference realization of Transport.
4
+ *
5
+ * Resolves strictly from the app's own container: a call that lands here is
6
+ * judged here. A miss is a typed NOT_FOUND, never a forward to another remote.
7
+ */
8
+ export function createLocalRunner(app, surface) {
9
+ return createTransportEntry(app.local, surface);
10
+ }
11
+ /**
12
+ * Build the app runner — same judgment, but resolution follows the app's
13
+ * topology: local façades and remote doublures alike. This is the runner
14
+ * an app's own entry points (browser endpoint, bridges) stand on.
15
+ *
16
+ * `surface` is the audience this runner serves, and it belongs to the DOOR that
17
+ * builds the runner, never to the call: a caller cannot name its own audience
18
+ * any more than it can name its own identity (`state` is stamped server-side
19
+ * for the same reason). Reaching the admin door IS the proof. So `FrondCall`
20
+ * gains nothing and the wire format gains nothing — a remote frond's audience
21
+ * is simply which URL `remotes:` points at.
22
+ */
23
+ export function createAppRunner(app, surface) {
24
+ return createTransportEntry(app, surface);
25
+ }
26
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/boot/runner.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAQ,EAAE,OAAgB;IAC1D,OAAO,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,GAAQ,EAAE,OAAgB;IACxD,OAAO,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { FrondDescriptor, SeedEntry } from '../scan/frond.js';
1
+ import type { FrondDescriptor, SeedEntry } from '../descriptor/frond.js';
2
2
  import type { App } from './types.js';
3
3
  import type { Extension } from './AppLifecycle.js';
4
4
  /**
@@ -22,7 +22,7 @@ export declare function orderSeeds(fronds: FrondDescriptor[]): SeedEntry[];
22
22
  * Plant a set of seeds, in the order given. Reports what it did, one line per entity.
23
23
  *
24
24
  * The one seeding loop. `boot()` had one and the Nuxt module generated a second into its
25
- * Nitro plugin, which had drifted: no ORM fallback, so an entity with no façade was
25
+ * Nitro plugin, which had drifted: no storage fallback, so an entity with no façade was
26
26
  * skipped there and planted here. Two answers to "how does a row get in at boot" is one
27
27
  * too many, and the second was the one running in the browser.
28
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/boot/seed.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAe,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE,CAyCjE;AAQD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS,EAAE,EAClB,MAAM,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAe,GAC3C,OAAO,CAAC,IAAI,CAAC,CA+Bf;AA0BD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAQrE"}
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/boot/seed.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAe,MAAM,wBAAwB,CAAC;AACtF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE,CAyCjE;AAQD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS,EAAE,EAClB,MAAM,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAe,GAC3C,OAAO,CAAC,IAAI,CAAC,CA+Bf;AA0BD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAQrE"}
package/dist/boot/seed.js CHANGED
@@ -56,7 +56,7 @@ export function orderSeeds(fronds) {
56
56
  * Plant a set of seeds, in the order given. Reports what it did, one line per entity.
57
57
  *
58
58
  * The one seeding loop. `boot()` had one and the Nuxt module generated a second into its
59
- * Nitro plugin, which had drifted: no ORM fallback, so an entity with no façade was
59
+ * Nitro plugin, which had drifted: no storage fallback, so an entity with no façade was
60
60
  * skipped there and planted here. Two answers to "how does a row get in at boot" is one
61
61
  * too many, and the second was the one running in the browser.
62
62
  */
@@ -66,7 +66,7 @@ export async function runSeeds(app, seeds, report = () => { }) {
66
66
  const data = typeof seed.data === 'function' ? await seed.data(resolve) : seed.data;
67
67
  const door = doorFor(app, seed.entityName);
68
68
  if (!door) {
69
- report(` ${seed.entityName}: no handler façade nor ORM — skipping seed`);
69
+ report(` ${seed.entityName}: no handler façade nor storage — skipping seed`);
70
70
  continue;
71
71
  }
72
72
  const existing = await door.list();
@@ -104,10 +104,10 @@ function doorFor(app, entityName) {
104
104
  write: (item) => handler.create({ params: {}, query: {}, body: item, state: {} }),
105
105
  };
106
106
  }
107
- const orm = app.ormFor(entityName);
108
- if (!orm)
107
+ const storage = app.storageFor(entityName);
108
+ if (!storage)
109
109
  return undefined;
110
- return { list: () => orm.list(), write: (item) => orm.create(item) };
110
+ return { list: () => storage.list(), write: (item) => storage.create(item) };
111
111
  }
112
112
  /**
113
113
  * The framework's own ascent for rows, named — so a host can REPLACE it rather than take
@@ -1 +1 @@
1
- {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/boot/seed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/boot/seed.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,8 @@
13
13
  * a refusal: the statement is still the author's word, and a boot that ran yesterday must
14
14
  * not stop running because a parameter moved. What it must not do is stay quiet.
15
15
  */
16
- import type { FrondDescriptor, HandlerEntry, ScanDiagnostic } from '../scan/frond.js';
16
+ import type { FrondDescriptor, HandlerEntry } from '../descriptor/frond.js';
17
+ import type { ScanDiagnostic } from '../scan/result.js';
17
18
  /**
18
19
  * What a frond's stated contracts no longer match.
19
20
  *
@@ -1 +1 @@
1
- {"version":3,"file":"statement-drift.d.ts","sourceRoot":"","sources":["../../src/boot/statement-drift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAWtF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,EAAE,CA2B9F"}
1
+ {"version":3,"file":"statement-drift.d.ts","sourceRoot":"","sources":["../../src/boot/statement-drift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWxD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,EAAE,CA2B9F"}
@@ -1 +1 @@
1
- {"version":3,"file":"statement-drift.js","sourceRoot":"","sources":["../../src/boot/statement-drift.ts"],"names":[],"mappings":"AAmBA,mFAAmF;AACnF,SAAS,gBAAgB,CAAC,MAAmB,EAAE,SAAuB;IACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAsB,EAAE,OAAqB;IAC1E,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,SAAS;QAEhC,qFAAqF;QACrF,oFAAoF;QACpF,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;QAC1D,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACvC,OAAO,EAAE,yBAAyB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;kBAC7E,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,qBAAqB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;kBACtH,0DAA0D;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"statement-drift.js","sourceRoot":"","sources":["../../src/boot/statement-drift.ts"],"names":[],"mappings":"AAoBA,mFAAmF;AACnF,SAAS,gBAAgB,CAAC,MAAmB,EAAE,SAAoB;IACjE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAsB,EAAE,OAAqB;IAC1E,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,SAAS;QAEhC,qFAAqF;QACrF,oFAAoF;QACpF,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;QAC1D,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACvC,OAAO,EAAE,yBAAyB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;kBAC7E,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,qBAAqB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;kBACtH,0DAA0D;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}