@aotter/mantle-runtime 0.0.11-alpha.13 → 0.0.11-alpha.14
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/dist/domain/port/MediaAssetRepository.d.ts +34 -0
- package/dist/domain/port/MediaAssetRepository.d.ts.map +1 -0
- package/dist/domain/port/MediaAssetRepository.js +2 -0
- package/dist/domain/port/MediaAssetRepository.js.map +1 -0
- package/dist/domain/port/MediaStorage.d.ts +118 -44
- package/dist/domain/port/MediaStorage.d.ts.map +1 -1
- package/dist/domain/port/MediaStorage.js +12 -1
- package/dist/domain/port/MediaStorage.js.map +1 -1
- package/dist/domain/port/SiteConfigRepository.d.ts +2 -2
- 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 +1 -0
- package/dist/domain/port/index.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
- package/dist/infrastructure/boot/canonicalMigrations.js +17 -0
- package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +6 -3
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +26 -11
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
- package/dist/infrastructure/mcp/McpToolCatalog.d.ts +7 -4
- package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -1
- package/dist/infrastructure/mcp/McpToolCatalog.js +62 -26
- package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -1
- package/dist/infrastructure/persistence/DatabaseMediaAssetRepository.d.ts +27 -0
- package/dist/infrastructure/persistence/DatabaseMediaAssetRepository.d.ts.map +1 -0
- package/dist/infrastructure/persistence/DatabaseMediaAssetRepository.js +80 -0
- package/dist/infrastructure/persistence/DatabaseMediaAssetRepository.js.map +1 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts +2 -2
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -1
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +24 -3
- 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/runtime.d.ts +10 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +6 -2
- package/dist/runtime.js.map +1 -1
- package/dist/usecase/dto/media/index.d.ts +31 -15
- package/dist/usecase/dto/media/index.d.ts.map +1 -1
- package/dist/usecase/dto/media/index.js +10 -3
- package/dist/usecase/dto/media/index.js.map +1 -1
- package/dist/usecase/media/CommitMediaUploadUseCase.d.ts +14 -4
- package/dist/usecase/media/CommitMediaUploadUseCase.d.ts.map +1 -1
- package/dist/usecase/media/CommitMediaUploadUseCase.js +30 -19
- package/dist/usecase/media/CommitMediaUploadUseCase.js.map +1 -1
- package/dist/usecase/media/CreateMediaUploadUseCase.d.ts +34 -2
- package/dist/usecase/media/CreateMediaUploadUseCase.d.ts.map +1 -1
- package/dist/usecase/media/CreateMediaUploadUseCase.js +165 -40
- package/dist/usecase/media/CreateMediaUploadUseCase.js.map +1 -1
- package/dist/usecase/media/PendingUploadRecord.d.ts +29 -10
- package/dist/usecase/media/PendingUploadRecord.d.ts.map +1 -1
- package/dist/usecase/media/diagnostics.d.ts +19 -2
- package/dist/usecase/media/diagnostics.d.ts.map +1 -1
- package/dist/usecase/media/diagnostics.js +66 -7
- package/dist/usecase/media/diagnostics.js.map +1 -1
- package/dist/usecase/media/mediaAllowlist.d.ts +1 -1
- package/dist/usecase/media/mediaAllowlist.d.ts.map +1 -1
- package/dist/usecase/media/mediaAllowlist.js +3 -0
- package/dist/usecase/media/mediaAllowlist.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpToolCatalog.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpToolCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"McpToolCatalog.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpToolCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,wBAAwB,EAAE,iBAiBtC,CAAC;AAuFF,eAAO,MAAM,aAAa,EAAE,SAAS,iBAAiB,EA+DrD,CAAC;AAEF,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;uCAEmC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;sDAKkD;IAClD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvD;gEAC4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;CAC9C;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,EACtC,IAAI,GAAE,uBAA4B,GACjC,SAAS,iBAAiB,EAAE,CAY9B;AAED;;sBAEsB;AACtB,OAAO,EAAE,kBAAkB,IAAI,eAAe,EAAE,CAAC;AAEjD;oEACoE;AACpE,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAIf"}
|
|
@@ -1,49 +1,85 @@
|
|
|
1
1
|
import { MANTLE_BIND_KEYWORD, } from "@aotter/mantle-spec";
|
|
2
2
|
import { mcpToolNameSegment } from "../../domain/service/McpToolNaming.js";
|
|
3
|
-
export const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
alt: { type: "string" },
|
|
13
|
-
caption: { type: "string" },
|
|
14
|
-
checksum: { type: "string", description: "Optional client-side sha256; verified against storage etag when supplied." },
|
|
3
|
+
export const COMMIT_MEDIA_UPLOAD_TOOL = {
|
|
4
|
+
name: "commit_media_upload",
|
|
5
|
+
description: "Commit a previously-PUT variant bundle. Verifies every variant landed at the storage backend (HEAD + bytes per declared mime) and writes the committed MediaAsset to the media_assets table. Returns the asset with its variants populated. Only registered when the runtime has a media storage adapter bound and a media.purposes taxonomy declared.",
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: "object",
|
|
8
|
+
properties: {
|
|
9
|
+
uploadGroupId: {
|
|
10
|
+
type: "string",
|
|
11
|
+
description: "Logical asset id returned by create_media_upload as `uploadGroupId`; passed verbatim to commit.",
|
|
15
12
|
},
|
|
16
|
-
|
|
13
|
+
alt: { type: "string" },
|
|
14
|
+
caption: { type: "string" },
|
|
17
15
|
},
|
|
16
|
+
required: ["uploadGroupId"],
|
|
18
17
|
},
|
|
19
|
-
|
|
18
|
+
};
|
|
20
19
|
function buildMediaTools(mediaPurposes) {
|
|
21
|
-
return [
|
|
22
|
-
buildCreateMediaUploadTool(mediaPurposes),
|
|
23
|
-
MEDIA_TOOLS[1],
|
|
24
|
-
];
|
|
20
|
+
return [buildCreateMediaUploadTool(mediaPurposes), COMMIT_MEDIA_UPLOAD_TOOL];
|
|
25
21
|
}
|
|
26
22
|
function buildCreateMediaUploadTool(mediaPurposes = []) {
|
|
27
23
|
const purpose = {
|
|
28
24
|
type: "string",
|
|
29
|
-
description: "Required purpose tag declared by this starter.",
|
|
25
|
+
description: "Required purpose tag declared by this starter. Determines the required variant mime set + per-mime byte caps.",
|
|
30
26
|
};
|
|
31
27
|
if (mediaPurposes.length > 0)
|
|
32
|
-
purpose["enum"] =
|
|
28
|
+
purpose["enum"] = mediaPurposes.map((p) => p.name);
|
|
29
|
+
const policySummary = mediaPurposes.length > 0
|
|
30
|
+
? "Purpose policies in this deployment:\n" +
|
|
31
|
+
mediaPurposes
|
|
32
|
+
.map((p) => ` • ${p.name} — required mimes: ${p.required.join(", ")}; ` +
|
|
33
|
+
`maxBytes: ${Object.entries(p.maxBytes)
|
|
34
|
+
.map(([m, b]) => `${m}=${b}`)
|
|
35
|
+
.join(", ")}`)
|
|
36
|
+
.join("\n")
|
|
37
|
+
: "";
|
|
33
38
|
return {
|
|
34
39
|
name: "create_media_upload",
|
|
35
|
-
description: "Issue
|
|
40
|
+
description: "Issue short-lived direct-upload capabilities for every variant of one logical media asset. " +
|
|
41
|
+
"Multi-variant by default (#272): one call yields N presigned PUTs (one per declared mime). " +
|
|
42
|
+
"Optimization runs agent-side via @aotter/mantle-media-tools; the Worker only verifies " +
|
|
43
|
+
"policy. After uploading every variant, call commit_media_upload with the returned " +
|
|
44
|
+
"uploadGroupId. Only registered when the runtime has a media storage adapter bound and a " +
|
|
45
|
+
"media.purposes taxonomy declared." +
|
|
46
|
+
(policySummary ? `\n\n${policySummary}` : ""),
|
|
36
47
|
inputSchema: {
|
|
37
48
|
type: "object",
|
|
38
49
|
properties: {
|
|
39
|
-
filename: {
|
|
40
|
-
|
|
41
|
-
|
|
50
|
+
filename: {
|
|
51
|
+
type: "string",
|
|
52
|
+
description: "Original filename — used in object metadata only; storage keys are server-generated.",
|
|
53
|
+
},
|
|
54
|
+
purpose,
|
|
55
|
+
variants: {
|
|
56
|
+
type: "array",
|
|
57
|
+
minItems: 1,
|
|
58
|
+
description: "One entry per format the agent has prepared. Must cover every mime in the purpose's `required` set; one variant must carry role='primary' (the format `<img>` falls back to). Modern formats (avif/webp) MUST NOT exceed the fallback's byteSize — the runtime rejects suspicious sizing.",
|
|
59
|
+
items: {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {
|
|
62
|
+
mimeType: {
|
|
63
|
+
type: "string",
|
|
64
|
+
description: "Content-Type. Allowlist: image/png, image/jpeg, image/webp, image/gif, image/avif. SVG only with adapter opt-in.",
|
|
65
|
+
},
|
|
66
|
+
byteSize: {
|
|
67
|
+
type: "number",
|
|
68
|
+
description: "Caller-declared payload size. Verified against the purpose's `maxBytes[mimeType]` before a presigned URL is minted.",
|
|
69
|
+
},
|
|
70
|
+
role: {
|
|
71
|
+
type: "string",
|
|
72
|
+
enum: ["primary", "alternate", "fallback"],
|
|
73
|
+
description: "`primary` is the `<img>` fallback (typically jpeg/png); `alternate` is preferred via `<picture><source>` (avif/webp).",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
required: ["mimeType", "byteSize", "role"],
|
|
77
|
+
},
|
|
78
|
+
},
|
|
42
79
|
alt: { type: "string" },
|
|
43
80
|
caption: { type: "string" },
|
|
44
|
-
purpose,
|
|
45
81
|
},
|
|
46
|
-
required: ["filename", "
|
|
82
|
+
required: ["filename", "purpose", "variants"],
|
|
47
83
|
},
|
|
48
84
|
};
|
|
49
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpToolCatalog.js","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpToolCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,
|
|
1
|
+
{"version":3,"file":"McpToolCatalog.js","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpToolCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DatabaseDriver } from "../../domain/port/DatabaseDriver.js";
|
|
2
|
+
import type { MediaAssetRepository } from "../../domain/port/MediaAssetRepository.js";
|
|
3
|
+
import type { MediaAsset } from "../../domain/port/MediaStorage.js";
|
|
4
|
+
/**
|
|
5
|
+
* `media_assets` row read/write. The variants set + free-form
|
|
6
|
+
* metadata go in as JSON-encoded TEXT — variants is closed-shape so
|
|
7
|
+
* the parse is type-asserted but not validated; the writer is the
|
|
8
|
+
* commit use case which builds the asset from already-verified
|
|
9
|
+
* adapter output.
|
|
10
|
+
*
|
|
11
|
+
* `findManyByIds` issues one `IN (?, ?, ...)` for the whole batch.
|
|
12
|
+
* D1 has a parameter ceiling; the implementation chunks at 100 ids
|
|
13
|
+
* per query and stitches the results. Anyone hitting >100 referenced
|
|
14
|
+
* assets in a single render pass is doing something unusual and the
|
|
15
|
+
* stitching keeps it correct rather than fast — orphan sweep / asset
|
|
16
|
+
* audit consumers (#254) are expected to page through their own
|
|
17
|
+
* windows.
|
|
18
|
+
*/
|
|
19
|
+
export declare class DatabaseMediaAssetRepository implements MediaAssetRepository {
|
|
20
|
+
private readonly db;
|
|
21
|
+
constructor(db: DatabaseDriver);
|
|
22
|
+
findById(id: string): Promise<MediaAsset | null>;
|
|
23
|
+
findManyByIds(ids: readonly string[]): Promise<ReadonlyMap<string, MediaAsset>>;
|
|
24
|
+
save(asset: MediaAsset): Promise<void>;
|
|
25
|
+
delete(id: string): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=DatabaseMediaAssetRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseMediaAssetRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseMediaAssetRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EACV,UAAU,EAEX,MAAM,mCAAmC,CAAC;AAE3C;;;;;;;;;;;;;;GAcG;AACH,qBAAa,4BAA6B,YAAW,oBAAoB;IAC3D,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEzC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAYhD,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAmB/E,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `media_assets` row read/write. The variants set + free-form
|
|
3
|
+
* metadata go in as JSON-encoded TEXT — variants is closed-shape so
|
|
4
|
+
* the parse is type-asserted but not validated; the writer is the
|
|
5
|
+
* commit use case which builds the asset from already-verified
|
|
6
|
+
* adapter output.
|
|
7
|
+
*
|
|
8
|
+
* `findManyByIds` issues one `IN (?, ?, ...)` for the whole batch.
|
|
9
|
+
* D1 has a parameter ceiling; the implementation chunks at 100 ids
|
|
10
|
+
* per query and stitches the results. Anyone hitting >100 referenced
|
|
11
|
+
* assets in a single render pass is doing something unusual and the
|
|
12
|
+
* stitching keeps it correct rather than fast — orphan sweep / asset
|
|
13
|
+
* audit consumers (#254) are expected to page through their own
|
|
14
|
+
* windows.
|
|
15
|
+
*/
|
|
16
|
+
export class DatabaseMediaAssetRepository {
|
|
17
|
+
db;
|
|
18
|
+
constructor(db) {
|
|
19
|
+
this.db = db;
|
|
20
|
+
}
|
|
21
|
+
async findById(id) {
|
|
22
|
+
const row = await this.db
|
|
23
|
+
.prepare(`SELECT id, created_at, owner_id, alt, caption, variants, metadata
|
|
24
|
+
FROM media_assets WHERE id = ?`)
|
|
25
|
+
.bind(id)
|
|
26
|
+
.first();
|
|
27
|
+
if (!row)
|
|
28
|
+
return null;
|
|
29
|
+
return rowToAsset(row);
|
|
30
|
+
}
|
|
31
|
+
async findManyByIds(ids) {
|
|
32
|
+
const out = new Map();
|
|
33
|
+
if (ids.length === 0)
|
|
34
|
+
return out;
|
|
35
|
+
const deduped = Array.from(new Set(ids));
|
|
36
|
+
for (let i = 0; i < deduped.length; i += CHUNK) {
|
|
37
|
+
const chunk = deduped.slice(i, i + CHUNK);
|
|
38
|
+
const placeholders = chunk.map(() => "?").join(", ");
|
|
39
|
+
const rows = await this.db
|
|
40
|
+
.prepare(`SELECT id, created_at, owner_id, alt, caption, variants, metadata
|
|
41
|
+
FROM media_assets WHERE id IN (${placeholders})`)
|
|
42
|
+
.bind(...chunk)
|
|
43
|
+
.all();
|
|
44
|
+
for (const row of rows)
|
|
45
|
+
out.set(row.id, rowToAsset(row));
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
async save(asset) {
|
|
50
|
+
await this.db
|
|
51
|
+
.prepare(`INSERT INTO media_assets (id, created_at, owner_id, alt, caption, variants, metadata)
|
|
52
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
53
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
54
|
+
alt = excluded.alt,
|
|
55
|
+
caption = excluded.caption,
|
|
56
|
+
variants = excluded.variants,
|
|
57
|
+
metadata = excluded.metadata`)
|
|
58
|
+
.bind(asset.id, asset.createdAt, null, asset.alt ?? null, asset.caption ?? null, JSON.stringify(asset.variants), asset.metadata ? JSON.stringify(asset.metadata) : null)
|
|
59
|
+
.run();
|
|
60
|
+
}
|
|
61
|
+
async delete(id) {
|
|
62
|
+
await this.db.prepare(`DELETE FROM media_assets WHERE id = ?`).bind(id).run();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const CHUNK = 100;
|
|
66
|
+
function rowToAsset(row) {
|
|
67
|
+
const variants = JSON.parse(row.variants);
|
|
68
|
+
const metadata = row.metadata
|
|
69
|
+
? JSON.parse(row.metadata)
|
|
70
|
+
: undefined;
|
|
71
|
+
return {
|
|
72
|
+
id: row.id,
|
|
73
|
+
variants,
|
|
74
|
+
alt: row.alt ?? undefined,
|
|
75
|
+
caption: row.caption ?? undefined,
|
|
76
|
+
createdAt: row.created_at,
|
|
77
|
+
metadata,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=DatabaseMediaAssetRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseMediaAssetRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseMediaAssetRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SiteConfig, type SiteDefaults } from "@aotter/mantle-spec";
|
|
1
|
+
import { type MediaPurposePolicy, type SiteConfig, type SiteDefaults } from "@aotter/mantle-spec";
|
|
2
2
|
import type { DatabaseDriver } from "../../domain/port/DatabaseDriver.js";
|
|
3
3
|
import type { SiteConfigRepository } from "../../domain/port/SiteConfigRepository.js";
|
|
4
4
|
export declare class DatabaseSiteConfigRepository implements SiteConfigRepository {
|
|
@@ -7,6 +7,6 @@ export declare class DatabaseSiteConfigRepository implements SiteConfigRepositor
|
|
|
7
7
|
seed(defaults: SiteDefaults | undefined): Promise<void>;
|
|
8
8
|
load(): Promise<SiteConfig>;
|
|
9
9
|
readLocales(): Promise<readonly string[]>;
|
|
10
|
-
readMediaPurposes(): Promise<readonly
|
|
10
|
+
readMediaPurposes(): Promise<readonly MediaPurposePolicy[]>;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=DatabaseSiteConfigRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseSiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"DatabaseSiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAiDtF,qBAAa,4BAA6B,YAAW,oBAAoB;IAC3D,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEzC,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCvD,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAmB3B,WAAW,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAQzC,iBAAiB,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC;CAOlE"}
|
|
@@ -8,6 +8,14 @@ import { assertSiteDefaultsCanonical, } from "@aotter/mantle-spec";
|
|
|
8
8
|
* The runtime calls `seed` once during bootInit; the result of `load`
|
|
9
9
|
* is what every render path and template sees.
|
|
10
10
|
*
|
|
11
|
+
* `mediaPurposes` is JSON-encoded (an array of `MediaPurposePolicy`
|
|
12
|
+
* objects) because the v0.1.x → v0.1.x #272 shape carries
|
|
13
|
+
* per-purpose required mime set + per-mime byte caps. Older CSV-form
|
|
14
|
+
* rows from pre-#272 deployments would round-trip as a single string;
|
|
15
|
+
* pre-v0.1 means we accept the breaking change rather than maintain
|
|
16
|
+
* a parser fork — operators rerun seed (or wipe the row) after
|
|
17
|
+
* upgrading.
|
|
18
|
+
*
|
|
11
19
|
* Lives in `infrastructure/persistence/` because it talks to the DB
|
|
12
20
|
* directly. Pure-domain validation (`assertSiteDefaultsCanonical`)
|
|
13
21
|
* comes from spec.
|
|
@@ -26,6 +34,19 @@ function splitCsv(raw) {
|
|
|
26
34
|
return [];
|
|
27
35
|
return raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
28
36
|
}
|
|
37
|
+
function parseMediaPurposes(raw) {
|
|
38
|
+
if (!raw)
|
|
39
|
+
return [];
|
|
40
|
+
try {
|
|
41
|
+
const parsed = JSON.parse(raw);
|
|
42
|
+
if (!Array.isArray(parsed))
|
|
43
|
+
return [];
|
|
44
|
+
return parsed;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
29
50
|
export class DatabaseSiteConfigRepository {
|
|
30
51
|
db;
|
|
31
52
|
constructor(db) {
|
|
@@ -59,7 +80,7 @@ export class DatabaseSiteConfigRepository {
|
|
|
59
80
|
}
|
|
60
81
|
const purposes = defaults.media?.purposes;
|
|
61
82
|
if (purposes && purposes.length > 0) {
|
|
62
|
-
stmts.push(insert(KEYS.mediaPurposes,
|
|
83
|
+
stmts.push(insert(KEYS.mediaPurposes, JSON.stringify(purposes)));
|
|
63
84
|
}
|
|
64
85
|
if (stmts.length > 0) {
|
|
65
86
|
await this.db.batch(stmts);
|
|
@@ -71,7 +92,7 @@ export class DatabaseSiteConfigRepository {
|
|
|
71
92
|
.all();
|
|
72
93
|
const m = new Map(rows.map((r) => [r.key, r.value]));
|
|
73
94
|
const locales = splitCsv(m.get(KEYS.locales));
|
|
74
|
-
const purposes =
|
|
95
|
+
const purposes = parseMediaPurposes(m.get(KEYS.mediaPurposes));
|
|
75
96
|
return {
|
|
76
97
|
title: m.get(KEYS.title) ?? "CMS",
|
|
77
98
|
description: m.get(KEYS.description) ?? "",
|
|
@@ -95,7 +116,7 @@ export class DatabaseSiteConfigRepository {
|
|
|
95
116
|
.prepare(`SELECT value FROM site_config WHERE key = ?`)
|
|
96
117
|
.bind(KEYS.mediaPurposes)
|
|
97
118
|
.first();
|
|
98
|
-
return
|
|
119
|
+
return parseMediaPurposes(row?.value);
|
|
99
120
|
}
|
|
100
121
|
}
|
|
101
122
|
//# sourceMappingURL=DatabaseSiteConfigRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseSiteConfigRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,
|
|
1
|
+
{"version":3,"file":"DatabaseSiteConfigRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,GAI5B,MAAM,qBAAqB,CAAC;AAI7B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;CACtB,CAAC;AAEX,SAAS,QAAQ,CAAC,GAAuB;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAuB;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAuC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,OAAO,4BAA4B;IACV;IAA7B,YAA6B,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAC,QAAkC;QAC3C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAC5C,IAAI,CAAC,EAAE;aACJ,OAAO,CAAC,gFAAgF,CAAC;aACzF,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC1C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,OAAO,CAAC,oCAAoC,CAAC;aAC7C,GAAG,EAAkC,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAC/D,OAAO;YACL,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK;YACjC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAC1C,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAChC,OAAO;YACP,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI;YACnC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc;YAC1C,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS;YAC/C,KAAK,EAAE,EAAE,QAAQ,EAAE;SACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CAAC,6CAA6C,CAAC;aACtD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAClB,KAAK,EAAqB,CAAC;QAC9B,OAAO,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CAAC,6CAA6C,CAAC;aACtD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;aACxB,KAAK,EAAqB,CAAC;QAC9B,OAAO,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { DatabaseEntryRepository } from "./DatabaseEntryRepository.js";
|
|
2
|
+
export { DatabaseMediaAssetRepository } from "./DatabaseMediaAssetRepository.js";
|
|
2
3
|
export { DatabaseSiteConfigRepository } from "./DatabaseSiteConfigRepository.js";
|
|
3
4
|
export { LifecycleHookingEntryRepository } from "./LifecycleHookingEntryRepository.js";
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { DatabaseEntryRepository } from "./DatabaseEntryRepository.js";
|
|
2
|
+
export { DatabaseMediaAssetRepository } from "./DatabaseMediaAssetRepository.js";
|
|
2
3
|
export { DatabaseSiteConfigRepository } from "./DatabaseSiteConfigRepository.js";
|
|
3
4
|
export { LifecycleHookingEntryRepository } from "./LifecycleHookingEntryRepository.js";
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ import { RunDeferredHookUseCase } from "./usecase/lifecycle/index.js";
|
|
|
19
19
|
import { ComposeEntrySeoMetaUseCase, ComposeLlmsTxtUseCase, ComposeSitemapUseCase, PreviewEntryUseCase, RenderEntryLiveUseCase, RenderListLiveUseCase } from "./usecase/render/index.js";
|
|
20
20
|
import { CommitMediaUploadUseCase, CreateMediaUploadUseCase } from "./usecase/media/index.js";
|
|
21
21
|
import type { PublicPathResolver } from "./domain/service/PublicPathResolver.js";
|
|
22
|
+
import type { MediaAsset } from "./domain/port/MediaStorage.js";
|
|
22
23
|
/**
|
|
23
24
|
* `createCmsRuntime` — assembly root. Per the clean-architecture
|
|
24
25
|
* convention, this file is the only place that wires concrete
|
|
@@ -60,8 +61,6 @@ export interface CreateCmsRuntimeArgs {
|
|
|
60
61
|
/** Whether the SVG mime is allowed in `CreateMediaUpload`. Default
|
|
61
62
|
* false; object stores don't sanitize SVG payloads. */
|
|
62
63
|
readonly mediaAllowSvg?: boolean;
|
|
63
|
-
/** Optional override of the default 25 MB upload byte ceiling. */
|
|
64
|
-
readonly mediaMaxBytes?: number;
|
|
65
64
|
/** Optional deferred-delivery dispatcher for `after_*` lifecycle
|
|
66
65
|
* hooks. When set, after-hooks are enqueued through it instead of
|
|
67
66
|
* riding `ctx.waitUntil` / inline-await. Cloudflare adapter wires
|
|
@@ -103,11 +102,19 @@ export interface CmsRuntime {
|
|
|
103
102
|
* hreflangs) without rebuilding the mapping. */
|
|
104
103
|
readonly publicPathResolver: PublicPathResolver | null;
|
|
105
104
|
/** Pre-wired media use cases when `mediaStorage` was supplied; null
|
|
106
|
-
* otherwise. Adapters route admin endpoints + MCP tools off this.
|
|
105
|
+
* otherwise. Adapters route admin endpoints + MCP tools off this.
|
|
106
|
+
*
|
|
107
|
+
* `resolve` / `resolveMany` materialise the variants set of a
|
|
108
|
+
* committed asset by id — entry data references assets via
|
|
109
|
+
* `x-mantle-ref: media_assets`, and renderers call these to emit
|
|
110
|
+
* `<picture>`. `resolveMany` batches a render-pass's worth of
|
|
111
|
+
* references in one DB round trip. */
|
|
107
112
|
readonly media: {
|
|
108
113
|
readonly storage: MediaStorage;
|
|
109
114
|
readonly createUpload: CreateMediaUploadUseCase;
|
|
110
115
|
readonly commitUpload: CommitMediaUploadUseCase;
|
|
116
|
+
resolve(id: string): Promise<MediaAsset | null>;
|
|
117
|
+
resolveMany(ids: readonly string[]): Promise<ReadonlyMap<string, MediaAsset>>;
|
|
111
118
|
} | null;
|
|
112
119
|
/** Drive a deferred after-hook from an enqueued envelope. Adapter
|
|
113
120
|
* queue consumers call `runDeferredHook.execute({ envelope, env })`
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEtF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EAEvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.js
CHANGED
|
@@ -12,6 +12,7 @@ import { CommitMediaUploadUseCase, CreateMediaUploadUseCase, } from "./usecase/m
|
|
|
12
12
|
import { TemplateRegistry as TemplateRegistryImpl } from "./domain/model/TemplateRegistry.js";
|
|
13
13
|
import { TriggerIndex } from "./domain/service/TriggerIndex.js";
|
|
14
14
|
import { DatabaseEntryRepository } from "./infrastructure/persistence/DatabaseEntryRepository.js";
|
|
15
|
+
import { DatabaseMediaAssetRepository } from "./infrastructure/persistence/DatabaseMediaAssetRepository.js";
|
|
15
16
|
import { DatabaseSiteConfigRepository } from "./infrastructure/persistence/DatabaseSiteConfigRepository.js";
|
|
16
17
|
import { LifecycleHookingEntryRepository } from "./infrastructure/persistence/LifecycleHookingEntryRepository.js";
|
|
17
18
|
import { HtmlPublishOrchestrator } from "./infrastructure/render/index.js";
|
|
@@ -85,11 +86,14 @@ export function createCmsRuntime(args) {
|
|
|
85
86
|
const renderListLive = new RenderListLiveUseCase(args.db, templates, schemasByName);
|
|
86
87
|
const previewEntry = new PreviewEntryUseCase(args.db, templates, publicPathResolver, composeEntrySeoMeta, schemasByName);
|
|
87
88
|
const validateBoot = new ValidateBootUseCase();
|
|
89
|
+
const mediaAssets = new DatabaseMediaAssetRepository(args.db);
|
|
88
90
|
const media = args.mediaStorage
|
|
89
91
|
? {
|
|
90
92
|
storage: args.mediaStorage,
|
|
91
|
-
createUpload: new CreateMediaUploadUseCase(args.mediaStorage, args.kv, clock, siteConfig, { allowSvg: args.mediaAllowSvg ?? false
|
|
92
|
-
commitUpload: new CommitMediaUploadUseCase(args.mediaStorage, args.kv, clock,
|
|
93
|
+
createUpload: new CreateMediaUploadUseCase(args.mediaStorage, args.kv, clock, idgen, siteConfig, { allowSvg: args.mediaAllowSvg ?? false }),
|
|
94
|
+
commitUpload: new CommitMediaUploadUseCase(args.mediaStorage, args.kv, clock, mediaAssets),
|
|
95
|
+
resolve: (id) => mediaAssets.findById(id),
|
|
96
|
+
resolveMany: (ids) => mediaAssets.findManyByIds(ids),
|
|
93
97
|
}
|
|
94
98
|
: null;
|
|
95
99
|
return {
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAOnB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,WAAW,EAAc,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,mBAAmB,GAEpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,GAErB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Media use-case DTOs. Distinct from `MediaStorage` port request types:
|
|
3
|
-
* the use case receives caller-supplied
|
|
4
|
-
* (
|
|
5
|
-
* adapter
|
|
3
|
+
* the use case receives caller-supplied variant declarations, derives
|
|
4
|
+
* the rest (uploadGroupId via IdGenerator, storage keys via the
|
|
5
|
+
* adapter, expiresAt via the clock, per-mime maxBytes via site
|
|
6
|
+
* config), and forwards port-shaped requests internally.
|
|
7
|
+
*
|
|
8
|
+
* The shape is multi-variant from the start (#272): one
|
|
9
|
+
* `create_media_upload` call yields N presigned URLs (one per
|
|
10
|
+
* format), and one `commit_media_upload` finalises the whole
|
|
11
|
+
* bundle. Optimization runs agent-side via
|
|
12
|
+
* `@aotter/mantle-media-tools` — the runtime never transforms bytes.
|
|
6
13
|
*/
|
|
14
|
+
import type { MediaVariantRole } from "../../../domain/port/MediaStorage.js";
|
|
7
15
|
export interface CreateMediaUploadRequest {
|
|
8
16
|
readonly filename: string;
|
|
9
|
-
readonly
|
|
10
|
-
|
|
11
|
-
* signing a PUT URL — without it the presigned URL accepts an
|
|
12
|
-
* unbounded body and the cap only applies at commit, which is
|
|
13
|
-
* too late if storage doesn't honor `Content-Length`. */
|
|
14
|
-
readonly byteSize: number;
|
|
17
|
+
readonly purpose: string;
|
|
18
|
+
readonly variants: ReadonlyArray<CreateMediaUploadVariantRequest>;
|
|
15
19
|
readonly alt?: string;
|
|
16
20
|
readonly caption?: string;
|
|
17
|
-
|
|
21
|
+
}
|
|
22
|
+
export interface CreateMediaUploadVariantRequest {
|
|
23
|
+
readonly mimeType: string;
|
|
24
|
+
/** Caller-declared payload size. Verified at create time so the
|
|
25
|
+
* Worker rejects oversized variants before signing a PUT URL. */
|
|
26
|
+
readonly byteSize: number;
|
|
27
|
+
readonly role: MediaVariantRole;
|
|
18
28
|
}
|
|
19
29
|
export interface CreateMediaUploadResponse {
|
|
20
|
-
|
|
21
|
-
|
|
30
|
+
/** Logical asset id — also the future `MediaAsset.id`. Caller
|
|
31
|
+
* passes this verbatim to `commit_media_upload`. */
|
|
32
|
+
readonly uploadGroupId: string;
|
|
33
|
+
readonly capabilities: ReadonlyArray<CreateMediaUploadVariantCapability>;
|
|
34
|
+
readonly expiresAt: number;
|
|
35
|
+
}
|
|
36
|
+
export interface CreateMediaUploadVariantCapability {
|
|
37
|
+
readonly mimeType: string;
|
|
38
|
+
readonly role: MediaVariantRole;
|
|
22
39
|
readonly method: "PUT";
|
|
40
|
+
readonly uploadUrl: string;
|
|
23
41
|
readonly requiredHeaders?: Readonly<Record<string, string>>;
|
|
24
|
-
readonly expiresAt: number;
|
|
25
42
|
}
|
|
26
43
|
export interface CommitMediaUploadRequest {
|
|
27
|
-
readonly
|
|
44
|
+
readonly uploadGroupId: string;
|
|
28
45
|
readonly alt?: string;
|
|
29
46
|
readonly caption?: string;
|
|
30
|
-
readonly checksum?: string;
|
|
31
47
|
}
|
|
32
48
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/media/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/media/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,+BAA+B,CAAC,CAAC;IAClE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;sEACkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC;yDACqD;IACrD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,kCAAkC,CAAC,CAAC;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B"}
|