@servicenow/sdk-build-plugins 3.0.3 → 4.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.
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 +39 -0
  11. package/dist/atf/step-configs.js +2334 -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 +600 -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 +164 -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 +2384 -0
  136. package/src/atf/test-plugin.ts +739 -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 +179 -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 +658 -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 -1630
  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 -2072
  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,316 +0,0 @@
1
- import {
2
- getCallExpressionName,
3
- getPropertyAssignment,
4
- Plugin,
5
- stringify,
6
- Context,
7
- getOrCreatePropertyAssignment,
8
- mergeDataIntoObjectLiteralArray,
9
- filterEmpty,
10
- generateCallExpressionExportForDocument,
11
- getOrCreateEntitySourceFile,
12
- linkDocument,
13
- extractCallExpression,
14
- } from '@servicenow/sdk-build-core'
15
- import { Documentation, Record, Table } from '@servicenow/sdk-core/runtime/db'
16
- import { createObjectExpression } from './TablePlugin'
17
- import { ts, tsc } from '@servicenow/sdk-project'
18
- import { RecordPlugin, RecordEntitySchema } from './RecordPlugin'
19
- import { isEqual } from 'lodash'
20
-
21
- function isSysDocumentationRecord(node: ts.CallExpression) {
22
- try {
23
- return (
24
- getCallExpressionName(node) === Record.name &&
25
- ((node.getArguments()[0] as ts.ObjectLiteralExpression)?.getProperty('table') as ts.PropertyAssignment)
26
- ?.getInitializerIfKind(ts.SyntaxKind.StringLiteral)
27
- ?.getLiteralValue() === 'sys_documentation'
28
- )
29
- } catch (e) {
30
- //don't throw
31
- }
32
- return false
33
- }
34
-
35
- type SysDocKey = { name: string; element: string | undefined; language: string }
36
- const generateSysId = (data: SysDocKey) =>
37
- `${data['name']}_${data['element'] ? data['element'] + '_' : ''}${data['language']}`
38
-
39
- export default Plugin({
40
- name: 'Documentation',
41
- extractors: {
42
- entity: {
43
- fluent: {
44
- CallExpression: (node, context) => {
45
- if (isSysDocumentationRecord(node)) {
46
- const result = extractCallExpression(
47
- Record,
48
- 'record',
49
- node,
50
- context,
51
- (record) => {
52
- //Generate guid similar to documentation_plugin during sys_documentation record extraction
53
- return generateSysId(record.data as SysDocKey)
54
- },
55
- (record): record is Record => RecordEntitySchema.safeParse(record).success
56
- )
57
-
58
- if (!result.handled || !result.data) {
59
- return result
60
- }
61
-
62
- return {
63
- handled: true,
64
- diagnostics: result.diagnostics,
65
- data: result.data,
66
- }
67
- }
68
- return { handled: false }
69
- },
70
- },
71
- },
72
- },
73
- composers: {
74
- xml: {
75
- sys_documentation(xml) {
76
- const data = xml.data['data']!
77
- return {
78
- kind: 'sys_documentation',
79
- guid: generateSysId(data as SysDocKey),
80
- data: xml.data,
81
- action: xml.action,
82
- }
83
- },
84
- },
85
- },
86
- serializers: {
87
- sys_documentation(document, context) {
88
- return RecordPlugin.serializers.record(document, context)
89
- },
90
- },
91
- arrangers: {
92
- sys_documentation(document) {
93
- if ((document.data as any).table !== 'sys_documentation') {
94
- return { handled: false }
95
- }
96
- const tableName = (document.data as any).data.name
97
- return {
98
- handled: true,
99
- result: tableName ? { kind: 'bootstrap', guid: tableName } : undefined,
100
- }
101
- },
102
- },
103
- generators: {
104
- sys_documentation(document, context: Context, linkedDocuments) {
105
- const tableName = (document.data as any).data.name
106
- const table = linkedDocuments.find((doc) => doc.guid === tableName)
107
- return table && table.node
108
- ? { ...document, node: table.node }
109
- : linkDocument(
110
- document,
111
- generateCallExpressionExportForDocument(
112
- context,
113
- {
114
- sourceFile: getOrCreateEntitySourceFile(context, `${document.guid}`),
115
- moduleSpecifier: '@servicenow/sdk/core',
116
- },
117
- Record,
118
- { $id: document.guid }
119
- ).getExpressionIfKindOrThrow(ts.SyntaxKind.CallExpression)
120
- )
121
- },
122
- },
123
- transformers: {
124
- sys_documentation: {
125
- CallExpression(document, context) {
126
- const expressionName = getCallExpressionName(document.node)
127
- if (expressionName !== Table.name) {
128
- return RecordPlugin.transformers!.record!.CallExpression(document, context)
129
- }
130
-
131
- const { element: column } = (document.data as any).data
132
- const [baseArgs] = document.node.getArguments()
133
- if (!baseArgs) {
134
- return false
135
- }
136
-
137
- const docData: Documentation = (document as any).data.data as Documentation
138
- delete docData['element'], delete docData['name'], delete docData['sys_id']
139
-
140
- let labelNode, objLitNode, existingNameNode
141
- if (column) {
142
- const schemaProperty = getPropertyAssignment(baseArgs, 'schema')
143
- const schemaLiteral = schemaProperty?.getChildrenOfKind(ts.SyntaxKind.ObjectLiteralExpression)[0]
144
- if (!schemaLiteral) {
145
- return false
146
- }
147
- const columnNode = schemaLiteral
148
- .getProperties()
149
- .find(
150
- (prop) =>
151
- column === prop.getFirstChildByKindOrThrow(ts.SyntaxKind.Identifier).getText().trim()
152
- )
153
- if (!columnNode) {
154
- return false
155
- }
156
-
157
- const callExpNode = columnNode!.getFirstChildByKind(ts.SyntaxKind.CallExpression)
158
- if (!callExpNode) {
159
- return false
160
- }
161
- objLitNode = callExpNode.getFirstChildByKind(ts.SyntaxKind.ObjectLiteralExpression)
162
- if (!objLitNode) {
163
- return false
164
- }
165
-
166
- existingNameNode = columnNode.getFirstChildByKindOrThrow(ts.SyntaxKind.Identifier)
167
- labelNode = getPropertyAssignment(objLitNode, 'label')
168
- } else {
169
- objLitNode =
170
- baseArgs.asKind(ts.SyntaxKind.ObjectLiteralExpression) ??
171
- baseArgs.getFirstDescendantByKind(ts.SyntaxKind.ObjectLiteralExpression)
172
- if (!objLitNode) {
173
- return false
174
- }
175
- existingNameNode = getPropertyAssignment(objLitNode, 'name')
176
- labelNode = getPropertyAssignment(objLitNode, 'label')
177
- }
178
-
179
- // Do transformation
180
- const labelArrayNode = labelNode?.getFirstChildByKind(ts.SyntaxKind.ArrayLiteralExpression)
181
- if (labelArrayNode) {
182
- mergeDataIntoObjectLiteralArray(labelArrayNode, [docData], 'language', document.action)
183
- return true
184
- } else {
185
- const literalNode = labelNode?.getFirstChildByKind(ts.SyntaxKind.StringLiteral)
186
- if (isDefaultDocumentationRecord(docData)) {
187
- return updateDefaultLabelParameters(literalNode, docData, existingNameNode, objLitNode)
188
- } else {
189
- return createArrayLabel(labelNode, objLitNode, docData)
190
- }
191
- }
192
- },
193
- },
194
- },
195
- })
196
-
197
- function updateDefaultLabelParameters(literalNode, docData, existingNameNode, objLitNode) {
198
- // Label should be written as a StringLiteral
199
- if (literalNode) {
200
- if (
201
- literalNode.getLiteralValue() &&
202
- docData.label?.toLowerCase().trim() === literalNode.getLiteralValue().toLowerCase().trim()
203
- ) {
204
- // Incoming label is the same as the node in code
205
- return true
206
- }
207
-
208
- literalNode.setLiteralValue(docData.label)
209
- } else {
210
- if (
211
- existingNameNode &&
212
- existingNameNode.getText().toLowerCase().trim() === docData.label?.toLowerCase().trim()
213
- ) {
214
- // Label matches either `Table({name: 'xyz'})` or `name: xyzColumn({})`
215
- return true
216
- }
217
- getOrCreatePropertyAssignment(objLitNode, 'label', stringify(docData.label))
218
- }
219
- return true
220
- }
221
-
222
- function createArrayLabel(labelNode, objLitNode, docData) {
223
- labelNode = getOrCreatePropertyAssignment(objLitNode, 'label', '[]')
224
- const existingLabel = labelNode.getFirstChildByKind(ts.SyntaxKind.StringLiteral)?.getLiteralText()
225
-
226
- // Create the array since it didn't exist before
227
- labelNode.transform((traversal) => {
228
- if (tsc.isPropertyAssignment(traversal.currentNode)) {
229
- const arrayLit = traversal.factory.createArrayLiteralExpression([
230
- createObjectExpression({
231
- ...filterEmpty(docData),
232
- }),
233
- ])
234
- return traversal.factory.updatePropertyAssignment(
235
- traversal.currentNode,
236
- tsc.factory.createIdentifier('label'),
237
- arrayLit
238
- )
239
- }
240
- return traversal.currentNode
241
- })
242
- if (existingLabel && docData.label?.toLowerCase().trim() !== existingLabel.toLowerCase().trim()) {
243
- labelNode!
244
- .getFirstChildByKindOrThrow(ts.SyntaxKind.ArrayLiteralExpression)
245
- .addElement(stringify({ label: existingLabel }))
246
- }
247
- return true
248
- }
249
-
250
- function isDefaultDocumentationRecord(docData) {
251
- const { label, name, element } = docData
252
- const defaultRecord = defaultDocumentationRecord(label, name, element)
253
- return isEqual(defaultRecord.data, docData)
254
- }
255
-
256
- // TODO make default language configurable
257
- function defaultDocumentationRecord(label: string, tableName: string, columnName: string) {
258
- return Record({
259
- table: 'sys_documentation',
260
- $id: `${tableName}_${columnName ? columnName + '_' : ''}en`,
261
- data: {
262
- label: label,
263
- hint: '',
264
- help: '',
265
- language: 'en',
266
- plural: generatePlural(label),
267
- url: '',
268
- url_target: '',
269
- },
270
- })
271
- }
272
-
273
- const PLURAL_EQUALS_LABEL = [
274
- 's',
275
- 'ed',
276
- 'by',
277
- 'Active',
278
- ')',
279
- ' to',
280
- ' with',
281
- ' for',
282
- ' in',
283
- ' out',
284
- ' use',
285
- 'Data',
286
- ' data',
287
- ]
288
- const PLURAL_SPECIAL_CASE_Y_TO_IES = ['ry', 'ty', 'dy', 'cy', 'fy', 'ly', 'ny']
289
- const PLURAL_SPECIAL_CASE_ADD_ES = ['x', 'sh', 'ch', 'z']
290
-
291
- // Modified from GlideLabelGenerator
292
- function generatePlural(label: string) {
293
- if (!label) {
294
- return ''
295
- }
296
-
297
- for (const l of PLURAL_EQUALS_LABEL) {
298
- if (label.endsWith(l)) {
299
- return label
300
- }
301
- }
302
-
303
- for (const l of PLURAL_SPECIAL_CASE_Y_TO_IES) {
304
- if (label.endsWith(l)) {
305
- return label.substring(0, label.lastIndexOf('y')) + 'ies'
306
- }
307
- }
308
-
309
- for (const l of PLURAL_SPECIAL_CASE_ADD_ES) {
310
- if (label.endsWith(l)) {
311
- return label + 'es'
312
- }
313
- }
314
-
315
- return label + 's'
316
- }
@@ -1,138 +0,0 @@
1
- import {
2
- getCallExpressionName,
3
- Plugin,
4
- Context,
5
- getPropertyAssignment,
6
- mergeDataIntoObjectLiteral,
7
- linkDocument,
8
- generateCallExpressionExportForDocument,
9
- getOrCreateEntitySourceFile,
10
- GUID,
11
- } from '@servicenow/sdk-build-core'
12
- import { Table, Record } from '@servicenow/sdk-core/runtime/db'
13
- import { RecordPlugin } from './RecordPlugin'
14
- import { ts } from '@servicenow/sdk-project'
15
- import { isEqual } from 'lodash'
16
-
17
- export const ua_table_licensing_config = 'ua_table_licensing_config'
18
-
19
- export default Plugin({
20
- name: 'LicensingConfig',
21
- composers: {
22
- xml: {
23
- ua_table_licensing_config(xml) {
24
- return {
25
- kind: ua_table_licensing_config,
26
- guid: (xml.data['id'] as string) ?? GUID(),
27
- data: xml.data,
28
- action: xml.action,
29
- }
30
- },
31
- },
32
- },
33
- serializers: {
34
- ua_table_licensing_config(document, context) {
35
- return RecordPlugin.serializers.record(document, context)
36
- },
37
- },
38
- arrangers: {
39
- ua_table_licensing_config(document) {
40
- if ((document.data as any).table !== ua_table_licensing_config) {
41
- return { handled: false }
42
- }
43
- const tableName = (document.data as any).data.name
44
- return {
45
- handled: true,
46
- result: tableName ? { kind: 'bootstrap', guid: tableName } : undefined,
47
- }
48
- },
49
- },
50
- generators: {
51
- ua_table_licensing_config(document, context: Context, linkedDocuments) {
52
- const table = linkedDocuments.find((doc) => doc.guid === (document.data as any).data.name)
53
- return table && table.node
54
- ? { ...document, node: table.node }
55
- : linkDocument(
56
- document,
57
- generateCallExpressionExportForDocument(
58
- context,
59
- {
60
- sourceFile: getOrCreateEntitySourceFile(context, `${document.kind}_${document.guid}`),
61
- moduleSpecifier: '@servicenow/sdk/core',
62
- },
63
- Record,
64
- { $id: document.guid }
65
- ).getExpressionIfKindOrThrow(ts.SyntaxKind.CallExpression)
66
- )
67
- },
68
- },
69
- transformers: {
70
- ua_table_licensing_config: {
71
- CallExpression(document, context) {
72
- const expressionName = getCallExpressionName(document.node)
73
- if (expressionName !== Table.name) {
74
- return RecordPlugin.transformers!.record!.CallExpression(document, context)
75
- }
76
-
77
- const [baseArgs] = document.node.getArguments()
78
- if (!baseArgs) {
79
- return false
80
- }
81
-
82
- const changedData = (document.changedData as any).data
83
- const data = (document.data as any).data
84
-
85
- let objLit, dataToMerge
86
- const licensingProp = getPropertyAssignment(baseArgs, 'licensing_config')
87
- if (!licensingProp) {
88
- if (isDefaultLicensingConfig(data)) {
89
- return true
90
- }
91
- const defaultValues = defaultLicensingConfigRecord(data.name).data
92
- dataToMerge = {}
93
- Object.entries(data)
94
- .filter(([prop]) => {
95
- return data[prop] !== defaultValues[prop]
96
- })
97
- .map(([k, v]) => {
98
- dataToMerge[k] = v
99
- })
100
- const callExpLit = document.node.getFirstChildByKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
101
- const newProp = callExpLit.addPropertyAssignment({ name: 'licensing_config', initializer: '{}' })
102
- objLit = newProp!.getFirstChildByKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
103
- } else {
104
- dataToMerge = changedData
105
- objLit = licensingProp!.getFirstChildByKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
106
- }
107
-
108
- if (dataToMerge.license_roles) {
109
- dataToMerge.license_roles = dataToMerge.license_roles.split(',')
110
- }
111
-
112
- mergeDataIntoObjectLiteral(objLit, dataToMerge)
113
- return true
114
- },
115
- },
116
- },
117
- })
118
- function isDefaultLicensingConfig(data) {
119
- return isEqual(data, defaultLicensingConfigRecord(data.name).data)
120
- }
121
-
122
- function defaultLicensingConfigRecord(tableName: string) {
123
- return Record({
124
- table: ua_table_licensing_config,
125
- $id: `${tableName}_license`,
126
- data: {
127
- name: tableName,
128
- op_insert: true,
129
- op_update: true,
130
- op_delete: true,
131
- is_fulfillment: false,
132
- license_model: 'none',
133
- owner_condition: '',
134
- license_condition: '',
135
- license_roles: '',
136
- },
137
- })
138
- }