sf-plugin-cms 0.4.0 → 0.5.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 (56) hide show
  1. package/README.md +241 -20
  2. package/lib/commands/cms/export/workspace.d.ts +5 -1
  3. package/lib/commands/cms/export/workspace.js +60 -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 +23 -3
  17. package/lib/contracts/workspace-export.js +118 -5
  18. package/lib/contracts/workspace-export.js.map +1 -1
  19. package/lib/contracts/workspace-import.d.ts +64 -0
  20. package/lib/contracts/workspace-import.js +119 -0
  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/email-fragment.d.ts +15 -0
  26. package/lib/services/email-fragment.js +199 -0
  27. package/lib/services/email-fragment.js.map +1 -0
  28. package/lib/services/export-workspace.d.ts +13 -1
  29. package/lib/services/export-workspace.js +183 -7
  30. package/lib/services/export-workspace.js.map +1 -1
  31. package/lib/services/image-import.d.ts +91 -0
  32. package/lib/services/image-import.js +579 -0
  33. package/lib/services/image-import.js.map +1 -0
  34. package/lib/services/import-workspace.d.ts +16 -3
  35. package/lib/services/import-workspace.js +142 -14
  36. package/lib/services/import-workspace.js.map +1 -1
  37. package/lib/services/landing-page-template.d.ts +52 -0
  38. package/lib/services/landing-page-template.js +421 -0
  39. package/lib/services/landing-page-template.js.map +1 -0
  40. package/lib/services/landing-page.d.ts +43 -0
  41. package/lib/services/landing-page.js +117 -0
  42. package/lib/services/landing-page.js.map +1 -0
  43. package/lib/services/web-fragment.d.ts +41 -0
  44. package/lib/services/web-fragment.js +245 -0
  45. package/lib/services/web-fragment.js.map +1 -0
  46. package/lib/transport/experimental-media.d.ts +30 -0
  47. package/lib/transport/experimental-media.js +224 -0
  48. package/lib/transport/experimental-media.js.map +1 -0
  49. package/lib/transport/json-request.d.ts +9 -1
  50. package/lib/transport/json-request.js +30 -3
  51. package/lib/transport/json-request.js.map +1 -1
  52. package/lib/transport/multipart-image-create.d.ts +28 -0
  53. package/lib/transport/multipart-image-create.js +189 -0
  54. package/lib/transport/multipart-image-create.js.map +1 -0
  55. package/messages/cms.import.workspace.md +6 -0
  56. package/package.json +1 -1
