@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.
Files changed (85) hide show
  1. package/LICENSE.txt +206 -0
  2. package/README.md +158 -0
  3. package/lib/commands/cml/convert/prod-cfg-rules.d.ts +29 -0
  4. package/lib/commands/cml/convert/prod-cfg-rules.js +226 -0
  5. package/lib/commands/cml/convert/prod-cfg-rules.js.map +1 -0
  6. package/lib/commands/cml/import/as-expression-set.d.ts +18 -0
  7. package/lib/commands/cml/import/as-expression-set.js +184 -0
  8. package/lib/commands/cml/import/as-expression-set.js.map +1 -0
  9. package/lib/index.d.ts +2 -0
  10. package/lib/index.js +17 -0
  11. package/lib/index.js.map +1 -0
  12. package/lib/shared/bre-rules-generator.d.ts +20 -0
  13. package/lib/shared/bre-rules-generator.js +497 -0
  14. package/lib/shared/bre-rules-generator.js.map +1 -0
  15. package/lib/shared/cml.d.ts +2 -0
  16. package/lib/shared/cml.js +13 -0
  17. package/lib/shared/cml.js.map +1 -0
  18. package/lib/shared/constants/constants.d.ts +94 -0
  19. package/lib/shared/constants/constants.js +109 -0
  20. package/lib/shared/constants/constants.js.map +1 -0
  21. package/lib/shared/grouping.d.ts +4 -0
  22. package/lib/shared/grouping.js +88 -0
  23. package/lib/shared/grouping.js.map +1 -0
  24. package/lib/shared/models.d.ts +65 -0
  25. package/lib/shared/models.js +2 -0
  26. package/lib/shared/models.js.map +1 -0
  27. package/lib/shared/pcm-generator.d.ts +57 -0
  28. package/lib/shared/pcm-generator.js +418 -0
  29. package/lib/shared/pcm-generator.js.map +1 -0
  30. package/lib/shared/pcm-products.d.ts +14 -0
  31. package/lib/shared/pcm-products.js +125 -0
  32. package/lib/shared/pcm-products.js.map +1 -0
  33. package/lib/shared/pcm-products.types.d.ts +99 -0
  34. package/lib/shared/pcm-products.types.js +2 -0
  35. package/lib/shared/pcm-products.types.js.map +1 -0
  36. package/lib/shared/types/association.d.ts +15 -0
  37. package/lib/shared/types/association.js +64 -0
  38. package/lib/shared/types/association.js.map +1 -0
  39. package/lib/shared/types/base/annotated-cml-element-w-attributes.d.ts +10 -0
  40. package/lib/shared/types/base/annotated-cml-element-w-attributes.js +36 -0
  41. package/lib/shared/types/base/annotated-cml-element-w-attributes.js.map +1 -0
  42. package/lib/shared/types/base/annotated-cml-element.d.ts +9 -0
  43. package/lib/shared/types/base/annotated-cml-element.js +39 -0
  44. package/lib/shared/types/base/annotated-cml-element.js.map +1 -0
  45. package/lib/shared/types/base/types.d.ts +2 -0
  46. package/lib/shared/types/base/types.js +18 -0
  47. package/lib/shared/types/base/types.js.map +1 -0
  48. package/lib/shared/types/cml-attribute.d.ts +17 -0
  49. package/lib/shared/types/cml-attribute.js +84 -0
  50. package/lib/shared/types/cml-attribute.js.map +1 -0
  51. package/lib/shared/types/cml-constraint.d.ts +50 -0
  52. package/lib/shared/types/cml-constraint.js +277 -0
  53. package/lib/shared/types/cml-constraint.js.map +1 -0
  54. package/lib/shared/types/cml-domain.d.ts +25 -0
  55. package/lib/shared/types/cml-domain.js +132 -0
  56. package/lib/shared/types/cml-domain.js.map +1 -0
  57. package/lib/shared/types/cml-model.d.ts +39 -0
  58. package/lib/shared/types/cml-model.js +153 -0
  59. package/lib/shared/types/cml-model.js.map +1 -0
  60. package/lib/shared/types/cml-relation.d.ts +31 -0
  61. package/lib/shared/types/cml-relation.js +118 -0
  62. package/lib/shared/types/cml-relation.js.map +1 -0
  63. package/lib/shared/types/cml-type.d.ts +22 -0
  64. package/lib/shared/types/cml-type.js +111 -0
  65. package/lib/shared/types/cml-type.js.map +1 -0
  66. package/lib/shared/types/sobject.d.ts +13 -0
  67. package/lib/shared/types/sobject.js +2 -0
  68. package/lib/shared/types/sobject.js.map +1 -0
  69. package/lib/shared/types/types.d.ts +8 -0
  70. package/lib/shared/types/types.js +24 -0
  71. package/lib/shared/types/types.js.map +1 -0
  72. package/lib/shared/utils/association.utils.d.ts +61 -0
  73. package/lib/shared/utils/association.utils.js +175 -0
  74. package/lib/shared/utils/association.utils.js.map +1 -0
  75. package/lib/shared/utils/common.utils.d.ts +191 -0
  76. package/lib/shared/utils/common.utils.js +338 -0
  77. package/lib/shared/utils/common.utils.js.map +1 -0
  78. package/messages/call.external.service.md +20 -0
  79. package/messages/cml.convert.prod-cfg-rules.md +59 -0
  80. package/messages/cml.import.as-expression-set.md +32 -0
  81. package/messages/connect.org.md +19 -0
  82. package/messages/hello.world.md +29 -0
  83. package/oclif.lock +8313 -0
  84. package/oclif.manifest.json +209 -0
  85. 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
@@ -0,0 +1,2 @@
1
+ declare const _default: {};
2
+ export default _default;
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
@@ -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
+ }