@aotter/mantle-runtime 0.1.0-alpha.8 → 0.1.2-alpha.1

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 (108) hide show
  1. package/README.md +74 -4
  2. package/dist/MantleRuntime.js +12 -4
  3. package/dist/MantleRuntime.js.map +1 -1
  4. package/dist/domain/model/EntryRow.d.ts +10 -1
  5. package/dist/domain/model/EntryRow.d.ts.map +1 -1
  6. package/dist/domain/model/EntryRow.js +19 -0
  7. package/dist/domain/model/EntryRow.js.map +1 -1
  8. package/dist/domain/port/EntryReader.d.ts +34 -0
  9. package/dist/domain/port/EntryReader.d.ts.map +1 -1
  10. package/dist/domain/port/EntryRepository.d.ts +5 -0
  11. package/dist/domain/port/EntryRepository.d.ts.map +1 -1
  12. package/dist/domain/port/index.d.ts +1 -1
  13. package/dist/domain/port/index.d.ts.map +1 -1
  14. package/dist/domain/port/index.js.map +1 -1
  15. package/dist/domain/service/CallableCapabilityProjector.d.ts +28 -0
  16. package/dist/domain/service/CallableCapabilityProjector.d.ts.map +1 -0
  17. package/dist/domain/service/CallableCapabilityProjector.js +67 -0
  18. package/dist/domain/service/CallableCapabilityProjector.js.map +1 -0
  19. package/dist/domain/service/EntryMutationDiagnostics.d.ts.map +1 -1
  20. package/dist/domain/service/EntryMutationDiagnostics.js +11 -1
  21. package/dist/domain/service/EntryMutationDiagnostics.js.map +1 -1
  22. package/dist/domain/service/PathMatcher.d.ts +7 -0
  23. package/dist/domain/service/PathMatcher.d.ts.map +1 -1
  24. package/dist/domain/service/PathMatcher.js +56 -0
  25. package/dist/domain/service/PathMatcher.js.map +1 -1
  26. package/dist/domain/service/RuntimePlanCompiler.d.ts +7 -2
  27. package/dist/domain/service/RuntimePlanCompiler.d.ts.map +1 -1
  28. package/dist/domain/service/RuntimePlanCompiler.js +1 -0
  29. package/dist/domain/service/RuntimePlanCompiler.js.map +1 -1
  30. package/dist/domain/service/index.d.ts +1 -0
  31. package/dist/domain/service/index.d.ts.map +1 -1
  32. package/dist/domain/service/index.js +1 -0
  33. package/dist/domain/service/index.js.map +1 -1
  34. package/dist/domain/service/io/JoinedEntryReader.d.ts.map +1 -1
  35. package/dist/domain/service/io/JoinedEntryReader.js +2 -3
  36. package/dist/domain/service/io/JoinedEntryReader.js.map +1 -1
  37. package/dist/index.d.ts +8 -2
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +7 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/infrastructure/boot/canonicalMigrations.d.ts +4 -2
  42. package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
  43. package/dist/infrastructure/boot/canonicalMigrations.js +9 -2
  44. package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
  45. package/dist/infrastructure/http/createMantleRequestHandler.d.ts +3 -0
  46. package/dist/infrastructure/http/createMantleRequestHandler.d.ts.map +1 -1
  47. package/dist/infrastructure/http/createMantleRequestHandler.js +36 -15
  48. package/dist/infrastructure/http/createMantleRequestHandler.js.map +1 -1
  49. package/dist/infrastructure/http/readJsonBody.d.ts +8 -0
  50. package/dist/infrastructure/http/readJsonBody.d.ts.map +1 -0
  51. package/dist/infrastructure/http/readJsonBody.js +36 -0
  52. package/dist/infrastructure/http/readJsonBody.js.map +1 -0
  53. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +22 -17
  54. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
  55. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +74 -69
  56. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
  57. package/dist/infrastructure/mcp/McpToolCatalog.d.ts +11 -9
  58. package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -1
  59. package/dist/infrastructure/mcp/McpToolCatalog.js +62 -72
  60. package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -1
  61. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +3 -1
  62. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
  63. package/dist/infrastructure/persistence/DatabaseEntryRepository.js +141 -20
  64. package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
  65. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts +2 -0
  66. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -1
  67. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +5 -1
  68. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -1
  69. package/dist/infrastructure/persistence/Pagination.d.ts +6 -0
  70. package/dist/infrastructure/persistence/Pagination.d.ts.map +1 -1
  71. package/dist/infrastructure/persistence/Pagination.js +25 -0
  72. package/dist/infrastructure/persistence/Pagination.js.map +1 -1
  73. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts +11 -1
  74. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts.map +1 -1
  75. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js +7 -3
  76. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js.map +1 -1
  77. package/dist/infrastructure/testing/HttpBenchmarkHarness.d.ts +26 -1
  78. package/dist/infrastructure/testing/HttpBenchmarkHarness.d.ts.map +1 -1
  79. package/dist/infrastructure/testing/HttpBenchmarkHarness.js +27 -12
  80. package/dist/infrastructure/testing/HttpBenchmarkHarness.js.map +1 -1
  81. package/dist/infrastructure/testing/StorageConformance.d.ts +32 -0
  82. package/dist/infrastructure/testing/StorageConformance.d.ts.map +1 -0
  83. package/dist/infrastructure/testing/StorageConformance.js +305 -0
  84. package/dist/infrastructure/testing/StorageConformance.js.map +1 -0
  85. package/dist/testing-storage.d.ts +3 -0
  86. package/dist/testing-storage.d.ts.map +1 -0
  87. package/dist/testing-storage.js +3 -0
  88. package/dist/testing-storage.js.map +1 -0
  89. package/dist/usecase/content/ListEntriesUseCase.d.ts +1 -1
  90. package/dist/usecase/content/ListEntriesUseCase.d.ts.map +1 -1
  91. package/dist/usecase/content/ListEntriesUseCase.js +18 -2
  92. package/dist/usecase/content/ListEntriesUseCase.js.map +1 -1
  93. package/dist/usecase/dto/content/index.d.ts +2 -0
  94. package/dist/usecase/dto/content/index.d.ts.map +1 -1
  95. package/dist/usecase/media/DeleteMediaAssetUseCase.d.ts +3 -3
  96. package/dist/usecase/media/DeleteMediaAssetUseCase.d.ts.map +1 -1
  97. package/dist/usecase/media/DeleteMediaAssetUseCase.js +35 -19
  98. package/dist/usecase/media/DeleteMediaAssetUseCase.js.map +1 -1
  99. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +8 -2
  100. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -1
  101. package/dist/usecase/procedure/InvokeBuiltinUseCase.js +96 -14
  102. package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -1
  103. package/dist/usecase/procedure/InvokeProcedureUseCase.js +2 -2
  104. package/dist/usecase/procedure/InvokeProcedureUseCase.js.map +1 -1
  105. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -1
  106. package/dist/usecase/site/UpdateSiteSettingsUseCase.js +8 -1
  107. package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -1
  108. package/package.json +9 -5
