@servicenow/sdk-build-plugins 4.1.1 → 4.3.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 (388) hide show
  1. package/dist/acl-plugin.js +22 -4
  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/application-menu-plugin.js +1 -0
  7. package/dist/application-menu-plugin.js.map +1 -1
  8. package/dist/atf/step-configs.d.ts +13 -12
  9. package/dist/atf/step-configs.js.map +1 -1
  10. package/dist/atf/test-plugin.d.ts +1 -1
  11. package/dist/atf/test-plugin.js +13 -7
  12. package/dist/atf/test-plugin.js.map +1 -1
  13. package/dist/basic-syntax-plugin.js +58 -14
  14. package/dist/basic-syntax-plugin.js.map +1 -1
  15. package/dist/business-rule-plugin.js +1 -0
  16. package/dist/business-rule-plugin.js.map +1 -1
  17. package/dist/call-expression-plugin.js +1 -107
  18. package/dist/call-expression-plugin.js.map +1 -1
  19. package/dist/claims-plugin.js +1 -1
  20. package/dist/claims-plugin.js.map +1 -1
  21. package/dist/client-script-plugin.js +5 -17
  22. package/dist/client-script-plugin.js.map +1 -1
  23. package/dist/column/column-helper.d.ts +1 -1
  24. package/dist/column/column-helper.js +46 -2
  25. package/dist/column/column-helper.js.map +1 -1
  26. package/dist/column/column-to-record.js +6 -4
  27. package/dist/column/column-to-record.js.map +1 -1
  28. package/dist/column-plugin.js +107 -28
  29. package/dist/column-plugin.js.map +1 -1
  30. package/dist/dashboard/dashboard-component-property-defaults.d.ts +152 -0
  31. package/dist/dashboard/dashboard-component-property-defaults.js +264 -0
  32. package/dist/dashboard/dashboard-component-property-defaults.js.map +1 -0
  33. package/dist/dashboard/dashboard-component-resolver.d.ts +13 -0
  34. package/dist/dashboard/dashboard-component-resolver.js +69 -0
  35. package/dist/dashboard/dashboard-component-resolver.js.map +1 -0
  36. package/dist/dashboard/dashboard-plugin.d.ts +12 -0
  37. package/dist/dashboard/dashboard-plugin.js +397 -0
  38. package/dist/dashboard/dashboard-plugin.js.map +1 -0
  39. package/dist/data-plugin.d.ts +6 -0
  40. package/dist/data-plugin.js +156 -0
  41. package/dist/data-plugin.js.map +1 -0
  42. package/dist/email-notification-plugin.d.ts +2 -0
  43. package/dist/email-notification-plugin.js +541 -0
  44. package/dist/email-notification-plugin.js.map +1 -0
  45. package/dist/flow/constants/flow-plugin-constants.d.ts +58 -0
  46. package/dist/flow/constants/flow-plugin-constants.js +70 -0
  47. package/dist/flow/constants/flow-plugin-constants.js.map +1 -0
  48. package/dist/flow/flow-logic/flow-logic-constants.d.ts +38 -0
  49. package/dist/flow/flow-logic/flow-logic-constants.js +118 -0
  50. package/dist/flow/flow-logic/flow-logic-constants.js.map +1 -0
  51. package/dist/flow/flow-logic/flow-logic-diagnostics.d.ts +19 -0
  52. package/dist/flow/flow-logic/flow-logic-diagnostics.js +503 -0
  53. package/dist/flow/flow-logic/flow-logic-diagnostics.js.map +1 -0
  54. package/dist/flow/flow-logic/flow-logic-plugin-helpers.d.ts +62 -0
  55. package/dist/flow/flow-logic/flow-logic-plugin-helpers.js +2092 -0
  56. package/dist/flow/flow-logic/flow-logic-plugin-helpers.js.map +1 -0
  57. package/dist/flow/flow-logic/flow-logic-plugin.d.ts +52 -0
  58. package/dist/flow/flow-logic/flow-logic-plugin.js +283 -0
  59. package/dist/flow/flow-logic/flow-logic-plugin.js.map +1 -0
  60. package/dist/flow/flow-logic/flow-logic-shapes.d.ts +104 -0
  61. package/dist/flow/flow-logic/flow-logic-shapes.js +201 -0
  62. package/dist/flow/flow-logic/flow-logic-shapes.js.map +1 -0
  63. package/dist/flow/plugins/approval-rules-plugin.d.ts +2 -0
  64. package/dist/flow/plugins/approval-rules-plugin.js +49 -0
  65. package/dist/flow/plugins/approval-rules-plugin.js.map +1 -0
  66. package/dist/flow/plugins/flow-action-definition-plugin.d.ts +2 -0
  67. package/dist/flow/plugins/flow-action-definition-plugin.js +286 -0
  68. package/dist/flow/plugins/flow-action-definition-plugin.js.map +1 -0
  69. package/dist/flow/plugins/flow-data-pill-plugin.d.ts +9 -0
  70. package/dist/flow/plugins/flow-data-pill-plugin.js +212 -0
  71. package/dist/flow/plugins/flow-data-pill-plugin.js.map +1 -0
  72. package/dist/flow/plugins/flow-definition-plugin.d.ts +2 -0
  73. package/dist/flow/plugins/flow-definition-plugin.js +1668 -0
  74. package/dist/flow/plugins/flow-definition-plugin.js.map +1 -0
  75. package/dist/flow/plugins/flow-diagnostics-plugin.d.ts +26 -0
  76. package/dist/flow/plugins/flow-diagnostics-plugin.js +217 -0
  77. package/dist/flow/plugins/flow-diagnostics-plugin.js.map +1 -0
  78. package/dist/flow/plugins/flow-instance-plugin.d.ts +12 -0
  79. package/dist/flow/plugins/flow-instance-plugin.js +930 -0
  80. package/dist/flow/plugins/flow-instance-plugin.js.map +1 -0
  81. package/dist/flow/plugins/flow-trigger-instance-plugin.d.ts +2 -0
  82. package/dist/flow/plugins/flow-trigger-instance-plugin.js +324 -0
  83. package/dist/flow/plugins/flow-trigger-instance-plugin.js.map +1 -0
  84. package/dist/flow/plugins/inline-script-plugin.d.ts +39 -0
  85. package/dist/flow/plugins/inline-script-plugin.js +80 -0
  86. package/dist/flow/plugins/inline-script-plugin.js.map +1 -0
  87. package/dist/flow/plugins/step-definition-plugin.d.ts +5 -0
  88. package/dist/flow/plugins/step-definition-plugin.js +71 -0
  89. package/dist/flow/plugins/step-definition-plugin.js.map +1 -0
  90. package/dist/flow/plugins/step-instance-plugin.d.ts +31 -0
  91. package/dist/flow/plugins/step-instance-plugin.js +339 -0
  92. package/dist/flow/plugins/step-instance-plugin.js.map +1 -0
  93. package/dist/flow/plugins/trigger-plugin.d.ts +2 -0
  94. package/dist/flow/plugins/trigger-plugin.js +96 -0
  95. package/dist/flow/plugins/trigger-plugin.js.map +1 -0
  96. package/dist/flow/plugins/wfa-datapill-plugin.d.ts +15 -0
  97. package/dist/flow/plugins/wfa-datapill-plugin.js +178 -0
  98. package/dist/flow/plugins/wfa-datapill-plugin.js.map +1 -0
  99. package/dist/flow/utils/approval-rules-processor.d.ts +13 -0
  100. package/dist/flow/utils/approval-rules-processor.js +267 -0
  101. package/dist/flow/utils/approval-rules-processor.js.map +1 -0
  102. package/dist/flow/utils/built-in-complex-objects.d.ts +19 -0
  103. package/dist/flow/utils/built-in-complex-objects.js +62 -0
  104. package/dist/flow/utils/built-in-complex-objects.js.map +1 -0
  105. package/dist/flow/utils/complex-object-resolver.d.ts +8 -0
  106. package/dist/flow/utils/complex-object-resolver.js +614 -0
  107. package/dist/flow/utils/complex-object-resolver.js.map +1 -0
  108. package/dist/flow/utils/complex-objects.d.ts +36 -0
  109. package/dist/flow/utils/complex-objects.js +481 -0
  110. package/dist/flow/utils/complex-objects.js.map +1 -0
  111. package/dist/flow/utils/data-pill-shapes.d.ts +58 -0
  112. package/dist/flow/utils/data-pill-shapes.js +135 -0
  113. package/dist/flow/utils/data-pill-shapes.js.map +1 -0
  114. package/dist/flow/utils/datapill-transformer.d.ts +110 -0
  115. package/dist/flow/utils/datapill-transformer.js +503 -0
  116. package/dist/flow/utils/datapill-transformer.js.map +1 -0
  117. package/dist/flow/utils/flow-constants.d.ts +65 -0
  118. package/dist/flow/utils/flow-constants.js +223 -0
  119. package/dist/flow/utils/flow-constants.js.map +1 -0
  120. package/dist/flow/utils/flow-io-to-record.d.ts +44 -0
  121. package/dist/flow/utils/flow-io-to-record.js +409 -0
  122. package/dist/flow/utils/flow-io-to-record.js.map +1 -0
  123. package/dist/flow/utils/flow-shapes.d.ts +161 -0
  124. package/dist/flow/utils/flow-shapes.js +255 -0
  125. package/dist/flow/utils/flow-shapes.js.map +1 -0
  126. package/dist/flow/utils/flow-to-xml.d.ts +16 -0
  127. package/dist/flow/utils/flow-to-xml.js +237 -0
  128. package/dist/flow/utils/flow-to-xml.js.map +1 -0
  129. package/dist/flow/utils/flow-variable-processor.d.ts +51 -0
  130. package/dist/flow/utils/flow-variable-processor.js +69 -0
  131. package/dist/flow/utils/flow-variable-processor.js.map +1 -0
  132. package/dist/flow/utils/label-cache-parser.d.ts +7 -0
  133. package/dist/flow/utils/label-cache-parser.js +24 -0
  134. package/dist/flow/utils/label-cache-parser.js.map +1 -0
  135. package/dist/flow/utils/label-cache-processor.d.ts +119 -0
  136. package/dist/flow/utils/label-cache-processor.js +719 -0
  137. package/dist/flow/utils/label-cache-processor.js.map +1 -0
  138. package/dist/flow/utils/pill-string-parser.d.ts +88 -0
  139. package/dist/flow/utils/pill-string-parser.js +306 -0
  140. package/dist/flow/utils/pill-string-parser.js.map +1 -0
  141. package/dist/flow/utils/schema-to-flow-object.d.ts +22 -0
  142. package/dist/flow/utils/schema-to-flow-object.js +318 -0
  143. package/dist/flow/utils/schema-to-flow-object.js.map +1 -0
  144. package/dist/flow/utils/utils.d.ts +117 -0
  145. package/dist/flow/utils/utils.js +345 -0
  146. package/dist/flow/utils/utils.js.map +1 -0
  147. package/dist/import-sets-plugin.d.ts +2 -0
  148. package/dist/import-sets-plugin.js +412 -0
  149. package/dist/import-sets-plugin.js.map +1 -0
  150. package/dist/index.d.ts +24 -1
  151. package/dist/index.js +25 -1
  152. package/dist/index.js.map +1 -1
  153. package/dist/json-plugin.d.ts +4 -4
  154. package/dist/json-plugin.js +21 -7
  155. package/dist/json-plugin.js.map +1 -1
  156. package/dist/list-plugin.js +83 -1
  157. package/dist/list-plugin.js.map +1 -1
  158. package/dist/now-attach-plugin.d.ts +36 -0
  159. package/dist/now-attach-plugin.js +320 -0
  160. package/dist/now-attach-plugin.js.map +1 -0
  161. package/dist/now-config-plugin.js +3 -0
  162. package/dist/now-config-plugin.js.map +1 -1
  163. package/dist/now-include-plugin.js +7 -1
  164. package/dist/now-include-plugin.js.map +1 -1
  165. package/dist/package-json-plugin.js +2 -2
  166. package/dist/package-json-plugin.js.map +1 -1
  167. package/dist/record-plugin.d.ts +35 -0
  168. package/dist/record-plugin.js +109 -23
  169. package/dist/record-plugin.js.map +1 -1
  170. package/dist/repack/index.d.ts +2 -0
  171. package/dist/repack/index.js +8 -0
  172. package/dist/repack/index.js.map +1 -1
  173. package/dist/repack/lint/Rules.js.map +1 -1
  174. package/dist/rest-api-plugin.js +81 -74
  175. package/dist/rest-api-plugin.js.map +1 -1
  176. package/dist/role-plugin.js +1 -0
  177. package/dist/role-plugin.js.map +1 -1
  178. package/dist/server-module-plugin/index.js +53 -6
  179. package/dist/server-module-plugin/index.js.map +1 -1
  180. package/dist/service-catalog/catalog-clientscript-plugin.d.ts +2 -0
  181. package/dist/service-catalog/catalog-clientscript-plugin.js +117 -0
  182. package/dist/service-catalog/catalog-clientscript-plugin.js.map +1 -0
  183. package/dist/service-catalog/catalog-item-plugin.d.ts +2 -0
  184. package/dist/service-catalog/catalog-item-plugin.js +115 -0
  185. package/dist/service-catalog/catalog-item-plugin.js.map +1 -0
  186. package/dist/service-catalog/catalog-ui-policy-plugin.d.ts +2 -0
  187. package/dist/service-catalog/catalog-ui-policy-plugin.js +266 -0
  188. package/dist/service-catalog/catalog-ui-policy-plugin.js.map +1 -0
  189. package/dist/service-catalog/index.d.ts +5 -0
  190. package/dist/service-catalog/index.js +22 -0
  191. package/dist/service-catalog/index.js.map +1 -0
  192. package/dist/service-catalog/record-to-shape.d.ts +6 -0
  193. package/dist/service-catalog/record-to-shape.js +93 -0
  194. package/dist/service-catalog/record-to-shape.js.map +1 -0
  195. package/dist/service-catalog/sc-record-producer-plugin.d.ts +2 -0
  196. package/dist/service-catalog/sc-record-producer-plugin.js +139 -0
  197. package/dist/service-catalog/sc-record-producer-plugin.js.map +1 -0
  198. package/dist/service-catalog/service-catalog-base.d.ts +311 -0
  199. package/dist/service-catalog/service-catalog-base.js +542 -0
  200. package/dist/service-catalog/service-catalog-base.js.map +1 -0
  201. package/dist/service-catalog/service-catalog-diagnostics.d.ts +45 -0
  202. package/dist/service-catalog/service-catalog-diagnostics.js +169 -0
  203. package/dist/service-catalog/service-catalog-diagnostics.js.map +1 -0
  204. package/dist/service-catalog/shape-to-record.d.ts +7 -0
  205. package/dist/service-catalog/shape-to-record.js +232 -0
  206. package/dist/service-catalog/shape-to-record.js.map +1 -0
  207. package/dist/service-catalog/utils.d.ts +313 -0
  208. package/dist/service-catalog/utils.js +1144 -0
  209. package/dist/service-catalog/utils.js.map +1 -0
  210. package/dist/service-catalog/variable-helper.d.ts +43 -0
  211. package/dist/service-catalog/variable-helper.js +92 -0
  212. package/dist/service-catalog/variable-helper.js.map +1 -0
  213. package/dist/service-catalog/variable-set-plugin.d.ts +2 -0
  214. package/dist/service-catalog/variable-set-plugin.js +175 -0
  215. package/dist/service-catalog/variable-set-plugin.js.map +1 -0
  216. package/dist/service-catalog/variables-transform.d.ts +139 -0
  217. package/dist/service-catalog/variables-transform.js +403 -0
  218. package/dist/service-catalog/variables-transform.js.map +1 -0
  219. package/dist/service-portal/widget-plugin.js +4 -1
  220. package/dist/service-portal/widget-plugin.js.map +1 -1
  221. package/dist/sla/sla-validators.d.ts +61 -0
  222. package/dist/sla/sla-validators.js +224 -0
  223. package/dist/sla/sla-validators.js.map +1 -0
  224. package/dist/sla-plugin.d.ts +5 -0
  225. package/dist/sla-plugin.js +280 -0
  226. package/dist/sla-plugin.js.map +1 -0
  227. package/dist/static-content-plugin.d.ts +1 -0
  228. package/dist/static-content-plugin.js +4 -3
  229. package/dist/static-content-plugin.js.map +1 -1
  230. package/dist/table-plugin.js +49 -4
  231. package/dist/table-plugin.js.map +1 -1
  232. package/dist/ui-page-plugin.js +2 -1
  233. package/dist/ui-page-plugin.js.map +1 -1
  234. package/dist/ui-policy-plugin.d.ts +2 -0
  235. package/dist/ui-policy-plugin.js +405 -0
  236. package/dist/ui-policy-plugin.js.map +1 -0
  237. package/dist/utils.d.ts +19 -1
  238. package/dist/utils.js +40 -0
  239. package/dist/utils.js.map +1 -1
  240. package/dist/ux-list-menu-config-plugin.d.ts +2 -0
  241. package/dist/ux-list-menu-config-plugin.js +292 -0
  242. package/dist/ux-list-menu-config-plugin.js.map +1 -0
  243. package/dist/view-plugin.js +1 -1
  244. package/dist/view-plugin.js.map +1 -1
  245. package/dist/workspace-plugin/chrome-tab.d.ts +2 -0
  246. package/dist/workspace-plugin/chrome-tab.js +46 -0
  247. package/dist/workspace-plugin/chrome-tab.js.map +1 -0
  248. package/dist/workspace-plugin/constants.d.ts +52 -0
  249. package/dist/workspace-plugin/constants.js +56 -0
  250. package/dist/workspace-plugin/constants.js.map +1 -0
  251. package/dist/workspace-plugin/fluent-utils.d.ts +9 -0
  252. package/dist/workspace-plugin/fluent-utils.js +60 -0
  253. package/dist/workspace-plugin/fluent-utils.js.map +1 -0
  254. package/dist/workspace-plugin/page.d.ts +8 -0
  255. package/dist/workspace-plugin/page.js +108 -0
  256. package/dist/workspace-plugin/page.js.map +1 -0
  257. package/dist/workspace-plugin/screen.d.ts +1 -0
  258. package/dist/workspace-plugin/screen.js +38 -0
  259. package/dist/workspace-plugin/screen.js.map +1 -0
  260. package/dist/workspace-plugin/templates/index.d.ts +10 -0
  261. package/dist/workspace-plugin/templates/index.js +20 -0
  262. package/dist/workspace-plugin/templates/index.js.map +1 -0
  263. package/dist/workspace-plugin/templates/record-page-composition.d.ts +1 -0
  264. package/dist/workspace-plugin/templates/record-page-composition.js +4043 -0
  265. package/dist/workspace-plugin/templates/record-page-composition.js.map +1 -0
  266. package/dist/workspace-plugin/templates/record-page-data.d.ts +1 -0
  267. package/dist/workspace-plugin/templates/record-page-data.js +527 -0
  268. package/dist/workspace-plugin/templates/record-page-data.js.map +1 -0
  269. package/dist/workspace-plugin/templates/record-page-interalEventMappings.d.ts +1 -0
  270. package/dist/workspace-plugin/templates/record-page-interalEventMappings.js +39 -0
  271. package/dist/workspace-plugin/templates/record-page-interalEventMappings.js.map +1 -0
  272. package/dist/workspace-plugin/templates/record-page-layoutModel.d.ts +1 -0
  273. package/dist/workspace-plugin/templates/record-page-layoutModel.js +55 -0
  274. package/dist/workspace-plugin/templates/record-page-layoutModel.js.map +1 -0
  275. package/dist/workspace-plugin/templates/record-page-properties.d.ts +1 -0
  276. package/dist/workspace-plugin/templates/record-page-properties.js +135 -0
  277. package/dist/workspace-plugin/templates/record-page-properties.js.map +1 -0
  278. package/dist/workspace-plugin/templates/record-page.d.ts +3 -0
  279. package/dist/workspace-plugin/templates/record-page.js +8 -0
  280. package/dist/workspace-plugin/templates/record-page.js.map +1 -0
  281. package/dist/workspace-plugin.d.ts +2 -0
  282. package/dist/workspace-plugin.js +453 -0
  283. package/dist/workspace-plugin.js.map +1 -0
  284. package/package.json +10 -12
  285. package/src/_types/eslint-plugin-es-x.d.ts +17 -0
  286. package/src/_types/md5.js.d.ts +8 -0
  287. package/src/acl-plugin.ts +33 -10
  288. package/src/applicability-plugin.ts +82 -0
  289. package/src/application-menu-plugin.ts +1 -0
  290. package/src/atf/step-configs.ts +14 -12
  291. package/src/atf/test-plugin.ts +46 -24
  292. package/src/basic-syntax-plugin.ts +71 -14
  293. package/src/business-rule-plugin.ts +9 -5
  294. package/src/call-expression-plugin.ts +2 -130
  295. package/src/claims-plugin.ts +1 -1
  296. package/src/client-script-plugin.ts +8 -22
  297. package/src/column/column-helper.ts +65 -3
  298. package/src/column/column-to-record.ts +6 -4
  299. package/src/column-plugin.ts +142 -40
  300. package/src/dashboard/dashboard-component-property-defaults.ts +277 -0
  301. package/src/dashboard/dashboard-component-resolver.ts +69 -0
  302. package/src/dashboard/dashboard-plugin.ts +450 -0
  303. package/src/data-plugin.ts +194 -0
  304. package/src/email-notification-plugin.ts +850 -0
  305. package/src/flow/constants/flow-plugin-constants.ts +79 -0
  306. package/src/flow/flow-logic/flow-logic-constants.ts +120 -0
  307. package/src/flow/flow-logic/flow-logic-diagnostics.ts +591 -0
  308. package/src/flow/flow-logic/flow-logic-plugin-helpers.ts +2550 -0
  309. package/src/flow/flow-logic/flow-logic-plugin.ts +337 -0
  310. package/src/flow/flow-logic/flow-logic-shapes.ts +215 -0
  311. package/src/flow/plugins/approval-rules-plugin.ts +48 -0
  312. package/src/flow/plugins/flow-action-definition-plugin.ts +295 -0
  313. package/src/flow/plugins/flow-data-pill-plugin.ts +258 -0
  314. package/src/flow/plugins/flow-definition-plugin.ts +2173 -0
  315. package/src/flow/plugins/flow-diagnostics-plugin.ts +280 -0
  316. package/src/flow/plugins/flow-instance-plugin.ts +1148 -0
  317. package/src/flow/plugins/flow-trigger-instance-plugin.ts +426 -0
  318. package/src/flow/plugins/inline-script-plugin.ts +83 -0
  319. package/src/flow/plugins/step-definition-plugin.ts +67 -0
  320. package/src/flow/plugins/step-instance-plugin.ts +431 -0
  321. package/src/flow/plugins/trigger-plugin.ts +95 -0
  322. package/src/flow/plugins/wfa-datapill-plugin.ts +213 -0
  323. package/src/flow/utils/approval-rules-processor.ts +298 -0
  324. package/src/flow/utils/built-in-complex-objects.ts +81 -0
  325. package/src/flow/utils/complex-object-resolver.ts +875 -0
  326. package/src/flow/utils/complex-objects.ts +656 -0
  327. package/src/flow/utils/data-pill-shapes.ts +165 -0
  328. package/src/flow/utils/datapill-transformer.ts +632 -0
  329. package/src/flow/utils/flow-constants.ts +276 -0
  330. package/src/flow/utils/flow-io-to-record.ts +533 -0
  331. package/src/flow/utils/flow-shapes.ts +296 -0
  332. package/src/flow/utils/flow-to-xml.ts +318 -0
  333. package/src/flow/utils/flow-variable-processor.ts +100 -0
  334. package/src/flow/utils/label-cache-parser.ts +37 -0
  335. package/src/flow/utils/label-cache-processor.ts +870 -0
  336. package/src/flow/utils/pill-string-parser.ts +375 -0
  337. package/src/flow/utils/schema-to-flow-object.ts +385 -0
  338. package/src/flow/utils/utils.ts +395 -0
  339. package/src/import-sets-plugin.ts +542 -0
  340. package/src/index.ts +25 -1
  341. package/src/json-plugin.ts +31 -12
  342. package/src/list-plugin.ts +91 -1
  343. package/src/now-attach-plugin.ts +403 -0
  344. package/src/now-config-plugin.ts +6 -2
  345. package/src/now-include-plugin.ts +8 -1
  346. package/src/package-json-plugin.ts +3 -3
  347. package/src/record-plugin.ts +126 -30
  348. package/src/repack/index.ts +14 -0
  349. package/src/repack/lint/Rules.ts +1 -10
  350. package/src/rest-api-plugin.ts +106 -100
  351. package/src/role-plugin.ts +1 -0
  352. package/src/server-module-plugin/index.ts +74 -22
  353. package/src/service-catalog/catalog-clientscript-plugin.ts +140 -0
  354. package/src/service-catalog/catalog-item-plugin.ts +162 -0
  355. package/src/service-catalog/catalog-ui-policy-plugin.ts +324 -0
  356. package/src/service-catalog/index.ts +5 -0
  357. package/src/service-catalog/record-to-shape.ts +109 -0
  358. package/src/service-catalog/sc-record-producer-plugin.ts +201 -0
  359. package/src/service-catalog/service-catalog-base.ts +600 -0
  360. package/src/service-catalog/service-catalog-diagnostics.ts +251 -0
  361. package/src/service-catalog/shape-to-record.ts +275 -0
  362. package/src/service-catalog/utils.ts +1362 -0
  363. package/src/service-catalog/variable-helper.ts +135 -0
  364. package/src/service-catalog/variable-set-plugin.ts +197 -0
  365. package/src/service-catalog/variables-transform.ts +438 -0
  366. package/src/service-portal/widget-plugin.ts +4 -1
  367. package/src/sla/sla-validators.ts +331 -0
  368. package/src/sla-plugin.ts +358 -0
  369. package/src/static-content-plugin.ts +2 -2
  370. package/src/table-plugin.ts +66 -9
  371. package/src/ui-page-plugin.ts +2 -1
  372. package/src/ui-policy-plugin.ts +505 -0
  373. package/src/utils.ts +50 -1
  374. package/src/ux-list-menu-config-plugin.ts +312 -0
  375. package/src/view-plugin.ts +1 -1
  376. package/src/workspace-plugin/chrome-tab.ts +44 -0
  377. package/src/workspace-plugin/constants.ts +53 -0
  378. package/src/workspace-plugin/fluent-utils.ts +60 -0
  379. package/src/workspace-plugin/page.ts +139 -0
  380. package/src/workspace-plugin/screen.ts +34 -0
  381. package/src/workspace-plugin/templates/index.ts +17 -0
  382. package/src/workspace-plugin/templates/record-page-composition.ts +4051 -0
  383. package/src/workspace-plugin/templates/record-page-data.ts +523 -0
  384. package/src/workspace-plugin/templates/record-page-interalEventMappings.ts +35 -0
  385. package/src/workspace-plugin/templates/record-page-layoutModel.ts +51 -0
  386. package/src/workspace-plugin/templates/record-page-properties.ts +131 -0
  387. package/src/workspace-plugin/templates/record-page.ts +6 -0
  388. package/src/workspace-plugin.ts +574 -0
