@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
package/src/db/index.ts DELETED
@@ -1,6 +0,0 @@
1
- export * from './ColumnPlugins'
2
- export { default as TablePlugin, generateColumnExpression } from './TablePlugin'
3
- export { RecordPlugin } from './RecordPlugin'
4
- export { default as DocumentationPlugin } from './DocumentationPlugin'
5
- export { default as LicensingPlugin } from './LicensingPlugin'
6
- export * from './DBUtils'
@@ -1,419 +0,0 @@
1
- import {
2
- Document,
3
- getOrCreatePropertyAssignment,
4
- mergeDataIntoObjectLiteral,
5
- stringify,
6
- Context,
7
- DocumentMap,
8
- removeNode,
9
- getCallExpressionName,
10
- getNodeId,
11
- ArrayIterator,
12
- transformCustomizedProperties,
13
- } from '@servicenow/sdk-build-core'
14
- import { RouteSchema, RestApiSchema, RestApi } from '@servicenow/sdk-core/runtime/rest'
15
- import { ts } from '@servicenow/sdk-project'
16
- import * as z from 'zod'
17
- import { processScript } from '../ScriptTemplatePlugin'
18
- import {
19
- RestDefinitionTransformer,
20
- VersionWithOutIdSchema,
21
- RouteAttrWithOutIdSchema,
22
- RestRouteTransformer,
23
- } from './RestSchemaUtils'
24
- import {
25
- getArgs,
26
- potentialRecordCallRouteParams,
27
- isParamAssociated,
28
- createRecordCall,
29
- removeNodeAndCleanUpExport,
30
- } from './RestUtils'
31
- import { Record } from '@servicenow/sdk-core/runtime/db'
32
- import { isEqual } from 'lodash'
33
-
34
- function transformId(
35
- arg: ts.ObjectLiteralExpression,
36
- argName: string,
37
- argValue: string,
38
- tableName: string,
39
- context: Context
40
- ) {
41
- if (!arg.getProperty(argName)) {
42
- const generatedKey = context.keys.getNextAvailableExplicitKey()
43
- getOrCreatePropertyAssignment(arg, argName, stringify(generatedKey))
44
- return context.keys.registerExplicitId(tableName, generatedKey, argValue)
45
- }
46
- return undefined
47
- }
48
-
49
- export function transformDefinition(document: Document, context: Context) {
50
- if (document.action === 'DELETE') {
51
- removeNode(document.node!)
52
- return true
53
- }
54
- const changedData = document.changedData ? document.changedData!['data'] : {}
55
- const { enforce_acl, ...rest } = RestDefinitionTransformer.parse(changedData)
56
- const restArgs = getArgs(document)
57
- cleanUpDefault(RestApiSchema, rest, restArgs)
58
- transformId(restArgs, '$id', document.guid, 'sys_ws_definition', context)
59
- transformEnforceAcl(restArgs, enforce_acl, context)
60
- transformCustomizedProperties(RestApi, document.node, changedData, { enforce_acl, ...rest })
61
- mergeDataIntoObjectLiteral(restArgs, rest)
62
- return true
63
- }
64
-
65
- function transformEnforceAcl(args: ts.ObjectLiteralExpression, enforce_acl: string[] | undefined, context: Context) {
66
- if (enforce_acl === undefined) {
67
- return
68
- }
69
- if (enforce_acl.length === 0) {
70
- args.getProperty('enforce_acl')?.remove()
71
- args.addPropertyAssignment({ name: 'enforce_acl', initializer: '[]' })
72
- return
73
- }
74
- const enforceAclArg = getOrCreatePropertyAssignment(args, 'enforce_acl', '[]')
75
- const aclIdSet = new Set(enforce_acl)
76
- const enforceAclIterator = new ArrayIterator(enforceAclArg)
77
- while (enforceAclIterator.hasNext()) {
78
- const aclElement = enforceAclIterator.next()
79
- let aclSysId: string | undefined = undefined
80
- if (aclElement.isKind(ts.SyntaxKind.StringLiteral)) {
81
- aclSysId = aclElement.getLiteralValue()
82
- } else {
83
- const varDec = (aclElement.getSymbol()?.getValueDeclaration() ??
84
- aclElement.getSymbol()?.getAliasedSymbol()?.getValueDeclaration()) as ts.VariableDeclaration
85
- if (varDec) {
86
- const nodeID = getNodeId(
87
- varDec
88
- .getInitializerIfKind(ts.SyntaxKind.CallExpression)
89
- ?.getArguments()[0] as ts.ObjectLiteralExpression
90
- )!
91
- aclSysId = context.keys.explicit[nodeID]?.id
92
- }
93
- }
94
-
95
- if (aclSysId && aclIdSet.has(aclSysId)) {
96
- aclIdSet.delete(aclSysId)
97
- } else {
98
- enforceAclIterator.getExpression().removeElement(aclElement)
99
- }
100
- }
101
-
102
- if (aclIdSet.size > 0) {
103
- aclIdSet.forEach((id) => {
104
- enforceAclIterator.getExpression().addElement(stringify(id))
105
- })
106
- }
107
- }
108
-
109
- export function transformRestAttrs(document: Document, context: Context) {
110
- const restArgsNode = getArgs(document)
111
- const changedData = document.changedData ? document.changedData!['data'] : {}
112
- const schemaResult = VersionWithOutIdSchema.partial().safeParse(changedData)
113
- if (!schemaResult.success) {
114
- return false
115
- }
116
-
117
- const restAttrArrayNode = getOrCreatePropertyAssignment(restArgsNode, 'versions', '[]')
118
- const cData = schemaResult.data
119
- const versionArrayIterator = new ArrayIterator(restAttrArrayNode)
120
- const expression = versionArrayIterator.getExpression()
121
- let isHandled = false
122
- while (versionArrayIterator.hasNext() && !isHandled) {
123
- const element = versionArrayIterator.next()
124
- const verId = getNodeId(element.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression))!
125
- const verSysId = context.keys.explicit[verId]?.id
126
- if (verSysId === document.guid) {
127
- if (document.action === 'DELETE') {
128
- expression.removeElement(element)
129
- } else {
130
- const eleObj = element.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
131
- cleanUpDefault(VersionWithOutIdSchema, cData, eleObj)
132
- mergeDataIntoObjectLiteral(eleObj, cData)
133
- }
134
- isHandled = true
135
- }
136
- }
137
- if (!isHandled && document.action !== 'DELETE') {
138
- cleanUpDefault(VersionWithOutIdSchema, cData)
139
- const element = expression.addElement(stringify(cData)).asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
140
- transformId(element, '$id', document.guid, 'sys_ws_version', context)
141
- return true
142
- }
143
- return isHandled
144
- }
145
-
146
- export function transformRouteAttrs(document: Document, context: Context, argName: string) {
147
- const restArgsNode = getArgs(document)
148
- const changedData = document.changedData ? document.changedData!['data'] : {}
149
- const routeAttr = RouteAttrWithOutIdSchema.partial().safeParse(changedData)
150
- if (!routeAttr.success) {
151
- return false
152
- }
153
- const routeAttrData = routeAttr.data
154
- const routesArrayNode = getOrCreatePropertyAssignment(restArgsNode, 'routes', '[]')
155
- const routeArrayIterator = new ArrayIterator(routesArrayNode)
156
- while (routeArrayIterator.hasNext()) {
157
- const element = routeArrayIterator.next()
158
- const routeAttrsNode = getOrCreatePropertyAssignment(
159
- element.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression),
160
- argName,
161
- '[]'
162
- )
163
- const routeAttrIterator = new ArrayIterator(routeAttrsNode)
164
- const arrayExpression = routeAttrIterator.getExpression()
165
- while (routeAttrIterator.hasNext()) {
166
- const attrElement = routeAttrIterator.next()
167
- const attrId = getNodeId(attrElement.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression))
168
- const attrSysId = context.keys.explicit[attrId!]?.id
169
- if (attrSysId === document.guid) {
170
- if (document.action === 'DELETE') {
171
- arrayExpression.removeElement(attrElement)
172
- } else {
173
- const attrEleObj = attrElement.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
174
- cleanUpDefault(RouteAttrWithOutIdSchema, routeAttrData, attrEleObj)
175
- mergeDataIntoObjectLiteral(attrEleObj, routeAttrData)
176
- }
177
- }
178
- }
179
- }
180
- return true
181
- }
182
-
183
- const getDocument = (documentId: string, kind: string, docMap: DocumentMap) => {
184
- if (!docMap[kind] || !docMap[kind]![documentId]) {
185
- throw new Error(`Unable to find ${kind} with sysId: ${documentId}`)
186
- }
187
- return docMap[kind]![documentId]!
188
- }
189
-
190
- function getDefaults<Schema extends z.AnyZodObject>(schema: Schema) {
191
- return Object.fromEntries(
192
- Object.entries(schema.shape).map(([key, value]) => {
193
- if (value instanceof z.ZodDefault) {
194
- return [key, value._def.defaultValue()]
195
- }
196
- return [key, undefined]
197
- })
198
- )
199
- }
200
-
201
- function cleanUpDefault<Schema extends z.AnyZodObject>(
202
- schema: Schema,
203
- targetObj: any,
204
- node?: ts.ObjectLiteralExpression
205
- ) {
206
- const defaults = getDefaults(schema)
207
- Object.entries(targetObj).forEach(([key, value]) => {
208
- const removeDef = node ? !node.getProperty(key) : true
209
- if (defaults[key] !== undefined && defaults[key] === value && removeDef) {
210
- delete targetObj[key]
211
- }
212
- })
213
- }
214
-
215
- export function transformRoutes(document: Document, context: Context, documentMap: DocumentMap) {
216
- const restArgsNode = getArgs(document)
217
- const changedData = document.changedData ? document.changedData!['data'] : {}
218
- const transformedRouteResp = RestRouteTransformer.safeParse(changedData)
219
- if (!transformedRouteResp.success) {
220
- return false
221
- }
222
-
223
- const rawRouteData = transformedRouteResp.data
224
- const { script, web_service_version, enforce_acl, ...rest } = rawRouteData
225
- let version: number | undefined = undefined
226
- if (web_service_version) {
227
- version = getDocument(web_service_version, 'record', documentMap).data!['data']['version'] as number
228
- }
229
- const parsedRouteData = {
230
- ...rest,
231
- ...(version && { version }),
232
- }
233
- const routesArrayNode = getOrCreatePropertyAssignment(restArgsNode, 'routes', '[]')
234
- const routeArrayIterator = new ArrayIterator(routesArrayNode)
235
- const expression = routeArrayIterator.getExpression()
236
- let isHandled = false
237
- while (routeArrayIterator.hasNext() && !isHandled) {
238
- const element = routeArrayIterator.next()
239
- const routeId = getNodeId(element.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression))!
240
- const routeSysId = context.keys.explicit[routeId]?.id
241
- if (routeSysId === document.guid) {
242
- if (document.action === 'DELETE') {
243
- expression.removeElement(element)
244
- } else {
245
- const eleObj = element.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
246
- transformEnforceAcl(eleObj, enforce_acl, context)
247
- if (script !== undefined) {
248
- processScript(eleObj, 'script', script)
249
- }
250
- cleanUpDefault(RouteSchema, parsedRouteData, eleObj)
251
- mergeDataIntoObjectLiteral(eleObj, parsedRouteData)
252
- }
253
- isHandled = true
254
- }
255
- }
256
-
257
- if (!isHandled && document.action !== 'DELETE') {
258
- cleanUpDefault(RouteSchema, parsedRouteData)
259
- const element = expression
260
- .addElement(stringify(parsedRouteData))
261
- .asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
262
- transformEnforceAcl(element, enforce_acl, context)
263
- if (script !== undefined) {
264
- processScript(element, 'script', script)
265
- }
266
- transformId(element, '$id', document.guid, 'sys_ws_operation', context)
267
- return true
268
- }
269
- return isHandled
270
- }
271
-
272
- export function transformRouteAttrsMap<T>(
273
- document: Document,
274
- context: Context,
275
- documentMap: DocumentMap,
276
- routeAttrSchema: z.ZodSchema<T>,
277
- argName: string,
278
- callback: (data: T) => { operationId: string; attrId: string }
279
- ) {
280
- const restArgsNode = getArgs(document)
281
- const restId = getNodeId(restArgsNode)
282
- const routeAttrSchemaResp = routeAttrSchema.safeParse(document.data!['data'])
283
- if (!routeAttrSchemaResp.success) {
284
- return false
285
- }
286
-
287
- /** To handle scenario where the mapping record initially was mapping route1 to parameter1 has changed
288
- * to route2 to parameter1 within the same rest api. We remove the old reference and its keys and update the new one.
289
- * This also helps in case of delete action, where the user modified the route before delete and performed the delete action.
290
- */
291
- const idx = context.keys.composite.findIndex((k) => k.id === document.guid)
292
- const routeKey = idx !== -1 ? context.keys.composite[idx]!.key['route'] : undefined
293
- const routeId = routeKey ? context.keys.explicit[routeKey]?.id : undefined
294
- const { attrId, operationId } = callback(routeAttrSchemaResp.data)
295
- let deletedParamID: string | undefined = undefined
296
- let removedAttrId: string | undefined = undefined
297
- let removalKey: { attr: string; route: string; rest: string } | undefined = undefined
298
- if (routeId && operationId !== routeId) {
299
- removalKey = context.keys.composite[idx]!.key as { route: string; attr: string; rest: string }
300
- context.keys.composite.splice(idx, 1)
301
- removedAttrId = context.keys.explicit[removalKey?.attr]?.id
302
- }
303
-
304
- let parsedAttrData = {}
305
- if (document.action !== 'DELETE') {
306
- const attrDoc = getDocument(attrId, 'record', documentMap)
307
- /**
308
- * Case where the only transformed doc is mapping record and the referenced parameter or header is associated to a record call.
309
- * Remove the record call and associated key and consume it with the rest.
310
- */
311
- if (
312
- attrDoc.node &&
313
- !attrDoc.node.wasForgotten() &&
314
- getCallExpressionName(attrDoc.node as ts.CallExpression) === Record.name
315
- ) {
316
- const attrId = getNodeId(getArgs(attrDoc))!
317
- removeNodeAndCleanUpExport(attrDoc.node)
318
- delete context.keys.explicit[attrId]
319
- }
320
- const attrInfo = attrDoc.data!['data']
321
- const parsedRestAttr = RouteAttrWithOutIdSchema.safeParse(attrInfo)
322
-
323
- if (!parsedRestAttr.success) {
324
- return false
325
- }
326
-
327
- parsedAttrData = parsedRestAttr.data
328
- }
329
-
330
- const routesArrayNode = getOrCreatePropertyAssignment(restArgsNode, 'routes', '[]')
331
- const routeArrayIterator = new ArrayIterator(routesArrayNode)
332
- while (routeArrayIterator.hasNext()) {
333
- const element = routeArrayIterator.next()
334
- const routeId = getNodeId(element.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression))!
335
- const routeSysId = context.keys.explicit[routeId]?.id
336
- if (routeSysId === operationId || (removalKey && removalKey.route === routeId)) {
337
- const routeAttrsNode = getOrCreatePropertyAssignment(
338
- element.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression),
339
- argName,
340
- '[]'
341
- )
342
- const routeAttrIterator = new ArrayIterator(routeAttrsNode)
343
- const attrExpression = routeAttrIterator.getExpression()
344
- let isHandled = false
345
- while (routeAttrIterator.hasNext()) {
346
- const attrElement = routeAttrIterator.next()
347
- const attrNodeId = getNodeId(attrElement.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression))
348
- const attrMapId = context.keys.composite.find((k) =>
349
- isEqual(k.key, {
350
- attr: attrNodeId!,
351
- route: routeId!,
352
- rest: restId!,
353
- })
354
- )?.id
355
- if (removalKey && removalKey.attr === attrNodeId) {
356
- deletedParamID = removedAttrId
357
- attrExpression.removeElement(attrElement)
358
- }
359
- if (attrMapId === document.guid && routeSysId === operationId) {
360
- if (document.action === 'DELETE') {
361
- deletedParamID = attrId
362
- attrExpression.removeElement(attrElement)
363
- } else {
364
- const attrEleObj = attrElement.asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
365
- cleanUpDefault(RouteAttrWithOutIdSchema, parsedAttrData, attrEleObj)
366
- mergeDataIntoObjectLiteral(attrEleObj, parsedAttrData)
367
- }
368
- isHandled = true
369
- }
370
- }
371
- if (!isHandled && document.action !== 'DELETE' && routeSysId === operationId) {
372
- cleanUpDefault(RouteAttrWithOutIdSchema, parsedAttrData)
373
- const element = attrExpression
374
- .addElement(stringify({}))
375
- .asKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
376
- mergeDataIntoObjectLiteral(element, parsedAttrData)
377
- const table = argName === 'headers' ? 'sys_ws_header' : 'sys_ws_query_parameter'
378
- const foundAttrId = context.keys.findExplicitKeyById(attrId)
379
-
380
- let uniqueId: string | undefined = ''
381
- if (foundAttrId) {
382
- uniqueId = attrId
383
- const currentKey = context.keys.findExplicitKeyById(uniqueId!)!
384
- getOrCreatePropertyAssignment(element, '$id', stringify(currentKey))
385
- } else {
386
- uniqueId = transformId(element, '$id', attrId, table, context)
387
- }
388
- context.keys.registerCompositeId(
389
- `${table}_map`,
390
- {
391
- attr: context.keys.findExplicitKeyById(uniqueId!)!,
392
- route: routeId!,
393
- rest: restId!,
394
- },
395
- document.guid
396
- )
397
- }
398
- }
399
- }
400
-
401
- if (deletedParamID) {
402
- /**
403
- * Conditions under which record call needs to be generated
404
- * 1. Check if this mapping record is the last record that associate the param to the rest.
405
- * 2. Check if its mentioned in potentailIds.
406
- * If both of the above conditions pass then create a record call, because this param is not consumed
407
- * anywhere and is going to be permanently removed from the rest.
408
- */
409
- const attrName = document.data!['table'] === 'sys_ws_header_map' ? 'headers' : 'parameters'
410
- if (
411
- !isParamAssociated(document, attrName, context, deletedParamID) &&
412
- potentialRecordCallRouteParams.has(deletedParamID)
413
- ) {
414
- createRecordCall(deletedParamID, context)
415
- potentialRecordCallRouteParams.delete(deletedParamID)
416
- }
417
- }
418
- return true
419
- }
@@ -1,228 +0,0 @@
1
- import { RestApiSchema, RouteAttributes } from '@servicenow/sdk-core/runtime/rest'
2
- import { Record, Data } from '@servicenow/sdk-core/runtime/db'
3
- import { z } from 'zod'
4
- import * as _ from 'lodash'
5
- import { Context } from '@servicenow/sdk-build-core'
6
- import type { TableName } from '@servicenow/sdk-core/runtime/db'
7
-
8
- export type Versions = z.infer<typeof RestApiSchema.shape.versions>
9
- export type Routes = z.infer<typeof RestApiSchema.shape.routes>
10
- export type EnforceAcl = z.infer<typeof RestApiSchema.shape.enforce_acl>
11
- type Route = Routes[number]
12
-
13
- export const mergeACLIds = (acls: any[]) => _.join(acls, ',')
14
-
15
- export function generateVersionRecords(
16
- context: Context,
17
- defaultVersion: string,
18
- versions: Versions,
19
- apiRecord: Record<'sys_ws_definition'>
20
- ) {
21
- const versionsRecords: Record[] = []
22
- const versionRecordMap: Map<string, Record<'sys_ws_version'>> = new Map()
23
-
24
- for (const version of versions) {
25
- const versionId = `v${version.version}`
26
- const versionRecord = Record({
27
- table: 'sys_ws_version',
28
- $id: context.keys.registerExplicitId('sys_ws_version', version.$id),
29
- data: {
30
- active: version.active,
31
- deprecated: version.deprecated,
32
- is_default: defaultVersion === versionId ? true : false,
33
- short_description: version.short_description,
34
- version: version.version,
35
- version_id: versionId,
36
- web_service_definition: apiRecord.$id as any,
37
- },
38
- })
39
- versionsRecords.push(versionRecord)
40
- /** versions have to be unique */
41
- if (versionRecordMap.has(versionId)) {
42
- throw Error(
43
- `Found duplicated version: ${version.version} in ${apiRecord.$id}. All versions must be unique.`
44
- )
45
- }
46
- versionRecordMap.set(versionId, versionRecord)
47
- }
48
-
49
- return {
50
- records: versionsRecords,
51
- mapping: versionRecordMap,
52
- }
53
- }
54
-
55
- function generateRouteAttributesRecords<T extends TableName, M extends TableName>(
56
- context: Context,
57
- restId: string | number,
58
- routeId: string | number,
59
- attributes: RouteAttributes[],
60
- collection: T,
61
- mapping_collection: M,
62
- attrField: string,
63
- apiRecord: Record<'sys_ws_definition'>,
64
- routeRecord: Record<'sys_ws_operation'>,
65
- recordMap: Map<string, Record>
66
- ) {
67
- const attributeRecords: Record[] = []
68
-
69
- for (const attribute of attributes) {
70
- const attrId = context.keys.registerExplicitId(collection as string, attribute.$id)
71
- const attributeRecord = Record({
72
- table: collection,
73
- $id: attrId,
74
- data: {
75
- name: attribute.name,
76
- required: attribute.required,
77
- short_description: attribute.short_description,
78
- example_value: attribute.example_value,
79
- web_service_definition: apiRecord.$id,
80
- } as Data<T>,
81
- })
82
- /**
83
- * In RestApi since we associate same parameter and headers with multiple routes
84
- * during serialization we would end up generating duplicated records for headers
85
- * and parameters. Here we throw error if two duplicated record have different data.
86
- * Note: two duplicated records would have different data when user refercening a parameter
87
- * in multiple routes updated in just one place.
88
- */
89
- checkForDuplicateRecords(recordMap, attrId, attributeRecord, attributeRecords)
90
-
91
- const attrMapId = context.keys.registerCompositeId(mapping_collection as string, {
92
- attr: attribute.$id,
93
- route: routeId,
94
- rest: restId,
95
- })
96
- const attrMapRecord = Record({
97
- table: mapping_collection,
98
- $id: attrMapId,
99
- data: {
100
- web_service_operation: routeRecord.$id,
101
- [attrField]: attributeRecord.$id,
102
- } as unknown as Data<M>,
103
- })
104
- attributeRecords.push(attrMapRecord)
105
- }
106
-
107
- return attributeRecords
108
- }
109
-
110
- function checkForDuplicateRecords(
111
- recordMap: Map<string, Record>,
112
- recordId: string,
113
- record: Record,
114
- attrRecords: Record[]
115
- ) {
116
- if (!recordMap.has(recordId)) {
117
- recordMap.set(recordId, record)
118
- attrRecords.push(record)
119
- } else {
120
- const matchRec = recordMap.get(recordId)
121
- const { web_service_definition: _mwd, ...mRest } = matchRec!.data as any
122
- const { web_service_definition: _wd, ...rest } = record.data as any
123
- if (!_.isEqual(rest, mRest)) {
124
- throw Error(
125
- `Found duplicate route attribute map records starting with id: ${recordId}, to have conflicting data.`
126
- )
127
- }
128
- }
129
- }
130
-
131
- export function generateRoutesAndRouteAttrRecords(
132
- context: Context,
133
- restId: string | number,
134
- routes: Routes,
135
- apiData: any,
136
- apiRecord: Record<'sys_ws_definition'>,
137
- versionMap: Map<string, Record<'sys_ws_version'>>
138
- ) {
139
- const routesRecords: Record[] = []
140
- const headerRecordMap: Map<string, Record> = new Map()
141
- const paramRecordMap: Map<string, Record> = new Map()
142
-
143
- for (const route of routes) {
144
- const routeParameters = route.parameters
145
- const routeHeaders = route.headers
146
- const defaultOperationURI = `${apiData.base_uri}${route.path}`
147
- const baseOperationURI = `/api/${apiData.namespace}`
148
- const remOperationURI = `${apiData.service_id}${route.path}`
149
- const operationURI = route.version
150
- ? `${baseOperationURI}/v${route.version}/${remOperationURI}`
151
- : `${baseOperationURI}/${remOperationURI}`
152
-
153
- const version = getRestRouteVersion(route, versionMap)
154
- const routeRecord = Record({
155
- table: 'sys_ws_operation',
156
- $id: context.keys.registerExplicitId('sys_ws_operation', route.$id),
157
- data: {
158
- name: route.name,
159
- active: route.active,
160
- consumes: route.consumes,
161
- consumes_customized: apiData.consumes === route.consumes ? false : true,
162
- default_operation_uri: `v${route.version}` === apiData.default_version ? defaultOperationURI : '',
163
- http_method: route.method,
164
- operation_script: route.script,
165
- operation_uri: operationURI,
166
- produces: route.produces,
167
- produces_customized: apiData.produces === route.produces ? false : true,
168
- relative_path: route.path,
169
- enforce_acl: mergeACLIds(route.enforce_acl) as any,
170
- requires_acl_authorization: route.authorization,
171
- requires_authentication: route.authentication,
172
- requires_snc_internal_role: route.internalRole,
173
- short_description: route.short_description,
174
- request_example: route.request_example,
175
- web_service_definition: apiRecord.$id as any,
176
- web_service_version: typeof version === 'object' ? (version.$id as any) : version,
177
- ...(route.policy && { sys_policy: route.policy }),
178
- },
179
- })
180
- routesRecords.push(routeRecord)
181
-
182
- /** generates the sys_ws_query_parameter and sys_ws_query_parameter_map records */
183
- const routeParamRecords = generateRouteAttributesRecords(
184
- context,
185
- restId,
186
- route.$id,
187
- routeParameters,
188
- 'sys_ws_query_parameter',
189
- 'sys_ws_query_parameter_map',
190
- 'web_service_query_parameter',
191
- apiRecord,
192
- routeRecord,
193
- paramRecordMap
194
- )
195
-
196
- /** generates the sys_ws_header and sys_ws_header_map records */
197
- const routeHeaderRecords = generateRouteAttributesRecords(
198
- context,
199
- restId,
200
- route.$id,
201
- routeHeaders,
202
- 'sys_ws_header',
203
- 'sys_ws_header_map',
204
- 'web_service_header',
205
- apiRecord,
206
- routeRecord,
207
- headerRecordMap
208
- )
209
- routesRecords.push(...[...routeParamRecords, ...routeHeaderRecords])
210
- }
211
-
212
- return routesRecords
213
- }
214
-
215
- function getRestRouteVersion(route: Route, versionMap: Map<string, Record<'sys_ws_version'>>) {
216
- /** throws error when a route specifies version not mentioned in versions array of rest*/
217
- const version = ''
218
- if (route.version) {
219
- if (!versionMap.has(`v${route.version}`)) {
220
- throw Error(
221
- `Unable to resolve version record for version ${route.version}. Check if the version is listed in your API versions list.`
222
- )
223
- }
224
- return versionMap.get(`v${route.version}`)!
225
- }
226
-
227
- return version
228
- }