sf-plugin-cms 0.5.0 → 0.6.1
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 +49 -14
- package/lib/commands/cms/export/workspace.d.ts +2 -0
- package/lib/commands/cms/export/workspace.js +58 -5
- package/lib/commands/cms/export/workspace.js.map +1 -1
- package/lib/commands/cms/import/workspace.d.ts +1 -1
- package/lib/commands/cms/import/workspace.js +2 -2
- package/lib/commands/cms/import/workspace.js.map +1 -1
- package/lib/contracts/workspace-export.d.ts +18 -0
- package/lib/contracts/workspace-export.js +53 -0
- package/lib/contracts/workspace-export.js.map +1 -1
- package/lib/contracts/workspace-import.d.ts +1 -0
- package/lib/contracts/workspace-import.js +13 -1
- package/lib/contracts/workspace-import.js.map +1 -1
- package/lib/generated/operations.d.ts +5 -0
- package/lib/generated/operations.js +6 -0
- package/lib/generated/operations.js.map +1 -1
- package/lib/services/bulk-export-workspaces.js +1 -1
- package/lib/services/bulk-export-workspaces.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.js +5 -1
- package/lib/services/email-fragment.js.map +1 -1
- package/lib/services/export-workspace.d.ts +2 -0
- package/lib/services/export-workspace.js +104 -47
- package/lib/services/export-workspace.js.map +1 -1
- package/lib/services/image-import.js +3 -7
- package/lib/services/image-import.js.map +1 -1
- package/lib/services/import-identities.js +5 -1
- package/lib/services/import-identities.js.map +1 -1
- package/lib/services/import-workspace.d.ts +48 -1
- package/lib/services/import-workspace.js +142 -19
- 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 +12 -2
- package/lib/services/landing-page-template.js +25 -74
- package/lib/services/landing-page-template.js.map +1 -1
- package/lib/services/landing-page.d.ts +45 -1
- package/lib/services/landing-page.js +241 -3
- package/lib/services/landing-page.js.map +1 -1
- 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 +12 -6
- package/lib/services/web-fragment.js +60 -19
- package/lib/services/web-fragment.js.map +1 -1
- package/messages/cms.export.workspace.md +20 -0
- package/messages/cms.import.workspace.md +6 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -191,7 +191,7 @@ Choose either single or bulk mode:
|
|
|
191
191
|
|
|
192
192
|
In single mode, `--output-dir <path>` remains the exact new destination. When omitted, export writes to `./cms/<safe-canonical-workspace-name>`. In bulk mode, `--output-dir` is the parent directory and defaults to `./cms`; each workspace is written beneath it using the canonical fetched name. Safe segments preserve Unicode and case, replace path/control/Windows-invalid characters, and trim unsafe trailing dots or spaces.
|
|
193
193
|
|
|
194
|
-
Bulk mode performs a strict global preflight before the first workspace export
|
|
194
|
+
Bulk mode performs a strict global preflight before the first workspace export. When `--workspace-type` is supplied, workspace enumeration sends the matching `spaceType` filter to Salesforce, so unrelated workspace families such as Enablement cannot enter the Marketing or Content preflight and block the requested export. The command then enumerates until an empty page, canonicalizes every returned workspace by ID, validates IDs and names, resolves recognized canonical `spaceType` values, applies the type check again, sorts by canonical ID, checks the output parent and every destination, and rejects collisions after sanitization, Unicode normalization, and case folding. If a canonical detail response omits `spaceType`, preflight can use the list response's recognized type only for the same exact workspace ID. A present malformed, null, or unsupported canonical type is rejected, while an explicit contradictory type is filtered out. Any preflight failure creates no destinations and makes no export calls.
|
|
195
195
|
|
|
196
196
|
After preflight, each workspace export remains atomic. Execution continues after individual failures. Manifest warnings count as successful exports. JSON and human modes both return the complete deterministic aggregate with discovered, selected, succeeded, and failed counts plus per-workspace status, manifest, or redacted single-line error. A partial execution sets a nonzero process exit code only after the aggregate is emitted.
|
|
197
197
|
|
|
@@ -300,7 +300,7 @@ sf cms import workspace --target-org destination-org --workspace-id 0ZuTARGET --
|
|
|
300
300
|
sf cms import workspace --target-org destination-org --workspace-id 0ZuTARGET --source-dir ./cms-images --image-map ./image-map.json --contract-version 2 --apply --report-dir ./cms-image-report --json
|
|
301
301
|
```
|
|
302
302
|
|
|
303
|
-
Every row selects exactly one integrity-verified `cms/image` item by exact API name, with optional source bindings such as workspace, language, server ID, title, or version. Each of the four identity fields has an explicit strategy: `preserve` submits the evidenced source value, `fresh` submits a different map-provided value, and `generated` omits the value for the server to assign. `title` supports only `preserve` or `fresh`.
|
|
303
|
+
Every row selects exactly one integrity-verified `cms/image` item by exact API name, with optional source bindings such as workspace, language, server ID, title, or version. Each of the four identity fields has an explicit strategy: `preserve` submits the evidenced source value, `fresh` submits a different map-provided value, and `generated` omits the value for the server to assign. `title` supports only `preserve` or `fresh`. Every explicitly submitted Enhanced CMS target content key must match `^MC[A-Z2-7]{26}$`: the `MC` prefix followed by exactly 26 uppercase base32 characters (`A`–`Z` or `2`–`7`). Image keys supplied through `preserve` or `fresh` follow the same rule. Duplicate source selections and duplicate non-generated target identity tuples are rejected.
|
|
304
304
|
|
|
305
305
|
Dry-run validates the complete v2 package, verifies media bytes and hashes, resolves the exact destination workspace, and checks every selected destination identity before reporting the plan. Apply repeats destination checks immediately before each sequential multipart CREATE, records a pending operation before transport, and verifies returned identity, workspace, type, Draft state, authoring metadata, and canonical variant readback. Binary byte proof is reported separately because the authoring readback may not expose original bytes. Multipart filenames are normalized to the declared GIF, JPEG, PNG, or WebP MIME type; missing extensions are added and mismatches are rejected.
|
|
306
306
|
|
|
@@ -308,7 +308,17 @@ Image import is create-only. It has no update fallback, overwrite, publication,
|
|
|
308
308
|
|
|
309
309
|
#### Bounded email-fragment copies (`--email-fragment-map`)
|
|
310
310
|
|
|
311
|
-
|
|
311
|
+
Export one or many `sfdc_cms__emailFragment` components by exact API name. The selection file is a nonempty JSON string array; every requested name must resolve exactly once in the selected workspace and exact content type. Only selected variants are packaged, so relationship descriptors owned by unrelated workspace content are excluded while the resulting package retains normal manifest and hash verification.
|
|
312
|
+
|
|
313
|
+
```json
|
|
314
|
+
["ReusableHeader", "ReusableFooter"]
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
```sh
|
|
318
|
+
sf cms export workspace --target-org source-org --workspace-id 0ZuSOURCE --output-dir ./cms-email-fragments --email-fragment-map ./email-fragments.json --json
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
For import, `--email-fragment-map <json-file>` opts into the experimental first Phase 4 profile. It supports only dependency-free `sfdc_cms__emailFragment` content whose body exactly matches the evidenced root-content-block → one section → one empty column shape, including the exact accepted layout attributes and empty provider, expression, attachment, and variant arrays. It is not general reusable-block or workspace restoration support.
|
|
312
322
|
|
|
313
323
|
The mapping file is a nonempty JSON array with exact typed source selectors and fresh target identities:
|
|
314
324
|
|
|
@@ -321,7 +331,7 @@ The mapping file is a nonempty JSON array with exact typed source selectors and
|
|
|
321
331
|
"apiName": "source_fragment_api"
|
|
322
332
|
},
|
|
323
333
|
"target": {
|
|
324
|
-
"contentKey": "
|
|
334
|
+
"contentKey": "MCAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
325
335
|
"apiName": "fresh_fragment_api"
|
|
326
336
|
}
|
|
327
337
|
}
|
|
@@ -364,7 +374,7 @@ Import uses a nonempty JSON array with exact typed source selection, fresh targe
|
|
|
364
374
|
"apiName": "LandingHero"
|
|
365
375
|
},
|
|
366
376
|
"target": {
|
|
367
|
-
"contentKey": "
|
|
377
|
+
"contentKey": "MCBBBBBBBBBBBBBBBBBBBBBBBBBB",
|
|
368
378
|
"apiName": "LandingHeroTarget"
|
|
369
379
|
},
|
|
370
380
|
"dataGraphs": [
|
|
@@ -384,7 +394,7 @@ sf cms import workspace --target-org destination-org --workspace-id 0ZuTARGET --
|
|
|
384
394
|
sf cms import workspace --target-org destination-org --workspace-id 0ZuTARGET --source-dir ./cms-web-fragments --web-fragment-map ./web-fragment-map.json --apply --report-dir ./cms-web-fragment-report --contract-version 1 --json
|
|
385
395
|
```
|
|
386
396
|
|
|
387
|
-
Dry-run proves fresh content-key and API-name availability
|
|
397
|
+
Dry-run proves fresh content-key and API-name availability, then resolves each exact target Data Graph with a named Connect GET at `/services/data/v{version}/ssot/data-graphs/{encodedDeveloperName}` using the connection-selected API version. A prerequisite qualifies only when the response is a non-array object whose nonempty `name` and `dataspaceName` exactly and case-sensitively match the mapped target pair, and whose nonblank status is `ready` or `active` case-insensitively. Apply repeats API-name and Data Graph validation immediately before each CREATE, creates sequentially, and journals every prerequisite mapping, validation result, and mutation in `workspace-import-run.json`. Duplicate target pairs share one request within each validation pass, but dry-run and apply revalidation remain separate. Request failures and malformed, missing, mismatched, or non-ready responses block creation; there is no SOQL, metadata/list fallback, data-space query-parameter reliance, or default Data Graph substitution. The profile creates Draft content only: no update fallback, overwrite, publication, activation, or send is performed. Deploy referenced CMS images before dependent fragments. The bounded packed installed-host acceptance matrix includes fresh Draft CREATE and independent readback for this exact profile; broader web-fragment shapes remain unsupported.
|
|
388
398
|
|
|
389
399
|
#### Landing-page templates (`--landing-page-template-map`)
|
|
390
400
|
|
|
@@ -398,7 +408,7 @@ Export one or many `sfdc_cms__landingPageTemplate` components by exact API name.
|
|
|
398
408
|
sf cms export workspace --target-org source-org --workspace-id 0ZuSOURCE --output-dir ./cms-landing-templates --landing-page-template-map ./landing-page-templates.json --json
|
|
399
409
|
```
|
|
400
410
|
|
|
401
|
-
Import uses exact typed source selection, fresh create identities, explicit mappings for every captured CMS image/web-fragment reference, and explicit mappings for every Data Graph provider. `targetTitle` is optional and is used only when the exact target API-name lookup succeeds with zero matches; fallback remains exact, type-qualified, workspace-scoped, and must resolve uniquely.
|
|
411
|
+
Import uses exact typed source selection, fresh create identities, explicit mappings for every captured CMS image/web-fragment reference, and explicit mappings for every Data Graph provider. Salesforce derives the template Label as `<target.apiName>--sfdc_cms__landingPageTemplate` and limits it to 80 characters, so `target.apiName` is limited to 49 characters. `targetTitle` is optional and is used only when the exact target API-name lookup succeeds with zero matches; fallback remains exact, type-qualified, workspace-scoped, and must resolve uniquely.
|
|
402
412
|
|
|
403
413
|
```json
|
|
404
414
|
[
|
|
@@ -409,7 +419,7 @@ Import uses exact typed source selection, fresh create identities, explicit mapp
|
|
|
409
419
|
"apiName": "MCBSUMZKCZFFEU3MZFHAZWVTWNGY"
|
|
410
420
|
},
|
|
411
421
|
"target": {
|
|
412
|
-
"contentKey": "
|
|
422
|
+
"contentKey": "MCCCCCCCCCCCCCCCCCCCCCCCCCCC",
|
|
413
423
|
"apiName": "FreshLandingTemplate"
|
|
414
424
|
},
|
|
415
425
|
"cmsDependencies": [
|
|
@@ -437,7 +447,28 @@ sf cms import workspace --target-org destination-org --workspace-id 0ZuTARGET --
|
|
|
437
447
|
sf cms import workspace --target-org destination-org --workspace-id 0ZuTARGET --source-dir ./cms-landing-templates --landing-page-template-map ./landing-page-template-map.json --apply --report-dir ./cms-landing-template-report --contract-version 1 --json
|
|
438
448
|
```
|
|
439
449
|
|
|
440
|
-
Dry-run verifies the complete package, fresh destination content key/API name, each exact Data Graph identity, and each exact typed CMS prerequisite. Apply repeats all checks immediately before each sequential CREATE, rewrites only the mapped CMS content keys and bound media URLs, and records CMS/Data Graph prerequisite resolution plus mutation evidence in `workspace-import-run.json`. Any lookup error, missing/ambiguous API name, missing/ambiguous title fallback, wrong type/workspace, unsupported reference shape, or drift blocks creation. Templates remain Draft and unpublished; there is no update, overwrite, upsert, publication, activation, send, or landing-page creation. Deploy images and web fragments first.
|
|
450
|
+
Dry-run verifies the complete package, fresh destination content key/API name, each exact Data Graph identity, and each exact typed CMS prerequisite. Apply repeats all checks immediately before each sequential CREATE, rewrites only the mapped CMS content keys and bound media URLs, and records CMS/Data Graph prerequisite resolution plus mutation evidence in `workspace-import-run.json`. Any lookup error, missing/ambiguous API name, missing/ambiguous title fallback, wrong type/workspace, unsupported reference shape, or drift blocks creation. Templates remain Draft and unpublished; there is no update, overwrite, upsert, publication, activation, send, or landing-page creation. Deploy images and web fragments first. The bounded packed installed-host acceptance matrix includes fresh Draft CREATE and independent readback for this exact template profile, with prerequisite revalidation and drift checks.
|
|
451
|
+
|
|
452
|
+
#### Paired landing pages and declared templates (`--landing-page-pair-map`)
|
|
453
|
+
|
|
454
|
+
Use this export-only compatibility baseline when a landing page declares a Landing Page Template relationship. The input is a nonempty array of explicit pairs:
|
|
455
|
+
|
|
456
|
+
```json
|
|
457
|
+
[
|
|
458
|
+
{
|
|
459
|
+
"page": { "apiName": "SourceLandingPage" },
|
|
460
|
+
"template": { "title": "Human Template Label" }
|
|
461
|
+
}
|
|
462
|
+
]
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
The page selector is its exact API name. The expected template path is its exact human title/label because the relationship value can be opaque or unreadable. Title lookup is strict: zero or multiple exact matches fail closed, and lookup errors are never treated as zero matches. An optional `template.apiName` may corroborate a separately known API name, but the command never parses, compares, or asks the user to enter the opaque relationship value as a selector.
|
|
466
|
+
|
|
467
|
+
```sh
|
|
468
|
+
sf cms export workspace --target-org source-org --workspace-id 0ZuSOURCE --output-dir ./cms-landing-page-pairs --landing-page-pair-map ./landing-page-pairs.json --json
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
The bounded export retrieves complete exact-type inventories for `sfdc_cms__landingPage` and `sfdc_cms__landingPageTemplate` in the selected workspace, exports only the selected pages and resolved templates, and records deterministic `landingPageTemplatePairs` metadata. Each row binds the requested template title to the resolved canonical template API name, content key, and variant ID, plus the page API name/content key/variant ID. Compatibility is structural: each selected page must contain exactly one declared Landing Page Template relationship descriptor. The descriptor remains retained as a generic unsupported relationship; this baseline does not claim historical provenance and does not parse or compare the opaque relationship value. Multiple pages may bind the same exported template. No import mapping, destination lookup, body rewrite, journaling, or mutation is implemented by this flag.
|
|
441
472
|
|
|
442
473
|
#### Landing pages (`--landing-page-map`)
|
|
443
474
|
|
|
@@ -451,7 +482,9 @@ Export one or many `sfdc_cms__landingPage` components by exact API name. The sel
|
|
|
451
482
|
sf cms export workspace --target-org source-org --workspace-id 0ZuSOURCE --output-dir ./cms-landing-pages --landing-page-map ./landing-pages.json --json
|
|
452
483
|
```
|
|
453
484
|
|
|
454
|
-
The bounded import profile
|
|
485
|
+
The bounded import profile consumes the paired export evidence above. Source template selection is title-first; the independently retained canonical template API name/content key/variant ID and normalized page/template body hashes prove structural compatibility, not historical provenance. The opaque relationship descriptor is bound only through that declared pair; any additional unsupported relationship remains blocking. The outgoing page body receives no template-reference field injection.
|
|
486
|
+
|
|
487
|
+
The supported page shape retains the exact top-level body fields, the `sfdc_cms__dataGraphDataProvider` with `dataGraphApiName` and `dataspace`, and image blocks whose `source.type` is `imageReference`, whose `source.ref.contentKey` identifies the image, and whose URL begins with `/cms/media/{contentKey}`. Salesforce derives the page Label as `<target.apiName>--sfdc_cms__landingPage` and limits it to 80 characters, so `target.apiName` is limited to 57 characters.
|
|
455
488
|
|
|
456
489
|
```json
|
|
457
490
|
[
|
|
@@ -462,7 +495,7 @@ The bounded import profile supports only the captured landing-page shape: the ex
|
|
|
462
495
|
"apiName": "MCJV5RXRKOMRF5HD3OD3OFQSO5C4"
|
|
463
496
|
},
|
|
464
497
|
"target": {
|
|
465
|
-
"contentKey": "
|
|
498
|
+
"contentKey": "MCDDDDDDDDDDDDDDDDDDDDDDDDDD",
|
|
466
499
|
"apiName": "FreshLandingPage"
|
|
467
500
|
},
|
|
468
501
|
"imageDependencies": [
|
|
@@ -489,7 +522,9 @@ sf cms import workspace --target-org destination-org --workspace-id 0ZuTARGET --
|
|
|
489
522
|
sf cms import workspace --target-org destination-org --workspace-id 0ZuTARGET --source-dir ./cms-landing-pages --landing-page-map ./landing-page-map.json --apply --report-dir ./cms-landing-page-report --contract-version 1 --json
|
|
490
523
|
```
|
|
491
524
|
|
|
492
|
-
|
|
525
|
+
Destination template resolution uses the explicitly requested content key, or exact API name with exact-title fallback only after a successful zero-match API-name lookup. The resolved template must remain the same exact type/workspace, Draft, unpublished identity and body at preflight and immediately before CREATE. Image resolution is exact API name first within the destination workspace and `sfdc_cms__image` type; `targetTitle` is considered only after that lookup completes successfully with zero matches. Data Graph developer-name/data-space identity and target page identity are also revalidated.
|
|
526
|
+
|
|
527
|
+
Dry-run creates no report and performs no mutation, but returns the same `templatePrerequisites` evidence shape as apply preflight. Apply writes `workspace-import-run.json` before any mutation, then rebuilds the outgoing body from immutable source page/template baselines and fresh image/Data Graph resolutions immediately before each CREATE. It fails before CREATE on template status/body/workspace/type drift, image/Data Graph drift, or target page identity drift. Evidence includes the source page and declared source template identities, requested target selector, normalization version/body hashes, relationship descriptor binding, phase timestamps/status/hashes, final request-body SHA-256, and returned IDs. The final packed installed-host acceptance performed exactly one fresh Landing Page CREATE and independent readback, proving the bounded result Draft and unpublished while the source/original content remained unchanged. The acceptance matrix also exercised prerequisite and drift checks. There is no update, overwrite, upsert, publish, activate, send, implicit dependency deployment, or template-reference injection.
|
|
493
528
|
|
|
494
529
|
#### Editable HTML companion (`--editable-dir`)
|
|
495
530
|
|
|
@@ -658,7 +693,7 @@ The correlation table exists only at `result.externalReferenceCorrelations`. Eac
|
|
|
658
693
|
|
|
659
694
|
### Package layout and integrity
|
|
660
695
|
|
|
661
|
-
A workspace export package contains `manifest.json` plus regular item files. Packages without image candidates use manifest v1. Image candidates without `--experimental-media` remain JSON entries in a strict v2 manifest with an empty `media` array, no media binary files, a `MEDIA_EXPORT_FAILED` warning, and `partial` completeness. With explicit `--experimental-media`, successful image downloads use the same strict v2 manifest and add bijectively matched `media` descriptors and `cms.media` items. `manifest.json` is the sole package control file and the sole regular file excluded from `items[]`. Every other regular file must occur exactly once in `items[]`; directories are excluded, while symlinks and other special filesystem entries are rejected. Paths are relative POSIX-style paths.
|
|
696
|
+
A workspace export package contains `manifest.json` plus regular item files. Packages without image candidates use manifest v1. Paired landing-page exports can additionally contain deterministic `landingPageTemplatePairs` rows that bind each selected page item to a title-resolved canonical template item while retaining the page's generic unsupported relationship descriptor. Image candidates without `--experimental-media` remain JSON entries in a strict v2 manifest with an empty `media` array, no media binary files, a `MEDIA_EXPORT_FAILED` warning, and `partial` completeness. With explicit `--experimental-media`, successful image downloads use the same strict v2 manifest and add bijectively matched `media` descriptors and `cms.media` items. `manifest.json` is the sole package control file and the sole regular file excluded from `items[]`. Every other regular file must occur exactly once in `items[]`; directories are excluded, while symlinks and other special filesystem entries are rejected. Paths are relative POSIX-style paths.
|
|
662
697
|
|
|
663
698
|
Each item records exactly `{ path, sha256, kind, referenceId? }`, with lowercase SHA-256 calculated over the finalized exact file bytes. Import independently validates the manifest major, enumerates the package, rejects missing, substituted, duplicate-path, or unlisted files, and verifies every item hash. Only after the listed set and hashes are verified does it hash the exact `manifest.json` bytes and use that hash as package identity.
|
|
664
699
|
|
|
@@ -692,7 +727,7 @@ The experimental export uses the v67 `GET /connect/cms/items/search` operation.
|
|
|
692
727
|
|
|
693
728
|
String-array query values such as `contentSpaceOrFolderIds` and `languages` are serialized as repeated keys. Pagination reconstructs each request from the original filters instead of trusting `nextPageUri`, which was observed to remain present after an empty page. Delivery responses do not prove workspace ownership and exclude drafts. SOQL omitted a known record that remained readable through Connect REST, and CMS `9Pu` folders exposed no child-enumeration operation, so none of those alternatives establishes a complete inventory.
|
|
694
729
|
|
|
695
|
-
Current shipped export guards include an explicit single-workspace mode and a strict bulk preflight. Workspace enumeration is zero-based with `pageSize=250`, deduplicates exact IDs, rejects conflicting recognized types for the same ID during bulk preflight, ignores advertised totals as a termination signal, and continues until an empty page. It fails closed on repeated pages, no progress, malformed IDs, case/Unicode-equivalent IDs, or the 1,000-page cap. Bulk preflight canonicalizes every workspace with a GET, validates canonical ID and name, prefers recognized canonical `spaceType`, and uses recognized list type evidence only when the canonical detail type is absent and the exact ID matches. It rejects present malformed, null, or unsupported canonical type evidence, filters an explicit contradictory
|
|
730
|
+
Current shipped export guards include an explicit single-workspace mode and a strict bulk preflight. Workspace enumeration is zero-based with `pageSize=250`; a requested Marketing or Content bulk export is filtered server-side with `spaceType`, preventing unrelated workspace families from entering that preflight. Enumeration deduplicates exact IDs, rejects conflicting recognized types for the same ID during bulk preflight, ignores advertised totals as a termination signal, and continues until an empty page. It fails closed on repeated pages, no progress, malformed IDs, case/Unicode-equivalent IDs, or the 1,000-page cap. Bulk preflight canonicalizes every returned workspace with a GET, validates canonical ID and name, prefers recognized canonical `spaceType`, and uses recognized list type evidence only when the canonical detail type is absent and the exact ID matches. It rejects present malformed, null, or unsupported canonical type evidence, filters an explicit contradictory type, sorts by canonical ID, and rejects unsafe or colliding destinations before any export starts.
|
|
696
731
|
|
|
697
732
|
Per-workspace variant export remains atomic and best-effort: it verifies `managedContentSpaceId` in search rows and `contentSpace.id` in variant details, records ownership rejections and detail failures, refuses an existing destination, writes stable JSON to a temporary sibling directory, removes staging after failure, and renames staging only after all output is written. Bulk execution continues across workspace failures and emits a deterministic complete aggregate in both human and JSON modes.
|
|
698
733
|
|
|
@@ -15,9 +15,11 @@ export default class ExportWorkspace extends CmsCommand<WorkspaceExportCommandRe
|
|
|
15
15
|
'workspace-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
16
|
'workspace-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
17
|
'workspace-type': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
'email-fragment-map': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
19
|
'web-fragment-map': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
20
|
'landing-page-template-map': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
21
|
'landing-page-map': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
'landing-page-pair-map': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
23
|
'experimental-media': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
22
24
|
'editable-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
25
|
'output-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -5,6 +5,7 @@ import { assertSupportedMajor } from '../../../contracts/shared.js';
|
|
|
5
5
|
import { exportAllWorkspaces, normalizeWorkspaceType, } from '../../../services/bulk-export-workspaces.js';
|
|
6
6
|
import { defaultWorkspaceDestination, exportWorkspace, } from '../../../services/export-workspace.js';
|
|
7
7
|
import { preflightEditableExport } from '../../../services/editable-raw-html-export.js';
|
|
8
|
+
import { parseLandingPagePairSelectors } from '../../../services/landing-page-pair-export.js';
|
|
8
9
|
import { assertWorkspaceSelector, resolveWorkspace } from '../../../services/resolve-workspace.js';
|
|
9
10
|
import { apiVersionFlag, CmsCommand, targetOrgFlag } from '../../../command-base.js';
|
|
10
11
|
export default class ExportWorkspace extends CmsCommand {
|
|
@@ -13,9 +14,11 @@ export default class ExportWorkspace extends CmsCommand {
|
|
|
13
14
|
static examples = [
|
|
14
15
|
'<%= config.bin %> cms export workspace --target-org my-org --workspace-name "Main Site"',
|
|
15
16
|
'<%= config.bin %> cms export workspace --target-org my-org --workspace-id 0Zu... --output-dir ./cms-export --json',
|
|
17
|
+
'<%= config.bin %> cms export workspace --target-org my-org --workspace-id 0Zu... --output-dir ./cms-export --email-fragment-map ./email-fragments.json --json',
|
|
16
18
|
'<%= config.bin %> cms export workspace --target-org my-org --workspace-id 0Zu... --output-dir ./cms-export --web-fragment-map ./web-fragments.json --json',
|
|
17
19
|
'<%= config.bin %> cms export workspace --target-org my-org --workspace-id 0Zu... --output-dir ./cms-export --landing-page-template-map ./landing-page-templates.json --json',
|
|
18
20
|
'<%= config.bin %> cms export workspace --target-org my-org --workspace-id 0Zu... --output-dir ./cms-export --landing-page-map ./landing-pages.json --json',
|
|
21
|
+
'<%= config.bin %> cms export workspace --target-org my-org --workspace-id 0Zu... --output-dir ./cms-export --landing-page-pair-map ./landing-page-pairs.json --json',
|
|
19
22
|
'<%= config.bin %> cms export workspace --target-org my-org --workspace-id 0Zu... --output-dir ./cms-export --experimental-media --json',
|
|
20
23
|
'<%= config.bin %> cms export workspace --target-org my-org --all --workspace-type Marketing --output-dir ./cms --contract-version 1 --json',
|
|
21
24
|
'<%= config.bin %> cms export workspace --target-org source-org --workspace-id 0ZuSOURCE --output-dir ./cms-baseline --editable-dir ./cms-editable --json',
|
|
@@ -45,21 +48,61 @@ export default class ExportWorkspace extends CmsCommand {
|
|
|
45
48
|
parse: async (input) => normalizeWorkspaceType(input),
|
|
46
49
|
summary: 'Bulk-only workspace type filter: Marketing or Content (case-insensitive).',
|
|
47
50
|
}),
|
|
51
|
+
'email-fragment-map': Flags.file({
|
|
52
|
+
exists: true,
|
|
53
|
+
exclusive: [
|
|
54
|
+
'all',
|
|
55
|
+
'web-fragment-map',
|
|
56
|
+
'landing-page-template-map',
|
|
57
|
+
'landing-page-map',
|
|
58
|
+
'landing-page-pair-map',
|
|
59
|
+
],
|
|
60
|
+
summary: 'JSON array of exact sfdc_cms__emailFragment API names to export; every name must resolve exactly once.',
|
|
61
|
+
}),
|
|
48
62
|
'web-fragment-map': Flags.file({
|
|
49
63
|
exists: true,
|
|
50
|
-
exclusive: [
|
|
64
|
+
exclusive: [
|
|
65
|
+
'all',
|
|
66
|
+
'email-fragment-map',
|
|
67
|
+
'landing-page-template-map',
|
|
68
|
+
'landing-page-map',
|
|
69
|
+
'landing-page-pair-map',
|
|
70
|
+
],
|
|
51
71
|
summary: 'JSON array of exact sfdc_cms__webFragment API names to export; every name must resolve exactly once.',
|
|
52
72
|
}),
|
|
53
73
|
'landing-page-template-map': Flags.file({
|
|
54
74
|
exists: true,
|
|
55
|
-
exclusive: [
|
|
75
|
+
exclusive: [
|
|
76
|
+
'all',
|
|
77
|
+
'email-fragment-map',
|
|
78
|
+
'web-fragment-map',
|
|
79
|
+
'landing-page-map',
|
|
80
|
+
'landing-page-pair-map',
|
|
81
|
+
],
|
|
56
82
|
summary: 'JSON array of exact sfdc_cms__landingPageTemplate API names to export; every name must resolve exactly once.',
|
|
57
83
|
}),
|
|
58
84
|
'landing-page-map': Flags.file({
|
|
59
85
|
exists: true,
|
|
60
|
-
exclusive: [
|
|
86
|
+
exclusive: [
|
|
87
|
+
'all',
|
|
88
|
+
'email-fragment-map',
|
|
89
|
+
'web-fragment-map',
|
|
90
|
+
'landing-page-template-map',
|
|
91
|
+
'landing-page-pair-map',
|
|
92
|
+
],
|
|
61
93
|
summary: 'JSON array of exact sfdc_cms__landingPage API names to export; every name must resolve exactly once.',
|
|
62
94
|
}),
|
|
95
|
+
'landing-page-pair-map': Flags.file({
|
|
96
|
+
exists: true,
|
|
97
|
+
exclusive: [
|
|
98
|
+
'all',
|
|
99
|
+
'email-fragment-map',
|
|
100
|
+
'web-fragment-map',
|
|
101
|
+
'landing-page-template-map',
|
|
102
|
+
'landing-page-map',
|
|
103
|
+
],
|
|
104
|
+
summary: 'JSON pairs of exact landing-page API name and exact source template title; the template API name is optional corroboration.',
|
|
105
|
+
}),
|
|
63
106
|
'experimental-media': Flags.boolean({
|
|
64
107
|
exclusive: ['all'],
|
|
65
108
|
summary: 'Single-workspace only: opt into undocumented image binary transport and strict v2 media output.',
|
|
@@ -129,7 +172,11 @@ export default class ExportWorkspace extends CmsCommand {
|
|
|
129
172
|
destination = defaultWorkspaceDestination(workspaceName);
|
|
130
173
|
}
|
|
131
174
|
const experimentalMedia = flags['experimental-media'] === true ? resolveExperimentalMedia(connection) : undefined;
|
|
132
|
-
const
|
|
175
|
+
const pairSelectionFile = flags['landing-page-pair-map'];
|
|
176
|
+
const selectionFile = flags['email-fragment-map'] ??
|
|
177
|
+
flags['web-fragment-map'] ??
|
|
178
|
+
flags['landing-page-template-map'] ??
|
|
179
|
+
flags['landing-page-map'];
|
|
133
180
|
const selectedApiNames = selectionFile === undefined
|
|
134
181
|
? undefined
|
|
135
182
|
: JSON.parse(await readFile(selectionFile, 'utf8'));
|
|
@@ -138,8 +185,13 @@ export default class ExportWorkspace extends CmsCommand {
|
|
|
138
185
|
selectedApiNames.some((value) => typeof value !== 'string'))) {
|
|
139
186
|
throw new TypeError('Component map must contain a JSON array of API-name strings.');
|
|
140
187
|
}
|
|
188
|
+
const landingPagePairs = pairSelectionFile === undefined
|
|
189
|
+
? undefined
|
|
190
|
+
: parseLandingPagePairSelectors(JSON.parse(await readFile(pairSelectionFile, 'utf8')));
|
|
141
191
|
let selectedContentType;
|
|
142
|
-
if (flags['
|
|
192
|
+
if (flags['email-fragment-map'] !== undefined)
|
|
193
|
+
selectedContentType = 'sfdc_cms__emailFragment';
|
|
194
|
+
else if (flags['web-fragment-map'] !== undefined)
|
|
143
195
|
selectedContentType = 'sfdc_cms__webFragment';
|
|
144
196
|
else if (flags['landing-page-template-map'] !== undefined)
|
|
145
197
|
selectedContentType = 'sfdc_cms__landingPageTemplate';
|
|
@@ -155,6 +207,7 @@ export default class ExportWorkspace extends CmsCommand {
|
|
|
155
207
|
apiNames: selectedApiNames,
|
|
156
208
|
},
|
|
157
209
|
}),
|
|
210
|
+
...(landingPagePairs === undefined ? {} : { landingPagePairs }),
|
|
158
211
|
pluginVersion: this.pluginVersion,
|
|
159
212
|
sourceOrgId: orgId,
|
|
160
213
|
...(experimentalMedia === undefined ? {} : { experimentalMedia }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../src/commands/cms/export/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,8BAA8B,GAE/B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAoB,MAAM,8BAA8B,CAAC;AACtF,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,2BAA2B,EAC3B,eAAe,GAGhB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIrF,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAwC;IAC5E,MAAM,CAAU,OAAO,GAC5B,yFAAyF,CAAC;IACrF,MAAM,CAAU,WAAW,GAChC,uxBAAuxB,CAAC;IACnxB,MAAM,CAAU,QAAQ,GAAG;QAChC,yFAAyF;QACzF,mHAAmH;QACnH,2JAA2J;QAC3J,6KAA6K;QAC7K,2JAA2J;QAC3J,wIAAwI;QACxI,4IAA4I;QAC5I,0JAA0J;KAC3J,CAAC;IACK,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,aAAa;QAC3B,aAAa,EAAE,cAAc;QAC7B,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC;YAChC,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,gDAAgD;SAC1D,CAAC;QACF,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;YACjB,SAAS,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;YAC7C,OAAO,EAAE,6DAA6D;SACvE,CAAC;QACF,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC;YAC3B,SAAS,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;YACpC,OAAO,EAAE,uCAAuC;SACjD,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;YAClC,OAAO,EAAE,4CAA4C;SACtD,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,CAAC,KAAK,CAAC;YAClB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC;YACrD,OAAO,EAAE,2EAA2E;SACrF,CAAC;QACF,
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../src/commands/cms/export/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { CmsCommand } from '../../../command-base.js';
|
|
|
4
4
|
type WorkspaceImportCommandResult = WorkspaceImportResult | WorkspaceImageImportResultV2;
|
|
5
5
|
export default class ImportWorkspace extends CmsCommand<CmsEnvelope<WorkspaceImportCommandResult>> {
|
|
6
6
|
static readonly summary = "Safely plan or apply a create-only import into a CMS workspace.";
|
|
7
|
-
static readonly description = "Validates the complete source workspace export locally, selects a destination, and defaults to dry-run. The default profile checks source-key absence, but complete server conflict validation and destination name availability are not established. --native-copy-map selects bounded default-language raw-HTML email/template copies with fresh names and server-generated keys; --editable-dir applies verified HTML-only companion edits against the unchanged baseline. --email-fragment-map selects only the exact dependency-free sfdc_cms__emailFragment root/section/empty-column profile for create-only destination-default-language Drafts with fresh identities. --web-fragment-map selects exact sfdc_cms__webFragment API names, fresh create identities, and exact preserved or explicitly mapped Data Graph developer-name/data-space prerequisites. --landing-page-template-map selects exact sfdc_cms__landingPageTemplate API names with fresh identities and explicit typed CMS/Data Graph prerequisites. --landing-page-map selects
|
|
7
|
+
static readonly description = "Validates the complete source workspace export locally, selects a destination, and defaults to dry-run. The default profile checks source-key absence, but complete server conflict validation and destination name availability are not established. --native-copy-map selects bounded default-language raw-HTML email/template copies with fresh names and server-generated keys; --editable-dir applies verified HTML-only companion edits against the unchanged baseline. --email-fragment-map selects only the exact dependency-free sfdc_cms__emailFragment root/section/empty-column profile for create-only destination-default-language Drafts with fresh identities. --web-fragment-map selects exact sfdc_cms__webFragment API names, fresh create identities, and exact preserved or explicitly mapped Data Graph developer-name/data-space prerequisites. --landing-page-template-map selects exact sfdc_cms__landingPageTemplate API names with fresh identities and explicit typed CMS/Data Graph prerequisites. --landing-page-map selects paired sfdc_cms__landingPage exports with an explicitly declared destination Landing Page Template plus exact image and Data Graph prerequisites. Source pairing is title-first and the canonical package template identity is retained as compatibility evidence, not historical provenance. --image-map selects strict workspace package v2 images for exact destination preflight and sequential create-only apply under contract version 2. Profile map flags are mutually exclusive. Native and edited HTML is not resolved, rewritten, sanitized, or scanned through Phase 7. Pass --apply with a new --report-dir. No updates, publication, activation, send, rollback, or package transaction.";
|
|
8
8
|
static readonly examples: string[];
|
|
9
9
|
static readonly flags: {
|
|
10
10
|
'target-org': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -13,7 +13,7 @@ import { applyImageImports, planImageImports, preflightImageImports, } from '../
|
|
|
13
13
|
import { apiVersionFlag, CmsCommand, targetOrgFlag } from '../../../command-base.js';
|
|
14
14
|
export default class ImportWorkspace extends CmsCommand {
|
|
15
15
|
static summary = 'Safely plan or apply a create-only import into a CMS workspace.';
|
|
16
|
-
static description = 'Validates the complete source workspace export locally, selects a destination, and defaults to dry-run. The default profile checks source-key absence, but complete server conflict validation and destination name availability are not established. --native-copy-map selects bounded default-language raw-HTML email/template copies with fresh names and server-generated keys; --editable-dir applies verified HTML-only companion edits against the unchanged baseline. --email-fragment-map selects only the exact dependency-free sfdc_cms__emailFragment root/section/empty-column profile for create-only destination-default-language Drafts with fresh identities. --web-fragment-map selects exact sfdc_cms__webFragment API names, fresh create identities, and exact preserved or explicitly mapped Data Graph developer-name/data-space prerequisites. --landing-page-template-map selects exact sfdc_cms__landingPageTemplate API names with fresh identities and explicit typed CMS/Data Graph prerequisites. --landing-page-map selects
|
|
16
|
+
static description = 'Validates the complete source workspace export locally, selects a destination, and defaults to dry-run. The default profile checks source-key absence, but complete server conflict validation and destination name availability are not established. --native-copy-map selects bounded default-language raw-HTML email/template copies with fresh names and server-generated keys; --editable-dir applies verified HTML-only companion edits against the unchanged baseline. --email-fragment-map selects only the exact dependency-free sfdc_cms__emailFragment root/section/empty-column profile for create-only destination-default-language Drafts with fresh identities. --web-fragment-map selects exact sfdc_cms__webFragment API names, fresh create identities, and exact preserved or explicitly mapped Data Graph developer-name/data-space prerequisites. --landing-page-template-map selects exact sfdc_cms__landingPageTemplate API names with fresh identities and explicit typed CMS/Data Graph prerequisites. --landing-page-map selects paired sfdc_cms__landingPage exports with an explicitly declared destination Landing Page Template plus exact image and Data Graph prerequisites. Source pairing is title-first and the canonical package template identity is retained as compatibility evidence, not historical provenance. --image-map selects strict workspace package v2 images for exact destination preflight and sequential create-only apply under contract version 2. Profile map flags are mutually exclusive. Native and edited HTML is not resolved, rewritten, sanitized, or scanned through Phase 7. Pass --apply with a new --report-dir. No updates, publication, activation, send, rollback, or package transaction.';
|
|
17
17
|
static examples = [
|
|
18
18
|
'<%= config.bin %> cms import workspace --target-org my-org --workspace-name "Destination" --source-dir ./cms/Source',
|
|
19
19
|
'<%= config.bin %> cms import workspace --target-org my-org --workspace-id 0Zu... --source-dir ./cms/Source --apply --report-dir ./cms-import-report --contract-version 1 --json',
|
|
@@ -103,7 +103,7 @@ export default class ImportWorkspace extends CmsCommand {
|
|
|
103
103
|
'editable-dir',
|
|
104
104
|
'image-map',
|
|
105
105
|
],
|
|
106
|
-
summary: 'JSON array selecting
|
|
106
|
+
summary: 'JSON array selecting paired cms/landingPage API names, fresh identities, an exact Draft template selector, and image/Data Graph prerequisites.',
|
|
107
107
|
}),
|
|
108
108
|
'image-map': Flags.file({
|
|
109
109
|
exists: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../src/commands/cms/import/workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../src/commands/cms/import/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,23 @@ export type WorkspaceExportMedia = {
|
|
|
27
27
|
sourceUrl: string;
|
|
28
28
|
transport: 'experimental-undocumented-authoring-media';
|
|
29
29
|
};
|
|
30
|
+
export type LandingPageTemplatePair = {
|
|
31
|
+
page: {
|
|
32
|
+
apiName: string;
|
|
33
|
+
contentKey: string;
|
|
34
|
+
variantId: string;
|
|
35
|
+
};
|
|
36
|
+
template: {
|
|
37
|
+
requestedTitle: string;
|
|
38
|
+
apiName: string;
|
|
39
|
+
contentKey: string;
|
|
40
|
+
variantId: string;
|
|
41
|
+
};
|
|
42
|
+
compatibility: {
|
|
43
|
+
basis: 'declared-source-pair';
|
|
44
|
+
relationship: 'opaque-structural-match';
|
|
45
|
+
};
|
|
46
|
+
};
|
|
30
47
|
export type WorkspaceExportManifest = {
|
|
31
48
|
schemaVersion: 1 | 2;
|
|
32
49
|
mode: 'experimental-best-effort';
|
|
@@ -64,6 +81,7 @@ export type WorkspaceExportManifest = {
|
|
|
64
81
|
};
|
|
65
82
|
completeness: 'complete' | 'partial';
|
|
66
83
|
dependencies: string[];
|
|
84
|
+
landingPageTemplatePairs?: LandingPageTemplatePair[];
|
|
67
85
|
externalReferences: OpaqueCmsReference[];
|
|
68
86
|
items: WorkspaceExportManifestItem[];
|
|
69
87
|
};
|
|
@@ -29,6 +29,9 @@ export function assertWorkspaceExportManifest(value) {
|
|
|
29
29
|
'provenance',
|
|
30
30
|
'completeness',
|
|
31
31
|
'dependencies',
|
|
32
|
+
...(typeof value === 'object' && value !== null && 'landingPageTemplatePairs' in value
|
|
33
|
+
? ['landingPageTemplatePairs']
|
|
34
|
+
: []),
|
|
32
35
|
'externalReferences',
|
|
33
36
|
'items',
|
|
34
37
|
], 'manifest');
|
|
@@ -83,6 +86,7 @@ export function assertWorkspaceExportManifest(value) {
|
|
|
83
86
|
if (value.dependencies.length > 0) {
|
|
84
87
|
throw new TypeError('manifest.dependencies must be empty while dependency discovery is unavailable');
|
|
85
88
|
}
|
|
89
|
+
assertLandingPageTemplatePairs(value);
|
|
86
90
|
let previousReference = '';
|
|
87
91
|
const referenceIds = new Set();
|
|
88
92
|
for (const [index, reference] of value.externalReferences.entries()) {
|
|
@@ -128,6 +132,55 @@ export function assertWorkspaceExportManifest(value) {
|
|
|
128
132
|
throw new TypeError('manifest.completeness contradicts authoritative incompleteness evidence');
|
|
129
133
|
}
|
|
130
134
|
}
|
|
135
|
+
function assertLandingPageTemplatePairs(value) {
|
|
136
|
+
if (!('landingPageTemplatePairs' in value))
|
|
137
|
+
return;
|
|
138
|
+
if (!Array.isArray(value.landingPageTemplatePairs) ||
|
|
139
|
+
value.landingPageTemplatePairs.length === 0) {
|
|
140
|
+
throw new TypeError('manifest.landingPageTemplatePairs must be a nonempty array');
|
|
141
|
+
}
|
|
142
|
+
const entries = new Set(value.entries.map(({ variantId }) => variantId));
|
|
143
|
+
let previous = '';
|
|
144
|
+
const pageVariantIds = new Set();
|
|
145
|
+
for (const [index, pair] of value.landingPageTemplatePairs.entries()) {
|
|
146
|
+
const label = `manifest.landingPageTemplatePairs[${index}]`;
|
|
147
|
+
assertExactKeys(pair, ['page', 'template', 'compatibility'], label);
|
|
148
|
+
assertExactKeys(pair.page, ['apiName', 'contentKey', 'variantId'], `${label}.page`);
|
|
149
|
+
assertExactKeys(pair.template, ['requestedTitle', 'apiName', 'contentKey', 'variantId'], `${label}.template`);
|
|
150
|
+
assertExactKeys(pair.compatibility, ['basis', 'relationship'], `${label}.compatibility`);
|
|
151
|
+
for (const [field, fieldValue] of Object.entries(pair.page)) {
|
|
152
|
+
assertNonemptyString(fieldValue, `${label}.page.${field}`);
|
|
153
|
+
}
|
|
154
|
+
for (const [field, fieldValue] of Object.entries(pair.template)) {
|
|
155
|
+
assertNonemptyString(fieldValue, `${label}.template.${field}`);
|
|
156
|
+
}
|
|
157
|
+
if (pair.compatibility.basis !== 'declared-source-pair' ||
|
|
158
|
+
pair.compatibility.relationship !== 'opaque-structural-match') {
|
|
159
|
+
throw new TypeError(`${label}.compatibility is unsupported`);
|
|
160
|
+
}
|
|
161
|
+
const pageVariantId = pair.page.variantId;
|
|
162
|
+
const templateVariantId = pair.template.variantId;
|
|
163
|
+
if (!entries.has(pageVariantId) || !entries.has(templateVariantId)) {
|
|
164
|
+
throw new TypeError(`${label} must bind exported item variants`);
|
|
165
|
+
}
|
|
166
|
+
if (pageVariantId === templateVariantId) {
|
|
167
|
+
throw new TypeError(`${label} must bind distinct page and template variants`);
|
|
168
|
+
}
|
|
169
|
+
if (pageVariantIds.has(pageVariantId)) {
|
|
170
|
+
throw new TypeError('manifest.landingPageTemplatePairs contains a duplicate page');
|
|
171
|
+
}
|
|
172
|
+
pageVariantIds.add(pageVariantId);
|
|
173
|
+
const sortKey = [
|
|
174
|
+
pair.page.apiName,
|
|
175
|
+
pair.template.requestedTitle,
|
|
176
|
+
pair.template.apiName,
|
|
177
|
+
].join('\u0000');
|
|
178
|
+
if (sortKey.localeCompare(previous) < 0) {
|
|
179
|
+
throw new TypeError('manifest.landingPageTemplatePairs must be sorted');
|
|
180
|
+
}
|
|
181
|
+
previous = sortKey;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
131
184
|
function normalizedManifestPath(value) {
|
|
132
185
|
return value.startsWith('./') ? value.slice(2) : value;
|
|
133
186
|
}
|