@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,224 @@
1
+ "use strict";
2
+ /**
3
+ * SLA Plugin Validation Functions
4
+ *
5
+ * This module contains validation functions that enforce conditional field requirements
6
+ * for SLA definitions. Fields may be mandatory, optional, or restricted depending on
7
+ * the values of control fields.
8
+ *
9
+ * @see ./SLA-VALIDATION-BEHAVIORS.md for detailed documentation of all 11 validation behaviors
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ERROR_MESSAGES = exports.DEFAULT_NO_SCHEDULE_ID = exports.DEFAULT_RETROACTIVE_PAUSE = exports.DEFAULT_TIMEZONE_SOURCE = exports.DEFAULT_WHEN_TO_CANCEL = exports.DEFAULT_WHEN_TO_RESUME = void 0;
13
+ exports.validateUserSpecifiedDuration = validateUserSpecifiedDuration;
14
+ exports.validateRelativeDuration = validateRelativeDuration;
15
+ exports.validateRetroactiveStart = validateRetroactiveStart;
16
+ exports.validateRetroactiveFieldsWithoutStart = validateRetroactiveFieldsWithoutStart;
17
+ exports.validateNoScheduleRestrictions = validateNoScheduleRestrictions;
18
+ exports.validateTaskFieldSchedule = validateTaskFieldSchedule;
19
+ exports.validateSlaDefinitionSchedule = validateSlaDefinitionSchedule;
20
+ exports.validateTimezoneSource = validateTimezoneSource;
21
+ exports.validateNoMatchResume = validateNoMatchResume;
22
+ exports.validateCancelCondition = validateCancelCondition;
23
+ exports.DEFAULT_WHEN_TO_RESUME = 'on_condition';
24
+ exports.DEFAULT_WHEN_TO_CANCEL = 'on_condition';
25
+ exports.DEFAULT_TIMEZONE_SOURCE = 'task.caller_id.time_zone';
26
+ exports.DEFAULT_RETROACTIVE_PAUSE = true;
27
+ exports.DEFAULT_NO_SCHEDULE_ID = '38fa64edc0a8016400f4a5724b0434b8';
28
+ exports.ERROR_MESSAGES = {
29
+ MANDATORY_FIELD: (field, reason) => `Field '${field}' is required ${reason}`,
30
+ RESTRICTED_FIELD: (field, reason) => `Field '${field}' cannot be specified ${reason}. Remove this field from your SLA definition.`,
31
+ RESTRICTED_WITH_DEFAULT: (field, reason, defaultValue) => `Field '${field}' cannot be specified ${reason}. The default value '${defaultValue}' will be used automatically.`,
32
+ WARNING_FIELD_PERSISTENCE: (field, reason) => `Field '${field}' is restricted ${reason}. If this value came from an existing SLA definition, it will be preserved but cannot be modified. If you're creating a new SLA, remove this field.`,
33
+ };
34
+ /**
35
+ * Validates user-specified duration fields (Behavior 1)
36
+ */
37
+ function validateUserSpecifiedDuration(config, diagnostics) {
38
+ const duration = config.get('duration');
39
+ // Duration is mandatory when durationType is empty/"User specified"
40
+ if (!duration || duration.isUndefined()) {
41
+ diagnostics.error(config, exports.ERROR_MESSAGES.MANDATORY_FIELD('duration', 'when durationType is empty (user specified duration)'));
42
+ }
43
+ // Note: Schedule validation is handled in validateSlaDefinitionSchedule based on scheduleSource
44
+ }
45
+ /**
46
+ * Validates relative duration restrictions (Behavior 2)
47
+ */
48
+ function validateRelativeDuration(config, conditions, diagnostics) {
49
+ // When durationType is a relative duration, duration, conditions.pause, conditions.resume, and whenTo.resume
50
+ // are restricted fields. Existing values from XML are preserved (pass-through).
51
+ // We issue a warning to inform the user these fields are managed by the relative duration.
52
+ const duration = config.get('duration');
53
+ const pauseCondition = conditions?.get('pause');
54
+ const resumeCondition = conditions?.get('resume');
55
+ const whenTo = config.get('whenTo')?.ifDefined()?.asObject();
56
+ const whenToResume = whenTo?.get('resume');
57
+ // duration field is ignored when using relative duration
58
+ if (duration && !duration.isUndefined()) {
59
+ diagnostics.hint(duration, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('duration', 'when durationType is a relative duration'));
60
+ }
61
+ if (pauseCondition && !pauseCondition.isUndefined()) {
62
+ diagnostics.hint(pauseCondition, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('conditions.pause', 'when durationType is a relative duration'));
63
+ }
64
+ if (resumeCondition && !resumeCondition.isUndefined()) {
65
+ diagnostics.hint(resumeCondition, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('conditions.resume', 'when durationType is a relative duration'));
66
+ }
67
+ if (whenToResume && !whenToResume.isUndefined()) {
68
+ diagnostics.hint(whenToResume, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('whenTo.resume', 'when durationType is a relative duration'));
69
+ }
70
+ }
71
+ /**
72
+ * Validates retroactive start requirements (Behaviors 6 & 8)
73
+ */
74
+ function validateRetroactiveStart(retroactive, isUserSpecifiedDuration, diagnostics) {
75
+ const setStartTo = retroactive.get('setStartTo');
76
+ const retroactivePause = retroactive.get('pause');
77
+ // setStartTo is mandatory when retroactive.start is true
78
+ const setStartToValue = setStartTo?.ifString()?.getValue();
79
+ if (!setStartToValue) {
80
+ diagnostics.error(retroactive, exports.ERROR_MESSAGES.MANDATORY_FIELD('retroactive.setStartTo', 'when retroactive.start is true'));
81
+ }
82
+ // Behavior 8: retroactive.start + relative duration restricts retroactive.pause
83
+ // Existing values from XML are preserved (pass-through) with a warning.
84
+ if (!isUserSpecifiedDuration && retroactivePause && !retroactivePause.isUndefined()) {
85
+ diagnostics.hint(retroactivePause, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('retroactive.pause', 'when retroactive.start is true and durationType is a relative duration'));
86
+ }
87
+ }
88
+ /**
89
+ * Validates that retroactive.pause and retroactive.setStartTo are not set when retroactive.start is false (Behavior 7)
90
+ */
91
+ function validateRetroactiveFieldsWithoutStart(retroactive, diagnostics) {
92
+ if (!retroactive) {
93
+ return;
94
+ }
95
+ const setStartTo = retroactive.get('setStartTo');
96
+ const retroactivePause = retroactive.get('pause');
97
+ // setStartTo requires retroactive.start to be true (warning for existing values)
98
+ if (setStartTo && !setStartTo.isUndefined()) {
99
+ const value = setStartTo.ifString()?.getValue();
100
+ if (value) {
101
+ diagnostics.hint(setStartTo, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('retroactive.setStartTo', 'unless retroactive.start is true'));
102
+ }
103
+ }
104
+ // retroactive.pause requires retroactive.start to be true (warning for existing values)
105
+ if (retroactivePause && !retroactivePause.isUndefined()) {
106
+ const value = retroactivePause.ifBoolean()?.getValue();
107
+ if (value !== undefined) {
108
+ diagnostics.hint(retroactivePause, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('retroactive.pause', 'unless retroactive.start is true'));
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Validates no_schedule restrictions (Behavior 4)
114
+ */
115
+ function validateNoScheduleRestrictions(config, diagnostics) {
116
+ const schedule = config.get('schedule');
117
+ const timezoneSource = config.get('timezoneSource');
118
+ const timezone = config.get('timezone');
119
+ const scheduleSourceField = config.get('scheduleSourceField');
120
+ // Schedule field: warn if provided, since default is forced
121
+ if (schedule && !schedule.isUndefined()) {
122
+ const value = schedule.ifString()?.getValue();
123
+ if (value) {
124
+ diagnostics.hint(schedule, exports.ERROR_MESSAGES.RESTRICTED_WITH_DEFAULT('schedule', 'when scheduleSource is "no_schedule"', exports.DEFAULT_NO_SCHEDULE_ID));
125
+ }
126
+ }
127
+ // timezoneSource: existing values are preserved with a warning
128
+ if (timezoneSource && !timezoneSource.isUndefined()) {
129
+ const value = timezoneSource.ifString()?.getValue();
130
+ if (value && value !== exports.DEFAULT_TIMEZONE_SOURCE) {
131
+ diagnostics.hint(timezoneSource, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('timezoneSource', 'when scheduleSource is "no_schedule"'));
132
+ }
133
+ }
134
+ // timezone: existing values are preserved with a warning
135
+ if (timezone && !timezone.isUndefined()) {
136
+ const value = timezone.ifString()?.getValue();
137
+ if (value) {
138
+ diagnostics.hint(timezone, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('timezone', 'when scheduleSource is "no_schedule"'));
139
+ }
140
+ }
141
+ // scheduleSourceField: warn since it doesn't apply to no_schedule
142
+ if (scheduleSourceField && !scheduleSourceField.isUndefined()) {
143
+ const value = scheduleSourceField.ifString()?.getValue();
144
+ if (value) {
145
+ diagnostics.hint(scheduleSourceField, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('scheduleSourceField', 'when scheduleSource is "no_schedule"'));
146
+ }
147
+ }
148
+ }
149
+ /**
150
+ * Validates task_field schedule requirements (Behavior 5)
151
+ */
152
+ function validateTaskFieldSchedule(config, diagnostics) {
153
+ const schedule = config.get('schedule');
154
+ const scheduleSourceField = config.get('scheduleSourceField');
155
+ const duration = config.get('duration');
156
+ // schedule: warn since it doesn't apply when using task_field
157
+ if (schedule && !schedule.isUndefined()) {
158
+ const value = schedule.ifString()?.getValue();
159
+ if (value) {
160
+ diagnostics.hint(schedule, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('schedule', 'when scheduleSource is "task_field"'));
161
+ }
162
+ }
163
+ // duration: warn since it doesn't apply when using task_field
164
+ if (duration && !duration.isUndefined()) {
165
+ diagnostics.hint(duration, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('duration', 'when scheduleSource is "task_field"'));
166
+ }
167
+ if (!scheduleSourceField || scheduleSourceField.isUndefined()) {
168
+ diagnostics.error(config, exports.ERROR_MESSAGES.MANDATORY_FIELD('scheduleSourceField', 'when scheduleSource is "task_field"'));
169
+ }
170
+ }
171
+ /**
172
+ * Validates sla_definition schedule requirements (Behavior 3)
173
+ */
174
+ function validateSlaDefinitionSchedule(config, diagnostics) {
175
+ const schedule = config.get('schedule');
176
+ const scheduleValue = schedule?.ifString()?.getValue();
177
+ // Check for undefined, null, or empty string
178
+ if (!schedule || schedule.isUndefined() || !scheduleValue) {
179
+ diagnostics.error(config, exports.ERROR_MESSAGES.MANDATORY_FIELD('schedule', 'when scheduleSource is "sla_definition"'));
180
+ }
181
+ }
182
+ /**
183
+ * Validates timezone source restrictions (Behavior 9)
184
+ */
185
+ function validateTimezoneSource(config, timezoneSource, diagnostics) {
186
+ const timezone = config.get('timezone');
187
+ // Only allow timezone field when timezoneSource is 'sla.timezone'
188
+ // Existing values from XML are preserved (pass-through) with a warning.
189
+ if (timezoneSource !== 'sla.timezone' && timezone && !timezone.isUndefined()) {
190
+ const currentValue = timezone.ifString()?.getValue();
191
+ if (currentValue) {
192
+ diagnostics.hint(timezone, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('timezone', 'unless timezoneSource is "sla.timezone"'));
193
+ }
194
+ }
195
+ }
196
+ /**
197
+ * Validates no_match resume restrictions (Behavior 10)
198
+ */
199
+ function validateNoMatchResume(conditions, diagnostics) {
200
+ const resumeCondition = conditions?.get('resume');
201
+ // When whenToResume is "no_match", conditions.resume is restricted.
202
+ // Existing values from XML are preserved (pass-through) with a warning.
203
+ if (resumeCondition && !resumeCondition.isUndefined()) {
204
+ const currentValue = resumeCondition.ifString()?.getValue();
205
+ if (currentValue) {
206
+ diagnostics.hint(resumeCondition, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('conditions.resume', 'when whenToResume is "no_match"'));
207
+ }
208
+ }
209
+ }
210
+ /**
211
+ * Validates cancel condition restrictions (Behavior 11)
212
+ */
213
+ function validateCancelCondition(whenToCancel, conditions, diagnostics) {
214
+ const cancelCondition = conditions?.get('cancel');
215
+ // Only allow conditions.cancel when whenToCancel is 'on_condition'
216
+ // Existing values from XML are preserved (pass-through) with a warning.
217
+ if (whenToCancel !== 'on_condition' && cancelCondition && !cancelCondition.isUndefined()) {
218
+ const currentValue = cancelCondition.ifString()?.getValue();
219
+ if (currentValue) {
220
+ diagnostics.hint(cancelCondition, exports.ERROR_MESSAGES.WARNING_FIELD_PERSISTENCE('conditions.cancel', 'unless whenToCancel is "on_condition"'));
221
+ }
222
+ }
223
+ }
224
+ //# sourceMappingURL=sla-validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sla-validators.js","sourceRoot":"","sources":["../../src/sla/sla-validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Plugin } from '@servicenow/sdk-build-core';
2
+ /**
3
+ * See ./sla/sla-validators.ts for validation behavior documentation.
4
+ */
5
+ export declare const SLAPlugin: Plugin;
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SLAPlugin = 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 sla_validators_1 = require("./sla/sla-validators");
7
+ const DEFAULT_SLA_FLOW = '828f267973333300e289235f04f6a7a3';
8
+ const DEFAULT_COLLECTION = 'incident';
9
+ const DEFAULT_TYPE = 'SLA';
10
+ const DEFAULT_ACTIVE = true;
11
+ const DEFAULT_ADV_CONDITION_TYPE = 'none';
12
+ const DEFAULT_SCHEDULE_SOURCE = 'sla_definition';
13
+ const DEFAULT_RELATIVE_DURATION_WORKS_ON = 'Task record';
14
+ const DEFAULT_RESET_ACTION = 'cancel';
15
+ const DEFAULT_RETROACTIVE = false;
16
+ const DEFAULT_ENABLE_LOGGING = false;
17
+ const DEFAULT_SYS_DOMAIN_PATH = '/';
18
+ const DEFAULT_DURATION_ON_PLATFORM = '1970-01-01 00:00:00';
19
+ /**
20
+ * See ./sla/sla-validators.ts for validation behavior documentation.
21
+ */
22
+ exports.SLAPlugin = sdk_build_core_1.Plugin.create({
23
+ name: 'SLAPlugin',
24
+ records: {
25
+ contract_sla: {
26
+ async toShape(record) {
27
+ return {
28
+ success: true,
29
+ value: new sdk_build_core_1.CallExpressionShape({
30
+ source: record,
31
+ callee: 'Sla',
32
+ args: [
33
+ record.transform(({ $ }) => ({
34
+ $id: $.val(now_id_plugin_1.NowIdShape.from(record)),
35
+ name: $.map((v) => v.ifString()?.ifNotEmpty()?.getValue()),
36
+ table: $.from('collection'),
37
+ duration: $.from('duration').map((v) => {
38
+ const stringShape = v.ifString()?.ifNotEmpty();
39
+ if (!stringShape) {
40
+ return sdk_build_core_1.DurationShape.zero(record);
41
+ }
42
+ const value = stringShape.getValue();
43
+ if (value === DEFAULT_DURATION_ON_PLATFORM) {
44
+ return sdk_build_core_1.DurationShape.zero(record);
45
+ }
46
+ return sdk_build_core_1.DurationShape.from(record, stringShape);
47
+ }),
48
+ // Return empty string when scheduleSource is 'no_schedule'
49
+ schedule: $.from('schedule', 'schedule_source').map((schedule, schedule_source) => {
50
+ const scheduleSourceValue = schedule_source.ifString()?.getValue();
51
+ if (scheduleSourceValue === 'no_schedule') {
52
+ return '';
53
+ }
54
+ return schedule.ifString()?.ifNotEmpty()?.getValue() ?? '';
55
+ }),
56
+ type: $.def(DEFAULT_TYPE),
57
+ active: $.toBoolean().def(DEFAULT_ACTIVE),
58
+ advancedConditionType: $.from('adv_condition_type').def(DEFAULT_ADV_CONDITION_TYPE),
59
+ // Duration & Schedule
60
+ durationType: $.from('duration_type').def(''),
61
+ scheduleSource: $.from('schedule_source').def(DEFAULT_SCHEDULE_SOURCE),
62
+ scheduleSourceField: $.from('schedule_source_field').def(''),
63
+ relativeDurationWorksOn: $.from('relative_duration_works_on').def(DEFAULT_RELATIVE_DURATION_WORKS_ON),
64
+ // Conditions
65
+ conditions: $.from('start_condition', 'stop_condition', 'pause_condition', 'resume_condition', 'reset_condition', 'cancel_condition').map((start_condition, stop_condition, pause_condition, resume_condition, reset_condition, cancel_condition) => {
66
+ const conditions = {};
67
+ const startStr = start_condition.ifString()?.ifNotEmpty()?.getValue();
68
+ if (startStr) {
69
+ conditions['start'] = startStr;
70
+ }
71
+ const stopStr = stop_condition.ifString()?.ifNotEmpty()?.getValue();
72
+ if (stopStr) {
73
+ conditions['stop'] = stopStr;
74
+ }
75
+ const pauseStr = pause_condition.ifString()?.ifNotEmpty()?.getValue();
76
+ if (pauseStr) {
77
+ conditions['pause'] = pauseStr;
78
+ }
79
+ const resumeStr = resume_condition.ifString()?.ifNotEmpty()?.getValue();
80
+ if (resumeStr) {
81
+ conditions['resume'] = resumeStr;
82
+ }
83
+ const resetStr = reset_condition.ifString()?.ifNotEmpty()?.getValue();
84
+ if (resetStr) {
85
+ conditions['reset'] = resetStr;
86
+ }
87
+ const cancelStr = cancel_condition.ifString()?.ifNotEmpty()?.getValue();
88
+ if (cancelStr) {
89
+ conditions['cancel'] = cancelStr;
90
+ }
91
+ return Object.keys(conditions).length > 0 ? conditions : undefined;
92
+ }),
93
+ // Condition Behavior
94
+ conditionType: $.from('condition_class').def(''),
95
+ resetAction: $.from('reset_action').def(DEFAULT_RESET_ACTION),
96
+ whenTo: $.from('when_to_resume', 'when_to_cancel').map((when_to_resume, when_to_cancel) => {
97
+ const resumeValue = when_to_resume.ifString()?.getValue();
98
+ const cancelValue = when_to_cancel.ifString()?.getValue();
99
+ return {
100
+ resume: resumeValue || sla_validators_1.DEFAULT_WHEN_TO_RESUME,
101
+ cancel: cancelValue || sla_validators_1.DEFAULT_WHEN_TO_CANCEL,
102
+ };
103
+ }),
104
+ // Retroactive
105
+ retroactive: $.from('retroactive', 'retroactive_pause', 'set_start_to').map((retroactive, retroactive_pause, set_start_to) => {
106
+ const startValue = retroactive.ifBoolean()?.getValue() ?? DEFAULT_RETROACTIVE;
107
+ const pauseValue = retroactive_pause.ifBoolean()?.getValue();
108
+ const setStartToValue = set_start_to.ifString()?.ifNotEmpty()?.getValue();
109
+ const result = {
110
+ start: startValue,
111
+ };
112
+ // Only include pause when start is true (per Behavior 6/7)
113
+ if (startValue) {
114
+ result.pause = pauseValue ?? sla_validators_1.DEFAULT_RETROACTIVE_PAUSE;
115
+ }
116
+ // Only include setStartTo if it has a valid value
117
+ if (setStartToValue) {
118
+ result.setStartTo = setStartToValue;
119
+ }
120
+ return result;
121
+ }),
122
+ // References
123
+ overrides: $.from('sys_overrides').def(''),
124
+ workflow: $.def(''),
125
+ flow: $.def(''),
126
+ vendor: $.def(''),
127
+ // Time Zones
128
+ timezone: $.def(''),
129
+ timezoneSource: $.from('timezone_source').def(sla_validators_1.DEFAULT_TIMEZONE_SOURCE),
130
+ // Metadata
131
+ enableLogging: $.from('enable_logging').toBoolean().def(DEFAULT_ENABLE_LOGGING),
132
+ target: $.def(''),
133
+ // Domain
134
+ domainPath: $.from('sys_domain_path').def(DEFAULT_SYS_DOMAIN_PATH),
135
+ })),
136
+ ],
137
+ }),
138
+ };
139
+ },
140
+ },
141
+ },
142
+ shapes: [
143
+ {
144
+ shape: sdk_build_core_1.CallExpressionShape,
145
+ fileTypes: ['fluent'],
146
+ async toRecord(callExpression, { factory, diagnostics }) {
147
+ if (callExpression.getCallee() !== 'Sla') {
148
+ return { success: false };
149
+ }
150
+ const config = callExpression.getArgument(0).asObject();
151
+ // Extract Control Fields
152
+ const durationType = config.get('durationType');
153
+ const durationTypeValue = durationType?.ifString()?.getValue();
154
+ const isUserSpecifiedOrEmptyDuration = !durationTypeValue || durationTypeValue === '';
155
+ const scheduleSource = config.get('scheduleSource');
156
+ const scheduleSourceValue = scheduleSource?.ifString()?.getValue() || DEFAULT_SCHEDULE_SOURCE;
157
+ const retroactive = config.get('retroactive')?.ifDefined()?.asObject();
158
+ const retroactiveStartValue = retroactive?.get('start')?.ifBoolean()?.getValue() || false;
159
+ const whenTo = config.get('whenTo')?.ifDefined()?.asObject();
160
+ const whenToResumeValue = whenTo?.get('resume')?.ifString()?.getValue() || sla_validators_1.DEFAULT_WHEN_TO_RESUME;
161
+ const whenToCancelValue = whenTo?.get('cancel')?.ifString()?.getValue() || sla_validators_1.DEFAULT_WHEN_TO_CANCEL;
162
+ const timezoneSource = config.get('timezoneSource');
163
+ const timezoneSourceValue = timezoneSource?.ifString()?.getValue() || sla_validators_1.DEFAULT_TIMEZONE_SOURCE;
164
+ // Extract conditions object
165
+ const conditions = config.get('conditions').ifDefined()?.asObject();
166
+ if (isUserSpecifiedOrEmptyDuration) {
167
+ // Behavior 1: User specified duration
168
+ // Validate duration field uses Duration() helper (only when duration is expected)
169
+ const duration = config.get('duration');
170
+ if (duration && duration.isDefined()) {
171
+ if (!(duration instanceof sdk_build_core_1.CallExpressionShape) || duration.getCallee() !== 'Duration') {
172
+ diagnostics.error(duration, "SLA 'duration' field must use the Duration() helper function");
173
+ }
174
+ }
175
+ (0, sla_validators_1.validateUserSpecifiedDuration)(config, diagnostics);
176
+ }
177
+ else {
178
+ // Behavior 2: Relative duration
179
+ (0, sla_validators_1.validateRelativeDuration)(config, conditions, diagnostics);
180
+ }
181
+ // Schedule Source Validations
182
+ if (scheduleSourceValue === 'no_schedule') {
183
+ // Behavior 5: No schedule
184
+ (0, sla_validators_1.validateNoScheduleRestrictions)(config, diagnostics);
185
+ }
186
+ else if (scheduleSourceValue === 'task_field') {
187
+ // Behavior 6: Task field schedule
188
+ (0, sla_validators_1.validateTaskFieldSchedule)(config, diagnostics);
189
+ }
190
+ else if (scheduleSourceValue === 'sla_definition') {
191
+ // Behavior 7: SLA definition schedule (default)
192
+ (0, sla_validators_1.validateSlaDefinitionSchedule)(config, diagnostics);
193
+ }
194
+ // Condition Field Validations
195
+ // Behavior 8: Timezone source
196
+ (0, sla_validators_1.validateTimezoneSource)(config, timezoneSourceValue, diagnostics);
197
+ // Behavior 9: When to resume = "no_match"
198
+ if (whenToResumeValue === 'no_match') {
199
+ (0, sla_validators_1.validateNoMatchResume)(conditions, diagnostics);
200
+ }
201
+ // Behavior 10: When to cancel validation
202
+ (0, sla_validators_1.validateCancelCondition)(whenToCancelValue, conditions, diagnostics);
203
+ // Retroactive Validations
204
+ if (retroactiveStartValue && retroactive) {
205
+ // Behaviors 6 & 8: Retroactive start validations
206
+ (0, sla_validators_1.validateRetroactiveStart)(retroactive, isUserSpecifiedOrEmptyDuration, diagnostics);
207
+ }
208
+ else {
209
+ // Behavior 7: Validate that retroactive-dependent fields are not set when retroactive.start is false
210
+ (0, sla_validators_1.validateRetroactiveFieldsWithoutStart)(retroactive, diagnostics);
211
+ }
212
+ return {
213
+ success: true,
214
+ value: await factory.createRecord({
215
+ source: callExpression,
216
+ table: 'contract_sla',
217
+ explicitId: config.get('$id'),
218
+ properties: config.transform(({ $ }) => ({
219
+ // Core
220
+ name: $.map((v) => v.ifString()?.ifNotEmpty()?.getValue()),
221
+ collection: $.from('table').def(DEFAULT_COLLECTION),
222
+ type: $.def(DEFAULT_TYPE),
223
+ active: $.def(DEFAULT_ACTIVE),
224
+ adv_condition_type: $.from('advancedConditionType').def(DEFAULT_ADV_CONDITION_TYPE),
225
+ // Duration & Schedule
226
+ duration: $.map((v) => v.toString()),
227
+ duration_type: $.from('durationType').toString(),
228
+ // Conditional schedule: force default when no_schedule
229
+ schedule: $.map((v) => {
230
+ if (scheduleSourceValue === 'no_schedule') {
231
+ return sla_validators_1.DEFAULT_NO_SCHEDULE_ID;
232
+ }
233
+ return v.ifString()?.ifNotEmpty()?.getValue();
234
+ }),
235
+ schedule_source: $.from('scheduleSource').def(DEFAULT_SCHEDULE_SOURCE),
236
+ schedule_source_field: $.from('scheduleSourceField'),
237
+ relative_duration_works_on: $.from('relativeDurationWorksOn').def(DEFAULT_RELATIVE_DURATION_WORKS_ON),
238
+ // Conditions
239
+ start_condition: $.val(conditions?.get('start')),
240
+ reset_condition: $.val(conditions?.get('reset')),
241
+ stop_condition: $.val(conditions?.get('stop')),
242
+ cancel_condition: $.val(conditions?.get('cancel')),
243
+ pause_condition: $.val(conditions?.get('pause')),
244
+ resume_condition: $.val(conditions?.get('resume')),
245
+ // Condition Behavior
246
+ condition_class: $.from('conditionType').toString(),
247
+ reset_action: $.from('resetAction').def(DEFAULT_RESET_ACTION),
248
+ when_to_resume: $.val(whenTo?.get('resume')).def(sla_validators_1.DEFAULT_WHEN_TO_RESUME),
249
+ when_to_cancel: $.val(whenTo?.get('cancel')).def(sla_validators_1.DEFAULT_WHEN_TO_CANCEL),
250
+ // Retroactive
251
+ retroactive: $.val(retroactive?.get('start')).def(DEFAULT_RETROACTIVE),
252
+ retroactive_pause: $.map(() => {
253
+ const value = retroactive?.get('pause')?.ifBoolean()?.getValue();
254
+ if (value !== undefined) {
255
+ return value;
256
+ }
257
+ return isUserSpecifiedOrEmptyDuration ? sla_validators_1.DEFAULT_RETROACTIVE_PAUSE : undefined;
258
+ }),
259
+ set_start_to: $.val(retroactive?.get('setStartTo')),
260
+ // References
261
+ sys_overrides: $.from('overrides'),
262
+ workflow: $,
263
+ flow: $.from('flow').def(DEFAULT_SLA_FLOW),
264
+ vendor: $,
265
+ // Time Zones
266
+ timezone: $,
267
+ timezone_source: $.from('timezoneSource').def(sla_validators_1.DEFAULT_TIMEZONE_SOURCE),
268
+ // Metadata
269
+ enable_logging: $.from('enableLogging').def(DEFAULT_ENABLE_LOGGING),
270
+ target: $,
271
+ // Domain
272
+ sys_domain_path: $.from('domainPath').def(DEFAULT_SYS_DOMAIN_PATH),
273
+ })),
274
+ }),
275
+ };
276
+ },
277
+ },
278
+ ],
279
+ });
280
+ //# sourceMappingURL=sla-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sla-plugin.js","sourceRoot":"","sources":["../src/sla-plugin.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,19 @@ const attachmentRelationships = {
92
92
  },
93
93
  },
94
94
  };
