@jigx/core-sdk 1.0.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 (902) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +87 -0
  3. package/dist/PACKAGE.d.ts +4 -0
  4. package/dist/PACKAGE.d.ts.map +1 -0
  5. package/dist/PACKAGE.js +5 -0
  6. package/dist/abstract/app-info.d.ts +8 -0
  7. package/dist/abstract/app-info.d.ts.map +1 -0
  8. package/dist/abstract/app-info.js +8 -0
  9. package/dist/abstract/app-name.d.ts +15 -0
  10. package/dist/abstract/app-name.d.ts.map +1 -0
  11. package/dist/abstract/app-name.js +28 -0
  12. package/dist/abstract/base-builder.d.ts +4 -0
  13. package/dist/abstract/base-builder.d.ts.map +1 -0
  14. package/dist/abstract/base-builder.js +3 -0
  15. package/dist/abstract/element-base-builder.d.ts +7 -0
  16. package/dist/abstract/element-base-builder.d.ts.map +1 -0
  17. package/dist/abstract/element-base-builder.js +11 -0
  18. package/dist/abstract/generic.d.ts +31 -0
  19. package/dist/abstract/generic.d.ts.map +1 -0
  20. package/dist/abstract/generic.js +2 -0
  21. package/dist/abstract/index.d.ts +12 -0
  22. package/dist/abstract/index.d.ts.map +1 -0
  23. package/dist/abstract/index.js +11 -0
  24. package/dist/abstract/register.d.ts +31 -0
  25. package/dist/abstract/register.d.ts.map +1 -0
  26. package/dist/abstract/register.js +48 -0
  27. package/dist/abstract/sdk.expression.d.ts +43 -0
  28. package/dist/abstract/sdk.expression.d.ts.map +1 -0
  29. package/dist/abstract/sdk.expression.js +175 -0
  30. package/dist/abstract/sdk.text.d.ts +23 -0
  31. package/dist/abstract/sdk.text.d.ts.map +1 -0
  32. package/dist/abstract/sdk.text.js +110 -0
  33. package/dist/abstract/sdk.types.d.ts +16 -0
  34. package/dist/abstract/sdk.types.d.ts.map +1 -0
  35. package/dist/abstract/sdk.types.js +88 -0
  36. package/dist/abstract/zod.strata.d.ts +17 -0
  37. package/dist/abstract/zod.strata.d.ts.map +1 -0
  38. package/dist/abstract/zod.strata.js +11 -0
  39. package/dist/abstract/zod.types.d.ts +1937 -0
  40. package/dist/abstract/zod.types.d.ts.map +1 -0
  41. package/dist/abstract/zod.types.js +848 -0
  42. package/dist/action/action-definition.builder.d.ts +16 -0
  43. package/dist/action/action-definition.builder.d.ts.map +1 -0
  44. package/dist/action/action-definition.builder.js +35 -0
  45. package/dist/action/action.descriptor.d.ts +8 -0
  46. package/dist/action/action.descriptor.d.ts.map +1 -0
  47. package/dist/action/action.descriptor.js +2 -0
  48. package/dist/action/index.d.ts +57 -0
  49. package/dist/action/index.d.ts.map +1 -0
  50. package/dist/action/index.js +48 -0
  51. package/dist/action/ja.abstract.d.ts +33 -0
  52. package/dist/action/ja.abstract.d.ts.map +1 -0
  53. package/dist/action/ja.abstract.js +58 -0
  54. package/dist/action/ja.action-definition.d.ts +11 -0
  55. package/dist/action/ja.action-definition.d.ts.map +1 -0
  56. package/dist/action/ja.action-definition.js +12 -0
  57. package/dist/action/ja.action-list.d.ts +9 -0
  58. package/dist/action/ja.action-list.d.ts.map +1 -0
  59. package/dist/action/ja.action-list.js +15 -0
  60. package/dist/action/ja.clear-queue.d.ts +9 -0
  61. package/dist/action/ja.clear-queue.d.ts.map +1 -0
  62. package/dist/action/ja.clear-queue.js +9 -0
  63. package/dist/action/ja.color.d.ts +3 -0
  64. package/dist/action/ja.color.d.ts.map +1 -0
  65. package/dist/action/ja.color.js +2 -0
  66. package/dist/action/ja.confirm.abstract.d.ts +16 -0
  67. package/dist/action/ja.confirm.abstract.d.ts.map +1 -0
  68. package/dist/action/ja.confirm.abstract.js +25 -0
  69. package/dist/action/ja.confirm.d.ts +23 -0
  70. package/dist/action/ja.confirm.d.ts.map +1 -0
  71. package/dist/action/ja.confirm.js +28 -0
  72. package/dist/action/ja.delete-queue-command.d.ts +9 -0
  73. package/dist/action/ja.delete-queue-command.d.ts.map +1 -0
  74. package/dist/action/ja.delete-queue-command.js +9 -0
  75. package/dist/action/ja.delete-sync-scope.d.ts +10 -0
  76. package/dist/action/ja.delete-sync-scope.d.ts.map +1 -0
  77. package/dist/action/ja.delete-sync-scope.js +14 -0
  78. package/dist/action/ja.delete-sync-status.d.ts +9 -0
  79. package/dist/action/ja.delete-sync-status.d.ts.map +1 -0
  80. package/dist/action/ja.delete-sync-status.js +9 -0
  81. package/dist/action/ja.evaluate.d.ts +12 -0
  82. package/dist/action/ja.evaluate.d.ts.map +1 -0
  83. package/dist/action/ja.evaluate.js +9 -0
  84. package/dist/action/ja.execute-action.d.ts +11 -0
  85. package/dist/action/ja.execute-action.d.ts.map +1 -0
  86. package/dist/action/ja.execute-action.js +15 -0
  87. package/dist/action/ja.execute-entities.d.ts +7 -0
  88. package/dist/action/ja.execute-entities.d.ts.map +1 -0
  89. package/dist/action/ja.execute-entities.js +8 -0
  90. package/dist/action/ja.execute-entity.abstract.d.ts +41 -0
  91. package/dist/action/ja.execute-entity.abstract.d.ts.map +1 -0
  92. package/dist/action/ja.execute-entity.abstract.js +104 -0
  93. package/dist/action/ja.execute-entity.d.ts +6 -0
  94. package/dist/action/ja.execute-entity.d.ts.map +1 -0
  95. package/dist/action/ja.execute-entity.dynamic-data.d.ts +6 -0
  96. package/dist/action/ja.execute-entity.dynamic-data.d.ts.map +1 -0
  97. package/dist/action/ja.execute-entity.dynamic-data.js +2 -0
  98. package/dist/action/ja.execute-entity.generic.d.ts +11 -0
  99. package/dist/action/ja.execute-entity.generic.d.ts.map +1 -0
  100. package/dist/action/ja.execute-entity.generic.js +2 -0
  101. package/dist/action/ja.execute-entity.js +8 -0
  102. package/dist/action/ja.execute-entity.sql.d.ts +12 -0
  103. package/dist/action/ja.execute-entity.sql.d.ts.map +1 -0
  104. package/dist/action/ja.execute-entity.sql.js +2 -0
  105. package/dist/action/ja.execute-sql.abstract.d.ts +6 -0
  106. package/dist/action/ja.execute-sql.abstract.d.ts.map +1 -0
  107. package/dist/action/ja.execute-sql.abstract.js +2 -0
  108. package/dist/action/ja.execute-sql.d.ts +16 -0
  109. package/dist/action/ja.execute-sql.d.ts.map +1 -0
  110. package/dist/action/ja.execute-sql.js +64 -0
  111. package/dist/action/ja.find-replace.d.ts +12 -0
  112. package/dist/action/ja.find-replace.d.ts.map +1 -0
  113. package/dist/action/ja.find-replace.js +22 -0
  114. package/dist/action/ja.generate-file.d.ts +11 -0
  115. package/dist/action/ja.generate-file.d.ts.map +1 -0
  116. package/dist/action/ja.generate-file.js +19 -0
  117. package/dist/action/ja.generate-pdf.d.ts +10 -0
  118. package/dist/action/ja.generate-pdf.d.ts.map +1 -0
  119. package/dist/action/ja.generate-pdf.js +10 -0
  120. package/dist/action/ja.go-back.d.ts +9 -0
  121. package/dist/action/ja.go-back.d.ts.map +1 -0
  122. package/dist/action/ja.go-back.js +11 -0
  123. package/dist/action/ja.go-to.d.ts +18 -0
  124. package/dist/action/ja.go-to.d.ts.map +1 -0
  125. package/dist/action/ja.go-to.js +41 -0
  126. package/dist/action/ja.in-background.d.ts +95 -0
  127. package/dist/action/ja.in-background.d.ts.map +1 -0
  128. package/dist/action/ja.in-background.factory.d.ts +88 -0
  129. package/dist/action/ja.in-background.factory.d.ts.map +1 -0
  130. package/dist/action/ja.in-background.factory.js +98 -0
  131. package/dist/action/ja.in-background.js +247 -0
  132. package/dist/action/ja.info-modal.d.ts +37 -0
  133. package/dist/action/ja.info-modal.d.ts.map +1 -0
  134. package/dist/action/ja.info-modal.js +61 -0
  135. package/dist/action/ja.jig-actions.d.ts +16 -0
  136. package/dist/action/ja.jig-actions.d.ts.map +1 -0
  137. package/dist/action/ja.jig-actions.js +35 -0
  138. package/dist/action/ja.on-button.factory.d.ts +89 -0
  139. package/dist/action/ja.on-button.factory.d.ts.map +1 -0
  140. package/dist/action/ja.on-button.factory.js +86 -0
  141. package/dist/action/ja.open-app-settings.d.ts +6 -0
  142. package/dist/action/ja.open-app-settings.d.ts.map +1 -0
  143. package/dist/action/ja.open-app-settings.js +8 -0
  144. package/dist/action/ja.open-map.abstract.d.ts +6 -0
  145. package/dist/action/ja.open-map.abstract.d.ts.map +1 -0
  146. package/dist/action/ja.open-map.abstract.js +2 -0
  147. package/dist/action/ja.open-map.d.ts +11 -0
  148. package/dist/action/ja.open-map.d.ts.map +1 -0
  149. package/dist/action/ja.open-map.js +25 -0
  150. package/dist/action/ja.open-media-picker.abstract.d.ts +8 -0
  151. package/dist/action/ja.open-media-picker.abstract.d.ts.map +1 -0
  152. package/dist/action/ja.open-media-picker.abstract.js +2 -0
  153. package/dist/action/ja.open-media-picker.d.ts +18 -0
  154. package/dist/action/ja.open-media-picker.d.ts.map +1 -0
  155. package/dist/action/ja.open-media-picker.js +46 -0
  156. package/dist/action/ja.open-scanner.d.ts +14 -0
  157. package/dist/action/ja.open-scanner.d.ts.map +1 -0
  158. package/dist/action/ja.open-scanner.js +23 -0
  159. package/dist/action/ja.open-url.d.ts +10 -0
  160. package/dist/action/ja.open-url.d.ts.map +1 -0
  161. package/dist/action/ja.open-url.js +13 -0
  162. package/dist/action/ja.print.d.ts +10 -0
  163. package/dist/action/ja.print.d.ts.map +1 -0
  164. package/dist/action/ja.print.js +17 -0
  165. package/dist/action/ja.reset-application-state.d.ts +9 -0
  166. package/dist/action/ja.reset-application-state.d.ts.map +1 -0
  167. package/dist/action/ja.reset-application-state.js +12 -0
  168. package/dist/action/ja.reset-component-state.d.ts +9 -0
  169. package/dist/action/ja.reset-component-state.d.ts.map +1 -0
  170. package/dist/action/ja.reset-component-state.js +13 -0
  171. package/dist/action/ja.reset-screen-state.d.ts +9 -0
  172. package/dist/action/ja.reset-screen-state.d.ts.map +1 -0
  173. package/dist/action/ja.reset-screen-state.js +12 -0
  174. package/dist/action/ja.reset-state.d.ts +9 -0
  175. package/dist/action/ja.reset-state.d.ts.map +1 -0
  176. package/dist/action/ja.reset-state.js +13 -0
  177. package/dist/action/ja.retry-queue-command.d.ts +9 -0
  178. package/dist/action/ja.retry-queue-command.d.ts.map +1 -0
  179. package/dist/action/ja.retry-queue-command.js +9 -0
  180. package/dist/action/ja.sdk.d.ts +4 -0
  181. package/dist/action/ja.sdk.d.ts.map +1 -0
  182. package/dist/action/ja.sdk.js +2 -0
  183. package/dist/action/ja.set-active-tab.d.ts +13 -0
  184. package/dist/action/ja.set-active-tab.d.ts.map +1 -0
  185. package/dist/action/ja.set-active-tab.js +29 -0
  186. package/dist/action/ja.set-application-state.d.ts +9 -0
  187. package/dist/action/ja.set-application-state.d.ts.map +1 -0
  188. package/dist/action/ja.set-application-state.js +17 -0
  189. package/dist/action/ja.set-screen-state.d.ts +9 -0
  190. package/dist/action/ja.set-screen-state.d.ts.map +1 -0
  191. package/dist/action/ja.set-screen-state.js +12 -0
  192. package/dist/action/ja.share.d.ts +12 -0
  193. package/dist/action/ja.share.d.ts.map +1 -0
  194. package/dist/action/ja.share.js +23 -0
  195. package/dist/action/ja.show-alert.d.ts +33 -0
  196. package/dist/action/ja.show-alert.d.ts.map +1 -0
  197. package/dist/action/ja.show-alert.js +61 -0
  198. package/dist/action/ja.start-location-sharing.abstract.d.ts +6 -0
  199. package/dist/action/ja.start-location-sharing.abstract.d.ts.map +1 -0
  200. package/dist/action/ja.start-location-sharing.abstract.js +2 -0
  201. package/dist/action/ja.start-location-sharing.d.ts +18 -0
  202. package/dist/action/ja.start-location-sharing.d.ts.map +1 -0
  203. package/dist/action/ja.start-location-sharing.js +33 -0
  204. package/dist/action/ja.start-sync-scope.d.ts +9 -0
  205. package/dist/action/ja.start-sync-scope.d.ts.map +1 -0
  206. package/dist/action/ja.start-sync-scope.js +18 -0
  207. package/dist/action/ja.stop-location-sharing.d.ts +6 -0
  208. package/dist/action/ja.stop-location-sharing.d.ts.map +1 -0
  209. package/dist/action/ja.stop-location-sharing.js +8 -0
  210. package/dist/action/ja.submit-form.abstract.d.ts +11 -0
  211. package/dist/action/ja.submit-form.abstract.d.ts.map +1 -0
  212. package/dist/action/ja.submit-form.abstract.js +2 -0
  213. package/dist/action/ja.submit-form.d.ts +31 -0
  214. package/dist/action/ja.submit-form.d.ts.map +1 -0
  215. package/dist/action/ja.submit-form.js +124 -0
  216. package/dist/action/ja.swipeable-action.d.ts +19 -0
  217. package/dist/action/ja.swipeable-action.d.ts.map +1 -0
  218. package/dist/action/ja.swipeable-action.js +25 -0
  219. package/dist/action/ja.sync-entities.abstract.d.ts +25 -0
  220. package/dist/action/ja.sync-entities.abstract.d.ts.map +1 -0
  221. package/dist/action/ja.sync-entities.abstract.js +2 -0
  222. package/dist/action/ja.sync-entities.d.ts +32 -0
  223. package/dist/action/ja.sync-entities.d.ts.map +1 -0
  224. package/dist/action/ja.sync-entities.js +142 -0
  225. package/dist/action/ja.update-profile.d.ts +12 -0
  226. package/dist/action/ja.update-profile.d.ts.map +1 -0
  227. package/dist/action/ja.update-profile.js +20 -0
  228. package/dist/application/application.sdk.d.ts +84 -0
  229. package/dist/application/application.sdk.d.ts.map +1 -0
  230. package/dist/application/application.sdk.js +217 -0
  231. package/dist/application/application.tab.d.ts +20 -0
  232. package/dist/application/application.tab.d.ts.map +1 -0
  233. package/dist/application/application.tab.js +45 -0
  234. package/dist/application/context.sdk.d.ts +48 -0
  235. package/dist/application/context.sdk.d.ts.map +1 -0
  236. package/dist/application/context.sdk.js +116 -0
  237. package/dist/application/index.d.ts +4 -0
  238. package/dist/application/index.d.ts.map +1 -0
  239. package/dist/application/index.js +4 -0
  240. package/dist/assets/example-extraction-cache.json +9 -0
  241. package/dist/assets/extracted-core-sdk-examples.yaml +44440 -0
  242. package/dist/assets/extracted-core-sdk-types.yaml +12100 -0
  243. package/dist/assets/stream-line-icons.csv +19281 -0
  244. package/dist/assets/type-extraction-cache.json +9 -0
  245. package/dist/builder/application-analyzer/application-analyzer.d.ts +42 -0
  246. package/dist/builder/application-analyzer/application-analyzer.d.ts.map +1 -0
  247. package/dist/builder/application-analyzer/application-analyzer.js +150 -0
  248. package/dist/builder/application-analyzer/create-application-analyzer.d.ts +17 -0
  249. package/dist/builder/application-analyzer/create-application-analyzer.d.ts.map +1 -0
  250. package/dist/builder/application-analyzer/create-application-analyzer.js +121 -0
  251. package/dist/builder/application-analyzer/index.d.ts +5 -0
  252. package/dist/builder/application-analyzer/index.d.ts.map +1 -0
  253. package/dist/builder/application-analyzer/index.js +5 -0
  254. package/dist/builder/application-analyzer/select-component-nodes.d.ts +7 -0
  255. package/dist/builder/application-analyzer/select-component-nodes.d.ts.map +1 -0
  256. package/dist/builder/application-analyzer/select-component-nodes.js +15 -0
  257. package/dist/builder/application-analyzer/select-datasource-node-by-id.d.ts +8 -0
  258. package/dist/builder/application-analyzer/select-datasource-node-by-id.d.ts.map +1 -0
  259. package/dist/builder/application-analyzer/select-datasource-node-by-id.js +20 -0
  260. package/dist/builder/application-analyzer/types.d.ts +60 -0
  261. package/dist/builder/application-analyzer/types.d.ts.map +1 -0
  262. package/dist/builder/application-analyzer/types.js +16 -0
  263. package/dist/builder/application-analyzer/utils.d.ts +3 -0
  264. package/dist/builder/application-analyzer/utils.d.ts.map +1 -0
  265. package/dist/builder/application-analyzer/utils.js +8 -0
  266. package/dist/builder/builder.d.ts +8 -0
  267. package/dist/builder/builder.d.ts.map +1 -0
  268. package/dist/builder/builder.js +54 -0
  269. package/dist/builder/index.d.ts +5 -0
  270. package/dist/builder/index.d.ts.map +1 -0
  271. package/dist/builder/index.js +4 -0
  272. package/dist/builder/transform-summary.d.ts +3 -0
  273. package/dist/builder/transform-summary.d.ts.map +1 -0
  274. package/dist/builder/transform-summary.js +39 -0
  275. package/dist/builder/types.d.ts +8 -0
  276. package/dist/builder/types.d.ts.map +1 -0
  277. package/dist/builder/types.js +2 -0
  278. package/dist/builder/validate-datasource-ids.d.ts +17 -0
  279. package/dist/builder/validate-datasource-ids.d.ts.map +1 -0
  280. package/dist/builder/validate-datasource-ids.js +51 -0
  281. package/dist/component/common/index.d.ts +22 -0
  282. package/dist/component/common/index.d.ts.map +1 -0
  283. package/dist/component/common/index.js +16 -0
  284. package/dist/component/common/jc.avatar-field.types.d.ts +9 -0
  285. package/dist/component/common/jc.avatar-field.types.d.ts.map +1 -0
  286. package/dist/component/common/jc.avatar-field.types.js +11 -0
  287. package/dist/component/common/jc.chart.common.abstract.d.ts +85 -0
  288. package/dist/component/common/jc.chart.common.abstract.d.ts.map +1 -0
  289. package/dist/component/common/jc.chart.common.abstract.js +2 -0
  290. package/dist/component/common/jc.chart.common.builders.d.ts +37 -0
  291. package/dist/component/common/jc.chart.common.builders.d.ts.map +1 -0
  292. package/dist/component/common/jc.chart.common.builders.js +81 -0
  293. package/dist/component/common/jc.component.types.d.ts +101 -0
  294. package/dist/component/common/jc.component.types.d.ts.map +1 -0
  295. package/dist/component/common/jc.component.types.js +144 -0
  296. package/dist/component/common/jc.context.d.ts +7 -0
  297. package/dist/component/common/jc.context.d.ts.map +1 -0
  298. package/dist/component/common/jc.context.js +2 -0
  299. package/dist/component/common/jc.element.types.d.ts +14 -0
  300. package/dist/component/common/jc.element.types.d.ts.map +1 -0
  301. package/dist/component/common/jc.element.types.js +13 -0
  302. package/dist/component/common/jc.field-base.builder.d.ts +21 -0
  303. package/dist/component/common/jc.field-base.builder.d.ts.map +1 -0
  304. package/dist/component/common/jc.field-base.builder.js +101 -0
  305. package/dist/component/common/jc.field-base.types.d.ts +28 -0
  306. package/dist/component/common/jc.field-base.types.d.ts.map +1 -0
  307. package/dist/component/common/jc.field-base.types.js +2 -0
  308. package/dist/component/common/jc.left-right.element.avatar.d.ts +11 -0
  309. package/dist/component/common/jc.left-right.element.avatar.d.ts.map +1 -0
  310. package/dist/component/common/jc.left-right.element.avatar.js +18 -0
  311. package/dist/component/common/jc.left-right.element.badge.d.ts +11 -0
  312. package/dist/component/common/jc.left-right.element.badge.d.ts.map +1 -0
  313. package/dist/component/common/jc.left-right.element.badge.js +17 -0
  314. package/dist/component/common/jc.left-right.element.button.d.ts +11 -0
  315. package/dist/component/common/jc.left-right.element.button.d.ts.map +1 -0
  316. package/dist/component/common/jc.left-right.element.button.js +14 -0
  317. package/dist/component/common/jc.left-right.element.checkbox.d.ts +13 -0
  318. package/dist/component/common/jc.left-right.element.checkbox.d.ts.map +1 -0
  319. package/dist/component/common/jc.left-right.element.checkbox.js +21 -0
  320. package/dist/component/common/jc.left-right.element.d.ts +31 -0
  321. package/dist/component/common/jc.left-right.element.d.ts.map +1 -0
  322. package/dist/component/common/jc.left-right.element.icon.d.ts +18 -0
  323. package/dist/component/common/jc.left-right.element.icon.d.ts.map +1 -0
  324. package/dist/component/common/jc.left-right.element.icon.js +32 -0
  325. package/dist/component/common/jc.left-right.element.image.d.ts +16 -0
  326. package/dist/component/common/jc.left-right.element.image.d.ts.map +1 -0
  327. package/dist/component/common/jc.left-right.element.image.js +29 -0
  328. package/dist/component/common/jc.left-right.element.js +2 -0
  329. package/dist/component/common/jc.left-right.element.progress.d.ts +11 -0
  330. package/dist/component/common/jc.left-right.element.progress.d.ts.map +1 -0
  331. package/dist/component/common/jc.left-right.element.progress.js +17 -0
  332. package/dist/component/common/jc.left-right.element.switch.d.ts +13 -0
  333. package/dist/component/common/jc.left-right.element.switch.d.ts.map +1 -0
  334. package/dist/component/common/jc.left-right.element.switch.js +21 -0
  335. package/dist/component/common/jc.left-right.element.value.d.ts +10 -0
  336. package/dist/component/common/jc.left-right.element.value.d.ts.map +1 -0
  337. package/dist/component/common/jc.left-right.element.value.js +12 -0
  338. package/dist/component/common/jc.picker-field-options.types.d.ts +13 -0
  339. package/dist/component/common/jc.picker-field-options.types.d.ts.map +1 -0
  340. package/dist/component/common/jc.picker-field-options.types.js +2 -0
  341. package/dist/component/common/jc.text.types.d.ts +6 -0
  342. package/dist/component/common/jc.text.types.d.ts.map +1 -0
  343. package/dist/component/common/jc.text.types.js +2 -0
  344. package/dist/component/common/jc.validation.d.ts +9 -0
  345. package/dist/component/common/jc.validation.d.ts.map +1 -0
  346. package/dist/component/common/jc.validation.js +48 -0
  347. package/dist/component/index.d.ts +86 -0
  348. package/dist/component/index.d.ts.map +1 -0
  349. package/dist/component/index.js +83 -0
  350. package/dist/component/jc.abstract.d.ts +32 -0
  351. package/dist/component/jc.abstract.d.ts.map +1 -0
  352. package/dist/component/jc.abstract.factory.d.ts +488 -0
  353. package/dist/component/jc.abstract.factory.d.ts.map +1 -0
  354. package/dist/component/jc.abstract.factory.js +757 -0
  355. package/dist/component/jc.abstract.js +53 -0
  356. package/dist/component/jc.abstract.utils.d.ts +3 -0
  357. package/dist/component/jc.abstract.utils.d.ts.map +1 -0
  358. package/dist/component/jc.abstract.utils.js +26 -0
  359. package/dist/component/jc.amount-control.d.ts +16 -0
  360. package/dist/component/jc.amount-control.d.ts.map +1 -0
  361. package/dist/component/jc.amount-control.js +36 -0
  362. package/dist/component/jc.avatar-field.d.ts +11 -0
  363. package/dist/component/jc.avatar-field.d.ts.map +1 -0
  364. package/dist/component/jc.avatar-field.js +27 -0
  365. package/dist/component/jc.avatar.d.ts +14 -0
  366. package/dist/component/jc.avatar.d.ts.map +1 -0
  367. package/dist/component/jc.avatar.js +26 -0
  368. package/dist/component/jc.banner.d.ts +81 -0
  369. package/dist/component/jc.banner.d.ts.map +1 -0
  370. package/dist/component/jc.banner.js +49 -0
  371. package/dist/component/jc.bar-chart.d.ts +23 -0
  372. package/dist/component/jc.bar-chart.d.ts.map +1 -0
  373. package/dist/component/jc.bar-chart.js +45 -0
  374. package/dist/component/jc.button.d.ts +20 -0
  375. package/dist/component/jc.button.d.ts.map +1 -0
  376. package/dist/component/jc.button.js +39 -0
  377. package/dist/component/jc.card.abstract.d.ts +14 -0
  378. package/dist/component/jc.card.abstract.d.ts.map +1 -0
  379. package/dist/component/jc.card.abstract.js +31 -0
  380. package/dist/component/jc.card.on-default.d.ts +91 -0
  381. package/dist/component/jc.card.on-default.d.ts.map +1 -0
  382. package/dist/component/jc.card.on-default.js +96 -0
  383. package/dist/component/jc.carousel.d.ts +31 -0
  384. package/dist/component/jc.carousel.d.ts.map +1 -0
  385. package/dist/component/jc.carousel.js +58 -0
  386. package/dist/component/jc.chat-message.d.ts +17 -0
  387. package/dist/component/jc.chat-message.d.ts.map +1 -0
  388. package/dist/component/jc.chat-message.js +32 -0
  389. package/dist/component/jc.chat.d.ts +23 -0
  390. package/dist/component/jc.chat.d.ts.map +1 -0
  391. package/dist/component/jc.chat.js +68 -0
  392. package/dist/component/jc.checkbox.d.ts +15 -0
  393. package/dist/component/jc.checkbox.d.ts.map +1 -0
  394. package/dist/component/jc.checkbox.js +38 -0
  395. package/dist/component/jc.choice-field-item.d.ts +15 -0
  396. package/dist/component/jc.choice-field-item.d.ts.map +1 -0
  397. package/dist/component/jc.choice-field-item.js +41 -0
  398. package/dist/component/jc.choice-field.d.ts +21 -0
  399. package/dist/component/jc.choice-field.d.ts.map +1 -0
  400. package/dist/component/jc.choice-field.js +34 -0
  401. package/dist/component/jc.count-down.d.ts +18 -0
  402. package/dist/component/jc.count-down.d.ts.map +1 -0
  403. package/dist/component/jc.count-down.js +55 -0
  404. package/dist/component/jc.count-up.d.ts +15 -0
  405. package/dist/component/jc.count-up.d.ts.map +1 -0
  406. package/dist/component/jc.count-up.js +42 -0
  407. package/dist/component/jc.custom-component.interop.d.ts +58 -0
  408. package/dist/component/jc.custom-component.interop.d.ts.map +1 -0
  409. package/dist/component/jc.custom-component.interop.js +115 -0
  410. package/dist/component/jc.date-picker.d.ts +15 -0
  411. package/dist/component/jc.date-picker.d.ts.map +1 -0
  412. package/dist/component/jc.date-picker.js +31 -0
  413. package/dist/component/jc.divider.d.ts +7 -0
  414. package/dist/component/jc.divider.d.ts.map +1 -0
  415. package/dist/component/jc.divider.js +8 -0
  416. package/dist/component/jc.dropdown.d.ts +20 -0
  417. package/dist/component/jc.dropdown.d.ts.map +1 -0
  418. package/dist/component/jc.dropdown.item.d.ts +22 -0
  419. package/dist/component/jc.dropdown.item.d.ts.map +1 -0
  420. package/dist/component/jc.dropdown.item.js +85 -0
  421. package/dist/component/jc.dropdown.js +33 -0
  422. package/dist/component/jc.duration-picker.d.ts +18 -0
  423. package/dist/component/jc.duration-picker.d.ts.map +1 -0
  424. package/dist/component/jc.duration-picker.js +35 -0
  425. package/dist/component/jc.email-field.d.ts +11 -0
  426. package/dist/component/jc.email-field.d.ts.map +1 -0
  427. package/dist/component/jc.email-field.js +19 -0
  428. package/dist/component/jc.entity-field.d.ts +23 -0
  429. package/dist/component/jc.entity-field.d.ts.map +1 -0
  430. package/dist/component/jc.entity-field.js +71 -0
  431. package/dist/component/jc.entity.d.ts +15 -0
  432. package/dist/component/jc.entity.d.ts.map +1 -0
  433. package/dist/component/jc.entity.js +27 -0
  434. package/dist/component/jc.event.d.ts +22 -0
  435. package/dist/component/jc.event.d.ts.map +1 -0
  436. package/dist/component/jc.event.js +68 -0
  437. package/dist/component/jc.expander.d.ts +49 -0
  438. package/dist/component/jc.expander.d.ts.map +1 -0
  439. package/dist/component/jc.expander.header.d.ts +25 -0
  440. package/dist/component/jc.expander.header.d.ts.map +1 -0
  441. package/dist/component/jc.expander.header.js +39 -0
  442. package/dist/component/jc.expander.js +53 -0
  443. package/dist/component/jc.field-row.d.ts +34 -0
  444. package/dist/component/jc.field-row.d.ts.map +1 -0
  445. package/dist/component/jc.field-row.entity.d.ts +12 -0
  446. package/dist/component/jc.field-row.entity.d.ts.map +1 -0
  447. package/dist/component/jc.field-row.entity.js +35 -0
  448. package/dist/component/jc.field-row.js +37 -0
  449. package/dist/component/jc.form.d.ts +98 -0
  450. package/dist/component/jc.form.d.ts.map +1 -0
  451. package/dist/component/jc.form.js +127 -0
  452. package/dist/component/jc.gallery-item.d.ts +12 -0
  453. package/dist/component/jc.gallery-item.d.ts.map +1 -0
  454. package/dist/component/jc.gallery-item.js +24 -0
  455. package/dist/component/jc.grid-item.d.ts +15 -0
  456. package/dist/component/jc.grid-item.d.ts.map +1 -0
  457. package/dist/component/jc.grid-item.js +31 -0
  458. package/dist/component/jc.grid.d.ts +16 -0
  459. package/dist/component/jc.grid.d.ts.map +1 -0
  460. package/dist/component/jc.grid.js +64 -0
  461. package/dist/component/jc.guards.d.ts +17 -0
  462. package/dist/component/jc.guards.d.ts.map +1 -0
  463. package/dist/component/jc.guards.js +14 -0
  464. package/dist/component/jc.icon.d.ts +19 -0
  465. package/dist/component/jc.icon.d.ts.map +1 -0
  466. package/dist/component/jc.icon.js +41 -0
  467. package/dist/component/jc.image.abstract.d.ts +28 -0
  468. package/dist/component/jc.image.abstract.d.ts.map +1 -0
  469. package/dist/component/jc.image.abstract.js +52 -0
  470. package/dist/component/jc.image.d.ts +5 -0
  471. package/dist/component/jc.image.d.ts.map +1 -0
  472. package/dist/component/jc.image.js +2 -0
  473. package/dist/component/jc.image.on-carousel.d.ts +23 -0
  474. package/dist/component/jc.image.on-carousel.d.ts.map +1 -0
  475. package/dist/component/jc.image.on-carousel.js +19 -0
  476. package/dist/component/jc.image.on-default.d.ts +25 -0
  477. package/dist/component/jc.image.on-default.d.ts.map +1 -0
  478. package/dist/component/jc.image.on-default.js +22 -0
  479. package/dist/component/jc.interactive-image.d.ts +41 -0
  480. package/dist/component/jc.interactive-image.d.ts.map +1 -0
  481. package/dist/component/jc.interactive-image.item.d.ts +24 -0
  482. package/dist/component/jc.interactive-image.item.d.ts.map +1 -0
  483. package/dist/component/jc.interactive-image.item.js +78 -0
  484. package/dist/component/jc.interactive-image.js +78 -0
  485. package/dist/component/jc.jig-header.d.ts +19 -0
  486. package/dist/component/jc.jig-header.d.ts.map +1 -0
  487. package/dist/component/jc.jig-header.js +42 -0
  488. package/dist/component/jc.jig-widget.d.ts +15 -0
  489. package/dist/component/jc.jig-widget.d.ts.map +1 -0
  490. package/dist/component/jc.jig-widget.js +41 -0
  491. package/dist/component/jc.jig.d.ts +11 -0
  492. package/dist/component/jc.jig.d.ts.map +1 -0
  493. package/dist/component/jc.jig.js +24 -0
  494. package/dist/component/jc.line-chart.d.ts +28 -0
  495. package/dist/component/jc.line-chart.d.ts.map +1 -0
  496. package/dist/component/jc.line-chart.js +45 -0
  497. package/dist/component/jc.list-item.d.ts +106 -0
  498. package/dist/component/jc.list-item.d.ts.map +1 -0
  499. package/dist/component/jc.list-item.js +274 -0
  500. package/dist/component/jc.list-item.standalone.d.ts +13 -0
  501. package/dist/component/jc.list-item.standalone.d.ts.map +1 -0
  502. package/dist/component/jc.list-item.standalone.js +10 -0
  503. package/dist/component/jc.list.abstract.d.ts +36 -0
  504. package/dist/component/jc.list.abstract.d.ts.map +1 -0
  505. package/dist/component/jc.list.abstract.js +2 -0
  506. package/dist/component/jc.list.d.ts +39 -0
  507. package/dist/component/jc.list.d.ts.map +1 -0
  508. package/dist/component/jc.list.js +95 -0
  509. package/dist/component/jc.location.d.ts +41 -0
  510. package/dist/component/jc.location.d.ts.map +1 -0
  511. package/dist/component/jc.location.js +63 -0
  512. package/dist/component/jc.marker-item.d.ts +29 -0
  513. package/dist/component/jc.marker-item.d.ts.map +1 -0
  514. package/dist/component/jc.marker-item.js +48 -0
  515. package/dist/component/jc.media-field.d.ts +13 -0
  516. package/dist/component/jc.media-field.d.ts.map +1 -0
  517. package/dist/component/jc.media-field.js +37 -0
  518. package/dist/component/jc.menu-item.d.ts +89 -0
  519. package/dist/component/jc.menu-item.d.ts.map +1 -0
  520. package/dist/component/jc.menu-item.js +65 -0
  521. package/dist/component/jc.number-field.d.ts +21 -0
  522. package/dist/component/jc.number-field.d.ts.map +1 -0
  523. package/dist/component/jc.number-field.js +33 -0
  524. package/dist/component/jc.pie-chart.d.ts +26 -0
  525. package/dist/component/jc.pie-chart.d.ts.map +1 -0
  526. package/dist/component/jc.pie-chart.js +45 -0
  527. package/dist/component/jc.product-item.amount.d.ts +17 -0
  528. package/dist/component/jc.product-item.amount.d.ts.map +1 -0
  529. package/dist/component/jc.product-item.amount.js +31 -0
  530. package/dist/component/jc.product-item.d.ts +30 -0
  531. package/dist/component/jc.product-item.d.ts.map +1 -0
  532. package/dist/component/jc.product-item.js +68 -0
  533. package/dist/component/jc.progress-bar.d.ts +45 -0
  534. package/dist/component/jc.progress-bar.d.ts.map +1 -0
  535. package/dist/component/jc.progress-bar.js +58 -0
  536. package/dist/component/jc.rating.d.ts +17 -0
  537. package/dist/component/jc.rating.d.ts.map +1 -0
  538. package/dist/component/jc.rating.js +38 -0
  539. package/dist/component/jc.section.abstract.d.ts +87 -0
  540. package/dist/component/jc.section.abstract.d.ts.map +1 -0
  541. package/dist/component/jc.section.abstract.js +33 -0
  542. package/dist/component/jc.section.on-default.d.ts +85 -0
  543. package/dist/component/jc.section.on-default.d.ts.map +1 -0
  544. package/dist/component/jc.section.on-default.js +85 -0
  545. package/dist/component/jc.section.on-entity.d.ts +11 -0
  546. package/dist/component/jc.section.on-entity.d.ts.map +1 -0
  547. package/dist/component/jc.section.on-entity.js +11 -0
  548. package/dist/component/jc.segmented-control.d.ts +23 -0
  549. package/dist/component/jc.segmented-control.d.ts.map +1 -0
  550. package/dist/component/jc.segmented-control.js +66 -0
  551. package/dist/component/jc.signature-field.d.ts +11 -0
  552. package/dist/component/jc.signature-field.d.ts.map +1 -0
  553. package/dist/component/jc.signature-field.js +18 -0
  554. package/dist/component/jc.slider.d.ts +36 -0
  555. package/dist/component/jc.slider.d.ts.map +1 -0
  556. package/dist/component/jc.slider.js +53 -0
  557. package/dist/component/jc.stage.d.ts +23 -0
  558. package/dist/component/jc.stage.d.ts.map +1 -0
  559. package/dist/component/jc.stage.js +31 -0
  560. package/dist/component/jc.step.d.ts +30 -0
  561. package/dist/component/jc.step.d.ts.map +1 -0
  562. package/dist/component/jc.step.js +35 -0
  563. package/dist/component/jc.stepper.d.ts +34 -0
  564. package/dist/component/jc.stepper.d.ts.map +1 -0
  565. package/dist/component/jc.stepper.js +59 -0
  566. package/dist/component/jc.story-group.d.ts +18 -0
  567. package/dist/component/jc.story-group.d.ts.map +1 -0
  568. package/dist/component/jc.story-group.js +27 -0
  569. package/dist/component/jc.summary.abstract.d.ts +15 -0
  570. package/dist/component/jc.summary.abstract.d.ts.map +1 -0
  571. package/dist/component/jc.summary.abstract.js +29 -0
  572. package/dist/component/jc.summary.card.d.ts +14 -0
  573. package/dist/component/jc.summary.card.d.ts.map +1 -0
  574. package/dist/component/jc.summary.card.js +36 -0
  575. package/dist/component/jc.summary.counter.d.ts +12 -0
  576. package/dist/component/jc.summary.counter.d.ts.map +1 -0
  577. package/dist/component/jc.summary.counter.js +28 -0
  578. package/dist/component/jc.summary.default.d.ts +16 -0
  579. package/dist/component/jc.summary.default.d.ts.map +1 -0
  580. package/dist/component/jc.summary.default.js +34 -0
  581. package/dist/component/jc.summary.progress.d.ts +46 -0
  582. package/dist/component/jc.summary.progress.d.ts.map +1 -0
  583. package/dist/component/jc.summary.progress.js +35 -0
  584. package/dist/component/jc.tab-button.d.ts +18 -0
  585. package/dist/component/jc.tab-button.d.ts.map +1 -0
  586. package/dist/component/jc.tab-button.js +43 -0
  587. package/dist/component/jc.text-field.d.ts +20 -0
  588. package/dist/component/jc.text-field.d.ts.map +1 -0
  589. package/dist/component/jc.text-field.js +49 -0
  590. package/dist/component/jc.text.d.ts +24 -0
  591. package/dist/component/jc.text.d.ts.map +1 -0
  592. package/dist/component/jc.text.js +44 -0
  593. package/dist/component/jc.titles.d.ts +19 -0
  594. package/dist/component/jc.titles.d.ts.map +1 -0
  595. package/dist/component/jc.titles.js +34 -0
  596. package/dist/component/jc.trend.d.ts +18 -0
  597. package/dist/component/jc.trend.d.ts.map +1 -0
  598. package/dist/component/jc.trend.js +31 -0
  599. package/dist/component/jc.types.d.ts +75 -0
  600. package/dist/component/jc.types.d.ts.map +1 -0
  601. package/dist/component/jc.types.js +74 -0
  602. package/dist/component/jc.video-player.abstract.d.ts +28 -0
  603. package/dist/component/jc.video-player.abstract.d.ts.map +1 -0
  604. package/dist/component/jc.video-player.abstract.js +38 -0
  605. package/dist/component/jc.video-player.d.ts +4 -0
  606. package/dist/component/jc.video-player.d.ts.map +1 -0
  607. package/dist/component/jc.video-player.js +2 -0
  608. package/dist/component/jc.video-player.on-jig.d.ts +25 -0
  609. package/dist/component/jc.video-player.on-jig.d.ts.map +1 -0
  610. package/dist/component/jc.video-player.on-jig.js +31 -0
  611. package/dist/component/jc.view.d.ts +158 -0
  612. package/dist/component/jc.view.d.ts.map +1 -0
  613. package/dist/component/jc.view.js +85 -0
  614. package/dist/component/jc.web-view.abstract.d.ts +15 -0
  615. package/dist/component/jc.web-view.abstract.d.ts.map +1 -0
  616. package/dist/component/jc.web-view.abstract.js +33 -0
  617. package/dist/component/jc.web-view.on-default.d.ts +5 -0
  618. package/dist/component/jc.web-view.on-default.d.ts.map +1 -0
  619. package/dist/component/jc.web-view.on-default.js +4 -0
  620. package/dist/component/jc.web-view.on-full.d.ts +10 -0
  621. package/dist/component/jc.web-view.on-full.d.ts.map +1 -0
  622. package/dist/component/jc.web-view.on-full.js +14 -0
  623. package/dist/database/database.abstract.d.ts +39 -0
  624. package/dist/database/database.abstract.d.ts.map +1 -0
  625. package/dist/database/database.abstract.js +42 -0
  626. package/dist/database/index.d.ts +2 -0
  627. package/dist/database/index.d.ts.map +1 -0
  628. package/dist/database/index.js +2 -0
  629. package/dist/datasource/datasource.abstract.d.ts +39 -0
  630. package/dist/datasource/datasource.abstract.d.ts.map +1 -0
  631. package/dist/datasource/datasource.abstract.js +47 -0
  632. package/dist/datasource/datasource.descriptor.d.ts +11 -0
  633. package/dist/datasource/datasource.descriptor.d.ts.map +1 -0
  634. package/dist/datasource/datasource.descriptor.js +2 -0
  635. package/dist/datasource/datasource.reference.d.ts +33 -0
  636. package/dist/datasource/datasource.reference.d.ts.map +1 -0
  637. package/dist/datasource/datasource.reference.js +66 -0
  638. package/dist/datasource/datasource.sdk.d.ts +7 -0
  639. package/dist/datasource/datasource.sdk.d.ts.map +1 -0
  640. package/dist/datasource/datasource.sdk.js +5 -0
  641. package/dist/datasource/datasource.sqlite.d.ts +88 -0
  642. package/dist/datasource/datasource.sqlite.d.ts.map +1 -0
  643. package/dist/datasource/datasource.sqlite.js +286 -0
  644. package/dist/datasource/datasource.static.d.ts +21 -0
  645. package/dist/datasource/datasource.static.d.ts.map +1 -0
  646. package/dist/datasource/datasource.static.js +30 -0
  647. package/dist/datasource/datasource.system.d.ts +18 -0
  648. package/dist/datasource/datasource.system.d.ts.map +1 -0
  649. package/dist/datasource/datasource.system.js +10 -0
  650. package/dist/datasource/entity.descriptor.d.ts +9 -0
  651. package/dist/datasource/entity.descriptor.d.ts.map +1 -0
  652. package/dist/datasource/entity.descriptor.js +2 -0
  653. package/dist/datasource/index.d.ts +11 -0
  654. package/dist/datasource/index.d.ts.map +1 -0
  655. package/dist/datasource/index.js +9 -0
  656. package/dist/datasource/sqlite-normalizer.d.ts +3 -0
  657. package/dist/datasource/sqlite-normalizer.d.ts.map +1 -0
  658. package/dist/datasource/sqlite-normalizer.js +194 -0
  659. package/dist/datasource/sqlite-validator.d.ts +28 -0
  660. package/dist/datasource/sqlite-validator.d.ts.map +1 -0
  661. package/dist/datasource/sqlite-validator.js +218 -0
  662. package/dist/function/function.abstract.d.ts +538 -0
  663. package/dist/function/function.abstract.d.ts.map +1 -0
  664. package/dist/function/function.abstract.js +271 -0
  665. package/dist/function/function.guard.d.ts +17 -0
  666. package/dist/function/function.guard.d.ts.map +1 -0
  667. package/dist/function/function.guard.js +62 -0
  668. package/dist/function/function.operation.d.ts +26 -0
  669. package/dist/function/function.operation.d.ts.map +1 -0
  670. package/dist/function/function.operation.js +118 -0
  671. package/dist/function/function.rest.continuation.d.ts +12 -0
  672. package/dist/function/function.rest.continuation.d.ts.map +1 -0
  673. package/dist/function/function.rest.continuation.js +24 -0
  674. package/dist/function/function.rest.d.ts +31 -0
  675. package/dist/function/function.rest.d.ts.map +1 -0
  676. package/dist/function/function.rest.error-builder.d.ts +38 -0
  677. package/dist/function/function.rest.error-builder.d.ts.map +1 -0
  678. package/dist/function/function.rest.error-builder.js +161 -0
  679. package/dist/function/function.rest.js +72 -0
  680. package/dist/function/function.rest.parameter-builder.d.ts +33 -0
  681. package/dist/function/function.rest.parameter-builder.d.ts.map +1 -0
  682. package/dist/function/function.rest.parameter-builder.js +81 -0
  683. package/dist/function/function.rest.types.d.ts +28 -0
  684. package/dist/function/function.rest.types.d.ts.map +1 -0
  685. package/dist/function/function.rest.types.js +2 -0
  686. package/dist/function/function.sdk.d.ts +10 -0
  687. package/dist/function/function.sdk.d.ts.map +1 -0
  688. package/dist/function/function.sdk.js +12 -0
  689. package/dist/function/function.soap.d.ts +19 -0
  690. package/dist/function/function.soap.d.ts.map +1 -0
  691. package/dist/function/function.soap.js +36 -0
  692. package/dist/function/function.soap.parameter-builder.d.ts +25 -0
  693. package/dist/function/function.soap.parameter-builder.d.ts.map +1 -0
  694. package/dist/function/function.soap.parameter-builder.js +41 -0
  695. package/dist/function/function.soap.types.d.ts +17 -0
  696. package/dist/function/function.soap.types.d.ts.map +1 -0
  697. package/dist/function/function.soap.types.js +2 -0
  698. package/dist/function/function.sql.d.ts +20 -0
  699. package/dist/function/function.sql.d.ts.map +1 -0
  700. package/dist/function/function.sql.js +53 -0
  701. package/dist/function/function.sql.parameter-builder.d.ts +24 -0
  702. package/dist/function/function.sql.parameter-builder.d.ts.map +1 -0
  703. package/dist/function/function.sql.parameter-builder.js +44 -0
  704. package/dist/function/function.sql.types.d.ts +20 -0
  705. package/dist/function/function.sql.types.d.ts.map +1 -0
  706. package/dist/function/function.sql.types.js +2 -0
  707. package/dist/function/function.types.d.ts +7 -0
  708. package/dist/function/function.types.d.ts.map +1 -0
  709. package/dist/function/function.types.js +2 -0
  710. package/dist/function/index.d.ts +17 -0
  711. package/dist/function/index.d.ts.map +1 -0
  712. package/dist/function/index.js +13 -0
  713. package/dist/icon/index.d.ts +3 -0
  714. package/dist/icon/index.d.ts.map +1 -0
  715. package/dist/icon/index.js +3 -0
  716. package/dist/icon/sdk.icon.d.ts +10 -0
  717. package/dist/icon/sdk.icon.d.ts.map +1 -0
  718. package/dist/icon/sdk.icon.data.d.ts +7 -0
  719. package/dist/icon/sdk.icon.data.d.ts.map +1 -0
  720. package/dist/icon/sdk.icon.data.js +19283 -0
  721. package/dist/icon/sdk.icon.js +27 -0
  722. package/dist/icon/sdk.icon.loader.d.ts +7 -0
  723. package/dist/icon/sdk.icon.loader.d.ts.map +1 -0
  724. package/dist/icon/sdk.icon.loader.js +15 -0
  725. package/dist/icon/sdk.icon.name.d.ts +7 -0
  726. package/dist/icon/sdk.icon.name.d.ts.map +1 -0
  727. package/dist/icon/sdk.icon.name.js +19305 -0
  728. package/dist/index.d.ts +14 -0
  729. package/dist/index.d.ts.map +1 -0
  730. package/dist/index.js +14 -0
  731. package/dist/jsonata/ast.d.ts +15 -0
  732. package/dist/jsonata/ast.d.ts.map +1 -0
  733. package/dist/jsonata/ast.js +118 -0
  734. package/dist/jsonata/base.d.ts +7 -0
  735. package/dist/jsonata/base.d.ts.map +1 -0
  736. package/dist/jsonata/base.js +43 -0
  737. package/dist/jsonata/builder.d.ts +28 -0
  738. package/dist/jsonata/builder.d.ts.map +1 -0
  739. package/dist/jsonata/builder.js +140 -0
  740. package/dist/jsonata/context.d.ts +10 -0
  741. package/dist/jsonata/context.d.ts.map +1 -0
  742. package/dist/jsonata/context.js +349 -0
  743. package/dist/jsonata/expression.d.ts +35 -0
  744. package/dist/jsonata/expression.d.ts.map +1 -0
  745. package/dist/jsonata/expression.js +498 -0
  746. package/dist/jsonata/index.d.ts +6 -0
  747. package/dist/jsonata/index.d.ts.map +1 -0
  748. package/dist/jsonata/index.js +6 -0
  749. package/dist/logger/index.d.ts +2 -0
  750. package/dist/logger/index.d.ts.map +1 -0
  751. package/dist/logger/index.js +2 -0
  752. package/dist/logger/logger.d.ts +14 -0
  753. package/dist/logger/logger.d.ts.map +1 -0
  754. package/dist/logger/logger.js +40 -0
  755. package/dist/runtime/auth.d.ts +19 -0
  756. package/dist/runtime/auth.d.ts.map +1 -0
  757. package/dist/runtime/auth.js +11 -0
  758. package/dist/runtime/index.d.ts +5 -0
  759. package/dist/runtime/index.d.ts.map +1 -0
  760. package/dist/runtime/index.js +3 -0
  761. package/dist/runtime/system.d.ts +27 -0
  762. package/dist/runtime/system.d.ts.map +1 -0
  763. package/dist/runtime/system.js +26 -0
  764. package/dist/screen/common/index.d.ts +9 -0
  765. package/dist/screen/common/index.d.ts.map +1 -0
  766. package/dist/screen/common/index.js +7 -0
  767. package/dist/screen/common/screen.badge.d.ts +8 -0
  768. package/dist/screen/common/screen.badge.d.ts.map +1 -0
  769. package/dist/screen/common/screen.badge.js +2 -0
  770. package/dist/screen/common/screen.bottom-sheet.d.ts +62 -0
  771. package/dist/screen/common/screen.bottom-sheet.d.ts.map +1 -0
  772. package/dist/screen/common/screen.bottom-sheet.js +31 -0
  773. package/dist/screen/common/screen.callback-actions.d.ts +7 -0
  774. package/dist/screen/common/screen.callback-actions.d.ts.map +1 -0
  775. package/dist/screen/common/screen.callback-actions.js +19 -0
  776. package/dist/screen/common/screen.input-definition.d.ts +108 -0
  777. package/dist/screen/common/screen.input-definition.d.ts.map +1 -0
  778. package/dist/screen/common/screen.input-definition.js +109 -0
  779. package/dist/screen/common/screen.placeholder.d.ts +20 -0
  780. package/dist/screen/common/screen.placeholder.d.ts.map +1 -0
  781. package/dist/screen/common/screen.placeholder.js +54 -0
  782. package/dist/screen/common/screen.preview.actions.d.ts +47 -0
  783. package/dist/screen/common/screen.preview.actions.d.ts.map +1 -0
  784. package/dist/screen/common/screen.preview.actions.js +122 -0
  785. package/dist/screen/common/screen.preview.d.ts +40 -0
  786. package/dist/screen/common/screen.preview.d.ts.map +1 -0
  787. package/dist/screen/common/screen.preview.js +87 -0
  788. package/dist/screen/common/screen.state.d.ts +7 -0
  789. package/dist/screen/common/screen.state.d.ts.map +1 -0
  790. package/dist/screen/common/screen.state.js +2 -0
  791. package/dist/screen/common/screen.summary.d.ts +14 -0
  792. package/dist/screen/common/screen.summary.d.ts.map +1 -0
  793. package/dist/screen/common/screen.summary.js +22 -0
  794. package/dist/screen/index.d.ts +16 -0
  795. package/dist/screen/index.d.ts.map +1 -0
  796. package/dist/screen/index.js +16 -0
  797. package/dist/screen/screen.abstract.d.ts +105 -0
  798. package/dist/screen/screen.abstract.d.ts.map +1 -0
  799. package/dist/screen/screen.abstract.js +175 -0
  800. package/dist/screen/screen.calendar.d.ts +22 -0
  801. package/dist/screen/screen.calendar.d.ts.map +1 -0
  802. package/dist/screen/screen.calendar.js +32 -0
  803. package/dist/screen/screen.default.d.ts +65 -0
  804. package/dist/screen/screen.default.d.ts.map +1 -0
  805. package/dist/screen/screen.default.js +68 -0
  806. package/dist/screen/screen.document.d.ts +58 -0
  807. package/dist/screen/screen.document.d.ts.map +1 -0
  808. package/dist/screen/screen.document.js +72 -0
  809. package/dist/screen/screen.full-screen.d.ts +23 -0
  810. package/dist/screen/screen.full-screen.d.ts.map +1 -0
  811. package/dist/screen/screen.full-screen.js +18 -0
  812. package/dist/screen/screen.gallery.d.ts +15 -0
  813. package/dist/screen/screen.gallery.d.ts.map +1 -0
  814. package/dist/screen/screen.gallery.js +14 -0
  815. package/dist/screen/screen.grid.base.d.ts +18 -0
  816. package/dist/screen/screen.grid.base.d.ts.map +1 -0
  817. package/dist/screen/screen.grid.base.js +17 -0
  818. package/dist/screen/screen.grid.dynamic.d.ts +18 -0
  819. package/dist/screen/screen.grid.dynamic.d.ts.map +1 -0
  820. package/dist/screen/screen.grid.dynamic.js +26 -0
  821. package/dist/screen/screen.grid.static.d.ts +14 -0
  822. package/dist/screen/screen.grid.static.d.ts.map +1 -0
  823. package/dist/screen/screen.grid.static.js +12 -0
  824. package/dist/screen/screen.guards.d.ts +41 -0
  825. package/dist/screen/screen.guards.d.ts.map +1 -0
  826. package/dist/screen/screen.guards.js +35 -0
  827. package/dist/screen/screen.list.d.ts +79 -0
  828. package/dist/screen/screen.list.d.ts.map +1 -0
  829. package/dist/screen/screen.list.js +123 -0
  830. package/dist/screen/screen.sdk.d.ts +13 -0
  831. package/dist/screen/screen.sdk.d.ts.map +1 -0
  832. package/dist/screen/screen.sdk.js +9 -0
  833. package/dist/screen/screen.tabs.d.ts +27 -0
  834. package/dist/screen/screen.tabs.d.ts.map +1 -0
  835. package/dist/screen/screen.tabs.instance.d.ts +34 -0
  836. package/dist/screen/screen.tabs.instance.d.ts.map +1 -0
  837. package/dist/screen/screen.tabs.instance.js +79 -0
  838. package/dist/screen/screen.tabs.js +35 -0
  839. package/dist/screen/screen.wizard.d.ts +12 -0
  840. package/dist/screen/screen.wizard.d.ts.map +1 -0
  841. package/dist/screen/screen.wizard.instance.d.ts +20 -0
  842. package/dist/screen/screen.wizard.instance.d.ts.map +1 -0
  843. package/dist/screen/screen.wizard.instance.js +40 -0
  844. package/dist/screen/screen.wizard.js +23 -0
  845. package/dist/utils/check.d.ts +3 -0
  846. package/dist/utils/check.d.ts.map +1 -0
  847. package/dist/utils/check.js +7 -0
  848. package/dist/utils/convert.d.ts +2 -0
  849. package/dist/utils/convert.d.ts.map +1 -0
  850. package/dist/utils/convert.js +8 -0
  851. package/dist/utils/dedent.d.ts +2 -0
  852. package/dist/utils/dedent.d.ts.map +1 -0
  853. package/dist/utils/dedent.js +28 -0
  854. package/dist/utils/index.d.ts +6 -0
  855. package/dist/utils/index.d.ts.map +1 -0
  856. package/dist/utils/index.js +5 -0
  857. package/dist/utils/types.d.ts +2 -0
  858. package/dist/utils/types.d.ts.map +1 -0
  859. package/dist/utils/types.js +2 -0
  860. package/dist/utils/utils.d.ts +9 -0
  861. package/dist/utils/utils.d.ts.map +1 -0
  862. package/dist/utils/utils.js +49 -0
  863. package/dist/widget/index.d.ts +12 -0
  864. package/dist/widget/index.d.ts.map +1 -0
  865. package/dist/widget/index.js +12 -0
  866. package/dist/widget/jw.abstract.d.ts +27 -0
  867. package/dist/widget/jw.abstract.d.ts.map +1 -0
  868. package/dist/widget/jw.abstract.js +36 -0
  869. package/dist/widget/jw.actions.d.ts +17 -0
  870. package/dist/widget/jw.actions.d.ts.map +1 -0
  871. package/dist/widget/jw.actions.js +30 -0
  872. package/dist/widget/jw.avatar.d.ts +19 -0
  873. package/dist/widget/jw.avatar.d.ts.map +1 -0
  874. package/dist/widget/jw.avatar.js +23 -0
  875. package/dist/widget/jw.chart.d.ts +18 -0
  876. package/dist/widget/jw.chart.d.ts.map +1 -0
  877. package/dist/widget/jw.chart.js +23 -0
  878. package/dist/widget/jw.group.d.ts +28 -0
  879. package/dist/widget/jw.group.d.ts.map +1 -0
  880. package/dist/widget/jw.group.js +35 -0
  881. package/dist/widget/jw.image.d.ts +27 -0
  882. package/dist/widget/jw.image.d.ts.map +1 -0
  883. package/dist/widget/jw.image.js +54 -0
  884. package/dist/widget/jw.list.d.ts +44 -0
  885. package/dist/widget/jw.list.d.ts.map +1 -0
  886. package/dist/widget/jw.list.js +44 -0
  887. package/dist/widget/jw.location.d.ts +41 -0
  888. package/dist/widget/jw.location.d.ts.map +1 -0
  889. package/dist/widget/jw.location.js +54 -0
  890. package/dist/widget/jw.sdk.d.ts +2 -0
  891. package/dist/widget/jw.sdk.d.ts.map +1 -0
  892. package/dist/widget/jw.sdk.js +2 -0
  893. package/dist/widget/jw.status.condition.d.ts +20 -0
  894. package/dist/widget/jw.status.condition.d.ts.map +1 -0
  895. package/dist/widget/jw.status.condition.js +27 -0
  896. package/dist/widget/jw.status.d.ts +8 -0
  897. package/dist/widget/jw.status.d.ts.map +1 -0
  898. package/dist/widget/jw.status.js +11 -0
  899. package/dist/widget/jw.value.d.ts +24 -0
  900. package/dist/widget/jw.value.d.ts.map +1 -0
  901. package/dist/widget/jw.value.js +51 -0
  902. package/package.json +94 -0