@@ -0,0 +1,199 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ const EMAIL_FRAGMENT_TYPE = 'sfdc_cms__emailFragment';
3
+ const BLOCK_KEY = 'sfdc_cms:block';
4
+ const TITLE_KEY = 'sfdc_cms:title';
5
+ const URL_NAME_KEY = 'sfdc_cms:urlName';
6
+ const BODY_KEYS = [
7
+ 'backgroundColor',
8
+ 'lightning:backgroundImage',
9
+ 'lightning:brandSource',
10
+ 'lightning:colorScheme',
11
+ 'lightning:dataProviders',
12
+ 'lightning:expressions',
13
+ 'lightning:padding',
14
+ 'sfdc_cms:attachments',
15
+ BLOCK_KEY,
16
+ TITLE_KEY,
17
+ URL_NAME_KEY,
18
+ 'sfdc_cms:variants',
19
+ ];
20
+ const COMPONENT_DEFINITIONS = {
21
+ root: 'sfdc_cms/rootContentBlock',
22
+ section: 'lightning/section',
23
+ column: 'lightning/column',
24
+ };
25
+ const BACKGROUND_IMAGE = { position: 'center center', repeat: 'no-repeat', size: 'cover' };
26
+ const SECTION_ATTRIBUTES = {
27
+ 'lightning:backgroundImage': BACKGROUND_IMAGE,
28
+ 'lightning:borderRadius': '{!$brand.borderRadius.square}',
29
+ 'lightning:borderWidth': '{!$brand.borderWeight.none}',
30
+ 'lightning:colorScheme': '{!$brand.colorScheme}',
31
+ 'lightning:margin': '{!$brand.spacing.none}',
32
+ 'lightning:padding': '{!$brand.spacing.xSmall}',
33
+ reverseOrderOnMobile: false,
34
+ stackOnMobile: true,
35
+ };
36
+ const COLUMN_ATTRIBUTES = {
37
+ 'lightning:backgroundImage': BACKGROUND_IMAGE,
38
+ 'lightning:borderRadius': '{!$brand.borderRadius.square}',
39
+ 'lightning:borderWidth': '{!$brand.borderWeight.none}',
40
+ 'lightning:colorScheme': '{!$brand.colorScheme}',
41
+ 'lightning:margin': '{!$brand.spacing.none}',
42
+ 'lightning:padding': '{!$brand.spacing.xSmall}',
43
+ columnWidth: 12,
44
+ 'lightning:verticalAlignment': 'top',
45
+ };
46
+ function record(value) {
47
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
48
+ }
49
+ function identity(value, label) {
50
+ if (typeof value !== 'string' || !/^[A-Za-z0-9_-]+$/u.test(value)) {
51
+ throw new TypeError(`${label} must be a nonempty identifier without whitespace or separators`);
52
+ }
53
+ }
54
+ function exactKeys(value, keys, label) {
55
+ if (Object.keys(value).toSorted().join('\0') !== [...keys].toSorted().join('\0')) {
56
+ throw new TypeError(`${label} must contain exactly ${keys.join(', ')}`);
57
+ }
58
+ }
59
+ function exactValue(value, expected, label) {
60
+ if (!isDeepStrictEqual(value, expected)) {
61
+ throw new TypeError(`${label} must match the evidenced dependency-free profile`);
62
+ }
63
+ }
64
+ function emptyArray(value, label) {
65
+ if (!Array.isArray(value) || value.length > 0) {
66
+ throw new TypeError(`${label} must be an empty array`);
67
+ }
68
+ }
69
+ function children(value, label) {
70
+ if (!Array.isArray(value.children))
71
+ throw new TypeError(`${label}.children must be an array`);
72
+ return value.children;
73
+ }
74
+ function assertComponent(value, expected, label) {
75
+ if (!record(value))
76
+ throw new TypeError(`${label} must be an object`);
77
+ const expectedKeys = expected === 'root'
78
+ ? ['children', 'definition', 'id', 'type']
79
+ : ['attributes', 'children', 'definition', 'id', 'type'];
80
+ exactKeys(value, expectedKeys, label);
81
+ if (value.definition !== COMPONENT_DEFINITIONS[expected] || value.type !== 'block') {
82
+ throw new TypeError(`${label} must use exact definition ${COMPONENT_DEFINITIONS[expected]} and type block`);
83
+ }
84
+ identity(value.id, `${label}.id`);
85
+ if (expected !== 'root') {
86
+ exactValue(value.attributes, expected === 'section' ? SECTION_ATTRIBUTES : COLUMN_ATTRIBUTES, `${label}.attributes`);
87
+ }
88
+ return value;
89
+ }
90
+ /**
91
+ * Validate the first evidenced, create-only email-fragment body shape.
92
+ * @param {WorkspaceImportItem} item - Integrity-verified import item to validate.
93
+ * @returns {void}
94
+ */
95
+ export function assertEmailFragmentItem(item) {
96
+ if (item.contentType !== EMAIL_FRAGMENT_TYPE) {
97
+ throw new TypeError(`Email fragment profile requires exact content type ${EMAIL_FRAGMENT_TYPE}`);
98
+ }
99
+ if (typeof item.apiName !== 'string' || item.apiName.length === 0 || item.title.length === 0) {
100
+ throw new TypeError('Email fragment identity and title are required');
101
+ }
102
+ exactKeys(item.contentBody, BODY_KEYS, 'Email fragment contentBody');
103
+ if (typeof item.contentBody[TITLE_KEY] !== 'string' || item.contentBody[TITLE_KEY].length === 0) {
104
+ throw new TypeError(`Email fragment body requires ${TITLE_KEY}`);
105
+ }
106
+ if (typeof item.contentBody[URL_NAME_KEY] !== 'string' ||
107
+ item.contentBody[URL_NAME_KEY].length === 0) {
108
+ throw new TypeError(`Email fragment body requires nonempty ${URL_NAME_KEY}`);
109
+ }
110
+ if (item.urlName !== item.contentBody[URL_NAME_KEY]) {
111
+ throw new TypeError(`Email fragment ${URL_NAME_KEY} must match the top-level urlName`);
112
+ }
113
+ if (item.contentBody.backgroundColor !== '#f3f3f3') {
114
+ throw new TypeError('Email fragment backgroundColor must match the evidenced profile');
115
+ }
116
+ exactValue(item.contentBody['lightning:backgroundImage'], BACKGROUND_IMAGE, 'lightning:backgroundImage');
117
+ exactValue(item.contentBody['lightning:brandSource'], { defaultBrandOption: 'sfdcBrand' }, 'lightning:brandSource');
118
+ if (item.contentBody['lightning:colorScheme'] !== '{!$brand.colorScheme}') {
119
+ throw new TypeError('lightning:colorScheme must match the evidenced profile');
120
+ }
121
+ if (item.contentBody['lightning:padding'] !== '{!$brand.spacing.none}') {
122
+ throw new TypeError('lightning:padding must match the evidenced profile');
123
+ }
124
+ emptyArray(item.contentBody['lightning:dataProviders'], 'lightning:dataProviders');
125
+ emptyArray(item.contentBody['lightning:expressions'], 'lightning:expressions');
126
+ emptyArray(item.contentBody['sfdc_cms:attachments'], 'sfdc_cms:attachments');
127
+ emptyArray(item.contentBody['sfdc_cms:variants'], 'sfdc_cms:variants');
128
+ const root = assertComponent(item.contentBody[BLOCK_KEY], 'root', `Email fragment ${BLOCK_KEY}`);
129
+ const rootChildren = children(root, `Email fragment ${BLOCK_KEY}`);
130
+ if (rootChildren.length !== 1)
131
+ throw new TypeError('Email fragment root must contain one section');
132
+ const section = assertComponent(rootChildren[0], 'section', 'Email fragment section');
133
+ const sectionChildren = children(section, 'Email fragment section');
134
+ if (sectionChildren.length !== 1)
135
+ throw new TypeError('Email fragment section must contain one column');
136
+ const column = assertComponent(sectionChildren[0], 'column', 'Email fragment column');
137
+ if (children(column, 'Email fragment column').length > 0) {
138
+ throw new TypeError('Email fragment column must be empty in this bounded profile');
139
+ }
140
+ }
141
+ /**
142
+ * Plan detached fresh identities for one default-language email-fragment variant per parent.
143
+ * @param {LoadedWorkspaceExport} source - Integrity-verified original workspace export.
144
+ * @param {unknown} input - Explicit selected source and fresh target identities.
145
+ * @returns {PlannedImportIdentities} Detached bounded fragment proposal.
146
+ */
147
+ export function planEmailFragmentCopies(source, input) {
148
+ if (!source.integrity.verified)
149
+ throw new TypeError('Source integrity must be verified first');
150
+ if (!Array.isArray(input) || input.length === 0) {
151
+ throw new TypeError('Email fragment mappings must be a nonempty array');
152
+ }
153
+ const sourceKeys = new Set(source.items.map((item) => item.contentKey));
154
+ const sourceApiNames = new Set(source.items.map((item) => item.apiName));
155
+ const selected = new Set();
156
+ const targetKeys = new Set();
157
+ const targetApiNames = new Set();
158
+ const items = [];
159
+ for (const [index, row] of input.entries()) {
160
+ if (!record(row))
161
+ throw new TypeError('Email fragment mapping must be an object');
162
+ exactKeys(row, ['source', 'target'], `Email fragment mapping ${index}`);
163
+ if (!record(row.source))
164
+ throw new TypeError(`Email fragment mapping ${index}.source must be an object`);
165
+ exactKeys(row.source, ['family', 'type', 'apiName'], `Email fragment mapping ${index}.source`);
166
+ if (row.source.family !== 'cms' || row.source.type !== 'emailFragment') {
167
+ throw new TypeError(`Email fragment mapping ${index}.source must select cms/emailFragment`);
168
+ }
169
+ identity(row.source.apiName, `Email fragment mapping ${index}.source.apiName`);
170
+ const sourceApiName = row.source.apiName;
171
+ if (selected.has(sourceApiName)) {
172
+ throw new TypeError(`Duplicate email fragment selection: ${sourceApiName}`);
173
+ }
174
+ const matches = source.items.filter((item) => item.contentType === EMAIL_FRAGMENT_TYPE && item.apiName === sourceApiName);
175
+ if (matches.length !== 1) {
176
+ throw new TypeError(`Typed source API name must match exactly one email fragment: ${sourceApiName}`);
177
+ }
178
+ if (!record(row.target))
179
+ throw new TypeError(`Email fragment mapping ${index}.target must be an object`);
180
+ exactKeys(row.target, ['contentKey', 'apiName'], `Email fragment mapping ${index}.target`);
181
+ identity(row.target.contentKey, `Email fragment mapping ${index}.target.contentKey`);
182
+ identity(row.target.apiName, `Email fragment mapping ${index}.target.apiName`);
183
+ const contentKey = row.target.contentKey;
184
+ const apiName = row.target.apiName;
185
+ if (sourceKeys.has(contentKey) || targetKeys.has(contentKey)) {
186
+ throw new TypeError('Target email fragment content keys must be fresh and unique');
187
+ }
188
+ if (sourceApiNames.has(apiName) || targetApiNames.has(apiName)) {
189
+ throw new TypeError('Target email fragment API names must be fresh and unique');
190
+ }
191
+ assertEmailFragmentItem(matches[0]);
192
+ selected.add(sourceApiName);
193
+ targetKeys.add(contentKey);
194
+ targetApiNames.add(apiName);
195
+ items.push({ ...matches[0], contentKey, apiName });
196
+ }
197
+ return { items, targetContentKeys: [...targetKeys].toSorted() };
198
+ }
199
+ //# sourceMappingURL=email-fragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-fragment.js","sourceRoot":"","sources":["../../src/services/email-fragment.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,9 @@ 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';
8
9
  export type WorkspaceExportWarning = {
9
- code: 'COUNT_MISMATCH' | 'DETAIL_FAILED' | 'DUPLICATE_VARIANTS' | 'OWNERSHIP_MISMATCH' | 'PREMATURE_EMPTY_PAGE' | 'REFERENCE_UNRESOLVED' | 'REFERENCE_UNSUPPORTED' | 'UNSUPPORTED_WILDCARD';
10
+ code: 'COUNT_MISMATCH' | 'DETAIL_FAILED' | 'DUPLICATE_VARIANTS' | 'OWNERSHIP_MISMATCH' | 'PREMATURE_EMPTY_PAGE' | 'MEDIA_EXPORT_FAILED' | 'REFERENCE_UNRESOLVED' | 'REFERENCE_UNSUPPORTED' | 'UNSUPPORTED_WILDCARD';
10
11
  message: string;
11
12
  variantIds?: string[];
12
13
  };
