@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,503 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateFlowLogic = validateFlowLogic;
4
+ exports.validateSibling = validateSibling;
5
+ const sdk_build_core_1 = require("@servicenow/sdk-build-core");
6
+ const flow_logic_constants_1 = require("./flow-logic-constants");
7
+ const utils_1 = require("../../utils");
8
+ const utils_2 = require("../utils/utils");
9
+ const flow_logic_plugin_helpers_1 = require("./flow-logic-plugin-helpers");
10
+ const data_pill_shapes_1 = require("../utils/data-pill-shapes");
11
+ const flow_1 = require("@servicenow/sdk-core/runtime/flow");
12
+ const inline_script_plugin_1 = require("../plugins/inline-script-plugin");
13
+ const FLOW_LOGIC_VALIDATORS = {
14
+ [flow_logic_constants_1.FLOW_LOGIC.GOBACKTO]: validateGoBackTo,
15
+ [flow_logic_constants_1.FLOW_LOGIC.IF]: validateIf,
16
+ [flow_logic_constants_1.FLOW_LOGIC.ELSEIF]: validateIf,
17
+ [flow_logic_constants_1.FLOW_LOGIC.ELSE]: validateIf,
18
+ [flow_logic_constants_1.FLOW_LOGIC.ENDFLOW]: validateEndFlow,
19
+ [flow_logic_constants_1.FLOW_LOGIC.EXITLOOP]: validateExitLoop,
20
+ [flow_logic_constants_1.FLOW_LOGIC.SKIP_ITERATION]: validateSkipIteration,
21
+ [flow_logic_constants_1.FLOW_LOGIC.WAIT_FOR_A_DURATION]: validateWaitForADuration,
22
+ [flow_logic_constants_1.FLOW_LOGIC.FOR_EACH]: validateForEach,
23
+ [flow_logic_constants_1.FLOW_LOGIC.DO_IN_PARALLEL]: validateDoInParallel,
24
+ [flow_logic_constants_1.FLOW_LOGIC.TRY_CATCH]: () => undefined,
25
+ [flow_logic_constants_1.FLOW_LOGIC.SET_FLOW_VARIABLES]: validateSetFlowVariables,
26
+ [flow_logic_constants_1.FLOW_LOGIC.ASSIGN_SUBFLOW_OUTPUTS]: validateAssignSubflowOutputs,
27
+ };
28
+ /**
29
+ * Main validation function for flow logic instances.
30
+ * Validates placement rules and context requirements for different flow logic types.
31
+ *
32
+ * @param expr - The flow logic instance shape to validate
33
+ * @returns Error message if validation fails, undefined if valid
34
+ */
35
+ function validateFlowLogic(expr, diagnostics) {
36
+ const conditionType = expr.getCallee();
37
+ const node = expr.getOriginalNode();
38
+ const parent = node.getFirstAncestorByKind(sdk_build_core_1.ts.SyntaxKind.CallExpression);
39
+ if (!parent) {
40
+ return `'${conditionType}' can only be used inside a Flow() or Subflow() body`;
41
+ }
42
+ const callExprName = (0, utils_1.getCallExpressionName)(parent);
43
+ const allowedCallExprNames = ['Flow', 'Subflow', ...Object.values(flow_logic_constants_1.FLOW_LOGIC)];
44
+ if (!allowedCallExprNames.includes(callExprName)) {
45
+ return `'${conditionType}' can only be used inside a Flow() or Subflow() body`;
46
+ }
47
+ // Validate sibling relationships for ElseIf/Else BEFORE running type-specific validators
48
+ if (conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSEIF || conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSE) {
49
+ const sibling = node
50
+ .getParent()
51
+ ?.getPreviousSibling((n) => !sdk_build_core_1.ts.Node.isCommentStatement(n))
52
+ ?.asKind(sdk_build_core_1.ts.SyntaxKind.ExpressionStatement)
53
+ ?.getExpression()
54
+ .asKind(sdk_build_core_1.ts.SyntaxKind.CallExpression);
55
+ const siblingError = validateSibling(expr, sibling);
56
+ if (siblingError) {
57
+ return siblingError;
58
+ }
59
+ }
60
+ const validator = FLOW_LOGIC_VALIDATORS[conditionType];
61
+ if (!validator) {
62
+ diagnostics.error(expr, `Unsupported flow logic type for validation: ${conditionType}`);
63
+ return;
64
+ }
65
+ return validator(expr);
66
+ }
67
+ function validateGoBackTo(expr) {
68
+ const placementError = validateGoBackToPlacement(expr);
69
+ if (placementError) {
70
+ return placementError;
71
+ }
72
+ return undefined;
73
+ }
74
+ /**
75
+ * Validates GoBackTo placement according to ServiceNow rules.
76
+ *
77
+ * Valid Go back to placement rules:
78
+ * - The Go back to flow logic must be within a branch of a parent flow logic block:
79
+ * - Then branch of If, Else If, or Else flow logic
80
+ * - Catch branch of Try flow logic
81
+ * - Case branch of Decision flow logic
82
+ * - The Go back to flow logic must be outside of the Error handler section
83
+ *
84
+ * @param expr - The GoBackTo flow logic instance shape
85
+ * @returns Error message if placement is invalid, undefined if valid
86
+ */
87
+ function validateGoBackToPlacement(expr) {
88
+ const node = expr.getOriginalNode();
89
+ // Check if GoBackTo is within a branch of a parent flow logic block
90
+ const parentLogic = findParentFlowLogic(node);
91
+ if (!parentLogic) {
92
+ return 'GoBackTo must be within a branch of a parent flow logic block (If/Else/Decision/Try/Catch)';
93
+ }
94
+ // Check if GoBackTo is outside of Error handler section
95
+ if (isWithinErrorHandler(node)) {
96
+ return 'GoBackTo must be outside of the Error handler section';
97
+ }
98
+ return undefined;
99
+ }
100
+ /**
101
+ * Finds the nearest parent flow logic block (If/Else/Decision/Try/Catch/Parallel) in the AST.
102
+ * Used to validate GoBackTo placement within proper flow logic branches.
103
+ *
104
+ * @param node - The AST node to start searching from
105
+ * @returns The parent flow logic CallExpression, or undefined if not found
106
+ */
107
+ function findParentFlowLogic(node) {
108
+ const current = node?.getFirstAncestorByKind(sdk_build_core_1.ts.SyntaxKind.CallExpression);
109
+ if (!current) {
110
+ return undefined;
111
+ }
112
+ const callName = (0, utils_1.getCallExpressionName)(current);
113
+ if ([flow_logic_constants_1.FLOW_LOGIC.IF, flow_logic_constants_1.FLOW_LOGIC.ELSEIF, flow_logic_constants_1.FLOW_LOGIC.ELSE, 'TryCatch', 'MakeADecision'].includes(callName)) {
114
+ if (callName === 'TryCatch') {
115
+ // For TryCatch, GoBackTo should only be in the catch block, not in try block
116
+ if (!isInCatchBlock(node)) {
117
+ return undefined; // Invalid placement - not in catch block
118
+ }
119
+ }
120
+ return current;
121
+ }
122
+ return undefined;
123
+ }
124
+ /**
125
+ * Checks if a node is within the catch block of a TryCatch flow logic.
126
+ * GoBackTo is only allowed in the catch block, not in the try block.
127
+ *
128
+ * @param node - The AST node to check
129
+ * @returns True if within catch block, false otherwise
130
+ */
131
+ function isInCatchBlock(node) {
132
+ const current = node
133
+ ?.getFirstAncestorByKind(sdk_build_core_1.ts.SyntaxKind.ArrowFunction)
134
+ ?.getParentIfKind(sdk_build_core_1.ts.SyntaxKind.PropertyAssignment);
135
+ if (current && current.getName() === 'catch') {
136
+ return true;
137
+ }
138
+ return false;
139
+ }
140
+ /**
141
+ * Checks if a node is within an Error handler section.
142
+ * GoBackTo flow logic must be outside of Error handler sections per ServiceNow rules.
143
+ *
144
+ * @param node - The AST node to check
145
+ * @returns True if within an Error handler, false otherwise
146
+ */
147
+ function isWithinErrorHandler(_node) {
148
+ // TODO: Add implementation when Error handler is added in Flow
149
+ return false;
150
+ }
151
+ /**
152
+ * Validates sibling relationships for conditional flow logic (If/Else/ElseIf).
153
+ * Ensures proper chaining and structure of conditional blocks.
154
+ *
155
+ * @param expr - The flow logic instance shape
156
+ * @param sibling - The sibling CallExpression to validate against
157
+ * @returns Error message if sibling relationship is invalid, undefined if valid
158
+ */
159
+ function validateSibling(expr, sibling) {
160
+ const conditionType = expr.getCallee();
161
+ const isElseClause = conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSE;
162
+ const isElseIfClause = conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSEIF;
163
+ const siblingName = sibling ? (0, utils_1.getCallExpressionName)(sibling) : undefined;
164
+ if (isElseClause || isElseIfClause) {
165
+ if (!sibling) {
166
+ return `${conditionType} clause must follow an If or ElseIf clause.`;
167
+ }
168
+ const validPredecessors = [flow_logic_constants_1.FLOW_LOGIC.IF, flow_logic_constants_1.FLOW_LOGIC.ELSEIF];
169
+ if (!validPredecessors.includes(siblingName)) {
170
+ return `${conditionType} clause must follow an If or ElseIf clause, but found ${siblingName}.`;
171
+ }
172
+ }
173
+ return undefined;
174
+ }
175
+ function validateIf(expr) {
176
+ const conditionType = expr.getCallee();
177
+ // If and ElseIf require a condition parameter, Else does not
178
+ if (conditionType === flow_logic_constants_1.FLOW_LOGIC.IF || conditionType === flow_logic_constants_1.FLOW_LOGIC.ELSEIF) {
179
+ const config = expr.getConfig();
180
+ const condition = config.get('condition');
181
+ if (!condition || condition.isUndefined()) {
182
+ return `${conditionType} requires a 'condition' field in the configuration object.`;
183
+ }
184
+ }
185
+ return undefined;
186
+ }
187
+ function validateEndFlow(expr) {
188
+ const placementError = validateEndFlowPlacement(expr);
189
+ if (placementError) {
190
+ return placementError;
191
+ }
192
+ return undefined;
193
+ }
194
+ function validateExitLoop(expr) {
195
+ return validateLoopPlacement(expr, 'Exit Loop');
196
+ }
197
+ function validateSkipIteration(expr) {
198
+ return validateLoopPlacement(expr, 'Skip Iteration');
199
+ }
200
+ function validateWaitForADuration(expr) {
201
+ const args = expr.getArguments();
202
+ if (args.length !== 1) {
203
+ return `Expected 2 arguments for ${expr.getCallee()}, but received ${args.length}`;
204
+ }
205
+ return undefined;
206
+ }
207
+ function validateForEach(expr) {
208
+ // Validate that forEach has the correct number of arguments
209
+ const args = expr.getArguments();
210
+ if (args.length < 2 || args.length > 3) {
211
+ return `ForEach requires 2-3 arguments (items, config, optional body), but received ${args.length}`;
212
+ }
213
+ // Validate config argument
214
+ try {
215
+ expr.getSysId();
216
+ }
217
+ catch (error) {
218
+ return 'ForEach: Second argument (config) must be an object with valid $id property';
219
+ }
220
+ // Validate items argument (first argument) - must be an array type
221
+ const itemsArg = expr.getArgument(0, false);
222
+ if (!itemsArg || itemsArg.isUndefined()) {
223
+ return 'ForEach: First argument (items) is required and cannot be undefined';
224
+ }
225
+ // Valid array types - imported from core package to ensure consistency
226
+ // Helper to validate type hint
227
+ const validateTypeHint = (typeHint) => {
228
+ if (!flow_1.ARRAY_FLOW_DATA_TYPES.includes(typeHint)) {
229
+ return `ForEach requires an array type. The dataPill type '${typeHint}' is not an array type. Use array types like 'array.object', 'array.string', 'records', etc.`;
230
+ }
231
+ return undefined;
232
+ };
233
+ // Check if items is a PillShape (most common case - after DataPillPlugin transformation)
234
+ if (itemsArg instanceof data_pill_shapes_1.PillShape) {
235
+ const typeHint = itemsArg.getType();
236
+ if (typeHint) {
237
+ const error = validateTypeHint(typeHint);
238
+ if (error) {
239
+ return error;
240
+ }
241
+ }
242
+ }
243
+ // Check if items is a CallExpressionShape (before DataPillPlugin transformation)
244
+ if (itemsArg instanceof sdk_build_core_1.CallExpressionShape) {
245
+ const callee = itemsArg.getCallee();
246
+ if (callee === 'wfa.dataPill') {
247
+ const dataPillArgs = itemsArg.getArguments();
248
+ if (dataPillArgs.length >= 2 && dataPillArgs[1]?.isString()) {
249
+ const typeHint = dataPillArgs[1].asString().getValue();
250
+ const error = validateTypeHint(typeHint);
251
+ if (error) {
252
+ return error;
253
+ }
254
+ }
255
+ }
256
+ }
257
+ return undefined;
258
+ }
259
+ function validateDoInParallel(expr) {
260
+ if ((0, flow_logic_plugin_helpers_1.isDoInParallelShape)(expr)) {
261
+ const doInParallelExpr = expr;
262
+ const originalNode = doInParallelExpr.getOriginalNode();
263
+ // Check for nested DoInParallel
264
+ const parentDoInParallel = (0, utils_2.findAncestorByCalleeName)(originalNode, flow_logic_constants_1.FLOW_LOGIC.DO_IN_PARALLEL);
265
+ if (parentDoInParallel) {
266
+ return 'Nested DoInParallel calls are not allowed. DoInParallel cannot be used within another DoInParallel block.';
267
+ }
268
+ }
269
+ return undefined;
270
+ }
271
+ /**
272
+ * Validates SetFlowVariables flow logic instance.
273
+ * Performs comprehensive validation of arguments, types, and structure.
274
+ *
275
+ * **Validations performed:**
276
+ * 1. Argument count: Must have exactly 3 arguments
277
+ * 2. Config object: Must contain required $id property
278
+ * 3. Schema argument: Must be params.flowVariables (schema reference)
279
+ * 4. Values object: Must be non-empty
280
+ * 5. Variable names: Cannot be empty or whitespace
281
+ * 6. Variable values: Must be valid types (string, number, boolean, or datapill)
282
+ *
283
+ * **Valid value types:**
284
+ * - String literals: "hello"
285
+ * - Numbers: 42, 3.14
286
+ * - Booleans: true, false
287
+ * - Objects: { a: "value", b: 42 } (ObjectShape - for FlowObject types)
288
+ * - Arrays: [1, 2, 3] (ArrayShape - for FlowArray types)
289
+ * - Datapills: params.trigger.name, params.complexObject (PropertyAccessShape)
290
+ * - Template expressions: `Hello ${params.trigger.name}` (TemplateExpressionShape)
291
+ *
292
+ * @param expr - The SetFlowVariables flow logic instance shape
293
+ * @returns Error message if validation fails, undefined if valid
294
+ *
295
+ * @example
296
+ * // Valid usage
297
+ * wfa.flowLogic.setFlowVariables(
298
+ * { $id: Now.ID['...'] },
299
+ * params.flowVariables, // ← Schema reference (2nd argument)
300
+ * { user: params.trigger.name, count: 42, active: true }
301
+ * )
302
+ */
303
+ function validateSetFlowVariables(expr) {
304
+ if (!(0, flow_logic_plugin_helpers_1.isSetFlowVariablesShape)(expr)) {
305
+ return undefined;
306
+ }
307
+ // Validate argument count
308
+ const args = expr.getArguments();
309
+ if (args.length !== 3) {
310
+ return `SetFlowVariables requires exactly 3 arguments (config, schema, values), but received ${args.length}`;
311
+ }
312
+ // Validate config argument
313
+ try {
314
+ expr.getSysId();
315
+ }
316
+ catch (error) {
317
+ return 'SetFlowVariables: First argument (config) must be an object with valid $id property';
318
+ }
319
+ // Validate values argument (third argument)
320
+ const valuesArg = expr.getVariablesToSet();
321
+ if (!valuesArg || valuesArg.isUndefined()) {
322
+ return 'SetFlowVariables: Third argument (values) is required';
323
+ }
324
+ if (!valuesArg.isObject()) {
325
+ return 'SetFlowVariables: Third argument (values) must be an object';
326
+ }
327
+ // Validate that values object is not empty
328
+ const entries = Array.from(valuesArg.entries({ resolve: false }));
329
+ if (entries.length === 0) {
330
+ return 'SetFlowVariables: Values object cannot be empty - at least one variable must be set';
331
+ }
332
+ // Validate each value in the object
333
+ for (const [key, valueShape] of entries) {
334
+ if (!key || key.trim() === '') {
335
+ return 'SetFlowVariables: Variable names cannot be empty';
336
+ }
337
+ // Check if value is valid (string, datapill, template expression, or inline script)
338
+ if (valueShape.isUndefined()) {
339
+ return `SetFlowVariables: Variable '${key}' has undefined value`;
340
+ }
341
+ // Values can be: strings, numbers, booleans, objects, arrays, datapills, template expressions, or inline scripts
342
+ const isDatapill = valueShape instanceof sdk_build_core_1.PropertyAccessShape || valueShape instanceof sdk_build_core_1.TemplateExpressionShape;
343
+ const isInlineScript = valueShape instanceof inline_script_plugin_1.FDInlineScriptCallShape;
344
+ const isIdentifier = valueShape instanceof sdk_build_core_1.IdentifierShape;
345
+ const isArrayOrObject = valueShape instanceof sdk_build_core_1.ArrayShape || valueShape instanceof sdk_build_core_1.ObjectShape;
346
+ const isValidType = valueShape.isString() ||
347
+ valueShape.isNumber() ||
348
+ valueShape.isBoolean() ||
349
+ isDatapill ||
350
+ isArrayOrObject ||
351
+ isInlineScript;
352
+ if (!isValidType) {
353
+ // Provide specific error message for unsupported types
354
+ if (isIdentifier) {
355
+ return `SetFlowVariables: Variable '${key}' cannot use local variable references. Use direct values (literals) or datapills (e.g., params.someField) instead`;
356
+ }
357
+ return `SetFlowVariables: Variable '${key}' has invalid value type. Expected string, number, boolean, object, array, or datapill expression`;
358
+ }
359
+ }
360
+ return undefined;
361
+ }
362
+ /**
363
+ * Validates AssignSubflowOutputs flow logic instance.
364
+ * Performs comprehensive validation of arguments, types, structure, and placement.
365
+ *
366
+ * **Validations performed:**
367
+ * 1. Placement: Must be within a Subflow or SubflowDefinition (not in regular Flow)
368
+ * 2. Argument count: Must have exactly 3 arguments
369
+ * 3. Config object: Must contain required $id property
370
+ * 4. Schema argument: Must be params.outputs (schema reference)
371
+ * 5. Values object: Must be non-empty
372
+ * 6. Output names: Cannot be empty or whitespace
373
+ * 7. Output values: Must be valid types (string, number, boolean, or datapill)
374
+ *
375
+ * **Valid value types:**
376
+ * - String literals: "success"
377
+ * - Numbers: 42, 3.14
378
+ * - Booleans: true, false
379
+ * - Objects: { a: "value", b: 42 } (ObjectShape - for FlowObject types)
380
+ * - Arrays: [1, 2, 3] (ArrayShape - for FlowArray types)
381
+ * - Datapills: params.action.result, params.complexObject (PropertyAccessShape)
382
+ * - Template expressions: `Result: ${params.action.result}` (TemplateExpressionShape)
383
+ *
384
+ * **Important:** AssignSubflowOutputs can ONLY be used within Subflow or SubflowDefinition.
385
+ * Using it in a regular Flow will result in a validation error.
386
+ *
387
+ * @param expr - The AssignSubflowOutputs flow logic instance shape
388
+ * @returns Error message if validation fails, undefined if valid
389
+ *
390
+ * @example
391
+ * // Valid usage (within Subflow)
392
+ * Subflow({
393
+ * outputs: { result: StringColumn(...) }
394
+ * }, (params) => {
395
+ * wfa.flowLogic.assignSubflowOutputs(
396
+ * { $id: Now.ID['...'] },
397
+ * params.outputs, // ← Schema reference (2nd argument)
398
+ * { result: params.action.data, status: "complete" }
399
+ * )
400
+ * })
401
+ */
402
+ function validateAssignSubflowOutputs(expr) {
403
+ if (!(0, flow_logic_plugin_helpers_1.isAssignSubflowOutputsShape)(expr)) {
404
+ return undefined;
405
+ }
406
+ // Validate that this is called within a SubflowDefinition or Subflow
407
+ const node = expr.getOriginalNode();
408
+ const subflowAncestor = (0, utils_2.findAncestorByCalleeName)(node, 'SubflowDefinition') || (0, utils_2.findAncestorByCalleeName)(node, 'Subflow');
409
+ if (!subflowAncestor) {
410
+ return 'AssignSubflowOutputs can only be used within a SubflowDefinition or Subflow';
411
+ }
412
+ // Validate argument count
413
+ const args = expr.getArguments();
414
+ if (args.length !== 3) {
415
+ return `AssignSubflowOutputs requires exactly 3 arguments (config, schema, values), but received ${args.length}`;
416
+ }
417
+ // Validate config argument
418
+ try {
419
+ expr.getSysId();
420
+ }
421
+ catch (error) {
422
+ return 'AssignSubflowOutputs: First argument (config) must be an object with valid $id property';
423
+ }
424
+ // Validate values argument (third argument)
425
+ const valuesArg = expr.getAssignedSubflowOutputs();
426
+ if (!valuesArg || valuesArg.isUndefined()) {
427
+ return 'AssignSubflowOutputs: Third argument (values) is required';
428
+ }
429
+ if (!valuesArg.isObject()) {
430
+ return 'AssignSubflowOutputs: Third argument (values) must be an object';
431
+ }
432
+ // Validate that values object is not empty
433
+ const entries = Array.from(valuesArg.entries({ resolve: false }));
434
+ if (entries.length === 0) {
435
+ return 'AssignSubflowOutputs: Values object cannot be empty - at least one output must be assigned';
436
+ }
437
+ // Validate each value in the object
438
+ for (const [key, valueShape] of entries) {
439
+ if (!key || key.trim() === '') {
440
+ return 'AssignSubflowOutputs: Output names cannot be empty';
441
+ }
442
+ // Check if value is valid (string, datapill, template expression, or inline script)
443
+ if (valueShape.isUndefined()) {
444
+ return `AssignSubflowOutputs: Output '${key}' has undefined value`;
445
+ }
446
+ // Values can be: strings, numbers, booleans, objects, arrays, datapills, template expressions, or inline scripts
447
+ const isDatapill = valueShape instanceof sdk_build_core_1.PropertyAccessShape || valueShape instanceof sdk_build_core_1.TemplateExpressionShape;
448
+ const isInlineScript = valueShape instanceof inline_script_plugin_1.FDInlineScriptCallShape;
449
+ const isIdentifier = valueShape instanceof sdk_build_core_1.IdentifierShape;
450
+ const isArrayOrObject = valueShape instanceof sdk_build_core_1.ArrayShape || valueShape instanceof sdk_build_core_1.ObjectShape;
451
+ const isValidType = valueShape.isString() ||
452
+ valueShape.isNumber() ||
453
+ valueShape.isBoolean() ||
454
+ isDatapill ||
455
+ isArrayOrObject ||
456
+ isInlineScript;
457
+ if (!isValidType) {
458
+ // Provide specific error message for unsupported types
459
+ if (isIdentifier) {
460
+ return `AssignSubflowOutputs: Output '${key}' cannot use local variable references. Use direct values (literals) or datapills (e.g., params.someField) instead`;
461
+ }
462
+ return `AssignSubflowOutputs: Output '${key}' has invalid value type. Expected string, number, boolean, object, array, or datapill expression`;
463
+ }
464
+ }
465
+ return undefined;
466
+ }
467
+ /**
468
+ * Validates that a loop control flow logic (Exit Loop or Skip Iteration) is within a valid loop construct.
469
+ *
470
+ * @param expr - The flow logic instance shape to validate
471
+ * @param logicName - The name of the logic for error messages (e.g., 'Exit Loop', 'Skip Iteration')
472
+ * @returns Error message if placement is invalid, undefined if valid
473
+ */
474
+ function validateLoopPlacement(expr, logicName) {
475
+ const node = expr.getOriginalNode();
476
+ // Loop constructs that loop control flow logic can be used within
477
+ const LOOP_CONSTRUCTS = [
478
+ flow_logic_constants_1.FLOW_LOGIC.FOR_EACH,
479
+ // TODO: Add FLOW_LOGIC.DO_UNTIL when implemented
480
+ ];
481
+ const parentLoop = (0, utils_2.findAncestorByCalleeName)(node, ...LOOP_CONSTRUCTS);
482
+ if (!parentLoop) {
483
+ return `${logicName} must be used within a Do Until or For Each loop`;
484
+ }
485
+ return undefined;
486
+ }
487
+ function validateEndFlowPlacement(expr) {
488
+ const node = expr.getOriginalNode();
489
+ // Block constructs that End Flow can be used within
490
+ const END_FLOW_BLOCKS = [
491
+ flow_logic_constants_1.FLOW_LOGIC.FOR_EACH,
492
+ flow_logic_constants_1.FLOW_LOGIC.IF,
493
+ flow_logic_constants_1.FLOW_LOGIC.ELSEIF,
494
+ flow_logic_constants_1.FLOW_LOGIC.ELSE,
495
+ // TODO: Add FLOW_LOGIC.DO_UNTIL when implemented
496
+ ];
497
+ const parentBlock = (0, utils_2.findAncestorByCalleeName)(node, ...END_FLOW_BLOCKS);
498
+ if (!parentBlock) {
499
+ return 'End Flow must be used within a Do Until, For Each, or If block';
500
+ }
501
+ return undefined;
502
+ }
503
+ //# sourceMappingURL=flow-logic-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-logic-diagnostics.js","sourceRoot":"","sources":["../../../src/flow/flow-logic/flow-logic-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { Factory, Diagnostics, Result, Transform, Database } from '@servicenow/sdk-build-core';
2
+ import type { FlowLogicInstanceShape, ConditionalLogicInstanceShape, ForEachInstanceShape, GoBackToInstanceShape, TryCatchInstanceShape, DoInParallelInstanceShape, SetFlowVariablesInstanceShape, AssignSubflowOutputsInstanceShape } from './flow-logic-shapes';
3
+ import { Shape, Record } from '@servicenow/sdk-build-core';
4
+ import { FLOW_LOGIC } from './flow-logic-constants';
5
+ interface FlowLogicValueInput {
6
+ name: string;
7
+ value: string;
8
+ displayValue?: string;
9
+ children?: unknown[];
10
+ parameter?: {
11
+ [key: string]: unknown;
12
+ };
13
+ }
14
+ interface FlowLogicValueWithScript extends FlowLogicValueInput {
15
+ scriptActive?: boolean;
16
+ }
17
+ interface AssignSubflowOutput extends FlowLogicValueWithScript {
18
+ }
19
+ interface SetFlowVariablesInput extends FlowLogicValueWithScript {
20
+ }
21
+ export interface FlowLogicValues {
22
+ inputs: FlowLogicValueInput[];
23
+ outputsToAssign: AssignSubflowOutput[];
24
+ variables: SetFlowVariablesInput[];
25
+ decisionTableInputs: [];
26
+ dynamicInputs: [];
27
+ workflowInputs: [];
28
+ }
29
+ /**
30
+ * Creates an empty FlowLogicValues object with all fields initialized to empty arrays
31
+ * @returns Empty FlowLogicValues structure
32
+ */
33
+ export declare function createEmptyFlowLogicValues(): FlowLogicValues;
34
+ /**
35
+ * Helper function to check if children array contains any datapill values.
36
+ * Datapills are indicated by {{...}} syntax in the value field.
37
+ *
38
+ * @param children - The children array to check
39
+ * @returns true if any child has a datapill value
40
+ */
41
+ export declare function childrenContainDatapills(children: unknown[]): boolean;
42
+ export declare function isConditionalLogicShape(expr: FlowLogicInstanceShape): expr is ConditionalLogicInstanceShape;
43
+ export declare function isForEachShape(expr: FlowLogicInstanceShape): expr is ForEachInstanceShape;
44
+ export declare function isGoBackToShape(expr: FlowLogicInstanceShape): expr is GoBackToInstanceShape;
45
+ export declare function isTryCatchShape(expr: FlowLogicInstanceShape): expr is TryCatchInstanceShape;
46
+ export declare function isDoInParallelShape(expr: FlowLogicInstanceShape): expr is DoInParallelInstanceShape;
47
+ export declare function isSetFlowVariablesShape(expr: FlowLogicInstanceShape): expr is SetFlowVariablesInstanceShape;
48
+ export declare function isAssignSubflowOutputsShape(expr: FlowLogicInstanceShape): expr is AssignSubflowOutputsInstanceShape;
49
+ /**
50
+ * Checks if a shape is a datapill shape (PropertyAccessShape, TemplateExpressionShape, IdentifierShape, PillShape, or PillTemplateShape)
51
+ */
52
+ export declare function isDataPillShape(shape: Shape): boolean;
53
+ /**
54
+ * Main function to process flow logic instances and build records
55
+ */
56
+ export declare function getFlowLogicInstanceRecord(expr: FlowLogicInstanceShape, context: {
57
+ diagnostics: Diagnostics;
58
+ transform: Transform;
59
+ factory: Factory;
60
+ }): Promise<Result<Record>>;
61
+ export declare function getFlowLogicArguments(logicName: FLOW_LOGIC, record: Record, logicBodyShapes: Shape[], database: Database): Shape<unknown>[];
62
+ export {};