@aotter/mantle-runtime 0.0.11-alpha.11
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.
- package/LICENSE +202 -0
- package/README.md +14 -0
- package/dist/domain/index.d.ts +4 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +4 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/model/EntryRow.d.ts +59 -0
- package/dist/domain/model/EntryRow.d.ts.map +1 -0
- package/dist/domain/model/EntryRow.js +42 -0
- package/dist/domain/model/EntryRow.js.map +1 -0
- package/dist/domain/model/HandlerContext.d.ts +65 -0
- package/dist/domain/model/HandlerContext.d.ts.map +1 -0
- package/dist/domain/model/HandlerContext.js +2 -0
- package/dist/domain/model/HandlerContext.js.map +1 -0
- package/dist/domain/model/SeoMeta.d.ts +49 -0
- package/dist/domain/model/SeoMeta.d.ts.map +1 -0
- package/dist/domain/model/SeoMeta.js +2 -0
- package/dist/domain/model/SeoMeta.js.map +1 -0
- package/dist/domain/model/TemplateRegistry.d.ts +47 -0
- package/dist/domain/model/TemplateRegistry.d.ts.map +1 -0
- package/dist/domain/model/TemplateRegistry.js +17 -0
- package/dist/domain/model/TemplateRegistry.js.map +1 -0
- package/dist/domain/model/index.d.ts +7 -0
- package/dist/domain/model/index.d.ts.map +1 -0
- package/dist/domain/model/index.js +6 -0
- package/dist/domain/model/index.js.map +1 -0
- package/dist/domain/port/AssetServer.d.ts +21 -0
- package/dist/domain/port/AssetServer.d.ts.map +1 -0
- package/dist/domain/port/AssetServer.js +2 -0
- package/dist/domain/port/AssetServer.js.map +1 -0
- package/dist/domain/port/Clock.d.ts +13 -0
- package/dist/domain/port/Clock.d.ts.map +1 -0
- package/dist/domain/port/Clock.js +2 -0
- package/dist/domain/port/Clock.js.map +1 -0
- package/dist/domain/port/DatabaseDriver.d.ts +91 -0
- package/dist/domain/port/DatabaseDriver.d.ts.map +1 -0
- package/dist/domain/port/DatabaseDriver.js +2 -0
- package/dist/domain/port/DatabaseDriver.js.map +1 -0
- package/dist/domain/port/DeferredHookDispatcher.d.ts +55 -0
- package/dist/domain/port/DeferredHookDispatcher.d.ts.map +1 -0
- package/dist/domain/port/DeferredHookDispatcher.js +16 -0
- package/dist/domain/port/DeferredHookDispatcher.js.map +1 -0
- package/dist/domain/port/EmailSender.d.ts +31 -0
- package/dist/domain/port/EmailSender.d.ts.map +1 -0
- package/dist/domain/port/EmailSender.js +2 -0
- package/dist/domain/port/EmailSender.js.map +1 -0
- package/dist/domain/port/EntryRepository.d.ts +132 -0
- package/dist/domain/port/EntryRepository.d.ts.map +1 -0
- package/dist/domain/port/EntryRepository.js +2 -0
- package/dist/domain/port/EntryRepository.js.map +1 -0
- package/dist/domain/port/HandlerRegistry.d.ts +38 -0
- package/dist/domain/port/HandlerRegistry.d.ts.map +1 -0
- package/dist/domain/port/HandlerRegistry.js +27 -0
- package/dist/domain/port/HandlerRegistry.js.map +1 -0
- package/dist/domain/port/IdGenerator.d.ts +28 -0
- package/dist/domain/port/IdGenerator.d.ts.map +1 -0
- package/dist/domain/port/IdGenerator.js +5 -0
- package/dist/domain/port/IdGenerator.js.map +1 -0
- package/dist/domain/port/KvCache.d.ts +34 -0
- package/dist/domain/port/KvCache.d.ts.map +1 -0
- package/dist/domain/port/KvCache.js +2 -0
- package/dist/domain/port/KvCache.js.map +1 -0
- package/dist/domain/port/LifecycleHookRunner.d.ts +41 -0
- package/dist/domain/port/LifecycleHookRunner.d.ts.map +1 -0
- package/dist/domain/port/LifecycleHookRunner.js +2 -0
- package/dist/domain/port/LifecycleHookRunner.js.map +1 -0
- package/dist/domain/port/MediaStorage.d.ts +102 -0
- package/dist/domain/port/MediaStorage.d.ts.map +1 -0
- package/dist/domain/port/MediaStorage.js +2 -0
- package/dist/domain/port/MediaStorage.js.map +1 -0
- package/dist/domain/port/PublishOrchestrator.d.ts +25 -0
- package/dist/domain/port/PublishOrchestrator.d.ts.map +1 -0
- package/dist/domain/port/PublishOrchestrator.js +2 -0
- package/dist/domain/port/PublishOrchestrator.js.map +1 -0
- package/dist/domain/port/SiteConfigRepository.d.ts +27 -0
- package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -0
- package/dist/domain/port/SiteConfigRepository.js +2 -0
- package/dist/domain/port/SiteConfigRepository.js.map +1 -0
- package/dist/domain/port/index.d.ts +30 -0
- package/dist/domain/port/index.d.ts.map +1 -0
- package/dist/domain/port/index.js +5 -0
- package/dist/domain/port/index.js.map +1 -0
- package/dist/domain/service/AbsoluteUrl.d.ts +6 -0
- package/dist/domain/service/AbsoluteUrl.d.ts.map +1 -0
- package/dist/domain/service/AbsoluteUrl.js +33 -0
- package/dist/domain/service/AbsoluteUrl.js.map +1 -0
- package/dist/domain/service/AuthPredicateEvaluator.d.ts +29 -0
- package/dist/domain/service/AuthPredicateEvaluator.d.ts.map +1 -0
- package/dist/domain/service/AuthPredicateEvaluator.js +48 -0
- package/dist/domain/service/AuthPredicateEvaluator.js.map +1 -0
- package/dist/domain/service/BuiltinProjector.d.ts +50 -0
- package/dist/domain/service/BuiltinProjector.d.ts.map +1 -0
- package/dist/domain/service/BuiltinProjector.js +61 -0
- package/dist/domain/service/BuiltinProjector.js.map +1 -0
- package/dist/domain/service/EntrySeoSupport.d.ts +27 -0
- package/dist/domain/service/EntrySeoSupport.d.ts.map +1 -0
- package/dist/domain/service/EntrySeoSupport.js +13 -0
- package/dist/domain/service/EntrySeoSupport.js.map +1 -0
- package/dist/domain/service/HtmlRenderer.d.ts +32 -0
- package/dist/domain/service/HtmlRenderer.d.ts.map +1 -0
- package/dist/domain/service/HtmlRenderer.js +38 -0
- package/dist/domain/service/HtmlRenderer.js.map +1 -0
- package/dist/domain/service/LocaleNegotiator.d.ts +29 -0
- package/dist/domain/service/LocaleNegotiator.d.ts.map +1 -0
- package/dist/domain/service/LocaleNegotiator.js +62 -0
- package/dist/domain/service/LocaleNegotiator.js.map +1 -0
- package/dist/domain/service/MarkdownSerializer.d.ts +48 -0
- package/dist/domain/service/MarkdownSerializer.d.ts.map +1 -0
- package/dist/domain/service/MarkdownSerializer.js +109 -0
- package/dist/domain/service/MarkdownSerializer.js.map +1 -0
- package/dist/domain/service/McpToolNaming.d.ts +12 -0
- package/dist/domain/service/McpToolNaming.d.ts.map +1 -0
- package/dist/domain/service/McpToolNaming.js +14 -0
- package/dist/domain/service/McpToolNaming.js.map +1 -0
- package/dist/domain/service/Pagination.d.ts +15 -0
- package/dist/domain/service/Pagination.d.ts.map +1 -0
- package/dist/domain/service/Pagination.js +29 -0
- package/dist/domain/service/Pagination.js.map +1 -0
- package/dist/domain/service/PathMatcher.d.ts +15 -0
- package/dist/domain/service/PathMatcher.d.ts.map +1 -0
- package/dist/domain/service/PathMatcher.js +54 -0
- package/dist/domain/service/PathMatcher.js.map +1 -0
- package/dist/domain/service/PreviewBanner.d.ts +10 -0
- package/dist/domain/service/PreviewBanner.d.ts.map +1 -0
- package/dist/domain/service/PreviewBanner.js +37 -0
- package/dist/domain/service/PreviewBanner.js.map +1 -0
- package/dist/domain/service/PublicPathResolver.d.ts +41 -0
- package/dist/domain/service/PublicPathResolver.d.ts.map +1 -0
- package/dist/domain/service/PublicPathResolver.js +24 -0
- package/dist/domain/service/PublicPathResolver.js.map +1 -0
- package/dist/domain/service/PublishKeys.d.ts +42 -0
- package/dist/domain/service/PublishKeys.d.ts.map +1 -0
- package/dist/domain/service/PublishKeys.js +69 -0
- package/dist/domain/service/PublishKeys.js.map +1 -0
- package/dist/domain/service/SeoMetaComposer.d.ts +47 -0
- package/dist/domain/service/SeoMetaComposer.d.ts.map +1 -0
- package/dist/domain/service/SeoMetaComposer.js +174 -0
- package/dist/domain/service/SeoMetaComposer.js.map +1 -0
- package/dist/domain/service/SitemapSerializer.d.ts +19 -0
- package/dist/domain/service/SitemapSerializer.d.ts.map +1 -0
- package/dist/domain/service/SitemapSerializer.js +27 -0
- package/dist/domain/service/SitemapSerializer.js.map +1 -0
- package/dist/domain/service/TriggerIndex.d.ts +27 -0
- package/dist/domain/service/TriggerIndex.d.ts.map +1 -0
- package/dist/domain/service/TriggerIndex.js +52 -0
- package/dist/domain/service/TriggerIndex.js.map +1 -0
- package/dist/domain/service/ViewParamCoercer.d.ts +20 -0
- package/dist/domain/service/ViewParamCoercer.d.ts.map +1 -0
- package/dist/domain/service/ViewParamCoercer.js +82 -0
- package/dist/domain/service/ViewParamCoercer.js.map +1 -0
- package/dist/domain/service/ViewSqlCompiler.d.ts +29 -0
- package/dist/domain/service/ViewSqlCompiler.d.ts.map +1 -0
- package/dist/domain/service/ViewSqlCompiler.js +147 -0
- package/dist/domain/service/ViewSqlCompiler.js.map +1 -0
- package/dist/domain/service/index.d.ts +28 -0
- package/dist/domain/service/index.d.ts.map +1 -0
- package/dist/domain/service/index.js +28 -0
- package/dist/domain/service/index.js.map +1 -0
- package/dist/domain/service/io/EntryWriteGuard.d.ts +19 -0
- package/dist/domain/service/io/EntryWriteGuard.d.ts.map +1 -0
- package/dist/domain/service/io/EntryWriteGuard.js +109 -0
- package/dist/domain/service/io/EntryWriteGuard.js.map +1 -0
- package/dist/domain/service/io/JoinedEntryReader.d.ts +33 -0
- package/dist/domain/service/io/JoinedEntryReader.d.ts.map +1 -0
- package/dist/domain/service/io/JoinedEntryReader.js +95 -0
- package/dist/domain/service/io/JoinedEntryReader.js.map +1 -0
- package/dist/domain/service/io/PublishedEntries.d.ts +69 -0
- package/dist/domain/service/io/PublishedEntries.d.ts.map +1 -0
- package/dist/domain/service/io/PublishedEntries.js +116 -0
- package/dist/domain/service/io/PublishedEntries.js.map +1 -0
- package/dist/domain/service/io/index.d.ts +9 -0
- package/dist/domain/service/io/index.d.ts.map +1 -0
- package/dist/domain/service/io/index.js +9 -0
- package/dist/domain/service/io/index.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/boot/canonicalMigrations.d.ts +9 -0
- package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -0
- package/dist/infrastructure/boot/canonicalMigrations.js +162 -0
- package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -0
- package/dist/infrastructure/boot/index.d.ts +2 -0
- package/dist/infrastructure/boot/index.d.ts.map +1 -0
- package/dist/infrastructure/boot/index.js +2 -0
- package/dist/infrastructure/boot/index.js.map +1 -0
- package/dist/infrastructure/http/DiagnosticResponse.d.ts +12 -0
- package/dist/infrastructure/http/DiagnosticResponse.d.ts.map +1 -0
- package/dist/infrastructure/http/DiagnosticResponse.js +14 -0
- package/dist/infrastructure/http/DiagnosticResponse.js.map +1 -0
- package/dist/infrastructure/http/index.d.ts +2 -0
- package/dist/infrastructure/http/index.d.ts.map +1 -0
- package/dist/infrastructure/http/index.js +2 -0
- package/dist/infrastructure/http/index.js.map +1 -0
- package/dist/infrastructure/index.d.ts +12 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +12 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +60 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +281 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -0
- package/dist/infrastructure/mcp/McpResponses.d.ts +14 -0
- package/dist/infrastructure/mcp/McpResponses.d.ts.map +1 -0
- package/dist/infrastructure/mcp/McpResponses.js +49 -0
- package/dist/infrastructure/mcp/McpResponses.js.map +1 -0
- package/dist/infrastructure/mcp/McpToolCatalog.d.ts +68 -0
- package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -0
- package/dist/infrastructure/mcp/McpToolCatalog.js +231 -0
- package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -0
- package/dist/infrastructure/mcp/index.d.ts +4 -0
- package/dist/infrastructure/mcp/index.d.ts.map +1 -0
- package/dist/infrastructure/mcp/index.js +4 -0
- package/dist/infrastructure/mcp/index.js.map +1 -0
- package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +35 -0
- package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -0
- package/dist/infrastructure/persistence/DatabaseEntryRepository.js +228 -0
- package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts +12 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +101 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -0
- package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.d.ts +74 -0
- package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.d.ts.map +1 -0
- package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.js +208 -0
- package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.js.map +1 -0
- package/dist/infrastructure/persistence/index.d.ts +4 -0
- package/dist/infrastructure/persistence/index.d.ts.map +1 -0
- package/dist/infrastructure/persistence/index.js +4 -0
- package/dist/infrastructure/persistence/index.js.map +1 -0
- package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts +34 -0
- package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts.map +1 -0
- package/dist/infrastructure/render/HtmlPublishOrchestrator.js +116 -0
- package/dist/infrastructure/render/HtmlPublishOrchestrator.js.map +1 -0
- package/dist/infrastructure/render/index.d.ts +2 -0
- package/dist/infrastructure/render/index.d.ts.map +1 -0
- package/dist/infrastructure/render/index.js +2 -0
- package/dist/infrastructure/render/index.js.map +1 -0
- package/dist/runtime.d.ts +132 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +142 -0
- package/dist/runtime.js.map +1 -0
- package/dist/usecase/boot/ValidateBootUseCase.d.ts +57 -0
- package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -0
- package/dist/usecase/boot/ValidateBootUseCase.js +181 -0
- package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -0
- package/dist/usecase/boot/index.d.ts +2 -0
- package/dist/usecase/boot/index.d.ts.map +1 -0
- package/dist/usecase/boot/index.js +2 -0
- package/dist/usecase/boot/index.js.map +1 -0
- package/dist/usecase/content/ArchiveUseCase.d.ts +20 -0
- package/dist/usecase/content/ArchiveUseCase.d.ts.map +1 -0
- package/dist/usecase/content/ArchiveUseCase.js +47 -0
- package/dist/usecase/content/ArchiveUseCase.js.map +1 -0
- package/dist/usecase/content/ContentPublishEffects.d.ts +11 -0
- package/dist/usecase/content/ContentPublishEffects.d.ts.map +1 -0
- package/dist/usecase/content/ContentPublishEffects.js +21 -0
- package/dist/usecase/content/ContentPublishEffects.js.map +1 -0
- package/dist/usecase/content/CreateDraftUseCase.d.ts +22 -0
- package/dist/usecase/content/CreateDraftUseCase.d.ts.map +1 -0
- package/dist/usecase/content/CreateDraftUseCase.js +61 -0
- package/dist/usecase/content/CreateDraftUseCase.js.map +1 -0
- package/dist/usecase/content/DeleteEntryUseCase.d.ts +20 -0
- package/dist/usecase/content/DeleteEntryUseCase.d.ts.map +1 -0
- package/dist/usecase/content/DeleteEntryUseCase.js +34 -0
- package/dist/usecase/content/DeleteEntryUseCase.js.map +1 -0
- package/dist/usecase/content/GetEntryUseCase.d.ts +13 -0
- package/dist/usecase/content/GetEntryUseCase.d.ts.map +1 -0
- package/dist/usecase/content/GetEntryUseCase.js +24 -0
- package/dist/usecase/content/GetEntryUseCase.js.map +1 -0
- package/dist/usecase/content/ListEntriesUseCase.d.ts +39 -0
- package/dist/usecase/content/ListEntriesUseCase.d.ts.map +1 -0
- package/dist/usecase/content/ListEntriesUseCase.js +58 -0
- package/dist/usecase/content/ListEntriesUseCase.js.map +1 -0
- package/dist/usecase/content/RequestPublishUseCase.d.ts +30 -0
- package/dist/usecase/content/RequestPublishUseCase.d.ts.map +1 -0
- package/dist/usecase/content/RequestPublishUseCase.js +111 -0
- package/dist/usecase/content/RequestPublishUseCase.js.map +1 -0
- package/dist/usecase/content/UnpublishUseCase.d.ts +19 -0
- package/dist/usecase/content/UnpublishUseCase.d.ts.map +1 -0
- package/dist/usecase/content/UnpublishUseCase.js +46 -0
- package/dist/usecase/content/UnpublishUseCase.js.map +1 -0
- package/dist/usecase/content/UpdateDraftUseCase.d.ts +20 -0
- package/dist/usecase/content/UpdateDraftUseCase.d.ts.map +1 -0
- package/dist/usecase/content/UpdateDraftUseCase.js +86 -0
- package/dist/usecase/content/UpdateDraftUseCase.js.map +1 -0
- package/dist/usecase/content/diagnostics.d.ts +26 -0
- package/dist/usecase/content/diagnostics.d.ts.map +1 -0
- package/dist/usecase/content/diagnostics.js +100 -0
- package/dist/usecase/content/diagnostics.js.map +1 -0
- package/dist/usecase/content/index.d.ts +15 -0
- package/dist/usecase/content/index.d.ts.map +1 -0
- package/dist/usecase/content/index.js +15 -0
- package/dist/usecase/content/index.js.map +1 -0
- package/dist/usecase/dto/content/index.d.ts +73 -0
- package/dist/usecase/dto/content/index.d.ts.map +1 -0
- package/dist/usecase/dto/content/index.js +2 -0
- package/dist/usecase/dto/content/index.js.map +1 -0
- package/dist/usecase/dto/index.d.ts +13 -0
- package/dist/usecase/dto/index.d.ts.map +1 -0
- package/dist/usecase/dto/index.js +13 -0
- package/dist/usecase/dto/index.js.map +1 -0
- package/dist/usecase/dto/lifecycle/index.d.ts +15 -0
- package/dist/usecase/dto/lifecycle/index.d.ts.map +1 -0
- package/dist/usecase/dto/lifecycle/index.js +2 -0
- package/dist/usecase/dto/lifecycle/index.js.map +1 -0
- package/dist/usecase/dto/media/index.d.ts +32 -0
- package/dist/usecase/dto/media/index.d.ts.map +1 -0
- package/dist/usecase/dto/media/index.js +8 -0
- package/dist/usecase/dto/media/index.js.map +1 -0
- package/dist/usecase/dto/procedure/index.d.ts +37 -0
- package/dist/usecase/dto/procedure/index.d.ts.map +1 -0
- package/dist/usecase/dto/procedure/index.js +2 -0
- package/dist/usecase/dto/procedure/index.js.map +1 -0
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts +14 -0
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js +2 -0
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js.map +1 -0
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts +8 -0
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js +2 -0
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js.map +1 -0
- package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts +11 -0
- package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/ComposeSitemapRequest.js +2 -0
- package/dist/usecase/dto/render/ComposeSitemapRequest.js.map +1 -0
- package/dist/usecase/dto/render/PreviewEntryRequest.d.ts +27 -0
- package/dist/usecase/dto/render/PreviewEntryRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/PreviewEntryRequest.js +2 -0
- package/dist/usecase/dto/render/PreviewEntryRequest.js.map +1 -0
- package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts +17 -0
- package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/RenderEntryLiveRequest.js +2 -0
- package/dist/usecase/dto/render/RenderEntryLiveRequest.js.map +1 -0
- package/dist/usecase/dto/render/RenderListLiveRequest.d.ts +11 -0
- package/dist/usecase/dto/render/RenderListLiveRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/RenderListLiveRequest.js +2 -0
- package/dist/usecase/dto/render/RenderListLiveRequest.js.map +1 -0
- package/dist/usecase/dto/render/index.d.ts +7 -0
- package/dist/usecase/dto/render/index.d.ts.map +1 -0
- package/dist/usecase/dto/render/index.js +7 -0
- package/dist/usecase/dto/render/index.js.map +1 -0
- package/dist/usecase/dto/view/ExecuteViewRequest.d.ts +16 -0
- package/dist/usecase/dto/view/ExecuteViewRequest.d.ts.map +1 -0
- package/dist/usecase/dto/view/ExecuteViewRequest.js +2 -0
- package/dist/usecase/dto/view/ExecuteViewRequest.js.map +1 -0
- package/dist/usecase/dto/view/index.d.ts +2 -0
- package/dist/usecase/dto/view/index.d.ts.map +1 -0
- package/dist/usecase/dto/view/index.js +2 -0
- package/dist/usecase/dto/view/index.js.map +1 -0
- package/dist/usecase/index.d.ts +16 -0
- package/dist/usecase/index.d.ts.map +1 -0
- package/dist/usecase/index.js +16 -0
- package/dist/usecase/index.js.map +1 -0
- package/dist/usecase/lifecycle/RunDeferredHookUseCase.d.ts +26 -0
- package/dist/usecase/lifecycle/RunDeferredHookUseCase.d.ts.map +1 -0
- package/dist/usecase/lifecycle/RunDeferredHookUseCase.js +44 -0
- package/dist/usecase/lifecycle/RunDeferredHookUseCase.js.map +1 -0
- package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.d.ts +38 -0
- package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.d.ts.map +1 -0
- package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.js +67 -0
- package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.js.map +1 -0
- package/dist/usecase/lifecycle/index.d.ts +3 -0
- package/dist/usecase/lifecycle/index.d.ts.map +1 -0
- package/dist/usecase/lifecycle/index.js +3 -0
- package/dist/usecase/lifecycle/index.js.map +1 -0
- package/dist/usecase/media/CommitMediaUploadUseCase.d.ts +15 -0
- package/dist/usecase/media/CommitMediaUploadUseCase.d.ts.map +1 -0
- package/dist/usecase/media/CommitMediaUploadUseCase.js +43 -0
- package/dist/usecase/media/CommitMediaUploadUseCase.js.map +1 -0
- package/dist/usecase/media/CreateMediaUploadUseCase.d.ts +18 -0
- package/dist/usecase/media/CreateMediaUploadUseCase.d.ts.map +1 -0
- package/dist/usecase/media/CreateMediaUploadUseCase.js +71 -0
- package/dist/usecase/media/CreateMediaUploadUseCase.js.map +1 -0
- package/dist/usecase/media/PendingUploadRecord.d.ts +17 -0
- package/dist/usecase/media/PendingUploadRecord.d.ts.map +1 -0
- package/dist/usecase/media/PendingUploadRecord.js +2 -0
- package/dist/usecase/media/PendingUploadRecord.js.map +1 -0
- package/dist/usecase/media/diagnostics.d.ts +15 -0
- package/dist/usecase/media/diagnostics.d.ts.map +1 -0
- package/dist/usecase/media/diagnostics.js +88 -0
- package/dist/usecase/media/diagnostics.js.map +1 -0
- package/dist/usecase/media/index.d.ts +4 -0
- package/dist/usecase/media/index.d.ts.map +1 -0
- package/dist/usecase/media/index.js +4 -0
- package/dist/usecase/media/index.js.map +1 -0
- package/dist/usecase/media/mediaAllowlist.d.ts +30 -0
- package/dist/usecase/media/mediaAllowlist.d.ts.map +1 -0
- package/dist/usecase/media/mediaAllowlist.js +53 -0
- package/dist/usecase/media/mediaAllowlist.js.map +1 -0
- package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +43 -0
- package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -0
- package/dist/usecase/procedure/InvokeBuiltinUseCase.js +202 -0
- package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -0
- package/dist/usecase/procedure/InvokeProcedureUseCase.d.ts +50 -0
- package/dist/usecase/procedure/InvokeProcedureUseCase.d.ts.map +1 -0
- package/dist/usecase/procedure/InvokeProcedureUseCase.js +191 -0
- package/dist/usecase/procedure/InvokeProcedureUseCase.js.map +1 -0
- package/dist/usecase/procedure/index.d.ts +3 -0
- package/dist/usecase/procedure/index.d.ts.map +1 -0
- package/dist/usecase/procedure/index.js +3 -0
- package/dist/usecase/procedure/index.js.map +1 -0
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +25 -0
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +1 -0
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +55 -0
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +1 -0
- package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +19 -0
- package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +1 -0
- package/dist/usecase/render/ComposeLlmsTxtUseCase.js +40 -0
- package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +1 -0
- package/dist/usecase/render/ComposeSitemapUseCase.d.ts +15 -0
- package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +1 -0
- package/dist/usecase/render/ComposeSitemapUseCase.js +29 -0
- package/dist/usecase/render/ComposeSitemapUseCase.js.map +1 -0
- package/dist/usecase/render/PreviewEntryUseCase.d.ts +26 -0
- package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +1 -0
- package/dist/usecase/render/PreviewEntryUseCase.js +69 -0
- package/dist/usecase/render/PreviewEntryUseCase.js.map +1 -0
- package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +35 -0
- package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +1 -0
- package/dist/usecase/render/RenderEntryLiveUseCase.js +59 -0
- package/dist/usecase/render/RenderEntryLiveUseCase.js.map +1 -0
- package/dist/usecase/render/RenderListLiveUseCase.d.ts +23 -0
- package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +1 -0
- package/dist/usecase/render/RenderListLiveUseCase.js +41 -0
- package/dist/usecase/render/RenderListLiveUseCase.js.map +1 -0
- package/dist/usecase/render/index.d.ts +7 -0
- package/dist/usecase/render/index.d.ts.map +1 -0
- package/dist/usecase/render/index.js +10 -0
- package/dist/usecase/render/index.js.map +1 -0
- package/dist/usecase/view/ExecuteViewUseCase.d.ts +31 -0
- package/dist/usecase/view/ExecuteViewUseCase.d.ts.map +1 -0
- package/dist/usecase/view/ExecuteViewUseCase.js +78 -0
- package/dist/usecase/view/ExecuteViewUseCase.js.map +1 -0
- package/dist/usecase/view/index.d.ts +2 -0
- package/dist/usecase/view/index.d.ts.map +1 -0
- package/dist/usecase/view/index.js +2 -0
- package/dist/usecase/view/index.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DiagnosticError, runtimeDiagnostic, } from "@aotter/mantle-spec";
|
|
2
|
+
import { projectUpdateAndStamp } from "../../domain/service/BuiltinProjector.js";
|
|
3
|
+
import { notFoundDiagnostic, withConflictDiagnostic, } from "./diagnostics.js";
|
|
4
|
+
import { assertEntryWritable } from "../../domain/service/io/EntryWriteGuard.js";
|
|
5
|
+
/**
|
|
6
|
+
* `UpdateDraftUseCase` — update a draft's data. Only entries in
|
|
7
|
+
* `'draft'` status are editable — `published` / `archived` go via the
|
|
8
|
+
* unpublish (back to draft) path first.
|
|
9
|
+
*/
|
|
10
|
+
export class UpdateDraftUseCase {
|
|
11
|
+
entries;
|
|
12
|
+
schemas;
|
|
13
|
+
clock;
|
|
14
|
+
siteConfig;
|
|
15
|
+
constructor(entries, schemas, clock, siteConfig) {
|
|
16
|
+
this.entries = entries;
|
|
17
|
+
this.schemas = schemas;
|
|
18
|
+
this.clock = clock;
|
|
19
|
+
this.siteConfig = siteConfig;
|
|
20
|
+
}
|
|
21
|
+
async execute(request) {
|
|
22
|
+
const opPath = `usecase/UpdateDraft/${request.id}`;
|
|
23
|
+
const existing = await this.entries.get(request.id);
|
|
24
|
+
if (!existing) {
|
|
25
|
+
throw new DiagnosticError(notFoundDiagnostic(opPath, "<unknown>", request.id));
|
|
26
|
+
}
|
|
27
|
+
if (existing.status !== "draft") {
|
|
28
|
+
throw new DiagnosticError(runtimeDiagnostic({
|
|
29
|
+
code: "CONFLICT",
|
|
30
|
+
severity: "error",
|
|
31
|
+
path: opPath,
|
|
32
|
+
value: existing.status,
|
|
33
|
+
expected: "row.status === 'draft'",
|
|
34
|
+
message: `Entry '${request.id}' is in status '${existing.status}'; only drafts are editable. Unpublish first.`,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
const schema = this.schemas.get(existing.collection);
|
|
38
|
+
if (!schema) {
|
|
39
|
+
throw new DiagnosticError(runtimeDiagnostic({
|
|
40
|
+
code: "BUILTIN_HANDLER_SCHEMA_UNKNOWN",
|
|
41
|
+
severity: "error",
|
|
42
|
+
path: `${opPath}#/collection`,
|
|
43
|
+
value: existing.collection,
|
|
44
|
+
expected: "name of a declared Schema",
|
|
45
|
+
candidates: [...this.schemas.keys()],
|
|
46
|
+
message: `Entry '${request.id}' belongs to unknown Schema '${existing.collection}'.`,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
const now = this.clock.now();
|
|
50
|
+
const ctx = authoringContext(request.ctx, existing.authorId);
|
|
51
|
+
const data = projectUpdateAndStamp({
|
|
52
|
+
schema,
|
|
53
|
+
existing: existing.data,
|
|
54
|
+
patch: request.data,
|
|
55
|
+
ctx,
|
|
56
|
+
clockNow: now,
|
|
57
|
+
});
|
|
58
|
+
await assertEntryWritable({
|
|
59
|
+
opPath,
|
|
60
|
+
entries: this.entries,
|
|
61
|
+
schema,
|
|
62
|
+
data,
|
|
63
|
+
excludeId: existing.id,
|
|
64
|
+
siteConfig: this.siteConfig,
|
|
65
|
+
});
|
|
66
|
+
return withConflictDiagnostic(opPath, () => this.entries.update({
|
|
67
|
+
id: request.id,
|
|
68
|
+
collection: existing.collection,
|
|
69
|
+
expectedVersion: request.expectedVersion,
|
|
70
|
+
data,
|
|
71
|
+
now,
|
|
72
|
+
hookContext: ctx,
|
|
73
|
+
originalInput: request.originalInput,
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function authoringContext(ctx, authorId) {
|
|
78
|
+
if (ctx)
|
|
79
|
+
return ctx;
|
|
80
|
+
return {
|
|
81
|
+
user: authorId ? { id: authorId } : null,
|
|
82
|
+
staff: null,
|
|
83
|
+
env: {},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=UpdateDraftUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateDraftUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/UpdateDraftUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ContentState, type Diagnostic } from "@aotter/mantle-spec";
|
|
2
|
+
/**
|
|
3
|
+
* Wrap a content-op repository call: convert chokepoint conflict
|
|
4
|
+
* throws into structured `CONFLICT` diagnostics. Other throws
|
|
5
|
+
* propagate.
|
|
6
|
+
*
|
|
7
|
+
* Used by every content-op use case so the catch shape stays uniform.
|
|
8
|
+
*/
|
|
9
|
+
export declare function withConflictDiagnostic<T>(path: string, fn: () => Promise<T>): Promise<T>;
|
|
10
|
+
export declare function notFoundDiagnostic(path: string, collection: string, id: string): Diagnostic;
|
|
11
|
+
export declare function illegalTransitionDiagnostic(path: string, from: ContentState, to: ContentState): Diagnostic;
|
|
12
|
+
export declare function schemaUnknownDiagnostic(path: string, collection: string, candidates: readonly string[]): Diagnostic;
|
|
13
|
+
/**
|
|
14
|
+
* Field names that are persisted as native columns on the entry row
|
|
15
|
+
* and must not be carried in the `data` JSON blob — otherwise the
|
|
16
|
+
* blob would round-trip back out of `entries.get()` claiming an
|
|
17
|
+
* identity / version / lifecycle that disagrees with the columns.
|
|
18
|
+
*
|
|
19
|
+
* SQL bindings are taken from explicit `CreateEntryArgs` /
|
|
20
|
+
* `UpdateEntryArgs` fields, so a reserved key in `data` cannot
|
|
21
|
+
* overwrite a column — but it can lie. Strip at the entry-writer
|
|
22
|
+
* chokepoint so `data` reflects only author-defined fields.
|
|
23
|
+
*/
|
|
24
|
+
export declare const RESERVED_DATA_KEYS: readonly string[];
|
|
25
|
+
export declare function stripReservedDataKeys(data: Record<string, unknown>): Record<string, unknown>;
|
|
26
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAM7B;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CA8BZ;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,UAAU,CASZ;AAED,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;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAQ/C,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { DiagnosticError, runtimeDiagnostic, } from "@aotter/mantle-spec";
|
|
2
|
+
import { EntryStatusConflict, EntryVersionConflict, } from "../../domain/model/EntryRow.js";
|
|
3
|
+
/**
|
|
4
|
+
* Wrap a content-op repository call: convert chokepoint conflict
|
|
5
|
+
* throws into structured `CONFLICT` diagnostics. Other throws
|
|
6
|
+
* propagate.
|
|
7
|
+
*
|
|
8
|
+
* Used by every content-op use case so the catch shape stays uniform.
|
|
9
|
+
*/
|
|
10
|
+
export async function withConflictDiagnostic(path, fn) {
|
|
11
|
+
try {
|
|
12
|
+
return await fn();
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
if (err instanceof EntryVersionConflict) {
|
|
16
|
+
throw new DiagnosticError(runtimeDiagnostic({
|
|
17
|
+
code: "CONFLICT",
|
|
18
|
+
severity: "error",
|
|
19
|
+
path,
|
|
20
|
+
value: { expected: err.expected, found: err.actual },
|
|
21
|
+
expected: `version === ${err.expected}`,
|
|
22
|
+
message: `Version mismatch on entry '${err.id}': expected ${err.expected}, found ${err.actual}.`,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
if (err instanceof EntryStatusConflict) {
|
|
26
|
+
throw new DiagnosticError(runtimeDiagnostic({
|
|
27
|
+
code: "CONFLICT",
|
|
28
|
+
severity: "error",
|
|
29
|
+
path,
|
|
30
|
+
value: err.actual,
|
|
31
|
+
expected: `status === '${err.expected}'`,
|
|
32
|
+
message: `Status mismatch on entry '${err.id}': expected '${err.expected}', found '${err.actual}'. Probably a concurrent state change.`,
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
throw err;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function notFoundDiagnostic(path, collection, id) {
|
|
39
|
+
return runtimeDiagnostic({
|
|
40
|
+
code: "NOT_FOUND",
|
|
41
|
+
severity: "error",
|
|
42
|
+
path,
|
|
43
|
+
value: id,
|
|
44
|
+
expected: `existing entry id in collection '${collection}'`,
|
|
45
|
+
message: `No entry with id '${id}' in collection '${collection}'.`,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
export function illegalTransitionDiagnostic(path, from, to) {
|
|
49
|
+
return runtimeDiagnostic({
|
|
50
|
+
code: "CONFLICT",
|
|
51
|
+
severity: "error",
|
|
52
|
+
path,
|
|
53
|
+
value: { from, to },
|
|
54
|
+
expected: `valid transition from '${from}' (per Schema lifecycle)`,
|
|
55
|
+
message: `Illegal state transition: ${from} → ${to}.`,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export function schemaUnknownDiagnostic(path, collection, candidates) {
|
|
59
|
+
return runtimeDiagnostic({
|
|
60
|
+
code: "NOT_FOUND",
|
|
61
|
+
severity: "error",
|
|
62
|
+
path,
|
|
63
|
+
value: collection,
|
|
64
|
+
expected: "name of a declared Schema",
|
|
65
|
+
candidates,
|
|
66
|
+
message: `No Schema with name '${collection}'.`,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Field names that are persisted as native columns on the entry row
|
|
71
|
+
* and must not be carried in the `data` JSON blob — otherwise the
|
|
72
|
+
* blob would round-trip back out of `entries.get()` claiming an
|
|
73
|
+
* identity / version / lifecycle that disagrees with the columns.
|
|
74
|
+
*
|
|
75
|
+
* SQL bindings are taken from explicit `CreateEntryArgs` /
|
|
76
|
+
* `UpdateEntryArgs` fields, so a reserved key in `data` cannot
|
|
77
|
+
* overwrite a column — but it can lie. Strip at the entry-writer
|
|
78
|
+
* chokepoint so `data` reflects only author-defined fields.
|
|
79
|
+
*/
|
|
80
|
+
export const RESERVED_DATA_KEYS = [
|
|
81
|
+
"id",
|
|
82
|
+
"status",
|
|
83
|
+
"version",
|
|
84
|
+
"expectedVersion",
|
|
85
|
+
"createdAt",
|
|
86
|
+
"updatedAt",
|
|
87
|
+
"authorId",
|
|
88
|
+
];
|
|
89
|
+
export function stripReservedDataKeys(data) {
|
|
90
|
+
let out = null;
|
|
91
|
+
for (const key of RESERVED_DATA_KEYS) {
|
|
92
|
+
if (key in data) {
|
|
93
|
+
if (!out)
|
|
94
|
+
out = { ...data };
|
|
95
|
+
delete out[key];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return out ?? data;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/usecase/content/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,GAGlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,EAAoB;IAEpB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;YACxC,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,OAAO;gBACjB,IAAI;gBACJ,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;gBACpD,QAAQ,EAAE,eAAe,GAAG,CAAC,QAAQ,EAAE;gBACvC,OAAO,EAAE,8BAA8B,GAAG,CAAC,EAAE,eAAe,GAAG,CAAC,QAAQ,WAAW,GAAG,CAAC,MAAM,GAAG;aACjG,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;YACvC,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,OAAO;gBACjB,IAAI;gBACJ,KAAK,EAAE,GAAG,CAAC,MAAM;gBACjB,QAAQ,EAAE,eAAe,GAAG,CAAC,QAAQ,GAAG;gBACxC,OAAO,EAAE,6BAA6B,GAAG,CAAC,EAAE,gBAAgB,GAAG,CAAC,QAAQ,aAAa,GAAG,CAAC,MAAM,wCAAwC;aACxI,CAAC,CACH,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,UAAkB,EAClB,EAAU;IAEV,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,oCAAoC,UAAU,GAAG;QAC3D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,UAAU,IAAI;KACnE,CAAC,CAAC;AACL,CAAC;AAED,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;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,IAAI;IACJ,QAAQ;IACR,SAAS;IACT,iBAAiB;IACjB,WAAW;IACX,WAAW;IACX,UAAU;CACX,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,IAA6B;IAE7B,IAAI,GAAG,GAAmC,IAAI,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG;gBAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content-op use cases. Each verb is a class with constructor-injected
|
|
3
|
+
* ports + clock + idgen. Per the clean-arch DTO rule, every use case
|
|
4
|
+
* accepts a request DTO.
|
|
5
|
+
*/
|
|
6
|
+
export { CreateDraftUseCase } from "./CreateDraftUseCase.js";
|
|
7
|
+
export { UpdateDraftUseCase } from "./UpdateDraftUseCase.js";
|
|
8
|
+
export { GetEntryUseCase } from "./GetEntryUseCase.js";
|
|
9
|
+
export { ListEntriesUseCase } from "./ListEntriesUseCase.js";
|
|
10
|
+
export { RequestPublishUseCase } from "./RequestPublishUseCase.js";
|
|
11
|
+
export { UnpublishUseCase } from "./UnpublishUseCase.js";
|
|
12
|
+
export { ArchiveUseCase } from "./ArchiveUseCase.js";
|
|
13
|
+
export { DeleteEntryUseCase } from "./DeleteEntryUseCase.js";
|
|
14
|
+
export { withConflictDiagnostic, notFoundDiagnostic, illegalTransitionDiagnostic, schemaUnknownDiagnostic, } from "./diagnostics.js";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content-op use cases. Each verb is a class with constructor-injected
|
|
3
|
+
* ports + clock + idgen. Per the clean-arch DTO rule, every use case
|
|
4
|
+
* accepts a request DTO.
|
|
5
|
+
*/
|
|
6
|
+
export { CreateDraftUseCase } from "./CreateDraftUseCase.js";
|
|
7
|
+
export { UpdateDraftUseCase } from "./UpdateDraftUseCase.js";
|
|
8
|
+
export { GetEntryUseCase } from "./GetEntryUseCase.js";
|
|
9
|
+
export { ListEntriesUseCase } from "./ListEntriesUseCase.js";
|
|
10
|
+
export { RequestPublishUseCase } from "./RequestPublishUseCase.js";
|
|
11
|
+
export { UnpublishUseCase } from "./UnpublishUseCase.js";
|
|
12
|
+
export { ArchiveUseCase } from "./ArchiveUseCase.js";
|
|
13
|
+
export { DeleteEntryUseCase } from "./DeleteEntryUseCase.js";
|
|
14
|
+
export { withConflictDiagnostic, notFoundDiagnostic, illegalTransitionDiagnostic, schemaUnknownDiagnostic, } from "./diagnostics.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/usecase/content/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ContentState } from "@aotter/mantle-spec";
|
|
2
|
+
import type { HandlerContext } from "../../../domain/model/HandlerContext.js";
|
|
3
|
+
/**
|
|
4
|
+
* Content-op request DTOs. Each verb takes its own request type;
|
|
5
|
+
* response is `EntryRow` (or `{ removed: boolean }` for delete) which
|
|
6
|
+
* lives in `domain/model/`. Per the clean-arch DTO rule, no loose
|
|
7
|
+
* primitives — every input field is named on the DTO.
|
|
8
|
+
*
|
|
9
|
+
* Mutating verbs carry an optional `ctx: HandlerContext` so the
|
|
10
|
+
* `LifecycleHookingEntryRepository` decorator can fire hooks with the
|
|
11
|
+
* caller's auth + env when invoked from a real dispatcher (HTTP
|
|
12
|
+
* Trigger, MCP, admin endpoint). Test paths and internal writes leave
|
|
13
|
+
* it unset and the decorator falls back to an anonymous ctx.
|
|
14
|
+
*/
|
|
15
|
+
export interface ContentMutationFields {
|
|
16
|
+
readonly ctx?: HandlerContext;
|
|
17
|
+
/** Pre-projection original input forwarded to lifecycle hooks
|
|
18
|
+
* (`ctx.event.originalInput` on the hook's procedure call). When
|
|
19
|
+
* unset, hooks see the row data instead. The builtin Procedure path
|
|
20
|
+
* populates this with the full procedure input so hooks can read
|
|
21
|
+
* side-channel fields like CAPTCHA tokens. */
|
|
22
|
+
readonly originalInput?: unknown;
|
|
23
|
+
}
|
|
24
|
+
export interface CreateDraftRequest extends ContentMutationFields {
|
|
25
|
+
readonly collection: string;
|
|
26
|
+
readonly data: Record<string, unknown>;
|
|
27
|
+
readonly authorId: string | null;
|
|
28
|
+
}
|
|
29
|
+
export interface UpdateDraftRequest extends ContentMutationFields {
|
|
30
|
+
readonly id: string;
|
|
31
|
+
readonly expectedVersion: number;
|
|
32
|
+
/** Partial data — merged onto the existing row's `data` blob. */
|
|
33
|
+
readonly data: Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
export interface GetEntryRequest {
|
|
36
|
+
readonly id: string;
|
|
37
|
+
/** When set, asserts the row's collection matches; rejects with
|
|
38
|
+
* `NOT_FOUND` otherwise. */
|
|
39
|
+
readonly collection?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ListEntriesRequest {
|
|
42
|
+
readonly collection: string;
|
|
43
|
+
readonly status?: ContentState;
|
|
44
|
+
readonly limit?: number;
|
|
45
|
+
/** Opaque cursor from a prior `ListEntriesResponse.nextCursor`. */
|
|
46
|
+
readonly cursor?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface ListEntriesResponse<R> {
|
|
49
|
+
readonly rows: readonly R[];
|
|
50
|
+
/** Present when there may be more rows; pass back as `cursor`. */
|
|
51
|
+
readonly nextCursor?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface RequestPublishRequest extends ContentMutationFields {
|
|
54
|
+
readonly id: string;
|
|
55
|
+
}
|
|
56
|
+
export interface UnpublishRequest extends ContentMutationFields {
|
|
57
|
+
readonly id: string;
|
|
58
|
+
}
|
|
59
|
+
export interface ArchiveRequest extends ContentMutationFields {
|
|
60
|
+
readonly id: string;
|
|
61
|
+
/** @deprecated Ignored. `ArchiveUseCase` pins OCC to the version it
|
|
62
|
+
* reads internally so the transition guard and the chokepoint
|
|
63
|
+
* check see the same snapshot. Field kept optional for backwards
|
|
64
|
+
* compat; remove in v0.2. */
|
|
65
|
+
readonly expectedVersion?: number;
|
|
66
|
+
}
|
|
67
|
+
export interface DeleteEntryRequest extends ContentMutationFields {
|
|
68
|
+
readonly id: string;
|
|
69
|
+
}
|
|
70
|
+
export interface DeleteEntryResponse {
|
|
71
|
+
readonly removed: boolean;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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;;;;mDAI+C;IAC/C,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,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;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;IACpB;;;kCAG8B;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/usecase/dto/content/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `usecase/dto/` — request and response shapes use cases consume.
|
|
3
|
+
* Per the Aotter clean-arch convention (mirrors clam/core), each use
|
|
4
|
+
* case takes a request DTO + returns a response DTO; no loose
|
|
5
|
+
* primitives.
|
|
6
|
+
*/
|
|
7
|
+
export * from "./content/index.js";
|
|
8
|
+
export * from "./procedure/index.js";
|
|
9
|
+
export * from "./view/index.js";
|
|
10
|
+
export * from "./render/index.js";
|
|
11
|
+
export * from "./media/index.js";
|
|
12
|
+
export * from "./lifecycle/index.js";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/usecase/dto/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `usecase/dto/` — request and response shapes use cases consume.
|
|
3
|
+
* Per the Aotter clean-arch convention (mirrors clam/core), each use
|
|
4
|
+
* case takes a request DTO + returns a response DTO; no loose
|
|
5
|
+
* primitives.
|
|
6
|
+
*/
|
|
7
|
+
export * from "./content/index.js";
|
|
8
|
+
export * from "./procedure/index.js";
|
|
9
|
+
export * from "./view/index.js";
|
|
10
|
+
export * from "./render/index.js";
|
|
11
|
+
export * from "./media/index.js";
|
|
12
|
+
export * from "./lifecycle/index.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/usecase/dto/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DeferredHookEnvelope } from "../../../domain/port/DeferredHookDispatcher.js";
|
|
2
|
+
/**
|
|
3
|
+
* Lifecycle use-case request DTOs. Per the clean-arch rule, every
|
|
4
|
+
* use-case `execute` takes a single named DTO — no loose positional
|
|
5
|
+
* primitives.
|
|
6
|
+
*/
|
|
7
|
+
export interface RunDeferredHookRequest {
|
|
8
|
+
readonly envelope: DeferredHookEnvelope;
|
|
9
|
+
/** Adapter binding bag from the consume-side invocation. Threaded
|
|
10
|
+
* into the rebuilt `HandlerContext` so handlers reach platform
|
|
11
|
+
* resources (D1, KV, queues, …) the same way they do on the
|
|
12
|
+
* inline path. Different invocation than the producer side. */
|
|
13
|
+
readonly env: unknown;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/lifecycle/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAE3F;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC;;;oEAGgE;IAChE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/usecase/dto/lifecycle/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Media use-case DTOs. Distinct from `MediaStorage` port request types:
|
|
3
|
+
* the use case receives caller-supplied fields, derives the rest
|
|
4
|
+
* (storageKey via the adapter, expiresAt via the clock, maxBytes via
|
|
5
|
+
* adapter config), and forwards a port-shaped request internally.
|
|
6
|
+
*/
|
|
7
|
+
export interface CreateMediaUploadRequest {
|
|
8
|
+
readonly filename: string;
|
|
9
|
+
readonly mimeType: string;
|
|
10
|
+
/** Required so the use case enforces the byte ceiling before
|
|
11
|
+
* signing a PUT URL — without it the presigned URL accepts an
|
|
12
|
+
* unbounded body and the cap only applies at commit, which is
|
|
13
|
+
* too late if storage doesn't honor `Content-Length`. */
|
|
14
|
+
readonly byteSize: number;
|
|
15
|
+
readonly alt?: string;
|
|
16
|
+
readonly caption?: string;
|
|
17
|
+
readonly purpose?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface CreateMediaUploadResponse {
|
|
20
|
+
readonly uploadId: string;
|
|
21
|
+
readonly uploadUrl: string;
|
|
22
|
+
readonly method: "PUT";
|
|
23
|
+
readonly requiredHeaders?: Readonly<Record<string, string>>;
|
|
24
|
+
readonly expiresAt: number;
|
|
25
|
+
}
|
|
26
|
+
export interface CommitMediaUploadRequest {
|
|
27
|
+
readonly uploadId: string;
|
|
28
|
+
readonly alt?: string;
|
|
29
|
+
readonly caption?: string;
|
|
30
|
+
readonly checksum?: string;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/media/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;8DAG0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Media use-case DTOs. Distinct from `MediaStorage` port request types:
|
|
3
|
+
* the use case receives caller-supplied fields, derives the rest
|
|
4
|
+
* (storageKey via the adapter, expiresAt via the clock, maxBytes via
|
|
5
|
+
* adapter config), and forwards a port-shaped request internally.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/usecase/dto/media/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Diagnostic, Phase, ProcedureManifest } from "@aotter/mantle-spec";
|
|
2
|
+
import type { HandlerContext } from "../../../domain/model/HandlerContext.js";
|
|
3
|
+
/**
|
|
4
|
+
* Procedure-dispatch DTOs. `InvokeProcedureUseCase` is the entry point
|
|
5
|
+
* for both `handler.kind: ref` and `handler.kind: builtin` Procedures
|
|
6
|
+
* (it routes by kind); `InvokeBuiltinUseCase` is the collaborator the
|
|
7
|
+
* router delegates to for the builtin op execution path.
|
|
8
|
+
*
|
|
9
|
+
* `InvokeFailure` (the thrown carrier handlers use to surface a
|
|
10
|
+
* structured Diagnostic) lives next to the use case class — it's a
|
|
11
|
+
* runtime value, not a DTO type.
|
|
12
|
+
*/
|
|
13
|
+
export interface InvokeProcedureRequest {
|
|
14
|
+
readonly procedure: ProcedureManifest;
|
|
15
|
+
readonly input: unknown;
|
|
16
|
+
readonly ctx: HandlerContext;
|
|
17
|
+
/** Path-locator prefix for `Diagnostic.path`. The HTTP mount passes
|
|
18
|
+
* e.g. `POST /api/contact`; the test harness passes
|
|
19
|
+
* `manifest:Procedure/<name>`. */
|
|
20
|
+
readonly pathPrefix?: string;
|
|
21
|
+
/** Phase to stamp on emitted diagnostics. Default: `"runtime"`. */
|
|
22
|
+
readonly phase?: Phase;
|
|
23
|
+
}
|
|
24
|
+
export type InvokeProcedureResponse<O = unknown> = {
|
|
25
|
+
readonly ok: true;
|
|
26
|
+
readonly data: O;
|
|
27
|
+
} | {
|
|
28
|
+
readonly ok: false;
|
|
29
|
+
readonly diagnostic: Diagnostic;
|
|
30
|
+
};
|
|
31
|
+
export interface InvokeBuiltinRequest {
|
|
32
|
+
readonly procedure: ProcedureManifest;
|
|
33
|
+
/** Procedure input that has already cleared zod validation. */
|
|
34
|
+
readonly validatedInput: Record<string, unknown>;
|
|
35
|
+
readonly ctx: HandlerContext;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/procedure/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,KAAK,EACL,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B;;uCAEmC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,GAAG,OAAO,IAC3C;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACvC;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/usecase/dto/procedure/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Entry, SiteConfig } from "@aotter/mantle-spec";
|
|
2
|
+
import type { PublicPathResolver } from "../../../domain/service/PublicPathResolver.js";
|
|
3
|
+
/**
|
|
4
|
+
* Request DTO for `ComposeEntrySeoMetaUseCase`. Caller passes the
|
|
5
|
+
* entry, the site, and the resolver; the use case figures out
|
|
6
|
+
* sibling translations for hreflang.
|
|
7
|
+
*/
|
|
8
|
+
export interface ComposeEntrySeoMetaRequest {
|
|
9
|
+
readonly entry: Entry;
|
|
10
|
+
readonly site: SiteConfig;
|
|
11
|
+
readonly paths: PublicPathResolver;
|
|
12
|
+
readonly type?: "article" | "website";
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ComposeEntrySeoMetaRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposeEntrySeoMetaRequest.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeEntrySeoMetaRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAExF;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposeEntrySeoMetaRequest.js","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeEntrySeoMetaRequest.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SiteConfig } from "@aotter/mantle-spec";
|
|
2
|
+
export interface ComposeLlmsTxtRequest {
|
|
3
|
+
readonly site: SiteConfig;
|
|
4
|
+
/** locale: string → entries with that locale; locale: null →
|
|
5
|
+
* non-localized only (matches publish-pipeline semantic). */
|
|
6
|
+
readonly locale: string | null;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=ComposeLlmsTxtRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposeLlmsTxtRequest.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeLlmsTxtRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B;kEAC8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposeLlmsTxtRequest.js","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeLlmsTxtRequest.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Entry, SiteConfig } from "@aotter/mantle-spec";
|
|
2
|
+
export interface ComposeSitemapRequest {
|
|
3
|
+
readonly site: SiteConfig;
|
|
4
|
+
/** Map storage row → public route. Returning `null` skips. */
|
|
5
|
+
readonly pathFor?: (entry: Entry) => string | null;
|
|
6
|
+
/** Caps the SQL read + memory cost. Defaults to
|
|
7
|
+
* SITEMAP_MAX_URLS_DEFAULT (50,000 — the sitemap-protocol per-file
|
|
8
|
+
* ceiling). */
|
|
9
|
+
readonly maxUrls?: number;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ComposeSitemapRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposeSitemapRequest.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeSitemapRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,IAAI,CAAC;IACnD;;oBAEgB;IAChB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposeSitemapRequest.js","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeSitemapRequest.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ContentState, SiteConfig } from "@aotter/mantle-spec";
|
|
2
|
+
/**
|
|
3
|
+
* Request DTO for `PreviewEntryUseCase`. Looks up the entry,
|
|
4
|
+
* preferring `statusOrder` left-to-right (default: draft → published
|
|
5
|
+
* → archived); renders via the registered template; injects a
|
|
6
|
+
* preview banner.
|
|
7
|
+
*/
|
|
8
|
+
export interface PreviewEntryRequest {
|
|
9
|
+
readonly collection: string;
|
|
10
|
+
readonly slug: string;
|
|
11
|
+
readonly locale: string;
|
|
12
|
+
readonly site: SiteConfig;
|
|
13
|
+
/** Override the default fallback order. Empty array = no fallback;
|
|
14
|
+
* use the single-status RenderEntryLiveUseCase if you want one
|
|
15
|
+
* state only. */
|
|
16
|
+
readonly statusOrder?: ReadonlyArray<ContentState>;
|
|
17
|
+
/** Banner HTML appended just inside `<body>`. Caller composes the
|
|
18
|
+
* text — runtime doesn't own the localization. Defaults to a bare
|
|
19
|
+
* `Preview · {status} · {slug}` block when omitted (HTML-escaped
|
|
20
|
+
* via `defaultPreviewBanner`).
|
|
21
|
+
*
|
|
22
|
+
* ⚠ Caller-supplied `banner` is injected verbatim — the runtime
|
|
23
|
+
* does not escape it. Treat it the same as any other adapter HTML
|
|
24
|
+
* payload: the caller owns sanitization. */
|
|
25
|
+
readonly banner?: string;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=PreviewEntryRequest.d.ts.map
|