95
+ const sourceArtifactRelationships = {
96
+ sn_glider_source_artifact_m2m: {
97
+ via: 'application_file',
98
+ descendant: true,
99
+ relationships: {
100
+ sn_glider_source_artifact: {
101
+ via: 'source_artifact',
102
+ inverse: true,
103
+ descendant: true,
104
+ },
105
+ },
106
+ },
107
+ };
95
108
  const toNoOpShape = (record) => {
96
109
  return { success: true, value: sdk_build_core_1.Shape.noOp(record) };
97
110
  };
@@ -107,9 +120,14 @@ exports.StaticContentPlugin = sdk_build_core_1.Plugin.create({
107
120
  toShape: toNoOpShape,
108
121
  },
109
122
  sys_ux_lib_asset: {
110
- relationships: attachmentRelationships,
123
+ coalesce: ['name'],
124
+ relationships: { ...attachmentRelationships, ...sourceArtifactRelationships },
111
125
  toShape: toNoOpShape,
112
- toFile: multipleRecordsToFile,
126
+ toFile: async (mainRecord, context) => {
127
+ const existingRelated = mainRecord.flat().slice(1);
128
+ const m2mRecords = context.descendants.query('sn_glider_source_artifact_m2m');
129
+ return multipleRecordsToFile(mainRecord.with(...existingRelated, ...m2mRecords), context);
130
+ },
113
131
  },
114
132
  db_image: {
115
133
  relationships: attachmentRelationships,
@@ -163,6 +181,11 @@ exports.StaticContentPlugin = sdk_build_core_1.Plugin.create({
163
181
  if (mimeType === 'text/html') {
164
182
  // This content will be handled by the UiPage referencing it
165
183
  }
184
+ else if (relativePath.endsWith('.ui-source-manifest.json')) {
185
+ // Build-time manifest produced by the uiPageSourceManifest rollup plugin.
186
+ // Consumed by UiPage during build to determine which source files to include
187
+ // in the source artifact record. Not a deployable asset.
188
+ }
166
189
  else if (mimeType === 'application/javascript') {
167
190
  tableName = 'sys_ux_lib_asset';
168
191
  assetName = sdk_build_core_2.path.join(config.scope, relativePath.substring(0, relativePath.length - ext.length));