octoparse-cli 0.1.14

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 (278) hide show
  1. package/README.md +271 -0
  2. package/RUNTIME_SECURITY_NOTICE.txt +41 -0
  3. package/SECURITY.md +24 -0
  4. package/dist/cli/args.js +34 -0
  5. package/dist/cli/help.js +214 -0
  6. package/dist/cli/output.js +39 -0
  7. package/dist/commands/auth.js +283 -0
  8. package/dist/commands/capabilities.js +118 -0
  9. package/dist/commands/cloud.js +241 -0
  10. package/dist/commands/data.js +220 -0
  11. package/dist/commands/doctor.js +73 -0
  12. package/dist/commands/env.js +63 -0
  13. package/dist/commands/local.js +251 -0
  14. package/dist/commands/run.js +622 -0
  15. package/dist/commands/runs.js +171 -0
  16. package/dist/commands/task.js +101 -0
  17. package/dist/index.js +133 -0
  18. package/dist/runtime/account-capabilities.js +71 -0
  19. package/dist/runtime/api-client.js +290 -0
  20. package/dist/runtime/artifacts.js +33 -0
  21. package/dist/runtime/auth.js +94 -0
  22. package/dist/runtime/bridge-hub.js +173 -0
  23. package/dist/runtime/client-headers.js +23 -0
  24. package/dist/runtime/cloud-data.js +75 -0
  25. package/dist/runtime/config.js +48 -0
  26. package/dist/runtime/data-exporter.js +267 -0
  27. package/dist/runtime/engine-host.js +449 -0
  28. package/dist/runtime/local-runs.js +92 -0
  29. package/dist/runtime/naming.js +13 -0
  30. package/dist/runtime/run-control.js +363 -0
  31. package/dist/runtime/run-services.js +380 -0
  32. package/dist/runtime/security-notice.js +78 -0
  33. package/dist/runtime/task-definition-provider.js +282 -0
  34. package/dist/types.js +4 -0
  35. package/examples/minimal-task.json +6 -0
  36. package/examples/navigate-example-task.json +6 -0
  37. package/node_modules/@octopus/bpmn/index.js +3 -0
  38. package/node_modules/@octopus/bpmn/lib/Context.js +245 -0
  39. package/node_modules/@octopus/bpmn/lib/Definition.js +258 -0
  40. package/node_modules/@octopus/bpmn/lib/Engine.js +275 -0
  41. package/node_modules/@octopus/bpmn/lib/PrematureStopError.js +7 -0
  42. package/node_modules/@octopus/bpmn/lib/activities/Activity.js +202 -0
  43. package/node_modules/@octopus/bpmn/lib/activities/BaseProcess.js +308 -0
  44. package/node_modules/@octopus/bpmn/lib/activities/BaseTask.js +145 -0
  45. package/node_modules/@octopus/bpmn/lib/activities/BoundaryEvent.js +12 -0
  46. package/node_modules/@octopus/bpmn/lib/activities/Dummy.js +10 -0
  47. package/node_modules/@octopus/bpmn/lib/activities/EventDefinition.js +99 -0
  48. package/node_modules/@octopus/bpmn/lib/activities/Flow.js +52 -0
  49. package/node_modules/@octopus/bpmn/lib/activities/Form.js +67 -0
  50. package/node_modules/@octopus/bpmn/lib/activities/InputOutput.js +53 -0
  51. package/node_modules/@octopus/bpmn/lib/activities/IntermediateCatchEvent.js +12 -0
  52. package/node_modules/@octopus/bpmn/lib/activities/MessageFlow.js +19 -0
  53. package/node_modules/@octopus/bpmn/lib/activities/MultiInstanceLoopCharacteristics.js +160 -0
  54. package/node_modules/@octopus/bpmn/lib/activities/Properties.js +27 -0
  55. package/node_modules/@octopus/bpmn/lib/activities/SequenceFlow.js +56 -0
  56. package/node_modules/@octopus/bpmn/lib/activities/ServiceConnector.js +71 -0
  57. package/node_modules/@octopus/bpmn/lib/context-helper.js +198 -0
  58. package/node_modules/@octopus/bpmn/lib/events/EndEvent.js +22 -0
  59. package/node_modules/@octopus/bpmn/lib/events/ErrorEvent.js +41 -0
  60. package/node_modules/@octopus/bpmn/lib/events/MessageEvent.js +19 -0
  61. package/node_modules/@octopus/bpmn/lib/events/StartEvent.js +55 -0
  62. package/node_modules/@octopus/bpmn/lib/events/TimerEvent.js +75 -0
  63. package/node_modules/@octopus/bpmn/lib/expressions.js +41 -0
  64. package/node_modules/@octopus/bpmn/lib/gateways/ExclusiveGateway.js +86 -0
  65. package/node_modules/@octopus/bpmn/lib/gateways/InclusiveGateway.js +56 -0
  66. package/node_modules/@octopus/bpmn/lib/gateways/ParallelGateway.js +195 -0
  67. package/node_modules/@octopus/bpmn/lib/getPropertyValue.js +83 -0
  68. package/node_modules/@octopus/bpmn/lib/index.js +6 -0
  69. package/node_modules/@octopus/bpmn/lib/mapper.js +55 -0
  70. package/node_modules/@octopus/bpmn/lib/parameter.js +119 -0
  71. package/node_modules/@octopus/bpmn/lib/script-helper.js +45 -0
  72. package/node_modules/@octopus/bpmn/lib/tasks/ManualTask.js +31 -0
  73. package/node_modules/@octopus/bpmn/lib/tasks/ReceiveTask.js +31 -0
  74. package/node_modules/@octopus/bpmn/lib/tasks/ScriptTask.js +35 -0
  75. package/node_modules/@octopus/bpmn/lib/tasks/SendTask.js +16 -0
  76. package/node_modules/@octopus/bpmn/lib/tasks/ServiceTask.js +68 -0
  77. package/node_modules/@octopus/bpmn/lib/tasks/SubProcess.js +17 -0
  78. package/node_modules/@octopus/bpmn/lib/tasks/Task.js +16 -0
  79. package/node_modules/@octopus/bpmn/lib/tasks/UserTask.js +47 -0
  80. package/node_modules/@octopus/bpmn/lib/transformer.js +13 -0
  81. package/node_modules/@octopus/bpmn/lib/validation.js +111 -0
  82. package/node_modules/@octopus/bpmn/package.json +17 -0
  83. package/node_modules/@octopus/bpmn/types/bpmn.d.ts +85 -0
  84. package/node_modules/@octopus/engine/README.md +370 -0
  85. package/node_modules/@octopus/engine/dist/actions/BackPreWebPageAction.d.ts +4 -0
  86. package/node_modules/@octopus/engine/dist/actions/BackPreWebPageAction.js +1 -0
  87. package/node_modules/@octopus/engine/dist/actions/BaseAction.d.ts +339 -0
  88. package/node_modules/@octopus/engine/dist/actions/BaseAction.js +1559 -0
  89. package/node_modules/@octopus/engine/dist/actions/BranchAction.d.ts +9 -0
  90. package/node_modules/@octopus/engine/dist/actions/BranchAction.js +1 -0
  91. package/node_modules/@octopus/engine/dist/actions/ClickAction.d.ts +22 -0
  92. package/node_modules/@octopus/engine/dist/actions/ClickAction.js +1 -0
  93. package/node_modules/@octopus/engine/dist/actions/ConditionAction.d.ts +4 -0
  94. package/node_modules/@octopus/engine/dist/actions/ConditionAction.js +1 -0
  95. package/node_modules/@octopus/engine/dist/actions/EmptyAction.d.ts +4 -0
  96. package/node_modules/@octopus/engine/dist/actions/EmptyAction.js +12 -0
  97. package/node_modules/@octopus/engine/dist/actions/EnterCaptchaAction.d.ts +28 -0
  98. package/node_modules/@octopus/engine/dist/actions/EnterCaptchaAction.js +1 -0
  99. package/node_modules/@octopus/engine/dist/actions/EnterTextAction.d.ts +20 -0
  100. package/node_modules/@octopus/engine/dist/actions/EnterTextAction.js +1 -0
  101. package/node_modules/@octopus/engine/dist/actions/ExtractDataAction.d.ts +40 -0
  102. package/node_modules/@octopus/engine/dist/actions/ExtractDataAction.js +1 -0
  103. package/node_modules/@octopus/engine/dist/actions/LoopAction.d.ts +41 -0
  104. package/node_modules/@octopus/engine/dist/actions/LoopAction.js +526 -0
  105. package/node_modules/@octopus/engine/dist/actions/LoopStartAction.d.ts +47 -0
  106. package/node_modules/@octopus/engine/dist/actions/LoopStartAction.js +607 -0
  107. package/node_modules/@octopus/engine/dist/actions/MouseOverAction.d.ts +8 -0
  108. package/node_modules/@octopus/engine/dist/actions/MouseOverAction.js +34 -0
  109. package/node_modules/@octopus/engine/dist/actions/NavigateAction.d.ts +38 -0
  110. package/node_modules/@octopus/engine/dist/actions/NavigateAction.js +535 -0
  111. package/node_modules/@octopus/engine/dist/actions/SwitchComboAction.d.ts +13 -0
  112. package/node_modules/@octopus/engine/dist/actions/SwitchComboAction.js +69 -0
  113. package/node_modules/@octopus/engine/dist/browser.d.ts +17 -0
  114. package/node_modules/@octopus/engine/dist/browser.js +157 -0
  115. package/node_modules/@octopus/engine/dist/browserProxy.d.ts +90 -0
  116. package/node_modules/@octopus/engine/dist/browserProxy.js +1 -0
  117. package/node_modules/@octopus/engine/dist/configs/BaseConfig.d.ts +20 -0
  118. package/node_modules/@octopus/engine/dist/configs/BaseConfig.js +88 -0
  119. package/node_modules/@octopus/engine/dist/configs/BranchConfig.d.ts +7 -0
  120. package/node_modules/@octopus/engine/dist/configs/BranchConfig.js +1 -0
  121. package/node_modules/@octopus/engine/dist/configs/ClickConfig.d.ts +36 -0
  122. package/node_modules/@octopus/engine/dist/configs/ClickConfig.js +65 -0
  123. package/node_modules/@octopus/engine/dist/configs/EnterCaptchaConfig.d.ts +19 -0
  124. package/node_modules/@octopus/engine/dist/configs/EnterCaptchaConfig.js +25 -0
  125. package/node_modules/@octopus/engine/dist/configs/EnterTextConfig.d.ts +24 -0
  126. package/node_modules/@octopus/engine/dist/configs/EnterTextConfig.js +36 -0
  127. package/node_modules/@octopus/engine/dist/configs/ExtractDataConfig.d.ts +12 -0
  128. package/node_modules/@octopus/engine/dist/configs/ExtractDataConfig.js +1 -0
  129. package/node_modules/@octopus/engine/dist/configs/LoopConfig.d.ts +25 -0
  130. package/node_modules/@octopus/engine/dist/configs/LoopConfig.js +40 -0
  131. package/node_modules/@octopus/engine/dist/configs/LoopStartConfig.d.ts +4 -0
  132. package/node_modules/@octopus/engine/dist/configs/LoopStartConfig.js +12 -0
  133. package/node_modules/@octopus/engine/dist/configs/MouseOverConfig.d.ts +8 -0
  134. package/node_modules/@octopus/engine/dist/configs/MouseOverConfig.js +15 -0
  135. package/node_modules/@octopus/engine/dist/configs/NavigateConfig.d.ts +41 -0
  136. package/node_modules/@octopus/engine/dist/configs/NavigateConfig.js +121 -0
  137. package/node_modules/@octopus/engine/dist/configs/SwitchComboConfig.d.ts +8 -0
  138. package/node_modules/@octopus/engine/dist/configs/SwitchComboConfig.js +15 -0
  139. package/node_modules/@octopus/engine/dist/enums/index.d.ts +419 -0
  140. package/node_modules/@octopus/engine/dist/enums/index.js +314 -0
  141. package/node_modules/@octopus/engine/dist/extension/BrowserWebSocketTransport-D_zAGZMQ.js +1 -0
  142. package/node_modules/@octopus/engine/dist/extension/LaunchOptions-DxvePrV4.js +6 -0
  143. package/node_modules/@octopus/engine/dist/extension/NodeWebSocketTransport-BTgRVB7Z.js +6 -0
  144. package/node_modules/@octopus/engine/dist/extension/background.js +396 -0
  145. package/node_modules/@octopus/engine/dist/extension/bidi-C_GIZ8Uz.js +131 -0
  146. package/node_modules/@octopus/engine/dist/extension/manifest.json +27 -0
  147. package/node_modules/@octopus/engine/dist/extension/src/content/anti-detection.js +1 -0
  148. package/node_modules/@octopus/engine/dist/extension-bridge/BaseExtensionBridge.d.ts +21 -0
  149. package/node_modules/@octopus/engine/dist/extension-bridge/BaseExtensionBridge.js +117 -0
  150. package/node_modules/@octopus/engine/dist/extension-bridge/SessionExtensionBridge.d.ts +17 -0
  151. package/node_modules/@octopus/engine/dist/extension-bridge/SessionExtensionBridge.js +29 -0
  152. package/node_modules/@octopus/engine/dist/extension-bridge/index.d.ts +2 -0
  153. package/node_modules/@octopus/engine/dist/extension-bridge/index.js +5 -0
  154. package/node_modules/@octopus/engine/dist/extension-bridge/types.d.ts +159 -0
  155. package/node_modules/@octopus/engine/dist/extension-bridge/types.js +5 -0
  156. package/node_modules/@octopus/engine/dist/extensions/ublock-origin/uBlock0.chromium.tar.xz +0 -0
  157. package/node_modules/@octopus/engine/dist/extensions/ublock-origin-lite/uBOLite.chromium.tar.xz +0 -0
  158. package/node_modules/@octopus/engine/dist/index.d.ts +169 -0
  159. package/node_modules/@octopus/engine/dist/index.js +1 -0
  160. package/node_modules/@octopus/engine/dist/models/actionItem.d.ts +16 -0
  161. package/node_modules/@octopus/engine/dist/models/actionItem.js +15 -0
  162. package/node_modules/@octopus/engine/dist/models/conditionCheckArgs.d.ts +11 -0
  163. package/node_modules/@octopus/engine/dist/models/conditionCheckArgs.js +11 -0
  164. package/node_modules/@octopus/engine/dist/models/customizeCookie.d.ts +14 -0
  165. package/node_modules/@octopus/engine/dist/models/customizeCookie.js +6 -0
  166. package/node_modules/@octopus/engine/dist/models/downloadFileConfig.d.ts +17 -0
  167. package/node_modules/@octopus/engine/dist/models/downloadFileConfig.js +26 -0
  168. package/node_modules/@octopus/engine/dist/models/elementNotFoundArgs.d.ts +8 -0
  169. package/node_modules/@octopus/engine/dist/models/elementNotFoundArgs.js +12 -0
  170. package/node_modules/@octopus/engine/dist/models/elementNotFoundError.d.ts +2 -0
  171. package/node_modules/@octopus/engine/dist/models/elementNotFoundError.js +6 -0
  172. package/node_modules/@octopus/engine/dist/models/extractItem.d.ts +37 -0
  173. package/node_modules/@octopus/engine/dist/models/extractItem.js +35 -0
  174. package/node_modules/@octopus/engine/dist/models/extractTemplate.d.ts +11 -0
  175. package/node_modules/@octopus/engine/dist/models/extractTemplate.js +48 -0
  176. package/node_modules/@octopus/engine/dist/models/extractTextItem.d.ts +10 -0
  177. package/node_modules/@octopus/engine/dist/models/extractTextItem.js +17 -0
  178. package/node_modules/@octopus/engine/dist/models/globalConfig.d.ts +5 -0
  179. package/node_modules/@octopus/engine/dist/models/globalConfig.js +1 -0
  180. package/node_modules/@octopus/engine/dist/models/httpHeader.d.ts +4 -0
  181. package/node_modules/@octopus/engine/dist/models/httpHeader.js +10 -0
  182. package/node_modules/@octopus/engine/dist/models/operation.d.ts +27 -0
  183. package/node_modules/@octopus/engine/dist/models/operation.js +242 -0
  184. package/node_modules/@octopus/engine/dist/models/retryCondition.d.ts +7 -0
  185. package/node_modules/@octopus/engine/dist/models/retryCondition.js +10 -0
  186. package/node_modules/@octopus/engine/dist/models/task.d.ts +89 -0
  187. package/node_modules/@octopus/engine/dist/models/task.js +120 -0
  188. package/node_modules/@octopus/engine/dist/models/trigger.d.ts +66 -0
  189. package/node_modules/@octopus/engine/dist/models/trigger.js +117 -0
  190. package/node_modules/@octopus/engine/dist/package.json +26 -0
  191. package/node_modules/@octopus/engine/dist/public-types.d.ts +13 -0
  192. package/node_modules/@octopus/engine/dist/public-types.js +2 -0
  193. package/node_modules/@octopus/engine/dist/settings.d.ts +41 -0
  194. package/node_modules/@octopus/engine/dist/settings.js +20 -0
  195. package/node_modules/@octopus/engine/dist/solvers/captcha/ClickCaptchaSolver.d.ts +6 -0
  196. package/node_modules/@octopus/engine/dist/solvers/captcha/ClickCaptchaSolver.js +1 -0
  197. package/node_modules/@octopus/engine/dist/solvers/captcha/HCaptchaSolver.d.ts +4 -0
  198. package/node_modules/@octopus/engine/dist/solvers/captcha/HCaptchaSolver.js +73 -0
  199. package/node_modules/@octopus/engine/dist/solvers/captcha/ImageCaptchaSolver.d.ts +2 -0
  200. package/node_modules/@octopus/engine/dist/solvers/captcha/ImageCaptchaSolver.js +74 -0
  201. package/node_modules/@octopus/engine/dist/solvers/captcha/RecaptchaSolver.d.ts +9 -0
  202. package/node_modules/@octopus/engine/dist/solvers/captcha/RecaptchaSolver.js +371 -0
  203. package/node_modules/@octopus/engine/dist/solvers/captcha/SliderCaptchaSolver.d.ts +6 -0
  204. package/node_modules/@octopus/engine/dist/solvers/captcha/SliderCaptchaSolver.js +184 -0
  205. package/node_modules/@octopus/engine/dist/solvers/captcha/SlidingTrajectory.d.ts +50 -0
  206. package/node_modules/@octopus/engine/dist/solvers/captcha/SlidingTrajectory.js +125 -0
  207. package/node_modules/@octopus/engine/dist/solvers/captcha/types.d.ts +68 -0
  208. package/node_modules/@octopus/engine/dist/solvers/captcha/types.js +34 -0
  209. package/node_modules/@octopus/engine/dist/solvers/captcha/utils.d.ts +2 -0
  210. package/node_modules/@octopus/engine/dist/solvers/captcha/utils.js +15 -0
  211. package/node_modules/@octopus/engine/dist/translator/actionFactory.d.ts +6 -0
  212. package/node_modules/@octopus/engine/dist/translator/actionFactory.js +1 -0
  213. package/node_modules/@octopus/engine/dist/translator/activityTypeEnum.d.ts +22 -0
  214. package/node_modules/@octopus/engine/dist/translator/activityTypeEnum.js +1 -0
  215. package/node_modules/@octopus/engine/dist/translator/backPreWebPageAction.d.ts +5 -0
  216. package/node_modules/@octopus/engine/dist/translator/backPreWebPageAction.js +1 -0
  217. package/node_modules/@octopus/engine/dist/translator/baseAction.d.ts +31 -0
  218. package/node_modules/@octopus/engine/dist/translator/baseAction.js +1 -0
  219. package/node_modules/@octopus/engine/dist/translator/breakActivity.d.ts +5 -0
  220. package/node_modules/@octopus/engine/dist/translator/breakActivity.js +1 -0
  221. package/node_modules/@octopus/engine/dist/translator/clickAction.d.ts +5 -0
  222. package/node_modules/@octopus/engine/dist/translator/clickAction.js +1 -0
  223. package/node_modules/@octopus/engine/dist/translator/completeWF.d.ts +5 -0
  224. package/node_modules/@octopus/engine/dist/translator/completeWF.js +1 -0
  225. package/node_modules/@octopus/engine/dist/translator/conditionAction.d.ts +6 -0
  226. package/node_modules/@octopus/engine/dist/translator/conditionAction.js +1 -0
  227. package/node_modules/@octopus/engine/dist/translator/emptyAction.d.ts +5 -0
  228. package/node_modules/@octopus/engine/dist/translator/emptyAction.js +1 -0
  229. package/node_modules/@octopus/engine/dist/translator/enterCapachaAction.d.ts +5 -0
  230. package/node_modules/@octopus/engine/dist/translator/enterCapachaAction.js +1 -0
  231. package/node_modules/@octopus/engine/dist/translator/enterTextAction.d.ts +5 -0
  232. package/node_modules/@octopus/engine/dist/translator/enterTextAction.js +1 -0
  233. package/node_modules/@octopus/engine/dist/translator/extractDataAction.d.ts +13 -0
  234. package/node_modules/@octopus/engine/dist/translator/extractDataAction.js +1 -0
  235. package/node_modules/@octopus/engine/dist/translator/loopAction.d.ts +5 -0
  236. package/node_modules/@octopus/engine/dist/translator/loopAction.js +1 -0
  237. package/node_modules/@octopus/engine/dist/translator/mouseOverAction.d.ts +5 -0
  238. package/node_modules/@octopus/engine/dist/translator/mouseOverAction.js +19 -0
  239. package/node_modules/@octopus/engine/dist/translator/navigateAction.d.ts +5 -0
  240. package/node_modules/@octopus/engine/dist/translator/navigateAction.js +117 -0
  241. package/node_modules/@octopus/engine/dist/translator/rootAction.d.ts +6 -0
  242. package/node_modules/@octopus/engine/dist/translator/rootAction.js +80 -0
  243. package/node_modules/@octopus/engine/dist/translator/switchCombo2Action.d.ts +5 -0
  244. package/node_modules/@octopus/engine/dist/translator/switchCombo2Action.js +19 -0
  245. package/node_modules/@octopus/engine/dist/translator/translator.d.ts +1 -0
  246. package/node_modules/@octopus/engine/dist/translator/translator.js +36 -0
  247. package/node_modules/@octopus/engine/dist/type.d.ts +25 -0
  248. package/node_modules/@octopus/engine/dist/type.js +2 -0
  249. package/node_modules/@octopus/engine/dist/types/browser.d.ts +191 -0
  250. package/node_modules/@octopus/engine/dist/types/browser.js +1 -0
  251. package/node_modules/@octopus/engine/dist/types/browserManager.d.ts +41 -0
  252. package/node_modules/@octopus/engine/dist/types/browserManager.js +1 -0
  253. package/node_modules/@octopus/engine/dist/types/index.d.ts +40 -0
  254. package/node_modules/@octopus/engine/dist/types/index.js +2 -0
  255. package/node_modules/@octopus/engine/dist/types/plugin.d.ts +29 -0
  256. package/node_modules/@octopus/engine/dist/types/plugin.js +2 -0
  257. package/node_modules/@octopus/engine/dist/utils/AsyncEmitter.d.ts +15 -0
  258. package/node_modules/@octopus/engine/dist/utils/AsyncEmitter.js +1 -0
  259. package/node_modules/@octopus/engine/dist/utils/DataStore.d.ts +58 -0
  260. package/node_modules/@octopus/engine/dist/utils/DataStore.js +1 -0
  261. package/node_modules/@octopus/engine/dist/utils/DateTimeFormatHelper.d.ts +22 -0
  262. package/node_modules/@octopus/engine/dist/utils/DateTimeFormatHelper.js +173 -0
  263. package/node_modules/@octopus/engine/dist/utils/FileDownloader.d.ts +108 -0
  264. package/node_modules/@octopus/engine/dist/utils/FileDownloader.js +1 -0
  265. package/node_modules/@octopus/engine/dist/utils/HttpRequester.d.ts +43 -0
  266. package/node_modules/@octopus/engine/dist/utils/HttpRequester.js +174 -0
  267. package/node_modules/@octopus/engine/dist/utils/JsonParser.d.ts +95 -0
  268. package/node_modules/@octopus/engine/dist/utils/JsonParser.js +439 -0
  269. package/node_modules/@octopus/engine/dist/utils/Operations.d.ts +27 -0
  270. package/node_modules/@octopus/engine/dist/utils/Operations.js +115 -0
  271. package/node_modules/@octopus/engine/dist/utils/index.d.ts +28 -0
  272. package/node_modules/@octopus/engine/dist/utils/index.js +356 -0
  273. package/node_modules/@octopus/engine/package.json +58 -0
  274. package/package.json +79 -0
  275. package/schemas/capabilities-v1.schema.json +234 -0
  276. package/schemas/detached-bootstrap-v1.schema.json +42 -0
  277. package/schemas/json-envelope-v1.schema.json +39 -0
  278. package/schemas/run-event-v1.schema.json +47 -0