package/README.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  Runtime engine for mantle.
4
4
 
5
+ Documentation paths beginning with `node_modules/` below are relative to the
6
+ application root. Shared guides ship in the same-version `@aotter/mantle`
7
+ package; in an SDK checkout, those guides live under the root `docs/`.
8
+
5
9
  This package owns the adapter-neutral Core pipeline after semantic compilation.
6
10
  Storage adapters prepare `RuntimePlan` into existing content repositories/readers
7
11
  and a `ViewQueryExecutor`; SQL-shaped drivers remain SQLite/D1 implementation
@@ -43,14 +47,80 @@ Node-based tooling may import `@aotter/mantle-runtime/testing` for the real
43
47
  SQLite access-path and HTTP sampling helpers. That subpath is intentionally
44
48
  separate from the Worker-safe package entry.
45
49
 
50
+ ## Storage adapter conformance
51
+
52
+ Prefer an official adapter when its storage ownership fits your application.
53
+ Implement the existing `MantleStorageAdapter` ports when entries must participate
54
+ in application-owned storage or transactions. Test that implementation with
55
+ `runStorageConformance` from `@aotter/mantle-runtime/testing/storage` before
56
+ upgrading the SDK. This portable subpath works in browsers and server runtimes;
57
+ it imports neither a test framework nor the Node-only `/testing` helpers, and
58
+ the production entry does not import it.
59
+
60
+ The factory receives a sealed fixture `RuntimePlan` and must prepare a **fresh,
61
+ empty, disposable store for each check**. Return its `PreparedMantleStorage` and
62
+ a cleanup callback. If setup fails before returning, the factory owns cleanup.
63
+ For adapters with locale preparation, configure `en`, `zh-TW`, and `ja`.
64
+
65
+ For example, the official IndexedDB adapter can run the same contract as a
66
+ host-owned adapter:
67
+
68
+ ```ts
69
+ import { IndexedDbMantleStorageAdapter } from "@aotter/mantle-indexeddb";
70
+ import { runStorageConformance } from "@aotter/mantle-runtime/testing/storage";
71
+
72
+ const report = await runStorageConformance({
73
+ async create(plan) {
74
+ const adapter = new IndexedDbMantleStorageAdapter({
75
+ databaseName: `conformance-${crypto.randomUUID()}`,
76
+ });
77
+ try {
78
+ return {
79
+ storage: await adapter.prepare(plan),
80
+ cleanup: () => adapter.deleteDatabase(),
81
+ };
82
+ } catch (error) {
83
+ await adapter.deleteDatabase();
84
+ throw error;
85
+ }
86
+ },
87
+ });
88
+ if (!report.ok) throw new Error(JSON.stringify(report.failures, null, 2));
89
+ ```
90
+
91
+ Seven checks cover CRUD and replacement updates, concurrent/stale version
92
+ conflicts, guarded status transitions/deletes, nested JSON clone isolation,
93
+ all public read helpers and their field projection, locale/null handling,
94
+ forward/backward cursors with equal timestamps, and declarative View projection,
95
+ parameters, nested `and`/`or`, ordering, and pagination. Cases run sequentially,
96
+ always attempt cleanup, and collect failures as `{ check, phase, message }`;
97
+ `phase` distinguishes setup, assertion, and cleanup failures. A fixture grammar
98
+ or compilation defect rejects the runner before creating storage.
99
+
100
+ The contract calls prepared storage directly. It does not run Runtime's locale
101
+ validation or lifecycle hooks; null/missing locale fixtures exercise the read
102
+ port's documented behavior. It uses JSON-compatible data, not arbitrary browser
103
+ objects. Native SQL, unique indexes, search, specialized sorts, migrations,
104
+ media/auth, cross-process races, and application transaction/lifecycle semantics
105
+ still need adapter-specific tests. A passing report is a version-specific
106
+ baseline, not certification of every storage feature.
107
+
46
108
  For a fresh adapter implementation, start with
47
- [`docs/adapter-guide.md`](../../docs/adapter-guide.md) and
48
- [`docs/adr/0019-sealed-manifest-runtime-pipeline.md`](../../docs/adr/0019-sealed-manifest-runtime-pipeline.md).
109
+ `node_modules/@aotter/mantle/docs/adapter-guide.md` and
110
+ `node_modules/@aotter/mantle/docs/adr/0019-sealed-manifest-runtime-pipeline.md`.
49
111
 
50
112
  Queue-backed `after_*` lifecycle delivery is optional and at-least-once. See
