@salesforce/plugin-bre-to-cml 1.0.2
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/LICENSE.txt +206 -0
- package/README.md +158 -0
- package/lib/commands/cml/convert/prod-cfg-rules.d.ts +29 -0
- package/lib/commands/cml/convert/prod-cfg-rules.js +226 -0
- package/lib/commands/cml/convert/prod-cfg-rules.js.map +1 -0
- package/lib/commands/cml/import/as-expression-set.d.ts +18 -0
- package/lib/commands/cml/import/as-expression-set.js +184 -0
- package/lib/commands/cml/import/as-expression-set.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +17 -0
- package/lib/index.js.map +1 -0
- package/lib/shared/bre-rules-generator.d.ts +20 -0
- package/lib/shared/bre-rules-generator.js +497 -0
- package/lib/shared/bre-rules-generator.js.map +1 -0
- package/lib/shared/cml.d.ts +2 -0
- package/lib/shared/cml.js +13 -0
- package/lib/shared/cml.js.map +1 -0
- package/lib/shared/constants/constants.d.ts +94 -0
- package/lib/shared/constants/constants.js +109 -0
- package/lib/shared/constants/constants.js.map +1 -0
- package/lib/shared/grouping.d.ts +4 -0
- package/lib/shared/grouping.js +88 -0
- package/lib/shared/grouping.js.map +1 -0
- package/lib/shared/models.d.ts +65 -0
- package/lib/shared/models.js +2 -0
- package/lib/shared/models.js.map +1 -0
- package/lib/shared/pcm-generator.d.ts +57 -0
- package/lib/shared/pcm-generator.js +418 -0
- package/lib/shared/pcm-generator.js.map +1 -0
- package/lib/shared/pcm-products.d.ts +14 -0
- package/lib/shared/pcm-products.js +125 -0
- package/lib/shared/pcm-products.js.map +1 -0
- package/lib/shared/pcm-products.types.d.ts +99 -0
- package/lib/shared/pcm-products.types.js +2 -0
- package/lib/shared/pcm-products.types.js.map +1 -0
- package/lib/shared/types/association.d.ts +15 -0
- package/lib/shared/types/association.js +64 -0
- package/lib/shared/types/association.js.map +1 -0
- package/lib/shared/types/base/annotated-cml-element-w-attributes.d.ts +10 -0
- package/lib/shared/types/base/annotated-cml-element-w-attributes.js +36 -0
- package/lib/shared/types/base/annotated-cml-element-w-attributes.js.map +1 -0
- package/lib/shared/types/base/annotated-cml-element.d.ts +9 -0
- package/lib/shared/types/base/annotated-cml-element.js +39 -0
- package/lib/shared/types/base/annotated-cml-element.js.map +1 -0
- package/lib/shared/types/base/types.d.ts +2 -0
- package/lib/shared/types/base/types.js +18 -0
- package/lib/shared/types/base/types.js.map +1 -0
- package/lib/shared/types/cml-attribute.d.ts +17 -0
- package/lib/shared/types/cml-attribute.js +84 -0
- package/lib/shared/types/cml-attribute.js.map +1 -0
- package/lib/shared/types/cml-constraint.d.ts +50 -0
- package/lib/shared/types/cml-constraint.js +277 -0
- package/lib/shared/types/cml-constraint.js.map +1 -0
- package/lib/shared/types/cml-domain.d.ts +25 -0
- package/lib/shared/types/cml-domain.js +132 -0
- package/lib/shared/types/cml-domain.js.map +1 -0
- package/lib/shared/types/cml-model.d.ts +39 -0
- package/lib/shared/types/cml-model.js +153 -0
- package/lib/shared/types/cml-model.js.map +1 -0
- package/lib/shared/types/cml-relation.d.ts +31 -0
- package/lib/shared/types/cml-relation.js +118 -0
- package/lib/shared/types/cml-relation.js.map +1 -0
- package/lib/shared/types/cml-type.d.ts +22 -0
- package/lib/shared/types/cml-type.js +111 -0
- package/lib/shared/types/cml-type.js.map +1 -0
- package/lib/shared/types/sobject.d.ts +13 -0
- package/lib/shared/types/sobject.js +2 -0
- package/lib/shared/types/sobject.js.map +1 -0
- package/lib/shared/types/types.d.ts +8 -0
- package/lib/shared/types/types.js +24 -0
- package/lib/shared/types/types.js.map +1 -0
- package/lib/shared/utils/association.utils.d.ts +61 -0
- package/lib/shared/utils/association.utils.js +175 -0
- package/lib/shared/utils/association.utils.js.map +1 -0
- package/lib/shared/utils/common.utils.d.ts +191 -0
- package/lib/shared/utils/common.utils.js +338 -0
- package/lib/shared/utils/common.utils.js.map +1 -0
- package/messages/call.external.service.md +20 -0
- package/messages/cml.convert.prod-cfg-rules.md +59 -0
- package/messages/cml.import.as-expression-set.md +32 -0
- package/messages/connect.org.md +19 -0
- package/messages/hello.world.md +29 -0
- package/oclif.lock +8313 -0
- package/oclif.manifest.json +209 -0
- package/package.json +227 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025, Salesforce, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import * as fs from 'node:fs/promises';
|
|
17
|
+
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
18
|
+
import { Messages } from '@salesforce/core';
|
|
19
|
+
import { parse as csvParse } from 'csv-parse/sync';
|
|
20
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
21
|
+
const messages = Messages.loadMessages('@salesforce/plugin-bre-to-cml', 'cml.import.as-expression-set');
|
|
22
|
+
export default class CmlImportAsExpressionSet extends SfCommand {
|
|
23
|
+
static summary = messages.getMessage('summary');
|
|
24
|
+
static description = messages.getMessage('description');
|
|
25
|
+
static examples = messages.getMessages('examples');
|
|
26
|
+
static flags = {
|
|
27
|
+
'target-org': Flags.requiredOrg(),
|
|
28
|
+
'api-version': Flags.orgApiVersion(),
|
|
29
|
+
'context-definition': Flags.string({
|
|
30
|
+
summary: messages.getMessage('flags.context-definition.summary'),
|
|
31
|
+
char: 'x',
|
|
32
|
+
required: true,
|
|
33
|
+
}),
|
|
34
|
+
'cml-api': Flags.string({
|
|
35
|
+
summary: messages.getMessage('flags.cml-api.summary'),
|
|
36
|
+
char: 'c',
|
|
37
|
+
required: true,
|
|
38
|
+
}),
|
|
39
|
+
'workspace-dir': Flags.directory({
|
|
40
|
+
summary: messages.getMessage('flags.workspace-dir.summary'),
|
|
41
|
+
char: 'd',
|
|
42
|
+
exists: true,
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
async run() {
|
|
46
|
+
const { flags } = await this.parse(CmlImportAsExpressionSet);
|
|
47
|
+
const cmlApiName = flags['cml-api'];
|
|
48
|
+
const contextDefinitionName = flags['context-definition'];
|
|
49
|
+
const targetOrg = flags['target-org'];
|
|
50
|
+
const workspaceDir = flags['workspace-dir'];
|
|
51
|
+
this.log(`Using Target Org: ${targetOrg.getUsername() ?? 'unknown'}`);
|
|
52
|
+
this.log(`Using Context Definition: ${contextDefinitionName}`);
|
|
53
|
+
this.log(`Using CML API: ${cmlApiName}`);
|
|
54
|
+
this.log(`Using Workspace Directory: ${workspaceDir ?? 'not specified'}`);
|
|
55
|
+
const conn = targetOrg.getConnection(flags['api-version']);
|
|
56
|
+
const cmlFileName = `${cmlApiName}.cml`;
|
|
57
|
+
const associationsFileName = `${cmlApiName}_Associations.csv`;
|
|
58
|
+
const cmlFullPath = workspaceDir ? `${workspaceDir}/${cmlFileName}` : cmlFileName;
|
|
59
|
+
const associationsFullPath = workspaceDir ? `${workspaceDir}/${associationsFileName}` : associationsFileName;
|
|
60
|
+
const cmlContent = await fs.readFile(cmlFullPath, 'utf8');
|
|
61
|
+
const contextDefinition = await conn
|
|
62
|
+
.sobject('ContextDefinition')
|
|
63
|
+
.findOne({ DeveloperName: contextDefinitionName }, ['Id', 'DeveloperName']);
|
|
64
|
+
if (!contextDefinition?.Id) {
|
|
65
|
+
this.error(`❌ Can't find '${contextDefinitionName}' context definition`);
|
|
66
|
+
}
|
|
67
|
+
this.log('📦 Create required expression set objects');
|
|
68
|
+
const { Id: existingExpressionSetId } = (await conn.sobject('ExpressionSet').findOne({ ApiName: cmlApiName }, ['Id'])) ?? {};
|
|
69
|
+
const { id: expressionSetId } = existingExpressionSetId
|
|
70
|
+
? { id: existingExpressionSetId }
|
|
71
|
+
: await conn.sobject('ExpressionSet').create({
|
|
72
|
+
ApiName: cmlApiName,
|
|
73
|
+
Name: cmlApiName,
|
|
74
|
+
UsageType: 'Constraint',
|
|
75
|
+
ResourceInitializationType: 'Off',
|
|
76
|
+
InterfaceSourceType: 'Constraint',
|
|
77
|
+
});
|
|
78
|
+
const { Id: expressionSetDefinitionId } = (await conn.sobject('ExpressionSetDefinition').findOne({ DeveloperName: cmlApiName }, ['Id'])) ?? {};
|
|
79
|
+
const { Id: expressionSetDefinitionVersionId } = (await conn
|
|
80
|
+
.sobject('ExpressionSetDefinitionVersion')
|
|
81
|
+
.findOne({ ExpressionSetDefinitionId: expressionSetDefinitionId }, ['Id'])) ?? {};
|
|
82
|
+
await conn
|
|
83
|
+
.sobject('ExpressionSetDefinitionContextDefinition')
|
|
84
|
+
.create({ ExpressionSetDefinitionId: expressionSetDefinitionId, ContextDefinitionId: contextDefinition?.Id });
|
|
85
|
+
this.log('✅ Created expression set objects');
|
|
86
|
+
this.log('📦 Update ExpressionSetDefinitionVersion with CML content');
|
|
87
|
+
const base64CmlContent = Buffer.from(cmlContent, 'binary').toString('base64');
|
|
88
|
+
await conn.requestPatch(`/sobjects/ExpressionSetDefinitionVersion/${expressionSetDefinitionVersionId}`, {
|
|
89
|
+
ConstraintModel: base64CmlContent,
|
|
90
|
+
});
|
|
91
|
+
this.log('✅ CML content uploaded');
|
|
92
|
+
this.log('📦 Prepare CML associations');
|
|
93
|
+
const associations = await this.readCsv(associationsFullPath);
|
|
94
|
+
const typeAssociations = associations.filter((a) => a.ConstraintModelTagType === 'Type');
|
|
95
|
+
const portAssociations = associations.filter((a) => a.ConstraintModelTagType === 'Port');
|
|
96
|
+
const productNameToId = new Map();
|
|
97
|
+
const productIdsStr = typeAssociations
|
|
98
|
+
.filter(({ $Product2ReferenceId }) => !!$Product2ReferenceId)
|
|
99
|
+
.map(({ $Product2ReferenceId }) => `'${$Product2ReferenceId}'`)
|
|
100
|
+
.join(',');
|
|
101
|
+
if (productIdsStr?.length) {
|
|
102
|
+
const productsSoql = `SELECT Id,Name FROM Product2 WHERE Name IN (${productIdsStr})`;
|
|
103
|
+
const productsQuery = await conn.query(productsSoql, { autoFetch: true });
|
|
104
|
+
productsQuery.records.forEach((r) => productNameToId.set(`${r.Name}`, `${r.Id}`));
|
|
105
|
+
}
|
|
106
|
+
const classNameToId = new Map();
|
|
107
|
+
const classIdsStr = typeAssociations
|
|
108
|
+
.filter(({ $ProductClassificationName }) => !!$ProductClassificationName)
|
|
109
|
+
.map(({ $ProductClassificationName }) => `'${$ProductClassificationName}'`)
|
|
110
|
+
.join(',');
|
|
111
|
+
if (classIdsStr?.length) {
|
|
112
|
+
const classificationsSoql = `SELECT Id,Name FROM ProductClassification WHERE Name IN (${classIdsStr})`;
|
|
113
|
+
const classificationsQuery = await conn.query(classificationsSoql, { autoFetch: true });
|
|
114
|
+
classificationsQuery.records.forEach((r) => classNameToId.set(`${r.Name}`, `${r.Id}`));
|
|
115
|
+
}
|
|
116
|
+
const parentAndChildToPrcId = new Map();
|
|
117
|
+
const parentProductIds = [...productNameToId.values()];
|
|
118
|
+
if (parentProductIds.length > 0) {
|
|
119
|
+
const prcSoql = `SELECT Id, ParentProductId, ChildProductId, ChildProductClassificationId FROM ProductRelatedComponent WHERE ParentProductId IN (${parentProductIds
|
|
120
|
+
.map((id) => `'${id}'`)
|
|
121
|
+
.join(',')})`;
|
|
122
|
+
(await conn.query(prcSoql, { autoFetch: true })).records.forEach((r) => {
|
|
123
|
+
if (!parentAndChildToPrcId.has(r.ParentProductId)) {
|
|
124
|
+
parentAndChildToPrcId.set(r.ParentProductId, new Map());
|
|
125
|
+
}
|
|
126
|
+
const childToPrcId = parentAndChildToPrcId.get(r.ParentProductId);
|
|
127
|
+
childToPrcId?.set(r.ChildProductId ?? r.ChildProductClassificationId ?? 'unexpected', r.Id ?? 'unexpected');
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
const newAssociations = [
|
|
131
|
+
...typeAssociations.map((a) => ({
|
|
132
|
+
ExpressionSetId: expressionSetId,
|
|
133
|
+
ConstraintModelTag: a.ConstraintModelTag,
|
|
134
|
+
ConstraintModelTagType: 'Type',
|
|
135
|
+
ReferenceObjectId: a.ReferenceObjectId.startsWith('01t')
|
|
136
|
+
? productNameToId.get(a.$Product2ReferenceId)
|
|
137
|
+
: classNameToId.get(a.$ProductClassificationName),
|
|
138
|
+
})),
|
|
139
|
+
...portAssociations.map((a) => {
|
|
140
|
+
const [parentProductName, childProductName, childClassName] = a.$ProductRelatedComponentKey.split('||');
|
|
141
|
+
const parentProductId = productNameToId.get(parentProductName) ?? 'unexpected';
|
|
142
|
+
const childProductIdOrClassId = (childProductName ? productNameToId.get(childProductName) : classNameToId.get(childClassName)) ??
|
|
143
|
+
'unexpected';
|
|
144
|
+
const prcId = parentAndChildToPrcId.get(parentProductId)?.get(childProductIdOrClassId);
|
|
145
|
+
return {
|
|
146
|
+
ExpressionSetId: expressionSetId,
|
|
147
|
+
ConstraintModelTag: a.ConstraintModelTag,
|
|
148
|
+
ConstraintModelTagType: 'Port',
|
|
149
|
+
ReferenceObjectId: prcId,
|
|
150
|
+
};
|
|
151
|
+
}),
|
|
152
|
+
];
|
|
153
|
+
const escoSoql = `SELECT Id, ExpressionSetId, ConstraintModelTag, ConstraintModelTagType, ReferenceObjectId FROM ExpressionSetConstraintObj WHERE ExpressionSetId = '${expressionSetId}'`;
|
|
154
|
+
const escos = (await conn.query(escoSoql, { autoFetch: true })).records.map((esco) => esco);
|
|
155
|
+
this.log('📦 Upload CML associations');
|
|
156
|
+
const associationtsToInsert = newAssociations.filter(({ ConstraintModelTag, ConstraintModelTagType, ReferenceObjectId }) => !escos.some((esco) => ConstraintModelTag === esco.ConstraintModelTag &&
|
|
157
|
+
ConstraintModelTagType === esco.ConstraintModelTagType &&
|
|
158
|
+
ReferenceObjectId === esco.ReferenceObjectId));
|
|
159
|
+
const saveResults = await conn.sobject('ExpressionSetConstraintObj').create(associationtsToInsert);
|
|
160
|
+
this.log('✅ Uploaded CML associations:');
|
|
161
|
+
if (escos.length) {
|
|
162
|
+
this.log(` existing associations: ${escos.map(({ Id }) => Id).join(', ')}`);
|
|
163
|
+
}
|
|
164
|
+
if (saveResults.length) {
|
|
165
|
+
this.log(` new associations: ${saveResults.map((r) => r.id).join(', ')}`);
|
|
166
|
+
}
|
|
167
|
+
this.log('✅ Done');
|
|
168
|
+
return {
|
|
169
|
+
path: 'src/commands/cml/import/as-expression-set.ts',
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
async readCsv(fullPath) {
|
|
173
|
+
const fileContent = await fs.readFile(fullPath, 'utf8');
|
|
174
|
+
if (!fileContent.trim()) {
|
|
175
|
+
this.error(`❌ Error reading ${fullPath}: File ${fullPath} is empty`);
|
|
176
|
+
}
|
|
177
|
+
const records = csvParse(fileContent, { bom: true, columns: true, skipEmptyLines: true });
|
|
178
|
+
if (!Array.isArray(records)) {
|
|
179
|
+
this.error(`❌ Error reading ${fullPath}: Invalid CSV format in ${fullPath}`);
|
|
180
|
+
}
|
|
181
|
+
return records;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=as-expression-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-expression-set.js","sourceRoot":"","sources":["../../../../src/commands/cml/import/as-expression-set.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025, Salesforce, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export default {};
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CmlModel } from './types/types.js';
|
|
2
|
+
import { ConfiguratorRuleInput } from './models.js';
|
|
3
|
+
import { Logger } from './utils/common.utils.js';
|
|
4
|
+
export declare class BreRulesGenerator {
|
|
5
|
+
#private;
|
|
6
|
+
private constructor();
|
|
7
|
+
static generateConstraints(cmlModel: CmlModel, breRulesGroup: ConfiguratorRuleInput[], logger: Logger): void;
|
|
8
|
+
private warn;
|
|
9
|
+
private generate;
|
|
10
|
+
private convertCriteria;
|
|
11
|
+
private xFindAllPaths;
|
|
12
|
+
private xFindPath;
|
|
13
|
+
private getExprLeftPrefix;
|
|
14
|
+
private convertRuleConditionToCmlExpression;
|
|
15
|
+
private findTargetTypeForCriteria;
|
|
16
|
+
private findTargetTypeForAction;
|
|
17
|
+
private findParentTargetType;
|
|
18
|
+
private convertAction;
|
|
19
|
+
private handleValidateAction;
|
|
20
|
+
}
|