@fougere/core 0.5.0-alpha.1 → 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 (219) 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/prefab/collector.d.ts +2 -2
  99. package/dist/prefab/collector.js +2 -2
  100. package/dist/prefab/crud.d.ts +5 -5
  101. package/dist/prefab/crud.d.ts.map +1 -1
  102. package/dist/prefab/crud.js +12 -12
  103. package/dist/prefab/crud.js.map +1 -1
  104. package/dist/prefab/mirror.d.ts +5 -5
  105. package/dist/prefab/mirror.d.ts.map +1 -1
  106. package/dist/prefab/mirror.js +5 -5
  107. package/dist/prefab/mirror.js.map +1 -1
  108. package/dist/prefab/presenter.d.ts +2 -2
  109. package/dist/prefab/presenter.js +2 -2
  110. package/dist/prefab/repository.d.ts +14 -14
  111. package/dist/prefab/repository.d.ts.map +1 -1
  112. package/dist/prefab/repository.js +19 -19
  113. package/dist/prefab/repository.js.map +1 -1
  114. package/dist/rows.d.ts +40 -0
  115. package/dist/rows.d.ts.map +1 -0
  116. package/dist/rows.js +146 -0
  117. package/dist/rows.js.map +1 -0
  118. package/dist/scan/emit.d.ts +1 -1
  119. package/dist/scan/emit.d.ts.map +1 -1
  120. package/dist/scan/emit.js +1 -1
  121. package/dist/scan/emit.js.map +1 -1
  122. package/dist/scan/handler-parser.d.ts +11 -56
  123. package/dist/scan/handler-parser.d.ts.map +1 -1
  124. package/dist/scan/handler-parser.js +2 -2
  125. package/dist/scan/handler-parser.js.map +1 -1
  126. package/dist/scan/result.d.ts +41 -0
  127. package/dist/scan/result.d.ts.map +1 -0
  128. package/dist/scan/result.js +2 -0
  129. package/dist/scan/result.js.map +1 -0
  130. package/dist/scan/scanner.d.ts +1 -1
  131. package/dist/scan/scanner.d.ts.map +1 -1
  132. package/dist/scan/scanner.js +17 -17
  133. package/dist/scan/scanner.js.map +1 -1
  134. package/dist/scan/statement.d.ts +1 -1
  135. package/dist/scan/statement.d.ts.map +1 -1
  136. package/dist/scan/statement.js.map +1 -1
  137. package/dist/{orm.d.ts → storage.d.ts} +98 -16
  138. package/dist/storage.d.ts.map +1 -0
  139. package/dist/{orm.js → storage.js} +53 -5
  140. package/dist/storage.js.map +1 -0
  141. package/dist/verify.d.ts +1 -1
  142. package/dist/verify.d.ts.map +1 -1
  143. package/dist/verify.js +2 -2
  144. package/dist/verify.js.map +1 -1
  145. package/dist/{boot → wire}/binding.d.ts +2 -10
  146. package/dist/wire/binding.d.ts.map +1 -0
  147. package/dist/{boot → wire}/binding.js +0 -52
  148. package/dist/wire/binding.js.map +1 -0
  149. package/dist/wire/call.d.ts +2 -40
  150. package/dist/wire/call.d.ts.map +1 -1
  151. package/dist/wire/call.js +0 -125
  152. package/dist/wire/call.js.map +1 -1
  153. package/dist/wire/operation.d.ts +5 -31
  154. package/dist/wire/operation.d.ts.map +1 -1
  155. package/dist/wire/operation.js +0 -51
  156. package/dist/wire/operation.js.map +1 -1
  157. package/dist/wire/signature.d.ts +58 -0
  158. package/dist/wire/signature.d.ts.map +1 -0
  159. package/dist/wire/signature.js +2 -0
  160. package/dist/wire/signature.js.map +1 -0
  161. package/package.json +3 -3
  162. package/src/boot/Emissions.ts +2 -2
  163. package/src/boot/HandlerFacade.ts +3 -3
  164. package/src/boot/auth.ts +6 -6
  165. package/src/boot/boot.ts +3 -3
  166. package/src/boot/bootstrap.ts +50 -39
  167. package/src/boot/card.ts +113 -0
  168. package/src/boot/frame.ts +7 -7
  169. package/src/boot/hosted.ts +11 -14
  170. package/src/boot/ownership.ts +14 -15
  171. package/src/boot/ports.ts +2 -2
  172. package/src/boot/runner.ts +34 -0
  173. package/src/boot/seed.ts +6 -6
  174. package/src/boot/statement-drift.ts +5 -4
  175. package/src/boot/together.ts +24 -25
  176. package/src/boot/types.ts +12 -11
  177. package/src/contract/CallLog.ts +2 -2
  178. package/src/contract/RouteAddress.ts +3 -0
  179. package/src/{scan/declare.ts → declare.ts} +5 -5
  180. package/src/{scan → descriptor}/Fronds.ts +6 -7
  181. package/src/{scan → descriptor}/frond.ts +7 -48
  182. package/src/dispatch/ArgumentResolver.ts +53 -7
  183. package/src/dispatch/DispatchEvent.ts +1 -1
  184. package/src/dispatch/PresenterArgumentResolver.ts +2 -2
  185. package/src/dispatch/Route.ts +1 -3
  186. package/src/dispatch/StorageGuard.ts +7 -7
  187. package/src/effective-operation.ts +63 -11
  188. package/src/emit.ts +1 -1
  189. package/src/frond-config.ts +2 -2
  190. package/src/graph.ts +1 -1
  191. package/src/imports.ts +1 -1
  192. package/src/index.ts +15 -13
  193. package/src/prefab/collector.ts +2 -2
  194. package/src/prefab/crud.ts +18 -18
  195. package/src/prefab/mirror.ts +8 -8
  196. package/src/prefab/presenter.ts +2 -2
  197. package/src/prefab/repository.ts +32 -32
  198. package/src/rows.ts +155 -0
  199. package/src/scan/emit.ts +3 -5
  200. package/src/scan/handler-parser.ts +14 -67
  201. package/src/scan/result.ts +42 -0
  202. package/src/scan/scanner.ts +22 -21
  203. package/src/scan/statement.ts +2 -1
  204. package/src/{orm.ts → storage.ts} +126 -17
  205. package/src/verify.ts +3 -3
  206. package/src/{boot → wire}/binding.ts +2 -66
  207. package/src/wire/call.ts +1 -129
  208. package/src/wire/operation.ts +5 -62
  209. package/src/wire/signature.ts +59 -0
  210. package/dist/boot/binding.d.ts.map +0 -1
  211. package/dist/boot/binding.js.map +0 -1
  212. package/dist/orm.d.ts.map +0 -1
  213. package/dist/orm.js.map +0 -1
  214. package/dist/scan/Fronds.d.ts.map +0 -1
  215. package/dist/scan/Fronds.js.map +0 -1
  216. package/dist/scan/declare.d.ts.map +0 -1
  217. package/dist/scan/declare.js.map +0 -1
  218. package/dist/scan/frond.d.ts.map +0 -1
  219. /package/dist/{scan → descriptor}/frond.js +0 -0
