@aotter/mantle-runtime 0.0.11-alpha.61 → 0.0.11-alpha.63

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 (162) hide show
  1. package/README.md +4 -0
  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/PendingUploadRecord.d.ts +19 -0
  7. package/dist/domain/model/PendingUploadRecord.d.ts.map +1 -0
  8. package/dist/domain/model/PendingUploadRecord.js.map +1 -0
  9. package/dist/domain/model/index.d.ts +1 -0
  10. package/dist/domain/model/index.d.ts.map +1 -1
  11. package/dist/domain/model/index.js.map +1 -1
  12. package/dist/domain/port/EntryReader.d.ts +49 -0
  13. package/dist/domain/port/EntryReader.d.ts.map +1 -0
  14. package/dist/domain/port/EntryReader.js +2 -0
  15. package/dist/domain/port/EntryReader.js.map +1 -0
  16. package/dist/domain/port/PendingUploadRepository.d.ts +8 -0
  17. package/dist/domain/port/PendingUploadRepository.d.ts.map +1 -0
  18. package/dist/domain/port/PendingUploadRepository.js +2 -0
  19. package/dist/domain/port/PendingUploadRepository.js.map +1 -0
  20. package/dist/domain/port/PublishOrchestrator.d.ts +2 -0
  21. package/dist/domain/port/PublishOrchestrator.d.ts.map +1 -1
  22. package/dist/domain/port/SiteConfigRepository.d.ts +13 -0
  23. package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -1
  24. package/dist/domain/port/index.d.ts +3 -1
  25. package/dist/domain/port/index.d.ts.map +1 -1
  26. package/dist/domain/port/index.js.map +1 -1
  27. package/dist/domain/service/PathMatcher.d.ts +2 -0
  28. package/dist/domain/service/PathMatcher.d.ts.map +1 -1
  29. package/dist/domain/service/PathMatcher.js +26 -20
  30. package/dist/domain/service/PathMatcher.js.map +1 -1
  31. package/dist/domain/service/index.d.ts +1 -2
  32. package/dist/domain/service/index.d.ts.map +1 -1
  33. package/dist/domain/service/index.js +1 -2
  34. package/dist/domain/service/index.js.map +1 -1
  35. package/dist/domain/service/io/JoinedEntryReader.d.ts +3 -3
  36. package/dist/domain/service/io/JoinedEntryReader.d.ts.map +1 -1
  37. package/dist/domain/service/io/JoinedEntryReader.js +4 -5
  38. package/dist/domain/service/io/JoinedEntryReader.js.map +1 -1
  39. package/dist/domain/service/io/index.d.ts +1 -6
  40. package/dist/domain/service/io/index.d.ts.map +1 -1
  41. package/dist/domain/service/io/index.js +1 -6
  42. package/dist/domain/service/io/index.js.map +1 -1
  43. package/dist/index.d.ts +3 -2
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +2 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
  48. package/dist/infrastructure/boot/canonicalMigrations.js +35 -0
  49. package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
  50. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +13 -2
  51. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
  52. package/dist/infrastructure/persistence/DatabaseEntryRepository.js +175 -13
  53. package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
  54. package/dist/infrastructure/persistence/DatabasePendingUploadRepository.d.ts +13 -0
  55. package/dist/infrastructure/persistence/DatabasePendingUploadRepository.d.ts.map +1 -0
  56. package/dist/infrastructure/persistence/DatabasePendingUploadRepository.js +36 -0
  57. package/dist/infrastructure/persistence/DatabasePendingUploadRepository.js.map +1 -0
  58. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts +5 -1
  59. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -1
  60. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +37 -5
  61. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -1
  62. package/dist/infrastructure/persistence/index.d.ts +1 -0
  63. package/dist/infrastructure/persistence/index.d.ts.map +1 -1
  64. package/dist/infrastructure/persistence/index.js +1 -0
  65. package/dist/infrastructure/persistence/index.js.map +1 -1
  66. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts +5 -3
  67. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts.map +1 -1
  68. package/dist/infrastructure/render/HtmlPublishOrchestrator.js +25 -11
  69. package/dist/infrastructure/render/HtmlPublishOrchestrator.js.map +1 -1
  70. package/dist/infrastructure/testing/HttpBenchmarkHarness.d.ts +41 -0
  71. package/dist/infrastructure/testing/HttpBenchmarkHarness.d.ts.map +1 -0
  72. package/dist/infrastructure/testing/HttpBenchmarkHarness.js +88 -0
  73. package/dist/infrastructure/testing/HttpBenchmarkHarness.js.map +1 -0
  74. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts +42 -0
  75. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts.map +1 -0
  76. package/dist/infrastructure/testing/IndexCoverageHarness.js +222 -0
  77. package/dist/infrastructure/testing/IndexCoverageHarness.js.map +1 -0
  78. package/dist/infrastructure/testing/index.d.ts +3 -0
  79. package/dist/infrastructure/testing/index.d.ts.map +1 -0
  80. package/dist/infrastructure/testing/index.js +3 -0
  81. package/dist/infrastructure/testing/index.js.map +1 -0
  82. package/dist/runtime.d.ts +10 -2
  83. package/dist/runtime.d.ts.map +1 -1
  84. package/dist/runtime.js +16 -9
  85. package/dist/runtime.js.map +1 -1
  86. package/dist/testing.d.ts +3 -0
  87. package/dist/testing.d.ts.map +1 -0
  88. package/dist/testing.js +3 -0
  89. package/dist/testing.js.map +1 -0
  90. package/dist/usecase/dto/index.d.ts +1 -0
  91. package/dist/usecase/dto/index.d.ts.map +1 -1
  92. package/dist/usecase/dto/index.js +1 -0
  93. package/dist/usecase/dto/index.js.map +1 -1
  94. package/dist/usecase/dto/site/UpdateSiteSettingsRequest.d.ts +3 -0
  95. package/dist/usecase/dto/site/UpdateSiteSettingsRequest.d.ts.map +1 -0
  96. package/dist/usecase/dto/site/UpdateSiteSettingsRequest.js +2 -0
  97. package/dist/usecase/dto/site/UpdateSiteSettingsRequest.js.map +1 -0
  98. package/dist/usecase/dto/site/index.d.ts +2 -0
  99. package/dist/usecase/dto/site/index.d.ts.map +1 -0
  100. package/dist/usecase/dto/site/index.js +2 -0
  101. package/dist/usecase/dto/site/index.js.map +1 -0
  102. package/dist/usecase/index.d.ts +1 -0
  103. package/dist/usecase/index.d.ts.map +1 -1
  104. package/dist/usecase/index.js +1 -0
  105. package/dist/usecase/index.js.map +1 -1
  106. package/dist/usecase/media/CommitMediaUploadUseCase.d.ts +4 -4
  107. package/dist/usecase/media/CommitMediaUploadUseCase.d.ts.map +1 -1
  108. package/dist/usecase/media/CommitMediaUploadUseCase.js +9 -11
  109. package/dist/usecase/media/CommitMediaUploadUseCase.js.map +1 -1
  110. package/dist/usecase/media/CreateMediaUploadUseCase.d.ts +3 -3
  111. package/dist/usecase/media/CreateMediaUploadUseCase.d.ts.map +1 -1
  112. package/dist/usecase/media/CreateMediaUploadUseCase.js +5 -5
  113. package/dist/usecase/media/CreateMediaUploadUseCase.js.map +1 -1
  114. package/dist/usecase/media/index.d.ts +1 -1
  115. package/dist/usecase/media/index.d.ts.map +1 -1
  116. package/dist/usecase/media/index.js +1 -1
  117. package/dist/usecase/media/index.js.map +1 -1
  118. package/dist/usecase/media/mediaAllowlist.d.ts +0 -5
  119. package/dist/usecase/media/mediaAllowlist.d.ts.map +1 -1
  120. package/dist/usecase/media/mediaAllowlist.js +0 -5
  121. package/dist/usecase/media/mediaAllowlist.js.map +1 -1
  122. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +3 -3
  123. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +1 -1
  124. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +6 -7
  125. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +1 -1
  126. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +3 -3
  127. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +1 -1
  128. package/dist/usecase/render/ComposeLlmsTxtUseCase.js +4 -5
  129. package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +1 -1
  130. package/dist/usecase/render/ComposeSitemapUseCase.d.ts +3 -3
  131. package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +1 -1
  132. package/dist/usecase/render/ComposeSitemapUseCase.js +4 -5
  133. package/dist/usecase/render/ComposeSitemapUseCase.js.map +1 -1
  134. package/dist/usecase/render/PreviewEntryUseCase.d.ts +3 -3
  135. package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +1 -1
  136. package/dist/usecase/render/PreviewEntryUseCase.js +5 -6
  137. package/dist/usecase/render/PreviewEntryUseCase.js.map +1 -1
  138. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +3 -3
  139. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +1 -1
  140. package/dist/usecase/render/RenderEntryLiveUseCase.js +5 -6
  141. package/dist/usecase/render/RenderEntryLiveUseCase.js.map +1 -1
  142. package/dist/usecase/render/RenderListLiveUseCase.d.ts +3 -3
  143. package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +1 -1
  144. package/dist/usecase/render/RenderListLiveUseCase.js +5 -6
  145. package/dist/usecase/render/RenderListLiveUseCase.js.map +1 -1
  146. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts +12 -0
  147. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -0
  148. package/dist/usecase/site/UpdateSiteSettingsUseCase.js +18 -0
  149. package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -0
  150. package/dist/usecase/site/index.d.ts +2 -0
  151. package/dist/usecase/site/index.d.ts.map +1 -0
  152. package/dist/usecase/site/index.js +2 -0
  153. package/dist/usecase/site/index.js.map +1 -0
  154. package/package.json +6 -2
  155. package/dist/domain/service/io/PublishedEntries.d.ts +0 -69
  156. package/dist/domain/service/io/PublishedEntries.d.ts.map +0 -1
  157. package/dist/domain/service/io/PublishedEntries.js +0 -116
  158. package/dist/domain/service/io/PublishedEntries.js.map +0 -1
  159. package/dist/usecase/media/PendingUploadRecord.d.ts +0 -36
  160. package/dist/usecase/media/PendingUploadRecord.d.ts.map +0 -1
  161. package/dist/usecase/media/PendingUploadRecord.js.map +0 -1
  162. /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).
