sf-plugin-cms 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +276 -20
- package/lib/commands/cms/export/workspace.d.ts +7 -1
- package/lib/commands/cms/export/workspace.js +113 -2
- package/lib/commands/cms/export/workspace.js.map +1 -1
- package/lib/commands/cms/import/workspace.d.ts +12 -4
- package/lib/commands/cms/import/workspace.js +167 -20
- package/lib/commands/cms/import/workspace.js.map +1 -1
- package/lib/commands/cms/info.js +21 -2
- package/lib/commands/cms/info.js.map +1 -1
- package/lib/contracts/info.d.ts +7 -4
- package/lib/contracts/info.js +17 -8
- package/lib/contracts/info.js.map +1 -1
- package/lib/contracts/shared.d.ts +2 -1
- package/lib/contracts/shared.js +11 -3
- package/lib/contracts/shared.js.map +1 -1
- package/lib/contracts/workspace-export.d.ts +41 -3
- package/lib/contracts/workspace-export.js +171 -5
- package/lib/contracts/workspace-export.js.map +1 -1
- package/lib/contracts/workspace-import.d.ts +65 -0
- package/lib/contracts/workspace-import.js +132 -1
- package/lib/contracts/workspace-import.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/services/cms-prerequisite-lookup.d.ts +16 -0
- package/lib/services/cms-prerequisite-lookup.js +89 -0
- package/lib/services/cms-prerequisite-lookup.js.map +1 -0
- package/lib/services/content-key.d.ts +9 -0
- package/lib/services/content-key.js +15 -0
- package/lib/services/content-key.js.map +1 -0
- package/lib/services/email-fragment.d.ts +15 -0
- package/lib/services/email-fragment.js +203 -0
- package/lib/services/email-fragment.js.map +1 -0
- package/lib/services/export-workspace.d.ts +15 -1
- package/lib/services/export-workspace.js +284 -51
- package/lib/services/export-workspace.js.map +1 -1
- package/lib/services/image-import.d.ts +91 -0
- package/lib/services/image-import.js +575 -0
- package/lib/services/image-import.js.map +1 -0
- package/lib/services/import-identities.js +5 -1
- package/lib/services/import-identities.js.map +1 -1
- package/lib/services/import-workspace.d.ts +63 -3
- package/lib/services/import-workspace.js +277 -26
- package/lib/services/import-workspace.js.map +1 -1
- package/lib/services/landing-page-pair-export.d.ts +31 -0
- package/lib/services/landing-page-pair-export.js +122 -0
- package/lib/services/landing-page-pair-export.js.map +1 -0
- package/lib/services/landing-page-template.d.ts +62 -0
- package/lib/services/landing-page-template.js +372 -0
- package/lib/services/landing-page-template.js.map +1 -0
- package/lib/services/landing-page.d.ts +87 -0
- package/lib/services/landing-page.js +355 -0
- package/lib/services/landing-page.js.map +1 -0
- package/lib/services/variant-identity.d.ts +14 -0
- package/lib/services/variant-identity.js +24 -0
- package/lib/services/variant-identity.js.map +1 -1
- package/lib/services/web-fragment.d.ts +47 -0
- package/lib/services/web-fragment.js +286 -0
- package/lib/services/web-fragment.js.map +1 -0
- package/lib/transport/experimental-media.d.ts +30 -0
- package/lib/transport/experimental-media.js +224 -0
- package/lib/transport/experimental-media.js.map +1 -0
- package/lib/transport/json-request.d.ts +9 -1
- package/lib/transport/json-request.js +30 -3
- package/lib/transport/json-request.js.map +1 -1
- package/lib/transport/multipart-image-create.d.ts +28 -0
- package/lib/transport/multipart-image-create.js +189 -0
- package/lib/transport/multipart-image-create.js.map +1 -0
- package/messages/cms.export.workspace.md +20 -0
- package/messages/cms.import.workspace.md +12 -2
- package/package.json +1 -1
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { assertExactKeys, assertIdentifier, assertNonemptyString, assertReferenceId, assertSha256, } from './shared.js';
|
|
2
2
|
export const WORKSPACE_IMPORT_CONTRACT = 'sf-cms-workspace-import';
|
|
3
|
+
export const WORKSPACE_IMPORT_CONTRACT_V2 = 'sf-cms-workspace-import@2';
|
|
3
4
|
export const WORKSPACE_IMPORT_OPERATIONS = ['created', 'matched', 'updated', 'unchanged'];
|
|
5
|
+
export const IMAGE_IMPORT_IDENTITY_FIELDS = ['contentKey', 'apiName', 'title', 'urlName'];
|
|
6
|
+
export const IMAGE_IMPORT_STRATEGIES = ['preserve', 'fresh', 'generated'];
|
|
7
|
+
export class InvalidImageImportMapError extends TypeError {
|
|
8
|
+
code = 'INVALID_IMAGE_IMPORT_MAP';
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'InvalidImageImportMapError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
4
14
|
export const WORKSPACE_IMPORT_MAPPING_STATUSES = [
|
|
5
15
|
'resolved',
|
|
6
16
|
'unresolved',
|
|
@@ -11,8 +21,125 @@ export const WORKSPACE_IMPORT_REFERENCE_STATUSES = [
|
|
|
11
21
|
...WORKSPACE_IMPORT_MAPPING_STATUSES,
|
|
12
22
|
'unsupported',
|
|
13
23
|
];
|
|
24
|
+
function assertComponentIdentity(value, label) {
|
|
25
|
+
const identity = value;
|
|
26
|
+
assertExactKeys(value, [
|
|
27
|
+
'family',
|
|
28
|
+
'type',
|
|
29
|
+
'apiName',
|
|
30
|
+
...(identity.title === undefined ? [] : ['title']),
|
|
31
|
+
...(identity.workspaceId === undefined ? [] : ['workspaceId']),
|
|
32
|
+
...(identity.language === undefined ? [] : ['language']),
|
|
33
|
+
...(identity.serverId === undefined ? [] : ['serverId']),
|
|
34
|
+
...(identity.version === undefined ? [] : ['version']),
|
|
35
|
+
], label);
|
|
36
|
+
if (identity.family !== 'cms')
|
|
37
|
+
throw new TypeError(`${label}.family is unsupported`);
|
|
38
|
+
assertIdentifier(identity.type, `${label}.type`);
|
|
39
|
+
assertNonemptyString(identity.apiName, `${label}.apiName`);
|
|
40
|
+
for (const key of ['title', 'workspaceId', 'language']) {
|
|
41
|
+
if (identity[key] !== undefined)
|
|
42
|
+
assertNonemptyString(identity[key], `${label}.${key}`);
|
|
43
|
+
}
|
|
44
|
+
if (identity.serverId !== undefined)
|
|
45
|
+
assertIdentifier(identity.serverId, `${label}.serverId`);
|
|
46
|
+
if (identity.version !== undefined)
|
|
47
|
+
assertNonemptyString(identity.version, `${label}.version`);
|
|
48
|
+
}
|
|
49
|
+
export function assertWorkspaceImageImportResultV2(value) {
|
|
50
|
+
assertExactKeys(value, ['sourcePackage', 'target', 'status', 'assets'], 'result');
|
|
51
|
+
assertExactKeys(value.sourcePackage, ['manifestSha256', 'workspaceId', 'manifestVersion'], 'result.sourcePackage');
|
|
52
|
+
assertSha256(value.sourcePackage.manifestSha256, 'result.sourcePackage.manifestSha256');
|
|
53
|
+
assertIdentifier(value.sourcePackage.workspaceId, 'result.sourcePackage.workspaceId');
|
|
54
|
+
if (value.sourcePackage.manifestVersion !== 2)
|
|
55
|
+
throw new TypeError('result.sourcePackage.manifestVersion must be 2');
|
|
56
|
+
assertExactKeys(value.target, ['orgId', 'workspaceId'], 'result.target');
|
|
57
|
+
assertIdentifier(value.target.orgId, 'result.target.orgId');
|
|
58
|
+
assertIdentifier(value.target.workspaceId, 'result.target.workspaceId');
|
|
59
|
+
if (!['planned', 'completed', 'failed'].includes(value.status))
|
|
60
|
+
throw new TypeError('result.status is invalid');
|
|
61
|
+
if (!Array.isArray(value.assets) || value.assets.length === 0)
|
|
62
|
+
throw new TypeError('result.assets must be a nonempty array');
|
|
63
|
+
let previous = '';
|
|
64
|
+
const sources = new Set();
|
|
65
|
+
for (const [index, asset] of value.assets.entries()) {
|
|
66
|
+
const label = `result.assets[${index}]`;
|
|
67
|
+
assertExactKeys(asset, [
|
|
68
|
+
'source',
|
|
69
|
+
...(asset.resolution === undefined ? [] : ['resolution']),
|
|
70
|
+
...(asset.mutation === undefined ? [] : ['mutation']),
|
|
71
|
+
'identities',
|
|
72
|
+
'binary',
|
|
73
|
+
'metadataReadback',
|
|
74
|
+
'byteProof',
|
|
75
|
+
'operationStatus',
|
|
76
|
+
'reportStatus',
|
|
77
|
+
], label);
|
|
78
|
+
assertComponentIdentity(asset.source, `${label}.source`);
|
|
79
|
+
if (asset.resolution !== undefined) {
|
|
80
|
+
assertExactKeys(asset.resolution, ['method', 'target'], `${label}.resolution`);
|
|
81
|
+
if (!['explicit-map', 'api-name', 'title-fallback'].includes(asset.resolution.method)) {
|
|
82
|
+
throw new TypeError(`${label}.resolution.method is invalid`);
|
|
83
|
+
}
|
|
84
|
+
assertComponentIdentity(asset.resolution.target, `${label}.resolution.target`);
|
|
85
|
+
}
|
|
86
|
+
if (asset.mutation !== undefined) {
|
|
87
|
+
assertExactKeys(asset.mutation, ['requestSha256', 'contentId', 'variantId'], `${label}.mutation`);
|
|
88
|
+
assertSha256(asset.mutation.requestSha256, `${label}.mutation.requestSha256`);
|
|
89
|
+
assertIdentifier(asset.mutation.contentId, `${label}.mutation.contentId`);
|
|
90
|
+
assertIdentifier(asset.mutation.variantId, `${label}.mutation.variantId`);
|
|
91
|
+
}
|
|
92
|
+
const sourceKey = `${asset.source.family}\0${asset.source.type}\0${asset.source.apiName}`;
|
|
93
|
+
if (sourceKey.localeCompare(previous) < 0)
|
|
94
|
+
throw new TypeError('result.assets must be sorted by typed source identity');
|
|
95
|
+
if (sources.has(sourceKey))
|
|
96
|
+
throw new TypeError('duplicate result asset source');
|
|
97
|
+
previous = sourceKey;
|
|
98
|
+
sources.add(sourceKey);
|
|
99
|
+
assertExactKeys(asset.identities, IMAGE_IMPORT_IDENTITY_FIELDS, `${label}.identities`);
|
|
100
|
+
for (const field of IMAGE_IMPORT_IDENTITY_FIELDS) {
|
|
101
|
+
const plan = asset.identities[field];
|
|
102
|
+
const planLabel = `${label}.identities.${field}`;
|
|
103
|
+
assertExactKeys(plan, [
|
|
104
|
+
'strategy',
|
|
105
|
+
...(plan.source === undefined ? [] : ['source']),
|
|
106
|
+
...(plan.submitted === undefined ? [] : ['submitted']),
|
|
107
|
+
...(plan.returned === undefined ? [] : ['returned']),
|
|
108
|
+
], planLabel);
|
|
109
|
+
if (!IMAGE_IMPORT_STRATEGIES.includes(plan.strategy))
|
|
110
|
+
throw new TypeError(`${planLabel}.strategy is invalid`);
|
|
111
|
+
for (const key of ['source', 'submitted', 'returned']) {
|
|
112
|
+
if (plan[key] !== undefined)
|
|
113
|
+
assertNonemptyString(plan[key], `${planLabel}.${key}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
assertExactKeys(asset.binary, ['path', 'sha256', 'md5', 'bytes', 'mimeType'], `${label}.binary`);
|
|
117
|
+
assertNonemptyString(asset.binary.path, `${label}.binary.path`);
|
|
118
|
+
assertSha256(asset.binary.sha256, `${label}.binary.sha256`);
|
|
119
|
+
if (typeof asset.binary.md5 !== 'string' || !/^[a-f\d]{32}$/u.test(asset.binary.md5))
|
|
120
|
+
throw new TypeError(`${label}.binary.md5 is invalid`);
|
|
121
|
+
assertCount(asset.binary.bytes, `${label}.binary.bytes`);
|
|
122
|
+
assertNonemptyString(asset.binary.mimeType, `${label}.binary.mimeType`);
|
|
123
|
+
if (!['not-attempted', 'passed', 'failed'].includes(asset.metadataReadback))
|
|
124
|
+
throw new TypeError(`${label}.metadataReadback is invalid`);
|
|
125
|
+
if (!['passed', 'unavailable', 'failed'].includes(asset.byteProof))
|
|
126
|
+
throw new TypeError(`${label}.byteProof is invalid`);
|
|
127
|
+
if (!['planned', 'succeeded', 'failed'].includes(asset.operationStatus))
|
|
128
|
+
throw new TypeError(`${label}.operationStatus is invalid`);
|
|
129
|
+
if (!['not-created', 'recorded', 'failed'].includes(asset.reportStatus))
|
|
130
|
+
throw new TypeError(`${label}.reportStatus is invalid`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
14
133
|
export function assertWorkspaceImportResult(value) {
|
|
15
|
-
|
|
134
|
+
const result = value;
|
|
135
|
+
assertExactKeys(value, [
|
|
136
|
+
'sourcePackage',
|
|
137
|
+
'target',
|
|
138
|
+
'integrity',
|
|
139
|
+
'mappings',
|
|
140
|
+
'references',
|
|
141
|
+
...(result.templatePrerequisites === undefined ? [] : ['templatePrerequisites']),
|
|
142
|
+
], 'result');
|
|
16
143
|
assertExactKeys(value.sourcePackage, ['manifestSha256', 'workspaceId'], 'result.sourcePackage');
|
|
17
144
|
assertSha256(value.sourcePackage.manifestSha256, 'result.sourcePackage.manifestSha256');
|
|
18
145
|
assertIdentifier(value.sourcePackage.workspaceId, 'result.sourcePackage.workspaceId');
|
|
@@ -32,6 +159,10 @@ export function assertWorkspaceImportResult(value) {
|
|
|
32
159
|
if (!Array.isArray(value.mappings) || !Array.isArray(value.references)) {
|
|
33
160
|
throw new TypeError('result mappings/references arrays are required');
|
|
34
161
|
}
|
|
162
|
+
if (value.templatePrerequisites !== undefined &&
|
|
163
|
+
(!Array.isArray(value.templatePrerequisites) || value.templatePrerequisites.length === 0)) {
|
|
164
|
+
throw new TypeError('result.templatePrerequisites must be a nonempty array when present');
|
|
165
|
+
}
|
|
35
166
|
assertMappings(value.mappings);
|
|
36
167
|
assertReferences(value.references);
|
|
37
168
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-import.js","sourceRoot":"","sources":["../../src/contracts/workspace-import.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace-import.js","sourceRoot":"","sources":["../../src/contracts/workspace-import.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -5,4 +5,6 @@ export { default as GetWorkspace } from './commands/cms/get/workspace.js';
|
|
|
5
5
|
export { default as Info } from './commands/cms/info.js';
|
|
6
6
|
export { default as ListChannel } from './commands/cms/list/channel.js';
|
|
7
7
|
export { default as ListWorkspace } from './commands/cms/list/workspace.js';
|
|
8
|
-
export { executeWorkspaceImport, loadWorkspaceExport, planWorkspaceImport, type CreatedParentRecord, type DestinationWorkspace, type ExecuteWorkspaceImportOptions, type LoadedWorkspaceExport, type WorkspaceImportGroupPlan, type WorkspaceImportItem, type WorkspaceImportPlan, type WorkspaceImportExecutionResult, type WorkspaceImportRunReport, } from './services/import-workspace.js';
|
|
8
|
+
export { executeWorkspaceImport, loadWorkspaceExport, planWorkspaceImport, type CreatedParentRecord, type DestinationWorkspace, type ExecuteWorkspaceImportOptions, type LoadedWorkspaceExport, type WorkspaceImportGroupPlan, type WorkspaceImportItem, type WorkspaceImportPlan, type WorkspaceImportExecutionResult, type WorkspaceImportRunReport, type WorkspaceExportLoadProfile, } from './services/import-workspace.js';
|
|
9
|
+
export { applyImageImports, planImageImports, preflightImageImports, type ImageImportApplyOptions, type ImageImportApplyResult, type ImageImportMapField, type ImageImportMapRow, type ImageImportOperation, type ImageImportPreflightOptions, type ImageImportPreflightResult, type ImageImportReportPersistence, type ImageImportRunReport, type PlannedImageImport, } from './services/image-import.js';
|
|
10
|
+
export { assertWorkspaceImageImportResultV2, InvalidImageImportMapError, type WorkspaceImageImportAssetResult, type WorkspaceImageImportResultV2, } from './contracts/workspace-import.js';
|
package/lib/index.js
CHANGED
|
@@ -6,4 +6,6 @@ export { default as Info } from './commands/cms/info.js';
|
|
|
6
6
|
export { default as ListChannel } from './commands/cms/list/channel.js';
|
|
7
7
|
export { default as ListWorkspace } from './commands/cms/list/workspace.js';
|
|
8
8
|
export { executeWorkspaceImport, loadWorkspaceExport, planWorkspaceImport, } from './services/import-workspace.js';
|
|
9
|
+
export { applyImageImports, planImageImports, preflightImageImports, } from './services/image-import.js';
|
|
10
|
+
export { assertWorkspaceImageImportResultV2, InvalidImageImportMapError, } from './contracts/workspace-import.js';
|
|
9
11
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GAWpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GAWtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kCAAkC,EAClC,0BAA0B,GAG3B,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Connection } from '@salesforce/core';
|
|
2
|
+
import { type JsonRequestOptions } from '../transport/json-request.js';
|
|
3
|
+
type JsonRecord = Record<string, unknown>;
|
|
4
|
+
type RequestConnection = Pick<Connection, 'request'> & Partial<Pick<Connection, 'version'>>;
|
|
5
|
+
/**
|
|
6
|
+
* Search one destination workspace and return exact, fully read CMS variant matches.
|
|
7
|
+
* @param {RequestConnection} connection - Destination org connection.
|
|
8
|
+
* @param {string} workspaceId - Exact destination workspace ID.
|
|
9
|
+
* @param {string} contentType - Exact fully qualified CMS content type.
|
|
10
|
+
* @param {string} queryTerm - Server search term used only to obtain candidates.
|
|
11
|
+
* @param {(detail: JsonRecord) => boolean} predicate - Exact client-side match predicate.
|
|
12
|
+
* @param {JsonRequestOptions} options - Optional request metadata and signal.
|
|
13
|
+
* @returns {Promise<JsonRecord[]>} Exact detailed matches; zero, one, or many are preserved.
|
|
14
|
+
*/
|
|
15
|
+
export declare function lookupExactCmsVariants(connection: RequestConnection, workspaceId: string, contentType: string, queryTerm: string, predicate: (detail: JsonRecord) => boolean, options?: JsonRequestOptions): Promise<JsonRecord[]>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { getSelectedOperation, requestJson, } from '../transport/json-request.js';
|
|
2
|
+
import { getVariant } from './read.js';
|
|
3
|
+
import { requiredVariantIdentifier } from './variant-identity.js';
|
|
4
|
+
const PAGE_SIZE = 250;
|
|
5
|
+
const PAGE_CAP = 1000;
|
|
6
|
+
function record(value) {
|
|
7
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
8
|
+
}
|
|
9
|
+
function responseItems(value) {
|
|
10
|
+
if (!record(value) || !Array.isArray(value.items))
|
|
11
|
+
throw new TypeError('CMS prerequisite search must return items');
|
|
12
|
+
return value.items;
|
|
13
|
+
}
|
|
14
|
+
function responseCount(value) {
|
|
15
|
+
if (record(value)) {
|
|
16
|
+
for (const key of ['total', 'totalCount', 'count']) {
|
|
17
|
+
if (typeof value[key] === 'number' && Number.isInteger(value[key]) && value[key] >= 0)
|
|
18
|
+
return value[key];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
throw new TypeError('CMS prerequisite search must return a count');
|
|
22
|
+
}
|
|
23
|
+
function detailContentType(detail) {
|
|
24
|
+
return record(detail.contentType) ? detail.contentType.fullyQualifiedName : detail.contentType;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Search one destination workspace and return exact, fully read CMS variant matches.
|
|
28
|
+
* @param {RequestConnection} connection - Destination org connection.
|
|
29
|
+
* @param {string} workspaceId - Exact destination workspace ID.
|
|
30
|
+
* @param {string} contentType - Exact fully qualified CMS content type.
|
|
31
|
+
* @param {string} queryTerm - Server search term used only to obtain candidates.
|
|
32
|
+
* @param {(detail: JsonRecord) => boolean} predicate - Exact client-side match predicate.
|
|
33
|
+
* @param {JsonRequestOptions} options - Optional request metadata and signal.
|
|
34
|
+
* @returns {Promise<JsonRecord[]>} Exact detailed matches; zero, one, or many are preserved.
|
|
35
|
+
*/
|
|
36
|
+
export async function lookupExactCmsVariants(connection, workspaceId, contentType, queryTerm, predicate, options = {}) {
|
|
37
|
+
const candidates = new Map();
|
|
38
|
+
let expected;
|
|
39
|
+
for (let page = 0; page < PAGE_CAP; page += 1) {
|
|
40
|
+
const response = await requestJson(connection, getSelectedOperation('workspace.variant.search'), {
|
|
41
|
+
query: {
|
|
42
|
+
contentSpaceOrFolderIds: [workspaceId],
|
|
43
|
+
contentTypeFQN: contentType,
|
|
44
|
+
languages: ['All'],
|
|
45
|
+
page,
|
|
46
|
+
pageSize: PAGE_SIZE,
|
|
47
|
+
queryTerm,
|
|
48
|
+
},
|
|
49
|
+
}, options);
|
|
50
|
+
const items = responseItems(response.data);
|
|
51
|
+
const count = responseCount(response.data);
|
|
52
|
+
if (expected === undefined)
|
|
53
|
+
expected = count;
|
|
54
|
+
else if (expected !== count)
|
|
55
|
+
throw new TypeError('CMS prerequisite search count changed');
|
|
56
|
+
for (const item of items) {
|
|
57
|
+
if (!record(item) ||
|
|
58
|
+
item.type !== 'ManagedContentVariantSearchResultRepresentation' ||
|
|
59
|
+
typeof item.id !== 'string' ||
|
|
60
|
+
item.managedContentSpaceId !== workspaceId ||
|
|
61
|
+
candidates.has(item.id)) {
|
|
62
|
+
throw new TypeError('CMS prerequisite search returned ambiguous scope evidence');
|
|
63
|
+
}
|
|
64
|
+
candidates.set(item.id, true);
|
|
65
|
+
}
|
|
66
|
+
if (items.length === 0 || candidates.size >= count)
|
|
67
|
+
break;
|
|
68
|
+
if (page === PAGE_CAP - 1)
|
|
69
|
+
throw new TypeError('CMS prerequisite search exceeded page cap');
|
|
70
|
+
}
|
|
71
|
+
if (expected === undefined || candidates.size !== expected)
|
|
72
|
+
throw new TypeError('CMS prerequisite search count was not satisfied');
|
|
73
|
+
const matches = [];
|
|
74
|
+
for (const id of candidates.keys()) {
|
|
75
|
+
const detail = await getVariant(connection, id, options);
|
|
76
|
+
if (!record(detail.contentSpace) ||
|
|
77
|
+
detail.contentSpace.id !== workspaceId ||
|
|
78
|
+
detailContentType(detail) !== contentType) {
|
|
79
|
+
throw new TypeError('CMS prerequisite detail changed workspace or type scope');
|
|
80
|
+
}
|
|
81
|
+
if (requiredVariantIdentifier(detail, 'CMS prerequisite detail') !== id) {
|
|
82
|
+
throw new TypeError('CMS prerequisite detail changed variant identity');
|
|
83
|
+
}
|
|
84
|
+
if (predicate(detail))
|
|
85
|
+
matches.push(detail);
|
|
86
|
+
}
|
|
87
|
+
return matches;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=cms-prerequisite-lookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cms-prerequisite-lookup.js","sourceRoot":"","sources":["../../src/services/cms-prerequisite-lookup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const CANONICAL_CONTENT_KEY_PATTERN = "^MC[A-Z2-7]{26}$";
|
|
2
|
+
/**
|
|
3
|
+
* Require an explicitly submitted Enhanced CMS content key to use the canonical format.
|
|
4
|
+
* @param {string} value - Content key supplied by an import mapping.
|
|
5
|
+
* @param {string} label - Field label used in the validation error.
|
|
6
|
+
* @param {(message: string) => Error} errorFactory - Optional caller-specific error constructor.
|
|
7
|
+
* @returns {void}
|
|
8
|
+
*/
|
|
9
|
+
export declare function assertCanonicalContentKey(value: string, label: string, errorFactory?: (message: string) => Error): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const CANONICAL_CONTENT_KEY_PATTERN = '^MC[A-Z2-7]{26}$';
|
|
2
|
+
const CANONICAL_CONTENT_KEY = /^MC[A-Z2-7]{26}$/u;
|
|
3
|
+
/**
|
|
4
|
+
* Require an explicitly submitted Enhanced CMS content key to use the canonical format.
|
|
5
|
+
* @param {string} value - Content key supplied by an import mapping.
|
|
6
|
+
* @param {string} label - Field label used in the validation error.
|
|
7
|
+
* @param {(message: string) => Error} errorFactory - Optional caller-specific error constructor.
|
|
8
|
+
* @returns {void}
|
|
9
|
+
*/
|
|
10
|
+
export function assertCanonicalContentKey(value, label, errorFactory = (message) => new TypeError(message)) {
|
|
11
|
+
if (!CANONICAL_CONTENT_KEY.test(value)) {
|
|
12
|
+
throw errorFactory(`${label} must match ${CANONICAL_CONTENT_KEY_PATTERN}`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=content-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-key.js","sourceRoot":"","sources":["../../src/services/content-key.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,CAAC;AAEhE,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,KAAa,EACb,eAA2C,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC;IAE9E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,YAAY,CAAC,GAAG,KAAK,eAAe,6BAA6B,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LoadedWorkspaceExport, WorkspaceImportItem } from './import-workspace.js';
|
|
2
|
+
import type { PlannedImportIdentities } from './import-identities.js';
|
|
3
|
+
/**
|
|
4
|
+
* Validate the first evidenced, create-only email-fragment body shape.
|
|
5
|
+
* @param {WorkspaceImportItem} item - Integrity-verified import item to validate.
|
|
6
|
+
* @returns {void}
|
|
7
|
+
*/
|
|
8
|
+
export declare function assertEmailFragmentItem(item: WorkspaceImportItem): void;
|
|
9
|
+
/**
|
|
10
|
+
* Plan detached fresh identities for one default-language email-fragment variant per parent.
|
|
11
|
+
* @param {LoadedWorkspaceExport} source - Integrity-verified original workspace export.
|
|
12
|
+
* @param {unknown} input - Explicit selected source and fresh target identities.
|
|
13
|
+
* @returns {PlannedImportIdentities} Detached bounded fragment proposal.
|
|
14
|
+
*/
|
|
15
|
+
export declare function planEmailFragmentCopies(source: LoadedWorkspaceExport, input: unknown): PlannedImportIdentities;
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
2
|
+
import { assertCanonicalContentKey } from './content-key.js';
|
|
3
|
+
const EMAIL_FRAGMENT_TYPE = 'sfdc_cms__emailFragment';
|
|
4
|
+
const BLOCK_KEY = 'sfdc_cms:block';
|
|
5
|
+
const TITLE_KEY = 'sfdc_cms:title';
|
|
6
|
+
const URL_NAME_KEY = 'sfdc_cms:urlName';
|
|
7
|
+
const BODY_KEYS = [
|
|
8
|
+
'backgroundColor',
|
|
9
|
+
'lightning:backgroundImage',
|
|
10
|
+
'lightning:brandSource',
|
|
11
|
+
'lightning:colorScheme',
|
|
12
|
+
'lightning:dataProviders',
|
|
13
|
+
'lightning:expressions',
|
|
14
|
+
'lightning:padding',
|
|
15
|
+
'sfdc_cms:attachments',
|
|
16
|
+
BLOCK_KEY,
|
|
17
|
+
TITLE_KEY,
|
|
18
|
+
URL_NAME_KEY,
|
|
19
|
+
'sfdc_cms:variants',
|
|
20
|
+
];
|
|
21
|
+
const COMPONENT_DEFINITIONS = {
|
|
22
|
+
root: 'sfdc_cms/rootContentBlock',
|
|
23
|
+
section: 'lightning/section',
|
|
24
|
+
column: 'lightning/column',
|
|
25
|
+
};
|
|
26
|
+
const BACKGROUND_IMAGE = { position: 'center center', repeat: 'no-repeat', size: 'cover' };
|
|
27
|
+
const SECTION_ATTRIBUTES = {
|
|
28
|
+
'lightning:backgroundImage': BACKGROUND_IMAGE,
|
|
29
|
+
'lightning:borderRadius': '{!$brand.borderRadius.square}',
|
|
30
|
+
'lightning:borderWidth': '{!$brand.borderWeight.none}',
|
|
31
|
+
'lightning:colorScheme': '{!$brand.colorScheme}',
|
|
32
|
+
'lightning:margin': '{!$brand.spacing.none}',
|
|
33
|
+
'lightning:padding': '{!$brand.spacing.xSmall}',
|
|
34
|
+
reverseOrderOnMobile: false,
|
|
35
|
+
stackOnMobile: true,
|
|
36
|
+
};
|
|
37
|
+
const COLUMN_ATTRIBUTES = {
|
|
38
|
+
'lightning:backgroundImage': BACKGROUND_IMAGE,
|
|
39
|
+
'lightning:borderRadius': '{!$brand.borderRadius.square}',
|
|
40
|
+
'lightning:borderWidth': '{!$brand.borderWeight.none}',
|
|
41
|
+
'lightning:colorScheme': '{!$brand.colorScheme}',
|
|
42
|
+
'lightning:margin': '{!$brand.spacing.none}',
|
|
43
|
+
'lightning:padding': '{!$brand.spacing.xSmall}',
|
|
44
|
+
columnWidth: 12,
|
|
45
|
+
'lightning:verticalAlignment': 'top',
|
|
46
|
+
};
|
|
47
|
+
function record(value) {
|
|
48
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
49
|
+
}
|
|
50
|
+
function identity(value, label) {
|
|
51
|
+
if (typeof value !== 'string' || !/^[A-Za-z0-9_-]+$/u.test(value)) {
|
|
52
|
+
throw new TypeError(`${label} must be a nonempty identifier without whitespace or separators`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function exactKeys(value, keys, label) {
|
|
56
|
+
if (Object.keys(value).toSorted().join('\0') !== [...keys].toSorted().join('\0')) {
|
|
57
|
+
throw new TypeError(`${label} must contain exactly ${keys.join(', ')}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function exactValue(value, expected, label) {
|
|
61
|
+
if (!isDeepStrictEqual(value, expected)) {
|
|
62
|
+
throw new TypeError(`${label} must match the evidenced dependency-free profile`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function emptyArray(value, label) {
|
|
66
|
+
if (!Array.isArray(value) || value.length > 0) {
|
|
67
|
+
throw new TypeError(`${label} must be an empty array`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function children(value, label) {
|
|
71
|
+
if (!Array.isArray(value.children))
|
|
72
|
+
throw new TypeError(`${label}.children must be an array`);
|
|
73
|
+
return value.children;
|
|
74
|
+
}
|
|
75
|
+
function assertComponent(value, expected, label) {
|
|
76
|
+
if (!record(value))
|
|
77
|
+
throw new TypeError(`${label} must be an object`);
|
|
78
|
+
const expectedKeys = expected === 'root'
|
|
79
|
+
? ['children', 'definition', 'id', 'type']
|
|
80
|
+
: ['attributes', 'children', 'definition', 'id', 'type'];
|
|
81
|
+
exactKeys(value, expectedKeys, label);
|
|
82
|
+
if (value.definition !== COMPONENT_DEFINITIONS[expected] || value.type !== 'block') {
|
|
83
|
+
throw new TypeError(`${label} must use exact definition ${COMPONENT_DEFINITIONS[expected]} and type block`);
|
|
84
|
+
}
|
|
85
|
+
identity(value.id, `${label}.id`);
|
|
86
|
+
if (expected !== 'root') {
|
|
87
|
+
exactValue(value.attributes, expected === 'section' ? SECTION_ATTRIBUTES : COLUMN_ATTRIBUTES, `${label}.attributes`);
|
|
88
|
+
}
|
|
89
|
+
return value;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validate the first evidenced, create-only email-fragment body shape.
|
|
93
|
+
* @param {WorkspaceImportItem} item - Integrity-verified import item to validate.
|
|
94
|
+
* @returns {void}
|
|
95
|
+
*/
|
|
96
|
+
export function assertEmailFragmentItem(item) {
|
|
97
|
+
if (item.contentType !== EMAIL_FRAGMENT_TYPE) {
|
|
98
|
+
throw new TypeError(`Email fragment profile requires exact content type ${EMAIL_FRAGMENT_TYPE}`);
|
|
99
|
+
}
|
|
100
|
+
if (typeof item.apiName !== 'string' || item.apiName.length === 0 || item.title.length === 0) {
|
|
101
|
+
throw new TypeError('Email fragment identity and title are required');
|
|
102
|
+
}
|
|
103
|
+
exactKeys(item.contentBody, BODY_KEYS, 'Email fragment contentBody');
|
|
104
|
+
if (typeof item.contentBody[TITLE_KEY] !== 'string' || item.contentBody[TITLE_KEY].length === 0) {
|
|
105
|
+
throw new TypeError(`Email fragment body requires ${TITLE_KEY}`);
|
|
106
|
+
}
|
|
107
|
+
if (typeof item.contentBody[URL_NAME_KEY] !== 'string' ||
|
|
108
|
+
item.contentBody[URL_NAME_KEY].length === 0) {
|
|
109
|
+
throw new TypeError(`Email fragment body requires nonempty ${URL_NAME_KEY}`);
|
|
110
|
+
}
|
|
111
|
+
if (item.urlName !== item.contentBody[URL_NAME_KEY]) {
|
|
112
|
+
throw new TypeError(`Email fragment ${URL_NAME_KEY} must match the top-level urlName`);
|
|
113
|
+
}
|
|
114
|
+
if (item.contentBody.backgroundColor !== '#f3f3f3') {
|
|
115
|
+
throw new TypeError('Email fragment backgroundColor must match the evidenced profile');
|
|
116
|
+
}
|
|
117
|
+
exactValue(item.contentBody['lightning:backgroundImage'], BACKGROUND_IMAGE, 'lightning:backgroundImage');
|
|
118
|
+
exactValue(item.contentBody['lightning:brandSource'], { defaultBrandOption: 'sfdcBrand' }, 'lightning:brandSource');
|
|
119
|
+
if (item.contentBody['lightning:colorScheme'] !== '{!$brand.colorScheme}') {
|
|
120
|
+
throw new TypeError('lightning:colorScheme must match the evidenced profile');
|
|
121
|
+
}
|
|
122
|
+
if (item.contentBody['lightning:padding'] !== '{!$brand.spacing.none}') {
|
|
123
|
+
throw new TypeError('lightning:padding must match the evidenced profile');
|
|
124
|
+
}
|
|
125
|
+
emptyArray(item.contentBody['lightning:dataProviders'], 'lightning:dataProviders');
|
|
126
|
+
emptyArray(item.contentBody['lightning:expressions'], 'lightning:expressions');
|
|
127
|
+
emptyArray(item.contentBody['sfdc_cms:attachments'], 'sfdc_cms:attachments');
|
|
128
|
+
emptyArray(item.contentBody['sfdc_cms:variants'], 'sfdc_cms:variants');
|
|
129
|
+
const root = assertComponent(item.contentBody[BLOCK_KEY], 'root', `Email fragment ${BLOCK_KEY}`);
|
|
130
|
+
const rootChildren = children(root, `Email fragment ${BLOCK_KEY}`);
|
|
131
|
+
if (rootChildren.length !== 1)
|
|
132
|
+
throw new TypeError('Email fragment root must contain one section');
|
|
133
|
+
const section = assertComponent(rootChildren[0], 'section', 'Email fragment section');
|
|
134
|
+
const sectionChildren = children(section, 'Email fragment section');
|
|
135
|
+
if (sectionChildren.length !== 1)
|
|
136
|
+
throw new TypeError('Email fragment section must contain one column');
|
|
137
|
+
const column = assertComponent(sectionChildren[0], 'column', 'Email fragment column');
|
|
138
|
+
if (children(column, 'Email fragment column').length > 0) {
|
|
139
|
+
throw new TypeError('Email fragment column must be empty in this bounded profile');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Plan detached fresh identities for one default-language email-fragment variant per parent.
|
|
144
|
+
* @param {LoadedWorkspaceExport} source - Integrity-verified original workspace export.
|
|
145
|
+
* @param {unknown} input - Explicit selected source and fresh target identities.
|
|
146
|
+
* @returns {PlannedImportIdentities} Detached bounded fragment proposal.
|
|
147
|
+
*/
|
|
148
|
+
export function planEmailFragmentCopies(source, input) {
|
|
149
|
+
if (!source.integrity.verified)
|
|
150
|
+
throw new TypeError('Source integrity must be verified first');
|
|
151
|
+
if (!Array.isArray(input) || input.length === 0) {
|
|
152
|
+
throw new TypeError('Email fragment mappings must be a nonempty array');
|
|
153
|
+
}
|
|
154
|
+
const sourceKeys = new Set(source.items.map((item) => item.contentKey));
|
|
155
|
+
const sourceApiNames = new Set(source.items.map((item) => item.apiName));
|
|
156
|
+
const selected = new Set();
|
|
157
|
+
const targetKeys = new Set();
|
|
158
|
+
const targetApiNames = new Set();
|
|
159
|
+
const items = [];
|
|
160
|
+
for (const [index, row] of input.entries()) {
|
|
161
|
+
if (!record(row))
|
|
162
|
+
throw new TypeError('Email fragment mapping must be an object');
|
|
163
|
+
exactKeys(row, ['source', 'target'], `Email fragment mapping ${index}`);
|
|
164
|
+
if (!record(row.source))
|
|
165
|
+
throw new TypeError(`Email fragment mapping ${index}.source must be an object`);
|
|
166
|
+
exactKeys(row.source, ['family', 'type', 'apiName'], `Email fragment mapping ${index}.source`);
|
|
167
|
+
if (row.source.family !== 'cms' || row.source.type !== 'emailFragment') {
|
|
168
|
+
throw new TypeError(`Email fragment mapping ${index}.source must select cms/emailFragment`);
|
|
169
|
+
}
|
|
170
|
+
identity(row.source.apiName, `Email fragment mapping ${index}.source.apiName`);
|
|
171
|
+
const sourceApiName = row.source.apiName;
|
|
172
|
+
if (selected.has(sourceApiName)) {
|
|
173
|
+
throw new TypeError(`Duplicate email fragment selection: ${sourceApiName}`);
|
|
174
|
+
}
|
|
175
|
+
const matches = source.items.filter((item) => item.contentType === EMAIL_FRAGMENT_TYPE && item.apiName === sourceApiName);
|
|
176
|
+
if (matches.length !== 1) {
|
|
177
|
+
throw new TypeError(`Typed source API name must match exactly one email fragment: ${sourceApiName}`);
|
|
178
|
+
}
|
|
179
|
+
if (!record(row.target))
|
|
180
|
+
throw new TypeError(`Email fragment mapping ${index}.target must be an object`);
|
|
181
|
+
exactKeys(row.target, ['contentKey', 'apiName'], `Email fragment mapping ${index}.target`);
|
|
182
|
+
if (typeof row.target.contentKey !== 'string') {
|
|
183
|
+
throw new TypeError(`Email fragment mapping ${index}.target.contentKey must be a string`);
|
|
184
|
+
}
|
|
185
|
+
assertCanonicalContentKey(row.target.contentKey, `Email fragment mapping ${index}.target.contentKey`);
|
|
186
|
+
identity(row.target.apiName, `Email fragment mapping ${index}.target.apiName`);
|
|
187
|
+
const contentKey = row.target.contentKey;
|
|
188
|
+
const apiName = row.target.apiName;
|
|
189
|
+
if (sourceKeys.has(contentKey) || targetKeys.has(contentKey)) {
|
|
190
|
+
throw new TypeError('Target email fragment content keys must be fresh and unique');
|
|
191
|
+
}
|
|
192
|
+
if (sourceApiNames.has(apiName) || targetApiNames.has(apiName)) {
|
|
193
|
+
throw new TypeError('Target email fragment API names must be fresh and unique');
|
|
194
|
+
}
|
|
195
|
+
assertEmailFragmentItem(matches[0]);
|
|
196
|
+
selected.add(sourceApiName);
|
|
197
|
+
targetKeys.add(contentKey);
|
|
198
|
+
targetApiNames.add(apiName);
|
|
199
|
+
items.push({ ...matches[0], contentKey, apiName });
|
|
200
|
+
}
|
|
201
|
+
return { items, targetContentKeys: [...targetKeys].toSorted() };
|
|
202
|
+
}
|
|
203
|
+
//# 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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"}
|