@@ -1,8 +1,8 @@
1
1
  import { type SchemaView } from '@fougere/schema';
2
2
  import type { Container } from '@fougere/container';
3
- import { type OrmFactory } from '../orm.js';
3
+ import { type StorageFactory } from '../storage.js';
4
4
  import type { Logger } from '../builtins/logger.js';
5
- import type { ProviderEntry } from '../scan/frond.js';
5
+ import type { ProviderEntry } from '../descriptor/frond.js';
6
6
  /** Everything the boot knows that a frame needs, gathered once for every frond. */
7
7
  export interface FrameWorld {
8
8
  /** Every entity of every frond, by registration key. A frame crosses fronds by design. */
@@ -10,9 +10,9 @@ export interface FrameWorld {
10
10
  /** Which frond holds an entity — the question `remotes:` turns into a refusal. */
11
11
  frondOf: Map<string, string>;
12
12
  hostedHere: (frond: string) => boolean;
13
- ormFactory?: OrmFactory;
13
+ storageFactory?: StorageFactory;
14
14
  sourceOf?: (entityName: string) => string;
15
- transacted?: <R>(source: string, fn: (ormFactory: OrmFactory) => Promise<R>) => Promise<R>;
15
+ transacted?: <R>(source: string, fn: (storageFactory: StorageFactory) => Promise<R>) => Promise<R>;
16
16
  log: Logger;
17
17
  }
18
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"together.d.ts","sourceRoot":"","sources":["../../src/boot/together.ts"],"names":[],"mappings":"AAUA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAkD,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,0FAA0F;IAC1F,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC,kFAAkF;IAClF,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3F,GAAG,EAAE,MAAM,CAAC;CACb;AAqHD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EACtB,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,KAAK,EAAE,UAAU,GAChB,IAAI,CAwDN"}
1
+ {"version":3,"file":"together.d.ts","sourceRoot":"","sources":["../../src/boot/together.ts"],"names":[],"mappings":"AAUA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAwE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1H,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,0FAA0F;IAC1F,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC,kFAAkF;IAClF,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACnG,GAAG,EAAE,MAAM,CAAC;CACb;AAoHD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EACtB,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,KAAK,EAAE,UAAU,GAChB,IAAI,CAwDN"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { ambient } from '#ambient';
11
11
  import { upperFirst, lowerFirst } from '@fougere/schema';
12
- import { membersOfTogetherKey, ormKeyOf } from '../orm.js';
12
+ import { membersOfTogetherKey, storageKeyOf, entityOfStorageKey } from '../storage.js';
13
13
  import { StorageGuard } from '../dispatch/StorageGuard.js';
14
14
  import { recording, unwind } from './frame.js';
15
15
  /**
@@ -44,7 +44,7 @@ function resolve(names, declared, world) {
44
44
  /**
45
45
  * A member that cannot write here at all — its frond is hosted elsewhere.
46
46
  *
47
- * Refused rather than compensated: a compensated frame still writes through a local ORM,
47
+ * Refused rather than compensated: a compensated frame still writes through a local storage,
48
48
  * and a remote frond registers none. There is nothing to record and nothing to undo.
49
49
  */
50
50
  function refuseRemote(members, world, key) {
@@ -63,14 +63,12 @@ function refuseRemote(members, world, key) {
63
63
  * The frame does not widen itself to cover it: doing so would pull an entity from another
64
64
  * source into the group without anyone writing it down. Named instead, with the one-word fix.
65
65
  */
66
- function refuseUncoveredWrites(members, key) {
66
+ function refuseUncoveredWrites(members, key, world) {
67
67
  const covered = new Set(members.entities.map((member) => member.name));
68
68
  for (const provider of members.providers) {
69
69
  for (const dep of provider.deps) {
70
- if (!dep.endsWith('Orm'))
71
- continue;
72
- const entity = lowerFirst(dep.slice(0, -'Orm'.length));
73
- if (covered.has(entity))
70
+ const entity = entityOfStorageKey(dep, (name) => world.entityByName.has(name));
71
+ if (!entity || covered.has(entity))
74
72
  continue;
75
73
  throw new Error(`Together<[…]> (${key}): ${provider.ctor.name} writes ${entity}, which is not in the ` +
76
74
  `frame's entity list — its writes would escape the unwind. Add it: ` +
@@ -81,24 +79,24 @@ function refuseUncoveredWrites(members, key) {
81
79
  /**
82
80
  * Open the block: build every member over `factory`, in a scope of their own.
83
81
  *
84
- * The scope is what makes a provider member work without a locator — its ORM keys are
82
+ * The scope is what makes a provider member work without a locator — its storage keys are
85
83
  * registered here, so the container hands it the framed ones through the ordinary
86
84
  * constructor. It is disposed when the block ends, whichever way it ended.
87
85
  */
88
86
  async function inScope(parent, members, factory, wrap, fn) {
89
87
  const scope = parent.createScope();
90
88
  try {
91
- const orms = members.entities.map((member) => {
92
- const orm = wrap(factory(member.schema, member.name), member.name, member.schema);
93
- scope.registerValue(ormKeyOf(member.name), orm);
94
- return orm;
89
+ const storages = members.entities.map((member) => {
90
+ const storage = wrap(factory(member.schema, member.name), member.name, member.schema);
91
+ scope.registerValue(storageKeyOf(member.name), storage);
92
+ return storage;
95
93
  });
96
- // Providers after every ORM is in place: one may depend on another member's.
94
+ // Providers after every storage is in place: one may depend on another member's.
97
95
  const built = members.providers.map((provider) => {
98
96
  scope.register(provider.ctor.name, provider.ctor, { deps: provider.deps });
99
97
  return scope.resolve(provider.ctor.name);
100
98
  });
101
- return await fn(orms, built);
99
+ return await fn(storages, built);
102
100
  }
103
101
  finally {
104
102
  await scope.dispose();
@@ -118,14 +116,14 @@ export function registerFrames(scope, keys, providers, world) {
118
116
  if (!names)
119
117
  continue;
120
118
  registered += 1;
121
- if (!world.ormFactory) {
119
+ if (!world.storageFactory) {
122
120
  throw new Error(`Together<[${names.entities.join(', ')}]> needs storage, and this boot declares none.`);
123
121
  }
124
122
  const members = resolve(names, providers, world);
125
123
  refuseRemote(members, world, key);
126
- refuseUncoveredWrites(members, key);
124
+ refuseUncoveredWrites(members, key, world);
127
125
  const sources = new Set(members.entities.map((member) => world.sourceOf?.(member.name) ?? 'db'));
128
- const judge = (orm, name, schema) => new StorageGuard(schema.getFields(), name).guard(orm);
126
+ const judge = (storage, name, schema) => new StorageGuard(schema.getFields(), name).guard(storage);
129
127
  // One engine and a way into it: the engine gives the unwind AND the isolation.
130
128
  if (world.transacted && sources.size === 1) {
131
129
  const source = [...sources][0];
@@ -145,9 +143,9 @@ export function registerFrames(scope, keys, providers, world) {
145
143
  scope.registerValue(key, {
146
144
  run: (fn) => ambient.enterFrame(key, async () => {
147
145
  const journal = [];
148
- const record = (orm, name, schema) => judge(recording(orm, name, schema.getFields(), journal), name, schema);
146
+ const record = (storage, name, schema) => judge(recording(storage, name, schema.getFields(), journal), name, schema);
149
147
  try {
150
- return await inScope(scope, members, world.ormFactory, record, fn);
148
+ return await inScope(scope, members, world.storageFactory, record, fn);
151
149
  }
152
150
  catch (cause) {
153
151
  return unwind(journal, cause, world.log);
@@ -1 +1 @@
1
- {"version":3,"file":"together.js","sourceRoot":"","sources":["../../src/boot/together.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"together.js","sourceRoot":"","sources":["../../src/boot/together.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,11 @@
6
6
  * landed in it, seventeen notions deep.
7
7
  */
8
8
  import type { Container } from '@fougere/container';
9
- import type { Fronds } from '../scan/Fronds.js';
10
- import type { FrondDescriptor, ScanResult } from '../scan/frond.js';
9
+ import type { Fronds } from '../descriptor/Fronds.js';
10
+ import type { FrondDescriptor } from '../descriptor/frond.js';
11
+ import type { ScanResult } from '../scan/result.js';
11
12
  import type { SchemaView } from '@fougere/schema';
12
- import type { OrmFactory } from '../orm.js';
13
+ import type { StorageFactory } from '../storage.js';
13
14
  import type { AppMiddleware } from '../wire/middleware.js';
14
15
  import type { RpcAnswer, Transport } from '../wire/call.js';
15
16
  import type { Extension } from './AppLifecycle.js';
@@ -21,23 +22,23 @@ import type { DispatchPort } from '../dispatch/DispatchPort.js';
21
22
  export interface CreateAppOptions {
22
23
  /** Factory function to create the container. Required. */
23
24
  createContainer: () => Container;
24
- /** Factory to auto-generate EntityOrm for each scanned entity. */
25
- ormFactory?: OrmFactory;
25
+ /** Factory to auto-generate Storage for each scanned entity. */
26
+ storageFactory?: StorageFactory;
26
27
  /**
27
28
  * Which source an entity's rows live in, and how to open a transaction on one — the two
28
29
  * questions that decide whether `Together<[…]>` gets the engine's own unwind or replays
29
30
  * inverses itself.
30
31
  *
31
- * Optional together, because a host may hand in a bare `ormFactory` and know neither. A
32
+ * Optional together, because a host may hand in a bare `storageFactory` and know neither. A
32
33
  * frame then compensates: not knowing where the rows are and promising atomicity over
33
34
  * them are two different things, and only one of them is honest.
34
35
  */
35
36
  sourceOf?: (entityName: string) => string;
36
- transacted?: <R>(source: string, fn: (ormFactory: OrmFactory) => Promise<R>) => Promise<R>;
37
+ transacted?: <R>(source: string, fn: (storageFactory: StorageFactory) => Promise<R>) => Promise<R>;
37
38
  /**
38
39
  * Builds the cross-source reader a frond gets when it declares `reads:`.
39
40
  *
40
- * A factory rather than a value, for the same reason `ormFactory` is one: core must
41
+ * A factory rather than a value, for the same reason `storageFactory` is one: core must
41
42
  * not name a storage package, and this one costs 71 MB of downloaded extensions and a
42
43
  * native module — nothing a first run that only wanted sqlite should carry. The host
43
44
  * decides what backs it; `@fougere/adapter-duckdb` is one answer, not the contract.
@@ -217,14 +218,14 @@ export interface App extends DispatchPort {
217
218
  * the dual of {@link facadeFor}. `undefined` when no loaded frond hosts the entity,
218
219
  * or when the app booted with no storage at all.
219
220
  *
220
- * `unknown` because the port belongs to whoever wired it: narrowing it to `EntityOrm`
221
+ * `unknown` because the port belongs to whoever wired it: narrowing it to `Storage`
221
222
  * is the caller saying which implementation they are standing on.
222
223
  */
223
- ormFor(entity: string): unknown | undefined;
224
+ storageFor(entity: string): unknown | undefined;
224
225
  /**
225
226
  * The presenter of an entity, resolved through its owning frond's scope.
226
227
  *
227
- * Same shape as {@link ormFor}, and it exists so an adapter never spells the container
228
+ * Same shape as {@link storageFor}, and it exists so an adapter never spells the container
228
229
  * key itself: `schema-graphql` wrote out `${Name}Presenter` by hand, and a key respelled
229
230
  * in a second place finds nothing and reports nothing the day the convention moves.
230
231
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/boot/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/boot/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { DispatchEvent } from '../dispatch/DispatchEvent.js';
1
+ import type { RouteKind } from './RouteAddress.js';
2
2
  /**
3
3
  * What crosses the door: the address, the route it took, and the verdict.
4
4
  *
@@ -17,7 +17,7 @@ export interface CallRecord {
17
17
  operation: string;
18
18
  surface?: string;
19
19
  /** Known at `resolved`, so absent on a call that never found a route. */
20
- route?: NonNullable<DispatchEvent['routeKind']>;
20
+ route?: RouteKind;
21
21
  /**
22
22
  * The traceparent the invocation carried, when one did.
23
23
  *
@@ -1 +1 @@
1
- {"version":3,"file":"CallLog.d.ts","sourceRoot":"","sources":["../../src/contract/CallLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,KAAK,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IAChD;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC;IACrC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"CallLog.d.ts","sourceRoot":"","sources":["../../src/contract/CallLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC;IACrC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -1,3 +1,5 @@
1
+ /** Which kind of destination served a call — it travels in a `CallRecord`. */
2
+ export type RouteKind = 'local' | 'remote' | 'system';
1
3
  export interface RouteAddressInput {
2
4
  entity: string;
3
5
  operation: string;
@@ -1 +1 @@
1
- {"version":3,"file":"RouteAddress.d.ts","sourceRoot":"","sources":["../../src/contract/RouteAddress.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD,oDAAoD;AACpD,qBAAa,YAAY;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEd,KAAK,EAAE,iBAAiB;IAOpC,GAAG,IAAI,MAAM;IAIb,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAIpC,QAAQ,IAAI,MAAM;IAKlB,MAAM,IAAI,iBAAiB;CAO5B"}
1
+ {"version":3,"file":"RouteAddress.d.ts","sourceRoot":"","sources":["../../src/contract/RouteAddress.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD,oDAAoD;AACpD,qBAAa,YAAY;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEd,KAAK,EAAE,iBAAiB;IAOpC,GAAG,IAAI,MAAM;IAIb,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAIpC,QAAQ,IAAI,MAAM;IAKlB,MAAM,IAAI,iBAAiB;CAO5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"RouteAddress.js","sourceRoot":"","sources":["../../src/contract/RouteAddress.ts"],"names":[],"mappings":"AAMA,SAAS,QAAQ,CAAC,KAAa,EAAE,IAAY;IAC3C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAyB,EAAE,IAAY;IACvD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,oDAAoD;AACpD,MAAM,OAAO,YAAY;IACd,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,OAAO,CAAU;IAE1B,YAAY,KAAwB;QAClC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,KAAmB;QACxB,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;IACpC,CAAC;IAED,QAAQ;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IACvD,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"RouteAddress.js","sourceRoot":"","sources":["../../src/contract/RouteAddress.ts"],"names":[],"mappings":"AASA,SAAS,QAAQ,CAAC,KAAa,EAAE,IAAY;IAC3C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAyB,EAAE,IAAY;IACvD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,oDAAoD;AACpD,MAAM,OAAO,YAAY;IACd,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,OAAO,CAAU;IAE1B,YAAY,KAAwB;QAClC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,KAAmB;QACxB,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;IACpC,CAAC;IAED,QAAQ;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IACvD,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC;IACJ,CAAC;CACF"}
@@ -16,7 +16,7 @@
16
16
  * anything, and they cost `frond.config.ts` — where what is not derivable is stated.
17
17
  */
18
18
  import { type SchemaView } from '@fougere/schema';
19
- import type { FrondDescriptor, SeedEntry } from './frond.js';
19
+ import type { FrondDescriptor, SeedEntry } from './descriptor/frond.js';
20
20
  /** A class, as a declaration hands it over: the constructor itself. */
21
21
  type Ctor = new (...args: never[]) => unknown;
22
22
  /**
@@ -24,7 +24,7 @@ type Ctor = new (...args: never[]) => unknown;
24
24
  *
25
25
  * `deps` is the one thing no runtime can recover: TypeScript erases the parameter types,
26
26
  * and `registerFrames` reads them to know which frames to build — asking for one IS
27
- * declaring it. A handler that takes only its own entity's ORM needs nothing here.
27
+ * declaring it. A handler that takes only its own entity's storage needs nothing here.
28
28
  */
29
29
  export interface DeclaredSubject {
30
30
  ctor: Ctor;
@@ -62,7 +62,7 @@ export interface FrondDeclaration {
62
62
  *
63
63
  * ```ts
64
64
  * createApp({
65
- * scan: { fronds: Fronds.scanned([frond('blog', { entities: [Post], handlers: [PostHandler] })]), diagnostics: [] },
65
+ * scan: { fronds: Fronds.hosting([frond('blog', { entities: [Post], handlers: [PostHandler] })]), diagnostics: [] },
66
66
  * })
67
67
  * ```
68
68
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declare.d.ts","sourceRoot":"","sources":["../src/declare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EACmB,eAAe,EACb,SAAS,EACzC,MAAM,uBAAuB,CAAC;AAI/B,uEAAuE;AACvE,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,+EAA+E;AAC/E,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4DAA4D;AAC5D,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,eAAe,CAAC;AA8B9C,8FAA8F;AAC9F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC;IACtC,UAAU,CAAC,EAAE,CAAC,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC;IACxC,UAAU,CAAC,EAAE,CAAC,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC;IACxC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;KAAE,EAAE,CAAC;IAC1D,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAqB,GAAG,eAAe,CAmFpF"}
@@ -16,8 +16,8 @@
16
16
  * anything, and they cost `frond.config.ts` — where what is not derivable is stated.
17
17
  */
18
18
  import { lowerFirst } from '@fougere/schema';
19
- import { DEFAULT_CONVENTIONS } from './conventions.js';
20
- import { getPresenterFields } from '../prefab/presenter.js';
19
+ import { DEFAULT_CONVENTIONS } from './scan/conventions.js';
20
+ import { getPresenterFields } from './prefab/presenter.js';
21
21
  const ctorOf = (d) => (typeof d === 'function' ? d : d.ctor);
22
22
  /**
23
23
  * What a prefab was BUILT ON — `Presenter(Post)` and `Collector(User)` both keep it under
@@ -44,7 +44,7 @@ function addressOf(className) {
44
44
  *
45
45
  * ```ts
46
46
  * createApp({
47
- * scan: { fronds: Fronds.scanned([frond('blog', { entities: [Post], handlers: [PostHandler] })]), diagnostics: [] },
47
+ * scan: { fronds: Fronds.hosting([frond('blog', { entities: [Post], handlers: [PostHandler] })]), diagnostics: [] },
48
48
  * })
49
49
  * ```
50
50
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declare.js","sourceRoot":"","sources":["../src/declare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAC;AAK9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA8B3D,MAAM,MAAM,GAAG,CAAC,CAAW,EAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAAU,EAAE,IAAY;IACzC,MAAM,OAAO,GAAI,IAAmD,CAAC,QAAQ,CAAC;IAC9E,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,IAAI,qBAAqB,IAAI,wBAAwB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,IAAI;cAC7H,qCAAqC,CACxC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,CAAW,EAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAExF,2FAA2F;AAC3F,SAAS,SAAS,CAAC,SAAiB;IAClC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAgBD;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,WAA6B,EAAE;IACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,mBAAmB,CAAC,KAAK,CAAC;IAE1D,MAAM,QAAQ,GAAkB,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAI,EAAE,UAAU,CAAE,WAAgC,CAAC,IAAI,CAAC;QACxD,WAAW;QACX,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,IAAI;KACd,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAmB,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAChE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO;YACP,IAAI;YACJ,mFAAmF;YACnF,yDAAyD;YACzD,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,IAAI,GAAG,EAAE;YACrB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACf,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,IAAI;YACb,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,yFAAyF;IACzF,2FAA2F;IAC3F,0FAA0F;IAC1F,+DAA+D;IAC/D,MAAM,UAAU,GAAqB,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAExC,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC;YACzD,IAAI;YACJ,MAAM;YACN,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACf,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,wFAAwF;IACxF,MAAM,UAAU,GAAqB,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEvB,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI;YAC3C,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACf,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAoB,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACf,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACf,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC,CAAC;IAEJ,MAAM,KAAK,GAAgB,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE;QACjD,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,UAAU;QACV,KAAK;QACL,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC;AACJ,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import type { SchemaView } from '@fougere/schema';
2
2
  import type { EntityEntry, FrondDescriptor } from './frond.js';
3
3
  /**
4
- * What this app hosts — the scan's answer, with the questions everyone was asking it
5
- * by hand.
4
+ * What this app hosts, with the questions everyone was asking it by hand.
6
5
  *
7
6
  * The list was a bare array, so every reader re-walked it: "which frond owns this
8
7
  * entity" was spelled four times, "every entity by name" three times as three literal
@@ -16,21 +15,21 @@ import type { EntityEntry, FrondDescriptor } from './frond.js';
16
15
  */
17
16
  export declare class Fronds extends Array<FrondDescriptor> {
18
17
  static get [Symbol.species](): ArrayConstructor;
19
- /** What one scan run found. The only gate in — `Array.of` is taken, and named. */
20
- static scanned(fronds: readonly FrondDescriptor[]): Fronds;
18
+ /** The fronds an app hosts, scanned or stated. The only gate in — `Array.of` is taken. */
19
+ static hosting(fronds: readonly FrondDescriptor[]): Fronds;
21
20
  /** The frond that hosts an entity — `undefined` when no loaded frond does. */
22
21
  owner(entity: string): FrondDescriptor | undefined;
23
- /** The entity of that name, wherever it was scanned. */
22
+ /** The entity of that name, wherever it was declared. */
24
23
  entity(name: string): EntityEntry | undefined;
25
24
  /**
26
- * Every scanned entity class, by name — across all fronds and never per-frond.
25
+ * Every entity class, by name — across all fronds and never per-frond.
27
26
  *
28
27
  * A fact is announced in one frond and heard in another, so the subscriber's own
29
28
  * frond does not hold the shape it must judge; a `reads:` clause names entities
30
29
  * that belong to neighbours by definition.
31
30
  */
32
31
  schemas(): Map<string, SchemaView>;
33
- /** Every scanned entity, sorted. What was FOUND, not what answers. */
32
+ /** Every declared entity, sorted. What is DECLARED, not what answers. */
34
33
  entityNames(): string[];
35
34
  /**
36
35
  * The names a call may address, sorted — what a NOT_FOUND must print.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fronds.d.ts","sourceRoot":"","sources":["../../src/descriptor/Fronds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;;;;;;;GAYG;AACH,qBAAa,MAAO,SAAQ,KAAK,CAAC,eAAe,CAAC;IAChD,WAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAEvD;IAED,0FAA0F;IAC1F,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM;IAM1D,8EAA8E;IAC9E,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIlD,yDAAyD;IACzD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAQ7C;;;;;;OAMG;IACH,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAIlC,yEAAyE;IACzE,WAAW,IAAI,MAAM,EAAE;IAIvB;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;CAKxC"}
@@ -1,6 +1,5 @@
1
1
  /**
2
- * What this app hosts — the scan's answer, with the questions everyone was asking it
3
- * by hand.
2
+ * What this app hosts, with the questions everyone was asking it by hand.
4
3
  *
5
4
  * The list was a bare array, so every reader re-walked it: "which frond owns this
6
5
  * entity" was spelled four times, "every entity by name" three times as three literal
@@ -16,8 +15,8 @@ export class Fronds extends Array {
16
15
  static get [Symbol.species]() {
17
16
  return Array;
18
17
  }
19
- /** What one scan run found. The only gate in — `Array.of` is taken, and named. */
20
- static scanned(fronds) {
18
+ /** The fronds an app hosts, scanned or stated. The only gate in — `Array.of` is taken. */
19
+ static hosting(fronds) {
21
20
  const held = new Fronds();
22
21
  held.push(...fronds);
23
22
  return held;
@@ -26,7 +25,7 @@ export class Fronds extends Array {
26
25
  owner(entity) {
27
26
  return this.find((frond) => frond.entities.some((e) => e.name === entity));
28
27
  }
29
- /** The entity of that name, wherever it was scanned. */
28
+ /** The entity of that name, wherever it was declared. */
30
29
  entity(name) {
31
30
  for (const frond of this) {
32
31
  const found = frond.entities.find((e) => e.name === name);
@@ -36,7 +35,7 @@ export class Fronds extends Array {
36
35
  return undefined;
37
36
  }
38
37
  /**
39
- * Every scanned entity class, by name — across all fronds and never per-frond.
38
+ * Every entity class, by name — across all fronds and never per-frond.
40
39
  *
41
40
  * A fact is announced in one frond and heard in another, so the subscriber's own
42
41
  * frond does not hold the shape it must judge; a `reads:` clause names entities
@@ -45,7 +44,7 @@ export class Fronds extends Array {
45
44
  schemas() {
46
45
  return new Map(this.flatMap((frond) => frond.entities.map((e) => [e.name, e.entityClass])));
47
46
  }
48
- /** Every scanned entity, sorted. What was FOUND, not what answers. */
47
+ /** Every declared entity, sorted. What is DECLARED, not what answers. */
49
48
  entityNames() {
50
49
  return this.flatMap((frond) => frond.entities.map((e) => e.name)).sort();
51
50
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fronds.js","sourceRoot":"","sources":["../../src/descriptor/Fronds.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,MAAO,SAAQ,KAAsB;IAChD,MAAM,KAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0FAA0F;IAC1F,MAAM,CAAC,OAAO,CAAC,MAAkC;QAC/C,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,MAAc;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,yDAAyD;IACzD,MAAM,CAAC,IAAY;QACjB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC1D,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,OAAO;QACL,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAU,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,yEAAyE;IACzE,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,OAAgB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ;aAC1C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,OAAO,CAAC;aAC/D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;CACF"}
@@ -1,14 +1,13 @@
1
1
  /**
2
- * A frond as the SCAN found it — one interface per convention directory, plus what the
3
- * run could not read.
2
+ * What a frond is made of — one interface per convention directory.
4
3
  *
5
- * The declared side is `frond-config.ts`; this is the described one. They meet at
6
- * `FrondDescriptor.operationsOverrides`, where a declaration reaches the façade.
4
+ * Produced two ways and indistinguishable once here: the scan DERIVES it from a
5
+ * directory tree, `frond()` STATES it outright. `frond-config.ts` is the declared
6
+ * side; they meet at `FrondDescriptor.operationsOverrides`.
7
7
  */
8
8
  import type { SchemaView } from '@fougere/schema';
9
- import type { ParsedParam, OperationContract, OperationsMap } from '../wire/operation.js';
9
+ import type { Param, OperationContract, OperationsMap } from '../wire/operation.js';
10
10
  import type { PresenterViews } from '../prefab/presenter.js';
11
- import type { Fronds } from './Fronds.js';
12
11
  /**
13
12
  * A discovered provider — a class under `services/` or `repositories/`, injected by type.
14
13
  *
@@ -71,7 +70,7 @@ export interface HandlerEntry {
71
70
  filePath: string;
72
71
  /** Whether this handler is part of the frond's public contract. */
73
72
  exposed?: boolean;
74
- /** Output schema override — when Crud(Entity, Output), restricts ORM output. */
73
+ /** Output schema override — when Crud(Entity, Output), restricts storage output. */
75
74
  outputOverride?: SchemaView;
76
75
  /** Surface name — subdirectory in handlers/ (e.g. 'admin', 'public'). */
77
76
  surface?: string;
@@ -100,7 +99,7 @@ export interface PresenterFieldMeta {
100
99
  * A computed field that declares `user?: User` is then fed by the collector
101
100
  * that resolves one. A presenter is not a second mechanism.
102
101
  */
103
- params?: ParsedParam[];
102
+ params?: Param[];
104
103
  }
105
104
  /** A discovered presenter (computed fields for an entity's output). */
106
105
  export interface PresenterEntry {
@@ -182,43 +181,4 @@ export interface FrondDescriptor {
182
181
  method?: string;
183
182
  }>;
184
183
  }
185
- /** Result of scanning a project directory. */
186
- /**
187
- * Something the scan could NOT do — recorded instead of swallowed.
188
- *
189
- * The scan answers with what it found. Until now it answered the same way whether
190
- * a directory held nothing or could not be read, and whether a handler declared no
191
- * operation or failed to parse: `catch → empty`. So every downstream reader — the
192
- * façade, the identity card, anything asking "what does this app serve?" — could
193
- * not tell **"there is nothing"** from **"I could not look"**.
194
- *
195
- * That distinction is what makes a rule about an ABSENCE sound. Without it, a check
196
- * derived from the scan reports "nothing wrong" precisely when it read nothing.
197
- */
198
- export interface ScanDiagnostic {
199
- /**
200
- * `blocking` — the app now serves less than its source declares, and no caller
201
- * can know it: a handler that failed to parse contributes zero operations.
202
- * `warning` — something may be missing and the scan cannot decide, e.g. a base
203
- * class it is not allowed to resolve. Statable in `frond.config.ts`.
204
- */
205
- severity: 'blocking' | 'warning';
206
- /** Stable rule name — `handler-parse-failed`, `directory-unreadable`. */
207
- code: string;
208
- /** Absolute path of what could not be read. */
209
- filePath: string;
210
- /** The frond it belongs to, when the scan got far enough to know. */
211
- frond?: string;
212
- /** The declaration the diagnostic is about — e.g. `PostHandler.publish`. */
213
- subject?: string;
214
- /** What could not be done, and what it costs. One sentence, for a human. */
215
- message: string;
216
- /** The underlying failure, kept whole. */
217
- cause?: unknown;
218
- }
219
- export interface ScanResult {
220
- fronds: Fronds;
221
- /** What the scan could not do. Empty is a claim, not a default — see {@link ScanDiagnostic}. */
222
- diagnostics: ScanDiagnostic[];
223
- }
224
184
  //# sourceMappingURL=frond.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frond.d.ts","sourceRoot":"","sources":["../../src/descriptor/frond.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"frond.js","sourceRoot":"","sources":["../../src/scan/frond.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"frond.js","sourceRoot":"","sources":["../../src/descriptor/frond.ts"],"names":[],"mappings":""}
@@ -1,10 +1,13 @@
1
- import { type BindingPlan, type CollectorResolver } from '../boot/binding.js';
2
1
  import type { InvocationContext } from '../contract/Invocation.js';
2
+ import type { BindingPlan } from '../wire/binding.js';
3
+ export interface CollectorResolver {
4
+ collect(ctx: InvocationContext): Promise<unknown>;
5
+ }
3
6
  export type CollectorLookup = (typeName: string) => CollectorResolver | undefined;
4
7
  /** Resolves an operation's declared binding plan against one invocation. */
5
8
  export declare class ArgumentResolver {
6
9
  private readonly collectors?;
7
10
  constructor(collectors?: CollectorLookup | undefined);
8
- resolve(plan: BindingPlan, invocation: InvocationContext): Promise<unknown[]>;
11
+ resolve(plan: BindingPlan, ctx: InvocationContext): Promise<unknown[]>;
9
12
  }
10
13
  //# sourceMappingURL=ArgumentResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArgumentResolver.d.ts","sourceRoot":"","sources":["../../src/dispatch/ArgumentResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAElF,4EAA4E;AAC5E,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAX,UAAU,CAAC,EAAE,eAAe,YAAA;IAEzD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAG9E"}
1
+ {"version":3,"file":"ArgumentResolver.d.ts","sourceRoot":"","sources":["../../src/dispatch/ArgumentResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAElF,4EAA4E;AAC5E,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAX,UAAU,CAAC,EAAE,eAAe,YAAA;IAEnD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAiD7E"}