@@ -25,9 +26,20 @@ export type ExportWorkspaceOptions = JsonRequestOptions & {
25
26
  generatedAt?: string;
26
27
  editableDirectory?: string;
27
28
  editablePublish?: EditablePublishOptions;
29
+ selection?: {
30
+ readonly contentType: string;
31
+ readonly apiNames: readonly string[];
32
+ };
28
33
  atomicPublish?: DirectoryPublishOptions & CleanupOptions & {
29
34
  readonly makeTemporaryDirectory?: typeof mkdtemp;
30
35
  };
36
+ experimentalMedia?: {
37
+ readonly accessToken: string;
38
+ readonly instanceUrl: string;
39
+ readonly fetch?: ExperimentalMediaDownloadOptions['fetch'];
40
+ readonly perImageBytes?: number;
41
+ readonly totalBytes?: number;
42
+ };
31
43
  };
32
44
  type RequestConnection = Pick<Connection, 'request'>;
33
45
  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,16 @@ 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';
11
12
  const PAGE_SIZE = 250;
12
13
  const ABSOLUTE_PAGE_CAP = 1000;
14
+ function mediaByteCap(value, maximum, label) {
15
+ const configured = value ?? maximum;
16
+ if (!Number.isSafeInteger(configured) || configured <= 0) {
17
+ throw new TypeError(`${label} must be a positive safe integer`);
18
+ }
19
+ return Math.min(configured, maximum);
20
+ }
13
21
  function isRecord(value) {
14
22
  return typeof value === 'object' && value !== null && !Array.isArray(value);
15
23
  }
