@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.
Files changed (359) hide show
  1. package/dist/acl-plugin.d.ts +19 -0
  2. package/dist/acl-plugin.js +210 -0
  3. package/dist/acl-plugin.js.map +1 -0
  4. package/dist/application-menu-plugin.d.ts +18 -0
  5. package/dist/application-menu-plugin.js +104 -0
  6. package/dist/application-menu-plugin.js.map +1 -0
  7. package/dist/arrow-function-plugin.d.ts +16 -0
  8. package/dist/arrow-function-plugin.js +107 -0
  9. package/dist/arrow-function-plugin.js.map +1 -0
  10. package/dist/atf/step-configs.d.ts +37 -0
  11. package/dist/atf/step-configs.js +2236 -0
  12. package/dist/atf/step-configs.js.map +1 -0
  13. package/dist/atf/test-plugin.d.ts +4 -0
  14. package/dist/atf/test-plugin.js +591 -0
  15. package/dist/atf/test-plugin.js.map +1 -0
  16. package/dist/basic-syntax-plugin.d.ts +2 -0
  17. package/dist/basic-syntax-plugin.js +636 -0
  18. package/dist/basic-syntax-plugin.js.map +1 -0
  19. package/dist/business-rule-plugin.d.ts +3 -0
  20. package/dist/business-rule-plugin.js +205 -0
  21. package/dist/business-rule-plugin.js.map +1 -0
  22. package/dist/call-expression-plugin.d.ts +2 -0
  23. package/dist/call-expression-plugin.js +175 -0
  24. package/dist/call-expression-plugin.js.map +1 -0
  25. package/dist/client-script-plugin.d.ts +29 -0
  26. package/dist/client-script-plugin.js +157 -0
  27. package/dist/client-script-plugin.js.map +1 -0
  28. package/dist/column/column-helper.d.ts +12 -0
  29. package/dist/column/column-helper.js +84 -0
  30. package/dist/column/column-helper.js.map +1 -0
  31. package/dist/column/column-to-record.d.ts +3 -0
  32. package/dist/column/column-to-record.js +105 -0
  33. package/dist/column/column-to-record.js.map +1 -0
  34. package/dist/column-plugin.d.ts +8 -0
  35. package/dist/column-plugin.js +453 -0
  36. package/dist/column-plugin.js.map +1 -0
  37. package/dist/cross-scope-privilege-plugin.d.ts +15 -0
  38. package/dist/cross-scope-privilege-plugin.js +82 -0
  39. package/dist/cross-scope-privilege-plugin.js.map +1 -0
  40. package/dist/html-import-plugin.d.ts +2 -0
  41. package/dist/html-import-plugin.js +72 -0
  42. package/dist/html-import-plugin.js.map +1 -0
  43. package/dist/index.d.ts +37 -21
  44. package/dist/index.js +40 -45
  45. package/dist/index.js.map +1 -1
  46. package/dist/json-plugin.d.ts +15 -0
  47. package/dist/json-plugin.js +104 -0
  48. package/dist/json-plugin.js.map +1 -0
  49. package/dist/list-plugin.d.ts +2 -0
  50. package/dist/list-plugin.js +191 -0
  51. package/dist/list-plugin.js.map +1 -0
  52. package/dist/now-config-plugin.d.ts +4 -0
  53. package/dist/now-config-plugin.js +154 -0
  54. package/dist/now-config-plugin.js.map +1 -0
  55. package/dist/now-id-plugin.d.ts +11 -0
  56. package/dist/now-id-plugin.js +71 -0
  57. package/dist/now-id-plugin.js.map +1 -0
  58. package/dist/now-include-plugin.d.ts +16 -0
  59. package/dist/now-include-plugin.js +118 -0
  60. package/dist/now-include-plugin.js.map +1 -0
  61. package/dist/now-ref-plugin.d.ts +2 -0
  62. package/dist/now-ref-plugin.js +43 -0
  63. package/dist/now-ref-plugin.js.map +1 -0
  64. package/dist/now-unresolved-plugin.d.ts +2 -0
  65. package/dist/now-unresolved-plugin.js +32 -0
  66. package/dist/now-unresolved-plugin.js.map +1 -0
  67. package/dist/package-json-plugin.d.ts +2 -0
  68. package/dist/package-json-plugin.js +70 -0
  69. package/dist/package-json-plugin.js.map +1 -0
  70. package/dist/property-plugin.d.ts +2 -0
  71. package/dist/property-plugin.js +105 -0
  72. package/dist/property-plugin.js.map +1 -0
  73. package/dist/record-plugin.d.ts +43 -0
  74. package/dist/record-plugin.js +147 -0
  75. package/dist/record-plugin.js.map +1 -0
  76. package/dist/repack/index.d.ts +1 -0
  77. package/dist/repack/index.js +10 -2
  78. package/dist/repack/index.js.map +1 -1
  79. package/dist/repack/lint/Rules.d.ts +1 -1
  80. package/dist/repack/lint/Rules.js +7 -3
  81. package/dist/repack/lint/Rules.js.map +1 -1
  82. package/dist/repack/lint/index.js +1 -1
  83. package/dist/rest-api-plugin.d.ts +2 -0
  84. package/dist/rest-api-plugin.js +469 -0
  85. package/dist/rest-api-plugin.js.map +1 -0
  86. package/dist/role-plugin.d.ts +2 -0
  87. package/dist/role-plugin.js +117 -0
  88. package/dist/role-plugin.js.map +1 -0
  89. package/dist/script-action-plugin.d.ts +2 -0
  90. package/dist/script-action-plugin.js +62 -0
  91. package/dist/script-action-plugin.js.map +1 -0
  92. package/dist/script-include-plugin.d.ts +2 -0
  93. package/dist/script-include-plugin.js +102 -0
  94. package/dist/script-include-plugin.js.map +1 -0
  95. package/dist/server-module-plugin/index.d.ts +14 -0
  96. package/dist/server-module-plugin/index.js +378 -0
  97. package/dist/server-module-plugin/index.js.map +1 -0
  98. package/dist/server-module-plugin/sbom-builder.d.ts +45 -0
  99. package/dist/server-module-plugin/sbom-builder.js +179 -0
  100. package/dist/server-module-plugin/sbom-builder.js.map +1 -0
  101. package/dist/service-portal/angular-provider-plugin.d.ts +2 -0
  102. package/dist/service-portal/angular-provider-plugin.js +78 -0
  103. package/dist/service-portal/angular-provider-plugin.js.map +1 -0
  104. package/dist/service-portal/dependency-plugin.d.ts +2 -0
  105. package/dist/service-portal/dependency-plugin.js +235 -0
  106. package/dist/service-portal/dependency-plugin.js.map +1 -0
  107. package/dist/service-portal/widget-plugin.d.ts +6 -0
  108. package/dist/service-portal/widget-plugin.js +230 -0
  109. package/dist/service-portal/widget-plugin.js.map +1 -0
  110. package/dist/static-content-plugin.d.ts +2 -0
  111. package/dist/static-content-plugin.js +272 -0
  112. package/dist/static-content-plugin.js.map +1 -0
  113. package/dist/table-plugin.d.ts +3 -0
  114. package/dist/table-plugin.js +1324 -0
  115. package/dist/table-plugin.js.map +1 -0
  116. package/dist/ui-action-plugin.d.ts +2 -0
  117. package/dist/ui-action-plugin.js +291 -0
  118. package/dist/ui-action-plugin.js.map +1 -0
  119. package/dist/ui-page-plugin.d.ts +2 -0
  120. package/dist/ui-page-plugin.js +165 -0
  121. package/dist/ui-page-plugin.js.map +1 -0
  122. package/dist/user-preference-plugin.d.ts +15 -0
  123. package/dist/user-preference-plugin.js +63 -0
  124. package/dist/user-preference-plugin.js.map +1 -0
  125. package/dist/utils.d.ts +17 -0
  126. package/dist/utils.js +72 -0
  127. package/dist/utils.js.map +1 -0
  128. package/dist/view-plugin.d.ts +2 -0
  129. package/dist/view-plugin.js +45 -0
  130. package/dist/view-plugin.js.map +1 -0
  131. package/package.json +17 -13
  132. package/src/acl-plugin.ts +256 -0
  133. package/src/application-menu-plugin.ts +109 -0
  134. package/src/arrow-function-plugin.ts +127 -0
  135. package/src/atf/step-configs.ts +2284 -0
  136. package/src/atf/test-plugin.ts +728 -0
  137. package/src/basic-syntax-plugin.ts +729 -0
  138. package/src/business-rule-plugin.ts +266 -0
  139. package/src/call-expression-plugin.ts +202 -0
  140. package/src/client-script-plugin.ts +170 -0
  141. package/src/column/column-helper.ts +119 -0
  142. package/src/column/column-to-record.ts +131 -0
  143. package/src/column-plugin.ts +506 -0
  144. package/src/cross-scope-privilege-plugin.ts +82 -0
  145. package/src/html-import-plugin.ts +79 -0
  146. package/src/index.ts +39 -21
  147. package/src/json-plugin.ts +128 -0
  148. package/src/list-plugin.ts +222 -0
  149. package/src/now-config-plugin.ts +194 -0
  150. package/src/now-id-plugin.ts +78 -0
  151. package/src/now-include-plugin.ts +140 -0
  152. package/src/now-ref-plugin.ts +48 -0
  153. package/src/now-unresolved-plugin.ts +30 -0
  154. package/src/package-json-plugin.ts +87 -0
  155. package/src/property-plugin.ts +118 -0
  156. package/src/record-plugin.ts +171 -0
  157. package/src/repack/index.ts +10 -1
  158. package/src/repack/lint/Rules.ts +5 -4
  159. package/src/repack/lint/index.ts +1 -1
  160. package/src/rest-api-plugin.ts +651 -0
  161. package/src/role-plugin.ts +128 -0
  162. package/src/script-action-plugin.ts +63 -0
  163. package/src/script-include-plugin.ts +110 -0
  164. package/src/server-module-plugin/index.ts +470 -0
  165. package/src/server-module-plugin/sbom-builder.ts +183 -0
  166. package/src/service-portal/angular-provider-plugin.ts +83 -0
  167. package/src/service-portal/dependency-plugin.ts +284 -0
  168. package/src/service-portal/widget-plugin.ts +263 -0
  169. package/src/static-content-plugin.ts +254 -0
  170. package/src/table-plugin.ts +1698 -0
  171. package/src/ui-action-plugin.ts +324 -0
  172. package/src/ui-page-plugin.ts +168 -0
  173. package/src/user-preference-plugin.ts +62 -0
  174. package/src/utils.ts +69 -0
  175. package/src/view-plugin.ts +46 -0
  176. package/dist/AttachmentPlugin.d.ts +0 -254
  177. package/dist/AttachmentPlugin.js +0 -220
  178. package/dist/AttachmentPlugin.js.map +0 -1
  179. package/dist/BusinessRulePlugin.d.ts +0 -30
  180. package/dist/BusinessRulePlugin.js +0 -149
  181. package/dist/BusinessRulePlugin.js.map +0 -1
  182. package/dist/CrossScopePrivilegePlugin.d.ts +0 -35
  183. package/dist/CrossScopePrivilegePlugin.js +0 -80
  184. package/dist/CrossScopePrivilegePlugin.js.map +0 -1
  185. package/dist/DefaultPlugin.d.ts +0 -86
  186. package/dist/DefaultPlugin.js +0 -226
  187. package/dist/DefaultPlugin.js.map +0 -1
  188. package/dist/HtmlTemplatePlugin.d.ts +0 -21
  189. package/dist/HtmlTemplatePlugin.js +0 -29
  190. package/dist/HtmlTemplatePlugin.js.map +0 -1
  191. package/dist/IdPlugin.d.ts +0 -28
  192. package/dist/IdPlugin.js +0 -68
  193. package/dist/IdPlugin.js.map +0 -1
  194. package/dist/IncludePlugin.d.ts +0 -34
  195. package/dist/IncludePlugin.js +0 -155
  196. package/dist/IncludePlugin.js.map +0 -1
  197. package/dist/JsonPlugin.d.ts +0 -28
  198. package/dist/JsonPlugin.js +0 -69
  199. package/dist/JsonPlugin.js.map +0 -1
  200. package/dist/ListPlugin.d.ts +0 -93
  201. package/dist/ListPlugin.js +0 -456
  202. package/dist/ListPlugin.js.map +0 -1
  203. package/dist/NowConfigPlugin.d.ts +0 -45
  204. package/dist/NowConfigPlugin.js +0 -64
  205. package/dist/NowConfigPlugin.js.map +0 -1
  206. package/dist/PackageJsonPlugin.d.ts +0 -34
  207. package/dist/PackageJsonPlugin.js +0 -63
  208. package/dist/PackageJsonPlugin.js.map +0 -1
  209. package/dist/PropertyPlugin.d.ts +0 -51
  210. package/dist/PropertyPlugin.js +0 -181
  211. package/dist/PropertyPlugin.js.map +0 -1
  212. package/dist/ScriptTemplatePlugin.d.ts +0 -13
  213. package/dist/ScriptTemplatePlugin.js +0 -55
  214. package/dist/ScriptTemplatePlugin.js.map +0 -1
  215. package/dist/ServerModulePlugin.d.ts +0 -75
  216. package/dist/ServerModulePlugin.js +0 -368
  217. package/dist/ServerModulePlugin.js.map +0 -1
  218. package/dist/UserPreferencePlugin.d.ts +0 -19
  219. package/dist/UserPreferencePlugin.js +0 -32
  220. package/dist/UserPreferencePlugin.js.map +0 -1
  221. package/dist/aclAndRole/AclPlugin.d.ts +0 -82
  222. package/dist/aclAndRole/AclPlugin.js +0 -262
  223. package/dist/aclAndRole/AclPlugin.js.map +0 -1
  224. package/dist/aclAndRole/RolePlugin.d.ts +0 -66
  225. package/dist/aclAndRole/RolePlugin.js +0 -179
  226. package/dist/aclAndRole/RolePlugin.js.map +0 -1
  227. package/dist/aclAndRole/Util.d.ts +0 -3
  228. package/dist/aclAndRole/Util.js +0 -90
  229. package/dist/aclAndRole/Util.js.map +0 -1
  230. package/dist/app/ApplicationMenuPlugin.d.ts +0 -34
  231. package/dist/app/ApplicationMenuPlugin.js +0 -112
  232. package/dist/app/ApplicationMenuPlugin.js.map +0 -1
  233. package/dist/db/ColumnPlugins.d.ts +0 -750
  234. package/dist/db/ColumnPlugins.js +0 -114
  235. package/dist/db/ColumnPlugins.js.map +0 -1
  236. package/dist/db/DBUtils.d.ts +0 -2
  237. package/dist/db/DBUtils.js +0 -27
  238. package/dist/db/DBUtils.js.map +0 -1
  239. package/dist/db/DocumentationPlugin.d.ts +0 -67
  240. package/dist/db/DocumentationPlugin.js +0 -258
  241. package/dist/db/DocumentationPlugin.js.map +0 -1
  242. package/dist/db/LicensingPlugin.d.ts +0 -60
  243. package/dist/db/LicensingPlugin.js +0 -117
  244. package/dist/db/LicensingPlugin.js.map +0 -1
  245. package/dist/db/RecordPlugin.d.ts +0 -133
  246. package/dist/db/RecordPlugin.js +0 -337
  247. package/dist/db/RecordPlugin.js.map +0 -1
  248. package/dist/db/TablePlugin.d.ts +0 -231
  249. package/dist/db/TablePlugin.js +0 -1628
  250. package/dist/db/TablePlugin.js.map +0 -1
  251. package/dist/db/index.d.ts +0 -6
  252. package/dist/db/index.js +0 -32
  253. package/dist/db/index.js.map +0 -1
  254. package/dist/scriptedRESTAPI/RESTDeserializationUtils.d.ts +0 -10
  255. package/dist/scriptedRESTAPI/RESTDeserializationUtils.js +0 -373
  256. package/dist/scriptedRESTAPI/RESTDeserializationUtils.js.map +0 -1
  257. package/dist/scriptedRESTAPI/RESTSerializationUtils.d.ts +0 -13
  258. package/dist/scriptedRESTAPI/RESTSerializationUtils.js +0 -177
  259. package/dist/scriptedRESTAPI/RESTSerializationUtils.js.map +0 -1
  260. package/dist/scriptedRESTAPI/RestApiPlugin.d.ts +0 -81
  261. package/dist/scriptedRESTAPI/RestApiPlugin.js +0 -345
  262. package/dist/scriptedRESTAPI/RestApiPlugin.js.map +0 -1
  263. package/dist/scriptedRESTAPI/RestSchemaUtils.d.ts +0 -190
  264. package/dist/scriptedRESTAPI/RestSchemaUtils.js +0 -53
  265. package/dist/scriptedRESTAPI/RestSchemaUtils.js.map +0 -1
  266. package/dist/scriptedRESTAPI/RestUtils.d.ts +0 -69
  267. package/dist/scriptedRESTAPI/RestUtils.js +0 -497
  268. package/dist/scriptedRESTAPI/RestUtils.js.map +0 -1
  269. package/dist/scripts/ClientScriptPlugin.d.ts +0 -64
  270. package/dist/scripts/ClientScriptPlugin.js +0 -170
  271. package/dist/scripts/ClientScriptPlugin.js.map +0 -1
  272. package/dist/scripts/scriptUtils.d.ts +0 -1
  273. package/dist/scripts/scriptUtils.js +0 -9
  274. package/dist/scripts/scriptUtils.js.map +0 -1
  275. package/dist/uxf/ExperiencePlugin.d.ts +0 -45
  276. package/dist/uxf/ExperiencePlugin.js +0 -61
  277. package/dist/uxf/ExperiencePlugin.js.map +0 -1
  278. package/dist/uxf/RoutesPlugin.d.ts +0 -29
  279. package/dist/uxf/RoutesPlugin.js +0 -181
  280. package/dist/uxf/RoutesPlugin.js.map +0 -1
  281. package/dist/uxf/UxfFormulaParser/cleanUxValue.d.ts +0 -4
  282. package/dist/uxf/UxfFormulaParser/cleanUxValue.js +0 -65
  283. package/dist/uxf/UxfFormulaParser/cleanUxValue.js.map +0 -1
  284. package/dist/uxf/UxfFormulaParser/grammerParser/api.d.ts +0 -189
  285. package/dist/uxf/UxfFormulaParser/grammerParser/api.js +0 -158
  286. package/dist/uxf/UxfFormulaParser/grammerParser/api.js.map +0 -1
  287. package/dist/uxf/UxfFormulaParser/grammerParser/clientTransformMap.d.ts +0 -13
  288. package/dist/uxf/UxfFormulaParser/grammerParser/clientTransformMap.js +0 -604
  289. package/dist/uxf/UxfFormulaParser/grammerParser/clientTransformMap.js.map +0 -1
  290. package/dist/uxf/UxfFormulaParser/grammerParser/grammarParser.d.ts +0 -12
  291. package/dist/uxf/UxfFormulaParser/grammerParser/grammarParser.js +0 -551
  292. package/dist/uxf/UxfFormulaParser/grammerParser/grammarParser.js.map +0 -1
  293. package/dist/uxf/UxfFormulaParser/grammerParser/spanHelpers.d.ts +0 -31
  294. package/dist/uxf/UxfFormulaParser/grammerParser/spanHelpers.js +0 -64
  295. package/dist/uxf/UxfFormulaParser/grammerParser/spanHelpers.js.map +0 -1
  296. package/dist/uxf/UxfFormulaParser/index.d.ts +0 -3
  297. package/dist/uxf/UxfFormulaParser/index.js +0 -11
  298. package/dist/uxf/UxfFormulaParser/index.js.map +0 -1
  299. package/dist/uxf/UxfFormulaParser/parser.d.ts +0 -8
  300. package/dist/uxf/UxfFormulaParser/parser.js +0 -87
  301. package/dist/uxf/UxfFormulaParser/parser.js.map +0 -1
  302. package/dist/uxf/UxfFormulaParser/utils/getErrorMsg.d.ts +0 -8
  303. package/dist/uxf/UxfFormulaParser/utils/getErrorMsg.js +0 -17
  304. package/dist/uxf/UxfFormulaParser/utils/getErrorMsg.js.map +0 -1
  305. package/dist/uxf/constants.d.ts +0 -2
  306. package/dist/uxf/constants.js +0 -8
  307. package/dist/uxf/constants.js.map +0 -1
  308. package/dist/uxf/index.d.ts +0 -2
  309. package/dist/uxf/index.js +0 -11
  310. package/dist/uxf/index.js.map +0 -1
  311. package/dist/uxf/tectonicIdGenerator.d.ts +0 -12
  312. package/dist/uxf/tectonicIdGenerator.js +0 -79
  313. package/dist/uxf/tectonicIdGenerator.js.map +0 -1
  314. package/src/AttachmentPlugin.ts +0 -268
  315. package/src/BusinessRulePlugin.ts +0 -238
  316. package/src/CrossScopePrivilegePlugin.ts +0 -115
  317. package/src/DefaultPlugin.ts +0 -288
  318. package/src/HtmlTemplatePlugin.ts +0 -31
  319. package/src/IdPlugin.ts +0 -74
  320. package/src/IncludePlugin.ts +0 -206
  321. package/src/JsonPlugin.ts +0 -76
  322. package/src/ListPlugin.ts +0 -570
  323. package/src/NowConfigPlugin.ts +0 -69
  324. package/src/PackageJsonPlugin.ts +0 -68
  325. package/src/PropertyPlugin.ts +0 -237
  326. package/src/ScriptTemplatePlugin.ts +0 -53
  327. package/src/ServerModulePlugin.ts +0 -480
  328. package/src/UserPreferencePlugin.ts +0 -45
  329. package/src/aclAndRole/AclPlugin.ts +0 -420
  330. package/src/aclAndRole/RolePlugin.ts +0 -254
  331. package/src/aclAndRole/Util.ts +0 -113
  332. package/src/app/ApplicationMenuPlugin.ts +0 -165
  333. package/src/db/ColumnPlugins.ts +0 -114
  334. package/src/db/DBUtils.ts +0 -36
  335. package/src/db/DocumentationPlugin.ts +0 -316
  336. package/src/db/LicensingPlugin.ts +0 -138
  337. package/src/db/RecordPlugin.ts +0 -459
  338. package/src/db/TablePlugin.ts +0 -2070
  339. package/src/db/index.ts +0 -6
  340. package/src/scriptedRESTAPI/RESTDeserializationUtils.ts +0 -419
  341. package/src/scriptedRESTAPI/RESTSerializationUtils.ts +0 -228
  342. package/src/scriptedRESTAPI/RestApiPlugin.ts +0 -469
  343. package/src/scriptedRESTAPI/RestSchemaUtils.ts +0 -72
  344. package/src/scriptedRESTAPI/RestUtils.ts +0 -569
  345. package/src/scripts/ClientScriptPlugin.ts +0 -257
  346. package/src/scripts/scriptUtils.ts +0 -5
  347. package/src/uxf/ExperiencePlugin.ts +0 -67
  348. package/src/uxf/RoutesPlugin.ts +0 -211
  349. package/src/uxf/UxfFormulaParser/cleanUxValue.ts +0 -73
  350. package/src/uxf/UxfFormulaParser/grammerParser/api.js +0 -166
  351. package/src/uxf/UxfFormulaParser/grammerParser/clientTransformMap.js +0 -606
  352. package/src/uxf/UxfFormulaParser/grammerParser/grammarParser.js +0 -551
  353. package/src/uxf/UxfFormulaParser/grammerParser/spanHelpers.js +0 -65
  354. package/src/uxf/UxfFormulaParser/index.ts +0 -4
  355. package/src/uxf/UxfFormulaParser/parser.ts +0 -64
  356. package/src/uxf/UxfFormulaParser/utils/getErrorMsg.ts +0 -13
  357. package/src/uxf/constants.ts +0 -4
  358. package/src/uxf/index.ts +0 -2
  359. package/src/uxf/tectonicIdGenerator.ts +0 -78