51
- [`docs/deferred-lifecycle-queues.md`](../../docs/deferred-lifecycle-queues.md)
113
+ `node_modules/@aotter/mantle/docs/handbook/cloudflare/deferred-hooks-queues.md`
52
114
  for the strict envelope, idempotency key, Cloudflare bindings, retry/DLQ
53
115
  behavior, and upgrade procedure.
54
116
 
55
117
  This package is prerelease software. Its `package.json` is the exact version
56
- authority; the API surface may change until `v0.1.0`.
118
+ authority; the API surface may change until the first stable `0.1.2` release.
119
+
120
+ ## Port failures
121
+
122
+ Recognized storage/service rejections use `DiagnosticError` from `@aotter/mantle-spec`,
123
+ including optional safe `failure` outcome/retry facts. A thrown timeout is not
124
+ proof that a write or send did not happen. See the operation-by-operation
125
+ [failure contract](../../docs/adr/0023-port-failure-contract.md) for effects,
126
+ reconciliation and ownership. Runtime does not retry arbitrary side effects.
@@ -167,26 +167,26 @@ function invalidateAfterWrites(inner, invalidate, affectsPublishingContent) {
167
167
  async create(args) {
168
168
  const row = await inner.create(args);
169
169
  if (affectsPublishingContent(args.collection))
170
- await invalidate();
170
+ await invalidateBestEffort(invalidate);
171
171
  return row;
172
172
  },
173
173
  get: (id) => inner.get(id),
174
174
  async update(args) {
175
175
  const row = await inner.update(args);
176
176
  if (affectsPublishingContent(args.collection))
177
- await invalidate();
177
+ await invalidateBestEffort(invalidate);
178
178
  return row;
179
179
  },
180
180
  async delete(args) {
181
181
  const result = await inner.delete(args);
182
182
  if (result.removed && affectsPublishingContent(args.collection))
183
- await invalidate();
183
+ await invalidateBestEffort(invalidate);
184
184
  return result;
185
185
  },
186
186
  async transitionStatus(args) {
187
187
  const row = await inner.transitionStatus(args);
188
188
  if (affectsPublishingContent(args.collection))
189
- await invalidate();
189
+ await invalidateBestEffort(invalidate);
190
190
  return row;
191
191
  },
192
192
  list: (args) => inner.list(args),
@@ -194,4 +194,12 @@ function invalidateAfterWrites(inner, invalidate, affectsPublishingContent) {
194
194
  findByDataFields: (args) => inner.findByDataFields(args),
195
195
  };
196
196
  }
197
+ async function invalidateBestEffort(invalidate) {
198
+ try {
199
+ await invalidate();
200
+ }
201
+ catch (error) {
202
+ console.error("[mantle] public cache invalidation failed after committed write", error);
203
+ }
204
+ }
197
205
  //# sourceMappingURL=MantleRuntime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MantleRuntime.js","sourceRoot":"","sources":["../src/MantleRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MantleRuntime.js","sourceRoot":"","sources":["../src/MantleRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAc,MAAM,wBAAwB,CAAC;AAOjE,OAAO,EACL,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,mBAAmB,GAEpB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,uCAAuC,CAAC;AAyF/C,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAA2B;IACjE,MAAM,QAAQ,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;QAChE,GAAG,IAAI,CAAC,UAAU;QAClB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;KACpC,CAAC,CAAC;IACH,OAAO,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAA6B;IAC/D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC/B,oBAAoB,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,WAAW,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,mBAAmB,CAAC;IACjD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE/E,IAAI,OAAwB,CAAC;IAC7B,MAAM,YAAY,GAAoB;QACpC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5C,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5C,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5C,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAChE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACxC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;QAC9D,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;KACjE,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAC5C,YAAY,EACZ,aAAa,EACb,KAAK,EACL,KAAK,EACL,YAAY,EACZ,SAAS,CACV,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAChD,QAAQ,EACR,aAAa,EACb,gBAAgB,CACjB,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,wBAAwB,CACjD,YAAY,EACZ,gBAAgB,EAChB,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAC9C,CAAC;IACF,OAAO,GAAG,qBAAqB,CAC7B,IAAI,+BAA+B,CACjC,QAAQ,CAAC,OAAO,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,EACL,KAAK,CAAC,sBAAsB,CAC7B,EACD,KAAK,CAAC,yBAAyB,EAC/B,CAAC,UAAU,EAAE,EAAE,CACb,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,KAAK,YAAY,CACnF,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,kBAAkB,CACxC,OAAO,EACP,aAAa,EACb,KAAK,EACL,KAAK,EACL,YAAY,EACZ,SAAS,CACV,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,kBAAkB,CACxC,OAAO,EACP,aAAa,EACb,KAAK,EACL,YAAY,EACZ,SAAS,CACV,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,IAAI,qBAAqB,CAC9C,OAAO,EACP,aAAa,EACb,KAAK,EACL,YAAY,EACZ,SAAS,CACV,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,kBAAkB,CACxC,QAAQ,CAAC,KAAK,EACd,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACnF,OAAO,eAAe,CAAC,OAAO,CAAC;YAC7B,SAAS;YACT,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;IACL,CAAC,EACD,IAAI,CAAC,KAAK,CACX,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC;IAC/C,MAAM,kBAAkB,GAAG,UAAU;QACnC,CAAC,CAAC,IAAI,yBAAyB,CAAC,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC;QAC5E,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY;QAC9B,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,cAAc,EAAE;YAC7E,KAAK;YACL,KAAK;YACL,UAAU;YACV,QAAQ,EAAE,KAAK,CAAC,aAAa,IAAI,KAAK;SACvC,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;IAET,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,mBAAmB;QAClC,OAAO,EAAE,aAAa;QACtB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,UAAU;QACV,kBAAkB;QAClB,KAAK;QACL,WAAW;QACX,WAAW;QACX,QAAQ;QACR,WAAW;QACX,cAAc;QACd,SAAS;QACT,OAAO;QACP,WAAW;QACX,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YACtF,CAAC;YACD,OAAO,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YACrF,OAAO,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO;gBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9F,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YACnF,CAAC;YACD,OAAO,eAAe,CAAC,OAAO,CAAC;gBAC7B,SAAS;gBACT,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,oBAAoB,OAAO,CAAC,OAAO,EAAE;aACxE,CAAC,CAAC;QACL,CAAC;QACD,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,OAAqB,EACrB,MAAwC,EACxC,OAA4C,EAC5C,OAKC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO;QACL,OAAO;QACP,YAAY,EAAE,IAAI,wBAAwB,CACxC,OAAO,EACP,OAAO,EACP,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,UAAU,EAClB,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAC/B;QACD,YAAY,EAAE,IAAI,wBAAwB,CACxC,OAAO,EACP,OAAO,EACP,OAAO,CAAC,KAAK,EACb,MAAM,CACP;QACD,UAAU,EAAE,IAAI,sBAAsB,CAAC,MAAM,CAAC;QAC9C,QAAQ,EAAE,IAAI,oBAAoB,CAAC,MAAM,CAAC;QAC1C,WAAW,EAAE,IAAI,uBAAuB,CAAC,MAAM,CAAC;QAChD,WAAW,EAAE,IAAI,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC;QACzD,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,MAAiF;IAEjF,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,OAAO,CACd,IAAsC,EACtC,IAAY,EACZ,UAAmB;IAEnB,OAAO;QACL,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,iBAAiB,CAAC;YAC5B,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW;YAChE,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,UAAU,IAAI,WAAW,IAAI,IAAI,IAAI,EAAE;YAC7C,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,aAAa,IAAI,2BAA2B;SACvD,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAsB,EACtB,UAA6C,EAC7C,wBAAyD;IAEzD,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,IAAI;YACf,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACtF,OAAO,GAAG,CAAC;QACb,CAAC;QACD,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,MAAM,CAAC,IAAI;YACf,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACtF,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,IAAI;YACf,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACxG,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,IAAI;YACzB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACtF,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC;QACtD,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,UAA+B;IACjE,IAAI,CAAC;QACH,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iEAAiE,EAAE,KAAK,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC"}