@@ -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"}
@@ -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"}
@@ -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":""}
@@ -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"}
@@ -12,4 +12,6 @@
12
12
  * (HTTP layer) can call it without dragging an HTTP framework dep.
13
13
  */
14
14
  export declare function matchPath(triggerPath: string, requestPath: string): Record<string, string> | null;
15
+ /** Compile the immutable Trigger half once for mounted HTTP routes. */
16
+ export declare function compilePathMatcher(triggerPath: string): (requestPath: string) => Record<string, string> | null;
15
17
  //# 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,CAwB/B"}
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"}
@@ -12,32 +12,38 @@
12
12
  * (HTTP layer) can call it without dragging an HTTP framework dep.
13
13
  */
14
14
  export function matchPath(triggerPath, requestPath) {
15
+ return compilePathMatcher(triggerPath)(requestPath);
16
+ }
17
+ /** Compile the immutable Trigger half once for mounted HTTP routes. */
18
+ export function compilePathMatcher(triggerPath) {
15
19
  // `/api/posts` and `/api/posts/` are the same resource; without
16
20
  // normalization the trailing-slash side gains an empty segment and
17
21
  // segment-count alone defeats the match.
18
22
  const tParts = stripTrailingSlash(triggerPath).split("/");
19
- const rParts = stripTrailingSlash(requestPath).split("/");
20
- if (tParts.length !== rParts.length)
21
- return null;
22
- const params = {};
23
- for (let i = 0; i < tParts.length; i++) {
24
- const t = tParts[i];
25
- const r = rParts[i];
26
- // decodeURIComponent throws URIError on malformed encoding
27
- // (e.g. `%GG`); surface as a routing miss, not a 500.
28
- const decoded = safeDecode(r);
29
- if (decoded === null)
23
+ return (requestPath) => {
24
+ const rParts = stripTrailingSlash(requestPath).split("/");
25
+ if (tParts.length !== rParts.length)
30
26
  return null;
31
- if (t.startsWith("{") && t.endsWith("}")) {
32
- params[t.slice(1, -1)] = decoded;
27
+ const params = {};
28
+ for (let i = 0; i < tParts.length; i++) {
29
+ const t = tParts[i];
30
+ const r = rParts[i];
31
+ // decodeURIComponent throws URIError on malformed encoding
32
+ // (e.g. `%GG`); surface as a routing miss, not a 500.
33
+ const decoded = safeDecode(r);
34
+ if (decoded === null)
35
+ return null;
36
+ if (t.startsWith("{") && t.endsWith("}")) {
37
+ params[t.slice(1, -1)] = decoded;
38
+ }
39
+ else if (t !== decoded) {
40
+ // Decode literals too so `/api/by%2Dtag` matches trigger
41
+ // `/api/by-tag` (percent-encoded equivalent of the same byte).
42
+ return null;
43
+ }
33
44
  }
34
- else if (t !== decoded) {
35
- // Decode literals too so `/api/by%2Dtag` matches trigger
36
- // `/api/by-tag` (percent-encoded equivalent of the same byte).
37
- return null;
38
- }
39
- }
40
- return params;
45
+ return params;
46
+ };
41
47
  }
42
48
  function safeDecode(segment) {
43
49
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"PathMatcher.js","sourceRoot":"","sources":["../../../src/domain/service/PathMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CACvB,WAAmB,EACnB,WAAmB;IAEnB,gEAAgE;IAChE,mEAAmE;IACnE,yCAAyC;IACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACrB,2DAA2D;QAC3D,sDAAsD;QACtD,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACnC,CAAC;aAAM,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YACzB,yDAAyD;YACzD,+DAA+D;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,SAAS,kBAAkB,CAAC,CAAS;IACnC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"PathMatcher.js","sourceRoot":"","sources":["../../../src/domain/service/PathMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CACvB,WAAmB,EACnB,WAAmB;IAEnB,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAChC,WAAmB;IAEnB,gEAAgE;IAChE,mEAAmE;IACnE,yCAAyC;IACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,OAAO,CAAC,WAAW,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACjD,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACrB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACrB,2DAA2D;YAC3D,sDAAsD;YACtD,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAClC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACnC,CAAC;iBAAM,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBACzB,yDAAyD;gBACzD,+DAA+D;gBAC/D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,SAAS,kBAAkB,CAAC,CAAS;IACnC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,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"}
package/dist/index.d.ts CHANGED
@@ -18,6 +18,7 @@ export { createCmsRuntime, type CreateCmsRuntimeArgs, type CmsRuntime, } from ".
18
18
  export type { DatabaseDriver, PreparedStatement, RunResult, BatchResult, MigrationRunner, Migration, } from "./domain/port/DatabaseDriver.js";
19
19
  export type { KvCache, KvPutOptions, KvListResult } from "./domain/port/KvCache.js";
20
20
  export type { AssetServer } from "./domain/port/AssetServer.js";
21
+ export type { EntryReader, EntryDataScalar, ReadEntryBySlugArgs, ReadEntryByDataFieldArgs, ReadEntriesByDataFieldInArgs, ReadPublishedEntriesArgs, FindManyEntriesByDataFieldArgs, } from "./domain/port/EntryReader.js";
21
22
  export type { MediaStorage, CreateUploadArgs, CreateUploadVariantSpec, CreateUploadResult, UploadCapability, CommitUploadArgs, CommitUploadVariantSpec, GetPublicUrlArgs, DeleteObjectArgs, MediaAsset, MediaVariant, MediaVariantRole, } from "./domain/port/MediaStorage.js";
22
23
  export { pickPrimaryVariant } from "./domain/port/MediaStorage.js";
23
24
  export type { MediaAssetRepository, MediaAssetListArgs, MediaAssetListResult, } from "./domain/port/MediaAssetRepository.js";
@@ -33,9 +34,9 @@ export { createPublicPathResolver, type PublicPathResolver, type PublicPathResol
33
34
  export { composeEntrySeoMeta, renderSeoTagsHtml, type ComposeEntrySeoMetaArgs, type SiblingTranslation, } from "./domain/service/SeoMetaComposer.js";
34
35
  export { entryHtmlKey, entryMarkdownKey, entryHtmlKeyFromParts, entryMarkdownKeyFromParts, listHtmlKey, llmsTxtKey, } from "./domain/service/PublishKeys.js";
35
36
  export { serializeEntryAsMarkdown } from "./domain/service/MarkdownSerializer.js";
36
- export { readEntryBySlug } from "./domain/service/io/PublishedEntries.js";
37
+ export { readEntryBySlug } from "./infrastructure/persistence/DatabaseEntryRepository.js";
37
38
  export { inferLocaleFromPath, isKnownLocale, siteConfigFromDefaults, toUrlLocale, } from "./domain/service/LocaleNegotiator.js";
38
- export { matchPath } from "./domain/service/PathMatcher.js";
39
+ export { compilePathMatcher, matchPath } from "./domain/service/PathMatcher.js";
39
40
  export { evaluateAuthAll } from "./domain/service/AuthPredicateEvaluator.js";
40
41
  export { coerceViewParams, ViewParamCoercionError, } from "./domain/service/ViewParamCoercer.js";
41
42
  export { McpJsonRpcDispatcher, type McpAuthContext, type McpUseCases, } from "./infrastructure/mcp/McpJsonRpcDispatcher.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AAKtB,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACpF,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,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,+BAA+B,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,WAAW,EACX,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,GACZ,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAKzF,OAAO,EAAE,KAAK,WAAW,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGrF,YAAY,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,GACrB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAI9C,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,8CAA8C,CAAC;AAItD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAIpF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -30,9 +30,9 @@ export { composeEntrySeoMeta, renderSeoTagsHtml, } from "./domain/service/SeoMet
30
30
  // exported one-by-one instead of exposing the whole service barrel.
31
31
  export { entryHtmlKey, entryMarkdownKey, entryHtmlKeyFromParts, entryMarkdownKeyFromParts, listHtmlKey, llmsTxtKey, } from "./domain/service/PublishKeys.js";
32
32
  export { serializeEntryAsMarkdown } from "./domain/service/MarkdownSerializer.js";
33
- export { readEntryBySlug } from "./domain/service/io/PublishedEntries.js";
33
+ export { readEntryBySlug } from "./infrastructure/persistence/DatabaseEntryRepository.js";
34
34
  export { inferLocaleFromPath, isKnownLocale, siteConfigFromDefaults, toUrlLocale, } from "./domain/service/LocaleNegotiator.js";
35
- export { matchPath } from "./domain/service/PathMatcher.js";
35
+ export { compilePathMatcher, matchPath } from "./domain/service/PathMatcher.js";
36
36
  export { evaluateAuthAll } from "./domain/service/AuthPredicateEvaluator.js";
37
37
  export { coerceViewParams, ViewParamCoercionError, } from "./domain/service/ViewParamCoercer.js";
38
38
  // Explicit adapter contract for the Cloudflare MCP mount. Do not
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,iBAAiB;AACjB,OAAO,EACL,gBAAgB,GAGjB,MAAM,cAAc,CAAC;AA6BtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAUnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAOrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,qEAAqE;AACrE,oEAAoE;AACpE,wDAAwD;AACxD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAUrF,OAAO,EACL,gBAAgB,GAKjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,GAIzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAGlB,MAAM,qCAAqC,CAAC;AAE7C,kEAAkE;AAClE,oEAAoE;AACpE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAE9C,iEAAiE;AACjE,4DAA4D;AAC5D,OAAO,EACL,oBAAoB,GAGrB,MAAM,8CAA8C,CAAC;AAEtD,6DAA6D;AAC7D,4DAA4D;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEpF,qEAAqE;AACrE,gCAAgC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,iBAAiB;AACjB,OAAO,EACL,gBAAgB,GAGjB,MAAM,cAAc,CAAC;AAsCtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAUnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAOrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,qEAAqE;AACrE,oEAAoE;AACpE,wDAAwD;AACxD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAUrF,OAAO,EACL,gBAAgB,GAKjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,GAIzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAGlB,MAAM,qCAAqC,CAAC;AAE7C,kEAAkE;AAClE,oEAAoE;AACpE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAC1F,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAE9C,iEAAiE;AACjE,4DAA4D;AAC5D,OAAO,EACL,oBAAoB,GAGrB,MAAM,8CAA8C,CAAC;AAEtD,6DAA6D;AAC7D,4DAA4D;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEpF,qEAAqE;AACrE,gCAAgC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalMigrations.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/boot/canonicalMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACV,MAAM,qCAAqC,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,SAAS,EA0NpD,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,SAAS,SAAS,EAAE,CAsBtB;AAOD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAiCf"}
1
+ {"version":3,"file":"canonicalMigrations.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/boot/canonicalMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACV,MAAM,qCAAqC,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,SAAS,EA+PpD,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,SAAS,SAAS,EAAE,CAsBtB;AAOD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAiCf"}