sfdx-hardis 5.10.2-beta202412231619.0 → 5.10.2-beta202412280136.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.
Files changed (29) hide show
  1. package/defaults/mkdocs/docs/stylesheets/extra.css +25 -0
  2. package/defaults/mkdocs/mkdocs.yml +4 -2
  3. package/defaults/mkdocs-project-doc/docs/javascripts/gtag.js +27 -0
  4. package/defaults/mkdocs-project-doc/docs/javascripts/tables.js +6 -0
  5. package/defaults/mkdocs-project-doc/docs/overrides/main.html +4 -0
  6. package/defaults/mkdocs-project-doc/docs/stylesheets/extra.css +33 -0
  7. package/defaults/mkdocs-project-doc/mkdocs.yml +46 -0
  8. package/lib/commands/hardis/doc/flow2markdown.js +6 -1
  9. package/lib/commands/hardis/doc/flow2markdown.js.map +1 -1
  10. package/lib/commands/hardis/doc/project2markdown.d.ts +6 -2
  11. package/lib/commands/hardis/doc/project2markdown.js +139 -42
  12. package/lib/commands/hardis/doc/project2markdown.js.map +1 -1
  13. package/lib/common/metadata-utils/index.js +3 -2
  14. package/lib/common/metadata-utils/index.js.map +1 -1
  15. package/lib/common/utils/flowVisualiser/flowParser.d.ts +0 -7
  16. package/lib/common/utils/flowVisualiser/flowParser.js +150 -167
  17. package/lib/common/utils/flowVisualiser/flowParser.js.map +1 -1
  18. package/lib/common/utils/flowVisualiser/nodeFormatUtils.d.ts +14 -0
  19. package/lib/common/utils/flowVisualiser/nodeFormatUtils.js +339 -0
  20. package/lib/common/utils/flowVisualiser/nodeFormatUtils.js.map +1 -0
  21. package/lib/common/utils/flowVisualiser/renderConfig.d.ts +9 -3
  22. package/lib/common/utils/flowVisualiser/renderConfig.js +62 -56
  23. package/lib/common/utils/flowVisualiser/renderConfig.js.map +1 -1
  24. package/lib/common/utils/mermaidUtils.d.ts +3 -1
  25. package/lib/common/utils/mermaidUtils.js +124 -68
  26. package/lib/common/utils/mermaidUtils.js.map +1 -1
  27. package/oclif.lock +95 -3
  28. package/oclif.manifest.json +366 -358
  29. package/package.json +2 -1