@@ -0,0 +1,397 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DashboardPlugin = 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 dashboard_component_resolver_1 = require("./dashboard-component-resolver");
7
+ const dashboard_component_property_defaults_1 = require("./dashboard-component-property-defaults");
8
+ const transformWidget = (widget) => widget.transform(({ $ }) => ({
9
+ $id: $.val(now_id_plugin_1.NowIdShape.from(widget)),
10
+ component: $.map((v) => (0, dashboard_component_resolver_1.resolveComponentToName)(v.toString().getValue())),
11
+ componentProps: $.from('component_props')
12
+ .map((v) => {
13
+ const json = v.ifString()?.getValue();
14
+ const props = json ? JSON.parse(json) : v.getValue();
15
+ return (0, dashboard_component_property_defaults_1.removeRestrictedValues)(props);
16
+ })
17
+ .def(dashboard_component_property_defaults_1.DEFAULT_PROPERTY_VALUES),
18
+ height: $.from('h').toNumber(),
19
+ width: $.from('w').toNumber(),
20
+ position: $.map(() => ({
21
+ x: widget.get('x').toNumber().getValue(),
22
+ y: widget.get('y').toNumber().getValue(),
23
+ })),
24
+ }));
25
+ const createWidgetProperties = (widgetData, canvas) => widgetData.transform(({ $ }) => ({
26
+ canvas: $.val(canvas),
27
+ component: $.map((v) => (0, dashboard_component_resolver_1.resolveComponentToSysId)(v.toString().getValue())),
28
+ component_props: $.from('componentProps').map((v) => {
29
+ const props = v.getValue() || {};
30
+ return JSON.stringify({ ...dashboard_component_property_defaults_1.DEFAULT_PROPERTY_VALUES, ...props });
31
+ }),
32
+ h: $.from('height').toNumber(),
33
+ w: $.from('width').toNumber(),
34
+ x: $.from('position').map((v) => {
35
+ const posObj = v.asObject();
36
+ return posObj.get('x').toNumber().getValue();
37
+ }),
38
+ y: $.from('position').map((v) => {
39
+ const posObj = v.asObject();
40
+ return posObj.get('y').toNumber().getValue();
41
+ }),
42
+ }));
43
+ /**
44
+ * Creates a Dashboard (`par_dashboard`).
45
+ *
46
+ * @param config - an object containing the following properties:
47
+ * * **$id** - unique id for the record, typically using `Now.ID["value"]`
48
+ * * **name** - The name of the dashboard
49
+ * * **tabs**? - Array of dashboard tabs (each with $id, name, and widgets array)
50
+ * * **visibilities**? - Array of visibility rules (each with $id and experience reference)
51
+ * * **permissions**? - Array of user permissions (each with $id, user, can_read, can_write, can_share, owner)
52
+ */
53
+ exports.DashboardPlugin = sdk_build_core_1.Plugin.create({
54
+ name: 'DashboardPlugin',
55
+ records: {
56
+ par_dashboard: {
57
+ relationships: {
58
+ par_dashboard_tab: {
59
+ via: 'dashboard',
60
+ descendant: true,
61
+ relationships: {
62
+ par_dashboard_canvas: {
63
+ via: 'dashboard_tab',
64
+ descendant: true,
65
+ relationships: {
66
+ par_dashboard_widget: {
67
+ via: 'canvas',
68
+ descendant: true,
69
+ },
70
+ },
71
+ },
72
+ },
73
+ },
74
+ par_dashboard_canvas: {
75
+ via: 'dashboard',
76
+ descendant: true,
77
+ relationships: {
78
+ par_dashboard_widget: {
79
+ via: 'canvas',
80
+ descendant: true,
81
+ },
82
+ },
83
+ },
84
+ par_dashboard_visibility: {
85
+ via: 'dashboard',
86
+ descendant: true,
87
+ },
88
+ par_dashboard_permission: {
89
+ via: 'dashboard',
90
+ descendant: true,
91
+ relationships: {
92
+ sys_user: {
93
+ via: 'user',
94
+ inverse: true,
95
+ },
96
+ sys_user_group: {
97
+ via: 'group',
98
+ inverse: true,
99
+ },
100
+ sys_user_role: {
101
+ via: 'role',
102
+ inverse: true,
103
+ },
104
+ },
105
+ },
106
+ },
107
+ toShape(record, { descendants }) {
108
+ const topCanvas = descendants.query('par_dashboard_canvas').find((c) => {
109
+ const tabField = c.get('dashboard_tab');
110
+ return (!tabField ||
111
+ tabField.getValue() === undefined ||
112
+ tabField.getValue() === null ||
113
+ tabField.getValue() === '');
114
+ });
115
+ const topWidgets = topCanvas
116
+ ? descendants
117
+ .query('par_dashboard_widget')
118
+ .filter((w) => {
119
+ const canvasField = w.get('canvas');
120
+ const canvasValue = canvasField.isRecord()
121
+ ? canvasField.asRecord().getId().getValue()
122
+ : canvasField.asRecordId().getValue();
123
+ return canvasValue === topCanvas.getId().getValue();
124
+ })
125
+ .map(transformWidget)
126
+ : [];
127
+ const topLayout = topWidgets.length > 0 ? { widgets: topWidgets } : undefined;
128
+ const tabs = descendants
129
+ .query('par_dashboard_tab')
130
+ .sort((a, b) => a.get('order').toNumber().getValue() - b.get('order').toNumber().getValue())
131
+ .map((tab) => {
132
+ // Find the canvas for this tab
133
+ const canvas = descendants.query('par_dashboard_canvas').find((c) => {
134
+ const tabField = c.get('dashboard_tab');
135
+ if (!tabField ||
136
+ tabField.getValue() === undefined ||
137
+ tabField.getValue() === null ||
138
+ tabField.getValue() === '') {
139
+ return false;
140
+ }
141
+ const tabValue = tabField.isRecord()
142
+ ? tabField.asRecord().getId().getValue()
143
+ : tabField.asRecordId().getValue();
144
+ return tabValue === tab.getId().getValue();
145
+ });
146
+ const widgets = canvas
147
+ ? descendants
148
+ .query('par_dashboard_widget')
149
+ .filter((w) => {
150
+ const canvasField = w.get('canvas');
151
+ const canvasValue = canvasField.isRecord()
152
+ ? canvasField.asRecord().getId().getValue()
153
+ : canvasField.asRecordId().getValue();
154
+ return canvasValue === canvas.getId().getValue();
155
+ })
156
+ .map(transformWidget)
157
+ : [];
158
+ return tab.transform(({ $ }) => ({
159
+ $id: $.val(now_id_plugin_1.NowIdShape.from(tab)),
160
+ name: $,
161
+ active: $.toBoolean().def(true),
162
+ widgets: $.val(widgets),
163
+ }));
164
+ });
165
+ const visibilities = descendants.query('par_dashboard_visibility').map((visibility) => {
166
+ return visibility.transform(({ $ }) => ({
167
+ $id: $.val(now_id_plugin_1.NowIdShape.from(visibility)),
168
+ experience: $.from('experience').def(''),
169
+ }));
170
+ });
171
+ const permissions = descendants.query('par_dashboard_permission').map((permission) => permission.transform(({ $ }) => {
172
+ const hasUser = permission.get('user').asString().getValue() || false;
173
+ const hasRole = permission.get('role').asString().getValue() || false;
174
+ const hasGroup = permission.get('group').asString().getValue() || false;
175
+ const permissionSubject = hasUser
176
+ ? { user: $ }
177
+ : hasRole
178
+ ? { role: $ }
179
+ : hasGroup
180
+ ? { group: $ }
181
+ : {};
182
+ return {
183
+ $id: $.val(now_id_plugin_1.NowIdShape.from(permission)),
184
+ canRead: $.from('can_read').toBoolean(),
185
+ canShare: $.from('can_share').toBoolean(),
186
+ canWrite: $.from('can_write').toBoolean(),
187
+ owner: $.toBoolean(),
188
+ ...permissionSubject,
189
+ };
190
+ }));
191
+ const dashboardShape = record.transform(({ $ }) => ({
192
+ $id: $.val(now_id_plugin_1.NowIdShape.from(record)),
193
+ name: $,
194
+ active: $.toBoolean().def(true),
195
+ tabs: $.val(tabs).def([]),
196
+ visibilities: $.val(visibilities).def([]),
197
+ permissions: $.val(permissions).def([]),
198
+ topLayout: $.val(topLayout),
199
+ }));
200
+ return {
201
+ success: true,
202
+ value: new sdk_build_core_1.CallExpressionShape({
203
+ source: record,
204
+ callee: 'Dashboard',
205
+ args: [dashboardShape],
206
+ }),
207
+ };
208
+ },
209
+ },
210
+ par_dashboard_tab: {
211
+ relationships: {
212
+ par_dashboard_canvas: {
213
+ via: 'dashboard_tab',
214
+ descendant: true,
215
+ },
216
+ },
217
+ },
218
+ par_dashboard_canvas: {
219
+ coalesce: ['dashboard', 'dashboard_tab'],
220
+ relationships: {
221
+ par_dashboard_widget: {
222
+ via: 'canvas',
223
+ descendant: true,
224
+ },
225
+ },
226
+ },
227
+ par_dashboard_visibility: {
228
+ coalesce: ['dashboard', 'experience'],
229
+ },
230
+ par_dashboard_widget: {},
231
+ par_dashboard_user_metadata: {},
232
+ par_dashboard_permission: {
233
+ coalesce: ['dashboard', 'user', 'group', 'role'],
234
+ },
235
+ },
236
+ shapes: [
237
+ {
238
+ shape: sdk_build_core_1.CallExpressionShape,
239
+ fileTypes: ['fluent'],
240
+ async toRecord(source, { factory }) {
241
+ if (source.getCallee() !== 'Dashboard') {
242
+ return { success: false };
243
+ }
244
+ const arg = source.getArgument(0).asObject();
245
+ const dashboard = await factory.createRecord({
246
+ source: source,
247
+ table: 'par_dashboard',
248
+ explicitId: arg.get('$id'),
249
+ properties: arg.transform(({ $ }) => ({
250
+ name: $,
251
+ active: $.def(true),
252
+ })),
253
+ });
254
+ const topLayoutRecords = [];
255
+ // Process top layout
256
+ if (arg.get('topLayout').ifObject()) {
257
+ const topLayout = arg.get('topLayout').asObject();
258
+ const topCanvas = await factory.createRecord({
259
+ source,
260
+ table: 'par_dashboard_canvas',
261
+ properties: {
262
+ dashboard: dashboard,
263
+ },
264
+ });
265
+ const topWidgets = topLayout.get('widgets').ifArray()?.getElements() ?? [];
266
+ topLayoutRecords.push(topCanvas);
267
+ for (const widgetObj of topWidgets) {
268
+ const widgetData = widgetObj.asObject();
269
+ const widget = await factory.createRecord({
270
+ source: widgetObj,
271
+ table: 'par_dashboard_widget',
272
+ explicitId: widgetData.get('$id'),
273
+ properties: createWidgetProperties(widgetData, topCanvas),
274
+ });
275
+ topLayoutRecords.push(widget);
276
+ }
277
+ }
278
+ // Process tabs
279
+ const tabs = arg.get('tabs').ifArray()?.getElements() ?? [];
280
+ const tabRecords = [];
281
+ for (const [index, tabObj] of tabs.entries()) {
282
+ const tabData = tabObj.asObject();
283
+ const tab = await factory.createRecord({
284
+ source: tabObj,
285
+ table: 'par_dashboard_tab',
286
+ explicitId: tabData.get('$id'),
287
+ properties: tabData.transform(({ $ }) => ({
288
+ dashboard: $.val(dashboard),
289
+ name: $,
290
+ order: $.val(index),
291
+ active: $.def(true),
292
+ })),
293
+ });
294
+ tabRecords.push(tab);
295
+ // Create canvas for this tab
296
+ const canvas = await factory.createRecord({
297
+ source: tabObj,
298
+ table: 'par_dashboard_canvas',
299
+ properties: {
300
+ dashboard: dashboard,
301
+ dashboard_tab: tab,
302
+ },
303
+ });
304
+ tabRecords.push(canvas);
305
+ // Process widgets for this tab's canvas
306
+ const widgets = tabData.get('widgets').ifArray()?.getElements() ?? [];
307
+ for (const widgetObj of widgets) {
308
+ const widgetData = widgetObj.asObject();
309
+ const widget = await factory.createRecord({
310
+ source: widgetObj,
311
+ table: 'par_dashboard_widget',
312
+ explicitId: widgetData.get('$id'),
313
+ properties: createWidgetProperties(widgetData, canvas),
314
+ });
315
+ tabRecords.push(widget);
316
+ }
317
+ }
318
+ // Process visibilities
319
+ const visibilities = arg.get('visibilities').ifArray()?.getElements() ?? [];
320
+ const visibilityRecords = [];
321
+ if (visibilities.length === 0) {
322
+ // Add default visibility if none provided
323
+ visibilityRecords.push(await factory.createRecord({
324
+ source: source,
325
+ table: 'par_dashboard_visibility',
326
+ properties: {
327
+ dashboard: dashboard,
328
+ experience: '08c73d60537101100834ddeeff7b1287',
329
+ },
330
+ }));
331
+ }
332
+ else {
333
+ for (const visibility of visibilities) {
334
+ const visibilityObj = visibility.asObject();
335
+ visibilityRecords.push(await factory.createRecord({
336
+ source: visibility,
337
+ table: 'par_dashboard_visibility',
338
+ explicitId: visibilityObj.get('$id'),
339
+ properties: visibilityObj.transform(({ $ }) => {
340
+ return {
341
+ dashboard: $.val(dashboard),
342
+ experience: $.from('experience'),
343
+ };
344
+ }),
345
+ }));
346
+ }
347
+ }
348
+ // Process permissions
349
+ const permissions = arg.get('permissions').ifArray()?.getElements() ?? [];
350
+ const permissionRecords = [];
351
+ for (const permission of permissions) {
352
+ const permissionObj = permission.asObject();
353
+ // Build properties object
354
+ const properties = {
355
+ dashboard: dashboard,
356
+ can_read: permissionObj.get('canRead').ifUndefined()
357
+ ? true
358
+ : permissionObj.get('canRead').getValue(),
359
+ can_write: permissionObj.get('canWrite').ifUndefined()
360
+ ? false
361
+ : permissionObj.get('canWrite').getValue(),
362
+ can_share: permissionObj.get('canShare').ifUndefined()
363
+ ? false
364
+ : permissionObj.get('canShare').getValue(),
365
+ owner: permissionObj.get('owner').ifUndefined() ? false : permissionObj.get('owner').getValue(),
366
+ };
367
+ // Handle user reference (optional)
368
+ const userValue = permissionObj.get('user');
369
+ if (!userValue.ifUndefined()) {
370
+ properties['user'] = userValue;
371
+ }
372
+ // Handle group reference (optional)
373
+ const groupValue = permissionObj.get('group');
374
+ if (!groupValue.ifUndefined()) {
375
+ properties['group'] = groupValue;
376
+ }
377
+ // Handle role reference (optional)
378
+ const roleValue = permissionObj.get('role');
379
+ if (!roleValue.ifUndefined()) {
380
+ properties['role'] = roleValue;
381
+ }
382
+ permissionRecords.push(await factory.createRecord({
383
+ source: permission,
384
+ table: 'par_dashboard_permission',
385
+ explicitId: permissionObj.get('$id'),
386
+ properties: properties,
387
+ }));
388
+ }
389
+ return {
390
+ success: true,
391
+ value: dashboard.with(...topLayoutRecords, ...tabRecords, ...visibilityRecords, ...permissionRecords),
392
+ };
393
+ },
394
+ },
395
+ ],
396
+ });
397
+ //# sourceMappingURL=dashboard-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-plugin.js","sourceRoot":"","sources":["../../src/dashboard/dashboard-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Plugin, ts } from '@servicenow/sdk-build-core';
2
+ /**
3
+ * Check if a ts.Node is a data helper call expression.
4
+ */
5
+ export declare function isDataHelper(node: ts.Node): boolean;
6
+ export declare const DataPlugin: Plugin;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataPlugin = void 0;
4
+ exports.isDataHelper = isDataHelper;
5
+ const sdk_build_core_1 = require("@servicenow/sdk-build-core");
6
+ const utils_1 = require("./utils");
7
+ /**
8
+ * Check if a ts.Node is a data helper call expression.
9
+ */
10
+ function isDataHelper(node) {
11
+ if (!sdk_build_core_1.ts.Node.isCallExpression(node)) {
12
+ return false;
13
+ }
14
+ const callee = (0, utils_1.getCallExpressionName)(node);
15
+ return Object.values(sdk_build_core_1.DATA_HELPER_NAMES).includes(callee);
16
+ }
17
+ /**
18
+ * Shape creators for each data helper.
19
+ * Maps helper function names to their shape creation logic.
20
+ * All data helper shapes extend CallExpressionShape.
21
+ */
22
+ const shapeCreators = {
23
+ [sdk_build_core_1.DATA_HELPER_NAMES.DURATION]: createDurationShape,
24
+ [sdk_build_core_1.DATA_HELPER_NAMES.TIME]: createTimeShape,
25
+ [sdk_build_core_1.DATA_HELPER_NAMES.FIELD_LIST]: createFieldListShape,
26
+ [sdk_build_core_1.DATA_HELPER_NAMES.TEMPLATE_VALUE]: createTemplateValueShape,
27
+ };
28
+ exports.DataPlugin = sdk_build_core_1.Plugin.create({
29
+ name: 'DataPlugin',
30
+ shapes: [
31
+ {
32
+ shape: sdk_build_core_1.CallExpressionShape,
33
+ fileTypes: ['fluent'],
34
+ toSubclass(shape, { diagnostics }) {
35
+ const callee = shape.getCallee();
36
+ const shapeCreator = shapeCreators[callee];
37
+ // Only handle known data helper callees (Duration, Time, FieldList, TemplateValue)
38
+ if (!shapeCreator) {
39
+ return { success: false };
40
+ }
41
+ return shapeCreator(shape, diagnostics);
42
+ },
43
+ },
44
+ ],
45
+ });
46
+ /**
47
+ * Helper to validate that all defined fields are non-negative.
48
+ * Returns errors for negative values
49
+ */
50
+ function validateNonNegative(data, fields) {
51
+ const errors = [];
52
+ for (const field of fields) {
53
+ const value = data[field];
54
+ if (!value?.isDefined() || !value.isNumber()) {
55
+ continue; // Skip undefined or non-numeric (will be caught by constructor)
56
+ }
57
+ const numericValue = value.asNumber().getValue();
58
+ if (numericValue < 0) {
59
+ errors.push(`${field} must be >= 0, got ${numericValue}`);
60
+ }
61
+ }
62
+ return errors;
63
+ }
64
+ /**
65
+ * Helper to validate that at least one field is defined.
66
+ * Returns true if at least one field has a defined value.
67
+ */
68
+ function hasAtLeastOneField(data, fields) {
69
+ return fields.some((field) => data[field]?.isDefined());
70
+ }
71
+ /**
72
+ * Creates a DurationShape from a CallExpressionShape.
73
+ * Validates that duration values are within acceptable ranges.
74
+ */
75
+ function createDurationShape(shape, diagnostics) {
76
+ const argShape = shape.getArgument(0);
77
+ const duration = argShape.asObject().properties({ resolve: false });
78
+ // Validate at least one field is provided
79
+ if (!hasAtLeastOneField(duration, ['days', 'hours', 'minutes', 'seconds'])) {
80
+ diagnostics.error(shape, 'Duration must have at least one field defined (days, hours, minutes, or seconds)');
81
+ return { success: false };
82
+ }
83
+ const errors = validateNonNegative(duration, ['days', 'hours', 'minutes', 'seconds']);
84
+ if (errors.length > 0) {
85
+ diagnostics.error(shape, `Invalid duration values: ${errors.join(', ')}`);
86
+ return { success: false };
87
+ }
88
+ return { success: true, value: new sdk_build_core_1.DurationShape({ source: shape, value: argShape.asObject() }) };
89
+ }
90
+ /**
91
+ * Creates a TimeShape from a CallExpressionShape.
92
+ * Validates that time values are within acceptable ranges.
93
+ */
94
+ function createTimeShape(shape, diagnostics) {
95
+ const argShape = shape.getArgument(0);
96
+ const timeData = argShape.asObject().properties({ resolve: false });
97
+ // Validate at least one field is provided
98
+ if (!hasAtLeastOneField(timeData, ['hours', 'minutes', 'seconds'])) {
99
+ diagnostics.error(shape, 'Time must have at least one field defined (hours, minutes, or seconds)');
100
+ return { success: false };
101
+ }
102
+ const errors = validateNonNegative(timeData, ['hours', 'minutes', 'seconds']);
103
+ if (errors.length > 0) {
104
+ diagnostics.error(shape, `Invalid time values: ${errors.join(', ')}`);
105
+ return { success: false };
106
+ }
107
+ // Extract and validate optional timezone from second argument
108
+ const tzArg = shape.getArgument(1);
109
+ if (tzArg.isUndefined()) {
110
+ return { success: true, value: new sdk_build_core_1.TimeShape({ source: shape, value: argShape.asObject() }) };
111
+ }
112
+ if (!tzArg.isString()) {
113
+ diagnostics.error(shape, 'Second argument (timezone) must be a string literal');
114
+ return { success: false };
115
+ }
116
+ const timeZone = tzArg.asString().getValue();
117
+ if (!isValidTimeZone(timeZone)) {
118
+ diagnostics.error(shape, `Invalid IANA timezone: '${timeZone}'. Use a valid timezone like 'America/New_York', 'Europe/London', or 'UTC'.`);
119
+ return { success: false };
120
+ }
121
+ return { success: true, value: new sdk_build_core_1.TimeShape({ source: shape, value: argShape.asObject(), timeZone }) };
122
+ }
123
+ /**
124
+ * Creates a FieldListShape from a CallExpressionShape.
125
+ */
126
+ function createFieldListShape(shape, _diagnostics) {
127
+ const fields = shape.getArgument(0).asArray().getElements();
128
+ return { success: true, value: new sdk_build_core_1.FieldListShape({ source: shape, fields }) };
129
+ }
130
+ /**
131
+ * Creates a TemplateValueShape from a CallExpressionShape.
132
+ */
133
+ function createTemplateValueShape(shape, diagnostics) {
134
+ const value = shape.getArgument(0).asObject().properties({ resolve: false });
135
+ // Validate that values don't contain ^^ (double caret)
136
+ for (const [key, val] of Object.entries(value)) {
137
+ if (val.isString() && val.getValue().includes('^^')) {
138
+ diagnostics.error(shape, `Template field '${key}' contains an invalid character sequence: multiple carets (^^). Use a single caret (^) if needed, it will be escaped automatically.`);
139
+ return { success: false };
140
+ }
141
+ }
142
+ return { success: true, value: new sdk_build_core_1.TemplateValueShape({ source: shape, value }) };
143
+ }
144
+ /**
145
+ * Validates if a timezone string is a valid IANA timezone.
146
+ */
147
+ function isValidTimeZone(timeZone) {
148
+ try {
149
+ Intl.DateTimeFormat(undefined, { timeZone });
150
+ return true;
151
+ }
152
+ catch {
153
+ return false;
154
+ }
155
+ }
156
+ //# sourceMappingURL=data-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-plugin.js","sourceRoot":"","sources":["../src/data-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Plugin } from '@servicenow/sdk-build-core';
2
+ export declare const EmailNotificationPlugin: Plugin;