@@ -11,7 +11,7 @@ import type { ContentState, Entry } from "@aotter/mantle-spec";
11
11
  * other Schema-property field. `EntryRow.locale?` is a hydrated
12
12
  * convenience: every repository impl lifts `data.locale` onto the
13
13
  * top-level field at read time so renderers, path resolvers, and MCP
14
- * `get_entry` clients can branch on `row.locale`
14
+ * entry readers can branch on `row.locale`
15
15
  * without drilling into `data`. Mirrors spec `Entry`'s `locale?`
16
16
  * field for the same reason. The DB column shape stays unchanged;
17
17
  * this is purely a read-side projection.
@@ -59,4 +59,13 @@ export declare class EntryStatusConflict extends Error {
59
59
  readonly actual: ContentState;
60
60
  constructor(id: string, expected: ContentState, actual: ContentState);
61
61
  }
62
+ /**
63
+ * Thrown by repository implementations when an insert or update violates
64
+ * a Schema unique index constraint.
65
+ */
66
+ export declare class EntryUniqueConflict extends Error {
67
+ readonly collection: string;
68
+ readonly fields: Record<string, unknown> | readonly string[];
69
+ constructor(collection: string, fields: Record<string, unknown> | readonly string[], message?: string);
70
+ }
62
71
  //# sourceMappingURL=EntryRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntryRow.d.ts","sourceRoot":"","sources":["../../../src/domain/model/EntryRow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;kBAEc;IACd,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,SAAS,CAGpB;AAED;wEACwE;AACxE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,CAWvD;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,EAAE,EAAE,MAAM;aACV,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;gBAFd,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;CAKjC;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,EAAE,EAAE,MAAM;aACV,QAAQ,EAAE,YAAY;aACtB,MAAM,EAAE,YAAY;gBAFpB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAY;CAKvC"}
1
+ {"version":3,"file":"EntryRow.d.ts","sourceRoot":"","sources":["../../../src/domain/model/EntryRow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;kBAEc;IACd,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,SAAS,CAGpB;AAED;wEACwE;AACxE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,CAWvD;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,EAAE,EAAE,MAAM;aACV,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;gBAFd,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;CAKjC;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,EAAE,EAAE,MAAM;aACV,QAAQ,EAAE,YAAY;aACtB,MAAM,EAAE,YAAY;gBAFpB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAY;CAKvC;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,UAAU,EAAE,MAAM;aAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,MAAM,EAAE;gBADnD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,MAAM,EAAE,EACnE,OAAO,CAAC,EAAE,MAAM;CAUnB"}
@@ -53,4 +53,23 @@ export class EntryStatusConflict extends Error {
53
53
  this.name = "EntryStatusConflict";
54
54
  }
55
55
  }