@@ -84,6 +92,59 @@ async function exists(path) {
84
92
  throw error;
85
93
  }
86
94
  }
95
+ function mediaValue(record) {
96
+ const body = record.contentBody;
97
+ if (!isRecord(body))
98
+ return undefined;
99
+ const media = body['sfdc_cms:media'];
100
+ return isRecord(media) ? media : undefined;
101
+ }
102
+ function imageEvidence(record) {
103
+ const contentType = isRecord(record.contentType)
104
+ ? record.contentType.fullyQualifiedName
105
+ : record.contentType;
106
+ if (contentType !== 'sfdc_cms__image')
107
+ return undefined;
108
+ const media = mediaValue(record);
109
+ const source = isRecord(media?.source) ? media.source : undefined;
110
+ const status = isRecord(record.status) ? record.status.status : undefined;
111
+ const url = media?.url;
112
+ if (!nonemptyString(record.contentKey) ||
113
+ !nonemptyString(source?.mimeType) ||
114
+ typeof source.size !== 'number' ||
115
+ !Number.isSafeInteger(source.size) ||
116
+ source.size < 0 ||
117
+ !nonemptyString(status) ||
118
+ !nonemptyString(record.lastModifiedDate) ||
119
+ !nonemptyString(url)) {
120
+ throw new TypeError('Experimental image authoring metadata is incomplete');
121
+ }
122
+ const parsed = new URL(url, 'https://invalid.example');
123
+ const fileName = parsed.searchParams.get('fileName');
124
+ const md5 = parsed.searchParams.get('fileHash');
125
+ const version = parsed.searchParams.get('version');
126
+ if (!/^\/cms\/media\/[^/]+$/u.test(parsed.pathname) ||
127
+ [...parsed.searchParams.keys()].toSorted().join(',') !== 'fileHash,fileName,version' ||
128
+ !nonemptyString(fileName) ||
129
+ fileName.includes('/') ||
130
+ fileName.includes('\\') ||
131
+ typeof md5 !== 'string' ||
132
+ !/^[a-f\d]{32}$/iu.test(md5) ||
133
+ !nonemptyString(version)) {
134
+ throw new TypeError('Experimental image authoring URL binding is unsupported');
135
+ }
136
+ return {
137
+ contentKey: record.contentKey,
138
+ fileName,
139
+ md5: md5.toLowerCase(),
140
+ mimeType: source.mimeType,
141
+ modifiedAt: record.lastModifiedDate,
142
+ size: source.size,
143
+ status,
144
+ url,
145
+ version,
146
+ };
147
+ }
87
148
  async function writeExclusive(path, value) {
88
149
  const handle = await open(path, 'wx');
89
150
  try {
@@ -126,11 +187,30 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
126
187
  throw new TypeError('workspaceId must be a nonempty string');
127
188
  if (!nonemptyString(destination))
128
189
  throw new TypeError('destination must be a nonempty string');
190
+ const mediaCaps = options.experimentalMedia === undefined
191
+ ? undefined
192
+ : {
193
+ perImageBytes: mediaByteCap(options.experimentalMedia.perImageBytes, EXPERIMENTAL_MEDIA_POLICY.perImageBytes, 'Experimental media per-image byte cap'),
194
+ totalBytes: mediaByteCap(options.experimentalMedia.totalBytes, EXPERIMENTAL_MEDIA_POLICY.totalBytes, 'Experimental media total byte cap'),
195
+ };
129
196
  if (options.editableDirectory !== undefined) {
130
197
  await preflightEditableExport(destination, options.editableDirectory);
131
198
  }
132
199
  if (await exists(destination))
133
200
  throw new Error(`Export destination already exists: ${destination}`);
201
+ const selection = options.selection;
202
+ if (selection !== undefined) {
203
+ if (!nonemptyString(selection.contentType) || !Array.isArray(selection.apiNames)) {
204
+ throw new TypeError('Component export selection is malformed');
205
+ }
206
+ if (selection.apiNames.length === 0 ||
207
+ selection.apiNames.some((value) => !nonemptyString(value))) {
208
+ throw new TypeError('Component export selection requires one or more exact API names');
209
+ }
210
+ if (new Set(selection.apiNames).size !== selection.apiNames.length) {
211
+ throw new TypeError('Component export API names must be unique');
212
+ }
213
+ }
134
214
  const warnings = [
135
215
  {
136
216
  code: 'UNSUPPORTED_WILDCARD',
@@ -149,10 +229,11 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
149
229
  const response = await requestJson(connection, getSelectedOperation('workspace.variant.search'), {
150
230
  query: {
151
231
  contentSpaceOrFolderIds: [workspaceId],
232
+ ...(selection === undefined ? {} : { contentTypeFQN: selection.contentType }),
152
233
  languages: ['All'],
153
234
  page,
154
235
  pageSize: PAGE_SIZE,
155
- queryTerm: '*',
236
+ queryTerm: selection === undefined ? '*' : selection.apiNames.join(' '),
156
237
  },
157
238
  }, options);
158
239
  pagesRequested += 1;
@@ -236,6 +317,27 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
236
317
  variantIds: [...ownershipMismatchIds].toSorted(),
237
318
  });
238
319
  }
320
+ if (selection !== undefined) {
321
+ const selected = new Map(selection.apiNames.map((apiName) => [apiName, []]));
322
+ for (const [variantId, detail] of details) {
323
+ const contentType = isRecord(detail.contentType)
324
+ ? detail.contentType.fullyQualifiedName
325
+ : detail.contentType;
326
+ if (contentType !== selection.contentType || !nonemptyString(detail.apiName))
327
+ continue;
328
+ selected.get(detail.apiName)?.push(variantId);
329
+ }
330
+ for (const [apiName, matches] of selected) {
331
+ if (matches.length !== 1) {
332
+ throw new TypeError(`Exact component API name must resolve once for ${selection.contentType}: ${apiName}`);
333
+ }
334
+ }
335
+ const selectedIds = new Set([...selected.values()].flat());
336
+ for (const variantId of details.keys()) {
337
+ if (!selectedIds.has(variantId))
338
+ details.delete(variantId);
339
+ }
340
+ }
239
341
  const entries = [...details.keys()].toSorted().map((variantId) => ({
240
342
  file: `items/${variantId}.json`,
241
343
  variantId,
@@ -256,8 +358,12 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
256
358
  ...(referenceId === undefined ? {} : { referenceId }),
257
359
  };
258
360
  });
361
+ const mediaCandidates = [...details.entries()].flatMap(([variantId, detail]) => {
362
+ const evidence = imageEvidence(detail);
363
+ return evidence === undefined ? [] : [{ variantId, evidence }];
364
+ });
259
365
  const manifest = {
260
- schemaVersion: 1,
366
+ schemaVersion: mediaCandidates.length > 0 ? 2 : 1,
261
367
  mode: 'experimental-best-effort',
262
368
  workspaceId,
263
369
  search: {
@@ -266,8 +372,8 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
266
372
  pageSize: PAGE_SIZE,
267
373
  queryTerm: '*',
268
374
  },
269
- expectedCount,
270
- foundCount: candidates.size,
375
+ expectedCount: selection === undefined ? expectedCount : selection.apiNames.length,
376
+ foundCount: selection === undefined ? candidates.size : details.size,
271
377
  exportedCount: entries.length,
272
378
  pagesRequested,
273
379
  entries,
@@ -275,7 +381,8 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
275
381
  failedVariantIds: failedIds.toSorted(),
276
382
  warnings,
277
383
  contract: WORKSPACE_EXPORT_MANIFEST_CONTRACT,
278
- contractVersion: '1.0.0',
384
+ contractVersion: mediaCandidates.length > 0 ? '2.0.0' : '1.0.0',
385
+ ...(mediaCandidates.length === 0 ? {} : { media: [] }),
279
386
  provenance: {
280
387
  producer: 'sf-plugin-cms',
281
388
  sourceOrgId: options.sourceOrgId ?? 'unknown-org',
@@ -288,7 +395,14 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
288
395
  externalReferences: referenceInventory.externalReferences,
289
396
  items: manifestItems,
290
397
  };
291
- assertWorkspaceExportManifest(manifest);
398
+ if (mediaCandidates.length > 0 && options.experimentalMedia === undefined) {
399
+ warnings.push({
400
+ code: 'MEDIA_EXPORT_FAILED',
401
+ message: 'Image candidate JSON was exported without media binaries because --experimental-media was not enabled.',
402
+ variantIds: mediaCandidates.map(({ variantId }) => variantId),
403
+ });
404
+ manifest.completeness = 'partial';
405
+ }
292
406
  if (options.editableDirectory !== undefined) {
293
407
  await preflightEditableExport(destination, options.editableDirectory);
294
408
  }
@@ -300,6 +414,68 @@ export async function exportWorkspace(connection, workspaceId, destination, opti
300
414
  for (const entry of entries) {
301
415
  await writeExclusive(path.join(temporary, entry.file), details.get(entry.variantId));
302
416
  }
417
+ if (mediaCandidates.length > 0 && options.experimentalMedia !== undefined) {
418
+ await mkdir(path.join(temporary, 'media'));
419
+ let totalBytes = 0;
420
+ for (const { variantId, evidence } of mediaCandidates) {
421
+ const mediaPath = `media/${variantId}-${evidence.fileName}`;
422
+ try {
423
+ const remainingTotal = mediaCaps.totalBytes - totalBytes;
424
+ if (!Number.isSafeInteger(remainingTotal) || remainingTotal <= 0) {
425
+ throw new TypeError('Experimental media total byte cap is exhausted');
426
+ }
427
+ const downloaded = await downloadExperimentalCmsMedia(new URL(evidence.url, options.experimentalMedia.instanceUrl), {
428
+ accessToken: options.experimentalMedia.accessToken,
429
+ expectedMd5: evidence.md5,
430
+ expectedMimeType: evidence.mimeType,
431
+ expectedSize: evidence.size,
432
+ fetch: options.experimentalMedia.fetch,
433
+ instanceUrl: options.experimentalMedia.instanceUrl,
434
+ maxBytes: Math.min(mediaCaps.perImageBytes, remainingTotal),
435
+ outputFile: path.join(temporary, mediaPath),
436
+ });
437
+ if (downloaded.bytes > mediaCaps.totalBytes - totalBytes) {
438
+ throw new TypeError('Experimental media total byte accounting exceeded the cap');
439
+ }
440
+ totalBytes += downloaded.bytes;
441
+ const current = imageEvidence(await getVariant(connection, variantId, options));
442
+ if (current === undefined || JSON.stringify(current) !== JSON.stringify(evidence)) {
443
+ throw new TypeError('Experimental image authoring metadata changed during export');
444
+ }
445
+ manifest.media.push({
446
+ variantId,
447
+ contentKey: evidence.contentKey,
448
+ path: mediaPath,
449
+ sha256: downloaded.sha256,
450
+ md5: downloaded.md5,
451
+ bytes: downloaded.bytes,
452
+ mimeType: downloaded.mimeType,
453
+ fileName: evidence.fileName,
454
+ sourceStatus: evidence.status,
455
+ sourceModifiedAt: evidence.modifiedAt,
456
+ sourceVersion: evidence.version,
457
+ sourceUrl: evidence.url,
458
+ transport: 'experimental-undocumented-authoring-media',
459
+ });
460
+ manifest.items.push({
461
+ path: mediaPath,
462
+ sha256: downloaded.sha256,
463
+ kind: 'cms.media',
464
+ });
465
+ }
466
+ catch (error) {
467
+ await unlink(path.join(temporary, mediaPath)).catch(() => { });
468
+ warnings.push({
469
+ code: 'MEDIA_EXPORT_FAILED',
470
+ message: `Experimental image export failed for ${variantId}: ${error instanceof Error ? error.message : String(error)}`,
471
+ variantIds: [variantId],
472
+ });
473
+ manifest.completeness = 'partial';
474
+ break;
475
+ }
476
+ }
477
+ }
478
+ assertWorkspaceExportManifest(manifest);
303
479
  await assertRegularPackageFiles(temporary, new Set(manifest.items.map(({ path }) => path)));
304
480
  await writeExclusive(path.join(temporary, 'manifest.json'), manifest);
305
481
  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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"}