@servicenow/sdk-build-plugins 4.2.0 → 4.4.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 (349) hide show
  1. package/dist/acl-plugin.js +11 -0
  2. package/dist/acl-plugin.js.map +1 -1
  3. package/dist/applicability-plugin.d.ts +2 -0
  4. package/dist/applicability-plugin.js +72 -0
  5. package/dist/applicability-plugin.js.map +1 -0
  6. package/dist/atf/test-plugin.js +5 -2
  7. package/dist/atf/test-plugin.js.map +1 -1
  8. package/dist/basic-syntax-plugin.js +7 -1
  9. package/dist/basic-syntax-plugin.js.map +1 -1
  10. package/dist/business-rule-plugin.js +1 -0
  11. package/dist/business-rule-plugin.js.map +1 -1
  12. package/dist/call-expression-plugin.js +1 -107
  13. package/dist/call-expression-plugin.js.map +1 -1
  14. package/dist/column/column-to-record.d.ts +10 -3
  15. package/dist/column/column-to-record.js +44 -7
  16. package/dist/column/column-to-record.js.map +1 -1
  17. package/dist/column-plugin.d.ts +3 -1
  18. package/dist/column-plugin.js +12 -12
  19. package/dist/column-plugin.js.map +1 -1
  20. package/dist/dashboard/dashboard-component-property-defaults.d.ts +152 -0
  21. package/dist/dashboard/dashboard-component-property-defaults.js +264 -0
  22. package/dist/dashboard/dashboard-component-property-defaults.js.map +1 -0
  23. package/dist/dashboard/dashboard-component-resolver.d.ts +13 -0
  24. package/dist/dashboard/dashboard-component-resolver.js +69 -0
  25. package/dist/dashboard/dashboard-component-resolver.js.map +1 -0
  26. package/dist/dashboard/dashboard-plugin.d.ts +12 -0
  27. package/dist/dashboard/dashboard-plugin.js +397 -0
  28. package/dist/dashboard/dashboard-plugin.js.map +1 -0
  29. package/dist/data-plugin.d.ts +3 -0
  30. package/dist/data-plugin.js +61 -113
  31. package/dist/data-plugin.js.map +1 -1
  32. package/dist/email-notification-plugin.d.ts +2 -0
  33. package/dist/email-notification-plugin.js +541 -0
  34. package/dist/email-notification-plugin.js.map +1 -0
  35. package/dist/flow/constants/flow-plugin-constants.d.ts +58 -0
  36. package/dist/flow/constants/flow-plugin-constants.js +70 -0
  37. package/dist/flow/constants/flow-plugin-constants.js.map +1 -0
  38. package/dist/flow/flow-logic/flow-logic-constants.d.ts +38 -0
  39. package/dist/flow/flow-logic/flow-logic-constants.js +118 -0
  40. package/dist/flow/flow-logic/flow-logic-constants.js.map +1 -0
  41. package/dist/flow/flow-logic/flow-logic-diagnostics.d.ts +19 -0
  42. package/dist/flow/flow-logic/flow-logic-diagnostics.js +503 -0
  43. package/dist/flow/flow-logic/flow-logic-diagnostics.js.map +1 -0
  44. package/dist/flow/flow-logic/flow-logic-plugin-helpers.d.ts +62 -0
  45. package/dist/flow/flow-logic/flow-logic-plugin-helpers.js +2092 -0
  46. package/dist/flow/flow-logic/flow-logic-plugin-helpers.js.map +1 -0
  47. package/dist/flow/flow-logic/flow-logic-plugin.d.ts +52 -0
  48. package/dist/flow/flow-logic/flow-logic-plugin.js +283 -0
  49. package/dist/flow/flow-logic/flow-logic-plugin.js.map +1 -0
  50. package/dist/flow/flow-logic/flow-logic-shapes.d.ts +104 -0
  51. package/dist/flow/flow-logic/flow-logic-shapes.js +201 -0
  52. package/dist/flow/flow-logic/flow-logic-shapes.js.map +1 -0
  53. package/dist/flow/plugins/approval-rules-plugin.d.ts +2 -0
  54. package/dist/flow/plugins/approval-rules-plugin.js +49 -0
  55. package/dist/flow/plugins/approval-rules-plugin.js.map +1 -0
  56. package/dist/flow/plugins/flow-action-definition-plugin.d.ts +2 -0
  57. package/dist/flow/plugins/flow-action-definition-plugin.js +286 -0
  58. package/dist/flow/plugins/flow-action-definition-plugin.js.map +1 -0
  59. package/dist/flow/plugins/flow-data-pill-plugin.d.ts +9 -0
  60. package/dist/flow/plugins/flow-data-pill-plugin.js +212 -0
  61. package/dist/flow/plugins/flow-data-pill-plugin.js.map +1 -0
  62. package/dist/flow/plugins/flow-definition-plugin.d.ts +2 -0
  63. package/dist/flow/plugins/flow-definition-plugin.js +1668 -0
  64. package/dist/flow/plugins/flow-definition-plugin.js.map +1 -0
  65. package/dist/flow/plugins/flow-diagnostics-plugin.d.ts +26 -0
  66. package/dist/flow/plugins/flow-diagnostics-plugin.js +217 -0
  67. package/dist/flow/plugins/flow-diagnostics-plugin.js.map +1 -0
  68. package/dist/flow/plugins/flow-instance-plugin.d.ts +12 -0
  69. package/dist/flow/plugins/flow-instance-plugin.js +1205 -0
  70. package/dist/flow/plugins/flow-instance-plugin.js.map +1 -0
  71. package/dist/flow/plugins/flow-trigger-instance-plugin.d.ts +2 -0
  72. package/dist/flow/plugins/flow-trigger-instance-plugin.js +338 -0
  73. package/dist/flow/plugins/flow-trigger-instance-plugin.js.map +1 -0
  74. package/dist/flow/plugins/inline-script-plugin.d.ts +39 -0
  75. package/dist/flow/plugins/inline-script-plugin.js +80 -0
  76. package/dist/flow/plugins/inline-script-plugin.js.map +1 -0
  77. package/dist/flow/plugins/step-definition-plugin.d.ts +5 -0
  78. package/dist/flow/plugins/step-definition-plugin.js +71 -0
  79. package/dist/flow/plugins/step-definition-plugin.js.map +1 -0
  80. package/dist/flow/plugins/step-instance-plugin.d.ts +31 -0
  81. package/dist/flow/plugins/step-instance-plugin.js +339 -0
  82. package/dist/flow/plugins/step-instance-plugin.js.map +1 -0
  83. package/dist/flow/plugins/trigger-plugin.d.ts +2 -0
  84. package/dist/flow/plugins/trigger-plugin.js +96 -0
  85. package/dist/flow/plugins/trigger-plugin.js.map +1 -0
  86. package/dist/flow/plugins/wfa-datapill-plugin.d.ts +15 -0
  87. package/dist/flow/plugins/wfa-datapill-plugin.js +178 -0
  88. package/dist/flow/plugins/wfa-datapill-plugin.js.map +1 -0
  89. package/dist/flow/utils/approval-rules-processor.d.ts +13 -0
  90. package/dist/flow/utils/approval-rules-processor.js +267 -0
  91. package/dist/flow/utils/approval-rules-processor.js.map +1 -0
  92. package/dist/flow/utils/built-in-complex-objects.d.ts +19 -0
  93. package/dist/flow/utils/built-in-complex-objects.js +62 -0
  94. package/dist/flow/utils/built-in-complex-objects.js.map +1 -0
  95. package/dist/flow/utils/complex-object-resolver.d.ts +8 -0
  96. package/dist/flow/utils/complex-object-resolver.js +614 -0
  97. package/dist/flow/utils/complex-object-resolver.js.map +1 -0
  98. package/dist/flow/utils/complex-objects.d.ts +36 -0
  99. package/dist/flow/utils/complex-objects.js +481 -0
  100. package/dist/flow/utils/complex-objects.js.map +1 -0
  101. package/dist/flow/utils/data-pill-shapes.d.ts +58 -0
  102. package/dist/flow/utils/data-pill-shapes.js +135 -0
  103. package/dist/flow/utils/data-pill-shapes.js.map +1 -0
  104. package/dist/flow/utils/datapill-transformer.d.ts +110 -0
  105. package/dist/flow/utils/datapill-transformer.js +503 -0
  106. package/dist/flow/utils/datapill-transformer.js.map +1 -0
  107. package/dist/flow/utils/flow-constants.d.ts +72 -0
  108. package/dist/flow/utils/flow-constants.js +230 -0
  109. package/dist/flow/utils/flow-constants.js.map +1 -0
  110. package/dist/flow/utils/flow-io-to-record.d.ts +44 -0
  111. package/dist/flow/utils/flow-io-to-record.js +409 -0
  112. package/dist/flow/utils/flow-io-to-record.js.map +1 -0
  113. package/dist/flow/utils/flow-shapes.d.ts +161 -0
  114. package/dist/flow/utils/flow-shapes.js +255 -0
  115. package/dist/flow/utils/flow-shapes.js.map +1 -0
  116. package/dist/flow/utils/flow-to-xml.d.ts +16 -0
  117. package/dist/flow/utils/flow-to-xml.js +237 -0
  118. package/dist/flow/utils/flow-to-xml.js.map +1 -0
  119. package/dist/flow/utils/flow-variable-processor.d.ts +51 -0
  120. package/dist/flow/utils/flow-variable-processor.js +69 -0
  121. package/dist/flow/utils/flow-variable-processor.js.map +1 -0
  122. package/dist/flow/utils/label-cache-parser.d.ts +7 -0
  123. package/dist/flow/utils/label-cache-parser.js +24 -0
  124. package/dist/flow/utils/label-cache-parser.js.map +1 -0
  125. package/dist/flow/utils/label-cache-processor.d.ts +119 -0
  126. package/dist/flow/utils/label-cache-processor.js +719 -0
  127. package/dist/flow/utils/label-cache-processor.js.map +1 -0
  128. package/dist/flow/utils/pill-string-parser.d.ts +88 -0
  129. package/dist/flow/utils/pill-string-parser.js +306 -0
  130. package/dist/flow/utils/pill-string-parser.js.map +1 -0
  131. package/dist/flow/utils/schema-to-flow-object.d.ts +22 -0
  132. package/dist/flow/utils/schema-to-flow-object.js +318 -0
  133. package/dist/flow/utils/schema-to-flow-object.js.map +1 -0
  134. package/dist/flow/utils/service-catalog.d.ts +47 -0
  135. package/dist/flow/utils/service-catalog.js +137 -0
  136. package/dist/flow/utils/service-catalog.js.map +1 -0
  137. package/dist/flow/utils/utils.d.ts +117 -0
  138. package/dist/flow/utils/utils.js +345 -0
  139. package/dist/flow/utils/utils.js.map +1 -0
  140. package/dist/index.d.ts +20 -1
  141. package/dist/index.js +21 -1
  142. package/dist/index.js.map +1 -1
  143. package/dist/list-plugin.js +1 -1
  144. package/dist/list-plugin.js.map +1 -1
  145. package/dist/now-attach-plugin.d.ts +1 -0
  146. package/dist/now-attach-plugin.js +10 -10
  147. package/dist/now-attach-plugin.js.map +1 -1
  148. package/dist/now-ref-plugin.js +1 -1
  149. package/dist/now-ref-plugin.js.map +1 -1
  150. package/dist/record-plugin.d.ts +29 -0
  151. package/dist/record-plugin.js +66 -7
  152. package/dist/record-plugin.js.map +1 -1
  153. package/dist/repack/index.d.ts +2 -0
  154. package/dist/repack/index.js +8 -0
  155. package/dist/repack/index.js.map +1 -1
  156. package/dist/rest-api-plugin.js +54 -44
  157. package/dist/rest-api-plugin.js.map +1 -1
  158. package/dist/server-module-plugin/index.d.ts +10 -0
  159. package/dist/server-module-plugin/index.js +83 -59
  160. package/dist/server-module-plugin/index.js.map +1 -1
  161. package/dist/service-catalog/catalog-clientscript-plugin.d.ts +2 -0
  162. package/dist/service-catalog/catalog-clientscript-plugin.js +117 -0
  163. package/dist/service-catalog/catalog-clientscript-plugin.js.map +1 -0
  164. package/dist/service-catalog/catalog-item-plugin.d.ts +2 -0
  165. package/dist/service-catalog/catalog-item-plugin.js +115 -0
  166. package/dist/service-catalog/catalog-item-plugin.js.map +1 -0
  167. package/dist/service-catalog/catalog-ui-policy-plugin.d.ts +2 -0
  168. package/dist/service-catalog/catalog-ui-policy-plugin.js +266 -0
  169. package/dist/service-catalog/catalog-ui-policy-plugin.js.map +1 -0
  170. package/dist/service-catalog/index.d.ts +5 -0
  171. package/dist/service-catalog/index.js +22 -0
  172. package/dist/service-catalog/index.js.map +1 -0
  173. package/dist/service-catalog/record-to-shape.d.ts +6 -0
  174. package/dist/service-catalog/record-to-shape.js +93 -0
  175. package/dist/service-catalog/record-to-shape.js.map +1 -0
  176. package/dist/service-catalog/sc-record-producer-plugin.d.ts +2 -0
  177. package/dist/service-catalog/sc-record-producer-plugin.js +140 -0
  178. package/dist/service-catalog/sc-record-producer-plugin.js.map +1 -0
  179. package/dist/service-catalog/service-catalog-base.d.ts +311 -0
  180. package/dist/service-catalog/service-catalog-base.js +542 -0
  181. package/dist/service-catalog/service-catalog-base.js.map +1 -0
  182. package/dist/service-catalog/service-catalog-diagnostics.d.ts +45 -0
  183. package/dist/service-catalog/service-catalog-diagnostics.js +172 -0
  184. package/dist/service-catalog/service-catalog-diagnostics.js.map +1 -0
  185. package/dist/service-catalog/shape-to-record.d.ts +8 -0
  186. package/dist/service-catalog/shape-to-record.js +235 -0
  187. package/dist/service-catalog/shape-to-record.js.map +1 -0
  188. package/dist/service-catalog/utils.d.ts +323 -0
  189. package/dist/service-catalog/utils.js +1216 -0
  190. package/dist/service-catalog/utils.js.map +1 -0
  191. package/dist/service-catalog/variable-helper.d.ts +43 -0
  192. package/dist/service-catalog/variable-helper.js +92 -0
  193. package/dist/service-catalog/variable-helper.js.map +1 -0
  194. package/dist/service-catalog/variable-set-plugin.d.ts +2 -0
  195. package/dist/service-catalog/variable-set-plugin.js +175 -0
  196. package/dist/service-catalog/variable-set-plugin.js.map +1 -0
  197. package/dist/service-catalog/variables-transform.d.ts +139 -0
  198. package/dist/service-catalog/variables-transform.js +403 -0
  199. package/dist/service-catalog/variables-transform.js.map +1 -0
  200. package/dist/sla/sla-validators.d.ts +61 -0
  201. package/dist/sla/sla-validators.js +224 -0
  202. package/dist/sla/sla-validators.js.map +1 -0
  203. package/dist/sla-plugin.d.ts +5 -0
  204. package/dist/sla-plugin.js +280 -0
  205. package/dist/sla-plugin.js.map +1 -0
  206. package/dist/static-content-plugin.js +25 -2
  207. package/dist/static-content-plugin.js.map +1 -1
  208. package/dist/table-plugin.js +32 -15
  209. package/dist/table-plugin.js.map +1 -1
  210. package/dist/ui-page-plugin.js +832 -19
  211. package/dist/ui-page-plugin.js.map +1 -1
  212. package/dist/ui-policy-plugin.js +5 -7
  213. package/dist/ui-policy-plugin.js.map +1 -1
  214. package/dist/utils.d.ts +10 -1
  215. package/dist/utils.js +16 -0
  216. package/dist/utils.js.map +1 -1
  217. package/dist/ux-list-menu-config-plugin.d.ts +2 -0
  218. package/dist/ux-list-menu-config-plugin.js +292 -0
  219. package/dist/ux-list-menu-config-plugin.js.map +1 -0
  220. package/dist/workspace-plugin/chrome-tab.d.ts +2 -0
  221. package/dist/workspace-plugin/chrome-tab.js +46 -0
  222. package/dist/workspace-plugin/chrome-tab.js.map +1 -0
  223. package/dist/workspace-plugin/constants.d.ts +52 -0
  224. package/dist/workspace-plugin/constants.js +56 -0
  225. package/dist/workspace-plugin/constants.js.map +1 -0
  226. package/dist/workspace-plugin/fluent-utils.d.ts +9 -0
  227. package/dist/workspace-plugin/fluent-utils.js +60 -0
  228. package/dist/workspace-plugin/fluent-utils.js.map +1 -0
  229. package/dist/workspace-plugin/page.d.ts +8 -0
  230. package/dist/workspace-plugin/page.js +108 -0
  231. package/dist/workspace-plugin/page.js.map +1 -0
  232. package/dist/workspace-plugin/screen.d.ts +1 -0
  233. package/dist/workspace-plugin/screen.js +38 -0
  234. package/dist/workspace-plugin/screen.js.map +1 -0
  235. package/dist/workspace-plugin/templates/index.d.ts +10 -0
  236. package/dist/workspace-plugin/templates/index.js +20 -0
  237. package/dist/workspace-plugin/templates/index.js.map +1 -0
  238. package/dist/workspace-plugin/templates/record-page-composition.d.ts +1 -0
  239. package/dist/workspace-plugin/templates/record-page-composition.js +4043 -0
  240. package/dist/workspace-plugin/templates/record-page-composition.js.map +1 -0
  241. package/dist/workspace-plugin/templates/record-page-data.d.ts +1 -0
  242. package/dist/workspace-plugin/templates/record-page-data.js +527 -0
  243. package/dist/workspace-plugin/templates/record-page-data.js.map +1 -0
  244. package/dist/workspace-plugin/templates/record-page-interalEventMappings.d.ts +1 -0
  245. package/dist/workspace-plugin/templates/record-page-interalEventMappings.js +39 -0
  246. package/dist/workspace-plugin/templates/record-page-interalEventMappings.js.map +1 -0
  247. package/dist/workspace-plugin/templates/record-page-layoutModel.d.ts +1 -0
  248. package/dist/workspace-plugin/templates/record-page-layoutModel.js +55 -0
  249. package/dist/workspace-plugin/templates/record-page-layoutModel.js.map +1 -0
  250. package/dist/workspace-plugin/templates/record-page-properties.d.ts +1 -0
  251. package/dist/workspace-plugin/templates/record-page-properties.js +135 -0
  252. package/dist/workspace-plugin/templates/record-page-properties.js.map +1 -0
  253. package/dist/workspace-plugin/templates/record-page.d.ts +3 -0
  254. package/dist/workspace-plugin/templates/record-page.js +8 -0
  255. package/dist/workspace-plugin/templates/record-page.js.map +1 -0
  256. package/dist/workspace-plugin.d.ts +2 -0
  257. package/dist/workspace-plugin.js +453 -0
  258. package/dist/workspace-plugin.js.map +1 -0
  259. package/package.json +10 -12
  260. package/src/acl-plugin.ts +16 -1
  261. package/src/applicability-plugin.ts +82 -0
  262. package/src/atf/test-plugin.ts +6 -3
  263. package/src/basic-syntax-plugin.ts +10 -1
  264. package/src/business-rule-plugin.ts +2 -1
  265. package/src/call-expression-plugin.ts +2 -130
  266. package/src/column/column-to-record.ts +54 -8
  267. package/src/column-plugin.ts +29 -13
  268. package/src/dashboard/dashboard-component-property-defaults.ts +277 -0
  269. package/src/dashboard/dashboard-component-resolver.ts +69 -0
  270. package/src/dashboard/dashboard-plugin.ts +450 -0
  271. package/src/data-plugin.ts +67 -139
  272. package/src/email-notification-plugin.ts +850 -0
  273. package/src/flow/constants/flow-plugin-constants.ts +79 -0
  274. package/src/flow/flow-logic/flow-logic-constants.ts +120 -0
  275. package/src/flow/flow-logic/flow-logic-diagnostics.ts +591 -0
  276. package/src/flow/flow-logic/flow-logic-plugin-helpers.ts +2550 -0
  277. package/src/flow/flow-logic/flow-logic-plugin.ts +337 -0
  278. package/src/flow/flow-logic/flow-logic-shapes.ts +215 -0
  279. package/src/flow/plugins/approval-rules-plugin.ts +48 -0
  280. package/src/flow/plugins/flow-action-definition-plugin.ts +295 -0
  281. package/src/flow/plugins/flow-data-pill-plugin.ts +258 -0
  282. package/src/flow/plugins/flow-definition-plugin.ts +2173 -0
  283. package/src/flow/plugins/flow-diagnostics-plugin.ts +280 -0
  284. package/src/flow/plugins/flow-instance-plugin.ts +1499 -0
  285. package/src/flow/plugins/flow-trigger-instance-plugin.ts +444 -0
  286. package/src/flow/plugins/inline-script-plugin.ts +83 -0
  287. package/src/flow/plugins/step-definition-plugin.ts +67 -0
  288. package/src/flow/plugins/step-instance-plugin.ts +431 -0
  289. package/src/flow/plugins/trigger-plugin.ts +95 -0
  290. package/src/flow/plugins/wfa-datapill-plugin.ts +213 -0
  291. package/src/flow/utils/approval-rules-processor.ts +298 -0
  292. package/src/flow/utils/built-in-complex-objects.ts +81 -0
  293. package/src/flow/utils/complex-object-resolver.ts +875 -0
  294. package/src/flow/utils/complex-objects.ts +656 -0
  295. package/src/flow/utils/data-pill-shapes.ts +165 -0
  296. package/src/flow/utils/datapill-transformer.ts +632 -0
  297. package/src/flow/utils/flow-constants.ts +285 -0
  298. package/src/flow/utils/flow-io-to-record.ts +533 -0
  299. package/src/flow/utils/flow-shapes.ts +296 -0
  300. package/src/flow/utils/flow-to-xml.ts +318 -0
  301. package/src/flow/utils/flow-variable-processor.ts +100 -0
  302. package/src/flow/utils/label-cache-parser.ts +37 -0
  303. package/src/flow/utils/label-cache-processor.ts +870 -0
  304. package/src/flow/utils/pill-string-parser.ts +375 -0
  305. package/src/flow/utils/schema-to-flow-object.ts +385 -0
  306. package/src/flow/utils/service-catalog.ts +174 -0
  307. package/src/flow/utils/utils.ts +395 -0
  308. package/src/index.ts +20 -1
  309. package/src/list-plugin.ts +1 -1
  310. package/src/now-attach-plugin.ts +14 -11
  311. package/src/now-ref-plugin.ts +1 -1
  312. package/src/record-plugin.ts +76 -11
  313. package/src/repack/index.ts +14 -0
  314. package/src/rest-api-plugin.ts +62 -50
  315. package/src/server-module-plugin/index.ts +112 -86
  316. package/src/service-catalog/catalog-clientscript-plugin.ts +140 -0
  317. package/src/service-catalog/catalog-item-plugin.ts +162 -0
  318. package/src/service-catalog/catalog-ui-policy-plugin.ts +324 -0
  319. package/src/service-catalog/index.ts +5 -0
  320. package/src/service-catalog/record-to-shape.ts +109 -0
  321. package/src/service-catalog/sc-record-producer-plugin.ts +201 -0
  322. package/src/service-catalog/service-catalog-base.ts +600 -0
  323. package/src/service-catalog/service-catalog-diagnostics.ts +254 -0
  324. package/src/service-catalog/shape-to-record.ts +279 -0
  325. package/src/service-catalog/utils.ts +1455 -0
  326. package/src/service-catalog/variable-helper.ts +135 -0
  327. package/src/service-catalog/variable-set-plugin.ts +197 -0
  328. package/src/service-catalog/variables-transform.ts +438 -0
  329. package/src/sla/sla-validators.ts +331 -0
  330. package/src/sla-plugin.ts +358 -0
  331. package/src/static-content-plugin.ts +25 -2
  332. package/src/table-plugin.ts +49 -16
  333. package/src/ui-page-plugin.ts +1063 -20
  334. package/src/ui-policy-plugin.ts +5 -9
  335. package/src/utils.ts +24 -1
  336. package/src/ux-list-menu-config-plugin.ts +312 -0
  337. package/src/workspace-plugin/chrome-tab.ts +44 -0
  338. package/src/workspace-plugin/constants.ts +53 -0
  339. package/src/workspace-plugin/fluent-utils.ts +60 -0
  340. package/src/workspace-plugin/page.ts +139 -0
  341. package/src/workspace-plugin/screen.ts +34 -0
  342. package/src/workspace-plugin/templates/index.ts +17 -0
  343. package/src/workspace-plugin/templates/record-page-composition.ts +4051 -0
  344. package/src/workspace-plugin/templates/record-page-data.ts +523 -0
  345. package/src/workspace-plugin/templates/record-page-interalEventMappings.ts +35 -0
  346. package/src/workspace-plugin/templates/record-page-layoutModel.ts +51 -0
  347. package/src/workspace-plugin/templates/record-page-properties.ts +131 -0
  348. package/src/workspace-plugin/templates/record-page.ts +6 -0
  349. package/src/workspace-plugin.ts +574 -0
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApprovalDueDateShape = exports.ApprovalRulesShape = exports.InlineScriptShape = exports.ActionSubflowInstanceShape = exports.FDInstanceShape = void 0;
4
+ const sdk_build_core_1 = require("@servicenow/sdk-build-core");
5
+ const now_id_plugin_1 = require("../../now-id-plugin");
6
+ const approval_rules_processor_1 = require("./approval-rules-processor");
7
+ const flow_constants_1 = require("./flow-constants");
8
+ /**
9
+ * Abstract base class for all flow definition instances.
10
+ * Extends CallExpressionShape to provide common functionality for flow constructs.
11
+ */
12
+ class FDInstanceShape extends sdk_build_core_1.CallExpressionShape {
13
+ constructor(source, callee, args) {
14
+ super({ source, callee, args });
15
+ }
16
+ getInstanceType() {
17
+ return this.getCallee();
18
+ }
19
+ }
20
+ exports.FDInstanceShape = FDInstanceShape;
21
+ /**
22
+ * Shape class for Action and Subflow instances.
23
+ * Handles the pattern: Action(definition, config, props)
24
+ *
25
+ * @example
26
+ * Action(createIncident, { $id: Now.ID['incident_0'], annotation: 'Create incident' }, { shortDescription: 'Issue' })
27
+ * Subflow(mySubflow, { $id: Now.ID['subflow_0'], annotation: 'Process data' }, { input: 'value' })
28
+ */
29
+ class ActionSubflowInstanceShape extends FDInstanceShape {
30
+ constructor({ source, instanceDefinition, instanceProps, instanceType, configObject, }) {
31
+ const configObj = configObject;
32
+ super(source, instanceType, [instanceDefinition, configObj, instanceProps]);
33
+ }
34
+ getInstanceDefinition() {
35
+ const arg0 = this.getArgument(0);
36
+ if (arg0.isString()) {
37
+ return arg0.as(sdk_build_core_1.StringShape);
38
+ }
39
+ return arg0.as(sdk_build_core_1.Record);
40
+ }
41
+ getInstanceProps() {
42
+ return this.getArgument(2).as(sdk_build_core_1.ObjectShape);
43
+ }
44
+ getSysId() {
45
+ const configObj = this.getArgument(1).as(sdk_build_core_1.ObjectShape);
46
+ return configObj.get('$id')?.as(now_id_plugin_1.NowIdShape);
47
+ }
48
+ getAnnotation() {
49
+ const configObj = this.getArgument(1).as(sdk_build_core_1.ObjectShape);
50
+ const annotation = configObj.get('annotation');
51
+ return annotation?.isString() ? annotation.asString() : undefined;
52
+ }
53
+ getInstanceUUID() {
54
+ const configObj = this.getArgument(1).as(sdk_build_core_1.ObjectShape);
55
+ const uuid = configObj.get('uuid');
56
+ return uuid?.isString() ? uuid.asString() : undefined;
57
+ }
58
+ }
59
+ exports.ActionSubflowInstanceShape = ActionSubflowInstanceShape;
60
+ /**
61
+ * Represents an inline script for ServiceNow Flow Designer actions and subflows.
62
+ *
63
+ * Inline scripts allow users to write JavaScript code directly in Flow action/subflow inputs
64
+ * without creating separate Script Includes or Business Rules. This shape wraps the script
65
+ * content and provides serialization to Flow Designer's JSON format.
66
+ *
67
+ * **Supported Formats:**
68
+ * - Template literals without substitutions: \`code\`
69
+ * - External files via Now.include: Now.include('./script.js')
70
+ *
71
+ * **Usage Example:**
72
+ * ```typescript
73
+ * Action(myAction, Now.ID['action_id'], {
74
+ * workNotes: `
75
+ * var number = fd_data.trigger.current.number;
76
+ * return 'Incident ' + number + ' created';
77
+ * `
78
+ * })
79
+ * ```
80
+ *
81
+ * **Architecture:**
82
+ * This shape is NOT created via a global plugin. Instead, detection happens contextually
83
+ * in FlowInstancePlugin.checkAndResolveInlineScripts() to ensure only template literals
84
+ * used as Action/Subflow inputs are converted to inline scripts. This prevents incorrectly
85
+ * converting template literals used elsewhere (logging, formatting, etc.).
86
+ *
87
+ * @extends TemplateExpressionShape
88
+ */
89
+ class InlineScriptShape extends sdk_build_core_1.TemplateExpressionShape {
90
+ scriptContent;
91
+ /**
92
+ * Creates an InlineScriptShape instance.
93
+ *
94
+ * @param source - The original TemplateExpressionShape from the AST
95
+ * @param scriptContent - The JavaScript code to execute (without backticks)
96
+ */
97
+ constructor({ source, scriptContent }) {
98
+ super({ source, literalText: scriptContent });
99
+ this.scriptContent = scriptContent;
100
+ }
101
+ /**
102
+ * Returns the raw script content without template literal backticks.
103
+ *
104
+ * @returns The JavaScript code as a string
105
+ */
106
+ getScriptContent() {
107
+ return this.scriptContent;
108
+ }
109
+ /**
110
+ * Serializes this inline script to ServiceNow Flow Designer JSON format.
111
+ *
112
+ * The output structure includes:
113
+ * - `scriptActive: true` - Indicates this field contains a script
114
+ * - `script` object - Contains the actual script content keyed by field name
115
+ * - Empty `value` and `displayValue` - Required by Flow Designer schema
116
+ *
117
+ * @param fieldName - The name of the action/subflow input field
118
+ * @returns Flow Designer JSON structure for inline scripts
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * inlineScript.toFlowDesignerJson('workNotes')
123
+ * // Returns:
124
+ * // {
125
+ * // name: 'workNotes',
126
+ * // scriptActive: true,
127
+ * // script: { workNotes: { scriptActive: true, script: '...' } },
128
+ * // value: '', displayValue: '', children: []
129
+ * // }
130
+ * ```
131
+ */
132
+ toFlowDesignerJson(fieldName) {
133
+ return {
134
+ name: fieldName,
135
+ value: '',
136
+ displayValue: '',
137
+ children: [],
138
+ scriptActive: true,
139
+ script: {
140
+ [fieldName]: {
141
+ scriptActive: true,
142
+ script: this.scriptContent,
143
+ },
144
+ },
145
+ };
146
+ }
147
+ }
148
+ exports.InlineScriptShape = InlineScriptShape;
149
+ /**
150
+ * Shape representing ApprovalRules
151
+ * Used with ApprovalRules() helper - Stores approval rules for Flow Designer
152
+ */
153
+ class ApprovalRulesShape extends sdk_build_core_1.ObjectShape {
154
+ constructor({ source, value }) {
155
+ super({ source, properties: value });
156
+ }
157
+ getApprovalRules() {
158
+ return super.getValue();
159
+ }
160
+ /**
161
+ * Returns code representation as ApprovalRules() helper call.
162
+ * @example 'wfa.approvalRules({"conditionType":"OR","ruleSets":[{"action":"Approves","conditionType":"AND","rules":[[{"rule_type":"Any","users":["_params.trigger.current.assigned_to"],"groups":[],"manual":false}]]},{"action":"Rejects","conditionType":"AND","rules":[[{"rule_type":"Any","users":[],"groups":[],"manual":true}]]}]})'
163
+ */
164
+ getCode() {
165
+ return `${flow_constants_1.APPROVAL_RULES_API_NAME}(${super.getCode()})`;
166
+ }
167
+ /**
168
+ * Returns a StringShape of the Approval Rules JSON
169
+ */
170
+ toString() {
171
+ const approvalRulesString = (0, approval_rules_processor_1.approvalRulesJsonToString)(this.getApprovalRules());
172
+ return sdk_build_core_1.Shape.from(this.getSource(), approvalRulesString).toString();
173
+ }
174
+ static from(source, text) {
175
+ return new ApprovalRulesShape({
176
+ source,
177
+ value: (0, approval_rules_processor_1.approvalRulesStringToJson)(text.getValue()),
178
+ });
179
+ }
180
+ }
181
+ exports.ApprovalRulesShape = ApprovalRulesShape;
182
+ /**
183
+ * Shape representing ApprovalDueDate
184
+ * Used with ApprovalDueDate() helper - Stores approval due date configuration for Flow Designer
185
+ */
186
+ class ApprovalDueDateShape extends sdk_build_core_1.ObjectShape {
187
+ constructor({ source, value }) {
188
+ super({ source, properties: value });
189
+ }
190
+ getApprovalDueDate() {
191
+ return super.getValue();
192
+ }
193
+ /**
194
+ * Returns code representation as ApprovalDueDate() helper call.
195
+ * @example 'wfa.approvalDueDate({"action":"none","date_type":"actual","date":"{}","duration":1,"duration_type":"days","schedule":""})'
196
+ */
197
+ getCode() {
198
+ return `${flow_constants_1.APPROVAL_DUE_DATE_API_NAME}(${super.getCode()})`;
199
+ }
200
+ /**
201
+ * Returns a StringShape of the Approval Due Date string
202
+ */
203
+ toString() {
204
+ const approvalDueDateValue = this.getApprovalDueDate();
205
+ const formattedApprovalDueDate = {
206
+ action: 'none',
207
+ date_type: 'actual',
208
+ date: '{}',
209
+ duration: 1,
210
+ duration_type: 'days',
211
+ schedule: '',
212
+ };
213
+ //Convert the Due Date to the format expected by Flow Designer and populate with default values
214
+ if (approvalDueDateValue) {
215
+ formattedApprovalDueDate.action = approvalDueDateValue.action || 'none';
216
+ formattedApprovalDueDate.date_type = approvalDueDateValue.dateType || 'actual';
217
+ formattedApprovalDueDate.date = approvalDueDateValue.date || '{}';
218
+ formattedApprovalDueDate.duration = approvalDueDateValue.duration || 1;
219
+ formattedApprovalDueDate.duration_type = approvalDueDateValue.durationType || 'days';
220
+ formattedApprovalDueDate.schedule = approvalDueDateValue.daysSchedule || '';
221
+ }
222
+ return sdk_build_core_1.Shape.from(this.getSource(), JSON.stringify(formattedApprovalDueDate)).toString();
223
+ }
224
+ static from(source, text) {
225
+ const approvalDueDateValue = {
226
+ action: 'none',
227
+ dateType: 'actual',
228
+ date: '{}',
229
+ duration: 1,
230
+ durationType: 'days',
231
+ daysSchedule: '',
232
+ };
233
+ try {
234
+ const parsedValue = JSON.parse(text.getValue());
235
+ //Convert the Due Date to the format expected by Fluent and populate with default values
236
+ if (parsedValue) {
237
+ approvalDueDateValue.action = parsedValue.action || 'none';
238
+ approvalDueDateValue.dateType = parsedValue.date_type || 'actual';
239
+ approvalDueDateValue.date = parsedValue.date || '{}';
240
+ approvalDueDateValue.duration = Number(parsedValue.duration) || 1;
241
+ approvalDueDateValue.durationType = parsedValue.duration_type || 'days';
242
+ approvalDueDateValue.daysSchedule = parsedValue.schedule || '';
243
+ }
244
+ }
245
+ catch {
246
+ // Failed to parse - will use default values
247
+ }
248
+ return new ApprovalDueDateShape({
249
+ source,
250
+ value: approvalDueDateValue,
251
+ });
252
+ }
253
+ }
254
+ exports.ApprovalDueDateShape = ApprovalDueDateShape;
255
+ //# sourceMappingURL=flow-shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-shapes.js","sourceRoot":"","sources":["../../../src/flow/utils/flow-shapes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type Record, type Database } from '@servicenow/sdk-build-core';
2
+ export declare function generateXML(record: Record, { config, database }: {
3
+ config: {
4
+ scope: string;
5
+ scopeId: string;
6
+ };
7
+ database: Database;
8
+ }): {
9
+ success: boolean;
10
+ value: {
11
+ source: Record;
12
+ name: string;
13
+ category: import("@servicenow/sdk-build-core").InstallCategory;
14
+ content: string;
15
+ };
16
+ };
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateXML = generateXML;
4
+ const sdk_build_core_1 = require("@servicenow/sdk-build-core");
5
+ const flow_definition_plugin_1 = require("../plugins/flow-definition-plugin");
6
+ /**
7
+ * Tables to exclude from delete_multiple generation.
8
+ * These tables either don't need cleanup or have special handling.
9
+ */
10
+ const EXCLUDED_TABLES = new Set([
11
+ 'sys_flow_record_trigger',
12
+ 'sys_flow_timer_trigger',
13
+ 'sys_hub_flow_snapshot',
14
+ 'sys_choice',
15
+ 'sys_documentation',
16
+ 'sys_complex_object',
17
+ 'sys_element_mapping',
18
+ ]);
19
+ /**
20
+ * Tables that need cascading delete_multiple entries per instance.
21
+ * For example, sys_hub_alias_mapping needs a delete_multiple for each action/subflow instance.
22
+ */
23
+ const CASCADING_DELETE_CONFIG = {
24
+ sys_hub_action_instance_v2: [{ table: 'sys_hub_alias_mapping', field: 'source_id' }],
25
+ sys_hub_sub_flow_instance_v2: [{ table: 'sys_hub_alias_mapping', field: 'source_id' }],
26
+ };
27
+ function generateXML(record, { config, database }) {
28
+ const relationships = flow_definition_plugin_1.FlowDefinitionPlugin.getRelationships()[record.getTable()] ?? {};
29
+ const updateName = `${record.getTable()}_${record.getId().getValue()}`;
30
+ const recordBuilder = (0, sdk_build_core_1.unloadBuilder)(config);
31
+ const table = record.getTable();
32
+ const flowId = record.getId().getValue();
33
+ const builder = recordBuilder.record(record, updateName);
34
+ record
35
+ .entries()
36
+ .sort(([a], [b]) => a.localeCompare(b)) // Sort keys to make outputs more deterministic
37
+ .forEach(([prop, shape]) => builder.field(prop, shape, {}));
38
+ // Get descendants using plugin's getDescendants method and group by table
39
+ const descendants = flow_definition_plugin_1.FlowDefinitionPlugin.getDescendants(record, database);
40
+ const recordMap = descendants.reduce((acc, rec) => {
41
+ const t = rec.getTable();
42
+ if (!acc[t]) {
43
+ acc[t] = [];
44
+ }
45
+ acc[t].push(rec);
46
+ return acc;
47
+ }, {});
48
+ // Build delete_multiple config dynamically from relationships
49
+ const deleteMultipleConfig = buildDeleteMultipleConfig(relationships);
50
+ // Generate delete_multiple and INSERT_OR_UPDATE entries for each descendant table
51
+ for (const [tableName, records] of Object.entries(recordMap)) {
52
+ // Skip sys_choice as it has special handling
53
+ if (tableName === 'sys_choice') {
54
+ generateNestedXML(records, recordBuilder.recordUpdateElements, config, true);
55
+ continue;
56
+ }
57
+ // Generate delete_multiple entry for this table
58
+ generateDeleteMultiple(tableName, flowId, records, recordMap, recordBuilder.recordUpdateElements, deleteMultipleConfig);
59
+ // Generate INSERT_OR_UPDATE entries for the records
60
+ generateNestedXML(records, recordBuilder.recordUpdateElements, config, false);
61
+ // Generate cascading delete_multiple entries (e.g., alias_mapping per action instance)
62
+ generateCascadingDeleteMultiple(tableName, records, recordBuilder.recordUpdateElements);
63
+ }
64
+ return {
65
+ success: true,
66
+ value: {
67
+ source: record,
68
+ name: `${table}_${flowId}.xml`,
69
+ category: record.getInstallCategory(),
70
+ content: recordBuilder.end(),
71
+ },
72
+ };
73
+ }
74
+ function generateNestedXML(records, rootElements, config, choiceRecords = false) {
75
+ if (choiceRecords) {
76
+ // group records by field/element and table/name
77
+ const groupedRecords = records.reduce((acc, record) => {
78
+ const field = record.get('element')?.asString()?.getValue();
79
+ const name = record.get('name')?.asString()?.getValue();
80
+ if (!field || !name) {
81
+ return acc;
82
+ }
83
+ const key = `${name}:${field}`;
84
+ if (!acc[key]) {
85
+ acc[key] = [];
86
+ }
87
+ acc[key].push(record);
88
+ return acc;
89
+ }, {});
90
+ for (const [key, records] of Object.entries(groupedRecords)) {
91
+ const [name, field] = key.split(':');
92
+ const choiceElements = [];
93
+ const choiceElement = {
94
+ type: 'element',
95
+ name: 'sys_choice',
96
+ attributes: { field, table: name },
97
+ elements: choiceElements,
98
+ };
99
+ rootElements.push(choiceElement);
100
+ generateNestedXML(records, choiceElements, config);
101
+ }
102
+ return;
103
+ }
104
+ for (const record of records) {
105
+ const table = record.getTable();
106
+ const guid = record.getId().getValue();
107
+ generateRecordXML(record, rootElements, table, guid, record.getAction(), config);
108
+ }
109
+ }
110
+ function generateRecordXML(record, rootElements, table, guid, action = 'INSERT_OR_UPDATE', config) {
111
+ const builder = (0, sdk_build_core_1.recordXml)(rootElements, table, guid, { attr: { action } });
112
+ builder.addSysScope(config.scope, config.scopeId);
113
+ record
114
+ .entries()
115
+ .sort(([a], [b]) => a.localeCompare(b)) // Sort keys to make outputs more deterministic
116
+ .forEach(([prop, shape]) => builder.field(prop, shape, {}));
117
+ }
118
+ /**
119
+ * Build delete_multiple configuration dynamically from plugin relationships.
120
+ * Traverses the relationship tree and extracts parent fields for each descendant table.
121
+ */
122
+ function buildDeleteMultipleConfig(relationships, parentTable) {
123
+ const config = {};
124
+ for (const [tableName, relationship] of Object.entries(relationships)) {
125
+ // Skip excluded tables
126
+ if (EXCLUDED_TABLES.has(tableName)) {
127
+ continue;
128
+ }
129
+ // Only process descendant relationships with string 'via' field
130
+ if (!relationship.descendant || typeof relationship.via !== 'string') {
131
+ continue;
132
+ }
133
+ // Skip inverse relationships (parent references child, not child references parent)
134
+ if (relationship.inverse) {
135
+ continue;
136
+ }
137
+ // Add config for this table
138
+ if (parentTable) {
139
+ // Nested relationship - references another descendant table
140
+ config[tableName] = {
141
+ parentField: relationship.via,
142
+ parentType: 'descendant',
143
+ parentTable,
144
+ };
145
+ }
146
+ else {
147
+ // Direct relationship - references the flow
148
+ config[tableName] = {
149
+ parentField: relationship.via,
150
+ parentType: 'flow',
151
+ };
152
+ }
153
+ // Recursively process nested relationships
154
+ if (relationship.relationships) {
155
+ const nestedConfig = buildDeleteMultipleConfig(relationship.relationships, tableName);
156
+ Object.assign(config, nestedConfig);
157
+ }
158
+ }
159
+ return config;
160
+ }
161
+ /**
162
+ * Generate a delete_multiple XML element for a descendant table.
163
+ * The query follows the pattern: parentField=parentId^sys_idNOT IN<comma_separated_ids>
164
+ */
165
+ function generateDeleteMultiple(tableName, flowId, records, recordMap, rootElements, deleteMultipleConfig) {
166
+ const config = deleteMultipleConfig[tableName];
167
+ if (!config) {
168
+ return;
169
+ }
170
+ let query;
171
+ if (config.parentType === 'flow') {
172
+ // Direct reference to flow
173
+ const recordIds = records.map((r) => r.getId().getValue()).join(',');
174
+ if (recordIds) {
175
+ query = `${config.parentField}=${flowId}^sys_idNOT IN${recordIds}`;
176
+ }
177
+ else {
178
+ query = `${config.parentField}=${flowId}`;
179
+ }
180
+ }
181
+ else if (config.parentType === 'descendant' && config.parentTable) {
182
+ // Reference to another descendant table
183
+ const parentRecords = recordMap[config.parentTable] || [];
184
+ if (parentRecords.length === 0) {
185
+ return;
186
+ }
187
+ // Generate delete_multiple for each parent record
188
+ for (const parentRecord of parentRecords) {
189
+ const parentId = parentRecord.getId().getValue();
190
+ const childRecords = records.filter((r) => {
191
+ const refValue = r.get(config.parentField)?.getValue();
192
+ return refValue === parentId;
193
+ });
194
+ const childIds = childRecords.map((r) => r.getId().getValue()).join(',');
195
+ const childQuery = childIds
196
+ ? `${config.parentField}=${parentId}^sys_idNOT IN${childIds}`
197
+ : `${config.parentField}=${parentId}`;
198
+ rootElements.push({
199
+ type: 'element',
200
+ name: tableName,
201
+ attributes: { action: 'delete_multiple', query: childQuery },
202
+ });
203
+ }
204
+ return;
205
+ }
206
+ else {
207
+ return;
208
+ }
209
+ rootElements.push({
210
+ type: 'element',
211
+ name: tableName,
212
+ attributes: { action: 'delete_multiple', query },
213
+ });
214
+ }
215
+ /**
216
+ * Generate cascading delete_multiple entries for tables that need per-instance cleanup.
217
+ * For example, sys_hub_alias_mapping needs a delete_multiple for each action/subflow instance.
218
+ */
219
+ function generateCascadingDeleteMultiple(tableName, records, rootElements) {
220
+ const cascadeEntries = CASCADING_DELETE_CONFIG[tableName];
221
+ if (!cascadeEntries) {
222
+ return;
223
+ }
224
+ for (const { table, field } of cascadeEntries) {
225
+ // Generate a delete_multiple for each instance record
226
+ for (const record of records) {
227
+ const instanceId = record.getId().getValue();
228
+ const query = `${field}=${instanceId}`;
229
+ rootElements.push({
230
+ type: 'element',
231
+ name: table,
232
+ attributes: { action: 'delete_multiple', query },
233
+ });
234
+ }
235
+ }
236
+ }
237
+ //# sourceMappingURL=flow-to-xml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-to-xml.js","sourceRoot":"","sources":["../../../src/flow/utils/flow-to-xml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { Diagnostics, Factory, ObjectShape, Record } from '@servicenow/sdk-build-core';
2
+ /**
3
+ * Type of variable table for flow I/O and variables
4
+ */
5
+ export type VariableTableType = 'sys_hub_flow_input' | 'sys_hub_flow_output' | 'sys_hub_flow_variable';
6
+ /**
7
+ * Parent table type (always sys_hub_flow for flows)
8
+ */
9
+ export type ParentTableType = 'sys_hub_flow';
10
+ /**
11
+ * Process a flow variable configuration (inputs, outputs, or flow variables)
12
+ * and generate the corresponding variable records
13
+ *
14
+ * @param config - The ObjectShape containing variable definitions
15
+ * @param varTable - The type of variable table (input, output, or variable)
16
+ * @param parentRecord - The parent flow record
17
+ * @param factory - Factory for creating records
18
+ * @param diagnostics - Diagnostics for error reporting
19
+ * @returns Array of records (both variable records and complex object records)
20
+ */
21
+ export declare function processVariableConfig(config: ObjectShape | undefined, varTable: VariableTableType, parentRecord: Record, factory: Factory, diagnostics: Diagnostics): Promise<Record[]>;
22
+ /**
23
+ * Process flow inputs configuration
24
+ *
25
+ * @param inputsConfig - The ObjectShape containing input definitions
26
+ * @param parentRecord - The parent flow record
27
+ * @param factory - Factory for creating records
28
+ * @param diagnostics - Diagnostics for error reporting
29
+ * @returns Array of input records
30
+ */
31
+ export declare function processFlowInputs(inputsConfig: ObjectShape | undefined, parentRecord: Record, factory: Factory, diagnostics: Diagnostics): Promise<Record[]>;
32
+ /**
33
+ * Process flow outputs configuration
34
+ *
35
+ * @param outputsConfig - The ObjectShape containing output definitions
36
+ * @param parentRecord - The parent flow record
37
+ * @param factory - Factory for creating records
38
+ * @param diagnostics - Diagnostics for error reporting
39
+ * @returns Array of output records
40
+ */
41
+ export declare function processFlowOutputs(outputsConfig: ObjectShape | undefined, parentRecord: Record, factory: Factory, diagnostics: Diagnostics): Promise<Record[]>;
42
+ /**
43
+ * Process flow variables configuration
44
+ *
45
+ * @param flowVariablesConfig - The ObjectShape containing flow variable definitions
46
+ * @param parentRecord - The parent flow record
47
+ * @param factory - Factory for creating records
48
+ * @param diagnostics - Diagnostics for error reporting
49
+ * @returns Array of flow variable records
50
+ */
51
+ export declare function processFlowVariables(flowVariablesConfig: ObjectShape | undefined, parentRecord: Record, factory: Factory, diagnostics: Diagnostics): Promise<Record[]>;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processVariableConfig = processVariableConfig;
4
+ exports.processFlowInputs = processFlowInputs;
5
+ exports.processFlowOutputs = processFlowOutputs;
6
+ exports.processFlowVariables = processFlowVariables;
7
+ const flow_io_to_record_1 = require("./flow-io-to-record");
8
+ /**
9
+ * Process a flow variable configuration (inputs, outputs, or flow variables)
10
+ * and generate the corresponding variable records
11
+ *
12
+ * @param config - The ObjectShape containing variable definitions
13
+ * @param varTable - The type of variable table (input, output, or variable)
14
+ * @param parentRecord - The parent flow record
15
+ * @param factory - Factory for creating records
16
+ * @param diagnostics - Diagnostics for error reporting
17
+ * @returns Array of records (both variable records and complex object records)
18
+ */
19
+ async function processVariableConfig(config, varTable, parentRecord, factory, diagnostics) {
20
+ if (!config) {
21
+ return [];
22
+ }
23
+ const { variableRecords, complexObjectRecords } = await (0, flow_io_to_record_1.buildVariableRecords)({
24
+ variablesConfig: config,
25
+ parentRecord,
26
+ factory,
27
+ diagnostics,
28
+ parentTable: 'sys_hub_flow',
29
+ varTable,
30
+ });
31
+ return [...complexObjectRecords, ...variableRecords];
32
+ }
33
+ /**
34
+ * Process flow inputs configuration
35
+ *
36
+ * @param inputsConfig - The ObjectShape containing input definitions
37
+ * @param parentRecord - The parent flow record
38
+ * @param factory - Factory for creating records
39
+ * @param diagnostics - Diagnostics for error reporting
40
+ * @returns Array of input records
41
+ */
42
+ async function processFlowInputs(inputsConfig, parentRecord, factory, diagnostics) {
43
+ return processVariableConfig(inputsConfig, 'sys_hub_flow_input', parentRecord, factory, diagnostics);
44
+ }
45
+ /**
46
+ * Process flow outputs configuration
47
+ *
48
+ * @param outputsConfig - The ObjectShape containing output definitions
49
+ * @param parentRecord - The parent flow record
50
+ * @param factory - Factory for creating records
51
+ * @param diagnostics - Diagnostics for error reporting
52
+ * @returns Array of output records
53
+ */
54
+ async function processFlowOutputs(outputsConfig, parentRecord, factory, diagnostics) {
55
+ return processVariableConfig(outputsConfig, 'sys_hub_flow_output', parentRecord, factory, diagnostics);
56
+ }
57
+ /**
58
+ * Process flow variables configuration
59
+ *
60
+ * @param flowVariablesConfig - The ObjectShape containing flow variable definitions
61
+ * @param parentRecord - The parent flow record
62
+ * @param factory - Factory for creating records
63
+ * @param diagnostics - Diagnostics for error reporting
64
+ * @returns Array of flow variable records
65
+ */
66
+ async function processFlowVariables(flowVariablesConfig, parentRecord, factory, diagnostics) {
67
+ return processVariableConfig(flowVariablesConfig, 'sys_hub_flow_variable', parentRecord, factory, diagnostics);
68
+ }
69
+ //# sourceMappingURL=flow-variable-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-variable-processor.js","sourceRoot":"","sources":["../../../src/flow/utils/flow-variable-processor.ts"],"names":[],"mappings":";;AAwBA,sDAqBC;AAWD,8CAOC;AAWD,gDAOC;AAWD,oDAOC;AAlGD,2DAA0D;AAY1D;;;;;;;;;;GAUG;AACI,KAAK,UAAU,qBAAqB,CACvC,MAA+B,EAC/B,QAA2B,EAC3B,YAAoB,EACpB,OAAgB,EAChB,WAAwB;IAExB,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,EAAE,CAAA;IACb,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,MAAM,IAAA,wCAAoB,EAAC;QACzE,eAAe,EAAE,MAAM;QACvB,YAAY;QACZ,OAAO;QACP,WAAW;QACX,WAAW,EAAE,cAAiC;QAC9C,QAAQ;KACX,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,oBAAoB,EAAE,GAAG,eAAe,CAAC,CAAA;AACxD,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,iBAAiB,CACnC,YAAqC,EACrC,YAAoB,EACpB,OAAgB,EAChB,WAAwB;IAExB,OAAO,qBAAqB,CAAC,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AACxG,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,kBAAkB,CACpC,aAAsC,EACtC,YAAoB,EACpB,OAAgB,EAChB,WAAwB;IAExB,OAAO,qBAAqB,CAAC,aAAa,EAAE,qBAAqB,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AAC1G,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,oBAAoB,CACtC,mBAA4C,EAC5C,YAAoB,EACpB,OAAgB,EAChB,WAAwB;IAExB,OAAO,qBAAqB,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AAClH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Logger } from '@servicenow/sdk-build-core';
2
+ /**
3
+ * Creates a map of name to type from a label_cache string
4
+ * @param labelCacheString - The stringified JSON array from label_cache
5
+ * @returns Map where key is the name field and value is the type field
6
+ */
7
+ export declare function createLableCacheNameToTypeMap(labelCacheString: string, logger: Logger): Map<string, string>;