@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,285 @@
|
|
|
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
|
+
const app_1 = require("@servicenow/sdk-core/runtime/app");
|
|
27
|
+
const sdk_build_core_1 = require("@servicenow/sdk-build-core");
|
|
28
|
+
const Util_1 = require("./Util");
|
|
29
|
+
const db_1 = require("@servicenow/sdk-core/runtime/db");
|
|
30
|
+
const scriptUtils_1 = require("../scripts/scriptUtils");
|
|
31
|
+
const ts = __importStar(require("ts-morph"));
|
|
32
|
+
const app_2 = require("@servicenow/sdk-core/runtime/app");
|
|
33
|
+
const ScriptTemplatePlugin_1 = require("../ScriptTemplatePlugin");
|
|
34
|
+
const sdk_project_1 = require("@servicenow/sdk-project");
|
|
35
|
+
const ExecuteOnlyTypes = new Set([
|
|
36
|
+
'client_callable_flow_object',
|
|
37
|
+
'client_callable_script_include',
|
|
38
|
+
'graphql',
|
|
39
|
+
'processor',
|
|
40
|
+
'rest_endpoint',
|
|
41
|
+
]);
|
|
42
|
+
function aclAsRecord(config) {
|
|
43
|
+
const tableConfig = config;
|
|
44
|
+
const namedConfig = config;
|
|
45
|
+
const field = String(tableConfig.field || '');
|
|
46
|
+
const name = namedConfig.name || (field ? `${tableConfig.table}.${field}` : tableConfig.table);
|
|
47
|
+
if (!name) {
|
|
48
|
+
throw new Error(`ACL of type ${config.type} and $id '${config.$id}' has no name or associated table`);
|
|
49
|
+
}
|
|
50
|
+
if (config.operation === 'execute' && !ExecuteOnlyTypes.has(config.type)) {
|
|
51
|
+
throw new Error(`ACL ${name} cannot use operation 'execute', because it is of type '${config.type}'`);
|
|
52
|
+
}
|
|
53
|
+
if (config.script && config.type === 'graphql') {
|
|
54
|
+
throw new Error(`ACL ${name} does not support scripts, because it is of type ${config.type}`);
|
|
55
|
+
}
|
|
56
|
+
if (tableConfig.applies_to && tableConfig.type !== 'record') {
|
|
57
|
+
throw new Error(`ACL ${name} cannot set applies_to unless its type is 'record'`);
|
|
58
|
+
}
|
|
59
|
+
if (tableConfig.operation === 'add_to_list' && (config.script || config.condition)) {
|
|
60
|
+
throw new Error(`ACL ${name} cannot have a script or condition due to its 'add_to_list' operation`);
|
|
61
|
+
}
|
|
62
|
+
return (0, db_1.Record)({
|
|
63
|
+
table: 'sys_security_acl',
|
|
64
|
+
$id: config.$id,
|
|
65
|
+
data: {
|
|
66
|
+
name,
|
|
67
|
+
active: config.active ?? true,
|
|
68
|
+
type: app_1.AclTypes[config.type ?? 'record'],
|
|
69
|
+
operation: app_1.AclOperations[config.operation] || config.operation || '',
|
|
70
|
+
decision_type: config.decision_type ?? 'allow',
|
|
71
|
+
description: config.description || '',
|
|
72
|
+
local_or_existing: config.local_or_existing || 'Local',
|
|
73
|
+
admin_overrides: config.admin_overrides ?? true,
|
|
74
|
+
advanced: !!config.script,
|
|
75
|
+
condition: config.condition ?? '',
|
|
76
|
+
applies_to: tableConfig.applies_to ?? '',
|
|
77
|
+
script: config.script,
|
|
78
|
+
security_attribute: (config.security_attribute && app_1.AclAttributes[config.security_attribute]) ||
|
|
79
|
+
config.security_attribute ||
|
|
80
|
+
'',
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
exports.default = (0, sdk_build_core_1.Plugin)({
|
|
85
|
+
name: 'Acl',
|
|
86
|
+
ownedTables: {
|
|
87
|
+
sys_security_acl: { diagnosticLevel: sdk_project_1.Diagnostic.Level.Warn },
|
|
88
|
+
},
|
|
89
|
+
extractors: {
|
|
90
|
+
entity: {
|
|
91
|
+
CallExpression(node, context) {
|
|
92
|
+
const result = (0, sdk_build_core_1.extractCallExpression)(app_1.Acl, 'record', node, context, (acl) => context.registerExplicitId('sys_security_acl', acl.$id));
|
|
93
|
+
if (!result.handled || !(0 in result.data)) {
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
const acl = result.data[0];
|
|
97
|
+
const scriptVal = getScript(acl, context);
|
|
98
|
+
const aclRecord = aclAsRecord(acl.getValue());
|
|
99
|
+
const m2mRoleToAcl = acl
|
|
100
|
+
.getProperty('roles')
|
|
101
|
+
?.getValue()
|
|
102
|
+
?.map((role) => {
|
|
103
|
+
const roleId = typeof role === 'string' ? role : role.$id;
|
|
104
|
+
const aclId = context.keys.registerExplicitId('sys_security_acl', aclRecord.$id);
|
|
105
|
+
const roleSysId = typeof role === 'string' ? role : context.registerExplicitId('sys_user_role', role.$id);
|
|
106
|
+
const guid = context.keys.registerCompositeId('sys_security_acl_role', {
|
|
107
|
+
sys_security_acl: aclRecord.$id,
|
|
108
|
+
sys_user_role: roleId,
|
|
109
|
+
});
|
|
110
|
+
return new sdk_build_core_1.EntityData('record', guid, sdk_build_core_1.ObjectData.fromObjectValue((0, db_1.Record)({
|
|
111
|
+
table: 'sys_security_acl_role',
|
|
112
|
+
$id: guid,
|
|
113
|
+
data: {
|
|
114
|
+
sys_security_acl: aclId,
|
|
115
|
+
sys_user_role: roleSysId,
|
|
116
|
+
},
|
|
117
|
+
}), node), node);
|
|
118
|
+
}) || [];
|
|
119
|
+
const diagnostics = performDiagnosticChecksOnSecurityAttribute(node, acl.getValue(), m2mRoleToAcl, context.mode);
|
|
120
|
+
const aclWithScript = { ...aclRecord, data: { ...aclRecord.data, script: scriptVal || '' } };
|
|
121
|
+
const aclEntityData = new sdk_build_core_1.EntityData('record', acl.getGuid(), sdk_build_core_1.ObjectData.fromObjectValue(aclWithScript, node), node);
|
|
122
|
+
return {
|
|
123
|
+
handled: true,
|
|
124
|
+
diagnostics: [...result.diagnostics, ...diagnostics],
|
|
125
|
+
data: [aclEntityData, ...m2mRoleToAcl],
|
|
126
|
+
};
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
raw: {
|
|
130
|
+
FunctionDeclaration(node, context) {
|
|
131
|
+
const info = (0, scriptUtils_1.scriptInfo)(node, context, app_1.Acl.name);
|
|
132
|
+
if (!info) {
|
|
133
|
+
return { handled: false };
|
|
134
|
+
}
|
|
135
|
+
return { handled: true, diagnostics: [], data: [info] };
|
|
136
|
+
},
|
|
137
|
+
FunctionExpression(node, context) {
|
|
138
|
+
const info = (0, scriptUtils_1.scriptInfo)(node, context, app_1.Acl.name);
|
|
139
|
+
if (!info) {
|
|
140
|
+
return { handled: false };
|
|
141
|
+
}
|
|
142
|
+
return { handled: true, diagnostics: [], data: [info] };
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
arrangers: {
|
|
147
|
+
record(document, context) {
|
|
148
|
+
if (document.data.table !== 'sys_security_acl_role') {
|
|
149
|
+
return { handled: false };
|
|
150
|
+
}
|
|
151
|
+
const aclId = document.data.data.sys_security_acl;
|
|
152
|
+
const aclDoc = context.getDocument(aclId, 'record');
|
|
153
|
+
const aclDeleted = aclDoc && aclDoc.action === 'DELETE';
|
|
154
|
+
if (aclDeleted && document.action === 'INSERT_OR_UPDATE') {
|
|
155
|
+
throw new Error(`Existing sys_security_acl_role with id ${document.guid} is referencing deleted ACL ${aclId}. This can be fixed by either deleting the sys_security_acl_role record or updating its sys_security_acl reference.`);
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
handled: true,
|
|
159
|
+
result: aclId ? { kind: 'record', guid: aclId } : undefined,
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
generators: {
|
|
164
|
+
record(document, context, linkedDocuments) {
|
|
165
|
+
const documentType = document.data?.table;
|
|
166
|
+
if (documentType === 'sys_security_acl_role') {
|
|
167
|
+
if (!document.parent) {
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
const acl = linkedDocuments.find((doc) => doc.data.table === 'sys_security_acl' &&
|
|
171
|
+
doc.guid === document.data.data.sys_security_acl);
|
|
172
|
+
return acl && acl.node ? { ...document, node: acl.node } : undefined;
|
|
173
|
+
}
|
|
174
|
+
if (documentType !== 'sys_security_acl') {
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
return (0, sdk_build_core_1.linkDocument)(document, (0, sdk_build_core_1.generateCallExpressionExportForDocument)(context, {
|
|
178
|
+
sourceFile: (0, sdk_build_core_1.getOrCreateEntitySourceFile)(context, (0, sdk_build_core_1.getSysUpdateName)(document, 'sys_security_acl')),
|
|
179
|
+
moduleSpecifier: '@servicenow/sdk/core',
|
|
180
|
+
}, app_1.Acl, { $id: document.guid }).getExpressionIfKindOrThrow(ts.SyntaxKind.CallExpression));
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
transformers: {
|
|
184
|
+
record: {
|
|
185
|
+
CallExpression(document, context) {
|
|
186
|
+
const documentType = document.data?.table;
|
|
187
|
+
const [args] = document.node.getArguments();
|
|
188
|
+
if (!ts.Node.isObjectLiteralExpression(args)) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
if (documentType === 'sys_security_acl_role') {
|
|
192
|
+
if (!document.parent) {
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
const acl2Role = document.data.data;
|
|
196
|
+
if (document.action === 'DELETE') {
|
|
197
|
+
const roleId = acl2Role.sys_user_role;
|
|
198
|
+
if (roleId) {
|
|
199
|
+
(0, Util_1.removeObjectFromArrayById)(document, 'roles', context);
|
|
200
|
+
}
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
(0, Util_1.addObjectToArrayById)(document, 'roles', acl2Role.sys_user_role, context);
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
if (document.action === 'DELETE') {
|
|
207
|
+
(0, sdk_build_core_1.removeNode)(document.node);
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
if (documentType !== 'sys_security_acl' || !document.changedData) {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
const modifiedAclData = document.changedData.data;
|
|
214
|
+
const unmodifiedAclData = document.data.data;
|
|
215
|
+
const type = reverseLookup(app_1.AclTypes, unmodifiedAclData.type);
|
|
216
|
+
const aclData = {
|
|
217
|
+
...(0, scriptUtils_1.except)(modifiedAclData, (key) => key.startsWith('sys_') ||
|
|
218
|
+
key === 'advanced' ||
|
|
219
|
+
key === 'name' ||
|
|
220
|
+
key === 'operation' ||
|
|
221
|
+
key === 'script'),
|
|
222
|
+
...getTableOrName(type, unmodifiedAclData.name),
|
|
223
|
+
security_attribute: reverseLookup(app_1.AclAttributes, unmodifiedAclData.security_attribute) ||
|
|
224
|
+
unmodifiedAclData.security_attribute,
|
|
225
|
+
operation: reverseLookup(app_1.AclOperations, unmodifiedAclData.operation) || unmodifiedAclData.operation,
|
|
226
|
+
type,
|
|
227
|
+
};
|
|
228
|
+
const { script } = modifiedAclData;
|
|
229
|
+
if (script !== undefined) {
|
|
230
|
+
(0, ScriptTemplatePlugin_1.processScript)(args, 'script', script, document.guid, 'sys_security_acl', context);
|
|
231
|
+
}
|
|
232
|
+
return (0, sdk_build_core_1.transformFunctionArguments)(document.node, app_1.Acl, aclData);
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
});
|
|
237
|
+
// security_attribute.is_localizsed ? 'Local' : 'Existing'
|
|
238
|
+
function performDiagnosticChecksOnSecurityAttribute(callExpression, aclData, roles, mode) {
|
|
239
|
+
const diagnostics = [];
|
|
240
|
+
if (roles.length < 1) {
|
|
241
|
+
const attributeRecord = aclData.security_attribute;
|
|
242
|
+
if (!aclData.security_attribute && !aclData.script && !aclData.condition) {
|
|
243
|
+
diagnostics.push(new sdk_build_core_1.FluentDiagnostic(callExpression, 'ACLs must have at least one of the following: roles, security_attribute, condition, or script', { level: mode === 'transform' ? sdk_project_1.Diagnostic.Level.Warn : sdk_project_1.Diagnostic.Level.Error }));
|
|
244
|
+
}
|
|
245
|
+
else if (attributeRecord && attributeRecord.data) {
|
|
246
|
+
if (aclData.local_or_existing === 'Existing' &&
|
|
247
|
+
(attributeRecord.data.type !== 'compound' || attributeRecord.data.is_localized)) {
|
|
248
|
+
diagnostics.push(new sdk_build_core_1.FluentDiagnostic((0, sdk_build_core_1.findObjectPropertyValue)(callExpression, 'security_attribute'), `Invalid ACL with 'Existing' sys_security_attribute: Must have a security_attribute with a type of 'compound' and is_localized set to false.`));
|
|
249
|
+
}
|
|
250
|
+
else if ((!aclData.local_or_existing || aclData.local_or_existing === 'Local') &&
|
|
251
|
+
!attributeRecord.data.is_localized) {
|
|
252
|
+
diagnostics.push(new sdk_build_core_1.FluentDiagnostic((0, sdk_build_core_1.findObjectPropertyValue)(callExpression, 'security_attribute'), `Invalid ACL with 'Local' security_attribute: security_attribute must have is_localized set to true`));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return diagnostics;
|
|
257
|
+
}
|
|
258
|
+
function getTableOrName(type, name) {
|
|
259
|
+
if (app_2.AclNamedTypes[type]) {
|
|
260
|
+
return { name };
|
|
261
|
+
}
|
|
262
|
+
const tablePathParts = name.split('.');
|
|
263
|
+
const table = tablePathParts[0] || '';
|
|
264
|
+
const field = tablePathParts[1] || '';
|
|
265
|
+
return { table, field };
|
|
266
|
+
}
|
|
267
|
+
// TODO: The casting and type guards in this function are a bit of a mess and prone to errors.
|
|
268
|
+
function getScript(acl, context) {
|
|
269
|
+
const scriptData = acl.getProperty('script')?.getValue();
|
|
270
|
+
let scriptVal;
|
|
271
|
+
if (scriptData && scriptData.filePath) {
|
|
272
|
+
const { filePath, functionName, isDefault } = scriptData;
|
|
273
|
+
scriptVal = (0, scriptUtils_1.buildScriptImport)(filePath, functionName, isDefault, context, (funcName) => `answer = ${funcName}(current)\n`);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
scriptVal = scriptData;
|
|
277
|
+
}
|
|
278
|
+
return scriptVal;
|
|
279
|
+
}
|
|
280
|
+
function reverseLookup(obj, sysId) {
|
|
281
|
+
return (Object.entries(obj)
|
|
282
|
+
.filter(([_, id]) => id === sysId)
|
|
283
|
+
.map(([key]) => key)[0] || '');
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=AclPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AclPlugin.js","sourceRoot":"","sources":["../../src/aclAndRole/AclPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { RoleConfig } from '@servicenow/sdk-core/runtime/app';
|
|
2
|
+
import { Context, EntityData } from '@servicenow/sdk-build-core';
|
|
3
|
+
import { SyntaxKind, Node } from 'ts-morph';
|
|
4
|
+
import { Diagnostic } from '@servicenow/sdk-project';
|
|
5
|
+
declare const _default: {
|
|
6
|
+
readonly name: "Role";
|
|
7
|
+
readonly ownedTables: {
|
|
8
|
+
readonly sys_user_role: {
|
|
9
|
+
readonly diagnosticLevel: Diagnostic.Level.Error;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
readonly extractors: {
|
|
13
|
+
readonly entity: {
|
|
14
|
+
readonly CallExpression: (node: import("ts-morph").CallExpression<import("ts-morph").ts.CallExpression>, context: Context) => import("@servicenow/sdk-build-core").ExtractionResult<EntityData<RoleConfig>>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
readonly composers: {
|
|
18
|
+
readonly entity: {
|
|
19
|
+
readonly role: (entity: EntityData<globalThis.Record<string, unknown>>, context: Context) => import("@servicenow/sdk-build-core").LinkedDocument[] | undefined;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
readonly arrangers: {
|
|
23
|
+
readonly record: (document: import("@servicenow/sdk-build-core").Document<"record">) => {
|
|
24
|
+
handled: false;
|
|
25
|
+
result?: never;
|
|
26
|
+
} | {
|
|
27
|
+
handled: true;
|
|
28
|
+
result: {
|
|
29
|
+
kind: string;
|
|
30
|
+
guid: any;
|
|
31
|
+
} | undefined;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
readonly generators: {
|
|
35
|
+
readonly record: (document: import("@servicenow/sdk-build-core").UnlinkedDocument<"record"> & import("@servicenow/sdk-build-core").Arranged, context: Context, linkedDocuments: import("@servicenow/sdk-build-core").LinkedDocument[]) => import("@servicenow/sdk-build-core").LinkedDocument<"record", import("ts-morph").CallExpression<import("ts-morph").ts.CallExpression>> | {
|
|
36
|
+
node: (import("ts-morph").CallExpression<import("ts-morph").ts.CallExpression> | Node<import("ts-morph").ts.EndOfFileToken> | import("ts-morph").TypeAliasDeclaration | import("ts-morph").TypeReferenceNode | import("ts-morph").TypeLiteralNode | import("ts-morph").PropertySignature | import("ts-morph").TupleTypeNode | import("ts-morph").FunctionExpression | import("ts-morph").FunctionDeclaration | import("ts-morph").ArrayLiteralExpression | import("ts-morph").StringLiteral | import("ts-morph").NumericLiteral | import("ts-morph").TrueLiteral | import("ts-morph").FalseLiteral | import("ts-morph").Identifier | import("ts-morph").SourceFile | import("ts-morph").VariableDeclaration | import("ts-morph").ClassDeclaration | import("ts-morph").ExportDeclaration | import("ts-morph").ObjectLiteralExpression | import("ts-morph").AsExpression | import("ts-morph").ComputedPropertyName | import("ts-morph").PropertyAssignment | import("ts-morph").ShorthandPropertyAssignment | import("ts-morph").PropertyAccessExpression<import("ts-morph").ts.PropertyAccessExpression> | import("ts-morph").NoSubstitutionTemplateLiteral | import("ts-morph").ExpressionStatement | import("ts-morph").TaggedTemplateExpression | import("ts-morph").ExportAssignment | import("ts-morph").ElementAccessExpression<import("ts-morph").ts.ElementAccessExpression> | import("ts-morph").TemplateExpression | import("ts-morph").ImportClause | import("ts-morph").ImportSpecifier | import("ts-morph").ImportDeclaration | import("ts-morph").NamedImports | import("ts-morph").VariableStatement | import("ts-morph").VariableDeclarationList | Node<import("ts-morph").ts.PlusToken> | Node<import("ts-morph").ts.ExportKeyword> | Node<import("ts-morph").ts.KeywordTypeNode<SyntaxKind.AnyKeyword>> | import("ts-morph").ModuleDeclaration | import("ts-morph").ModuleBlock | import("ts-morph").Block | import("ts-morph").ParameterDeclaration | Node<import("ts-morph").ts.EqualsGreaterThanToken> | import("ts-morph").ArrowFunction | import("ts-morph").TemplateHead | import("ts-morph").TemplateMiddle | import("ts-morph").TemplateSpan | import("ts-morph").TemplateTail | import("ts-morph").PrefixUnaryExpression | undefined) & (import("ts-morph").CallExpression<import("ts-morph").ts.CallExpression> | Node<import("ts-morph").ts.EndOfFileToken> | import("ts-morph").TypeAliasDeclaration | import("ts-morph").TypeReferenceNode | import("ts-morph").TypeLiteralNode | import("ts-morph").PropertySignature | import("ts-morph").TupleTypeNode | import("ts-morph").FunctionExpression | import("ts-morph").FunctionDeclaration | import("ts-morph").ArrayLiteralExpression | import("ts-morph").StringLiteral | import("ts-morph").NumericLiteral | import("ts-morph").TrueLiteral | import("ts-morph").FalseLiteral | import("ts-morph").Identifier | import("ts-morph").SourceFile | import("ts-morph").VariableDeclaration | import("ts-morph").ClassDeclaration | import("ts-morph").ExportDeclaration | import("ts-morph").ObjectLiteralExpression | import("ts-morph").AsExpression | import("ts-morph").ComputedPropertyName | import("ts-morph").PropertyAssignment | import("ts-morph").ShorthandPropertyAssignment | import("ts-morph").PropertyAccessExpression<import("ts-morph").ts.PropertyAccessExpression> | import("ts-morph").NoSubstitutionTemplateLiteral | import("ts-morph").ExpressionStatement | import("ts-morph").TaggedTemplateExpression | import("ts-morph").ExportAssignment | import("ts-morph").ElementAccessExpression<import("ts-morph").ts.ElementAccessExpression> | import("ts-morph").TemplateExpression | import("ts-morph").ImportClause | import("ts-morph").ImportSpecifier | import("ts-morph").ImportDeclaration | import("ts-morph").NamedImports | import("ts-morph").VariableStatement | import("ts-morph").VariableDeclarationList | Node<import("ts-morph").ts.PlusToken> | Node<import("ts-morph").ts.ExportKeyword> | Node<import("ts-morph").ts.KeywordTypeNode<SyntaxKind.AnyKeyword>> | import("ts-morph").ModuleDeclaration | import("ts-morph").ModuleBlock | import("ts-morph").Block | import("ts-morph").ParameterDeclaration | Node<import("ts-morph").ts.EqualsGreaterThanToken> | import("ts-morph").ArrowFunction | import("ts-morph").TemplateHead | import("ts-morph").TemplateMiddle | import("ts-morph").TemplateSpan | import("ts-morph").TemplateTail | import("ts-morph").PrefixUnaryExpression);
|
|
37
|
+
data: unknown;
|
|
38
|
+
kind: "record";
|
|
39
|
+
guid: string;
|
|
40
|
+
changedData?: unknown;
|
|
41
|
+
xmlData?: unknown;
|
|
42
|
+
action?: import("@servicenow/sdk-build-core").Action;
|
|
43
|
+
parent?: import("@servicenow/sdk-build-core").Document<string, import("ts-morph").CallExpression<import("ts-morph").ts.CallExpression> | Node<import("ts-morph").ts.EndOfFileToken> | import("ts-morph").TypeAliasDeclaration | import("ts-morph").TypeReferenceNode | import("ts-morph").TypeLiteralNode | import("ts-morph").PropertySignature | import("ts-morph").TupleTypeNode | import("ts-morph").FunctionExpression | import("ts-morph").FunctionDeclaration | import("ts-morph").ArrayLiteralExpression | import("ts-morph").StringLiteral | import("ts-morph").NumericLiteral | import("ts-morph").TrueLiteral | import("ts-morph").FalseLiteral | import("ts-morph").Identifier | import("ts-morph").SourceFile | import("ts-morph").VariableDeclaration | import("ts-morph").ClassDeclaration | import("ts-morph").ExportDeclaration | import("ts-morph").ObjectLiteralExpression | import("ts-morph").AsExpression | import("ts-morph").ComputedPropertyName | import("ts-morph").PropertyAssignment | import("ts-morph").ShorthandPropertyAssignment | import("ts-morph").PropertyAccessExpression<import("ts-morph").ts.PropertyAccessExpression> | import("ts-morph").NoSubstitutionTemplateLiteral | import("ts-morph").ExpressionStatement | import("ts-morph").TaggedTemplateExpression | import("ts-morph").ExportAssignment | import("ts-morph").ElementAccessExpression<import("ts-morph").ts.ElementAccessExpression> | import("ts-morph").TemplateExpression | import("ts-morph").ImportClause | import("ts-morph").ImportSpecifier | import("ts-morph").ImportDeclaration | import("ts-morph").NamedImports | import("ts-morph").VariableStatement | import("ts-morph").VariableDeclarationList | Node<import("ts-morph").ts.PlusToken> | Node<import("ts-morph").ts.ExportKeyword> | Node<import("ts-morph").ts.KeywordTypeNode<SyntaxKind.AnyKeyword>> | import("ts-morph").ModuleDeclaration | import("ts-morph").ModuleBlock | import("ts-morph").Block | import("ts-morph").ParameterDeclaration | Node<import("ts-morph").ts.EqualsGreaterThanToken> | import("ts-morph").ArrowFunction | import("ts-morph").TemplateHead | import("ts-morph").TemplateMiddle | import("ts-morph").TemplateSpan | import("ts-morph").TemplateTail | import("ts-morph").PrefixUnaryExpression> & {
|
|
44
|
+
entity?: EntityData;
|
|
45
|
+
node: import("ts-morph").CallExpression<import("ts-morph").ts.CallExpression> | Node<import("ts-morph").ts.EndOfFileToken> | import("ts-morph").TypeAliasDeclaration | import("ts-morph").TypeReferenceNode | import("ts-morph").TypeLiteralNode | import("ts-morph").PropertySignature | import("ts-morph").TupleTypeNode | import("ts-morph").FunctionExpression | import("ts-morph").FunctionDeclaration | import("ts-morph").ArrayLiteralExpression | import("ts-morph").StringLiteral | import("ts-morph").NumericLiteral | import("ts-morph").TrueLiteral | import("ts-morph").FalseLiteral | import("ts-morph").Identifier | import("ts-morph").SourceFile | import("ts-morph").VariableDeclaration | import("ts-morph").ClassDeclaration | import("ts-morph").ExportDeclaration | import("ts-morph").ObjectLiteralExpression | import("ts-morph").AsExpression | import("ts-morph").ComputedPropertyName | import("ts-morph").PropertyAssignment | import("ts-morph").ShorthandPropertyAssignment | import("ts-morph").PropertyAccessExpression<import("ts-morph").ts.PropertyAccessExpression> | import("ts-morph").NoSubstitutionTemplateLiteral | import("ts-morph").ExpressionStatement | import("ts-morph").TaggedTemplateExpression | import("ts-morph").ExportAssignment | import("ts-morph").ElementAccessExpression<import("ts-morph").ts.ElementAccessExpression> | import("ts-morph").TemplateExpression | import("ts-morph").ImportClause | import("ts-morph").ImportSpecifier | import("ts-morph").ImportDeclaration | import("ts-morph").NamedImports | import("ts-morph").VariableStatement | import("ts-morph").VariableDeclarationList | Node<import("ts-morph").ts.PlusToken> | Node<import("ts-morph").ts.ExportKeyword> | Node<import("ts-morph").ts.KeywordTypeNode<SyntaxKind.AnyKeyword>> | import("ts-morph").ModuleDeclaration | import("ts-morph").ModuleBlock | import("ts-morph").Block | import("ts-morph").ParameterDeclaration | Node<import("ts-morph").ts.EqualsGreaterThanToken> | import("ts-morph").ArrowFunction | import("ts-morph").TemplateHead | import("ts-morph").TemplateMiddle | import("ts-morph").TemplateSpan | import("ts-morph").TemplateTail | import("ts-morph").PrefixUnaryExpression;
|
|
46
|
+
} & import("@servicenow/sdk-build-core").Arranged<"resolved">;
|
|
47
|
+
} | undefined;
|
|
48
|
+
};
|
|
49
|
+
readonly transformers: {
|
|
50
|
+
readonly record: {
|
|
51
|
+
readonly CallExpression: (document: import("@servicenow/sdk-build-core").Document<any, import("ts-morph").CallExpression<import("ts-morph").ts.CallExpression>> & {
|
|
52
|
+
entity?: EntityData;
|
|
53
|
+
node: import("ts-morph").CallExpression<import("ts-morph").ts.CallExpression>;
|
|
54
|
+
} & import("@servicenow/sdk-build-core").Arranged, context: Context) => boolean;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export default _default;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const app_1 = require("@servicenow/sdk-core/runtime/app");
|
|
4
|
+
const sdk_build_core_1 = require("@servicenow/sdk-build-core");
|
|
5
|
+
const db_1 = require("@servicenow/sdk-core/runtime/db");
|
|
6
|
+
const sdk_build_core_2 = require("@servicenow/sdk-build-core");
|
|
7
|
+
const Util_1 = require("./Util");
|
|
8
|
+
const ts_morph_1 = require("ts-morph");
|
|
9
|
+
const scriptUtils_1 = require("../scripts/scriptUtils");
|
|
10
|
+
const RecordPlugin_1 = require("../db/RecordPlugin");
|
|
11
|
+
const sdk_project_1 = require("@servicenow/sdk-project");
|
|
12
|
+
function mapRoleToRole(context, roleId, containedRoleId) {
|
|
13
|
+
const m2mId = context.keys.registerCompositeId('sys_user_role_contains', {
|
|
14
|
+
role: roleId,
|
|
15
|
+
contains: containedRoleId,
|
|
16
|
+
});
|
|
17
|
+
return (0, db_1.Record)({
|
|
18
|
+
table: 'sys_user_role_contains',
|
|
19
|
+
$id: m2mId,
|
|
20
|
+
data: {
|
|
21
|
+
contains: containedRoleId,
|
|
22
|
+
role: roleId,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
exports.default = (0, sdk_build_core_1.Plugin)({
|
|
27
|
+
name: 'Role',
|
|
28
|
+
ownedTables: {
|
|
29
|
+
sys_user_role: { diagnosticLevel: sdk_project_1.Diagnostic.Level.Error },
|
|
30
|
+
},
|
|
31
|
+
extractors: {
|
|
32
|
+
entity: {
|
|
33
|
+
CallExpression: (node, context) => {
|
|
34
|
+
const result = (0, sdk_build_core_1.extractCallExpression)(app_1.Role, 'role', node, context, ({ $id }) => context.registerExplicitId('sys_user_role', $id));
|
|
35
|
+
if (!result.handled || !(0 in result.data)) {
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
const role = result.data[0];
|
|
39
|
+
const diagnostics = result.diagnostics;
|
|
40
|
+
const scope = context.app?.config?.scope;
|
|
41
|
+
const name = role.getProperty('name').getValue();
|
|
42
|
+
if (!name.startsWith(`${scope}.`)) {
|
|
43
|
+
const nameValue = (0, sdk_build_core_1.findObjectPropertyValue)(node, 'name');
|
|
44
|
+
diagnostics.push(new sdk_build_core_1.FluentDiagnostic(nameValue, `Role name must begin with '${scope}.'`));
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
handled: true,
|
|
48
|
+
diagnostics,
|
|
49
|
+
data: [role],
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
composers: {
|
|
55
|
+
entity: {
|
|
56
|
+
role(entity, context) {
|
|
57
|
+
const scope = context.app?.config?.scope;
|
|
58
|
+
const guid = entity.getGuid();
|
|
59
|
+
const node = entity.getNode();
|
|
60
|
+
const role = app_1.roleSchema.safeParse(entity.getValue());
|
|
61
|
+
if (!role.success) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const { $id: _, name, contains_roles, ...rest } = role.data;
|
|
65
|
+
const roleToRoles = [];
|
|
66
|
+
const containsRoles = entity.getProperty('contains_roles');
|
|
67
|
+
if (sdk_build_core_1.Data.isArray(containsRoles)) {
|
|
68
|
+
for (const containedRole of containsRoles.getElements()) {
|
|
69
|
+
const containedRoleSysId = sdk_build_core_1.Data.isEntity(containedRole)
|
|
70
|
+
? containedRole.getGuid()
|
|
71
|
+
: containedRole.getValue(); // Should be a string
|
|
72
|
+
roleToRoles.push(mapRoleToRole(context, guid, containedRoleSysId));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const suffix = name.replace(new RegExp(`^${scope}\\.`), '');
|
|
76
|
+
const roleRecord = (0, db_1.Record)({
|
|
77
|
+
table: 'sys_user_role',
|
|
78
|
+
$id: guid,
|
|
79
|
+
data: {
|
|
80
|
+
name,
|
|
81
|
+
suffix,
|
|
82
|
+
...rest,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
return context.composeEntities([roleRecord, ...roleToRoles].map((r) => new sdk_build_core_1.EntityData('record', r.$id.toString(), sdk_build_core_1.ObjectData.fromObjectValue(r, node), node)), [RecordPlugin_1.RecordPlugin]);
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
arrangers: {
|
|
90
|
+
record(document) {
|
|
91
|
+
if (document.data.table !== 'sys_user_role_contains') {
|
|
92
|
+
return { handled: false };
|
|
93
|
+
}
|
|
94
|
+
const roleId = document.data.data.role;
|
|
95
|
+
return {
|
|
96
|
+
handled: true,
|
|
97
|
+
result: roleId ? { kind: 'record', guid: roleId } : undefined,
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
generators: {
|
|
102
|
+
record(document, context, linkedDocuments) {
|
|
103
|
+
const documentType = document.data?.table;
|
|
104
|
+
if (documentType === 'sys_user_role_contains') {
|
|
105
|
+
const role = linkedDocuments.find((doc) => doc.data.table === 'sys_user_role' &&
|
|
106
|
+
doc.guid === document.data.data.role);
|
|
107
|
+
return role && role.node ? { ...document, node: role.node } : undefined;
|
|
108
|
+
}
|
|
109
|
+
if (documentType !== 'sys_user_role') {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
return (0, sdk_build_core_1.linkDocument)(document, (0, sdk_build_core_2.generateCallExpressionExportForDocument)(context, {
|
|
113
|
+
sourceFile: (0, sdk_build_core_2.getOrCreateEntitySourceFile)(context, (0, sdk_build_core_2.getSysUpdateName)(document, 'sys_user_role')),
|
|
114
|
+
moduleSpecifier: '@servicenow/sdk/core',
|
|
115
|
+
}, app_1.Role, { $id: document.guid }).getExpressionIfKindOrThrow(ts_morph_1.SyntaxKind.CallExpression));
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
transformers: {
|
|
119
|
+
record: {
|
|
120
|
+
CallExpression(document, context) {
|
|
121
|
+
const documentType = document.data?.table;
|
|
122
|
+
if (documentType === 'sys_user_role_contains') {
|
|
123
|
+
const [args] = document.node.getArguments();
|
|
124
|
+
if (!ts_morph_1.Node.isObjectLiteralExpression(args) || !document.parent) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
if (document.action === 'DELETE') {
|
|
128
|
+
(0, Util_1.removeObjectFromArrayById)(document, 'contains_roles', context);
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
const m2mData = document.data.data;
|
|
132
|
+
(0, Util_1.addObjectToArrayById)(document, 'contains_roles', m2mData.contains, context);
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
if (documentType !== 'sys_user_role') {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
if (document.action === 'DELETE') {
|
|
139
|
+
(0, sdk_build_core_2.removeNode)(document.node);
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
const rawRoleData = document.changedData.data;
|
|
143
|
+
const roleData = (0, scriptUtils_1.except)(rawRoleData, (key) => key.startsWith('sys_') ||
|
|
144
|
+
key === 'requires_subscription' ||
|
|
145
|
+
key === 'suffix' ||
|
|
146
|
+
key === 'includes_roles');
|
|
147
|
+
return (0, sdk_build_core_2.transformFunctionArguments)(document.node, app_1.Role, roleData);
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=RolePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RolePlugin.js","sourceRoot":"","sources":["../../src/aclAndRole/RolePlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Document, Context } from '@servicenow/sdk-build-core';
|
|
2
|
+
export declare function addObjectToArrayById(document: Document, name: string, roleId: string, context: Context): void;
|
|
3
|
+
export declare function removeObjectFromArrayById(document: Document, name: string, context: Context): void;
|