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.
Files changed (71) hide show
  1. package/README.md +276 -20
  2. package/lib/commands/cms/export/workspace.d.ts +7 -1
  3. package/lib/commands/cms/export/workspace.js +113 -2
  4. package/lib/commands/cms/export/workspace.js.map +1 -1
  5. package/lib/commands/cms/import/workspace.d.ts +12 -4
  6. package/lib/commands/cms/import/workspace.js +167 -20
  7. package/lib/commands/cms/import/workspace.js.map +1 -1
  8. package/lib/commands/cms/info.js +21 -2
  9. package/lib/commands/cms/info.js.map +1 -1
  10. package/lib/contracts/info.d.ts +7 -4
  11. package/lib/contracts/info.js +17 -8
  12. package/lib/contracts/info.js.map +1 -1
  13. package/lib/contracts/shared.d.ts +2 -1
  14. package/lib/contracts/shared.js +11 -3
  15. package/lib/contracts/shared.js.map +1 -1
  16. package/lib/contracts/workspace-export.d.ts +41 -3
  17. package/lib/contracts/workspace-export.js +171 -5
  18. package/lib/contracts/workspace-export.js.map +1 -1
  19. package/lib/contracts/workspace-import.d.ts +65 -0
  20. package/lib/contracts/workspace-import.js +132 -1
  21. package/lib/contracts/workspace-import.js.map +1 -1
  22. package/lib/index.d.ts +3 -1
  23. package/lib/index.js +2 -0
  24. package/lib/index.js.map +1 -1
  25. package/lib/services/cms-prerequisite-lookup.d.ts +16 -0
  26. package/lib/services/cms-prerequisite-lookup.js +89 -0
  27. package/lib/services/cms-prerequisite-lookup.js.map +1 -0
  28. package/lib/services/content-key.d.ts +9 -0
  29. package/lib/services/content-key.js +15 -0
  30. package/lib/services/content-key.js.map +1 -0
  31. package/lib/services/email-fragment.d.ts +15 -0
  32. package/lib/services/email-fragment.js +203 -0
  33. package/lib/services/email-fragment.js.map +1 -0
  34. package/lib/services/export-workspace.d.ts +15 -1
  35. package/lib/services/export-workspace.js +284 -51
  36. package/lib/services/export-workspace.js.map +1 -1
  37. package/lib/services/image-import.d.ts +91 -0
  38. package/lib/services/image-import.js +575 -0
  39. package/lib/services/image-import.js.map +1 -0
  40. package/lib/services/import-identities.js +5 -1
  41. package/lib/services/import-identities.js.map +1 -1
  42. package/lib/services/import-workspace.d.ts +63 -3
  43. package/lib/services/import-workspace.js +277 -26
  44. package/lib/services/import-workspace.js.map +1 -1
  45. package/lib/services/landing-page-pair-export.d.ts +31 -0
  46. package/lib/services/landing-page-pair-export.js +122 -0
  47. package/lib/services/landing-page-pair-export.js.map +1 -0
  48. package/lib/services/landing-page-template.d.ts +62 -0
  49. package/lib/services/landing-page-template.js +372 -0
  50. package/lib/services/landing-page-template.js.map +1 -0
  51. package/lib/services/landing-page.d.ts +87 -0
  52. package/lib/services/landing-page.js +355 -0
  53. package/lib/services/landing-page.js.map +1 -0
  54. package/lib/services/variant-identity.d.ts +14 -0
  55. package/lib/services/variant-identity.js +24 -0
  56. package/lib/services/variant-identity.js.map +1 -1
  57. package/lib/services/web-fragment.d.ts +47 -0
  58. package/lib/services/web-fragment.js +286 -0
  59. package/lib/services/web-fragment.js.map +1 -0
  60. package/lib/transport/experimental-media.d.ts +30 -0
  61. package/lib/transport/experimental-media.js +224 -0
  62. package/lib/transport/experimental-media.js.map +1 -0
  63. package/lib/transport/json-request.d.ts +9 -1
  64. package/lib/transport/json-request.js +30 -3
  65. package/lib/transport/json-request.js.map +1 -1
  66. package/lib/transport/multipart-image-create.d.ts +28 -0
  67. package/lib/transport/multipart-image-create.js +189 -0
  68. package/lib/transport/multipart-image-create.js.map +1 -0
  69. package/messages/cms.export.workspace.md +20 -0
  70. package/messages/cms.import.workspace.md +12 -2
  71. 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
- let page = 0;
147
- let pageLimit = 1;
148
- while (page < pageLimit) {
149
- const response = await requestJson(connection, getSelectedOperation('workspace.variant.search'), {
150
- query: {
151
- contentSpaceOrFolderIds: [workspaceId],
152
- languages: ['All'],
153
- page,
154
- pageSize: PAGE_SIZE,
155
- queryTerm: '*',
156
- },
157
- }, options);
158
- pagesRequested += 1;
159
- const items = responseItems(response.data);
160
- if (page === 0) {
161
- expectedCount = responseCount(response.data);
162
- pageLimit = Math.min(ABSOLUTE_PAGE_CAP, Math.max(1, Math.ceil(expectedCount / PAGE_SIZE) + 2));
163
- }
164
- let additions = 0;
165
- for (const item of items) {
166
- const row = searchRow(item);
167
- if (!row)
168
- continue;
169
- if (row.managedContentSpaceId !== workspaceId) {
170
- rejected.add(row.id);
171
- ownershipMismatchIds.add(row.id);
172
- continue;
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
- if (candidates.has(row.id)) {
175
- duplicateIds.add(row.id);
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
- else {
178
- candidates.set(row.id, row);
179
- additions += 1;
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 (candidates.size >= expectedCount)
183
- break;
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
- assertWorkspaceExportManifest(manifest);
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 {};