@servicenow/sdk-build-plugins 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AttachmentPlugin.d.ts +253 -0
- package/dist/AttachmentPlugin.js +216 -0
- package/dist/AttachmentPlugin.js.map +1 -0
- package/dist/BusinessRulePlugin.d.ts +56 -0
- package/dist/BusinessRulePlugin.js +171 -0
- package/dist/BusinessRulePlugin.js.map +1 -0
- package/dist/CrossScopePrivilegePlugin.d.ts +22 -0
- package/dist/CrossScopePrivilegePlugin.js +42 -0
- package/dist/CrossScopePrivilegePlugin.js.map +1 -0
- package/dist/DefaultPlugin.d.ts +71 -0
- package/dist/DefaultPlugin.js +238 -0
- package/dist/DefaultPlugin.js.map +1 -0
- package/dist/IdPlugin.d.ts +17 -0
- package/dist/IdPlugin.js +45 -0
- package/dist/IdPlugin.js.map +1 -0
- package/dist/ListPlugin.d.ts +91 -0
- package/dist/ListPlugin.js +398 -0
- package/dist/ListPlugin.js.map +1 -0
- package/dist/PropertyPlugin.d.ts +122 -0
- package/dist/PropertyPlugin.js +165 -0
- package/dist/PropertyPlugin.js.map +1 -0
- package/dist/ScriptTemplatePlugin.d.ts +31 -0
- package/dist/ScriptTemplatePlugin.js +208 -0
- package/dist/ScriptTemplatePlugin.js.map +1 -0
- package/dist/UserPreferencePlugin.d.ts +16 -0
- package/dist/UserPreferencePlugin.js +30 -0
- package/dist/UserPreferencePlugin.js.map +1 -0
- package/dist/aclAndRole/AclPlugin.d.ts +117 -0
- package/dist/aclAndRole/AclPlugin.js +285 -0
- package/dist/aclAndRole/AclPlugin.js.map +1 -0
- package/dist/aclAndRole/RolePlugin.d.ts +58 -0
- package/dist/aclAndRole/RolePlugin.js +152 -0
- package/dist/aclAndRole/RolePlugin.js.map +1 -0
- package/dist/aclAndRole/Util.d.ts +3 -0
- package/dist/aclAndRole/Util.js +106 -0
- package/dist/aclAndRole/Util.js.map +1 -0
- package/dist/app/ApplicationMenuPlugin.d.ts +32 -0
- package/dist/app/ApplicationMenuPlugin.js +106 -0
- package/dist/app/ApplicationMenuPlugin.js.map +1 -0
- package/dist/atf/ATFComposer.d.ts +492 -0
- package/dist/atf/ATFComposer.js +2717 -0
- package/dist/atf/ATFComposer.js.map +1 -0
- package/dist/atf/TestPlugin.d.ts +31 -0
- package/dist/atf/TestPlugin.js +95 -0
- package/dist/atf/TestPlugin.js.map +1 -0
- package/dist/atf/index.d.ts +1 -0
- package/dist/atf/index.js +9 -0
- package/dist/atf/index.js.map +1 -0
- package/dist/db/ColumnPlugins.d.ts +278 -0
- package/dist/db/ColumnPlugins.js +112 -0
- package/dist/db/ColumnPlugins.js.map +1 -0
- package/dist/db/RecordPlugin.d.ts +208 -0
- package/dist/db/RecordPlugin.js +287 -0
- package/dist/db/RecordPlugin.js.map +1 -0
- package/dist/db/TablePlugin.d.ts +742 -0
- package/dist/db/TablePlugin.js +1249 -0
- package/dist/db/TablePlugin.js.map +1 -0
- package/dist/db/index.d.ts +3 -0
- package/dist/db/index.js +27 -0
- package/dist/db/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/scriptedRESTAPI/RESTDeserializationUtils.d.ts +12 -0
- package/dist/scriptedRESTAPI/RESTDeserializationUtils.js +371 -0
- package/dist/scriptedRESTAPI/RESTDeserializationUtils.js.map +1 -0
- package/dist/scriptedRESTAPI/RESTSerializationUtils.d.ts +15 -0
- package/dist/scriptedRESTAPI/RESTSerializationUtils.js +177 -0
- package/dist/scriptedRESTAPI/RESTSerializationUtils.js.map +1 -0
- package/dist/scriptedRESTAPI/RestApiPlugin.d.ts +144 -0
- package/dist/scriptedRESTAPI/RestApiPlugin.js +318 -0
- package/dist/scriptedRESTAPI/RestApiPlugin.js.map +1 -0
- package/dist/scriptedRESTAPI/RestSchemaUtils.d.ts +190 -0
- package/dist/scriptedRESTAPI/RestSchemaUtils.js +53 -0
- package/dist/scriptedRESTAPI/RestSchemaUtils.js.map +1 -0
- package/dist/scriptedRESTAPI/RestUtils.d.ts +75 -0
- package/dist/scriptedRESTAPI/RestUtils.js +469 -0
- package/dist/scriptedRESTAPI/RestUtils.js.map +1 -0
- package/dist/scripts/ClientScriptPlugin.d.ts +43 -0
- package/dist/scripts/ClientScriptPlugin.js +190 -0
- package/dist/scripts/ClientScriptPlugin.js.map +1 -0
- package/dist/scripts/scriptUtils.d.ts +15 -0
- package/dist/scripts/scriptUtils.js +83 -0
- package/dist/scripts/scriptUtils.js.map +1 -0
- package/dist/uxf/ExperiencePlugin.d.ts +22 -0
- package/dist/uxf/ExperiencePlugin.js +55 -0
- package/dist/uxf/ExperiencePlugin.js.map +1 -0
- package/dist/uxf/RoutesPlugin.d.ts +22 -0
- package/dist/uxf/RoutesPlugin.js +176 -0
- package/dist/uxf/RoutesPlugin.js.map +1 -0
- package/dist/uxf/UxfFormulaParser/cleanUxValue.d.ts +4 -0
- package/dist/uxf/UxfFormulaParser/cleanUxValue.js +65 -0
- package/dist/uxf/UxfFormulaParser/cleanUxValue.js.map +1 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/api.d.ts +189 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/api.js +158 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/api.js.map +1 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/clientTransformMap.d.ts +13 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/clientTransformMap.js +604 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/clientTransformMap.js.map +1 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/grammarParser.d.ts +12 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/grammarParser.js +551 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/grammarParser.js.map +1 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/spanHelpers.d.ts +31 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/spanHelpers.js +64 -0
- package/dist/uxf/UxfFormulaParser/grammerParser/spanHelpers.js.map +1 -0
- package/dist/uxf/UxfFormulaParser/index.d.ts +3 -0
- package/dist/uxf/UxfFormulaParser/index.js +11 -0
- package/dist/uxf/UxfFormulaParser/index.js.map +1 -0
- package/dist/uxf/UxfFormulaParser/parser.d.ts +8 -0
- package/dist/uxf/UxfFormulaParser/parser.js +87 -0
- package/dist/uxf/UxfFormulaParser/parser.js.map +1 -0
- package/dist/uxf/UxfFormulaParser/utils/getErrorMsg.d.ts +8 -0
- package/dist/uxf/UxfFormulaParser/utils/getErrorMsg.js +17 -0
- package/dist/uxf/UxfFormulaParser/utils/getErrorMsg.js.map +1 -0
- package/dist/uxf/constants.d.ts +2 -0
- package/dist/uxf/constants.js +8 -0
- package/dist/uxf/constants.js.map +1 -0
- package/dist/uxf/index.d.ts +2 -0
- package/dist/uxf/index.js +11 -0
- package/dist/uxf/index.js.map +1 -0
- package/dist/uxf/tectonicIdGenerator.d.ts +12 -0
- package/dist/uxf/tectonicIdGenerator.js +102 -0
- package/dist/uxf/tectonicIdGenerator.js.map +1 -0
- package/license +9 -0
- package/package.json +42 -0
- package/src/AttachmentPlugin.ts +262 -0
- package/src/BusinessRulePlugin.ts +251 -0
- package/src/CrossScopePrivilegePlugin.ts +54 -0
- package/src/DefaultPlugin.ts +272 -0
- package/src/IdPlugin.ts +47 -0
- package/src/ListPlugin.ts +497 -0
- package/src/PropertyPlugin.ts +218 -0
- package/src/ScriptTemplatePlugin.ts +223 -0
- package/src/UserPreferencePlugin.ts +36 -0
- package/src/aclAndRole/AclPlugin.ts +410 -0
- package/src/aclAndRole/RolePlugin.ts +225 -0
- package/src/aclAndRole/Util.ts +104 -0
- package/src/app/ApplicationMenuPlugin.ts +158 -0
- package/src/atf/ATFComposer.ts +3356 -0
- package/src/atf/TestPlugin.ts +119 -0
- package/src/atf/index.ts +1 -0
- package/src/db/ColumnPlugins.ts +117 -0
- package/src/db/RecordPlugin.ts +391 -0
- package/src/db/TablePlugin.ts +1581 -0
- package/src/db/index.ts +3 -0
- package/src/index.ts +16 -0
- package/src/scriptedRESTAPI/RESTDeserializationUtils.ts +410 -0
- package/src/scriptedRESTAPI/RESTSerializationUtils.ts +227 -0
- package/src/scriptedRESTAPI/RestApiPlugin.ts +438 -0
- package/src/scriptedRESTAPI/RestSchemaUtils.ts +72 -0
- package/src/scriptedRESTAPI/RestUtils.ts +507 -0
- package/src/scripts/ClientScriptPlugin.ts +251 -0
- package/src/scripts/scriptUtils.ts +81 -0
- package/src/uxf/ExperiencePlugin.ts +64 -0
- package/src/uxf/RoutesPlugin.ts +215 -0
- package/src/uxf/UxfFormulaParser/cleanUxValue.ts +73 -0
- package/src/uxf/UxfFormulaParser/grammerParser/api.js +166 -0
- package/src/uxf/UxfFormulaParser/grammerParser/clientTransformMap.js +606 -0
- package/src/uxf/UxfFormulaParser/grammerParser/grammarParser.js +551 -0
- package/src/uxf/UxfFormulaParser/grammerParser/spanHelpers.js +65 -0
- package/src/uxf/UxfFormulaParser/index.ts +4 -0
- package/src/uxf/UxfFormulaParser/parser.ts +64 -0
- package/src/uxf/UxfFormulaParser/utils/getErrorMsg.ts +13 -0
- package/src/uxf/constants.ts +4 -0
- package/src/uxf/index.ts +2 -0
- package/src/uxf/tectonicIdGenerator.ts +81 -0
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.unHandledIds = exports.completelyUnassociatedParamIds = exports.potentialRecordCallRouteParams = exports.getArgs = exports.restTables = void 0;
|
|
27
|
+
exports.getRouteAttrMapResult = getRouteAttrMapResult;
|
|
28
|
+
exports.iterateAllRouteAttrNode = iterateAllRouteAttrNode;
|
|
29
|
+
exports.handleAndReturnResult = handleAndReturnResult;
|
|
30
|
+
exports.getRouteAttrWithRestNodeResult = getRouteAttrWithRestNodeResult;
|
|
31
|
+
exports.getRouteAttrWithRecordNodeResult = getRouteAttrWithRecordNodeResult;
|
|
32
|
+
exports.getRouteAttrMapWithRestNodeResult = getRouteAttrMapWithRestNodeResult;
|
|
33
|
+
exports.getRouteAttrMapWithRecordNodeResult = getRouteAttrMapWithRecordNodeResult;
|
|
34
|
+
exports.getRouteAttrResult = getRouteAttrResult;
|
|
35
|
+
exports.getRestDocumentMap = getRestDocumentMap;
|
|
36
|
+
exports.isParamAssociated = isParamAssociated;
|
|
37
|
+
exports.createRecordCall = createRecordCall;
|
|
38
|
+
/* eslint-disable no-case-declarations */
|
|
39
|
+
const ts = __importStar(require("ts-morph"));
|
|
40
|
+
const sdk_build_core_1 = require("@servicenow/sdk-build-core");
|
|
41
|
+
const lodash_1 = require("lodash");
|
|
42
|
+
const rest_1 = require("@servicenow/sdk-core/runtime/rest");
|
|
43
|
+
const RecordPlugin_1 = require("../db/RecordPlugin");
|
|
44
|
+
exports.restTables = [
|
|
45
|
+
'sys_ws_definition',
|
|
46
|
+
'sys_ws_operation',
|
|
47
|
+
'sys_ws_version',
|
|
48
|
+
'sys_ws_header',
|
|
49
|
+
'sys_ws_query_parameter',
|
|
50
|
+
'sys_ws_header_map',
|
|
51
|
+
'sys_ws_query_parameter_map',
|
|
52
|
+
];
|
|
53
|
+
let restDocumentMap = undefined;
|
|
54
|
+
/** checks if a given query_parameter or header doc is consumed by the given rest or not in current transformation*/
|
|
55
|
+
const isConsumedByRest = (restId, restDocMap, document) => {
|
|
56
|
+
if (restDocMap[restId] && restDocMap[restId].route_attrs_map) {
|
|
57
|
+
const found = Object.values(restDocMap[restId].route_attrs_map).find((doc) => doc.data['data'].web_service_query_parameter === document.guid ||
|
|
58
|
+
doc.data['data'].web_service_header === document.guid);
|
|
59
|
+
return found ? true : false;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
};
|
|
63
|
+
function getRouteAttrMapResult(document, restDocMap) {
|
|
64
|
+
if (document.action === 'DELETE') {
|
|
65
|
+
return { handled: false };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* if the given attribute map record references query parameter or routes record
|
|
69
|
+
* not part of the current app we make it a record call.
|
|
70
|
+
*/
|
|
71
|
+
const isUnHandled = restDocMap['unHandled_records'].find((doc) => doc.id === document.guid);
|
|
72
|
+
if (isUnHandled) {
|
|
73
|
+
return { handled: false };
|
|
74
|
+
}
|
|
75
|
+
const routeId = document.data['data']['web_service_operation'];
|
|
76
|
+
const paramField = document.data['table'] === 'sys_ws_header_map' ? 'web_service_header' : 'web_service_query_parameter';
|
|
77
|
+
exports.potentialRecordCallRouteParams.delete(document.data['data'][paramField]);
|
|
78
|
+
/** if the attribute map record is consumed by any rest then associated appropriate parent */
|
|
79
|
+
return { handled: true, result: { kind: 'record', guid: routeId } };
|
|
80
|
+
}
|
|
81
|
+
/** utility function to get the args node of a call expression node*/
|
|
82
|
+
const getArgs = (document) => {
|
|
83
|
+
const node = document.node.asKindOrThrow(ts.SyntaxKind.CallExpression);
|
|
84
|
+
return node.getArguments()[0].asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression);
|
|
85
|
+
};
|
|
86
|
+
exports.getArgs = getArgs;
|
|
87
|
+
/**
|
|
88
|
+
* utility function that iterates over all the headers or parameters of all routes
|
|
89
|
+
* inside a rest api and calls the provided callback function.
|
|
90
|
+
*/
|
|
91
|
+
function iterateAllRouteAttrNode(document, eleAttrName, callback) {
|
|
92
|
+
const argsNode = (0, exports.getArgs)(document);
|
|
93
|
+
const restId = (0, sdk_build_core_1.getNodeId)(argsNode);
|
|
94
|
+
argsNode
|
|
95
|
+
.getProperty('routes')
|
|
96
|
+
?.asKind(ts.ts.SyntaxKind.PropertyAssignment)
|
|
97
|
+
?.getInitializerIfKindOrThrow(ts.ts.SyntaxKind.ArrayLiteralExpression)
|
|
98
|
+
?.getElements()
|
|
99
|
+
.forEach((element) => {
|
|
100
|
+
const routeId = (0, sdk_build_core_1.getNodeId)(element.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression));
|
|
101
|
+
const arrayExpression = element
|
|
102
|
+
.asKind(ts.ts.SyntaxKind.ObjectLiteralExpression)
|
|
103
|
+
?.getProperty(eleAttrName)
|
|
104
|
+
?.asKind(ts.ts.SyntaxKind.PropertyAssignment)
|
|
105
|
+
?.getInitializerIfKindOrThrow(ts.ts.SyntaxKind.ArrayLiteralExpression);
|
|
106
|
+
arrayExpression?.getElements().forEach((element) => {
|
|
107
|
+
const attrId = (0, sdk_build_core_1.getNodeId)(element.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression));
|
|
108
|
+
callback(arrayExpression, element, {
|
|
109
|
+
attr: attrId,
|
|
110
|
+
route: routeId,
|
|
111
|
+
rest: restId,
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* keeps track of all those params records associated with a rest node,
|
|
118
|
+
* so if some m2m records removes all its associations then we would create record call.
|
|
119
|
+
*/
|
|
120
|
+
exports.potentialRecordCallRouteParams = new Set();
|
|
121
|
+
/**
|
|
122
|
+
* There are some of the completely unassociated param records generated when an
|
|
123
|
+
* m2m record swtiches from one rest to another rest entity. we track them to generate records calls
|
|
124
|
+
* if required.
|
|
125
|
+
*/
|
|
126
|
+
exports.completelyUnassociatedParamIds = new Set();
|
|
127
|
+
/**
|
|
128
|
+
* Ids of records which are going to be a record call so need not handle them in rest generator.
|
|
129
|
+
*/
|
|
130
|
+
exports.unHandledIds = [];
|
|
131
|
+
/** Based on the result it adds the document id to unHandledIds which is later on used by generator
|
|
132
|
+
* to avoid generating nodes for them since it's expected to be handled by record plugin.
|
|
133
|
+
*/
|
|
134
|
+
function handleAndReturnResult(result, document) {
|
|
135
|
+
if (!result.handled) {
|
|
136
|
+
exports.unHandledIds.push(document.guid);
|
|
137
|
+
}
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Performs the following operations:
|
|
142
|
+
* 1. If the documents associated rest node is the same as the referenced rest in data, let the rest node handle it.
|
|
143
|
+
* 2. If it refernces a different rest node, then clean up the current rest node and its keys. If the referenced rest node
|
|
144
|
+
* has a mapping record to consume this parameter or header let it handle, else make it a record call.
|
|
145
|
+
*/
|
|
146
|
+
function getRouteAttrWithRestNodeResult(document, context, restDocMap) {
|
|
147
|
+
const restId = document.data['data']['web_service_definition'];
|
|
148
|
+
const nodeId = (0, sdk_build_core_1.getNodeId)((0, exports.getArgs)(document));
|
|
149
|
+
const nodeRestId = context.keys.explicit[nodeId].id;
|
|
150
|
+
if (document.action === 'DELETE') {
|
|
151
|
+
return { handled: true, result: { kind: 'record', guid: nodeRestId } };
|
|
152
|
+
}
|
|
153
|
+
if (restId === nodeRestId) {
|
|
154
|
+
return { handled: true, result: { kind: 'record', guid: restId } };
|
|
155
|
+
}
|
|
156
|
+
const attrName = document.data['table'] === 'sys_ws_header' ? 'headers' : 'parameters';
|
|
157
|
+
let deleteAttrKey = undefined;
|
|
158
|
+
iterateAllRouteAttrNode(document, attrName, (arrayExp, element, compKey) => {
|
|
159
|
+
const attrSysId = context.keys.explicit[compKey.attr].id;
|
|
160
|
+
if (attrSysId === document.guid) {
|
|
161
|
+
deleteAttrKey = compKey.attr;
|
|
162
|
+
const idx = context.keys.composite.findIndex((k) => (0, lodash_1.isEqual)(k.key, compKey));
|
|
163
|
+
if (idx !== -1) {
|
|
164
|
+
context.keys.composite.splice(idx, 1);
|
|
165
|
+
}
|
|
166
|
+
arrayExp.removeElement(element);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
if (deleteAttrKey) {
|
|
170
|
+
delete context.keys.explicit[deleteAttrKey];
|
|
171
|
+
}
|
|
172
|
+
exports.potentialRecordCallRouteParams.delete(document.guid);
|
|
173
|
+
deleteDocNode(document, context);
|
|
174
|
+
document['changedData'] = { data: document.data['data'] };
|
|
175
|
+
if (!isConsumed(document, restDocMap)) {
|
|
176
|
+
return { handled: false };
|
|
177
|
+
}
|
|
178
|
+
return { handled: true, result: { kind: 'record', guid: restId } };
|
|
179
|
+
}
|
|
180
|
+
function isConsumed(document, restDocMap) {
|
|
181
|
+
const restId = document.data['data']['web_service_definition'];
|
|
182
|
+
const isUnHandled = restDocMap['unHandled_records'].find((doc) => doc.id === document.guid);
|
|
183
|
+
if (isUnHandled) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
return isConsumedByRest(restId, restDocMap, document);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Deletes node reference from document and updates in context docs as well to keep it updated.
|
|
190
|
+
*/
|
|
191
|
+
const deleteDocNode = (document, context) => {
|
|
192
|
+
const foundDoc = context.getAllDocuments().find((doc) => doc.guid === document.guid);
|
|
193
|
+
delete foundDoc?.node;
|
|
194
|
+
delete document.node;
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* checks to see if the document is consumed by any rest api. If consumed then
|
|
198
|
+
* remove that record call expression and its associated keys and let rest handle
|
|
199
|
+
* it, else update the record call.
|
|
200
|
+
*/
|
|
201
|
+
function getRouteAttrWithRecordNodeResult(document, context, restDocMap) {
|
|
202
|
+
if (document.action === 'DELETE') {
|
|
203
|
+
return { handled: false };
|
|
204
|
+
}
|
|
205
|
+
if (!isConsumed(document, restDocMap)) {
|
|
206
|
+
return { handled: false };
|
|
207
|
+
}
|
|
208
|
+
const recordId = (0, sdk_build_core_1.getNodeId)((0, exports.getArgs)(document));
|
|
209
|
+
(0, sdk_build_core_1.removeNode)(document.node);
|
|
210
|
+
deleteDocNode(document, context);
|
|
211
|
+
delete context.keys.explicit[recordId];
|
|
212
|
+
document['changedData'] = { data: document.data['data'] };
|
|
213
|
+
return { handled: true, result: { kind: 'record', guid: document.data['data']['web_service_definition'] } };
|
|
214
|
+
}
|
|
215
|
+
/** Gets the rest id for the given route id.*/
|
|
216
|
+
const getRestIdForRoute = (routeId, restDocMap) => {
|
|
217
|
+
let restId = undefined;
|
|
218
|
+
Object.keys(restDocMap)
|
|
219
|
+
.filter((key) => key !== 'unHanlded_records' && key !== 'delete_records')
|
|
220
|
+
.forEach((key) => {
|
|
221
|
+
if (restDocMap[key].routes) {
|
|
222
|
+
const foundRoute = Object.values(restDocMap[key].routes).find((doc) => doc.id === routeId);
|
|
223
|
+
if (foundRoute) {
|
|
224
|
+
restId = key;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
return restId;
|
|
229
|
+
};
|
|
230
|
+
/** cleans the mapping node from given array and keys file*/
|
|
231
|
+
const cleanMapDocInNode = (arrayExp, element, compKey, context, document) => {
|
|
232
|
+
const idx = context.keys.composite.findIndex((k) => (0, lodash_1.isEqual)(k.key, compKey));
|
|
233
|
+
if (idx !== -1) {
|
|
234
|
+
const compObj = context.keys.composite[idx];
|
|
235
|
+
if (compObj?.id === document.guid) {
|
|
236
|
+
arrayExp.removeElement(element);
|
|
237
|
+
context.keys.composite.splice(idx, 1);
|
|
238
|
+
return context.keys.explicit[compKey.attr]?.id;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return undefined;
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Performs the following operations:
|
|
245
|
+
* 1. If the mapping record references a differnt route or query param not part of the app
|
|
246
|
+
* then clean its presence from current rest node and create a record call for it.
|
|
247
|
+
* 2. If if references a different route and query param in same app, the clean current rest
|
|
248
|
+
* and update the new rest node.
|
|
249
|
+
* 3. If references same rest then update it.
|
|
250
|
+
*
|
|
251
|
+
* In addition to that, it also tracks the params unassociated to create record call if needed.
|
|
252
|
+
*/
|
|
253
|
+
function getRouteAttrMapWithRestNodeResult(document, context, restDocMap) {
|
|
254
|
+
const restNodeId = (0, sdk_build_core_1.getNodeId)((0, exports.getArgs)(document));
|
|
255
|
+
const restNodeSysId = context.keys.explicit[restNodeId].id;
|
|
256
|
+
const routeId = document.data['data']['web_service_operation'];
|
|
257
|
+
if (document.action === 'DELETE') {
|
|
258
|
+
return { handled: true, result: { kind: 'record', guid: routeId } };
|
|
259
|
+
}
|
|
260
|
+
const isUnHandled = restDocMap['unHandled_records'].find((doc) => doc.id === document.guid);
|
|
261
|
+
const attrName = document.data['table'] === 'sys_ws_header_map' ? 'headers' : 'parameters';
|
|
262
|
+
if (isUnHandled) {
|
|
263
|
+
let unAssociatedId = undefined;
|
|
264
|
+
document['changedData'] = { data: document.data['data'] };
|
|
265
|
+
iterateAllRouteAttrNode(document, attrName, (arrayExp, element, compKey) => {
|
|
266
|
+
unAssociatedId = unAssociatedId ?? cleanMapDocInNode(arrayExp, element, compKey, context, document);
|
|
267
|
+
});
|
|
268
|
+
if (unAssociatedId) {
|
|
269
|
+
if (!isParamAssociated(document, attrName, context, unAssociatedId)) {
|
|
270
|
+
exports.completelyUnassociatedParamIds.add(unAssociatedId);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
deleteDocNode(document, context);
|
|
274
|
+
return { handled: false };
|
|
275
|
+
}
|
|
276
|
+
const paramField = document.data['table'] === 'sys_ws_header_map' ? 'web_service_header' : 'web_service_query_parameter';
|
|
277
|
+
exports.potentialRecordCallRouteParams.delete(document.data['data'][paramField]);
|
|
278
|
+
const restId = getRestIdForRoute(routeId, restDocMap);
|
|
279
|
+
if (restId !== restNodeSysId) {
|
|
280
|
+
let unAssociatedId = undefined;
|
|
281
|
+
document['changedData'] = { data: document.data['data'] };
|
|
282
|
+
iterateAllRouteAttrNode(document, attrName, (arrayExp, element, compKey) => {
|
|
283
|
+
unAssociatedId = unAssociatedId ?? cleanMapDocInNode(arrayExp, element, compKey, context, document);
|
|
284
|
+
});
|
|
285
|
+
if (unAssociatedId) {
|
|
286
|
+
if (!isParamAssociated(document, attrName, context, unAssociatedId)) {
|
|
287
|
+
exports.completelyUnassociatedParamIds.add(unAssociatedId);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
deleteDocNode(document, context);
|
|
291
|
+
}
|
|
292
|
+
return { handled: true, result: { kind: 'record', guid: routeId } };
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Performs following operation
|
|
296
|
+
* 1. If given mapping record references some routes or param not in app update the record call.
|
|
297
|
+
* 2. If references some existing route and param, then remove the current record call and its keys.
|
|
298
|
+
* Update the new rest node.
|
|
299
|
+
*/
|
|
300
|
+
function getRouteAttrMapWithRecordNodeResult(document, context, restDocMap) {
|
|
301
|
+
if (document.action === 'DELETE') {
|
|
302
|
+
return { handled: false };
|
|
303
|
+
}
|
|
304
|
+
const routeId = document.data['data']['web_service_operation'];
|
|
305
|
+
const isUnHandled = restDocMap['unHandled_records'].find((doc) => doc.id === document.guid);
|
|
306
|
+
if (isUnHandled) {
|
|
307
|
+
return { handled: false };
|
|
308
|
+
}
|
|
309
|
+
document['changedData'] = { data: document.data['data'] };
|
|
310
|
+
const recordId = (0, sdk_build_core_1.getNodeId)((0, exports.getArgs)(document));
|
|
311
|
+
const paramField = document.data['table'] === 'sys_ws_header_map' ? 'web_service_header' : 'web_service_query_parameter';
|
|
312
|
+
exports.potentialRecordCallRouteParams.delete(document.data['data'][paramField]);
|
|
313
|
+
(0, sdk_build_core_1.removeNode)(document.node);
|
|
314
|
+
deleteDocNode(document, context);
|
|
315
|
+
delete context.keys.explicit[recordId];
|
|
316
|
+
return { handled: true, result: { kind: 'record', guid: routeId } };
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* If the incoming parameter or header record is consumed by rest associated it to the rest node, else make it a record call.
|
|
320
|
+
*/
|
|
321
|
+
function getRouteAttrResult(document, restDocMap) {
|
|
322
|
+
if (document.action === 'DELETE') {
|
|
323
|
+
return { handled: false };
|
|
324
|
+
}
|
|
325
|
+
const restId = document.data['data']['web_service_definition'];
|
|
326
|
+
if (isConsumedByRest(restId, restDocMap, document)) {
|
|
327
|
+
return { handled: true, result: { kind: 'record', guid: restId } };
|
|
328
|
+
}
|
|
329
|
+
return { handled: false };
|
|
330
|
+
}
|
|
331
|
+
const findRecInDocs = (docs, id, table) => {
|
|
332
|
+
return docs?.find((doc) => doc.data['table'] === table && doc.id == id);
|
|
333
|
+
};
|
|
334
|
+
function getRestDocumentMap(context) {
|
|
335
|
+
if (restDocumentMap) {
|
|
336
|
+
return restDocumentMap;
|
|
337
|
+
}
|
|
338
|
+
/**gets all rest related docs */
|
|
339
|
+
const allRestDocs = context.getAllDocuments().filter((doc) => exports.restTables.includes(doc.data['table']));
|
|
340
|
+
allRestDocs.sort((doc1, doc2) => {
|
|
341
|
+
const doc1Table = doc1.data['table'];
|
|
342
|
+
const doc2Table = doc2.data['table'];
|
|
343
|
+
return exports.restTables.indexOf(doc1Table) - exports.restTables.indexOf(doc2Table);
|
|
344
|
+
});
|
|
345
|
+
const unHandledDocs = [];
|
|
346
|
+
/** filters and gets all delete records and insert_or_update records */
|
|
347
|
+
const delRestDocs = allRestDocs.filter((doc) => doc.action === 'DELETE');
|
|
348
|
+
const existingDocs = allRestDocs.filter((doc) => doc.action !== 'DELETE');
|
|
349
|
+
existingDocs.map((doc) => {
|
|
350
|
+
const table = doc.data['table'];
|
|
351
|
+
if ((table === 'sys_ws_query_parameter' || table === 'sys_ws_header') &&
|
|
352
|
+
doc.node &&
|
|
353
|
+
(0, sdk_build_core_1.getCallExpressionName)(doc.node) === rest_1.RestApi.name) {
|
|
354
|
+
exports.potentialRecordCallRouteParams.add(doc.guid);
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
/**
|
|
358
|
+
* Generates the rest document map with insert or udpate records
|
|
359
|
+
* and includes only mapping records that are being transformed (this is needed to determine if an
|
|
360
|
+
* parameter or header record will be consumed by rest in current transformation)
|
|
361
|
+
*/
|
|
362
|
+
restDocumentMap = existingDocs.reduce((docMap, doc) => {
|
|
363
|
+
switch (doc.data['table']) {
|
|
364
|
+
case 'sys_ws_definition':
|
|
365
|
+
docMap[doc.guid] = {
|
|
366
|
+
restDef: doc,
|
|
367
|
+
};
|
|
368
|
+
break;
|
|
369
|
+
case 'sys_ws_operation':
|
|
370
|
+
const op_restId = doc.data['data']['web_service_definition'];
|
|
371
|
+
if (docMap[op_restId]) {
|
|
372
|
+
;
|
|
373
|
+
(docMap[op_restId].routes ??= {})[doc.guid] = doc;
|
|
374
|
+
}
|
|
375
|
+
break;
|
|
376
|
+
case 'sys_ws_version':
|
|
377
|
+
const v_restId = doc.data['data']['web_service_definition'];
|
|
378
|
+
if (docMap[v_restId]) {
|
|
379
|
+
;
|
|
380
|
+
(docMap[v_restId].versions ??= {})[doc.guid] = doc;
|
|
381
|
+
}
|
|
382
|
+
break;
|
|
383
|
+
case 'sys_ws_query_parameter':
|
|
384
|
+
case 'sys_ws_header':
|
|
385
|
+
const qp_restId = doc.data['data']['web_service_definition'];
|
|
386
|
+
if (docMap[qp_restId]) {
|
|
387
|
+
;
|
|
388
|
+
(docMap[qp_restId].route_attrs ??= {})[doc.guid] = doc;
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
//throw error if the transforming doc references a deleted record
|
|
392
|
+
if (doc.changedData) {
|
|
393
|
+
const found = findRecInDocs(delRestDocs, qp_restId, 'sys_ws_definition');
|
|
394
|
+
if (found) {
|
|
395
|
+
throw Error(`Found invalid rest route param record: ${doc.guid} referencing deleted rest record: ${qp_restId}`);
|
|
396
|
+
}
|
|
397
|
+
unHandledDocs.push(doc);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
break;
|
|
401
|
+
case 'sys_ws_query_parameter_map':
|
|
402
|
+
case 'sys_ws_header_map':
|
|
403
|
+
if (!doc.changedData) {
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
406
|
+
const attrTable = doc.data['table'] === 'sys_ws_header_map' ? 'sys_ws_header' : 'sys_ws_query_parameter';
|
|
407
|
+
const attr = doc.data['table'] === 'sys_ws_header_map' ? 'web_service_header' : 'web_service_query_parameter';
|
|
408
|
+
const qpm_routeId = doc.data['data']['web_service_operation'];
|
|
409
|
+
const qpm_paramId = doc.data['data'][attr];
|
|
410
|
+
const delOperationFound = findRecInDocs(delRestDocs, qpm_routeId, 'sys_ws_operation');
|
|
411
|
+
const delParamFound = findRecInDocs(delRestDocs, qpm_paramId, attrTable);
|
|
412
|
+
if (delOperationFound || delParamFound) {
|
|
413
|
+
throw Error(`Found invalid rest map record: ${doc.guid} referencing deleted record: ${delOperationFound ? delOperationFound : delParamFound}`);
|
|
414
|
+
}
|
|
415
|
+
const routeRec = findRecInDocs(existingDocs, qpm_routeId, 'sys_ws_operation');
|
|
416
|
+
const paramRec = findRecInDocs(existingDocs, qpm_paramId, attrTable);
|
|
417
|
+
/**if both route and parameter are part of same rest then it will be consumed by rest */
|
|
418
|
+
if (routeRec && paramRec) {
|
|
419
|
+
const routeRestId = routeRec.data['data']['web_service_definition'];
|
|
420
|
+
const paramRestId = paramRec.data['data']['web_service_definition'];
|
|
421
|
+
if (routeRestId !== paramRestId) {
|
|
422
|
+
throw Error(`Found invalid rest mapping record: ${doc.guid} which has param: ${qpm_paramId} and route: ${qpm_routeId} pointing to different rest definition`);
|
|
423
|
+
}
|
|
424
|
+
;
|
|
425
|
+
(docMap[routeRestId].route_attrs_map ??= {})[doc.guid] = doc;
|
|
426
|
+
}
|
|
427
|
+
else if (paramRec) {
|
|
428
|
+
const paramRestId = paramRec.data['data']['web_service_definition'];
|
|
429
|
+
const foundRestRec = findRecInDocs(existingDocs, paramRestId, 'sys_ws_definition');
|
|
430
|
+
/**In mapping records resources and paramter should point to same rest*/
|
|
431
|
+
if (foundRestRec) {
|
|
432
|
+
throw Error(`Found invalid rest mapping record: ${doc.guid} where the resource references different rest entity than the rest attr.`);
|
|
433
|
+
}
|
|
434
|
+
unHandledDocs.push(doc);
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
unHandledDocs.push(doc);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
return docMap;
|
|
441
|
+
}, {});
|
|
442
|
+
restDocumentMap['delete_records'] = delRestDocs ?? [];
|
|
443
|
+
restDocumentMap['unHandled_records'] = unHandledDocs ?? [];
|
|
444
|
+
return restDocumentMap;
|
|
445
|
+
}
|
|
446
|
+
function isParamAssociated(document, eleAttrName, context, paramSysId) {
|
|
447
|
+
let isAssociated = false;
|
|
448
|
+
iterateAllRouteAttrNode(document, eleAttrName, (_expression, _element, compKey) => {
|
|
449
|
+
if (context.keys.explicit[compKey.attr]?.id === paramSysId) {
|
|
450
|
+
isAssociated = true;
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
return isAssociated;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Helper function that creates a record call for the document passed.
|
|
457
|
+
*/
|
|
458
|
+
function createRecordCall(paramSysId, context) {
|
|
459
|
+
const paramKey = context.keys.findExplicitKeyById(paramSysId);
|
|
460
|
+
if (paramKey) {
|
|
461
|
+
delete context.keys.explicit[paramKey];
|
|
462
|
+
}
|
|
463
|
+
const document = context.getDocument(paramSysId);
|
|
464
|
+
document['changedData'] = { data: document.data['data'] };
|
|
465
|
+
delete document?.node;
|
|
466
|
+
const linkedDoc = RecordPlugin_1.RecordPlugin.generators.record(document, context);
|
|
467
|
+
RecordPlugin_1.RecordPlugin.transformers.record.CallExpression(linkedDoc);
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=RestUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RestUtils.js","sourceRoot":"","sources":["../../src/scriptedRESTAPI/RestUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Context, FluentDiagnostic, EntityData } from '@servicenow/sdk-build-core';
|
|
2
|
+
import * as ts from 'ts-morph';
|
|
3
|
+
import { Diagnostic } from '@servicenow/sdk-project';
|
|
4
|
+
declare const _default: {
|
|
5
|
+
readonly name: "ClientScript";
|
|
6
|
+
readonly ownedTables: {
|
|
7
|
+
readonly sys_script_client: {
|
|
8
|
+
readonly diagnosticLevel: Diagnostic.Level.Warn;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
readonly extractors: {
|
|
12
|
+
readonly entity: {
|
|
13
|
+
readonly CallExpression: (node: ts.CallExpression<ts.ts.CallExpression>, context: Context) => {
|
|
14
|
+
handled: false;
|
|
15
|
+
} | {
|
|
16
|
+
handled: true;
|
|
17
|
+
data: EntityData<import("@servicenow/sdk-core/runtime/clientscript").ClientScriptProps<keyof Now.Internal.Tables, "onLoad" | "onSubmit" | "onCellEdit" | "onChange", true>>[];
|
|
18
|
+
diagnostics: FluentDiagnostic[];
|
|
19
|
+
} | {
|
|
20
|
+
handled: true;
|
|
21
|
+
diagnostics: FluentDiagnostic[];
|
|
22
|
+
data: EntityData<{
|
|
23
|
+
readonly table: "sys_script_client";
|
|
24
|
+
readonly $id: any;
|
|
25
|
+
readonly data: any;
|
|
26
|
+
}>[];
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
readonly generators: {
|
|
31
|
+
readonly record: (document: import("@servicenow/sdk-build-core").UnlinkedDocument<"record"> & import("@servicenow/sdk-build-core").Arranged, context: Context) => import("@servicenow/sdk-build-core").LinkedDocument<"record", ts.CallExpression<ts.ts.CallExpression>> | undefined;
|
|
32
|
+
};
|
|
33
|
+
readonly transformers: {
|
|
34
|
+
readonly record: {
|
|
35
|
+
readonly CallExpression: (document: import("@servicenow/sdk-build-core").Document<any, ts.CallExpression<ts.ts.CallExpression>> & {
|
|
36
|
+
entity?: EntityData;
|
|
37
|
+
node: ts.CallExpression<ts.ts.CallExpression>;
|
|
38
|
+
} & import("@servicenow/sdk-build-core").Arranged, context: Context) => boolean;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export default _default;
|
|
43
|
+
export declare function isRequire(callExpression: ts.CallExpression): boolean;
|