@se-studio/contentful-cms 3.14.2 → 3.15.0
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/CHANGELOG.md +8 -0
- package/README.md +5 -1
- package/dist/commands/asset.d.ts.map +1 -1
- package/dist/commands/asset.js +310 -3
- package/dist/commands/asset.js.map +1 -1
- package/dist/contentful/asset-concepts.d.ts +53 -0
- package/dist/contentful/asset-concepts.d.ts.map +1 -0
- package/dist/contentful/asset-concepts.js +137 -0
- package/dist/contentful/asset-concepts.js.map +1 -0
- package/dist/contentful/asset-replace.d.ts +29 -0
- package/dist/contentful/asset-replace.d.ts.map +1 -0
- package/dist/contentful/asset-replace.js +57 -0
- package/dist/contentful/asset-replace.js.map +1 -0
- package/dist/contentful/assets.d.ts +11 -0
- package/dist/contentful/assets.d.ts.map +1 -1
- package/dist/contentful/assets.js +48 -2
- package/dist/contentful/assets.js.map +1 -1
- package/dist/contentful/client.d.ts +9 -0
- package/dist/contentful/client.d.ts.map +1 -1
- package/dist/contentful/client.js +27 -0
- package/dist/contentful/client.js.map +1 -1
- package/dist/contentful/cma-user-agent.d.ts +1 -1
- package/dist/contentful/media-dimensions.d.ts +7 -0
- package/dist/contentful/media-dimensions.d.ts.map +1 -0
- package/dist/contentful/media-dimensions.js +169 -0
- package/dist/contentful/media-dimensions.js.map +1 -0
- package/dist/contentful/upload-limits.d.ts +10 -4
- package/dist/contentful/upload-limits.d.ts.map +1 -1
- package/dist/contentful/upload-limits.js +14 -7
- package/dist/contentful/upload-limits.js.map +1 -1
- package/dist/editor-pack/generate.js +2 -2
- package/dist/editor-pack/generate.js.map +1 -1
- package/dist/generated/hosted-guide.d.ts +1 -1
- package/dist/generated/hosted-guide.d.ts.map +1 -1
- package/dist/generated/hosted-guide.js +1 -1
- package/dist/generated/hosted-guide.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/mcp/tools/cms-edit.d.ts +1 -1
- package/dist/mcp/tools/cms-edit.d.ts.map +1 -1
- package/dist/mcp/tools/cms-edit.js +1 -1
- package/dist/mcp/tools/media.d.ts.map +1 -1
- package/dist/mcp/tools/media.js +3 -3
- package/dist/mcp/tools/media.js.map +1 -1
- package/dist/mcp/tools/staged-upload.d.ts.map +1 -1
- package/dist/mcp/tools/staged-upload.js +4 -3
- package/dist/mcp/tools/staged-upload.js.map +1 -1
- package/dist/staged-upload/direct-intake.d.ts +23 -0
- package/dist/staged-upload/direct-intake.d.ts.map +1 -0
- package/dist/staged-upload/direct-intake.js +71 -0
- package/dist/staged-upload/direct-intake.js.map +1 -0
- package/dist/staged-upload/intake-policy.d.ts +13 -0
- package/dist/staged-upload/intake-policy.d.ts.map +1 -0
- package/dist/staged-upload/intake-policy.js +37 -0
- package/dist/staged-upload/intake-policy.js.map +1 -0
- package/dist/staged-upload/request.d.ts +5 -1
- package/dist/staged-upload/request.d.ts.map +1 -1
- package/dist/staged-upload/request.js +31 -2
- package/dist/staged-upload/request.js.map +1 -1
- package/dist/staged-upload/types.d.ts +4 -0
- package/dist/staged-upload/types.d.ts.map +1 -1
- package/docs/editor-tasks/media-pipeline-prepare.md +12 -2
- package/docs/editor-tasks/media-reuse-and-upload.md +40 -8
- package/docs/editor-tasks/taxonomy.md +2 -0
- package/docs/mcp/hosted-guide.md +8 -6
- package/package.json +2 -1
- package/skills/core/SKILL.md +11 -5
- package/skills/editor-tasks/SKILL.md +1 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { summariseAsset } from './assets.js';
|
|
2
|
+
export const MAX_ASSET_CONCEPTS = 50;
|
|
3
|
+
export function missingConceptError(conceptId) {
|
|
4
|
+
return (`Concept "${conceptId}" does not exist in this organization. ` +
|
|
5
|
+
'Add it in the Contentful Taxonomy manager. cms-edit does not create concept schemes.');
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Contentful's SDK throws a plain Error. `name` is the error id (`NotFound`).
|
|
9
|
+
* HTTP status is only inside the JSON `message`, not on the Error object.
|
|
10
|
+
*/
|
|
11
|
+
export function isMissingConceptError(err) {
|
|
12
|
+
if (!err || typeof err !== 'object') {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const record = err;
|
|
16
|
+
if (record.name === 'NotFound') {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
if (record.status === 404 || record.statusCode === 404) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
if (typeof record.message !== 'string') {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const parsed = JSON.parse(record.message);
|
|
27
|
+
return parsed.status === 404;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function conceptLink(id) {
|
|
34
|
+
return { sys: { type: 'Link', linkType: 'TaxonomyConcept', id } };
|
|
35
|
+
}
|
|
36
|
+
export function conceptIdsFromLinks(links) {
|
|
37
|
+
const ids = [];
|
|
38
|
+
for (const link of links ?? []) {
|
|
39
|
+
const id = link.sys?.id;
|
|
40
|
+
if (id) {
|
|
41
|
+
ids.push(id);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return ids;
|
|
45
|
+
}
|
|
46
|
+
function uniqueIds(ids) {
|
|
47
|
+
const out = [];
|
|
48
|
+
const seen = new Set();
|
|
49
|
+
for (const raw of ids) {
|
|
50
|
+
const id = raw.trim();
|
|
51
|
+
if (!id) {
|
|
52
|
+
throw new Error('Concept id is empty.');
|
|
53
|
+
}
|
|
54
|
+
if (id.includes(',')) {
|
|
55
|
+
throw new Error(`Concept id cannot contain a comma: ${id}`);
|
|
56
|
+
}
|
|
57
|
+
if (seen.has(id)) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
seen.add(id);
|
|
61
|
+
out.push(id);
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
export function assignConceptIds(current, add) {
|
|
66
|
+
const next = [...current];
|
|
67
|
+
for (const id of uniqueIds([...add])) {
|
|
68
|
+
if (!next.includes(id)) {
|
|
69
|
+
next.push(id);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (next.length > MAX_ASSET_CONCEPTS) {
|
|
73
|
+
throw new Error(`An asset can have at most ${String(MAX_ASSET_CONCEPTS)} concepts (this would be ${String(next.length)}).`);
|
|
74
|
+
}
|
|
75
|
+
return next;
|
|
76
|
+
}
|
|
77
|
+
export function unassignConceptIds(current, remove) {
|
|
78
|
+
const drop = new Set(uniqueIds([...remove]));
|
|
79
|
+
return current.filter((id) => !drop.has(id));
|
|
80
|
+
}
|
|
81
|
+
export function conceptSearchQuery(opts) {
|
|
82
|
+
const anyOf = uniqueIds([...opts.conceptIds]);
|
|
83
|
+
const allOf = uniqueIds([...opts.conceptAllIds]);
|
|
84
|
+
if (anyOf.length === 0 && allOf.length === 0) {
|
|
85
|
+
throw new Error('Pass --concept or --concept-all with a concept id.');
|
|
86
|
+
}
|
|
87
|
+
const query = { limit: opts.limit, skip: opts.skip };
|
|
88
|
+
if (anyOf.length > 0) {
|
|
89
|
+
query['metadata.concepts.sys.id[in]'] = anyOf.join(',');
|
|
90
|
+
}
|
|
91
|
+
if (allOf.length > 0) {
|
|
92
|
+
query['metadata.concepts.sys.id[all]'] = allOf.join(',');
|
|
93
|
+
}
|
|
94
|
+
return query;
|
|
95
|
+
}
|
|
96
|
+
export const CONCEPT_SEARCH_SCAN_PAGE = 100;
|
|
97
|
+
export function conceptSearchHasLocalFilter(filter) {
|
|
98
|
+
return Boolean(filter.title || filter.contentTypePrefix || filter.fileName || filter.fileNamePattern);
|
|
99
|
+
}
|
|
100
|
+
export function matchesConceptSearch(asset, filter) {
|
|
101
|
+
const summary = summariseAsset(asset);
|
|
102
|
+
if (filter.contentTypePrefix && !summary.contentType.startsWith(filter.contentTypePrefix)) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
if (filter.title && !summary.title.toLowerCase().includes(filter.title.toLowerCase())) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
if (filter.fileName && summary.fileName !== filter.fileName) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
if (filter.fileNamePattern && !filter.fileNamePattern.test(summary.fileName)) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
export function windowConceptHits(matched, skip, limit, scannedAll) {
|
|
117
|
+
return {
|
|
118
|
+
hits: matched.slice(skip, skip + limit),
|
|
119
|
+
more: matched.length > skip + limit || !scannedAll,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export function assetConceptHit(asset) {
|
|
123
|
+
const summary = summariseAsset(asset);
|
|
124
|
+
return {
|
|
125
|
+
id: summary.id,
|
|
126
|
+
title: summary.title,
|
|
127
|
+
fileName: summary.fileName,
|
|
128
|
+
description: summary.description ?? null,
|
|
129
|
+
concepts: conceptIdsFromLinks(asset.metadata?.concepts),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export async function assertConceptsExist(env, conceptIds) {
|
|
133
|
+
for (const conceptId of uniqueIds([...conceptIds])) {
|
|
134
|
+
await env.getConcept(conceptId);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=asset-concepts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-concepts.js","sourceRoot":"","sources":["../../src/contentful/asset-concepts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface AssetReplaceDimensions {
|
|
2
|
+
width: number | null;
|
|
3
|
+
height: number | null;
|
|
4
|
+
}
|
|
5
|
+
export interface AssetReplacePlan {
|
|
6
|
+
id: string;
|
|
7
|
+
fileName: string;
|
|
8
|
+
old: AssetReplaceDimensions;
|
|
9
|
+
new: AssetReplaceDimensions;
|
|
10
|
+
}
|
|
11
|
+
export declare function isImageContentType(contentType: string): boolean;
|
|
12
|
+
export declare function assertReplaceKeepsImageClass(currentContentType: string, nextContentType: string): void;
|
|
13
|
+
/** Processed pack object, not the direct-intake source blob. */
|
|
14
|
+
export declare function isPipelineReadyPackUrl(sourceUrl: string | undefined): boolean;
|
|
15
|
+
export declare function assertReplaceSource(opts: {
|
|
16
|
+
contentType: string;
|
|
17
|
+
sourceUrl?: string;
|
|
18
|
+
}): void;
|
|
19
|
+
export declare function planAssetReplace(input: {
|
|
20
|
+
id: string;
|
|
21
|
+
fileName: string;
|
|
22
|
+
contentType: string;
|
|
23
|
+
width?: number;
|
|
24
|
+
height?: number;
|
|
25
|
+
nextBuffer: Buffer;
|
|
26
|
+
nextContentType: string;
|
|
27
|
+
sourceUrl?: string;
|
|
28
|
+
}): AssetReplacePlan;
|
|
29
|
+
//# sourceMappingURL=asset-replace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-replace.d.ts","sourceRoot":"","sources":["../../src/contentful/asset-replace.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,sBAAsB,CAAC;IAC5B,GAAG,EAAE,sBAAsB,CAAC;CAC7B;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,wBAAgB,4BAA4B,CAC1C,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,MAAM,GACtB,IAAI,CAWN;AAED,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAU7E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAe3F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,gBAAgB,CAgBnB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { readMediaDimensions } from './media-dimensions.js';
|
|
2
|
+
import { isPipelineReadyUrl } from './pipeline-encode-gate.js';
|
|
3
|
+
export function isImageContentType(contentType) {
|
|
4
|
+
return contentType.trim().toLowerCase().startsWith('image/');
|
|
5
|
+
}
|
|
6
|
+
export function assertReplaceKeepsImageClass(currentContentType, nextContentType) {
|
|
7
|
+
const currentImage = isImageContentType(currentContentType);
|
|
8
|
+
const nextImage = isImageContentType(nextContentType);
|
|
9
|
+
if (currentImage === nextImage) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const currentKind = currentImage ? 'an image' : 'a non-image';
|
|
13
|
+
const nextKind = nextImage ? 'an image' : 'a non-image';
|
|
14
|
+
throw new Error(`Refusing replace: the current file is ${currentKind} (${currentContentType}) and the new file is ${nextKind} (${nextContentType}).`);
|
|
15
|
+
}
|
|
16
|
+
/** Processed pack object, not the direct-intake source blob. */
|
|
17
|
+
export function isPipelineReadyPackUrl(sourceUrl) {
|
|
18
|
+
if (!sourceUrl || !isPipelineReadyUrl(sourceUrl)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const path = new URL(sourceUrl).pathname;
|
|
23
|
+
return path.includes('/packs/') && path.includes('/ready/');
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function assertReplaceSource(opts) {
|
|
30
|
+
const mime = opts.contentType.trim().toLowerCase();
|
|
31
|
+
const needsPack = mime.startsWith('video/') || (mime.startsWith('image/') && mime !== 'image/svg+xml');
|
|
32
|
+
if (!needsPack) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (isPipelineReadyPackUrl(opts.sourceUrl)) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
throw new Error('Replace a raster image or video from the processed pack URL (--url of …/packs/…/ready/…). ' +
|
|
39
|
+
'Send the source through direct intake and the media pipeline first. ' +
|
|
40
|
+
'This command does not re-encode the library, and it does not store the intake file.');
|
|
41
|
+
}
|
|
42
|
+
export function planAssetReplace(input) {
|
|
43
|
+
const nextContentType = input.nextContentType.trim().toLowerCase();
|
|
44
|
+
if (!nextContentType || nextContentType === 'application/octet-stream') {
|
|
45
|
+
throw new Error('The new file has no MIME type. Pass --mime (image/png, image/jpeg, video/mp4, image/svg+xml, application/pdf).');
|
|
46
|
+
}
|
|
47
|
+
assertReplaceKeepsImageClass(input.contentType, nextContentType);
|
|
48
|
+
assertReplaceSource({ contentType: nextContentType, sourceUrl: input.sourceUrl });
|
|
49
|
+
const next = readMediaDimensions(input.nextBuffer, nextContentType);
|
|
50
|
+
return {
|
|
51
|
+
id: input.id,
|
|
52
|
+
fileName: input.fileName,
|
|
53
|
+
old: { width: input.width ?? null, height: input.height ?? null },
|
|
54
|
+
new: { width: next?.width ?? null, height: next?.height ?? null },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=asset-replace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-replace.js","sourceRoot":"","sources":["../../src/contentful/asset-replace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAc/D,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,kBAA0B,EAC1B,eAAuB;IAEvB,MAAM,YAAY,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACtD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;IAC9D,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;IACxD,MAAM,IAAI,KAAK,CACb,yCAAyC,WAAW,KAAK,kBAAkB,yBAAyB,QAAQ,KAAK,eAAe,IAAI,CACrI,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,sBAAsB,CAAC,SAA6B;IAClE,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAiD;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,SAAS,GACb,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,eAAe,CAAC,CAAC;IACvF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IACD,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CACb,4FAA4F;QAC1F,sEAAsE;QACtE,qFAAqF,CACxF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAShC;IACC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnE,IAAI,CAAC,eAAe,IAAI,eAAe,KAAK,0BAA0B,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,gHAAgH,CACjH,CAAC;IACJ,CAAC;IACD,4BAA4B,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACjE,mBAAmB,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACpE,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;QACjE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE;KAClE,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AssetProps } from 'contentful-management';
|
|
1
2
|
import type { SafeEnvironment } from './client.js';
|
|
2
3
|
/** Default upload fileName when only MIME type is known. */
|
|
3
4
|
export declare function defaultFileNameForMime(mimeType: string): string;
|
|
@@ -45,6 +46,15 @@ export declare function uploadAssetBuffer(env: SafeEnvironment, fileBuffer: Buff
|
|
|
45
46
|
/** Video CMA writes are allowed only from media import. */
|
|
46
47
|
viaMediaImport?: boolean;
|
|
47
48
|
}, onProgress?: (msg: string) => void): Promise<AssetSummary>;
|
|
49
|
+
/**
|
|
50
|
+
* Puts a new binary on an existing asset id. Keeps the current file name.
|
|
51
|
+
* Does not publish. Does not re-encode the bytes.
|
|
52
|
+
*/
|
|
53
|
+
export declare function replaceAssetFile(env: SafeEnvironment, assetId: string, fileBuffer: Buffer, opts: {
|
|
54
|
+
mimeType: string;
|
|
55
|
+
locale: string;
|
|
56
|
+
sourceUrl?: string;
|
|
57
|
+
}, onProgress?: (msg: string) => void): Promise<AssetSummary>;
|
|
48
58
|
/**
|
|
49
59
|
* Uploads a local file to Contentful as a new draft asset.
|
|
50
60
|
* Orchestrates: binary upload → asset creation → CDN processing → polling for URL.
|
|
@@ -55,4 +65,5 @@ export declare function uploadAssetFile(env: SafeEnvironment, filePath: string,
|
|
|
55
65
|
locale: string;
|
|
56
66
|
fileName?: string;
|
|
57
67
|
}, onProgress?: (msg: string) => void): Promise<AssetSummary>;
|
|
68
|
+
export declare function summariseAsset(asset: AssetProps): AssetSummary;
|
|
58
69
|
//# sourceMappingURL=assets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/contentful/assets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/contentful/assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
+
import { assertReplaceSource } from './asset-replace.js';
|
|
3
4
|
import { assertPipelineEncodedUpload, isVideoUpload, videoImportOnlyError, } from './pipeline-encode-gate.js';
|
|
4
5
|
import { assertUploadBufferSize } from './upload-limits.js';
|
|
5
6
|
const MIME_TYPE_MAP = {
|
|
@@ -121,7 +122,9 @@ export async function uploadAssetBuffer(env, fileBuffer, opts, onProgress) {
|
|
|
121
122
|
onProgress?.('Processing...');
|
|
122
123
|
await env.processAsset(asset, locale);
|
|
123
124
|
onProgress?.('Waiting for CDN...');
|
|
124
|
-
|
|
125
|
+
return waitForProcessedAsset(env, asset.sys.id, locale);
|
|
126
|
+
}
|
|
127
|
+
async function waitForProcessedAsset(env, assetId, locale) {
|
|
125
128
|
const pollDelaysMs = [500, 500, 1000, 1000, 1000, 1500, 2000, 2000, 2000, 2500];
|
|
126
129
|
let waitedMs = 0;
|
|
127
130
|
for (const delayMs of pollDelaysMs) {
|
|
@@ -135,6 +138,49 @@ export async function uploadAssetBuffer(env, fileBuffer, opts, onProgress) {
|
|
|
135
138
|
}
|
|
136
139
|
throw new Error(`Asset processing timed out after ${String(waitedMs)}ms. Check Contentful for asset ID: ${assetId}`);
|
|
137
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Puts a new binary on an existing asset id. Keeps the current file name.
|
|
143
|
+
* Does not publish. Does not re-encode the bytes.
|
|
144
|
+
*/
|
|
145
|
+
export async function replaceAssetFile(env, assetId, fileBuffer, opts, onProgress) {
|
|
146
|
+
assertUploadBufferSize(fileBuffer);
|
|
147
|
+
const mimeType = opts.mimeType.trim().toLowerCase();
|
|
148
|
+
assertReplaceSource({ contentType: mimeType, sourceUrl: opts.sourceUrl });
|
|
149
|
+
if (isVideoUpload(mimeType) && !opts.sourceUrl) {
|
|
150
|
+
throw new Error(videoImportOnlyError());
|
|
151
|
+
}
|
|
152
|
+
assertPipelineEncodedUpload({
|
|
153
|
+
mimeType,
|
|
154
|
+
sourceUrl: opts.sourceUrl,
|
|
155
|
+
});
|
|
156
|
+
const asset = await env.getAsset(assetId);
|
|
157
|
+
const fileFields = asset.fields.file;
|
|
158
|
+
const locale = fileFields?.[opts.locale]
|
|
159
|
+
? opts.locale
|
|
160
|
+
: (Object.keys(fileFields ?? {})[0] ?? opts.locale);
|
|
161
|
+
const current = fileFields?.[locale];
|
|
162
|
+
const fileName = current?.fileName;
|
|
163
|
+
if (!fileName) {
|
|
164
|
+
throw new Error(`Asset ${assetId} has no file name to keep.`);
|
|
165
|
+
}
|
|
166
|
+
onProgress?.('Uploading replacement file...');
|
|
167
|
+
const upload = await env.uploadFile(fileBuffer, mimeType);
|
|
168
|
+
const fields = asset.fields;
|
|
169
|
+
fields['file'] = {
|
|
170
|
+
...(fileFields ?? {}),
|
|
171
|
+
[locale]: {
|
|
172
|
+
fileName,
|
|
173
|
+
contentType: mimeType,
|
|
174
|
+
uploadFrom: { sys: { type: 'Link', linkType: 'Upload', id: upload.sys.id } },
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
onProgress?.('Saving draft asset...');
|
|
178
|
+
const updated = await env.updateAsset(asset);
|
|
179
|
+
onProgress?.('Processing...');
|
|
180
|
+
await env.processAsset(updated, locale);
|
|
181
|
+
onProgress?.('Waiting for CDN...');
|
|
182
|
+
return waitForProcessedAsset(env, assetId, locale);
|
|
183
|
+
}
|
|
138
184
|
/**
|
|
139
185
|
* Uploads a local file to Contentful as a new draft asset.
|
|
140
186
|
* Orchestrates: binary upload → asset creation → CDN processing → polling for URL.
|
|
@@ -156,7 +202,7 @@ export async function uploadAssetFile(env, filePath, opts, onProgress) {
|
|
|
156
202
|
locale: opts.locale,
|
|
157
203
|
}, onProgress);
|
|
158
204
|
}
|
|
159
|
-
function summariseAsset(asset) {
|
|
205
|
+
export function summariseAsset(asset) {
|
|
160
206
|
const file = asset.fields.file;
|
|
161
207
|
const locale = Object.keys(file ?? {})[0] ?? 'en-US';
|
|
162
208
|
const fileData = file?.[locale];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/contentful/assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/contentful/assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,15 @@ export interface SafeEnvironment {
|
|
|
47
47
|
updateAsset(asset: AssetProps): Promise<AssetProps>;
|
|
48
48
|
/** Publishes an asset. Only use for asset metadata updates (description/alt text), not content. */
|
|
49
49
|
publishAsset(asset: AssetProps): Promise<AssetProps>;
|
|
50
|
+
/**
|
|
51
|
+
* Reads one organisation concept. Throws a clear error when the id does not exist.
|
|
52
|
+
* Does not create concepts or schemes.
|
|
53
|
+
*/
|
|
54
|
+
getConcept(conceptId: string): Promise<{
|
|
55
|
+
sys: {
|
|
56
|
+
id: string;
|
|
57
|
+
};
|
|
58
|
+
}>;
|
|
50
59
|
}
|
|
51
60
|
/**
|
|
52
61
|
* Creates a safe CMA environment wrapper for the given space config.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/contentful/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAErB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/contentful/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAErB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMtD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAW9D;AAiBD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAChF,WAAW,CACT,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC9C,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAChF,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjE,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7D,0DAA0D;IAC1D,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAClD,+CAA+C;IAC/C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,mFAAmF;IACnF,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxE,0DAA0D;IAC1D,WAAW,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxB,+EAA+E;IAC/E,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrE,6DAA6D;IAC7D,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,mGAAmG;IACnG,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CACjE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CA4FxF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createClient, } from 'contentful-management';
|
|
2
2
|
import { getRuntimeContext } from '../runtime/context.js';
|
|
3
3
|
import { incrementCmaRequests } from '../telemetry/request-stats.js';
|
|
4
|
+
import { isMissingConceptError, missingConceptError } from './asset-concepts.js';
|
|
4
5
|
import { cmaClientOptions } from './cma-user-agent.js';
|
|
5
6
|
export function isCmaUnauthorizedError(error) {
|
|
6
7
|
if (!error || typeof error !== 'object')
|
|
@@ -35,6 +36,19 @@ export async function createSafeEnvironment(space) {
|
|
|
35
36
|
const client = createClient(cmaClientOptions(space.managementToken), {
|
|
36
37
|
defaults: { spaceId: space.spaceId, environmentId: space.environment },
|
|
37
38
|
});
|
|
39
|
+
let organizationId;
|
|
40
|
+
const readOrganizationId = async () => {
|
|
41
|
+
if (organizationId) {
|
|
42
|
+
return organizationId;
|
|
43
|
+
}
|
|
44
|
+
const spaceProps = await withCma(() => client.space.get({ spaceId: space.spaceId }));
|
|
45
|
+
const id = spaceProps.sys.organization?.sys.id;
|
|
46
|
+
if (!id) {
|
|
47
|
+
throw new Error('Contentful space has no organization id.');
|
|
48
|
+
}
|
|
49
|
+
organizationId = id;
|
|
50
|
+
return id;
|
|
51
|
+
};
|
|
38
52
|
return {
|
|
39
53
|
getEntry: (entryId) => withCma(() => client.entry.get({ entryId })),
|
|
40
54
|
getEntries: (query) => withCma(() => client.entry.getMany({ query })),
|
|
@@ -73,6 +87,19 @@ export async function createSafeEnvironment(space) {
|
|
|
73
87
|
},
|
|
74
88
|
updateAsset: (asset) => withCma(() => client.asset.update({ assetId: asset.sys.id }, asset)),
|
|
75
89
|
publishAsset: (asset) => withCma(() => client.asset.publish({ assetId: asset.sys.id }, asset)),
|
|
90
|
+
getConcept: async (conceptId) => {
|
|
91
|
+
const organizationIdForConcept = await readOrganizationId();
|
|
92
|
+
try {
|
|
93
|
+
const concept = await withCma(() => client.concept.get({ organizationId: organizationIdForConcept, conceptId }));
|
|
94
|
+
return { sys: { id: concept.sys.id } };
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (isMissingConceptError(err)) {
|
|
98
|
+
throw new Error(missingConceptError(conceptId));
|
|
99
|
+
}
|
|
100
|
+
throw err;
|
|
101
|
+
}
|
|
102
|
+
},
|
|
76
103
|
};
|
|
77
104
|
}
|
|
78
105
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/contentful/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,GAEb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,GAAG,GAAG,KAKX,CAAC;IACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC;IAC3F,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,OAAO,CAAI,EAAoB;IAC5C,oBAAoB,EAAE,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,iBAAiB,EAAE,EAAE,iBAAiB,CAAC;YAC9D,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,cAAc,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/contentful/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** SDK `application` value. Becomes `app cms-edit/<version>` in X-Contentful-User-Agent. */
|
|
2
|
-
export declare const CMA_APPLICATION = "cms-edit/3.
|
|
2
|
+
export declare const CMA_APPLICATION = "cms-edit/3.15.0";
|
|
3
3
|
export declare function cmaClientOptions(accessToken: string): {
|
|
4
4
|
accessToken: string;
|
|
5
5
|
application: string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface MediaDimensions {
|
|
2
|
+
width: number;
|
|
3
|
+
height: number;
|
|
4
|
+
}
|
|
5
|
+
/** Width and height from the file header. Does not decode or re-encode the bytes. */
|
|
6
|
+
export declare function readMediaDimensions(buffer: Buffer, mimeType: string): MediaDimensions | null;
|
|
7
|
+
//# sourceMappingURL=media-dimensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-dimensions.d.ts","sourceRoot":"","sources":["../../src/contentful/media-dimensions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAsKD,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAkB5F"}
|