@salesforce/plugin-bre-to-cml 1.3.0 → 1.3.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 +117 -4
- package/lib/commands/cml/convert/surcharge-rules.d.ts +12 -0
- package/lib/commands/cml/convert/surcharge-rules.js +79 -5
- package/lib/commands/cml/convert/surcharge-rules.js.map +1 -1
- package/lib/commands/cml/convert/underwriting-rules.d.ts +41 -2
- package/lib/commands/cml/convert/underwriting-rules.js +141 -17
- package/lib/commands/cml/convert/underwriting-rules.js.map +1 -1
- package/lib/commands/insurance/import/record-updates.d.ts +66 -0
- package/lib/commands/insurance/import/record-updates.js +239 -0
- package/lib/commands/insurance/import/record-updates.js.map +1 -0
- package/lib/shared/cml-operators.d.ts +9 -1
- package/lib/shared/cml-operators.js +23 -5
- package/lib/shared/cml-operators.js.map +1 -1
- package/lib/shared/insurance/confirm-org-changes.d.ts +49 -0
- package/lib/shared/insurance/confirm-org-changes.js +43 -0
- package/lib/shared/insurance/confirm-org-changes.js.map +1 -0
- package/lib/shared/insurance/insurance-cml-merge.d.ts +100 -13
- package/lib/shared/insurance/insurance-cml-merge.js +355 -54
- package/lib/shared/insurance/insurance-cml-merge.js.map +1 -1
- package/lib/shared/insurance/insurance-context-tags.d.ts +124 -0
- package/lib/shared/insurance/insurance-context-tags.js +210 -0
- package/lib/shared/insurance/insurance-context-tags.js.map +1 -0
- package/lib/shared/insurance/insurance-org.d.ts +12 -0
- package/lib/shared/insurance/insurance-org.js +38 -2
- package/lib/shared/insurance/insurance-org.js.map +1 -1
- package/lib/shared/insurance/insurance-rule-convert-command.d.ts +27 -0
- package/lib/shared/insurance/insurance-rule-convert-command.js +57 -4
- package/lib/shared/insurance/insurance-rule-convert-command.js.map +1 -1
- package/lib/shared/insurance/insurance-rule-generator.d.ts +101 -8
- package/lib/shared/insurance/insurance-rule-generator.js +293 -42
- package/lib/shared/insurance/insurance-rule-generator.js.map +1 -1
- package/lib/shared/insurance/models.d.ts +2 -1
- package/lib/shared/insurance/planned-change-mapper.d.ts +15 -0
- package/lib/shared/insurance/planned-change-mapper.js +51 -0
- package/lib/shared/insurance/planned-change-mapper.js.map +1 -0
- package/lib/shared/insurance/planned-change.d.ts +83 -0
- package/lib/shared/insurance/planned-change.js +74 -0
- package/lib/shared/insurance/planned-change.js.map +1 -0
- package/lib/shared/insurance/record-update-apply.d.ts +100 -0
- package/lib/shared/insurance/record-update-apply.js +303 -0
- package/lib/shared/insurance/record-update-apply.js.map +1 -0
- package/lib/shared/insurance/record-update-plan.d.ts +104 -0
- package/lib/shared/insurance/record-update-plan.js +397 -0
- package/lib/shared/insurance/record-update-plan.js.map +1 -0
- package/messages/cml.convert.surcharge-rules.md +3 -1
- package/messages/cml.convert.underwriting-rules.md +1 -1
- package/messages/insurance.import.record-updates.md +176 -0
- package/oclif.lock +25 -25
- package/oclif.manifest.json +95 -3
- package/package.json +16 -8
|
@@ -16,17 +16,93 @@
|
|
|
16
16
|
import { ASSOCIATION_TYPES, CML_DATA_TYPES, CONSTRAINT_TYPES } from '../constants/constants.js';
|
|
17
17
|
import { Association, CmlAttribute, CmlConstraint, CmlModel, CmlType } from '../types/types.js';
|
|
18
18
|
import { convertToCmlExpression, isKnownOperator, operatorRequiresValues } from '../cml-operators.js';
|
|
19
|
+
/**
|
|
20
|
+
* Source data type -> CML data type. Keyed uppercase because payloads are inconsistent about case
|
|
21
|
+
* ('Datetime' and 'DateTime' both occur in real RuleDefinitions) — the same normalization
|
|
22
|
+
* PcmGenerator's `dataTypeToCmlType` applies to its own keys.
|
|
23
|
+
*
|
|
24
|
+
* PcmGenerator declares these same attributes into the same model, so wherever both maps hold a
|
|
25
|
+
* key they must resolve it identically or one attribute ends up with two contradictory
|
|
26
|
+
* declarations. They do not otherwise mirror each other: this map additionally carries the
|
|
27
|
+
* spellings only a condition payload or an AttributePicklist produces (INTEGER, DECIMAL, DOUBLE,
|
|
28
|
+
* BOOLEAN, DATETIME), for which PcmGenerator has no entry.
|
|
29
|
+
*/
|
|
30
|
+
const SOURCE_DATA_TYPE_TO_CML = {
|
|
31
|
+
// decimal, not int: a Salesforce Number attribute may carry decimal places, and PcmGenerator
|
|
32
|
+
// declares one `decimal` in this same model.
|
|
33
|
+
NUMBER: CML_DATA_TYPES.DECIMAL,
|
|
34
|
+
INTEGER: CML_DATA_TYPES.INTEGER,
|
|
35
|
+
PERCENT: CML_DATA_TYPES.DECIMAL,
|
|
36
|
+
CURRENCY: CML_DATA_TYPES.DECIMAL,
|
|
37
|
+
DECIMAL: CML_DATA_TYPES.DECIMAL,
|
|
38
|
+
DOUBLE: CML_DATA_TYPES.DECIMAL,
|
|
39
|
+
BOOLEAN: CML_DATA_TYPES.BOOLEAN,
|
|
40
|
+
// 'Checkbox' is what AttributeDefinition.DataType calls a boolean attribute (AttributePicklist
|
|
41
|
+
// spells the same thing 'Boolean'), and fetchAttributeDataTypes passes it through verbatim.
|
|
42
|
+
CHECKBOX: CML_DATA_TYPES.BOOLEAN,
|
|
43
|
+
DATE: CML_DATA_TYPES.DATE,
|
|
44
|
+
DATETIME: CML_DATA_TYPES.DATE,
|
|
45
|
+
TEXT: CML_DATA_TYPES.STRING,
|
|
46
|
+
STRING: CML_DATA_TYPES.STRING,
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Resolves a source data type to a CML data type. An absent or unrecognized type falls back to
|
|
50
|
+
* STRING, which quotes the value — the conservative direction, since an unquoted value reaches the
|
|
51
|
+
* curated model verbatim.
|
|
52
|
+
*
|
|
53
|
+
* The `!dataType` guard also covers the empty string. Returning '' would be neither a known type
|
|
54
|
+
* nor STRING, so the value would take the unquoted path, fail the safe-literal guard, drop its
|
|
55
|
+
* condition, and collapse the whole declaration to `true` — a rule that then applies to everything.
|
|
56
|
+
*/
|
|
19
57
|
function dataTypeToCml(dataType) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
58
|
+
if (!dataType)
|
|
59
|
+
return CML_DATA_TYPES.STRING;
|
|
60
|
+
return SOURCE_DATA_TYPE_TO_CML[dataType.trim().toUpperCase()] ?? CML_DATA_TYPES.STRING;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The org is authoritative for a reference's type, so a resolved entry wins over the condition's own
|
|
64
|
+
* `dataType` snapshot: an AttributeDefinition for a condition carrying an `attributeId`, a
|
|
65
|
+
* ContextAttribute for a Tag condition (`attributeId` null, keyed by `contextTagName`). A Tag
|
|
66
|
+
* condition whose tag did not resolve still falls back to the snapshot — its rule is withheld
|
|
67
|
+
* downstream by the absent-reference gate, so the fallback only has to stay harmless, not correct.
|
|
68
|
+
*/
|
|
69
|
+
function conditionDataType(condition, attributeDataTypes, contextTagDataTypes) {
|
|
70
|
+
if (condition.attributeId) {
|
|
71
|
+
return attributeDataTypes?.get(condition.attributeId) ?? condition.dataType;
|
|
72
|
+
}
|
|
73
|
+
const tag = condition.contextTagName;
|
|
74
|
+
const resolved = tag ? contextTagDataTypes?.get(tag)?.sourceDataType : undefined;
|
|
75
|
+
return resolved ?? condition.dataType;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The context tags a rule actually EMITS a reference to — the Tag-condition counterpart of
|
|
79
|
+
* {@link collectEmittedAttributes}, and its exact discipline: a condition the safe-literal guard,
|
|
80
|
+
* an unknown operator or a missing value dropped contributes nothing, because its tag never reaches
|
|
81
|
+
* the declaration and so needs no binding.
|
|
82
|
+
*
|
|
83
|
+
* Names are returned RAW (not sanitized): the raw title is what resolves against ContextTag.Title
|
|
84
|
+
* and what the emitted `tagName` / `contextPath` annotation must carry. Sanitizing is the
|
|
85
|
+
* identifier's problem, not the binding's.
|
|
86
|
+
*/
|
|
87
|
+
export function collectEmittedContextTags(ruleDefs, attributeDataTypes, contextTagDataTypes) {
|
|
88
|
+
const tags = new Set();
|
|
89
|
+
for (const { ruleDef } of ruleDefs) {
|
|
90
|
+
for (const criteria of ruleDef.ruleCriteria ?? []) {
|
|
91
|
+
for (const cond of criteria.conditions ?? []) {
|
|
92
|
+
// Only a Tag condition needs a context binding. An Attribute condition (attributeId present)
|
|
93
|
+
// names a product attribute the curated model is expected to already declare, and is
|
|
94
|
+
// deliberately never auto-declared — see the merge module's absent-reference gate.
|
|
95
|
+
if (cond.attributeId)
|
|
96
|
+
continue;
|
|
97
|
+
if (!cond.contextTagName)
|
|
98
|
+
continue;
|
|
99
|
+
if (buildConditionExpression(cond, attributeDataTypes, contextTagDataTypes) === null)
|
|
100
|
+
continue;
|
|
101
|
+
tags.add(cond.contextTagName);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return tags;
|
|
30
106
|
}
|
|
31
107
|
export function sanitizeName(name) {
|
|
32
108
|
return name.replace(/[^a-zA-Z0-9]/g, '_');
|
|
@@ -71,18 +147,29 @@ const ALWAYS_UNQUOTED_OPERATORS = new Set([
|
|
|
71
147
|
'GreaterThan',
|
|
72
148
|
'GreaterThanOrEquals',
|
|
73
149
|
]);
|
|
74
|
-
// Operators
|
|
75
|
-
|
|
150
|
+
// Operators whose values are emitted unquoted unless cmlDataType === STRING. Equals/NotEquals go
|
|
151
|
+
// through doubleQuotedIfNeeded; In/NotIn expand into a chain of `==` comparisons that follows the
|
|
152
|
+
// same rule. In/NotIn are also the only multi-value operators here, so the guard below has to clear
|
|
153
|
+
// every element of the list, not just the first.
|
|
154
|
+
const VALUE_EQUALITY_OPERATORS = new Set(['Equals', 'NotEquals', 'In', 'NotIn']);
|
|
76
155
|
function isSafeNumericLiteral(value) {
|
|
77
156
|
return /^-?\d+(\.\d+)?$/.test(value.trim());
|
|
78
157
|
}
|
|
79
158
|
function isSafeBooleanLiteral(value) {
|
|
80
159
|
return /^(true|false)$/.test(value.trim());
|
|
81
160
|
}
|
|
82
|
-
// Bare date
|
|
83
|
-
//
|
|
161
|
+
// Bare date literal: YYYY-MM-DD and nothing else. No parens, operators, or whitespace that could
|
|
162
|
+
// break out of the unquoted slot — and no time component, because the only slot CML offers is
|
|
163
|
+
// `date`, which cannot hold one (see {@link isDateTimeLiteral}).
|
|
84
164
|
function isSafeDateLiteral(value) {
|
|
85
|
-
return /^\d{4}-\d{2}-\d{2}
|
|
165
|
+
return /^\d{4}-\d{2}-\d{2}$/.test(value.trim());
|
|
166
|
+
}
|
|
167
|
+
// A bare date carrying an ISO-8601 time component. Well-formed, but unrepresentable: CML's
|
|
168
|
+
// primitives are boolean/date/decimal/double/int/string/string[] — there is no datetime and no
|
|
169
|
+
// time. PcmGenerator takes the same view from the other side, filtering Datetime attributes out of
|
|
170
|
+
// the model entirely rather than declaring them as something else.
|
|
171
|
+
function isDateTimeLiteral(value) {
|
|
172
|
+
return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(value.trim());
|
|
86
173
|
}
|
|
87
174
|
// A value is safe to emit unquoted only if it is a bare literal of the target CML type. Anything
|
|
88
175
|
// that isn't (including strings, which must never reach an unquoted slot) is rejected.
|
|
@@ -122,7 +209,138 @@ export function isSafeAssociationReferenceValue(value) {
|
|
|
122
209
|
return false;
|
|
123
210
|
return !/[,'"\\\r\n]/.test(value);
|
|
124
211
|
}
|
|
125
|
-
|
|
212
|
+
/**
|
|
213
|
+
* Whether this operator/dataType pair emits its RHS UNQUOTED. Relational operators always do;
|
|
214
|
+
* Equals/NotEquals do whenever the cmlDataType is not STRING. On the unquoted path every value must
|
|
215
|
+
* be a bare safe literal; otherwise the value would land in the curated model verbatim and could
|
|
216
|
+
* inject CML or produce a type-unsafe comparison. A failing value drops the condition (callers
|
|
217
|
+
* filter nulls), exactly as an unknown operator or missing value does.
|
|
218
|
+
*/
|
|
219
|
+
function emitsUnquoted(op, cmlDataType) {
|
|
220
|
+
// DATE is the exception to "non-string emits bare", and it is not a style choice: an unquoted ISO
|
|
221
|
+
// literal does not compile against a `date` variable. Verified against a live model — `EndDate ==
|
|
222
|
+
// 2026-12-31` is folded to a constant and rejected with `false cannot be converted to the
|
|
223
|
+
// constraint`, and `EndDate > 2020-01-01` reports `Operator greatThan is not supported between
|
|
224
|
+
// DateExternalVar(EndDate) and DecimalConst(-2020.0000)`: the compiler reads the bare literal as
|
|
225
|
+
// arithmetic, not a date. Either one fails the DEPLOY, which takes down the whole model and every
|
|
226
|
+
// rule in it. The quoted form is a true date comparison — `> "2020-01-01"` / `> "2030-01-01"`
|
|
227
|
+
// ordered correctly against a live `2027-07-25` and tracked the field when it changed.
|
|
228
|
+
if (cmlDataType === CML_DATA_TYPES.DATE)
|
|
229
|
+
return false;
|
|
230
|
+
return (ALWAYS_UNQUOTED_OPERATORS.has(op) || (VALUE_EQUALITY_OPERATORS.has(op) && cmlDataType !== CML_DATA_TYPES.STRING));
|
|
231
|
+
}
|
|
232
|
+
// Operators the shared emitter turns into a CML `strcontain(...)` call — a string function, with no
|
|
233
|
+
// numeric, boolean or date counterpart.
|
|
234
|
+
const SUBSTRING_OPERATORS = new Set(['Contains', 'DoesNotContain']);
|
|
235
|
+
/**
|
|
236
|
+
* The reasons, if any, why a rule cannot be converted faithfully — one per offending condition.
|
|
237
|
+
* A rule with any reason must be SKIPPED with those reasons reported, never partially converted.
|
|
238
|
+
*
|
|
239
|
+
* Dropping just the offending condition is not an option: `buildConstraintDeclaration` returns
|
|
240
|
+
* `true` once every condition of a criteria is gone, and nothing downstream withholds a rule whose
|
|
241
|
+
* declaration is `true`, so a rule that lost its conditions arrives matching everything. That is
|
|
242
|
+
* the empty-`dataType` defect, and the guard exists so a new cause cannot re-create it. Dropping
|
|
243
|
+
* one condition of several is no better — it widens what the rule matches.
|
|
244
|
+
*
|
|
245
|
+
* Two of the three causes today are a condition CML has no primitive for.
|
|
246
|
+
*
|
|
247
|
+
* A date-typed condition whose value carries a time: CML has no datetime primitive, so the
|
|
248
|
+
* alternatives were to emit a timestamp into a `date` slot (platform behavior unverified) or to
|
|
249
|
+
* silently truncate it to its date part (changes what the rule matches, with no signal).
|
|
250
|
+
*
|
|
251
|
+
* A substring test (Contains / DoesNotContain) on an attribute that is not a string: `strcontain`
|
|
252
|
+
* is a string function, and against a `decimal`, `boolean` or `date` attribute there is nothing
|
|
253
|
+
* faithful to emit — quoting the value produces the never-fires type mismatch, and unquoting it is
|
|
254
|
+
* not a substring test at all.
|
|
255
|
+
*
|
|
256
|
+
* In both cases declining the rule and saying so beats emitting something that quietly does nothing.
|
|
257
|
+
*
|
|
258
|
+
* The third reason is not about one condition but about the rule as a whole: a rule whose criteria
|
|
259
|
+
* existed and lost EVERY condition — see {@link collapsesToUnconditional}. It is raised here rather
|
|
260
|
+
* than through a second mechanism because this function is the single point all three skip-reason
|
|
261
|
+
* collectors (`buildCmlModel`, `buildPathedSurchargeRules`, `buildUnderwritingConstraintRules`)
|
|
262
|
+
* already consult, so every caller withholds the rule the same way and a future caller cannot get
|
|
263
|
+
* half the behaviour.
|
|
264
|
+
*/
|
|
265
|
+
export function findUnconvertibleConditions(
|
|
266
|
+
// `apiName` / `name` are read only to name the rule in the whole-rule reason below; every real
|
|
267
|
+
// caller passes a ParsedRuleDefinition, which carries both.
|
|
268
|
+
ruleDef, attributeDataTypes, contextTagDataTypes) {
|
|
269
|
+
const reasons = [];
|
|
270
|
+
for (const criteria of ruleDef.ruleCriteria ?? []) {
|
|
271
|
+
for (const condition of criteria.conditions ?? []) {
|
|
272
|
+
// An unknown operator or a missing value already drops the condition for reasons this guard
|
|
273
|
+
// does not own; only classify conditions that would otherwise have emitted.
|
|
274
|
+
if (!isKnownOperator(condition.operator))
|
|
275
|
+
continue;
|
|
276
|
+
const values = condition.values ?? [];
|
|
277
|
+
if (values.length === 0)
|
|
278
|
+
continue;
|
|
279
|
+
const cmlDataType = dataTypeToCml(conditionDataType(condition, attributeDataTypes, contextTagDataTypes));
|
|
280
|
+
const attrName = condition.attributeName ?? condition.contextTagName ?? 'unknown';
|
|
281
|
+
if (SUBSTRING_OPERATORS.has(condition.operator) && cmlDataType !== CML_DATA_TYPES.STRING) {
|
|
282
|
+
reasons.push(`condition on '${attrName}' applies the substring test '${condition.operator}' to an attribute the model ` +
|
|
283
|
+
`declares ${cmlDataType}, which CML cannot represent — strcontain() is a string function, and there is ` +
|
|
284
|
+
'no numeric, boolean or date counterpart. Converting the rule would have to compare the value as text ' +
|
|
285
|
+
'against a non-text attribute, which imports cleanly and never fires, so the rule is left on the rule ' +
|
|
286
|
+
'engine. Re-model the condition as an equality or range comparison, or migrate this rule by hand.');
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
// Applies to every date-typed condition, quoted or not. It once keyed off the unquoted path
|
|
290
|
+
// because that was the only path a date took; now that dates are quoted, keying off it would
|
|
291
|
+
// silence the check entirely and let a timestamp through as a quoted string.
|
|
292
|
+
if (cmlDataType !== CML_DATA_TYPES.DATE)
|
|
293
|
+
continue;
|
|
294
|
+
const offending = values.find((v) => isDateTimeLiteral(v));
|
|
295
|
+
if (!offending)
|
|
296
|
+
continue;
|
|
297
|
+
reasons.push(`condition on '${attrName}' compares the timestamp '${offending.trim()}', which CML cannot represent — it ` +
|
|
298
|
+
'has no datetime primitive, and a `date` cannot carry a time. Converting the rule would have to drop the ' +
|
|
299
|
+
'time and change what it matches, so the rule is left on the rule engine. Re-model the condition against ' +
|
|
300
|
+
'a date-only attribute, or migrate this rule by hand.');
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Checked last, and only when nothing above spoke: a condition-specific refusal already says why
|
|
304
|
+
// the rule is withheld, so the whole-rule reason would just repeat it less usefully.
|
|
305
|
+
if (reasons.length === 0 && collapsesToUnconditional(ruleDef, attributeDataTypes, contextTagDataTypes)) {
|
|
306
|
+
const ruleName = ruleDef.apiName ?? ruleDef.name ?? 'unknown';
|
|
307
|
+
reasons.push(`the conditions of rule '${ruleName}' could not be converted — every one of them was dropped (an ` +
|
|
308
|
+
'unrecognized operator, a missing value, or a value the safe-literal / quotable-string guards ' +
|
|
309
|
+
'refused), leaving nothing to compare. Converting the rule would emit the unconditional ' +
|
|
310
|
+
'declaration `true`, which matches every quote rather than the set the rule selects, so the rule ' +
|
|
311
|
+
'is left on the rule engine. Correct the offending condition values or operators and re-run, or ' +
|
|
312
|
+
'migrate this rule by hand.');
|
|
313
|
+
}
|
|
314
|
+
return reasons;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Whether every condition of a rule that HAD conditions was dropped, leaving
|
|
318
|
+
* {@link buildConstraintDeclaration} nothing to build from.
|
|
319
|
+
*
|
|
320
|
+
* That function answers `'true'` from two places that mean opposite things. A rule with no criteria
|
|
321
|
+
* genuinely applies always, and curated models contain such lines — that `true` is correct. A rule
|
|
322
|
+
* whose criteria existed but lost every expression is a conversion FAILURE reported as success: the
|
|
323
|
+
* rule is placed as `rule(true, ...)` (or an always-satisfied constraint) and matches every quote.
|
|
324
|
+
* For a surcharge that means charging every customer. Only the second is a reason to withhold, and
|
|
325
|
+
* by the time the declaration exists the two are indistinguishable, so the distinction is drawn
|
|
326
|
+
* here from the criteria themselves.
|
|
327
|
+
*
|
|
328
|
+
* A criteria carrying no conditions dropped nothing either, so a rule made only of those is the
|
|
329
|
+
* genuinely-applies-always case in a different spelling, not a failure — hence the condition count
|
|
330
|
+
* rather than a `ruleCriteria.length` test.
|
|
331
|
+
*
|
|
332
|
+
* Losing SOME conditions is a related but distinct defect and deliberately out of scope: a criteria
|
|
333
|
+
* ANDs its conditions, so dropping one widens what the rule matches without collapsing it. That
|
|
334
|
+
* rule still emits.
|
|
335
|
+
*/
|
|
336
|
+
function collapsesToUnconditional(ruleDef, attributeDataTypes, contextTagDataTypes) {
|
|
337
|
+
const criteria = ruleDef.ruleCriteria ?? [];
|
|
338
|
+
const conditionCount = criteria.reduce((total, c) => total + (c.conditions?.length ?? 0), 0);
|
|
339
|
+
if (conditionCount === 0)
|
|
340
|
+
return false;
|
|
341
|
+
return criteria.every((c) => buildCriteriaExpression(c, attributeDataTypes, contextTagDataTypes) === null);
|
|
342
|
+
}
|
|
343
|
+
function buildConditionExpression(condition, attributeDataTypes, contextTagDataTypes) {
|
|
126
344
|
if (!isKnownOperator(condition.operator))
|
|
127
345
|
return null;
|
|
128
346
|
const op = condition.operator;
|
|
@@ -130,41 +348,59 @@ function buildConditionExpression(condition) {
|
|
|
130
348
|
return null;
|
|
131
349
|
}
|
|
132
350
|
const values = condition.values ?? [];
|
|
133
|
-
const cmlDataType = dataTypeToCml(condition
|
|
134
|
-
|
|
135
|
-
// always do; Equals/NotEquals do whenever the cmlDataType is not STRING. On the unquoted path we
|
|
136
|
-
// require every value to be a bare safe literal; otherwise the value would land in the curated
|
|
137
|
-
// model verbatim and could inject CML or produce a type-unsafe comparison. A failing value drops
|
|
138
|
-
// the condition (the caller filters nulls), exactly as an unknown operator or missing value does.
|
|
139
|
-
const emitsUnquoted = ALWAYS_UNQUOTED_OPERATORS.has(op) || (VALUE_EQUALITY_OPERATORS.has(op) && cmlDataType !== CML_DATA_TYPES.STRING);
|
|
140
|
-
if (emitsUnquoted) {
|
|
351
|
+
const cmlDataType = dataTypeToCml(conditionDataType(condition, attributeDataTypes, contextTagDataTypes));
|
|
352
|
+
if (emitsUnquoted(op, cmlDataType)) {
|
|
141
353
|
if (!values.every((v) => isSafeUnquotedLiteral(v, cmlDataType))) {
|
|
142
354
|
return null;
|
|
143
355
|
}
|
|
144
356
|
}
|
|
357
|
+
else if (cmlDataType === CML_DATA_TYPES.DATE) {
|
|
358
|
+
// A date is quoted (see {@link emitsUnquoted}) but is NOT a free-form string: the quotes make
|
|
359
|
+
// the compiler accept anything, so `EndDate == "next tuesday"` would deploy and never fire.
|
|
360
|
+
// Hold it to the same bare-date shape the unquoted path demanded.
|
|
361
|
+
if (!values.every(isSafeDateLiteral)) {
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
145
365
|
else if (!values.every(isSafeQuotableString)) {
|
|
146
366
|
// String-quoted path: reject values the shared escaper cannot safely contain (backslash, etc.).
|
|
147
367
|
return null;
|
|
148
368
|
}
|
|
149
369
|
const attrName = sanitizeName(condition.attributeName ?? condition.contextTagName ?? 'unknown');
|
|
150
|
-
|
|
370
|
+
// The shared emitter quotes only `string`, and never quotes a relational RHS at all — it is shared
|
|
371
|
+
// with the Revenue Cloud generator, whose date attributes are declared in-type rather than as the
|
|
372
|
+
// externs this evidence covers, so teaching it about dates would change a path this proof does not
|
|
373
|
+
// reach. Quote here instead. Safe to do by hand: isSafeDateLiteral above admits only YYYY-MM-DD,
|
|
374
|
+
// so there is nothing for escapeQuotes to escape.
|
|
375
|
+
const emitValues = cmlDataType === CML_DATA_TYPES.DATE && values.length > 0 ? values.map((v) => `"${v.trim()}"`) : condition.values;
|
|
376
|
+
return convertToCmlExpression(attrName, op, emitValues, cmlDataType);
|
|
151
377
|
}
|
|
152
|
-
function buildCriteriaExpression(criteria) {
|
|
378
|
+
function buildCriteriaExpression(criteria, attributeDataTypes, contextTagDataTypes) {
|
|
153
379
|
const parts = [];
|
|
154
380
|
if (criteria.conditions) {
|
|
155
381
|
for (const condition of criteria.conditions) {
|
|
156
|
-
const expr = buildConditionExpression(condition);
|
|
382
|
+
const expr = buildConditionExpression(condition, attributeDataTypes, contextTagDataTypes);
|
|
157
383
|
if (expr)
|
|
158
384
|
parts.push(expr);
|
|
159
385
|
}
|
|
160
386
|
}
|
|
161
387
|
return parts.length > 0 ? parts.join(' && ') : null;
|
|
162
388
|
}
|
|
163
|
-
|
|
389
|
+
/**
|
|
390
|
+
* Both `'true'` returns below are deliberate and stay total — the function must answer for any
|
|
391
|
+
* input, because merge mode builds a rule's statement before deciding whether to place it, and
|
|
392
|
+
* throwing here would bypass a caller's skip handling. Only the FIRST is a faithful conversion (a
|
|
393
|
+
* rule with no criteria really does always apply). The second means every expression was dropped,
|
|
394
|
+
* which {@link findUnconvertibleConditions} classifies as unconvertible so the callers that collect
|
|
395
|
+
* skip reasons withhold the rule instead of placing this declaration.
|
|
396
|
+
*/
|
|
397
|
+
export function buildConstraintDeclaration(ruleDef, attributeDataTypes, contextTagDataTypes) {
|
|
164
398
|
if (!ruleDef.ruleCriteria || ruleDef.ruleCriteria.length === 0) {
|
|
165
399
|
return 'true';
|
|
166
400
|
}
|
|
167
|
-
const expressions = ruleDef.ruleCriteria
|
|
401
|
+
const expressions = ruleDef.ruleCriteria
|
|
402
|
+
.map((criteria) => buildCriteriaExpression(criteria, attributeDataTypes, contextTagDataTypes))
|
|
403
|
+
.filter((e) => e !== null);
|
|
168
404
|
if (expressions.length === 0)
|
|
169
405
|
return 'true';
|
|
170
406
|
if (expressions.length === 1)
|
|
@@ -193,12 +429,12 @@ export function collectAttributes(ruleDefs) {
|
|
|
193
429
|
* noise on exactly the inputs the guard sanitized. Unlike `collectAttributes`, names are returned
|
|
194
430
|
* sanitized to match how they appear in the emitted declaration.
|
|
195
431
|
*/
|
|
196
|
-
export function collectEmittedAttributes(ruleDefs) {
|
|
432
|
+
export function collectEmittedAttributes(ruleDefs, attributeDataTypes, contextTagDataTypes) {
|
|
197
433
|
const attrs = new Set();
|
|
198
434
|
for (const { ruleDef } of ruleDefs) {
|
|
199
435
|
for (const criteria of ruleDef.ruleCriteria ?? []) {
|
|
200
436
|
for (const cond of criteria.conditions ?? []) {
|
|
201
|
-
if (buildConditionExpression(cond) === null)
|
|
437
|
+
if (buildConditionExpression(cond, attributeDataTypes, contextTagDataTypes) === null)
|
|
202
438
|
continue;
|
|
203
439
|
const name = cond.attributeName ?? cond.contextTagName;
|
|
204
440
|
if (name)
|
|
@@ -209,12 +445,15 @@ export function collectEmittedAttributes(ruleDefs) {
|
|
|
209
445
|
return attrs;
|
|
210
446
|
}
|
|
211
447
|
/**
|
|
212
|
-
* Derives the real CML data type for each collected attribute from its
|
|
213
|
-
* When an attribute appears with more than one distinct CML
|
|
214
|
-
* unknown, it falls back to STRING. Returned alongside (not
|
|
215
|
-
* collectAttributes, which merge mode still depends on.
|
|
448
|
+
* Derives the real CML data type for each collected attribute from its resolved data type (falling
|
|
449
|
+
* back to the condition's own `dataType`). When an attribute appears with more than one distinct CML
|
|
450
|
+
* type (a conflict), or its type is unknown, it falls back to STRING. Returned alongside (not
|
|
451
|
+
* replacing) the Set from collectAttributes, which merge mode still depends on.
|
|
452
|
+
*
|
|
453
|
+
* Shares `conditionDataType` with the declaration builder so an attribute is never declared as one
|
|
454
|
+
* type and then compared as another.
|
|
216
455
|
*/
|
|
217
|
-
export function collectAttributeTypes(ruleDefs) {
|
|
456
|
+
export function collectAttributeTypes(ruleDefs, attributeDataTypes) {
|
|
218
457
|
const types = new Map();
|
|
219
458
|
const conflicting = new Set();
|
|
220
459
|
for (const { ruleDef } of ruleDefs) {
|
|
@@ -223,7 +462,7 @@ export function collectAttributeTypes(ruleDefs) {
|
|
|
223
462
|
const name = cond.attributeName ?? cond.contextTagName;
|
|
224
463
|
if (!name)
|
|
225
464
|
continue;
|
|
226
|
-
const cmlType = dataTypeToCml(cond
|
|
465
|
+
const cmlType = dataTypeToCml(conditionDataType(cond, attributeDataTypes));
|
|
227
466
|
const existing = types.get(name);
|
|
228
467
|
if (existing === undefined) {
|
|
229
468
|
types.set(name, cmlType);
|
|
@@ -250,15 +489,27 @@ ruleType,
|
|
|
250
489
|
// drops the binding. Optional + last so the legacy (code-as-reference) call sites stay valid; the
|
|
251
490
|
// convert layer supplies only Names that passed isSafeAssociationReferenceValue, hence the
|
|
252
491
|
// unconditional ProductCode fallback below for any product missing a safe Name.
|
|
253
|
-
productIdToName
|
|
492
|
+
productIdToName,
|
|
493
|
+
// Org-resolved attribute types, so a picklist attribute is declared and compared as the type
|
|
494
|
+
// behind the picklist (e.g. decimal for a Currency picklist) rather than degrading to string.
|
|
495
|
+
attributeDataTypes) {
|
|
254
496
|
const cmlModel = new CmlModel();
|
|
497
|
+
const skipped = [];
|
|
255
498
|
const rulesByProduct = new Map();
|
|
256
499
|
for (const entry of ruleDefs) {
|
|
500
|
+
// Withheld here rather than at declaration time so an unconvertible rule contributes neither a
|
|
501
|
+
// constraint nor a ruleKeyMapping entry — the record is then never flipped to the constraint
|
|
502
|
+
// engine, leaving the rule live on the rule engine instead of disabled with nothing behind it.
|
|
503
|
+
const unconvertible = findUnconvertibleConditions(entry.ruleDef, attributeDataTypes);
|
|
504
|
+
if (unconvertible.length > 0) {
|
|
505
|
+
skipped.push({ recordId: entry.record.Id, name: entry.record.Name, reason: unconvertible.join(' ') });
|
|
506
|
+
continue;
|
|
507
|
+
}
|
|
257
508
|
// Trim the root segment so leading/trailing whitespace can't split one product into two
|
|
258
509
|
// groups, and skip a rule with a blank ProductPath (it can't be nested under any product)
|
|
259
510
|
// instead of materializing an empty-named type. Mirrors the trimming in
|
|
260
511
|
// collectAllProductIds / collectRootProductIds.
|
|
261
|
-
const rootProductId = entry.record.ProductPath.split('/')[0]?.trim();
|
|
512
|
+
const rootProductId = (entry.record.ProductPath ?? '').split('/')[0]?.trim();
|
|
262
513
|
if (!rootProductId)
|
|
263
514
|
continue;
|
|
264
515
|
if (!rulesByProduct.has(rootProductId)) {
|
|
@@ -272,7 +523,7 @@ productIdToName) {
|
|
|
272
523
|
const typeName = sanitizeName(productCode);
|
|
273
524
|
const productType = new CmlType(typeName, undefined, undefined);
|
|
274
525
|
const attrs = collectAttributes(productRules);
|
|
275
|
-
const attrTypes = collectAttributeTypes(productRules);
|
|
526
|
+
const attrTypes = collectAttributeTypes(productRules, attributeDataTypes);
|
|
276
527
|
for (const attrName of attrs) {
|
|
277
528
|
const cmlType = attrTypes.get(attrName) ?? CML_DATA_TYPES.STRING;
|
|
278
529
|
productType.addAttribute(new CmlAttribute(null, sanitizeName(attrName), cmlType));
|
|
@@ -281,7 +532,7 @@ productIdToName) {
|
|
|
281
532
|
const apiName = ruleDef.apiName ?? record.Name;
|
|
282
533
|
const stageTransition = buildStageTransition(ruleDef.underwritingRuleGroup);
|
|
283
534
|
const ruleKey = generateRuleKey(keyPrefix, productCode, apiName, stageTransition);
|
|
284
|
-
const declaration = buildConstraintDeclaration(ruleDef);
|
|
535
|
+
const declaration = buildConstraintDeclaration(ruleDef, attributeDataTypes);
|
|
285
536
|
const constraint = ruleType
|
|
286
537
|
? CmlConstraint.createRuleConstraint(declaration, ruleType, ruleKey, 'True')
|
|
287
538
|
: new CmlConstraint(CONSTRAINT_TYPES.CONSTRAINT, declaration, `"${constraintLabel}: ${record.Name}"`);
|
|
@@ -298,6 +549,6 @@ productIdToName) {
|
|
|
298
549
|
const referenceValue = productIdToName?.get(rootProductId) ?? productCode;
|
|
299
550
|
cmlModel.addAssociation(new Association(null, typeName, ASSOCIATION_TYPES.TYPE, rootProductId, 'Product2', referenceValue));
|
|
300
551
|
}
|
|
301
|
-
return { cmlModel, ruleKeyMapping };
|
|
552
|
+
return { cmlModel, ruleKeyMapping, skipped };
|
|
302
553
|
}
|
|
303
554
|
//# sourceMappingURL=insurance-rule-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insurance-rule-generator.js","sourceRoot":"","sources":["../../../src/shared/insurance/insurance-rule-generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"insurance-rule-generator.js","sourceRoot":"","sources":["../../../src/shared/insurance/insurance-rule-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,11 +31,12 @@ export type ParsedRuleDefinition = {
|
|
|
31
31
|
description?: string;
|
|
32
32
|
ruleCriteria?: RuleCriteria[];
|
|
33
33
|
underwritingRuleGroup?: UnderwritingRuleGroup;
|
|
34
|
+
surchargeId?: string;
|
|
34
35
|
};
|
|
35
36
|
export type RuleRecord = {
|
|
36
37
|
Id: string;
|
|
37
38
|
Name: string;
|
|
38
|
-
ProductPath: string;
|
|
39
|
+
ProductPath: string | null;
|
|
39
40
|
};
|
|
40
41
|
export type RuleKeyEntry = {
|
|
41
42
|
recordId: string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turns the apply layer's {@link PlannedRecordChange} into the shapes the operator and a `--json`
|
|
3
|
+
* consumer see. Kept out of `planned-change.ts` because rendering a blob change needs
|
|
4
|
+
* `record-update-plan.ts`, which already imports `planned-change.ts` — putting these there would
|
|
5
|
+
* close an import cycle.
|
|
6
|
+
*/
|
|
7
|
+
import { PlannedRecordChange } from './record-update-apply.js';
|
|
8
|
+
import { PlannedChange } from './planned-change.js';
|
|
9
|
+
export type RecordUpdateSkipResult = {
|
|
10
|
+
id: string;
|
|
11
|
+
field: string;
|
|
12
|
+
reason: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function toPlannedChange(change: PlannedRecordChange): PlannedChange;
|
|
15
|
+
export declare function toSkipResult(change: PlannedRecordChange): RecordUpdateSkipResult;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026, 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 { JSON_BLOB_FIELD, formatBlobChange, formatBlobSummary } from './record-update-plan.js';
|
|
17
|
+
import { NO_VALUE, formatChange, truncateCell } from './planned-change.js';
|
|
18
|
+
export function toPlannedChange(change) {
|
|
19
|
+
return {
|
|
20
|
+
operation: change.alreadyCurrent ? 'Skip (already current)' : 'Update',
|
|
21
|
+
object: change.update.sobject,
|
|
22
|
+
id: change.update.id,
|
|
23
|
+
name: change.update.name,
|
|
24
|
+
field: change.field.field,
|
|
25
|
+
change: describeChange(change),
|
|
26
|
+
currentValue: change.currentValue,
|
|
27
|
+
newValue: change.field.value,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function toSkipResult(change) {
|
|
31
|
+
return {
|
|
32
|
+
id: change.update.id,
|
|
33
|
+
field: change.field.field,
|
|
34
|
+
reason: 'org already matches the requested value',
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Builds the operator-facing `Change` cell. `DynamicRuleDefinition` is rendered as a semantic diff
|
|
39
|
+
* of the fields convert mutates, because the raw blob's first 60 characters are identical before
|
|
40
|
+
* and after — a truncated raw diff shows the operator the same string twice.
|
|
41
|
+
*/
|
|
42
|
+
function describeChange(change) {
|
|
43
|
+
const isBlob = change.field.field === JSON_BLOB_FIELD;
|
|
44
|
+
if (change.alreadyCurrent) {
|
|
45
|
+
const summary = isBlob ? formatBlobSummary(change.currentValue) : undefined;
|
|
46
|
+
return `${summary ?? truncateCell(change.currentValue ?? NO_VALUE)} (unchanged)`;
|
|
47
|
+
}
|
|
48
|
+
const semantic = isBlob ? formatBlobChange(change.currentValue, change.field.value) : undefined;
|
|
49
|
+
return semantic ?? formatChange(change.currentValue, change.field.value);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=planned-change-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planned-change-mapper.js","sourceRoot":"","sources":["../../../src/shared/insurance/planned-change-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAiB,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQ1F,MAAM,UAAU,eAAe,CAAC,MAA2B;IACzD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ;QACtE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;QAC7B,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QACpB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;QACxB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;QACzB,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;QACzB,MAAM,EAAE,yCAAyC;KAClD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAA2B;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC;IACtD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,OAAO,GAAG,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ,CAAC,cAAc,CAAC;IACnF,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,OAAO,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC"}
|