@@ -0,0 +1,258 @@
1
+ 'use strict';
2
+
3
+ const contextHelper = require('./context-helper');
4
+ const debug = require('debug')('bpmn-engine:definition');
5
+ const EventEmitter = require('events').EventEmitter;
6
+ const getPropertyValue = require('./getPropertyValue');
7
+ const mapper = require('./mapper');
8
+ const validation = require('./validation');
9
+
10
+ const internals = {};
11
+
12
+ module.exports = internals.Definition = function(moddleContext, options) {
13
+ if (!moddleContext) throw new Error('No moddle context');
14
+ this.moddleContext = moddleContext;
15
+ this.id = getPropertyValue(moddleContext, 'rootHandler.element.id', 'anonymous');
16
+ options = options || {};
17
+
18
+ validation.validateOptions(options);
19
+ this.processes = [];
20
+
21
+ this.options = options;
22
+ };
23
+
24
+ internals.Definition.resume = function(state, optionsOrCallback, callback) {
25
+ let options;
26
+ if (typeof optionsOrCallback === 'function') {
27
+ callback = optionsOrCallback;
28
+ options = {};
29
+ } else if (optionsOrCallback) {
30
+ options = {
31
+ listener: optionsOrCallback.listener
32
+ };
33
+ }
34
+
35
+ const definition = new internals.Definition(state.moddleContext, options);
36
+
37
+ function resumeCallback(err) {
38
+ if (err) {
39
+ teardownProcesses.call(definition);
40
+ if (callback) return callback.apply(null, arguments);
41
+ return definition.emit('error', err);
42
+ }
43
+ if (callback) return callback.apply(null, arguments);
44
+ }
45
+
46
+ debug(`<${definition.id}> resume`);
47
+ delete this.stopped;
48
+
49
+ setTimeout(() => {
50
+ definition.getProcesses(options, (err, instance, siblings) => {
51
+ if (err) return resumeCallback.call(definition, err);
52
+ setupProcesses.call(definition);
53
+ siblings.forEach((p) => p.resume(state.processes[p.id]));
54
+ resumeCallback.call(definition, null, instance, siblings);
55
+ });
56
+ }, 0);
57
+ return definition;
58
+ };
59
+
60
+ internals.Definition.prototype = Object.create(EventEmitter.prototype);
61
+
62
+ internals.Definition.prototype.execute = function(optionsOrCallback, callback) {
63
+ let options;
64
+ if (typeof optionsOrCallback === 'function') {
65
+ callback = optionsOrCallback;
66
+ options = this.options;
67
+ } else {
68
+ options = optionsOrCallback;
69
+ validation.validateOptions(options);
70
+ }
71
+
72
+ debug(`<${this.id}>`, 'start');
73
+
74
+ this.getProcesses(options, (getErr, firstExecutableProcess, allProcesses) => {
75
+ if (getErr) {
76
+ if (callback) return callback(getErr);
77
+ return this.emit('error', getErr, this);
78
+ }
79
+
80
+ if (!this.entryPointId) {
81
+ const entryErr = new Error(`definition <${this.id}> has no executable process`);
82
+ if (callback) return callback(entryErr);
83
+ return this.emit('error', entryErr, this);
84
+ }
85
+
86
+ this.started = true;
87
+ setupProcesses.call(this);
88
+ this.emit('start', this);
89
+
90
+ if (callback) callback(null, firstExecutableProcess, allProcesses);
91
+ firstExecutableProcess.run();
92
+ });
93
+ };
94
+
95
+ internals.Definition.prototype.signal = function(activityId, output) {
96
+ const activity = this.getChildActivityById(activityId);
97
+ if (!activity) {
98
+ debug(`<${this.id}>`, `signal failed! Activity <${activityId}> was not found`);
99
+ return false;
100
+ }
101
+ debug(`<${this.id}>`, `signal ${activity.type} <${activityId}>`);
102
+ activity.signal(output);
103
+ return true;
104
+ };
105
+
106
+ internals.Definition.prototype.stop = function() {
107
+ debug(`<${this.id}>`, 'stop');
108
+ this.stopped = true;
109
+ teardownProcesses.call(this);
110
+ this.processes.forEach((p) => p.deactivate());
111
+ this.emit('end', this);
112
+ };
113
+
114
+ internals.Definition.prototype.getState = function() {
115
+ const state = {
116
+ id: this.id,
117
+ state: getRunningStatus.call(this),
118
+ moddleContext: contextHelper.cloneContext(this.moddleContext)
119
+ };
120
+ if (this.stopped) {
121
+ state.stopped = true;
122
+ }
123
+
124
+ state.processes = this.processes.reduce((result, instance) => {
125
+ result[instance.id] = instance.getState();
126
+ return result;
127
+ }, {});
128
+
129
+ return state;
130
+ };
131
+
132
+ internals.Definition.prototype.getPendingActivities = function() {
133
+ const pendingState = {
134
+ id: this.id,
135
+ state: getRunningStatus.call(this)
136
+ };
137
+
138
+ pendingState.children = this.processes.reduce((result, instance) => {
139
+ result = result.concat(instance.getPendingActivities());
140
+ return result;
141
+ }, []);
142
+
143
+ return pendingState;
144
+ };
145
+
146
+ internals.Definition.prototype.getProcesses = function(optionsOrCallback, callback) {
147
+ let options;
148
+ if (typeof optionsOrCallback === 'function') {
149
+ callback = optionsOrCallback;
150
+ } else {
151
+ validation.validateOptions(optionsOrCallback);
152
+ options = optionsOrCallback;
153
+ }
154
+
155
+ if (this.started) {
156
+ if (callback) callback(null, this.mainProcess, this.processes);
157
+ return this.processes;
158
+ }
159
+
160
+ const warnings = validation.validateModdleContext(this.moddleContext);
161
+ if (warnings.length) {
162
+ if (callback) return callback(warnings[0]);
163
+ return this.emit('error', warnings[0], this);
164
+ }
165
+
166
+ loadProcesses.call(this, this.moddleContext, options || this.options);
167
+
168
+ if (callback) callback(null, this.mainProcess, this.processes);
169
+ return this.processes;
170
+ };
171
+
172
+ internals.Definition.prototype.getProcessById = function(processId) {
173
+ return this.processes.find((p) => p.id === processId);
174
+ };
175
+
176
+ internals.Definition.prototype.getChildActivityById = function(childId) {
177
+ let child;
178
+ if (!this.processes.length) {
179
+ loadProcesses.call(this, this.moddleContext, this.options);
180
+ }
181
+
182
+ for (let i = 0; i < this.processes.length; i++) {
183
+ child = this.processes[i].getChildActivityById(childId);
184
+ if (child) break;
185
+ }
186
+ return child;
187
+ };
188
+
189
+ internals.Definition.prototype.onMessage = function(from, message, via) {
190
+ const targetElement = contextHelper.getTargetProcess(this.moddleContext, via.targetId);
191
+
192
+ debug(`<${this.id}>`, `message sent from <${from.id}> via <${via.id}> to <${targetElement.id}>`);
193
+
194
+ this.getProcessById(targetElement.id).signal(via.targetId, message);
195
+ };
196
+
197
+ internals.Definition.prototype.onEnd = function(process) {
198
+ updateVariables.call(this, process);
199
+
200
+ if (this.processes.every((p) => p.isEnded)) {
201
+ debug(`<${this.id}>`, 'end');
202
+ teardownProcesses.call(this);
203
+ this.started = false;
204
+ this.isEnded = true;
205
+ this.emit('end', this);
206
+ }
207
+ };
208
+
209
+ internals.Definition.prototype.onError = function() {
210
+ const args = Array.prototype.slice.call(arguments);
211
+ teardownProcesses.call(this);
212
+
213
+ args.unshift('error');
214
+ args.push(this);
215
+ this.emit.apply(this, args);
216
+ };
217
+
218
+ function loadProcesses(moddleContext, options) {
219
+ const processElements = contextHelper.getProcesses(moddleContext);
220
+
221
+ this.processes = processElements.map((e) => new mapper.Process(e, moddleContext, options));
222
+ this.entryPointId = contextHelper.getExecutableProcessId(moddleContext);
223
+
224
+ debug(`<${this.id}>`, `found ${this.processes.length} processes. Start with <${this.entryPointId}>`);
225
+ this.mainProcess = this.processes.find((p) => p.id === this.entryPointId);
226
+ return this.processes;
227
+ }
228
+
229
+ function setupProcesses() {
230
+ this._onMessage = this.onMessage.bind(this);
231
+ this._onEnd = this.onEnd.bind(this);
232
+ this._onError = this.onError.bind(this);
233
+
234
+ this.processes.forEach((p) => {
235
+ p.on('message', this._onMessage);
236
+ p.on('leave', this._onEnd);
237
+ p.on('error', this._onError);
238
+ });
239
+ }
240
+
241
+ function teardownProcesses() {
242
+ this.processes.forEach((p) => {
243
+ p.removeListener('message', this._onMessage);
244
+ p.removeListener('leave', this._onEnd);
245
+ p.removeListener('error', this._onError);
246
+ });
247
+ }
248
+
249
+ function updateVariables(process) {
250
+ this.variables = this.variables || {};
251
+ this.variables = Object.assign(this.variables, process.context.variables);
252
+ }
253
+
254
+ function getRunningStatus() {
255
+ if (!this.hasOwnProperty('started')) return 'pending';
256
+ return this.started ? 'running' : 'completed';
257
+ }
258
+
@@ -0,0 +1,275 @@
1
+ 'use strict';
2
+
3
+ const Async = require('async');
4
+ const contextHelper = require('./context-helper');
5
+ const debug = require('debug')('bpmn-engine:engine');
6
+ const EventEmitter = require('events').EventEmitter;
7
+ const mapper = require('./mapper');
8
+ const transformer = require('./transformer');
9
+ const validation = require('./validation');
10
+ const packageVersion = require('../package.json').version;
11
+
12
+ const internals = {};
13
+ const validOptions = ['name', 'source', 'moddleContext', 'moddleOptions'];
14
+
15
+ module.exports = internals.Engine = function(options) {
16
+ options = options || {};
17
+
18
+ Object.keys(options).forEach((key) => {
19
+ if (validOptions.indexOf(key) === -1) throw new Error(`Option ${key} is unsupported`);
20
+ });
21
+
22
+ this.name = options.name || 'undefined';
23
+ this.definitions = [];
24
+ this.sources = [];
25
+ this.moddleContexts = [];
26
+ this.moddleOptions = options.moddleOptions;
27
+
28
+ if (options.source) {
29
+ addSource.call(this, options.source);
30
+ }
31
+ if (options.moddleContext) {
32
+ addModdleContext.call(this, options.moddleContext);
33
+ }
34
+
35
+ this._onEnd = this.onEnd.bind(this);
36
+ this._onError = this.onError.bind(this);
37
+ };
38
+
39
+ internals.Engine.prototype = Object.create(EventEmitter.prototype);
40
+
41
+ internals.Engine.resume = function(engineState, executeOptionsOrCallback, callback) {
42
+ if (!Array.isArray(engineState.definitions)) {
43
+ throw new Error('State definitions must be an array');
44
+ }
45
+
46
+ let options;
47
+ if (typeof executeOptionsOrCallback === 'function') {
48
+ callback = executeOptionsOrCallback;
49
+ options = {};
50
+ } else {
51
+ options = executeOptionsOrCallback;
52
+ }
53
+
54
+ function resumeCallback(err) {
55
+ if (err) {
56
+ teardownDefinitions.call(engine);
57
+ if (callback) return callback.apply(null, arguments);
58
+ return this.emit('error', err);
59
+ }
60
+ if (callback) return callback.apply(null, arguments);
61
+ }
62
+
63
+ const engine = new internals.Engine({
64
+ name: engineState.name
65
+ });
66
+ debug(`<${engine.name}>`, 'resume');
67
+
68
+ function resume() {
69
+ Async.each(engineState.definitions, (definitionState, next) => {
70
+ const definition = mapper.Definition.resume(definitionState, options, next);
71
+ engine.definitions.push(definition);
72
+ setupDefinition.call(engine, definition);
73
+ }, (err) => {
74
+ if (err) return resumeCallback.call(engine, err);
75
+ resumeCallback.call(engine, null, engine.definitions[0], engine.definitions);
76
+ });
77
+ }
78
+
79
+ process.nextTick(resume);
80
+
81
+ return engine;
82
+ };
83
+
84
+ internals.Engine.prototype.execute = function(executeOptionsOrCallback, callback) {
85
+ let executeOptions = {};
86
+ if (typeof executeOptionsOrCallback === 'function') {
87
+ callback = executeOptionsOrCallback;
88
+ executeOptions = {};
89
+ } else {
90
+ validation.validateOptions(executeOptionsOrCallback);
91
+ executeOptions = executeOptionsOrCallback;
92
+ }
93
+
94
+ function executeCallback(err) {
95
+ if (callback) return callback.apply(null, arguments);
96
+ if (err) this.emit('error', err);
97
+ }
98
+
99
+ this.getDefinitions((getErr, definitions) => {
100
+ if (getErr) return executeCallback.call(this, getErr);
101
+ if (!definitions.length) return executeCallback.call(this, new Error('Nothing to execute'));
102
+
103
+ debug(`<${this.name}>`, `start all definitions (${definitions.length})`);
104
+
105
+ setupDefinitions.call(this, definitions);
106
+
107
+ this.started = true;
108
+ Async.each(definitions, (d, next) => {
109
+ d.execute(executeOptions, next);
110
+ }, (err) => {
111
+ executeCallback.call(this, err, definitions[0], definitions);
112
+ });
113
+ });
114
+ };
115
+
116
+ internals.Engine.prototype.getDefinitions = function(callback) {
117
+ if (this.definitions.length) return callback(null, this.definitions);
118
+ return loadDefinitions.call(this, callback);
119
+ };
120
+
121
+ internals.Engine.prototype.getDefinition = function(callback) {
122
+ this.getDefinitions((err, definitions) => {
123
+ if (err) return callback(err);
124
+ if (definitions.length === 0) return callback();
125
+ const definition = definitions[0];
126
+ return callback(null, definition);
127
+ });
128
+ };
129
+
130
+ internals.Engine.prototype.addDefinitionBySource = function(source, moddleOptionsOrCallback, callback) {
131
+ let moddleOptions;
132
+ if (typeof moddleOptionsOrCallback === 'function') {
133
+ callback = moddleOptionsOrCallback;
134
+ moddleOptions = this.moddleOptions;
135
+ } else {
136
+ moddleOptions = moddleOptionsOrCallback;
137
+ }
138
+
139
+ getModdleContext(source, moddleOptions, (err, moddleContext) => {
140
+ if (err) return callback(err);
141
+ return callback(null, this.addDefinitionByModdleContext(moddleContext));
142
+ });
143
+ };
144
+
145
+ internals.Engine.prototype.addDefinitionByModdleContext = function(moddleContext) {
146
+ const idx = this.definitions.findIndex((d) => d.id === contextHelper.getDefinitionId(moddleContext));
147
+ const definition = new mapper.Definition(moddleContext);
148
+ if (idx === -1) {
149
+ debug(`<${this.name}>`, `add definition <${definition.id}>`);
150
+ this.definitions.push(definition);
151
+ } else {
152
+ debug(`<${this.name}>`, `definition <${definition.id}> is replaced`);
153
+ this.definitions[idx] = definition;
154
+ }
155
+ return definition;
156
+ };
157
+
158
+ internals.Engine.prototype.getDefinitionById = function(definitionId) {
159
+ return this.definitions.find((d) => d.id === definitionId);
160
+ };
161
+
162
+ internals.Engine.prototype.onEnd = function(lastReportingDefinition) {
163
+ if (this.definitions.every((d) => d.isEnded || d.stopped)) {
164
+ debug(`<${this.name}>`, 'end');
165
+ teardownDefinitions.call(this);
166
+ this.started = false;
167
+ this.emit('end', lastReportingDefinition);
168
+ }
169
+ };
170
+
171
+ internals.Engine.prototype.onError = function() {
172
+ const args = Array.prototype.slice.call(arguments);
173
+
174
+ teardownDefinitions.call(this);
175
+ this.started = false;
176
+
177
+ args.unshift('error');
178
+ this.emit.apply(this, args);
179
+ };
180
+
181
+ internals.Engine.prototype.getState = function() {
182
+ const state = {
183
+ name: this.name,
184
+ state: this.started ? 'running' : 'idle',
185
+ engineVersion: packageVersion
186
+ };
187
+
188
+ state.definitions = this.definitions.map((definition) => {
189
+ return definition.getState();
190
+ });
191
+ return state;
192
+ };
193
+
194
+ internals.Engine.prototype.getPendingActivities = function() {
195
+ const pendingState = {
196
+ name: this.name,
197
+ state: this.started ? 'running' : 'idle',
198
+ };
199
+
200
+ pendingState.definitions = this.definitions.map((definition) => {
201
+ return definition.getPendingActivities();
202
+ });
203
+ return pendingState;
204
+ };
205
+
206
+ internals.Engine.prototype.signal = function(activityId, output) {
207
+ if (!this.started) return;
208
+
209
+ for (const defIdx in this.definitions) {
210
+ const definition = this.definitions[defIdx];
211
+ const child = definition.getChildActivityById(activityId);
212
+ if (child && child.waiting) {
213
+ return definition.signal(activityId, output);
214
+ }
215
+ }
216
+ };
217
+
218
+ internals.Engine.prototype.stop = function() {
219
+ debug(`<${this.name}>`, 'stop');
220
+ this.definitions.forEach((d) => d.stop());
221
+ };
222
+
223
+ function addSource(sourceXml) {
224
+ if (Buffer.isBuffer(sourceXml)) {
225
+ this.sources.push(sourceXml.toString());
226
+ } else if (typeof sourceXml === 'string') {
227
+ this.sources.push(sourceXml);
228
+ } else {
229
+ this.emit('error', new Error('Unparsable Bpmn source'));
230
+ }
231
+ }
232
+
233
+ function addModdleContext(moddleContext) {
234
+ this.moddleContexts.push(moddleContext);
235
+ }
236
+
237
+ function loadDefinitionBySource(source, callback) {
238
+ debug(`<${this.name}>`, 'load definition from source');
239
+ getModdleContext(source, this.moddleOptions, (err, moddleContext) => {
240
+ if (err) return callback(err);
241
+ return callback(null, this.addDefinitionByModdleContext(moddleContext));
242
+ });
243
+ }
244
+
245
+ function loadDefinitions(callback) {
246
+ if (this.sources.length) {
247
+ return Async.map(this.sources, loadDefinitionBySource.bind(this), callback);
248
+ }
249
+ if (this.moddleContexts.length) {
250
+ return callback(null, this.moddleContexts.map(this.addDefinitionByModdleContext.bind(this)));
251
+ }
252
+ return callback(null, []);
253
+ }
254
+
255
+ function setupDefinition(definition) {
256
+ definition.on('end', this._onEnd);
257
+ definition.on('error', this._onError);
258
+ }
259
+
260
+ function setupDefinitions(definitions) {
261
+ definitions.forEach(setupDefinition.bind(this));
262
+ }
263
+
264
+ function teardownDefinitions() {
265
+ this.definitions.forEach((p) => {
266
+ p.removeListener('end', this._onEnd);
267
+ p.removeListener('error', this._onError);
268
+ });
269
+ }
270
+
271
+ function getModdleContext(source, moddleOptions, callback) {
272
+ transformer.transform(source, moddleOptions, (err, def, moddleContext) => {
273
+ return callback(err, moddleContext);
274
+ });
275
+ }
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ function PrematureStopError() {}
4
+
5
+ PrematureStopError.prototype = Object.create(Error.prototype);
6
+
7
+ module.exports = PrematureStopError;