@aotter/mantle-runtime 0.0.11-alpha.62 → 0.0.11-alpha.64

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 (180) hide show
  1. package/README.md +6 -2
  2. package/dist/domain/model/EntryRow.d.ts +4 -1
  3. package/dist/domain/model/EntryRow.d.ts.map +1 -1
  4. package/dist/domain/model/EntryRow.js +14 -0
  5. package/dist/domain/model/EntryRow.js.map +1 -1
  6. package/dist/domain/model/HandlerContext.d.ts +6 -8
  7. package/dist/domain/model/HandlerContext.d.ts.map +1 -1
  8. package/dist/domain/model/PendingUploadRecord.d.ts +19 -0
  9. package/dist/domain/model/PendingUploadRecord.d.ts.map +1 -0
  10. package/dist/domain/model/PendingUploadRecord.js.map +1 -0
  11. package/dist/domain/model/index.d.ts +1 -0
  12. package/dist/domain/model/index.d.ts.map +1 -1
  13. package/dist/domain/model/index.js.map +1 -1
  14. package/dist/domain/port/DatabaseDriver.d.ts +4 -5
  15. package/dist/domain/port/DatabaseDriver.d.ts.map +1 -1
  16. package/dist/domain/port/EntryReader.d.ts +49 -0
  17. package/dist/domain/port/EntryReader.d.ts.map +1 -0
  18. package/dist/domain/port/EntryReader.js +2 -0
  19. package/dist/domain/port/EntryReader.js.map +1 -0
  20. package/dist/domain/port/HandlerRegistry.d.ts +4 -3
  21. package/dist/domain/port/HandlerRegistry.d.ts.map +1 -1
  22. package/dist/domain/port/HandlerRegistry.js.map +1 -1
  23. package/dist/domain/port/PendingUploadRepository.d.ts +8 -0
  24. package/dist/domain/port/PendingUploadRepository.d.ts.map +1 -0
  25. package/dist/domain/port/PendingUploadRepository.js +2 -0
  26. package/dist/domain/port/PendingUploadRepository.js.map +1 -0
  27. package/dist/domain/port/PublishOrchestrator.d.ts +2 -0
  28. package/dist/domain/port/PublishOrchestrator.d.ts.map +1 -1
  29. package/dist/domain/port/SiteConfigRepository.d.ts +13 -0
  30. package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -1
  31. package/dist/domain/port/index.d.ts +3 -1
  32. package/dist/domain/port/index.d.ts.map +1 -1
  33. package/dist/domain/port/index.js.map +1 -1
  34. package/dist/domain/service/index.d.ts +1 -2
  35. package/dist/domain/service/index.d.ts.map +1 -1
  36. package/dist/domain/service/index.js +1 -2
  37. package/dist/domain/service/index.js.map +1 -1
  38. package/dist/domain/service/io/JoinedEntryReader.d.ts +3 -3
  39. package/dist/domain/service/io/JoinedEntryReader.d.ts.map +1 -1
  40. package/dist/domain/service/io/JoinedEntryReader.js +4 -5
  41. package/dist/domain/service/io/JoinedEntryReader.js.map +1 -1
  42. package/dist/domain/service/io/index.d.ts +1 -6
  43. package/dist/domain/service/io/index.d.ts.map +1 -1
  44. package/dist/domain/service/io/index.js +1 -6
  45. package/dist/domain/service/io/index.js.map +1 -1
  46. package/dist/index.d.ts +3 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
  51. package/dist/infrastructure/boot/canonicalMigrations.js +35 -0
  52. package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
  53. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +4 -1
  54. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
  55. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +13 -11
  56. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
  57. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +13 -2
  58. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
  59. package/dist/infrastructure/persistence/DatabaseEntryRepository.js +175 -13
  60. package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
  61. package/dist/infrastructure/persistence/DatabasePendingUploadRepository.d.ts +13 -0
  62. package/dist/infrastructure/persistence/DatabasePendingUploadRepository.d.ts.map +1 -0
  63. package/dist/infrastructure/persistence/DatabasePendingUploadRepository.js +36 -0
  64. package/dist/infrastructure/persistence/DatabasePendingUploadRepository.js.map +1 -0
  65. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts +5 -1
  66. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -1
  67. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +40 -8
  68. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -1
  69. package/dist/infrastructure/persistence/index.d.ts +1 -0
  70. package/dist/infrastructure/persistence/index.d.ts.map +1 -1
  71. package/dist/infrastructure/persistence/index.js +1 -0
  72. package/dist/infrastructure/persistence/index.js.map +1 -1
  73. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts +5 -3
  74. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts.map +1 -1
  75. package/dist/infrastructure/render/HtmlPublishOrchestrator.js +25 -11
  76. package/dist/infrastructure/render/HtmlPublishOrchestrator.js.map +1 -1
  77. package/dist/infrastructure/testing/HttpBenchmarkHarness.d.ts +41 -0
  78. package/dist/infrastructure/testing/HttpBenchmarkHarness.d.ts.map +1 -0
  79. package/dist/infrastructure/testing/HttpBenchmarkHarness.js +88 -0
  80. package/dist/infrastructure/testing/HttpBenchmarkHarness.js.map +1 -0
  81. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts +42 -0
  82. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts.map +1 -0
  83. package/dist/infrastructure/testing/IndexCoverageHarness.js +223 -0
  84. package/dist/infrastructure/testing/IndexCoverageHarness.js.map +1 -0
  85. package/dist/infrastructure/testing/index.d.ts +3 -0
  86. package/dist/infrastructure/testing/index.d.ts.map +1 -0
  87. package/dist/infrastructure/testing/index.js +3 -0
  88. package/dist/infrastructure/testing/index.js.map +1 -0
  89. package/dist/runtime.d.ts +10 -2
  90. package/dist/runtime.d.ts.map +1 -1
  91. package/dist/runtime.js +18 -10
  92. package/dist/runtime.js.map +1 -1
  93. package/dist/testing.d.ts +3 -0
  94. package/dist/testing.d.ts.map +1 -0
  95. package/dist/testing.js +3 -0
  96. package/dist/testing.js.map +1 -0
  97. package/dist/usecase/boot/ValidateBootUseCase.d.ts +6 -9
  98. package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -1
  99. package/dist/usecase/boot/ValidateBootUseCase.js +3 -2
  100. package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -1
  101. package/dist/usecase/content/RequestPublishUseCase.d.ts +2 -2
  102. package/dist/usecase/content/RequestPublishUseCase.js +4 -4
  103. package/dist/usecase/content/RequestPublishUseCase.js.map +1 -1
  104. package/dist/usecase/dto/index.d.ts +1 -0
  105. package/dist/usecase/dto/index.d.ts.map +1 -1
  106. package/dist/usecase/dto/index.js +1 -0
  107. package/dist/usecase/dto/index.js.map +1 -1
  108. package/dist/usecase/dto/site/UpdateSiteSettingsRequest.d.ts +3 -0
  109. package/dist/usecase/dto/site/UpdateSiteSettingsRequest.d.ts.map +1 -0
  110. package/dist/usecase/dto/site/UpdateSiteSettingsRequest.js +2 -0
  111. package/dist/usecase/dto/site/UpdateSiteSettingsRequest.js.map +1 -0
  112. package/dist/usecase/dto/site/index.d.ts +2 -0
  113. package/dist/usecase/dto/site/index.d.ts.map +1 -0
  114. package/dist/usecase/dto/site/index.js +2 -0
  115. package/dist/usecase/dto/site/index.js.map +1 -0
  116. package/dist/usecase/index.d.ts +1 -0
  117. package/dist/usecase/index.d.ts.map +1 -1
  118. package/dist/usecase/index.js +1 -0
  119. package/dist/usecase/index.js.map +1 -1
  120. package/dist/usecase/media/CommitMediaUploadUseCase.d.ts +4 -4
  121. package/dist/usecase/media/CommitMediaUploadUseCase.d.ts.map +1 -1
  122. package/dist/usecase/media/CommitMediaUploadUseCase.js +9 -11
  123. package/dist/usecase/media/CommitMediaUploadUseCase.js.map +1 -1
  124. package/dist/usecase/media/CreateMediaUploadUseCase.d.ts +3 -3
  125. package/dist/usecase/media/CreateMediaUploadUseCase.d.ts.map +1 -1
  126. package/dist/usecase/media/CreateMediaUploadUseCase.js +5 -5
  127. package/dist/usecase/media/CreateMediaUploadUseCase.js.map +1 -1
  128. package/dist/usecase/media/diagnostics.js +1 -1
  129. package/dist/usecase/media/diagnostics.js.map +1 -1
  130. package/dist/usecase/media/index.d.ts +1 -1
  131. package/dist/usecase/media/index.d.ts.map +1 -1
  132. package/dist/usecase/media/index.js +1 -1
  133. package/dist/usecase/media/index.js.map +1 -1
  134. package/dist/usecase/media/mediaAllowlist.d.ts +0 -5
  135. package/dist/usecase/media/mediaAllowlist.d.ts.map +1 -1
  136. package/dist/usecase/media/mediaAllowlist.js +0 -5
  137. package/dist/usecase/media/mediaAllowlist.js.map +1 -1
  138. package/dist/usecase/procedure/InvokeProcedureUseCase.js +1 -1
  139. package/dist/usecase/procedure/InvokeProcedureUseCase.js.map +1 -1
  140. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +3 -3
  141. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +1 -1
  142. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +6 -7
  143. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +1 -1
  144. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +3 -3
  145. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +1 -1
  146. package/dist/usecase/render/ComposeLlmsTxtUseCase.js +4 -5
  147. package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +1 -1
  148. package/dist/usecase/render/ComposeSitemapUseCase.d.ts +3 -3
  149. package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +1 -1
  150. package/dist/usecase/render/ComposeSitemapUseCase.js +4 -5
  151. package/dist/usecase/render/ComposeSitemapUseCase.js.map +1 -1
  152. package/dist/usecase/render/PreviewEntryUseCase.d.ts +3 -3
  153. package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +1 -1
  154. package/dist/usecase/render/PreviewEntryUseCase.js +5 -6
  155. package/dist/usecase/render/PreviewEntryUseCase.js.map +1 -1
  156. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +3 -3
  157. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +1 -1
  158. package/dist/usecase/render/RenderEntryLiveUseCase.js +5 -6
  159. package/dist/usecase/render/RenderEntryLiveUseCase.js.map +1 -1
  160. package/dist/usecase/render/RenderListLiveUseCase.d.ts +3 -3
  161. package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +1 -1
  162. package/dist/usecase/render/RenderListLiveUseCase.js +5 -6
  163. package/dist/usecase/render/RenderListLiveUseCase.js.map +1 -1
  164. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts +12 -0
  165. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -0
  166. package/dist/usecase/site/UpdateSiteSettingsUseCase.js +18 -0
  167. package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -0
  168. package/dist/usecase/site/index.d.ts +2 -0
  169. package/dist/usecase/site/index.d.ts.map +1 -0
  170. package/dist/usecase/site/index.js +2 -0
  171. package/dist/usecase/site/index.js.map +1 -0
  172. package/package.json +6 -2
  173. package/dist/domain/service/io/PublishedEntries.d.ts +0 -69
  174. package/dist/domain/service/io/PublishedEntries.d.ts.map +0 -1
  175. package/dist/domain/service/io/PublishedEntries.js +0 -116
  176. package/dist/domain/service/io/PublishedEntries.js.map +0 -1
  177. package/dist/usecase/media/PendingUploadRecord.d.ts +0 -36
  178. package/dist/usecase/media/PendingUploadRecord.d.ts.map +0 -1
  179. package/dist/usecase/media/PendingUploadRecord.js.map +0 -1
  180. /package/dist/{usecase/media → domain/model}/PendingUploadRecord.js +0 -0
