@aotter/mantle-runtime 0.0.11-alpha.73 → 0.1.0-alpha.2

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 (168) hide show
  1. package/dist/domain/model/EntryRow.d.ts +2 -2
  2. package/dist/domain/model/HandlerContext.d.ts +2 -2
  3. package/dist/domain/model/HandlerContext.d.ts.map +1 -1
  4. package/dist/domain/model/TemplateRegistry.d.ts +3 -3
  5. package/dist/domain/port/AssetServer.d.ts +1 -1
  6. package/dist/domain/port/DatabaseDriver.d.ts +1 -1
  7. package/dist/domain/port/EntryReader.d.ts +1 -1
  8. package/dist/domain/port/EntryReader.d.ts.map +1 -1
  9. package/dist/domain/port/EntryRepository.d.ts +19 -4
  10. package/dist/domain/port/EntryRepository.d.ts.map +1 -1
  11. package/dist/domain/port/IdGenerator.d.ts +2 -2
  12. package/dist/domain/port/SiteConfigRepository.d.ts +2 -2
  13. package/dist/domain/port/index.d.ts +1 -3
  14. package/dist/domain/port/index.d.ts.map +1 -1
  15. package/dist/domain/port/index.js.map +1 -1
  16. package/dist/domain/service/HtmlRenderer.d.ts +2 -0
  17. package/dist/domain/service/HtmlRenderer.d.ts.map +1 -1
  18. package/dist/domain/service/HtmlRenderer.js +4 -9
  19. package/dist/domain/service/HtmlRenderer.js.map +1 -1
  20. package/dist/domain/service/PublicPathResolver.d.ts +5 -0
  21. package/dist/domain/service/PublicPathResolver.d.ts.map +1 -1
  22. package/dist/domain/service/PublicPathResolver.js +13 -1
  23. package/dist/domain/service/PublicPathResolver.js.map +1 -1
  24. package/dist/domain/service/TriggerIndex.d.ts +2 -3
  25. package/dist/domain/service/TriggerIndex.d.ts.map +1 -1
  26. package/dist/domain/service/TriggerIndex.js +2 -3
  27. package/dist/domain/service/TriggerIndex.js.map +1 -1
  28. package/dist/domain/service/ViewParamCoercer.d.ts +1 -1
  29. package/dist/domain/service/ViewParamCoercer.js +1 -1
  30. package/dist/domain/service/ViewSqlCompiler.d.ts +5 -2
  31. package/dist/domain/service/ViewSqlCompiler.d.ts.map +1 -1
  32. package/dist/domain/service/ViewSqlCompiler.js +22 -25
  33. package/dist/domain/service/ViewSqlCompiler.js.map +1 -1
  34. package/dist/domain/service/index.d.ts +0 -1
  35. package/dist/domain/service/index.d.ts.map +1 -1
  36. package/dist/domain/service/index.js +0 -1
  37. package/dist/domain/service/index.js.map +1 -1
  38. package/dist/domain/service/io/EntryDeleteGuard.js +1 -1
  39. package/dist/domain/service/io/EntryDeleteGuard.js.map +1 -1
  40. package/dist/domain/service/io/EntryWriteGuard.d.ts +2 -1
  41. package/dist/domain/service/io/EntryWriteGuard.d.ts.map +1 -1
  42. package/dist/domain/service/io/EntryWriteGuard.js +2 -3
  43. package/dist/domain/service/io/EntryWriteGuard.js.map +1 -1
  44. package/dist/domain/service/io/JoinedEntryReader.d.ts +2 -3
  45. package/dist/domain/service/io/JoinedEntryReader.d.ts.map +1 -1
  46. package/dist/domain/service/io/JoinedEntryReader.js +2 -3
  47. package/dist/domain/service/io/JoinedEntryReader.js.map +1 -1
  48. package/dist/index.d.ts +2 -4
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +1 -2
  51. package/dist/index.js.map +1 -1
  52. package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
  53. package/dist/infrastructure/boot/canonicalMigrations.js +16 -27
  54. package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
  55. package/dist/infrastructure/index.d.ts +0 -1
  56. package/dist/infrastructure/index.d.ts.map +1 -1
  57. package/dist/infrastructure/index.js +0 -1
  58. package/dist/infrastructure/index.js.map +1 -1
  59. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +5 -21
  60. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
  61. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +24 -31
  62. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
  63. package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -1
  64. package/dist/infrastructure/mcp/McpToolCatalog.js +13 -9
  65. package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -1
  66. package/dist/infrastructure/mcp/index.d.ts +1 -1
  67. package/dist/infrastructure/mcp/index.d.ts.map +1 -1
  68. package/dist/infrastructure/mcp/index.js.map +1 -1
  69. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +3 -7
  70. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
  71. package/dist/infrastructure/persistence/DatabaseEntryRepository.js +79 -34
  72. package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
  73. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -1
  74. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +20 -26
  75. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -1
  76. package/dist/infrastructure/persistence/Pagination.d.ts +5 -0
  77. package/dist/infrastructure/persistence/Pagination.d.ts.map +1 -1
  78. package/dist/infrastructure/persistence/Pagination.js +49 -0
  79. package/dist/infrastructure/persistence/Pagination.js.map +1 -1
  80. package/dist/infrastructure/testing/IndexCoverageHarness.js +1 -1
  81. package/dist/infrastructure/testing/IndexCoverageHarness.js.map +1 -1
  82. package/dist/runtime.d.ts +5 -12
  83. package/dist/runtime.d.ts.map +1 -1
  84. package/dist/runtime.js +10 -13
  85. package/dist/runtime.js.map +1 -1
  86. package/dist/usecase/boot/ValidateBootUseCase.d.ts +5 -1
  87. package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -1
  88. package/dist/usecase/boot/ValidateBootUseCase.js +31 -11
  89. package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -1
  90. package/dist/usecase/content/ArchiveUseCase.d.ts +2 -4
  91. package/dist/usecase/content/ArchiveUseCase.d.ts.map +1 -1
  92. package/dist/usecase/content/ArchiveUseCase.js +2 -6
  93. package/dist/usecase/content/ArchiveUseCase.js.map +1 -1
  94. package/dist/usecase/content/CreateDraftUseCase.d.ts +4 -3
  95. package/dist/usecase/content/CreateDraftUseCase.d.ts.map +1 -1
  96. package/dist/usecase/content/CreateDraftUseCase.js +10 -7
  97. package/dist/usecase/content/CreateDraftUseCase.js.map +1 -1
  98. package/dist/usecase/content/DeleteEntryUseCase.d.ts +3 -5
  99. package/dist/usecase/content/DeleteEntryUseCase.d.ts.map +1 -1
  100. package/dist/usecase/content/DeleteEntryUseCase.js +3 -5
  101. package/dist/usecase/content/DeleteEntryUseCase.js.map +1 -1
  102. package/dist/usecase/content/ListEntriesUseCase.d.ts.map +1 -1
  103. package/dist/usecase/content/ListEntriesUseCase.js +30 -3
  104. package/dist/usecase/content/ListEntriesUseCase.js.map +1 -1
  105. package/dist/usecase/content/RequestPublishUseCase.d.ts +5 -14
  106. package/dist/usecase/content/RequestPublishUseCase.d.ts.map +1 -1
  107. package/dist/usecase/content/RequestPublishUseCase.js +7 -26
  108. package/dist/usecase/content/RequestPublishUseCase.js.map +1 -1
  109. package/dist/usecase/content/UnpublishUseCase.d.ts +1 -3
  110. package/dist/usecase/content/UnpublishUseCase.d.ts.map +1 -1
  111. package/dist/usecase/content/UnpublishUseCase.js +1 -5
  112. package/dist/usecase/content/UnpublishUseCase.js.map +1 -1
  113. package/dist/usecase/content/UpdateDraftUseCase.d.ts +3 -2
  114. package/dist/usecase/content/UpdateDraftUseCase.d.ts.map +1 -1
  115. package/dist/usecase/content/UpdateDraftUseCase.js +9 -6
  116. package/dist/usecase/content/UpdateDraftUseCase.js.map +1 -1
  117. package/dist/usecase/content/diagnostics.d.ts +1 -0
  118. package/dist/usecase/content/diagnostics.d.ts.map +1 -1
  119. package/dist/usecase/content/diagnostics.js +10 -0
  120. package/dist/usecase/content/diagnostics.js.map +1 -1
  121. package/dist/usecase/dto/content/index.d.ts +10 -1
  122. package/dist/usecase/dto/content/index.d.ts.map +1 -1
  123. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +4 -3
  124. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -1
  125. package/dist/usecase/procedure/InvokeBuiltinUseCase.js +8 -4
  126. package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -1
  127. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +3 -6
  128. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +1 -1
  129. package/dist/usecase/render/ComposeLlmsTxtUseCase.js +3 -6
  130. package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +1 -1
  131. package/dist/usecase/render/ComposeSitemapUseCase.js +1 -1
  132. package/dist/usecase/render/ComposeSitemapUseCase.js.map +1 -1
  133. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +3 -4
  134. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +1 -1
  135. package/dist/usecase/render/RenderEntryLiveUseCase.js +3 -4
  136. package/dist/usecase/render/RenderEntryLiveUseCase.js.map +1 -1
  137. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts +3 -5
  138. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -1
  139. package/dist/usecase/site/UpdateSiteSettingsUseCase.js +26 -6
  140. package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -1
  141. package/dist/usecase/view/ExecuteViewUseCase.d.ts.map +1 -1
  142. package/dist/usecase/view/ExecuteViewUseCase.js +5 -1
  143. package/dist/usecase/view/ExecuteViewUseCase.js.map +1 -1
  144. package/package.json +2 -2
  145. package/dist/domain/port/KvCache.d.ts +0 -34
  146. package/dist/domain/port/KvCache.d.ts.map +0 -1
  147. package/dist/domain/port/KvCache.js +0 -2
  148. package/dist/domain/port/KvCache.js.map +0 -1
  149. package/dist/domain/port/PublishOrchestrator.d.ts +0 -26
  150. package/dist/domain/port/PublishOrchestrator.d.ts.map +0 -1
  151. package/dist/domain/port/PublishOrchestrator.js +0 -2
  152. package/dist/domain/port/PublishOrchestrator.js.map +0 -1
  153. package/dist/domain/service/PublishKeys.d.ts +0 -42
  154. package/dist/domain/service/PublishKeys.d.ts.map +0 -1
  155. package/dist/domain/service/PublishKeys.js +0 -71
  156. package/dist/domain/service/PublishKeys.js.map +0 -1
  157. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts +0 -38
  158. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts.map +0 -1
  159. package/dist/infrastructure/render/HtmlPublishOrchestrator.js +0 -129
  160. package/dist/infrastructure/render/HtmlPublishOrchestrator.js.map +0 -1
  161. package/dist/infrastructure/render/index.d.ts +0 -2
  162. package/dist/infrastructure/render/index.d.ts.map +0 -1
  163. package/dist/infrastructure/render/index.js +0 -2
  164. package/dist/infrastructure/render/index.js.map +0 -1
  165. package/dist/usecase/content/ContentPublishEffects.d.ts +0 -11
  166. package/dist/usecase/content/ContentPublishEffects.d.ts.map +0 -1
  167. package/dist/usecase/content/ContentPublishEffects.js +0 -21
  168. package/dist/usecase/content/ContentPublishEffects.js.map +0 -1
