@se-studio/contentful-cms 3.4.3 → 3.4.4
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 +13 -0
- package/dist/commands/add-target-field.d.ts +15 -0
- package/dist/commands/add-target-field.d.ts.map +1 -0
- package/dist/commands/add-target-field.js +48 -0
- package/dist/commands/add-target-field.js.map +1 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +89 -73
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/media.d.ts.map +1 -1
- package/dist/commands/media.js +14 -0
- package/dist/commands/media.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.map +1 -1
- package/dist/mcp/tools/cms-edit.js +31 -2
- package/dist/mcp/tools/cms-edit.js.map +1 -1
- package/dist/mcp/tools/media.d.ts.map +1 -1
- package/dist/mcp/tools/media.js +33 -2
- package/dist/mcp/tools/media.js.map +1 -1
- package/dist/media-pipeline/import-filter.d.ts +36 -0
- package/dist/media-pipeline/import-filter.d.ts.map +1 -0
- package/dist/media-pipeline/import-filter.js +53 -0
- package/dist/media-pipeline/import-filter.js.map +1 -0
- package/dist/media-pipeline/import.d.ts +6 -0
- package/dist/media-pipeline/import.d.ts.map +1 -1
- package/dist/media-pipeline/import.js +28 -1
- package/dist/media-pipeline/import.js.map +1 -1
- package/dist/preview/entry-urls.d.ts +13 -2
- package/dist/preview/entry-urls.d.ts.map +1 -1
- package/dist/preview/entry-urls.js +49 -11
- package/dist/preview/entry-urls.js.map +1 -1
- package/docs/editor-tasks/create-from-document.md +3 -2
- package/docs/editor-tasks/media-pipeline-prepare.md +28 -8
- package/docs/editor-tasks/media-reuse-and-upload.md +13 -3
- package/docs/editor-tasks/preview-verify.md +7 -6
- package/docs/mcp/hosted-guide.md +11 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-guide.js","sourceRoot":"","sources":["../../src/generated/hosted-guide.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,
|
|
1
|
+
{"version":3,"file":"hosted-guide.js","sourceRoot":"","sources":["../../src/generated/hosted-guide.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,2kgBAA2kgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cms-edit.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/cms-edit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,gBAAgB,0iPAqFkF,CAAC;AAEhH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,YAAY,EACxB,MAAM,CAAC,EAAE,aAAa,GACrB,IAAI,
|
|
1
|
+
{"version":3,"file":"cms-edit.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/cms-edit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,gBAAgB,0iPAqFkF,CAAC;AAEhH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,YAAY,EACxB,MAAM,CAAC,EAAE,aAAa,GACrB,IAAI,CAmEN;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAE1F"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { sessionLogVerbose } from '../../session/log.js';
|
|
2
|
+
import { sessionLog, sessionLogVerbose } from '../../session/log.js';
|
|
3
3
|
import { CMS_EDIT_VERSION, getVersionInfo } from '../../version.js';
|
|
4
4
|
import { buildHostedVersionPayload, getHostedMcpServerName, prefixHostedToolDescription, } from '../hosted-metadata.js';
|
|
5
5
|
import { withMcpSession } from '../session-args.js';
|
|
@@ -106,9 +106,38 @@ export function registerCmsEditTools(server, runCmsEdit, hosted) {
|
|
|
106
106
|
.array(z.string())
|
|
107
107
|
.describe('CLI arguments to pass to cms-edit, e.g. ["open", "/pricing"] or ["snapshot"] or ["read", "@c1"]. Do not pass --space when using a hosted Integration.'),
|
|
108
108
|
}, async ({ args }) => {
|
|
109
|
+
const started = Date.now();
|
|
109
110
|
const normalizedArgs = withMcpSession(args);
|
|
110
111
|
sessionLogVerbose('cms_edit tool call', { rawArgs: args, normalizedArgs });
|
|
111
|
-
|
|
112
|
+
let text;
|
|
113
|
+
let threw = false;
|
|
114
|
+
try {
|
|
115
|
+
text = await runCmsEdit(normalizedArgs);
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
threw = true;
|
|
119
|
+
const durationMs = Date.now() - started;
|
|
120
|
+
sessionLog('cms_edit done', {
|
|
121
|
+
durationMs,
|
|
122
|
+
slow: durationMs >= 30_000,
|
|
123
|
+
ok: false,
|
|
124
|
+
threw: true,
|
|
125
|
+
argsPreview: normalizedArgs.slice(0, 6),
|
|
126
|
+
error: err instanceof Error ? err.message : String(err),
|
|
127
|
+
});
|
|
128
|
+
throw err;
|
|
129
|
+
}
|
|
130
|
+
const durationMs = Date.now() - started;
|
|
131
|
+
const looksError = threw ||
|
|
132
|
+
/\berror\b/i.test(text.slice(0, 200)) ||
|
|
133
|
+
text.includes('"ok":false') ||
|
|
134
|
+
text.includes('"ok": false');
|
|
135
|
+
sessionLog('cms_edit done', {
|
|
136
|
+
durationMs,
|
|
137
|
+
slow: durationMs >= 30_000,
|
|
138
|
+
ok: !looksError,
|
|
139
|
+
argsPreview: normalizedArgs.slice(0, 6),
|
|
140
|
+
});
|
|
112
141
|
return { content: [{ type: 'text', text }] };
|
|
113
142
|
});
|
|
114
143
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cms-edit.js","sourceRoot":"","sources":["../../../src/mcp/tools/cms-edit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"cms-edit.js","sourceRoot":"","sources":["../../../src/mcp/tools/cms-edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqCjD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CA+IlF"}
|
package/dist/mcp/tools/media.js
CHANGED
|
@@ -3,6 +3,7 @@ import { mediaCatalog, mediaImport, mediaPrepare, mediaStatus, mediaWait, } from
|
|
|
3
3
|
import { MediaPipelineClient } from '../../media-pipeline/client.js';
|
|
4
4
|
import { loadMediaPipelineConfig } from '../../media-pipeline/config.js';
|
|
5
5
|
import { getRuntimeContext } from '../../runtime/context.js';
|
|
6
|
+
import { sessionLog } from '../../session/log.js';
|
|
6
7
|
import { prefixHostedToolDescription } from '../hosted-metadata.js';
|
|
7
8
|
const TOOL_DESCRIPTION = `Prepare, inspect, and import media packs via the SE media pipeline (hosted cms-edit only).
|
|
8
9
|
|
|
@@ -13,9 +14,13 @@ Actions:
|
|
|
13
14
|
- status: poll job status / gap counts
|
|
14
15
|
- catalog: list ready assets (readyUrl, previewUrl) for naming/alt
|
|
15
16
|
- wait: poll until terminal or timeout (~25s default)
|
|
16
|
-
- import: reuse-first Contentful upload from readyUrl (optional dryRun, withMedia, overrides)
|
|
17
|
+
- import: reuse-first Contentful upload from readyUrl (optional dryRun, withMedia, overrides, sourceNames, excludeSourceNames, onlyWithOverrides)
|
|
17
18
|
|
|
18
|
-
Workflow: prepare → wait → catalog → (draft titles/alts from previewUrl) → import.
|
|
19
|
+
Workflow: prepare → wait → catalog → (draft titles/alts from previewUrl) → import (prefer sourceNames or onlyWithOverrides so unused Drive files are not uploaded).
|
|
20
|
+
|
|
21
|
+
Drive folders must be shared Viewer with media-pipeline-reader@se-media-pipeline.iam.gserviceaccount.com. If status/gaps say drive_inaccessible or drive_empty_or_unshared, fix share then re-prepare once.
|
|
22
|
+
|
|
23
|
+
Import is reuse-first by fileName — dryRun first; use overrides[].fileName when you need new assets instead of matching existing names.
|
|
19
24
|
|
|
20
25
|
Pipeline statuses (real): queued → running → succeeded|partial|failed.
|
|
21
26
|
Host-only soft state: provisioning = job bound but pack status not readable yet (OK under ~90s only).
|
|
@@ -60,7 +65,20 @@ export function registerMediaTools(server, hosted) {
|
|
|
60
65
|
}))
|
|
61
66
|
.optional()
|
|
62
67
|
.describe('import: per-sourceName title/alt/fileName overrides'),
|
|
68
|
+
sourceNames: z
|
|
69
|
+
.array(z.string())
|
|
70
|
+
.optional()
|
|
71
|
+
.describe('import: allowlist of catalog sourceName values (exact Drive file names)'),
|
|
72
|
+
excludeSourceNames: z
|
|
73
|
+
.array(z.string())
|
|
74
|
+
.optional()
|
|
75
|
+
.describe('import: skip these catalog sourceName values'),
|
|
76
|
+
onlyWithOverrides: z
|
|
77
|
+
.boolean()
|
|
78
|
+
.optional()
|
|
79
|
+
.describe('import: only import assets that have an overrides row'),
|
|
63
80
|
}, async (params) => {
|
|
81
|
+
const started = Date.now();
|
|
64
82
|
const ctx = buildActionContext(hosted);
|
|
65
83
|
let result;
|
|
66
84
|
switch (params.action) {
|
|
@@ -130,11 +148,24 @@ export function registerMediaTools(server, hosted) {
|
|
|
130
148
|
dryRun: params.dryRun,
|
|
131
149
|
withMedia: params.withMedia,
|
|
132
150
|
overrides: params.overrides,
|
|
151
|
+
sourceNames: params.sourceNames,
|
|
152
|
+
excludeSourceNames: params.excludeSourceNames,
|
|
153
|
+
onlyWithOverrides: params.onlyWithOverrides,
|
|
133
154
|
});
|
|
134
155
|
break;
|
|
135
156
|
default:
|
|
136
157
|
result = { ok: false, error: `Unknown action: ${String(params.action)}` };
|
|
137
158
|
}
|
|
159
|
+
const durationMs = Date.now() - started;
|
|
160
|
+
// Always log completion latency for Vercel triage (Claude client often times out at ~180s).
|
|
161
|
+
sessionLog('cms_edit_media done', {
|
|
162
|
+
durationMs,
|
|
163
|
+
slow: durationMs >= 30_000,
|
|
164
|
+
action: params.action,
|
|
165
|
+
ok: result['ok'] !== false,
|
|
166
|
+
jobId: params.jobId,
|
|
167
|
+
code: result['code'],
|
|
168
|
+
});
|
|
138
169
|
return {
|
|
139
170
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
140
171
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/mcp/tools/media.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,SAAS,GACV,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/mcp/tools/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { PipelineManifestAsset } from './client.js';
|
|
2
|
+
/** Minimal override shape for filter decisions (avoids circular import with import.ts). */
|
|
3
|
+
export interface ImportFilterOverride {
|
|
4
|
+
sourceName: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ImportFilterParams {
|
|
7
|
+
sourceNames?: string[];
|
|
8
|
+
excludeSourceNames?: string[];
|
|
9
|
+
onlyWithOverrides?: boolean;
|
|
10
|
+
overrides?: ImportFilterOverride[];
|
|
11
|
+
}
|
|
12
|
+
export type ImportSkipReason = 'not_in_sourceNames' | 'in_excludeSourceNames' | 'onlyWithOverrides_no_override';
|
|
13
|
+
export type ImportFilterDecision = {
|
|
14
|
+
include: true;
|
|
15
|
+
} | {
|
|
16
|
+
include: false;
|
|
17
|
+
reason: ImportSkipReason;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Decide whether a catalog asset should be imported.
|
|
21
|
+
* When `sourceNames` is non-empty, it is an allowlist (exact match on sourceName).
|
|
22
|
+
* `excludeSourceNames` always skips listed names.
|
|
23
|
+
* `onlyWithOverrides` requires an overrides row for that sourceName.
|
|
24
|
+
*/
|
|
25
|
+
export declare function decideImportAsset(sourceName: string, params: ImportFilterParams): ImportFilterDecision;
|
|
26
|
+
export declare function partitionImportAssets(assets: PipelineManifestAsset[], params: ImportFilterParams): {
|
|
27
|
+
selected: PipelineManifestAsset[];
|
|
28
|
+
skipped: Array<{
|
|
29
|
+
sourceName: string;
|
|
30
|
+
skipped: true;
|
|
31
|
+
reason: ImportSkipReason;
|
|
32
|
+
ok: true;
|
|
33
|
+
}>;
|
|
34
|
+
unknownAllowlist: string[];
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=import-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-filter.d.ts","sourceRoot":"","sources":["../../src/media-pipeline/import-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,2FAA2F;AAC3F,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,MAAM,MAAM,gBAAgB,GACxB,oBAAoB,GACpB,uBAAuB,GACvB,+BAA+B,CAAC;AAEpC,MAAM,MAAM,oBAAoB,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEpG;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,GACzB,oBAAoB,CAetB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAAE,EAC/B,MAAM,EAAE,kBAAkB,GACzB;IACD,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAC1F,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAyBA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decide whether a catalog asset should be imported.
|
|
3
|
+
* When `sourceNames` is non-empty, it is an allowlist (exact match on sourceName).
|
|
4
|
+
* `excludeSourceNames` always skips listed names.
|
|
5
|
+
* `onlyWithOverrides` requires an overrides row for that sourceName.
|
|
6
|
+
*/
|
|
7
|
+
export function decideImportAsset(sourceName, params) {
|
|
8
|
+
const allow = normalizeNameList(params.sourceNames);
|
|
9
|
+
const exclude = normalizeNameList(params.excludeSourceNames);
|
|
10
|
+
const overrideNames = new Set((params.overrides ?? []).map((o) => o.sourceName));
|
|
11
|
+
if (exclude.has(sourceName)) {
|
|
12
|
+
return { include: false, reason: 'in_excludeSourceNames' };
|
|
13
|
+
}
|
|
14
|
+
if (allow.size > 0 && !allow.has(sourceName)) {
|
|
15
|
+
return { include: false, reason: 'not_in_sourceNames' };
|
|
16
|
+
}
|
|
17
|
+
if (params.onlyWithOverrides && !overrideNames.has(sourceName)) {
|
|
18
|
+
return { include: false, reason: 'onlyWithOverrides_no_override' };
|
|
19
|
+
}
|
|
20
|
+
return { include: true };
|
|
21
|
+
}
|
|
22
|
+
export function partitionImportAssets(assets, params) {
|
|
23
|
+
const allow = normalizeNameList(params.sourceNames);
|
|
24
|
+
const selected = [];
|
|
25
|
+
const skipped = [];
|
|
26
|
+
for (const asset of assets) {
|
|
27
|
+
const decision = decideImportAsset(asset.sourceName, params);
|
|
28
|
+
if (decision.include) {
|
|
29
|
+
selected.push(asset);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
skipped.push({
|
|
33
|
+
ok: true,
|
|
34
|
+
skipped: true,
|
|
35
|
+
sourceName: asset.sourceName,
|
|
36
|
+
reason: decision.reason,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const catalogNames = new Set(assets.map((a) => a.sourceName));
|
|
41
|
+
const unknownAllowlist = allow.size > 0 ? [...allow].filter((name) => !catalogNames.has(name)) : [];
|
|
42
|
+
return { selected, skipped, unknownAllowlist };
|
|
43
|
+
}
|
|
44
|
+
function normalizeNameList(names) {
|
|
45
|
+
const set = new Set();
|
|
46
|
+
for (const n of names ?? []) {
|
|
47
|
+
const t = n.trim();
|
|
48
|
+
if (t)
|
|
49
|
+
set.add(t);
|
|
50
|
+
}
|
|
51
|
+
return set;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=import-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-filter.js","sourceRoot":"","sources":["../../src/media-pipeline/import-filter.ts"],"names":[],"mappings":"AAqBA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,MAA0B;IAE1B,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjF,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAA+B,EAC/B,MAA0B;IAM1B,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,MAAM,OAAO,GACX,EAAE,CAAC;IAEL,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GACpB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA2B;IACpD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -10,6 +10,12 @@ export interface MediaImportParams {
|
|
|
10
10
|
dryRun?: boolean;
|
|
11
11
|
withMedia?: boolean;
|
|
12
12
|
overrides?: MediaImportOverride[];
|
|
13
|
+
/** Exact catalog sourceName allowlist (Drive file names). */
|
|
14
|
+
sourceNames?: string[];
|
|
15
|
+
/** Exact catalog sourceNames to skip. */
|
|
16
|
+
excludeSourceNames?: string[];
|
|
17
|
+
/** Only import assets that have an overrides row. */
|
|
18
|
+
onlyWithOverrides?: boolean;
|
|
13
19
|
}
|
|
14
20
|
export type MediaImportResult = Record<string, unknown>;
|
|
15
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/media-pipeline/import.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/media-pipeline/import.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQvD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAqBxD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CA+I5B"}
|
|
@@ -7,6 +7,7 @@ import { findAssetByFileNameInIndex, mediaByAssetId } from '../index/query.js';
|
|
|
7
7
|
import { ensureContentIndex } from '../index/require.js';
|
|
8
8
|
import { getRuntimeContext } from '../runtime/context.js';
|
|
9
9
|
import { MediaPipelineClientError } from './client.js';
|
|
10
|
+
import { partitionImportAssets } from './import-filter.js';
|
|
10
11
|
import { MediaJobStoreError } from './job-store.js';
|
|
11
12
|
import { mediaPipelineLog } from './log.js';
|
|
12
13
|
import { isPlausibleJobId } from './validate.js';
|
|
@@ -56,8 +57,22 @@ export async function mediaImport(ctx, params) {
|
|
|
56
57
|
const locale = space.defaultLocale;
|
|
57
58
|
await ensureContentIndex(space, {});
|
|
58
59
|
const ov = overrideMap(params.overrides);
|
|
60
|
+
const { selected, skipped, unknownAllowlist } = partitionImportAssets(assets, {
|
|
61
|
+
sourceNames: params.sourceNames,
|
|
62
|
+
excludeSourceNames: params.excludeSourceNames,
|
|
63
|
+
onlyWithOverrides: params.onlyWithOverrides,
|
|
64
|
+
overrides: params.overrides,
|
|
65
|
+
});
|
|
66
|
+
if (selected.length === 0) {
|
|
67
|
+
return fail('No assets selected for import after filters (sourceNames / excludeSourceNames / onlyWithOverrides).', 'filtered_empty', 400, {
|
|
68
|
+
skipped,
|
|
69
|
+
unknownAllowlist,
|
|
70
|
+
catalogCount: assets.length,
|
|
71
|
+
gaps: status.gaps ?? [],
|
|
72
|
+
});
|
|
73
|
+
}
|
|
59
74
|
const results = [];
|
|
60
|
-
for (const asset of
|
|
75
|
+
for (const asset of selected) {
|
|
61
76
|
results.push(await importOneAsset({
|
|
62
77
|
asset,
|
|
63
78
|
override: ov.get(asset.sourceName),
|
|
@@ -68,18 +83,30 @@ export async function mediaImport(ctx, params) {
|
|
|
68
83
|
locale,
|
|
69
84
|
}));
|
|
70
85
|
}
|
|
86
|
+
const existingCount = results.filter((r) => r.ok && r.existing === true).length;
|
|
87
|
+
const importedNewCount = results.filter((r) => r.ok && r.existing === false).length;
|
|
71
88
|
mediaPipelineLog('media.import', {
|
|
72
89
|
userId: ctx.userId,
|
|
73
90
|
projectKey: ctx.projectKey,
|
|
74
91
|
jobId,
|
|
75
92
|
dryRun: Boolean(params.dryRun),
|
|
76
93
|
count: results.length,
|
|
94
|
+
skipped: skipped.length,
|
|
77
95
|
});
|
|
78
96
|
return {
|
|
79
97
|
ok: true,
|
|
80
98
|
jobId,
|
|
81
99
|
dryRun: Boolean(params.dryRun),
|
|
82
100
|
imported: results,
|
|
101
|
+
skipped,
|
|
102
|
+
unknownAllowlist,
|
|
103
|
+
counts: {
|
|
104
|
+
imported: results.filter((r) => r.ok && !r.skipped).length,
|
|
105
|
+
skipped: skipped.length,
|
|
106
|
+
existing: existingCount,
|
|
107
|
+
wouldUploadOrUploaded: importedNewCount,
|
|
108
|
+
catalog: assets.length,
|
|
109
|
+
},
|
|
83
110
|
gaps: status.gaps ?? [],
|
|
84
111
|
map: Object.fromEntries(results
|
|
85
112
|
.filter((r) => r.ok && r.assetId)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/media-pipeline/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/media-pipeline/import.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,16 +16,27 @@ export interface PreviewUrlResult {
|
|
|
16
16
|
/** When true, draft-only changes are visible at this URL. */
|
|
17
17
|
showsDrafts: boolean;
|
|
18
18
|
notes?: string;
|
|
19
|
+
/** Set when contentfulLivePreview could not be resolved. */
|
|
20
|
+
unavailableReason?: string;
|
|
21
|
+
httpStatus?: number;
|
|
19
22
|
}
|
|
23
|
+
export type LivePreviewFetchResult = {
|
|
24
|
+
ok: true;
|
|
25
|
+
url: string;
|
|
26
|
+
} | {
|
|
27
|
+
ok: false;
|
|
28
|
+
unavailableReason: string;
|
|
29
|
+
httpStatus?: number;
|
|
30
|
+
};
|
|
20
31
|
export declare function sortPreviewUrlResults(results: PreviewUrlResult[]): PreviewUrlResult[];
|
|
21
32
|
export declare function buildContentfulEntryUrl(spaceId: string, environment: string, entryId: string, options?: {
|
|
22
33
|
focusedField?: string;
|
|
23
34
|
}): string;
|
|
24
35
|
/**
|
|
25
36
|
* Fetches Contentful's in-app live preview URL (includes ephemeral preview token).
|
|
26
|
-
*
|
|
37
|
+
* Returns a structured result so callers can surface why Live Preview is missing.
|
|
27
38
|
*/
|
|
28
|
-
export declare function fetchContentfulLivePreviewUrl(spaceId: string, environment: string, entryId: string, managementToken: string): Promise<
|
|
39
|
+
export declare function fetchContentfulLivePreviewUrl(spaceId: string, environment: string, entryId: string, managementToken: string): Promise<LivePreviewFetchResult>;
|
|
29
40
|
export declare function buildPreviewUrls(input: BuildPreviewUrlsInput): PreviewUrlResult[];
|
|
30
41
|
export declare function buildAllPreviewUrls(input: BuildPreviewUrlsInput & {
|
|
31
42
|
managementToken?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-urls.d.ts","sourceRoot":"","sources":["../../src/preview/entry-urls.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"entry-urls.d.ts","sourceRoot":"","sources":["../../src/preview/entry-urls.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAWlE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAIrF;AAWD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAClC,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,sBAAsB,CAAC,CAyCjC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,gBAAgB,EAAE,CA4DjF;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,qBAAqB,GAAG;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmC7B"}
|
|
@@ -27,7 +27,7 @@ export function buildContentfulEntryUrl(spaceId, environment, entryId, options)
|
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* Fetches Contentful's in-app live preview URL (includes ephemeral preview token).
|
|
30
|
-
*
|
|
30
|
+
* Returns a structured result so callers can surface why Live Preview is missing.
|
|
31
31
|
*/
|
|
32
32
|
export async function fetchContentfulLivePreviewUrl(spaceId, environment, entryId, managementToken) {
|
|
33
33
|
const endpoint = `https://api.contentful.com/spaces/${spaceId}/environments/${environment}/entries/${entryId}/preview`;
|
|
@@ -35,14 +35,40 @@ export async function fetchContentfulLivePreviewUrl(spaceId, environment, entryI
|
|
|
35
35
|
const res = await fetch(endpoint, {
|
|
36
36
|
headers: { Authorization: `Bearer ${managementToken}` },
|
|
37
37
|
});
|
|
38
|
-
if (!res.ok)
|
|
39
|
-
|
|
38
|
+
if (!res.ok) {
|
|
39
|
+
let bodyHint = '';
|
|
40
|
+
try {
|
|
41
|
+
const text = await res.text();
|
|
42
|
+
bodyHint = text.slice(0, 200);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// ignore
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
ok: false,
|
|
49
|
+
httpStatus: res.status,
|
|
50
|
+
unavailableReason: `Contentful CMA entry preview returned HTTP ${String(res.status)}` +
|
|
51
|
+
(bodyHint ? ` (${bodyHint})` : '') +
|
|
52
|
+
'. Live Preview may be disabled for this space/entry, or the token may lack access.',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
40
55
|
const body = (await res.json());
|
|
41
56
|
const url = body.url ?? body.preview_url;
|
|
42
|
-
|
|
57
|
+
if (typeof url === 'string' && url.startsWith('http')) {
|
|
58
|
+
return { ok: true, url };
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
ok: false,
|
|
62
|
+
httpStatus: res.status,
|
|
63
|
+
unavailableReason: 'Contentful CMA entry preview returned no preview URL in the response body.',
|
|
64
|
+
};
|
|
43
65
|
}
|
|
44
|
-
catch {
|
|
45
|
-
|
|
66
|
+
catch (err) {
|
|
67
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
68
|
+
return {
|
|
69
|
+
ok: false,
|
|
70
|
+
unavailableReason: `Contentful Live Preview request failed: ${message}`,
|
|
71
|
+
};
|
|
46
72
|
}
|
|
47
73
|
}
|
|
48
74
|
export function buildPreviewUrls(input) {
|
|
@@ -55,7 +81,7 @@ export function buildPreviewUrls(input) {
|
|
|
55
81
|
label: 'Preview (staging site)',
|
|
56
82
|
url: stagingUrl,
|
|
57
83
|
showsDrafts: false,
|
|
58
|
-
notes: 'Full-page check on the staging deployment (includes Vercel bypass params when configured). Use alongside Live preview — publish from the Live preview link.',
|
|
84
|
+
notes: 'Full-page check on the staging deployment (includes Vercel bypass params when configured). Use alongside Live preview when available — publish from the Live preview link.',
|
|
59
85
|
});
|
|
60
86
|
}
|
|
61
87
|
if (input.devBaseUrl && input.entryId) {
|
|
@@ -90,7 +116,7 @@ export function buildPreviewUrls(input) {
|
|
|
90
116
|
focusedField: input.focusedField,
|
|
91
117
|
}),
|
|
92
118
|
showsDrafts: true,
|
|
93
|
-
notes: 'Classic entry editor. Prefer the Live preview link for reviewing drafts and publishing.',
|
|
119
|
+
notes: 'Classic entry editor. Prefer the Live preview link for reviewing drafts and publishing when available.',
|
|
94
120
|
});
|
|
95
121
|
}
|
|
96
122
|
return results;
|
|
@@ -98,16 +124,28 @@ export function buildPreviewUrls(input) {
|
|
|
98
124
|
export async function buildAllPreviewUrls(input) {
|
|
99
125
|
const results = buildPreviewUrls(input);
|
|
100
126
|
if (input.entryId && input.managementToken) {
|
|
101
|
-
const
|
|
102
|
-
if (
|
|
127
|
+
const live = await fetchContentfulLivePreviewUrl(input.spaceId, input.environment, input.entryId, input.managementToken);
|
|
128
|
+
if (live.ok) {
|
|
103
129
|
results.push({
|
|
104
130
|
target: 'contentfulLivePreview',
|
|
105
131
|
label: 'Live preview (publish here)',
|
|
106
|
-
url:
|
|
132
|
+
url: live.url,
|
|
107
133
|
showsDrafts: true,
|
|
108
134
|
notes: 'Opens Contentful in-app preview editor. Review the draft, then click the green Publish button at the top.',
|
|
109
135
|
});
|
|
110
136
|
}
|
|
137
|
+
else {
|
|
138
|
+
results.push({
|
|
139
|
+
target: 'contentfulLivePreview',
|
|
140
|
+
label: 'Live preview (publish here)',
|
|
141
|
+
url: null,
|
|
142
|
+
showsDrafts: true,
|
|
143
|
+
unavailableReason: live.unavailableReason,
|
|
144
|
+
httpStatus: live.httpStatus,
|
|
145
|
+
notes: `${live.unavailableReason} ` +
|
|
146
|
+
'Use staging + Contentful entry editor instead. Check Live Preview is enabled for this space and the OAuth token can call CMA entry preview.',
|
|
147
|
+
});
|
|
148
|
+
}
|
|
111
149
|
}
|
|
112
150
|
return sortPreviewUrlResults(results);
|
|
113
151
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-urls.js","sourceRoot":"","sources":["../../src/preview/entry-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"entry-urls.js","sourceRoot":"","sources":["../../src/preview/entry-urls.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,8 +31,9 @@
|
|
|
31
31
|
|
|
32
32
|
1. If the package includes a **folder of images/videos** (typical case study): run **`task-media-pipeline-prepare`** **before** building blocks.
|
|
33
33
|
2. Prefer pipeline **ready public URLs** + reuse-first import over mid-build staged upload of oversized masters.
|
|
34
|
-
3.
|
|
35
|
-
4.
|
|
34
|
+
3. On import: use **`onlyWithOverrides` or `sourceNames`** so only beat-sheet assets land in Contentful; **dryRun first**; use unique `fileName` overrides when you must not reuse prior lab assets.
|
|
35
|
+
4. Keep the `sourceName → assetId` / `mediaId` map for Phase 2 field linking. Singular component visuals: `set @cN visual <mediaId> --link` (never `add --target visual`).
|
|
36
|
+
5. Skip this phase only when every needed visual is already in the Contentful library (confirmed via `asset search`).
|
|
36
37
|
|
|
37
38
|
### Phase 2 — Plan and create
|
|
38
39
|
|