@servicenow/sdk-build-plugins 4.4.1 → 4.6.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 (337) hide show
  1. package/dist/acl-plugin.js +54 -4
  2. package/dist/acl-plugin.js.map +1 -1
  3. package/dist/applicability-plugin.js +2 -0
  4. package/dist/applicability-plugin.js.map +1 -1
  5. package/dist/application-menu-plugin.js +2 -0
  6. package/dist/application-menu-plugin.js.map +1 -1
  7. package/dist/arrow-function-plugin.d.ts +6 -1
  8. package/dist/arrow-function-plugin.js +105 -12
  9. package/dist/arrow-function-plugin.js.map +1 -1
  10. package/dist/atf/test-plugin.js +2 -0
  11. package/dist/atf/test-plugin.js.map +1 -1
  12. package/dist/basic-syntax-plugin.js +20 -0
  13. package/dist/basic-syntax-plugin.js.map +1 -1
  14. package/dist/call-expression-plugin.js +1 -0
  15. package/dist/call-expression-plugin.js.map +1 -1
  16. package/dist/claims-plugin.js +1 -0
  17. package/dist/claims-plugin.js.map +1 -1
  18. package/dist/client-script-plugin.js +1 -0
  19. package/dist/client-script-plugin.js.map +1 -1
  20. package/dist/column-plugin.js +4 -7
  21. package/dist/column-plugin.js.map +1 -1
  22. package/dist/cross-scope-privilege-plugin.js +1 -0
  23. package/dist/cross-scope-privilege-plugin.js.map +1 -1
  24. package/dist/dashboard/dashboard-plugin.js +2 -0
  25. package/dist/dashboard/dashboard-plugin.js.map +1 -1
  26. package/dist/data-plugin.js +1 -0
  27. package/dist/data-plugin.js.map +1 -1
  28. package/dist/email-notification-plugin.js +9 -13
  29. package/dist/email-notification-plugin.js.map +1 -1
  30. package/dist/flow/constants/flow-plugin-constants.d.ts +1 -1
  31. package/dist/flow/constants/flow-plugin-constants.js +1 -1
  32. package/dist/flow/constants/flow-plugin-constants.js.map +1 -1
  33. package/dist/flow/flow-logic/flow-logic-diagnostics.js +5 -5
  34. package/dist/flow/flow-logic/flow-logic-diagnostics.js.map +1 -1
  35. package/dist/flow/flow-logic/flow-logic-plugin-helpers.d.ts +82 -2
  36. package/dist/flow/flow-logic/flow-logic-plugin-helpers.js +48 -40
  37. package/dist/flow/flow-logic/flow-logic-plugin-helpers.js.map +1 -1
  38. package/dist/flow/flow-logic/flow-logic-plugin.js +1 -0
  39. package/dist/flow/flow-logic/flow-logic-plugin.js.map +1 -1
  40. package/dist/flow/plugins/approval-rules-plugin.js +1 -0
  41. package/dist/flow/plugins/approval-rules-plugin.js.map +1 -1
  42. package/dist/flow/plugins/flow-action-definition-plugin.js +1232 -55
  43. package/dist/flow/plugins/flow-action-definition-plugin.js.map +1 -1
  44. package/dist/flow/plugins/flow-data-pill-plugin.js +6 -2
  45. package/dist/flow/plugins/flow-data-pill-plugin.js.map +1 -1
  46. package/dist/flow/plugins/flow-definition-plugin.js +23 -44
  47. package/dist/flow/plugins/flow-definition-plugin.js.map +1 -1
  48. package/dist/flow/plugins/flow-diagnostics-plugin.d.ts +2 -2
  49. package/dist/flow/plugins/flow-diagnostics-plugin.js +3 -2
  50. package/dist/flow/plugins/flow-diagnostics-plugin.js.map +1 -1
  51. package/dist/flow/plugins/flow-instance-plugin.js +136 -34
  52. package/dist/flow/plugins/flow-instance-plugin.js.map +1 -1
  53. package/dist/flow/plugins/flow-trigger-instance-plugin.js +1 -0
  54. package/dist/flow/plugins/flow-trigger-instance-plugin.js.map +1 -1
  55. package/dist/flow/plugins/inline-script-plugin.js +1 -0
  56. package/dist/flow/plugins/inline-script-plugin.js.map +1 -1
  57. package/dist/flow/plugins/step-definition-plugin.js +4 -2
  58. package/dist/flow/plugins/step-definition-plugin.js.map +1 -1
  59. package/dist/flow/plugins/step-instance-plugin.d.ts +9 -1
  60. package/dist/flow/plugins/step-instance-plugin.js +649 -135
  61. package/dist/flow/plugins/step-instance-plugin.js.map +1 -1
  62. package/dist/flow/plugins/trigger-plugin.js +2 -0
  63. package/dist/flow/plugins/trigger-plugin.js.map +1 -1
  64. package/dist/flow/plugins/wfa-datapill-plugin.js +21 -5
  65. package/dist/flow/plugins/wfa-datapill-plugin.js.map +1 -1
  66. package/dist/flow/post-install.d.ts +2 -0
  67. package/dist/flow/post-install.js +59 -0
  68. package/dist/flow/post-install.js.map +1 -0
  69. package/dist/flow/utils/complex-object-resolver.js +4 -1
  70. package/dist/flow/utils/complex-object-resolver.js.map +1 -1
  71. package/dist/flow/utils/complex-objects.js +5 -3
  72. package/dist/flow/utils/complex-objects.js.map +1 -1
  73. package/dist/flow/utils/flow-constants.d.ts +90 -2
  74. package/dist/flow/utils/flow-constants.js +430 -7
  75. package/dist/flow/utils/flow-constants.js.map +1 -1
  76. package/dist/flow/utils/flow-io-to-record.d.ts +1 -1
  77. package/dist/flow/utils/flow-io-to-record.js +37 -16
  78. package/dist/flow/utils/flow-io-to-record.js.map +1 -1
  79. package/dist/flow/utils/flow-shapes.js +4 -0
  80. package/dist/flow/utils/flow-shapes.js.map +1 -1
  81. package/dist/flow/utils/flow-to-xml.d.ts +3 -2
  82. package/dist/flow/utils/flow-to-xml.js +3 -4
  83. package/dist/flow/utils/flow-to-xml.js.map +1 -1
  84. package/dist/flow/utils/label-cache-parser.d.ts +9 -2
  85. package/dist/flow/utils/label-cache-parser.js +32 -4
  86. package/dist/flow/utils/label-cache-parser.js.map +1 -1
  87. package/dist/flow/utils/label-cache-processor.d.ts +5 -0
  88. package/dist/flow/utils/label-cache-processor.js +14 -2
  89. package/dist/flow/utils/label-cache-processor.js.map +1 -1
  90. package/dist/flow/utils/pill-shape-helpers.d.ts +15 -0
  91. package/dist/flow/utils/pill-shape-helpers.js +35 -0
  92. package/dist/flow/utils/pill-shape-helpers.js.map +1 -0
  93. package/dist/flow/utils/pill-string-parser.js +1 -0
  94. package/dist/flow/utils/pill-string-parser.js.map +1 -1
  95. package/dist/flow/utils/schema-to-flow-object.d.ts +6 -1
  96. package/dist/flow/utils/schema-to-flow-object.js +131 -15
  97. package/dist/flow/utils/schema-to-flow-object.js.map +1 -1
  98. package/dist/flow/utils/service-catalog.js +5 -1
  99. package/dist/flow/utils/service-catalog.js.map +1 -1
  100. package/dist/flow/utils/utils.d.ts +1 -0
  101. package/dist/flow/utils/utils.js +6 -1
  102. package/dist/flow/utils/utils.js.map +1 -1
  103. package/dist/form-plugin.d.ts +2 -0
  104. package/dist/form-plugin.js +1132 -0
  105. package/dist/form-plugin.js.map +1 -0
  106. package/dist/html-import-plugin.js +1 -0
  107. package/dist/html-import-plugin.js.map +1 -1
  108. package/dist/import-sets-plugin.js +2 -0
  109. package/dist/import-sets-plugin.js.map +1 -1
  110. package/dist/inbound-email-action-plugin.d.ts +10 -0
  111. package/dist/inbound-email-action-plugin.js +128 -0
  112. package/dist/inbound-email-action-plugin.js.map +1 -0
  113. package/dist/index.d.ts +13 -0
  114. package/dist/index.js +17 -1
  115. package/dist/index.js.map +1 -1
  116. package/dist/instance-scan-plugin.d.ts +2 -0
  117. package/dist/instance-scan-plugin.js +293 -0
  118. package/dist/instance-scan-plugin.js.map +1 -0
  119. package/dist/json-plugin.js +1 -0
  120. package/dist/json-plugin.js.map +1 -1
  121. package/dist/list-plugin.js +1 -0
  122. package/dist/list-plugin.js.map +1 -1
  123. package/dist/now-attach-plugin.js +1 -0
  124. package/dist/now-attach-plugin.js.map +1 -1
  125. package/dist/now-config-plugin.js +659 -51
  126. package/dist/now-config-plugin.js.map +1 -1
  127. package/dist/now-id-plugin.js +1 -0
  128. package/dist/now-id-plugin.js.map +1 -1
  129. package/dist/now-include-plugin.js +1 -0
  130. package/dist/now-include-plugin.js.map +1 -1
  131. package/dist/now-ref-plugin.js +1 -0
  132. package/dist/now-ref-plugin.js.map +1 -1
  133. package/dist/now-unresolved-plugin.js +1 -0
  134. package/dist/now-unresolved-plugin.js.map +1 -1
  135. package/dist/package-json-plugin.js +1 -0
  136. package/dist/package-json-plugin.js.map +1 -1
  137. package/dist/property-plugin.js +3 -1
  138. package/dist/property-plugin.js.map +1 -1
  139. package/dist/record-plugin.d.ts +37 -0
  140. package/dist/record-plugin.js +47 -3
  141. package/dist/record-plugin.js.map +1 -1
  142. package/dist/repack/lint/Rules.d.ts +11 -2
  143. package/dist/repack/lint/Rules.js +160 -16
  144. package/dist/repack/lint/Rules.js.map +1 -1
  145. package/dist/repack/lint/index.d.ts +10 -5
  146. package/dist/repack/lint/index.js +76 -50
  147. package/dist/repack/lint/index.js.map +1 -1
  148. package/dist/rest-api-plugin.js +22 -1
  149. package/dist/rest-api-plugin.js.map +1 -1
  150. package/dist/role-plugin.js +1 -0
  151. package/dist/role-plugin.js.map +1 -1
  152. package/dist/schedule-script/index.d.ts +1 -0
  153. package/dist/schedule-script/index.js +18 -0
  154. package/dist/schedule-script/index.js.map +1 -0
  155. package/dist/schedule-script/scheduled-script-plugin.d.ts +2 -0
  156. package/dist/schedule-script/scheduled-script-plugin.js +556 -0
  157. package/dist/schedule-script/scheduled-script-plugin.js.map +1 -0
  158. package/dist/schedule-script/timeZoneConverter.d.ts +61 -0
  159. package/dist/schedule-script/timeZoneConverter.js +170 -0
  160. package/dist/schedule-script/timeZoneConverter.js.map +1 -0
  161. package/dist/script-action-plugin.js +2 -0
  162. package/dist/script-action-plugin.js.map +1 -1
  163. package/dist/script-include-plugin.js +2 -0
  164. package/dist/script-include-plugin.js.map +1 -1
  165. package/dist/server-module-plugin/index.js +13 -2
  166. package/dist/server-module-plugin/index.js.map +1 -1
  167. package/dist/service-catalog/catalog-clientscript-plugin.js +2 -0
  168. package/dist/service-catalog/catalog-clientscript-plugin.js.map +1 -1
  169. package/dist/service-catalog/catalog-item-plugin.js +2 -0
  170. package/dist/service-catalog/catalog-item-plugin.js.map +1 -1
  171. package/dist/service-catalog/catalog-ui-policy-plugin.js +2 -0
  172. package/dist/service-catalog/catalog-ui-policy-plugin.js.map +1 -1
  173. package/dist/service-catalog/sc-record-producer-plugin.js +2 -0
  174. package/dist/service-catalog/sc-record-producer-plugin.js.map +1 -1
  175. package/dist/service-catalog/service-catalog-base.d.ts +18 -18
  176. package/dist/service-catalog/service-catalog-base.js +22 -22
  177. package/dist/service-catalog/service-catalog-base.js.map +1 -1
  178. package/dist/service-catalog/service-catalog-diagnostics.d.ts +6 -0
  179. package/dist/service-catalog/service-catalog-diagnostics.js +20 -0
  180. package/dist/service-catalog/service-catalog-diagnostics.js.map +1 -1
  181. package/dist/service-catalog/shape-to-record.js +7 -2
  182. package/dist/service-catalog/shape-to-record.js.map +1 -1
  183. package/dist/service-catalog/variable-set-plugin.js +2 -0
  184. package/dist/service-catalog/variable-set-plugin.js.map +1 -1
  185. package/dist/service-portal/angular-provider-plugin.js +2 -0
  186. package/dist/service-portal/angular-provider-plugin.js.map +1 -1
  187. package/dist/service-portal/dependency-plugin.js +5 -31
  188. package/dist/service-portal/dependency-plugin.js.map +1 -1
  189. package/dist/service-portal/header-footer-plugin.d.ts +2 -0
  190. package/dist/service-portal/header-footer-plugin.js +50 -0
  191. package/dist/service-portal/header-footer-plugin.js.map +1 -0
  192. package/dist/service-portal/menu-plugin.d.ts +2 -0
  193. package/dist/service-portal/menu-plugin.js +334 -0
  194. package/dist/service-portal/menu-plugin.js.map +1 -0
  195. package/dist/service-portal/page-plugin.d.ts +2 -0
  196. package/dist/service-portal/page-plugin.js +681 -0
  197. package/dist/service-portal/page-plugin.js.map +1 -0
  198. package/dist/service-portal/page-route-map-plugin.d.ts +2 -0
  199. package/dist/service-portal/page-route-map-plugin.js +114 -0
  200. package/dist/service-portal/page-route-map-plugin.js.map +1 -0
  201. package/dist/service-portal/portal-plugin.d.ts +2 -0
  202. package/dist/service-portal/portal-plugin.js +309 -0
  203. package/dist/service-portal/portal-plugin.js.map +1 -0
  204. package/dist/service-portal/theme-plugin.d.ts +2 -0
  205. package/dist/service-portal/theme-plugin.js +112 -0
  206. package/dist/service-portal/theme-plugin.js.map +1 -0
  207. package/dist/service-portal/utils.d.ts +46 -0
  208. package/dist/service-portal/utils.js +331 -0
  209. package/dist/service-portal/utils.js.map +1 -0
  210. package/dist/service-portal/widget-plugin.js +10 -182
  211. package/dist/service-portal/widget-plugin.js.map +1 -1
  212. package/dist/sla-plugin.js +2 -0
  213. package/dist/sla-plugin.js.map +1 -1
  214. package/dist/static-content-plugin.js +5 -0
  215. package/dist/static-content-plugin.js.map +1 -1
  216. package/dist/table-plugin.js +191 -26
  217. package/dist/table-plugin.js.map +1 -1
  218. package/dist/ui-action-plugin.js +3 -4
  219. package/dist/ui-action-plugin.js.map +1 -1
  220. package/dist/ui-page-plugin.js +101 -21
  221. package/dist/ui-page-plugin.js.map +1 -1
  222. package/dist/ui-policy-plugin.js +1 -0
  223. package/dist/ui-policy-plugin.js.map +1 -1
  224. package/dist/user-preference-plugin.js +2 -0
  225. package/dist/user-preference-plugin.js.map +1 -1
  226. package/dist/utils.d.ts +20 -2
  227. package/dist/utils.js +34 -3
  228. package/dist/utils.js.map +1 -1
  229. package/dist/ux-list-menu-config-plugin.js +2 -0
  230. package/dist/ux-list-menu-config-plugin.js.map +1 -1
  231. package/dist/view-plugin.js +9 -3
  232. package/dist/view-plugin.js.map +1 -1
  233. package/dist/workspace-plugin.js +41 -36
  234. package/dist/workspace-plugin.js.map +1 -1
  235. package/package.json +11 -11
  236. package/src/_types/eslint-community-eslint-utils.d.ts +15 -0
  237. package/src/acl-plugin.ts +97 -8
  238. package/src/applicability-plugin.ts +2 -0
  239. package/src/application-menu-plugin.ts +2 -0
  240. package/src/arrow-function-plugin.ts +128 -13
  241. package/src/atf/test-plugin.ts +2 -0
  242. package/src/basic-syntax-plugin.ts +21 -0
  243. package/src/call-expression-plugin.ts +1 -0
  244. package/src/claims-plugin.ts +1 -0
  245. package/src/client-script-plugin.ts +2 -1
  246. package/src/column-plugin.ts +4 -8
  247. package/src/cross-scope-privilege-plugin.ts +2 -1
  248. package/src/dashboard/dashboard-plugin.ts +2 -0
  249. package/src/data-plugin.ts +1 -0
  250. package/src/email-notification-plugin.ts +3 -23
  251. package/src/flow/constants/flow-plugin-constants.ts +1 -1
  252. package/src/flow/flow-logic/flow-logic-diagnostics.ts +5 -6
  253. package/src/flow/flow-logic/flow-logic-plugin-helpers.ts +47 -45
  254. package/src/flow/flow-logic/flow-logic-plugin.ts +1 -0
  255. package/src/flow/plugins/approval-rules-plugin.ts +1 -0
  256. package/src/flow/plugins/flow-action-definition-plugin.ts +1584 -62
  257. package/src/flow/plugins/flow-data-pill-plugin.ts +6 -2
  258. package/src/flow/plugins/flow-definition-plugin.ts +22 -51
  259. package/src/flow/plugins/flow-diagnostics-plugin.ts +3 -2
  260. package/src/flow/plugins/flow-instance-plugin.ts +201 -36
  261. package/src/flow/plugins/flow-trigger-instance-plugin.ts +1 -0
  262. package/src/flow/plugins/inline-script-plugin.ts +1 -0
  263. package/src/flow/plugins/step-definition-plugin.ts +4 -2
  264. package/src/flow/plugins/step-instance-plugin.ts +772 -155
  265. package/src/flow/plugins/trigger-plugin.ts +2 -0
  266. package/src/flow/plugins/wfa-datapill-plugin.ts +26 -5
  267. package/src/flow/post-install.ts +93 -0
  268. package/src/flow/utils/complex-object-resolver.ts +4 -1
  269. package/src/flow/utils/complex-objects.ts +11 -3
  270. package/src/flow/utils/flow-constants.ts +451 -6
  271. package/src/flow/utils/flow-io-to-record.ts +43 -17
  272. package/src/flow/utils/flow-shapes.ts +4 -0
  273. package/src/flow/utils/flow-to-xml.ts +4 -4
  274. package/src/flow/utils/label-cache-parser.ts +33 -4
  275. package/src/flow/utils/label-cache-processor.ts +14 -2
  276. package/src/flow/utils/pill-shape-helpers.ts +42 -0
  277. package/src/flow/utils/pill-string-parser.ts +1 -0
  278. package/src/flow/utils/schema-to-flow-object.ts +183 -15
  279. package/src/flow/utils/service-catalog.ts +5 -2
  280. package/src/flow/utils/utils.ts +12 -1
  281. package/src/form-plugin.ts +1409 -0
  282. package/src/html-import-plugin.ts +1 -0
  283. package/src/import-sets-plugin.ts +2 -0
  284. package/src/inbound-email-action-plugin.ts +145 -0
  285. package/src/index.ts +13 -0
  286. package/src/instance-scan-plugin.ts +313 -0
  287. package/src/json-plugin.ts +1 -0
  288. package/src/list-plugin.ts +2 -1
  289. package/src/now-attach-plugin.ts +1 -0
  290. package/src/now-config-plugin.ts +833 -53
  291. package/src/now-id-plugin.ts +1 -0
  292. package/src/now-include-plugin.ts +1 -0
  293. package/src/now-ref-plugin.ts +1 -0
  294. package/src/now-unresolved-plugin.ts +1 -0
  295. package/src/package-json-plugin.ts +1 -0
  296. package/src/property-plugin.ts +6 -1
  297. package/src/record-plugin.ts +56 -6
  298. package/src/repack/lint/Rules.ts +171 -22
  299. package/src/repack/lint/index.ts +80 -56
  300. package/src/rest-api-plugin.ts +28 -2
  301. package/src/role-plugin.ts +2 -1
  302. package/src/schedule-script/index.ts +1 -0
  303. package/src/schedule-script/scheduled-script-plugin.ts +690 -0
  304. package/src/schedule-script/timeZoneConverter.ts +188 -0
  305. package/src/script-action-plugin.ts +2 -0
  306. package/src/script-include-plugin.ts +2 -0
  307. package/src/server-module-plugin/index.ts +14 -2
  308. package/src/service-catalog/catalog-clientscript-plugin.ts +2 -0
  309. package/src/service-catalog/catalog-item-plugin.ts +2 -0
  310. package/src/service-catalog/catalog-ui-policy-plugin.ts +2 -0
  311. package/src/service-catalog/sc-record-producer-plugin.ts +2 -0
  312. package/src/service-catalog/service-catalog-base.ts +22 -22
  313. package/src/service-catalog/service-catalog-diagnostics.ts +30 -0
  314. package/src/service-catalog/shape-to-record.ts +8 -2
  315. package/src/service-catalog/variable-set-plugin.ts +2 -0
  316. package/src/service-portal/angular-provider-plugin.ts +2 -0
  317. package/src/service-portal/dependency-plugin.ts +6 -53
  318. package/src/service-portal/header-footer-plugin.ts +57 -0
  319. package/src/service-portal/menu-plugin.ts +413 -0
  320. package/src/service-portal/page-plugin.ts +805 -0
  321. package/src/service-portal/page-route-map-plugin.ts +124 -0
  322. package/src/service-portal/portal-plugin.ts +342 -0
  323. package/src/service-portal/theme-plugin.ts +135 -0
  324. package/src/service-portal/utils.ts +470 -0
  325. package/src/service-portal/widget-plugin.ts +18 -224
  326. package/src/sla-plugin.ts +2 -0
  327. package/src/static-content-plugin.ts +4 -0
  328. package/src/table-plugin.ts +228 -37
  329. package/src/ui-action-plugin.ts +3 -8
  330. package/src/ui-page-plugin.ts +110 -21
  331. package/src/ui-policy-plugin.ts +2 -1
  332. package/src/user-preference-plugin.ts +2 -0
  333. package/src/utils.ts +42 -2
  334. package/src/ux-list-menu-config-plugin.ts +2 -0
  335. package/src/view-plugin.ts +11 -4
  336. package/src/workspace-plugin.ts +45 -43
  337. package/src/_types/eslint-plugin-es-x.d.ts +0 -17
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-plugin.js","sourceRoot":"","sources":["../../src/service-portal/theme-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { NowIncludeShape } from '../now-include-plugin';
2
+ import { type Record, Shape, type Diagnostics, type Factory, CallExpressionShape } from '@servicenow/sdk-build-core';
3
+ /**
4
+ * Shared toShape implementation for SPWidget and SPHeaderFooter
5
+ */
6
+ export declare function createWidgetToShape(record: Record, descendants: {
7
+ query: (table: string) => Record[];
8
+ }, callee: 'SPWidget' | 'SPHeaderFooter', tablePrefix?: string, includeStaticField?: boolean): Promise<{
9
+ success: boolean;
10
+ value: CallExpressionShape;
11
+ }>;
12
+ /**
13
+ * Creates a NowIncludeShape with a custom file path suffix and extension
14
+ */
15
+ export declare function createIncludeShape(record: Record, content: string | Shape, suffix: string, extension: 'js' | 'html' | 'scss', folderName: string, tablePrefix?: string): Promise<NowIncludeShape>;
16
+ export declare const DEFAULT_ORDER = 100;
17
+ /**
18
+ * Shared toRecord implementation for SPWidget and SPHeaderFooter
19
+ */
20
+ export declare function createWidgetToRecord(callExpression: CallExpressionShape, { diagnostics, factory, config, }: {
21
+ diagnostics: Diagnostics;
22
+ factory: Factory;
23
+ config: {
24
+ scope: string;
25
+ };
26
+ }, options: {
27
+ callee: 'SPWidget' | 'SPHeaderFooter';
28
+ table: 'sp_widget' | 'sp_header_footer';
29
+ includeStaticField?: boolean;
30
+ getDefaultClientScript: (controller: string) => string;
31
+ defaultServerScript: string;
32
+ defaultLinkScript: string;
33
+ defaultHtmlTemplate: string;
34
+ }): Promise<{
35
+ success: boolean;
36
+ value: Record;
37
+ }>;
38
+ /**
39
+ * Converts a roles Shape (array of strings, Role() expressions, or Record references)
40
+ * to a deduplicated comma-separated string of role names.
41
+ * @param rolesShape - Shape containing the roles array
42
+ * @param diagnostics - Optional diagnostics for reporting invalid role entries
43
+ * @returns Comma-separated string of unique role names, or empty string if no roles
44
+ */
45
+ export declare function getRolesString(rolesShape: Shape, diagnostics?: Diagnostics): string;
46
+ export declare function getIncludeRecords(shape: Shape, parentId: Shape, factory: Factory, m2mTable: string, includeTable: string, parentTable: string, diagnostics: Diagnostics): Promise<Record[]>;
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_ORDER = void 0;
4
+ exports.createWidgetToShape = createWidgetToShape;
5
+ exports.createIncludeShape = createIncludeShape;
6
+ exports.createWidgetToRecord = createWidgetToRecord;
7
+ exports.getRolesString = getRolesString;
8
+ exports.getIncludeRecords = getIncludeRecords;
9
+ const now_include_plugin_1 = require("../now-include-plugin");
10
+ const sdk_build_core_1 = require("@servicenow/sdk-build-core");
11
+ const utils_1 = require("../utils");
12
+ const service_portal_1 = require("@servicenow/sdk-core/runtime/service-portal");
13
+ const now_id_plugin_1 = require("../now-id-plugin");
14
+ function convertOptionSchemaKeys(optionSchema, convertKey) {
15
+ if (!Array.isArray(optionSchema)) {
16
+ return optionSchema;
17
+ }
18
+ return optionSchema.map((option) => Object.fromEntries(Object.entries(option).map(([k, v]) => [convertKey(k), v])));
19
+ }
20
+ const toCamelCase = (key) => key.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
21
+ /**
22
+ * Shared toShape implementation for SPWidget and SPHeaderFooter
23
+ */
24
+ async function createWidgetToShape(record, descendants, callee, tablePrefix = 'sp_widget', includeStaticField = false) {
25
+ const folderName = record.get('id')?.asString()?.getValue()?.replace(/[\s-]/g, '_') ||
26
+ record.get('name')?.asString()?.getValue()?.toLowerCase().replace(/[\s-]/g, '_');
27
+ const dependencies = descendants.query('m2m_sp_widget_dependency');
28
+ const angularProviders = descendants.query('m2m_sp_ng_pro_sp_widget');
29
+ const templates = descendants.query('sp_ng_template').map((template) => {
30
+ return {
31
+ $id: template.getId(),
32
+ id: template.get('id'),
33
+ htmlTemplate: template.get('template'),
34
+ };
35
+ });
36
+ const category = (0, utils_1.reverseObject)(service_portal_1.WidgetCategories)[record.get('category').ifString()?.getValue() || ''];
37
+ const serverScript = await createIncludeShape(record, record.get('script'), 'server_script', 'js', folderName, tablePrefix);
38
+ const clientScript = await createIncludeShape(record, record.get('client_script'), 'client_script', 'js', folderName, tablePrefix);
39
+ const css = await createIncludeShape(record, record.get('css'), 'style', 'scss', folderName, tablePrefix);
40
+ const htmlTemplate = await createIncludeShape(record, record.get('template'), 'template', 'html', folderName, tablePrefix);
41
+ const linkScript = await createIncludeShape(record, record.get('link'), 'link-script', 'js', folderName, tablePrefix);
42
+ return {
43
+ success: true,
44
+ value: new sdk_build_core_1.CallExpressionShape({
45
+ source: record,
46
+ callee,
47
+ args: [
48
+ record.transform(({ $ }) => {
49
+ const baseTransform = {
50
+ $id: $.val(now_id_plugin_1.NowIdShape.from(record)),
51
+ name: $,
52
+ category: $.val(category).def('custom'),
53
+ clientScript: $.val(clientScript).def(''),
54
+ serverScript: $.val(serverScript).def(''),
55
+ controllerAs: $.from('controller_as').def('c'),
56
+ htmlTemplate: $.val(htmlTemplate).def(''),
57
+ customCss: $.val(css).def(''),
58
+ dataTable: $.from('data_table')
59
+ .map((v) => {
60
+ const val = v.ifString()?.getValue();
61
+ return val && val.trim() !== '' ? val : 'sp_instance';
62
+ })
63
+ .def('sp_instance'),
64
+ demoData: $.from('demo_data')
65
+ .map((d) => {
66
+ const json = d.ifString()?.getValue();
67
+ const parsed = (0, utils_1.noThrow)(() => json && JSON.parse(json));
68
+ return parsed instanceof Error ? json : parsed;
69
+ })
70
+ .def(''),
71
+ description: $.def(''),
72
+ docs: $.def(''),
73
+ fields: $.from('field_list')
74
+ .map((fields) => {
75
+ const fieldStr = fields.ifString()?.getValue();
76
+ const fieldArray = fieldStr?.split(',').filter((f) => f.trim());
77
+ return fieldArray && fieldArray.length > 0 ? fieldArray : undefined;
78
+ })
79
+ .def(undefined),
80
+ hasPreview: $.from('has_preview').toBoolean().def(false),
81
+ id: $.def(''),
82
+ internal: $.toBoolean().def(false),
83
+ linkScript: $.val(linkScript).def(''),
84
+ roles: $.map((role) => {
85
+ const roleStr = role.ifString()?.getValue();
86
+ const roleArray = roleStr?.split(',').filter((r) => r.trim());
87
+ return roleArray && roleArray.length > 0 ? roleArray : undefined;
88
+ }).def(undefined),
89
+ servicenow: $.toBoolean().def(false),
90
+ optionSchema: $.from('option_schema')
91
+ .map((v) => {
92
+ const json = v.ifString()?.getValue();
93
+ const parsed = (0, utils_1.noThrow)(() => json && JSON.parse(json));
94
+ const result = parsed instanceof Error ? json : parsed;
95
+ return convertOptionSchemaKeys(result, toCamelCase);
96
+ })
97
+ .def(''),
98
+ public: $.toBoolean().def(false),
99
+ dependencies: $.val(dependencies.length > 0 ? dependencies.map((dep) => dep.get('sp_dependency')) : undefined),
100
+ angularProviders: $.val(angularProviders.length > 0
101
+ ? angularProviders.map((ap) => ap.get('sp_angular_provider'))
102
+ : undefined),
103
+ templates: $.val(templates.length > 0 ? templates : undefined),
104
+ };
105
+ return includeStaticField
106
+ ? { ...baseTransform, static: $.from('static').toBoolean().def(false) }
107
+ : baseTransform;
108
+ }),
109
+ ],
110
+ }),
111
+ };
112
+ }
113
+ /**
114
+ * Creates a NowIncludeShape with a custom file path suffix and extension
115
+ */
116
+ async function createIncludeShape(record, content, suffix, extension, folderName, tablePrefix = 'sp_widget') {
117
+ const baseName = `${tablePrefix}_${folderName}`;
118
+ const includedText = content instanceof sdk_build_core_1.Shape ? content.toString().getValue() : content;
119
+ return new now_include_plugin_1.NowIncludeShape({
120
+ source: record,
121
+ path: `./${baseName}/${suffix}.${extension}`,
122
+ includedText,
123
+ });
124
+ }
125
+ exports.DEFAULT_ORDER = 100;
126
+ /**
127
+ * Shared toRecord implementation for SPWidget and SPHeaderFooter
128
+ */
129
+ async function createWidgetToRecord(callExpression, { diagnostics, factory, config, }, options) {
130
+ const { table, includeStaticField = false } = options;
131
+ const widget = callExpression.getArgument(0).asObject();
132
+ const dependencies = widget
133
+ .get('dependencies')
134
+ .ifArray()
135
+ ?.map((dep) => (dep.isString() ? dep.getValue() : dep.ifRecord()?.getId()))
136
+ .filter((dep) => dep) ?? [];
137
+ const angularProviders = widget
138
+ .get('angularProviders')
139
+ .ifArray()
140
+ ?.map((ap) => (ap.isString() ? ap.getValue() : ap.ifRecord()?.getId()))
141
+ .filter((ap) => ap) ?? [];
142
+ const templates = widget
143
+ .get('templates')
144
+ .ifArray()
145
+ ?.map((shp) => shp.getValue()) ?? [];
146
+ const widgetId = widget.get('id').ifString();
147
+ if (widgetId && !/^[a-zA-Z0-9_-]+$/g.test(widgetId.getValue())) {
148
+ diagnostics.error(widgetId.getOriginalNode(), `Invalid value: must contain only alphanumeric, -, or _ characters`);
149
+ }
150
+ const clientScript = widget.get('clientScript');
151
+ const clientScriptValue = clientScript instanceof now_include_plugin_1.NowIncludeShape ? clientScript.getValue() : clientScript.ifString()?.getValue();
152
+ if (clientScriptValue && clientScriptValue.trim().length > 0) {
153
+ const clientScriptPattern = /^(function|api\.controller\s?=\s?function)\s?([$a-z_][$0-9a-z_]*)?\s?\(.*\)\s?\n?{/i;
154
+ if (!clientScriptPattern.test(clientScriptValue.trim())) {
155
+ diagnostics.error(clientScript.getOriginalNode(), `Client controller must contain a JavaScript function. Example: api.controller = function($scope) { ... }`);
156
+ }
157
+ }
158
+ const htmlTemplate = widget.get('htmlTemplate');
159
+ const htmlTemplateValue = htmlTemplate instanceof now_include_plugin_1.NowIncludeShape ? htmlTemplate.getValue() : htmlTemplate.ifString()?.getValue();
160
+ if (htmlTemplateValue && htmlTemplateValue.length > 0 && htmlTemplateValue.indexOf('href="#"') > 0) {
161
+ diagnostics.error(htmlTemplate.getOriginalNode(), `Do not use href="#" in the Service Portal, use href="javascript:void(0)" instead`);
162
+ }
163
+ const roles = widget
164
+ .get('roles')
165
+ .ifArray()
166
+ ?.map((role) => {
167
+ if (role.isString()) {
168
+ return role;
169
+ }
170
+ if (role.isRecord()) {
171
+ return role.get('name');
172
+ }
173
+ return undefined;
174
+ })
175
+ .filter((role) => role);
176
+ if (roles) {
177
+ roles
178
+ .filter((role) => (0, sdk_build_core_1.isGUID)(role.getValue()))
179
+ .forEach((role) => diagnostics.error(role.getOriginalNode(), `expecting role names or role records created by the Role or Record plugins, not sys_ids`));
180
+ }
181
+ const controller = widget.get('controllerAs').ifString()?.getValue() || 'c';
182
+ const servicenow = (widget.get('servicenow').ifBoolean()?.getValue() &&
183
+ (config.scope.startsWith('sn_') || config.scope.startsWith('snc_'))) ||
184
+ false;
185
+ const widgetRecord = await factory.createRecord({
186
+ source: callExpression,
187
+ table,
188
+ explicitId: widget.get('$id'),
189
+ properties: widget.transform(({ $ }) => {
190
+ const baseTransform = {
191
+ name: $,
192
+ category: $.map((v) => {
193
+ const catKey = v.ifString()?.getValue() || '';
194
+ return service_portal_1.WidgetCategories[catKey];
195
+ }).def('custom'),
196
+ client_script: $.from('clientScript').def(options.getDefaultClientScript(controller)),
197
+ script: $.from('serverScript').def(options.defaultServerScript),
198
+ controller_as: $.from('controllerAs').def('c'),
199
+ template: $.from('htmlTemplate').def(options.defaultHtmlTemplate),
200
+ css: $.from('customCss').def(''),
201
+ data_table: $.from('dataTable').def('sp_instance'),
202
+ demo_data: $.from('demoData')
203
+ .map((v) => (v.ifString() || v instanceof now_include_plugin_1.NowIncludeShape ? v : JSON.stringify(v.getValue())))
204
+ .def(''),
205
+ description: $.def(''),
206
+ docs: $.map((v) => (v.isString() ? v : v.ifRecord()?.getId())),
207
+ field_list: $.from('fields')
208
+ .map((v) => v.getValue()?.toString())
209
+ .def(''),
210
+ has_preview: $.from('hasPreview').toBoolean().def(false),
211
+ id: $.def(''),
212
+ internal: $.def(false),
213
+ servicenow: $.val(servicenow),
214
+ link: $.from('linkScript').def(options.defaultLinkScript),
215
+ roles: $.val(roles?.map((r) => r.getValue()).toString()).def(''),
216
+ option_schema: $.from('optionSchema')
217
+ .map((v) => {
218
+ const json = v.getValue();
219
+ const converted = convertOptionSchemaKeys(json, (key) => key.replace(/[A-Z]/g, (c) => `_${c.toLowerCase()}`));
220
+ return converted && JSON.stringify(converted);
221
+ })
222
+ .def(''),
223
+ public: $.def(false),
224
+ };
225
+ return includeStaticField
226
+ ? { ...baseTransform, static: $.from('static').toBoolean().def(false) }
227
+ : baseTransform;
228
+ }),
229
+ });
230
+ return {
231
+ success: true,
232
+ value: widgetRecord.with(...(await Promise.all(templates.map(async (template) => {
233
+ return await factory.createRecord({
234
+ source: callExpression,
235
+ table: 'sp_ng_template',
236
+ explicitId: template.$id,
237
+ properties: {
238
+ id: template.id,
239
+ sp_widget: widgetRecord.getId(),
240
+ template: template.htmlTemplate,
241
+ },
242
+ });
243
+ }))), ...(await Promise.all(dependencies.map(async (dep) => {
244
+ return await factory.createRecord({
245
+ source: callExpression,
246
+ table: 'm2m_sp_widget_dependency',
247
+ properties: {
248
+ sp_dependency: dep,
249
+ sp_widget: widgetRecord.getId(),
250
+ },
251
+ });
252
+ }))), ...(await Promise.all(angularProviders.map(async (ap) => {
253
+ return await factory.createRecord({
254
+ source: callExpression,
255
+ table: 'm2m_sp_ng_pro_sp_widget',
256
+ properties: {
257
+ sp_angular_provider: ap,
258
+ sp_widget: widgetRecord.getId(),
259
+ },
260
+ });
261
+ })))),
262
+ };
263
+ }
264
+ /**
265
+ * Converts a roles Shape (array of strings, Role() expressions, or Record references)
266
+ * to a deduplicated comma-separated string of role names.
267
+ * @param rolesShape - Shape containing the roles array
268
+ * @param diagnostics - Optional diagnostics for reporting invalid role entries
269
+ * @returns Comma-separated string of unique role names, or empty string if no roles
270
+ */
271
+ function getRolesString(rolesShape, diagnostics) {
272
+ const roles = rolesShape
273
+ .ifArray()
274
+ ?.getElements()
275
+ .map((role) => {
276
+ if (role.isString()) {
277
+ return role.getValue();
278
+ }
279
+ if (role instanceof sdk_build_core_1.CallExpressionShape) {
280
+ const name = role.getArgument(0).asObject().get('name');
281
+ if (name.isString()) {
282
+ return name.getValue();
283
+ }
284
+ }
285
+ if (role.isRecord()) {
286
+ const name = role.get('name');
287
+ if (name?.isString()) {
288
+ return name.getValue();
289
+ }
290
+ }
291
+ if (diagnostics) {
292
+ diagnostics.error(role, 'roles must be strings or role records');
293
+ }
294
+ return undefined;
295
+ })
296
+ .filter((r) => r !== undefined && r.trim() !== '');
297
+ if (!roles || roles.length === 0) {
298
+ return '';
299
+ }
300
+ return [...new Set(roles)].join(',');
301
+ }
302
+ async function getIncludeRecords(shape, parentId, factory, m2mTable, includeTable, parentTable, diagnostics) {
303
+ return (await Promise.all(shape?.ifArray()?.map(async (include) => {
304
+ const includeProps = include.ifObject()?.get('include');
305
+ let includeId;
306
+ if (includeProps?.isString()) {
307
+ includeId = includeProps.toString().getValue();
308
+ }
309
+ else if (includeProps?.isRecord()) {
310
+ includeId = includeProps.getId();
311
+ }
312
+ else {
313
+ const necessaryPlugin = includeTable === 'sp_js_include' ? 'JsInclude' : 'CssInclude';
314
+ diagnostics.error(includeProps, `include must contain a valid ${necessaryPlugin}, Record<'${includeTable}'> or sys_id'`);
315
+ return undefined;
316
+ }
317
+ const m2mProps = {
318
+ [includeTable]: includeId,
319
+ [parentTable]: parentId,
320
+ };
321
+ return await factory.createRecord({
322
+ source: shape,
323
+ table: m2mTable,
324
+ properties: {
325
+ order: include.ifObject()?.get('order').asNumber().getValue() || exports.DEFAULT_ORDER,
326
+ ...m2mProps,
327
+ },
328
+ });
329
+ }) ?? [])).filter((rec) => rec);
330
+ }
331
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/service-portal/utils.ts"],"names":[],"mappings":";;;AA4BA,kDAmIC;AAKD,gDAgBC;AAOD,oDAqMC;AASD,wCA+BC;AAED,8CA2CC;AArdD,8DAAuD;AACvD,+DAQmC;AACnC,oCAAiD;AACjD,gFAA8E;AAC9E,oDAA6C;AAE7C,SAAS,uBAAuB,CAAC,YAAqB,EAAE,UAAmC;IACvF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAA;IACvB,CAAC;IACD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAA0C,EAAE,EAAE,CACnE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACjF,CAAA;AACL,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAEhG;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACrC,MAAc,EACd,WAAmD,EACnD,MAAqC,EACrC,cAAsB,WAAW,EACjC,qBAA8B,KAAK;IAEnC,MAAM,UAAU,GACZ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IACpF,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAClE,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;IACrE,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnE,OAAO;YACH,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE;YACrB,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;SACzC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,IAAA,qBAAa,EAAC,iCAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACrG,MAAM,YAAY,GAAG,MAAM,kBAAkB,CACzC,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EACpB,eAAe,EACf,IAAI,EACJ,UAAU,EACV,WAAW,CACd,CAAA;IACD,MAAM,YAAY,GAAG,MAAM,kBAAkB,CACzC,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAC3B,eAAe,EACf,IAAI,EACJ,UAAU,EACV,WAAW,CACd,CAAA;IACD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IACzG,MAAM,YAAY,GAAG,MAAM,kBAAkB,CACzC,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EACtB,UAAU,EACV,MAAM,EACN,UAAU,EACV,WAAW,CACd,CAAA;IACD,MAAM,UAAU,GAAG,MAAM,kBAAkB,CACvC,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,aAAa,EACb,IAAI,EACJ,UAAU,EACV,WAAW,CACd,CAAA;IAED,OAAO;QACH,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI,oCAAmB,CAAC;YAC3B,MAAM,EAAE,MAAM;YACd,MAAM;YACN,IAAI,EAAE;gBACF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;oBACvB,MAAM,aAAa,GAAG;wBAClB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,0BAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACnC,IAAI,EAAE,CAAC;wBACP,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;wBACvC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBACzC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBACzC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;wBAC9C,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBACzC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC7B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;6BAC1B,GAAG,CAAC,CAAC,CAAQ,EAAE,EAAE;4BACd,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAA;4BACpC,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAA;wBACzD,CAAC,CAAC;6BACD,GAAG,CAAC,aAAa,CAAC;wBACvB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;6BACxB,GAAG,CAAC,CAAC,CAAQ,EAAE,EAAE;4BACd,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAA;4BAErC,MAAM,MAAM,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;4BACtD,OAAO,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;wBAClD,CAAC,CAAC;6BACD,GAAG,CAAC,EAAE,CAAC;wBACZ,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBACf,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;6BACvB,GAAG,CAAC,CAAC,MAAa,EAAE,EAAE;4BACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAA;4BAC9C,MAAM,UAAU,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;4BACvE,OAAO,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;wBACvE,CAAC,CAAC;6BACD,GAAG,CAAC,SAAS,CAAC;wBACnB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;wBACxD,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBACb,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;wBAClC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAW,EAAE,EAAE;4BACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAA;4BAC3C,MAAM,SAAS,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;4BACrE,OAAO,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;wBACpE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;wBACjB,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;wBACpC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;6BAChC,GAAG,CAAC,CAAC,CAAQ,EAAE,EAAE;4BACd,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAA;4BACrC,MAAM,MAAM,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;4BACtD,MAAM,MAAM,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;4BACtD,OAAO,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;wBACvD,CAAC,CAAC;6BACD,GAAG,CAAC,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;wBAChC,YAAY,EAAE,CAAC,CAAC,GAAG,CACf,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAC5F;wBACD,gBAAgB,EAAE,CAAC,CAAC,GAAG,CACnB,gBAAgB,CAAC,MAAM,GAAG,CAAC;4BACvB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;4BAC7D,CAAC,CAAC,SAAS,CAClB;wBACD,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;qBACjE,CAAA;oBAED,OAAO,kBAAkB;wBACrB,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;wBACvE,CAAC,CAAC,aAAa,CAAA;gBACvB,CAAC,CAAC;aACL;SACJ,CAAC;KACL,CAAA;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACpC,MAAc,EACd,OAAuB,EACvB,MAAc,EACd,SAAiC,EACjC,UAAkB,EAClB,cAAsB,WAAW;IAEjC,MAAM,QAAQ,GAAG,GAAG,WAAW,IAAI,UAAU,EAAE,CAAA;IAC/C,MAAM,YAAY,GAAG,OAAO,YAAY,sBAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IAEvF,OAAO,IAAI,oCAAe,CAAC;QACvB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,QAAQ,IAAI,MAAM,IAAI,SAAS,EAAE;QAC5C,YAAY;KACf,CAAC,CAAA;AACN,CAAC;AAEY,QAAA,aAAa,GAAG,GAAG,CAAA;AAEhC;;GAEG;AACI,KAAK,UAAU,oBAAoB,CACtC,cAAmC,EACnC,EACI,WAAW,EACX,OAAO,EACP,MAAM,GAKT,EACD,OAQC;IAED,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IACrD,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACvD,MAAM,YAAY,GACd,MAAM;SACD,GAAG,CAAC,cAAc,CAAC;SACnB,OAAO,EAAE;QACV,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1E,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IACnC,MAAM,gBAAgB,GAClB,MAAM;SACD,GAAG,CAAC,kBAAkB,CAAC;SACvB,OAAO,EAAE;QACV,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;SACtE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;IAEjC,MAAM,SAAS,GACX,MAAM;SACD,GAAG,CAAC,WAAW,CAAC;SAChB,OAAO,EAAE;QACV,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAyD,CAAC,IAAI,EAAE,CAAA;IACnG,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC5C,IAAI,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC7D,WAAW,CAAC,KAAK,CACb,QAAQ,CAAC,eAAe,EAAE,EAC1B,mEAAmE,CACtE,CAAA;IACL,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC/C,MAAM,iBAAiB,GACnB,YAAY,YAAY,oCAAe,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAA;IAC3G,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,mBAAmB,GACrB,qFAAqF,CAAA;QACzF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACtD,WAAW,CAAC,KAAK,CACb,YAAY,CAAC,eAAe,EAAE,EAC9B,0GAA0G,CAC7G,CAAA;QACL,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC/C,MAAM,iBAAiB,GACnB,YAAY,YAAY,oCAAe,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAA;IAC3G,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjG,WAAW,CAAC,KAAK,CACb,YAAY,CAAC,eAAe,EAAE,EAC9B,kFAAkF,CACrF,CAAA;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM;SACf,GAAG,CAAC,OAAO,CAAC;SACZ,OAAO,EAAE;QACV,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CAAA;QACf,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,SAAS,CAAA;IACpB,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAwB,CAAA;IAElD,IAAI,KAAK,EAAE,CAAC;QACR,KAAK;aACA,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,uBAAM,EAAC,IAAI,CAAC,QAAQ,EAAY,CAAC,CAAC;aACnD,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACd,WAAW,CAAC,KAAK,CACb,IAAK,CAAC,eAAe,EAAE,EACvB,yFAAyF,CAC5F,CACJ,CAAA;IACT,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAA;IAC3E,MAAM,UAAU,GACZ,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE;QAC7C,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,KAAK,CAAA;IAET,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;QAC5C,MAAM,EAAE,cAAc;QACtB,KAAK;QACL,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;YACnC,MAAM,aAAa,GAAG;gBAClB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAClB,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;oBAC7C,OAAO,iCAAgB,CAAC,MAAuC,CAAC,CAAA;gBACpE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAChB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;gBACrF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;gBAC/D,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;gBACjE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;gBAClD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;qBACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,oCAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;qBAC7F,GAAG,CAAC,EAAE,CAAC;gBACZ,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9D,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;qBACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC;qBACpC,GAAG,CAAC,EAAE,CAAC;gBACZ,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;gBACxD,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACb,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;gBACtB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBACzD,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChE,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;qBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACP,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;oBACzB,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAC5D,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CACtD,CAAA;oBACD,OAAO,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;gBACjD,CAAC,CAAC;qBACD,GAAG,CAAC,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;aACvB,CAAA;YAED,OAAO,kBAAkB;gBACrB,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACvE,CAAC,CAAC,aAAa,CAAA;QACvB,CAAC,CAAC;KACL,CAAC,CAAA;IAEF,OAAO;QACH,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,YAAY,CAAC,IAAI,CACpB,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CACjB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC7B,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC;gBAC9B,MAAM,EAAE,cAAc;gBACtB,KAAK,EAAE,gBAAgB;gBACvB,UAAU,EAAE,QAAQ,CAAC,GAAG;gBACxB,UAAU,EAAE;oBACR,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE;oBAC/B,QAAQ,EAAE,QAAQ,CAAC,YAAY;iBAClC;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CACL,CAAC,EACF,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CACjB,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC3B,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC;gBAC9B,MAAM,EAAE,cAAc;gBACtB,KAAK,EAAE,0BAA0B;gBACjC,UAAU,EAAE;oBACR,aAAa,EAAE,GAAI;oBACnB,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE;iBAClC;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CACL,CAAC,EACF,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CACjB,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAC9B,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC;gBAC9B,MAAM,EAAE,cAAc;gBACtB,KAAK,EAAE,yBAAyB;gBAChC,UAAU,EAAE;oBACR,mBAAmB,EAAE,EAAG;oBACxB,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE;iBAClC;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CACL,CAAC,CACL;KACJ,CAAA;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,UAAiB,EAAE,WAAyB;IACvE,MAAM,KAAK,GAAG,UAAU;SACnB,OAAO,EAAE;QACV,EAAE,WAAW,EAAE;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC1B,CAAC;QACD,IAAI,IAAI,YAAY,oCAAmB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACvD,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC1B,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC7B,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC1B,CAAC;QACL,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YACd,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAA;QACpE,CAAC;QACD,OAAO,SAAS,CAAA;IACpB,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAEnE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAA;IACb,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACnC,KAAY,EACZ,QAAe,EACf,OAAgB,EAChB,QAAgB,EAChB,YAAoB,EACpB,WAAmB,EACnB,WAAwB;IAExB,OAAO,CACH,MAAM,OAAO,CAAC,GAAG,CACb,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;QAEvD,IAAI,SAA4B,CAAA;QAChC,IAAI,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC3B,SAAS,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAA;QAClD,CAAC;aAAM,IAAI,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC;YAClC,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,CAAA;QACpC,CAAC;aAAM,CAAC;YACJ,MAAM,eAAe,GAAG,YAAY,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAA;YACrF,WAAW,CAAC,KAAK,CACb,YAAa,EACb,gCAAgC,eAAe,aAAa,YAAY,eAAe,CAC1F,CAAA;YACD,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,MAAM,QAAQ,GAAG;YACb,CAAC,YAAY,CAAC,EAAE,SAAS;YACzB,CAAC,WAAW,CAAC,EAAE,QAAQ;SAC1B,CAAA;QACD,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC;YAC9B,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE;gBACR,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,IAAI,qBAAa;gBAC9E,GAAG,QAAQ;aACd;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,IAAI,EAAE,CACX,CACJ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAa,CAAA;AACtC,CAAC"}
@@ -3,11 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SP_WIDGET_DEFAULT_HTML_TEMPLATE = exports.SP_WIDGET_DEFAULT_SERVER_SCRIPT = exports.SP_WIDGET_DEFAULT_LINK_SCRIPT = exports.getDefaultClientScript = exports.SPWidgetPlugin = void 0;
4
4
  const sdk_build_core_1 = require("@servicenow/sdk-build-core");
5
5
  const utils_1 = require("../utils");
6
- const service_portal_1 = require("@servicenow/sdk-core/runtime/service-portal");
7
- const now_id_plugin_1 = require("../now-id-plugin");
8
- const now_include_plugin_1 = require("../now-include-plugin");
6
+ const utils_2 = require("./utils");
9
7
  exports.SPWidgetPlugin = sdk_build_core_1.Plugin.create({
10
8
  name: 'SPWidgetPlugin',
9
+ docs: [(0, utils_1.createSdkDocEntry)('SPWidget', ['sp_widget'])],
11
10
  records: {
12
11
  sp_widget: {
13
12
  relationships: {
@@ -15,76 +14,8 @@ exports.SPWidgetPlugin = sdk_build_core_1.Plugin.create({
15
14
  m2m_sp_ng_pro_sp_widget: { via: 'sp_widget', descendant: true },
16
15
  sp_ng_template: { via: 'sp_widget', descendant: true },
17
16
  },
18
- toShape(record, { descendants }) {
19
- const dependencies = descendants.query('m2m_sp_widget_dependency');
20
- const angularProviders = descendants.query('m2m_sp_ng_pro_sp_widget');
21
- const templates = descendants.query('sp_ng_template').map((template) => {
22
- return {
23
- $id: template.getId(),
24
- id: template.get('id'),
25
- htmlTemplate: template.get('template'),
26
- };
27
- });
28
- const category = (0, utils_1.reverseObject)(service_portal_1.WidgetCategories)[record.get('category').ifString()?.getValue() || ''];
29
- return {
30
- success: true,
31
- value: new sdk_build_core_1.CallExpressionShape({
32
- source: record,
33
- callee: 'SPWidget',
34
- args: [
35
- record.transform(({ $ }) => ({
36
- $id: $.val(now_id_plugin_1.NowIdShape.from(record)),
37
- name: $,
38
- category: $.val(category).def('custom'),
39
- clientScript: $.from('client_script').def(''),
40
- serverScript: $.from('script').def(''),
41
- controllerAs: $.from('controller_as').def('c'),
42
- htmlTemplate: $.from('template').def(''),
43
- customCss: $.from('css').def(''),
44
- dataTable: $.from('data_table').def('sp_instance'),
45
- demoData: $.from('demo_data')
46
- .map((d) => {
47
- const json = d.ifString()?.getValue();
48
- const parsed = (0, utils_1.noThrow)(() => json && JSON.parse(json));
49
- return parsed instanceof Error ? json : parsed;
50
- })
51
- .def(''),
52
- description: $.def(''),
53
- docs: $.def(''),
54
- fields: $.from('field_list')
55
- .map((fields) => {
56
- const fieldStr = fields.ifString()?.getValue();
57
- return fieldStr && fieldStr.split(',');
58
- })
59
- .def(''),
60
- hasPreview: $.from('has_preview').toBoolean().def(false),
61
- id: $.def(''),
62
- internal: $.toBoolean().def(false),
63
- linkScript: $.from('link').def(''),
64
- roles: $.map((role) => {
65
- const roleStr = role.ifString()?.getValue();
66
- return roleStr && roleStr.split(',');
67
- }).def(''),
68
- servicenow: $.toBoolean().def(false),
69
- optionSchema: $.from('option_schema')
70
- .map((v) => {
71
- const json = v.ifString()?.getValue();
72
- const parsed = (0, utils_1.noThrow)(() => json && JSON.parse(json));
73
- return parsed instanceof Error ? json : parsed;
74
- })
75
- .def(''),
76
- public: $.toBoolean().def(false),
77
- dependencies: $.val(dependencies.length > 0
78
- ? dependencies.map((dep) => dep.get('sp_dependency'))
79
- : undefined),
80
- angularProviders: $.val(angularProviders.length > 0
81
- ? angularProviders.map((ap) => ap.get('sp_angular_provider'))
82
- : undefined),
83
- templates: $.val(templates.length > 0 ? templates : undefined),
84
- })),
85
- ],
86
- }),
87
- };
17
+ async toShape(record, { descendants }) {
18
+ return (0, utils_2.createWidgetToShape)(record, descendants, 'SPWidget');
88
19
  },
89
20
  },
90
21
  m2m_sp_widget_dependency: {
@@ -102,117 +33,14 @@ exports.SPWidgetPlugin = sdk_build_core_1.Plugin.create({
102
33
  if (callExpression.getCallee() !== 'SPWidget') {
103
34
  return { success: false };
104
35
  }
105
- const widget = callExpression.getArgument(0).asObject();
106
- const dependencies = widget
107
- .get('dependencies')
108
- .ifArray()
109
- ?.map((dep) => (dep.isString() ? dep.getValue() : dep.ifRecord()?.getId())) || [];
110
- const angularProviders = widget
111
- .get('angularProviders')
112
- .ifArray()
113
- ?.map((ap) => (ap.isString() ? ap.getValue() : ap.ifRecord()?.getId())) || [];
114
- const templates = widget
115
- .get('templates')
116
- .ifArray()
117
- ?.map((shp) => shp.getValue()) || [];
118
- const widgetId = widget.get('id').ifString();
119
- if (widgetId && !/^[a-zA-Z0-9_-]+$/g.test(widgetId.getValue())) {
120
- diagnostics.error(widgetId.getOriginalNode(), `Invalid value: must contain only alphanumeric, -, or _ characters`);
121
- }
122
- const roles = widget
123
- .get('roles')
124
- .ifArray()
125
- ?.map((role) => {
126
- if (role.isString()) {
127
- return role;
128
- }
129
- if (role.isRecord()) {
130
- return role.get('name');
131
- }
132
- return undefined;
133
- })
134
- .filter((role) => role);
135
- if (roles) {
136
- roles
137
- .filter((role) => (0, sdk_build_core_1.isGUID)(role.getValue()))
138
- .forEach((role) => diagnostics.error(role.getOriginalNode(), `expecting role names or role records created by the Role or Record plugins, not sys_ids`));
139
- }
140
- const controller = widget.get('controllerAs').ifString()?.getValue() || 'c';
141
- const servicenow = (widget.get('servicenow').ifBoolean()?.getValue() &&
142
- (config.scope.startsWith('sn_') || config.scope.startsWith('snc_'))) ||
143
- false;
144
- const widgetRecord = await factory.createRecord({
145
- source: callExpression,
36
+ return (0, utils_2.createWidgetToRecord)(callExpression, { diagnostics, factory, config }, {
37
+ callee: 'SPWidget',
146
38
  table: 'sp_widget',
147
- explicitId: widget.get('$id'),
148
- properties: widget.transform(({ $ }) => ({
149
- name: $,
150
- category: $.map((v) => {
151
- const catKey = v.ifString()?.getValue() || '';
152
- return service_portal_1.WidgetCategories[catKey];
153
- }).def('custom'),
154
- client_script: $.from('clientScript').def((0, exports.getDefaultClientScript)(controller)),
155
- script: $.from('serverScript').def(exports.SP_WIDGET_DEFAULT_SERVER_SCRIPT),
156
- controller_as: $.from('controllerAs').def('c'),
157
- template: $.from('htmlTemplate').def(exports.SP_WIDGET_DEFAULT_HTML_TEMPLATE),
158
- css: $.from('customCss').def(''),
159
- data_table: $.from('dataTable').def('sp_instance'),
160
- demo_data: $.from('demoData')
161
- .map((v) => v.ifString() || v instanceof now_include_plugin_1.NowIncludeShape ? v : JSON.stringify(v.getValue()))
162
- .def(''),
163
- description: $.def(''),
164
- docs: $.map((v) => (v.isString() ? v : v.ifRecord()?.getId())),
165
- field_list: $.from('fields')
166
- .map((v) => v.getValue()?.toString())
167
- .def(''),
168
- has_preview: $.from('hasPreview').toBoolean().def(false),
169
- id: $.def(''),
170
- internal: $.def(false),
171
- servicenow: $.val(servicenow),
172
- link: $.from('linkScript').def(exports.SP_WIDGET_DEFAULT_LINK_SCRIPT),
173
- roles: $.val(roles?.map((r) => r.getValue()).toString()).def(''),
174
- option_schema: $.from('optionSchema')
175
- .map((v) => {
176
- const json = v.getValue();
177
- return json && JSON.stringify(json);
178
- })
179
- .def(''),
180
- public: $.def(false),
181
- })),
39
+ getDefaultClientScript: exports.getDefaultClientScript,
40
+ defaultServerScript: exports.SP_WIDGET_DEFAULT_SERVER_SCRIPT,
41
+ defaultLinkScript: exports.SP_WIDGET_DEFAULT_LINK_SCRIPT,
42
+ defaultHtmlTemplate: exports.SP_WIDGET_DEFAULT_HTML_TEMPLATE,
182
43
  });
183
- return {
184
- success: true,
185
- value: widgetRecord.with(...(await Promise.all(templates.map(async (template) => {
186
- return await factory.createRecord({
187
- source: callExpression,
188
- table: 'sp_ng_template',
189
- explicitId: template.$id,
190
- properties: {
191
- id: template.id,
192
- sp_widget: widgetRecord.getId(),
193
- template: template.htmlTemplate,
194
- },
195
- });
196
- }))), ...(await Promise.all(dependencies.map(async (dep) => {
197
- return await factory.createRecord({
198
- source: callExpression,
199
- table: 'm2m_sp_widget_dependency',
200
- properties: {
201
- sp_dependency: dep,
202
- sp_widget: widgetRecord.getId(),
203
- },
204
- });
205
- }))), ...(await Promise.all(angularProviders.map(async (ap) => {
206
- return await factory.createRecord({
207
- source: callExpression,
208
- table: 'm2m_sp_ng_pro_sp_widget',
209
- properties: {
210
- sp_angular_provider: ap,
211
- sp_widget: widgetRecord.getId(),
212
- },
213
- });
214
- })))),
215
- };
216
44
  },
217
45
  },
218
46
  ],