@@ -1,262 +0,0 @@
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 Util_1 = require("./Util");
6
- const util_1 = require("@servicenow/sdk-core/runtime/util");
7
- const db_1 = require("@servicenow/sdk-core/runtime/db");
8
- const scriptUtils_1 = require("../scripts/scriptUtils");
9
- const sdk_project_1 = require("@servicenow/sdk-project");
10
- const app_2 = require("@servicenow/sdk-core/runtime/app");
11
- const ScriptTemplatePlugin_1 = require("../ScriptTemplatePlugin");
12
- const sdk_project_2 = require("@servicenow/sdk-project");
13
- const ServerModulePlugin_1 = require("../ServerModulePlugin");
14
- const db_2 = require("../db");
15
- const ExecuteOnlyTypes = new Set([
16
- 'client_callable_flow_object',
17
- 'client_callable_script_include',
18
- 'graphql',
19
- 'processor',
20
- 'rest_endpoint',
21
- ]);
22
- function aclAsRecord(config) {
23
- const tableConfig = config;
24
- const namedConfig = config;
25
- const field = String(tableConfig.field || '');
26
- const name = namedConfig.name || (field ? `${tableConfig.table}.${field}` : tableConfig.table);
27
- if (!name) {
28
- throw new Error(`ACL of type ${config.type} and $id '${config.$id}' has no name or associated table`);
29
- }
30
- if (config.operation !== 'execute' && ExecuteOnlyTypes.has(config.type)) {
31
- throw new Error(`ACL ${name} must use operation 'execute', because it is of type '${config.type}'`);
32
- }
33
- if (config.script && config.type === 'graphql') {
34
- throw new Error(`ACL ${name} does not support scripts, because it is of type ${config.type}`);
35
- }
36
- if (tableConfig.applies_to && tableConfig.type !== 'record') {
37
- throw new Error(`ACL ${name} cannot set applies_to unless its type is 'record'`);
38
- }
39
- if (tableConfig.operation === 'add_to_list' && (config.script || config.condition)) {
40
- throw new Error(`ACL ${name} cannot have a script or condition due to its 'add_to_list' operation`);
41
- }
42
- return (0, db_1.Record)({
43
- table: 'sys_security_acl',
44
- $id: config.$id,
45
- data: {
46
- name,
47
- active: config.active ?? true,
48
- type: app_1.AclTypes[config.type ?? 'record'],
49
- operation: app_1.AclOperations[config.operation] || config.operation || '',
50
- decision_type: config.decision_type ?? 'allow',
51
- description: config.description || '',
52
- local_or_existing: config.local_or_existing || 'Local',
53
- admin_overrides: config.admin_overrides ?? true,
54
- advanced: !!config.script,
55
- condition: config.condition ?? '',
56
- applies_to: tableConfig.applies_to ?? '',
57
- script: config.script,
58
- security_attribute: (config.security_attribute && app_1.AclAttributes[config.security_attribute]) ||
59
- config.security_attribute ||
60
- '',
61
- ...(0, util_1.additionalProperties)(config, app_1.AclSchema),
62
- },
63
- });
64
- }
65
- exports.default = (0, sdk_build_core_1.Plugin)({
66
- name: 'Acl',
67
- ownedTables: {
68
- sys_security_acl: { diagnosticLevel: sdk_project_2.Diagnostic.Level.Warn },
69
- },
70
- extractors: {
71
- entity: {
72
- fluent: {
73
- CallExpression(node, context) {
74
- const result = (0, sdk_build_core_1.extractCallExpression)(app_1.Acl, 'record', node, context, (acl) => context.registerExplicitId('sys_security_acl', acl.$id));
75
- if (!result.handled || !result.data) {
76
- return result;
77
- }
78
- const acl = result.data;
79
- const aclRecord = aclAsRecord(acl.getValue());
80
- const scriptVal = ServerModulePlugin_1.ModuleFunctionData.getGlueCode(acl.getProperty('script'), (n) => `answer = ${n}(current)`);
81
- const m2mRoleToAcl = acl
82
- .getProperty('roles')
83
- ?.getValue(true)
84
- ?.map((role) => {
85
- const roleId = typeof role === 'string' ? role : role.$id;
86
- const roleSysId = typeof role === 'string'
87
- ? role
88
- : context.registerExplicitId('sys_user_role', role.$id);
89
- const guid = context.keys.registerCompositeId('sys_security_acl_role', {
90
- sys_security_acl: aclRecord.$id,
91
- sys_user_role: roleId,
92
- });
93
- return new sdk_build_core_1.EntityData('record', guid, sdk_build_core_1.ObjectData.fromObjectValue((0, db_1.Record)({
94
- table: 'sys_security_acl_role',
95
- $id: guid,
96
- data: {
97
- sys_security_acl: acl.getGuid(),
98
- sys_user_role: roleSysId,
99
- },
100
- }), node), node, acl.getInstallMethod());
101
- }) || [];
102
- const diagnostics = performDiagnosticChecksOnSecurityAttribute(node, acl.getValue(true), m2mRoleToAcl);
103
- const aclWithScript = { ...aclRecord, data: { ...aclRecord.data, script: scriptVal || '' } };
104
- const aclEntityData = new sdk_build_core_1.EntityData('record', acl.getGuid(), sdk_build_core_1.ObjectData.fromObjectValue(aclWithScript, node), node, acl.getInstallMethod());
105
- const wrapperEntity = new sdk_build_core_1.EntityData('acl', acl.getGuid(), new sdk_build_core_1.ObjectData({
106
- records: new sdk_build_core_1.ArrayData([aclEntityData, ...m2mRoleToAcl], node),
107
- }, node), node, acl.getInstallMethod(), acl.getExplicitIds());
108
- return {
109
- handled: true,
110
- diagnostics: [...result.diagnostics, ...diagnostics],
111
- data: wrapperEntity,
112
- };
113
- },
114
- },
115
- },
116
- },
117
- composers: {
118
- entity: {
119
- acl(entity, context) {
120
- return Promise.all(entity
121
- .getPropertyOrThrow('records', 'array')
122
- .getElements()
123
- .map((record) => {
124
- if (!sdk_build_core_1.Data.isEntity(record)) {
125
- throw new Error('Expected entity');
126
- }
127
- return db_2.RecordPlugin.composers.entity.record(record, context);
128
- })
129
- .flat());
130
- },
131
- },
132
- },
133
- arrangers: {
134
- record(document, context) {
135
- if (document.data.table !== 'sys_security_acl_role') {
136
- return { handled: false };
137
- }
138
- const aclId = document.data.data.sys_security_acl;
139
- const aclDoc = context.getDocument(aclId, 'record');
140
- const aclDeleted = aclDoc && aclDoc.action === 'DELETE';
141
- if (aclDeleted && document.action === 'INSERT_OR_UPDATE') {
142
- 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.`);
143
- }
144
- return {
145
- handled: true,
146
- result: aclId ? { kind: 'record', guid: aclId } : undefined,
147
- };
148
- },
149
- },
150
- generators: {
151
- record(document, context, linkedDocuments) {
152
- const documentType = document.data?.table;
153
- if (documentType === 'sys_security_acl_role') {
154
- if (!document.parent) {
155
- return undefined;
156
- }
157
- const acl = linkedDocuments.find((doc) => doc.data.table === 'sys_security_acl' &&
158
- doc.guid === document.data.data.sys_security_acl);
159
- return acl && acl.node ? { ...document, node: acl.node } : undefined;
160
- }
161
- if (documentType !== 'sys_security_acl') {
162
- return undefined;
163
- }
164
- return (0, sdk_build_core_1.linkDocument)(document, (0, sdk_build_core_1.generateCallExpressionExportForDocument)(context, {
165
- sourceFile: (0, sdk_build_core_1.getOrCreateEntitySourceFile)(context, (0, sdk_build_core_1.getSysUpdateName)(document, 'sys_security_acl')),
166
- moduleSpecifier: '@servicenow/sdk/core',
167
- }, app_1.Acl, { $id: document.guid }).getExpressionIfKindOrThrow(sdk_project_1.ts.SyntaxKind.CallExpression));
168
- },
169
- },
170
- transformers: {
171
- record: {
172
- CallExpression(document, context) {
173
- const documentType = document.data?.table;
174
- const [args] = document.node.getArguments();
175
- if (!sdk_project_1.ts.Node.isObjectLiteralExpression(args)) {
176
- return false;
177
- }
178
- if (documentType === 'sys_security_acl_role') {
179
- if (!document.parent || (0, sdk_build_core_1.getCallExpressionName)(document.node) !== app_1.Acl.name) {
180
- // Record plugin can handle this as its own entity
181
- return false;
182
- }
183
- const acl2Role = document.data.data;
184
- if (document.action === 'DELETE') {
185
- const roleId = acl2Role.sys_user_role;
186
- if (roleId) {
187
- (0, Util_1.removeObjectFromArrayById)(document, 'roles', context);
188
- }
189
- return true;
190
- }
191
- (0, Util_1.addObjectToArrayById)(document, 'roles', acl2Role.sys_user_role, context);
192
- return true;
193
- }
194
- if (document.action === 'DELETE') {
195
- (0, sdk_build_core_1.removeNode)(document.node);
196
- return true;
197
- }
198
- if (documentType !== 'sys_security_acl' || !document.changedData) {
199
- return false;
200
- }
201
- const modifiedAclData = document.changedData.data;
202
- const unmodifiedAclData = document.data.data;
203
- const type = reverseLookup(app_1.AclTypes, unmodifiedAclData.type);
204
- const aclData = {
205
- ...(0, scriptUtils_1.except)(modifiedAclData, (key) => key.startsWith('sys_') ||
206
- key === 'advanced' ||
207
- key === 'name' ||
208
- key === 'operation' ||
209
- key === 'script'),
210
- ...getTableOrName(type, unmodifiedAclData.name),
211
- security_attribute: reverseLookup(app_1.AclAttributes, unmodifiedAclData.security_attribute) ||
212
- unmodifiedAclData.security_attribute,
213
- operation: reverseLookup(app_1.AclOperations, unmodifiedAclData.operation) || unmodifiedAclData.operation,
214
- type,
215
- };
216
- const { script } = modifiedAclData;
217
- if (script !== undefined) {
218
- (0, ScriptTemplatePlugin_1.processScript)(args, 'script', script);
219
- }
220
- (0, sdk_build_core_1.transformFunctionArguments)(document.node, app_1.Acl, aclData);
221
- context.argTypesToFix.push(document.node);
222
- return true;
223
- },
224
- },
225
- },
226
- });
227
- // security_attribute.is_localizsed ? 'Local' : 'Existing'
228
- function performDiagnosticChecksOnSecurityAttribute(callExpression, aclData, roles) {
229
- const diagnostics = [];
230
- if (roles.length < 1) {
231
- const attributeRecord = aclData.security_attribute;
232
- if (!aclData.security_attribute && !aclData.script && !aclData.condition) {
233
- 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: sdk_project_2.Diagnostic.Level.Warn }));
234
- }
235
- else if (attributeRecord && attributeRecord.data) {
236
- if (aclData.local_or_existing === 'Existing' &&
237
- (attributeRecord.data.type !== 'compound' || attributeRecord.data.is_localized)) {
238
- 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.`));
239
- }
240
- else if ((!aclData.local_or_existing || aclData.local_or_existing === 'Local') &&
241
- !attributeRecord.data.is_localized) {
242
- 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`));
243
- }
244
- }
245
- }
246
- return diagnostics;
247
- }
248
- function getTableOrName(type, name) {
249
- if (app_2.AclNamedTypes[type]) {
250
- return { name };
251
- }
252
- const tablePathParts = name.split('.');
253
- const table = tablePathParts[0] || '';
254
- const field = tablePathParts[1] || '';
255
- return { table, field };
256
- }
257
- function reverseLookup(obj, sysId) {
258
- return (Object.entries(obj)
259
- .filter(([_, id]) => id === sysId)
260
- .map(([key]) => key)[0] || '');
261
- }
262
- //# sourceMappingURL=AclPlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AclPlugin.js","sourceRoot":"","sources":["../../src/aclAndRole/AclPlugin.ts"],"names":[],"mappings":"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"}
@@ -1,66 +0,0 @@
1
- import { RoleConfig } from '@servicenow/sdk-core/runtime/app';
2
- import { Context, LinkedDocument, ArrayData } from '@servicenow/sdk-build-core';
3
- import { Diagnostic, ts } from '@servicenow/sdk-project';
4
- export declare function getRolesString(roles: ArrayData<unknown[]>): string;
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 fluent: {
15
- readonly CallExpression: (node: ts.CallExpression<ts.ts.CallExpression>, context: Context) => import("@servicenow/sdk-build-core").ExtractionResult<import("@servicenow/sdk-build-core").EntityData<RoleConfig>>;
16
- };
17
- };
18
- };
19
- readonly composers: {
20
- readonly entity: {
21
- readonly role: (entity: import("@servicenow/sdk-build-core").EntityData<Record<string, unknown>>, context: Context) => Promise<undefined> | Promise<(LinkedDocument | {
22
- kind: string;
23
- guid: string;
24
- node: ts.CallExpression<ts.ts.CallExpression> | ts.StringLiteral | ts.SourceFile | ts.TypeAliasDeclaration | ts.TypeReferenceNode | ts.TypeLiteralNode | ts.PropertySignature | ts.TupleTypeNode | ts.FunctionExpression | ts.FunctionDeclaration | ts.ArrayLiteralExpression | ts.NumericLiteral | ts.TrueLiteral | ts.FalseLiteral | ts.Identifier | ts.VariableDeclaration | ts.ClassDeclaration | ts.ExportDeclaration | ts.ObjectLiteralExpression | ts.AsExpression | ts.ComputedPropertyName | ts.PropertyAssignment | ts.ShorthandPropertyAssignment | ts.PropertyAccessExpression<ts.ts.PropertyAccessExpression> | ts.NoSubstitutionTemplateLiteral | ts.ExpressionStatement | ts.TaggedTemplateExpression | ts.ExportAssignment | ts.ElementAccessExpression<ts.ts.ElementAccessExpression> | ts.TemplateExpression | ts.ImportClause | ts.ImportSpecifier | ts.ImportDeclaration | ts.NamedImports | ts.VariableStatement | ts.VariableDeclarationList | ts.Node<ts.ts.PlusToken> | ts.Node<ts.ts.EndOfFileToken> | ts.Node<ts.ts.ExportKeyword> | ts.Node<ts.ts.KeywordTypeNode<ts.ts.SyntaxKind.AnyKeyword>> | ts.ModuleDeclaration | ts.ModuleBlock | ts.Block | ts.ParameterDeclaration | ts.Node<ts.ts.EqualsGreaterThanToken> | ts.ArrowFunction | ts.TemplateHead | ts.TemplateMiddle | ts.TemplateSpan | ts.TemplateTail | ts.PrefixUnaryExpression;
25
- data: {
26
- $id: string;
27
- table: string;
28
- data: {
29
- description: string;
30
- assignable_by: string;
31
- can_delegate: boolean;
32
- elevated_privilege: boolean;
33
- grantable: boolean;
34
- scoped_admin: boolean;
35
- name: string;
36
- suffix: string;
37
- };
38
- };
39
- })[]>;
40
- };
41
- };
42
- readonly arrangers: {
43
- readonly record: (document: import("@servicenow/sdk-build-core").Document<string>) => {
44
- handled: false;
45
- result?: never;
46
- } | {
47
- handled: true;
48
- result: {
49
- kind: string;
50
- guid: any;
51
- } | undefined;
52
- };
53
- };
54
- readonly generators: {
55
- readonly record: (document: any, context: Context, linkedDocuments: any) => any;
56
- };
57
- readonly transformers: {
58
- readonly record: {
59
- readonly CallExpression: (document: import("@servicenow/sdk-build-core").Document<any, ts.CallExpression<ts.ts.CallExpression>> & {
60
- entity?: import("@servicenow/sdk-build-core").EntityData;
61
- node: ts.CallExpression<ts.ts.CallExpression>;
62
- } & import("@servicenow/sdk-build-core").Arranged, context: Context) => boolean;
63
- };
64
- };
65
- };
66
- export default _default;
@@ -1,179 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRolesString = getRolesString;
4
- const app_1 = require("@servicenow/sdk-core/runtime/app");
5
- const sdk_build_core_1 = require("@servicenow/sdk-build-core");
6
- const sdk_build_core_2 = require("@servicenow/sdk-build-core");
7
- const Util_1 = require("./Util");
8
- const scriptUtils_1 = require("../scripts/scriptUtils");
9
- const sdk_project_1 = require("@servicenow/sdk-project");
10
- function getRolesString(roles) {
11
- const uniqueRoles = [
12
- ...new Set(roles.getElements().map((role) => {
13
- return sdk_build_core_1.Data.isEntity(role) ? role.getPropertyOrThrow('name', 'string').getValue() : role.getValue();
14
- })),
15
- ];
16
- return uniqueRoles.join(',');
17
- }
18
- function mapRoleToRole(context, roleId, containedRoleId, node) {
19
- const mappingId = context.keys.registerCompositeId('sys_user_role_contains', {
20
- role: roleId,
21
- contains: containedRoleId,
22
- });
23
- return {
24
- kind: 'record',
25
- guid: mappingId,
26
- node,
27
- data: {
28
- $id: mappingId,
29
- table: 'sys_user_role_contains',
30
- data: {
31
- contains: containedRoleId,
32
- role: roleId,
33
- },
34
- },
35
- };
36
- }
37
- exports.default = (0, sdk_build_core_1.Plugin)({
38
- name: 'Role',
39
- ownedTables: {
40
- sys_user_role: { diagnosticLevel: sdk_project_1.Diagnostic.Level.Error },
41
- },
42
- extractors: {
43
- entity: {
44
- fluent: {
45
- CallExpression: (node, context) => {
46
- const result = (0, sdk_build_core_1.extractCallExpression)(app_1.Role, 'role', node, context, ({ $id }) => context.registerExplicitId('sys_user_role', $id));
47
- if (!result.handled || !result.data) {
48
- return result;
49
- }
50
- const role = result.data;
51
- const diagnostics = result.diagnostics;
52
- const scope = context.app?.config?.scope;
53
- const name = role.getProperty('name').getValue();
54
- if (!(0, sdk_build_core_1.isSNScope)(scope) && !name.startsWith(`${scope}.`)) {
55
- const nameValue = (0, sdk_build_core_1.findObjectPropertyValue)(node, 'name');
56
- diagnostics.push(new sdk_build_core_1.FluentDiagnostic(nameValue, `Role name must begin with '${scope}.'`));
57
- }
58
- return {
59
- handled: true,
60
- diagnostics,
61
- data: role,
62
- };
63
- },
64
- },
65
- },
66
- },
67
- composers: {
68
- entity: {
69
- role(entity, context) {
70
- const scope = context.app?.config?.scope;
71
- const guid = entity.getGuid();
72
- const role = app_1.roleSchema.safeParse(entity.getValue());
73
- if (!role.success) {
74
- return Promise.resolve(undefined);
75
- }
76
- const { $id: _, name, contains_roles, ...rest } = role.data;
77
- const roleMappingDocuments = [];
78
- const containsRoles = entity.getProperty('contains_roles');
79
- if (sdk_build_core_1.Data.isArray(containsRoles)) {
80
- for (const containedRole of containsRoles.getElements()) {
81
- const containedRoleSysId = sdk_build_core_1.Data.isEntity(containedRole)
82
- ? containedRole.getGuid()
83
- : sdk_build_core_1.Data.isString(containedRole)
84
- ? containedRole.getValue()
85
- : undefined;
86
- if (!containedRoleSysId) {
87
- throw new Error(`Invalid contained role value: ${containedRole.getValue()}`);
88
- }
89
- roleMappingDocuments.push(mapRoleToRole(context, guid, containedRoleSysId, containedRole.getNode()));
90
- }
91
- }
92
- const suffix = name.replace(new RegExp(`^${scope}\\.`), '');
93
- const roleDocument = {
94
- kind: 'record',
95
- guid,
96
- node: entity.getNode(),
97
- data: {
98
- $id: guid,
99
- table: 'sys_user_role',
100
- data: {
101
- name,
102
- suffix,
103
- ...rest,
104
- },
105
- },
106
- };
107
- return Promise.resolve([roleDocument, ...roleMappingDocuments]);
108
- },
109
- },
110
- },
111
- arrangers: {
112
- record(document) {
113
- if (document.data.table !== 'sys_user_role_contains') {
114
- return { handled: false };
115
- }
116
- const roleId = document.data.data.role;
117
- return {
118
- handled: true,
119
- result: roleId ? { kind: 'record', guid: roleId } : undefined,
120
- };
121
- },
122
- },
123
- generators: {
124
- record(document, context, linkedDocuments) {
125
- const documentType = document.data?.table;
126
- if (documentType === 'sys_user_role_contains') {
127
- const role = linkedDocuments.find((doc) => doc.data.table === 'sys_user_role' &&
128
- doc.guid === document.data.data.role);
129
- return role && role.node ? { ...document, node: role.node } : undefined;
130
- }
131
- if (documentType !== 'sys_user_role') {
132
- return undefined;
133
- }
134
- return (0, sdk_build_core_1.linkDocument)(document, (0, sdk_build_core_2.generateCallExpressionExportForDocument)(context, {
135
- sourceFile: (0, sdk_build_core_2.getOrCreateEntitySourceFile)(context, (0, sdk_build_core_2.getSysUpdateName)(document, 'sys_user_role')),
136
- moduleSpecifier: '@servicenow/sdk/core',
137
- }, app_1.Role, { $id: document.guid }).getExpressionIfKindOrThrow(sdk_project_1.ts.SyntaxKind.CallExpression));
138
- },
139
- },
140
- transformers: {
141
- record: {
142
- CallExpression(document, context) {
143
- const documentType = document.data?.table;
144
- if (documentType === 'sys_user_role_contains') {
145
- const [args] = document.node.getArguments();
146
- if (!sdk_project_1.ts.Node.isObjectLiteralExpression(args) || !document.parent) {
147
- return false;
148
- }
149
- if (document.action === 'DELETE') {
150
- (0, Util_1.removeObjectFromArrayById)(document, 'contains_roles', context);
151
- return true;
152
- }
153
- const m2mData = document.data.data;
154
- (0, Util_1.addObjectToArrayById)(document, 'contains_roles', m2mData.contains, context);
155
- return true;
156
- }
157
- if (documentType !== 'sys_user_role') {
158
- return false;
159
- }
160
- if (document.action === 'DELETE') {
161
- (0, sdk_build_core_2.removeNode)(document.node);
162
- return true;
163
- }
164
- if (!document.changedData) {
165
- return true;
166
- }
167
- const rawRoleData = document.changedData.data;
168
- const roleData = (0, scriptUtils_1.except)(rawRoleData, (key) => key.startsWith('sys_') ||
169
- key === 'requires_subscription' ||
170
- key === 'suffix' ||
171
- key === 'includes_roles');
172
- (0, sdk_build_core_2.transformFunctionArguments)(document.node, app_1.Role, roleData);
173
- context.argTypesToFix.push(document.node);
174
- return true;
175
- },
176
- },
177
- },
178
- });
179
- //# sourceMappingURL=RolePlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RolePlugin.js","sourceRoot":"","sources":["../../src/aclAndRole/RolePlugin.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
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;
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addObjectToArrayById = addObjectToArrayById;
4
- exports.removeObjectFromArrayById = removeObjectFromArrayById;
5
- const lodash_1 = require("lodash");
6
- const sdk_project_1 = require("@servicenow/sdk-project");
7
- const sdk_build_core_1 = require("@servicenow/sdk-build-core");
8
- const getElementKey = (element, context) => {
9
- const result = context.extractAst(element);
10
- if (result.handled && result.data) {
11
- const data = result.data;
12
- if (sdk_build_core_1.Data.isString(data)) {
13
- return data.getValue();
14
- }
15
- if (sdk_build_core_1.Data.isEntity(data) && data.getKind() === 'role') {
16
- return data.getProperty('$id') ? `${data.getProperty('$id').getValue()}` : '';
17
- }
18
- }
19
- return '';
20
- };
21
- function addObjectToArrayById(document, name, roleId, context) {
22
- const arg = document.node?.asKind(sdk_project_1.ts.SyntaxKind.CallExpression)?.getArguments()[0];
23
- const table = document.data['table'];
24
- const primaryKey = (0, sdk_build_core_1.getNodeId)(arg);
25
- const propertyAssignment = (0, sdk_build_core_1.getOrCreatePropertyAssignment)(arg, name, '[]');
26
- let handled = false;
27
- const rolesIterator = new sdk_build_core_1.ArrayIterator(propertyAssignment);
28
- const primaryKeyName = table === 'sys_security_acl_role' ? 'sys_security_acl' : 'role';
29
- const secondaryKeyName = table === 'sys_security_acl_role' ? 'sys_user_role' : 'contains';
30
- while (rolesIterator.hasNext()) {
31
- const element = rolesIterator.next();
32
- const secondaryKey = getElementKey(element, context);
33
- const secondaryKeySysId = secondaryKey && (0, sdk_build_core_1.isGUID)(secondaryKey) ? secondaryKey : context.getIdUsingExplicitKey(secondaryKey) || '';
34
- if (secondaryKeySysId === roleId) {
35
- return;
36
- }
37
- const foundIdx = context.keys.composite.findIndex((k) => (0, lodash_1.isEqual)(k.key, {
38
- [primaryKeyName]: primaryKey,
39
- [secondaryKeyName]: secondaryKey,
40
- }));
41
- if (foundIdx !== -1 && context.keys.composite[foundIdx]?.id == document.guid) {
42
- if (context.keys.explicit[secondaryKey]?.id === roleId || secondaryKey === roleId) {
43
- return;
44
- }
45
- element?.replaceWithText((0, sdk_build_core_1.stringify)(roleId));
46
- context.keys.composite.splice(foundIdx, 1);
47
- handled = true;
48
- }
49
- }
50
- if (!handled) {
51
- const stringValue = (0, sdk_build_core_1.stringify)(roleId);
52
- rolesIterator.getExpression().addElement(stringValue);
53
- }
54
- context.keys.registerCompositeId(table, {
55
- [primaryKeyName]: primaryKey,
56
- [secondaryKeyName]: roleId,
57
- }, document.guid);
58
- }
59
- function removeObjectFromArrayById(document, name, context) {
60
- const arg = document.node?.asKind(sdk_project_1.ts.SyntaxKind.CallExpression)?.getArguments()[0];
61
- const table = document.data['table'];
62
- const argId = (0, sdk_build_core_1.getNodeId)(arg);
63
- const property = arg.getProperty(name);
64
- if (!property) {
65
- return;
66
- }
67
- const propertyAssignment = property.asKind(sdk_project_1.tsc.SyntaxKind.PropertyAssignment);
68
- if (!propertyAssignment) {
69
- return;
70
- }
71
- const rolesIterator = new sdk_build_core_1.ArrayIterator(propertyAssignment);
72
- while (rolesIterator.hasNext()) {
73
- const element = rolesIterator.next();
74
- const secKey = getElementKey(element, context);
75
- const primaryKey = table === 'sys_security_acl_role' ? 'sys_security_acl' : 'role';
76
- const secondKey = table === 'sys_security_acl_role' ? 'sys_user_role' : 'contains';
77
- const foundIdx = context.keys.composite.findIndex((k) => (0, lodash_1.isEqual)(k.key, {
78
- [primaryKey]: argId,
79
- [secondKey]: secKey,
80
- }));
81
- if (foundIdx !== -1 && context.keys.composite[foundIdx]?.id === document.guid) {
82
- rolesIterator.getExpression().removeElement(element);
83
- }
84
- if (!element.wasForgotten() && element.asKind(sdk_project_1.ts.SyntaxKind.Identifier) && !element.getSymbol()) {
85
- //remove if the identifier doesn't have symbol, happens when the identifier declaration is removed prior to this
86
- rolesIterator.getExpression().removeElement(element);
87
- }
88
- }
89
- }
90
- //# sourceMappingURL=Util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/aclAndRole/Util.ts"],"names":[],"mappings":"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"}