@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
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { composeEntrySeoMeta, } from "../../domain/service/SeoMetaComposer.js";
|
|
2
|
-
import { readEntryBySlug } from "../../domain/service/io/PublishedEntries.js";
|
|
3
2
|
/**
|
|
4
3
|
* Compose the SEO/AEO meta block for an entry. Reads sibling
|
|
5
4
|
* translations from the DB (same collection, same slug, other
|
|
@@ -17,14 +16,14 @@ import { readEntryBySlug } from "../../domain/service/io/PublishedEntries.js";
|
|
|
17
16
|
* `Promise.all`.
|
|
18
17
|
*/
|
|
19
18
|
export class ComposeEntrySeoMetaUseCase {
|
|
20
|
-
|
|
21
|
-
constructor(
|
|
22
|
-
this.
|
|
19
|
+
reader;
|
|
20
|
+
constructor(reader) {
|
|
21
|
+
this.reader = reader;
|
|
23
22
|
}
|
|
24
23
|
async execute(request) {
|
|
25
24
|
const { entry, site, paths, type } = request;
|
|
26
25
|
const publicPath = paths.forEntry(entry) ?? "";
|
|
27
|
-
const siblings = await readSiblings(this.
|
|
26
|
+
const siblings = await readSiblings(this.reader, entry, site, paths);
|
|
28
27
|
return composeEntrySeoMeta({ entry, site, publicPath, siblings, type });
|
|
29
28
|
}
|
|
30
29
|
}
|
|
@@ -33,7 +32,7 @@ export async function composeSeoIfPathed(composer, paths, entry, site) {
|
|
|
33
32
|
return undefined;
|
|
34
33
|
return composer.execute({ entry, site, paths });
|
|
35
34
|
}
|
|
36
|
-
async function readSiblings(
|
|
35
|
+
async function readSiblings(reader, current, site, paths) {
|
|
37
36
|
const slug = current.data["slug"];
|
|
38
37
|
if (typeof slug !== "string" || slug.length === 0)
|
|
39
38
|
return [];
|
|
@@ -41,7 +40,7 @@ async function readSiblings(db, current, site, paths) {
|
|
|
41
40
|
return [];
|
|
42
41
|
const currentKey = current.locale?.toLowerCase();
|
|
43
42
|
const targetLocales = site.locales.filter((l) => l.toLowerCase() !== currentKey);
|
|
44
|
-
const lookups = await Promise.all(targetLocales.map((locale) =>
|
|
43
|
+
const lookups = await Promise.all(targetLocales.map((locale) => reader.readBySlug({
|
|
45
44
|
collection: current.collection,
|
|
46
45
|
slug,
|
|
47
46
|
locale,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposeEntrySeoMetaUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/ComposeEntrySeoMetaUseCase.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,GAGpB,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"ComposeEntrySeoMetaUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/ComposeEntrySeoMetaUseCase.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,GAGpB,MAAM,yCAAyC,CAAC;AAIjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,0BAA0B;IACR;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,KAAK,CAAC,OAAO,CAAC,OAAmC;QAC/C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACrE,OAAO,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAqD,EACrD,KAAgC,EAChC,KAAY,EACZ,IAAgB;IAEhB,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,MAAmB,EACnB,OAAc,EACd,IAAgB,EAChB,KAAyB;IAEzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3B,MAAM,CAAC,UAAU,CAAC;QAChB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI;QACJ,MAAM;QACN,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CACvC,CACF,CAAC;IACF,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EntryReader } from "../../domain/port/EntryReader.js";
|
|
2
2
|
import type { ComposeLlmsTxtRequest } from "../dto/render/ComposeLlmsTxtRequest.js";
|
|
3
3
|
/**
|
|
4
4
|
* Compose a `/llms.txt` body from currently-published entries.
|
|
@@ -12,8 +12,8 @@ import type { ComposeLlmsTxtRequest } from "../dto/render/ComposeLlmsTxtRequest.
|
|
|
12
12
|
* site.locales themselves and concat.
|
|
13
13
|
*/
|
|
14
14
|
export declare class ComposeLlmsTxtUseCase {
|
|
15
|
-
private readonly
|
|
16
|
-
constructor(
|
|
15
|
+
private readonly reader;
|
|
16
|
+
constructor(reader: EntryReader);
|
|
17
17
|
execute(request: ComposeLlmsTxtRequest): Promise<string>;
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=ComposeLlmsTxtUseCase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposeLlmsTxtUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/ComposeLlmsTxtUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ComposeLlmsTxtUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/ComposeLlmsTxtUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAEpF;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAE1C,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;CAS/D"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { readPublishedEntries } from "../../domain/service/io/PublishedEntries.js";
|
|
2
1
|
import { serializeLlmsTxt } from "../../domain/service/MarkdownSerializer.js";
|
|
3
2
|
/**
|
|
4
3
|
* Compose a `/llms.txt` body from currently-published entries.
|
|
@@ -12,12 +11,12 @@ import { serializeLlmsTxt } from "../../domain/service/MarkdownSerializer.js";
|
|
|
12
11
|
* site.locales themselves and concat.
|
|
13
12
|
*/
|
|
14
13
|
export class ComposeLlmsTxtUseCase {
|
|
15
|
-
|
|
16
|
-
constructor(
|
|
17
|
-
this.
|
|
14
|
+
reader;
|
|
15
|
+
constructor(reader) {
|
|
16
|
+
this.reader = reader;
|
|
18
17
|
}
|
|
19
18
|
async execute(request) {
|
|
20
|
-
const entries = await
|
|
19
|
+
const entries = await this.reader.readPublished({ locale: request.locale });
|
|
21
20
|
const grouped = groupByCollection(entries);
|
|
22
21
|
return serializeLlmsTxt({
|
|
23
22
|
site: request.site,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposeLlmsTxtUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/ComposeLlmsTxtUseCase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ComposeLlmsTxtUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/ComposeLlmsTxtUseCase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAG9E;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,KAAK,CAAC,OAAO,CAAC,OAA8B;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,gBAAgB,CAAC;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;YAC5B,mBAAmB,EAAE,OAAO;SAC7B,CAAC,CAAC;IACL,CAAC;CACF;AAED,SAAS,iBAAiB,CAAC,OAAyB;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmB,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,GAAG;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAChB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EntryReader } from "../../domain/port/EntryReader.js";
|
|
2
2
|
import type { ComposeSitemapRequest } from "../dto/render/ComposeSitemapRequest.js";
|
|
3
3
|
/**
|
|
4
4
|
* Compose `sitemap.xml` from every published entry across all
|
|
@@ -8,8 +8,8 @@ import type { ComposeSitemapRequest } from "../dto/render/ComposeSitemapRequest.
|
|
|
8
8
|
*/
|
|
9
9
|
export declare const SITEMAP_MAX_URLS_DEFAULT = 50000;
|
|
10
10
|
export declare class ComposeSitemapUseCase {
|
|
11
|
-
private readonly
|
|
12
|
-
constructor(
|
|
11
|
+
private readonly reader;
|
|
12
|
+
constructor(reader: EntryReader);
|
|
13
13
|
execute(request: ComposeSitemapRequest): Promise<string>;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=ComposeSitemapUseCase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposeSitemapUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/ComposeSitemapUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ComposeSitemapUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/ComposeSitemapUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAGpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAEpF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAE1C,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;CAW/D"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { readPublishedEntries } from "../../domain/service/io/PublishedEntries.js";
|
|
2
1
|
import { entryPublicPath } from "../../domain/service/PublishKeys.js";
|
|
3
2
|
import { serializeSitemap } from "../../domain/service/SitemapSerializer.js";
|
|
4
3
|
/**
|
|
@@ -9,13 +8,13 @@ import { serializeSitemap } from "../../domain/service/SitemapSerializer.js";
|
|
|
9
8
|
*/
|
|
10
9
|
export const SITEMAP_MAX_URLS_DEFAULT = 50000;
|
|
11
10
|
export class ComposeSitemapUseCase {
|
|
12
|
-
|
|
13
|
-
constructor(
|
|
14
|
-
this.
|
|
11
|
+
reader;
|
|
12
|
+
constructor(reader) {
|
|
13
|
+
this.reader = reader;
|
|
15
14
|
}
|
|
16
15
|
async execute(request) {
|
|
17
16
|
const cap = request.maxUrls ?? SITEMAP_MAX_URLS_DEFAULT;
|
|
18
|
-
const all = await
|
|
17
|
+
const all = await this.reader.readPublished({ limit: cap });
|
|
19
18
|
const mapper = request.pathFor ?? entryPublicPath;
|
|
20
19
|
const entries = [];
|
|
21
20
|
for (const e of all) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposeSitemapUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/ComposeSitemapUseCase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ComposeSitemapUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/ComposeSitemapUseCase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAG7E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,KAAK,CAAC,OAAO,CAAC,OAA8B;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,wBAAwB,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;QAClD,MAAM,OAAO,GAAqC,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SchemaManifest } from "@aotter/mantle-spec";
|
|
2
|
-
import type {
|
|
2
|
+
import type { EntryReader } from "../../domain/port/EntryReader.js";
|
|
3
3
|
import type { MediaAssetRepository } from "../../domain/port/MediaAssetRepository.js";
|
|
4
4
|
import type { TemplateRegistry } from "../../domain/model/TemplateRegistry.js";
|
|
5
5
|
import type { PublicPathResolver } from "../../domain/service/PublicPathResolver.js";
|
|
@@ -16,13 +16,13 @@ import { type ComposeEntrySeoMetaUseCase } from "./ComposeEntrySeoMetaUseCase.js
|
|
|
16
16
|
* version would carry, so authors see real shape during review.
|
|
17
17
|
*/
|
|
18
18
|
export declare class PreviewEntryUseCase {
|
|
19
|
-
private readonly
|
|
19
|
+
private readonly reader;
|
|
20
20
|
private readonly templates;
|
|
21
21
|
private readonly paths;
|
|
22
22
|
private readonly composeSeo;
|
|
23
23
|
private readonly schemas;
|
|
24
24
|
private readonly mediaAssets;
|
|
25
|
-
constructor(
|
|
25
|
+
constructor(reader: EntryReader, templates: TemplateRegistry, paths: PublicPathResolver | null, composeSeo: Pick<ComposeEntrySeoMetaUseCase, "execute">, schemas: ReadonlyMap<string, SchemaManifest>, mediaAssets?: MediaAssetRepository | null);
|
|
26
26
|
execute(request: PreviewEntryRequest): Promise<string | null>;
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=PreviewEntryUseCase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewEntryUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/PreviewEntryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"PreviewEntryUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/PreviewEntryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAOrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,iCAAiC,CAAC;AAWzC;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBALX,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,kBAAkB,GAAG,IAAI,EAChC,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,CAAC,EACvD,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,WAAW,GAAE,oBAAoB,GAAG,IAAW;IAG5D,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CA8BpE"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { readEntryBySlug } from "../../domain/service/io/PublishedEntries.js";
|
|
2
1
|
import { joinParentIfTranslation } from "../../domain/service/io/JoinedEntryReader.js";
|
|
3
2
|
import { renderEntryHtml } from "../../domain/service/HtmlRenderer.js";
|
|
4
3
|
import { defaultPreviewBanner, injectPreviewBanner, } from "../../domain/service/PreviewBanner.js";
|
|
@@ -22,14 +21,14 @@ const DEFAULT_PREVIEW_STATUS_ORDER = [
|
|
|
22
21
|
* version would carry, so authors see real shape during review.
|
|
23
22
|
*/
|
|
24
23
|
export class PreviewEntryUseCase {
|
|
25
|
-
|
|
24
|
+
reader;
|
|
26
25
|
templates;
|
|
27
26
|
paths;
|
|
28
27
|
composeSeo;
|
|
29
28
|
schemas;
|
|
30
29
|
mediaAssets;
|
|
31
|
-
constructor(
|
|
32
|
-
this.
|
|
30
|
+
constructor(reader, templates, paths, composeSeo, schemas, mediaAssets = null) {
|
|
31
|
+
this.reader = reader;
|
|
33
32
|
this.templates = templates;
|
|
34
33
|
this.paths = paths;
|
|
35
34
|
this.composeSeo = composeSeo;
|
|
@@ -39,7 +38,7 @@ export class PreviewEntryUseCase {
|
|
|
39
38
|
async execute(request) {
|
|
40
39
|
let raw = null;
|
|
41
40
|
for (const status of DEFAULT_PREVIEW_STATUS_ORDER) {
|
|
42
|
-
raw = await
|
|
41
|
+
raw = await this.reader.readBySlug({
|
|
43
42
|
collection: request.collection,
|
|
44
43
|
slug: request.slug,
|
|
45
44
|
locale: request.locale,
|
|
@@ -54,7 +53,7 @@ export class PreviewEntryUseCase {
|
|
|
54
53
|
// filter so a draft translation can still preview against its
|
|
55
54
|
// already-published parent. RequestPublishUseCase enforces the
|
|
56
55
|
// published-parent invariant at publish time.
|
|
57
|
-
const entry = await joinParentIfTranslation(this.
|
|
56
|
+
const entry = await joinParentIfTranslation(this.reader, this.schemas, raw);
|
|
58
57
|
const seo = await composeSeoIfPathed(this.composeSeo, this.paths, entry, request.site);
|
|
59
58
|
const mediaAssets = await resolveMediaAssetsForEntries(this.mediaAssets, [entry]);
|
|
60
59
|
const html = renderEntryHtml({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewEntryUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/PreviewEntryUseCase.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PreviewEntryUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/PreviewEntryUseCase.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAE/F;gEACgE;AAChE,MAAM,4BAA4B,GAAgC;IAChE,OAAO;IACP,WAAW;IACX,UAAU;CACX,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,OAAO,mBAAmB;IAEX;IACA;IACA;IACA;IACA;IACA;IANnB,YACmB,MAAmB,EACnB,SAA2B,EAC3B,KAAgC,EAChC,UAAuD,EACvD,OAA4C,EAC5C,cAA2C,IAAI;QAL/C,WAAM,GAAN,MAAM,CAAa;QACnB,cAAS,GAAT,SAAS,CAAkB;QAC3B,UAAK,GAAL,KAAK,CAA2B;QAChC,eAAU,GAAV,UAAU,CAA6C;QACvD,YAAO,GAAP,OAAO,CAAqC;QAC5C,gBAAW,GAAX,WAAW,CAAoC;IAC/D,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,IAAI,GAAG,GAAiB,IAAI,CAAC;QAC7B,KAAK,MAAM,MAAM,IAAI,4BAA4B,EAAE,CAAC;YAClD,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;gBACjC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM;aACP,CAAC,CAAC;YACH,IAAI,GAAG;gBAAE,MAAM;QACjB,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,oEAAoE;QACpE,8DAA8D;QAC9D,+DAA+D;QAC/D,8CAA8C;QAC9C,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,MAAM,4BAA4B,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,KAAK;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW;YACX,GAAG;SACJ,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,OAAO,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SchemaManifest } from "@aotter/mantle-spec";
|
|
2
|
-
import type {
|
|
2
|
+
import type { EntryReader } from "../../domain/port/EntryReader.js";
|
|
3
3
|
import type { MediaAssetRepository } from "../../domain/port/MediaAssetRepository.js";
|
|
4
4
|
import type { TemplateRegistry } from "../../domain/model/TemplateRegistry.js";
|
|
5
5
|
import type { PublicPathResolver } from "../../domain/service/PublicPathResolver.js";
|
|
@@ -25,13 +25,13 @@ import { type ComposeEntrySeoMetaUseCase } from "./ComposeEntrySeoMetaUseCase.js
|
|
|
25
25
|
* Adapters map `null` to a 404 response.
|
|
26
26
|
*/
|
|
27
27
|
export declare class RenderEntryLiveUseCase {
|
|
28
|
-
private readonly
|
|
28
|
+
private readonly reader;
|
|
29
29
|
private readonly templates;
|
|
30
30
|
private readonly paths;
|
|
31
31
|
private readonly composeSeo;
|
|
32
32
|
private readonly schemas;
|
|
33
33
|
private readonly mediaAssets;
|
|
34
|
-
constructor(
|
|
34
|
+
constructor(reader: EntryReader, templates: TemplateRegistry, paths: PublicPathResolver | null, composeSeo: Pick<ComposeEntrySeoMetaUseCase, "execute">, schemas: ReadonlyMap<string, SchemaManifest>, mediaAssets?: MediaAssetRepository | null);
|
|
35
35
|
execute(request: RenderEntryLiveRequest): Promise<string | null>;
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=RenderEntryLiveUseCase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderEntryLiveUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/RenderEntryLiveUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"RenderEntryLiveUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/RenderEntryLiveUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGrF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,iCAAiC,CAAC;AAGzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBALX,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,kBAAkB,GAAG,IAAI,EAChC,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,CAAC,EACvD,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,WAAW,GAAE,oBAAoB,GAAG,IAAW;IAG5D,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAsBvE"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { readEntryBySlug } from "../../domain/service/io/PublishedEntries.js";
|
|
2
1
|
import { joinParentIfTranslation } from "../../domain/service/io/JoinedEntryReader.js";
|
|
3
2
|
import { renderEntryHtml } from "../../domain/service/HtmlRenderer.js";
|
|
4
3
|
import { composeSeoIfPathed, } from "./ComposeEntrySeoMetaUseCase.js";
|
|
@@ -23,14 +22,14 @@ import { resolveMediaAssetsForEntries } from "../../domain/service/io/MediaAsset
|
|
|
23
22
|
* Adapters map `null` to a 404 response.
|
|
24
23
|
*/
|
|
25
24
|
export class RenderEntryLiveUseCase {
|
|
26
|
-
|
|
25
|
+
reader;
|
|
27
26
|
templates;
|
|
28
27
|
paths;
|
|
29
28
|
composeSeo;
|
|
30
29
|
schemas;
|
|
31
30
|
mediaAssets;
|
|
32
|
-
constructor(
|
|
33
|
-
this.
|
|
31
|
+
constructor(reader, templates, paths, composeSeo, schemas, mediaAssets = null) {
|
|
32
|
+
this.reader = reader;
|
|
34
33
|
this.templates = templates;
|
|
35
34
|
this.paths = paths;
|
|
36
35
|
this.composeSeo = composeSeo;
|
|
@@ -39,7 +38,7 @@ export class RenderEntryLiveUseCase {
|
|
|
39
38
|
}
|
|
40
39
|
async execute(request) {
|
|
41
40
|
const status = "published";
|
|
42
|
-
const raw = await
|
|
41
|
+
const raw = await this.reader.readBySlug({
|
|
43
42
|
collection: request.collection,
|
|
44
43
|
slug: request.slug,
|
|
45
44
|
locale: request.locale,
|
|
@@ -47,7 +46,7 @@ export class RenderEntryLiveUseCase {
|
|
|
47
46
|
});
|
|
48
47
|
if (!raw)
|
|
49
48
|
return null;
|
|
50
|
-
const entry = await joinParentIfTranslation(this.
|
|
49
|
+
const entry = await joinParentIfTranslation(this.reader, this.schemas, raw, {
|
|
51
50
|
parentStatus: status,
|
|
52
51
|
});
|
|
53
52
|
const seo = await composeSeoIfPathed(this.composeSeo, this.paths, entry, request.site);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderEntryLiveUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/RenderEntryLiveUseCase.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"RenderEntryLiveUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/RenderEntryLiveUseCase.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAE/F;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,sBAAsB;IAEd;IACA;IACA;IACA;IACA;IACA;IANnB,YACmB,MAAmB,EACnB,SAA2B,EAC3B,KAAgC,EAChC,UAAuD,EACvD,OAA4C,EAC5C,cAA2C,IAAI;QAL/C,WAAM,GAAN,MAAM,CAAa;QACnB,cAAS,GAAT,SAAS,CAAkB;QAC3B,UAAK,GAAL,KAAK,CAA2B;QAChC,eAAU,GAAV,UAAU,CAA6C;QACvD,YAAO,GAAP,OAAO,CAAqC;QAC5C,gBAAW,GAAX,WAAW,CAAoC;IAC/D,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA+B;QAC3C,MAAM,MAAM,GAAG,WAAW,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YACvC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1E,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,MAAM,4BAA4B,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,OAAO,eAAe,CAAC;YACrB,KAAK;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW;YACX,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SchemaManifest } from "@aotter/mantle-spec";
|
|
2
|
-
import type {
|
|
2
|
+
import type { EntryReader } from "../../domain/port/EntryReader.js";
|
|
3
3
|
import type { MediaAssetRepository } from "../../domain/port/MediaAssetRepository.js";
|
|
4
4
|
import type { TemplateRegistry } from "../../domain/model/TemplateRegistry.js";
|
|
5
5
|
import type { RenderListLiveRequest } from "../dto/render/RenderListLiveRequest.js";
|
|
@@ -15,11 +15,11 @@ import type { RenderListLiveRequest } from "../dto/render/RenderListLiveRequest.
|
|
|
15
15
|
* template the same way they do on the entry detail page.
|
|
16
16
|
*/
|
|
17
17
|
export declare class RenderListLiveUseCase {
|
|
18
|
-
private readonly
|
|
18
|
+
private readonly reader;
|
|
19
19
|
private readonly templates;
|
|
20
20
|
private readonly schemas;
|
|
21
21
|
private readonly mediaAssets;
|
|
22
|
-
constructor(
|
|
22
|
+
constructor(reader: EntryReader, templates: TemplateRegistry, schemas: ReadonlyMap<string, SchemaManifest>, mediaAssets?: MediaAssetRepository | null);
|
|
23
23
|
execute(request: RenderListLiveRequest): Promise<string | null>;
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=RenderListLiveUseCase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderListLiveUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/RenderListLiveUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"RenderListLiveUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/render/RenderListLiveUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAG/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAGpF;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAHX,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,WAAW,GAAE,oBAAoB,GAAG,IAAW;IAG5D,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAkBtE"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { readPublishedEntries } from "../../domain/service/io/PublishedEntries.js";
|
|
2
1
|
import { joinParentForList } from "../../domain/service/io/JoinedEntryReader.js";
|
|
3
2
|
import { renderListHtml } from "../../domain/service/HtmlRenderer.js";
|
|
4
3
|
import { resolveMediaAssetsForEntries } from "../../domain/service/io/MediaAssetReferences.js";
|
|
@@ -14,22 +13,22 @@ import { resolveMediaAssetsForEntries } from "../../domain/service/io/MediaAsset
|
|
|
14
13
|
* template the same way they do on the entry detail page.
|
|
15
14
|
*/
|
|
16
15
|
export class RenderListLiveUseCase {
|
|
17
|
-
|
|
16
|
+
reader;
|
|
18
17
|
templates;
|
|
19
18
|
schemas;
|
|
20
19
|
mediaAssets;
|
|
21
|
-
constructor(
|
|
22
|
-
this.
|
|
20
|
+
constructor(reader, templates, schemas, mediaAssets = null) {
|
|
21
|
+
this.reader = reader;
|
|
23
22
|
this.templates = templates;
|
|
24
23
|
this.schemas = schemas;
|
|
25
24
|
this.mediaAssets = mediaAssets;
|
|
26
25
|
}
|
|
27
26
|
async execute(request) {
|
|
28
|
-
const raw = await
|
|
27
|
+
const raw = await this.reader.readPublished({
|
|
29
28
|
collection: request.collection,
|
|
30
29
|
locale: request.locale,
|
|
31
30
|
});
|
|
32
|
-
const entries = await joinParentForList(this.
|
|
31
|
+
const entries = await joinParentForList(this.reader, this.schemas, raw, {
|
|
33
32
|
parentStatus: "published",
|
|
34
33
|
});
|
|
35
34
|
const mediaAssets = await resolveMediaAssetsForEntries(this.mediaAssets, entries);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderListLiveUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/RenderListLiveUseCase.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"RenderListLiveUseCase.js","sourceRoot":"","sources":["../../../src/usecase/render/RenderListLiveUseCase.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAE/F;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAqB;IAEb;IACA;IACA;IACA;IAJnB,YACmB,MAAmB,EACnB,SAA2B,EAC3B,OAA4C,EAC5C,cAA2C,IAAI;QAH/C,WAAM,GAAN,MAAM,CAAa;QACnB,cAAS,GAAT,SAAS,CAAkB;QAC3B,YAAO,GAAP,OAAO,CAAqC;QAC5C,gBAAW,GAAX,WAAW,CAAoC;IAC/D,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA8B;QAC1C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC1C,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACtE,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,4BAA4B,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClF,OAAO,cAAc,CAAC;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SiteConfig } from "@aotter/mantle-spec";
|
|
2
|
+
import type { PublishOrchestrator } from "../../domain/port/PublishOrchestrator.js";
|
|
3
|
+
import type { SiteConfigRepository } from "../../domain/port/SiteConfigRepository.js";
|
|
4
|
+
import type { UpdateSiteSettingsRequest } from "../dto/site/index.js";
|
|
5
|
+
/** Persist editable settings and invalidate their derivative public artifacts. */
|
|
6
|
+
export declare class UpdateSiteSettingsUseCase {
|
|
7
|
+
private readonly siteConfig;
|
|
8
|
+
private readonly artifacts;
|
|
9
|
+
constructor(siteConfig: SiteConfigRepository, artifacts: PublishOrchestrator);
|
|
10
|
+
execute(request: UpdateSiteSettingsRequest): Promise<SiteConfig>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=UpdateSiteSettingsUseCase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateSiteSettingsUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/site/UpdateSiteSettingsUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,kFAAkF;AAClF,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,UAAU,EAAE,oBAAoB,EAChC,SAAS,EAAE,mBAAmB;IAG3C,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;CAQvE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Persist editable settings and invalidate their derivative public artifacts. */
|
|
2
|
+
export class UpdateSiteSettingsUseCase {
|
|
3
|
+
siteConfig;
|
|
4
|
+
artifacts;
|
|
5
|
+
constructor(siteConfig, artifacts) {
|
|
6
|
+
this.siteConfig = siteConfig;
|
|
7
|
+
this.artifacts = artifacts;
|
|
8
|
+
}
|
|
9
|
+
async execute(request) {
|
|
10
|
+
if (!this.siteConfig.updateEditable) {
|
|
11
|
+
throw new Error("SiteConfigRepository.updateEditable is unavailable");
|
|
12
|
+
}
|
|
13
|
+
await this.siteConfig.updateEditable(request);
|
|
14
|
+
await this.artifacts.invalidateAll();
|
|
15
|
+
return this.siteConfig.load();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=UpdateSiteSettingsUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateSiteSettingsUseCase.js","sourceRoot":"","sources":["../../../src/usecase/site/UpdateSiteSettingsUseCase.ts"],"names":[],"mappings":"AAKA,kFAAkF;AAClF,MAAM,OAAO,yBAAyB;IAEjB;IACA;IAFnB,YACmB,UAAgC,EAChC,SAA8B;QAD9B,eAAU,GAAV,UAAU,CAAsB;QAChC,cAAS,GAAT,SAAS,CAAqB;IAC9C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAkC;QAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/usecase/site/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/usecase/site/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aotter/mantle-runtime",
|
|
3
|
-
"version": "0.0.11-alpha.
|
|
3
|
+
"version": "0.0.11-alpha.63",
|
|
4
4
|
"description": "Runtime engine for mantle: dispatcher + entry-writer + view executor + content-ops + render pipeline + auth + MCP. Defines adapter-agnostic ports. MUST NOT import D1Database / KVNamespace types.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://mantle.tools/",
|
|
@@ -22,6 +22,10 @@
|
|
|
22
22
|
".": {
|
|
23
23
|
"types": "./dist/index.d.ts",
|
|
24
24
|
"import": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./testing": {
|
|
27
|
+
"types": "./dist/testing.d.ts",
|
|
28
|
+
"import": "./dist/testing.js"
|
|
25
29
|
}
|
|
26
30
|
},
|
|
27
31
|
"files": [
|
|
@@ -29,7 +33,7 @@
|
|
|
29
33
|
"README.md"
|
|
30
34
|
],
|
|
31
35
|
"dependencies": {
|
|
32
|
-
"@aotter/mantle-spec": "0.0.11-alpha.
|
|
36
|
+
"@aotter/mantle-spec": "0.0.11-alpha.63"
|
|
33
37
|
},
|
|
34
38
|
"peerDependencies": {
|
|
35
39
|
"zod": "^4.0.0"
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { type ContentState, type Entry } from "@aotter/mantle-spec";
|
|
2
|
-
import type { DatabaseDriver } from "../../port/DatabaseDriver.js";
|
|
3
|
-
/**
|
|
4
|
-
* Cross-collection scan of `status='published'` entries. Pure read,
|
|
5
|
-
* no rendering. Used by every renderer that crosses Schema boundaries
|
|
6
|
-
* (`HtmlPublishOrchestrator`, `ComposeLlmsTxtUseCase`,
|
|
7
|
-
* `ComposeSitemapUseCase`). Distinguishes the three locale modes:
|
|
8
|
-
*
|
|
9
|
-
* - locale: string — only entries where `data.locale = locale`
|
|
10
|
-
* - locale: null — only non-localized entries (`data.locale IS NULL`)
|
|
11
|
-
* - omitted — every locale + non-localized
|
|
12
|
-
*
|
|
13
|
-
* The locale=null case matters for publish: writing a non-localized
|
|
14
|
-
* entry must not overwrite per-locale indexes with cross-locale soup.
|
|
15
|
-
*/
|
|
16
|
-
export interface PublishedEntriesFilter {
|
|
17
|
-
readonly locale?: string | null;
|
|
18
|
-
readonly collection?: string;
|
|
19
|
-
/** Optional `LIMIT N` on the SQL query — caps both D1 read and JS
|
|
20
|
-
* memory. Sitemap composition uses this; publish pipeline omits
|
|
21
|
-
* (one entry-locale-collection scan is naturally small). */
|
|
22
|
-
readonly limit?: number;
|
|
23
|
-
}
|
|
24
|
-
export declare function readPublishedEntries(db: DatabaseDriver, filter?: PublishedEntriesFilter): Promise<Entry[]>;
|
|
25
|
-
/** Single-entry lookup by id. Used by the publish pipeline to load
|
|
26
|
-
* the entry it's about to render; lifted into the domain service so
|
|
27
|
-
* the orchestrator stops owning row-to-domain mapping. */
|
|
28
|
-
export declare function readEntryById(db: DatabaseDriver, id: string): Promise<Entry | null>;
|
|
29
|
-
/** Lookup an entry by (collection, slug[, locale][, status]). Used by
|
|
30
|
-
* request-time render paths (preview, live-dev) that route by URL
|
|
31
|
-
* slug — not the publish pipeline's flow which already holds the
|
|
32
|
-
* entry id. Returns the most-recently-updated row if multiple
|
|
33
|
-
* match. */
|
|
34
|
-
export interface ReadEntryBySlugArgs {
|
|
35
|
-
readonly collection: string;
|
|
36
|
-
readonly slug: string;
|
|
37
|
-
/** `string` filters to that locale; `null` filters to non-localized
|
|
38
|
-
* entries (data.locale IS NULL); omitted = no locale filter. */
|
|
39
|
-
readonly locale?: string | null;
|
|
40
|
-
readonly status?: ContentState;
|
|
41
|
-
}
|
|
42
|
-
export declare function readEntryBySlug(db: DatabaseDriver, args: ReadEntryBySlugArgs): Promise<Entry | null>;
|
|
43
|
-
/** Lookup an entry by an arbitrary `data.<field>` value. Generalizes
|
|
44
|
-
* `readEntryBySlug` for the parent-join code path: `translates.on`
|
|
45
|
-
* is conventionally "slug" but the grammar permits other field names,
|
|
46
|
-
* so the join reader must not hard-code `$.slug`. */
|
|
47
|
-
export interface ReadEntryByDataFieldArgs {
|
|
48
|
-
readonly collection: string;
|
|
49
|
-
readonly field: string;
|
|
50
|
-
readonly value: string;
|
|
51
|
-
readonly locale?: string | null;
|
|
52
|
-
readonly status?: ContentState;
|
|
53
|
-
}
|
|
54
|
-
export declare function readEntryByDataField(db: DatabaseDriver, args: ReadEntryByDataFieldArgs): Promise<Entry | null>;
|
|
55
|
-
/** Batch sibling to `readEntryByDataField`. Issues a single
|
|
56
|
-
* `... WHERE data.<field> IN (?, ?, ...)` query, returning one row per
|
|
57
|
-
* distinct value (most-recently-updated when multiple rows share the
|
|
58
|
-
* same value). Used by the list-render parent-join to avoid N+1 reads
|
|
59
|
-
* when a list of translations shares parents on a small set of join
|
|
60
|
-
* values. */
|
|
61
|
-
export interface ReadEntriesByDataFieldInArgs {
|
|
62
|
-
readonly collection: string;
|
|
63
|
-
readonly field: string;
|
|
64
|
-
readonly values: readonly string[];
|
|
65
|
-
readonly locale?: string | null;
|
|
66
|
-
readonly status?: ContentState;
|
|
67
|
-
}
|
|
68
|
-
export declare function readEntriesByDataFieldIn(db: DatabaseDriver, args: ReadEntriesByDataFieldInArgs): Promise<Entry[]>;
|
|
69
|
-
//# sourceMappingURL=PublishedEntries.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PublishedEntries.d.ts","sourceRoot":"","sources":["../../../../src/domain/service/io/PublishedEntries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;iEAE6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAYD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,MAAM,GAAE,sBAA2B,GAClC,OAAO,CAAC,KAAK,EAAE,CAAC,CAqBlB;AAED;;2DAE2D;AAC3D,wBAAsB,aAAa,CACjC,EAAE,EAAE,cAAc,EAClB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CASvB;AAED;;;;aAIa;AACb,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;qEACiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAQvB;AAED;;;sDAGsD;AACtD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAgBD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAsBvB;AAED;;;;;cAKc;AACd,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,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,KAAK,EAAE,CAAC,CAwBlB"}
|