@aotter/mantle-runtime 0.0.11-alpha.61 → 0.0.11-alpha.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- 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/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/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/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/PathMatcher.d.ts +2 -0
- package/dist/domain/service/PathMatcher.d.ts.map +1 -1
- package/dist/domain/service/PathMatcher.js +26 -20
- package/dist/domain/service/PathMatcher.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 +2 -2
- 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/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 +37 -5
- 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 +222 -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 +16 -9
- 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/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/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/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).
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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":""}
|
|
@@ -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"}
|
|
@@ -12,4 +12,6 @@
|
|
|
12
12
|
* (HTTP layer) can call it without dragging an HTTP framework dep.
|
|
13
13
|
*/
|
|
14
14
|
export declare function matchPath(triggerPath: string, requestPath: string): Record<string, string> | null;
|
|
15
|
+
/** Compile the immutable Trigger half once for mounted HTTP routes. */
|
|
16
|
+
export declare function compilePathMatcher(triggerPath: string): (requestPath: string) => Record<string, string> | null;
|
|
15
17
|
//# sourceMappingURL=PathMatcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathMatcher.d.ts","sourceRoot":"","sources":["../../../src/domain/service/PathMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"PathMatcher.d.ts","sourceRoot":"","sources":["../../../src/domain/service/PathMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAE/B;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAClB,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA0BxD"}
|
|
@@ -12,32 +12,38 @@
|
|
|
12
12
|
* (HTTP layer) can call it without dragging an HTTP framework dep.
|
|
13
13
|
*/
|
|
14
14
|
export function matchPath(triggerPath, requestPath) {
|
|
15
|
+
return compilePathMatcher(triggerPath)(requestPath);
|
|
16
|
+
}
|
|
17
|
+
/** Compile the immutable Trigger half once for mounted HTTP routes. */
|
|
18
|
+
export function compilePathMatcher(triggerPath) {
|
|
15
19
|
// `/api/posts` and `/api/posts/` are the same resource; without
|
|
16
20
|
// normalization the trailing-slash side gains an empty segment and
|
|
17
21
|
// segment-count alone defeats the match.
|
|
18
22
|
const tParts = stripTrailingSlash(triggerPath).split("/");
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const params = {};
|
|
23
|
-
for (let i = 0; i < tParts.length; i++) {
|
|
24
|
-
const t = tParts[i];
|
|
25
|
-
const r = rParts[i];
|
|
26
|
-
// decodeURIComponent throws URIError on malformed encoding
|
|
27
|
-
// (e.g. `%GG`); surface as a routing miss, not a 500.
|
|
28
|
-
const decoded = safeDecode(r);
|
|
29
|
-
if (decoded === null)
|
|
23
|
+
return (requestPath) => {
|
|
24
|
+
const rParts = stripTrailingSlash(requestPath).split("/");
|
|
25
|
+
if (tParts.length !== rParts.length)
|
|
30
26
|
return null;
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
const params = {};
|
|
28
|
+
for (let i = 0; i < tParts.length; i++) {
|
|
29
|
+
const t = tParts[i];
|
|
30
|
+
const r = rParts[i];
|
|
31
|
+
// decodeURIComponent throws URIError on malformed encoding
|
|
32
|
+
// (e.g. `%GG`); surface as a routing miss, not a 500.
|
|
33
|
+
const decoded = safeDecode(r);
|
|
34
|
+
if (decoded === null)
|
|
35
|
+
return null;
|
|
36
|
+
if (t.startsWith("{") && t.endsWith("}")) {
|
|
37
|
+
params[t.slice(1, -1)] = decoded;
|
|
38
|
+
}
|
|
39
|
+
else if (t !== decoded) {
|
|
40
|
+
// Decode literals too so `/api/by%2Dtag` matches trigger
|
|
41
|
+
// `/api/by-tag` (percent-encoded equivalent of the same byte).
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
33
44
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// `/api/by-tag` (percent-encoded equivalent of the same byte).
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return params;
|
|
45
|
+
return params;
|
|
46
|
+
};
|
|
41
47
|
}
|
|
42
48
|
function safeDecode(segment) {
|
|
43
49
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathMatcher.js","sourceRoot":"","sources":["../../../src/domain/service/PathMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CACvB,WAAmB,EACnB,WAAmB;IAEnB,gEAAgE;IAChE,mEAAmE;IACnE,yCAAyC;IACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"PathMatcher.js","sourceRoot":"","sources":["../../../src/domain/service/PathMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CACvB,WAAmB,EACnB,WAAmB;IAEnB,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAChC,WAAmB;IAEnB,gEAAgE;IAChE,mEAAmE;IACnE,yCAAyC;IACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,OAAO,CAAC,WAAW,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACjD,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACrB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACrB,2DAA2D;YAC3D,sDAAsD;YACtD,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAClC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACnC,CAAC;iBAAM,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBACzB,yDAAyD;gBACzD,+DAA+D;gBAC/D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,SAAS,kBAAkB,CAAC,CAAS;IACnC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* `domain/service/` — pure stateless algorithms operating on the
|
|
3
3
|
* domain model + spec types. No env, no I/O.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { createCmsRuntime, type CreateCmsRuntimeArgs, type CmsRuntime, } from ".
|
|
|
18
18
|
export type { DatabaseDriver, PreparedStatement, RunResult, BatchResult, MigrationRunner, Migration, } from "./domain/port/DatabaseDriver.js";
|
|
19
19
|
export type { KvCache, KvPutOptions, KvListResult } from "./domain/port/KvCache.js";
|
|
20
20
|
export type { AssetServer } from "./domain/port/AssetServer.js";
|
|
21
|
+
export type { EntryReader, EntryDataScalar, ReadEntryBySlugArgs, ReadEntryByDataFieldArgs, ReadEntriesByDataFieldInArgs, ReadPublishedEntriesArgs, FindManyEntriesByDataFieldArgs, } from "./domain/port/EntryReader.js";
|
|
21
22
|
export type { MediaStorage, CreateUploadArgs, CreateUploadVariantSpec, CreateUploadResult, UploadCapability, CommitUploadArgs, CommitUploadVariantSpec, GetPublicUrlArgs, DeleteObjectArgs, MediaAsset, MediaVariant, MediaVariantRole, } from "./domain/port/MediaStorage.js";
|
|
22
23
|
export { pickPrimaryVariant } from "./domain/port/MediaStorage.js";
|
|
23
24
|
export type { MediaAssetRepository, MediaAssetListArgs, MediaAssetListResult, } from "./domain/port/MediaAssetRepository.js";
|
|
@@ -33,9 +34,9 @@ export { createPublicPathResolver, type PublicPathResolver, type PublicPathResol
|
|
|
33
34
|
export { composeEntrySeoMeta, renderSeoTagsHtml, type ComposeEntrySeoMetaArgs, type SiblingTranslation, } from "./domain/service/SeoMetaComposer.js";
|
|
34
35
|
export { entryHtmlKey, entryMarkdownKey, entryHtmlKeyFromParts, entryMarkdownKeyFromParts, listHtmlKey, llmsTxtKey, } from "./domain/service/PublishKeys.js";
|
|
35
36
|
export { serializeEntryAsMarkdown } from "./domain/service/MarkdownSerializer.js";
|
|
36
|
-
export { readEntryBySlug } from "./
|
|
37
|
+
export { readEntryBySlug } from "./infrastructure/persistence/DatabaseEntryRepository.js";
|
|
37
38
|
export { inferLocaleFromPath, isKnownLocale, siteConfigFromDefaults, toUrlLocale, } from "./domain/service/LocaleNegotiator.js";
|
|
38
|
-
export { matchPath } from "./domain/service/PathMatcher.js";
|
|
39
|
+
export { compilePathMatcher, matchPath } from "./domain/service/PathMatcher.js";
|
|
39
40
|
export { evaluateAuthAll } from "./domain/service/AuthPredicateEvaluator.js";
|
|
40
41
|
export { coerceViewParams, ViewParamCoercionError, } from "./domain/service/ViewParamCoercer.js";
|
|
41
42
|
export { McpJsonRpcDispatcher, type McpAuthContext, type McpUseCases, } from "./infrastructure/mcp/McpJsonRpcDispatcher.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AAKtB,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACpF,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,WAAW,EACX,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,GACZ,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAKzF,OAAO,EAAE,KAAK,WAAW,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGrF,YAAY,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,GACrB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,9 +30,9 @@ export { composeEntrySeoMeta, renderSeoTagsHtml, } from "./domain/service/SeoMet
|
|
|
30
30
|
// exported one-by-one instead of exposing the whole service barrel.
|
|
31
31
|
export { entryHtmlKey, entryMarkdownKey, entryHtmlKeyFromParts, entryMarkdownKeyFromParts, listHtmlKey, llmsTxtKey, } from "./domain/service/PublishKeys.js";
|
|
32
32
|
export { serializeEntryAsMarkdown } from "./domain/service/MarkdownSerializer.js";
|
|
33
|
-
export { readEntryBySlug } from "./
|
|
33
|
+
export { readEntryBySlug } from "./infrastructure/persistence/DatabaseEntryRepository.js";
|
|
34
34
|
export { inferLocaleFromPath, isKnownLocale, siteConfigFromDefaults, toUrlLocale, } from "./domain/service/LocaleNegotiator.js";
|
|
35
|
-
export { matchPath } from "./domain/service/PathMatcher.js";
|
|
35
|
+
export { compilePathMatcher, matchPath } from "./domain/service/PathMatcher.js";
|
|
36
36
|
export { evaluateAuthAll } from "./domain/service/AuthPredicateEvaluator.js";
|
|
37
37
|
export { coerceViewParams, ViewParamCoercionError, } from "./domain/service/ViewParamCoercer.js";
|
|
38
38
|
// Explicit adapter contract for the Cloudflare MCP mount. Do not
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,iBAAiB;AACjB,OAAO,EACL,gBAAgB,GAGjB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,iBAAiB;AACjB,OAAO,EACL,gBAAgB,GAGjB,MAAM,cAAc,CAAC;AAsCtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAUnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAOrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,qEAAqE;AACrE,oEAAoE;AACpE,wDAAwD;AACxD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAUrF,OAAO,EACL,gBAAgB,GAKjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,GAIzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAGlB,MAAM,qCAAqC,CAAC;AAE7C,kEAAkE;AAClE,oEAAoE;AACpE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAC1F,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAE9C,iEAAiE;AACjE,4DAA4D;AAC5D,OAAO,EACL,oBAAoB,GAGrB,MAAM,8CAA8C,CAAC;AAEtD,6DAA6D;AAC7D,4DAA4D;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEpF,qEAAqE;AACrE,gCAAgC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonicalMigrations.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/boot/canonicalMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACV,MAAM,qCAAqC,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,SAAS,
|
|
1
|
+
{"version":3,"file":"canonicalMigrations.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/boot/canonicalMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACV,MAAM,qCAAqC,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,SAAS,EA+PpD,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,SAAS,SAAS,EAAE,CAsBtB;AAOD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAiCf"}
|