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