@vertigis/workflow 5.37.1 → 5.38.1

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 (382) hide show
  1. package/Collections.js +1 -1
  2. package/Hooks.d.ts +2 -2
  3. package/Hooks.js +1 -1
  4. package/IActivityHandler.d.ts +4 -4
  5. package/TemplateUtils.d.ts +1 -1
  6. package/activities/app/GetApplicationData.d.ts +1 -1
  7. package/activities/app/GetApplicationInfo.d.ts +1 -1
  8. package/activities/app/GetUserInfo.d.ts +1 -1
  9. package/activities/app/PublishEvent.d.ts +1 -1
  10. package/activities/app/RunCommand.d.ts +1 -1
  11. package/activities/app/RunOperation.d.ts +1 -1
  12. package/activities/app/SetApplicationData.d.ts +1 -1
  13. package/activities/arcgis/AddAttachment.d.ts +1 -1
  14. package/activities/arcgis/AddFeatureLayer.d.ts +1 -1
  15. package/activities/arcgis/AddFeatures.d.ts +2 -2
  16. package/activities/arcgis/AddGraphics.d.ts +1 -1
  17. package/activities/arcgis/ArcadeScript.d.ts +1 -1
  18. package/activities/arcgis/AreaEngineTask.d.ts +1 -1
  19. package/activities/arcgis/BufferEngineTask.d.ts +1 -1
  20. package/activities/arcgis/BufferServiceTask.d.ts +1 -1
  21. package/activities/arcgis/CastGeometry.d.ts +1 -1
  22. package/activities/arcgis/ClearGraphics.d.ts +1 -1
  23. package/activities/arcgis/ClipEngineTask.d.ts +1 -1
  24. package/activities/arcgis/ClosestFacilityTask.d.ts +1 -1
  25. package/activities/arcgis/CompareGeometries.d.ts +1 -1
  26. package/activities/arcgis/ConvertValueToArcGisFieldType.d.ts +1 -1
  27. package/activities/arcgis/CreateFeatureSet.d.ts +1 -1
  28. package/activities/arcgis/CreateGraphic.d.ts +1 -1
  29. package/activities/arcgis/CreatePoint.d.ts +1 -1
  30. package/activities/arcgis/CutEngineTask.d.ts +1 -1
  31. package/activities/arcgis/DeleteAttachments.d.ts +1 -1
  32. package/activities/arcgis/DeleteFeatures.d.ts +2 -2
  33. package/activities/arcgis/DensifyEngineTask.d.ts +1 -1
  34. package/activities/arcgis/DifferenceEngineTask.d.ts +1 -1
  35. package/activities/arcgis/DistanceEngineTask.d.ts +1 -1
  36. package/activities/arcgis/DistanceServiceTask.d.ts +1 -1
  37. package/activities/arcgis/ExtendedSpatialReferenceInfoEngineTask.d.ts +1 -1
  38. package/activities/arcgis/FeatureSetFromJson.d.ts +1 -1
  39. package/activities/arcgis/FlipEngineTask.d.ts +1 -1
  40. package/activities/arcgis/FromGeoCoordinateStringServiceTask.d.ts +1 -1
  41. package/activities/arcgis/GeneralizeEngineTask.d.ts +1 -1
  42. package/activities/arcgis/GenerateArcGisToken.d.ts +1 -1
  43. package/activities/arcgis/GenerateWebmapForReport.d.ts +2 -2
  44. package/activities/arcgis/Geocode.d.ts +1 -1
  45. package/activities/arcgis/GeometryFromJson.d.ts +1 -1
  46. package/activities/arcgis/Geoprocessing.d.ts +1 -1
  47. package/activities/arcgis/Geoprocessing.js +1 -1
  48. package/activities/arcgis/GeoprocessingAsync.d.ts +1 -1
  49. package/activities/arcgis/GetAttributeValue.d.ts +1 -1
  50. package/activities/arcgis/GetAttributeValues.d.ts +1 -1
  51. package/activities/arcgis/GetCentroid.d.ts +1 -1
  52. package/activities/arcgis/GetCodedValueDomain.d.ts +2 -2
  53. package/activities/arcgis/GetCurrentPosition.d.ts +1 -1
  54. package/activities/arcgis/GetFeatureGeometries.d.ts +1 -1
  55. package/activities/arcgis/GetFeatureGeometry.d.ts +1 -1
  56. package/activities/arcgis/GetFeatureLayerInfo.d.ts +2 -2
  57. package/activities/arcgis/GetFeatureSetExtent.d.ts +1 -1
  58. package/activities/arcgis/GetFeatureSetObjectIds.d.ts +1 -1
  59. package/activities/arcgis/GetFormElementItemsFromFeatures.d.ts +2 -2
  60. package/activities/arcgis/GetGeometryExtent.d.ts +1 -1
  61. package/activities/arcgis/GetGraphics.d.ts +1 -1
  62. package/activities/arcgis/GetLayer.d.ts +1 -1
  63. package/activities/arcgis/GetLayerDefinitionExpression.d.ts +1 -1
  64. package/activities/arcgis/GetLayerProperty.d.ts +1 -1
  65. package/activities/arcgis/GetLayerVisibility.d.ts +1 -1
  66. package/activities/arcgis/GetMap.d.ts +3 -2
  67. package/activities/arcgis/GetMapScreenshot.d.ts +1 -1
  68. package/activities/arcgis/GetPortalUser.d.ts +1 -1
  69. package/activities/arcgis/GetTable.d.ts +1 -1
  70. package/activities/arcgis/GetViewExtent.d.ts +1 -1
  71. package/activities/arcgis/GetViewpoint.d.ts +1 -1
  72. package/activities/arcgis/IntersectEngineTask.d.ts +1 -1
  73. package/activities/arcgis/LabelPointsServiceTask.d.ts +1 -1
  74. package/activities/arcgis/LengthEngineTask.d.ts +1 -1
  75. package/activities/arcgis/MapProvider.d.ts +1 -1
  76. package/activities/arcgis/NearestCoordinateEngineTask.d.ts +1 -1
  77. package/activities/arcgis/NearestVertexEngineTask.d.ts +1 -1
  78. package/activities/arcgis/NearestVerticesEngineTask.d.ts +1 -1
  79. package/activities/arcgis/OffsetEngineTask.d.ts +1 -1
  80. package/activities/arcgis/ProjectServiceTask.d.ts +1 -1
  81. package/activities/arcgis/QueryAttachmentInfos.d.ts +1 -1
  82. package/activities/arcgis/QueryTask.d.ts +1 -1
  83. package/activities/arcgis/RefreshLayer.d.ts +1 -1
  84. package/activities/arcgis/RegisterCorsUrl.d.ts +1 -1
  85. package/activities/arcgis/RelateEngineTask.d.ts +1 -1
  86. package/activities/arcgis/RelationServiceTask.d.ts +1 -1
  87. package/activities/arcgis/RelationshipQueryTask.d.ts +1 -1
  88. package/activities/arcgis/RemoveFeatureSetFields.d.ts +1 -1
  89. package/activities/arcgis/RemoveGraphics.d.ts +1 -1
  90. package/activities/arcgis/RemoveLayer.d.ts +1 -1
  91. package/activities/arcgis/RendererFromJson.d.ts +1 -1
  92. package/activities/arcgis/ReshapeServiceTask.d.ts +1 -1
  93. package/activities/arcgis/ReverseGeocode.d.ts +1 -1
  94. package/activities/arcgis/RotateEngineTask.d.ts +1 -1
  95. package/activities/arcgis/RouteTask.d.ts +1 -1
  96. package/activities/arcgis/RunPrint.d.ts +2 -2
  97. package/activities/arcgis/RunReport.d.ts +2 -2
  98. package/activities/arcgis/RunWorkflow.d.ts +1 -1
  99. package/activities/arcgis/SendLayerToAttributeTable.d.ts +1 -1
  100. package/activities/arcgis/ServiceAreaTask.d.ts +1 -1
  101. package/activities/arcgis/SetFeatureAttribute.d.ts +1 -1
  102. package/activities/arcgis/SetFeatureGeometry.d.ts +1 -1
  103. package/activities/arcgis/SetFeaturePopup.d.ts +1 -1
  104. package/activities/arcgis/SetFeatureSymbol.d.ts +1 -1
  105. package/activities/arcgis/SetImageryLayerOptions.d.ts +1 -1
  106. package/activities/arcgis/SetLayerDefinitionExpression.d.ts +1 -1
  107. package/activities/arcgis/SetLayerPopup.d.ts +1 -1
  108. package/activities/arcgis/SetLayerProperty.d.ts +1 -1
  109. package/activities/arcgis/SetLayerVisibility.d.ts +1 -1
  110. package/activities/arcgis/SetMap.d.ts +1 -1
  111. package/activities/arcgis/SetViewExtent.d.ts +1 -1
  112. package/activities/arcgis/SetViewpoint.d.ts +1 -1
  113. package/activities/arcgis/ShowFeaturePopup.d.ts +1 -1
  114. package/activities/arcgis/ShowResults.d.ts +1 -1
  115. package/activities/arcgis/SimplifyEngineTask.d.ts +1 -1
  116. package/activities/arcgis/SortFeatureSet.d.ts +1 -1
  117. package/activities/arcgis/SortFeatureSet.js +1 -1
  118. package/activities/arcgis/SymbolFromJson.d.ts +1 -1
  119. package/activities/arcgis/ToGeoCoordinateStringServiceTask.d.ts +1 -1
  120. package/activities/arcgis/UnionEngineTask.d.ts +1 -1
  121. package/activities/arcgis/UnionServiceTask.d.ts +1 -1
  122. package/activities/arcgis/UpdateAttachment.d.ts +1 -1
  123. package/activities/arcgis/UpdateFeatures.d.ts +2 -2
  124. package/activities/arcgis/runUtils.d.ts +3 -3
  125. package/activities/arcgis/shared.d.ts +2 -2
  126. package/activities/arcgis/tools.d.ts +2 -2
  127. package/activities/browser/GetBrowserInfo.d.ts +1 -1
  128. package/activities/browser/InjectCss.d.ts +1 -1
  129. package/activities/core/AddItem.d.ts +1 -1
  130. package/activities/core/AddItems.d.ts +1 -1
  131. package/activities/core/Annotation.d.ts +2 -2
  132. package/activities/core/Cast.d.ts +1 -1
  133. package/activities/core/ChannelProvider.d.ts +1 -1
  134. package/activities/core/ClearItems.d.ts +1 -1
  135. package/activities/core/Container.d.ts +1 -1
  136. package/activities/core/ConvertBytesToText.d.ts +1 -1
  137. package/activities/core/ConvertDataTableToFeatureSet.d.ts +1 -1
  138. package/activities/core/ConvertTextToBytes.d.ts +1 -1
  139. package/activities/core/ConvertToJson.d.ts +1 -1
  140. package/activities/core/CreateFile.d.ts +1 -1
  141. package/activities/core/CreateValue.d.ts +1 -1
  142. package/activities/core/DecodeUriComponent.d.ts +1 -1
  143. package/activities/core/Delay.d.ts +1 -1
  144. package/activities/core/EncodeUriComponent.d.ts +1 -1
  145. package/activities/core/Evaluate.d.ts +1 -1
  146. package/activities/core/EvaluateAsync.d.ts +1 -1
  147. package/activities/core/Exit.d.ts +1 -1
  148. package/activities/core/ForEach.d.ts +1 -1
  149. package/activities/core/FormatDate.d.ts +1 -1
  150. package/activities/core/GetBase64StringFromBytes.d.ts +1 -1
  151. package/activities/core/GetBase64StringFromFile.d.ts +1 -1
  152. package/activities/core/GetBytesFromBase64String.d.ts +1 -1
  153. package/activities/core/GetFirstItem.d.ts +1 -1
  154. package/activities/core/GetItemAtIndex.d.ts +1 -1
  155. package/activities/core/GetLastItem.d.ts +1 -1
  156. package/activities/core/GetLogLevel.d.ts +1 -1
  157. package/activities/core/GetTextFromFile.d.ts +1 -1
  158. package/activities/core/GetWorkflowInputs.d.ts +1 -1
  159. package/activities/core/If.d.ts +1 -2
  160. package/activities/core/Log.d.ts +1 -1
  161. package/activities/core/Loop.d.ts +1 -2
  162. package/activities/core/ParseJson.d.ts +1 -1
  163. package/activities/core/ParseNumber.d.ts +1 -1
  164. package/activities/core/ParseUrl.d.ts +1 -1
  165. package/activities/core/Placeholder.d.ts +1 -1
  166. package/activities/core/RegexMatches.d.ts +1 -1
  167. package/activities/core/RegexReplace.d.ts +1 -1
  168. package/activities/core/RemoveItem.d.ts +1 -1
  169. package/activities/core/RunActivity.d.ts +1 -1
  170. package/activities/core/RunSubworkflow.d.ts +1 -1
  171. package/activities/core/SetLogLevel.d.ts +1 -1
  172. package/activities/core/SetProperty.d.ts +1 -1
  173. package/activities/core/SetWorkflowOutput.d.ts +1 -2
  174. package/activities/core/Subworkflow.d.ts +2 -2
  175. package/activities/core/Switch.d.ts +1 -1
  176. package/activities/core/TextReplace.d.ts +1 -1
  177. package/activities/core/Throw.d.ts +1 -1
  178. package/activities/core/TryCatch.d.ts +1 -1
  179. package/activities/core/WebRequest.d.ts +3 -2
  180. package/activities/csv/ConvertCsvToDataTable.d.ts +1 -1
  181. package/activities/csv/ConvertDataTableToCsv.d.ts +1 -1
  182. package/activities/essentials/GetEssentialsSite.d.ts +1 -1
  183. package/activities/essentials/RunEssentialsWorkflow.d.ts +1 -1
  184. package/activities/essentials/RunEssentialsWorkflowActivity.d.ts +1 -1
  185. package/activities/forms/ActivateFormElement.d.ts +3 -3
  186. package/activities/forms/AddFormElement.d.ts +3 -3
  187. package/activities/forms/ClearFormElementError.d.ts +3 -3
  188. package/activities/forms/CompleteForm.d.ts +2 -2
  189. package/activities/forms/DisplayForm.d.ts +3 -2
  190. package/activities/forms/DisplayForm.js +1 -1
  191. package/activities/forms/Errors.d.ts +1 -1
  192. package/activities/forms/FilterFormElementItems.d.ts +3 -3
  193. package/activities/forms/FormElementMap.d.ts +2 -2
  194. package/activities/forms/FormRenderer.d.ts +2 -2
  195. package/activities/forms/FormRenderer.js +1 -1
  196. package/activities/forms/GetFormElementItemsFromCollection.d.ts +2 -2
  197. package/activities/forms/GetFormElementProperty.d.ts +3 -3
  198. package/activities/forms/GetFormElementValue.d.ts +3 -3
  199. package/activities/forms/GetFormEventData.d.ts +2 -2
  200. package/activities/forms/HideFormElement.d.ts +3 -3
  201. package/activities/forms/PropagateFormEvent.d.ts +2 -2
  202. package/activities/forms/SetCurrentFormElementItem.d.ts +3 -3
  203. package/activities/forms/SetFormElementError.d.ts +3 -3
  204. package/activities/forms/SetFormElementEvent.d.ts +2 -2
  205. package/activities/forms/SetFormElementItemProperty.d.ts +3 -3
  206. package/activities/forms/SetFormElementItems.d.ts +4 -4
  207. package/activities/forms/SetFormElementProperty.d.ts +3 -3
  208. package/activities/forms/ShowFormElement.d.ts +3 -3
  209. package/activities/image/GetImageMetadata.d.ts +1 -1
  210. package/activities/image/RotateImage.d.ts +1 -1
  211. package/activities/math/Abs.d.ts +1 -1
  212. package/activities/math/Cos.d.ts +1 -1
  213. package/activities/math/Max.d.ts +1 -1
  214. package/activities/math/Min.d.ts +1 -1
  215. package/activities/math/Pow.d.ts +1 -1
  216. package/activities/math/Random.d.ts +1 -1
  217. package/activities/math/Sin.d.ts +1 -1
  218. package/activities/math/Sqrt.d.ts +1 -1
  219. package/activities/math/Tan.d.ts +1 -1
  220. package/activities/pdf/AddGeoreferenceToPdf.d.ts +1 -1
  221. package/activities/pdf/AddImageToPdf.d.ts +1 -1
  222. package/activities/pdf/AddTextToPdf.d.ts +1 -1
  223. package/activities/pdf/CreatePdf.d.ts +1 -1
  224. package/activities/pdf/ExtractPdfPages.d.ts +1 -1
  225. package/activities/pdf/MergePdfs.d.ts +1 -1
  226. package/activities/server/CopyFile.d.ts +1 -1
  227. package/activities/server/CreateDirectory.d.ts +1 -1
  228. package/activities/server/CreateDownload.d.ts +1 -1
  229. package/activities/server/CreateEmailAttachment.d.ts +1 -1
  230. package/activities/server/CreateZipFromDirectory.d.ts +1 -1
  231. package/activities/server/DeleteDirectory.d.ts +1 -1
  232. package/activities/server/DeleteFile.d.ts +1 -1
  233. package/activities/server/DirectoryExists.d.ts +1 -1
  234. package/activities/server/ExtractZipToDirectory.d.ts +1 -1
  235. package/activities/server/FileExists.d.ts +1 -1
  236. package/activities/server/GetDirectoriesInDirectory.d.ts +1 -1
  237. package/activities/server/GetFilesInDirectory.d.ts +1 -1
  238. package/activities/server/MoveFile.d.ts +1 -1
  239. package/activities/server/ReadFile.d.ts +1 -1
  240. package/activities/server/ReadFileBytes.d.ts +1 -1
  241. package/activities/server/RunApplication.d.ts +1 -1
  242. package/activities/server/RunPython.d.ts +1 -1
  243. package/activities/server/SendEmail.d.ts +1 -1
  244. package/activities/server/SqlNonQuery.d.ts +1 -1
  245. package/activities/server/SqlQuery.d.ts +1 -1
  246. package/activities/server/SqlQueryUnsafe.d.ts +1 -1
  247. package/activities/server/WriteFile.d.ts +1 -1
  248. package/activities/server/WriteFileBytes.d.ts +1 -1
  249. package/activities/ui/Alert.d.ts +1 -1
  250. package/activities/ui/Confirm.d.ts +1 -1
  251. package/activities/ui/Prompt.d.ts +1 -1
  252. package/activities/wab/OpenWidget.d.ts +1 -1
  253. package/activities/wab/PublishWidgetData.d.ts +1 -1
  254. package/activities/xlsx/ConvertDataTableToXlsx.d.ts +1 -1
  255. package/activities/xlsx/ConvertXlsxToDataSet.d.ts +1 -1
  256. package/definition/Activity.d.ts +3 -3
  257. package/definition/ActivityInput.d.ts +1 -1
  258. package/definition/Component.d.ts +3 -3
  259. package/definition/Form.d.ts +2 -2
  260. package/definition/Program.d.ts +7 -7
  261. package/definition/ProgramInspector.d.ts +11 -10
  262. package/definition/ProgramInspector.js +1 -1
  263. package/definition/Reference.d.ts +1 -1
  264. package/definition/Step.d.ts +4 -2
  265. package/definition/Transition.d.ts +2 -2
  266. package/diagnostics/ConsoleDebugLogger.d.ts +1 -1
  267. package/execution/ActivityContext.d.ts +92 -0
  268. package/execution/ActivityContext.js +1 -0
  269. package/execution/ActivityContextProxy.d.ts +24 -0
  270. package/execution/ActivityContextProxy.js +1 -0
  271. package/execution/ActivityLoader.d.ts +5 -5
  272. package/execution/AmbientState.d.ts +71 -0
  273. package/execution/AmbientState.js +1 -0
  274. package/execution/AmbientStateProxy.d.ts +28 -0
  275. package/execution/AmbientStateProxy.js +1 -0
  276. package/execution/AsyncContext.d.ts +7 -0
  277. package/execution/AsyncContext.js +1 -0
  278. package/execution/Engine.d.ts +25 -6
  279. package/execution/Engine.js +1 -1
  280. package/execution/ExternalEvent.d.ts +14 -0
  281. package/execution/ExternalEvent.js +0 -0
  282. package/execution/IDebugSession.d.ts +3 -3
  283. package/execution/MonikerFrame.d.ts +11 -0
  284. package/execution/MonikerFrame.js +1 -0
  285. package/execution/ProgramRunner.js +1 -1
  286. package/execution/Proxy.d.ts +5 -0
  287. package/execution/Proxy.js +1 -0
  288. package/execution/StepContext.d.ts +6 -0
  289. package/execution/StepContext.js +1 -0
  290. package/execution/TransitionContext.d.ts +8 -0
  291. package/execution/TransitionContext.js +1 -0
  292. package/execution/util.d.ts +1 -0
  293. package/execution/util.js +1 -0
  294. package/forms/FormComponent.d.ts +4 -4
  295. package/forms/FormDefinition.d.ts +5 -4
  296. package/forms/FormElement.d.ts +3 -4
  297. package/forms/FormHost.d.ts +15 -8
  298. package/forms/FormHost.js +1 -1
  299. package/forms/FormPresenterHost.d.ts +12 -6
  300. package/forms/MutuallyExclusiveSectionGroup.d.ts +1 -1
  301. package/forms/common.d.ts +3 -3
  302. package/forms/components/AccordionGroup.d.ts +1 -1
  303. package/forms/components/AutoComplete.d.ts +2 -2
  304. package/forms/components/ButtonBar.d.ts +2 -2
  305. package/forms/components/CheckBox.d.ts +1 -1
  306. package/forms/components/CheckGroup.d.ts +2 -2
  307. package/forms/components/CheckGroup.js +1 -1
  308. package/forms/components/Custom.d.ts +1 -1
  309. package/forms/components/DatePicker.d.ts +2 -2
  310. package/forms/components/DateRangePicker.d.ts +2 -2
  311. package/forms/components/DateTimePicker.d.ts +2 -2
  312. package/forms/components/DropDownList.d.ts +2 -2
  313. package/forms/components/FilePicker.d.ts +2 -2
  314. package/forms/components/FilePicker.js +1 -1
  315. package/forms/components/Form.js +1 -1
  316. package/forms/components/FormLabelNumberField.d.ts +1 -1
  317. package/forms/components/GeometryPicker.d.ts +2 -2
  318. package/forms/components/GeometryPickerListItem.d.ts +1 -1
  319. package/forms/components/HorizontalRule.d.ts +1 -1
  320. package/forms/components/Image.d.ts +1 -1
  321. package/forms/components/ItemPicker.d.ts +2 -2
  322. package/forms/components/ListBox.d.ts +2 -2
  323. package/forms/components/Markdown.d.ts +2 -2
  324. package/forms/components/Number.d.ts +2 -2
  325. package/forms/components/NumberRangeSlider.d.ts +1 -1
  326. package/forms/components/NumberSlider.d.ts +2 -2
  327. package/forms/components/RadioGroup.d.ts +2 -2
  328. package/forms/components/Scanner.d.ts +3 -3
  329. package/forms/components/Section.d.ts +4 -2
  330. package/forms/components/Section.js +1 -1
  331. package/forms/components/Signature.d.ts +2 -2
  332. package/forms/components/TabGroup.d.ts +15 -0
  333. package/forms/components/TabGroup.js +1 -0
  334. package/forms/components/Text.d.ts +1 -1
  335. package/forms/components/TextArea.d.ts +1 -1
  336. package/forms/components/TextBox.d.ts +1 -1
  337. package/forms/components/TimePicker.d.ts +2 -2
  338. package/forms/constants.d.ts +1 -0
  339. package/forms/constants.js +1 -1
  340. package/forms/dateUtilities.d.ts +3 -3
  341. package/forms/elements/AutoComplete.d.ts +2 -2
  342. package/forms/elements/ButtonBar.d.ts +1 -1
  343. package/forms/elements/CheckBox.d.ts +1 -1
  344. package/forms/elements/CheckGroup.d.ts +1 -1
  345. package/forms/elements/Custom.d.ts +1 -1
  346. package/forms/elements/DatePicker.d.ts +2 -2
  347. package/forms/elements/DateRangePicker.d.ts +2 -2
  348. package/forms/elements/DateTimePicker.d.ts +2 -2
  349. package/forms/elements/DropDownList.d.ts +1 -1
  350. package/forms/elements/FilePicker.d.ts +2 -2
  351. package/forms/elements/GeometryPicker.d.ts +2 -2
  352. package/forms/elements/HorizontalRule.d.ts +1 -1
  353. package/forms/elements/Image.d.ts +1 -1
  354. package/forms/elements/ItemPicker.d.ts +1 -1
  355. package/forms/elements/ListBox.d.ts +1 -1
  356. package/forms/elements/Number.d.ts +3 -3
  357. package/forms/elements/NumberRangeSlider.d.ts +2 -2
  358. package/forms/elements/NumberSlider.d.ts +2 -2
  359. package/forms/elements/PasswordBox.d.ts +1 -1
  360. package/forms/elements/RadioGroup.d.ts +1 -1
  361. package/forms/elements/Scanner.d.ts +3 -3
  362. package/forms/elements/Section.d.ts +1 -1
  363. package/forms/elements/Signature.d.ts +3 -3
  364. package/forms/elements/Text.d.ts +1 -1
  365. package/forms/elements/TextArea.d.ts +1 -1
  366. package/forms/elements/TextBox.d.ts +1 -1
  367. package/forms/elements/TimePicker.d.ts +2 -2
  368. package/forms/elements/types.d.ts +1 -1
  369. package/forms/index.d.ts +3 -3
  370. package/forms/listUtilities.d.ts +1 -1
  371. package/forms/manifest.d.ts +1 -1
  372. package/forms/numberUtilities.d.ts +3 -3
  373. package/forms/numberUtilities.js +1 -1
  374. package/forms/presenter.d.ts +1 -1
  375. package/forms/renderers.d.ts +1 -1
  376. package/forms/renderers.js +1 -1
  377. package/forms/textUtilities.d.ts +1 -1
  378. package/forms/utils.d.ts +9 -3
  379. package/forms/utils.js +1 -1
  380. package/libs/version.d.ts +1 -1
  381. package/libs/version.js +1 -1
  382. package/package.json +10 -8