56
+ /**
57
+ * Thrown by repository implementations when an insert or update violates
58
+ * a Schema unique index constraint.
59
+ */
60
+ export class EntryUniqueConflict extends Error {
61
+ collection;
62
+ fields;
63
+ constructor(collection, fields, message) {
64
+ const detail = Array.isArray(fields)
65
+ ? fields.join(", ")
66
+ : Object.entries(fields)
67
+ .map(([k, v]) => `${k}=${JSON.stringify(v)}`)
68
+ .join(", ");
69
+ super(message ?? `unique conflict in collection '${collection}' on (${detail})`);
70
+ this.collection = collection;
71
+ this.fields = fields;
72
+ this.name = "EntryUniqueConflict";
73
+ }
74
+ }
56
75
  //# sourceMappingURL=EntryRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntryRow.js","sourceRoot":"","sources":["../../../src/domain/model/EntryRow.ts"],"names":[],"mappings":"AAkCA;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,IAA6B;IAE7B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;wEACwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,GAAa;IAC9C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAE3B;IACA;IACA;IAHlB,YACkB,EAAU,EACV,QAAgB,EAChB,MAAc;QAE9B,KAAK,CAAC,uBAAuB,EAAE,cAAc,QAAQ,WAAW,MAAM,EAAE,CAAC,CAAC;QAJ1D,OAAE,GAAF,EAAE,CAAQ;QACV,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAE1B;IACA;IACA;IAHlB,YACkB,EAAU,EACV,QAAsB,EACtB,MAAoB;QAEpC,KAAK,CAAC,sBAAsB,EAAE,cAAc,QAAQ,WAAW,MAAM,EAAE,CAAC,CAAC;QAJzD,OAAE,GAAF,EAAE,CAAQ;QACV,aAAQ,GAAR,QAAQ,CAAc;QACtB,WAAM,GAAN,MAAM,CAAc;QAGpC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"EntryRow.js","sourceRoot":"","sources":["../../../src/domain/model/EntryRow.ts"],"names":[],"mappings":"AAkCA;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,IAA6B;IAE7B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;wEACwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,GAAa;IAC9C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAE3B;IACA;IACA;IAHlB,YACkB,EAAU,EACV,QAAgB,EAChB,MAAc;QAE9B,KAAK,CAAC,uBAAuB,EAAE,cAAc,QAAQ,WAAW,MAAM,EAAE,CAAC,CAAC;QAJ1D,OAAE,GAAF,EAAE,CAAQ;QACV,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAE1B;IACA;IACA;IAHlB,YACkB,EAAU,EACV,QAAsB,EACtB,MAAoB;QAEpC,KAAK,CAAC,sBAAsB,EAAE,cAAc,QAAQ,WAAW,MAAM,EAAE,CAAC,CAAC;QAJzD,OAAE,GAAF,EAAE,CAAQ;QACV,aAAQ,GAAR,QAAQ,CAAc;QACtB,WAAM,GAAN,MAAM,CAAc;QAGpC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAE1B;IACA;IAFlB,YACkB,UAAkB,EAClB,MAAmD,EACnE,OAAgB;QAEhB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;iBACnB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5C,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,OAAO,IAAI,kCAAkC,UAAU,SAAS,MAAM,GAAG,CAAC,CAAC;QATjE,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAA6C;QASnE,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
@@ -18,6 +18,8 @@ export interface ReadEntriesByDataFieldInArgs {
18
18
  readonly collection: string;
19
19
  readonly field: string;
20
20
  readonly values: readonly EntryDataScalar[];
21
+ /** Return at most the newest matching row per value (translation list joins). */
22
+ readonly latestPerValue?: boolean;
21
23
  readonly locale?: string | null;
22
24
  readonly status?: ContentState;
23
25
  }
@@ -26,6 +28,18 @@ export interface ReadPublishedEntriesArgs {
26
28
  readonly collection?: string;
27
29
  readonly limit?: number;
28
30
  }
