@servicenow/sdk-build-plugins 3.0.2 → 4.0.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.d.ts +19 -0
- package/dist/acl-plugin.js +210 -0
- package/dist/acl-plugin.js.map +1 -0
- package/dist/application-menu-plugin.d.ts +18 -0
- package/dist/application-menu-plugin.js +104 -0
- package/dist/application-menu-plugin.js.map +1 -0
- package/dist/arrow-function-plugin.d.ts +16 -0
- package/dist/arrow-function-plugin.js +107 -0
- package/dist/arrow-function-plugin.js.map +1 -0
- package/dist/atf/step-configs.d.ts +37 -0
- package/dist/atf/step-configs.js +2236 -0
- package/dist/atf/step-configs.js.map +1 -0
- package/dist/atf/test-plugin.d.ts +4 -0
- package/dist/atf/test-plugin.js +591 -0
- package/dist/atf/test-plugin.js.map +1 -0
- package/dist/basic-syntax-plugin.d.ts +2 -0
- package/dist/basic-syntax-plugin.js +636 -0
- package/dist/basic-syntax-plugin.js.map +1 -0
- package/dist/business-rule-plugin.d.ts +3 -0
- package/dist/business-rule-plugin.js +205 -0
- package/dist/business-rule-plugin.js.map +1 -0
- package/dist/call-expression-plugin.d.ts +2 -0
- package/dist/call-expression-plugin.js +175 -0
- package/dist/call-expression-plugin.js.map +1 -0
- package/dist/client-script-plugin.d.ts +29 -0
- package/dist/client-script-plugin.js +157 -0
- package/dist/client-script-plugin.js.map +1 -0
- package/dist/column/column-helper.d.ts +12 -0
- package/dist/column/column-helper.js +84 -0
- package/dist/column/column-helper.js.map +1 -0
- package/dist/column/column-to-record.d.ts +3 -0
- package/dist/column/column-to-record.js +105 -0
- package/dist/column/column-to-record.js.map +1 -0
- package/dist/column-plugin.d.ts +8 -0
- package/dist/column-plugin.js +453 -0
- package/dist/column-plugin.js.map +1 -0
- package/dist/cross-scope-privilege-plugin.d.ts +15 -0
- package/dist/cross-scope-privilege-plugin.js +82 -0
- package/dist/cross-scope-privilege-plugin.js.map +1 -0
- package/dist/html-import-plugin.d.ts +2 -0
- package/dist/html-import-plugin.js +72 -0
- package/dist/html-import-plugin.js.map +1 -0
- package/dist/index.d.ts +37 -21
- package/dist/index.js +40 -45
- package/dist/index.js.map +1 -1
- package/dist/json-plugin.d.ts +15 -0
- package/dist/json-plugin.js +104 -0
- package/dist/json-plugin.js.map +1 -0
- package/dist/list-plugin.d.ts +2 -0
- package/dist/list-plugin.js +191 -0
- package/dist/list-plugin.js.map +1 -0
- package/dist/now-config-plugin.d.ts +4 -0
- package/dist/now-config-plugin.js +154 -0
- package/dist/now-config-plugin.js.map +1 -0
- package/dist/now-id-plugin.d.ts +11 -0
- package/dist/now-id-plugin.js +71 -0
- package/dist/now-id-plugin.js.map +1 -0
- package/dist/now-include-plugin.d.ts +16 -0
- package/dist/now-include-plugin.js +118 -0
- package/dist/now-include-plugin.js.map +1 -0
- package/dist/now-ref-plugin.d.ts +2 -0
- package/dist/now-ref-plugin.js +43 -0
- package/dist/now-ref-plugin.js.map +1 -0
- package/dist/now-unresolved-plugin.d.ts +2 -0
- package/dist/now-unresolved-plugin.js +32 -0
- package/dist/now-unresolved-plugin.js.map +1 -0
- package/dist/package-json-plugin.d.ts +2 -0
- package/dist/package-json-plugin.js +70 -0
- package/dist/package-json-plugin.js.map +1 -0
- package/dist/property-plugin.d.ts +2 -0
- package/dist/property-plugin.js +105 -0
- package/dist/property-plugin.js.map +1 -0
- package/dist/record-plugin.d.ts +43 -0
- package/dist/record-plugin.js +147 -0
- package/dist/record-plugin.js.map +1 -0
- package/dist/repack/index.d.ts +1 -0
- package/dist/repack/index.js +10 -2
- package/dist/repack/index.js.map +1 -1
- package/dist/repack/lint/Rules.d.ts +1 -1
- package/dist/repack/lint/Rules.js +7 -3
- package/dist/repack/lint/Rules.js.map +1 -1
- package/dist/repack/lint/index.js +1 -1
- package/dist/rest-api-plugin.d.ts +2 -0
- package/dist/rest-api-plugin.js +469 -0
- package/dist/rest-api-plugin.js.map +1 -0
- package/dist/role-plugin.d.ts +2 -0
- package/dist/role-plugin.js +117 -0
- package/dist/role-plugin.js.map +1 -0
- package/dist/script-action-plugin.d.ts +2 -0
- package/dist/script-action-plugin.js +62 -0
- package/dist/script-action-plugin.js.map +1 -0
- package/dist/script-include-plugin.d.ts +2 -0
- package/dist/script-include-plugin.js +102 -0
- package/dist/script-include-plugin.js.map +1 -0
- package/dist/server-module-plugin/index.d.ts +14 -0
- package/dist/server-module-plugin/index.js +378 -0
- package/dist/server-module-plugin/index.js.map +1 -0
- package/dist/server-module-plugin/sbom-builder.d.ts +45 -0
- package/dist/server-module-plugin/sbom-builder.js +179 -0
- package/dist/server-module-plugin/sbom-builder.js.map +1 -0
- package/dist/service-portal/angular-provider-plugin.d.ts +2 -0
- package/dist/service-portal/angular-provider-plugin.js +78 -0
- package/dist/service-portal/angular-provider-plugin.js.map +1 -0
- package/dist/service-portal/dependency-plugin.d.ts +2 -0
- package/dist/service-portal/dependency-plugin.js +235 -0
- package/dist/service-portal/dependency-plugin.js.map +1 -0
- package/dist/service-portal/widget-plugin.d.ts +6 -0
- package/dist/service-portal/widget-plugin.js +230 -0
- package/dist/service-portal/widget-plugin.js.map +1 -0
- package/dist/static-content-plugin.d.ts +2 -0
- package/dist/static-content-plugin.js +272 -0
- package/dist/static-content-plugin.js.map +1 -0
- package/dist/table-plugin.d.ts +3 -0
- package/dist/table-plugin.js +1324 -0
- package/dist/table-plugin.js.map +1 -0
- package/dist/ui-action-plugin.d.ts +2 -0
- package/dist/ui-action-plugin.js +291 -0
- package/dist/ui-action-plugin.js.map +1 -0
- package/dist/ui-page-plugin.d.ts +2 -0
- package/dist/ui-page-plugin.js +165 -0
- package/dist/ui-page-plugin.js.map +1 -0
- package/dist/user-preference-plugin.d.ts +15 -0
- package/dist/user-preference-plugin.js +63 -0
- package/dist/user-preference-plugin.js.map +1 -0
- package/dist/utils.d.ts +17 -0
- package/dist/utils.js +72 -0
- package/dist/utils.js.map +1 -0
- package/dist/view-plugin.d.ts +2 -0
- package/dist/view-plugin.js +45 -0
- package/dist/view-plugin.js.map +1 -0
- package/package.json +17 -13
- package/src/acl-plugin.ts +256 -0
- package/src/application-menu-plugin.ts +109 -0
- package/src/arrow-function-plugin.ts +127 -0
- package/src/atf/step-configs.ts +2284 -0
- package/src/atf/test-plugin.ts +728 -0
- package/src/basic-syntax-plugin.ts +729 -0
- package/src/business-rule-plugin.ts +266 -0
- package/src/call-expression-plugin.ts +202 -0
- package/src/client-script-plugin.ts +170 -0
- package/src/column/column-helper.ts +119 -0
- package/src/column/column-to-record.ts +131 -0
- package/src/column-plugin.ts +506 -0
- package/src/cross-scope-privilege-plugin.ts +82 -0
- package/src/html-import-plugin.ts +79 -0
- package/src/index.ts +39 -21
- package/src/json-plugin.ts +128 -0
- package/src/list-plugin.ts +222 -0
- package/src/now-config-plugin.ts +194 -0
- package/src/now-id-plugin.ts +78 -0
- package/src/now-include-plugin.ts +140 -0
- package/src/now-ref-plugin.ts +48 -0
- package/src/now-unresolved-plugin.ts +30 -0
- package/src/package-json-plugin.ts +87 -0
- package/src/property-plugin.ts +118 -0
- package/src/record-plugin.ts +171 -0
- package/src/repack/index.ts +10 -1
- package/src/repack/lint/Rules.ts +5 -4
- package/src/repack/lint/index.ts +1 -1
- package/src/rest-api-plugin.ts +651 -0
- package/src/role-plugin.ts +128 -0
- package/src/script-action-plugin.ts +63 -0
- package/src/script-include-plugin.ts +110 -0
- package/src/server-module-plugin/index.ts +470 -0
- package/src/server-module-plugin/sbom-builder.ts +183 -0
- package/src/service-portal/angular-provider-plugin.ts +83 -0
- package/src/service-portal/dependency-plugin.ts +284 -0
- package/src/service-portal/widget-plugin.ts +263 -0
- package/src/static-content-plugin.ts +254 -0
- package/src/table-plugin.ts +1698 -0
- package/src/ui-action-plugin.ts +324 -0
- package/src/ui-page-plugin.ts +168 -0
- package/src/user-preference-plugin.ts +62 -0
- package/src/utils.ts +69 -0
- package/src/view-plugin.ts +46 -0
- package/dist/AttachmentPlugin.d.ts +0 -254
- package/dist/AttachmentPlugin.js +0 -220
- package/dist/AttachmentPlugin.js.map +0 -1
- package/dist/BusinessRulePlugin.d.ts +0 -30
- package/dist/BusinessRulePlugin.js +0 -149
- package/dist/BusinessRulePlugin.js.map +0 -1
- package/dist/CrossScopePrivilegePlugin.d.ts +0 -35
- package/dist/CrossScopePrivilegePlugin.js +0 -80
- package/dist/CrossScopePrivilegePlugin.js.map +0 -1
- package/dist/DefaultPlugin.d.ts +0 -86
- package/dist/DefaultPlugin.js +0 -226
- package/dist/DefaultPlugin.js.map +0 -1
- package/dist/HtmlTemplatePlugin.d.ts +0 -21
- package/dist/HtmlTemplatePlugin.js +0 -29
- package/dist/HtmlTemplatePlugin.js.map +0 -1
- package/dist/IdPlugin.d.ts +0 -28
- package/dist/IdPlugin.js +0 -68
- package/dist/IdPlugin.js.map +0 -1
- package/dist/IncludePlugin.d.ts +0 -34
- package/dist/IncludePlugin.js +0 -155
- package/dist/IncludePlugin.js.map +0 -1
- package/dist/JsonPlugin.d.ts +0 -28
- package/dist/JsonPlugin.js +0 -69
- package/dist/JsonPlugin.js.map +0 -1
- package/dist/ListPlugin.d.ts +0 -93
- package/dist/ListPlugin.js +0 -456
- package/dist/ListPlugin.js.map +0 -1
- package/dist/NowConfigPlugin.d.ts +0 -45
- package/dist/NowConfigPlugin.js +0 -64
- package/dist/NowConfigPlugin.js.map +0 -1
- package/dist/PackageJsonPlugin.d.ts +0 -34
- package/dist/PackageJsonPlugin.js +0 -63
- package/dist/PackageJsonPlugin.js.map +0 -1
- package/dist/PropertyPlugin.d.ts +0 -51
- package/dist/PropertyPlugin.js +0 -181
- package/dist/PropertyPlugin.js.map +0 -1
- package/dist/ScriptTemplatePlugin.d.ts +0 -13
- package/dist/ScriptTemplatePlugin.js +0 -55
- package/dist/ScriptTemplatePlugin.js.map +0 -1
- package/dist/ServerModulePlugin.d.ts +0 -75
- package/dist/ServerModulePlugin.js +0 -368
- package/dist/ServerModulePlugin.js.map +0 -1
- package/dist/UserPreferencePlugin.d.ts +0 -19
- package/dist/UserPreferencePlugin.js +0 -32
- package/dist/UserPreferencePlugin.js.map +0 -1
- package/dist/aclAndRole/AclPlugin.d.ts +0 -82
- package/dist/aclAndRole/AclPlugin.js +0 -262
- package/dist/aclAndRole/AclPlugin.js.map +0 -1
- package/dist/aclAndRole/RolePlugin.d.ts +0 -66
- package/dist/aclAndRole/RolePlugin.js +0 -179
- package/dist/aclAndRole/RolePlugin.js.map +0 -1
- package/dist/aclAndRole/Util.d.ts +0 -3
- package/dist/aclAndRole/Util.js +0 -90
- package/dist/aclAndRole/Util.js.map +0 -1
- package/dist/app/ApplicationMenuPlugin.d.ts +0 -34
- package/dist/app/ApplicationMenuPlugin.js +0 -112
- package/dist/app/ApplicationMenuPlugin.js.map +0 -1
- package/dist/db/ColumnPlugins.d.ts +0 -750
- package/dist/db/ColumnPlugins.js +0 -114
- package/dist/db/ColumnPlugins.js.map +0 -1
- package/dist/db/DBUtils.d.ts +0 -2
- package/dist/db/DBUtils.js +0 -27
- package/dist/db/DBUtils.js.map +0 -1
- package/dist/db/DocumentationPlugin.d.ts +0 -67
- package/dist/db/DocumentationPlugin.js +0 -258
- package/dist/db/DocumentationPlugin.js.map +0 -1
- package/dist/db/LicensingPlugin.d.ts +0 -60
- package/dist/db/LicensingPlugin.js +0 -117
- package/dist/db/LicensingPlugin.js.map +0 -1
- package/dist/db/RecordPlugin.d.ts +0 -133
- package/dist/db/RecordPlugin.js +0 -337
- package/dist/db/RecordPlugin.js.map +0 -1
- package/dist/db/TablePlugin.d.ts +0 -231
- package/dist/db/TablePlugin.js +0 -1628
- package/dist/db/TablePlugin.js.map +0 -1
- package/dist/db/index.d.ts +0 -6
- package/dist/db/index.js +0 -32
- package/dist/db/index.js.map +0 -1
- package/dist/scriptedRESTAPI/RESTDeserializationUtils.d.ts +0 -10
- package/dist/scriptedRESTAPI/RESTDeserializationUtils.js +0 -373
- package/dist/scriptedRESTAPI/RESTDeserializationUtils.js.map +0 -1
- package/dist/scriptedRESTAPI/RESTSerializationUtils.d.ts +0 -13
- package/dist/scriptedRESTAPI/RESTSerializationUtils.js +0 -177
- package/dist/scriptedRESTAPI/RESTSerializationUtils.js.map +0 -1
- package/dist/scriptedRESTAPI/RestApiPlugin.d.ts +0 -81
- package/dist/scriptedRESTAPI/RestApiPlugin.js +0 -345
- package/dist/scriptedRESTAPI/RestApiPlugin.js.map +0 -1
- package/dist/scriptedRESTAPI/RestSchemaUtils.d.ts +0 -190
- package/dist/scriptedRESTAPI/RestSchemaUtils.js +0 -53
- package/dist/scriptedRESTAPI/RestSchemaUtils.js.map +0 -1
- package/dist/scriptedRESTAPI/RestUtils.d.ts +0 -69
- package/dist/scriptedRESTAPI/RestUtils.js +0 -497
- package/dist/scriptedRESTAPI/RestUtils.js.map +0 -1
- package/dist/scripts/ClientScriptPlugin.d.ts +0 -64
- package/dist/scripts/ClientScriptPlugin.js +0 -170
- package/dist/scripts/ClientScriptPlugin.js.map +0 -1
- package/dist/scripts/scriptUtils.d.ts +0 -1
- package/dist/scripts/scriptUtils.js +0 -9
- package/dist/scripts/scriptUtils.js.map +0 -1
- package/dist/uxf/ExperiencePlugin.d.ts +0 -45
- package/dist/uxf/ExperiencePlugin.js +0 -61
- package/dist/uxf/ExperiencePlugin.js.map +0 -1
- package/dist/uxf/RoutesPlugin.d.ts +0 -29
- package/dist/uxf/RoutesPlugin.js +0 -181
- package/dist/uxf/RoutesPlugin.js.map +0 -1
- package/dist/uxf/UxfFormulaParser/cleanUxValue.d.ts +0 -4
- package/dist/uxf/UxfFormulaParser/cleanUxValue.js +0 -65
- package/dist/uxf/UxfFormulaParser/cleanUxValue.js.map +0 -1
- package/dist/uxf/UxfFormulaParser/grammerParser/api.d.ts +0 -189
- package/dist/uxf/UxfFormulaParser/grammerParser/api.js +0 -158
- package/dist/uxf/UxfFormulaParser/grammerParser/api.js.map +0 -1
- package/dist/uxf/UxfFormulaParser/grammerParser/clientTransformMap.d.ts +0 -13
- package/dist/uxf/UxfFormulaParser/grammerParser/clientTransformMap.js +0 -604
- package/dist/uxf/UxfFormulaParser/grammerParser/clientTransformMap.js.map +0 -1
- package/dist/uxf/UxfFormulaParser/grammerParser/grammarParser.d.ts +0 -12
- package/dist/uxf/UxfFormulaParser/grammerParser/grammarParser.js +0 -551
- package/dist/uxf/UxfFormulaParser/grammerParser/grammarParser.js.map +0 -1
- package/dist/uxf/UxfFormulaParser/grammerParser/spanHelpers.d.ts +0 -31
- package/dist/uxf/UxfFormulaParser/grammerParser/spanHelpers.js +0 -64
- package/dist/uxf/UxfFormulaParser/grammerParser/spanHelpers.js.map +0 -1
- package/dist/uxf/UxfFormulaParser/index.d.ts +0 -3
- package/dist/uxf/UxfFormulaParser/index.js +0 -11
- package/dist/uxf/UxfFormulaParser/index.js.map +0 -1
- package/dist/uxf/UxfFormulaParser/parser.d.ts +0 -8
- package/dist/uxf/UxfFormulaParser/parser.js +0 -87
- package/dist/uxf/UxfFormulaParser/parser.js.map +0 -1
- package/dist/uxf/UxfFormulaParser/utils/getErrorMsg.d.ts +0 -8
- package/dist/uxf/UxfFormulaParser/utils/getErrorMsg.js +0 -17
- package/dist/uxf/UxfFormulaParser/utils/getErrorMsg.js.map +0 -1
- package/dist/uxf/constants.d.ts +0 -2
- package/dist/uxf/constants.js +0 -8
- package/dist/uxf/constants.js.map +0 -1
- package/dist/uxf/index.d.ts +0 -2
- package/dist/uxf/index.js +0 -11
- package/dist/uxf/index.js.map +0 -1
- package/dist/uxf/tectonicIdGenerator.d.ts +0 -12
- package/dist/uxf/tectonicIdGenerator.js +0 -79
- package/dist/uxf/tectonicIdGenerator.js.map +0 -1
- package/src/AttachmentPlugin.ts +0 -268
- package/src/BusinessRulePlugin.ts +0 -238
- package/src/CrossScopePrivilegePlugin.ts +0 -115
- package/src/DefaultPlugin.ts +0 -288
- package/src/HtmlTemplatePlugin.ts +0 -31
- package/src/IdPlugin.ts +0 -74
- package/src/IncludePlugin.ts +0 -206
- package/src/JsonPlugin.ts +0 -76
- package/src/ListPlugin.ts +0 -570
- package/src/NowConfigPlugin.ts +0 -69
- package/src/PackageJsonPlugin.ts +0 -68
- package/src/PropertyPlugin.ts +0 -237
- package/src/ScriptTemplatePlugin.ts +0 -53
- package/src/ServerModulePlugin.ts +0 -480
- package/src/UserPreferencePlugin.ts +0 -45
- package/src/aclAndRole/AclPlugin.ts +0 -420
- package/src/aclAndRole/RolePlugin.ts +0 -254
- package/src/aclAndRole/Util.ts +0 -113
- package/src/app/ApplicationMenuPlugin.ts +0 -165
- package/src/db/ColumnPlugins.ts +0 -114
- package/src/db/DBUtils.ts +0 -36
- package/src/db/DocumentationPlugin.ts +0 -316
- package/src/db/LicensingPlugin.ts +0 -138
- package/src/db/RecordPlugin.ts +0 -459
- package/src/db/TablePlugin.ts +0 -2070
- package/src/db/index.ts +0 -6
- package/src/scriptedRESTAPI/RESTDeserializationUtils.ts +0 -419
- package/src/scriptedRESTAPI/RESTSerializationUtils.ts +0 -228
- package/src/scriptedRESTAPI/RestApiPlugin.ts +0 -469
- package/src/scriptedRESTAPI/RestSchemaUtils.ts +0 -72
- package/src/scriptedRESTAPI/RestUtils.ts +0 -569
- package/src/scripts/ClientScriptPlugin.ts +0 -257
- package/src/scripts/scriptUtils.ts +0 -5
- package/src/uxf/ExperiencePlugin.ts +0 -67
- package/src/uxf/RoutesPlugin.ts +0 -211
- package/src/uxf/UxfFormulaParser/cleanUxValue.ts +0 -73
- package/src/uxf/UxfFormulaParser/grammerParser/api.js +0 -166
- package/src/uxf/UxfFormulaParser/grammerParser/clientTransformMap.js +0 -606
- package/src/uxf/UxfFormulaParser/grammerParser/grammarParser.js +0 -551
- package/src/uxf/UxfFormulaParser/grammerParser/spanHelpers.js +0 -65
- package/src/uxf/UxfFormulaParser/index.ts +0 -4
- package/src/uxf/UxfFormulaParser/parser.ts +0 -64
- package/src/uxf/UxfFormulaParser/utils/getErrorMsg.ts +0 -13
- package/src/uxf/constants.ts +0 -4
- package/src/uxf/index.ts +0 -2
- package/src/uxf/tectonicIdGenerator.ts +0 -78
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Plugin } from '@servicenow/sdk-build-core';
|
|
2
|
+
/**
|
|
3
|
+
* @param config - an object containing the following properties:
|
|
4
|
+
* * **$id** - unique id for the record, typically using `Now.ID["value"]`
|
|
5
|
+
* * **operation** - the operation this ACL rule secure
|
|
6
|
+
* * **active**? - whether the ACL is enabled
|
|
7
|
+
* * **adminOverrides**? - indicates whether users with the admin role automatically pass the permissions check for this ACL rule
|
|
8
|
+
* * **condition**? - a filter query that specifies the fields and values that must be true for users to access the object
|
|
9
|
+
* * **decisionType**? - whether the ACL should allow or deny access
|
|
10
|
+
* * **description**? - description of the object or permissions this ACL rule secures
|
|
11
|
+
* * **localOrExisting**? - if `"Local"`: A security attribute based on the
|
|
12
|
+
* condition property that is saved only for the ACL it is created in\
|
|
13
|
+
* if `"Exisiting"`: An existing security attribute to reference in the `security_attribute` property
|
|
14
|
+
* * **roles**? - `Role` objects or sys_ids of roles that a user must have to access the object
|
|
15
|
+
* * **script**? - a function or inline script preceded by a `script` tagged
|
|
16
|
+
* template literal. The script should define the permissions required to access the object
|
|
17
|
+
* * **securityAttribute**? - pre-defined conditions to use. For example, whether a user is impersonating another user
|
|
18
|
+
*/
|
|
19
|
+
export declare const AclPlugin: Plugin;
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AclPlugin = void 0;
|
|
4
|
+
const sdk_build_core_1 = require("@servicenow/sdk-build-core");
|
|
5
|
+
const app_1 = require("@servicenow/sdk-core/runtime/app");
|
|
6
|
+
const server_module_plugin_1 = require("./server-module-plugin");
|
|
7
|
+
const now_id_plugin_1 = require("./now-id-plugin");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const ExecuteOnlyTypes = new Set([
|
|
10
|
+
'client_callable_flow_object',
|
|
11
|
+
'client_callable_script_include',
|
|
12
|
+
'graphql',
|
|
13
|
+
'processor',
|
|
14
|
+
'rest_endpoint',
|
|
15
|
+
]);
|
|
16
|
+
const aclAliases = {
|
|
17
|
+
adminOverrides: ['admin_overrides'],
|
|
18
|
+
decisionType: ['decision_type'],
|
|
19
|
+
localOrExisting: ['local_or_existing'],
|
|
20
|
+
securityAttribute: ['security_attribute'],
|
|
21
|
+
appliesTo: ['applies_to'],
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @param config - an object containing the following properties:
|
|
25
|
+
* * **$id** - unique id for the record, typically using `Now.ID["value"]`
|
|
26
|
+
* * **operation** - the operation this ACL rule secure
|
|
27
|
+
* * **active**? - whether the ACL is enabled
|
|
28
|
+
* * **adminOverrides**? - indicates whether users with the admin role automatically pass the permissions check for this ACL rule
|
|
29
|
+
* * **condition**? - a filter query that specifies the fields and values that must be true for users to access the object
|
|
30
|
+
* * **decisionType**? - whether the ACL should allow or deny access
|
|
31
|
+
* * **description**? - description of the object or permissions this ACL rule secures
|
|
32
|
+
* * **localOrExisting**? - if `"Local"`: A security attribute based on the
|
|
33
|
+
* condition property that is saved only for the ACL it is created in\
|
|
34
|
+
* if `"Exisiting"`: An existing security attribute to reference in the `security_attribute` property
|
|
35
|
+
* * **roles**? - `Role` objects or sys_ids of roles that a user must have to access the object
|
|
36
|
+
* * **script**? - a function or inline script preceded by a `script` tagged
|
|
37
|
+
* template literal. The script should define the permissions required to access the object
|
|
38
|
+
* * **securityAttribute**? - pre-defined conditions to use. For example, whether a user is impersonating another user
|
|
39
|
+
*/
|
|
40
|
+
exports.AclPlugin = sdk_build_core_1.Plugin.create({
|
|
41
|
+
name: 'AclPlugin',
|
|
42
|
+
records: {
|
|
43
|
+
sys_security_acl: {
|
|
44
|
+
relationships: {
|
|
45
|
+
sys_security_acl_role: {
|
|
46
|
+
via: 'sys_security_acl',
|
|
47
|
+
descendant: true,
|
|
48
|
+
relationships: {
|
|
49
|
+
sys_user_role: {
|
|
50
|
+
via: 'sys_user_role',
|
|
51
|
+
inverse: true,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
toShape(record, { descendants }) {
|
|
57
|
+
const type = reverseLookup(app_1.AclTypes, record.get('type').getValue()) || record.get('type');
|
|
58
|
+
const roles = descendants.query('sys_security_acl_role').map((m2m) => m2m.get('sys_user_role'));
|
|
59
|
+
return {
|
|
60
|
+
success: true,
|
|
61
|
+
value: new sdk_build_core_1.CallExpressionShape({
|
|
62
|
+
source: record,
|
|
63
|
+
callee: 'Acl',
|
|
64
|
+
args: [
|
|
65
|
+
record
|
|
66
|
+
.transform(({ $, merge }) => ({
|
|
67
|
+
$id: $.val(now_id_plugin_1.NowIdShape.from(record)),
|
|
68
|
+
condition: $.def(''),
|
|
69
|
+
description: $.def(''),
|
|
70
|
+
localOrExisting: $.from('local_or_existing').def('Local'),
|
|
71
|
+
active: $.toBoolean().def(true),
|
|
72
|
+
decisionType: $.from('decision_type').def('allow'),
|
|
73
|
+
adminOverrides: $.from('admin_overrides').toBoolean().def(true),
|
|
74
|
+
appliesTo: $.from('applies_to').def(''),
|
|
75
|
+
type: $.val(type),
|
|
76
|
+
securityAttribute: $.from('security_attribute')
|
|
77
|
+
.map((v) => reverseLookup(app_1.AclAttributes, v.getValue()) || v)
|
|
78
|
+
.def(''),
|
|
79
|
+
operation: $.map((v) => reverseLookup(app_1.AclOperations, v.getValue()) || v),
|
|
80
|
+
script: $.map((v) => v.ifString()?.getValue()).def(''),
|
|
81
|
+
roles: $.val(roles.length > 0 ? roles : undefined),
|
|
82
|
+
[merge]: $.from('type', 'name').map((type, name) => getTableOrName(type.pipe((t) => reverseLookup(app_1.AclTypes, t.getValue())), name.asString().getValue())),
|
|
83
|
+
}))
|
|
84
|
+
.withAliasedKeys(aclAliases),
|
|
85
|
+
],
|
|
86
|
+
}),
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
sys_security_acl_role: {
|
|
91
|
+
coalesce: ['sys_security_acl', 'sys_user_role'],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
shapes: [
|
|
95
|
+
{
|
|
96
|
+
shape: sdk_build_core_1.CallExpressionShape,
|
|
97
|
+
fileTypes: ['fluent'],
|
|
98
|
+
async toRecord(callExpression, { config, diagnostics, factory }) {
|
|
99
|
+
if (callExpression.getCallee() !== 'Acl') {
|
|
100
|
+
return { success: false };
|
|
101
|
+
}
|
|
102
|
+
const arg = callExpression.getArgument(0).asObject().withAliasedKeys(aclAliases);
|
|
103
|
+
(0, utils_1.generateDeprecatedDiagnostics)(arg, diagnostics);
|
|
104
|
+
const operation = arg.get('operation');
|
|
105
|
+
const type = arg.get('type').asString();
|
|
106
|
+
if (!operation.equals('execute') && ExecuteOnlyTypes.has(type.getValue())) {
|
|
107
|
+
diagnostics.error(operation, `ACL must use operation 'execute', because it is of type '${type.getValue()}'`);
|
|
108
|
+
}
|
|
109
|
+
const script = arg.get('script');
|
|
110
|
+
const advanced = !script.isUndefined();
|
|
111
|
+
if (advanced && type.equals('graphql')) {
|
|
112
|
+
diagnostics.error(script, `ACL does not support scripts, because it is of type graphql`);
|
|
113
|
+
}
|
|
114
|
+
const appliesTo = arg.get('appliesTo').ifString();
|
|
115
|
+
if (appliesTo && !type.equals('record')) {
|
|
116
|
+
diagnostics.error(appliesTo, `ACL cannot set applies_to unless its type is 'record'`);
|
|
117
|
+
}
|
|
118
|
+
if (operation.equals('add_to_list')) {
|
|
119
|
+
const condition = arg.get('condition').ifString();
|
|
120
|
+
if (advanced) {
|
|
121
|
+
diagnostics.error(script, `ACL cannot have a script due to its 'add_to_list' operation`);
|
|
122
|
+
}
|
|
123
|
+
else if (condition) {
|
|
124
|
+
diagnostics.error(condition, `ACL cannot have a condition due to its 'add_to_list' operation`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (arg.get('script').isUnresolved()) {
|
|
128
|
+
diagnostics.error(arg.get('script').getOriginalNode(), `Unable to resolve the script reference, ensure the imported module is within the ${config.serverModulesDir} directory.`);
|
|
129
|
+
}
|
|
130
|
+
const acl = factory.createRecord({
|
|
131
|
+
source: callExpression,
|
|
132
|
+
table: 'sys_security_acl',
|
|
133
|
+
explicitId: arg.get('$id'),
|
|
134
|
+
properties: arg.transform(({ $ }) => ({
|
|
135
|
+
active: $.def(true),
|
|
136
|
+
decision_type: $.from('decisionType').def('allow'),
|
|
137
|
+
description: $.def(''),
|
|
138
|
+
local_or_existing: $.from('localOrExisting').def('Local'),
|
|
139
|
+
admin_overrides: $.from('adminOverrides').def(true),
|
|
140
|
+
condition: $.def(''),
|
|
141
|
+
applies_to: $.from('appliesTo').def(''),
|
|
142
|
+
name: $.from('name', 'table', 'field').map((n, t, f) => n.ifString() ?? (f.ifString() ? `${t.getValue()}.${f.getValue()}` : t)),
|
|
143
|
+
type: $.map((type) => app_1.AclTypes[type.asString().getValue()] ?? type),
|
|
144
|
+
operation: $.map((op) => app_1.AclOperations[op.asString().getValue()] ?? op),
|
|
145
|
+
advanced: $.val(advanced),
|
|
146
|
+
script: $.map((v) => v.if(server_module_plugin_1.ModuleFunctionShape)?.toString((n) => `answer = ${n}({{PARAMS}})`, ['current']) ??
|
|
147
|
+
v).toCdata(),
|
|
148
|
+
security_attribute: $.from('securityAttribute').map((v) => v.ifString()?.pipe((v) => app_1.AclAttributes[v.getValue()]) ?? v),
|
|
149
|
+
})),
|
|
150
|
+
});
|
|
151
|
+
const roles = arg.get('roles').ifArray()?.getElements() ?? [];
|
|
152
|
+
const securityAttribute = arg.get('securityAttribute');
|
|
153
|
+
const attributeRecord = securityAttribute.ifRecord();
|
|
154
|
+
if (roles.length < 1) {
|
|
155
|
+
if (!securityAttribute.getValue() && !advanced && !arg.get('condition').getValue()) {
|
|
156
|
+
diagnostics.warn(callExpression, 'ACLs must have at least one of the following: roles, security_attribute, condition, or script');
|
|
157
|
+
}
|
|
158
|
+
else if (attributeRecord) {
|
|
159
|
+
const localOrExisting = arg.get('localOrExisting').ifString()?.getValue();
|
|
160
|
+
if (localOrExisting === 'Existing' &&
|
|
161
|
+
(attributeRecord.get('type').getValue() !== 'compound' ||
|
|
162
|
+
attributeRecord.get('is_localized').getValue())) {
|
|
163
|
+
diagnostics.error(arg, `Invalid ACL with 'Existing' security_attribute: Must have a security_attribute with a type of 'compound' and is_localized set to false.`);
|
|
164
|
+
}
|
|
165
|
+
else if ((!localOrExisting || localOrExisting === 'Local') &&
|
|
166
|
+
!attributeRecord.get('is_localized').ifBoolean()?.getValue()) {
|
|
167
|
+
diagnostics.error(arg, `Invalid ACL with 'Local' security_attribute: security_attribute must have is_localized set to true`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
success: true,
|
|
173
|
+
value: acl.with(...roles.map((role) => factory.createRecord({
|
|
174
|
+
source: callExpression,
|
|
175
|
+
table: 'sys_security_acl_role',
|
|
176
|
+
properties: {
|
|
177
|
+
sys_security_acl: acl,
|
|
178
|
+
sys_user_role: role.ifString()?.pipe((roleNameOrGuid) => (0, sdk_build_core_1.isGUID)(roleNameOrGuid.getValue())
|
|
179
|
+
? factory.createReference({
|
|
180
|
+
source: roleNameOrGuid,
|
|
181
|
+
table: 'sys_user_role',
|
|
182
|
+
guid: roleNameOrGuid.getValue(),
|
|
183
|
+
})
|
|
184
|
+
: factory.createReference({
|
|
185
|
+
source: roleNameOrGuid,
|
|
186
|
+
table: 'sys_user_role',
|
|
187
|
+
keys: { name: roleNameOrGuid },
|
|
188
|
+
})) ?? role,
|
|
189
|
+
},
|
|
190
|
+
}))),
|
|
191
|
+
};
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
});
|
|
196
|
+
function getTableOrName(type, name) {
|
|
197
|
+
if (app_1.AclNamedTypes[type]) {
|
|
198
|
+
return { name };
|
|
199
|
+
}
|
|
200
|
+
const split = name.indexOf('.');
|
|
201
|
+
const table = split === -1 ? name : name.substring(0, split);
|
|
202
|
+
const field = split === -1 ? '' : name.substring(split + 1);
|
|
203
|
+
return { table, ...(field ? { field } : {}) };
|
|
204
|
+
}
|
|
205
|
+
function reverseLookup(obj, sysId) {
|
|
206
|
+
return (Object.entries(obj)
|
|
207
|
+
.filter(([_, id]) => id === sysId)
|
|
208
|
+
.map(([key]) => key)[0] || '');
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=acl-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acl-plugin.js","sourceRoot":"","sources":["../src/acl-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Plugin } from '@servicenow/sdk-build-core';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an Application Menu (`sys_app_application`).
|
|
4
|
+
*
|
|
5
|
+
* @see https://docs.servicenow.com/csh?topicname=app-menu-api-now-ts.html&version=latest
|
|
6
|
+
*
|
|
7
|
+
* @param config - an object containing the following properties:
|
|
8
|
+
* * **$id** - unique id for the record, typically using `Now.ID["value"]`
|
|
9
|
+
* * **category** - The variable identifier of a menu category that defines the navigation menu style.
|
|
10
|
+
* * **title** - The label for the menu in the application navigator.
|
|
11
|
+
* * **active**? - whether the record is enabled
|
|
12
|
+
* * **description**? - Additional information about what the application does.
|
|
13
|
+
* * **hint**? - The tooltip text that appears when a user hovers over the menu.
|
|
14
|
+
* * **name**? - An internal name to differentiate between applications with the same title.
|
|
15
|
+
* * **order**? - The relative position of the application menu in the application navigator.
|
|
16
|
+
* * **roles**? - A list of variable identifiers of `Role` objects or names of roles that can access the menu. @see {Role}
|
|
17
|
+
*/
|
|
18
|
+
export declare const ApplicationMenuPlugin: Plugin;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApplicationMenuPlugin = void 0;
|
|
4
|
+
const sdk_build_core_1 = require("@servicenow/sdk-build-core");
|
|
5
|
+
const now_id_plugin_1 = require("./now-id-plugin");
|
|
6
|
+
/**
|
|
7
|
+
* Creates an Application Menu (`sys_app_application`).
|
|
8
|
+
*
|
|
9
|
+
* @see https://docs.servicenow.com/csh?topicname=app-menu-api-now-ts.html&version=latest
|
|
10
|
+
*
|
|
11
|
+
* @param config - an object containing the following properties:
|
|
12
|
+
* * **$id** - unique id for the record, typically using `Now.ID["value"]`
|
|
13
|
+
* * **category** - The variable identifier of a menu category that defines the navigation menu style.
|
|
14
|
+
* * **title** - The label for the menu in the application navigator.
|
|
15
|
+
* * **active**? - whether the record is enabled
|
|
16
|
+
* * **description**? - Additional information about what the application does.
|
|
17
|
+
* * **hint**? - The tooltip text that appears when a user hovers over the menu.
|
|
18
|
+
* * **name**? - An internal name to differentiate between applications with the same title.
|
|
19
|
+
* * **order**? - The relative position of the application menu in the application navigator.
|
|
20
|
+
* * **roles**? - A list of variable identifiers of `Role` objects or names of roles that can access the menu. @see {Role}
|
|
21
|
+
*/
|
|
22
|
+
exports.ApplicationMenuPlugin = sdk_build_core_1.Plugin.create({
|
|
23
|
+
name: 'ApplicationMenuPlugin',
|
|
24
|
+
records: {
|
|
25
|
+
sys_app_application: {
|
|
26
|
+
relationships: {
|
|
27
|
+
sys_app_category: {
|
|
28
|
+
via: 'category',
|
|
29
|
+
inverse: true,
|
|
30
|
+
},
|
|
31
|
+
sys_app_application: {
|
|
32
|
+
via: 'sys_overrides',
|
|
33
|
+
inverse: true,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
toShape(record, { factory }) {
|
|
37
|
+
return {
|
|
38
|
+
success: true,
|
|
39
|
+
value: new sdk_build_core_1.CallExpressionShape({
|
|
40
|
+
source: record,
|
|
41
|
+
callee: 'ApplicationMenu',
|
|
42
|
+
args: [
|
|
43
|
+
record.transform(({ $ }) => ({
|
|
44
|
+
$id: $.val(now_id_plugin_1.NowIdShape.from(record)),
|
|
45
|
+
title: $,
|
|
46
|
+
category: $,
|
|
47
|
+
hint: $.def(''),
|
|
48
|
+
description: $.def(''),
|
|
49
|
+
name: $.def(''),
|
|
50
|
+
active: $.toBoolean().def(true),
|
|
51
|
+
order: $.map((v) => v.ifString()?.ifNotEmpty()?.toNumber()).def(100),
|
|
52
|
+
roles: $.map((v) => {
|
|
53
|
+
const roleNames = v.isString() && v.asString().getValue() !== '' ? v.asString().split(',') : [];
|
|
54
|
+
return roleNames.map((roleName) => factory.createReference({
|
|
55
|
+
source: v,
|
|
56
|
+
table: 'sys_user_role',
|
|
57
|
+
keys: { name: roleName },
|
|
58
|
+
}));
|
|
59
|
+
}).def([]),
|
|
60
|
+
})),
|
|
61
|
+
],
|
|
62
|
+
}),
|
|
63
|
+
};
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
shapes: [
|
|
68
|
+
{
|
|
69
|
+
shape: sdk_build_core_1.CallExpressionShape,
|
|
70
|
+
fileTypes: ['fluent'],
|
|
71
|
+
async toRecord(callExpression, { factory }) {
|
|
72
|
+
if (callExpression.getCallee() !== 'ApplicationMenu') {
|
|
73
|
+
return { success: false };
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
success: true,
|
|
77
|
+
value: callExpression
|
|
78
|
+
.getArgument(0)
|
|
79
|
+
.asObject()
|
|
80
|
+
.pipe((menu) => factory.createRecord({
|
|
81
|
+
source: callExpression,
|
|
82
|
+
table: 'sys_app_application',
|
|
83
|
+
explicitId: menu.get('$id'),
|
|
84
|
+
properties: menu.transform(({ $ }) => ({
|
|
85
|
+
title: $,
|
|
86
|
+
hint: $.def(''),
|
|
87
|
+
description: $.def(''),
|
|
88
|
+
name: $.def(''),
|
|
89
|
+
active: $.def(true),
|
|
90
|
+
order: $.def(100),
|
|
91
|
+
device_type: $.val('browser'),
|
|
92
|
+
roles: $.map((v) => v
|
|
93
|
+
.ifArray()
|
|
94
|
+
?.map((r) => (r.ifRecord()?.get('name') ?? r.asString()).getValue())
|
|
95
|
+
.join(',')).def(''),
|
|
96
|
+
category: $,
|
|
97
|
+
})),
|
|
98
|
+
})),
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=application-menu-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-menu-plugin.js","sourceRoot":"","sources":["../src/application-menu-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Plugin, Shape, type Source, IdentifierShape, type StringShape } from '@servicenow/sdk-build-core';
|
|
2
|
+
export declare class ArrowFunctionShape extends Shape {
|
|
3
|
+
private readonly parameters;
|
|
4
|
+
private readonly statements;
|
|
5
|
+
constructor({ source, parameters, statements, }: {
|
|
6
|
+
source: Source;
|
|
7
|
+
parameters?: (IdentifierShape | StringShape | string)[];
|
|
8
|
+
statements?: Shape[];
|
|
9
|
+
});
|
|
10
|
+
getParameters(): IdentifierShape[];
|
|
11
|
+
getParameter(index: number): IdentifierShape;
|
|
12
|
+
getStatements(): Shape[];
|
|
13
|
+
getStatement(index: number): Shape;
|
|
14
|
+
getCode(): string;
|
|
15
|
+
}
|
|
16
|
+
export declare const ArrowFunctionPlugin: Plugin;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArrowFunctionPlugin = exports.ArrowFunctionShape = void 0;
|
|
4
|
+
const sdk_build_core_1 = require("@servicenow/sdk-build-core");
|
|
5
|
+
class ArrowFunctionShape extends sdk_build_core_1.Shape {
|
|
6
|
+
parameters;
|
|
7
|
+
statements;
|
|
8
|
+
constructor({ source, parameters, statements, }) {
|
|
9
|
+
super({ source });
|
|
10
|
+
this.parameters = (parameters ?? []).map((s) => s instanceof sdk_build_core_1.IdentifierShape
|
|
11
|
+
? s
|
|
12
|
+
: new sdk_build_core_1.IdentifierShape({
|
|
13
|
+
source,
|
|
14
|
+
name: typeof s === 'string' ? s : s.getValue(),
|
|
15
|
+
}));
|
|
16
|
+
this.statements = statements ?? [];
|
|
17
|
+
}
|
|
18
|
+
getParameters() {
|
|
19
|
+
return this.parameters;
|
|
20
|
+
}
|
|
21
|
+
getParameter(index) {
|
|
22
|
+
const parameter = this.parameters[index];
|
|
23
|
+
if (!parameter) {
|
|
24
|
+
throw new Error(`Arrow function does not have a parameter at index: ${index}`);
|
|
25
|
+
}
|
|
26
|
+
return parameter;
|
|
27
|
+
}
|
|
28
|
+
getStatements() {
|
|
29
|
+
return this.statements;
|
|
30
|
+
}
|
|
31
|
+
getStatement(index) {
|
|
32
|
+
const statement = this.statements[index];
|
|
33
|
+
if (!statement) {
|
|
34
|
+
throw new Error(`Arrow function does not have a statement at index: ${index}`);
|
|
35
|
+
}
|
|
36
|
+
return statement;
|
|
37
|
+
}
|
|
38
|
+
getCode() {
|
|
39
|
+
return `(${this.getParameters()
|
|
40
|
+
.map((p) => p.getCode())
|
|
41
|
+
.join(', ')}) => {\n ${this.getStatements()
|
|
42
|
+
.map((s) => s.getCode())
|
|
43
|
+
.join('\n ')}\n}`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.ArrowFunctionShape = ArrowFunctionShape;
|
|
47
|
+
exports.ArrowFunctionPlugin = sdk_build_core_1.Plugin.create({
|
|
48
|
+
name: 'ArrowFunctionPlugin',
|
|
49
|
+
nodes: [
|
|
50
|
+
{
|
|
51
|
+
node: 'ArrowFunction',
|
|
52
|
+
fileTypes: ['fluent'],
|
|
53
|
+
async toShape(node, { transform, diagnostics }) {
|
|
54
|
+
const parameters = [];
|
|
55
|
+
for (const param of node.getParameters()) {
|
|
56
|
+
const result = await transform.toShape(param);
|
|
57
|
+
if (result.success && result.value.isIdentifier()) {
|
|
58
|
+
parameters.push(result.value);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
diagnostics.error(param, 'Unsupported parameter in arrow function');
|
|
62
|
+
return { success: false };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const statements = [];
|
|
66
|
+
for (const statement of node.getStatements()) {
|
|
67
|
+
const result = await transform.toShape(statement);
|
|
68
|
+
if (!result.success) {
|
|
69
|
+
diagnostics.error(statement, 'Unsupported statement in arrow function body');
|
|
70
|
+
return { success: false };
|
|
71
|
+
}
|
|
72
|
+
statements.push(result.value);
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
success: true,
|
|
76
|
+
value: new ArrowFunctionShape({
|
|
77
|
+
source: node,
|
|
78
|
+
parameters,
|
|
79
|
+
statements,
|
|
80
|
+
}),
|
|
81
|
+
};
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
shapes: [
|
|
86
|
+
{
|
|
87
|
+
shape: ArrowFunctionShape,
|
|
88
|
+
async commit(shape, target, { commit }) {
|
|
89
|
+
const arrowFunction = sdk_build_core_1.ts.Node.isArrowFunction(target)
|
|
90
|
+
? target
|
|
91
|
+
: target.replaceWithText('() => {}').asKindOrThrow(sdk_build_core_1.ts.SyntaxKind.ArrowFunction);
|
|
92
|
+
const nodeStatements = arrowFunction.getStatements();
|
|
93
|
+
const shapeStatements = shape.getStatements();
|
|
94
|
+
const excess = nodeStatements.length - shapeStatements.length;
|
|
95
|
+
for (let i = 1; i <= excess; i++) {
|
|
96
|
+
arrowFunction.removeStatement(nodeStatements.length - i);
|
|
97
|
+
}
|
|
98
|
+
for (const [i, statement] of shapeStatements.entries()) {
|
|
99
|
+
const targetStatement = nodeStatements[i] ?? arrowFunction.addStatements('undefined')[0];
|
|
100
|
+
await commit(statement, targetStatement);
|
|
101
|
+
}
|
|
102
|
+
return { success: true };
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=arrow-function-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-function-plugin.js","sourceRoot":"","sources":["../src/arrow-function-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ATFType, StandardStepValues } from '@servicenow/sdk-core/runtime/app';
|
|
2
|
+
export type ATFVariableInfo = {
|
|
3
|
+
field: string;
|
|
4
|
+
inputVariableId: string;
|
|
5
|
+
type: string;
|
|
6
|
+
order: number;
|
|
7
|
+
default?: any;
|
|
8
|
+
};
|
|
9
|
+
export type Category = keyof ATFType;
|
|
10
|
+
type FunctionParameters<F> = F extends (inputs: infer P) => any ? P extends object ? Exclude<keyof P, keyof StandardStepValues> : never : never;
|
|
11
|
+
type ToRecordStepMetadata = {
|
|
12
|
+
[C in keyof ATFType]: {
|
|
13
|
+
[FunctionName in keyof ATFType[C]]: {
|
|
14
|
+
name: string;
|
|
15
|
+
stepConfigId: string;
|
|
16
|
+
variables: {
|
|
17
|
+
[K in FunctionParameters<ATFType[C][FunctionName]>]: ATFVariableInfo;
|
|
18
|
+
};
|
|
19
|
+
defaultTimeout?: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export declare const ToRecordStepConfigs: ToRecordStepMetadata;
|
|
24
|
+
export type ToShapeStepMetadata = Record<string, {
|
|
25
|
+
name: string;
|
|
26
|
+
stepConfig: string;
|
|
27
|
+
callName: string;
|
|
28
|
+
fun: string;
|
|
29
|
+
variables: Record<string, {
|
|
30
|
+
name: string;
|
|
31
|
+
field: string;
|
|
32
|
+
type: string;
|
|
33
|
+
default?: any;
|
|
34
|
+
}>;
|
|
35
|
+
}>;
|
|
36
|
+
export declare const ToShapeStepConfigs: ToShapeStepMetadata;
|
|
37
|
+
export {};
|