@@ -0,0 +1,92 @@
1
+ import Bluebird from "bluebird";
2
+ import type ActivityContextProxy from "./ActivityContextProxy";
3
+ import type AmbientState from "./AmbientState";
4
+ import type { IActivityState } from "./IDebugSession";
5
+ import type MonikerFrame from "./MonikerFrame";
6
+ import type { IActivityContext, IActivityHandler } from "../IActivityHandler";
7
+ import type { Task } from "../Task";
8
+ import type { Activity } from "../definition/Activity";
9
+ interface ExpressionEvaluator {
10
+ (resources: any, values: any): any;
11
+ }
12
+ type Recent = {
13
+ context: ActivityContext;
14
+ };
15
+ /**
16
+ * USE TRY-CATCH CAREFULLY
17
+ *
18
+ * There is a difference between an error with the workflow and an error with
19
+ * the environment and/or engine. We don't want to conflate the two. So to that
20
+ * end, whenever we invoke something else outside of the engine, we should try
21
+ * to isolate that code. Bludbird's Promise.attempt feature does this very nicely.
22
+ *
23
+ * CAPTURING ERRORS
24
+ *
25
+ * Here we are using a Promise<Error[]> to capture the errors during activity
26
+ * execution. Many things can contribute an error: accessors, inputs, handler
27
+ * creation, and activation problems. The promise is never meant to become
28
+ * rejected itself as this would indicate a problem with the actual engine
29
+ * rather than a problem with executing the workflow. This distinction is
30
+ * extremely important in terms of issue routing.
31
+ */
32
+ declare abstract class ActivityContext implements IActivityState, IActivityContext {
33
+ id: any;
34
+ luid: any;
35
+ action: string;
36
+ activity: Activity;
37
+ ambient: AmbientState;
38
+ frame: MonikerFrame;
39
+ proxy: ActivityContextProxy;
40
+ caught?: Error;
41
+ passes: number;
42
+ recent?: Recent;
43
+ repeat?: boolean;
44
+ state: any;
45
+ branch?: boolean | number | string;
46
+ callBranch?: boolean;
47
+ forkBranch?: boolean;
48
+ jumpBranch?: boolean | number | string;
49
+ registeredForErrors?: boolean;
50
+ stateToPersist: any;
51
+ inputs: Record<string, any>;
52
+ outputs: Record<string, any>;
53
+ extras: any[];
54
+ monikers: string[];
55
+ handler?: Bluebird<IActivityHandler | undefined>;
56
+ evaluators: Record<string, ExpressionEvaluator>;
57
+ scope: Record<string, any>;
58
+ cancellationToken: Task<void>;
59
+ cancellationResolve: () => void;
60
+ promise: Bluebird<Error[]> | undefined;
61
+ private static filterErrors;
62
+ private static isError;
63
+ private static isInvalidHandler;
64
+ private static reduceErrors;
65
+ registerForErrors(): void;
66
+ persist(state: any): void;
67
+ call(branch: any): void;
68
+ fork(branch: any): void;
69
+ jump(branch: any): void;
70
+ hasBranch(branch: any): boolean;
71
+ private emitExpressionEvaluationError;
72
+ private emitExpressionSyntaxError;
73
+ private emitExpressionAccessorError;
74
+ private emitActivityBindingError;
75
+ private emitActivityActivationError;
76
+ private emitActivityError;
77
+ private executeHandlerInline;
78
+ private resolveExtrasInline;
79
+ private resolveInputsInline;
80
+ private resolveHandlerInline;
81
+ private findContext;
82
+ private resolveOutputsInline;
83
+ private resolveAccessorInline;
84
+ private resolveAssetsInline;
85
+ private concludeInline;
86
+ protected generateMonikers(): void;
87
+ protected marshalError(): Error | undefined;
88
+ protected abstract transferInline(): void;
89
+ execute(): Bluebird<Error[]> | Bluebird<undefined>;
90
+ goto(): void;
91
+ }
92
+ export {};
@@ -0,0 +1 @@
1
+ import Bluebird from"bluebird";import{ExpressionEvaluationError,ExpressionSyntaxError,ExpressionAccessorError,ActivityBindingError,ActivityActivationError,ActivityError,GenericActivityError,AggregateActivityError}from"../Errors.js";import{query}from"../Hooks.js";import{isAccessor,isExpression,isLiteral}from"./util.js";const echoHandler={execute:t=>t};let evaluators={};function compileExpression(t,i){var e=t.code;let r=evaluators[e];if(void 0===r){const n=[],o={};n.push('"use strict"; ');var s=t.accessors;if(Array.isArray(s))for(const c of s)isAccessor(c)&&!o[c]&&(n.push(`var ${c} = this.${c};`),o[c]=!0);n.push("return "),n.push(e),n.push(";"),r=evaluators[e]=new Function("resources","values",n.join(""))}return function(){return r.call(this,i,t.values)}}class PromiseWrapper{}class ActivityContext{constructor(){this.action="",this.activity={},this.ambient={},this.frame={},this.proxy={},this.passes=0,this.inputs={},this.outputs={},this.extras=[],this.monikers=[],this.evaluators={},this.scope={},this.cancellationToken={},this.cancellationResolve=()=>{}}static filterErrors(t){return t.filter(ActivityContext.isError)}static isError(t){return void 0!==t}static isInvalidHandler(t){return null==t||"function"!=typeof t.execute}static reduceErrors(t){return t.isPending()?t.then(ActivityContext.filterErrors):t.isFulfilled()?Bluebird.resolve(ActivityContext.filterErrors(t.value())):t}registerForErrors(){this.registeredForErrors=!0}persist(t){this.stateToPersist=t}call(t){this.callBranch=!0,this.forkBranch=!1,this.jumpBranch=t}fork(t){this.callBranch=!1,this.forkBranch=!0,this.jumpBranch=t}jump(t){this.callBranch=!1,this.forkBranch=!1,this.jumpBranch=t}hasBranch(t){var i=this.activity;const e=this.ambient.inspector;return e.isStep(i)&&void 0!==e.relate(i,t).peek()}emitExpressionEvaluationError(t,i){var e=this.activity.id,r=this.activity.inputs[t];return new ExpressionEvaluationError(e,t,r.source||r.code,i)}emitExpressionSyntaxError(t,i){var e=this.activity.id,r=this.activity.inputs[t];return new ExpressionSyntaxError(e,t,r.source||r.code,i)}emitExpressionAccessorError(t,i,e){return new ExpressionAccessorError(this.activity.id,t,i,e)}emitActivityBindingError(t){var i=this.activity;return new ActivityBindingError(i.id,i.action,t)}emitActivityActivationError(t,i){return new ActivityActivationError(this.activity.id,t,i)}emitActivityError(t){if(t instanceof ActivityError)return t;var i=this.activity;const e=new GenericActivityError(void 0,t?.message);return e.activityId=i.id,e.error=t,e}executeHandlerInline(i){if(0<i.length||this.cancellationToken.isFulfilled())return i;const e=this.extras;for(let t=0;t<e.length;t++)e[t]=Bluebird.resolve(e[t]).value();const r=this.inputs;for(const o in r){let t=Bluebird.resolve(r[o]).value();t instanceof PromiseWrapper&&(t=t.result),r[o]=t}const t=this.proxy,s=this.handler.value(),n=Bluebird.attempt(function(){return s.execute(r,t,...e)});return n.isPending()?n.then(t=>(this.outputs=t,i),t=>[this.emitActivityError(t)]):n.isRejected()?[this.emitActivityError(n.reason())]:(this.outputs=n.value(),i)}resolveExtrasInline(){for(const i of query(this.handler.value())){const t=this.ambient.engine.activator,e=t.activate(i);if(this.extras.push(e),e.isPending())return e.then(t=>{},t=>this.emitActivityActivationError(i.type,t));if(e.isRejected())return this.emitActivityActivationError(i.type,e.reason())}}resolveInputsInline(t){if(0<t.length||this.cancellationToken.isFulfilled())return t;const i=[];i.push(this.resolveExtrasInline());const e=this.evaluators;if(void 0!==e){const r=this.scope;for(const n in r)r[n]=Bluebird.resolve(r[n]).value();const s=this.inputs;for(const o in e){const c=s[o]=Bluebird.attempt(function(){var t=e[o].call(r,void 0,void 0);if(t&&"function"==typeof t.then){const i=new PromiseWrapper;return i.result=t,i}return t});c.isPending()&&i.push(c.then(t=>{},t=>this.emitExpressionEvaluationError(o,t))),c.isRejected()&&i.push(this.emitExpressionEvaluationError(o,c.reason()))}}return ActivityContext.reduceErrors(Bluebird.all(i))}resolveHandlerInline(){const i=this.activity.action;if("string"==typeof i){var e=this.ambient;const r=e.handlers;let t=this.handler=r[i];if(void 0===t){const s=e.engine,n=e.inspector;t=this.handler=r[i]=Bluebird.attempt(function(){return s.createHandler(i,n)})}return t.isPending()?t.then(t=>ActivityContext.isInvalidHandler(t)?this.emitActivityBindingError():void 0,t=>this.emitActivityBindingError(t)):t.isRejected()?this.emitActivityBindingError(t.reason()):ActivityContext.isInvalidHandler(t.value())?this.emitActivityBindingError():void 0}this.handler=Bluebird.resolve(echoHandler)}findContext(t){var i=this.ambient,e=i.stack;let r=i.frame;for(;void 0!==r;){var s=r.state[t];if(void 0!==s)return s;r=e[r.index-1]}}resolveOutputsInline(){const t=this.promise;if(t.isPending())return t.then(t=>void 0!==t&&0<t.length?Bluebird.reject(t):this.outputs,t=>{});if(t.isRejected())return Bluebird.resolve(void 0);var i=t.value();return void 0!==i&&0<i.length?Bluebird.reject(i):Bluebird.resolve(this.outputs)}resolveAccessorInline(i){const t=this.findContext(i);if(void 0!==t){const e=this.scope[i]=t.resolveOutputsInline();return e.isPending()?e.then(t=>{},t=>this.emitExpressionAccessorError(i,void 0,t)):e.isRejected()?this.emitExpressionAccessorError(i,void 0,e.reason()):void 0}const e=this.scope[i]=Bluebird.resolve(this.ambient.environment[i]);return e.isPending()?e.then(t=>{},t=>this.emitExpressionAccessorError(i,t)):e.isRejected()?this.emitExpressionAccessorError(i,e.reason()):void 0}resolveAssetsInline(){const e=[];e.push(this.resolveHandlerInline());var r=this.activity.inputs;if(null!=r){let t,i;const n=this.ambient;for(const o in r){const c=r[o];if(void 0!==c&&null!==c)if(isLiteral(c))this.inputs[o]=Bluebird.resolve(c);else if(isExpression(c)){void 0===t&&(this.scope=t={}),void 0===i&&(this.evaluators=i={});var s=c.accessors;if(Array.isArray(s))for(const l of s)"string"==typeof l&&void 0===t[l]&&e.push(this.resolveAccessorInline(l));const a=Bluebird.attempt(function(){return compileExpression(c,n.resources)});a.isFulfilled()?i[o]=a.value():e.push(this.emitExpressionSyntaxError(o,a.reason()))}else e.push(this.emitExpressionSyntaxError(o))}}return ActivityContext.reduceErrors(Bluebird.all(e))}concludeInline(t){return this.cancellationResolve(),t}generateMonikers(){const t=this.monikers;var i=this.activity;t.push("$"+i.id),"string"==typeof i.name&&t.push("$"+i.name);const e=i.action;"string"!=typeof e||1<(i=e.split(":")).length&&(0<(i=i[i.length-2]).length&&t.push("$$"+i))}marshalError(){var t=this.promise.value();return 1<t.length?new AggregateActivityError(this.activity.id,t):0<t.length?t[0]:void 0}execute(){let t=this.promise;const i=this.ambient;if(void 0!==t)return i.debug(i),i.halted||this.transferInline(),t;{if(t=this.resolveAssetsInline(),t.isRejected())return t;if(t=t.isPending()?t.then(t=>this.resolveInputsInline(t)):Bluebird.resolve(this.resolveInputsInline(t.value())),t.isRejected())return t;if(t=t.isPending()?t.then(t=>this.executeHandlerInline(t)):Bluebird.resolve(this.executeHandlerInline(t.value())),t.isRejected())return t;if(t=t.isPending()?t.then(t=>this.concludeInline(t)):Bluebird.resolve(this.concludeInline(t.value())),t.isRejected())return t;t.isPending()&&(t=t.catch(t=>i.fail(t)),t.then(t=>i.execute())),this.generateMonikers();const e=i.frame.state;for(const r of this.monikers)e[r]=this;return this.promise=t,Bluebird.resolve(void 0)}}goto(){}}export default ActivityContext;
@@ -0,0 +1,24 @@
1
+ import Proxy from "./Proxy";
2
+ import type ActivityContext from "./ActivityContext";
3
+ import type { IActivityContext } from "../IActivityHandler";
4
+ /**
5
+ * A proxy of the ActivityContext so that callers cannot influence the guts of the engine.
6
+ */
7
+ declare class ActivityContextProxy extends Proxy<ActivityContext> implements IActivityContext {
8
+ get luid(): any;
9
+ get ambient(): import("./AmbientStateProxy").default;
10
+ get action(): string;
11
+ get branch(): string | number | boolean | undefined;
12
+ get cancellationToken(): import("../Task").Task<void>;
13
+ get passes(): number;
14
+ get caught(): Error | undefined;
15
+ call(branch?: boolean | number | string): void;
16
+ fork(branch?: boolean | number | string): void;
17
+ jump(branch?: boolean | number | string): void;
18
+ hasBranch(branch?: boolean | number | string): boolean;
19
+ get state(): any;
20
+ registerForErrors(): void;
21
+ persist(value: any): void;
22
+ goto(): void;
23
+ }
24
+ export {};
@@ -0,0 +1 @@
1
+ import Proxy,{clearGuard}from"./Proxy.js";class ActivityContextProxy extends Proxy{get luid(){return clearGuard(),this.target.luid}get ambient(){return clearGuard(),this.target.ambient.proxy}get action(){return clearGuard(),this.target.action}get branch(){return clearGuard(),this.target.branch}get cancellationToken(){return clearGuard(),this.target.cancellationToken}get passes(){return clearGuard(),this.target.passes}get caught(){return clearGuard(),this.target.caught}call(r){return clearGuard(),this.target.call(r)}fork(r){return clearGuard(),this.target.fork(r)}jump(r){return clearGuard(),this.target.jump(r)}hasBranch(r){return clearGuard(),this.target.hasBranch(r)}get state(){return clearGuard(),this.target.state}registerForErrors(){return clearGuard(),this.target.registerForErrors()}persist(r){return clearGuard(),this.target.persist(r)}goto(){return clearGuard(),this.target.goto()}}export default ActivityContextProxy;
@@ -1,8 +1,8 @@
1
- import { IActivityHandler } from "../IActivityHandler";
2
- import { ProgramInspector } from "../definition/ProgramInspector";
3
- import { Reference } from "../definition/Reference";
4
- import { FormElementRegistration } from "../index";
5
- import { IActivityHandlerFactory } from "./Engine";
1
+ import type { IActivityHandlerFactory } from "./Engine";
2
+ import type { IActivityHandler } from "../IActivityHandler";
3
+ import type { ProgramInspector } from "../definition/ProgramInspector";
4
+ import type { Reference } from "../definition/Reference";
5
+ import type { FormElementRegistration } from "../index";
6
6
  declare const formElementCache: Record<string, FormElementRegistration<any>>;
