sf-plugin-cms 0.4.0 → 0.6.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/README.md +276 -20
- package/lib/commands/cms/export/workspace.d.ts +7 -1
- package/lib/commands/cms/export/workspace.js +113 -2
- package/lib/commands/cms/export/workspace.js.map +1 -1
- package/lib/commands/cms/import/workspace.d.ts +12 -4
- package/lib/commands/cms/import/workspace.js +167 -20
- package/lib/commands/cms/import/workspace.js.map +1 -1
- package/lib/commands/cms/info.js +21 -2
- package/lib/commands/cms/info.js.map +1 -1
- package/lib/contracts/info.d.ts +7 -4
- package/lib/contracts/info.js +17 -8
- package/lib/contracts/info.js.map +1 -1
- package/lib/contracts/shared.d.ts +2 -1
- package/lib/contracts/shared.js +11 -3
- package/lib/contracts/shared.js.map +1 -1
- package/lib/contracts/workspace-export.d.ts +41 -3
- package/lib/contracts/workspace-export.js +171 -5
- package/lib/contracts/workspace-export.js.map +1 -1
- package/lib/contracts/workspace-import.d.ts +65 -0
- package/lib/contracts/workspace-import.js +132 -1
- package/lib/contracts/workspace-import.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/services/cms-prerequisite-lookup.d.ts +16 -0
- package/lib/services/cms-prerequisite-lookup.js +89 -0
- package/lib/services/cms-prerequisite-lookup.js.map +1 -0
- package/lib/services/content-key.d.ts +9 -0
- package/lib/services/content-key.js +15 -0
- package/lib/services/content-key.js.map +1 -0
- package/lib/services/email-fragment.d.ts +15 -0
- package/lib/services/email-fragment.js +203 -0
- package/lib/services/email-fragment.js.map +1 -0
- package/lib/services/export-workspace.d.ts +15 -1
- package/lib/services/export-workspace.js +284 -51
- package/lib/services/export-workspace.js.map +1 -1
- package/lib/services/image-import.d.ts +91 -0
- package/lib/services/image-import.js +575 -0
- package/lib/services/image-import.js.map +1 -0
- package/lib/services/import-identities.js +5 -1
- package/lib/services/import-identities.js.map +1 -1
- package/lib/services/import-workspace.d.ts +63 -3
- package/lib/services/import-workspace.js +277 -26
- package/lib/services/import-workspace.js.map +1 -1
- package/lib/services/landing-page-pair-export.d.ts +31 -0
- package/lib/services/landing-page-pair-export.js +122 -0
- package/lib/services/landing-page-pair-export.js.map +1 -0
- package/lib/services/landing-page-template.d.ts +62 -0
- package/lib/services/landing-page-template.js +372 -0
- package/lib/services/landing-page-template.js.map +1 -0
- package/lib/services/landing-page.d.ts +87 -0
- package/lib/services/landing-page.js +355 -0
- package/lib/services/landing-page.js.map +1 -0
- package/lib/services/variant-identity.d.ts +14 -0
- package/lib/services/variant-identity.js +24 -0
- package/lib/services/variant-identity.js.map +1 -1
- package/lib/services/web-fragment.d.ts +47 -0
- package/lib/services/web-fragment.js +286 -0
- package/lib/services/web-fragment.js.map +1 -0
- package/lib/transport/experimental-media.d.ts +30 -0
- package/lib/transport/experimental-media.js +224 -0
- package/lib/transport/experimental-media.js.map +1 -0
- package/lib/transport/json-request.d.ts +9 -1
- package/lib/transport/json-request.js +30 -3
- package/lib/transport/json-request.js.map +1 -1
- package/lib/transport/multipart-image-create.d.ts +28 -0
- package/lib/transport/multipart-image-create.js +189 -0
- package/lib/transport/multipart-image-create.js.map +1 -0
- package/messages/cms.export.workspace.md +20 -0
- package/messages/cms.import.workspace.md +12 -2
- package/package.json +1 -1
|
@@ -5,8 +5,10 @@ export type { WorkspaceExportManifest } from '../contracts/workspace-export.js';
|
|
|
5
5
|
import { type JsonRequestOptions } from '../transport/json-request.js';
|
|
6
6
|
import { type CleanupOptions, type DirectoryPublishOptions } from './atomic-publish.js';
|
|
7
7
|
import { type EditablePublishOptions } from './editable-raw-html-export.js';
|
|
8
|
+
import { type ExperimentalMediaDownloadOptions } from '../transport/experimental-media.js';
|
|
9
|
+
import { type LandingPagePairSelector } from './landing-page-pair-export.js';
|
|
8
10
|
export type WorkspaceExportWarning = {
|
|
9
|
-
code: 'COUNT_MISMATCH' | 'DETAIL_FAILED' | 'DUPLICATE_VARIANTS' | 'OWNERSHIP_MISMATCH' | 'PREMATURE_EMPTY_PAGE' | 'REFERENCE_UNRESOLVED' | 'REFERENCE_UNSUPPORTED' | 'UNSUPPORTED_WILDCARD';
|
|
11
|
+
code: 'COUNT_MISMATCH' | 'DETAIL_FAILED' | 'DUPLICATE_VARIANTS' | 'OWNERSHIP_MISMATCH' | 'PREMATURE_EMPTY_PAGE' | 'MEDIA_EXPORT_FAILED' | 'REFERENCE_UNRESOLVED' | 'REFERENCE_UNSUPPORTED' | 'UNSUPPORTED_WILDCARD';
|
|
10
12
|
message: string;
|
|
11
13
|
variantIds?: string[];
|
|
12
14
|
};
|
|
@@ -25,9 +27,21 @@ export type ExportWorkspaceOptions = JsonRequestOptions & {
|
|
|
25
27
|
generatedAt?: string;
|
|
26
28
|
editableDirectory?: string;
|
|
27
29
|
editablePublish?: EditablePublishOptions;
|
|
30
|
+
selection?: {
|
|
31
|
+
readonly contentType: string;
|
|
32
|
+
readonly apiNames: readonly string[];
|
|
33
|
+
};
|
|
34
|
+
landingPagePairs?: readonly LandingPagePairSelector[];
|
|
28
35
|
atomicPublish?: DirectoryPublishOptions & CleanupOptions & {
|
|
29
36
|
readonly makeTemporaryDirectory?: typeof mkdtemp;
|
|
30
37
|
};
|
|
38
|
+
experimentalMedia?: {
|
|
39
|
+
readonly accessToken: string;
|
|
40
|
+
readonly instanceUrl: string;
|
|
41
|
+
readonly fetch?: ExperimentalMediaDownloadOptions['fetch'];
|
|
42
|
+
readonly perImageBytes?: number;
|
|
43
|
+
readonly totalBytes?: number;
|
|
44
|
+
};
|
|
31
45
|
};
|
|
32
46
|
type RequestConnection = Pick<Connection, 'request'>;
|
|
33
47
|
export declare function safeWorkspaceDirectoryName(workspaceName: string): string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
|
-
import { lstat, mkdir, mkdtemp, open, readdir, readFile, stat } from 'node:fs/promises';
|
|
2
|
+
import { lstat, mkdir, mkdtemp, open, readdir, readFile, stat, unlink } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { assertWorkspaceExportManifest, WORKSPACE_EXPORT_MANIFEST_CONTRACT, } from '../contracts/workspace-export.js';
|
|
5
5
|
import { getSelectedOperation, requestJson, } from '../transport/json-request.js';
|
|
@@ -8,8 +8,21 @@ import { cleanupOwnedPath, publishDirectoryNoClobber, } from './atomic-publish.j
|
|
|
8
8
|
import { inventoryExportReferences } from './export-references.js';
|
|
9
9
|
import { preflightEditableExport, writeEditableRawHtml, } from './editable-raw-html-export.js';
|
|
10
10
|
import { getVariant } from './read.js';
|
|
11
|
+
import { downloadExperimentalCmsMedia, EXPERIMENTAL_MEDIA_POLICY, } from '../transport/experimental-media.js';
|
|
12
|
+
import { bindLandingPageTemplatePairs, LANDING_PAGE_TEMPLATE_TYPE, LANDING_PAGE_TYPE, } from './landing-page-pair-export.js';
|
|
11
13
|
const PAGE_SIZE = 250;
|
|
12
14
|
const ABSOLUTE_PAGE_CAP = 1000;
|
|
15
|
+
const INVENTORY_EXACT_API_NAME_TYPES = new Set([
|
|
16
|
+
'sfdc_cms__emailFragment',
|
|
17
|
+
'sfdc_cms__webFragment',
|
|
18
|
+
]);
|
|
19
|
+
function mediaByteCap(value, maximum, label) {
|
|
20
|
+
const configured = value ?? maximum;
|
|
21
|
+
if (!Number.isSafeInteger(configured) || configured <= 0) {
|
|
22
|
+
throw new TypeError(`${label} must be a positive safe integer`);
|
|
23
|
+
}
|
|
24
|
+
return Math.min(configured, maximum);
|
|
25
|
+
}
|
|
13
26
|
function isRecord(value) {
|
|
14
27
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
15
28
|
}
|
|
@@ -84,6 +97,59 @@ async function exists(path) {
|
|
|
84
97
|
throw error;
|
|
85
98
|
}
|
|
86
99
|
}
|
|
100
|
+
function mediaValue(record) {
|
|
101
|
+
const body = record.contentBody;
|
|
102
|
+
if (!isRecord(body))
|
|
103
|
+
return undefined;
|
|
104
|
+
const media = body['sfdc_cms:media'];
|
|
105
|
+
return isRecord(media) ? media : undefined;
|
|
106
|
+
}
|
|
107
|
+
function imageEvidence(record) {
|
|
108
|
+
const contentType = isRecord(record.contentType)
|
|
109
|
+
? record.contentType.fullyQualifiedName
|
|
110
|
+
: record.contentType;
|
|
111
|
+
if (contentType !== 'sfdc_cms__image')
|
|
112
|
+
return undefined;
|
|
113
|
+
const media = mediaValue(record);
|
|
114
|
+
const source = isRecord(media?.source) ? media.source : undefined;
|
|
115
|
+
const status = isRecord(record.status) ? record.status.status : undefined;
|
|
116
|
+
const url = media?.url;
|
|
117
|
+
if (!nonemptyString(record.contentKey) ||
|
|
118
|
+
!nonemptyString(source?.mimeType) ||
|
|
119
|
+
typeof source.size !== 'number' ||
|
|
120
|
+
!Number.isSafeInteger(source.size) ||
|
|
121
|
+
source.size < 0 ||
|
|
122
|
+
!nonemptyString(status) ||
|
|
123
|
+
!nonemptyString(record.lastModifiedDate) ||
|
|
124
|
+
!nonemptyString(url)) {
|
|
125
|
+
throw new TypeError('Experimental image authoring metadata is incomplete');
|
|
126
|
+
}
|
|
127
|
+
const parsed = new URL(url, 'https://invalid.example');
|
|
128
|
+
const fileName = parsed.searchParams.get('fileName');
|
|
129
|
+
const md5 = parsed.searchParams.get('fileHash');
|
|
130
|
+
const version = parsed.searchParams.get('version');
|
|
131
|
+
if (!/^\/cms\/media\/[^/]+$/u.test(parsed.pathname) ||
|
|
132
|
+
[...parsed.searchParams.keys()].toSorted().join(',') !== 'fileHash,fileName,version' ||
|
|
133
|
+
!nonemptyString(fileName) ||
|
|
134
|
+
fileName.includes('/') ||
|
|
135
|
+
fileName.includes('\\') ||
|
|
136
|
+
typeof md5 !== 'string' ||
|
|
137
|
+
!/^[a-f\d]{32}$/iu.test(md5) ||
|
|
138
|
+
!nonemptyString(version)) {
|
|
139
|
+
throw new TypeError('Experimental image authoring URL binding is unsupported');
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
contentKey: record.contentKey,
|
|
143
|
+
fileName,
|
|
144
|
+
md5: md5.toLowerCase(),
|
|
145
|
+
mimeType: source.mimeType,
|
|
146
|
+
modifiedAt: record.lastModifiedDate,
|
|
147
|
+
size: source.size,
|
|
148
|
+
status,
|
|
149
|
+
url,
|
|
150
|
+
version,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
87
153
|
async function writeExclusive(path, value) {
|
|
88
154
|
const handle = await open(path, 'wx');
|
|
89
155
|
try {
|
|
@@ -126,11 +192,36 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
|
|
|
126
192
|
throw new TypeError('workspaceId must be a nonempty string');
|
|
127
193
|
if (!nonemptyString(destination))
|
|
128
194
|
throw new TypeError('destination must be a nonempty string');
|
|
195
|
+
const mediaCaps = options.experimentalMedia === undefined
|
|
196
|
+
? undefined
|
|
197
|
+
: {
|
|
198
|
+
perImageBytes: mediaByteCap(options.experimentalMedia.perImageBytes, EXPERIMENTAL_MEDIA_POLICY.perImageBytes, 'Experimental media per-image byte cap'),
|
|
199
|
+
totalBytes: mediaByteCap(options.experimentalMedia.totalBytes, EXPERIMENTAL_MEDIA_POLICY.totalBytes, 'Experimental media total byte cap'),
|
|
200
|
+
};
|
|
129
201
|
if (options.editableDirectory !== undefined) {
|
|
130
202
|
await preflightEditableExport(destination, options.editableDirectory);
|
|
131
203
|
}
|
|
132
204
|
if (await exists(destination))
|
|
133
205
|
throw new Error(`Export destination already exists: ${destination}`);
|
|
206
|
+
const selection = options.selection;
|
|
207
|
+
if (selection !== undefined && options.landingPagePairs !== undefined) {
|
|
208
|
+
throw new TypeError('Component export selection modes are mutually exclusive');
|
|
209
|
+
}
|
|
210
|
+
if (options.landingPagePairs !== undefined && options.landingPagePairs.length === 0) {
|
|
211
|
+
throw new TypeError('Landing-page pair selection requires one or more pairs');
|
|
212
|
+
}
|
|
213
|
+
if (selection !== undefined) {
|
|
214
|
+
if (!nonemptyString(selection.contentType) || !Array.isArray(selection.apiNames)) {
|
|
215
|
+
throw new TypeError('Component export selection is malformed');
|
|
216
|
+
}
|
|
217
|
+
if (selection.apiNames.length === 0 ||
|
|
218
|
+
selection.apiNames.some((value) => !nonemptyString(value))) {
|
|
219
|
+
throw new TypeError('Component export selection requires one or more exact API names');
|
|
220
|
+
}
|
|
221
|
+
if (new Set(selection.apiNames).size !== selection.apiNames.length) {
|
|
222
|
+
throw new TypeError('Component export API names must be unique');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
134
225
|
const warnings = [
|
|
135
226
|
{
|
|
136
227
|
code: 'UNSUPPORTED_WILDCARD',
|
|
@@ -143,56 +234,75 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
|
|
|
143
234
|
const candidates = new Map();
|
|
144
235
|
let expectedCount = 0;
|
|
145
236
|
let pagesRequested = 0;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
237
|
+
const pairSelection = options.landingPagePairs;
|
|
238
|
+
const inventoryExactApiNames = selection !== undefined && INVENTORY_EXACT_API_NAME_TYPES.has(selection.contentType);
|
|
239
|
+
let inventoryExceedsPageCapacity = false;
|
|
240
|
+
const searchTypes = pairSelection === undefined
|
|
241
|
+
? [selection?.contentType]
|
|
242
|
+
: [LANDING_PAGE_TYPE, LANDING_PAGE_TEMPLATE_TYPE];
|
|
243
|
+
for (const searchType of searchTypes) {
|
|
244
|
+
let searchExpectedCount = 0;
|
|
245
|
+
let page = 0;
|
|
246
|
+
let pageLimit = 1;
|
|
247
|
+
let searchCandidateCount = 0;
|
|
248
|
+
while (page < pageLimit) {
|
|
249
|
+
const response = await requestJson(connection, getSelectedOperation('workspace.variant.search'), {
|
|
250
|
+
query: {
|
|
251
|
+
contentSpaceOrFolderIds: [workspaceId],
|
|
252
|
+
...(searchType === undefined ? {} : { contentTypeFQN: searchType }),
|
|
253
|
+
languages: ['All'],
|
|
254
|
+
page,
|
|
255
|
+
pageSize: PAGE_SIZE,
|
|
256
|
+
queryTerm: pairSelection !== undefined || selection === undefined || inventoryExactApiNames
|
|
257
|
+
? '*'
|
|
258
|
+
: selection.apiNames.join(' '),
|
|
259
|
+
},
|
|
260
|
+
}, options);
|
|
261
|
+
pagesRequested += 1;
|
|
262
|
+
const items = responseItems(response.data);
|
|
263
|
+
if (page === 0) {
|
|
264
|
+
searchExpectedCount = responseCount(response.data);
|
|
265
|
+
expectedCount += searchExpectedCount;
|
|
266
|
+
inventoryExceedsPageCapacity ||= searchExpectedCount > ABSOLUTE_PAGE_CAP * PAGE_SIZE;
|
|
267
|
+
pageLimit = Math.min(ABSOLUTE_PAGE_CAP, Math.max(1, Math.ceil(searchExpectedCount / PAGE_SIZE) + 2));
|
|
173
268
|
}
|
|
174
|
-
|
|
175
|
-
|
|
269
|
+
let additions = 0;
|
|
270
|
+
for (const item of items) {
|
|
271
|
+
const row = searchRow(item);
|
|
272
|
+
if (!row)
|
|
273
|
+
continue;
|
|
274
|
+
if (row.managedContentSpaceId !== workspaceId) {
|
|
275
|
+
rejected.add(row.id);
|
|
276
|
+
ownershipMismatchIds.add(row.id);
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
if (candidates.has(row.id)) {
|
|
280
|
+
duplicateIds.add(row.id);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
candidates.set(row.id, row);
|
|
284
|
+
searchCandidateCount += 1;
|
|
285
|
+
additions += 1;
|
|
286
|
+
}
|
|
176
287
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
288
|
+
if (searchCandidateCount >= searchExpectedCount)
|
|
289
|
+
break;
|
|
290
|
+
if (items.length === 0) {
|
|
291
|
+
if (searchCandidateCount < searchExpectedCount) {
|
|
292
|
+
warnings.push({
|
|
293
|
+
code: 'PREMATURE_EMPTY_PAGE',
|
|
294
|
+
message: `Search returned an empty page before the advertised count was satisfied.`,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
break;
|
|
180
298
|
}
|
|
299
|
+
if (additions === 0)
|
|
300
|
+
break;
|
|
301
|
+
page += 1;
|
|
181
302
|
}
|
|
182
|
-
if (
|
|
183
|
-
|
|
184
|
-
if (items.length === 0) {
|
|
185
|
-
if (candidates.size < expectedCount) {
|
|
186
|
-
warnings.push({
|
|
187
|
-
code: 'PREMATURE_EMPTY_PAGE',
|
|
188
|
-
message: `Search returned an empty page before the advertised count was satisfied.`,
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
break;
|
|
303
|
+
if (pairSelection !== undefined && searchCandidateCount !== searchExpectedCount) {
|
|
304
|
+
throw new TypeError(`Landing-page pair export requires a complete ${searchType} inventory for the requested workspace.`);
|
|
192
305
|
}
|
|
193
|
-
if (additions === 0)
|
|
194
|
-
break;
|
|
195
|
-
page += 1;
|
|
196
306
|
}
|
|
197
307
|
if (duplicateIds.size > 0) {
|
|
198
308
|
warnings.push({
|
|
@@ -236,6 +346,53 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
|
|
|
236
346
|
variantIds: [...ownershipMismatchIds].toSorted(),
|
|
237
347
|
});
|
|
238
348
|
}
|
|
349
|
+
if (inventoryExactApiNames && selection !== undefined) {
|
|
350
|
+
const validInventoryDetails = [...details.values()].filter((detail) => {
|
|
351
|
+
const contentType = isRecord(detail.contentType)
|
|
352
|
+
? detail.contentType.fullyQualifiedName
|
|
353
|
+
: detail.contentType;
|
|
354
|
+
return contentType === selection.contentType && nonemptyString(detail.apiName);
|
|
355
|
+
});
|
|
356
|
+
if (inventoryExceedsPageCapacity ||
|
|
357
|
+
candidates.size !== expectedCount ||
|
|
358
|
+
ownershipMismatchIds.size > 0 ||
|
|
359
|
+
failedIds.length > 0 ||
|
|
360
|
+
validInventoryDetails.length !== expectedCount) {
|
|
361
|
+
throw new TypeError(`Exact component API names require a complete ${selection.contentType} inventory for the requested workspace.`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
const landingPageTemplatePairs = pairSelection === undefined ? undefined : bindLandingPageTemplatePairs(pairSelection, details);
|
|
365
|
+
if (landingPageTemplatePairs !== undefined) {
|
|
366
|
+
const selectedIds = new Set(landingPageTemplatePairs.flatMap(({ page, template }) => [
|
|
367
|
+
page.variantId,
|
|
368
|
+
template.variantId,
|
|
369
|
+
]));
|
|
370
|
+
for (const variantId of details.keys()) {
|
|
371
|
+
if (!selectedIds.has(variantId))
|
|
372
|
+
details.delete(variantId);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
if (selection !== undefined) {
|
|
376
|
+
const selected = new Map(selection.apiNames.map((apiName) => [apiName, []]));
|
|
377
|
+
for (const [variantId, detail] of details) {
|
|
378
|
+
const contentType = isRecord(detail.contentType)
|
|
379
|
+
? detail.contentType.fullyQualifiedName
|
|
380
|
+
: detail.contentType;
|
|
381
|
+
if (contentType !== selection.contentType || !nonemptyString(detail.apiName))
|
|
382
|
+
continue;
|
|
383
|
+
selected.get(detail.apiName)?.push(variantId);
|
|
384
|
+
}
|
|
385
|
+
for (const [apiName, matches] of selected) {
|
|
386
|
+
if (matches.length !== 1) {
|
|
387
|
+
throw new TypeError(`Exact component API name must resolve once for ${selection.contentType}: ${apiName}`);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
const selectedIds = new Set([...selected.values()].flat());
|
|
391
|
+
for (const variantId of details.keys()) {
|
|
392
|
+
if (!selectedIds.has(variantId))
|
|
393
|
+
details.delete(variantId);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
239
396
|
const entries = [...details.keys()].toSorted().map((variantId) => ({
|
|
240
397
|
file: `items/${variantId}.json`,
|
|
241
398
|
variantId,
|
|
@@ -256,8 +413,13 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
|
|
|
256
413
|
...(referenceId === undefined ? {} : { referenceId }),
|
|
257
414
|
};
|
|
258
415
|
});
|
|
416
|
+
const mediaCandidates = [...details.entries()].flatMap(([variantId, detail]) => {
|
|
417
|
+
const evidence = imageEvidence(detail);
|
|
418
|
+
return evidence === undefined ? [] : [{ variantId, evidence }];
|
|
419
|
+
});
|
|
420
|
+
const selectedExpectedCount = selection === undefined ? expectedCount : selection.apiNames.length;
|
|
259
421
|
const manifest = {
|
|
260
|
-
schemaVersion: 1,
|
|
422
|
+
schemaVersion: mediaCandidates.length > 0 ? 2 : 1,
|
|
261
423
|
mode: 'experimental-best-effort',
|
|
262
424
|
workspaceId,
|
|
263
425
|
search: {
|
|
@@ -266,8 +428,8 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
|
|
|
266
428
|
pageSize: PAGE_SIZE,
|
|
267
429
|
queryTerm: '*',
|
|
268
430
|
},
|
|
269
|
-
expectedCount,
|
|
270
|
-
foundCount: candidates.size,
|
|
431
|
+
expectedCount: landingPageTemplatePairs === undefined ? selectedExpectedCount : details.size,
|
|
432
|
+
foundCount: selection === undefined ? candidates.size : details.size,
|
|
271
433
|
exportedCount: entries.length,
|
|
272
434
|
pagesRequested,
|
|
273
435
|
entries,
|
|
@@ -275,7 +437,8 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
|
|
|
275
437
|
failedVariantIds: failedIds.toSorted(),
|
|
276
438
|
warnings,
|
|
277
439
|
contract: WORKSPACE_EXPORT_MANIFEST_CONTRACT,
|
|
278
|
-
contractVersion: '1.0.0',
|
|
440
|
+
contractVersion: mediaCandidates.length > 0 ? '2.0.0' : '1.0.0',
|
|
441
|
+
...(mediaCandidates.length === 0 ? {} : { media: [] }),
|
|
279
442
|
provenance: {
|
|
280
443
|
producer: 'sf-plugin-cms',
|
|
281
444
|
sourceOrgId: options.sourceOrgId ?? 'unknown-org',
|
|
@@ -285,10 +448,18 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
|
|
|
285
448
|
},
|
|
286
449
|
completeness,
|
|
287
450
|
dependencies: referenceInventory.dependencies,
|
|
451
|
+
...(landingPageTemplatePairs === undefined ? {} : { landingPageTemplatePairs }),
|
|
288
452
|
externalReferences: referenceInventory.externalReferences,
|
|
289
453
|
items: manifestItems,
|
|
290
454
|
};
|
|
291
|
-
|
|
455
|
+
if (mediaCandidates.length > 0 && options.experimentalMedia === undefined) {
|
|
456
|
+
warnings.push({
|
|
457
|
+
code: 'MEDIA_EXPORT_FAILED',
|
|
458
|
+
message: 'Image candidate JSON was exported without media binaries because --experimental-media was not enabled.',
|
|
459
|
+
variantIds: mediaCandidates.map(({ variantId }) => variantId),
|
|
460
|
+
});
|
|
461
|
+
manifest.completeness = 'partial';
|
|
462
|
+
}
|
|
292
463
|
if (options.editableDirectory !== undefined) {
|
|
293
464
|
await preflightEditableExport(destination, options.editableDirectory);
|
|
294
465
|
}
|
|
@@ -300,6 +471,68 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
|
|
|
300
471
|
for (const entry of entries) {
|
|
301
472
|
await writeExclusive(path.join(temporary, entry.file), details.get(entry.variantId));
|
|
302
473
|
}
|
|
474
|
+
if (mediaCandidates.length > 0 && options.experimentalMedia !== undefined) {
|
|
475
|
+
await mkdir(path.join(temporary, 'media'));
|
|
476
|
+
let totalBytes = 0;
|
|
477
|
+
for (const { variantId, evidence } of mediaCandidates) {
|
|
478
|
+
const mediaPath = `media/${variantId}-${evidence.fileName}`;
|
|
479
|
+
try {
|
|
480
|
+
const remainingTotal = mediaCaps.totalBytes - totalBytes;
|
|
481
|
+
if (!Number.isSafeInteger(remainingTotal) || remainingTotal <= 0) {
|
|
482
|
+
throw new TypeError('Experimental media total byte cap is exhausted');
|
|
483
|
+
}
|
|
484
|
+
const downloaded = await downloadExperimentalCmsMedia(new URL(evidence.url, options.experimentalMedia.instanceUrl), {
|
|
485
|
+
accessToken: options.experimentalMedia.accessToken,
|
|
486
|
+
expectedMd5: evidence.md5,
|
|
487
|
+
expectedMimeType: evidence.mimeType,
|
|
488
|
+
expectedSize: evidence.size,
|
|
489
|
+
fetch: options.experimentalMedia.fetch,
|
|
490
|
+
instanceUrl: options.experimentalMedia.instanceUrl,
|
|
491
|
+
maxBytes: Math.min(mediaCaps.perImageBytes, remainingTotal),
|
|
492
|
+
outputFile: path.join(temporary, mediaPath),
|
|
493
|
+
});
|
|
494
|
+
if (downloaded.bytes > mediaCaps.totalBytes - totalBytes) {
|
|
495
|
+
throw new TypeError('Experimental media total byte accounting exceeded the cap');
|
|
496
|
+
}
|
|
497
|
+
totalBytes += downloaded.bytes;
|
|
498
|
+
const current = imageEvidence(await getVariant(connection, variantId, options));
|
|
499
|
+
if (current === undefined || JSON.stringify(current) !== JSON.stringify(evidence)) {
|
|
500
|
+
throw new TypeError('Experimental image authoring metadata changed during export');
|
|
501
|
+
}
|
|
502
|
+
manifest.media.push({
|
|
503
|
+
variantId,
|
|
504
|
+
contentKey: evidence.contentKey,
|
|
505
|
+
path: mediaPath,
|
|
506
|
+
sha256: downloaded.sha256,
|
|
507
|
+
md5: downloaded.md5,
|
|
508
|
+
bytes: downloaded.bytes,
|
|
509
|
+
mimeType: downloaded.mimeType,
|
|
510
|
+
fileName: evidence.fileName,
|
|
511
|
+
sourceStatus: evidence.status,
|
|
512
|
+
sourceModifiedAt: evidence.modifiedAt,
|
|
513
|
+
sourceVersion: evidence.version,
|
|
514
|
+
sourceUrl: evidence.url,
|
|
515
|
+
transport: 'experimental-undocumented-authoring-media',
|
|
516
|
+
});
|
|
517
|
+
manifest.items.push({
|
|
518
|
+
path: mediaPath,
|
|
519
|
+
sha256: downloaded.sha256,
|
|
520
|
+
kind: 'cms.media',
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
catch (error) {
|
|
524
|
+
await unlink(path.join(temporary, mediaPath)).catch(() => { });
|
|
525
|
+
warnings.push({
|
|
526
|
+
code: 'MEDIA_EXPORT_FAILED',
|
|
527
|
+
message: `Experimental image export failed for ${variantId}: ${error instanceof Error ? error.message : String(error)}`,
|
|
528
|
+
variantIds: [variantId],
|
|
529
|
+
});
|
|
530
|
+
manifest.completeness = 'partial';
|
|
531
|
+
break;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
assertWorkspaceExportManifest(manifest);
|
|
303
536
|
await assertRegularPackageFiles(temporary, new Set(manifest.items.map(({ path }) => path)));
|
|
304
537
|
await writeExclusive(path.join(temporary, 'manifest.json'), manifest);
|
|
305
538
|
await publishDirectoryNoClobber(temporary, destination, options.atomicPublish);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-workspace.js","sourceRoot":"","sources":["../../src/services/export-workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"export-workspace.js","sourceRoot":"","sources":["../../src/services/export-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { Connection } from '@salesforce/core';
|
|
2
|
+
import type { WorkspaceExportMedia } from '../contracts/workspace-export.js';
|
|
3
|
+
import { type ComponentStableIdentity, type ImageImportFieldPlan, type ImageImportIdentityField, type ImageImportStrategy, type WorkspaceImageImportResultV2 } from '../contracts/workspace-import.js';
|
|
4
|
+
import { type JsonRequestOptions } from '../transport/json-request.js';
|
|
5
|
+
import { type LoadedWorkspaceExport, type WorkspaceImportItem } from './import-workspace.js';
|
|
6
|
+
import { type MultipartImageCreateOptions } from '../transport/multipart-image-create.js';
|
|
7
|
+
export type ImageImportMapField = {
|
|
8
|
+
readonly strategy: ImageImportStrategy;
|
|
9
|
+
readonly value?: string;
|
|
10
|
+
};
|
|
11
|
+
export type ImageImportMapRow = {
|
|
12
|
+
readonly source: ComponentStableIdentity;
|
|
13
|
+
readonly contentKey: ImageImportMapField;
|
|
14
|
+
readonly apiName: ImageImportMapField;
|
|
15
|
+
readonly title: ImageImportMapField;
|
|
16
|
+
readonly urlName: ImageImportMapField;
|
|
17
|
+
};
|
|
18
|
+
export type PlannedImageImport = {
|
|
19
|
+
readonly source: WorkspaceImportItem;
|
|
20
|
+
readonly media: WorkspaceExportMedia;
|
|
21
|
+
readonly identities: Record<ImageImportIdentityField, ImageImportFieldPlan>;
|
|
22
|
+
};
|
|
23
|
+
type RequestConnection = Pick<Connection, 'request'>;
|
|
24
|
+
export type ImageImportPreflightOptions = {
|
|
25
|
+
readonly connection: RequestConnection;
|
|
26
|
+
readonly destinationOrgId: string;
|
|
27
|
+
readonly destinationWorkspaceId: string;
|
|
28
|
+
readonly plans: readonly PlannedImageImport[];
|
|
29
|
+
readonly requestOptions?: JsonRequestOptions;
|
|
30
|
+
readonly source: LoadedWorkspaceExport;
|
|
31
|
+
};
|
|
32
|
+
export type ImageImportPreflightResult = {
|
|
33
|
+
readonly contractResult: WorkspaceImageImportResultV2;
|
|
34
|
+
readonly dryRun: true;
|
|
35
|
+
readonly plans: readonly PlannedImageImport[];
|
|
36
|
+
};
|
|
37
|
+
export type ImageImportOperation = {
|
|
38
|
+
readonly operationId: string;
|
|
39
|
+
readonly requestIdentity: string;
|
|
40
|
+
readonly requestSha256: string;
|
|
41
|
+
readonly sourceApiName: string;
|
|
42
|
+
readonly destinationApiName: string;
|
|
43
|
+
readonly destinationOrgId: string;
|
|
44
|
+
readonly destinationWorkspaceId: string;
|
|
45
|
+
readonly runId: string;
|
|
46
|
+
state: 'pending' | 'succeeded' | 'failed';
|
|
47
|
+
error?: string;
|
|
48
|
+
result?: {
|
|
49
|
+
readonly contentKey: string;
|
|
50
|
+
readonly contentId: string;
|
|
51
|
+
readonly variantId: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
export type ImageImportRunReport = {
|
|
55
|
+
readonly runId: string;
|
|
56
|
+
readonly sourceDirectory: string;
|
|
57
|
+
readonly sourceManifestSha256: string;
|
|
58
|
+
readonly destinationOrgId: string;
|
|
59
|
+
readonly destinationWorkspaceId: string;
|
|
60
|
+
readonly operations: ImageImportOperation[];
|
|
61
|
+
state: 'applying' | 'completed' | 'failed' | 'ownership-uncertain';
|
|
62
|
+
};
|
|
63
|
+
export type ImageImportReportPersistence = {
|
|
64
|
+
readonly rewrite: (file: string, report: ImageImportRunReport) => Promise<void>;
|
|
65
|
+
};
|
|
66
|
+
export type ImageImportApplyOptions = ImageImportPreflightOptions & {
|
|
67
|
+
readonly reportDirectory: string;
|
|
68
|
+
readonly reportPersistence?: ImageImportReportPersistence;
|
|
69
|
+
readonly createOptions?: MultipartImageCreateOptions;
|
|
70
|
+
};
|
|
71
|
+
export type ImageImportApplyResult = {
|
|
72
|
+
readonly contractResult: WorkspaceImageImportResultV2;
|
|
73
|
+
readonly dryRun: false;
|
|
74
|
+
readonly report: ImageImportRunReport;
|
|
75
|
+
readonly reportFile: string;
|
|
76
|
+
};
|
|
77
|
+
export declare function normalizeImageMultipartFilename(fileName: string, mimeType: string): string;
|
|
78
|
+
export declare function planImageImports(source: LoadedWorkspaceExport, input: unknown): PlannedImageImport[];
|
|
79
|
+
/**
|
|
80
|
+
* Validate every planned image against exact destination scope without mutation.
|
|
81
|
+
* @param {ImageImportPreflightOptions} options - Verified source, plans, destination, and transport.
|
|
82
|
+
* @returns {Promise<ImageImportPreflightResult>} Dry-run evidence after every row passes.
|
|
83
|
+
*/
|
|
84
|
+
export declare function preflightImageImports(options: ImageImportPreflightOptions): Promise<ImageImportPreflightResult>;
|
|
85
|
+
/**
|
|
86
|
+
* Apply verified image plans sequentially with durable mutation evidence.
|
|
87
|
+
* @param {ImageImportApplyOptions} options - Verified source, destination, plans, and report path.
|
|
88
|
+
* @returns {Promise<ImageImportApplyResult>} Completed v2 evidence and durable report.
|
|
89
|
+
*/
|
|
90
|
+
export declare function applyImageImports(options: ImageImportApplyOptions): Promise<ImageImportApplyResult>;
|
|
91
|
+
export {};
|