31
+ export interface ReadPublishedPageArgs extends ReadPublishedEntriesArgs {
32
+ /** Merge the exact locale with non-localized entries in the same ordered page. */
33
+ readonly includeUnlocalized?: boolean;
34
+ /** Opaque forward cursor in updatedAt DESC, id DESC order. */
35
+ readonly cursor?: string;
36
+ /** Select top-level data keys; omitted returns complete data. Missing keys become null. */
37
+ readonly dataFields?: readonly string[];
38
+ }
39
+ export interface PublishedEntryPage {
40
+ readonly rows: readonly Entry[];
41
+ readonly nextCursor?: string;
42
+ }
29
43
  export interface FindManyEntriesByDataFieldArgs {
30
44
  readonly collection: string;
31
45
  readonly field: string;
@@ -38,12 +52,32 @@ export interface FindManyEntriesByDataFieldArgs {
38
52
  * mutation hooks. Public results are projected to spec `Entry`, so persistence
39
53
  * fields such as `authorId` cannot leak into templates or public helpers.
40
54
  */
55
+ export interface CreationStatisticsArgs {
56
+ readonly collection: string;
57
+ readonly from: number;
58
+ readonly to: number;
59
+ readonly bucketMs: number;
60
+ }
61
+ /** Current retained rows, all statuses; not a historical inventory/event log. */
62
+ export interface CreationStatistics {
63
+ readonly total: number;
64
+ readonly buckets: readonly {
65
+ readonly bucket: number;
66
+ readonly subtype: string | null;
67
+ readonly count: number;
68
+ }[];
69
+ }
41
70
  export interface EntryReader {
71
+ /** Optional native aggregation; absence must not trigger a full entry scan in callers. */
72
+ readCreationStatistics?(args: CreationStatisticsArgs): Promise<CreationStatistics>;
42
73
  readById(id: string): Promise<Entry | null>;
43
74
  readBySlug(args: ReadEntryBySlugArgs): Promise<Entry | null>;
44
75
  readByDataField(args: ReadEntryByDataFieldArgs): Promise<Entry | null>;
45
76
  readByDataFieldIn(args: ReadEntriesByDataFieldInArgs): Promise<readonly Entry[]>;
46
77
  readPublished(args?: ReadPublishedEntriesArgs): Promise<readonly Entry[]>;
78
+ /** At most 2,000 rows and 1 MiB of data JSON per page (default 50 rows).
79
+ * One oversized first entry is returned alone so iteration always advances. */
80
+ readPublishedPage(args?: ReadPublishedPageArgs): Promise<PublishedEntryPage>;
47
81
  findManyByDataField(args: FindManyEntriesByDataFieldArgs): Promise<readonly Entry[]>;
48
82
  }
49
83
  //# sourceMappingURL=EntryReader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntryReader.d.ts","sourceRoot":"","sources":["../../../src/domain/port/EntryReader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC5C,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC7D,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACvE,iBAAiB,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;IACjF,aAAa,CAAC,IAAI,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;IAC1E,mBAAmB,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;CACtF"}
1
+ {"version":3,"file":"EntryReader.d.ts","sourceRoot":"","sources":["../../../src/domain/port/EntryReader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,iFAAiF;IACjF,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,wBAAwB;IACrE,kFAAkF;IAClF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,WAAW;IAC1B,0FAA0F;IAC1F,sBAAsB,CAAC,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnF,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC5C,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC7D,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACvE,iBAAiB,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;IACjF,aAAa,CAAC,IAAI,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;IAC1E;mFAC+E;IAC/E,iBAAiB,CAAC,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7E,mBAAmB,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;CACtF"}
@@ -117,6 +117,11 @@ export interface ListEntriesArgs {
117
117
  readonly field: string;
118
118
  readonly value: string;
119
119
  };
120
+ /** Trusted exact match on a required `x-mantle-ref` field (Admin parent scope). */
121
+ readonly scope?: {
122
+ readonly field: string;
123
+ readonly value: string;
124
+ };
120
125
  /** Native fields or Schema-indexed scalar data fields only. */
121
126
  readonly sort?: EntrySort;
122
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EntryRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/port/EntryRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntryRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/port/EntryRepository.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@
17
17
  */
18
18
  export type { DatabaseDriver, PreparedStatement, RunResult, BatchResult, MigrationRunner, Migration, } from "./DatabaseDriver.js";
19
19
  export type { EntryRepository, CreateEntryArgs, UpdateEntryArgs, DeleteEntryArgs, TransitionStatusArgs, ListEntriesArgs, ListEntriesResult, FindEntryByDataFieldArgs, FindEntryByDataFieldsArgs, MutationHookFields, } from "./EntryRepository.js";
20
- export type { EntryReader, EntryDataScalar, ReadEntryBySlugArgs, ReadEntryByDataFieldArgs, ReadEntriesByDataFieldInArgs, ReadPublishedEntriesArgs, FindManyEntriesByDataFieldArgs, } from "./EntryReader.js";
20
+ export type { EntryReader, CreationStatisticsArgs, CreationStatistics, EntryDataScalar, ReadEntryBySlugArgs, ReadEntryByDataFieldArgs, ReadEntriesByDataFieldInArgs, ReadPublishedEntriesArgs, ReadPublishedPageArgs, PublishedEntryPage, FindManyEntriesByDataFieldArgs, } from "./EntryReader.js";
21
21
  export type { ViewQueryExecutor, ViewQueryOptions, ViewQueryRequest, ViewQueryResult, } from "./ViewQueryExecutor.js";
22
22
  export type { MantleStorageAdapter, PreparedMantleStorage, } from "./MantleStorageAdapter.js";
23
23
  export type { SiteConfigRepository, UpdateEditableSiteConfigArgs, } from "./SiteConfigRepository.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/port/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,YAAY,EACV,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,GACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,8BAA8B,EAC9B,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,KAAK,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EACL,KAAK,eAAe,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/port/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,YAAY,EACV,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,GACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,8BAA8B,EAC9B,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,KAAK,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EACL,KAAK,eAAe,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/port/index.ts"],"names":[],"mappings":"AA0EA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAavD,OAAO,EACL,8BAA8B,EAC9B,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAEL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/port/index.ts"],"names":[],"mappings":"AA8EA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAavD,OAAO,EACL,8BAA8B,EAC9B,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAEL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type JsonSchema, type ProcedureManifest, type ViewManifest } from "@aotter/mantle-spec";
2
+ import type { RuntimePlan } from "./RuntimePlanCompiler.js";
3
+ interface CallableCapabilityBase {
4
+ readonly name: string;
5
+ readonly surface: "staff" | "public";
6
+ readonly title?: string;
7
+ readonly description: string;
8
+ readonly inputSchema: JsonSchema;
9
+ }
10
+ export interface ViewCallableCapability extends CallableCapabilityBase {
11
+ readonly kind: "view";
12
+ readonly ownerName: string;
13
+ readonly manifest: ViewManifest;
14
+ }
15
+ export interface ProcedureCallableCapability extends CallableCapabilityBase {
16
+ readonly kind: "procedure";
17
+ readonly ownerName: string;
18
+ readonly trigger: string;
19
+ readonly manifest: ProcedureManifest;
20
+ readonly outputSchema: JsonSchema;
21
+ }
22
+ export type RuntimeCallableCapability = ViewCallableCapability | ProcedureCallableCapability;
23
+ /** Pure callable projection. Discovery and invocation consume this same slice. */
24
+ export declare function projectCallableCapabilities(plan: RuntimePlan, options?: {
25
+ readonly surface?: "staff" | "public";
26
+ }): readonly RuntimeCallableCapability[];
27
+ export {};
28
+ //# sourceMappingURL=CallableCapabilityProjector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallableCapabilityProjector.d.ts","sourceRoot":"","sources":["../../../src/domain/service/CallableCapabilityProjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;CAClC;AAED,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IACzE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;CACnC;AAED,MAAM,MAAM,yBAAyB,GACjC,sBAAsB,GACtB,2BAA2B,CAAC;AAEhC,kFAAkF;AAClF,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAO,GACtD,SAAS,yBAAyB,EAAE,CA8CtC"}
@@ -0,0 +1,67 @@
1
+ import { resolveLocalizedText, } from "@aotter/mantle-spec";
2
+ /** Pure callable projection. Discovery and invocation consume this same slice. */
3
+ export function projectCallableCapabilities(plan, options = {}) {
4
+ const capabilities = [];
5
+ for (const tool of plan.mcpTools) {
6
+ if (tool.ownerKind !== "View")
7
+ continue;
8
+ const view = plan.views[tool.ownerName];
9
+ if (!view)
10
+ continue;
11
+ const manifest = view.manifest;
12
+ const title = resolveLocalizedText(manifest.spec.title, "en");
13
+ capabilities.push({
14
+ kind: "view",
15
+ name: tool.name,
16
+ ownerName: view.name,
17
+ surface: tool.surface,
18
+ ...(title ? { title } : {}),
19
+ description: `Query ${manifest.spec.surface} View '${view.name}'.${manifest.spec.cache
20
+ ? ` Anonymous REST responses may be shared for up to ${manifest.spec.cache.sharedMaxAge} seconds.`
21
+ : ""}`,
22
+ inputSchema: viewInputSchema(manifest),
23
+ manifest,
24
+ });
25
+ }
26
+ for (const tool of plan.mcpTools) {
27
+ if (tool.ownerKind !== "Procedure")
28
+ continue;
29
+ const procedure = plan.procedures[tool.ownerName];
30
+ if (!procedure)
31
+ continue;
32
+ const title = resolveLocalizedText(procedure.manifest.spec.title, "en");
33
+ const description = resolveLocalizedText(procedure.manifest.spec.description, "en") ??
34
+ `Invoke Procedure '${procedure.name}'.`;
35
+ capabilities.push({
36
+ kind: "procedure",
37
+ name: tool.name,
38
+ ownerName: procedure.name,
39
+ trigger: tool.trigger,
40
+ surface: tool.surface,
41
+ ...(title ? { title } : {}),
42
+ description,
43
+ inputSchema: procedure.manifest.spec.input,
44
+ outputSchema: procedure.manifest.spec.output,
45
+ manifest: procedure.manifest,
46
+ });
47
+ }
48
+ return Object.freeze(capabilities
49
+ .filter((capability) => !options.surface || capability.surface === options.surface)
50
+ .sort((a, b) => compareText(`${a.surface}\0${a.name}\0${a.ownerName}`, `${b.surface}\0${b.name}\0${b.ownerName}`))
51
+ .map((capability) => Object.freeze(capability)));
52
+ }
53
+ function viewInputSchema(view) {
54
+ return {
55
+ type: "object",
56
+ properties: {
57
+ ...(view.spec.params?.properties ?? {}),
58
+ page: { type: "number", description: "Optional 1-based page number." },
59
+ show: { type: "number", description: "Optional page size, capped by the View limit." },
60
+ },
61
+ ...(view.spec.params?.required?.length ? { required: view.spec.params.required } : {}),
62
+ };
63
+ }
64
+ function compareText(a, b) {
65
+ return a < b ? -1 : a > b ? 1 : 0;
66
+ }
67
+ //# sourceMappingURL=CallableCapabilityProjector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallableCapabilityProjector.js","sourceRoot":"","sources":["../../../src/domain/service/CallableCapabilityProjector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntryMutationDiagnostics.d.ts","sourceRoot":"","sources":["../../../src/domain/service/EntryMutationDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAM7B,wEAAwE;AACxE,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CA8BZ;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,UAAU,CASZ"}
1
+ {"version":3,"file":"EntryMutationDiagnostics.d.ts","sourceRoot":"","sources":["../../../src/domain/service/EntryMutationDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAO7B,wEAAwE;AACxE,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CA0CZ;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,UAAU,CASZ"}
@@ -1,5 +1,5 @@
1
1
  import { DiagnosticError, runtimeDiagnostic, } from "@aotter/mantle-spec";
2
- import { EntryStatusConflict, EntryVersionConflict, } from "../model/EntryRow.js";
2
+ import { EntryStatusConflict, EntryUniqueConflict, EntryVersionConflict, } from "../model/EntryRow.js";
3
3
  /** Translate repository OCC failures at any entry-mutation boundary. */
4
4
  export async function withConflictDiagnostic(path, fn) {
5
5
  try {
@@ -26,6 +26,16 @@ export async function withConflictDiagnostic(path, fn) {
26
26
  message: `Status mismatch on entry '${err.id}': expected '${err.expected}', found '${err.actual}'. Probably a concurrent state change.`,
27
27
  }));
28
28
  }
29
+ if (err instanceof EntryUniqueConflict) {
30
+ throw new DiagnosticError(runtimeDiagnostic({
31
+ code: "CONFLICT",
32
+ severity: "error",
33
+ path,
34
+ value: err.fields,
35
+ expected: "unique entry data per Schema uniqueIndexes",
36
+ message: `Unique constraint violation in collection '${err.collection}': ${err.message}`,
37
+ }));
38
+ }
29
39
  throw err;
30
40
  }