7
7
  export declare function getCachedFormElements(): typeof formElementCache;
8
8
  /**
@@ -0,0 +1,71 @@
1
+ import Bluebird from "bluebird";
2
+ import { Task } from "../Task";
3
+ import MonikerFrame from "./MonikerFrame";
4
+ import type ActivityContext from "./ActivityContext";
5
+ import type AmbientStateProxy from "./AmbientStateProxy";
6
+ import type { Engine } from "./Engine";
7
+ import type { ExternalEventCallback } from "./ExternalEvent";
8
+ import type { IDebugSession } from "./IDebugSession";
9
+ import type { IAmbientState, IActivityHandler } from "../IActivityHandler";
10
+ import type { ProgramInspector } from "../definition/ProgramInspector";
11
+ import type { Step } from "../definition/Step";
12
+ import type { Transition } from "../definition/Transition";
13
+ import type { LogLevel } from "../diagnostics/logging";
14
+ /**
15
+ * Ambient state deals with the state for the overall workflow. The basic concept
16
+ * is to have an executor loop which sequences and initiates activities. If the
17
+ * workflow is completed or halted, the workflow should not continue
18
+ * to progress. At any point, execute and callback can be called, so to protect
19
+ * against re-entrancy issues the main loop should indicate somehow that it is
20
+ * presently executing.
21
+ */
22
+ declare class AmbientState implements IDebugSession, IAmbientState {
23
+ debug: (session: IDebugSession) => void;
24
+ engine: Engine;
25
+ inspector: ProgramInspector;
26
+ id: string;
27
+ environment: Record<string, any>;
28
+ error: Error | undefined;
29
+ inputs: Record<string, any>;
30
+ resources?: Record<string, any>;
31
+ locale: string | undefined;
32
+ logLevel: LogLevel | undefined;
33
+ outputs: Record<string, any>;
34
+ removeExternalEventHandler: (_callback: ExternalEventCallback) => void;
35
+ setExternalEventHandler: (_callback: ExternalEventCallback) => void;
36
+ trivia: Record<string, any> | undefined;
37
+ frame: MonikerFrame | undefined;
38
+ queue: Transition[];
39
+ stack: MonikerFrame[];
40
+ handlers: Record<string, Bluebird<IActivityHandler | undefined>>;
41
+ get activityContexts(): Record<string, ActivityContext>;
42
+ cancellationResolve: () => void;
43
+ cancellationToken: Task<void>;
44
+ completion: Bluebird<{}>;
45
+ resolveCompletion: (result: {}) => void;
46
+ rejectCompletion: (error: any) => void;
47
+ scheduler: Bluebird<void>;
48
+ proxy: AmbientStateProxy;
49
+ inline: boolean;
50
+ halted: boolean;
51
+ private static createLinkedCancellationToken;
52
+ break(): void;
53
+ continue(): void;
54
+ execute(action?: () => void): boolean;
55
+ complete(outputs?: {}): void;
56
+ reject(error?: any): void;
57
+ fail(thrown?: any): void;
58
+ cancel(): void;
59
+ push(): MonikerFrame;
60
+ pop(error?: Error): MonikerFrame | undefined;
61
+ call(): void;
62
+ fork(): void;
63
+ bubble(error: Error): void;
64
+ next(): void;
65
+ prepare(next: ActivityContext, context?: ActivityContext, caught?: Error): void;
66
+ attempt(transition: Transition): void;
67
+ start(step: Step, context?: ActivityContext, caught?: Error): void;
68
+ enqueue(step: Step, branch?: boolean | number | string): void;
69
+ goto(frame: MonikerFrame): boolean;
70
+ }
71
+ export {};
@@ -0,0 +1 @@
1
+ import Bluebird from"bluebird";import{ActivityCancellationError,EngineRuntimeError}from"../Errors.js";import{Task}from"../Task.js";import ActivityContextProxy from"./ActivityContextProxy.js";import AsyncContext from"./AsyncContext.js";import MonikerFrame from"./MonikerFrame.js";import StepContext from"./StepContext.js";import TransitionContext from"./TransitionContext.js";import{newSymbol}from"./util.js";class AmbientState{constructor(){this.debug=()=>{},this.engine={},this.inspector={},this.id="",this.environment={},this.inputs={},this.outputs={},this.removeExternalEventHandler=t=>{},this.setExternalEventHandler=t=>{},this.frame=new MonikerFrame,this.queue=[],this.stack=[],this.handlers={},this.cancellationResolve=()=>{},this.cancellationToken={},this.completion={},this.resolveCompletion=()=>{},this.rejectCompletion=()=>{},this.scheduler={},this.proxy={},this.inline=!1,this.halted=!1}get activityContexts(){const t={};for(const e of[...this.stack,this.frame])for(const i in e.state)"$$"===i.substring(0,2)&&(t[i]=e.state[i]);return t}static createLinkedCancellationToken(t,e){const i=Task.race([new Task(e),t]),n=new AbortController;return i.signal=n.signal,i.finally(()=>n.abort()),i}break(){this.halted=!0}continue(){this.halted=!1,void 0!==this.scheduler&&!this.scheduler.isFulfilled()||(this.scheduler=Bluebird.resolve(void 0).then(t=>{this.execute()}))}execute(t){if(this.inline)return!1;this.inline=!0;try{void 0!==t&&t();const e=this.completion;for(;e.isPending();){if(this.halted)return!1;const i=this.frame.current.execute();if(i.isPending())break;i.isRejected()&&this.fail(i.reason())}}catch(t){this.fail(t)}finally{this.inline=!1}return!0}complete(t){this.completion.isPending()&&(this.cancellationResolve(),this.resolveCompletion(t||this.outputs))}reject(t){this.completion.isPending()&&(this.cancellationResolve(),this.rejectCompletion(t||this.error))}fail(t){this.completion.isPending()&&(this.cancellationResolve(),this.rejectCompletion(new EngineRuntimeError(t)))}cancel(){this.completion.isPending()&&(this.cancellationResolve(),this.rejectCompletion(new ActivityCancellationError))}push(){const t=this.stack;t.push(this.frame);const e=this.frame=new MonikerFrame;return e.index=t.length,e}pop(t){const e=this.frame;if(void 0!==e){e.current=void 0;const n=e.cancellationResolve;void 0!==n&&n()}var i=this.frame=this.stack.pop();return void 0===i&&(void 0!==t?this.reject(t):this.complete()),i}call(){var t=this.frame;const e=this.push();e.cancellationToken=t.cancellationToken,e.state=t.state}fork(){const e=this.push();e.cancellationToken=AmbientState.createLinkedCancellationToken(this.cancellationToken,t=>e.cancellationResolve=t),e.state={}}bubble(t){let e=this.pop(t);for(;void 0!==e&&!e.current.registeredForErrors;)e=this.pop(t);var i;void 0!==e&&(i=e.current,this.start(i.activity,i,t))}next(){var t=this.queue.pop();void 0!==t?this.attempt(t):void 0!==(t=this.pop())&&(t=t.current,this.start(t.activity,t))}prepare(e,t,i){const n=e.frame=this.frame;if((n.current=e).luid=this.id+":"+e.activity.id,e.action=e.activity.action,e.ambient=this,e.id=newSymbol(),e.caught=i,e.cancellationToken=AmbientState.createLinkedCancellationToken(n.cancellationToken,t=>e.cancellationResolve=t),e.proxy=new ActivityContextProxy(e),void 0!==t){const s=e.recent=t.recent||(t.recent={});t=s.context||t;(s.context=e).passes=t.passes+1,e.stateToPersist=e.state=t.stateToPersist}else e.passes=0}attempt(t){const e=new TransitionContext;e.activity=t,e.branch=t.branch,this.prepare(e)}start(t,e,i){const n=new(t.async?AsyncContext:StepContext);n.activity=t,n.monikers.push("$"),this.prepare(n,e,i)}enqueue(t,e){const i=this.inspector;this.queue=i.relate(t,e).list(),this.next()}goto(t){for(var e=this.stack,i=t.index;e[i]===t;)this.pop();return t===this.frame}}export default AmbientState;
@@ -0,0 +1,28 @@
1
+ import Proxy from "./Proxy";
2
+ import type AmbientState from "./AmbientState";
3
+ import type { ExternalEventCallback } from "./ExternalEvent";
4
+ import type { IAmbientState } from "../IActivityHandler";
5
+ import type { LogLevel } from "../diagnostics/logging";
6
+ /**
7
+ * A proxy of the AmbientState so that callers cannot influence the guts of the engine.
8
+ */
9
+ declare class AmbientStateProxy extends Proxy<AmbientState> implements IAmbientState {
10
+ get outputs(): {};
11
+ set outputs(outputs: {});
12
+ get error(): Error | undefined;
13
+ set error(error: Error | undefined);
14
+ get completion(): Bluebird<{}>;
15
+ complete(outputs?: {}): void;
16
+ reject(error?: Error): void;
17
+ get environment(): Record<string, any>;
18
+ get inputs(): Record<string, any>;
19
+ get activityContexts(): Record<string, import("./ActivityContext").default>;
20
+ get locale(): string | undefined;
21
+ get logLevel(): LogLevel | undefined;
22
+ set logLevel(level: LogLevel | undefined);
23
+ removeExternalEventHandler(callback: ExternalEventCallback): void;
24
+ get resources(): Record<string, any> | undefined;
25
+ setExternalEventHandler(callback: ExternalEventCallback): void;
26
+ get trivia(): Record<string, any> | undefined;
27
+ }
28
+ export {};
@@ -0,0 +1 @@
1
+ import Proxy,{clearGuard}from"./Proxy.js";class AmbientStateProxy extends Proxy{get outputs(){return clearGuard(),this.target.outputs}set outputs(t){clearGuard(),this.target.outputs=t}get error(){return clearGuard(),this.target.error}set error(t){clearGuard(),this.target.error=t}get completion(){return clearGuard(),this.target.completion}complete(t){return clearGuard(),this.target.complete(t)}reject(t){return clearGuard(),this.target.reject(t)}get environment(){return clearGuard(),this.target.environment}get inputs(){return clearGuard(),this.target.inputs}get activityContexts(){return clearGuard(),this.target.activityContexts}get locale(){return clearGuard(),this.target.locale}get logLevel(){return clearGuard(),this.target.logLevel}set logLevel(t){clearGuard(),this.target.logLevel=t}removeExternalEventHandler(t){return clearGuard(),this.target.removeExternalEventHandler(t)}get resources(){return clearGuard(),this.target.resources}setExternalEventHandler(t){return clearGuard(),this.target.setExternalEventHandler(t)}get trivia(){return clearGuard(),this.target.trivia}}export default AmbientStateProxy;
@@ -0,0 +1,7 @@
1
+ import Bluebird from "bluebird";
2
+ import ActivityContext from "./ActivityContext";
3
+ declare class AsyncContext extends ActivityContext {
4
+ transferInline(): void;
5
+ execute(): Bluebird<undefined>;
6
+ }
7
+ export {};
@@ -0,0 +1 @@
1
+ import Bluebird from"bluebird";import ActivityContext from"./ActivityContext.js";class AsyncContext extends ActivityContext{transferInline(){this.ambient.enqueue(this.activity)}execute(){return super.execute(),Bluebird.resolve(void 0)}}export default AsyncContext;
@@ -1,12 +1,13 @@
1
1
  import { Activator } from "../Activator";
