@aotter/mantle-runtime 0.1.0-alpha.1 → 0.1.0-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/README.md +37 -4
- package/dist/MantleRuntime.d.ts +96 -0
- package/dist/MantleRuntime.d.ts.map +1 -0
- package/dist/MantleRuntime.js +197 -0
- package/dist/MantleRuntime.js.map +1 -0
- package/dist/domain/model/HandlerContext.d.ts +3 -4
- package/dist/domain/model/HandlerContext.d.ts.map +1 -1
- package/dist/domain/model/PreparedMantleRevision.d.ts +14 -0
- package/dist/domain/model/PreparedMantleRevision.d.ts.map +1 -0
- package/dist/domain/model/PreparedMantleRevision.js +8 -0
- package/dist/domain/model/PreparedMantleRevision.js.map +1 -0
- package/dist/domain/model/index.d.ts +1 -2
- package/dist/domain/model/index.d.ts.map +1 -1
- package/dist/domain/model/index.js +0 -1
- package/dist/domain/model/index.js.map +1 -1
- package/dist/domain/port/Clock.d.ts +1 -2
- package/dist/domain/port/Clock.d.ts.map +1 -1
- package/dist/domain/port/Clock.js.map +1 -1
- package/dist/domain/port/DatabaseDriver.d.ts +13 -21
- package/dist/domain/port/DatabaseDriver.d.ts.map +1 -1
- package/dist/domain/port/EntryReader.d.ts +1 -1
- package/dist/domain/port/EntryReader.d.ts.map +1 -1
- package/dist/domain/port/EntryRepository.d.ts +19 -4
- package/dist/domain/port/EntryRepository.d.ts.map +1 -1
- package/dist/domain/port/HandlerRegistry.d.ts +1 -1
- package/dist/domain/port/IdGenerator.d.ts +3 -4
- package/dist/domain/port/IdGenerator.d.ts.map +1 -1
- package/dist/domain/port/IdGenerator.js.map +1 -1
- package/dist/domain/port/MantleStorageAdapter.d.ts +23 -0
- package/dist/domain/port/MantleStorageAdapter.d.ts.map +1 -0
- package/dist/domain/port/MantleStorageAdapter.js +2 -0
- package/dist/domain/port/MantleStorageAdapter.js.map +1 -0
- package/dist/domain/port/SiteConfigRepository.d.ts +12 -10
- package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -1
- package/dist/domain/port/ViewQueryExecutor.d.ts +29 -0
- package/dist/domain/port/ViewQueryExecutor.d.ts.map +1 -0
- package/dist/domain/port/ViewQueryExecutor.js +2 -0
- package/dist/domain/port/ViewQueryExecutor.js.map +1 -0
- package/dist/domain/port/index.d.ts +5 -2
- package/dist/domain/port/index.d.ts.map +1 -1
- package/dist/domain/port/index.js.map +1 -1
- package/dist/domain/service/LocaleNegotiator.d.ts.map +1 -1
- package/dist/domain/service/LocaleNegotiator.js +2 -2
- package/dist/domain/service/LocaleNegotiator.js.map +1 -1
- package/dist/domain/service/RuntimePlanCompiler.d.ts +89 -0
- package/dist/domain/service/RuntimePlanCompiler.d.ts.map +1 -0
- package/dist/domain/service/RuntimePlanCompiler.js +230 -0
- package/dist/domain/service/RuntimePlanCompiler.js.map +1 -0
- package/dist/domain/service/TriggerIndex.d.ts +5 -3
- package/dist/domain/service/TriggerIndex.d.ts.map +1 -1
- package/dist/domain/service/TriggerIndex.js +16 -4
- package/dist/domain/service/TriggerIndex.js.map +1 -1
- package/dist/domain/service/ViewParamCoercer.d.ts +1 -1
- package/dist/domain/service/ViewParamCoercer.js +1 -1
- package/dist/domain/service/index.d.ts +1 -9
- package/dist/domain/service/index.d.ts.map +1 -1
- package/dist/domain/service/index.js +1 -9
- package/dist/domain/service/index.js.map +1 -1
- package/dist/domain/service/io/EntryDeleteGuard.js +1 -1
- package/dist/domain/service/io/EntryDeleteGuard.js.map +1 -1
- package/dist/domain/service/io/EntryWriteGuard.d.ts +2 -2
- package/dist/domain/service/io/EntryWriteGuard.d.ts.map +1 -1
- package/dist/domain/service/io/EntryWriteGuard.js +1 -3
- package/dist/domain/service/io/EntryWriteGuard.js.map +1 -1
- package/dist/index.d.ts +17 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -11
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts +10 -0
- package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts.map +1 -0
- package/dist/infrastructure/boot/SqliteMigrationRunner.js +41 -0
- package/dist/infrastructure/boot/SqliteMigrationRunner.js.map +1 -0
- package/dist/infrastructure/boot/bootState.d.ts +9 -0
- package/dist/infrastructure/boot/bootState.d.ts.map +1 -0
- package/dist/infrastructure/boot/bootState.js +32 -0
- package/dist/infrastructure/boot/bootState.js.map +1 -0
- package/dist/infrastructure/boot/canonicalMigrations.d.ts +2 -0
- package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
- package/dist/infrastructure/boot/canonicalMigrations.js +166 -87
- package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
- package/dist/infrastructure/boot/index.d.ts +3 -1
- package/dist/infrastructure/boot/index.d.ts.map +1 -1
- package/dist/infrastructure/boot/index.js +3 -1
- package/dist/infrastructure/boot/index.js.map +1 -1
- package/dist/infrastructure/http/createMantleRequestHandler.d.ts +12 -0
- package/dist/infrastructure/http/createMantleRequestHandler.d.ts.map +1 -0
- package/dist/infrastructure/http/createMantleRequestHandler.js +127 -0
- package/dist/infrastructure/http/createMantleRequestHandler.js.map +1 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +18 -23
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +64 -39
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
- package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -1
- package/dist/infrastructure/mcp/McpToolCatalog.js +84 -19
- package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -1
- package/dist/infrastructure/mcp/index.d.ts +1 -1
- package/dist/infrastructure/mcp/index.d.ts.map +1 -1
- package/dist/infrastructure/mcp/index.js.map +1 -1
- package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +4 -8
- package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
- package/dist/infrastructure/persistence/DatabaseEntryRepository.js +75 -36
- package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -1
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +39 -31
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -1
- package/dist/infrastructure/persistence/Pagination.d.ts +3 -0
- package/dist/infrastructure/persistence/Pagination.d.ts.map +1 -1
- package/dist/infrastructure/persistence/Pagination.js +28 -0
- package/dist/infrastructure/persistence/Pagination.js.map +1 -1
- package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts +22 -0
- package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts.map +1 -0
- package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js +86 -0
- package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js.map +1 -0
- package/dist/{domain/service/ViewSqlCompiler.d.ts → infrastructure/storage/SqliteViewCompiler.d.ts} +9 -10
- package/dist/infrastructure/storage/SqliteViewCompiler.d.ts.map +1 -0
- package/dist/infrastructure/storage/SqliteViewCompiler.js +307 -0
- package/dist/infrastructure/storage/SqliteViewCompiler.js.map +1 -0
- package/dist/infrastructure/testing/IndexCoverageHarness.d.ts +2 -2
- package/dist/infrastructure/testing/IndexCoverageHarness.d.ts.map +1 -1
- package/dist/infrastructure/testing/IndexCoverageHarness.js +9 -8
- package/dist/infrastructure/testing/IndexCoverageHarness.js.map +1 -1
- package/dist/usecase/boot/ValidateBootUseCase.d.ts +16 -35
- package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -1
- package/dist/usecase/boot/ValidateBootUseCase.js +79 -254
- package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -1
- package/dist/usecase/boot/index.d.ts +1 -1
- package/dist/usecase/boot/index.d.ts.map +1 -1
- package/dist/usecase/boot/index.js +1 -1
- package/dist/usecase/boot/index.js.map +1 -1
- package/dist/usecase/content/ArchiveUseCase.d.ts +1 -1
- package/dist/usecase/content/ArchiveUseCase.js +1 -1
- package/dist/usecase/content/CreateDraftUseCase.d.ts +3 -3
- package/dist/usecase/content/CreateDraftUseCase.d.ts.map +1 -1
- package/dist/usecase/content/CreateDraftUseCase.js +5 -5
- package/dist/usecase/content/CreateDraftUseCase.js.map +1 -1
- package/dist/usecase/content/DeleteEntryUseCase.d.ts +3 -5
- package/dist/usecase/content/DeleteEntryUseCase.d.ts.map +1 -1
- package/dist/usecase/content/DeleteEntryUseCase.js +3 -5
- package/dist/usecase/content/DeleteEntryUseCase.js.map +1 -1
- package/dist/usecase/content/ListEntriesUseCase.d.ts.map +1 -1
- package/dist/usecase/content/ListEntriesUseCase.js +30 -3
- package/dist/usecase/content/ListEntriesUseCase.js.map +1 -1
- package/dist/usecase/content/RequestPublishUseCase.d.ts +4 -12
- package/dist/usecase/content/RequestPublishUseCase.d.ts.map +1 -1
- package/dist/usecase/content/RequestPublishUseCase.js +3 -21
- package/dist/usecase/content/RequestPublishUseCase.js.map +1 -1
- package/dist/usecase/content/UpdateDraftUseCase.d.ts +2 -2
- package/dist/usecase/content/UpdateDraftUseCase.d.ts.map +1 -1
- package/dist/usecase/content/UpdateDraftUseCase.js +4 -4
- package/dist/usecase/content/UpdateDraftUseCase.js.map +1 -1
- package/dist/usecase/content/diagnostics.d.ts +1 -0
- package/dist/usecase/content/diagnostics.d.ts.map +1 -1
- package/dist/usecase/content/diagnostics.js +10 -0
- package/dist/usecase/content/diagnostics.js.map +1 -1
- package/dist/usecase/dto/content/index.d.ts +10 -1
- package/dist/usecase/dto/content/index.d.ts.map +1 -1
- package/dist/usecase/dto/index.d.ts +0 -1
- package/dist/usecase/dto/index.d.ts.map +1 -1
- package/dist/usecase/dto/index.js +0 -1
- package/dist/usecase/dto/index.js.map +1 -1
- package/dist/usecase/dto/view/ExecuteViewRequest.d.ts +2 -2
- package/dist/usecase/dto/view/ExecuteViewRequest.d.ts.map +1 -1
- package/dist/usecase/index.d.ts +0 -1
- package/dist/usecase/index.d.ts.map +1 -1
- package/dist/usecase/index.js +0 -1
- package/dist/usecase/index.js.map +1 -1
- package/dist/usecase/media/diagnostics.js +1 -1
- package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +3 -3
- package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -1
- package/dist/usecase/procedure/InvokeBuiltinUseCase.js +2 -2
- package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -1
- package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts +3 -2
- package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -1
- package/dist/usecase/site/UpdateSiteSettingsUseCase.js +35 -2
- package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -1
- package/dist/usecase/view/ExecuteViewUseCase.d.ts +8 -16
- package/dist/usecase/view/ExecuteViewUseCase.d.ts.map +1 -1
- package/dist/usecase/view/ExecuteViewUseCase.js +23 -94
- package/dist/usecase/view/ExecuteViewUseCase.js.map +1 -1
- package/dist/usecase/view/index.d.ts +2 -1
- package/dist/usecase/view/index.d.ts.map +1 -1
- package/dist/usecase/view/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/domain/model/SeoMeta.d.ts +0 -47
- package/dist/domain/model/SeoMeta.d.ts.map +0 -1
- package/dist/domain/model/SeoMeta.js +0 -2
- package/dist/domain/model/SeoMeta.js.map +0 -1
- package/dist/domain/model/TemplateRegistry.d.ts +0 -50
- package/dist/domain/model/TemplateRegistry.d.ts.map +0 -1
- package/dist/domain/model/TemplateRegistry.js +0 -17
- package/dist/domain/model/TemplateRegistry.js.map +0 -1
- package/dist/domain/port/AssetServer.d.ts +0 -21
- package/dist/domain/port/AssetServer.d.ts.map +0 -1
- package/dist/domain/port/AssetServer.js +0 -2
- package/dist/domain/port/AssetServer.js.map +0 -1
- package/dist/domain/service/AbsoluteUrl.d.ts +0 -6
- package/dist/domain/service/AbsoluteUrl.d.ts.map +0 -1
- package/dist/domain/service/AbsoluteUrl.js +0 -33
- package/dist/domain/service/AbsoluteUrl.js.map +0 -1
- package/dist/domain/service/HtmlEscaping.d.ts +0 -2
- package/dist/domain/service/HtmlEscaping.d.ts.map +0 -1
- package/dist/domain/service/HtmlEscaping.js +0 -9
- package/dist/domain/service/HtmlEscaping.js.map +0 -1
- package/dist/domain/service/HtmlRenderer.d.ts +0 -36
- package/dist/domain/service/HtmlRenderer.d.ts.map +0 -1
- package/dist/domain/service/HtmlRenderer.js +0 -73
- package/dist/domain/service/HtmlRenderer.js.map +0 -1
- package/dist/domain/service/MarkdownSerializer.d.ts +0 -48
- package/dist/domain/service/MarkdownSerializer.d.ts.map +0 -1
- package/dist/domain/service/MarkdownSerializer.js +0 -109
- package/dist/domain/service/MarkdownSerializer.js.map +0 -1
- package/dist/domain/service/McpToolNaming.d.ts +0 -31
- package/dist/domain/service/McpToolNaming.d.ts.map +0 -1
- package/dist/domain/service/McpToolNaming.js +0 -48
- package/dist/domain/service/McpToolNaming.js.map +0 -1
- package/dist/domain/service/PreviewBanner.d.ts +0 -10
- package/dist/domain/service/PreviewBanner.d.ts.map +0 -1
- package/dist/domain/service/PreviewBanner.js +0 -30
- package/dist/domain/service/PreviewBanner.js.map +0 -1
- package/dist/domain/service/PublicPathResolver.d.ts +0 -46
- package/dist/domain/service/PublicPathResolver.d.ts.map +0 -1
- package/dist/domain/service/PublicPathResolver.js +0 -36
- package/dist/domain/service/PublicPathResolver.js.map +0 -1
- package/dist/domain/service/SeoMetaComposer.d.ts +0 -47
- package/dist/domain/service/SeoMetaComposer.d.ts.map +0 -1
- package/dist/domain/service/SeoMetaComposer.js +0 -164
- package/dist/domain/service/SeoMetaComposer.js.map +0 -1
- package/dist/domain/service/SitemapSerializer.d.ts +0 -19
- package/dist/domain/service/SitemapSerializer.d.ts.map +0 -1
- package/dist/domain/service/SitemapSerializer.js +0 -27
- package/dist/domain/service/SitemapSerializer.js.map +0 -1
- package/dist/domain/service/ViewSqlCompiler.d.ts.map +0 -1
- package/dist/domain/service/ViewSqlCompiler.js +0 -198
- package/dist/domain/service/ViewSqlCompiler.js.map +0 -1
- package/dist/domain/service/io/MediaAssetReferences.d.ts +0 -13
- package/dist/domain/service/io/MediaAssetReferences.d.ts.map +0 -1
- package/dist/domain/service/io/MediaAssetReferences.js +0 -48
- package/dist/domain/service/io/MediaAssetReferences.js.map +0 -1
- package/dist/runtime.d.ts +0 -141
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -177
- package/dist/runtime.js.map +0 -1
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts +0 -14
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts.map +0 -1
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js +0 -2
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js.map +0 -1
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts +0 -8
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts.map +0 -1
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js +0 -2
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js.map +0 -1
- package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts +0 -11
- package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts.map +0 -1
- package/dist/usecase/dto/render/ComposeSitemapRequest.js +0 -2
- package/dist/usecase/dto/render/ComposeSitemapRequest.js.map +0 -1
- package/dist/usecase/dto/render/PreviewEntryRequest.d.ts +0 -13
- package/dist/usecase/dto/render/PreviewEntryRequest.d.ts.map +0 -1
- package/dist/usecase/dto/render/PreviewEntryRequest.js +0 -2
- package/dist/usecase/dto/render/PreviewEntryRequest.js.map +0 -1
- package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts +0 -14
- package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts.map +0 -1
- package/dist/usecase/dto/render/RenderEntryLiveRequest.js +0 -2
- package/dist/usecase/dto/render/RenderEntryLiveRequest.js.map +0 -1
- package/dist/usecase/dto/render/RenderListLiveRequest.d.ts +0 -11
- package/dist/usecase/dto/render/RenderListLiveRequest.d.ts.map +0 -1
- package/dist/usecase/dto/render/RenderListLiveRequest.js +0 -2
- package/dist/usecase/dto/render/RenderListLiveRequest.js.map +0 -1
- package/dist/usecase/dto/render/index.d.ts +0 -7
- package/dist/usecase/dto/render/index.d.ts.map +0 -1
- package/dist/usecase/dto/render/index.js +0 -7
- package/dist/usecase/dto/render/index.js.map +0 -1
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +0 -28
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +0 -1
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +0 -59
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +0 -1
- package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +0 -16
- package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +0 -1
- package/dist/usecase/render/ComposeLlmsTxtUseCase.js +0 -36
- package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +0 -1
- package/dist/usecase/render/ComposeSitemapUseCase.d.ts +0 -15
- package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +0 -1
- package/dist/usecase/render/ComposeSitemapUseCase.js +0 -28
- package/dist/usecase/render/ComposeSitemapUseCase.js.map +0 -1
- package/dist/usecase/render/PreviewEntryUseCase.d.ts +0 -28
- package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +0 -1
- package/dist/usecase/render/PreviewEntryUseCase.js +0 -72
- package/dist/usecase/render/PreviewEntryUseCase.js.map +0 -1
- package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +0 -36
- package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +0 -1
- package/dist/usecase/render/RenderEntryLiveUseCase.js +0 -62
- package/dist/usecase/render/RenderEntryLiveUseCase.js.map +0 -1
- package/dist/usecase/render/RenderListLiveUseCase.d.ts +0 -25
- package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +0 -1
- package/dist/usecase/render/RenderListLiveUseCase.js +0 -45
- package/dist/usecase/render/RenderListLiveUseCase.js.map +0 -1
- package/dist/usecase/render/index.d.ts +0 -7
- package/dist/usecase/render/index.d.ts.map +0 -1
- package/dist/usecase/render/index.js +0 -7
- package/dist/usecase/render/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseEntryRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseEntryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,WAAW,EACX,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAC;AAOxC
|
|
1
|
+
{"version":3,"file":"DatabaseEntryRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseEntryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,WAAW,EACX,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAC;AAOxC;;;;;;;;;;GAUG;AACH,qBAAa,uBAAwB,YAAW,eAAe,EAAE,WAAW;IAExE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBADb,EAAE,EAAE,cAAc,EAClB,aAAa,GAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAa;IAG3E,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6BhD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAWzC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoBhD,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAyBrE,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuC/D,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0EvD,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAQzE,gBAAgB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI3E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAK3C,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAU5D,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAUtE,iBAAiB,CACrB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IAiCtB,aAAa,CACjB,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IA2BtB,mBAAmB,CACvB,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;YAuBd,mBAAmB;YA0CnB,eAAe;CAU9B;AAgID;0EAC0E;AAC1E,wBAAsB,eAAe,CACnC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAEvB"}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { schemaIndexedFieldSql, } from "@aotter/mantle-spec";
|
|
2
2
|
import { clampLimit } from "../../domain/service/Pagination.js";
|
|
3
3
|
import { EntryStatusConflict, EntryVersionConflict, liftLocale, projectPublicEntry, } from "../../domain/model/EntryRow.js";
|
|
4
|
-
import {
|
|
4
|
+
import { decodeEntrySortCursor, encodeEntrySortCursor, escapeLikeTerm, } from "./Pagination.js";
|
|
5
5
|
/**
|
|
6
6
|
* `EntryRepository` impl backed by `DatabaseDriver`. Adapters that
|
|
7
|
-
* implement `DatabaseDriver`
|
|
8
|
-
*
|
|
9
|
-
* (which Postgres can also execute via Hyperdrive when v0.2 lands).
|
|
7
|
+
* implement the SQLite-shaped `DatabaseDriver` contract get this
|
|
8
|
+
* repository for free.
|
|
10
9
|
*
|
|
11
10
|
* `UPDATE … RETURNING` collapses the post-write SELECT to one round
|
|
12
|
-
* trip on SQLite ≥ 3.35 / Postgres.
|
|
13
|
-
* `DatabaseDriver.batch` because SQLite doesn't enforce FK ON DELETE
|
|
14
|
-
* CASCADE by default and we'd otherwise orphan revisions / approvals
|
|
15
|
-
* when the parent goes.
|
|
11
|
+
* trip on SQLite ≥ 3.35 / Postgres.
|
|
16
12
|
*
|
|
17
13
|
* Lifts `data.locale` to `EntryRow.locale` at the rowFromDb boundary
|
|
18
14
|
* — see ADR-0010 + `domain/model/EntryRow.ts`.
|
|
@@ -70,21 +66,11 @@ export class DatabaseEntryRepository {
|
|
|
70
66
|
args.expectedStatus,
|
|
71
67
|
args.expectedVersion,
|
|
72
68
|
];
|
|
73
|
-
const result = await this.db
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
this.db
|
|
79
|
-
.prepare(`DELETE FROM approvals WHERE entry_id = ?
|
|
80
|
-
AND EXISTS (SELECT 1 FROM entries WHERE ${parentMatches})`)
|
|
81
|
-
.bind(args.id, ...parentSnapshot),
|
|
82
|
-
this.db
|
|
83
|
-
.prepare(`DELETE FROM entries WHERE ${parentMatches}`)
|
|
84
|
-
.bind(...parentSnapshot),
|
|
85
|
-
]);
|
|
86
|
-
const last = result[result.length - 1];
|
|
87
|
-
if ((last?.meta.changes ?? 0) > 0)
|
|
69
|
+
const result = await this.db
|
|
70
|
+
.prepare(`DELETE FROM entries WHERE ${parentMatches}`)
|
|
71
|
+
.bind(...parentSnapshot)
|
|
72
|
+
.run();
|
|
73
|
+
if (result.meta.changes > 0)
|
|
88
74
|
return { removed: true };
|
|
89
75
|
const after = await this.db
|
|
90
76
|
.prepare(`SELECT collection, status, version FROM entries WHERE id = ?`)
|
|
@@ -135,7 +121,16 @@ export class DatabaseEntryRepository {
|
|
|
135
121
|
// adapters that bypass the use case) get the same default page
|
|
136
122
|
// size as ListEntriesUseCase — not a silently different 100.
|
|
137
123
|
const limit = clampLimit(args.limit);
|
|
138
|
-
const
|
|
124
|
+
const sort = args.sort ?? { field: "updatedAt", direction: "desc" };
|
|
125
|
+
const schema = this.schemasByName.get(args.collection);
|
|
126
|
+
const sortSql = entrySortSql(schema, sort.field);
|
|
127
|
+
if (!sortSql)
|
|
128
|
+
throw new Error(`unavailable entry sort field: ${sort.field}`);
|
|
129
|
+
const cursor = decodeEntrySortCursor(args.cursor, sort.field, sort.direction);
|
|
130
|
+
const backward = args.cursorDirection === "backward" && cursor !== null;
|
|
131
|
+
const queryDirection = backward
|
|
132
|
+
? (sort.direction === "asc" ? "DESC" : "ASC")
|
|
133
|
+
: sort.direction.toUpperCase();
|
|
139
134
|
// Fetch limit+1 to detect a next page without a second query —
|
|
140
135
|
// the extra row never reaches the caller.
|
|
141
136
|
const probe = limit + 1;
|
|
@@ -146,31 +141,51 @@ export class DatabaseEntryRepository {
|
|
|
146
141
|
binds.push(args.status);
|
|
147
142
|
}
|
|
148
143
|
if (args.search) {
|
|
149
|
-
// LIKE over the raw JSON blob is dumb but fine at this scale —
|
|
150
|
-
// there's no FTS index. Escape the caller's own wildcards so a
|
|
151
|
-
// search for "50%" or "a_b" doesn't turn into an unintended
|
|
152
|
-
// pattern.
|
|
153
144
|
const term = escapeLikeTerm(args.search);
|
|
154
|
-
|
|
155
|
-
binds.push(term
|
|
145
|
+
const searchConditions = ["id LIKE '%'||?||'%' ESCAPE '\\'"];
|
|
146
|
+
binds.push(term);
|
|
147
|
+
for (const field of args.searchFields ?? []) {
|
|
148
|
+
searchConditions.push("json_extract(data, ?) LIKE '%'||?||'%' ESCAPE '\\'");
|
|
149
|
+
binds.push(jsonPathForTopLevelField(field), term);
|
|
150
|
+
}
|
|
151
|
+
conditions.push(`(${searchConditions.join(" OR ")})`);
|
|
152
|
+
}
|
|
153
|
+
if (args.filter) {
|
|
154
|
+
const compiled = compileDataPredicates(schema, [{
|
|
155
|
+
field: args.filter.field,
|
|
156
|
+
kind: "equal",
|
|
157
|
+
value: args.filter.value,
|
|
158
|
+
}]);
|
|
159
|
+
conditions.push(...compiled.conditions);
|
|
160
|
+
binds.push(...compiled.binds);
|
|
156
161
|
}
|
|
157
162
|
if (cursor) {
|
|
158
|
-
|
|
163
|
+
const comparison = backward
|
|
164
|
+
? (sort.direction === "asc" ? "<" : ">")
|
|
165
|
+
: (sort.direction === "asc" ? ">" : "<");
|
|
166
|
+
conditions.push(`(${sortSql}, id) ${comparison} (?, ?)`);
|
|
159
167
|
binds.push(...cursor);
|
|
160
168
|
}
|
|
161
169
|
binds.push(probe);
|
|
162
170
|
const stmt = this.db
|
|
163
171
|
.prepare(`SELECT id, collection, status, version, data, author_id, created_at, updated_at
|
|
164
172
|
FROM entries WHERE ${conditions.join(" AND ")}
|
|
165
|
-
ORDER BY
|
|
173
|
+
ORDER BY ${sortSql} ${queryDirection}, id ${queryDirection} LIMIT ?`)
|
|
166
174
|
.bind(...binds);
|
|
167
175
|
const rows = await stmt.all();
|
|
168
176
|
const hasMore = rows.length > limit;
|
|
169
|
-
const page = hasMore ? rows.slice(0, limit) : rows;
|
|
177
|
+
const page = [...(hasMore ? rows.slice(0, limit) : rows)];
|
|
178
|
+
if (backward)
|
|
179
|
+
page.reverse();
|
|
180
|
+
const first = page[0];
|
|
181
|
+
const last = page[page.length - 1];
|
|
170
182
|
return {
|
|
171
183
|
rows: page.map(rowFromDb),
|
|
172
|
-
|
|
173
|
-
?
|
|
184
|
+
previousCursor: first && (backward ? hasMore : cursor !== null)
|
|
185
|
+
? encodeEntrySortCursor(sort.field, sort.direction, entrySortValueFromDb(first, sort.field), first.id)
|
|
186
|
+
: undefined,
|
|
187
|
+
nextCursor: last && (backward ? cursor !== null : hasMore)
|
|
188
|
+
? encodeEntrySortCursor(sort.field, sort.direction, entrySortValueFromDb(last, sort.field), last.id)
|
|
174
189
|
: undefined,
|
|
175
190
|
};
|
|
176
191
|
}
|
|
@@ -381,6 +396,30 @@ function usableIndexedFields(schema, predicates) {
|
|
|
381
396
|
}
|
|
382
397
|
return usable;
|
|
383
398
|
}
|
|
399
|
+
function entrySortSql(schema, field) {
|
|
400
|
+
if (field === "id")
|
|
401
|
+
return "id";
|
|
402
|
+
if (field === "status")
|
|
403
|
+
return "status";
|
|
404
|
+
if (field === "updatedAt")
|
|
405
|
+
return "updated_at";
|
|
406
|
+
return schema ? schemaIndexedFieldSql(schema, field) : null;
|
|
407
|
+
}
|
|
408
|
+
function entrySortValueFromDb(row, field) {
|
|
409
|
+
if (field === "id")
|
|
410
|
+
return row.id;
|
|
411
|
+
if (field === "status")
|
|
412
|
+
return row.status;
|
|
413
|
+
if (field === "updatedAt")
|
|
414
|
+
return row.updated_at;
|
|
415
|
+
const value = JSON.parse(row.data)[field];
|
|
416
|
+
if (typeof value === "boolean")
|
|
417
|
+
return Number(value);
|
|
418
|
+
if (typeof value !== "string" && typeof value !== "number") {
|
|
419
|
+
throw new Error(`non-scalar sort value for ${field}`);
|
|
420
|
+
}
|
|
421
|
+
return value;
|
|
422
|
+
}
|
|
384
423
|
function rowFromDb(row) {
|
|
385
424
|
const data = JSON.parse(row.data);
|
|
386
425
|
return {
|
|
@@ -399,7 +438,7 @@ function jsonPathForTopLevelField(field) {
|
|
|
399
438
|
return `$."${field.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
|
|
400
439
|
}
|
|
401
440
|
/** Public compatibility helper. Without a Schema map it intentionally uses
|
|
402
|
-
* the safe JSON fallback; in-repo callers use `
|
|
441
|
+
* the safe JSON fallback; in-repo callers use `MantleRuntime.entries`. */
|
|
403
442
|
export async function readEntryBySlug(db, args) {
|
|
404
443
|
return new DatabaseEntryRepository(db).readBySlug(args);
|
|
405
444
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseEntryRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseEntryRepository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatabaseEntryRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseEntryRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseSiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"DatabaseSiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,2CAA2C,CAAC;AAwFnD,qBAAa,4BAA6B,YAAW,oBAAoB;IAI3D,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAgC;gBAExB,EAAE,EAAE,cAAc;IAEzC,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAyD/C,eAAe;IAS7B,OAAO,CAAC,MAAM;IAQR,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAqB3B,cAAc,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,WAAW,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAWzC,iBAAiB,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC;CAOlE"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { assertSiteDefaultsCanonical, } from "@aotter/mantle-spec";
|
|
1
|
+
import { assertSiteDefaultsCanonical, DEFAULT_SITE_ICONS, } from "@aotter/mantle-spec";
|
|
2
2
|
/**
|
|
3
|
-
* `site_config` row read/write. `seed`
|
|
4
|
-
*
|
|
3
|
+
* `site_config` row read/write. SQLite preparation calls `seed` once per
|
|
4
|
+
* changed revision and treats keys differently depending on who owns them:
|
|
5
5
|
*
|
|
6
6
|
* - **UI-editable, seed-once** (`brand`, `title`, `description`,
|
|
7
|
-
* `
|
|
7
|
+
* `ga4MeasurementId`, `facebookPixelId`):
|
|
8
8
|
* written via INSERT … ON CONFLICT DO NOTHING. The admin settings
|
|
9
9
|
* UI (`/admin/api/site-settings`) can edit a subset of these
|
|
10
10
|
* directly, and the rest are conceptually the same "operator can
|
|
11
11
|
* override" bucket — either way, DB wins once the row exists, so a
|
|
12
12
|
* later `src/mantle/config.ts` edit never clobbers an operator's change.
|
|
13
13
|
*
|
|
14
|
-
* - **code-canonical, boot-synced** (`mediaPurposes`, `locales`):
|
|
14
|
+
* - **code-canonical, boot-synced** (`origin`, `icons`, `mediaPurposes`, `locales`):
|
|
15
15
|
* these have no admin-UI edit path — `src/mantle/config.ts` is the only
|
|
16
16
|
* source of truth — so `seed` upserts them on every boot, writing
|
|
17
17
|
* only when the serialized value actually differs from what's
|
|
@@ -21,7 +21,7 @@ import { assertSiteDefaultsCanonical, } from "@aotter/mantle-spec";
|
|
|
21
21
|
* purpose, adjusted `maxBytes`) silently never reached a
|
|
22
22
|
* already-deployed site's D1 row.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
24
|
+
* SQLite preparation calls `seed`; the result of `load`
|
|
25
25
|
* is what every render path and template sees.
|
|
26
26
|
*
|
|
27
27
|
* `mediaPurposes` is JSON-encoded (an array of `MediaPurposePolicy`
|
|
@@ -72,6 +72,20 @@ function parseMediaPurposes(raw) {
|
|
|
72
72
|
return [];
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
+
function parseIcons(raw) {
|
|
76
|
+
if (!raw)
|
|
77
|
+
return DEFAULT_SITE_ICONS;
|
|
78
|
+
try {
|
|
79
|
+
const parsed = JSON.parse(raw);
|
|
80
|
+
return Array.isArray(parsed) && parsed.length > 0
|
|
81
|
+
? parsed
|
|
82
|
+
: DEFAULT_SITE_ICONS;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Alpha compatibility: older releases stored one plain favicon URL.
|
|
86
|
+
return [{ src: raw }];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
75
89
|
export class DatabaseSiteConfigRepository {
|
|
76
90
|
db;
|
|
77
91
|
cacheLocales = false;
|
|
@@ -87,34 +101,26 @@ export class DatabaseSiteConfigRepository {
|
|
|
87
101
|
return;
|
|
88
102
|
}
|
|
89
103
|
assertSiteDefaultsCanonical(defaults);
|
|
90
|
-
const
|
|
104
|
+
const seedOnceValues = [
|
|
105
|
+
[KEYS.brand, defaults.brand],
|
|
106
|
+
[KEYS.title, defaults.title],
|
|
107
|
+
[KEYS.description, defaults.description],
|
|
108
|
+
[KEYS.ga4MeasurementId, defaults.ga4MeasurementId],
|
|
109
|
+
[KEYS.facebookPixelId, defaults.facebookPixelId],
|
|
110
|
+
];
|
|
91
111
|
const insertOnce = (key, value) => this.db
|
|
92
112
|
.prepare(`INSERT INTO site_config (key, value) VALUES (?, ?) ON CONFLICT(key) DO NOTHING`)
|
|
93
113
|
.bind(key, value);
|
|
94
114
|
// UI-editable, seed-once — DB wins once the row exists.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if (defaults.origin && defaults.origin.length > 0) {
|
|
105
|
-
stmts.push(insertOnce(KEYS.origin, defaults.origin));
|
|
106
|
-
}
|
|
107
|
-
if (defaults.faviconUrl && defaults.faviconUrl.length > 0) {
|
|
108
|
-
stmts.push(insertOnce(KEYS.faviconUrl, defaults.faviconUrl));
|
|
109
|
-
}
|
|
110
|
-
if (defaults.ga4MeasurementId && defaults.ga4MeasurementId.length > 0) {
|
|
111
|
-
stmts.push(insertOnce(KEYS.ga4MeasurementId, defaults.ga4MeasurementId));
|
|
112
|
-
}
|
|
113
|
-
if (defaults.facebookPixelId && defaults.facebookPixelId.length > 0) {
|
|
114
|
-
stmts.push(insertOnce(KEYS.facebookPixelId, defaults.facebookPixelId));
|
|
115
|
-
}
|
|
116
|
-
if (stmts.length > 0) {
|
|
117
|
-
await this.db.batch(stmts);
|
|
115
|
+
const wanted = seedOnceValues.filter((entry) => Boolean(entry[1] && entry[1].length > 0));
|
|
116
|
+
if (wanted.length > 0) {
|
|
117
|
+
const existing = new Set((await this.db.prepare(`SELECT key, value FROM site_config`).all())
|
|
118
|
+
.map(({ key }) => key));
|
|
119
|
+
const missing = wanted
|
|
120
|
+
.filter(([key]) => !existing.has(key))
|
|
121
|
+
.map(([key, value]) => insertOnce(key, value));
|
|
122
|
+
if (missing.length > 0)
|
|
123
|
+
await this.db.batch(missing);
|
|
118
124
|
}
|
|
119
125
|
// Code-canonical, boot-synced — no admin-UI edit path for these
|
|
120
126
|
// keys, so `src/mantle/config.ts` is the only source of truth. Upsert
|
|
@@ -122,6 +128,8 @@ export class DatabaseSiteConfigRepository {
|
|
|
122
128
|
// read-compare-write avoids issuing a write on every boot when
|
|
123
129
|
// nothing actually changed (#441).
|
|
124
130
|
const syncedValues = [
|
|
131
|
+
[KEYS.origin, defaults.origin && defaults.origin.length > 0 ? defaults.origin : undefined],
|
|
132
|
+
[KEYS.faviconUrl, defaults.icons ? JSON.stringify(defaults.icons) : undefined],
|
|
125
133
|
[KEYS.locales, defaults.locales && defaults.locales.length > 0 ? defaults.locales.join(",") : undefined],
|
|
126
134
|
[
|
|
127
135
|
KEYS.mediaPurposes,
|
|
@@ -165,7 +173,7 @@ export class DatabaseSiteConfigRepository {
|
|
|
165
173
|
locales,
|
|
166
174
|
canonicalLocale: locales[0] ?? null,
|
|
167
175
|
brand: m.get(KEYS.brand) ?? "AotterMantle",
|
|
168
|
-
|
|
176
|
+
icons: parseIcons(m.get(KEYS.faviconUrl)),
|
|
169
177
|
ga4MeasurementId: m.get(KEYS.ga4MeasurementId) || undefined,
|
|
170
178
|
facebookPixelId: m.get(KEYS.facebookPixelId) || undefined,
|
|
171
179
|
media: { purposes },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseSiteConfigRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,
|
|
1
|
+
{"version":3,"file":"DatabaseSiteConfigRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,GAKnB,MAAM,qBAAqB,CAAC;AAO7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;CACtB,CAAC;AAEX,MAAM,aAAa,GAAG;IACpB,IAAI,CAAC,KAAK;IACV,IAAI,CAAC,KAAK;IACV,IAAI,CAAC,WAAW;IAChB,IAAI,CAAC,gBAAgB;IACrB,IAAI,CAAC,eAAe;CACZ,CAAC;AAEX,SAAS,QAAQ,CAAC,GAAuB;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAuB;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAuC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAuB;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,kBAAkB,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,MAA6B;YAC/B,CAAC,CAAC,kBAAkB,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;QACpE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,4BAA4B;IAIV;IAHrB,YAAY,GAAG,KAAK,CAAC;IACrB,aAAa,CAAgC;IAErD,YAA6B,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAC,QAAkC;QAC3C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO;QACT,CAAC;QACD,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,cAAc,GAAwC;YAC1D,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;YAC5B,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;YAC5B,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC;YACxC,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;YAClD,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC;SACjD,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAChD,IAAI,CAAC,EAAE;aACJ,OAAO,CAAC,gFAAgF,CAAC;aACzF,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtB,wDAAwD;QACxD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAClC,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/E,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAmB,CAAC;iBACjF,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CACzB,CAAC;YACF,MAAM,OAAO,GAAG,MAAM;iBACnB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACrC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;QAED,gEAAgE;QAChE,sEAAsE;QACtE,4DAA4D;QAC5D,+DAA+D;QAC/D,mCAAmC;QACnC,MAAM,YAAY,GAAwC;YACxD,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1F,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9E,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxG;gBACE,IAAI,CAAC,aAAa;gBAClB,QAAQ,CAAC,KAAK,EAAE,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAC5D,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;oBACzC,CAAC,CAAC,SAAS;aACd;SACF,CAAC;QACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YACxC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,KAAa;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE;aAC1B,OAAO,CAAC,6CAA6C,CAAC;aACtD,IAAI,CAAC,GAAG,CAAC;aACT,KAAK,EAAqB,CAAC;QAC9B,IAAI,OAAO,EAAE,KAAK,KAAK,KAAK;YAAE,OAAO;QACrC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;IACtC,CAAC;IAEO,MAAM,CAAC,GAAW,EAAE,KAAa;QACvC,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN,0GAA0G,CAC3G;aACA,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,OAAO,CAAC,oCAAoC,CAAC;aAC7C,GAAG,EAAkC,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAC/D,OAAO;YACL,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK;YACjC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAC1C,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAChC,OAAO;YACP,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI;YACnC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc;YAC1C,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,SAAS;YAC3D,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,SAAS;YACzD,KAAK,EAAE,EAAE,QAAQ,EAAE;SACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAoC;QACvD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,SAAS;YACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC;QACvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CAAC,6CAA6C,CAAC;aACtD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAClB,KAAK,EAAqB,CAAC;QAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QACpD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CAAC,6CAA6C,CAAC;aACtD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;aACxB,KAAK,EAAqB,CAAC;QAC9B,OAAO,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
export type EntryCursorValue = string | number;
|
|
1
2
|
export declare function encodeCursor(offset: number): string;
|
|
2
3
|
export declare function decodeCursor(cursor: string | undefined): number;
|
|
3
4
|
export declare function encodeEntryCursor(updatedAt: number, id: string): string;
|
|
4
5
|
export declare function decodeEntryCursor(cursor: string | undefined): readonly [updatedAt: number, id: string] | null;
|
|
6
|
+
export declare function encodeEntrySortCursor(field: string, direction: "asc" | "desc", value: EntryCursorValue, id: string): string;
|
|
7
|
+
export declare function decodeEntrySortCursor(cursor: string | undefined, field: string, direction: "asc" | "desc"): readonly [value: EntryCursorValue, id: string] | null;
|
|
5
8
|
export declare function escapeLikeTerm(term: string): string;
|
|
6
9
|
//# sourceMappingURL=Pagination.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/Pagination.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/Pagination.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/C,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI/D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,CAajD;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,KAAK,GAAG,MAAM,EACzB,KAAK,EAAE,gBAAgB,EACvB,EAAE,EAAE,MAAM,GACT,MAAM,CAKR;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,KAAK,GAAG,MAAM,GACxB,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,CAgBvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const CURSOR_PREFIX = "o:";
|
|
2
2
|
const MAX_CURSOR_OFFSET = 1_000_000;
|
|
3
3
|
const ENTRY_CURSOR_PREFIX = "e:";
|
|
4
|
+
const SORT_CURSOR_PREFIX = "s:";
|
|
4
5
|
export function encodeCursor(offset) {
|
|
5
6
|
return `${CURSOR_PREFIX}${offset}`;
|
|
6
7
|
}
|
|
@@ -30,6 +31,33 @@ export function decodeEntryCursor(cursor) {
|
|
|
30
31
|
return null;
|
|
31
32
|
}
|
|
32
33
|
}
|
|
34
|
+
export function encodeEntrySortCursor(field, direction, value, id) {
|
|
35
|
+
if (field === "updatedAt" && direction === "desc" && typeof value === "number") {
|
|
36
|
+
return encodeEntryCursor(value, id);
|
|
37
|
+
}
|
|
38
|
+
return `${SORT_CURSOR_PREFIX}${encodeURIComponent(JSON.stringify([field, direction, value, id]))}`;
|
|
39
|
+
}
|
|
40
|
+
export function decodeEntrySortCursor(cursor, field, direction) {
|
|
41
|
+
if (field === "updatedAt" && direction === "desc")
|
|
42
|
+
return decodeEntryCursor(cursor);
|
|
43
|
+
if (!cursor?.startsWith(SORT_CURSOR_PREFIX))
|
|
44
|
+
return null;
|
|
45
|
+
try {
|
|
46
|
+
const parsed = JSON.parse(decodeURIComponent(cursor.slice(SORT_CURSOR_PREFIX.length)));
|
|
47
|
+
if (!Array.isArray(parsed) || parsed.length !== 4)
|
|
48
|
+
return null;
|
|
49
|
+
const [cursorField, cursorDirection, value, id] = parsed;
|
|
50
|
+
return cursorField === field &&
|
|
51
|
+
cursorDirection === direction &&
|
|
52
|
+
(typeof value === "string" || typeof value === "number") &&
|
|
53
|
+
typeof id === "string" && id
|
|
54
|
+
? [value, id]
|
|
55
|
+
: null;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
33
61
|
export function escapeLikeTerm(term) {
|
|
34
62
|
return term.replace(/[\\%_]/g, (character) => `\\${character}`);
|
|
35
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/Pagination.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,iBAAiB,GAAG,SAAS,CAAC;AACpC,MAAM,mBAAmB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/Pagination.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type SiteDefaults } from "@aotter/mantle-spec";
|
|
2
|
+
import type { DatabaseDriver } from "../../domain/port/DatabaseDriver.js";
|
|
3
|
+
import type { MantleStorageAdapter, PreparedMantleStorage } from "../../domain/port/MantleStorageAdapter.js";
|
|
4
|
+
import type { ViewQueryExecutor, ViewQueryRequest, ViewQueryResult } from "../../domain/port/ViewQueryExecutor.js";
|
|
5
|
+
import type { SiteConfigRepository } from "../../domain/port/SiteConfigRepository.js";
|
|
6
|
+
import type { RuntimePlan } from "../../domain/service/RuntimePlanCompiler.js";
|
|
7
|
+
/** Existing SQLite/D1 implementation behind the semantic preparation seam. */
|
|
8
|
+
export declare class SqliteMantleStorageAdapter implements MantleStorageAdapter {
|
|
9
|
+
private readonly db;
|
|
10
|
+
private readonly siteDefaults?;
|
|
11
|
+
readonly nativeViewDialects: readonly ["sqlite"];
|
|
12
|
+
readonly siteConfig: SiteConfigRepository;
|
|
13
|
+
constructor(db: DatabaseDriver, siteDefaults?: SiteDefaults | undefined);
|
|
14
|
+
prepare(plan: RuntimePlan): Promise<PreparedMantleStorage>;
|
|
15
|
+
}
|
|
16
|
+
export declare class SqliteViewQueryExecutor implements ViewQueryExecutor {
|
|
17
|
+
private readonly db;
|
|
18
|
+
private readonly prepared;
|
|
19
|
+
constructor(db: DatabaseDriver, plan: RuntimePlan);
|
|
20
|
+
execute<R = Record<string, unknown>>(request: ViewQueryRequest): Promise<ViewQueryResult<R>>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=SqliteMantleStorageAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqliteMantleStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/storage/SqliteMantleStorageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAoB/E,8EAA8E;AAC9E,qBAAa,0BAA2B,YAAW,oBAAoB;IAKnE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IALhC,QAAQ,CAAC,kBAAkB,sBAAuB;IAClD,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;gBAGvB,EAAE,EAAE,cAAc,EAClB,YAAY,CAAC,EAAE,YAAY,YAAA;IAKxC,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAqBjE;AAED,qBAAa,uBAAwB,YAAW,iBAAiB;IAI7D,OAAO,CAAC,QAAQ,CAAC,EAAE;IAHrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;gBAG/C,EAAE,EAAE,cAAc,EACnC,IAAI,EAAE,WAAW;IAUb,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAqB/B"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DiagnosticError, runtimeDiagnostic, } from "@aotter/mantle-spec";
|
|
2
|
+
import { prepareSqliteView, } from "./SqliteViewCompiler.js";
|
|
3
|
+
import { assertDeploymentPlan } from "../../usecase/boot/ValidateBootUseCase.js";
|
|
4
|
+
import { bootFingerprint, CANONICAL_MIGRATIONS, isBootCurrent, markBootCurrent, reconcileSchemaIndexes, reconcileSchemaSqlViews, schemaIndexMigrations, } from "../boot/index.js";
|
|
5
|
+
import { DatabaseEntryRepository } from "../persistence/DatabaseEntryRepository.js";
|
|
6
|
+
import { DatabaseMediaAssetRepository } from "../persistence/DatabaseMediaAssetRepository.js";
|
|
7
|
+
import { DatabasePendingUploadRepository } from "../persistence/DatabasePendingUploadRepository.js";
|
|
8
|
+
import { DatabaseSiteConfigRepository } from "../persistence/DatabaseSiteConfigRepository.js";
|
|
9
|
+
/** Existing SQLite/D1 implementation behind the semantic preparation seam. */
|
|
10
|
+
export class SqliteMantleStorageAdapter {
|
|
11
|
+
db;
|
|
12
|
+
siteDefaults;
|
|
13
|
+
nativeViewDialects = ["sqlite"];
|
|
14
|
+
siteConfig;
|
|
15
|
+
constructor(db, siteDefaults) {
|
|
16
|
+
this.db = db;
|
|
17
|
+
this.siteDefaults = siteDefaults;
|
|
18
|
+
this.siteConfig = new DatabaseSiteConfigRepository(db);
|
|
19
|
+
}
|
|
20
|
+
async prepare(plan) {
|
|
21
|
+
const prepared = sqliteStoragePorts(this.db, plan, this.siteConfig);
|
|
22
|
+
const fingerprint = await bootFingerprint({
|
|
23
|
+
semanticFingerprint: plan.semanticFingerprint,
|
|
24
|
+
siteDefaults: this.siteDefaults,
|
|
25
|
+
});
|
|
26
|
+
if (await isBootCurrent(this.db, fingerprint))
|
|
27
|
+
return prepared;
|
|
28
|
+
await this.db.migrations.runAll(CANONICAL_MIGRATIONS);
|
|
29
|
+
await this.siteConfig.seed(this.siteDefaults);
|
|
30
|
+
assertDeploymentPlan(plan, { siteLocales: await this.siteConfig.readLocales() });
|
|
31
|
+
const schemas = Object.values(plan.schemas).map((schema) => schema.manifest);
|
|
32
|
+
const indexMigrations = schemaIndexMigrations(schemas);
|
|
33
|
+
await this.db.migrations.runAll(indexMigrations);
|
|
34
|
+
await reconcileSchemaIndexes(this.db, indexMigrations, schemas);
|
|
35
|
+
await reconcileSchemaSqlViews(this.db, schemas);
|
|
36
|
+
// Mark only after every check and reconciliation succeeds so retry is safe.
|
|
37
|
+
await markBootCurrent(this.db, fingerprint);
|
|
38
|
+
return prepared;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class SqliteViewQueryExecutor {
|
|
42
|
+
db;
|
|
43
|
+
prepared = new Map();
|
|
44
|
+
constructor(db, plan) {
|
|
45
|
+
this.db = db;
|
|
46
|
+
for (const view of Object.values(plan.views)) {
|
|
47
|
+
const schema = view.query.kind === "declarative"
|
|
48
|
+
? plan.schemas[view.query.from]?.manifest
|
|
49
|
+
: undefined;
|
|
50
|
+
this.prepared.set(view.name, prepareSqliteView(view.query, view.name, schema));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async execute(request) {
|
|
54
|
+
const prepared = this.prepared.get(request.view);
|
|
55
|
+
if (!prepared) {
|
|
56
|
+
throw new DiagnosticError(runtimeDiagnostic({
|
|
57
|
+
code: "NOT_FOUND",
|
|
58
|
+
severity: "error",
|
|
59
|
+
path: `manifest:View/${request.view}`,
|
|
60
|
+
value: request.view,
|
|
61
|
+
expected: "a View in the prepared RuntimePlan",
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
const compiled = prepared.bind(request);
|
|
65
|
+
const rows = await this.db.prepare(compiled.sql).bind(...compiled.params).all();
|
|
66
|
+
const normalized = prepared.normalizeRows(rows);
|
|
67
|
+
return {
|
|
68
|
+
rows: normalized,
|
|
69
|
+
page: compiled.effectivePage,
|
|
70
|
+
show: compiled.effectiveShow,
|
|
71
|
+
hasMore: normalized.length === compiled.effectiveShow,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function sqliteStoragePorts(db, plan, localePolicy) {
|
|
76
|
+
const schemas = new Map(Object.values(plan.schemas).map((schema) => [schema.name, schema.manifest]));
|
|
77
|
+
return {
|
|
78
|
+
entries: new DatabaseEntryRepository(db, schemas),
|
|
79
|
+
views: new SqliteViewQueryExecutor(db, plan),
|
|
80
|
+
localePolicy,
|
|
81
|
+
siteConfig: localePolicy,
|
|
82
|
+
mediaAssets: new DatabaseMediaAssetRepository(db),
|
|
83
|
+
pendingUploads: new DatabasePendingUploadRepository(db),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=SqliteMantleStorageAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqliteMantleStorageAdapter.js","sourceRoot":"","sources":["../../../src/infrastructure/storage/SqliteMantleStorageAdapter.ts"],"names":[],"mappings":"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"}
|