31
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EntryMutationDiagnostics.js","sourceRoot":"","sources":["../../../src/domain/service/EntryMutationDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,EAAoB;IAEpB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;YACxC,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,OAAO;gBACjB,IAAI;gBACJ,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;gBACpD,QAAQ,EAAE,eAAe,GAAG,CAAC,QAAQ,EAAE;gBACvC,OAAO,EAAE,8BAA8B,GAAG,CAAC,EAAE,eAAe,GAAG,CAAC,QAAQ,WAAW,GAAG,CAAC,MAAM,GAAG;aACjG,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;YACvC,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,OAAO;gBACjB,IAAI;gBACJ,KAAK,EAAE,GAAG,CAAC,MAAM;gBACjB,QAAQ,EAAE,eAAe,GAAG,CAAC,QAAQ,GAAG;gBACxC,OAAO,EAAE,6BAA6B,GAAG,CAAC,EAAE,gBAAgB,GAAG,CAAC,QAAQ,aAAa,GAAG,CAAC,MAAM,wCAAwC;aACxI,CAAC,CACH,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,UAAkB,EAClB,EAAU;IAEV,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,oCAAoC,UAAU,GAAG;QAC3D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,UAAU,IAAI;KACnE,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"EntryMutationDiagnostics.js","sourceRoot":"","sources":["../../../src/domain/service/EntryMutationDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,EAAoB;IAEpB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;YACxC,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,OAAO;gBACjB,IAAI;gBACJ,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;gBACpD,QAAQ,EAAE,eAAe,GAAG,CAAC,QAAQ,EAAE;gBACvC,OAAO,EAAE,8BAA8B,GAAG,CAAC,EAAE,eAAe,GAAG,CAAC,QAAQ,WAAW,GAAG,CAAC,MAAM,GAAG;aACjG,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;YACvC,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,OAAO;gBACjB,IAAI;gBACJ,KAAK,EAAE,GAAG,CAAC,MAAM;gBACjB,QAAQ,EAAE,eAAe,GAAG,CAAC,QAAQ,GAAG;gBACxC,OAAO,EAAE,6BAA6B,GAAG,CAAC,EAAE,gBAAgB,GAAG,CAAC,QAAQ,aAAa,GAAG,CAAC,MAAM,wCAAwC;aACxI,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;YACvC,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,OAAO;gBACjB,IAAI;gBACJ,KAAK,EAAE,GAAG,CAAC,MAAM;gBACjB,QAAQ,EAAE,4CAA4C;gBACtD,OAAO,EAAE,8CAA8C,GAAG,CAAC,UAAU,MAAM,GAAG,CAAC,OAAO,EAAE;aACzF,CAAC,CACH,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,UAAkB,EAClB,EAAU;IAEV,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,oCAAoC,UAAU,GAAG;QAC3D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,UAAU,IAAI;KACnE,CAAC,CAAC;AACL,CAAC"}
@@ -14,4 +14,11 @@
14
14
  export declare function matchPath(triggerPath: string, requestPath: string): Record<string, string> | null;