2
- import { IActivityHandler } from "../IActivityHandler";
3
2
  import { Task } from "../Task";
4
- import { Program } from "../definition/Program";
5
3
  import { ProgramInspector } from "../definition/ProgramInspector";
6
- import { Step } from "../definition/Step";
7
- import { LogLevel } from "../diagnostics/logging";
8
- import { FormElementRegistration } from "../index";
9
- import { IDebugSession } from "./IDebugSession";
4
+ import type { ExternalEvent, ExternalEventCallback } from "./ExternalEvent";
5
+ import type { IDebugSession } from "./IDebugSession";
6
+ import type { IActivityHandler } from "../IActivityHandler";
7
+ import type { Program } from "../definition/Program";
8
+ import type { Step } from "../definition/Step";
9
+ import type { LogLevel } from "../diagnostics/logging";
10
+ import type { FormElementRegistration } from "../index";
10
11
  /**
11
12
  * Describes run options for a run operation.
12
13
  * @product This is intended for internal use only within VertiGIS Studio products.
@@ -64,6 +65,18 @@ export declare class Engine {
64
65
  activator: Activator;
65
66
  /** Indicates the default environment for any workflow. */
66
67
  environment: {};
68
+ /** Callback function to send a new External Event to a Display Form activity. */
69
+ private externalEventCallback;
70
+ /**
71
+ * Registers the supplied callback function as the event handler for external events, received from the host application.
72
+ * @param callback The function to be called whenever an external event is received.
73
+ */
74
+ setExternalEventHandler(callback: ExternalEventCallback): void;
75
+ /**
76
+ * Removes the supplied callback function as the event handler for external events, received from the host application.
77
+ * @param callback The function to be unregistered.
78
+ */
79
+ removeExternalEventHandler(callback: ExternalEventCallback): void;
67
80
  /** Indicates the default trivia for any workflow. */