package/README.md CHANGED
@@ -6,6 +6,10 @@ This package owns the adapter-agnostic CMS core: dispatcher, content operations,
6
6
  render pipeline, auth/session abstractions, MCP JSON-RPC dispatch, and the
7
7
  runtime ports implemented by platform adapters.
8
8
 
9
+ Node-based tooling may import `@aotter/mantle-runtime/testing` for the real
10
+ SQLite access-path and HTTP sampling helpers. That subpath is intentionally
11
+ separate from the Worker-safe package entry.
12
+
9
13
  For a fresh adapter implementation, start with
10
14
  [`docs/adapter-guide.md`](../../docs/adapter-guide.md) and
11
15
  [`docs/adr/0011-adapter-port-spec.md`](../../docs/adr/0011-adapter-port-spec.md).
@@ -15,5 +19,5 @@ Queue-backed `after_*` lifecycle delivery is optional and at-least-once. See
15
19
  for the strict envelope, idempotency key, Cloudflare bindings, retry/DLQ
16
20
  behavior, and upgrade procedure.
17
21
 
18
- `0.0.7-alpha` is an early prerelease for the agent-provisioning proof. The API
19
- surface remains in flux until `v0.1.0`.
22
+ This package is prerelease software. Its `package.json` is the exact version
23
+ authority; the API surface may change until `v0.1.0`.
@@ -1,4 +1,4 @@
1
- import type { ContentState } from "@aotter/mantle-spec";
1
+ import type { ContentState, Entry } from "@aotter/mantle-spec";
2
2
  /**
3
3
  * `EntryRow` — DB row shape for `entries`. Mirrors the canonical
4
4
  * schema the runtime's migration list creates.
@@ -37,6 +37,9 @@ export interface EntryRow {
37
37
  * adding a per-impl hydration helper would let them drift.
38
38
  */
