@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,614 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveComplexInput = resolveComplexInput;
|
|
4
|
+
exports.isDataPill = isDataPill;
|
|
5
|
+
const sdk_build_core_1 = require("@servicenow/sdk-build-core");
|
|
6
|
+
const schema_to_flow_object_1 = require("./schema-to-flow-object");
|
|
7
|
+
const flow_constants_1 = require("./flow-constants");
|
|
8
|
+
/**
|
|
9
|
+
* Utility module responsible for resolving complex-object and array inputs to the
|
|
10
|
+
* JSON payload expected by Flow Designer. Keeping the logic in a standalone
|
|
11
|
+
* file makes it unit-testable and keeps plugin code succinct.
|
|
12
|
+
*/
|
|
13
|
+
/* -------------------------------------------------------------------------- */
|
|
14
|
+
/* Constants */
|
|
15
|
+
/* -------------------------------------------------------------------------- */
|
|
16
|
+
/** Prefix for Flow Designer complex object schema keys */
|
|
17
|
+
const FLOW_DESIGNER_PREFIX = 'FlowDesigner:';
|
|
18
|
+
/** Suffix for field facets in complex object schema */
|
|
19
|
+
const FIELD_FACETS_SUFFIX = '.$field_facets';
|
|
20
|
+
/** Key for SimpleMapFacet in field facets */
|
|
21
|
+
const SIMPLE_MAP_FACET_KEY = 'SimpleMapFacet';
|
|
22
|
+
/** Prefix for Java language types in complex objects */
|
|
23
|
+
const JAVA_LANG_PREFIX = 'java.lang.';
|
|
24
|
+
/** Field name for complex object name in JSON payload */
|
|
25
|
+
const COMPLEX_OBJECT_NAME_FIELD = 'name$';
|
|
26
|
+
/** Field name for complex object collection arrays in JSON payload */
|
|
27
|
+
const COMPLEX_OBJECT_COLLECTION_FIELD = '$COCollectionField';
|
|
28
|
+
/** UI type value for object type fields */
|
|
29
|
+
const UI_TYPE_OBJECT = 'object';
|
|
30
|
+
/** UI type prefix for array type fields */
|
|
31
|
+
const UI_TYPE_ARRAY_PREFIX = 'array';
|
|
32
|
+
/* -------------------------------------------------------------------------- */
|
|
33
|
+
/* Public API */
|
|
34
|
+
/* -------------------------------------------------------------------------- */
|
|
35
|
+
function resolveComplexInput(name, value, parentDef, inputTableName, diagnostics, logger) {
|
|
36
|
+
const inputDef = parentDef
|
|
37
|
+
?.flat()
|
|
38
|
+
.filter((obj) => obj.getTable() === inputTableName)
|
|
39
|
+
.find((obj) => obj.get('element').asString().getValue() === name);
|
|
40
|
+
if (!inputDef) {
|
|
41
|
+
return { value: value, internalType: undefined };
|
|
42
|
+
}
|
|
43
|
+
let internalType = inputDef?.get('internal_type').asString().getValue();
|
|
44
|
+
//Logic to check if the StringColumn has isFullUTF8 set to true and update internalType to String (Full UTF-8)
|
|
45
|
+
const inputDefSource = inputDef.getSource();
|
|
46
|
+
if (inputDefSource instanceof sdk_build_core_1.CallExpressionShape && inputDefSource.getCallee() === flow_constants_1.STRING_API_NAME) {
|
|
47
|
+
const isFullUTF8 = inputDefSource.getArgument?.(0)?.asObject()?.get(flow_constants_1.STRING_FULL_UTF8_ATTRIBUTE_NAME);
|
|
48
|
+
if (isFullUTF8?.ifBoolean()?.getValue() === true) {
|
|
49
|
+
internalType = flow_constants_1.STRING_FULL_UTF8_DATA_TYPE_VALUE;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const attributesShape = inputDef.get('attributes');
|
|
53
|
+
const attributesStr = attributesShape && !attributesShape.is(sdk_build_core_1.UndefinedShape) ? attributesShape.ifString()?.getValue() : undefined;
|
|
54
|
+
// If attributes is not present then its a primitive input, return the value as is.
|
|
55
|
+
if (!attributesStr) {
|
|
56
|
+
return { value: value, internalType: internalType };
|
|
57
|
+
}
|
|
58
|
+
const { coType, uiType } = parseAttributes(attributesStr);
|
|
59
|
+
if (!coType || !uiType) {
|
|
60
|
+
return { value: value, internalType: internalType };
|
|
61
|
+
}
|
|
62
|
+
const complexSchema = getComplexObjectSchema(parentDef, coType, diagnostics);
|
|
63
|
+
if (!complexSchema) {
|
|
64
|
+
return { value: value, internalType: internalType };
|
|
65
|
+
}
|
|
66
|
+
if (uiType === UI_TYPE_OBJECT) {
|
|
67
|
+
const result = buildObjectPayloadWithChildren(value, complexSchema, coType);
|
|
68
|
+
return {
|
|
69
|
+
value: result.value,
|
|
70
|
+
internalType: internalType,
|
|
71
|
+
children: result.children,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const uiTypeRoot = uiType.split('.')[0];
|
|
75
|
+
if (uiTypeRoot === UI_TYPE_ARRAY_PREFIX) {
|
|
76
|
+
const result = buildArrayPayloadWithChildren(value, complexSchema, coType, logger);
|
|
77
|
+
return {
|
|
78
|
+
value: result.value,
|
|
79
|
+
internalType: internalType,
|
|
80
|
+
children: result.children,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// Fallback - unsupported uiType
|
|
84
|
+
return { value: value, internalType: internalType };
|
|
85
|
+
}
|
|
86
|
+
function parseAttributes(attr) {
|
|
87
|
+
const attributes = (0, schema_to_flow_object_1.parseAttributesToObject)(attr);
|
|
88
|
+
const coType = attributes['co_type_name'];
|
|
89
|
+
const uiType = attributes['uiType'];
|
|
90
|
+
const result = {};
|
|
91
|
+
if (coType !== undefined) {
|
|
92
|
+
result.coType = coType;
|
|
93
|
+
}
|
|
94
|
+
if (uiType !== undefined) {
|
|
95
|
+
result.uiType = uiType;
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
function getComplexObjectSchema(parent, coType, diagnostics) {
|
|
100
|
+
// get complex object schema from parent record for the given coType
|
|
101
|
+
const complexObject = parent
|
|
102
|
+
?.flat()
|
|
103
|
+
.find((obj) => obj.getTable() === 'sys_complex_object' && obj.get('name').asString().getValue() === coType);
|
|
104
|
+
if (!complexObject) {
|
|
105
|
+
diagnostics?.error(parent, `Complex object '${coType}' not found.`);
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
const serialized = complexObject?.get('serialized_content')?.ifString()?.getValue();
|
|
109
|
+
if (!serialized) {
|
|
110
|
+
diagnostics?.error(complexObject ?? parent, `Serialized schema missing for complex object '${coType}'.`);
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
return safeJsonParse(serialized, coType, complexObject, diagnostics);
|
|
114
|
+
}
|
|
115
|
+
function safeJsonParse(text, coType, node, diagnostics) {
|
|
116
|
+
try {
|
|
117
|
+
return JSON.parse(text);
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
121
|
+
diagnostics?.error(node, `Invalid schema JSON for complex object '${coType}': ${message}`);
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/* ------------------------------ Object Types ------------------------------ */
|
|
126
|
+
/** Enriches schema with mapped datapill values for nested objects */
|
|
127
|
+
function addMappedFieldsToSchema(schema, coType, rawValue) {
|
|
128
|
+
// Deep clone the schema to avoid mutating the original
|
|
129
|
+
const enrichedSchema = JSON.parse(JSON.stringify(schema));
|
|
130
|
+
const template = enrichedSchema[`${FLOW_DESIGNER_PREFIX}${coType}`];
|
|
131
|
+
if (!template) {
|
|
132
|
+
return enrichedSchema;
|
|
133
|
+
}
|
|
134
|
+
// Recursively process all fields (including nested objects)
|
|
135
|
+
processFieldsForMappedValues(template, rawValue, '');
|
|
136
|
+
return enrichedSchema;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Processes a single field to add mapped datapill value to its facets.
|
|
140
|
+
* @param facets - The field facets object
|
|
141
|
+
* @param mappedKey - The dotted path key (e.g., 'name.firstName')
|
|
142
|
+
* @param dataPillValue - The datapill value to map
|
|
143
|
+
*/
|
|
144
|
+
function addMappedValueToFacet(facets, mappedKey, dataPillValue) {
|
|
145
|
+
const simpleMapFacetStr = facets[SIMPLE_MAP_FACET_KEY];
|
|
146
|
+
if (typeof simpleMapFacetStr !== 'string') {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
const facetObj = JSON.parse(simpleMapFacetStr);
|
|
151
|
+
const strippedValue = stripDataPillType(dataPillValue);
|
|
152
|
+
facetObj['mapped'] = JSON.stringify({ [mappedKey]: strippedValue });
|
|
153
|
+
facets[SIMPLE_MAP_FACET_KEY] = JSON.stringify(facetObj);
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
// Skip fields without proper facet structure
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/** Recursively processes fields to add mapped datapill values for nested objects */
|
|
160
|
+
function processFieldsForMappedValues(template, rawValue, parentPath) {
|
|
161
|
+
for (const key of Object.keys(rawValue)) {
|
|
162
|
+
const fieldValue = rawValue[key];
|
|
163
|
+
const fieldTemplate = template[key];
|
|
164
|
+
// Handle arrays (FlowArray with FlowObject elements)
|
|
165
|
+
if (Array.isArray(fieldValue) && Array.isArray(fieldTemplate)) {
|
|
166
|
+
processArrayForMappedValues(fieldTemplate, fieldValue, parentPath, key);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
// Handle nested objects recursively
|
|
170
|
+
if (isNestedObject(fieldValue) && isNestedObject(fieldTemplate)) {
|
|
171
|
+
const newPath = buildFieldPath(parentPath, key);
|
|
172
|
+
processFieldsForMappedValues(fieldTemplate, fieldValue, newPath);
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
// Handle datapill fields - add mapped value to facets
|
|
176
|
+
if (!isDataPill(fieldValue)) {
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const facetKey = `${key}${FIELD_FACETS_SUFFIX}`;
|
|
180
|
+
const facets = template[facetKey];
|
|
181
|
+
if (!isNestedObject(facets)) {
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
const mappedKey = buildFieldPath(parentPath, key);
|
|
185
|
+
addMappedValueToFacet(facets, mappedKey, fieldValue);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/** Processes array elements to add mapped datapill values for FlowArray fields */
|
|
189
|
+
function processArrayForMappedValues(templateArray, rawArray, parentPath, arrayKey) {
|
|
190
|
+
// FlowArray schema is wrapped: [{"wrapperKey": {field1: "String", field2: "Integer"}}]
|
|
191
|
+
if (templateArray.length !== 1) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const wrapperElement = templateArray[0];
|
|
195
|
+
if (!isNestedObject(wrapperElement)) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const wrapperKeys = Object.keys(wrapperElement);
|
|
199
|
+
if (wrapperKeys.length !== 1 || !wrapperKeys[0]) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
const elementTemplate = wrapperElement[wrapperKeys[0]];
|
|
203
|
+
if (!isNestedObject(elementTemplate)) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
// Process each array element
|
|
207
|
+
rawArray.forEach((element, index) => {
|
|
208
|
+
if (!isNestedObject(element)) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
// Build path with array index: "tasks[0]"
|
|
212
|
+
const arrayPath = `${arrayKey}[${index}]`;
|
|
213
|
+
const fullPath = buildFieldPath(parentPath, arrayPath);
|
|
214
|
+
// Process fields in this array element
|
|
215
|
+
processFieldsForMappedValues(elementTemplate, element, fullPath);
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
/** Builds complex object payload with children array for UI display */
|
|
219
|
+
function buildObjectPayloadWithChildren(rawValue, schema, coType) {
|
|
220
|
+
if (typeof rawValue !== 'object' || rawValue === null) {
|
|
221
|
+
return { value: String(rawValue), children: [] };
|
|
222
|
+
}
|
|
223
|
+
const template = schema[`${FLOW_DESIGNER_PREFIX}${coType}`];
|
|
224
|
+
const picked = deepPick(template, rawValue);
|
|
225
|
+
const cvObject = buildCv(picked, rawValue);
|
|
226
|
+
const enrichedSchema = addMappedFieldsToSchema(schema, coType, rawValue);
|
|
227
|
+
const value = stringifyPayload(enrichedSchema, cvObject);
|
|
228
|
+
// Build children array recursively for nested objects
|
|
229
|
+
const children = buildChildrenArray(rawValue, template);
|
|
230
|
+
return { value, children };
|
|
231
|
+
}
|
|
232
|
+
/* ------------------------------ Array Types ------------------------------- */
|
|
233
|
+
function buildArrayPayload(rawValue, schema, coType) {
|
|
234
|
+
const collectionValue = Array.isArray(rawValue) && rawValue.length === 0
|
|
235
|
+
? (createEmptyArrayPlaceholder(schema, coType) ?? rawValue)
|
|
236
|
+
: rawValue;
|
|
237
|
+
return stringifyPayload(schema, {
|
|
238
|
+
[COMPLEX_OBJECT_NAME_FIELD]: coType,
|
|
239
|
+
[COMPLEX_OBJECT_COLLECTION_FIELD]: collectionValue,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Builds complex object array payload with children array for UI display.
|
|
244
|
+
* Extracts child_name from schema and uses it for array element names.
|
|
245
|
+
*/
|
|
246
|
+
function buildArrayPayloadWithChildren(rawValue, schema, coType, logger) {
|
|
247
|
+
// Build the payload value
|
|
248
|
+
const value = buildArrayPayload(rawValue, schema, coType);
|
|
249
|
+
// Extract child_name from schema
|
|
250
|
+
const childName = extractChildNameFromSchema(schema, coType, logger);
|
|
251
|
+
// Build children array with proper names
|
|
252
|
+
const children = [];
|
|
253
|
+
if (Array.isArray(rawValue)) {
|
|
254
|
+
const template = schema[`${FLOW_DESIGNER_PREFIX}${coType}`];
|
|
255
|
+
const collectionField = template?.[COMPLEX_OBJECT_COLLECTION_FIELD];
|
|
256
|
+
const elementTemplate = Array.isArray(collectionField) && collectionField.length > 0 ? collectionField[0] : undefined;
|
|
257
|
+
for (const element of rawValue) {
|
|
258
|
+
if (typeof element === 'object' && element !== null && elementTemplate) {
|
|
259
|
+
// Unwrap childName layer if present
|
|
260
|
+
// The schema wraps FlowObject fields with childName: { "tag": { "value": "String", ... } }
|
|
261
|
+
// We need to extract the inner object: { "value": "String", ... }
|
|
262
|
+
let actualTemplate = elementTemplate;
|
|
263
|
+
if (childName && childName in actualTemplate) {
|
|
264
|
+
const innerTemplate = actualTemplate[childName];
|
|
265
|
+
if (typeof innerTemplate === 'object' && innerTemplate !== null && !Array.isArray(innerTemplate)) {
|
|
266
|
+
actualTemplate = innerTemplate;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// For complex elements (objects), recursively build children
|
|
270
|
+
const elementChildren = buildChildrenArray(element, actualTemplate);
|
|
271
|
+
children.push({
|
|
272
|
+
name: childName || '',
|
|
273
|
+
value: '',
|
|
274
|
+
displayValue: '',
|
|
275
|
+
children: elementChildren,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
// For primitive elements
|
|
280
|
+
children.push({
|
|
281
|
+
name: childName || '',
|
|
282
|
+
value: String(element),
|
|
283
|
+
displayValue: String(element),
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return { value, children };
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Extracts child_name from a complex object schema.
|
|
292
|
+
* The child_name is stored in the $COCollectionField.$type_facets.SimpleMapFacet.
|
|
293
|
+
*/
|
|
294
|
+
function extractChildNameFromSchema(schema, coType, logger) {
|
|
295
|
+
try {
|
|
296
|
+
const template = schema[`${FLOW_DESIGNER_PREFIX}${coType}`];
|
|
297
|
+
const typeFacets = template?.['$COCollectionField.$type_facets'];
|
|
298
|
+
if (typeFacets && typeof typeFacets === 'object' && 'SimpleMapFacet' in typeFacets) {
|
|
299
|
+
const simpleMapFacet = typeFacets.SimpleMapFacet;
|
|
300
|
+
if (typeof simpleMapFacet === 'string') {
|
|
301
|
+
const facetData = JSON.parse(simpleMapFacet);
|
|
302
|
+
return facetData.child_name;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
logger?.warn('Failed to extract child_name from schema:', error instanceof Error ? error.message : String(error));
|
|
308
|
+
}
|
|
309
|
+
return undefined;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Creates a placeholder element for empty FlowArrays with FlowObject elements.
|
|
313
|
+
* ServiceNow expects a single placeholder with empty $cv values for each field.
|
|
314
|
+
*
|
|
315
|
+
* @param schema - The complex object schema containing array structure
|
|
316
|
+
* @param coType - The complex object type name
|
|
317
|
+
* @returns Array with single placeholder element, or undefined if schema is invalid
|
|
318
|
+
*/
|
|
319
|
+
function createEmptyArrayPlaceholder(schema, coType) {
|
|
320
|
+
const template = schema[`${FLOW_DESIGNER_PREFIX}${coType}`];
|
|
321
|
+
const collectionField = template?.[COMPLEX_OBJECT_COLLECTION_FIELD];
|
|
322
|
+
if (!Array.isArray(collectionField) || collectionField.length === 0) {
|
|
323
|
+
return undefined;
|
|
324
|
+
}
|
|
325
|
+
const elementTemplate = collectionField[0];
|
|
326
|
+
if (!isNestedObject(elementTemplate)) {
|
|
327
|
+
return undefined;
|
|
328
|
+
}
|
|
329
|
+
const childSchemaKey = Object.keys(elementTemplate)[0];
|
|
330
|
+
if (!childSchemaKey) {
|
|
331
|
+
return undefined;
|
|
332
|
+
}
|
|
333
|
+
const childSchema = elementTemplate[childSchemaKey];
|
|
334
|
+
if (!isNestedObject(childSchema)) {
|
|
335
|
+
return undefined;
|
|
336
|
+
}
|
|
337
|
+
const placeholder = buildPlaceholderFromSchema(childSchema);
|
|
338
|
+
return [placeholder];
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Builds a placeholder object with empty $cv wrappers for each non-metadata field.
|
|
342
|
+
*
|
|
343
|
+
* @param schema - Schema object mapping field names to types
|
|
344
|
+
* @returns Placeholder object with $cv wrappers
|
|
345
|
+
*/
|
|
346
|
+
function buildPlaceholderFromSchema(schema) {
|
|
347
|
+
const placeholder = {};
|
|
348
|
+
for (const [fieldKey, fieldType] of Object.entries(schema)) {
|
|
349
|
+
if (isMetadataField(fieldKey) || typeof fieldType !== 'string') {
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
placeholder[fieldKey] = {
|
|
353
|
+
$cv: {
|
|
354
|
+
$c: toJavaType(fieldType),
|
|
355
|
+
$v: '',
|
|
356
|
+
},
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
return placeholder;
|
|
360
|
+
}
|
|
361
|
+
/* ------------------------------ Formatting -------------------------------- */
|
|
362
|
+
function stringifyPayload(schema, complexObject) {
|
|
363
|
+
return JSON.stringify({
|
|
364
|
+
version: '1.0',
|
|
365
|
+
complexObjectSchema: schema,
|
|
366
|
+
complexObject,
|
|
367
|
+
serializationFormat: 'JSON',
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
/* ------------------------------ Helpers ----------------------------------- */
|
|
371
|
+
function deepPick(template, source) {
|
|
372
|
+
if (typeof template !== 'object' || template === null) {
|
|
373
|
+
return template;
|
|
374
|
+
}
|
|
375
|
+
// Handle FlowArray with FlowObject elements (wrapped schema format)
|
|
376
|
+
const unwrappedArray = tryUnwrapFlowArraySchema(template, source);
|
|
377
|
+
if (unwrappedArray !== null) {
|
|
378
|
+
return unwrappedArray;
|
|
379
|
+
}
|
|
380
|
+
return pickMatchingFields(template, source);
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Attempts to unwrap FlowArray schema and map source elements.
|
|
384
|
+
*
|
|
385
|
+
* FlowArray with FlowObject elements uses wrapped schema format:
|
|
386
|
+
* - Template: [{"fieldName": {field1: "String", field2: "Integer"}}]
|
|
387
|
+
* - Source: [{field1: "value1", field2: 123}, {field1: "value2", field2: 456}]
|
|
388
|
+
*
|
|
389
|
+
* @param template - The schema template (potentially wrapped array)
|
|
390
|
+
* @param source - The source data (array of actual objects)
|
|
391
|
+
* @returns Mapped array if successful, null if not a wrapped array schema
|
|
392
|
+
*/
|
|
393
|
+
function tryUnwrapFlowArraySchema(template, source) {
|
|
394
|
+
if (!Array.isArray(template) || !Array.isArray(source) || template.length !== 1) {
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
const wrapperElement = template[0];
|
|
398
|
+
if (!isNestedObject(wrapperElement)) {
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
401
|
+
const wrapperKeys = Object.keys(wrapperElement);
|
|
402
|
+
if (wrapperKeys.length !== 1 || !wrapperKeys[0]) {
|
|
403
|
+
return null;
|
|
404
|
+
}
|
|
405
|
+
const unwrappedSchema = wrapperElement[wrapperKeys[0]];
|
|
406
|
+
if (!isNestedObject(unwrappedSchema)) {
|
|
407
|
+
return null;
|
|
408
|
+
}
|
|
409
|
+
// Successfully unwrapped - map each source element through the schema
|
|
410
|
+
return source.map((sourceElement) => deepPick(unwrappedSchema, sourceElement));
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Picks fields from source that exist in template, recursively.
|
|
414
|
+
*
|
|
415
|
+
* @param template - The schema template defining which fields to pick
|
|
416
|
+
* @param source - The source data to pick from
|
|
417
|
+
* @returns Object/array with only the fields that exist in both template and source
|
|
418
|
+
*/
|
|
419
|
+
function pickMatchingFields(template, source) {
|
|
420
|
+
const tmpl = template;
|
|
421
|
+
const src = source;
|
|
422
|
+
const result = (Array.isArray(template) ? [] : {});
|
|
423
|
+
for (const key of Object.keys(tmpl)) {
|
|
424
|
+
if (src && key in src) {
|
|
425
|
+
result[key] = deepPick(tmpl[key], src[key]);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return result;
|
|
429
|
+
}
|
|
430
|
+
function toJavaType(t) {
|
|
431
|
+
// Date/DateTime fields should serialize as java.lang.String, not java.lang.Date
|
|
432
|
+
// ServiceNow Flow Designer UI expects date values to be strings in complexObject
|
|
433
|
+
// This matches the behavior when creating FlowObjects with Date fields through the UI
|
|
434
|
+
if (t === 'Date') {
|
|
435
|
+
return `${JAVA_LANG_PREFIX}String`;
|
|
436
|
+
}
|
|
437
|
+
return `${JAVA_LANG_PREFIX}${t}`;
|
|
438
|
+
}
|
|
439
|
+
/** Detects if value is a datapill ({{path}} or {{path|type}}) */
|
|
440
|
+
function isDataPill(value) {
|
|
441
|
+
if (typeof value !== 'string') {
|
|
442
|
+
return false;
|
|
443
|
+
}
|
|
444
|
+
return value.startsWith('{{') && value.endsWith('}}');
|
|
445
|
+
}
|
|
446
|
+
/** Strips type annotation from datapill ({{path|type}} -> {{path}}) */
|
|
447
|
+
function stripDataPillType(value) {
|
|
448
|
+
if (typeof value !== 'string' || !isDataPill(value)) {
|
|
449
|
+
return String(value);
|
|
450
|
+
}
|
|
451
|
+
const pipeIndex = value.lastIndexOf('|');
|
|
452
|
+
if (pipeIndex > 0 && value.endsWith('}}')) {
|
|
453
|
+
return value.substring(0, pipeIndex) + '}}';
|
|
454
|
+
}
|
|
455
|
+
return value;
|
|
456
|
+
}
|
|
457
|
+
/** Checks if value is a nested object (not null or array) */
|
|
458
|
+
function isNestedObject(value) {
|
|
459
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
460
|
+
}
|
|
461
|
+
/** Builds dotted path for nested fields (e.g., 'name.firstName') */
|
|
462
|
+
function buildFieldPath(parentPath, key) {
|
|
463
|
+
return parentPath ? `${parentPath}.${key}` : key;
|
|
464
|
+
}
|
|
465
|
+
/** Checks if field key is metadata (contains $ or .) */
|
|
466
|
+
function isMetadataField(key) {
|
|
467
|
+
return key.includes('$') || key.includes('.');
|
|
468
|
+
}
|
|
469
|
+
/** Checks if field value should be included in children array */
|
|
470
|
+
function shouldIncludeField(fieldValue) {
|
|
471
|
+
return fieldValue !== undefined && fieldValue !== null && fieldValue !== '';
|
|
472
|
+
}
|
|
473
|
+
/** Creates parameter object with default values */
|
|
474
|
+
function createChildParameter(key, type, uiDisplayType, typeLabel) {
|
|
475
|
+
return {
|
|
476
|
+
children: [],
|
|
477
|
+
uiDisplayType,
|
|
478
|
+
type_label: typeLabel,
|
|
479
|
+
id: '',
|
|
480
|
+
label: key,
|
|
481
|
+
name: key,
|
|
482
|
+
type,
|
|
483
|
+
order: 0,
|
|
484
|
+
extended: false,
|
|
485
|
+
mandatory: false,
|
|
486
|
+
readOnly: false,
|
|
487
|
+
hint: '',
|
|
488
|
+
maxsize: 0,
|
|
489
|
+
reference: '',
|
|
490
|
+
reference_display: '',
|
|
491
|
+
choiceOption: '',
|
|
492
|
+
table: '',
|
|
493
|
+
columnName: '',
|
|
494
|
+
defaultValue: '',
|
|
495
|
+
defaultDisplayValue: '',
|
|
496
|
+
use_dependent: false,
|
|
497
|
+
fShowReferenceFinder: false,
|
|
498
|
+
local: false,
|
|
499
|
+
attributes: {},
|
|
500
|
+
ref_qual: '',
|
|
501
|
+
dependent_on: '',
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
/** Creates child element */
|
|
505
|
+
function createChildElement(key, value, children, parameter) {
|
|
506
|
+
return {
|
|
507
|
+
id: '',
|
|
508
|
+
name: key,
|
|
509
|
+
value,
|
|
510
|
+
displayValue: '',
|
|
511
|
+
children,
|
|
512
|
+
parameter,
|
|
513
|
+
scriptActive: false,
|
|
514
|
+
script: {},
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
/** Maps Java type to UI display type */
|
|
518
|
+
function getUiDisplayType(javaType) {
|
|
519
|
+
switch (javaType) {
|
|
520
|
+
case 'String':
|
|
521
|
+
return 'string';
|
|
522
|
+
case 'Integer':
|
|
523
|
+
return 'integer';
|
|
524
|
+
case 'Boolean':
|
|
525
|
+
return 'boolean';
|
|
526
|
+
case 'Decimal':
|
|
527
|
+
return 'decimal';
|
|
528
|
+
case 'Number':
|
|
529
|
+
return 'decimal'; // Number maps to decimal in UI
|
|
530
|
+
case 'Date':
|
|
531
|
+
return 'glide_date_time';
|
|
532
|
+
case 'Choice':
|
|
533
|
+
return 'choice';
|
|
534
|
+
default:
|
|
535
|
+
return 'string';
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
/** Maps Java type to type label */
|
|
539
|
+
function getTypeLabel(javaType) {
|
|
540
|
+
switch (javaType) {
|
|
541
|
+
case 'String':
|
|
542
|
+
return 'String';
|
|
543
|
+
case 'Integer':
|
|
544
|
+
return 'Integer';
|
|
545
|
+
case 'Boolean':
|
|
546
|
+
return 'True/False';
|
|
547
|
+
case 'Decimal':
|
|
548
|
+
return 'Decimal';
|
|
549
|
+
case 'Number':
|
|
550
|
+
return 'Number';
|
|
551
|
+
case 'Date':
|
|
552
|
+
return 'Date/Time';
|
|
553
|
+
case 'Choice':
|
|
554
|
+
return 'Choice';
|
|
555
|
+
default:
|
|
556
|
+
return 'String';
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
/** Recursively builds children array for nested objects */
|
|
560
|
+
function buildChildrenArray(rawValue, template) {
|
|
561
|
+
const children = [];
|
|
562
|
+
Object.keys(template).forEach((key) => {
|
|
563
|
+
if (isMetadataField(key)) {
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
const fieldValue = rawValue[key];
|
|
567
|
+
const fieldType = template[key];
|
|
568
|
+
if (isNestedObject(fieldType)) {
|
|
569
|
+
// Nested object: recurse
|
|
570
|
+
const nestedChildren = isNestedObject(fieldValue) ? buildChildrenArray(fieldValue, fieldType) : [];
|
|
571
|
+
const parameter = createChildParameter(key, 'object', 'object', 'Object');
|
|
572
|
+
children.push(createChildElement(key, '', nestedChildren, parameter));
|
|
573
|
+
}
|
|
574
|
+
else if (typeof fieldType === 'string') {
|
|
575
|
+
// Primitive field with value
|
|
576
|
+
if (shouldIncludeField(fieldValue)) {
|
|
577
|
+
const value = isDataPill(fieldValue) ? stripDataPillType(fieldValue) : '';
|
|
578
|
+
const parameter = createChildParameter(key, fieldType.toLowerCase(), getUiDisplayType(fieldType), getTypeLabel(fieldType));
|
|
579
|
+
children.push(createChildElement(key, value, [], parameter));
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
});
|
|
583
|
+
return children;
|
|
584
|
+
}
|
|
585
|
+
function buildCv(typeNode, valueNode) {
|
|
586
|
+
if (typeof typeNode === 'object' && typeNode !== null) {
|
|
587
|
+
const typedNode = typeNode;
|
|
588
|
+
const valuedNode = valueNode;
|
|
589
|
+
// Special handling for primitive arrays (schema: ["Any"], value: ["item1", "item2", ...])
|
|
590
|
+
if (Array.isArray(typeNode) && Array.isArray(valueNode)) {
|
|
591
|
+
if (typeNode.length === 1 && typeNode[0] === 'Any') {
|
|
592
|
+
// Primitive array: return plain string values without $cv wrapping
|
|
593
|
+
return valueNode.map((v) => String(v));
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
const obj = (Array.isArray(typeNode) ? [] : {});
|
|
597
|
+
Object.keys(typedNode).forEach((k) => {
|
|
598
|
+
obj[k] = buildCv(typedNode[k], valuedNode ? valuedNode[k] : undefined);
|
|
599
|
+
});
|
|
600
|
+
return obj;
|
|
601
|
+
}
|
|
602
|
+
if (typeof typeNode === 'string') {
|
|
603
|
+
// Set $v to empty for datapills; Flow Designer handles the pill notation
|
|
604
|
+
const cvValue = isDataPill(valueNode) ? '' : (valueNode ?? '');
|
|
605
|
+
return {
|
|
606
|
+
$cv: {
|
|
607
|
+
$c: toJavaType(typeNode),
|
|
608
|
+
$v: cvValue,
|
|
609
|
+
},
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
return {};
|
|
613
|
+
}
|
|
614
|
+
//# sourceMappingURL=complex-object-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complex-object-resolver.js","sourceRoot":"","sources":["../../../src/flow/utils/complex-object-resolver.ts"],"names":[],"mappings":"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"}
|