@@ -0,0 +1,339 @@
1
+ import * as yaml from 'js-yaml';
2
+ import moment from 'moment';
3
+ const FIELDS_WITH_VALUES_TO_FORMAT = [
4
+ "actionType",
5
+ "fieldType",
6
+ "inputsOnNextNavToAssocScrn",
7
+ "processType",
8
+ "recordTriggerType",
9
+ "triggerType",
10
+ "regionContainerType",
11
+ "runInMode",
12
+ "type"
13
+ ];
14
+ const FIELDS_PREFERRED_ORDER_START = [
15
+ "type",
16
+ "object",
17
+ "processType",
18
+ "triggerType",
19
+ "recordTriggerType",
20
+ "label",
21
+ "actionType",
22
+ "actionName",
23
+ "dataType",
24
+ "objectType"
25
+ ];
26
+ const FIELDS_PREFERRED_ORDER_END = [
27
+ "connector",
28
+ "nextNode",
29
+ "conditionLogic",
30
+ "filterLogic"
31
+ ];
32
+ const FIELDS_WITH_COLUMN_CENTERED = [
33
+ "dataType",
34
+ "objectType",
35
+ "operator",
36
+ "isCollection",
37
+ "isInput",
38
+ "isOutput",
39
+ "rightValue",
40
+ "startDate",
41
+ "startTime",
42
+ "value"
43
+ ];
44
+ export function simplifyNode(flowNode) {
45
+ const nodeCopy = Object.assign({}, flowNode);
46
+ for (const nodeKey of Object.keys(nodeCopy)) {
47
+ if (["locationX", "locationY"].includes(nodeKey)) {
48
+ delete nodeCopy[nodeKey];
49
+ }
50
+ else if (nodeCopy[nodeKey] === null || nodeCopy[nodeKey] === undefined) {
51
+ delete nodeCopy[nodeKey];
52
+ }
53
+ }
54
+ return nodeCopy;
55
+ }
56
+ export function flowNodeToMarkdown(flowNodeIn, allProperties) {
57
+ const flowNode = Object.assign({}, flowNodeIn);
58
+ delete flowNode["name"];
59
+ const additionalTables = [];
60
+ // Properties that can be found on multiple flow node types
61
+ handleprocessMetadataValues(flowNode, allProperties);
62
+ handleInputParameters(flowNode, allProperties);
63
+ const conditionsTable = handleConditions(flowNode, allProperties);
64
+ additionalTables.push(conditionsTable);
65
+ const filterItemsTable = handleFilterItems(flowNode, allProperties);
66
+ additionalTables.push(filterItemsTable);
67
+ const inputAssignmentsTable = handleInputAssignments(flowNode, allProperties);
68
+ additionalTables.push(inputAssignmentsTable);
69
+ const assignmentItemsTable = handleAssignmentItems(flowNode, allProperties);
70
+ additionalTables.push(assignmentItemsTable);
71
+ const scheduledPathsTable = handleScheduledPaths(flowNode, allProperties);
72
+ additionalTables.push(scheduledPathsTable);
73
+ // Special case of decisions
74
+ if (flowNode.type === "decisions") {
75
+ const rules = getElementAsArray(flowNode, "rules");
76
+ delete flowNode.rules;
77
+ delete flowNode.rules2;
78
+ for (const rule of rules) {
79
+ const ruleNode = Object.assign({}, rule);
80
+ delete ruleNode.name;
81
+ delete ruleNode.label;
82
+ const ruleConditionsTable = handleConditions(ruleNode, allProperties);
83
+ const ruleTable = buildGenericMarkdownTable(ruleNode, ["allFields"], `#### Rule ${rule.name} (${rule.label})`, allProperties);
84
+ additionalTables.push(...[ruleTable, mdEndSection(ruleConditionsTable)]);
85
+ }
86
+ }
87
+ else if (flowNode.type === "screens") {
88
+ handleFields(flowNode, allProperties, "", additionalTables);
89
+ }
90
+ else if (flowNode.type === "start") {
91
+ delete flowNode.type;
92
+ }
93
+ // Build final markdown for Node
94
+ let table = buildGenericMarkdownTable(flowNode, ["allFields"], "", allProperties);
95
+ for (const additionalTable of additionalTables) {
96
+ if (additionalTable !== "") {
97
+ table += additionalTable + "\n\n";
98
+ }
99
+ }
100
+ return mdEndSection(table);
101
+ }
102
+ function handleFields(flowNode, allProperties, parentField = "", additionalTables) {
103
+ const fields = getElementAsArray(flowNode, "fields");
104
+ delete flowNode.fields;
105
+ for (const field of fields) {
106
+ const fieldNode = Object.assign({}, field);
107
+ const fieldName = "" + (field.name || field.objectFieldReference);
108
+ delete fieldNode.name;
109
+ if (parentField) {
110
+ fieldNode.parentField = parentField;
111
+ allProperties.push(parentField);
112
+ }
113
+ handleInputParameters(fieldNode, allProperties);
114
+ const fieldsBefore = getElementAsArray(fieldNode, "fields");
115
+ delete fieldNode.fields;
116
+ const fieldTable = buildGenericMarkdownTable(fieldNode, ["allFields"], `#### ${fieldName}`, allProperties);
117
+ // Handle recursive loop
118
+ if (fieldsBefore) {
119
+ fieldNode.name = fieldName;
120
+ fieldNode.fields = fieldsBefore;
121
+ handleFields(fieldNode, allProperties, fieldName, additionalTables);
122
+ additionalTables.push(...[mdEndSection(fieldTable)]);
123
+ }
124
+ }
125
+ }
126
+ function handleConditions(ruleNode, allProperties) {
127
+ const conditions = getElementAsArray(ruleNode, "conditions");
128
+ if (conditions.length === 0) {
129
+ return "";
130
+ }
131
+ let id = 0;
132
+ const conditionsValues = conditions.map((item) => {
133
+ id++;
134
+ return {
135
+ conditionId: id,
136
+ leftValueReference: item.leftValueReference,
137
+ operator: stringifyOperator(item.operator),
138
+ rightValue: (item.operator === "IsNull" && item.rightValue === "false") ? "<!-- -->" : stringifyValue(item.rightValue, "", allProperties)
139
+ };
140
+ });
141
+ delete ruleNode.conditions;
142
+ /* let descriptiveLine = "";
143
+ if (ruleNode.conditionLogic) {
144
+ descriptiveLine += "\n\nConditions logic: **" + ruleNode.conditionLogic + "**\n\n";
145
+ delete ruleNode.conditionLogic;
146
+ } */
147
+ return buildCustomMarkdownTable(conditionsValues, ["conditionId", "leftValueReference", "operator", "rightValue"], "", allProperties);
148
+ }
149
+ function handleInputAssignments(flowNode, allProperties) {
150
+ const inputAssignmentsItems = getElementAsArray(flowNode, "inputAssignments");
151
+ if (inputAssignmentsItems.length === 0) {
152
+ return "";
153
+ }
154
+ const inputAssignmentsItemsValues = inputAssignmentsItems.map((item) => {
155
+ return {
156
+ field: item.field,
157
+ value: stringifyValue(item.value, item.field, allProperties)
158
+ };
159
+ });
160
+ delete flowNode.inputAssignments;
161
+ return buildCustomMarkdownTable(inputAssignmentsItemsValues, ["field", "value"], "#### Input Assignments", allProperties);
162
+ }
163
+ export function handleSchedule(flowNode, allProperties) {
164
+ const scheduleItems = getElementAsArray(flowNode, "schedule");
165
+ if (scheduleItems.length === 0) {
166
+ return "";
167
+ }
168
+ const scheduleItemsValues = scheduleItems.map((item) => {
169
+ const startDateFormatted = moment(item.startDate).format("ll");
170
+ const startTimeFormatted = item?.startTime?.endsWith("Z") ? item.startTime.slice(0, 5) : item.startTime;
171
+ return {
172
+ frequency: item.frequency,
173
+ startDate: !startDateFormatted.includes("Invalid") ? startDateFormatted : item.startDate,
174
+ startTime: !startTimeFormatted.includes("Invalid") ? startTimeFormatted : item.startTime,
175
+ };
176
+ });
177
+ delete flowNode.schedule;
178
+ return buildCustomMarkdownTable(scheduleItemsValues, ["frequency", "startDate", "startTime"], "#### Schedules", allProperties);
179
+ }
180
+ export function handleFilterItems(flowNode, allProperties) {
181
+ const filterItems = getElementAsArray(flowNode, "filters");
182
+ if (filterItems.length === 0) {
183
+ return "";
184
+ }
185
+ let id = 0;
186
+ const filterItemsValues = filterItems.map((item) => {
187
+ id++;
188
+ return {
189
+ filterId: id,
190
+ field: item.field,
191
+ operator: stringifyOperator(item.operator),
192
+ value: item.operator === "IsNull" ? "<!-- -->" : stringifyValue(item.value, item.field, allProperties)
193
+ };
194
+ });
195
+ delete flowNode.filters;
196
+ let descriptiveLine = "";
197
+ if (flowNode.filterLogic) {
198
+ descriptiveLine += " (logic: **" + flowNode.filterLogic + "**)";
199
+ delete flowNode.filterLogic;
200
+ }
201
+ return buildCustomMarkdownTable(filterItemsValues, ["filterId", "field", "operator", "value"], "#### Filters" + descriptiveLine, allProperties);
202
+ }
203
+ function handleAssignmentItems(flowNode, allProperties) {
204
+ const assignmentItems = getElementAsArray(flowNode, "assignmentItems");
205
+ if (assignmentItems.length === 0) {
206
+ return "";
207
+ }
208
+ const assignmentItemsValues = assignmentItems.map((item) => {
209
+ const value = item?.value?.elementReference || stringifyValue(item.value, "", allProperties);
210
+ return {
211
+ assignToReference: item.assignToReference,
212
+ operator: stringifyOperator(item.operator),
213
+ value: stringifyValue(value, "", allProperties)
214
+ };
215
+ });
216
+ delete flowNode.assignmentItems;
217
+ return buildCustomMarkdownTable(assignmentItemsValues, ["assignToReference", "operator", "value"], "#### Assignments", allProperties);
218
+ }
219
+ export function handleScheduledPaths(flowNode, allProperties) {
220
+ const scheduledPaths = getElementAsArray(flowNode, "scheduledPaths");
221
+ delete flowNode.scheduledPaths;
222
+ if (scheduledPaths.length === 0) {
223
+ return "";
224
+ }
225
+ return buildCustomMarkdownTable(scheduledPaths, ["label", "name", "offsetNumber", "offsetUnit", "recordField", "timeSource", "connector"], "#### Scheduled Paths", allProperties);
226
+ }
227
+ export function handleInputParameters(flowNode, allProperties) {
228
+ const inputParameters = getElementAsArray(flowNode, "inputParameters");
229
+ for (const inputParam of inputParameters) {
230
+ const inputParamName = `${inputParam.name} (input)`;
231
+ flowNode[inputParamName] = stringifyValue(inputParam.value, inputParam.name, allProperties);
232
+ }
233
+ delete flowNode.inputParameters;
234
+ }
235
+ export function handleprocessMetadataValues(flowNode, allProperties) {
236
+ const metadataValues = {};
237
+ const processMetadataValues = getElementAsArray(flowNode, "processMetadataValues");
238
+ for (const processMetadataValue of processMetadataValues) {
239
+ const inputParamName = `${processMetadataValue.name} (PM)`;
240
+ flowNode[inputParamName] = stringifyValue(processMetadataValue.value, processMetadataValue.name, allProperties);
241
+ metadataValues[processMetadataValue.name] = flowNode[inputParamName];
242
+ }
243
+ delete flowNode.processMetadataValues;
244
+ return metadataValues;
245
+ }
246
+ export function buildGenericMarkdownTable(item, fields, title = "", allProperties) {
247
+ if (fields[0] === "allFields") {
248
+ fields = Object.keys(item);
249
+ // Reorder fields according to preferences
250
+ for (const field of FIELDS_PREFERRED_ORDER_START.reverse()) {
251
+ if (fields.includes(field)) {
252
+ fields.splice(fields.indexOf(field), 1);
253
+ fields.unshift(field);
254
+ }
255
+ }
256
+ for (const field of FIELDS_PREFERRED_ORDER_END) {
257
+ if (fields.includes(field)) {
258
+ fields.splice(fields.indexOf(field), 1);
259
+ fields.push(field);
260
+ }
261
+ }
262
+ }
263
+ let table = title ? `${title}\n\n` : '';
264
+ table += `|<!-- -->|<!-- -->|\n|:---|:---|\n`;
265
+ for (const field of fields) {
266
+ if (item[field] !== undefined) {
267
+ table += `|${prettifyFieldName(field)}|${stringifyValue(item[field], field, allProperties)}|\n`;
268
+ }
269
+ }
270
+ return table + "\n\n";
271
+ }
272
+ export function buildCustomMarkdownTable(items, fields, title = "", allProperties) {
273
+ let table = title ? `${title}\n\n` : '';
274
+ table += "|" + fields.map(field => prettifyFieldName(field)).join("|") + "|\n";
275
+ table += "|" + fields.map(field => FIELDS_WITH_COLUMN_CENTERED.includes(field) ? ":--:" : ":-- ").join("|") + " |\n";
276
+ for (const item of items) {
277
+ const fieldValues = fields.map(field => stringifyValue(item[field], field, allProperties));
278
+ table += "|" + fieldValues.join("|") + "|\n";
279
+ }
280
+ return table + "\n\n";
281
+ }
282
+ export function stringifyOperator(operatorIn) {
283
+ return prettifyFieldName(operatorIn);
284
+ }
285
+ export function stringifyValue(valueIn, field, allProperties) {
286
+ const valueType = typeof valueIn;
287
+ // String
288
+ let valueStringified = valueType === "string" ?
289
+ valueIn.split("\n").join("<br/>") :
290
+ // String value
291
+ (valueType === "object" && valueIn.stringValue && Object.keys(valueIn).length === 1) ?
292
+ valueIn.stringValue :
293
+ // Boolean value
294
+ (valueType === "object" && (valueIn.booleanValue !== undefined) && Object.keys(valueIn).length === 1) ?
295
+ valueIn.booleanValue :
296
+ // Number value
297
+ (valueType === "object" && valueIn.numberValue && Object.keys(valueIn).length === 1) ?
298
+ valueIn.numberValue :
299
+ // Target reference
300
+ (valueType === "object" && valueIn.targetReference && Object.keys(valueIn).length === 1) ?
301
+ valueIn.targetReference :
302
+ // Element reference
303
+ (valueType === "object" && valueIn.elementReference && Object.keys(valueIn).length === 1) ?
304
+ valueIn.elementReference :
305
+ // Undefined or empty array or empty object
306
+ (valueType === "undefined" || (Array.isArray(valueIn) && valueIn.length === 0) || (valueType === "object" && Object.keys(valueIn).length === 0)) ?
307
+ '<!-- -->' :
308
+ // Default YAML for array & object
309
+ (Array.isArray(valueIn) || valueType === "object") ?
310
+ yaml.dump(valueIn).replace(/"/gm, "").replace(/^(\s+)/gm, match => '&nbsp;'.repeat(match.length)).split("\n").join("<br/>") :
311
+ // Default
312
+ String(valueIn).split("\n").join("<br/>");
313
+ // Final updates if necessary
314
+ if (allProperties.includes(valueStringified)) {
315
+ valueStringified = `[${valueStringified}](#${valueStringified.toLowerCase()})`;
316
+ }
317
+ else if (FIELDS_WITH_VALUES_TO_FORMAT.includes(field)) {
318
+ valueStringified = prettifyFieldName(valueStringified);
319
+ if (field === "type" && valueStringified.endsWith("s")) {
320
+ valueStringified = valueStringified.slice(0, -1);
321
+ }
322
+ }
323
+ else {
324
+ valueStringified = valueStringified === "true" ? "✅" : valueStringified === "false" ? "⬜" : valueStringified;
325
+ }
326
+ return valueStringified;
327
+ }
328
+ export function prettifyFieldName(field) {
329
+ return field.replace(/([A-Z])/g, " $1").replace(/^./, str => str.toUpperCase()).replace("( P M)", "(PM)").replace("S Object", "SObject");
330
+ }
331
+ export function mdEndSection(sectionString) {
332
+ if (!sectionString)
333
+ return sectionString + "\n\n___\n\n";
334
+ return sectionString;
335
+ }
336
+ export function getElementAsArray(node, key) {
337
+ return Array.isArray(node[key]) ? node[key] : typeof node[key] === "object" ? [node[key]] : [];
338
+ }
339
+ //# sourceMappingURL=nodeFormatUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeFormatUtils.js","sourceRoot":"","sources":["../../../../src/common/utils/flowVisualiser/nodeFormatUtils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,3 @@
1
- /**
2
- * renderConfig.js
3
- */
4
1
  export declare const NODE_CONFIG: {
5
2
  actionCalls: {
6
3
  background: string;
@@ -61,6 +58,7 @@ export declare const NODE_CONFIG: {
61
58
  loops: {
62
59
  background: string;
63
60
  label: string;
61
+ color: string;
64
62
  mermaidIcon: string;
65
63
  mermaidClose: string;
66
64
  mermaidOpen: string;
@@ -119,4 +117,12 @@ export declare const NODE_CONFIG: {
119
117
  mermaidClose: string;
120
118
  mermaidOpen: string;
121
119
  };
120
+ startClass: {
121
+ background: string;
122
+ color: string;
123
+ };
124
+ endClass: {
125
+ background: string;
126
+ color: string;
127
+ };
122
128
  };
@@ -1,11 +1,8 @@
1
- /**
2
- * renderConfig.js
3
- */
4
1
  export const NODE_CONFIG = {
5
2
  'actionCalls': {
6
- background: "#344568",
7
- color: "white",
8
- label: "Action",
3
+ background: "#D4E4FC", // Light blue
4
+ color: "black",
5
+ label: "",
9
6
  icon: "<&pulse>",
10
7
  mermaidIcon: {
11
8
  "apex": "⚙️",
@@ -17,17 +14,17 @@ export const NODE_CONFIG = {
17
14
  mermaidOpen: "("
18
15
  },
19
16
  'assignments': {
20
- background: "#F97924",
21
- color: "white",
22
- label: "Assignment",
17
+ background: "#FBEED7", // Light beige
18
+ color: "black",
19
+ label: "",
23
20
  icon: "<&menu>",
24
21
  mermaidIcon: "🟰",
25
- mermaidClose: ")",
26
- mermaidOpen: "("
22
+ mermaidClose: "/]",
23
+ mermaidOpen: "[\\"
27
24
  },
28
25
  'collectionProcessors': {
29
- background: "#DD7A00",
30
- color: "white",
26
+ background: "#F0E3FA", // Light lavender
27
+ color: "black",
31
28
  label: {
32
29
  "FilterCollectionProcessor": "Collection Filter",
33
30
  "SortCollectionProcessor": "Collection Sort",
@@ -37,87 +34,96 @@ export const NODE_CONFIG = {
37
34
  "FilterCollectionProcessor": "🔽",
38
35
  "SortCollectionProcessor": "🔃",
39
36
  },
40
- mermaidClose: ")",
41
- mermaidOpen: "("
37
+ mermaidClose: "}}",
38
+ mermaidOpen: "{{"
42
39
  },
43
40
  'customErrors': {
44
- background: "#032D60",
45
- color: "white",
46
- label: "Custom Error",
41
+ background: "#FFE9E9", // Pale blush
42
+ color: "black",
43
+ label: "",
47
44
  icon: "<&pencil>",
48
45
  mermaidIcon: "🚫",
49
46
  mermaidClose: ")",
50
47
  mermaidOpen: "("
51
48
  },
52
49
  'decisions': {
53
- background: "#DD7A00",
54
- color: "white",
55
- label: "Decision",
50
+ background: "#FDEAF6", // Light pink
51
+ color: "black",
52
+ label: "",
56
53
  icon: "<&fork>",
57
54
  mermaidIcon: "🔀",
58
- mermaidClose: "}}",
59
- mermaidOpen: "{{"
55
+ mermaidClose: "}",
56
+ mermaidOpen: "{"
60
57
  },
61
58
  'loops': {
62
- background: "#E07D1C",
63
- label: "Loop",
59
+ background: "#FDEAF6", // Light pink (harmonized with decisions)
60
+ label: "",
61
+ color: "black",
64
62
  mermaidIcon: "🔁",
65
- mermaidClose: ")",
66
- mermaidOpen: "("
63
+ mermaidClose: "}}",
64
+ mermaidOpen: "{{"
67
65
  },
68
66
  'recordCreates': {
69
- background: "#F9548A",
70
- color: "white",
71
- label: "Create Records",
67
+ background: "#FFF8C9", // Light periwinkle (harmonized with recordCreates and recordDeletes)
68
+ color: "black",
69
+ label: "",
72
70
  icon: "<&medical-cross>",
73
71
  mermaidIcon: "➕",
74
- mermaidClose: ")",
75
- mermaidOpen: "("
72
+ mermaidClose: ")]",
73
+ mermaidOpen: "[("
76
74
  },
77
75
  'recordDeletes': {
78
- background: "#F9548A",
79
- color: "white",
80
- label: "Delete Records",
76
+ background: "#FFF8C9", // Light periwinkle (harmonized with recordCreates and recordDeletes)
77
+ color: "black",
78
+ label: "",
81
79
  icon: "<&medical-cross>",
82
80
  mermaidIcon: "🗑️",
83
- mermaidClose: ")",
84
- mermaidOpen: "("
81
+ mermaidClose: ")]",
82
+ mermaidOpen: "[("
85
83
  },
86
84
  'recordLookups': {
87
- background: "#F9548A",
88
- color: "white",
89
- label: "Get Records",
85
+ background: "#EDEAFF", // Pale yellow
86
+ color: "black",
87
+ label: "",
90
88
  icon: "<&medical-cross>",
91
89
  mermaidIcon: "🔍",
92
- mermaidClose: ")",
93
- mermaidOpen: "("
90
+ mermaidClose: ")]",
91
+ mermaidOpen: "[("
94
92
  },
95
93
  'recordUpdates': {
96
- background: "#F9548A",
97
- color: "white",
98
- label: "Update Records",
94
+ background: "#FFF8C9", // Light periwinkle (harmonized with recordCreates and recordDeletes)
95
+ color: "black",
96
+ label: "",
99
97
  icon: "<&pencil>",
100
98
  mermaidIcon: "🛠️",
101
- mermaidClose: ")",
102
- mermaidOpen: "("
99
+ mermaidClose: ")]",
100
+ mermaidOpen: "[("
103
101
  },
104
102
  'screens': {
105
- background: "#1B96FF",
106
- color: "white",
107
- label: "Screen",
103
+ background: "#DFF6FF", // Pale sky blue
104
+ color: "black",
105
+ label: "",
108
106
  icon: "<&pencil>",
109
107
  mermaidIcon: "💻",
110
- mermaidClose: ")",
111
- mermaidOpen: "("
108
+ mermaidClose: "])",
109
+ mermaidOpen: "(["
112
110
  },
113
111
  'subflows': {
114
- background: "#032D60",
115
- color: "white",
112
+ background: "#D4E4FC", // Light blue (harmonized with actionCalls)
113
+ color: "black",
116
114
  label: "Subflow",
117
115
  icon: "<&pencil>",
118
116
  mermaidIcon: "🔗",
119
- mermaidClose: ")",
120
- mermaidOpen: "("
117
+ mermaidClose: "]]",
118
+ mermaidOpen: "[["
119
+ },
120
+ "startClass": {
121
+ background: "#D9F2E6", // Light turquoise (between green and blue)
122
+ color: "black"
121
123
  },
124
+ "endClass": {
125
+ background: "#F9BABA", // Slightly shinier pale re
126
+ color: "black"
127
+ }
122
128
  };
123
129
  //# sourceMappingURL=renderConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderConfig.js","sourceRoot":"","sources":["../../../../src/common/utils/flowVisualiser/renderConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderConfig.js","sourceRoot":"","sources":["../../../../src/common/utils/flowVisualiser/renderConfig.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export declare function isMermaidAvailable(): Promise<boolean>;
2
2
  export declare function isDockerAvailable(): Promise<boolean>;
3
- export declare function generateFlowMarkdownFile(flowName: string, flowXml: string, outputFlowMdFile: string): Promise<boolean>;
3
+ export declare function generateFlowMarkdownFile(flowName: string, flowXml: string, outputFlowMdFile: string, options?: {
4
+ collapsedDetails: boolean;
5
+ }): Promise<boolean>;
4
6
  export declare function generateMarkdownFileWithMermaid(outputFlowMdFile: string): Promise<boolean>;
5
7
  export declare function generateMarkdownFileWithMermaidDocker(outputFlowMdFile: string): Promise<boolean>;
6
8
  export declare function generateMarkdownFileWithMermaidCli(outputFlowMdFile: string): Promise<boolean>;