@servicenow/sdk-build-plugins 4.2.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acl-plugin.js +11 -0
- package/dist/acl-plugin.js.map +1 -1
- package/dist/applicability-plugin.d.ts +2 -0
- package/dist/applicability-plugin.js +72 -0
- package/dist/applicability-plugin.js.map +1 -0
- package/dist/atf/test-plugin.js +5 -2
- package/dist/atf/test-plugin.js.map +1 -1
- package/dist/basic-syntax-plugin.js +7 -1
- package/dist/basic-syntax-plugin.js.map +1 -1
- package/dist/business-rule-plugin.js +1 -0
- package/dist/business-rule-plugin.js.map +1 -1
- package/dist/call-expression-plugin.js +1 -107
- package/dist/call-expression-plugin.js.map +1 -1
- package/dist/column/column-to-record.d.ts +10 -3
- package/dist/column/column-to-record.js +44 -7
- package/dist/column/column-to-record.js.map +1 -1
- package/dist/column-plugin.d.ts +3 -1
- package/dist/column-plugin.js +12 -12
- package/dist/column-plugin.js.map +1 -1
- package/dist/dashboard/dashboard-component-property-defaults.d.ts +152 -0
- package/dist/dashboard/dashboard-component-property-defaults.js +264 -0
- package/dist/dashboard/dashboard-component-property-defaults.js.map +1 -0
- package/dist/dashboard/dashboard-component-resolver.d.ts +13 -0
- package/dist/dashboard/dashboard-component-resolver.js +69 -0
- package/dist/dashboard/dashboard-component-resolver.js.map +1 -0
- package/dist/dashboard/dashboard-plugin.d.ts +12 -0
- package/dist/dashboard/dashboard-plugin.js +397 -0
- package/dist/dashboard/dashboard-plugin.js.map +1 -0
- package/dist/data-plugin.d.ts +3 -0
- package/dist/data-plugin.js +61 -113
- package/dist/data-plugin.js.map +1 -1
- package/dist/email-notification-plugin.d.ts +2 -0
- package/dist/email-notification-plugin.js +541 -0
- package/dist/email-notification-plugin.js.map +1 -0
- package/dist/flow/constants/flow-plugin-constants.d.ts +58 -0
- package/dist/flow/constants/flow-plugin-constants.js +70 -0
- package/dist/flow/constants/flow-plugin-constants.js.map +1 -0
- package/dist/flow/flow-logic/flow-logic-constants.d.ts +38 -0
- package/dist/flow/flow-logic/flow-logic-constants.js +118 -0
- package/dist/flow/flow-logic/flow-logic-constants.js.map +1 -0
- package/dist/flow/flow-logic/flow-logic-diagnostics.d.ts +19 -0
- package/dist/flow/flow-logic/flow-logic-diagnostics.js +503 -0
- package/dist/flow/flow-logic/flow-logic-diagnostics.js.map +1 -0
- package/dist/flow/flow-logic/flow-logic-plugin-helpers.d.ts +62 -0
- package/dist/flow/flow-logic/flow-logic-plugin-helpers.js +2092 -0
- package/dist/flow/flow-logic/flow-logic-plugin-helpers.js.map +1 -0
- package/dist/flow/flow-logic/flow-logic-plugin.d.ts +52 -0
- package/dist/flow/flow-logic/flow-logic-plugin.js +283 -0
- package/dist/flow/flow-logic/flow-logic-plugin.js.map +1 -0
- package/dist/flow/flow-logic/flow-logic-shapes.d.ts +104 -0
- package/dist/flow/flow-logic/flow-logic-shapes.js +201 -0
- package/dist/flow/flow-logic/flow-logic-shapes.js.map +1 -0
- package/dist/flow/plugins/approval-rules-plugin.d.ts +2 -0
- package/dist/flow/plugins/approval-rules-plugin.js +49 -0
- package/dist/flow/plugins/approval-rules-plugin.js.map +1 -0
- package/dist/flow/plugins/flow-action-definition-plugin.d.ts +2 -0
- package/dist/flow/plugins/flow-action-definition-plugin.js +286 -0
- package/dist/flow/plugins/flow-action-definition-plugin.js.map +1 -0
- package/dist/flow/plugins/flow-data-pill-plugin.d.ts +9 -0
- package/dist/flow/plugins/flow-data-pill-plugin.js +212 -0
- package/dist/flow/plugins/flow-data-pill-plugin.js.map +1 -0
- package/dist/flow/plugins/flow-definition-plugin.d.ts +2 -0
- package/dist/flow/plugins/flow-definition-plugin.js +1668 -0
- package/dist/flow/plugins/flow-definition-plugin.js.map +1 -0
- package/dist/flow/plugins/flow-diagnostics-plugin.d.ts +26 -0
- package/dist/flow/plugins/flow-diagnostics-plugin.js +217 -0
- package/dist/flow/plugins/flow-diagnostics-plugin.js.map +1 -0
- package/dist/flow/plugins/flow-instance-plugin.d.ts +12 -0
- package/dist/flow/plugins/flow-instance-plugin.js +1205 -0
- package/dist/flow/plugins/flow-instance-plugin.js.map +1 -0
- package/dist/flow/plugins/flow-trigger-instance-plugin.d.ts +2 -0
- package/dist/flow/plugins/flow-trigger-instance-plugin.js +338 -0
- package/dist/flow/plugins/flow-trigger-instance-plugin.js.map +1 -0
- package/dist/flow/plugins/inline-script-plugin.d.ts +39 -0
- package/dist/flow/plugins/inline-script-plugin.js +80 -0
- package/dist/flow/plugins/inline-script-plugin.js.map +1 -0
- package/dist/flow/plugins/step-definition-plugin.d.ts +5 -0
- package/dist/flow/plugins/step-definition-plugin.js +71 -0
- package/dist/flow/plugins/step-definition-plugin.js.map +1 -0
- package/dist/flow/plugins/step-instance-plugin.d.ts +31 -0
- package/dist/flow/plugins/step-instance-plugin.js +339 -0
- package/dist/flow/plugins/step-instance-plugin.js.map +1 -0
- package/dist/flow/plugins/trigger-plugin.d.ts +2 -0
- package/dist/flow/plugins/trigger-plugin.js +96 -0
- package/dist/flow/plugins/trigger-plugin.js.map +1 -0
- package/dist/flow/plugins/wfa-datapill-plugin.d.ts +15 -0
- package/dist/flow/plugins/wfa-datapill-plugin.js +178 -0
- package/dist/flow/plugins/wfa-datapill-plugin.js.map +1 -0
- package/dist/flow/utils/approval-rules-processor.d.ts +13 -0
- package/dist/flow/utils/approval-rules-processor.js +267 -0
- package/dist/flow/utils/approval-rules-processor.js.map +1 -0
- package/dist/flow/utils/built-in-complex-objects.d.ts +19 -0
- package/dist/flow/utils/built-in-complex-objects.js +62 -0
- package/dist/flow/utils/built-in-complex-objects.js.map +1 -0
- package/dist/flow/utils/complex-object-resolver.d.ts +8 -0
- package/dist/flow/utils/complex-object-resolver.js +614 -0
- package/dist/flow/utils/complex-object-resolver.js.map +1 -0
- package/dist/flow/utils/complex-objects.d.ts +36 -0
- package/dist/flow/utils/complex-objects.js +481 -0
- package/dist/flow/utils/complex-objects.js.map +1 -0
- package/dist/flow/utils/data-pill-shapes.d.ts +58 -0
- package/dist/flow/utils/data-pill-shapes.js +135 -0
- package/dist/flow/utils/data-pill-shapes.js.map +1 -0
- package/dist/flow/utils/datapill-transformer.d.ts +110 -0
- package/dist/flow/utils/datapill-transformer.js +503 -0
- package/dist/flow/utils/datapill-transformer.js.map +1 -0
- package/dist/flow/utils/flow-constants.d.ts +72 -0
- package/dist/flow/utils/flow-constants.js +230 -0
- package/dist/flow/utils/flow-constants.js.map +1 -0
- package/dist/flow/utils/flow-io-to-record.d.ts +44 -0
- package/dist/flow/utils/flow-io-to-record.js +409 -0
- package/dist/flow/utils/flow-io-to-record.js.map +1 -0
- package/dist/flow/utils/flow-shapes.d.ts +161 -0
- package/dist/flow/utils/flow-shapes.js +255 -0
- package/dist/flow/utils/flow-shapes.js.map +1 -0
- package/dist/flow/utils/flow-to-xml.d.ts +16 -0
- package/dist/flow/utils/flow-to-xml.js +237 -0
- package/dist/flow/utils/flow-to-xml.js.map +1 -0
- package/dist/flow/utils/flow-variable-processor.d.ts +51 -0
- package/dist/flow/utils/flow-variable-processor.js +69 -0
- package/dist/flow/utils/flow-variable-processor.js.map +1 -0
- package/dist/flow/utils/label-cache-parser.d.ts +7 -0
- package/dist/flow/utils/label-cache-parser.js +24 -0
- package/dist/flow/utils/label-cache-parser.js.map +1 -0
- package/dist/flow/utils/label-cache-processor.d.ts +119 -0
- package/dist/flow/utils/label-cache-processor.js +719 -0
- package/dist/flow/utils/label-cache-processor.js.map +1 -0
- package/dist/flow/utils/pill-string-parser.d.ts +88 -0
- package/dist/flow/utils/pill-string-parser.js +306 -0
- package/dist/flow/utils/pill-string-parser.js.map +1 -0
- package/dist/flow/utils/schema-to-flow-object.d.ts +22 -0
- package/dist/flow/utils/schema-to-flow-object.js +318 -0
- package/dist/flow/utils/schema-to-flow-object.js.map +1 -0
- package/dist/flow/utils/service-catalog.d.ts +47 -0
- package/dist/flow/utils/service-catalog.js +137 -0
- package/dist/flow/utils/service-catalog.js.map +1 -0
- package/dist/flow/utils/utils.d.ts +117 -0
- package/dist/flow/utils/utils.js +345 -0
- package/dist/flow/utils/utils.js.map +1 -0
- package/dist/index.d.ts +20 -1
- package/dist/index.js +21 -1
- package/dist/index.js.map +1 -1
- package/dist/list-plugin.js +1 -1
- package/dist/list-plugin.js.map +1 -1
- package/dist/now-attach-plugin.d.ts +1 -0
- package/dist/now-attach-plugin.js +10 -10
- package/dist/now-attach-plugin.js.map +1 -1
- package/dist/now-ref-plugin.js +1 -1
- package/dist/now-ref-plugin.js.map +1 -1
- package/dist/record-plugin.d.ts +29 -0
- package/dist/record-plugin.js +66 -7
- package/dist/record-plugin.js.map +1 -1
- package/dist/repack/index.d.ts +2 -0
- package/dist/repack/index.js +8 -0
- package/dist/repack/index.js.map +1 -1
- package/dist/rest-api-plugin.js +54 -44
- package/dist/rest-api-plugin.js.map +1 -1
- package/dist/server-module-plugin/index.d.ts +10 -0
- package/dist/server-module-plugin/index.js +83 -59
- package/dist/server-module-plugin/index.js.map +1 -1
- package/dist/service-catalog/catalog-clientscript-plugin.d.ts +2 -0
- package/dist/service-catalog/catalog-clientscript-plugin.js +117 -0
- package/dist/service-catalog/catalog-clientscript-plugin.js.map +1 -0
- package/dist/service-catalog/catalog-item-plugin.d.ts +2 -0
- package/dist/service-catalog/catalog-item-plugin.js +115 -0
- package/dist/service-catalog/catalog-item-plugin.js.map +1 -0
- package/dist/service-catalog/catalog-ui-policy-plugin.d.ts +2 -0
- package/dist/service-catalog/catalog-ui-policy-plugin.js +266 -0
- package/dist/service-catalog/catalog-ui-policy-plugin.js.map +1 -0
- package/dist/service-catalog/index.d.ts +5 -0
- package/dist/service-catalog/index.js +22 -0
- package/dist/service-catalog/index.js.map +1 -0
- package/dist/service-catalog/record-to-shape.d.ts +6 -0
- package/dist/service-catalog/record-to-shape.js +93 -0
- package/dist/service-catalog/record-to-shape.js.map +1 -0
- package/dist/service-catalog/sc-record-producer-plugin.d.ts +2 -0
- package/dist/service-catalog/sc-record-producer-plugin.js +140 -0
- package/dist/service-catalog/sc-record-producer-plugin.js.map +1 -0
- package/dist/service-catalog/service-catalog-base.d.ts +311 -0
- package/dist/service-catalog/service-catalog-base.js +542 -0
- package/dist/service-catalog/service-catalog-base.js.map +1 -0
- package/dist/service-catalog/service-catalog-diagnostics.d.ts +45 -0
- package/dist/service-catalog/service-catalog-diagnostics.js +172 -0
- package/dist/service-catalog/service-catalog-diagnostics.js.map +1 -0
- package/dist/service-catalog/shape-to-record.d.ts +8 -0
- package/dist/service-catalog/shape-to-record.js +235 -0
- package/dist/service-catalog/shape-to-record.js.map +1 -0
- package/dist/service-catalog/utils.d.ts +323 -0
- package/dist/service-catalog/utils.js +1216 -0
- package/dist/service-catalog/utils.js.map +1 -0
- package/dist/service-catalog/variable-helper.d.ts +43 -0
- package/dist/service-catalog/variable-helper.js +92 -0
- package/dist/service-catalog/variable-helper.js.map +1 -0
- package/dist/service-catalog/variable-set-plugin.d.ts +2 -0
- package/dist/service-catalog/variable-set-plugin.js +175 -0
- package/dist/service-catalog/variable-set-plugin.js.map +1 -0
- package/dist/service-catalog/variables-transform.d.ts +139 -0
- package/dist/service-catalog/variables-transform.js +403 -0
- package/dist/service-catalog/variables-transform.js.map +1 -0
- package/dist/sla/sla-validators.d.ts +61 -0
- package/dist/sla/sla-validators.js +224 -0
- package/dist/sla/sla-validators.js.map +1 -0
- package/dist/sla-plugin.d.ts +5 -0
- package/dist/sla-plugin.js +280 -0
- package/dist/sla-plugin.js.map +1 -0
- package/dist/static-content-plugin.js +25 -2
- package/dist/static-content-plugin.js.map +1 -1
- package/dist/table-plugin.js +32 -15
- package/dist/table-plugin.js.map +1 -1
- package/dist/ui-page-plugin.js +832 -19
- package/dist/ui-page-plugin.js.map +1 -1
- package/dist/ui-policy-plugin.js +5 -7
- package/dist/ui-policy-plugin.js.map +1 -1
- package/dist/utils.d.ts +10 -1
- package/dist/utils.js +16 -0
- package/dist/utils.js.map +1 -1
- package/dist/ux-list-menu-config-plugin.d.ts +2 -0
- package/dist/ux-list-menu-config-plugin.js +292 -0
- package/dist/ux-list-menu-config-plugin.js.map +1 -0
- package/dist/workspace-plugin/chrome-tab.d.ts +2 -0
- package/dist/workspace-plugin/chrome-tab.js +46 -0
- package/dist/workspace-plugin/chrome-tab.js.map +1 -0
- package/dist/workspace-plugin/constants.d.ts +52 -0
- package/dist/workspace-plugin/constants.js +56 -0
- package/dist/workspace-plugin/constants.js.map +1 -0
- package/dist/workspace-plugin/fluent-utils.d.ts +9 -0
- package/dist/workspace-plugin/fluent-utils.js +60 -0
- package/dist/workspace-plugin/fluent-utils.js.map +1 -0
- package/dist/workspace-plugin/page.d.ts +8 -0
- package/dist/workspace-plugin/page.js +108 -0
- package/dist/workspace-plugin/page.js.map +1 -0
- package/dist/workspace-plugin/screen.d.ts +1 -0
- package/dist/workspace-plugin/screen.js +38 -0
- package/dist/workspace-plugin/screen.js.map +1 -0
- package/dist/workspace-plugin/templates/index.d.ts +10 -0
- package/dist/workspace-plugin/templates/index.js +20 -0
- package/dist/workspace-plugin/templates/index.js.map +1 -0
- package/dist/workspace-plugin/templates/record-page-composition.d.ts +1 -0
- package/dist/workspace-plugin/templates/record-page-composition.js +4043 -0
- package/dist/workspace-plugin/templates/record-page-composition.js.map +1 -0
- package/dist/workspace-plugin/templates/record-page-data.d.ts +1 -0
- package/dist/workspace-plugin/templates/record-page-data.js +527 -0
- package/dist/workspace-plugin/templates/record-page-data.js.map +1 -0
- package/dist/workspace-plugin/templates/record-page-interalEventMappings.d.ts +1 -0
- package/dist/workspace-plugin/templates/record-page-interalEventMappings.js +39 -0
- package/dist/workspace-plugin/templates/record-page-interalEventMappings.js.map +1 -0
- package/dist/workspace-plugin/templates/record-page-layoutModel.d.ts +1 -0
- package/dist/workspace-plugin/templates/record-page-layoutModel.js +55 -0
- package/dist/workspace-plugin/templates/record-page-layoutModel.js.map +1 -0
- package/dist/workspace-plugin/templates/record-page-properties.d.ts +1 -0
- package/dist/workspace-plugin/templates/record-page-properties.js +135 -0
- package/dist/workspace-plugin/templates/record-page-properties.js.map +1 -0
- package/dist/workspace-plugin/templates/record-page.d.ts +3 -0
- package/dist/workspace-plugin/templates/record-page.js +8 -0
- package/dist/workspace-plugin/templates/record-page.js.map +1 -0
- package/dist/workspace-plugin.d.ts +2 -0
- package/dist/workspace-plugin.js +453 -0
- package/dist/workspace-plugin.js.map +1 -0
- package/package.json +10 -12
- package/src/acl-plugin.ts +16 -1
- package/src/applicability-plugin.ts +82 -0
- package/src/atf/test-plugin.ts +6 -3
- package/src/basic-syntax-plugin.ts +10 -1
- package/src/business-rule-plugin.ts +2 -1
- package/src/call-expression-plugin.ts +2 -130
- package/src/column/column-to-record.ts +54 -8
- package/src/column-plugin.ts +29 -13
- package/src/dashboard/dashboard-component-property-defaults.ts +277 -0
- package/src/dashboard/dashboard-component-resolver.ts +69 -0
- package/src/dashboard/dashboard-plugin.ts +450 -0
- package/src/data-plugin.ts +67 -139
- package/src/email-notification-plugin.ts +850 -0
- package/src/flow/constants/flow-plugin-constants.ts +79 -0
- package/src/flow/flow-logic/flow-logic-constants.ts +120 -0
- package/src/flow/flow-logic/flow-logic-diagnostics.ts +591 -0
- package/src/flow/flow-logic/flow-logic-plugin-helpers.ts +2550 -0
- package/src/flow/flow-logic/flow-logic-plugin.ts +337 -0
- package/src/flow/flow-logic/flow-logic-shapes.ts +215 -0
- package/src/flow/plugins/approval-rules-plugin.ts +48 -0
- package/src/flow/plugins/flow-action-definition-plugin.ts +295 -0
- package/src/flow/plugins/flow-data-pill-plugin.ts +258 -0
- package/src/flow/plugins/flow-definition-plugin.ts +2173 -0
- package/src/flow/plugins/flow-diagnostics-plugin.ts +280 -0
- package/src/flow/plugins/flow-instance-plugin.ts +1499 -0
- package/src/flow/plugins/flow-trigger-instance-plugin.ts +444 -0
- package/src/flow/plugins/inline-script-plugin.ts +83 -0
- package/src/flow/plugins/step-definition-plugin.ts +67 -0
- package/src/flow/plugins/step-instance-plugin.ts +431 -0
- package/src/flow/plugins/trigger-plugin.ts +95 -0
- package/src/flow/plugins/wfa-datapill-plugin.ts +213 -0
- package/src/flow/utils/approval-rules-processor.ts +298 -0
- package/src/flow/utils/built-in-complex-objects.ts +81 -0
- package/src/flow/utils/complex-object-resolver.ts +875 -0
- package/src/flow/utils/complex-objects.ts +656 -0
- package/src/flow/utils/data-pill-shapes.ts +165 -0
- package/src/flow/utils/datapill-transformer.ts +632 -0
- package/src/flow/utils/flow-constants.ts +285 -0
- package/src/flow/utils/flow-io-to-record.ts +533 -0
- package/src/flow/utils/flow-shapes.ts +296 -0
- package/src/flow/utils/flow-to-xml.ts +318 -0
- package/src/flow/utils/flow-variable-processor.ts +100 -0
- package/src/flow/utils/label-cache-parser.ts +37 -0
- package/src/flow/utils/label-cache-processor.ts +870 -0
- package/src/flow/utils/pill-string-parser.ts +375 -0
- package/src/flow/utils/schema-to-flow-object.ts +385 -0
- package/src/flow/utils/service-catalog.ts +174 -0
- package/src/flow/utils/utils.ts +395 -0
- package/src/index.ts +20 -1
- package/src/list-plugin.ts +1 -1
- package/src/now-attach-plugin.ts +14 -11
- package/src/now-ref-plugin.ts +1 -1
- package/src/record-plugin.ts +76 -11
- package/src/repack/index.ts +14 -0
- package/src/rest-api-plugin.ts +62 -50
- package/src/server-module-plugin/index.ts +112 -86
- package/src/service-catalog/catalog-clientscript-plugin.ts +140 -0
- package/src/service-catalog/catalog-item-plugin.ts +162 -0
- package/src/service-catalog/catalog-ui-policy-plugin.ts +324 -0
- package/src/service-catalog/index.ts +5 -0
- package/src/service-catalog/record-to-shape.ts +109 -0
- package/src/service-catalog/sc-record-producer-plugin.ts +201 -0
- package/src/service-catalog/service-catalog-base.ts +600 -0
- package/src/service-catalog/service-catalog-diagnostics.ts +254 -0
- package/src/service-catalog/shape-to-record.ts +279 -0
- package/src/service-catalog/utils.ts +1455 -0
- package/src/service-catalog/variable-helper.ts +135 -0
- package/src/service-catalog/variable-set-plugin.ts +197 -0
- package/src/service-catalog/variables-transform.ts +438 -0
- package/src/sla/sla-validators.ts +331 -0
- package/src/sla-plugin.ts +358 -0
- package/src/static-content-plugin.ts +25 -2
- package/src/table-plugin.ts +49 -16
- package/src/ui-page-plugin.ts +1063 -20
- package/src/ui-policy-plugin.ts +5 -9
- package/src/utils.ts +24 -1
- package/src/ux-list-menu-config-plugin.ts +312 -0
- package/src/workspace-plugin/chrome-tab.ts +44 -0
- package/src/workspace-plugin/constants.ts +53 -0
- package/src/workspace-plugin/fluent-utils.ts +60 -0
- package/src/workspace-plugin/page.ts +139 -0
- package/src/workspace-plugin/screen.ts +34 -0
- package/src/workspace-plugin/templates/index.ts +17 -0
- package/src/workspace-plugin/templates/record-page-composition.ts +4051 -0
- package/src/workspace-plugin/templates/record-page-data.ts +523 -0
- package/src/workspace-plugin/templates/record-page-interalEventMappings.ts +35 -0
- package/src/workspace-plugin/templates/record-page-layoutModel.ts +51 -0
- package/src/workspace-plugin/templates/record-page-properties.ts +131 -0
- package/src/workspace-plugin/templates/record-page.ts +6 -0
- package/src/workspace-plugin.ts +574 -0
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateFlowLogic = validateFlowLogic;
|
|
4
|
+
exports.validateSibling = validateSibling;
|
|
5
|
+
const sdk_build_core_1 = require("@servicenow/sdk-build-core");
|
|
6
|
+
const flow_logic_constants_1 = require("./flow-logic-constants");
|
|
7
|
+
const utils_1 = require("../../utils");
|
|
8
|
+
const utils_2 = require("../utils/utils");
|
|
9
|
+
const flow_logic_plugin_helpers_1 = require("./flow-logic-plugin-helpers");
|
|
10
|
+
const data_pill_shapes_1 = require("../utils/data-pill-shapes");
|
|
11
|
+
const flow_1 = require("@servicenow/sdk-core/runtime/flow");
|
|
12
|
+
const inline_script_plugin_1 = require("../plugins/inline-script-plugin");
|
|
13
|
+
const FLOW_LOGIC_VALIDATORS = {
|
|
14
|
+
[flow_logic_constants_1.FLOW_LOGIC.GOBACKTO]: validateGoBackTo,
|
|
15
|
+
[flow_logic_constants_1.FLOW_LOGIC.IF]: validateIf,
|
|
16
|
+
[flow_logic_constants_1.FLOW_LOGIC.ELSEIF]: validateIf,
|
|
17
|
+
[flow_logic_constants_1.FLOW_LOGIC.ELSE]: validateIf,
|
|
18
|
+
[flow_logic_constants_1.FLOW_LOGIC.ENDFLOW]: validateEndFlow,
|
|
19
|
+
[flow_logic_constants_1.FLOW_LOGIC.EXITLOOP]: validateExitLoop,
|
|
20
|
+
[flow_logic_constants_1.FLOW_LOGIC.SKIP_ITERATION]: validateSkipIteration,
|
|
21
|
+
[flow_logic_constants_1.FLOW_LOGIC.WAIT_FOR_A_DURATION]: validateWaitForADuration,
|
|
22
|
+
[flow_logic_constants_1.FLOW_LOGIC.FOR_EACH]: validateForEach,
|
|
23
|
+
[flow_logic_constants_1.FLOW_LOGIC.DO_IN_PARALLEL]: validateDoInParallel,
|
|
24
|
+
[flow_logic_constants_1.FLOW_LOGIC.TRY_CATCH]: () => undefined,
|
|
25
|
+
[flow_logic_constants_1.FLOW_LOGIC.SET_FLOW_VARIABLES]: validateSetFlowVariables,
|
|
26
|
+
[flow_logic_constants_1.FLOW_LOGIC.ASSIGN_SUBFLOW_OUTPUTS]: validateAssignSubflowOutputs,
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Main validation function for flow logic instances.
|
|
30
|
+
* Validates placement rules and context requirements for different flow logic types.
|
|
31
|
+
*
|
|
32
|
+
* @param expr - The flow logic instance shape to validate
|
|
33
|
+
* @returns Error message if validation fails, undefined if valid
|
|
34
|
+
*/
|
|
35
|
+
function validateFlowLogic(expr, diagnostics) {
|
|
36
|
+
const conditionType = expr.getCallee();
|
|
37
|
+
const node = expr.getOriginalNode();
|
|
38
|
+
const parent = node.getFirstAncestorByKind(sdk_build_core_1.ts.SyntaxKind.CallExpression);
|
|
39
|
+
if (!parent) {
|
|
40
|
+
return `'${conditionType}' can only be used inside a Flow() or Subflow() body`;
|
|
41
|
+
}
|
|
42
|
+
const callExprName = (0, utils_1.getCallExpressionName)(parent);
|
|
43
|
+
const allowedCallExprNames = ['Flow', 'Subflow', ...Object.values(flow_logic_constants_1.FLOW_LOGIC)];
|
|
44
|
+
if (!allowedCallExprNames.includes(callExprName)) {
|
|
45
|
+
return `'${conditionType}' can only be used inside a Flow() or Subflow() body`;
|
|
46
|
+
}
|
|
47
|
+
// Validate sibling relationships for ElseIf/Else BEFORE running type-specific validators
|
|
48
|
+
if (conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSEIF || conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSE) {
|
|
49
|
+
const sibling = node
|
|
50
|
+
.getParent()
|
|
51
|
+
?.getPreviousSibling((n) => !sdk_build_core_1.ts.Node.isCommentStatement(n))
|
|
52
|
+
?.asKind(sdk_build_core_1.ts.SyntaxKind.ExpressionStatement)
|
|
53
|
+
?.getExpression()
|
|
54
|
+
.asKind(sdk_build_core_1.ts.SyntaxKind.CallExpression);
|
|
55
|
+
const siblingError = validateSibling(expr, sibling);
|
|
56
|
+
if (siblingError) {
|
|
57
|
+
return siblingError;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const validator = FLOW_LOGIC_VALIDATORS[conditionType];
|
|
61
|
+
if (!validator) {
|
|
62
|
+
diagnostics.error(expr, `Unsupported flow logic type for validation: ${conditionType}`);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
return validator(expr);
|
|
66
|
+
}
|
|
67
|
+
function validateGoBackTo(expr) {
|
|
68
|
+
const placementError = validateGoBackToPlacement(expr);
|
|
69
|
+
if (placementError) {
|
|
70
|
+
return placementError;
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Validates GoBackTo placement according to ServiceNow rules.
|
|
76
|
+
*
|
|
77
|
+
* Valid Go back to placement rules:
|
|
78
|
+
* - The Go back to flow logic must be within a branch of a parent flow logic block:
|
|
79
|
+
* - Then branch of If, Else If, or Else flow logic
|
|
80
|
+
* - Catch branch of Try flow logic
|
|
81
|
+
* - Case branch of Decision flow logic
|
|
82
|
+
* - The Go back to flow logic must be outside of the Error handler section
|
|
83
|
+
*
|
|
84
|
+
* @param expr - The GoBackTo flow logic instance shape
|
|
85
|
+
* @returns Error message if placement is invalid, undefined if valid
|
|
86
|
+
*/
|
|
87
|
+
function validateGoBackToPlacement(expr) {
|
|
88
|
+
const node = expr.getOriginalNode();
|
|
89
|
+
// Check if GoBackTo is within a branch of a parent flow logic block
|
|
90
|
+
const parentLogic = findParentFlowLogic(node);
|
|
91
|
+
if (!parentLogic) {
|
|
92
|
+
return 'GoBackTo must be within a branch of a parent flow logic block (If/Else/Decision/Try/Catch)';
|
|
93
|
+
}
|
|
94
|
+
// Check if GoBackTo is outside of Error handler section
|
|
95
|
+
if (isWithinErrorHandler(node)) {
|
|
96
|
+
return 'GoBackTo must be outside of the Error handler section';
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Finds the nearest parent flow logic block (If/Else/Decision/Try/Catch/Parallel) in the AST.
|
|
102
|
+
* Used to validate GoBackTo placement within proper flow logic branches.
|
|
103
|
+
*
|
|
104
|
+
* @param node - The AST node to start searching from
|
|
105
|
+
* @returns The parent flow logic CallExpression, or undefined if not found
|
|
106
|
+
*/
|
|
107
|
+
function findParentFlowLogic(node) {
|
|
108
|
+
const current = node?.getFirstAncestorByKind(sdk_build_core_1.ts.SyntaxKind.CallExpression);
|
|
109
|
+
if (!current) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
const callName = (0, utils_1.getCallExpressionName)(current);
|
|
113
|
+
if ([flow_logic_constants_1.FLOW_LOGIC.IF, flow_logic_constants_1.FLOW_LOGIC.ELSEIF, flow_logic_constants_1.FLOW_LOGIC.ELSE, 'TryCatch', 'MakeADecision'].includes(callName)) {
|
|
114
|
+
if (callName === 'TryCatch') {
|
|
115
|
+
// For TryCatch, GoBackTo should only be in the catch block, not in try block
|
|
116
|
+
if (!isInCatchBlock(node)) {
|
|
117
|
+
return undefined; // Invalid placement - not in catch block
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return current;
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Checks if a node is within the catch block of a TryCatch flow logic.
|
|
126
|
+
* GoBackTo is only allowed in the catch block, not in the try block.
|
|
127
|
+
*
|
|
128
|
+
* @param node - The AST node to check
|
|
129
|
+
* @returns True if within catch block, false otherwise
|
|
130
|
+
*/
|
|
131
|
+
function isInCatchBlock(node) {
|
|
132
|
+
const current = node
|
|
133
|
+
?.getFirstAncestorByKind(sdk_build_core_1.ts.SyntaxKind.ArrowFunction)
|
|
134
|
+
?.getParentIfKind(sdk_build_core_1.ts.SyntaxKind.PropertyAssignment);
|
|
135
|
+
if (current && current.getName() === 'catch') {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Checks if a node is within an Error handler section.
|
|
142
|
+
* GoBackTo flow logic must be outside of Error handler sections per ServiceNow rules.
|
|
143
|
+
*
|
|
144
|
+
* @param node - The AST node to check
|
|
145
|
+
* @returns True if within an Error handler, false otherwise
|
|
146
|
+
*/
|
|
147
|
+
function isWithinErrorHandler(_node) {
|
|
148
|
+
// TODO: Add implementation when Error handler is added in Flow
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Validates sibling relationships for conditional flow logic (If/Else/ElseIf).
|
|
153
|
+
* Ensures proper chaining and structure of conditional blocks.
|
|
154
|
+
*
|
|
155
|
+
* @param expr - The flow logic instance shape
|
|
156
|
+
* @param sibling - The sibling CallExpression to validate against
|
|
157
|
+
* @returns Error message if sibling relationship is invalid, undefined if valid
|
|
158
|
+
*/
|
|
159
|
+
function validateSibling(expr, sibling) {
|
|
160
|
+
const conditionType = expr.getCallee();
|
|
161
|
+
const isElseClause = conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSE;
|
|
162
|
+
const isElseIfClause = conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSEIF;
|
|
163
|
+
const siblingName = sibling ? (0, utils_1.getCallExpressionName)(sibling) : undefined;
|
|
164
|
+
if (isElseClause || isElseIfClause) {
|
|
165
|
+
if (!sibling) {
|
|
166
|
+
return `${conditionType} clause must follow an If or ElseIf clause.`;
|
|
167
|
+
}
|
|
168
|
+
const validPredecessors = [flow_logic_constants_1.FLOW_LOGIC.IF, flow_logic_constants_1.FLOW_LOGIC.ELSEIF];
|
|
169
|
+
if (!validPredecessors.includes(siblingName)) {
|
|
170
|
+
return `${conditionType} clause must follow an If or ElseIf clause, but found ${siblingName}.`;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
function validateIf(expr) {
|
|
176
|
+
const conditionType = expr.getCallee();
|
|
177
|
+
// If and ElseIf require a condition parameter, Else does not
|
|
178
|
+
if (conditionType === flow_logic_constants_1.FLOW_LOGIC.IF || conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSEIF) {
|
|
179
|
+
const config = expr.getConfig();
|
|
180
|
+
const condition = config.get('condition');
|
|
181
|
+
if (!condition || condition.isUndefined()) {
|
|
182
|
+
return `${conditionType} requires a 'condition' field in the configuration object.`;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
function validateEndFlow(expr) {
|
|
188
|
+
const placementError = validateEndFlowPlacement(expr);
|
|
189
|
+
if (placementError) {
|
|
190
|
+
return placementError;
|
|
191
|
+
}
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
function validateExitLoop(expr) {
|
|
195
|
+
return validateLoopPlacement(expr, 'Exit Loop');
|
|
196
|
+
}
|
|
197
|
+
function validateSkipIteration(expr) {
|
|
198
|
+
return validateLoopPlacement(expr, 'Skip Iteration');
|
|
199
|
+
}
|
|
200
|
+
function validateWaitForADuration(expr) {
|
|
201
|
+
const args = expr.getArguments();
|
|
202
|
+
if (args.length !== 1) {
|
|
203
|
+
return `Expected 2 arguments for ${expr.getCallee()}, but received ${args.length}`;
|
|
204
|
+
}
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
function validateForEach(expr) {
|
|
208
|
+
// Validate that forEach has the correct number of arguments
|
|
209
|
+
const args = expr.getArguments();
|
|
210
|
+
if (args.length < 2 || args.length > 3) {
|
|
211
|
+
return `ForEach requires 2-3 arguments (items, config, optional body), but received ${args.length}`;
|
|
212
|
+
}
|
|
213
|
+
// Validate config argument
|
|
214
|
+
try {
|
|
215
|
+
expr.getSysId();
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
return 'ForEach: Second argument (config) must be an object with valid $id property';
|
|
219
|
+
}
|
|
220
|
+
// Validate items argument (first argument) - must be an array type
|
|
221
|
+
const itemsArg = expr.getArgument(0, false);
|
|
222
|
+
if (!itemsArg || itemsArg.isUndefined()) {
|
|
223
|
+
return 'ForEach: First argument (items) is required and cannot be undefined';
|
|
224
|
+
}
|
|
225
|
+
// Valid array types - imported from core package to ensure consistency
|
|
226
|
+
// Helper to validate type hint
|
|
227
|
+
const validateTypeHint = (typeHint) => {
|
|
228
|
+
if (!flow_1.ARRAY_FLOW_DATA_TYPES.includes(typeHint)) {
|
|
229
|
+
return `ForEach requires an array type. The dataPill type '${typeHint}' is not an array type. Use array types like 'array.object', 'array.string', 'records', etc.`;
|
|
230
|
+
}
|
|
231
|
+
return undefined;
|
|
232
|
+
};
|
|
233
|
+
// Check if items is a PillShape (most common case - after DataPillPlugin transformation)
|
|
234
|
+
if (itemsArg instanceof data_pill_shapes_1.PillShape) {
|
|
235
|
+
const typeHint = itemsArg.getType();
|
|
236
|
+
if (typeHint) {
|
|
237
|
+
const error = validateTypeHint(typeHint);
|
|
238
|
+
if (error) {
|
|
239
|
+
return error;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Check if items is a CallExpressionShape (before DataPillPlugin transformation)
|
|
244
|
+
if (itemsArg instanceof sdk_build_core_1.CallExpressionShape) {
|
|
245
|
+
const callee = itemsArg.getCallee();
|
|
246
|
+
if (callee === 'wfa.dataPill') {
|
|
247
|
+
const dataPillArgs = itemsArg.getArguments();
|
|
248
|
+
if (dataPillArgs.length >= 2 && dataPillArgs[1]?.isString()) {
|
|
249
|
+
const typeHint = dataPillArgs[1].asString().getValue();
|
|
250
|
+
const error = validateTypeHint(typeHint);
|
|
251
|
+
if (error) {
|
|
252
|
+
return error;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
function validateDoInParallel(expr) {
|
|
260
|
+
if ((0, flow_logic_plugin_helpers_1.isDoInParallelShape)(expr)) {
|
|
261
|
+
const doInParallelExpr = expr;
|
|
262
|
+
const originalNode = doInParallelExpr.getOriginalNode();
|
|
263
|
+
// Check for nested DoInParallel
|
|
264
|
+
const parentDoInParallel = (0, utils_2.findAncestorByCalleeName)(originalNode, flow_logic_constants_1.FLOW_LOGIC.DO_IN_PARALLEL);
|
|
265
|
+
if (parentDoInParallel) {
|
|
266
|
+
return 'Nested DoInParallel calls are not allowed. DoInParallel cannot be used within another DoInParallel block.';
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Validates SetFlowVariables flow logic instance.
|
|
273
|
+
* Performs comprehensive validation of arguments, types, and structure.
|
|
274
|
+
*
|
|
275
|
+
* **Validations performed:**
|
|
276
|
+
* 1. Argument count: Must have exactly 3 arguments
|
|
277
|
+
* 2. Config object: Must contain required $id property
|
|
278
|
+
* 3. Schema argument: Must be params.flowVariables (schema reference)
|
|
279
|
+
* 4. Values object: Must be non-empty
|
|
280
|
+
* 5. Variable names: Cannot be empty or whitespace
|
|
281
|
+
* 6. Variable values: Must be valid types (string, number, boolean, or datapill)
|
|
282
|
+
*
|
|
283
|
+
* **Valid value types:**
|
|
284
|
+
* - String literals: "hello"
|
|
285
|
+
* - Numbers: 42, 3.14
|
|
286
|
+
* - Booleans: true, false
|
|
287
|
+
* - Objects: { a: "value", b: 42 } (ObjectShape - for FlowObject types)
|
|
288
|
+
* - Arrays: [1, 2, 3] (ArrayShape - for FlowArray types)
|
|
289
|
+
* - Datapills: params.trigger.name, params.complexObject (PropertyAccessShape)
|
|
290
|
+
* - Template expressions: `Hello ${params.trigger.name}` (TemplateExpressionShape)
|
|
291
|
+
*
|
|
292
|
+
* @param expr - The SetFlowVariables flow logic instance shape
|
|
293
|
+
* @returns Error message if validation fails, undefined if valid
|
|
294
|
+
*
|
|
295
|
+
* @example
|
|
296
|
+
* // Valid usage
|
|
297
|
+
* wfa.flowLogic.setFlowVariables(
|
|
298
|
+
* { $id: Now.ID['...'] },
|
|
299
|
+
* params.flowVariables, // ← Schema reference (2nd argument)
|
|
300
|
+
* { user: params.trigger.name, count: 42, active: true }
|
|
301
|
+
* )
|
|
302
|
+
*/
|
|
303
|
+
function validateSetFlowVariables(expr) {
|
|
304
|
+
if (!(0, flow_logic_plugin_helpers_1.isSetFlowVariablesShape)(expr)) {
|
|
305
|
+
return undefined;
|
|
306
|
+
}
|
|
307
|
+
// Validate argument count
|
|
308
|
+
const args = expr.getArguments();
|
|
309
|
+
if (args.length !== 3) {
|
|
310
|
+
return `SetFlowVariables requires exactly 3 arguments (config, schema, values), but received ${args.length}`;
|
|
311
|
+
}
|
|
312
|
+
// Validate config argument
|
|
313
|
+
try {
|
|
314
|
+
expr.getSysId();
|
|
315
|
+
}
|
|
316
|
+
catch (error) {
|
|
317
|
+
return 'SetFlowVariables: First argument (config) must be an object with valid $id property';
|
|
318
|
+
}
|
|
319
|
+
// Validate values argument (third argument)
|
|
320
|
+
const valuesArg = expr.getVariablesToSet();
|
|
321
|
+
if (!valuesArg || valuesArg.isUndefined()) {
|
|
322
|
+
return 'SetFlowVariables: Third argument (values) is required';
|
|
323
|
+
}
|
|
324
|
+
if (!valuesArg.isObject()) {
|
|
325
|
+
return 'SetFlowVariables: Third argument (values) must be an object';
|
|
326
|
+
}
|
|
327
|
+
// Validate that values object is not empty
|
|
328
|
+
const entries = Array.from(valuesArg.entries({ resolve: false }));
|
|
329
|
+
if (entries.length === 0) {
|
|
330
|
+
return 'SetFlowVariables: Values object cannot be empty - at least one variable must be set';
|
|
331
|
+
}
|
|
332
|
+
// Validate each value in the object
|
|
333
|
+
for (const [key, valueShape] of entries) {
|
|
334
|
+
if (!key || key.trim() === '') {
|
|
335
|
+
return 'SetFlowVariables: Variable names cannot be empty';
|
|
336
|
+
}
|
|
337
|
+
// Check if value is valid (string, datapill, template expression, or inline script)
|
|
338
|
+
if (valueShape.isUndefined()) {
|
|
339
|
+
return `SetFlowVariables: Variable '${key}' has undefined value`;
|
|
340
|
+
}
|
|
341
|
+
// Values can be: strings, numbers, booleans, objects, arrays, datapills, template expressions, or inline scripts
|
|
342
|
+
const isDatapill = valueShape instanceof sdk_build_core_1.PropertyAccessShape || valueShape instanceof sdk_build_core_1.TemplateExpressionShape;
|
|
343
|
+
const isInlineScript = valueShape instanceof inline_script_plugin_1.FDInlineScriptCallShape;
|
|
344
|
+
const isIdentifier = valueShape instanceof sdk_build_core_1.IdentifierShape;
|
|
345
|
+
const isArrayOrObject = valueShape instanceof sdk_build_core_1.ArrayShape || valueShape instanceof sdk_build_core_1.ObjectShape;
|
|
346
|
+
const isValidType = valueShape.isString() ||
|
|
347
|
+
valueShape.isNumber() ||
|
|
348
|
+
valueShape.isBoolean() ||
|
|
349
|
+
isDatapill ||
|
|
350
|
+
isArrayOrObject ||
|
|
351
|
+
isInlineScript;
|
|
352
|
+
if (!isValidType) {
|
|
353
|
+
// Provide specific error message for unsupported types
|
|
354
|
+
if (isIdentifier) {
|
|
355
|
+
return `SetFlowVariables: Variable '${key}' cannot use local variable references. Use direct values (literals) or datapills (e.g., params.someField) instead`;
|
|
356
|
+
}
|
|
357
|
+
return `SetFlowVariables: Variable '${key}' has invalid value type. Expected string, number, boolean, object, array, or datapill expression`;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return undefined;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Validates AssignSubflowOutputs flow logic instance.
|
|
364
|
+
* Performs comprehensive validation of arguments, types, structure, and placement.
|
|
365
|
+
*
|
|
366
|
+
* **Validations performed:**
|
|
367
|
+
* 1. Placement: Must be within a Subflow or SubflowDefinition (not in regular Flow)
|
|
368
|
+
* 2. Argument count: Must have exactly 3 arguments
|
|
369
|
+
* 3. Config object: Must contain required $id property
|
|
370
|
+
* 4. Schema argument: Must be params.outputs (schema reference)
|
|
371
|
+
* 5. Values object: Must be non-empty
|
|
372
|
+
* 6. Output names: Cannot be empty or whitespace
|
|
373
|
+
* 7. Output values: Must be valid types (string, number, boolean, or datapill)
|
|
374
|
+
*
|
|
375
|
+
* **Valid value types:**
|
|
376
|
+
* - String literals: "success"
|
|
377
|
+
* - Numbers: 42, 3.14
|
|
378
|
+
* - Booleans: true, false
|
|
379
|
+
* - Objects: { a: "value", b: 42 } (ObjectShape - for FlowObject types)
|
|
380
|
+
* - Arrays: [1, 2, 3] (ArrayShape - for FlowArray types)
|
|
381
|
+
* - Datapills: params.action.result, params.complexObject (PropertyAccessShape)
|
|
382
|
+
* - Template expressions: `Result: ${params.action.result}` (TemplateExpressionShape)
|
|
383
|
+
*
|
|
384
|
+
* **Important:** AssignSubflowOutputs can ONLY be used within Subflow or SubflowDefinition.
|
|
385
|
+
* Using it in a regular Flow will result in a validation error.
|
|
386
|
+
*
|
|
387
|
+
* @param expr - The AssignSubflowOutputs flow logic instance shape
|
|
388
|
+
* @returns Error message if validation fails, undefined if valid
|
|
389
|
+
*
|
|
390
|
+
* @example
|
|
391
|
+
* // Valid usage (within Subflow)
|
|
392
|
+
* Subflow({
|
|
393
|
+
* outputs: { result: StringColumn(...) }
|
|
394
|
+
* }, (params) => {
|
|
395
|
+
* wfa.flowLogic.assignSubflowOutputs(
|
|
396
|
+
* { $id: Now.ID['...'] },
|
|
397
|
+
* params.outputs, // ← Schema reference (2nd argument)
|
|
398
|
+
* { result: params.action.data, status: "complete" }
|
|
399
|
+
* )
|
|
400
|
+
* })
|
|
401
|
+
*/
|
|
402
|
+
function validateAssignSubflowOutputs(expr) {
|
|
403
|
+
if (!(0, flow_logic_plugin_helpers_1.isAssignSubflowOutputsShape)(expr)) {
|
|
404
|
+
return undefined;
|
|
405
|
+
}
|
|
406
|
+
// Validate that this is called within a SubflowDefinition or Subflow
|
|
407
|
+
const node = expr.getOriginalNode();
|
|
408
|
+
const subflowAncestor = (0, utils_2.findAncestorByCalleeName)(node, 'SubflowDefinition') || (0, utils_2.findAncestorByCalleeName)(node, 'Subflow');
|
|
409
|
+
if (!subflowAncestor) {
|
|
410
|
+
return 'AssignSubflowOutputs can only be used within a SubflowDefinition or Subflow';
|
|
411
|
+
}
|
|
412
|
+
// Validate argument count
|
|
413
|
+
const args = expr.getArguments();
|
|
414
|
+
if (args.length !== 3) {
|
|
415
|
+
return `AssignSubflowOutputs requires exactly 3 arguments (config, schema, values), but received ${args.length}`;
|
|
416
|
+
}
|
|
417
|
+
// Validate config argument
|
|
418
|
+
try {
|
|
419
|
+
expr.getSysId();
|
|
420
|
+
}
|
|
421
|
+
catch (error) {
|
|
422
|
+
return 'AssignSubflowOutputs: First argument (config) must be an object with valid $id property';
|
|
423
|
+
}
|
|
424
|
+
// Validate values argument (third argument)
|
|
425
|
+
const valuesArg = expr.getAssignedSubflowOutputs();
|
|
426
|
+
if (!valuesArg || valuesArg.isUndefined()) {
|
|
427
|
+
return 'AssignSubflowOutputs: Third argument (values) is required';
|
|
428
|
+
}
|
|
429
|
+
if (!valuesArg.isObject()) {
|
|
430
|
+
return 'AssignSubflowOutputs: Third argument (values) must be an object';
|
|
431
|
+
}
|
|
432
|
+
// Validate that values object is not empty
|
|
433
|
+
const entries = Array.from(valuesArg.entries({ resolve: false }));
|
|
434
|
+
if (entries.length === 0) {
|
|
435
|
+
return 'AssignSubflowOutputs: Values object cannot be empty - at least one output must be assigned';
|
|
436
|
+
}
|
|
437
|
+
// Validate each value in the object
|
|
438
|
+
for (const [key, valueShape] of entries) {
|
|
439
|
+
if (!key || key.trim() === '') {
|
|
440
|
+
return 'AssignSubflowOutputs: Output names cannot be empty';
|
|
441
|
+
}
|
|
442
|
+
// Check if value is valid (string, datapill, template expression, or inline script)
|
|
443
|
+
if (valueShape.isUndefined()) {
|
|
444
|
+
return `AssignSubflowOutputs: Output '${key}' has undefined value`;
|
|
445
|
+
}
|
|
446
|
+
// Values can be: strings, numbers, booleans, objects, arrays, datapills, template expressions, or inline scripts
|
|
447
|
+
const isDatapill = valueShape instanceof sdk_build_core_1.PropertyAccessShape || valueShape instanceof sdk_build_core_1.TemplateExpressionShape;
|
|
448
|
+
const isInlineScript = valueShape instanceof inline_script_plugin_1.FDInlineScriptCallShape;
|
|
449
|
+
const isIdentifier = valueShape instanceof sdk_build_core_1.IdentifierShape;
|
|
450
|
+
const isArrayOrObject = valueShape instanceof sdk_build_core_1.ArrayShape || valueShape instanceof sdk_build_core_1.ObjectShape;
|
|
451
|
+
const isValidType = valueShape.isString() ||
|
|
452
|
+
valueShape.isNumber() ||
|
|
453
|
+
valueShape.isBoolean() ||
|
|
454
|
+
isDatapill ||
|
|
455
|
+
isArrayOrObject ||
|
|
456
|
+
isInlineScript;
|
|
457
|
+
if (!isValidType) {
|
|
458
|
+
// Provide specific error message for unsupported types
|
|
459
|
+
if (isIdentifier) {
|
|
460
|
+
return `AssignSubflowOutputs: Output '${key}' cannot use local variable references. Use direct values (literals) or datapills (e.g., params.someField) instead`;
|
|
461
|
+
}
|
|
462
|
+
return `AssignSubflowOutputs: Output '${key}' has invalid value type. Expected string, number, boolean, object, array, or datapill expression`;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
return undefined;
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Validates that a loop control flow logic (Exit Loop or Skip Iteration) is within a valid loop construct.
|
|
469
|
+
*
|
|
470
|
+
* @param expr - The flow logic instance shape to validate
|
|
471
|
+
* @param logicName - The name of the logic for error messages (e.g., 'Exit Loop', 'Skip Iteration')
|
|
472
|
+
* @returns Error message if placement is invalid, undefined if valid
|
|
473
|
+
*/
|
|
474
|
+
function validateLoopPlacement(expr, logicName) {
|
|
475
|
+
const node = expr.getOriginalNode();
|
|
476
|
+
// Loop constructs that loop control flow logic can be used within
|
|
477
|
+
const LOOP_CONSTRUCTS = [
|
|
478
|
+
flow_logic_constants_1.FLOW_LOGIC.FOR_EACH,
|
|
479
|
+
// TODO: Add FLOW_LOGIC.DO_UNTIL when implemented
|
|
480
|
+
];
|
|
481
|
+
const parentLoop = (0, utils_2.findAncestorByCalleeName)(node, ...LOOP_CONSTRUCTS);
|
|
482
|
+
if (!parentLoop) {
|
|
483
|
+
return `${logicName} must be used within a Do Until or For Each loop`;
|
|
484
|
+
}
|
|
485
|
+
return undefined;
|
|
486
|
+
}
|
|
487
|
+
function validateEndFlowPlacement(expr) {
|
|
488
|
+
const node = expr.getOriginalNode();
|
|
489
|
+
// Block constructs that End Flow can be used within
|
|
490
|
+
const END_FLOW_BLOCKS = [
|
|
491
|
+
flow_logic_constants_1.FLOW_LOGIC.FOR_EACH,
|
|
492
|
+
flow_logic_constants_1.FLOW_LOGIC.IF,
|
|
493
|
+
flow_logic_constants_1.FLOW_LOGIC.ELSEIF,
|
|
494
|
+
flow_logic_constants_1.FLOW_LOGIC.ELSE,
|
|
495
|
+
// TODO: Add FLOW_LOGIC.DO_UNTIL when implemented
|
|
496
|
+
];
|
|
497
|
+
const parentBlock = (0, utils_2.findAncestorByCalleeName)(node, ...END_FLOW_BLOCKS);
|
|
498
|
+
if (!parentBlock) {
|
|
499
|
+
return 'End Flow must be used within a Do Until, For Each, or If block';
|
|
500
|
+
}
|
|
501
|
+
return undefined;
|
|
502
|
+
}
|
|
503
|
+
//# sourceMappingURL=flow-logic-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-logic-diagnostics.js","sourceRoot":"","sources":["../../../src/flow/flow-logic/flow-logic-diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Factory, Diagnostics, Result, Transform, Database } from '@servicenow/sdk-build-core';
|
|
2
|
+
import type { FlowLogicInstanceShape, ConditionalLogicInstanceShape, ForEachInstanceShape, GoBackToInstanceShape, TryCatchInstanceShape, DoInParallelInstanceShape, SetFlowVariablesInstanceShape, AssignSubflowOutputsInstanceShape } from './flow-logic-shapes';
|
|
3
|
+
import { Shape, Record } from '@servicenow/sdk-build-core';
|
|
4
|
+
import { FLOW_LOGIC } from './flow-logic-constants';
|
|
5
|
+
interface FlowLogicValueInput {
|
|
6
|
+
name: string;
|
|
7
|
+
value: string;
|
|
8
|
+
displayValue?: string;
|
|
9
|
+
children?: unknown[];
|
|
10
|
+
parameter?: {
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
interface FlowLogicValueWithScript extends FlowLogicValueInput {
|
|
15
|
+
scriptActive?: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface AssignSubflowOutput extends FlowLogicValueWithScript {
|
|
18
|
+
}
|
|
19
|
+
interface SetFlowVariablesInput extends FlowLogicValueWithScript {
|
|
20
|
+
}
|
|
21
|
+
export interface FlowLogicValues {
|
|
22
|
+
inputs: FlowLogicValueInput[];
|
|
23
|
+
outputsToAssign: AssignSubflowOutput[];
|
|
24
|
+
variables: SetFlowVariablesInput[];
|
|
25
|
+
decisionTableInputs: [];
|
|
26
|
+
dynamicInputs: [];
|
|
27
|
+
workflowInputs: [];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates an empty FlowLogicValues object with all fields initialized to empty arrays
|
|
31
|
+
* @returns Empty FlowLogicValues structure
|
|
32
|
+
*/
|
|
33
|
+
export declare function createEmptyFlowLogicValues(): FlowLogicValues;
|
|
34
|
+
/**
|
|
35
|
+
* Helper function to check if children array contains any datapill values.
|
|
36
|
+
* Datapills are indicated by {{...}} syntax in the value field.
|
|
37
|
+
*
|
|
38
|
+
* @param children - The children array to check
|
|
39
|
+
* @returns true if any child has a datapill value
|
|
40
|
+
*/
|
|
41
|
+
export declare function childrenContainDatapills(children: unknown[]): boolean;
|
|
42
|
+
export declare function isConditionalLogicShape(expr: FlowLogicInstanceShape): expr is ConditionalLogicInstanceShape;
|
|
43
|
+
export declare function isForEachShape(expr: FlowLogicInstanceShape): expr is ForEachInstanceShape;
|
|
44
|
+
export declare function isGoBackToShape(expr: FlowLogicInstanceShape): expr is GoBackToInstanceShape;
|
|
45
|
+
export declare function isTryCatchShape(expr: FlowLogicInstanceShape): expr is TryCatchInstanceShape;
|
|
46
|
+
export declare function isDoInParallelShape(expr: FlowLogicInstanceShape): expr is DoInParallelInstanceShape;
|
|
47
|
+
export declare function isSetFlowVariablesShape(expr: FlowLogicInstanceShape): expr is SetFlowVariablesInstanceShape;
|
|
48
|
+
export declare function isAssignSubflowOutputsShape(expr: FlowLogicInstanceShape): expr is AssignSubflowOutputsInstanceShape;
|
|
49
|
+
/**
|
|
50
|
+
* Checks if a shape is a datapill shape (PropertyAccessShape, TemplateExpressionShape, IdentifierShape, PillShape, or PillTemplateShape)
|
|
51
|
+
*/
|
|
52
|
+
export declare function isDataPillShape(shape: Shape): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Main function to process flow logic instances and build records
|
|
55
|
+
*/
|
|
56
|
+
export declare function getFlowLogicInstanceRecord(expr: FlowLogicInstanceShape, context: {
|
|
57
|
+
diagnostics: Diagnostics;
|
|
58
|
+
transform: Transform;
|
|
59
|
+
factory: Factory;
|
|
60
|
+
}): Promise<Result<Record>>;
|
|
61
|
+
export declare function getFlowLogicArguments(logicName: FLOW_LOGIC, record: Record, logicBodyShapes: Shape[], database: Database): Shape<unknown>[];
|
|
62
|
+
export {};
|