@@ -0,0 +1,14 @@
1
+ export * from './abstract/index.js';
2
+ export * from './action/index.js';
3
+ export { type Application, type ApplicationInput, ApplicationBuilder, CTX, } from './application/index.js';
4
+ export * from './component/index.js';
5
+ export * from './database/index.js';
6
+ export * from './datasource/index.js';
7
+ export * from './function/index.js';
8
+ export * from './icon/index.js';
9
+ export * from './jsonata/index.js';
10
+ export * from './runtime/index.js';
11
+ export * from './screen/index.js';
12
+ export * from './widget/index.js';
13
+ export { PACKAGE } from './PACKAGE.js';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsT0FBTyxFQUNMLEtBQUssV0FBVyxFQUNoQixLQUFLLGdCQUFnQixFQUNyQixrQkFBa0IsRUFDbEIsR0FBRyxHQUNKLE1BQU0sd0JBQXdCLENBQUE7QUFFL0IsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsb0JBQW9CLENBQUE7QUFFbEMsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3QvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9pbmRleC5qcydcbmV4cG9ydCB7XG4gIHR5cGUgQXBwbGljYXRpb24sXG4gIHR5cGUgQXBwbGljYXRpb25JbnB1dCxcbiAgQXBwbGljYXRpb25CdWlsZGVyLFxuICBDVFgsXG59IGZyb20gJy4vYXBwbGljYXRpb24vaW5kZXguanMnXG4vLyBleHBvcnQgKiBmcm9tICcuL2J1aWxkZXIvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudC9pbmRleC5qcydcbmV4cG9ydCAqIGZyb20gJy4vZGF0YWJhc2UvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL2RhdGFzb3VyY2UvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9uL2luZGV4LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9pY29uL2luZGV4LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9qc29uYXRhL2luZGV4LmpzJ1xuLy8gZXhwb3J0ICogZnJvbSAnLi9sb2dnZXIvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL3NjcmVlbi9pbmRleC5qcydcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0L2luZGV4LmpzJ1xuZXhwb3J0IHsgUEFDS0FHRSB9IGZyb20gJy4vUEFDS0FHRS5qcydcbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,kBAAkB,EAClB,GAAG,GACJ,MAAM,wBAAwB,CAAA;AAE/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAElC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA","sourcesContent":["export * from './abstract/index.js'\nexport * from './action/index.js'\nexport {\n type Application,\n type ApplicationInput,\n ApplicationBuilder,\n CTX,\n} from './application/index.js'\n// export * from './builder/index.js'\nexport * from './component/index.js'\nexport * from './database/index.js'\nexport * from './datasource/index.js'\nexport * from './function/index.js'\nexport * from './icon/index.js'\nexport * from './jsonata/index.js'\n// export * from './logger/index.js'\nexport * from './runtime/index.js'\nexport * from './screen/index.js'\nexport * from './widget/index.js'\nexport { PACKAGE } from './PACKAGE.js'\n"]}
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ export * from './abstract/index.js';
2
+ export * from './action/index.js';
3
+ export { ApplicationBuilder, CTX, } from './application/index.js';
4
+ export * from './component/index.js';
5
+ export * from './database/index.js';
6
+ export * from './datasource/index.js';
7
+ export * from './function/index.js';
8
+ export * from './icon/index.js';
9
+ export * from './jsonata/index.js';
10
+ export * from './runtime/index.js';
11
+ export * from './screen/index.js';
12
+ export * from './widget/index.js';
13
+ export { PACKAGE } from './PACKAGE.js';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLE9BQU8sRUFHTCxrQkFBa0IsRUFDbEIsR0FBRyxHQUNKLE1BQU0sd0JBQXdCLENBQUE7QUFFL0IsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsb0JBQW9CLENBQUE7QUFFbEMsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3QvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9pbmRleC5qcydcbmV4cG9ydCB7XG4gIHR5cGUgQXBwbGljYXRpb24sXG4gIHR5cGUgQXBwbGljYXRpb25JbnB1dCxcbiAgQXBwbGljYXRpb25CdWlsZGVyLFxuICBDVFgsXG59IGZyb20gJy4vYXBwbGljYXRpb24vaW5kZXguanMnXG4vLyBleHBvcnQgKiBmcm9tICcuL2J1aWxkZXIvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudC9pbmRleC5qcydcbmV4cG9ydCAqIGZyb20gJy4vZGF0YWJhc2UvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL2RhdGFzb3VyY2UvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9uL2luZGV4LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9pY29uL2luZGV4LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9qc29uYXRhL2luZGV4LmpzJ1xuLy8gZXhwb3J0ICogZnJvbSAnLi9sb2dnZXIvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUvaW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL3NjcmVlbi9pbmRleC5qcydcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0L2luZGV4LmpzJ1xuZXhwb3J0IHsgUEFDS0FHRSB9IGZyb20gJy4vUEFDS0FHRS5qcydcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ export interface FullContextReference {
2
+ readonly original: string;
3
+ readonly prefix: '@ctx';
4
+ readonly segments: string[];
5
+ }
6
+ type AstNode = Record<string, unknown>;
7
+ export declare function parseAstFromTransformed(transformed: string): AstNode | null;
8
+ export declare function isAstNode(value: unknown): value is AstNode;
9
+ export declare function getAstType(node: AstNode): string | null;
10
+ export declare function getAstString(node: AstNode, key: string): string | undefined;
11
+ export declare function visitAst(value: unknown, visitor: (node: AstNode, parent: AstNode | null, keyInParent?: string) => void): void;
12
+ export declare function extractContextReferencesFromAstNode(ast: Record<string, unknown>): FullContextReference[];
13
+ export declare function extractContextFunctionReferencesFromAstNode(ast: Record<string, unknown>): string[];
14
+ export {};
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbmF0YS9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxXQUFXLG9CQUFvQjtJQUVuQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQTtJQUV6QixRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQTtJQUV2QixRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFBO0NBQzVCO0FBRUQsS0FBSyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtBQU10Qyx3QkFBZ0IsdUJBQXVCLENBQUMsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLEdBQUcsSUFBSSxDQVUzRTtBQUVELHdCQUFnQixTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxLQUFLLElBQUksT0FBTyxDQUUxRDtBQUVELHdCQUFnQixVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUV2RDtBQUVELHdCQUFnQixZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxTQUFTLENBRTNFO0FBRUQsd0JBQWdCLFFBQVEsQ0FDdEIsS0FBSyxFQUFFLE9BQU8sRUFDZCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLE1BQU0sS0FBSyxJQUFJLEdBQzdFLElBQUksQ0FjTjtBQUVELHdCQUFnQixtQ0FBbUMsQ0FDakQsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQzNCLG9CQUFvQixFQUFFLENBNkR4QjtBQUVELHdCQUFnQiwyQ0FBMkMsQ0FDekQsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQzNCLE1BQU0sRUFBRSxDQTBCViIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqc29uYXRhIGZyb20gJ2pzb25hdGEnXG5cbi8qKlxuICogTm9ybWFsaXplZCBjb250ZXh0IHJlZmVyZW5jZSBleHRyYWN0ZWQgZnJvbSBKU09OYXRhIEFTVCB0cmF2ZXJzYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVsbENvbnRleHRSZWZlcmVuY2Uge1xuICAvKiogT3JpZ2luYWwgcmVmZXJlbmNlIHRva2VuIGFzIGZvdW5kIGluIGV4cHJlc3Npb24gdGV4dC4gKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWw6IHN0cmluZ1xuICAvKiogQ2Fub25pY2FsIHByZWZpeCB1c2VkIGZvciBleHRyYWN0ZWQgcmVmZXJlbmNlcy4gKi9cbiAgcmVhZG9ubHkgcHJlZml4OiAnQGN0eCdcbiAgLyoqIFBhcnNlZCBwYXRoIHNlZ21lbnRzIChicmFja2V0IGFjY2VzcyBub3JtYWxpemVkIHRvIGBAYnJhY2tldGApLiAqL1xuICByZWFkb25seSBzZWdtZW50czogc3RyaW5nW11cbn1cblxudHlwZSBBc3ROb2RlID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuLyoqXG4gKiBQYXJzZSB0cmFuc2Zvcm1lZCBKU09OYXRhIHRleHQuXG4gKiBUcmllcyBkaXJlY3QgcGFyc2UgZmlyc3QsIHRoZW4gd3JhcHBlZCBibG9jayBmb3JtIGZvciBtdWx0aS1zdGF0ZW1lbnQgZXhwcmVzc2lvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFzdEZyb21UcmFuc2Zvcm1lZCh0cmFuc2Zvcm1lZDogc3RyaW5nKTogQXN0Tm9kZSB8IG51bGwge1xuICB0cnkge1xuICAgIHJldHVybiBqc29uYXRhKHRyYW5zZm9ybWVkKS5hc3QoKSBhcyB1bmtub3duIGFzIEFzdE5vZGVcbiAgfSBjYXRjaCB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBqc29uYXRhKGAoJHt0cmFuc2Zvcm1lZH0pYCkuYXN0KCkgYXMgdW5rbm93biBhcyBBc3ROb2RlXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBc3ROb2RlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQXN0Tm9kZSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBc3RUeXBlKG5vZGU6IEFzdE5vZGUpOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIHR5cGVvZiBub2RlLnR5cGUgPT09ICdzdHJpbmcnID8gbm9kZS50eXBlIDogbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXN0U3RyaW5nKG5vZGU6IEFzdE5vZGUsIGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiBub2RlW2tleV0gPT09ICdzdHJpbmcnID8gbm9kZVtrZXldIDogdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdEFzdChcbiAgdmFsdWU6IHVua25vd24sXG4gIHZpc2l0b3I6IChub2RlOiBBc3ROb2RlLCBwYXJlbnQ6IEFzdE5vZGUgfCBudWxsLCBrZXlJblBhcmVudD86IHN0cmluZykgPT4gdm9pZCxcbik6IHZvaWQge1xuICBjb25zdCB3YWxrID0gKGN1cnJlbnQ6IHVua25vd24sIHBhcmVudDogQXN0Tm9kZSB8IG51bGwsIGtleUluUGFyZW50Pzogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgaWYgKCFpc0FzdE5vZGUoY3VycmVudCkpIHJldHVyblxuICAgIHZpc2l0b3IoY3VycmVudCwgcGFyZW50LCBrZXlJblBhcmVudClcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhjdXJyZW50KSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB2KSB3YWxrKGNoaWxkLCBjdXJyZW50LCBrKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2Fsayh2LCBjdXJyZW50LCBrKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHdhbGsodmFsdWUsIG51bGwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0Q29udGV4dFJlZmVyZW5jZXNGcm9tQXN0Tm9kZShcbiAgYXN0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IEZ1bGxDb250ZXh0UmVmZXJlbmNlW10ge1xuICBjb25zdCByb290ID0gYXN0IGFzIEFzdE5vZGVcbiAgY29uc3QgcmVmczogRnVsbENvbnRleHRSZWZlcmVuY2VbXSA9IFtdXG5cbiAgY29uc3QgYWRkUGF0aFJlZiA9IChub2RlOiBBc3ROb2RlKTogdm9pZCA9PiB7XG4gICAgLy8gQ29udGV4dCByZWZzIGFyZSBKU09OYXRhIHBhdGhzIHJvb3RlZCBhdCBgJGAuXG4gICAgY29uc3Qgc3RlcHMgPSBBcnJheS5pc0FycmF5KG5vZGUuc3RlcHMpID8gbm9kZS5zdGVwcyA6IG51bGxcbiAgICAvLyBOZWVkIGF0IGxlYXN0IHJvb3QgKyBvbmUgbmFtZWQgc2VnbWVudC5cbiAgICBpZiAoIXN0ZXBzIHx8IHN0ZXBzLmxlbmd0aCA8IDIpIHJldHVyblxuXG4gICAgY29uc3QgZmlyc3QgPSBzdGVwc1swXVxuICAgIC8vIE9ubHkgdHJlYXQgcm9vdCB2YXJpYWJsZSBwYXRocyBhcyBjb250ZXh0IHJlZmVyZW5jZXMuXG4gICAgaWYgKCFpc0FzdE5vZGUoZmlyc3QpKSByZXR1cm5cbiAgICBpZiAoZ2V0QXN0VHlwZShmaXJzdCkgIT09ICd2YXJpYWJsZScpIHJldHVyblxuICAgIGlmIChmaXJzdC52YWx1ZSAhPT0gJyQnKSByZXR1cm5cblxuICAgIGNvbnN0IHNlZ21lbnRzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc3RlcCA9IHN0ZXBzW2ldXG4gICAgICAvLyBPbmx5IG5hbWVkIHBhdGggc2VnbWVudHMgY29udHJpYnV0ZSB0byBleHRyYWN0ZWQgY29udGV4dCBwYXRoLlxuICAgICAgaWYgKCFpc0FzdE5vZGUoc3RlcCkpIGNvbnRpbnVlXG4gICAgICBpZiAoZ2V0QXN0VHlwZShzdGVwKSAhPT0gJ25hbWUnKSBjb250aW51ZVxuICAgICAgaWYgKHR5cGVvZiBzdGVwLnZhbHVlICE9PSAnc3RyaW5nJykgY29udGludWVcbiAgICAgIHNlZ21lbnRzLnB1c2goc3RlcC52YWx1ZSlcblxuICAgICAgLy8gRmlsdGVyIHN0YWdlcyBjb3JyZXNwb25kIHRvIGJyYWNrZXQgYWNjZXNzIChgWy4uLl1gKSBvbiB0aGlzIHBhdGggc3RlcC5cbiAgICAgIGNvbnN0IHN0YWdlcyA9IEFycmF5LmlzQXJyYXkoc3RlcC5zdGFnZXMpID8gc3RlcC5zdGFnZXMgOiBudWxsXG4gICAgICBpZiAoc3RhZ2VzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygc3RhZ2VzKSB7XG4gICAgICAgICAgaWYgKGlzQXN0Tm9kZShzdGFnZSkgJiYgZ2V0QXN0VHlwZShzdGFnZSkgPT09ICdmaWx0ZXInKSB7XG4gICAgICAgICAgICBzZWdtZW50cy5wdXNoKCdAYnJhY2tldCcpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2tpcCBlbXB0eS9pbnZhbGlkIHBhdGhzOyBvdGhlcndpc2UgZW1pdCBjYW5vbmljYWwgQGN0eC4qIGZvcm0uXG4gICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlZnMucHVzaCh7XG4gICAgICAgIG9yaWdpbmFsOiBgQGN0eC4ke3NlZ21lbnRzLmZpbHRlcigocykgPT4gcyAhPT0gJ0BicmFja2V0Jykuam9pbignLicpfWAsXG4gICAgICAgIHByZWZpeDogJ0BjdHgnLFxuICAgICAgICBzZWdtZW50cyxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgdmlzaXRBc3Qocm9vdCwgKG5vZGUpID0+IHtcbiAgICAvLyBDb2xsZWN0IHBhdGggcmVmZXJlbmNlcyBhdCB0aGlzIG5vZGUgYmVmb3JlIHRyYXZlcnNpbmcgY2hpbGRyZW4uXG4gICAgaWYgKGdldEFzdFR5cGUobm9kZSkgPT09ICdwYXRoJykge1xuICAgICAgYWRkUGF0aFJlZihub2RlKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KClcbiAgLy8gRGVkdXBsaWNhdGUgZXF1aXZhbGVudCByZWZlcmVuY2VzIGZvdW5kIG11bHRpcGxlIHRpbWVzIGluIHRyYXZlcnNhbC5cbiAgcmV0dXJuIHJlZnMuZmlsdGVyKChyKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gYCR7ci5wcmVmaXh9OiR7ci5zZWdtZW50cy5qb2luKCcuJyl9YFxuICAgIGlmIChzZWVuLmhhcyhrZXkpKSByZXR1cm4gZmFsc2VcbiAgICBzZWVuLmFkZChrZXkpXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RDb250ZXh0RnVuY3Rpb25SZWZlcmVuY2VzRnJvbUFzdE5vZGUoXG4gIGFzdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJvb3QgPSBhc3QgYXMgQXN0Tm9kZVxuICBjb25zdCByZWZzID0gbmV3IFNldDxzdHJpbmc+KClcblxuICB2aXNpdEFzdChyb290LCAobm9kZSkgPT4ge1xuICAgIC8vIEZ1bmN0aW9uIHJlZnMgYXJlIHByb2NlZHVyZXMgdGhhdCByZXNvbHZlIHRvIHJvb3QtcGF0aCBjYWxscy5cbiAgICBpZiAoZ2V0QXN0VHlwZShub2RlKSA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0FzdE5vZGUobm9kZS5wcm9jZWR1cmUpKSB7XG4gICAgICBjb25zdCBwcm9jID0gbm9kZS5wcm9jZWR1cmVcbiAgICAgIGlmIChnZXRBc3RUeXBlKHByb2MpID09PSAncGF0aCcgJiYgQXJyYXkuaXNBcnJheShwcm9jLnN0ZXBzKSAmJiBwcm9jLnN0ZXBzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gcHJvYy5zdGVwc1swXVxuICAgICAgICBjb25zdCBzZWNvbmQgPSBwcm9jLnN0ZXBzWzFdXG4gICAgICAgIC8vIE1hdGNoIGAkLjxmbk5hbWU+KC4uLilgIGFuZCBub3JtYWxpemUgdG8gYEBjdHguPGZuTmFtZT5gLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgaXNBc3ROb2RlKGZpcnN0KSAmJlxuICAgICAgICAgIGdldEFzdFR5cGUoZmlyc3QpID09PSAndmFyaWFibGUnICYmXG4gICAgICAgICAgZmlyc3QudmFsdWUgPT09ICckJyAmJlxuICAgICAgICAgIGlzQXN0Tm9kZShzZWNvbmQpICYmXG4gICAgICAgICAgZ2V0QXN0VHlwZShzZWNvbmQpID09PSAnbmFtZScgJiZcbiAgICAgICAgICB0eXBlb2Ygc2Vjb25kLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZWZzLmFkZChgQGN0eC4ke3NlY29uZC52YWx1ZX1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gQXJyYXkuZnJvbShyZWZzKVxufVxuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/jsonata/ast.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IAEnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAMtC,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAU3E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE3E;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,GAC7E,IAAI,CAcN;AAED,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,oBAAoB,EAAE,CA6DxB;AAED,wBAAgB,2CAA2C,CACzD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,MAAM,EAAE,CA0BV","sourcesContent":["import jsonata from 'jsonata'\n\n/**\n * Normalized context reference extracted from JSONata AST traversal.\n */\nexport interface FullContextReference {\n /** Original reference token as found in expression text. */\n readonly original: string\n /** Canonical prefix used for extracted references. */\n readonly prefix: '@ctx'\n /** Parsed path segments (bracket access normalized to `@bracket`). */\n readonly segments: string[]\n}\n\ntype AstNode = Record<string, unknown>\n\n/**\n * Parse transformed JSONata text.\n * Tries direct parse first, then wrapped block form for multi-statement expressions.\n */\nexport function parseAstFromTransformed(transformed: string): AstNode | null {\n try {\n return jsonata(transformed).ast() as unknown as AstNode\n } catch {\n try {\n return jsonata(`(${transformed})`).ast() as unknown as AstNode\n } catch {\n return null\n }\n }\n}\n\nexport function isAstNode(value: unknown): value is AstNode {\n return typeof value === 'object' && value !== null\n}\n\nexport function getAstType(node: AstNode): string | null {\n return typeof node.type === 'string' ? node.type : null\n}\n\nexport function getAstString(node: AstNode, key: string): string | undefined {\n return typeof node[key] === 'string' ? node[key] : undefined\n}\n\nexport function visitAst(\n value: unknown,\n visitor: (node: AstNode, parent: AstNode | null, keyInParent?: string) => void,\n): void {\n const walk = (current: unknown, parent: AstNode | null, keyInParent?: string): void => {\n if (!isAstNode(current)) return\n visitor(current, parent, keyInParent)\n for (const [k, v] of Object.entries(current)) {\n if (Array.isArray(v)) {\n for (const child of v) walk(child, current, k)\n } else {\n walk(v, current, k)\n }\n }\n }\n\n walk(value, null)\n}\n\nexport function extractContextReferencesFromAstNode(\n ast: Record<string, unknown>,\n): FullContextReference[] {\n const root = ast as AstNode\n const refs: FullContextReference[] = []\n\n const addPathRef = (node: AstNode): void => {\n // Context refs are JSONata paths rooted at `$`.\n const steps = Array.isArray(node.steps) ? node.steps : null\n // Need at least root + one named segment.\n if (!steps || steps.length < 2) return\n\n const first = steps[0]\n // Only treat root variable paths as context references.\n if (!isAstNode(first)) return\n if (getAstType(first) !== 'variable') return\n if (first.value !== '$') return\n\n const segments: string[] = []\n for (let i = 1; i < steps.length; i++) {\n const step = steps[i]\n // Only named path segments contribute to extracted context path.\n if (!isAstNode(step)) continue\n if (getAstType(step) !== 'name') continue\n if (typeof step.value !== 'string') continue\n segments.push(step.value)\n\n // Filter stages correspond to bracket access (`[...]`) on this path step.\n const stages = Array.isArray(step.stages) ? step.stages : null\n if (stages) {\n for (const stage of stages) {\n if (isAstNode(stage) && getAstType(stage) === 'filter') {\n segments.push('@bracket')\n }\n }\n }\n }\n\n // Skip empty/invalid paths; otherwise emit canonical @ctx.* form.\n if (segments.length > 0) {\n refs.push({\n original: `@ctx.${segments.filter((s) => s !== '@bracket').join('.')}`,\n prefix: '@ctx',\n segments,\n })\n }\n }\n\n visitAst(root, (node) => {\n // Collect path references at this node before traversing children.\n if (getAstType(node) === 'path') {\n addPathRef(node)\n }\n })\n\n const seen = new Set<string>()\n // Deduplicate equivalent references found multiple times in traversal.\n return refs.filter((r) => {\n const key = `${r.prefix}:${r.segments.join('.')}`\n if (seen.has(key)) return false\n seen.add(key)\n return true\n })\n}\n\nexport function extractContextFunctionReferencesFromAstNode(\n ast: Record<string, unknown>,\n): string[] {\n const root = ast as AstNode\n const refs = new Set<string>()\n\n visitAst(root, (node) => {\n // Function refs are procedures that resolve to root-path calls.\n if (getAstType(node) === 'function' && isAstNode(node.procedure)) {\n const proc = node.procedure\n if (getAstType(proc) === 'path' && Array.isArray(proc.steps) && proc.steps.length >= 2) {\n const first = proc.steps[0]\n const second = proc.steps[1]\n // Match `$.<fnName>(...)` and normalize to `@ctx.<fnName>`.\n if (\n isAstNode(first) &&\n getAstType(first) === 'variable' &&\n first.value === '$' &&\n isAstNode(second) &&\n getAstType(second) === 'name' &&\n typeof second.value === 'string'\n ) {\n refs.add(`@ctx.${second.value}`)\n }\n }\n }\n })\n return Array.from(refs)\n}\n"]}
@@ -0,0 +1,118 @@
1
+ import jsonata from 'jsonata';
2
+ export function parseAstFromTransformed(transformed) {
3
+ try {
4
+ return jsonata(transformed).ast();
5
+ }
6
+ catch {
7
+ try {
8
+ return jsonata(`(${transformed})`).ast();
9
+ }
10
+ catch {
11
+ return null;
12
+ }
13
+ }
14
+ }
15
+ export function isAstNode(value) {
16
+ return typeof value === 'object' && value !== null;
17
+ }
18
+ export function getAstType(node) {
19
+ return typeof node.type === 'string' ? node.type : null;
20
+ }
21
+ export function getAstString(node, key) {
22
+ return typeof node[key] === 'string' ? node[key] : undefined;
23
+ }
24
+ export function visitAst(value, visitor) {
25
+ const walk = (current, parent, keyInParent) => {
26
+ if (!isAstNode(current))
27
+ return;
28
+ visitor(current, parent, keyInParent);
29
+ for (const [k, v] of Object.entries(current)) {
30
+ if (Array.isArray(v)) {
31
+ for (const child of v)
32
+ walk(child, current, k);
33
+ }
34
+ else {
35
+ walk(v, current, k);
36
+ }
37
+ }
38
+ };
39
+ walk(value, null);
40
+ }
41
+ export function extractContextReferencesFromAstNode(ast) {
42
+ const root = ast;
43
+ const refs = [];
44
+ const addPathRef = (node) => {
45
+ const steps = Array.isArray(node.steps) ? node.steps : null;
46
+ if (!steps || steps.length < 2)
47
+ return;
48
+ const first = steps[0];
49
+ if (!isAstNode(first))
50
+ return;
51
+ if (getAstType(first) !== 'variable')
52
+ return;
53
+ if (first.value !== '$')
54
+ return;
55
+ const segments = [];
56
+ for (let i = 1; i < steps.length; i++) {
57
+ const step = steps[i];
58
+ if (!isAstNode(step))
59
+ continue;
60
+ if (getAstType(step) !== 'name')
61
+ continue;
62
+ if (typeof step.value !== 'string')
63
+ continue;
64
+ segments.push(step.value);
65
+ const stages = Array.isArray(step.stages) ? step.stages : null;
66
+ if (stages) {
67
+ for (const stage of stages) {
68
+ if (isAstNode(stage) && getAstType(stage) === 'filter') {
69
+ segments.push('@bracket');
70
+ }
71
+ }
72
+ }
73
+ }
74
+ if (segments.length > 0) {
75
+ refs.push({
76
+ original: `@ctx.${segments.filter((s) => s !== '@bracket').join('.')}`,
77
+ prefix: '@ctx',
78
+ segments,
79
+ });
80
+ }
81
+ };
82
+ visitAst(root, (node) => {
83
+ if (getAstType(node) === 'path') {
84
+ addPathRef(node);
85
+ }
86
+ });
87
+ const seen = new Set();
88
+ return refs.filter((r) => {
89
+ const key = `${r.prefix}:${r.segments.join('.')}`;
90
+ if (seen.has(key))
91
+ return false;
92
+ seen.add(key);
93
+ return true;
94
+ });
95
+ }
96
+ export function extractContextFunctionReferencesFromAstNode(ast) {
97
+ const root = ast;
98
+ const refs = new Set();
99
+ visitAst(root, (node) => {
100
+ if (getAstType(node) === 'function' && isAstNode(node.procedure)) {
101
+ const proc = node.procedure;
102
+ if (getAstType(proc) === 'path' && Array.isArray(proc.steps) && proc.steps.length >= 2) {
103
+ const first = proc.steps[0];
104
+ const second = proc.steps[1];
105
+ if (isAstNode(first) &&
106
+ getAstType(first) === 'variable' &&
107
+ first.value === '$' &&
108
+ isAstNode(second) &&
109
+ getAstType(second) === 'name' &&
110
+ typeof second.value === 'string') {
111
+ refs.add(`@ctx.${second.value}`);
112
+ }
113
+ }
114
+ }
115
+ });
116
+ return Array.from(refs);
117
+ }
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25hdGEvYXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQW9CN0IsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFdBQW1CLEVBQWtCO0lBQzNFLElBQUksQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBd0IsQ0FBQTtJQUN6RCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsSUFBSSxDQUFDO1lBQ0gsT0FBTyxPQUFPLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBd0IsQ0FBQTtRQUNoRSxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO0lBQ0gsQ0FBQztBQUFBLENBQ0Y7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWMsRUFBb0I7SUFDMUQsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQTtBQUFBLENBQ25EO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFhLEVBQWlCO0lBQ3ZELE9BQU8sT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQUEsQ0FDeEQ7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQWEsRUFBRSxHQUFXLEVBQXNCO0lBQzNFLE9BQU8sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtBQUFBLENBQzdEO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsS0FBYyxFQUNkLE9BQThFLEVBQ3hFO0lBQ04sTUFBTSxJQUFJLEdBQUcs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QUFJLENBQUMsS0FBSyxVQUFVLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUE7WUFDM0IsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN2RixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUU1QixJQUNFLFNBQVMsQ0FBQyxLQUFLLENBQUM7b0JBQ2hCLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxVQUFVO29CQUNoQyxLQUFLLENBQUMsS0FBSyxLQUFLLEdBQUc7b0JBQ25CLFNBQVMsQ0FBQyxNQUFNLENBQUM7b0JBQ2pCLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxNQUFNO29CQUM3QixPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUNoQyxDQUFDO29CQUNELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtnQkFDbEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQUEsQ0FDRixDQUFDLENBQUE7SUFDRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7QUFBQSxDQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqc29uYXRhIGZyb20gJ2pzb25hdGEnXG5cbi8qKlxuICogTm9ybWFsaXplZCBjb250ZXh0IHJlZmVyZW5jZSBleHRyYWN0ZWQgZnJvbSBKU09OYXRhIEFTVCB0cmF2ZXJzYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVsbENvbnRleHRSZWZlcmVuY2Uge1xuICAvKiogT3JpZ2luYWwgcmVmZXJlbmNlIHRva2VuIGFzIGZvdW5kIGluIGV4cHJlc3Npb24gdGV4dC4gKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWw6IHN0cmluZ1xuICAvKiogQ2Fub25pY2FsIHByZWZpeCB1c2VkIGZvciBleHRyYWN0ZWQgcmVmZXJlbmNlcy4gKi9cbiAgcmVhZG9ubHkgcHJlZml4OiAnQGN0eCdcbiAgLyoqIFBhcnNlZCBwYXRoIHNlZ21lbnRzIChicmFja2V0IGFjY2VzcyBub3JtYWxpemVkIHRvIGBAYnJhY2tldGApLiAqL1xuICByZWFkb25seSBzZWdtZW50czogc3RyaW5nW11cbn1cblxudHlwZSBBc3ROb2RlID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuLyoqXG4gKiBQYXJzZSB0cmFuc2Zvcm1lZCBKU09OYXRhIHRleHQuXG4gKiBUcmllcyBkaXJlY3QgcGFyc2UgZmlyc3QsIHRoZW4gd3JhcHBlZCBibG9jayBmb3JtIGZvciBtdWx0aS1zdGF0ZW1lbnQgZXhwcmVzc2lvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFzdEZyb21UcmFuc2Zvcm1lZCh0cmFuc2Zvcm1lZDogc3RyaW5nKTogQXN0Tm9kZSB8IG51bGwge1xuICB0cnkge1xuICAgIHJldHVybiBqc29uYXRhKHRyYW5zZm9ybWVkKS5hc3QoKSBhcyB1bmtub3duIGFzIEFzdE5vZGVcbiAgfSBjYXRjaCB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBqc29uYXRhKGAoJHt0cmFuc2Zvcm1lZH0pYCkuYXN0KCkgYXMgdW5rbm93biBhcyBBc3ROb2RlXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBc3ROb2RlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQXN0Tm9kZSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBc3RUeXBlKG5vZGU6IEFzdE5vZGUpOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIHR5cGVvZiBub2RlLnR5cGUgPT09ICdzdHJpbmcnID8gbm9kZS50eXBlIDogbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXN0U3RyaW5nKG5vZGU6IEFzdE5vZGUsIGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiBub2RlW2tleV0gPT09ICdzdHJpbmcnID8gbm9kZVtrZXldIDogdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdEFzdChcbiAgdmFsdWU6IHVua25vd24sXG4gIHZpc2l0b3I6IChub2RlOiBBc3ROb2RlLCBwYXJlbnQ6IEFzdE5vZGUgfCBudWxsLCBrZXlJblBhcmVudD86IHN0cmluZykgPT4gdm9pZCxcbik6IHZvaWQge1xuICBjb25zdCB3YWxrID0gKGN1cnJlbnQ6IHVua25vd24sIHBhcmVudDogQXN0Tm9kZSB8IG51bGwsIGtleUluUGFyZW50Pzogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgaWYgKCFpc0FzdE5vZGUoY3VycmVudCkpIHJldHVyblxuICAgIHZpc2l0b3IoY3VycmVudCwgcGFyZW50LCBrZXlJblBhcmVudClcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhjdXJyZW50KSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB2KSB3YWxrKGNoaWxkLCBjdXJyZW50LCBrKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2Fsayh2LCBjdXJyZW50LCBrKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHdhbGsodmFsdWUsIG51bGwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0Q29udGV4dFJlZmVyZW5jZXNGcm9tQXN0Tm9kZShcbiAgYXN0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IEZ1bGxDb250ZXh0UmVmZXJlbmNlW10ge1xuICBjb25zdCByb290ID0gYXN0IGFzIEFzdE5vZGVcbiAgY29uc3QgcmVmczogRnVsbENvbnRleHRSZWZlcmVuY2VbXSA9IFtdXG5cbiAgY29uc3QgYWRkUGF0aFJlZiA9IChub2RlOiBBc3ROb2RlKTogdm9pZCA9PiB7XG4gICAgLy8gQ29udGV4dCByZWZzIGFyZSBKU09OYXRhIHBhdGhzIHJvb3RlZCBhdCBgJGAuXG4gICAgY29uc3Qgc3RlcHMgPSBBcnJheS5pc0FycmF5KG5vZGUuc3RlcHMpID8gbm9kZS5zdGVwcyA6IG51bGxcbiAgICAvLyBOZWVkIGF0IGxlYXN0IHJvb3QgKyBvbmUgbmFtZWQgc2VnbWVudC5cbiAgICBpZiAoIXN0ZXBzIHx8IHN0ZXBzLmxlbmd0aCA8IDIpIHJldHVyblxuXG4gICAgY29uc3QgZmlyc3QgPSBzdGVwc1swXVxuICAgIC8vIE9ubHkgdHJlYXQgcm9vdCB2YXJpYWJsZSBwYXRocyBhcyBjb250ZXh0IHJlZmVyZW5jZXMuXG4gICAgaWYgKCFpc0FzdE5vZGUoZmlyc3QpKSByZXR1cm5cbiAgICBpZiAoZ2V0QXN0VHlwZShmaXJzdCkgIT09ICd2YXJpYWJsZScpIHJldHVyblxuICAgIGlmIChmaXJzdC52YWx1ZSAhPT0gJyQnKSByZXR1cm5cblxuICAgIGNvbnN0IHNlZ21lbnRzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc3RlcCA9IHN0ZXBzW2ldXG4gICAgICAvLyBPbmx5IG5hbWVkIHBhdGggc2VnbWVudHMgY29udHJpYnV0ZSB0byBleHRyYWN0ZWQgY29udGV4dCBwYXRoLlxuICAgICAgaWYgKCFpc0FzdE5vZGUoc3RlcCkpIGNvbnRpbnVlXG4gICAgICBpZiAoZ2V0QXN0VHlwZShzdGVwKSAhPT0gJ25hbWUnKSBjb250aW51ZVxuICAgICAgaWYgKHR5cGVvZiBzdGVwLnZhbHVlICE9PSAnc3RyaW5nJykgY29udGludWVcbiAgICAgIHNlZ21lbnRzLnB1c2goc3RlcC52YWx1ZSlcblxuICAgICAgLy8gRmlsdGVyIHN0YWdlcyBjb3JyZXNwb25kIHRvIGJyYWNrZXQgYWNjZXNzIChgWy4uLl1gKSBvbiB0aGlzIHBhdGggc3RlcC5cbiAgICAgIGNvbnN0IHN0YWdlcyA9IEFycmF5LmlzQXJyYXkoc3RlcC5zdGFnZXMpID8gc3RlcC5zdGFnZXMgOiBudWxsXG4gICAgICBpZiAoc3RhZ2VzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygc3RhZ2VzKSB7XG4gICAgICAgICAgaWYgKGlzQXN0Tm9kZShzdGFnZSkgJiYgZ2V0QXN0VHlwZShzdGFnZSkgPT09ICdmaWx0ZXInKSB7XG4gICAgICAgICAgICBzZWdtZW50cy5wdXNoKCdAYnJhY2tldCcpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2tpcCBlbXB0eS9pbnZhbGlkIHBhdGhzOyBvdGhlcndpc2UgZW1pdCBjYW5vbmljYWwgQGN0eC4qIGZvcm0uXG4gICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlZnMucHVzaCh7XG4gICAgICAgIG9yaWdpbmFsOiBgQGN0eC4ke3NlZ21lbnRzLmZpbHRlcigocykgPT4gcyAhPT0gJ0BicmFja2V0Jykuam9pbignLicpfWAsXG4gICAgICAgIHByZWZpeDogJ0BjdHgnLFxuICAgICAgICBzZWdtZW50cyxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgdmlzaXRBc3Qocm9vdCwgKG5vZGUpID0+IHtcbiAgICAvLyBDb2xsZWN0IHBhdGggcmVmZXJlbmNlcyBhdCB0aGlzIG5vZGUgYmVmb3JlIHRyYXZlcnNpbmcgY2hpbGRyZW4uXG4gICAgaWYgKGdldEFzdFR5cGUobm9kZSkgPT09ICdwYXRoJykge1xuICAgICAgYWRkUGF0aFJlZihub2RlKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KClcbiAgLy8gRGVkdXBsaWNhdGUgZXF1aXZhbGVudCByZWZlcmVuY2VzIGZvdW5kIG11bHRpcGxlIHRpbWVzIGluIHRyYXZlcnNhbC5cbiAgcmV0dXJuIHJlZnMuZmlsdGVyKChyKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gYCR7ci5wcmVmaXh9OiR7ci5zZWdtZW50cy5qb2luKCcuJyl9YFxuICAgIGlmIChzZWVuLmhhcyhrZXkpKSByZXR1cm4gZmFsc2VcbiAgICBzZWVuLmFkZChrZXkpXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RDb250ZXh0RnVuY3Rpb25SZWZlcmVuY2VzRnJvbUFzdE5vZGUoXG4gIGFzdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJvb3QgPSBhc3QgYXMgQXN0Tm9kZVxuICBjb25zdCByZWZzID0gbmV3IFNldDxzdHJpbmc+KClcblxuICB2aXNpdEFzdChyb290LCAobm9kZSkgPT4ge1xuICAgIC8vIEZ1bmN0aW9uIHJlZnMgYXJlIHByb2NlZHVyZXMgdGhhdCByZXNvbHZlIHRvIHJvb3QtcGF0aCBjYWxscy5cbiAgICBpZiAoZ2V0QXN0VHlwZShub2RlKSA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0FzdE5vZGUobm9kZS5wcm9jZWR1cmUpKSB7XG4gICAgICBjb25zdCBwcm9jID0gbm9kZS5wcm9jZWR1cmVcbiAgICAgIGlmIChnZXRBc3RUeXBlKHByb2MpID09PSAncGF0aCcgJiYgQXJyYXkuaXNBcnJheShwcm9jLnN0ZXBzKSAmJiBwcm9jLnN0ZXBzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gcHJvYy5zdGVwc1swXVxuICAgICAgICBjb25zdCBzZWNvbmQgPSBwcm9jLnN0ZXBzWzFdXG4gICAgICAgIC8vIE1hdGNoIGAkLjxmbk5hbWU+KC4uLilgIGFuZCBub3JtYWxpemUgdG8gYEBjdHguPGZuTmFtZT5gLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgaXNBc3ROb2RlKGZpcnN0KSAmJlxuICAgICAgICAgIGdldEFzdFR5cGUoZmlyc3QpID09PSAndmFyaWFibGUnICYmXG4gICAgICAgICAgZmlyc3QudmFsdWUgPT09ICckJyAmJlxuICAgICAgICAgIGlzQXN0Tm9kZShzZWNvbmQpICYmXG4gICAgICAgICAgZ2V0QXN0VHlwZShzZWNvbmQpID09PSAnbmFtZScgJiZcbiAgICAgICAgICB0eXBlb2Ygc2Vjb25kLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZWZzLmFkZChgQGN0eC4ke3NlY29uZC52YWx1ZX1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gQXJyYXkuZnJvbShyZWZzKVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { type z } from 'zod/v4';
2
+ export declare function validateExpression(value: string): void;
3
+ export interface ExpressionOptions {
4
+ readonly yamlConversion?: boolean;
5
+ }
6
+ export declare function convertOrExpression<T>(value: unknown, schema: z.ZodType<T>, typeName: string, options?: ExpressionOptions, yamlTypeCheck?: (yaml: unknown, expr: string) => boolean, yamlSchema?: 'yaml-1.1' | 'core'): T;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25hdGEvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFTL0Isd0JBQWdCLGtCQUFrQixDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQW9CdEQ7QUFFRCxNQUFNLFdBQVcsaUJBQWlCO0lBQ2hDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUE7Q0FDbEM7QUFRRCx3QkFBZ0IsbUJBQW1CLENBQUMsQ0FBQyxFQUNuQyxLQUFLLEVBQUUsT0FBTyxFQUNkLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUNwQixRQUFRLEVBQUUsTUFBTSxFQUNoQixPQUFPLENBQUMsRUFBRSxpQkFBaUIsRUFDM0IsYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssT0FBTyxFQUN4RCxVQUFVLENBQUMsRUFBRSxVQUFVLEdBQUcsTUFBTSxHQUMvQixDQUFDLENBa0NIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2UgYXMgcGFyc2VZYW1sIH0gZnJvbSAneWFtbCdcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gJ3pvZC92NCdcbmltcG9ydCB7IHZhbGlkYXRlSnNvbmF0YUV4cHJlc3Npb24gfSBmcm9tICcuL2V4cHJlc3Npb24uanMnXG5cbi8qKlxuICogVmFsaWRhdGVzIGV4cHJlc3Npb25zIHRoYXQgc3RhcnQgd2l0aCAnPScgYWdhaW5zdCBKU09OYXRhIHN5bnRheCBhbmQgSmlneCB2YXJpYWJsZSBwYXR0ZXJucy5cbiAqIFNraXBzIHZhbGlkYXRpb24gZm9yIG5vbi1leHByZXNzaW9ucyAobGl0ZXJhbHMgd2l0aG91dCAnPScgcHJlZml4KS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzdHJpbmcgdG8gdmFsaWRhdGUgKGV4cHJlc3Npb25zIG9yIGxpdGVyYWxzKVxuICogQHRocm93cyBFcnJvciBpZiBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkIG9yIGNvbnRleHQgdG9rZW5zIGRvbid0IGZvbGxvdyBwcm9wZXIgc2hhcGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRXhwcmVzc2lvbih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gIC8vIE9ubHkgdmFsaWRhdGUgZXhwcmVzc2lvbnMgKHN0YXJ0aW5nIHdpdGggPSksIHNraXAgbGl0ZXJhbHNcbiAgaWYgKCF2YWx1ZS50cmltU3RhcnQoKS5zdGFydHNXaXRoKCc9JykpIHJldHVyblxuXG4gIC8vIFVzZSB0aGUgcGFyc2VyIHRvIHZhbGlkYXRlIGFsbCBleHByZXNzaW9uc1xuICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVKc29uYXRhRXhwcmVzc2lvbih2YWx1ZSlcblxuICBpZiAoIXZhbGlkYXRpb24uaXNWYWxpZCkge1xuICAgIGlmICh2YWxpZGF0aW9uLnN5bnRheEVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGV4cHJlc3Npb24gc3ludGF4OiAke3ZhbGlkYXRpb24uc3ludGF4RXJyb3J9LiBFeHByZXNzaW9uOiAnJHt2YWx1ZX0nYCxcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKHZhbGlkYXRpb24uaW52YWxpZENvbnRleHRQYXRocyAmJiB2YWxpZGF0aW9uLmludmFsaWRDb250ZXh0UGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW52YWxpZFRva2VuID0gdmFsaWRhdGlvbi5pbnZhbGlkQ29udGV4dFBhdGhzWzBdXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIEpTT05hdGEgZXhwcmVzc2lvbjogJyR7aW52YWxpZFRva2VufScuIE11c3QgZm9sbG93IEppZ3ggdmFyaWFibGUgcGF0dGVybnMuIFNlZSBodHRwczovL2RvY3MuamlneC5jb20vZXhhbXBsZXMvamlneC12YXJpYWJsZXNgLFxuICAgICAgKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4cHJlc3Npb25PcHRpb25zIHtcbiAgcmVhZG9ubHkgeWFtbENvbnZlcnNpb24/OiBib29sZWFuXG59XG5cbi8qKlxuICogR2VuZXJpYyB1dGlsaXR5IGZvciBjb252ZXJ0aW5nIHZhbHVlcyB0byAqT3JFeHByZXNzaW9uIHR5cGVzIHdpdGggWUFNTCBmb2xkaW5nLlxuICogSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gc2hhcmVkIGJldHdlZW4gc2RrLmV4cHJlc3Npb24udHMgYW5kIHpvZC50eXBlcy50cy5cbiAqXG4gKiBAaW50ZXJuYWwgLSBOb3QgZXhwb3J0ZWQgZnJvbSBiYXJyZWwsIGZvciBpbnRlcm5hbCB1c2Ugb25seVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE9yRXhwcmVzc2lvbjxUPihcbiAgdmFsdWU6IHVua25vd24sXG4gIHNjaGVtYTogei5ab2RUeXBlPFQ+LFxuICB0eXBlTmFtZTogc3RyaW5nLFxuICBvcHRpb25zPzogRXhwcmVzc2lvbk9wdGlvbnMsXG4gIHlhbWxUeXBlQ2hlY2s/OiAoeWFtbDogdW5rbm93biwgZXhwcjogc3RyaW5nKSA9PiBib29sZWFuLFxuICB5YW1sU2NoZW1hPzogJ3lhbWwtMS4xJyB8ICdjb3JlJyxcbik6IFQge1xuICBjb25zdCBwYXJzZVJlc3VsdCA9IHNjaGVtYS5zYWZlUGFyc2UodmFsdWUpXG4gIGlmICghcGFyc2VSZXN1bHQuc3VjY2VzcykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7dHlwZU5hbWV9OiAke3ZhbHVlfWApXG5cbiAgY29uc3QgcGFyc2VkOiBUID0gcGFyc2VSZXN1bHQuZGF0YVxuXG4gIC8vIEVhcmx5IHJldHVybnMgZm9yIG5vbi1zdHJpbmcgZXhwcmVzc2lvbnMgb3IgZGlzYWJsZWQgWUFNTCBjb252ZXJzaW9uXG4gIGlmICh0eXBlb2YgcGFyc2VkICE9PSAnc3RyaW5nJyB8fCBwYXJzZWQgPT09ICcnKSB7XG4gICAgcmV0dXJuIHBhcnNlZFxuICB9XG5cbiAgLy8gQmFpbCBpZiBub3QgYW4gZXhwcmVzc2lvblxuICBjb25zdCBzID0gcGFyc2VkLnRyaW1TdGFydCgpXG4gIGlmICghcy5zdGFydHNXaXRoKCc9JykpIHJldHVybiBwYXJzZWRcblxuICAvLyBWYWxpZGF0ZSBleHByZXNzaW9uIHN5bnRheFxuICB2YWxpZGF0ZUV4cHJlc3Npb24ocGFyc2VkKVxuXG4gIC8vIFRPRE86IERvIHdlIGFjdHVhbGx5IG5lZWQgdGhpc1xuICBpZiAob3B0aW9ucz8ueWFtbENvbnZlcnNpb24pIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsID0gcy5zbGljZSgxKS50cmltKClcbiAgICAgIGNvbnN0IHlhbWwgPSBwYXJzZVlhbWwodmFsLCB5YW1sU2NoZW1hID8geyBzY2hlbWE6IHlhbWxTY2hlbWEgfSA6IHVuZGVmaW5lZClcblxuICAgICAgLy8gVXNlIGN1c3RvbSB0eXBlIGNoZWNrIG9yIGRlZmF1bHQgdG8gdHlwZW9mIGNoZWNrIGZvciBzdHJpbmdcbiAgICAgIGlmICh5YW1sVHlwZUNoZWNrID8geWFtbFR5cGVDaGVjayh5YW1sLCB2YWwpIDogdHlwZW9mIHlhbWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB5YW1sIGFzIFRcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIE5vdCB2YWxpZCBZQU1MLCBjb250aW51ZSB0byBleHByZXNzaW9uIHZhbGlkYXRpb25cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFyc2VkXG59XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/jsonata/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,QAAQ,CAAA;AAS/B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAoBtD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAClC;AAQD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,EACxD,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,GAC/B,CAAC,CAkCH","sourcesContent":["import { parse as parseYaml } from 'yaml'\nimport { type z } from 'zod/v4'\nimport { validateJsonataExpression } from './expression.js'\n\n/**\n * Validates expressions that start with '=' against JSONata syntax and Jigx variable patterns.\n * Skips validation for non-expressions (literals without '=' prefix).\n * @param value - The string to validate (expressions or literals)\n * @throws Error if expression syntax is invalid or context tokens don't follow proper shape\n */\nexport function validateExpression(value: string): void {\n // Only validate expressions (starting with =), skip literals\n if (!value.trimStart().startsWith('=')) return\n\n // Use the parser to validate all expressions\n const validation = validateJsonataExpression(value)\n\n if (!validation.isValid) {\n if (validation.syntaxError) {\n throw new Error(\n `Invalid expression syntax: ${validation.syntaxError}. Expression: '${value}'`,\n )\n }\n if (validation.invalidContextPaths && validation.invalidContextPaths.length > 0) {\n const invalidToken = validation.invalidContextPaths[0]\n throw new Error(\n `Invalid JSONata expression: '${invalidToken}'. Must follow Jigx variable patterns. See https://docs.jigx.com/examples/jigx-variables`,\n )\n }\n }\n}\n\nexport interface ExpressionOptions {\n readonly yamlConversion?: boolean\n}\n\n/**\n * Generic utility for converting values to *OrExpression types with YAML folding.\n * Internal implementation shared between sdk.expression.ts and zod.types.ts.\n *\n * @internal - Not exported from barrel, for internal use only\n */\nexport function convertOrExpression<T>(\n value: unknown,\n schema: z.ZodType<T>,\n typeName: string,\n options?: ExpressionOptions,\n yamlTypeCheck?: (yaml: unknown, expr: string) => boolean,\n yamlSchema?: 'yaml-1.1' | 'core',\n): T {\n const parseResult = schema.safeParse(value)\n if (!parseResult.success) throw new Error(`Invalid ${typeName}: ${value}`)\n\n const parsed: T = parseResult.data\n\n // Early returns for non-string expressions or disabled YAML conversion\n if (typeof parsed !== 'string' || parsed === '') {\n return parsed\n }\n\n // Bail if not an expression\n const s = parsed.trimStart()\n if (!s.startsWith('=')) return parsed\n\n // Validate expression syntax\n validateExpression(parsed)\n\n // TODO: Do we actually need this\n if (options?.yamlConversion) {\n try {\n const val = s.slice(1).trim()\n const yaml = parseYaml(val, yamlSchema ? { schema: yamlSchema } : undefined)\n\n // Use custom type check or default to typeof check for string\n if (yamlTypeCheck ? yamlTypeCheck(yaml, val) : typeof yaml === 'string') {\n return yaml as T\n }\n } catch {\n // Not valid YAML, continue to expression validation\n }\n }\n\n return parsed\n}\n"]}
@@ -0,0 +1,43 @@
1
+ import { parse as parseYaml } from 'yaml';
2
+ import { validateJsonataExpression } from './expression.js';
3
+ export function validateExpression(value) {
4
+ if (!value.trimStart().startsWith('='))
5
+ return;
6
+ const validation = validateJsonataExpression(value);
7
+ if (!validation.isValid) {
8
+ if (validation.syntaxError) {
9
+ throw new Error(`Invalid expression syntax: ${validation.syntaxError}. Expression: '${value}'`);
10
+ }
11
+ if (validation.invalidContextPaths && validation.invalidContextPaths.length > 0) {
12
+ const invalidToken = validation.invalidContextPaths[0];
13
+ throw new Error(`Invalid JSONata expression: '${invalidToken}'. Must follow Jigx variable patterns. See https://docs.jigx.com/examples/jigx-variables`);
14
+ }
15
+ }
16
+ }
17
+ export function convertOrExpression(value, schema, typeName, options, yamlTypeCheck, yamlSchema) {
18
+ const parseResult = schema.safeParse(value);
19
+ if (!parseResult.success)
20
+ throw new Error(`Invalid ${typeName}: ${value}`);
21
+ const parsed = parseResult.data;
22
+ if (typeof parsed !== 'string' || parsed === '') {
23
+ return parsed;
24
+ }
25
+ const s = parsed.trimStart();
26
+ if (!s.startsWith('='))
27
+ return parsed;
28
+ validateExpression(parsed);
29
+ if (options?.yamlConversion) {
30
+ try {
31
+ const val = s.slice(1).trim();
32
+ const yaml = parseYaml(val, yamlSchema ? { schema: yamlSchema } : undefined);
33
+ if (yamlTypeCheck ? yamlTypeCheck(yaml, val) : typeof yaml === 'string') {
34
+ return yaml;
35
+ }
36
+ }
37
+ catch {
38
+ // Not valid YAML, continue to expression validation
39
+ }
40
+ }
41
+ return parsed;
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uYXRhL2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssSUFBSSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFRM0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWEsRUFBUTtJQUV0RCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFNO0lBRzlDLE1BQU0sVUFBVSxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRW5ELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FDYiw4QkFBOEIsVUFBVSxDQUFDLFdBQVcsa0JBQWtCLEtBQUssR0FBRyxDQUMvRSxDQUFBO1FBQ0gsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLG1CQUFtQixJQUFJLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEYsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3RELE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0NBQWdDLFlBQVksMEZBQTBGLENBQ3ZJLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUFBLENBQ0Y7QUFZRCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLEtBQWMsRUFDZCxNQUFvQixFQUNwQixRQUFnQixFQUNoQixPQUEyQixFQUMzQixhQUF3RCxFQUN4RCxVQUFnQyxFQUM3QjtJQUNILE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFFBQVEsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBRTFFLE1BQU0sTUFBTSxHQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUE7SUFHbEMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUdELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUM1QixJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQTtJQUdyQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUcxQixJQUFJLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQzdCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7WUFHNUUsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN4RSxPQUFPLElBQVMsQ0FBQTtZQUNsQixDQUFDO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLG9EQUFvRDtRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFBO0FBQUEsQ0FDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlIGFzIHBhcnNlWWFtbCB9IGZyb20gJ3lhbWwnXG5pbXBvcnQgeyB0eXBlIHogfSBmcm9tICd6b2QvdjQnXG5pbXBvcnQgeyB2YWxpZGF0ZUpzb25hdGFFeHByZXNzaW9uIH0gZnJvbSAnLi9leHByZXNzaW9uLmpzJ1xuXG4vKipcbiAqIFZhbGlkYXRlcyBleHByZXNzaW9ucyB0aGF0IHN0YXJ0IHdpdGggJz0nIGFnYWluc3QgSlNPTmF0YSBzeW50YXggYW5kIEppZ3ggdmFyaWFibGUgcGF0dGVybnMuXG4gKiBTa2lwcyB2YWxpZGF0aW9uIGZvciBub24tZXhwcmVzc2lvbnMgKGxpdGVyYWxzIHdpdGhvdXQgJz0nIHByZWZpeCkuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc3RyaW5nIHRvIHZhbGlkYXRlIChleHByZXNzaW9ucyBvciBsaXRlcmFscylcbiAqIEB0aHJvd3MgRXJyb3IgaWYgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCBvciBjb250ZXh0IHRva2VucyBkb24ndCBmb2xsb3cgcHJvcGVyIHNoYXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUV4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAvLyBPbmx5IHZhbGlkYXRlIGV4cHJlc3Npb25zIChzdGFydGluZyB3aXRoID0pLCBza2lwIGxpdGVyYWxzXG4gIGlmICghdmFsdWUudHJpbVN0YXJ0KCkuc3RhcnRzV2l0aCgnPScpKSByZXR1cm5cblxuICAvLyBVc2UgdGhlIHBhcnNlciB0byB2YWxpZGF0ZSBhbGwgZXhwcmVzc2lvbnNcbiAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlSnNvbmF0YUV4cHJlc3Npb24odmFsdWUpXG5cbiAgaWYgKCF2YWxpZGF0aW9uLmlzVmFsaWQpIHtcbiAgICBpZiAodmFsaWRhdGlvbi5zeW50YXhFcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBleHByZXNzaW9uIHN5bnRheDogJHt2YWxpZGF0aW9uLnN5bnRheEVycm9yfS4gRXhwcmVzc2lvbjogJyR7dmFsdWV9J2AsXG4gICAgICApXG4gICAgfVxuICAgIGlmICh2YWxpZGF0aW9uLmludmFsaWRDb250ZXh0UGF0aHMgJiYgdmFsaWRhdGlvbi5pbnZhbGlkQ29udGV4dFBhdGhzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGludmFsaWRUb2tlbiA9IHZhbGlkYXRpb24uaW52YWxpZENvbnRleHRQYXRoc1swXVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBKU09OYXRhIGV4cHJlc3Npb246ICcke2ludmFsaWRUb2tlbn0nLiBNdXN0IGZvbGxvdyBKaWd4IHZhcmlhYmxlIHBhdHRlcm5zLiBTZWUgaHR0cHM6Ly9kb2NzLmppZ3guY29tL2V4YW1wbGVzL2ppZ3gtdmFyaWFibGVzYCxcbiAgICAgIClcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHByZXNzaW9uT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHlhbWxDb252ZXJzaW9uPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEdlbmVyaWMgdXRpbGl0eSBmb3IgY29udmVydGluZyB2YWx1ZXMgdG8gKk9yRXhwcmVzc2lvbiB0eXBlcyB3aXRoIFlBTUwgZm9sZGluZy5cbiAqIEludGVybmFsIGltcGxlbWVudGF0aW9uIHNoYXJlZCBiZXR3ZWVuIHNkay5leHByZXNzaW9uLnRzIGFuZCB6b2QudHlwZXMudHMuXG4gKlxuICogQGludGVybmFsIC0gTm90IGV4cG9ydGVkIGZyb20gYmFycmVsLCBmb3IgaW50ZXJuYWwgdXNlIG9ubHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRPckV4cHJlc3Npb248VD4oXG4gIHZhbHVlOiB1bmtub3duLFxuICBzY2hlbWE6IHouWm9kVHlwZTxUPixcbiAgdHlwZU5hbWU6IHN0cmluZyxcbiAgb3B0aW9ucz86IEV4cHJlc3Npb25PcHRpb25zLFxuICB5YW1sVHlwZUNoZWNrPzogKHlhbWw6IHVua25vd24sIGV4cHI6IHN0cmluZykgPT4gYm9vbGVhbixcbiAgeWFtbFNjaGVtYT86ICd5YW1sLTEuMScgfCAnY29yZScsXG4pOiBUIHtcbiAgY29uc3QgcGFyc2VSZXN1bHQgPSBzY2hlbWEuc2FmZVBhcnNlKHZhbHVlKVxuICBpZiAoIXBhcnNlUmVzdWx0LnN1Y2Nlc3MpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke3R5cGVOYW1lfTogJHt2YWx1ZX1gKVxuXG4gIGNvbnN0IHBhcnNlZDogVCA9IHBhcnNlUmVzdWx0LmRhdGFcblxuICAvLyBFYXJseSByZXR1cm5zIGZvciBub24tc3RyaW5nIGV4cHJlc3Npb25zIG9yIGRpc2FibGVkIFlBTUwgY29udmVyc2lvblxuICBpZiAodHlwZW9mIHBhcnNlZCAhPT0gJ3N0cmluZycgfHwgcGFyc2VkID09PSAnJykge1xuICAgIHJldHVybiBwYXJzZWRcbiAgfVxuXG4gIC8vIEJhaWwgaWYgbm90IGFuIGV4cHJlc3Npb25cbiAgY29uc3QgcyA9IHBhcnNlZC50cmltU3RhcnQoKVxuICBpZiAoIXMuc3RhcnRzV2l0aCgnPScpKSByZXR1cm4gcGFyc2VkXG5cbiAgLy8gVmFsaWRhdGUgZXhwcmVzc2lvbiBzeW50YXhcbiAgdmFsaWRhdGVFeHByZXNzaW9uKHBhcnNlZClcblxuICAvLyBUT0RPOiBEbyB3ZSBhY3R1YWxseSBuZWVkIHRoaXNcbiAgaWYgKG9wdGlvbnM/LnlhbWxDb252ZXJzaW9uKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHZhbCA9IHMuc2xpY2UoMSkudHJpbSgpXG4gICAgICBjb25zdCB5YW1sID0gcGFyc2VZYW1sKHZhbCwgeWFtbFNjaGVtYSA/IHsgc2NoZW1hOiB5YW1sU2NoZW1hIH0gOiB1bmRlZmluZWQpXG5cbiAgICAgIC8vIFVzZSBjdXN0b20gdHlwZSBjaGVjayBvciBkZWZhdWx0IHRvIHR5cGVvZiBjaGVjayBmb3Igc3RyaW5nXG4gICAgICBpZiAoeWFtbFR5cGVDaGVjayA/IHlhbWxUeXBlQ2hlY2soeWFtbCwgdmFsKSA6IHR5cGVvZiB5YW1sID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4geWFtbCBhcyBUXG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBOb3QgdmFsaWQgWUFNTCwgY29udGludWUgdG8gZXhwcmVzc2lvbiB2YWxpZGF0aW9uXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlZFxufVxuIl19
@@ -0,0 +1,28 @@
1
+ export type JsonataVariableValue = string | number | boolean | null;
2
+ export interface JsonataBuilderValidationIssue {
3
+ readonly scope: string;
4
+ readonly severity: 'error';
5
+ readonly contextPath: string;
6
+ readonly message: string;
7
+ }
8
+ export interface JsonataBuilderValidationResult {
9
+ readonly isValid: boolean;
10
+ readonly issues: readonly JsonataBuilderValidationIssue[];
11
+ }
12
+ export declare abstract class JsonataBuilderBase<TValue extends JsonataVariableValue = JsonataVariableValue> {
13
+ protected readonly variables: Map<string, TValue>;
14
+ protected readonly expressionBody: string;
15
+ protected constructor(body: string, variables?: Record<string, TValue>);
16
+ static extractScopeReferences(text: string): string[];
17
+ protected validateDeclaredVariables(contextPath: string): JsonataBuilderValidationIssue[];
18
+ private validateDeclaredVariablesWithAst;
19
+ protected validateSyntax(contextPath: string): JsonataBuilderValidationIssue[];
20
+ protected _validateBase(options?: {
21
+ contextPath?: string;
22
+ }): JsonataBuilderValidationResult;
23
+ protected extractScopeReferencesFromVariables(): string[];
24
+ _build(options: {
25
+ shouldReturnRawExpression: boolean;
26
+ }): string;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25hdGEvYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFBO0FBT25FLE1BQU0sV0FBVyw2QkFBNkI7SUFDNUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUE7SUFDdEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUE7SUFDMUIsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUE7SUFDNUIsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUE7Q0FDekI7QUFLRCxNQUFNLFdBQVcsOEJBQThCO0lBQzdDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFBO0lBQ3pCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyw2QkFBNkIsRUFBRSxDQUFBO0NBQzFEO0FBWUQsOEJBQXNCLGtCQUFrQixDQUN0QyxNQUFNLFNBQVMsb0JBQW9CLEdBQUcsb0JBQW9CO0lBRTFELFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDakQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFBO0lBTXpDLFNBQVMsYUFBYSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBK0JyRTtJQUtELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUVwRDtJQUtELFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLDZCQUE2QixFQUFFLENBRXhGO0lBRUQsT0FBTyxDQUFDLGdDQUFnQztJQXNFeEMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLDZCQUE2QixFQUFFLENBcUI3RTtJQU1ELFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFBRSxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxHQUFHLDhCQUE4QixDQVkxRjtJQUtELFNBQVMsQ0FBQyxtQ0FBbUMsSUFBSSxNQUFNLEVBQUUsQ0FTeEQ7SUFPRCxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQUUseUJBQXlCLEVBQUUsT0FBTyxDQUFBO0tBQUUsR0FBRyxNQUFNLENBVTlEO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHRyYWN0U2NvcGVSZWZlcmVuY2VzIGFzIGV4dHJhY3RDYW5vbmljYWxTY29wZVJlZmVyZW5jZXMgfSBmcm9tICcuL2V4cHJlc3Npb24uanMnXG5pbXBvcnQgeyBwYXJzZUpzb25hdGFBc3QsIHRyYW5zZm9ybUZvclZhbGlkYXRpb24sIHZhbGlkYXRlU3ludGF4IH0gZnJvbSAnLi9leHByZXNzaW9uLmpzJ1xuaW1wb3J0IHsgZ2V0QXN0U3RyaW5nLCBnZXRBc3RUeXBlLCBpc0FzdE5vZGUsIHZpc2l0QXN0IH0gZnJvbSAnLi9hc3QuanMnXG5cbmV4cG9ydCB0eXBlIEpzb25hdGFWYXJpYWJsZVZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGxcblxuLyoqXG4gKiBNaW5pbWFsLCBjb3JlLWxldmVsIEpTT05hdGEgdmFsaWRhdGlvbiBpc3N1ZSBlbWl0dGVkIGJ5IHtAbGluayBKc29uYXRhQnVpbGRlckJhc2V9LlxuICpcbiAqIERvbWFpbiBTREtzIGNhbiBtYXAgdGhpcyB0byByaWNoZXIgaXNzdWUgbW9kZWxzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25hdGFCdWlsZGVyVmFsaWRhdGlvbklzc3VlIHtcbiAgcmVhZG9ubHkgc2NvcGU6IHN0cmluZ1xuICByZWFkb25seSBzZXZlcml0eTogJ2Vycm9yJ1xuICByZWFkb25seSBjb250ZXh0UGF0aDogc3RyaW5nXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZ1xufVxuXG4vKipcbiAqIEJhc2UgdmFsaWRhdGlvbiByZXN1bHQgZnJvbSB7QGxpbmsgSnNvbmF0YUJ1aWxkZXJCYXNlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc29uYXRhQnVpbGRlclZhbGlkYXRpb25SZXN1bHQge1xuICByZWFkb25seSBpc1ZhbGlkOiBib29sZWFuXG4gIHJlYWRvbmx5IGlzc3VlczogcmVhZG9ubHkgSnNvbmF0YUJ1aWxkZXJWYWxpZGF0aW9uSXNzdWVbXVxufVxuXG4vKipcbiAqIFJldXNhYmxlIEpTT05hdGEgYnVpbGRlciBiYXNlIGZvciB2YXJpYWJsZS1pemVkIGV4cHJlc3Npb25zLlxuICpcbiAqIFVzZSB0aGlzIGNsYXNzIHdoZW4geW91IG5lZWQ6XG4gKiAtIGEgc3RhYmxlIGNvbnN0cnVjdG9yIGZvciBKU09OYXRhIGJvZHkgKyB2YXJpYWJsZXMsXG4gKiAtIHN5bnRheCArIHVuZGVjbGFyZWQgdmFyaWFibGUgY2hlY2tzLFxuICogLSBjb25zaXN0ZW50IG91dHB1dCBmb3JtYXR0aW5nIChgPS4uLmAgb3IgcmF3KS5cbiAqXG4gKiBFeHRlbmQgdGhpcyBpbiBkb21haW4gcGFja2FnZXMgKGUuZy4gZXhwZXJ0LXNkaykgdG8gYWRkIGRvbWFpbiBwb2xpY3kgY2hlY2tzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSnNvbmF0YUJ1aWxkZXJCYXNlPFxuICBUVmFsdWUgZXh0ZW5kcyBKc29uYXRhVmFyaWFibGVWYWx1ZSA9IEpzb25hdGFWYXJpYWJsZVZhbHVlLFxuPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSB2YXJpYWJsZXM6IE1hcDxzdHJpbmcsIFRWYWx1ZT5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGV4cHJlc3Npb25Cb2R5OiBzdHJpbmdcblxuICAvKipcbiAgICogQHBhcmFtIGJvZHkgSlNPTmF0YSBib2R5IGV4cHJlc3Npb24uIE11c3Qgbm90IHN0YXJ0IHdpdGggYD1gLlxuICAgKiBAcGFyYW0gdmFyaWFibGVzIE9wdGlvbmFsIHZhcmlhYmxlcyB1c2VkIGluc2lkZSB0aGUgYm9keSBhcyBgJG5hbWVgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJvZHk6IHN0cmluZywgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgVFZhbHVlPikge1xuICAgIGlmIChib2R5LnN0YXJ0c1dpdGgoJz0nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSlNPTmF0YSBleHByZXNzaW9uIGJvZHkgbXVzdCBub3Qgc3RhcnQgd2l0aCBcIj1cIi4gYCArXG4gICAgICAgICAgYFRoZSBcIj1cIiBwcmVmaXggaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGJ5IHRoZSBidWlsZGVyLmAsXG4gICAgICApXG4gICAgfVxuXG4gICAgdGhpcy52YXJpYWJsZXMgPSBuZXcgTWFwKClcbiAgICBjb25zdCB2YXJpYWJsZU5hbWVQYXR0ZXJuID0gL15bYS16QS1aX11bYS16QS1aMC05X10qJC9cblxuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMgPz8ge30pKSB7XG4gICAgICBpZiAoIXZhcmlhYmxlTmFtZVBhdHRlcm4udGVzdChuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgdmFyaWFibGUgbmFtZTogXCIke25hbWV9XCIuIGAgK1xuICAgICAgICAgICAgYFZhcmlhYmxlIG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBvciB1bmRlcnNjb3JlLCBgICtcbiAgICAgICAgICAgIGBmb2xsb3dlZCBieSBsZXR0ZXJzLCBkaWdpdHMsIG9yIHVuZGVyc2NvcmVzLmAsXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuc3RhcnRzV2l0aCgnPScpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgSW52YWxpZCB2YXJpYWJsZSB2YWx1ZSBmb3IgXCIke25hbWV9XCI6IFwiJHt2YWx1ZX1cIi4gYCArXG4gICAgICAgICAgICBgU3RyaW5nIHZhbHVlcyBtdXN0IG5vdCBzdGFydCB3aXRoIFwiPVwiLmAsXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgdGhpcy52YXJpYWJsZXMuc2V0KG5hbWUsIHZhbHVlKVxuICAgIH1cblxuICAgIHRoaXMuZXhwcmVzc2lvbkJvZHkgPSBib2R5XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBjYW5vbmljYWwgYGN0eC4qYCBzY29wZSByZWZlcmVuY2VzIGZyb20gYXJiaXRyYXJ5IEpTT05hdGEtbGlrZSB0ZXh0LlxuICAgKi9cbiAgc3RhdGljIGV4dHJhY3RTY29wZVJlZmVyZW5jZXModGV4dDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBleHRyYWN0Q2Fub25pY2FsU2NvcGVSZWZlcmVuY2VzKHRleHQpXG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYCR2YXJgIHJlZmVyZW5jZXMgaW4gZXhwcmVzc2lvbiBib2R5IGFyZSBkZWNsYXJlZCwgbGFtYmRhIHBhcmFtcywgb3IgbG9jYWwgYXNzaWdubWVudHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGVEZWNsYXJlZFZhcmlhYmxlcyhjb250ZXh0UGF0aDogc3RyaW5nKTogSnNvbmF0YUJ1aWxkZXJWYWxpZGF0aW9uSXNzdWVbXSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVEZWNsYXJlZFZhcmlhYmxlc1dpdGhBc3QoY29udGV4dFBhdGgpXG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRGVjbGFyZWRWYXJpYWJsZXNXaXRoQXN0KGNvbnRleHRQYXRoOiBzdHJpbmcpOiBKc29uYXRhQnVpbGRlclZhbGlkYXRpb25Jc3N1ZVtdIHtcbiAgICBjb25zdCBhc3QgPSBwYXJzZUpzb25hdGFBc3QodGhpcy5leHByZXNzaW9uQm9keSlcbiAgICBpZiAoYXN0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgc2NvcGU6IHRoaXMuZXhwcmVzc2lvbkJvZHksXG4gICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgY29udGV4dFBhdGgsXG4gICAgICAgICAgbWVzc2FnZTogJ1VuYWJsZSB0byBwYXJzZSBKU09OYXRhIGV4cHJlc3Npb24gZm9yIHZhcmlhYmxlIHZhbGlkYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cblxuICAgIGNvbnN0IGRlY2xhcmVkID0gbmV3IFNldDxzdHJpbmc+KHRoaXMudmFyaWFibGVzLmtleXMoKSlcbiAgICBjb25zdCByZWZlcmVuY2VkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgICB2aXNpdEFzdChhc3QsIChub2RlLCBwYXJlbnQsIGtleUluUGFyZW50KSA9PiB7XG4gICAgICBjb25zdCBub2RlVHlwZSA9IGdldEFzdFR5cGUobm9kZSlcblxuICAgICAgaWYgKG5vZGVUeXBlID09PSAnbGFtYmRhJyAmJiBBcnJheS5pc0FycmF5KG5vZGUuYXJndW1lbnRzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGFyZyBvZiBub2RlLmFyZ3VtZW50cykge1xuICAgICAgICAgIGlmIChpc0FzdE5vZGUoYXJnKSAmJiBnZXRBc3RUeXBlKGFyZykgPT09ICd2YXJpYWJsZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhck5hbWUgPSBnZXRBc3RTdHJpbmcoYXJnLCAndmFsdWUnKVxuICAgICAgICAgICAgaWYgKHZhck5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBkZWNsYXJlZC5hZGQodmFyTmFtZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGVUeXBlID09PSAnYmluZCcgJiYgaXNBc3ROb2RlKG5vZGUubGhzKSAmJiBnZXRBc3RUeXBlKG5vZGUubGhzKSA9PT0gJ3ZhcmlhYmxlJykge1xuICAgICAgICBjb25zdCBsaHNWYXIgPSBnZXRBc3RTdHJpbmcobm9kZS5saHMsICd2YWx1ZScpXG4gICAgICAgIGlmIChsaHNWYXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRlY2xhcmVkLmFkZChsaHNWYXIpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGVUeXBlID09PSAndmFyaWFibGUnKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IGdldEFzdFN0cmluZyhub2RlLCAndmFsdWUnKVxuICAgICAgICBpZiAodmFyaWFibGVOYW1lID09PSB1bmRlZmluZWQpIHJldHVyblxuXG4gICAgICAgIGNvbnN0IGlzQ29udGV4dFJvb3QgPSB2YXJpYWJsZU5hbWUgPT09ICcnIHx8IHZhcmlhYmxlTmFtZSA9PT0gJyQnXG4gICAgICAgIGNvbnN0IGlzRnVuY3Rpb25Qcm9jZWR1cmUgPVxuICAgICAgICAgIHBhcmVudCAhPT0gbnVsbCAmJiBnZXRBc3RUeXBlKHBhcmVudCkgPT09ICdmdW5jdGlvbicgJiYga2V5SW5QYXJlbnQgPT09ICdwcm9jZWR1cmUnXG4gICAgICAgIGlmICghaXNDb250ZXh0Um9vdCAmJiAhaXNGdW5jdGlvblByb2NlZHVyZSkge1xuICAgICAgICAgIHJlZmVyZW5jZWQuYWRkKHZhcmlhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCB1bmRlY2xhcmVkID0gQXJyYXkuZnJvbShyZWZlcmVuY2VkKS5maWx0ZXIoKG5hbWUpID0+ICFkZWNsYXJlZC5oYXMobmFtZSkpXG4gICAgaWYgKHVuZGVjbGFyZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICBjb25zdCB2YXJpYWJsZUxpc3QgPSB1bmRlY2xhcmVkLmpvaW4oJywgJylcbiAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgIGBKU09OYXRhIGV4cHJlc3Npb24gcmVmZXJlbmNlcyB1bmRlY2xhcmVkIHZhcmlhYmxlczogJHt2YXJpYWJsZUxpc3R9LiBgICtcbiAgICAgIGBEZWNsYXJlIHRoZW0gaW4gdGhlIHZhcmlhYmxlcyBtYXAgcGFzc2VkIHRvIHRoZSBidWlsZGVyIGNvbnN0cnVjdG9yLmBcblxuICAgIHJldHVybiB1bmRlY2xhcmVkLm1hcCgobmFtZSkgPT4gKHtcbiAgICAgIHNjb3BlOiBgJCR7bmFtZX1gLFxuICAgICAgc2V2ZXJpdHk6ICdlcnJvcicgYXMgY29uc3QsXG4gICAgICBjb250ZXh0UGF0aCxcbiAgICAgIG1lc3NhZ2UsXG4gICAgfSkpXG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgSlNPTmF0YSBzeW50YXggb2YgZXhwcmVzc2lvbiBib2R5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlU3ludGF4KGNvbnRleHRQYXRoOiBzdHJpbmcpOiBKc29uYXRhQnVpbGRlclZhbGlkYXRpb25Jc3N1ZVtdIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHRyYW5zZm9ybUZvclZhbGlkYXRpb24odGhpcy5leHByZXNzaW9uQm9keSlcbiAgICBsZXQgc3ludGF4VmFsaWRhdGlvbiA9IHZhbGlkYXRlU3ludGF4KHRyYW5zZm9ybWVkKVxuXG4gICAgLy8gTXVsdGktc3RhdGVtZW50IEpTT05hdGEgb2Z0ZW4gcmVxdWlyZXMgZXhwbGljaXQgYmxvY2sgd3JhcHBpbmcuXG4gICAgaWYgKCFzeW50YXhWYWxpZGF0aW9uLmlzVmFsaWQpIHtcbiAgICAgIGNvbnN0IHdyYXBwZWQgPSB0cmFuc2Zvcm1Gb3JWYWxpZGF0aW9uKGAoJHt0aGlzLmV4cHJlc3Npb25Cb2R5fSlgKVxuICAgICAgc3ludGF4VmFsaWRhdGlvbiA9IHZhbGlkYXRlU3ludGF4KHdyYXBwZWQpXG4gICAgfVxuXG4gICAgaWYgKCFzeW50YXhWYWxpZGF0aW9uLmlzVmFsaWQgJiYgc3ludGF4VmFsaWRhdGlvbi5lcnJvcikge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHNjb3BlOiB0aGlzLmV4cHJlc3Npb25Cb2R5LFxuICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgIGNvbnRleHRQYXRoLFxuICAgICAgICAgIG1lc3NhZ2U6IHN5bnRheFZhbGlkYXRpb24uZXJyb3IsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfVxuICAgIHJldHVybiBbXVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBiYXNlIHZhbGlkYXRpb24gKHN5bnRheCArIGRlY2xhcmVkIHZhcmlhYmxlcykuXG4gICAqIFN1YmNsYXNzZXMgc2hvdWxkIGNhbGwgdGhpcyBhbmQgdGhlbiBhcHBlbmQgZG9tYWluLXNwZWNpZmljIGNoZWNrcy5cbiAgICovXG4gIHByb3RlY3RlZCBfdmFsaWRhdGVCYXNlKG9wdGlvbnM/OiB7IGNvbnRleHRQYXRoPzogc3RyaW5nIH0pOiBKc29uYXRhQnVpbGRlclZhbGlkYXRpb25SZXN1bHQge1xuICAgIGNvbnN0IGNvbnRleHRQYXRoID0gb3B0aW9ucz8uY29udGV4dFBhdGggPz8gJydcbiAgICBjb25zdCBpc3N1ZXM6IEpzb25hdGFCdWlsZGVyVmFsaWRhdGlvbklzc3VlW10gPSBbXVxuXG4gICAgaWYgKCF0aGlzLmV4cHJlc3Npb25Cb2R5KSB7XG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBpc3N1ZXM6IFtdIH1cbiAgICB9XG5cbiAgICBpc3N1ZXMucHVzaCguLi50aGlzLnZhbGlkYXRlU3ludGF4KGNvbnRleHRQYXRoKSlcbiAgICBpc3N1ZXMucHVzaCguLi50aGlzLnZhbGlkYXRlRGVjbGFyZWRWYXJpYWJsZXMoY29udGV4dFBhdGgpKVxuXG4gICAgcmV0dXJuIHsgaXNWYWxpZDogaXNzdWVzLmxlbmd0aCA9PT0gMCwgaXNzdWVzIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IGNhbm9uaWNhbCBgY3R4LipgIHNjb3BlIHJlZmVyZW5jZXMgZnJvbSBzdHJpbmcgdmFyaWFibGUgdmFsdWVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGV4dHJhY3RTY29wZVJlZmVyZW5jZXNGcm9tVmFyaWFibGVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzY29wZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdGhpcy52YXJpYWJsZXMudmFsdWVzKCkpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gSnNvbmF0YUJ1aWxkZXJCYXNlLmV4dHJhY3RTY29wZVJlZmVyZW5jZXModmFsdWUpXG4gICAgICAgIGZvdW5kLmZvckVhY2goKHNjb3BlKSA9PiBzY29wZXMuYWRkKHNjb3BlKSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20oc2NvcGVzKVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGZpbmFsIGV4cHJlc3Npb24gc3RyaW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyBgPSgke2JvZHl9KWAgYnkgZGVmYXVsdCwgb3IgYCgke2JvZHl9KWAgd2hlbiBgc2hvdWxkUmV0dXJuUmF3RXhwcmVzc2lvbmAgaXMgdHJ1ZS5cbiAgICovXG4gIF9idWlsZChvcHRpb25zOiB7IHNob3VsZFJldHVyblJhd0V4cHJlc3Npb246IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBzaG91bGRSZXR1cm5SYXdFeHByZXNzaW9uIH0gPSBvcHRpb25zXG4gICAgbGV0IGpzb25hdGEgPSAnJ1xuXG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIHRoaXMudmFyaWFibGVzKSB7XG4gICAgICBqc29uYXRhICs9IGAkJHtuYW1lfSA6PSAke3ZhbHVlfTtcXG5gXG4gICAgfVxuXG4gICAganNvbmF0YSArPSB0aGlzLmV4cHJlc3Npb25Cb2R5XG4gICAgcmV0dXJuIHNob3VsZFJldHVyblJhd0V4cHJlc3Npb24gPyBgKCR7anNvbmF0YX0pYCA6IGA9KCR7anNvbmF0YX0pYFxuICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/jsonata/builder.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAOnE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAKD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,6BAA6B,EAAE,CAAA;CAC1D;AAYD,8BAAsB,kBAAkB,CACtC,MAAM,SAAS,oBAAoB,GAAG,oBAAoB;IAE1D,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAMzC,SAAS,aAAa,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EA+BrE;IAKD,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpD;IAKD,SAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,6BAA6B,EAAE,CAExF;IAED,OAAO,CAAC,gCAAgC;IAsExC,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,6BAA6B,EAAE,CAqB7E;IAMD,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,8BAA8B,CAY1F;IAKD,SAAS,CAAC,mCAAmC,IAAI,MAAM,EAAE,CASxD;IAOD,MAAM,CAAC,OAAO,EAAE;QAAE,yBAAyB,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAU9D;CACF","sourcesContent":["import { extractScopeReferences as extractCanonicalScopeReferences } from './expression.js'\nimport { parseJsonataAst, transformForValidation, validateSyntax } from './expression.js'\nimport { getAstString, getAstType, isAstNode, visitAst } from './ast.js'\n\nexport type JsonataVariableValue = string | number | boolean | null\n\n/**\n * Minimal, core-level JSONata validation issue emitted by {@link JsonataBuilderBase}.\n *\n * Domain SDKs can map this to richer issue models.\n */\nexport interface JsonataBuilderValidationIssue {\n readonly scope: string\n readonly severity: 'error'\n readonly contextPath: string\n readonly message: string\n}\n\n/**\n * Base validation result from {@link JsonataBuilderBase}.\n */\nexport interface JsonataBuilderValidationResult {\n readonly isValid: boolean\n readonly issues: readonly JsonataBuilderValidationIssue[]\n}\n\n/**\n * Reusable JSONata builder base for variable-ized expressions.\n *\n * Use this class when you need:\n * - a stable constructor for JSONata body + variables,\n * - syntax + undeclared variable checks,\n * - consistent output formatting (`=...` or raw).\n *\n * Extend this in domain packages (e.g. expert-sdk) to add domain policy checks.\n */\nexport abstract class JsonataBuilderBase<\n TValue extends JsonataVariableValue = JsonataVariableValue,\n> {\n protected readonly variables: Map<string, TValue>\n protected readonly expressionBody: string\n\n /**\n * @param body JSONata body expression. Must not start with `=`.\n * @param variables Optional variables used inside the body as `$name`.\n */\n protected constructor(body: string, variables?: Record<string, TValue>) {\n if (body.startsWith('=')) {\n throw new Error(\n `JSONata expression body must not start with \"=\". ` +\n `The \"=\" prefix is handled internally by the builder.`,\n )\n }\n\n this.variables = new Map()\n const variableNamePattern = /^[a-zA-Z_][a-zA-Z0-9_]*$/\n\n for (const [name, value] of Object.entries(variables ?? {})) {\n if (!variableNamePattern.test(name)) {\n throw new Error(\n `Invalid variable name: \"${name}\". ` +\n `Variable names must start with a letter or underscore, ` +\n `followed by letters, digits, or underscores.`,\n )\n }\n\n if (typeof value === 'string' && value.startsWith('=')) {\n throw new Error(\n `Invalid variable value for \"${name}\": \"${value}\". ` +\n `String values must not start with \"=\".`,\n )\n }\n\n this.variables.set(name, value)\n }\n\n this.expressionBody = body\n }\n\n /**\n * Extract canonical `ctx.*` scope references from arbitrary JSONata-like text.\n */\n static extractScopeReferences(text: string): string[] {\n return extractCanonicalScopeReferences(text)\n }\n\n /**\n * Validate `$var` references in expression body are declared, lambda params, or local assignments.\n */\n protected validateDeclaredVariables(contextPath: string): JsonataBuilderValidationIssue[] {\n return this.validateDeclaredVariablesWithAst(contextPath)\n }\n\n private validateDeclaredVariablesWithAst(contextPath: string): JsonataBuilderValidationIssue[] {\n const ast = parseJsonataAst(this.expressionBody)\n if (ast === null) {\n return [\n {\n scope: this.expressionBody,\n severity: 'error',\n contextPath,\n message: 'Unable to parse JSONata expression for variable validation',\n },\n ]\n }\n\n const declared = new Set<string>(this.variables.keys())\n const referenced = new Set<string>()\n visitAst(ast, (node, parent, keyInParent) => {\n const nodeType = getAstType(node)\n\n if (nodeType === 'lambda' && Array.isArray(node.arguments)) {\n for (const arg of node.arguments) {\n if (isAstNode(arg) && getAstType(arg) === 'variable') {\n const varName = getAstString(arg, 'value')\n if (varName !== undefined) {\n declared.add(varName)\n }\n }\n }\n }\n\n if (nodeType === 'bind' && isAstNode(node.lhs) && getAstType(node.lhs) === 'variable') {\n const lhsVar = getAstString(node.lhs, 'value')\n if (lhsVar !== undefined) {\n declared.add(lhsVar)\n }\n }\n\n if (nodeType === 'variable') {\n const variableName = getAstString(node, 'value')\n if (variableName === undefined) return\n\n const isContextRoot = variableName === '' || variableName === '$'\n const isFunctionProcedure =\n parent !== null && getAstType(parent) === 'function' && keyInParent === 'procedure'\n if (!isContextRoot && !isFunctionProcedure) {\n referenced.add(variableName)\n }\n }\n })\n\n const undeclared = Array.from(referenced).filter((name) => !declared.has(name))\n if (undeclared.length === 0) {\n return []\n }\n\n const variableList = undeclared.join(', ')\n const message =\n `JSONata expression references undeclared variables: ${variableList}. ` +\n `Declare them in the variables map passed to the builder constructor.`\n\n return undeclared.map((name) => ({\n scope: `$${name}`,\n severity: 'error' as const,\n contextPath,\n message,\n }))\n }\n\n /**\n * Validate JSONata syntax of expression body.\n */\n protected validateSyntax(contextPath: string): JsonataBuilderValidationIssue[] {\n const transformed = transformForValidation(this.expressionBody)\n let syntaxValidation = validateSyntax(transformed)\n\n // Multi-statement JSONata often requires explicit block wrapping.\n if (!syntaxValidation.isValid) {\n const wrapped = transformForValidation(`(${this.expressionBody})`)\n syntaxValidation = validateSyntax(wrapped)\n }\n\n if (!syntaxValidation.isValid && syntaxValidation.error) {\n return [\n {\n scope: this.expressionBody,\n severity: 'error',\n contextPath,\n message: syntaxValidation.error,\n },\n ]\n }\n return []\n }\n\n /**\n * Run base validation (syntax + declared variables).\n * Subclasses should call this and then append domain-specific checks.\n */\n protected _validateBase(options?: { contextPath?: string }): JsonataBuilderValidationResult {\n const contextPath = options?.contextPath ?? ''\n const issues: JsonataBuilderValidationIssue[] = []\n\n if (!this.expressionBody) {\n return { isValid: true, issues: [] }\n }\n\n issues.push(...this.validateSyntax(contextPath))\n issues.push(...this.validateDeclaredVariables(contextPath))\n\n return { isValid: issues.length === 0, issues }\n }\n\n /**\n * Extract canonical `ctx.*` scope references from string variable values.\n */\n protected extractScopeReferencesFromVariables(): string[] {\n const scopes = new Set<string>()\n for (const value of this.variables.values()) {\n if (typeof value === 'string') {\n const found = JsonataBuilderBase.extractScopeReferences(value)\n found.forEach((scope) => scopes.add(scope))\n }\n }\n return Array.from(scopes)\n }\n\n /**\n * Build final expression string.\n *\n * @returns `=(${body})` by default, or `(${body})` when `shouldReturnRawExpression` is true.\n */\n _build(options: { shouldReturnRawExpression: boolean }): string {\n const { shouldReturnRawExpression } = options\n let jsonata = ''\n\n for (const [name, value] of this.variables) {\n jsonata += `$${name} := ${value};\\n`\n }\n\n jsonata += this.expressionBody\n return shouldReturnRawExpression ? `(${jsonata})` : `=(${jsonata})`\n }\n}\n"]}
@@ -0,0 +1,140 @@
1
+ import { extractScopeReferences as extractCanonicalScopeReferences } from './expression.js';
2
+ import { parseJsonataAst, transformForValidation, validateSyntax } from './expression.js';
3
+ import { getAstString, getAstType, isAstNode, visitAst } from './ast.js';
4
+ export class JsonataBuilderBase {
5
+ variables;
6
+ expressionBody;
7
+ constructor(body, variables) {
8
+ if (body.startsWith('=')) {
9
+ throw new Error(`JSONata expression body must not start with "=". ` +
10
+ `The "=" prefix is handled internally by the builder.`);
11
+ }
12
+ this.variables = new Map();
13
+ const variableNamePattern = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
14
+ for (const [name, value] of Object.entries(variables ?? {})) {
15
+ if (!variableNamePattern.test(name)) {
16
+ throw new Error(`Invalid variable name: "${name}". ` +
17
+ `Variable names must start with a letter or underscore, ` +
18
+ `followed by letters, digits, or underscores.`);
19
+ }
20
+ if (typeof value === 'string' && value.startsWith('=')) {
21
+ throw new Error(`Invalid variable value for "${name}": "${value}". ` +
22
+ `String values must not start with "=".`);
23
+ }
24
+ this.variables.set(name, value);
25
+ }
26
+ this.expressionBody = body;
27
+ }
28
+ static extractScopeReferences(text) {
29
+ return extractCanonicalScopeReferences(text);
30
+ }
31
+ validateDeclaredVariables(contextPath) {
32
+ return this.validateDeclaredVariablesWithAst(contextPath);
33
+ }
34
+ validateDeclaredVariablesWithAst(contextPath) {
35
+ const ast = parseJsonataAst(this.expressionBody);
36
+ if (ast === null) {
37
+ return [
38
+ {
39
+ scope: this.expressionBody,
40
+ severity: 'error',
41
+ contextPath,
42
+ message: 'Unable to parse JSONata expression for variable validation',
43
+ },
44
+ ];
45
+ }
46
+ const declared = new Set(this.variables.keys());
47
+ const referenced = new Set();
48
+ visitAst(ast, (node, parent, keyInParent) => {
49
+ const nodeType = getAstType(node);
50
+ if (nodeType === 'lambda' && Array.isArray(node.arguments)) {
51
+ for (const arg of node.arguments) {
52
+ if (isAstNode(arg) && getAstType(arg) === 'variable') {
53
+ const varName = getAstString(arg, 'value');
54
+ if (varName !== undefined) {
55
+ declared.add(varName);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ if (nodeType === 'bind' && isAstNode(node.lhs) && getAstType(node.lhs) === 'variable') {
61
+ const lhsVar = getAstString(node.lhs, 'value');
62
+ if (lhsVar !== undefined) {
63
+ declared.add(lhsVar);
64
+ }
65
+ }
66
+ if (nodeType === 'variable') {
67
+ const variableName = getAstString(node, 'value');
68
+ if (variableName === undefined)
69
+ return;
70
+ const isContextRoot = variableName === '' || variableName === '$';
71
+ const isFunctionProcedure = parent !== null && getAstType(parent) === 'function' && keyInParent === 'procedure';
72
+ if (!isContextRoot && !isFunctionProcedure) {
73
+ referenced.add(variableName);
74
+ }
75
+ }
76
+ });
77
+ const undeclared = Array.from(referenced).filter((name) => !declared.has(name));
78
+ if (undeclared.length === 0) {
79
+ return [];
80
+ }
81
+ const variableList = undeclared.join(', ');
82
+ const message = `JSONata expression references undeclared variables: ${variableList}. ` +
83
+ `Declare them in the variables map passed to the builder constructor.`;
84
+ return undeclared.map((name) => ({
85
+ scope: `$${name}`,
86
+ severity: 'error',
87
+ contextPath,
88
+ message,
89
+ }));
90
+ }
91
+ validateSyntax(contextPath) {
92
+ const transformed = transformForValidation(this.expressionBody);
93
+ let syntaxValidation = validateSyntax(transformed);
94
+ if (!syntaxValidation.isValid) {
95
+ const wrapped = transformForValidation(`(${this.expressionBody})`);
96
+ syntaxValidation = validateSyntax(wrapped);
97
+ }
98
+ if (!syntaxValidation.isValid && syntaxValidation.error) {
99
+ return [
100
+ {
101
+ scope: this.expressionBody,
102
+ severity: 'error',
103
+ contextPath,
104
+ message: syntaxValidation.error,
105
+ },
106
+ ];
107
+ }
108
+ return [];
109
+ }
110
+ _validateBase(options) {
111
+ const contextPath = options?.contextPath ?? '';
112
+ const issues = [];
113
+ if (!this.expressionBody) {
114
+ return { isValid: true, issues: [] };
115
+ }
116
+ issues.push(...this.validateSyntax(contextPath));
117
+ issues.push(...this.validateDeclaredVariables(contextPath));
118
+ return { isValid: issues.length === 0, issues };
119
+ }
120
+ extractScopeReferencesFromVariables() {
121
+ const scopes = new Set();
122
+ for (const value of this.variables.values()) {
123
+ if (typeof value === 'string') {
124
+ const found = JsonataBuilderBase.extractScopeReferences(value);
125
+ found.forEach((scope) => scopes.add(scope));
126
+ }
127
+ }
128
+ return Array.from(scopes);
129
+ }
130
+ _build(options) {
131
+ const { shouldReturnRawExpression } = options;
132
+ let jsonata = '';
133
+ for (const [name, value] of this.variables) {
134
+ jsonata += `$${name} := ${value};\n`;
135
+ }
136
+ jsonata += this.expressionBody;
137
+ return shouldReturnRawExpression ? `(${jsonata})` : `=(${jsonata})`;
138
+ }
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uYXRhL2J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixJQUFJLCtCQUErQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBa0N4RSxNQUFNLE9BQWdCLGtCQUFrQjtJQUduQixTQUFTLENBQXFCO0lBQzlCLGNBQWMsQ0FBUTtJQU16QyxZQUFzQixJQUFZLEVBQUUsU0FBa0MsRUFBRTtRQUN0RSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksS0FBSyxDQUNiLG1EQUFtRDtnQkFDakQsc0RBQXNELENBQ3pELENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQzFCLE1BQU0sbUJBQW1CLEdBQUcsMEJBQTBCLENBQUE7UUFFdEQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksS0FBSyxDQUNiLDJCQUEyQixJQUFJLEtBQUs7b0JBQ2xDLHlEQUF5RDtvQkFDekQsOENBQThDLENBQ2pELENBQUE7WUFDSCxDQUFDO1lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxH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QUssUUFBUSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUM5RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDN0MsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFBQSxDQUMxQjtJQU9ELE1BQU0sQ0FBQyxPQUErQyxFQUFVO1FBQzlELE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUM3QyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFaEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQyxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUE7UUFDdEMsQ0FBQztRQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFBO1FBQzlCLE9BQU8seUJBQXlCLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxHQUFHLENBQUE7SUFBQSxDQUNwRTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0cmFjdFNjb3BlUmVmZXJlbmNlcyBhcyBleHRyYWN0Q2Fub25pY2FsU2NvcGVSZWZlcmVuY2VzIH0gZnJvbSAnLi9leHByZXNzaW9uLmpzJ1xuaW1wb3J0IHsgcGFyc2VKc29uYXRhQXN0LCB0cmFuc2Zvcm1Gb3JWYWxpZGF0aW9uLCB2YWxpZGF0ZVN5bnRheCB9IGZyb20gJy4vZXhwcmVzc2lvbi5qcydcbmltcG9ydCB7IGdldEFzdFN0cmluZywgZ2V0QXN0VHlwZSwgaXNBc3ROb2RlLCB2aXNpdEFzdCB9IGZyb20gJy4vYXN0LmpzJ1xuXG5leHBvcnQgdHlwZSBKc29uYXRhVmFyaWFibGVWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsXG5cbi8qKlxuICogTWluaW1hbCwgY29yZS1sZXZlbCBKU09OYXRhIHZhbGlkYXRpb24gaXNzdWUgZW1pdHRlZCBieSB7QGxpbmsgSnNvbmF0YUJ1aWxkZXJCYXNlfS5cbiAqXG4gKiBEb21haW4gU0RLcyBjYW4gbWFwIHRoaXMgdG8gcmljaGVyIGlzc3VlIG1vZGVscy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc29uYXRhQnVpbGRlclZhbGlkYXRpb25Jc3N1ZSB7XG4gIHJlYWRvbmx5IHNjb3BlOiBzdHJpbmdcbiAgcmVhZG9ubHkgc2V2ZXJpdHk6ICdlcnJvcidcbiAgcmVhZG9ubHkgY29udGV4dFBhdGg6IHN0cmluZ1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBCYXNlIHZhbGlkYXRpb24gcmVzdWx0IGZyb20ge0BsaW5rIEpzb25hdGFCdWlsZGVyQmFzZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbmF0YUJ1aWxkZXJWYWxpZGF0aW9uUmVzdWx0IHtcbiAgcmVhZG9ubHkgaXNWYWxpZDogYm9vbGVhblxuICByZWFkb25seSBpc3N1ZXM6IHJlYWRvbmx5IEpzb25hdGFCdWlsZGVyVmFsaWRhdGlvbklzc3VlW11cbn1cblxuLyoqXG4gKiBSZXVzYWJsZSBKU09OYXRhIGJ1aWxkZXIgYmFzZSBmb3IgdmFyaWFibGUtaXplZCBleHByZXNzaW9ucy5cbiAqXG4gKiBVc2UgdGhpcyBjbGFzcyB3aGVuIHlvdSBuZWVkOlxuICogLSBhIHN0YWJsZSBjb25zdHJ1Y3RvciBmb3IgSlNPTmF0YSBib2R5ICsgdmFyaWFibGVzLFxuICogLSBzeW50YXggKyB1bmRlY2xhcmVkIHZhcmlhYmxlIGNoZWNrcyxcbiAqIC0gY29uc2lzdGVudCBvdXRwdXQgZm9ybWF0dGluZyAoYD0uLi5gIG9yIHJhdykuXG4gKlxuICogRXh0ZW5kIHRoaXMgaW4gZG9tYWluIHBhY2thZ2VzIChlLmcuIGV4cGVydC1zZGspIHRvIGFkZCBkb21haW4gcG9saWN5IGNoZWNrcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEpzb25hdGFCdWlsZGVyQmFzZTxcbiAgVFZhbHVlIGV4dGVuZHMgSnNvbmF0YVZhcmlhYmxlVmFsdWUgPSBKc29uYXRhVmFyaWFibGVWYWx1ZSxcbj4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmFyaWFibGVzOiBNYXA8c3RyaW5nLCBUVmFsdWU+XG4gIHByb3RlY3RlZCByZWFkb25seSBleHByZXNzaW9uQm9keTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEBwYXJhbSBib2R5IEpTT05hdGEgYm9keSBleHByZXNzaW9uLiBNdXN0IG5vdCBzdGFydCB3aXRoIGA9YC5cbiAgICogQHBhcmFtIHZhcmlhYmxlcyBPcHRpb25hbCB2YXJpYWJsZXMgdXNlZCBpbnNpZGUgdGhlIGJvZHkgYXMgYCRuYW1lYC5cbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihib2R5OiBzdHJpbmcsIHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIFRWYWx1ZT4pIHtcbiAgICBpZiAoYm9keS5zdGFydHNXaXRoKCc9JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEpTT05hdGEgZXhwcmVzc2lvbiBib2R5IG11c3Qgbm90IHN0YXJ0IHdpdGggXCI9XCIuIGAgK1xuICAgICAgICAgIGBUaGUgXCI9XCIgcHJlZml4IGlzIGhhbmRsZWQgaW50ZXJuYWxseSBieSB0aGUgYnVpbGRlci5gLFxuICAgICAgKVxuICAgIH1cblxuICAgIHRoaXMudmFyaWFibGVzID0gbmV3IE1hcCgpXG4gICAgY29uc3QgdmFyaWFibGVOYW1lUGF0dGVybiA9IC9eW2EtekEtWl9dW2EtekEtWjAtOV9dKiQvXG5cbiAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzID8/IHt9KSkge1xuICAgICAgaWYgKCF2YXJpYWJsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIHZhcmlhYmxlIG5hbWU6IFwiJHtuYW1lfVwiLiBgICtcbiAgICAgICAgICAgIGBWYXJpYWJsZSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IgdW5kZXJzY29yZSwgYCArXG4gICAgICAgICAgICBgZm9sbG93ZWQgYnkgbGV0dGVycywgZGlnaXRzLCBvciB1bmRlcnNjb3Jlcy5gLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnN0YXJ0c1dpdGgoJz0nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgdmFyaWFibGUgdmFsdWUgZm9yIFwiJHtuYW1lfVwiOiBcIiR7dmFsdWV9XCIuIGAgK1xuICAgICAgICAgICAgYFN0cmluZyB2YWx1ZXMgbXVzdCBub3Qgc3RhcnQgd2l0aCBcIj1cIi5gLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHRoaXMudmFyaWFibGVzLnNldChuYW1lLCB2YWx1ZSlcbiAgICB9XG5cbiAgICB0aGlzLmV4cHJlc3Npb25Cb2R5ID0gYm9keVxuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgY2Fub25pY2FsIGBjdHguKmAgc2NvcGUgcmVmZXJlbmNlcyBmcm9tIGFyYml0cmFyeSBKU09OYXRhLWxpa2UgdGV4dC5cbiAgICovXG4gIHN0YXRpYyBleHRyYWN0U2NvcGVSZWZlcmVuY2VzKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gZXh0cmFjdENhbm9uaWNhbFNjb3BlUmVmZXJlbmNlcyh0ZXh0KVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGAkdmFyYCByZWZlcmVuY2VzIGluIGV4cHJlc3Npb24gYm9keSBhcmUgZGVjbGFyZWQsIGxhbWJkYSBwYXJhbXMsIG9yIGxvY2FsIGFzc2lnbm1lbnRzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlRGVjbGFyZWRWYXJpYWJsZXMoY29udGV4dFBhdGg6IHN0cmluZyk6IEpzb25hdGFCdWlsZGVyVmFsaWRhdGlvbklzc3VlW10ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlRGVjbGFyZWRWYXJpYWJsZXNXaXRoQXN0KGNvbnRleHRQYXRoKVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlY2xhcmVkVmFyaWFibGVzV2l0aEFzdChjb250ZXh0UGF0aDogc3RyaW5nKTogSnNvbmF0YUJ1aWxkZXJWYWxpZGF0aW9uSXNzdWVbXSB7XG4gICAgY29uc3QgYXN0ID0gcGFyc2VKc29uYXRhQXN0KHRoaXMuZXhwcmVzc2lvbkJvZHkpXG4gICAgaWYgKGFzdCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHNjb3BlOiB0aGlzLmV4cHJlc3Npb25Cb2R5LFxuICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgIGNvbnRleHRQYXRoLFxuICAgICAgICAgIG1lc3NhZ2U6ICdVbmFibGUgdG8gcGFyc2UgSlNPTmF0YSBleHByZXNzaW9uIGZvciB2YXJpYWJsZSB2YWxpZGF0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9XG5cbiAgICBjb25zdCBkZWNsYXJlZCA9IG5ldyBTZXQ8c3RyaW5nPih0aGlzLnZhcmlhYmxlcy5rZXlzKCkpXG4gICAgY29uc3QgcmVmZXJlbmNlZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gICAgdmlzaXRBc3QoYXN0LCAobm9kZSwgcGFyZW50LCBrZXlJblBhcmVudCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZVR5cGUgPSBnZXRBc3RUeXBlKG5vZGUpXG5cbiAgICAgIGlmIChub2RlVHlwZSA9PT0gJ2xhbWJkYScgJiYgQXJyYXkuaXNBcnJheShub2RlLmFyZ3VtZW50cykpIHtcbiAgICAgICAgZm9yIChjb25zdCBhcmcgb2Ygbm9kZS5hcmd1bWVudHMpIHtcbiAgICAgICAgICBpZiAoaXNBc3ROb2RlKGFyZykgJiYgZ2V0QXN0VHlwZShhcmcpID09PSAndmFyaWFibGUnKSB7XG4gICAgICAgICAgICBjb25zdCB2YXJOYW1lID0gZ2V0QXN0U3RyaW5nKGFyZywgJ3ZhbHVlJylcbiAgICAgICAgICAgIGlmICh2YXJOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgZGVjbGFyZWQuYWRkKHZhck5hbWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlVHlwZSA9PT0gJ2JpbmQnICYmIGlzQXN0Tm9kZShub2RlLmxocykgJiYgZ2V0QXN0VHlwZShub2RlLmxocykgPT09ICd2YXJpYWJsZScpIHtcbiAgICAgICAgY29uc3QgbGhzVmFyID0gZ2V0QXN0U3RyaW5nKG5vZGUubGhzLCAndmFsdWUnKVxuICAgICAgICBpZiAobGhzVmFyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkZWNsYXJlZC5hZGQobGhzVmFyKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlVHlwZSA9PT0gJ3ZhcmlhYmxlJykge1xuICAgICAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSBnZXRBc3RTdHJpbmcobm9kZSwgJ3ZhbHVlJylcbiAgICAgICAgaWYgKHZhcmlhYmxlTmFtZSA9PT0gdW5kZWZpbmVkKSByZXR1cm5cblxuICAgICAgICBjb25zdCBpc0NvbnRleHRSb290ID0gdmFyaWFibGVOYW1lID09PSAnJyB8fCB2YXJpYWJsZU5hbWUgPT09ICckJ1xuICAgICAgICBjb25zdCBpc0Z1bmN0aW9uUHJvY2VkdXJlID1cbiAgICAgICAgICBwYXJlbnQgIT09IG51bGwgJiYgZ2V0QXN0VHlwZShwYXJlbnQpID09PSAnZnVuY3Rpb24nICYmIGtleUluUGFyZW50ID09PSAncHJvY2VkdXJlJ1xuICAgICAgICBpZiAoIWlzQ29udGV4dFJvb3QgJiYgIWlzRnVuY3Rpb25Qcm9jZWR1cmUpIHtcbiAgICAgICAgICByZWZlcmVuY2VkLmFkZCh2YXJpYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgdW5kZWNsYXJlZCA9IEFycmF5LmZyb20ocmVmZXJlbmNlZCkuZmlsdGVyKChuYW1lKSA9PiAhZGVjbGFyZWQuaGFzKG5hbWUpKVxuICAgIGlmICh1bmRlY2xhcmVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgY29uc3QgdmFyaWFibGVMaXN0ID0gdW5kZWNsYXJlZC5qb2luKCcsICcpXG4gICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICBgSlNPTmF0YSBleHByZXNzaW9uIHJlZmVyZW5jZXMgdW5kZWNsYXJlZCB2YXJpYWJsZXM6ICR7dmFyaWFibGVMaXN0fS4gYCArXG4gICAgICBgRGVjbGFyZSB0aGVtIGluIHRoZSB2YXJpYWJsZXMgbWFwIHBhc3NlZCB0byB0aGUgYnVpbGRlciBjb25zdHJ1Y3Rvci5gXG5cbiAgICByZXR1cm4gdW5kZWNsYXJlZC5tYXAoKG5hbWUpID0+ICh7XG4gICAgICBzY29wZTogYCQke25hbWV9YCxcbiAgICAgIHNldmVyaXR5OiAnZXJyb3InIGFzIGNvbnN0LFxuICAgICAgY29udGV4dFBhdGgsXG4gICAgICBtZXNzYWdlLFxuICAgIH0pKVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIEpTT05hdGEgc3ludGF4IG9mIGV4cHJlc3Npb24gYm9keS5cbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVN5bnRheChjb250ZXh0UGF0aDogc3RyaW5nKTogSnNvbmF0YUJ1aWxkZXJWYWxpZGF0aW9uSXNzdWVbXSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWQgPSB0cmFuc2Zvcm1Gb3JWYWxpZGF0aW9uKHRoaXMuZXhwcmVzc2lvbkJvZHkpXG4gICAgbGV0IHN5bnRheFZhbGlkYXRpb24gPSB2YWxpZGF0ZVN5bnRheCh0cmFuc2Zvcm1lZClcblxuICAgIC8vIE11bHRpLXN0YXRlbWVudCBKU09OYXRhIG9mdGVuIHJlcXVpcmVzIGV4cGxpY2l0IGJsb2NrIHdyYXBwaW5nLlxuICAgIGlmICghc3ludGF4VmFsaWRhdGlvbi5pc1ZhbGlkKSB7XG4gICAgICBjb25zdCB3cmFwcGVkID0gdHJhbnNmb3JtRm9yVmFsaWRhdGlvbihgKCR7dGhpcy5leHByZXNzaW9uQm9keX0pYClcbiAgICAgIHN5bnRheFZhbGlkYXRpb24gPSB2YWxpZGF0ZVN5bnRheCh3cmFwcGVkKVxuICAgIH1cblxuICAgIGlmICghc3ludGF4VmFsaWRhdGlvbi5pc1ZhbGlkICYmIHN5bnRheFZhbGlkYXRpb24uZXJyb3IpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzY29wZTogdGhpcy5leHByZXNzaW9uQm9keSxcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICBjb250ZXh0UGF0aCxcbiAgICAgICAgICBtZXNzYWdlOiBzeW50YXhWYWxpZGF0aW9uLmVycm9yLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gYmFzZSB2YWxpZGF0aW9uIChzeW50YXggKyBkZWNsYXJlZCB2YXJpYWJsZXMpLlxuICAgKiBTdWJjbGFzc2VzIHNob3VsZCBjYWxsIHRoaXMgYW5kIHRoZW4gYXBwZW5kIGRvbWFpbi1zcGVjaWZpYyBjaGVja3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgX3ZhbGlkYXRlQmFzZShvcHRpb25zPzogeyBjb250ZXh0UGF0aD86IHN0cmluZyB9KTogSnNvbmF0YUJ1aWxkZXJWYWxpZGF0aW9uUmVzdWx0IHtcbiAgICBjb25zdCBjb250ZXh0UGF0aCA9IG9wdGlvbnM/LmNvbnRleHRQYXRoID8/ICcnXG4gICAgY29uc3QgaXNzdWVzOiBKc29uYXRhQnVpbGRlclZhbGlkYXRpb25Jc3N1ZVtdID0gW11cblxuICAgIGlmICghdGhpcy5leHByZXNzaW9uQm9keSkge1xuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgaXNzdWVzOiBbXSB9XG4gICAgfVxuXG4gICAgaXNzdWVzLnB1c2goLi4udGhpcy52YWxpZGF0ZVN5bnRheChjb250ZXh0UGF0aCkpXG4gICAgaXNzdWVzLnB1c2goLi4udGhpcy52YWxpZGF0ZURlY2xhcmVkVmFyaWFibGVzKGNvbnRleHRQYXRoKSlcblxuICAgIHJldHVybiB7IGlzVmFsaWQ6IGlzc3Vlcy5sZW5ndGggPT09IDAsIGlzc3VlcyB9XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBjYW5vbmljYWwgYGN0eC4qYCBzY29wZSByZWZlcmVuY2VzIGZyb20gc3RyaW5nIHZhcmlhYmxlIHZhbHVlcy5cbiAgICovXG4gIHByb3RlY3RlZCBleHRyYWN0U2NvcGVSZWZlcmVuY2VzRnJvbVZhcmlhYmxlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2NvcGVzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHRoaXMudmFyaWFibGVzLnZhbHVlcygpKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBmb3VuZCA9IEpzb25hdGFCdWlsZGVyQmFzZS5leHRyYWN0U2NvcGVSZWZlcmVuY2VzKHZhbHVlKVxuICAgICAgICBmb3VuZC5mb3JFYWNoKChzY29wZSkgPT4gc2NvcGVzLmFkZChzY29wZSkpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKHNjb3BlcylcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBmaW5hbCBleHByZXNzaW9uIHN0cmluZy5cbiAgICpcbiAgICogQHJldHVybnMgYD0oJHtib2R5fSlgIGJ5IGRlZmF1bHQsIG9yIGAoJHtib2R5fSlgIHdoZW4gYHNob3VsZFJldHVyblJhd0V4cHJlc3Npb25gIGlzIHRydWUuXG4gICAqL1xuICBfYnVpbGQob3B0aW9uczogeyBzaG91bGRSZXR1cm5SYXdFeHByZXNzaW9uOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgc2hvdWxkUmV0dXJuUmF3RXhwcmVzc2lvbiB9ID0gb3B0aW9uc1xuICAgIGxldCBqc29uYXRhID0gJydcblxuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiB0aGlzLnZhcmlhYmxlcykge1xuICAgICAganNvbmF0YSArPSBgJCR7bmFtZX0gOj0gJHt2YWx1ZX07XFxuYFxuICAgIH1cblxuICAgIGpzb25hdGEgKz0gdGhpcy5leHByZXNzaW9uQm9keVxuICAgIHJldHVybiBzaG91bGRSZXR1cm5SYXdFeHByZXNzaW9uID8gYCgke2pzb25hdGF9KWAgOiBgPSgke2pzb25hdGF9KWBcbiAgfVxufVxuIl19