@@ -1,11 +1,11 @@
1
- import { DiagnosticError, resolveLifecycle, } from "@aotter/mantle-spec";
1
+ import { DiagnosticError, EntryDataValidator, resolveLifecycle, } from "@aotter/mantle-spec";
2
2
  import { projectAndStamp } from "../../domain/service/BuiltinProjector.js";
3
3
  import { schemaUnknownDiagnostic, withConflictDiagnostic, } from "./diagnostics.js";
4
4
  import { assertEntryWritable } from "../../domain/service/io/EntryWriteGuard.js";
5
5
  import { authoringContext } from "./AuthoringContext.js";
6
6
  /**
7
7
  * `CreateDraftUseCase` — create a draft for content lifecycles, or a
8
- * live row for `lifecycle: none` operational records.
8
+ * live row for `lifecycle: operational` records.
9
9
  */
10
10
  export class CreateDraftUseCase {
11
11
  entries;
@@ -13,12 +13,14 @@ export class CreateDraftUseCase {
13
13
  clock;
14
14
  idgen;
15
15
  siteConfig;
16
- constructor(entries, schemas, clock, idgen, siteConfig) {
16
+ validator;
17
+ constructor(entries, schemas, clock, idgen, siteConfig, validator = new EntryDataValidator()) {
17
18
  this.entries = entries;
18
19
  this.schemas = schemas;
19
20
  this.clock = clock;
20
21
  this.idgen = idgen;
21
22
  this.siteConfig = siteConfig;
23
+ this.validator = validator;
22
24
  }
23
25
  async execute(request) {
24
26
  const opPath = `usecase/CreateDraft/${request.collection}`;
@@ -36,16 +38,17 @@ export class CreateDraftUseCase {
36
38
  entries: this.entries,
37
39
  schema,
38
40
  data,
41
+ validator: this.validator,
39
42
  siteConfig: this.siteConfig,
40
- // Real drafts save incomplete; lifecycle:none records are live immediately.
41
- partial: lifecycle !== "none",
43
+ // Real drafts save incomplete; operational records are live immediately.
44
+ partial: lifecycle !== "operational",
42
45
  });
43
46
  return withConflictDiagnostic(opPath, () => this.entries.create({
44
47
  id,
45
48
  collection: request.collection,
46
- // Operational records (lifecycle: none) have no publish step —
49
+ // Operational records have no publish step —
47
50
  // they are live the moment they exist.
48
- status: lifecycle === "none" ? "published" : "draft",
51
+ status: lifecycle === "operational" ? "published" : "draft",
49
52
  data,
50
53
  authorId: request.authorId,
51
54
  now,
@@ -1 +1 @@
1
- {"version":3,"file":"CreateDraftUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/CreateDraftUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IACA;IACA;IACA;IALnB,YACmB,OAAwB,EACxB,OAA4C,EAC5C,KAAY,EACZ,KAAkB,EAClB,UAAiC;QAJjC,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;QAC5C,UAAK,GAAL,KAAK,CAAO;QACZ,UAAK,GAAL,KAAK,CAAa;QAClB,eAAU,GAAV,UAAU,CAAuB;IACjD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,MAAM,GAAG,uBAAuB,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,eAAe,CACvB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAC9E,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAClF,MAAM,mBAAmB,CAAC;YACxB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM;YACN,IAAI;YACJ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,4EAA4E;YAC5E,OAAO,EAAE,SAAS,KAAK,MAAM;SAC9B,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,EAAE;YACF,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,+DAA+D;YAC/D,uCAAuC;YACvC,MAAM,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;YACpD,IAAI;YACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG;YACH,WAAW,EAAE,GAAG;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"CreateDraftUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/CreateDraftUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IACA;IACA;IACA;IACA;IANnB,YACmB,OAAwB,EACxB,OAA4C,EAC5C,KAAY,EACZ,KAAkB,EAClB,UAAiC,EACjC,YAAY,IAAI,kBAAkB,EAAE;QALpC,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;QAC5C,UAAK,GAAL,KAAK,CAAO;QACZ,UAAK,GAAL,KAAK,CAAa;QAClB,eAAU,GAAV,UAAU,CAAuB;QACjC,cAAS,GAAT,SAAS,CAA2B;IACpD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,MAAM,GAAG,uBAAuB,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,eAAe,CACvB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAC9E,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAClF,MAAM,mBAAmB,CAAC;YACxB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM;YACN,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,yEAAyE;YACzE,OAAO,EAAE,SAAS,KAAK,aAAa;SACrC,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,EAAE;YACF,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,6CAA6C;YAC7C,uCAAuC;YACvC,MAAM,EAAE,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;YAC3D,IAAI;YACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG;YACH,WAAW,EAAE,GAAG;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;IACJ,CAAC;CACF"}
@@ -2,12 +2,10 @@ import { type SchemaManifest } from "@aotter/mantle-spec";
2
2
  import type { EntryRepository } from "../../domain/port/EntryRepository.js";
3
3
  import type { DeleteEntryRequest, DeleteEntryResponse } from "../dto/content/index.js";
4
4
  /**
5
- * `DeleteEntryUseCase` — permanently delete an entry + cascade
6
- * revisions / approvals. Distinct from `Archive` archive is a
7
- * status flip, delete removes rows.
5
+ * `DeleteEntryUseCase` — permanently delete an entry. Distinct from
6
+ * `Archive`: archive is a status flip, delete removes the row.
8
7
  *
9
- * The chokepoint enforces the cascade via `DatabaseDriver.batch`. We
10
- * still read the row first so missing ids surface as a structured
8
+ * We read the row first so missing ids surface as a structured
11
9
  * `NOT_FOUND` (matching every other content-op use case) instead of
12
10
  * a silent `{ removed: false }` — callers building UIs need the
13
11
  * diagnostic to distinguish "you deleted nothing" from "you tried to
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteEntryUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/DeleteEntryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC;IAGzD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAyBzE"}
1
+ {"version":3,"file":"DeleteEntryUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/DeleteEntryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC;IAGzD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAyBzE"}
@@ -2,12 +2,10 @@ import { DiagnosticError } from "@aotter/mantle-spec";
2
2
  import { assertEntryDeletable } from "../../domain/service/io/EntryDeleteGuard.js";
3
3
  import { notFoundDiagnostic, withConflictDiagnostic } from "./diagnostics.js";
4
4
  /**
5
- * `DeleteEntryUseCase` — permanently delete an entry + cascade
6
- * revisions / approvals. Distinct from `Archive` archive is a
7
- * status flip, delete removes rows.
5
+ * `DeleteEntryUseCase` — permanently delete an entry. Distinct from
6
+ * `Archive`: archive is a status flip, delete removes the row.
8
7
  *
9
- * The chokepoint enforces the cascade via `DatabaseDriver.batch`. We
10
- * still read the row first so missing ids surface as a structured
8
+ * We read the row first so missing ids surface as a structured
11
9
  * `NOT_FOUND` (matching every other content-op use case) instead of
12
10
  * a silent `{ removed: false }` — callers building UIs need the
13
11
  * diagnostic to distinguish "you deleted nothing" from "you tried to
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteEntryUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/DeleteEntryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAuB,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAKnF,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,OAAwB,EACxB,OAA4C;QAD5C,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;IAC5D,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,MAAM,GAAG,uBAAuB,OAAO,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CACvB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,IAAI,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAC1E,CAAC;QACJ,CAAC;QACD,oBAAoB,CAAC;YACnB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7C,kBAAkB,EAAE,OAAO,CAAC,UAAU;YACtC,MAAM;SACP,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,cAAc,EAAE,QAAQ,CAAC,MAAM;YAC/B,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"DeleteEntryUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/DeleteEntryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAuB,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAKnF,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE9E;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,OAAwB,EACxB,OAA4C;QAD5C,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;IAC5D,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,MAAM,GAAG,uBAAuB,OAAO,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CACvB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,IAAI,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAC1E,CAAC;QACJ,CAAC;QACD,oBAAoB,CAAC;YACnB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7C,kBAAkB,EAAE,OAAO,CAAC,UAAU;YACtC,MAAM;SACP,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,cAAc,EAAE,QAAQ,CAAC,MAAM;YAC/B,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListEntriesUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/ListEntriesUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,OAAO,KAAK,EACV,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC;IAGzD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC;IAKlE,WAAW,CACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;CAe9B"}
1
+ {"version":3,"file":"ListEntriesUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/ListEntriesUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,OAAO,KAAK,EACV,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAMjC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC;IAGzD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC;IAKlE,WAAW,CACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;CA6B9B"}
@@ -1,6 +1,6 @@
1
- import { DiagnosticError, } from "@aotter/mantle-spec";
1
+ import { DiagnosticError, checkSchemaListFilter, runtimeDiagnostic, schemaSortableFields, } from "@aotter/mantle-spec";
2
2
  import { clampLimit } from "../../domain/service/Pagination.js";
3
- import { schemaUnknownDiagnostic } from "./diagnostics.js";
3
+ import { schemaUnknownDiagnostic, sortFieldUnavailableDiagnostic, } from "./diagnostics.js";
4
4
  /**
5
5
  * `ListEntriesUseCase` — list entries in a collection, optionally
6
6
  * filtered by status. Asserts the collection is a declared Schema.
@@ -41,16 +41,43 @@ export class ListEntriesUseCase {
41
41
  }
42
42
  async executePage(request) {
43
43
  const opPath = `usecase/ListEntries/${request.collection}`;
44
- if (!this.schemas.has(request.collection)) {
44
+ const schema = this.schemas.get(request.collection);
45
+ if (!schema) {
45
46
  throw new DiagnosticError(schemaUnknownDiagnostic(opPath, request.collection, [...this.schemas.keys()]));
46
47
  }
48
+ if (request.sort && !isSortableField(schema, request.sort.field)) {
49
+ throw new DiagnosticError(sortFieldUnavailableDiagnostic(opPath, request.sort.field));
50
+ }
51
+ const listFilter = checkSchemaListFilter(schema).filter;
52
+ if (request.filter && !(listFilter?.field === request.filter.field && listFilter.values.includes(request.filter.value))) {
53
+ throw new DiagnosticError(filterUnavailableDiagnostic(opPath, request.filter));
54
+ }
47
55
  return this.entries.list({
48
56
  collection: request.collection,
49
57
  status: request.status,
50
58
  limit: clampLimit(request.limit),
51
59
  cursor: request.cursor,
60
+ cursorDirection: request.cursorDirection,
52
61
  search: request.search,
62
+ searchFields: schema.spec.searchableFields ?? [],
63
+ filter: request.filter,
64
+ sort: request.sort,
53
65
  });
54
66
  }
55
67
  }
68
+ function filterUnavailableDiagnostic(path, filter) {
69
+ return runtimeDiagnostic({
70
+ code: "INPUT_VALIDATION_FAILED",
71
+ severity: "error",
72
+ path: `${path}/filter`,
73
+ value: filter,
74
+ expected: "an indexed string-enum field and one of its declared values",
75
+ message: `Filter '${filter.field}=${filter.value}' is not available.`,
76
+ });
77
+ }
78
+ function isSortableField(schema, field) {
79
+ if (field === "id" || field === "status" || field === "updatedAt")
80
+ return true;
81
+ return schemaSortableFields(schema).includes(field);
82
+ }
56
83
  //# sourceMappingURL=ListEntriesUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListEntriesUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/ListEntriesUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAIhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,OAAwB,EACxB,OAA4C;QAD5C,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;IAC5D,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAA2B;QAE3B,MAAM,MAAM,GAAG,uBAAuB,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,eAAe,CACvB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAC9E,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"ListEntriesUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/ListEntriesUseCase.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,20 @@
1
- import { type SchemaManifest } from "@aotter/mantle-spec";
1
+ import { EntryDataValidator, type SchemaManifest } from "@aotter/mantle-spec";
2
2
  import type { EntryRow } from "../../domain/model/EntryRow.js";
3
3
  import type { Clock } from "../../domain/port/Clock.js";
4
4
  import type { EntryRepository } from "../../domain/port/EntryRepository.js";
5
5
  import type { SiteConfigRepository } from "../../domain/port/SiteConfigRepository.js";
6
6
  import type { RequestPublishRequest } from "../dto/content/index.js";
7
- import { type ContentPublishEffects } from "./ContentPublishEffects.js";
8
7
  /**
9
- * `RequestPublishUseCase` — publish or queue-for-approval, depending
10
- * on the Schema's `lifecycle` mode.
11
- *
12
- * v0.1.0 ships the `simple` publish workflow — request goes straight to
13
- * `published` with a status guard via the spec's state machine. The Schema parser
14
- * accepts `lifecycle: editorial` (it's a v0.1.x-committed mode in
15
- * `V01_LIFECYCLE_MODES`), so this use case is the only line of
16
- * defense: when a Schema declares `editorial`, it surfaces a
17
- * structured `LIFECYCLE_NOT_IN_V010` error here at request time.
18
- * The approvals-queue branch lands in v0.1.x.
8
+ * `RequestPublishUseCase` — publish with a status guard via the
9
+ * Schema's state machine.
19
10
  */
20
11
  export declare class RequestPublishUseCase {
21
12
  private readonly entries;
22
13
  private readonly schemas;
23
14
  private readonly clock;
24
- private readonly effects?;
25
15
  private readonly siteConfig?;
26
- constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock, effects?: ContentPublishEffects | undefined, siteConfig?: SiteConfigRepository | undefined);
16
+ private readonly validator;
17
+ constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock, siteConfig?: SiteConfigRepository | undefined, validator?: EntryDataValidator);
27
18
  execute(request: RequestPublishRequest): Promise<EntryRow>;
28
19
  private assertTranslatesParentPublished;
29
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RequestPublishUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/RequestPublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAQpC;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAJX,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,qBAAqB,YAAA,EAC/B,UAAU,CAAC,EAAE,oBAAoB,YAAA;IAG9C,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;YAwDlD,+BAA+B;CAsB9C"}
1
+ {"version":3,"file":"RequestPublishUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/RequestPublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAElB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAQrE;;;GAGG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAJT,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,oBAAoB,YAAA,EACjC,SAAS,qBAA2B;IAGjD,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;YA2ClD,+BAA+B;CAsB9C"}
@@ -1,31 +1,22 @@
1
- import { canTransition, DiagnosticError, publishRequiresApproval, resolveLifecycle, runtimeDiagnostic, } from "@aotter/mantle-spec";
2
- import { publishCache, } from "./ContentPublishEffects.js";
1
+ import { canTransition, DiagnosticError, EntryDataValidator, runtimeDiagnostic, } from "@aotter/mantle-spec";
3
2
  import { illegalTransitionDiagnostic, notFoundDiagnostic, withConflictDiagnostic, } from "./diagnostics.js";
4
3
  import { assertEntryWritable } from "../../domain/service/io/EntryWriteGuard.js";
5
4
  /**
6
- * `RequestPublishUseCase` — publish or queue-for-approval, depending
7
- * on the Schema's `lifecycle` mode.
8
- *
9
- * v0.1.0 ships the `simple` publish workflow — request goes straight to
10
- * `published` with a status guard via the spec's state machine. The Schema parser
11
- * accepts `lifecycle: editorial` (it's a v0.1.x-committed mode in
12
- * `V01_LIFECYCLE_MODES`), so this use case is the only line of
13
- * defense: when a Schema declares `editorial`, it surfaces a
14
- * structured `LIFECYCLE_NOT_IN_V010` error here at request time.
15
- * The approvals-queue branch lands in v0.1.x.
5
+ * `RequestPublishUseCase` — publish with a status guard via the
6
+ * Schema's state machine.
16
7
  */
17
8
  export class RequestPublishUseCase {
18
9
  entries;
19
10
  schemas;
20
11
  clock;
21
- effects;
22
12
  siteConfig;
23
- constructor(entries, schemas, clock, effects, siteConfig) {
13
+ validator;
14
+ constructor(entries, schemas, clock, siteConfig, validator = new EntryDataValidator()) {
24
15
  this.entries = entries;
25
16
  this.schemas = schemas;
26
17
  this.clock = clock;
27
- this.effects = effects;
28
18
  this.siteConfig = siteConfig;
19
+ this.validator = validator;
29
20
  }
30
21
  async execute(request) {
31
22
  const opPath = `usecase/RequestPublish/${request.id}`;
@@ -34,16 +25,6 @@ export class RequestPublishUseCase {
34
25
  throw new DiagnosticError(notFoundDiagnostic(opPath, "<unknown>", request.id));
35
26
  }
36
27
  const schema = this.schemas.get(existing.collection);
37
- if (publishRequiresApproval(schema)) {
38
- throw new DiagnosticError(runtimeDiagnostic({
39
- code: "LIFECYCLE_NOT_IN_V010",
40
- severity: "error",
41
- path: opPath,
42
- value: resolveLifecycle(schema),
43
- expected: "lifecycle: 'simple' for request_publish ('none' records are already operational; editorial lands in v0.1.x)",
44
- message: `Schema '${existing.collection}' uses lifecycle: 'editorial'; its approval/request-publish runtime lands in v0.1.x.`,
45
- }));
46
- }
47
28
  if (!canTransition(schema, existing.status, "published")) {
48
29
  throw new DiagnosticError(illegalTransitionDiagnostic(opPath, existing.status, "published"));
49
30
  }
@@ -53,6 +34,7 @@ export class RequestPublishUseCase {
53
34
  entries: this.entries,
54
35
  schema,
55
36
  data: existing.data,
37
+ validator: this.validator,
56
38
  excludeId: existing.id,
57
39
  siteConfig: this.siteConfig,
58
40
  });
@@ -71,7 +53,6 @@ export class RequestPublishUseCase {
71
53
  hookContext: request.ctx,
72
54
  originalInput: request.originalInput,
73
55
  }));
74
- await publishCache(this.effects, published.id);
75
56
  return published;
76
57
  }
77
58
  async assertTranslatesParentPublished(path, entry, schema) {
@@ -1 +1 @@
1
- {"version":3,"file":"RequestPublishUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/RequestPublishUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RequestPublishUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/RequestPublishUseCase.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import type { EntryRow } from "../../domain/model/EntryRow.js";
3
3
  import type { Clock } from "../../domain/port/Clock.js";
4
4
  import type { EntryRepository } from "../../domain/port/EntryRepository.js";
5
5
  import type { UnpublishRequest } from "../dto/content/index.js";
6
- import { type ContentPublishEffects } from "./ContentPublishEffects.js";
7
6
  /**
8
7
  * `UnpublishUseCase` — flip published / archived rows back to
9
8
  * `'draft'`. Used by the admin SPA's "edit a published entry" flow.
@@ -12,8 +11,7 @@ export declare class UnpublishUseCase {
12
11
  private readonly entries;
13
12
  private readonly schemas;
14
13
  private readonly clock;
15
- private readonly effects?;
16
- constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock, effects?: ContentPublishEffects | undefined);
14
+ constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock);
17
15
  execute(request: UnpublishRequest): Promise<EntryRow>;
18
16
  }
19
17
  //# sourceMappingURL=UnpublishUseCase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UnpublishUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/UnpublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAOpC;;;GAGG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAHR,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,qBAAqB,YAAA;IAG5C,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CA8B5D"}
1
+ {"version":3,"file":"UnpublishUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/UnpublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOhE;;;GAGG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK;IAGzB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CA6B5D"}
@@ -1,5 +1,4 @@
1
1
  import { canTransition, DiagnosticError, } from "@aotter/mantle-spec";
2
- import { unpublishCache, } from "./ContentPublishEffects.js";
3
2
  import { illegalTransitionDiagnostic, notFoundDiagnostic, withConflictDiagnostic, } from "./diagnostics.js";
4
3
  /**
5
4
  * `UnpublishUseCase` — flip published / archived rows back to
@@ -9,12 +8,10 @@ export class UnpublishUseCase {
9
8
  entries;
10
9
  schemas;
11
10
  clock;
12
- effects;
13
- constructor(entries, schemas, clock, effects) {
11
+ constructor(entries, schemas, clock) {
14
12
  this.entries = entries;
15
13
  this.schemas = schemas;
16
14
  this.clock = clock;
17
- this.effects = effects;
18
15
  }
19
16
  async execute(request) {
20
17
  const opPath = `usecase/Unpublish/${request.id}`;
@@ -39,7 +36,6 @@ export class UnpublishUseCase {
39
36
  hookContext: request.ctx,
40
37
  originalInput: request.originalInput,
41
38
  }));
42
- await unpublishCache(this.effects, unpublished.id);
43
39
  return unpublished;
44
40
  }
45
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UnpublishUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/UnpublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,cAAc,GAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAER;IACA;IACA;IACA;IAJnB,YACmB,OAAwB,EACxB,OAA4C,EAC5C,KAAY,EACZ,OAA+B;QAH/B,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;QAC5C,UAAK,GAAL,KAAK,CAAO;QACZ,YAAO,GAAP,OAAO,CAAwB;IAC/C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAyB;QACrC,MAAM,MAAM,GAAG,qBAAqB,OAAO,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,eAAe,CACvB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CAC5D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,EAAE,EAAE,OAAO;YACX,cAAc,EAAE,QAAQ,CAAC,MAAM;YAC/B,gEAAgE;YAChE,gEAAgE;YAChE,+DAA+D;YAC/D,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;QACF,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"UnpublishUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/UnpublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAER;IACA;IACA;IAHnB,YACmB,OAAwB,EACxB,OAA4C,EAC5C,KAAY;QAFZ,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;QAC5C,UAAK,GAAL,KAAK,CAAO;IAC5B,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAyB;QACrC,MAAM,MAAM,GAAG,qBAAqB,OAAO,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,eAAe,CACvB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CAC5D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,EAAE,EAAE,OAAO;YACX,cAAc,EAAE,QAAQ,CAAC,MAAM;YAC/B,gEAAgE;YAChE,gEAAgE;YAChE,+DAA+D;YAC/D,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { type SchemaManifest } from "@aotter/mantle-spec";
1
+ import { EntryDataValidator, type SchemaManifest } from "@aotter/mantle-spec";
2
2
  import type { EntryRow } from "../../domain/model/EntryRow.js";
3
3
  import type { Clock } from "../../domain/port/Clock.js";
4
4
  import type { EntryRepository } from "../../domain/port/EntryRepository.js";
@@ -14,7 +14,8 @@ export declare class UpdateDraftUseCase {
14
14
  private readonly schemas;
15
15
  private readonly clock;
16
16
  private readonly siteConfig?;
17
- constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock, siteConfig?: SiteConfigRepository | undefined);
17
+ private readonly validator;
18
+ constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock, siteConfig?: SiteConfigRepository | undefined, validator?: EntryDataValidator);
18
19
  execute(request: UpdateDraftRequest): Promise<EntryRow>;
19
20
  }
20
21
  //# sourceMappingURL=UpdateDraftUseCase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateDraftUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/UpdateDraftUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAQlE;;;;GAIG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAHX,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,oBAAoB,YAAA;IAG9C,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkE9D"}
1
+ {"version":3,"file":"UpdateDraftUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/UpdateDraftUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAGlB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAQlE;;;;GAIG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAJT,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,oBAAoB,YAAA,EACjC,SAAS,qBAA2B;IAGjD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAmE9D"}
@@ -1,4 +1,4 @@
1
- import { DiagnosticError, resolveLifecycle, runtimeDiagnostic, } from "@aotter/mantle-spec";
1
+ import { DiagnosticError, EntryDataValidator, resolveLifecycle, runtimeDiagnostic, } from "@aotter/mantle-spec";
2
2
  import { projectUpdateAndStamp } from "../../domain/service/BuiltinProjector.js";
3
3
  import { notFoundDiagnostic, withConflictDiagnostic, } from "./diagnostics.js";
4
4
  import { assertEntryWritable } from "../../domain/service/io/EntryWriteGuard.js";
@@ -13,11 +13,13 @@ export class UpdateDraftUseCase {
13
13
  schemas;
14
14
  clock;
15
15
  siteConfig;
16
- constructor(entries, schemas, clock, siteConfig) {
16
+ validator;
17
+ constructor(entries, schemas, clock, siteConfig, validator = new EntryDataValidator()) {
17
18
  this.entries = entries;
18
19
  this.schemas = schemas;
19
20
  this.clock = clock;
20
21
  this.siteConfig = siteConfig;
22
+ this.validator = validator;
21
23
  }
22
24
  async execute(request) {
23
25
  const opPath = `usecase/UpdateDraft/${request.id}`;
@@ -37,10 +39,10 @@ export class UpdateDraftUseCase {
37
39
  message: `Entry '${request.id}' belongs to unknown Schema '${existing.collection}'.`,
38
40
  }));
39
41
  }
40
- // lifecycle: none records have no draft/published workflow — they
42
+ // Operational records have no draft/published workflow — they
41
43
  // are editable in place regardless of stored status.
42
44
  const lifecycle = resolveLifecycle(schema);
43
- if (existing.status !== "draft" && lifecycle !== "none") {
45
+ if (existing.status !== "draft" && lifecycle !== "operational") {
44
46
  throw new DiagnosticError(runtimeDiagnostic({
45
47
  code: "CONFLICT",
46
48
  severity: "error",
@@ -64,10 +66,11 @@ export class UpdateDraftUseCase {
64
66
  entries: this.entries,
65
67
  schema,
66
68
  data,
69
+ validator: this.validator,
67
70
  excludeId: existing.id,
68
71
  siteConfig: this.siteConfig,
69
- // Real drafts save incomplete; lifecycle:none records are live immediately.
70
- partial: lifecycle !== "none",
72
+ // Real drafts save incomplete; operational records are live immediately.
73
+ partial: lifecycle !== "operational",
71
74
  });
72
75
  return withConflictDiagnostic(opPath, () => this.entries.update({
73
76
  id: request.id,
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateDraftUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/UpdateDraftUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UpdateDraftUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/UpdateDraftUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IACA;IACA;IACA;IALnB,YACmB,OAAwB,EACxB,OAA4C,EAC5C,KAAY,EACZ,UAAiC,EACjC,YAAY,IAAI,kBAAkB,EAAE;QAJpC,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;QAC5C,UAAK,GAAL,KAAK,CAAO;QACZ,eAAU,GAAV,UAAU,CAAuB;QACjC,cAAS,GAAT,SAAS,CAA2B;IACpD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,MAAM,GAAG,uBAAuB,OAAO,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,gCAAgC;gBACtC,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,GAAG,MAAM,cAAc;gBAC7B,KAAK,EAAE,QAAQ,CAAC,UAAU;gBAC1B,QAAQ,EAAE,2BAA2B;gBACrC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACpC,OAAO,EAAE,UAAU,OAAO,CAAC,EAAE,gCAAgC,QAAQ,CAAC,UAAU,IAAI;aACrF,CAAC,CACH,CAAC;QACJ,CAAC;QACD,8DAA8D;QAC9D,qDAAqD;QACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;YAC/D,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,QAAQ,EAAE,wBAAwB;gBAClC,OAAO,EAAE,UAAU,OAAO,CAAC,EAAE,mBAAmB,QAAQ,CAAC,MAAM,+CAA+C;aAC/G,CAAC,CACH,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACjC,MAAM;YACN,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,KAAK,EAAE,OAAO,CAAC,IAAI;YACnB,GAAG;YACH,QAAQ,EAAE,GAAG;SACd,CAAC,CAAC;QACH,MAAM,mBAAmB,CAAC;YACxB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM;YACN,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,QAAQ,CAAC,EAAE;YACtB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,yEAAyE;YACzE,OAAO,EAAE,SAAS,KAAK,aAAa;SACrC,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,IAAI;YACJ,GAAG;YACH,WAAW,EAAE,GAAG;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;IACJ,CAAC;CACF"}
@@ -2,4 +2,5 @@ import { type ContentState, type Diagnostic } from "@aotter/mantle-spec";
2
2
  export { notFoundDiagnostic, withConflictDiagnostic, } from "../../domain/service/EntryMutationDiagnostics.js";
3
3
  export declare function illegalTransitionDiagnostic(path: string, from: ContentState, to: ContentState): Diagnostic;
4
4
  export declare function schemaUnknownDiagnostic(path: string, collection: string, candidates: readonly string[]): Diagnostic;
5
+ export declare function sortFieldUnavailableDiagnostic(path: string, field: string): Diagnostic;
5
6
  //# sourceMappingURL=diagnostics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kDAAkD,CAAC;AAE1D,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,GACf,UAAU,CASZ;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,UAAU,CAUZ"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kDAAkD,CAAC;AAE1D,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,GACf,UAAU,CASZ;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,UAAU,CAUZ;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAStF"}
@@ -21,4 +21,14 @@ export function schemaUnknownDiagnostic(path, collection, candidates) {
21
21
  message: `No Schema with name '${collection}'.`,
22
22
  });
23
23
  }
24
+ export function sortFieldUnavailableDiagnostic(path, field) {
25
+ return runtimeDiagnostic({
26
+ code: "INPUT_VALIDATION_FAILED",
27
+ severity: "error",
28
+ path: `${path}/sort/field`,
29
+ value: field,
30
+ expected: "id, status, updatedAt, or a required Schema-indexed scalar field",
31
+ message: `Field '${field}' is not available for indexed sorting.`,
32
+ });
33
+ }
24
34
  //# sourceMappingURL=diagnostics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/usecase/content/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAGlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kDAAkD,CAAC;AAE1D,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,IAAkB,EAClB,EAAgB;IAEhB,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACnB,QAAQ,EAAE,0BAA0B,IAAI,0BAA0B;QAClE,OAAO,EAAE,6BAA6B,IAAI,MAAM,EAAE,GAAG;KACtD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,UAAkB,EAClB,UAA6B;IAE7B,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,2BAA2B;QACrC,UAAU;QACV,OAAO,EAAE,wBAAwB,UAAU,IAAI;KAChD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/usecase/content/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAGlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kDAAkD,CAAC;AAE1D,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,IAAkB,EAClB,EAAgB;IAEhB,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACnB,QAAQ,EAAE,0BAA0B,IAAI,0BAA0B;QAClE,OAAO,EAAE,6BAA6B,IAAI,MAAM,EAAE,GAAG;KACtD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,UAAkB,EAClB,UAA6B;IAE7B,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,2BAA2B;QACrC,UAAU;QACV,OAAO,EAAE,wBAAwB,UAAU,IAAI;KAChD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAAY,EAAE,KAAa;IACxE,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,GAAG,IAAI,aAAa;QAC1B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,kEAAkE;QAC5E,OAAO,EAAE,UAAU,KAAK,yCAAyC;KAClE,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ContentState } from "@aotter/mantle-spec";
2
+ import type { EntrySort } from "../../../domain/port/EntryRepository.js";
2
3
  import type { HandlerContext } from "../../../domain/model/HandlerContext.js";
3
4
  /**
4
5
  * Content-op request DTOs. Each verb takes its own request type;
@@ -42,8 +43,16 @@ export interface ListEntriesRequest {
42
43
  readonly limit?: number;
43
44
  /** Opaque cursor from a prior `ListEntriesResult.nextCursor`. */
44
45
  readonly cursor?: string;
45
- /** Free-text filter matched against `id` and the raw data blob. */
46
+ readonly cursorDirection?: "forward" | "backward";
47
+ /** Free-text filter matched against id and Schema.searchableFields. */
46
48
  readonly search?: string;
49
+ /** One exact, indexed enum filter exposed by the Schema. */
50
+ readonly filter?: EntryFilter;
51
+ readonly sort?: EntrySort;
52
+ }
53
+ export interface EntryFilter {
54
+ readonly field: string;
55
+ readonly value: string;
47
56
  }
48
57
  export interface RequestPublishRequest extends ContentMutationFields {
49
58
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;IAC9B;;oEAEgE;IAChE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;iCAC6B;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,qBAAqB;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;IAC9B;;oEAEgE;IAChE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;iCAC6B;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAClD,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,qBAAqB;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B"}
@@ -1,4 +1,4 @@
1
- import { type SchemaManifest } from "@aotter/mantle-spec";
1
+ import { EntryDataValidator, type SchemaManifest } from "@aotter/mantle-spec";
2
2
  import type { Clock } from "../../domain/port/Clock.js";
3
3
  import type { EntryRepository } from "../../domain/port/EntryRepository.js";
4
4
  import type { IdGenerator } from "../../domain/port/IdGenerator.js";
@@ -9,7 +9,7 @@ import type { InvokeBuiltinRequest } from "../dto/procedure/index.js";
9
9
  * (POC ADR-0014). The four ops map 1:1 to the entry-writer chokepoint:
10
10
  *
11
11
  * - `create` → `entries.create` with a generated id. Content starts
12
- * as a draft; `lifecycle: none` operational records start live.
12
+ * as a draft; `lifecycle: operational` records start live.
13
13
  * Input is projected through
14
14
  * `domain/service/BuiltinProjector.projectAndStamp` so only
15
15
  * Schema-declared keys land in `data` and `x-mantle-bind` fields are
@@ -33,7 +33,8 @@ export declare class InvokeBuiltinUseCase {
33
33
  private readonly clock;
34
34
  private readonly idgen;
35
35
  private readonly siteConfig?;
36
- constructor(entries: EntryRepository, schemasByName: ReadonlyMap<string, SchemaManifest>, clock: Clock, idgen: IdGenerator, siteConfig?: SiteConfigRepository | undefined);
36
+ private readonly validator;
37
+ constructor(entries: EntryRepository, schemasByName: ReadonlyMap<string, SchemaManifest>, clock: Clock, idgen: IdGenerator, siteConfig?: SiteConfigRepository | undefined, validator?: EntryDataValidator);
37
38
  run(request: InvokeBuiltinRequest): Promise<unknown>;
38
39
  private opCreate;
39
40
  private opUpdate;
@@ -1 +1 @@
1
- {"version":3,"file":"InvokeBuiltinUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/procedure/InvokeBuiltinUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAWtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAJX,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAClD,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,WAAW,EAClB,UAAU,CAAC,EAAE,oBAAoB,YAAA;IAG9C,GAAG,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;YA4D5C,QAAQ;YA2BR,QAAQ;YAuDR,QAAQ;YAcR,QAAQ;YA6BR,SAAS;CA6CxB"}
1
+ {"version":3,"file":"InvokeBuiltinUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/procedure/InvokeBuiltinUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAGlB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAWtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBALT,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAClD,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,WAAW,EAClB,UAAU,CAAC,EAAE,oBAAoB,YAAA,EACjC,SAAS,qBAA2B;IAGjD,GAAG,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;YA4D5C,QAAQ;YA4BR,QAAQ;YAwDR,QAAQ;YAcR,QAAQ;YA6BR,SAAS;CA6CxB"}