39
39
  export declare function liftLocale(data: Record<string, unknown>): string | undefined;
40
+ /** Explicit public projection. Keep this field-by-field so adding another
41
+ * persistence-only property to `EntryRow` cannot silently expose it. */
42
+ export declare function projectPublicEntry(row: EntryRow): Entry;
40
43
  export declare class EntryVersionConflict extends Error {
41
44
  readonly id: string;
42
45
  readonly expected: number;
@@ -1 +1 @@
1
- {"version":3,"file":"EntryRow.d.ts","sourceRoot":"","sources":["../../../src/domain/model/EntryRow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;;;;;;;;;;;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,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"}
@@ -8,6 +8,20 @@ export function liftLocale(data) {
8
8
  const v = data["locale"];
9
9
  return typeof v === "string" ? v : undefined;
10
10
  }
11
+ /** Explicit public projection. Keep this field-by-field so adding another
12
+ * persistence-only property to `EntryRow` cannot silently expose it. */
13
+ export function projectPublicEntry(row) {
14
+ return {
15
+ id: row.id,
16
+ collection: row.collection,
17
+ locale: row.locale,
18
+ status: row.status,
19
+ version: row.version,
20
+ data: row.data,
21
+ createdAt: row.createdAt,
22
+ updatedAt: row.updatedAt,
23
+ };
24
+ }
11
25
  export class EntryVersionConflict extends Error {
12
26
  id;
13
27
  expected;
@@ -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,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"}
@@ -16,7 +16,7 @@ import type { EntryRow } from "./EntryRow.js";
16
16
  * value-typed concept used by domain / usecase / infrastructure
17
17
  * alike — it's a per-request VO, not a request DTO.
18
18
  */
19
- export interface HandlerContext {
19
+ export interface HandlerContext<Env = unknown> {
20
20
  readonly user: {
21
21
  readonly id: string;
22
22
  } | null;
@@ -28,11 +28,9 @@ export interface HandlerContext {
28
28
  * credentials never enter runtime context. Optional preserves
29
29
  * source compatibility for legacy/internal invocations. */
30
30
  readonly auth?: HandlerAuthContext;
31
- /** Adapter-specific bindings (D1 + KV + optional feature bindings on Cloudflare).
32
- * Untyped here so the runtime stays portable consumer handlers
33
- * cast to their adapter's bindings type. The test harness passes
34
- * `{}` unless a test needs a specific shape. */
35
- readonly env: unknown;
31
+ /** Adapter-specific bindings. The default stays portable; consumers may
32
+ * supply their Worker Env type through `HandlerFn`/generated handlers. */
33
+ readonly env: Env;
36
34
  /** Cloudflare `ExecutionContext.waitUntil`-style fire-and-forget
37
35
  * bridge. Adapter populates when running in a Worker; runtime uses
38
36
  * it for after-publish KV cache writes that mustn't block the
@@ -72,12 +70,12 @@ export interface HandlerLifecycleEvent {
72
70
  * surfaces as `OUTPUT_VALIDATION_FAILED` to the caller and is a
73
71
  * handler bug.
74
72
  */
75
- export type HandlerFn<I = unknown, O = unknown> = (input: I, ctx: HandlerContext) => Promise<O> | O;
73
+ export type HandlerFn<I = unknown, O = unknown, Env = unknown> = (input: I, ctx: HandlerContext<Env>) => Promise<O> | O;
76
74
  /**
77
75
  * Erased handler shape used by the registry. `any` is intentional —
78
76
  * `unknown` re-introduces the contravariance problem that makes
79
77
  * typed handlers non-assignable. Authors never write this type; it
80
78
  * appears only on registry boundaries.
81
79
  */
82
- export type AnyHandler = HandlerFn<any, any>;
80
+ export type AnyHandler = HandlerFn<any, any, any>;
83
81
  //# sourceMappingURL=HandlerContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HandlerContext.d.ts","sourceRoot":"","sources":["../../../src/domain/model/HandlerContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IACzE;;gEAE4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IACnC;;;qDAGiD;IACjD,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB;;;qEAGiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACnD;;;iCAG6B;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;iEAC6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;yEACqE;IACrE,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAChD,KAAK,EAAE,CAAC,EACR,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEpB;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"HandlerContext.d.ts","sourceRoot":"","sources":["../../../src/domain/model/HandlerContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,cAAc,CAAC,GAAG,GAAG,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IACzE;;gEAE4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IACnC;+EAC2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB;;;qEAGiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACnD;;;iCAG6B;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;iEAC6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;yEACqE;IACrE,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,CAC/D,KAAK,EAAE,CAAC,EACR,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,KACrB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEpB;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { MediaVariantRole } from "../port/MediaStorage.js";
2
+ /** Canonical create-to-commit state for one media upload group. */
3
+ export interface PendingUploadRecord {
4
+ readonly purpose: string;
5
+ readonly filename: string;
6
+ readonly variants: ReadonlyArray<PendingUploadVariant>;
7
+ readonly alt?: string;
8
+ readonly caption?: string;
9
+ readonly expiresAt: number;
10
+ readonly createdAt: number;
11
+ }
12
+ export interface PendingUploadVariant {
13
+ readonly mimeType: string;
14
+ readonly role: MediaVariantRole;
15
+ readonly storageKey: string;
16
+ readonly expectedSize: number;
17
+ readonly maxBytes: number;
18
+ }
19
+ //# sourceMappingURL=PendingUploadRecord.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PendingUploadRecord.d.ts","sourceRoot":"","sources":["../../../src/domain/model/PendingUploadRecord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACvD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PendingUploadRecord.js","sourceRoot":"","sources":["../../../src/domain/model/PendingUploadRecord.ts"],"names":[],"mappings":""}
@@ -2,6 +2,7 @@
2
2
  * `@aotter/mantle-spec`. */
3
3
  export * from "./EntryRow.js";
4
4
  export * from "./HandlerContext.js";
5
+ export type { PendingUploadRecord, PendingUploadVariant, } from "./PendingUploadRecord.js";
5
6
  export type { SeoMeta } from "./SeoMeta.js";
6
7
  export { TemplateRegistry, type EntryContext, type ListContext, type EntryTemplate, type ListTemplate, } from "./TemplateRegistry.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/model/index.ts"],"names":[],"mappings":"AAAA;6BAC6B;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/model/index.ts"],"names":[],"mappings":"AAAA;6BAC6B;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/model/index.ts"],"names":[],"mappings":"AAAA;6BAC6B;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AAEpC,OAAO,EACL,gBAAgB,GAKjB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/model/index.ts"],"names":[],"mappings":"AAAA;6BAC6B;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AAMpC,OAAO,EACL,gBAAgB,GAKjB,MAAM,uBAAuB,CAAC"}
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * `DatabaseDriver` — runtime's adapter-agnostic interface to
3
- * persistent relational state. The canonical tables (`entries`,
4
- * `revisions`, `approvals`, `users`, `staff`, `sessions`,
5
- * `site_config`) live behind this
6
- * surface; the runtime never sees `D1Database`, `Pool` (postgres),
3
+ * persistent relational state. Entries, revisions, approvals, site config,
4
+ * auth support, and media tables declared by the canonical migrations live
5
+ * behind this surface; the runtime never sees `D1Database`, `Pool` (postgres),
7
6
  * or any concrete driver.
8
7
  *
9
8
  * The shape is intentionally close to D1's API (which is itself close
@@ -13,7 +12,7 @@
13
12
  *
14
13
  * - `mantle-cloudflare` wraps `env.DB` (D1) directly (1:1 surface).
15
14
  * - A future Postgres adapter wraps `pg` to the same shape.
16
- * - The test harness ships an in-memory impl in `test/fakes/`.
15
+ * - Core tests supply in-memory implementations under `test/fakes/`.
17
16
  *
18
17
  * See ADR-0011 § DatabaseDriver for the rationale (and the alternatives
19
18
  * — mega-port, function-injection, plugin packages — that were
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseDriver.d.ts","sourceRoot":"","sources":["../../../src/domain/port/DatabaseDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACxC;;2BAEuB;IACvB,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAChF;;sEAEkE;IAClE,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;8BAE0B;IAC1B,IAAI,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,iBAAiB,CAAC;IAC3D,qEAAqE;IACrE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,+BAA+B;IAC/B,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1D;8EAC0E;IAC1E,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACvD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,SAAS;IACxB;iDAC6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;kDAC8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"DatabaseDriver.d.ts","sourceRoot":"","sources":["../../../src/domain/port/DatabaseDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACxC;;2BAEuB;IACvB,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAChF;;sEAEkE;IAClE,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;8BAE0B;IAC1B,IAAI,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,iBAAiB,CAAC;IAC3D,qEAAqE;IACrE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,+BAA+B;IAC/B,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1D;8EAC0E;IAC1E,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACvD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,SAAS;IACxB;iDAC6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;kDAC8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,49 @@
1
+ import type { ContentState, Entry } from "@aotter/mantle-spec";
2
+ export type EntryDataScalar = string | number | boolean;
3
+ export interface ReadEntryBySlugArgs {
4
+ readonly collection: string;
5
+ readonly slug: string;
6
+ /** string = exact locale, null = missing/JSON null, omitted = any locale. */
7
+ readonly locale?: string | null;
8
+ readonly status?: ContentState;
9
+ }
10
+ export interface ReadEntryByDataFieldArgs {
11
+ readonly collection: string;
12
+ readonly field: string;
13
+ readonly value: EntryDataScalar;
14
+ readonly locale?: string | null;
15
+ readonly status?: ContentState;
16
+ }
17
+ export interface ReadEntriesByDataFieldInArgs {
18
+ readonly collection: string;
19
+ readonly field: string;
20
+ readonly values: readonly string[];
21
+ readonly locale?: string | null;
22
+ readonly status?: ContentState;
23
+ }
24
+ export interface ReadPublishedEntriesArgs {
25
+ readonly locale?: string | null;
26
+ readonly collection?: string;
27
+ readonly limit?: number;
28
+ }
29
+ export interface FindManyEntriesByDataFieldArgs {
30
+ readonly collection: string;
31
+ readonly field: string;
32
+ readonly value: EntryDataScalar;
33
+ readonly limit: number;
34
+ }
35
+ /**
36
+ * Semantic read surface for render and adapter queries. Unlike
37
+ * `EntryRepository`, this port is not lifecycle-decorated: reads do not fire
38
+ * mutation hooks. Public results are projected to spec `Entry`, so persistence
39
+ * fields such as `authorId` cannot leak into templates or public helpers.
40
+ */
41
+ export interface EntryReader {
42
+ readById(id: string): Promise<Entry | null>;
43
+ readBySlug(args: ReadEntryBySlugArgs): Promise<Entry | null>;
44
+ readByDataField(args: ReadEntryByDataFieldArgs): Promise<Entry | null>;
45
+ readByDataFieldIn(args: ReadEntriesByDataFieldInArgs): Promise<readonly Entry[]>;
46
+ readPublished(args?: ReadPublishedEntriesArgs): Promise<readonly Entry[]>;
47
+ findManyByDataField(args: FindManyEntriesByDataFieldArgs): Promise<readonly Entry[]>;
48
+ }
49
+ //# sourceMappingURL=EntryReader.d.ts.map
@@ -0,0 +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,MAAM,EAAE,CAAC;IACnC,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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=EntryReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryReader.js","sourceRoot":"","sources":["../../../src/domain/port/EntryReader.ts"],"names":[],"mappings":""}
@@ -7,7 +7,8 @@ import type { AnyHandler, HandlerFn } from "../model/HandlerContext.js";
7
7
  *
8
8
  * The registry is a usecase-level port: use cases (specifically
9
9
  * `InvokeProcedureUseCase`) depend on it; the consumer's
10
- * `mantleConfig.ts` populates it. Lives here in `domain/port/` (not
10
+ * `src/mantle/config.ts` supplies it through the runtime/Worker `handlers`
11
+ * option. Lives here in `domain/port/` (not
11
12
  * `usecase/port/`) because the implementation IS the port — there's
12
13
  * no separate adapter for it.
13
14
  *
@@ -16,7 +17,7 @@ import type { AnyHandler, HandlerFn } from "../model/HandlerContext.js";
16
17
  * registered function before the runtime accepts traffic.
17
18
  */
18
19
  export interface HandlerRegistry {
19
- register<I, O>(ref: string, fn: HandlerFn<I, O>): void;
20
+ register<I, O, Env = unknown>(ref: string, fn: HandlerFn<I, O, Env>): void;
20
21
  get(ref: string): AnyHandler | undefined;
21
22
  has(ref: string): boolean;
22
23
  /** Snapshot of registered refs — used by the boot validator to
@@ -25,7 +26,7 @@ export interface HandlerRegistry {
25
26
  }
26
27
  export declare class InMemoryHandlerRegistry implements HandlerRegistry {
27
28
  private readonly map;
28
- register<I, O>(ref: string, fn: HandlerFn<I, O>): void;
29
+ register<I, O, Env = unknown>(ref: string, fn: HandlerFn<I, O, Env>): void;
29
30
  get(ref: string): AnyHandler | undefined;
30
31
  has(ref: string): boolean;
31
32
  list(): readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"HandlerRegistry.d.ts","sourceRoot":"","sources":["../../../src/domain/port/HandlerRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACV,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B;0EACsE;IACtE,IAAI,IAAI,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiC;IAErD,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAItD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,IAAI,IAAI,SAAS,MAAM,EAAE;CAG1B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAC7C,eAAe,CAMjB"}
1
+ {"version":3,"file":"HandlerRegistry.d.ts","sourceRoot":"","sources":["../../../src/domain/port/HandlerRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACV,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B;0EACsE;IACtE,IAAI,IAAI,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiC;IAErD,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI;IAI1E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,IAAI,IAAI,SAAS,MAAM,EAAE;CAG1B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAC7C,eAAe,CAMjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"HandlerRegistry.js","sourceRoot":"","sources":["../../../src/domain/port/HandlerRegistry.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,uBAAuB;IACjB,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;IAErD,QAAQ,CAAO,GAAW,EAAE,EAAmB;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAgB,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAA8C;IAE9C,MAAM,CAAC,GAAG,IAAI,uBAAuB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"HandlerRegistry.js","sourceRoot":"","sources":["../../../src/domain/port/HandlerRegistry.ts"],"names":[],"mappings":"AA+BA,MAAM,OAAO,uBAAuB;IACjB,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;IAErD,QAAQ,CAAsB,GAAW,EAAE,EAAwB;QACjE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAgB,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAA8C;IAE9C,MAAM,CAAC,GAAG,IAAI,uBAAuB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { PendingUploadRecord } from "../model/PendingUploadRecord.js";
2
+ /** Strongly-consistent create-to-commit media-upload state. */
3
+ export interface PendingUploadRepository {
4
+ save(uploadGroupId: string, record: PendingUploadRecord): Promise<void>;
5
+ findById(uploadGroupId: string): Promise<PendingUploadRecord | null>;
6
+ delete(uploadGroupId: string): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=PendingUploadRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PendingUploadRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/port/PendingUploadRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,+DAA+D;AAC/D,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PendingUploadRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PendingUploadRepository.js","sourceRoot":"","sources":["../../../src/domain/port/PendingUploadRepository.ts"],"names":[],"mappings":""}
@@ -15,6 +15,8 @@ import type { TemplateRegistry } from "../model/TemplateRegistry.js";
15
15
  export interface PublishOrchestrator {
16
16
  publish(request: PublishEntryRequest): Promise<void>;
17
17
  unpublish(request: PublishEntryRequest): Promise<void>;
18
+ /** Remove every public artifact affected by editable site settings. */
19
+ invalidateAll(): Promise<void>;
18
20
  }
19
21
  export interface PublishEntryRequest {
20
22
  readonly entryId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"PublishOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/domain/port/PublishOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC"}
1
+ {"version":3,"file":"PublishOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/domain/port/PublishOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,uEAAuE;IACvE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC"}
@@ -22,6 +22,12 @@ import type { MediaPurposePolicy, SiteConfig, SiteDefaults } from "@aotter/mantl
22
22
  export interface SiteConfigRepository {
23
23
  seed(defaults: SiteDefaults | undefined): Promise<void>;
24
24
  load(): Promise<SiteConfig>;
25
+ /** Persist the operator-owned subset exposed by the Admin settings UI.
26
+ * Omitted fields are unchanged; an empty string intentionally clears a
27
+ * value. Code-canonical locales and media purposes are never writable
28
+ * through this path. Optional during the `CmsRuntime.db` compatibility
29
+ * window; canonical Mantle runtimes always provide it. */
30
+ updateEditable?(args: UpdateEditableSiteConfigArgs): Promise<void>;
25
31
  readLocales(): Promise<readonly string[]>;
26
32
  /** Declared media purpose taxonomy (`SiteConfig.media.purposes`).
27
33
  * Empty array when the deployment didn't declare any — symmetric
@@ -29,4 +35,11 @@ export interface SiteConfigRepository {
29
35
  * catalog to gate `create_media_upload` / `commit_media_upload`. */
30
36
  readMediaPurposes(): Promise<readonly MediaPurposePolicy[]>;
31
37
  }
38
+ export interface UpdateEditableSiteConfigArgs {
39
+ readonly brand?: string;
40
+ readonly title?: string;
41
+ readonly description?: string;
42
+ readonly ga4MeasurementId?: string;
43
+ readonly facebookPixelId?: string;
44
+ }
32
45
  //# sourceMappingURL=SiteConfigRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/port/SiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B,WAAW,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAC1C;;;yEAGqE;IACrE,iBAAiB,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;CAC7D"}
1
+ {"version":3,"file":"SiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/port/SiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B;;;;+DAI2D;IAC3D,cAAc,CAAC,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,WAAW,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAC1C;;;yEAGqE;IACrE,iBAAiB,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC"}
@@ -17,11 +17,13 @@ export type { DatabaseDriver, PreparedStatement, RunResult, BatchResult, Migrati
17
17
  export type { KvCache, KvPutOptions, KvListResult } from "./KvCache.js";
18
18
  export type { AssetServer } from "./AssetServer.js";
19
19
  export type { EntryRepository, CreateEntryArgs, UpdateEntryArgs, DeleteEntryArgs, TransitionStatusArgs, ListEntriesArgs, ListEntriesResult, FindEntryByDataFieldArgs, FindEntryByDataFieldsArgs, MutationHookFields, } from "./EntryRepository.js";
20
- export type { SiteConfigRepository } from "./SiteConfigRepository.js";
20
+ export type { EntryReader, EntryDataScalar, ReadEntryBySlugArgs, ReadEntryByDataFieldArgs, ReadEntriesByDataFieldInArgs, ReadPublishedEntriesArgs, FindManyEntriesByDataFieldArgs, } from "./EntryReader.js";
21
+ export type { SiteConfigRepository, UpdateEditableSiteConfigArgs, } from "./SiteConfigRepository.js";
21
22
  export type { PublishOrchestrator, PublishEntryRequest, } from "./PublishOrchestrator.js";
22
23
  export type { MediaStorage, CreateUploadArgs, CreateUploadVariantSpec, CreateUploadResult, UploadCapability, CommitUploadArgs, CommitUploadVariantSpec, GetPublicUrlArgs, DeleteObjectArgs, MediaAsset, MediaVariant, MediaVariantRole, } from "./MediaStorage.js";
23
24
  export { pickPrimaryVariant } from "./MediaStorage.js";
24
25
  export type { MediaAssetRepository } from "./MediaAssetRepository.js";
26
+ export type { PendingUploadRepository } from "./PendingUploadRepository.js";
25
27
  export type { EmailSender, EmailSendArgs, } from "./EmailSender.js";
26
28
  export type { DeferredHookDispatcher, DeferredHookEnvelope, DeferredLifecycleHook, CtxSnapshot, } from "./DeferredHookDispatcher.js";
27
29
  export { DEFERRED_HOOK_ENVELOPE_VERSION, ctxSnapshotFrom, } from "./DeferredHookDispatcher.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/port/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,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,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EACV,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,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,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;;;;;;;;;;;;;;GAcG;AACH,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,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,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,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":"AAwDA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAYvD,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":"AAoEA,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"}
@@ -2,8 +2,7 @@
2
2
  * `domain/service/` — pure stateless algorithms operating on the
3
3
  * domain model + spec types. No env, no I/O.
4
4
  *
5
- * `PublishedEntries` + `JoinedEntryReader` take a `DatabaseDriver`
6
- * and perform real reads; they live in `./io/` and are imported
5
+ * Services that coordinate I/O ports live in `./io/` and are imported
7
6
  * directly by their consumers — NOT re-exported here, so the barrel's
8
7
  * purity claim above holds.
9
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
@@ -2,8 +2,7 @@
2
2
  * `domain/service/` — pure stateless algorithms operating on the
3
3
  * domain model + spec types. No env, no I/O.
4
4
  *
5
- * `PublishedEntries` + `JoinedEntryReader` take a `DatabaseDriver`
6
- * and perform real reads; they live in `./io/` and are imported
5
+ * Services that coordinate I/O ports live in `./io/` and are imported
7
6
  * directly by their consumers — NOT re-exported here, so the barrel's
8
7
  * purity claim above holds.
9
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ContentState, Entry, SchemaManifest } from "@aotter/mantle-spec";
2
- import type { DatabaseDriver } from "../../port/DatabaseDriver.js";
2
+ import type { EntryReader } from "../../port/EntryReader.js";
3
3
  /**
4
4
  * `joinParentIfTranslation` — when `entry.collection` declares
5
5
  * `translates.parent`, fetch the parent and merge its data into the
@@ -15,7 +15,7 @@ import type { DatabaseDriver } from "../../port/DatabaseDriver.js";
15
15
  * Preview omits the filter — a draft translation can preview against
16
16
  * its already-published parent.
17
17
  */
18
- export declare function joinParentIfTranslation(db: DatabaseDriver, schemas: ReadonlyMap<string, SchemaManifest>, entry: Entry, options?: {
18
+ export declare function joinParentIfTranslation(reader: EntryReader, schemas: ReadonlyMap<string, SchemaManifest>, entry: Entry, options?: {
19
19
  readonly parentStatus?: ContentState;
20
20
  }): Promise<Entry>;
21
21
  /**
@@ -27,7 +27,7 @@ export declare function joinParentIfTranslation(db: DatabaseDriver, schemas: Rea
27
27
  * mixed collections ever land here, fall back path-per-entry would
28
28
  * be needed.
29
29
  */
30
- export declare function joinParentForList(db: DatabaseDriver, schemas: ReadonlyMap<string, SchemaManifest>, entries: readonly Entry[], options?: {
30
+ export declare function joinParentForList(reader: EntryReader, schemas: ReadonlyMap<string, SchemaManifest>, entries: readonly Entry[], options?: {
31
31
  readonly parentStatus?: ContentState;
32
32
  }): Promise<Entry[]>;
33
33
  //# sourceMappingURL=JoinedEntryReader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"JoinedEntryReader.d.ts","sourceRoot":"","sources":["../../../../src/domain/service/io/JoinedEntryReader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAMnE;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAO,GACrD,OAAO,CAAC,KAAK,CAAC,CAuBhB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,OAAO,EAAE,SAAS,KAAK,EAAE,EACzB,OAAO,GAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAO,GACrD,OAAO,CAAC,KAAK,EAAE,CAAC,CA0ClB"}
1
+ {"version":3,"file":"JoinedEntryReader.d.ts","sourceRoot":"","sources":["../../../../src/domain/service/io/JoinedEntryReader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAO,GACrD,OAAO,CAAC,KAAK,CAAC,CAuBhB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,OAAO,EAAE,SAAS,KAAK,EAAE,EACzB,OAAO,GAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAO,GACrD,OAAO,CAAC,KAAK,EAAE,CAAC,CA0ClB"}
@@ -1,4 +1,3 @@
1
- import { readEntriesByDataFieldIn, readEntryByDataField, } from "./PublishedEntries.js";
2
1
  /**
3
2
  * `joinParentIfTranslation` — when `entry.collection` declares
4
3
  * `translates.parent`, fetch the parent and merge its data into the
@@ -14,7 +13,7 @@ import { readEntriesByDataFieldIn, readEntryByDataField, } from "./PublishedEntr
14
13
  * Preview omits the filter — a draft translation can preview against
15
14
  * its already-published parent.
16
15
  */
17
- export async function joinParentIfTranslation(db, schemas, entry, options = {}) {
16
+ export async function joinParentIfTranslation(reader, schemas, entry, options = {}) {
18
17
  const schema = schemas.get(entry.collection);
19
18
  const translates = schema?.spec.translates;
20
19
  if (!translates)
@@ -22,7 +21,7 @@ export async function joinParentIfTranslation(db, schemas, entry, options = {})
22
21
  const joinValue = entry.data[translates.on];
23
22
  if (typeof joinValue !== "string" || joinValue === "")
24
23
  return entry;
25
- const parent = await readEntryByDataField(db, {
24
+ const parent = await reader.readByDataField({
26
25
  collection: translates.parent,
27
26
  field: translates.on,
28
27
  value: joinValue,
@@ -47,7 +46,7 @@ export async function joinParentIfTranslation(db, schemas, entry, options = {})
47
46
  * mixed collections ever land here, fall back path-per-entry would
48
47
  * be needed.
49
48
  */
50
- export async function joinParentForList(db, schemas, entries, options = {}) {
49
+ export async function joinParentForList(reader, schemas, entries, options = {}) {
51
50
  if (entries.length === 0)
52
51
  return [];
53
52
  const probe = schemas.get(entries[0].collection);
@@ -62,7 +61,7 @@ export async function joinParentForList(db, schemas, entries, options = {}) {
62
61
  }
63
62
  if (joinValues.size === 0)
64
63
  return [...entries];
65
- const parents = await readEntriesByDataFieldIn(db, {
64
+ const parents = await reader.readByDataFieldIn({
66
65
  collection: translates.parent,
67
66
  field: translates.on,
68
67
  values: [...joinValues],
@@ -1 +1 @@
1
- {"version":3,"file":"JoinedEntryReader.js","sourceRoot":"","sources":["../../../../src/domain/service/io/JoinedEntryReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JoinedEntryReader.js","sourceRoot":"","sources":["../../../../src/domain/service/io/JoinedEntryReader.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,4 @@
1
- /**
2
- * `domain/service/io/` — read helpers that take a `DatabaseDriver`.
3
- * Domain-level deps but perform real IO, so kept out of the parent
4
- * `domain/service` barrel's purity claim.
5
- */
6
- export * from "./PublishedEntries.js";
1
+ /** Domain services that coordinate narrow I/O ports. */
7
2
  export * from "./JoinedEntryReader.js";
8
3
  export * from "./EntryWriteGuard.js";
9
4
  export * from "./EntryDeleteGuard.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/service/io/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/service/io/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
@@ -1,9 +1,4 @@
1
- /**
2
- * `domain/service/io/` — read helpers that take a `DatabaseDriver`.
3
- * Domain-level deps but perform real IO, so kept out of the parent
4
- * `domain/service` barrel's purity claim.
5
- */
6
- export * from "./PublishedEntries.js";
1
+ /** Domain services that coordinate narrow I/O ports. */
7
2
  export * from "./JoinedEntryReader.js";
8
3
  export * from "./EntryWriteGuard.js";
9
4
  export * from "./EntryDeleteGuard.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/service/io/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/service/io/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}