68
81
  trivia: {
69
82
  getFormElementRegistration: (id: string) => FormElementRegistration | undefined;
@@ -81,4 +94,10 @@ export declare class Engine {
81
94
  /** Runs a program and returns a promise for the outputs. */
82
95
  run(document: Program, options?: RunOptions): Task<{}>;
83
96
  run(inspector: ProgramInspector, options?: RunOptions): Task<{}>;
97
+ /**
98
+ * Adds an event from an external source (the host application) to the current workflow.
99
+ * This will be ignored unless there is currently a callback function registered to process it.
100
+ * @param event The event to be sent to the workflow.
101
+ */
102
+ enqueueExternalEvent(event: ExternalEvent): void;
84
103
  }
@@ -1 +1 @@
1
- import Bluebird from"bluebird";import{Activator}from"../Activator.js";import{getStringsForProgram}from"../LanguageStringUtils.js";import{Task}from"../Task.js";import{ProgramInspector,canonicalizeLocale}from"../definition/ProgramInspector.js";import{getCachedFormElements}from"../execution/ActivityLoader.js";import{BuiltInFormElements}from"../forms/manifest.js";import{check as checkLicense}from"../licensing/LicenseChecker.js";import{run}from"./ProgramRunner.js";class Engine{constructor(e){this._getFormElementRegistration=e=>this.formElements[e],this._registerFormElement=e=>{var t,r=e["id"];this.formElements[r]?(t={...this.formElements[r],...e},this.formElements[r]=t):this.formElements[r]=e},this.activator=new Activator,this.environment={},this.trivia={getFormElementRegistration:this._getFormElementRegistration,registerFormElement:this._registerFormElement},this.factories=[],this.implementations={},this.formElements={...getCachedFormElements(),...BuiltInFormElements},this.appSkuCode=e}static buildOptions(e,t){(t={...t||{}}).locale=canonicalizeLocale(t.locale),t.locale||(t.locale=e.getDefaultLocale()),t.logLevel=t.logLevel||"log";var r=new Proxy({},{get(e,t,r){return t}});const i=getStringsForProgram(e,t);return t.environment={activities:r,encodeHtml:function(e){return"string"==typeof e?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;"):""},getText:function(e){if("string"==typeof e&&"@"===e.charAt(0)){var t=e.slice(1);if(t in i)return i[t]}return e},strings:i,...t.environment||{}},t}createHandler(e,t){var r=this.implementations[e];if(void 0!==r){const n=Bluebird.resolve(r);return n.isFulfilled()?new(n.value()):n.then(function(e){return Bluebird.attempt(function(){return new e})})}for(const o of this.factories){var i=o.create(e,this._registerFormElement,t);if(void 0!==i)return i}}run(r,i){const n=this;return Task.attempt(function(){let e;r instanceof ProgramInspector?e=r:(e=new ProgramInspector,e.import(r)),checkLicense(e.program,n.appSkuCode),i=Engine.buildOptions(e,i);var t=e.resolveStart(i?i.start:void 0);return run(n,e,i,t)})}}export{Engine};
1
+ import Bluebird from"bluebird";import{Activator}from"../Activator.js";import{getStringsForProgram}from"../LanguageStringUtils.js";import{Task}from"../Task.js";import{ProgramInspector,canonicalizeLocale}from"../definition/ProgramInspector.js";import{getCachedFormElements}from"../execution/ActivityLoader.js";import{BuiltInFormElements}from"../forms/manifest.js";import{check as checkLicense}from"../licensing/LicenseChecker.js";import{run}from"./ProgramRunner.js";class Engine{constructor(e){this._getFormElementRegistration=e=>this.formElements[e],this._registerFormElement=e=>{var t,r=e["id"];this.formElements[r]?(t={...this.formElements[r],...e},this.formElements[r]=t):this.formElements[r]=e},this.activator=new Activator,this.environment={},this.trivia={getFormElementRegistration:this._getFormElementRegistration,registerFormElement:this._registerFormElement},this.factories=[],this.implementations={},this.formElements={...getCachedFormElements(),...BuiltInFormElements},this.appSkuCode=e}setExternalEventHandler(e){this.externalEventCallback=e}removeExternalEventHandler(e){e===this.externalEventCallback&&(this.externalEventCallback=void 0)}static buildOptions(e,t){(t={...t||{}}).locale=canonicalizeLocale(t.locale),t.locale||(t.locale=e.getDefaultLocale()),t.logLevel=t.logLevel||"log";var r=new Proxy({},{get(e,t,r){return t}});const n=getStringsForProgram(e,t);return t.environment={activities:r,encodeHtml:function(e){return"string"==typeof e?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;"):""},getText:function(e){if("string"==typeof e&&"@"===e.charAt(0)){var t=e.slice(1);if(t in n)return n[t]}return e},strings:n,...t.environment||{}},t}createHandler(e,t){var r=this.implementations[e];if(void 0!==r){const i=Bluebird.resolve(r);return i.isFulfilled()?new(i.value()):i.then(function(e){return Bluebird.attempt(function(){return new e})})}for(const o of this.factories){var n=o.create(e,this._registerFormElement,t);if(void 0!==n)return n}}run(r,n){return Task.attempt(()=>{let e;r instanceof ProgramInspector?e=r:(e=new ProgramInspector,e.import(r)),checkLicense(e.program,this.appSkuCode),n=Engine.buildOptions(e,n);var t=e.resolveStart(n?n.start:void 0);return run(this,e,n,t)})}enqueueExternalEvent(e){this.externalEventCallback&&this.externalEventCallback(e)}}export{Engine};
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Details of an event that the Engine received from the host application.
3
+ */
4
+ export interface ExternalEvent {
5
+ /** The name of the event. */
6
+ name: string;
7
+ /** Details of parameters that accompany the event. */
8
+ parameters?: any;
9
+ }
10
+ /**
11
+ * Callback function to be used when an external event needs to be passed
12
+ * from the Engine to Display Form.
13
+ */
14
+ export type ExternalEventCallback = (newEvent: ExternalEvent) => void;
File without changes
@@ -1,6 +1,6 @@
1
- import Bluebird from "bluebird";
2
- import { Activity } from "../definition/Activity";
3
- import { ProgramInspector } from "../definition/ProgramInspector";
1
+ import type { Activity } from "../definition/Activity";
2
+ import type { ProgramInspector } from "../definition/ProgramInspector";
3
+ import type Bluebird from "bluebird";
4
4
  /** Contains information about an activity. */
5
5
  export interface IActivityState {
6
6
  /** Indicates the identifier of this state. */
@@ -0,0 +1,11 @@
1
+ import type ActivityContext from "./ActivityContext";
2
+ import type { IMonikerFrame } from "./IDebugSession";
3
+ import type { Task } from "../Task";
4
+ declare class MonikerFrame implements IMonikerFrame {
5
+ cancellationResolve: () => void;
6
+ cancellationToken: Task<void>;
7
+ index: number;
8
+ current?: ActivityContext;
9
+ state: Record<string, ActivityContext>;
10
+ }
11
+ export {};
@@ -0,0 +1 @@
1
+ class MonikerFrame{constructor(){this.cancellationResolve=()=>{},this.cancellationToken={},this.index=-1,this.state={}}}export default MonikerFrame;
@@ -1 +1 @@
1
- import Bluebird from"bluebird";import{ActivityActivationError,ActivityBindingError,ActivityCancellationError,ActivityError,AggregateActivityError,EngineRuntimeError,ExpressionAccessorError,ExpressionEvaluationError,ExpressionSyntaxError,GenericActivityError,ProgramStartError}from"../Errors.js";import{query}from"../Hooks.js";import{Task}from"../Task.js";function isExpression(t){var e=t.type;return null==e&&"string"==typeof t.code}function createLinkedCancellationToken(t,e){const i=Task.race([new Task(e),t]),r=new AbortController;return i.signal=r.signal,i.finally(()=>r.abort()),i}function isInvalidHandler(t){return null==t||"function"!=typeof t.execute}function isLiteral(t){switch(typeof t){case"boolean":case"number":case"string":return!0}return!1}let evaluators={};function clearExpressionCache(){evaluators={}}const reservedIdentifiers=["resources","values","Date","JSON","Math","Object","parseInt","parseFloat","decodeURIComponent","encodeURIComponent"];function isAccessor(e){return!("string"!=typeof e||e.length<1)&&(!(0<=e.indexOf("."))&&!reservedIdentifiers.some(t=>t===e))}function compileExpression(t,e){var i=t.code;let r=evaluators[i];if(void 0===r){const s=[],o={};s.push('"use strict"; ');var n=t.accessors;if(Array.isArray(n))for(const a of n)isAccessor(a)&&!o[a]&&(s.push(`var ${a} = this.${a};`),o[a]=!0);s.push("return "),s.push(i),s.push(";"),r=evaluators[i]=new Function("resources","values",s.join(""))}return function(){return r.call(this,e,t.values)}}function echo(t){return t}const echoHandler={execute:echo};function combine(t,e){return{...t||{},...e||{}}}function isError(t){return void 0!==t}function filterErrors(t){return t.filter(isError)}function reduceErrors(t){return t.isPending()?t.then(filterErrors):t.isFulfilled()?Bluebird.resolve(filterErrors(t.value())):t}let nextSymbol,nextSymbolPrefix;function newSymbol(){return void 0!==nextSymbol&&1073741824<=nextSymbol&&(nextSymbol=void 0),void 0===nextSymbol&&(nextSymbol=0,nextSymbolPrefix=(new Date).valueOf()+":"),nextSymbolPrefix+nextSymbol++}const immediate=Bluebird.resolve(void 0);let guard=!0;class Proxy{get target(){}constructor(t){Object.defineProperty(this,"target",{get(){if(!1===guard)return guard=!0,t}})}}class AmbientStateProxy extends Proxy{get outputs(){return guard=!1,this.target.outputs}set outputs(t){guard=!1,this.target.outputs=t}get error(){return guard=!1,this.target.error}set error(t){guard=!1,this.target.error=t}get completion(){return guard=!1,this.target.completion}complete(t){return guard=!1,this.target.complete(t)}reject(t){return guard=!1,this.target.reject(t)}get environment(){return guard=!1,this.target.environment}get inputs(){return guard=!1,this.target.inputs}get activityContexts(){return guard=!1,this.target.activityContexts}get locale(){return guard=!1,this.target.locale}get logLevel(){return guard=!1,this.target.logLevel}set logLevel(t){guard=!1,this.target.logLevel=t}get resources(){return guard=!1,this.target.resources}get trivia(){return guard=!1,this.target.trivia}}class ActivityContextProxy extends Proxy{get luid(){return guard=!1,this.target.luid}get ambient(){return guard=!1,this.target.ambient.proxy}get action(){return guard=!1,this.target.action}get branch(){return guard=!1,this.target.branch}get cancellationToken(){return guard=!1,this.target.cancellationToken}get passes(){return guard=!1,this.target.passes}get caught(){return guard=!1,this.target.caught}call(t){return guard=!1,this.target.call(t)}fork(t){return guard=!1,this.target.fork(t)}jump(t){return guard=!1,this.target.jump(t)}hasBranch(t){return guard=!1,this.target.hasBranch(t)}get state(){return guard=!1,this.target.state}registerForErrors(){return guard=!1,this.target.registerForErrors()}persist(t){return guard=!1,this.target.persist(t)}goto(){return guard=!1,this.target.goto()}}class AmbientState{constructor(){this.debug=()=>{},this.engine={},this.inspector={},this.id="",this.environment={},this.error={},this.inputs={},this.outputs={},this.frame=new MonikerFrame,this.queue=[],this.stack=[],this.handlers={},this.cancellationResolve=()=>{},this.cancellationToken={},this.completion={},this.resolveCompletion=()=>{},this.rejectCompletion=()=>{},this.scheduler={},this.proxy={},this.inline=!1,this.halted=!1}get activityContexts(){const t={};for(const e of[...this.stack,this.frame])for(const i in e.state)"$$"===i.substring(0,2)&&(t[i]=e.state[i]);return t}break(){this.halted=!0}continue(){this.halted=!1,void 0!==this.scheduler&&!this.scheduler.isFulfilled()||(this.scheduler=immediate.then(t=>{this.execute()}))}execute(t){if(this.inline)return!1;this.inline=!0;try{void 0!==t&&t();const e=this.completion;for(;e.isPending();){if(this.halted)return!1;const i=this.frame.current.execute();if(i.isPending())break;i.isRejected()&&this.fail(i.reason())}}catch(t){this.fail(t)}finally{this.inline=!1}return!0}complete(t){this.completion.isPending()&&(this.cancellationResolve(),this.resolveCompletion(t||this.outputs))}reject(t){this.completion.isPending()&&(this.cancellationResolve(),this.rejectCompletion(t||this.error))}fail(t){this.completion.isPending()&&(this.cancellationResolve(),this.rejectCompletion(new EngineRuntimeError(t)))}cancel(){this.completion.isPending()&&(this.cancellationResolve(),this.rejectCompletion(new ActivityCancellationError))}push(){const t=this.stack;t.push(this.frame);const e=this.frame=new MonikerFrame;return e.index=t.length,e}pop(t){const e=this.frame;if(void 0!==e){e.current=void 0;const r=e.cancellationResolve;void 0!==r&&r()}var i=this.frame=this.stack.pop();return void 0===i&&(void 0!==t?this.reject(t):this.complete()),i}call(){var t=this.frame;const e=this.push();e.cancellationToken=t.cancellationToken,e.state=t.state}fork(){const e=this.push();e.cancellationToken=createLinkedCancellationToken(this.cancellationToken,t=>e.cancellationResolve=t),e.state={}}bubble(t){let e=this.pop(t);for(;void 0!==e&&!e.current.registeredForErrors;)e=this.pop(t);var i;void 0!==e&&(i=e.current,this.start(i.activity,i,t))}next(){var t=this.queue.pop();void 0!==t?this.attempt(t):void 0!==(t=this.pop())&&(t=t.current,this.start(t.activity,t))}prepare(e,t,i){const r=e.frame=this.frame;if((r.current=e).luid=this.id+":"+e.activity.id,e.action=e.activity.action,e.ambient=this,e.id=newSymbol(),e.caught=i,e.cancellationToken=createLinkedCancellationToken(r.cancellationToken,t=>e.cancellationResolve=t),e.proxy=new ActivityContextProxy(e),void 0!==t){const n=e.recent=t.recent||(t.recent={});t=n.context||t;(n.context=e).passes=t.passes+1,e.stateToPersist=e.state=t.stateToPersist}else e.passes=0}attempt(t){const e=new TransitionContext;e.activity=t,e.branch=t.branch,this.prepare(e)}start(t,e,i){const r=new(t.async?AsyncContext:StepContext);r.activity=t,r.monikers.push("$"),this.prepare(r,e,i)}enqueue(t,e){const i=this.inspector;this.queue=i.relate(t,e).list(),this.next()}goto(t){for(var e=this.stack,i=t.index;e[i]===t;)this.pop();return t===this.frame}}class MonikerFrame{constructor(){this.cancellationResolve=()=>{},this.cancellationToken={},this.index=-1,this.state={}}}class PromiseWrapper{}class ActivityContext{constructor(){this.action="",this.activity={},this.ambient={},this.frame={},this.proxy={},this.passes=0,this.inputs={},this.outputs={},this.extras=[],this.monikers=[],this.evaluators={},this.scope={},this.cancellationToken={},this.cancellationResolve=()=>{}}registerForErrors(){this.registeredForErrors=!0}persist(t){this.stateToPersist=t}call(t){this.callBranch=!0,this.forkBranch=!1,this.jumpBranch=t}fork(t){this.callBranch=!1,this.forkBranch=!0,this.jumpBranch=t}jump(t){this.callBranch=!1,this.forkBranch=!1,this.jumpBranch=t}hasBranch(t){var e=this.activity;const i=this.ambient.inspector;return i.isStep(e)&&void 0!==i.relate(e,t).peek()}emitExpressionEvaluationError(t,e){var i=this.activity.id,r=this.activity.inputs[t];return new ExpressionEvaluationError(i,t,r.source||r.code,e)}emitExpressionSyntaxError(t,e){var i=this.activity.id,r=this.activity.inputs[t];return new ExpressionSyntaxError(i,t,r.source||r.code,e)}emitExpressionAccessorError(t,e,i){return new ExpressionAccessorError(this.activity.id,t,e,i)}emitActivityBindingError(t){var e=this.activity;return new ActivityBindingError(e.id,e.action,t)}emitActivityActivationError(t,e){return new ActivityActivationError(this.activity.id,t,e)}emitActivityError(t){if(t instanceof ActivityError)return t;var e=this.activity;const i=new GenericActivityError(void 0,t?.message);return i.activityId=e.id,i.error=t,i}executeHandlerInline(e){if(0<e.length||this.cancellationToken.isFulfilled())return e;const i=this.extras;for(let t=0;t<i.length;t++)i[t]=Bluebird.resolve(i[t]).value();const r=this.inputs;for(const o in r){let t=Bluebird.resolve(r[o]).value();t instanceof PromiseWrapper&&(t=t.result),r[o]=t}const t=this.proxy,n=this.handler.value(),s=Bluebird.attempt(function(){return n.execute(r,t,...i)});return s.isPending()?s.then(t=>(this.outputs=t,e),t=>[this.emitActivityError(t)]):s.isRejected()?[this.emitActivityError(s.reason())]:(this.outputs=s.value(),e)}resolveExtrasInline(){for(const e of query(this.handler.value())){const t=this.ambient.engine.activator,i=t.activate(e);if(this.extras.push(i),i.isPending())return i.then(t=>{},t=>this.emitActivityActivationError(e.type,t));if(i.isRejected())return this.emitActivityActivationError(e.type,i.reason())}}resolveInputsInline(t){if(0<t.length||this.cancellationToken.isFulfilled())return t;const e=[];e.push(this.resolveExtrasInline());const i=this.evaluators;if(void 0!==i){const r=this.scope;for(const s in r)r[s]=Bluebird.resolve(r[s]).value();const n=this.inputs;for(const o in i){const a=n[o]=Bluebird.attempt(function(){var t=i[o].call(r,void 0,void 0);if(t&&"function"==typeof t.then){const e=new PromiseWrapper;return e.result=t,e}return t});a.isPending()&&e.push(a.then(t=>{},t=>this.emitExpressionEvaluationError(o,t))),a.isRejected()&&e.push(this.emitExpressionEvaluationError(o,a.reason()))}}return reduceErrors(Bluebird.all(e))}resolveHandlerInline(){const e=this.activity.action;if("string"==typeof e){var i=this.ambient;const r=i.handlers;let t=this.handler=r[e];if(void 0===t){const n=i.engine,s=i.inspector;t=this.handler=r[e]=Bluebird.attempt(function(){return n.createHandler(e,s)})}return t.isPending()?t.then(t=>isInvalidHandler(t)?this.emitActivityBindingError():void 0,t=>this.emitActivityBindingError(t)):t.isRejected()?this.emitActivityBindingError(t.reason()):isInvalidHandler(t.value())?this.emitActivityBindingError():void 0}this.handler=Bluebird.resolve(echoHandler)}findContext(t){var e=this.ambient,i=e.stack;let r=e.frame;for(;void 0!==r;){var n=r.state[t];if(void 0!==n)return n;r=i[r.index-1]}}resolveOutputsInline(){const t=this.promise;if(t.isPending())return t.then(t=>void 0!==t&&0<t.length?Bluebird.reject(t):this.outputs,t=>{});if(t.isRejected())return immediate;var e=t.value();return void 0!==e&&0<e.length?Bluebird.reject(e):Bluebird.resolve(this.outputs)}resolveAccessorInline(e){const t=this.findContext(e);if(void 0!==t){const i=this.scope[e]=t.resolveOutputsInline();return i.isPending()?i.then(t=>{},t=>this.emitExpressionAccessorError(e,void 0,t)):i.isRejected()?this.emitExpressionAccessorError(e,void 0,i.reason()):void 0}const i=this.scope[e]=Bluebird.resolve(this.ambient.environment[e]);return i.isPending()?i.then(t=>{},t=>this.emitExpressionAccessorError(e,t)):i.isRejected()?this.emitExpressionAccessorError(e,i.reason()):void 0}resolveAssetsInline(){const i=[];i.push(this.resolveHandlerInline());var r=this.activity.inputs;if(null!=r){let t,e;const s=this.ambient;for(const o in r){const a=r[o];if(void 0!==a&&null!==a)if(isLiteral(a))this.inputs[o]=Bluebird.resolve(a);else if(isExpression(a)){void 0===t&&(this.scope=t={}),void 0===e&&(this.evaluators=e={});var n=a.accessors;if(Array.isArray(n))for(const l of n)"string"==typeof l&&void 0===t[l]&&i.push(this.resolveAccessorInline(l));const c=Bluebird.attempt(function(){return compileExpression(a,s.resources)});c.isFulfilled()?e[o]=c.value():i.push(this.emitExpressionSyntaxError(o,c.reason()))}else i.push(this.emitExpressionSyntaxError(o))}}return reduceErrors(Bluebird.all(i))}concludeInline(t){return this.cancellationResolve(),t}generateMonikers(){const t=this.monikers;var e=this.activity;t.push("$"+e.id),"string"==typeof e.name&&t.push("$"+e.name);const i=e.action;"string"!=typeof i||1<(e=i.split(":")).length&&(0<(e=e[e.length-2]).length&&t.push("$$"+e))}marshalError(){var t=this.promise.value();return 1<t.length?new AggregateActivityError(this.activity.id,t):0<t.length?t[0]:void 0}execute(){let t=this.promise;const e=this.ambient;if(void 0!==t)return e.debug(e),e.halted||this.transferInline(),t;{if(t=this.resolveAssetsInline(),t.isRejected())return t;if(t=t.isPending()?t.then(t=>this.resolveInputsInline(t)):Bluebird.resolve(this.resolveInputsInline(t.value())),t.isRejected())return t;if(t=t.isPending()?t.then(t=>this.executeHandlerInline(t)):Bluebird.resolve(this.executeHandlerInline(t.value())),t.isRejected())return t;if(t=t.isPending()?t.then(t=>this.concludeInline(t)):Bluebird.resolve(this.concludeInline(t.value())),t.isRejected())return t;t.isPending()&&(t=t.catch(t=>e.fail(t)),t.then(t=>e.execute())),this.generateMonikers();const i=e.frame.state;for(const r of this.monikers)i[r]=this;return this.promise=t,immediate}}goto(){}}class StepContext extends ActivityContext{transferInline(){const t=this.promise;if(t.isFulfilled()){const i=this.ambient;var e=this.marshalError();void 0!==e?i.bubble(e):this.repeat?i.start(this.activity,this):(this.callBranch&&i.call(),this.forkBranch&&i.fork(),i.enqueue(this.activity,this.jumpBranch))}}goto(){const t=this.frame,e=this.ambient;if(e.goto(t)){var i=this.recent;const r=void 0!==i?i.context:this;t.current=r,r.repeat=!0,e.halted=!1,e.execute()}}}class TransitionContext extends ActivityContext{constructor(){super(...arguments),this.activity={}}test(){let t=void 0,e=void 0;var i=this.outputs;for(const r in i){if(void 0!==t&&void 0!==e)return!1;if(e=i[r],!isLiteral(e))return!1;if(void 0===t)t=e,e=void 0;else if(t!==e)return!1}return void 0===t||(void 0!==e||("boolean"==typeof t?t:"number"==typeof t?0<t:"string"==typeof t&&0<t.length))}transferInline(){const t=this.promise;if(t.isFulfilled()){const i=this.ambient;var e=this.marshalError();void 0!==e?i.bubble(e):this.test()?i.start(this.activity.target):i.next()}}}class AsyncContext extends ActivityContext{transferInline(){this.ambient.enqueue(this.activity)}execute(){return super.execute(),immediate}}function run(n,s,o,a){const c=t=>{var e=s.findStep(t);if(!e)throw new GenericActivityError(`The workflow does not contain a step with the id ${t}.`);return e},l=()=>{const e=d.frame.current.action;return s.allReferences().filter(t=>void 0!==t.suite&&e.startsWith(t.suite)).peek()?.path},u=(t,e,i,r)=>{t=c(t);const n=c(e);if(!n.transitions.some(t=>"content"===t.branch||"try"===t.branch))throw new GenericActivityError(`The ${e} step is not a Container, Subworkflow, or Try Catch activity.`);i=`${r}$${i}`;v(t,n,i)},h=t=>{var e=d.frame.current.activity,i=c(t);if("gcx:wf:core::Subworkflow"!==i.action)throw new GenericActivityError(`The target step ${t} is not a Subworkflow activity.`);v(e,i,"default")},v=(t,e,i)=>{var r=s.relate(t,i).peek();void 0!==r&&s.remove(r);const n=s.addTransition(t,e);n.branch=i},d=new AmbientState;return d.completion=new Bluebird((t,e)=>{d.resolveCompletion=t,d.rejectCompletion=e}),d.cancellationToken=new Task(t=>d.cancellationResolve=t),d.execute(function(){if(s.isStep(a)){o=o||{},d.engine=n,d.inspector=s,d.id=newSymbol(),d.debug=o.debug||(()=>{}),d.environment=combine(n.environment,o.environment),d.inputs=o.inputs||{},d.locale=o.locale,d.logLevel=o.logLevel,d.resources={forms:s.cacheForms()},d.outputs={},d.trivia=combine(n.trivia,o.trivia),d.trivia.getActivityPackUrl=l,d.trivia.setFormElementEvent=u,d.trivia.setSubworkflowTransition=h,d.proxy=new AmbientStateProxy(d);const e=d.trivia.isDescendantOf;e?d.trivia.isDescendantOf=t=>t===d.proxy||e(t):d.trivia.isDescendantOf=t=>t===d.proxy;const i=d.frame;i.index=0,i.cancellationToken=d.cancellationToken,i.state=o.state||{};var t=o.cancellationToken;if(null!=t){const r=Task.race([t,d.cancellationToken]);r.isPending()?(t=()=>d.cancel(),r.then(t,t)):d.cancel()}d.start(a)}else d.reject(new ProgramStartError)}),d.completion}export{clearExpressionCache,run};
1
+ import Bluebird from"bluebird";import{GenericActivityError,ProgramStartError}from"../Errors.js";import{Task}from"../Task.js";import AmbientState from"./AmbientState.js";import AmbientStateProxy from"./AmbientStateProxy.js";import{newSymbol}from"./util.js";function combine(e,t){return{...e||{},...t||{}}}function run(i,o,a,c){const s=e=>{var t=o.findStep(e);if(!t)throw new GenericActivityError(`The workflow does not contain a step with the id ${e}.`);return t},l=()=>{const t=u.frame.current.action;return o.allReferences().filter(e=>void 0!==e.suite&&t.startsWith(e.suite)).peek()?.path},m=(e,t,r,n)=>{e=s(e);const i=s(t);if(!i.transitions.some(e=>"content"===e.branch||"try"===e.branch))throw new GenericActivityError(`The ${t} step is not a Container, Subworkflow, or Try Catch activity.`);r=`${n}$${r}`;f(e,i,r)},v=e=>{var t=u.frame.current.activity,r=s(e);if("gcx:wf:core::Subworkflow"!==r.action)throw new GenericActivityError(`The target step ${e} is not a Subworkflow activity.`);f(t,r,"default")},f=(e,t,r)=>{var n=o.relate(e,r).peek();void 0!==n&&o.remove(n);const i=o.addTransition(e,t);i.branch=r},u=new AmbientState;return u.completion=new Bluebird((e,t)=>{u.resolveCompletion=e,u.rejectCompletion=t}),u.cancellationToken=new Task(e=>u.cancellationResolve=e),u.execute(function(){if(o.isStep(c)){a=a||{},u.engine=i,u.inspector=o,u.id=newSymbol(),u.debug=a.debug||(()=>{}),u.environment=combine(i.environment,a.environment),u.inputs=a.inputs||{},u.locale=a.locale,u.logLevel=a.logLevel,u.outputs={},u.removeExternalEventHandler=i.removeExternalEventHandler.bind(i),u.resources={forms:o.cacheForms()},u.setExternalEventHandler=i.setExternalEventHandler.bind(i),u.trivia=combine(i.trivia,a.trivia),u.trivia.getActivityPackUrl=l,u.trivia.setFormElementEvent=m,u.trivia.setSubworkflowTransition=v,u.proxy=new AmbientStateProxy(u);const t=u.trivia.isDescendantOf;t?u.trivia.isDescendantOf=e=>e===u.proxy||t(e):u.trivia.isDescendantOf=e=>e===u.proxy;const r=u.frame;r.index=0,r.cancellationToken=u.cancellationToken,r.state=a.state||{};var e=a.cancellationToken;if(null!=e){const n=Task.race([e,u.cancellationToken]);n.isPending()?(e=()=>u.cancel(),n.then(e,e)):u.cancel()}u.start(c)}else u.reject(new ProgramStartError)}),u.completion}export{run};
@@ -0,0 +1,5 @@
1
+ declare class Proxy<T> {
2
+ get target(): T;
3
+ constructor(target: T);
4
+ }
5
+ export {};
@@ -0,0 +1 @@
1
+ let guard=!0;function clearGuard(){guard=!1}class Proxy{get target(){}constructor(r){Object.defineProperty(this,"target",{get(){if(!1===guard)return guard=!0,r}})}}export default Proxy;export{clearGuard};
@@ -0,0 +1,6 @@
1
+ import ActivityContext from "./ActivityContext";
2
+ declare class StepContext extends ActivityContext {
3
+ protected transferInline(): void;
4
+ goto(): void;
5
+ }
6
+ export {};
@@ -0,0 +1 @@
1
+ import ActivityContext from"./ActivityContext.js";class StepContext extends ActivityContext{transferInline(){const t=this.promise;if(t.isFulfilled()){const e=this.ambient;var i=this.marshalError();void 0!==i?e.bubble(i):this.repeat?e.start(this.activity,this):(this.callBranch&&e.call(),this.forkBranch&&e.fork(),e.enqueue(this.activity,this.jumpBranch))}}goto(){const t=this.frame,i=this.ambient;if(i.goto(t)){var e=this.recent;const s=void 0!==e?e.context:this;t.current=s,s.repeat=!0,i.halted=!1,i.execute()}}}export default StepContext;
@@ -0,0 +1,8 @@
1
+ import ActivityContext from "./ActivityContext";
2
+ import type { Transition } from "../definition/Transition";
3
+ declare class TransitionContext extends ActivityContext {
4
+ activity: Transition;
5
+ private test;
6
+ protected transferInline(): void;
7
+ }
8
+ export {};
@@ -0,0 +1 @@
1
+ import ActivityContext from"./ActivityContext.js";import{isLiteral}from"./util.js";class TransitionContext extends ActivityContext{constructor(){super(...arguments),this.activity={}}test(){let t=void 0,i=void 0;var e=this.outputs;for(const o in e){if(void 0!==t&&void 0!==i)return!1;if(i=e[o],!isLiteral(i))return!1;if(void 0===t)t=i,i=void 0;else if(t!==i)return!1}return void 0===t||(void 0!==i||("boolean"==typeof t?t:"number"==typeof t?0<t:"string"==typeof t&&0<t.length))}transferInline(){const t=this.promise;if(t.isFulfilled()){const e=this.ambient;var i=this.marshalError();void 0!==i?e.bubble(i):this.test()?e.start(this.activity.target):e.next()}}}export default TransitionContext;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ const reservedIdentifiers=["resources","values","Date","JSON","Math","Object","parseInt","parseFloat","decodeURIComponent","encodeURIComponent"];function isAccessor(n){return!("string"!=typeof n||n.length<1)&&(!(0<=n.indexOf("."))&&!reservedIdentifiers.some(e=>e===n))}function isExpression(e){var n=e.type;return null==n&&"string"==typeof e.code}function isLiteral(e){switch(typeof e){case"boolean":case"number":case"string":return!0}return!1}let nextSymbol,nextSymbolPrefix;function newSymbol(){return void 0!==nextSymbol&&1073741824<=nextSymbol&&(nextSymbol=void 0),void 0===nextSymbol&&(nextSymbol=0,nextSymbolPrefix=(new Date).valueOf()+":"),nextSymbolPrefix+nextSymbol++}export{isAccessor,isExpression,isLiteral,newSymbol};
@@ -1,8 +1,8 @@
1
1
  import { Component } from "react";
2
- import * as defs from "./FormDefinition";
3
- import { FormPresenterHost } from "./FormPresenterHost";
2
+ import type * as defs from "./FormDefinition";
3
+ import type { FormPresenterHost } from "./FormPresenterHost";
4
4
  import type { FormElementProps, FormElementRegistration } from "./index";
5
- export { FormPresenterHost };
5
+ export type { FormPresenterHost };
6
6
  export interface EventValueTypes {
7
7
  changed: defs.Value | undefined;
8
8
  cancel: string | undefined;
@@ -21,7 +21,7 @@ export interface EventArgumentTypes {
21
21
  }
22
22
  export interface FormComponentProps {
23
23
  host: FormPresenterHost;
24
- type?: "form" | "body" | "row" | "header" | "main" | "footer" | "element" | "section" | "accordionGroup";
24
+ type?: "form" | "body" | "row" | "header" | "main" | "footer" | "element" | "section" | "accordionGroup" | "tabGroup";
25
25
  name?: string;
26
26
  children: JSX.Element[];
27
27
  }
@@ -1,4 +1,5 @@
1
- import { NumberDisplayFormat } from "./numberFormatter";
1
+ import type { NumberDisplayFormat } from "./numberFormatter";
2
+ import type { ExternalEvent } from "../execution/ExternalEvent";
2
3
  /**
3
4
  * References a container.
4
5
  * @product This is intended for internal use only within VertiGIS Studio products.
@@ -206,7 +207,7 @@ export interface NumberFormat {
206
207
  * @product This is intended for internal use only within VertiGIS Studio products.
207
208
  */
208
209
  export type GeometryFormat = "polygon" | "polyline" | "point" | "polygon-freehand" | "polyline-freehand" | "extent" | "line";
209
- export type SectionFormat = "accordion-section" | "unstyled-section" | "fieldset-section" | "basic-section" | "collapsible-section";
210
+ export type SectionFormat = "accordion-section" | "basic-section" | "collapsible-section" | "fieldset-section" | "tab-section" | "unstyled-section";
210
211
  /**
211
212
  * The `SectionFormat` to use when no value is specified.
212
213
  * @product This is intended for internal use only within VertiGIS Studio products.
@@ -376,7 +377,7 @@ export interface Item {
376
377
  /** Indicates the style name to be used. */
377
378
  styleName?: string;
378
379
  }
379
- export type EventType = "load" | "cancel" | "checked" | "changed" | "clicked" | "custom" | "dragged" | "suggest" | "submit" | "end" | "verify" | "validate" | "populate" | "prepare";
380
+ export type EventType = "cancel" | "changed" | "checked" | "clicked" | "custom" | "dragged" | "end" | "external" | "load" | "populate" | "prepare" | "submit" | "suggest" | "validate" | "verify";
380
381
  /** @product This is intended for internal use only within VertiGIS Studio products. */
381
382
  export interface Event {
382
383
  /** Indicates the name of the element raising the event. */
@@ -388,7 +389,7 @@ export interface Event {
388
389
  /** Indicates the routing key of the event. */
389
390
  routingKey?: string;
390
391
  /** Indicates the argument for the event. */
391
- argument?: Value;
392
+ argument?: Value | ExternalEvent;
392
393
  /** Indicates the value associated with the element or item. */
393
394
  value?: Value;
394
395
  /** Indicates the cancellation token fro the event. */
@@ -1,7 +1,6 @@
1
- import { ReactNode } from "react";
2
1
  import * as React from "react";
3
- import { FormComponent } from "./FormComponent";
4
- import { defs } from "./FormHost";
2
+ import type { FormComponent } from "./FormComponent";
3
+ import type { defs } from "./FormHost";
5
4
  interface FormElementProps {
6
5
  /** The CSS class name of the root element. */
7
6
  className?: string;
@@ -19,6 +18,6 @@ interface FormElementProps {
19
18
  inputId?: string;
20
19
  }
21
20
  declare const _default: React.ForwardRefExoticComponent<FormElementProps & {
22
- children?: ReactNode;
21
+ children?: React.ReactNode;
23
22
  } & React.RefAttributes<HTMLDivElement>>;
24
23
  export default _default;
@@ -1,8 +1,9 @@
1
1
  import Bluebird from "bluebird";
2
- import { FormComponent } from "./FormComponent";
3
2
  import * as defs from "./FormDefinition";
4
- import { FormPresenterHost } from "./FormPresenterHost";
5
- import { FormatOptions } from "./numberFormatter";
3
+ import type { FormComponent } from "./FormComponent";
4
+ import type { FormPresenterHost } from "./FormPresenterHost";
5
+ import type { FormatOptions } from "./numberFormatter";
6
+ import type { ExternalEvent } from "../execution/ExternalEvent";
6
7
  import type { ComponentType, ReactNode } from "react";
7
8
  export { defs };
8
9
  export interface FormEventSubscription {
@@ -129,10 +130,16 @@ export declare abstract class FormHost implements FormPresenterHost {
129
130
  publish(type: defs.EventType, event?: defs.Event): defs.Event;
130
131
  /** Enqueues an event (used by publish()). */
131
132
  enqueue(type: defs.EventType, event?: defs.Event): defs.Event;
133
+ /**
134
+ * Pass on an external event to the queue.
135
+ * This method is an arrow function so that the consumer can use it without an object reference.
136
+ * @param event The event to be added to the queue.
137
+ */
138
+ enqueueExternalEvent: (event: ExternalEvent) => void;
132
139
  /** Dequeues the next event (used by observe()). */
133
140
  dequeue(): defs.Event | undefined;
134
141
  /** Observes the form. */
135
- observe(): Bluebird<any>;
142
+ observe(): Bluebird<defs.Event>;
136
143
  /** Loads the form. */
137
144
  load(form?: defs.Form, template?: defs.Form): boolean;
138
145
  /** Routes an event to achieve default behavior. */
@@ -216,10 +223,10 @@ export declare abstract class FormHost implements FormPresenterHost {
216
223
  private getAllSectionElements;
217
224
  private getMutuallyExclusiveSectionGroup;
218
225
  /**
219
- * Collapses all neighbouring accordion sections except the one specified.
220
- * @param expandedAccordionSectionName The name of the accordion section to be expanded. All others in the group will be collapsed.
226
+ * Collapses all neighbouring sections except the one specified.
227
+ * @param expandedSectionName The name of the mutually exclusive section to be expanded. All others in the group will be collapsed.
221
228
  */
222
- updateAccordionSections(expandedAccordionSectionName: string): void;
223
- private enforceAccordionConstraints;
229
+ updateMutuallyExclusiveSections(expandedSectionName: string): void;
230
+ private enforceMutuallyExclusiveConstraints;
224
231
  displayDialog(children: (closeDialog: () => void) => ReactNode, DialogComponent: ComponentType<any>): Promise<void>;
225
232
  }