15
15
  /** Compile the immutable Trigger half once for mounted HTTP routes. */
16
16
  export declare function compilePathMatcher(triggerPath: string): (requestPath: string) => Record<string, string> | null;
17
+ /** Index immutable routes; decode each request segment once, preserving input order. */
18
+ export declare function compileRouteMatcher<Route extends {
19
+ readonly path: string;
20
+ }>(routes: readonly Route[]): (path: string) => {
21
+ readonly route: Route;
22
+ readonly params: Record<string, string>;
23
+ } | null;
17
24
  //# sourceMappingURL=PathMatcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PathMatcher.d.ts","sourceRoot":"","sources":["../../../src/domain/service/PathMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAE/B;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAClB,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA0BxD"}
1
+ {"version":3,"file":"PathMatcher.d.ts","sourceRoot":"","sources":["../../../src/domain/service/PathMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAE/B;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAClB,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA0BxD;AAeD,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,KAAK,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACzE,MAAM,EAAE,SAAS,KAAK,EAAE,GACvB,CAAC,IAAI,EAAE,MAAM,KAAK;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,IAAI,CAsD7F"}
@@ -57,4 +57,60 @@ function safeDecode(segment) {
57
57
  function stripTrailingSlash(p) {
58
58
  return p.length > 1 && p.endsWith("/") ? p.slice(0, -1) : p;
59
59
  }
60
+ /** Index immutable routes; decode each request segment once, preserving input order. */
61
+ export function compileRouteMatcher(routes) {
62
+ const node = () => ({ literals: new Map(), first: Infinity });
63
+ const root = node();
64
+ routes.forEach((route, rank) => {
65
+ let current = root;
66
+ const params = [];
67
+ for (const [position, part] of stripTrailingSlash(route.path).split("/").entries()) {
68
+ current.first = Math.min(current.first, rank);
69
+ if (part.startsWith("{") && part.endsWith("}")) {
70
+ params.push([part.slice(1, -1), position]);
71
+ current = current.parameter ??= node();
72
+ }
73
+ else {
74
+ let next = current.literals.get(part);
75
+ if (!next)
76
+ current.literals.set(part, next = node());
77
+ current = next;
78
+ }
79
+ }
80
+ current.first = Math.min(current.first, rank);
81
+ current.leaf ??= { route, rank, params };
82
+ });
83
+ return (path) => {
84
+ const parts = stripTrailingSlash(path).split("/").map(safeDecode);
85
+ if (parts.includes(null))
86
+ return null;
87
+ let best;
88
+ // ponytail: overlapping wildcard shapes may visit multiple branches;
89
+ // subtree ranks prune losers. Use a DFA only if ambiguous-route profiles justify it.
90
+ const visit = (current, depth) => {
91
+ if (!current || current.first >= (best?.rank ?? Infinity))
92
+ return;
93
+ if (depth === parts.length) {
94
+ if (current.leaf && current.leaf.rank < (best?.rank ?? Infinity))
95
+ best = current.leaf;
96
+ return;
97
+ }
98
+ const literal = current.literals.get(parts[depth]);
99
+ const parameter = current.parameter;
100
+ if ((literal?.first ?? Infinity) < (parameter?.first ?? Infinity)) {
101
+ visit(literal, depth + 1);
102
+ visit(parameter, depth + 1);
103
+ }
104
+ else {
105
+ visit(parameter, depth + 1);
106
+ visit(literal, depth + 1);
107
+ }
108
+ };
109
+ visit(root, 0);
110
+ return best ? {
111
+ route: best.route,
112
+ params: Object.fromEntries(best.params.map(([name, position]) => [name, parts[position]])),
113
+ } : null;
114
+ };
115
+ }
60
116
  //# sourceMappingURL=PathMatcher.js.map