@testsmith/testblocks 0.9.4 → 0.9.7

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 (300) hide show
  1. package/dist/cli/index.js +4 -1
  2. package/dist/client/assets/index-B8OSvcUg.css +1 -0
  3. package/dist/client/assets/index-CMMJHs_d.js +2197 -0
  4. package/dist/client/assets/index-CMMJHs_d.js.map +1 -0
  5. package/dist/client/index.html +2 -2
  6. package/dist/core/blocks/api/ApiAssertBodyContainsBlock.d.ts +13 -0
  7. package/dist/core/blocks/api/ApiAssertBodyContainsBlock.js +40 -0
  8. package/dist/core/blocks/api/ApiAssertStatusBlock.d.ts +13 -0
  9. package/dist/core/blocks/api/ApiAssertStatusBlock.js +35 -0
  10. package/dist/core/blocks/api/ApiClearHeadersBlock.d.ts +13 -0
  11. package/dist/core/blocks/api/ApiClearHeadersBlock.js +25 -0
  12. package/dist/core/blocks/api/ApiDeleteBlock.d.ts +13 -0
  13. package/dist/core/blocks/api/ApiDeleteBlock.js +37 -0
  14. package/dist/core/blocks/api/ApiExtractBlock.d.ts +14 -0
  15. package/dist/core/blocks/api/ApiExtractBlock.js +40 -0
  16. package/dist/core/blocks/api/ApiExtractJsonPathBlock.d.ts +13 -0
  17. package/dist/core/blocks/api/ApiExtractJsonPathBlock.js +47 -0
  18. package/dist/core/blocks/api/ApiExtractXPathBlock.d.ts +13 -0
  19. package/dist/core/blocks/api/ApiExtractXPathBlock.js +70 -0
  20. package/dist/core/blocks/api/ApiGetBlock.d.ts +13 -0
  21. package/dist/core/blocks/api/ApiGetBlock.js +36 -0
  22. package/dist/core/blocks/api/ApiHeadersBlock.d.ts +14 -0
  23. package/dist/core/blocks/api/ApiHeadersBlock.js +44 -0
  24. package/dist/core/blocks/api/ApiJsonBodyBlock.d.ts +14 -0
  25. package/dist/core/blocks/api/ApiJsonBodyBlock.js +28 -0
  26. package/dist/core/blocks/api/ApiPatchBlock.d.ts +13 -0
  27. package/dist/core/blocks/api/ApiPatchBlock.js +47 -0
  28. package/dist/core/blocks/api/ApiPostBlock.d.ts +13 -0
  29. package/dist/core/blocks/api/ApiPostBlock.js +47 -0
  30. package/dist/core/blocks/api/ApiPutBlock.d.ts +13 -0
  31. package/dist/core/blocks/api/ApiPutBlock.js +47 -0
  32. package/dist/core/blocks/api/ApiSetHeaderBlock.d.ts +13 -0
  33. package/dist/core/blocks/api/ApiSetHeaderBlock.js +37 -0
  34. package/dist/core/blocks/api/ApiSetHeadersBlock.d.ts +13 -0
  35. package/dist/core/blocks/api/ApiSetHeadersBlock.js +41 -0
  36. package/dist/core/blocks/api/index.d.ts +25 -0
  37. package/dist/core/blocks/api/index.js +83 -0
  38. package/dist/core/blocks/base/Block.d.ts +59 -0
  39. package/dist/core/blocks/base/Block.js +151 -0
  40. package/dist/core/blocks/base/ContainerBlock.d.ts +14 -0
  41. package/dist/core/blocks/base/ContainerBlock.js +16 -0
  42. package/dist/core/blocks/base/ControlFlowBlock.d.ts +13 -0
  43. package/dist/core/blocks/base/ControlFlowBlock.js +17 -0
  44. package/dist/core/blocks/base/StatementBlock.d.ts +9 -0
  45. package/dist/core/blocks/base/StatementBlock.js +16 -0
  46. package/dist/core/blocks/base/ValueBlock.d.ts +12 -0
  47. package/dist/core/blocks/base/ValueBlock.js +16 -0
  48. package/dist/core/blocks/base/index.d.ts +5 -0
  49. package/dist/core/blocks/base/index.js +13 -0
  50. package/dist/core/blocks/data/DataCsvBlock.d.ts +14 -0
  51. package/dist/core/blocks/data/DataCsvBlock.js +51 -0
  52. package/dist/core/blocks/data/DataDefineBlock.d.ts +14 -0
  53. package/dist/core/blocks/data/DataDefineBlock.js +28 -0
  54. package/dist/core/blocks/data/DataForeachBlock.d.ts +13 -0
  55. package/dist/core/blocks/data/DataForeachBlock.js +37 -0
  56. package/dist/core/blocks/data/DataFromVariableBlock.d.ts +14 -0
  57. package/dist/core/blocks/data/DataFromVariableBlock.js +27 -0
  58. package/dist/core/blocks/data/DataGetCurrentBlock.d.ts +14 -0
  59. package/dist/core/blocks/data/DataGetCurrentBlock.js +34 -0
  60. package/dist/core/blocks/data/DataGetIndexBlock.d.ts +14 -0
  61. package/dist/core/blocks/data/DataGetIndexBlock.js +24 -0
  62. package/dist/core/blocks/data/DataGetNameBlock.d.ts +14 -0
  63. package/dist/core/blocks/data/DataGetNameBlock.js +24 -0
  64. package/dist/core/blocks/data/DataRangeBlock.d.ts +14 -0
  65. package/dist/core/blocks/data/DataRangeBlock.js +40 -0
  66. package/dist/core/blocks/data/DataRowBlock.d.ts +14 -0
  67. package/dist/core/blocks/data/DataRowBlock.js +33 -0
  68. package/dist/core/blocks/data/DataTableBlock.d.ts +14 -0
  69. package/dist/core/blocks/data/DataTableBlock.js +51 -0
  70. package/dist/core/blocks/data/index.d.ts +20 -0
  71. package/dist/core/blocks/data/index.js +57 -0
  72. package/dist/core/blocks/index.d.ts +66 -5
  73. package/dist/core/blocks/index.js +134 -35
  74. package/dist/core/blocks/lifecycle/LifecycleAfterAllBlock.d.ts +15 -0
  75. package/dist/core/blocks/lifecycle/LifecycleAfterAllBlock.js +27 -0
  76. package/dist/core/blocks/lifecycle/LifecycleAfterEachBlock.d.ts +15 -0
  77. package/dist/core/blocks/lifecycle/LifecycleAfterEachBlock.js +27 -0
  78. package/dist/core/blocks/lifecycle/LifecycleBeforeAllBlock.d.ts +15 -0
  79. package/dist/core/blocks/lifecycle/LifecycleBeforeAllBlock.js +28 -0
  80. package/dist/core/blocks/lifecycle/LifecycleBeforeEachBlock.d.ts +15 -0
  81. package/dist/core/blocks/lifecycle/LifecycleBeforeEachBlock.js +27 -0
  82. package/dist/core/blocks/lifecycle/LifecycleOnFailureBlock.d.ts +13 -0
  83. package/dist/core/blocks/lifecycle/LifecycleOnFailureBlock.js +25 -0
  84. package/dist/core/blocks/lifecycle/LifecycleRetryBlock.d.ts +13 -0
  85. package/dist/core/blocks/lifecycle/LifecycleRetryBlock.js +29 -0
  86. package/dist/core/blocks/lifecycle/LifecycleSetupBlock.d.ts +13 -0
  87. package/dist/core/blocks/lifecycle/LifecycleSetupBlock.js +27 -0
  88. package/dist/core/blocks/lifecycle/LifecycleSkipIfBlock.d.ts +13 -0
  89. package/dist/core/blocks/lifecycle/LifecycleSkipIfBlock.js +31 -0
  90. package/dist/core/blocks/lifecycle/LifecycleTeardownBlock.d.ts +13 -0
  91. package/dist/core/blocks/lifecycle/LifecycleTeardownBlock.js +27 -0
  92. package/dist/core/blocks/lifecycle/TestCaseBlock.d.ts +21 -0
  93. package/dist/core/blocks/lifecycle/TestCaseBlock.js +72 -0
  94. package/dist/core/blocks/lifecycle/TestCaseDataDrivenBlock.d.ts +21 -0
  95. package/dist/core/blocks/lifecycle/TestCaseDataDrivenBlock.js +102 -0
  96. package/dist/core/blocks/lifecycle/index.d.ts +21 -0
  97. package/dist/core/blocks/lifecycle/index.js +63 -0
  98. package/dist/core/blocks/logic/LogicArrayBlock.d.ts +14 -0
  99. package/dist/core/blocks/logic/LogicArrayBlock.js +28 -0
  100. package/dist/core/blocks/logic/LogicAssertBlock.d.ts +13 -0
  101. package/dist/core/blocks/logic/LogicAssertBlock.js +32 -0
  102. package/dist/core/blocks/logic/LogicBooleanBlock.d.ts +14 -0
  103. package/dist/core/blocks/logic/LogicBooleanBlock.js +26 -0
  104. package/dist/core/blocks/logic/LogicBooleanOpBlock.d.ts +14 -0
  105. package/dist/core/blocks/logic/LogicBooleanOpBlock.js +31 -0
  106. package/dist/core/blocks/logic/LogicCommentBlock.d.ts +13 -0
  107. package/dist/core/blocks/logic/LogicCommentBlock.js +26 -0
  108. package/dist/core/blocks/logic/LogicCompareBlock.d.ts +14 -0
  109. package/dist/core/blocks/logic/LogicCompareBlock.js +52 -0
  110. package/dist/core/blocks/logic/LogicFailBlock.d.ts +16 -0
  111. package/dist/core/blocks/logic/LogicFailBlock.js +30 -0
  112. package/dist/core/blocks/logic/LogicForeachBlock.d.ts +13 -0
  113. package/dist/core/blocks/logic/LogicForeachBlock.js +29 -0
  114. package/dist/core/blocks/logic/LogicGetVariableBlock.d.ts +14 -0
  115. package/dist/core/blocks/logic/LogicGetVariableBlock.js +27 -0
  116. package/dist/core/blocks/logic/LogicIfBlock.d.ts +13 -0
  117. package/dist/core/blocks/logic/LogicIfBlock.js +36 -0
  118. package/dist/core/blocks/logic/LogicLogBlock.d.ts +13 -0
  119. package/dist/core/blocks/logic/LogicLogBlock.js +30 -0
  120. package/dist/core/blocks/logic/LogicNotBlock.d.ts +14 -0
  121. package/dist/core/blocks/logic/LogicNotBlock.js +26 -0
  122. package/dist/core/blocks/logic/LogicNumberBlock.d.ts +14 -0
  123. package/dist/core/blocks/logic/LogicNumberBlock.js +26 -0
  124. package/dist/core/blocks/logic/LogicObjectBlock.d.ts +14 -0
  125. package/dist/core/blocks/logic/LogicObjectBlock.js +28 -0
  126. package/dist/core/blocks/logic/LogicRepeatBlock.d.ts +13 -0
  127. package/dist/core/blocks/logic/LogicRepeatBlock.js +27 -0
  128. package/dist/core/blocks/logic/LogicSetVariableBlock.d.ts +13 -0
  129. package/dist/core/blocks/logic/LogicSetVariableBlock.js +34 -0
  130. package/dist/core/blocks/logic/LogicTextBlock.d.ts +14 -0
  131. package/dist/core/blocks/logic/LogicTextBlock.js +27 -0
  132. package/dist/core/blocks/logic/LogicTryCatchBlock.d.ts +13 -0
  133. package/dist/core/blocks/logic/LogicTryCatchBlock.js +26 -0
  134. package/dist/core/blocks/logic/index.d.ts +28 -0
  135. package/dist/core/blocks/logic/index.js +95 -0
  136. package/dist/core/blocks/playwright/assertions/WebAssertAccessibleDescriptionBlock.d.ts +13 -0
  137. package/dist/core/blocks/playwright/assertions/WebAssertAccessibleDescriptionBlock.js +41 -0
  138. package/dist/core/blocks/playwright/assertions/WebAssertAccessibleNameBlock.d.ts +13 -0
  139. package/dist/core/blocks/playwright/assertions/WebAssertAccessibleNameBlock.js +41 -0
  140. package/dist/core/blocks/playwright/assertions/WebAssertAttachedBlock.d.ts +13 -0
  141. package/dist/core/blocks/playwright/assertions/WebAssertAttachedBlock.js +39 -0
  142. package/dist/core/blocks/playwright/assertions/WebAssertAttributeBlock.d.ts +13 -0
  143. package/dist/core/blocks/playwright/assertions/WebAssertAttributeBlock.js +44 -0
  144. package/dist/core/blocks/playwright/assertions/WebAssertCheckedBlock.d.ts +13 -0
  145. package/dist/core/blocks/playwright/assertions/WebAssertCheckedBlock.js +48 -0
  146. package/dist/core/blocks/playwright/assertions/WebAssertClassBlock.d.ts +13 -0
  147. package/dist/core/blocks/playwright/assertions/WebAssertClassBlock.js +43 -0
  148. package/dist/core/blocks/playwright/assertions/WebAssertCountBlock.d.ts +13 -0
  149. package/dist/core/blocks/playwright/assertions/WebAssertCountBlock.js +41 -0
  150. package/dist/core/blocks/playwright/assertions/WebAssertCssBlock.d.ts +13 -0
  151. package/dist/core/blocks/playwright/assertions/WebAssertCssBlock.js +44 -0
  152. package/dist/core/blocks/playwright/assertions/WebAssertDisabledBlock.d.ts +13 -0
  153. package/dist/core/blocks/playwright/assertions/WebAssertDisabledBlock.js +39 -0
  154. package/dist/core/blocks/playwright/assertions/WebAssertEditableBlock.d.ts +13 -0
  155. package/dist/core/blocks/playwright/assertions/WebAssertEditableBlock.js +39 -0
  156. package/dist/core/blocks/playwright/assertions/WebAssertEmptyBlock.d.ts +13 -0
  157. package/dist/core/blocks/playwright/assertions/WebAssertEmptyBlock.js +39 -0
  158. package/dist/core/blocks/playwright/assertions/WebAssertEnabledBlock.d.ts +13 -0
  159. package/dist/core/blocks/playwright/assertions/WebAssertEnabledBlock.js +39 -0
  160. package/dist/core/blocks/playwright/assertions/WebAssertFocusedBlock.d.ts +13 -0
  161. package/dist/core/blocks/playwright/assertions/WebAssertFocusedBlock.js +39 -0
  162. package/dist/core/blocks/playwright/assertions/WebAssertIdBlock.d.ts +13 -0
  163. package/dist/core/blocks/playwright/assertions/WebAssertIdBlock.js +41 -0
  164. package/dist/core/blocks/playwright/assertions/WebAssertInViewportBlock.d.ts +13 -0
  165. package/dist/core/blocks/playwright/assertions/WebAssertInViewportBlock.js +39 -0
  166. package/dist/core/blocks/playwright/assertions/WebAssertNotVisibleBlock.d.ts +13 -0
  167. package/dist/core/blocks/playwright/assertions/WebAssertNotVisibleBlock.js +39 -0
  168. package/dist/core/blocks/playwright/assertions/WebAssertRoleBlock.d.ts +13 -0
  169. package/dist/core/blocks/playwright/assertions/WebAssertRoleBlock.js +69 -0
  170. package/dist/core/blocks/playwright/assertions/WebAssertTextContainsBlock.d.ts +13 -0
  171. package/dist/core/blocks/playwright/assertions/WebAssertTextContainsBlock.js +41 -0
  172. package/dist/core/blocks/playwright/assertions/WebAssertTextEqualsBlock.d.ts +13 -0
  173. package/dist/core/blocks/playwright/assertions/WebAssertTextEqualsBlock.js +41 -0
  174. package/dist/core/blocks/playwright/assertions/WebAssertTitleContainsBlock.d.ts +13 -0
  175. package/dist/core/blocks/playwright/assertions/WebAssertTitleContainsBlock.js +39 -0
  176. package/dist/core/blocks/playwright/assertions/WebAssertTitleEqualsBlock.d.ts +13 -0
  177. package/dist/core/blocks/playwright/assertions/WebAssertTitleEqualsBlock.js +36 -0
  178. package/dist/core/blocks/playwright/assertions/WebAssertUrlContainsBlock.d.ts +13 -0
  179. package/dist/core/blocks/playwright/assertions/WebAssertUrlContainsBlock.js +40 -0
  180. package/dist/core/blocks/playwright/assertions/WebAssertUrlEqualsBlock.d.ts +13 -0
  181. package/dist/core/blocks/playwright/assertions/WebAssertUrlEqualsBlock.js +37 -0
  182. package/dist/core/blocks/playwright/assertions/WebAssertValueBlock.d.ts +13 -0
  183. package/dist/core/blocks/playwright/assertions/WebAssertValueBlock.js +43 -0
  184. package/dist/core/blocks/playwright/assertions/WebAssertValueContainsBlock.d.ts +13 -0
  185. package/dist/core/blocks/playwright/assertions/WebAssertValueContainsBlock.js +43 -0
  186. package/dist/core/blocks/playwright/assertions/WebAssertVisibleBlock.d.ts +13 -0
  187. package/dist/core/blocks/playwright/assertions/WebAssertVisibleBlock.js +39 -0
  188. package/dist/core/blocks/playwright/assertions/index.d.ts +36 -0
  189. package/dist/core/blocks/playwright/assertions/index.js +127 -0
  190. package/dist/core/blocks/playwright/index.d.ts +16 -0
  191. package/dist/core/blocks/playwright/index.js +28 -3
  192. package/dist/core/blocks/playwright/interactions/WebCheckboxBlock.d.ts +13 -0
  193. package/dist/core/blocks/playwright/interactions/WebCheckboxBlock.js +43 -0
  194. package/dist/core/blocks/playwright/interactions/WebClickBlock.d.ts +13 -0
  195. package/dist/core/blocks/playwright/interactions/WebClickBlock.js +34 -0
  196. package/dist/core/blocks/playwright/interactions/WebDragAndDropBlock.d.ts +13 -0
  197. package/dist/core/blocks/playwright/interactions/WebDragAndDropBlock.js +37 -0
  198. package/dist/core/blocks/playwright/interactions/WebFillBlock.d.ts +13 -0
  199. package/dist/core/blocks/playwright/interactions/WebFillBlock.js +38 -0
  200. package/dist/core/blocks/playwright/interactions/WebFocusBlock.d.ts +13 -0
  201. package/dist/core/blocks/playwright/interactions/WebFocusBlock.js +34 -0
  202. package/dist/core/blocks/playwright/interactions/WebHoverBlock.d.ts +13 -0
  203. package/dist/core/blocks/playwright/interactions/WebHoverBlock.js +34 -0
  204. package/dist/core/blocks/playwright/interactions/WebPressKeyBlock.d.ts +13 -0
  205. package/dist/core/blocks/playwright/interactions/WebPressKeyBlock.js +37 -0
  206. package/dist/core/blocks/playwright/interactions/WebScrollIntoViewBlock.d.ts +13 -0
  207. package/dist/core/blocks/playwright/interactions/WebScrollIntoViewBlock.js +34 -0
  208. package/dist/core/blocks/playwright/interactions/WebSelectBlock.d.ts +13 -0
  209. package/dist/core/blocks/playwright/interactions/WebSelectBlock.js +37 -0
  210. package/dist/core/blocks/playwright/interactions/WebTypeBlock.d.ts +13 -0
  211. package/dist/core/blocks/playwright/interactions/WebTypeBlock.js +41 -0
  212. package/dist/core/blocks/playwright/interactions/WebUploadFileBlock.d.ts +13 -0
  213. package/dist/core/blocks/playwright/interactions/WebUploadFileBlock.js +39 -0
  214. package/dist/core/blocks/playwright/interactions/index.d.ts +21 -0
  215. package/dist/core/blocks/playwright/interactions/index.js +56 -0
  216. package/dist/core/blocks/playwright/navigation/WebNavigateBlock.d.ts +13 -0
  217. package/dist/core/blocks/playwright/navigation/WebNavigateBlock.js +36 -0
  218. package/dist/core/blocks/playwright/navigation/WebScreenshotBlock.d.ts +13 -0
  219. package/dist/core/blocks/playwright/navigation/WebScreenshotBlock.js +36 -0
  220. package/dist/core/blocks/playwright/navigation/WebWaitBlock.d.ts +13 -0
  221. package/dist/core/blocks/playwright/navigation/WebWaitBlock.js +32 -0
  222. package/dist/core/blocks/playwright/navigation/WebWaitForElementBlock.d.ts +13 -0
  223. package/dist/core/blocks/playwright/navigation/WebWaitForElementBlock.js +37 -0
  224. package/dist/core/blocks/playwright/navigation/WebWaitForUrlBlock.d.ts +13 -0
  225. package/dist/core/blocks/playwright/navigation/WebWaitForUrlBlock.js +34 -0
  226. package/dist/core/blocks/playwright/navigation/index.d.ts +15 -0
  227. package/dist/core/blocks/playwright/navigation/index.js +32 -0
  228. package/dist/core/blocks/playwright/retrieval/WebCountElementsBlock.d.ts +16 -0
  229. package/dist/core/blocks/playwright/retrieval/WebCountElementsBlock.js +36 -0
  230. package/dist/core/blocks/playwright/retrieval/WebGetAttributeBlock.d.ts +16 -0
  231. package/dist/core/blocks/playwright/retrieval/WebGetAttributeBlock.js +42 -0
  232. package/dist/core/blocks/playwright/retrieval/WebGetInputValueBlock.d.ts +16 -0
  233. package/dist/core/blocks/playwright/retrieval/WebGetInputValueBlock.js +40 -0
  234. package/dist/core/blocks/playwright/retrieval/WebGetTextBlock.d.ts +16 -0
  235. package/dist/core/blocks/playwright/retrieval/WebGetTextBlock.js +40 -0
  236. package/dist/core/blocks/playwright/retrieval/WebGetTitleBlock.d.ts +16 -0
  237. package/dist/core/blocks/playwright/retrieval/WebGetTitleBlock.js +31 -0
  238. package/dist/core/blocks/playwright/retrieval/WebGetUrlBlock.d.ts +16 -0
  239. package/dist/core/blocks/playwright/retrieval/WebGetUrlBlock.js +31 -0
  240. package/dist/core/blocks/playwright/retrieval/index.d.ts +16 -0
  241. package/dist/core/blocks/playwright/retrieval/index.js +36 -0
  242. package/dist/core/blocks/playwright/types.d.ts +14 -0
  243. package/dist/core/blocks/procedures/ProcedureCallBlock.d.ts +13 -0
  244. package/dist/core/blocks/procedures/ProcedureCallBlock.js +66 -0
  245. package/dist/core/blocks/procedures/ProcedureCallWithReturnBlock.d.ts +14 -0
  246. package/dist/core/blocks/procedures/ProcedureCallWithReturnBlock.js +51 -0
  247. package/dist/core/blocks/procedures/ProcedureDefineBlock.d.ts +15 -0
  248. package/dist/core/blocks/procedures/ProcedureDefineBlock.js +59 -0
  249. package/dist/core/blocks/procedures/ProcedureFillFormBlock.d.ts +13 -0
  250. package/dist/core/blocks/procedures/ProcedureFillFormBlock.js +30 -0
  251. package/dist/core/blocks/procedures/ProcedureGetParamBlock.d.ts +14 -0
  252. package/dist/core/blocks/procedures/ProcedureGetParamBlock.js +33 -0
  253. package/dist/core/blocks/procedures/ProcedureInlineBlock.d.ts +14 -0
  254. package/dist/core/blocks/procedures/ProcedureInlineBlock.js +31 -0
  255. package/dist/core/blocks/procedures/ProcedureLoginBlock.d.ts +13 -0
  256. package/dist/core/blocks/procedures/ProcedureLoginBlock.js +37 -0
  257. package/dist/core/blocks/procedures/ProcedureMapBlock.d.ts +14 -0
  258. package/dist/core/blocks/procedures/ProcedureMapBlock.js +36 -0
  259. package/dist/core/blocks/procedures/ProcedureReturnBlock.d.ts +15 -0
  260. package/dist/core/blocks/procedures/ProcedureReturnBlock.js +28 -0
  261. package/dist/core/blocks/procedures/ProcedureWaitAndClickBlock.d.ts +13 -0
  262. package/dist/core/blocks/procedures/ProcedureWaitAndClickBlock.js +32 -0
  263. package/dist/core/blocks/procedures/index.d.ts +21 -0
  264. package/dist/core/blocks/procedures/index.js +62 -0
  265. package/dist/core/blocks/{procedures.d.ts → procedures/procedureRegistry.d.ts} +10 -2
  266. package/dist/core/blocks/procedures/procedureRegistry.js +27 -0
  267. package/dist/core/blocks/utils/apiUtils.d.ts +81 -0
  268. package/dist/core/blocks/utils/apiUtils.js +176 -0
  269. package/dist/core/blocks/utils/index.d.ts +2 -0
  270. package/dist/core/blocks/utils/index.js +16 -0
  271. package/dist/core/blocks/utils/variableUtils.d.ts +19 -0
  272. package/dist/core/blocks/utils/variableUtils.js +69 -0
  273. package/dist/server/index.js +117 -11
  274. package/dist/server/openApiParser.d.ts +82 -0
  275. package/dist/server/openApiParser.js +495 -0
  276. package/dist/server/startServer.d.ts +1 -0
  277. package/dist/server/startServer.js +164 -0
  278. package/package.json +4 -2
  279. package/dist/client/assets/index-BLBBQ6Rn.js +0 -2195
  280. package/dist/client/assets/index-BLBBQ6Rn.js.map +0 -1
  281. package/dist/client/assets/index-qjoPPl9y.css +0 -1
  282. package/dist/core/blocks/api.d.ts +0 -2
  283. package/dist/core/blocks/api.js +0 -607
  284. package/dist/core/blocks/data-driven.d.ts +0 -2
  285. package/dist/core/blocks/data-driven.js +0 -245
  286. package/dist/core/blocks/lifecycle.d.ts +0 -2
  287. package/dist/core/blocks/lifecycle.js +0 -201
  288. package/dist/core/blocks/logic.d.ts +0 -2
  289. package/dist/core/blocks/logic.js +0 -360
  290. package/dist/core/blocks/playwright/assertions.d.ts +0 -5
  291. package/dist/core/blocks/playwright/assertions.js +0 -311
  292. package/dist/core/blocks/playwright/interactions.d.ts +0 -5
  293. package/dist/core/blocks/playwright/interactions.js +0 -208
  294. package/dist/core/blocks/playwright/navigation.d.ts +0 -5
  295. package/dist/core/blocks/playwright/navigation.js +0 -131
  296. package/dist/core/blocks/playwright/retrieval.d.ts +0 -5
  297. package/dist/core/blocks/playwright/retrieval.js +0 -153
  298. package/dist/core/blocks/playwright.d.ts +0 -13
  299. package/dist/core/blocks/playwright.js +0 -17
  300. package/dist/core/blocks/procedures.js +0 -321
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiPostBlock = void 0;
4
+ const base_1 = require("../base");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Perform HTTP POST request and store response.
8
+ */
9
+ class ApiPostBlock extends base_1.StatementBlock {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.type = 'api_post';
13
+ this.category = 'API';
14
+ this.color = '#4CAF50';
15
+ this.tooltip = 'Perform HTTP POST request and store response';
16
+ }
17
+ getInputs() {
18
+ return [
19
+ { name: 'URL', type: 'field', fieldType: 'text', required: true },
20
+ { name: 'BODY', type: 'field', fieldType: 'text', default: '{}' },
21
+ { name: 'HEADERS', type: 'field', fieldType: 'text', default: '' },
22
+ ];
23
+ }
24
+ async execute(params, context) {
25
+ const url = (0, utils_1.resolveVariables)(params.URL, context);
26
+ const bodyStr = (0, utils_1.resolveVariables)(params.BODY || '{}', context);
27
+ const inlineHeaders = (0, utils_1.mergeHeaders)(context, params.HEADERS);
28
+ let body;
29
+ try {
30
+ body = JSON.parse(bodyStr);
31
+ }
32
+ catch {
33
+ body = bodyStr;
34
+ }
35
+ context.logger.info(`POST ${url}`);
36
+ const response = await fetch(url, {
37
+ method: 'POST',
38
+ headers: { 'Content-Type': 'application/json', ...inlineHeaders },
39
+ body: typeof body === 'string' ? body : JSON.stringify(body),
40
+ signal: context.abortSignal,
41
+ });
42
+ const parsed = await (0, utils_1.parseResponse)(response);
43
+ (0, utils_1.storeResponse)(context, parsed);
44
+ return parsed;
45
+ }
46
+ }
47
+ exports.ApiPostBlock = ApiPostBlock;
@@ -0,0 +1,13 @@
1
+ import { StatementBlock } from '../base';
2
+ import { BlockInput, ExecutionContext } from '../../types';
3
+ /**
4
+ * Perform HTTP PUT request and store response.
5
+ */
6
+ export declare class ApiPutBlock extends StatementBlock {
7
+ readonly type = "api_put";
8
+ readonly category = "API";
9
+ readonly color = "#4CAF50";
10
+ readonly tooltip = "Perform HTTP PUT request and store response";
11
+ getInputs(): BlockInput[];
12
+ execute(params: Record<string, unknown>, context: ExecutionContext): Promise<unknown>;
13
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiPutBlock = void 0;
4
+ const base_1 = require("../base");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Perform HTTP PUT request and store response.
8
+ */
9
+ class ApiPutBlock extends base_1.StatementBlock {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.type = 'api_put';
13
+ this.category = 'API';
14
+ this.color = '#4CAF50';
15
+ this.tooltip = 'Perform HTTP PUT request and store response';
16
+ }
17
+ getInputs() {
18
+ return [
19
+ { name: 'URL', type: 'field', fieldType: 'text', required: true },
20
+ { name: 'BODY', type: 'field', fieldType: 'text', default: '{}' },
21
+ { name: 'HEADERS', type: 'field', fieldType: 'text', default: '' },
22
+ ];
23
+ }
24
+ async execute(params, context) {
25
+ const url = (0, utils_1.resolveVariables)(params.URL, context);
26
+ const bodyStr = (0, utils_1.resolveVariables)(params.BODY || '{}', context);
27
+ const inlineHeaders = (0, utils_1.mergeHeaders)(context, params.HEADERS);
28
+ let body;
29
+ try {
30
+ body = JSON.parse(bodyStr);
31
+ }
32
+ catch {
33
+ body = bodyStr;
34
+ }
35
+ context.logger.info(`PUT ${url}`);
36
+ const response = await fetch(url, {
37
+ method: 'PUT',
38
+ headers: { 'Content-Type': 'application/json', ...inlineHeaders },
39
+ body: typeof body === 'string' ? body : JSON.stringify(body),
40
+ signal: context.abortSignal,
41
+ });
42
+ const parsed = await (0, utils_1.parseResponse)(response);
43
+ (0, utils_1.storeResponse)(context, parsed);
44
+ return parsed;
45
+ }
46
+ }
47
+ exports.ApiPutBlock = ApiPutBlock;
@@ -0,0 +1,13 @@
1
+ import { StatementBlock } from '../base';
2
+ import { BlockInput, ExecutionContext } from '../../types';
3
+ /**
4
+ * Set a single request header that applies to subsequent requests.
5
+ */
6
+ export declare class ApiSetHeaderBlock extends StatementBlock {
7
+ readonly type = "api_set_header";
8
+ readonly category = "API";
9
+ readonly color = "#7B1FA2";
10
+ readonly tooltip = "Set a request header (applies to subsequent requests)";
11
+ getInputs(): BlockInput[];
12
+ execute(params: Record<string, unknown>, context: ExecutionContext): Promise<unknown>;
13
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiSetHeaderBlock = void 0;
4
+ const base_1 = require("../base");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Set a single request header that applies to subsequent requests.
8
+ */
9
+ class ApiSetHeaderBlock extends base_1.StatementBlock {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.type = 'api_set_header';
13
+ this.category = 'API';
14
+ this.color = '#7B1FA2';
15
+ this.tooltip = 'Set a request header (applies to subsequent requests)';
16
+ }
17
+ getInputs() {
18
+ return [
19
+ { name: 'NAME', type: 'field', fieldType: 'text', required: true, default: 'Authorization' },
20
+ { name: 'VALUE', type: 'field', fieldType: 'text', required: true, default: 'Bearer token' },
21
+ ];
22
+ }
23
+ async execute(params, context) {
24
+ const name = params.NAME;
25
+ const value = (0, utils_1.resolveVariables)(params.VALUE, context);
26
+ const headers = (0, utils_1.getContextHeaders)(context);
27
+ headers[name] = value;
28
+ (0, utils_1.setContextHeaders)(context, headers);
29
+ context.logger.info(`Set header: ${name}: ${value.substring(0, 30)}${value.length > 30 ? '...' : ''}`);
30
+ return {
31
+ _summary: `${name}: ${value.substring(0, 30)}${value.length > 30 ? '...' : ''}`,
32
+ name,
33
+ value,
34
+ };
35
+ }
36
+ }
37
+ exports.ApiSetHeaderBlock = ApiSetHeaderBlock;
@@ -0,0 +1,13 @@
1
+ import { StatementBlock } from '../base';
2
+ import { BlockInput, ExecutionContext } from '../../types';
3
+ /**
4
+ * Set multiple request headers from a JSON object.
5
+ */
6
+ export declare class ApiSetHeadersBlock extends StatementBlock {
7
+ readonly type = "api_set_headers";
8
+ readonly category = "API";
9
+ readonly color = "#7B1FA2";
10
+ readonly tooltip = "Set multiple request headers from JSON object";
11
+ getInputs(): BlockInput[];
12
+ execute(params: Record<string, unknown>, context: ExecutionContext): Promise<unknown>;
13
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiSetHeadersBlock = void 0;
4
+ const base_1 = require("../base");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Set multiple request headers from a JSON object.
8
+ */
9
+ class ApiSetHeadersBlock extends base_1.StatementBlock {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.type = 'api_set_headers';
13
+ this.category = 'API';
14
+ this.color = '#7B1FA2';
15
+ this.tooltip = 'Set multiple request headers from JSON object';
16
+ }
17
+ getInputs() {
18
+ return [
19
+ { name: 'HEADERS', type: 'field', fieldType: 'text', required: true, default: '{"Content-Type": "application/json"}' },
20
+ ];
21
+ }
22
+ async execute(params, context) {
23
+ const headersStr = (0, utils_1.resolveVariables)(params.HEADERS, context);
24
+ try {
25
+ const newHeaders = JSON.parse(headersStr);
26
+ const headers = (0, utils_1.getContextHeaders)(context);
27
+ Object.assign(headers, newHeaders);
28
+ (0, utils_1.setContextHeaders)(context, headers);
29
+ const headerNames = Object.keys(newHeaders).join(', ');
30
+ context.logger.info(`Set headers: ${headerNames}`);
31
+ return {
32
+ _summary: `Set ${Object.keys(newHeaders).length} headers`,
33
+ headers: newHeaders,
34
+ };
35
+ }
36
+ catch {
37
+ throw new Error(`Invalid JSON for headers: ${headersStr}`);
38
+ }
39
+ }
40
+ }
41
+ exports.ApiSetHeadersBlock = ApiSetHeadersBlock;
@@ -0,0 +1,25 @@
1
+ import { Block } from '../base';
2
+ import { BlockDefinition } from '../../types';
3
+ export { ApiSetHeaderBlock } from './ApiSetHeaderBlock';
4
+ export { ApiSetHeadersBlock } from './ApiSetHeadersBlock';
5
+ export { ApiClearHeadersBlock } from './ApiClearHeadersBlock';
6
+ export { ApiGetBlock } from './ApiGetBlock';
7
+ export { ApiPostBlock } from './ApiPostBlock';
8
+ export { ApiPutBlock } from './ApiPutBlock';
9
+ export { ApiPatchBlock } from './ApiPatchBlock';
10
+ export { ApiDeleteBlock } from './ApiDeleteBlock';
11
+ export { ApiAssertStatusBlock } from './ApiAssertStatusBlock';
12
+ export { ApiAssertBodyContainsBlock } from './ApiAssertBodyContainsBlock';
13
+ export { ApiExtractJsonPathBlock } from './ApiExtractJsonPathBlock';
14
+ export { ApiExtractXPathBlock } from './ApiExtractXPathBlock';
15
+ export { ApiExtractBlock } from './ApiExtractBlock';
16
+ export { ApiHeadersBlock } from './ApiHeadersBlock';
17
+ export { ApiJsonBodyBlock } from './ApiJsonBodyBlock';
18
+ /**
19
+ * All API block class instances.
20
+ */
21
+ export declare const apiBlockClasses: Block[];
22
+ /**
23
+ * API blocks as BlockDefinition array for backward compatibility.
24
+ */
25
+ export declare const apiBlocks: BlockDefinition[];
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apiBlocks = exports.apiBlockClasses = exports.ApiJsonBodyBlock = exports.ApiHeadersBlock = exports.ApiExtractBlock = exports.ApiExtractXPathBlock = exports.ApiExtractJsonPathBlock = exports.ApiAssertBodyContainsBlock = exports.ApiAssertStatusBlock = exports.ApiDeleteBlock = exports.ApiPatchBlock = exports.ApiPutBlock = exports.ApiPostBlock = exports.ApiGetBlock = exports.ApiClearHeadersBlock = exports.ApiSetHeadersBlock = exports.ApiSetHeaderBlock = void 0;
4
+ // Header management blocks
5
+ var ApiSetHeaderBlock_1 = require("./ApiSetHeaderBlock");
6
+ Object.defineProperty(exports, "ApiSetHeaderBlock", { enumerable: true, get: function () { return ApiSetHeaderBlock_1.ApiSetHeaderBlock; } });
7
+ var ApiSetHeadersBlock_1 = require("./ApiSetHeadersBlock");
8
+ Object.defineProperty(exports, "ApiSetHeadersBlock", { enumerable: true, get: function () { return ApiSetHeadersBlock_1.ApiSetHeadersBlock; } });
9
+ var ApiClearHeadersBlock_1 = require("./ApiClearHeadersBlock");
10
+ Object.defineProperty(exports, "ApiClearHeadersBlock", { enumerable: true, get: function () { return ApiClearHeadersBlock_1.ApiClearHeadersBlock; } });
11
+ // HTTP method blocks
12
+ var ApiGetBlock_1 = require("./ApiGetBlock");
13
+ Object.defineProperty(exports, "ApiGetBlock", { enumerable: true, get: function () { return ApiGetBlock_1.ApiGetBlock; } });
14
+ var ApiPostBlock_1 = require("./ApiPostBlock");
15
+ Object.defineProperty(exports, "ApiPostBlock", { enumerable: true, get: function () { return ApiPostBlock_1.ApiPostBlock; } });
16
+ var ApiPutBlock_1 = require("./ApiPutBlock");
17
+ Object.defineProperty(exports, "ApiPutBlock", { enumerable: true, get: function () { return ApiPutBlock_1.ApiPutBlock; } });
18
+ var ApiPatchBlock_1 = require("./ApiPatchBlock");
19
+ Object.defineProperty(exports, "ApiPatchBlock", { enumerable: true, get: function () { return ApiPatchBlock_1.ApiPatchBlock; } });
20
+ var ApiDeleteBlock_1 = require("./ApiDeleteBlock");
21
+ Object.defineProperty(exports, "ApiDeleteBlock", { enumerable: true, get: function () { return ApiDeleteBlock_1.ApiDeleteBlock; } });
22
+ // Assertion blocks
23
+ var ApiAssertStatusBlock_1 = require("./ApiAssertStatusBlock");
24
+ Object.defineProperty(exports, "ApiAssertStatusBlock", { enumerable: true, get: function () { return ApiAssertStatusBlock_1.ApiAssertStatusBlock; } });
25
+ var ApiAssertBodyContainsBlock_1 = require("./ApiAssertBodyContainsBlock");
26
+ Object.defineProperty(exports, "ApiAssertBodyContainsBlock", { enumerable: true, get: function () { return ApiAssertBodyContainsBlock_1.ApiAssertBodyContainsBlock; } });
27
+ // Extraction blocks
28
+ var ApiExtractJsonPathBlock_1 = require("./ApiExtractJsonPathBlock");
29
+ Object.defineProperty(exports, "ApiExtractJsonPathBlock", { enumerable: true, get: function () { return ApiExtractJsonPathBlock_1.ApiExtractJsonPathBlock; } });
30
+ var ApiExtractXPathBlock_1 = require("./ApiExtractXPathBlock");
31
+ Object.defineProperty(exports, "ApiExtractXPathBlock", { enumerable: true, get: function () { return ApiExtractXPathBlock_1.ApiExtractXPathBlock; } });
32
+ var ApiExtractBlock_1 = require("./ApiExtractBlock");
33
+ Object.defineProperty(exports, "ApiExtractBlock", { enumerable: true, get: function () { return ApiExtractBlock_1.ApiExtractBlock; } });
34
+ // Value blocks
35
+ var ApiHeadersBlock_1 = require("./ApiHeadersBlock");
36
+ Object.defineProperty(exports, "ApiHeadersBlock", { enumerable: true, get: function () { return ApiHeadersBlock_1.ApiHeadersBlock; } });
37
+ var ApiJsonBodyBlock_1 = require("./ApiJsonBodyBlock");
38
+ Object.defineProperty(exports, "ApiJsonBodyBlock", { enumerable: true, get: function () { return ApiJsonBodyBlock_1.ApiJsonBodyBlock; } });
39
+ // Import all block classes
40
+ const ApiSetHeaderBlock_2 = require("./ApiSetHeaderBlock");
41
+ const ApiSetHeadersBlock_2 = require("./ApiSetHeadersBlock");
42
+ const ApiClearHeadersBlock_2 = require("./ApiClearHeadersBlock");
43
+ const ApiGetBlock_2 = require("./ApiGetBlock");
44
+ const ApiPostBlock_2 = require("./ApiPostBlock");
45
+ const ApiPutBlock_2 = require("./ApiPutBlock");
46
+ const ApiPatchBlock_2 = require("./ApiPatchBlock");
47
+ const ApiDeleteBlock_2 = require("./ApiDeleteBlock");
48
+ const ApiAssertStatusBlock_2 = require("./ApiAssertStatusBlock");
49
+ const ApiAssertBodyContainsBlock_2 = require("./ApiAssertBodyContainsBlock");
50
+ const ApiExtractJsonPathBlock_2 = require("./ApiExtractJsonPathBlock");
51
+ const ApiExtractXPathBlock_2 = require("./ApiExtractXPathBlock");
52
+ const ApiExtractBlock_2 = require("./ApiExtractBlock");
53
+ const ApiHeadersBlock_2 = require("./ApiHeadersBlock");
54
+ const ApiJsonBodyBlock_2 = require("./ApiJsonBodyBlock");
55
+ /**
56
+ * All API block class instances.
57
+ */
58
+ exports.apiBlockClasses = [
59
+ // Header management
60
+ new ApiSetHeaderBlock_2.ApiSetHeaderBlock(),
61
+ new ApiSetHeadersBlock_2.ApiSetHeadersBlock(),
62
+ new ApiClearHeadersBlock_2.ApiClearHeadersBlock(),
63
+ // HTTP methods
64
+ new ApiGetBlock_2.ApiGetBlock(),
65
+ new ApiPostBlock_2.ApiPostBlock(),
66
+ new ApiPutBlock_2.ApiPutBlock(),
67
+ new ApiPatchBlock_2.ApiPatchBlock(),
68
+ new ApiDeleteBlock_2.ApiDeleteBlock(),
69
+ // Assertions
70
+ new ApiAssertStatusBlock_2.ApiAssertStatusBlock(),
71
+ new ApiAssertBodyContainsBlock_2.ApiAssertBodyContainsBlock(),
72
+ // Extraction
73
+ new ApiExtractJsonPathBlock_2.ApiExtractJsonPathBlock(),
74
+ new ApiExtractXPathBlock_2.ApiExtractXPathBlock(),
75
+ new ApiExtractBlock_2.ApiExtractBlock(),
76
+ // Value blocks
77
+ new ApiHeadersBlock_2.ApiHeadersBlock(),
78
+ new ApiJsonBodyBlock_2.ApiJsonBodyBlock(),
79
+ ];
80
+ /**
81
+ * API blocks as BlockDefinition array for backward compatibility.
82
+ */
83
+ exports.apiBlocks = exports.apiBlockClasses.map(block => block.toDefinition());
@@ -0,0 +1,59 @@
1
+ import { BlockDefinition, BlockInput, BlockOutput, ExecutionContext } from '../../types';
2
+ /**
3
+ * Abstract base class for all blocks.
4
+ * Encapsulates block definition, Blockly JSON generation, and execution logic.
5
+ */
6
+ export declare abstract class Block {
7
+ /** Unique block type identifier (e.g., 'api_get') */
8
+ abstract readonly type: string;
9
+ /** Category for toolbox organization */
10
+ abstract readonly category: string;
11
+ /** Hex color for visual appearance */
12
+ abstract readonly color: string;
13
+ /** UI tooltip on hover */
14
+ readonly tooltip?: string;
15
+ /** Documentation URL */
16
+ readonly helpUrl?: string;
17
+ /** Can be chained after another block */
18
+ readonly previousStatement: boolean;
19
+ /** Can chain to next block */
20
+ readonly nextStatement: boolean;
21
+ /** Output type if this is a value block */
22
+ readonly output?: BlockOutput;
23
+ /**
24
+ * Get the inputs for this block.
25
+ * Override in subclasses to define block inputs.
26
+ */
27
+ abstract getInputs(): BlockInput[];
28
+ /**
29
+ * Execute the block logic.
30
+ * @param params - The parameter values from the block fields
31
+ * @param context - The execution context
32
+ * @returns The execution result
33
+ */
34
+ abstract execute(params: Record<string, unknown>, context: ExecutionContext): Promise<unknown>;
35
+ /**
36
+ * Convert this block to a BlockDefinition for backward compatibility.
37
+ * This allows the class-based blocks to work with the existing registry system.
38
+ */
39
+ toDefinition(): BlockDefinition;
40
+ /**
41
+ * Generate Blockly JSON definition for this block.
42
+ * Override in subclasses for custom Blockly layouts.
43
+ */
44
+ toBlocklyJson(): Record<string, unknown>;
45
+ /**
46
+ * Get the block label for display in Blockly.
47
+ * Override for custom labels.
48
+ */
49
+ protected getBlockLabel(): string;
50
+ /**
51
+ * Create a Blockly field argument from a BlockInput.
52
+ */
53
+ protected createFieldArg(input: BlockInput): unknown;
54
+ /**
55
+ * Get the Blockly init extension function for custom initialization.
56
+ * Override for custom init behavior (e.g., adding tooltips to fields).
57
+ */
58
+ getBlocklyInitExtension(): (() => void) | undefined;
59
+ }
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Block = void 0;
4
+ /**
5
+ * Abstract base class for all blocks.
6
+ * Encapsulates block definition, Blockly JSON generation, and execution logic.
7
+ */
8
+ class Block {
9
+ constructor() {
10
+ /** Can be chained after another block */
11
+ this.previousStatement = false;
12
+ /** Can chain to next block */
13
+ this.nextStatement = false;
14
+ }
15
+ /**
16
+ * Convert this block to a BlockDefinition for backward compatibility.
17
+ * This allows the class-based blocks to work with the existing registry system.
18
+ */
19
+ toDefinition() {
20
+ return {
21
+ type: this.type,
22
+ category: this.category,
23
+ color: this.color,
24
+ tooltip: this.tooltip,
25
+ helpUrl: this.helpUrl,
26
+ inputs: this.getInputs(),
27
+ output: this.output,
28
+ previousStatement: this.previousStatement || undefined,
29
+ nextStatement: this.nextStatement || undefined,
30
+ execute: this.execute.bind(this),
31
+ };
32
+ }
33
+ /**
34
+ * Generate Blockly JSON definition for this block.
35
+ * Override in subclasses for custom Blockly layouts.
36
+ */
37
+ toBlocklyJson() {
38
+ const blockJson = {
39
+ type: this.type,
40
+ colour: this.color,
41
+ tooltip: this.tooltip || '',
42
+ helpUrl: this.helpUrl || '',
43
+ };
44
+ // Build message and args
45
+ let message = this.getBlockLabel();
46
+ const args = [];
47
+ let argIndex = 0;
48
+ this.getInputs().forEach((input) => {
49
+ if (input.type === 'field') {
50
+ message += ` %${++argIndex}`;
51
+ args.push(this.createFieldArg(input));
52
+ }
53
+ else if (input.type === 'value') {
54
+ message += ` %${++argIndex}`;
55
+ args.push({
56
+ type: 'input_value',
57
+ name: input.name,
58
+ check: input.check,
59
+ });
60
+ }
61
+ else if (input.type === 'statement') {
62
+ message += ` %${++argIndex}`;
63
+ args.push({
64
+ type: 'input_statement',
65
+ name: input.name,
66
+ });
67
+ }
68
+ });
69
+ blockJson.message0 = message;
70
+ blockJson.args0 = args;
71
+ if (this.output) {
72
+ blockJson.output = this.output.type;
73
+ }
74
+ if (this.previousStatement) {
75
+ blockJson.previousStatement = null;
76
+ }
77
+ if (this.nextStatement) {
78
+ blockJson.nextStatement = null;
79
+ }
80
+ return blockJson;
81
+ }
82
+ /**
83
+ * Get the block label for display in Blockly.
84
+ * Override for custom labels.
85
+ */
86
+ getBlockLabel() {
87
+ // Convert type like 'api_get' to 'GET' or 'web_navigate' to 'Navigate'
88
+ const parts = this.type.split('_');
89
+ const prefix = parts[0];
90
+ if (prefix === 'api' || prefix === 'web' || prefix === 'logic') {
91
+ return parts.slice(1).map(p => p.charAt(0).toUpperCase() + p.slice(1)).join(' ');
92
+ }
93
+ if (prefix === 'snippet' || prefix === 'custom') {
94
+ return parts.slice(1).map(p => p.charAt(0).toUpperCase() + p.slice(1)).join(' ');
95
+ }
96
+ return parts.map(p => p.charAt(0).toUpperCase() + p.slice(1)).join(' ');
97
+ }
98
+ /**
99
+ * Create a Blockly field argument from a BlockInput.
100
+ */
101
+ createFieldArg(input) {
102
+ const baseArg = { name: input.name };
103
+ switch (input.fieldType) {
104
+ case 'text':
105
+ return {
106
+ ...baseArg,
107
+ type: 'field_input_autocomplete',
108
+ text: input.default !== undefined ? String(input.default) : '',
109
+ };
110
+ case 'number':
111
+ return {
112
+ ...baseArg,
113
+ type: 'field_number',
114
+ value: input.default !== undefined ? Number(input.default) : 0,
115
+ };
116
+ case 'dropdown':
117
+ return {
118
+ ...baseArg,
119
+ type: 'field_dropdown',
120
+ options: input.options || [],
121
+ };
122
+ case 'checkbox':
123
+ return {
124
+ ...baseArg,
125
+ type: 'field_checkbox',
126
+ checked: input.default === true,
127
+ };
128
+ case 'multiline':
129
+ return {
130
+ ...baseArg,
131
+ type: 'field_multiline_autocomplete',
132
+ text: input.default !== undefined ? String(input.default) : '',
133
+ spellcheck: false,
134
+ };
135
+ default:
136
+ return {
137
+ ...baseArg,
138
+ type: 'field_input_autocomplete',
139
+ text: '',
140
+ };
141
+ }
142
+ }
143
+ /**
144
+ * Get the Blockly init extension function for custom initialization.
145
+ * Override for custom init behavior (e.g., adding tooltips to fields).
146
+ */
147
+ getBlocklyInitExtension() {
148
+ return undefined;
149
+ }
150
+ }
151
+ exports.Block = Block;
@@ -0,0 +1,14 @@
1
+ import { Block } from './Block';
2
+ /**
3
+ * Base class for container blocks with custom multi-message layouts.
4
+ * Used for blocks like test_case, lifecycle hooks that need special Blockly layouts.
5
+ */
6
+ export declare abstract class ContainerBlock extends Block {
7
+ readonly previousStatement: boolean;
8
+ readonly nextStatement: boolean;
9
+ /**
10
+ * Override toBlocklyJson for custom multi-message layout.
11
+ * Subclasses should implement their specific layout.
12
+ */
13
+ abstract toBlocklyJson(): Record<string, unknown>;
14
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContainerBlock = void 0;
4
+ const Block_1 = require("./Block");
5
+ /**
6
+ * Base class for container blocks with custom multi-message layouts.
7
+ * Used for blocks like test_case, lifecycle hooks that need special Blockly layouts.
8
+ */
9
+ class ContainerBlock extends Block_1.Block {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.previousStatement = false;
13
+ this.nextStatement = false;
14
+ }
15
+ }
16
+ exports.ContainerBlock = ContainerBlock;
@@ -0,0 +1,13 @@
1
+ import { StatementBlock } from './StatementBlock';
2
+ /**
3
+ * Base class for control flow blocks that return branch/loop instructions.
4
+ * Extends StatementBlock with special return types for executor handling.
5
+ *
6
+ * Control flow blocks include:
7
+ * - logic_if (returns { branch: 'DO' | 'ELSE' })
8
+ * - logic_repeat (returns { loop: true, times, statement })
9
+ * - logic_foreach (returns { loop: true, array, varName, statement })
10
+ * - logic_try_catch (returns { tryCatch: true })
11
+ */
12
+ export declare abstract class ControlFlowBlock extends StatementBlock {
13
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ControlFlowBlock = void 0;
4
+ const StatementBlock_1 = require("./StatementBlock");
5
+ /**
6
+ * Base class for control flow blocks that return branch/loop instructions.
7
+ * Extends StatementBlock with special return types for executor handling.
8
+ *
9
+ * Control flow blocks include:
10
+ * - logic_if (returns { branch: 'DO' | 'ELSE' })
11
+ * - logic_repeat (returns { loop: true, times, statement })
12
+ * - logic_foreach (returns { loop: true, array, varName, statement })
13
+ * - logic_try_catch (returns { tryCatch: true })
14
+ */
15
+ class ControlFlowBlock extends StatementBlock_1.StatementBlock {
16
+ }
17
+ exports.ControlFlowBlock = ControlFlowBlock;
@@ -0,0 +1,9 @@
1
+ import { Block } from './Block';
2
+ /**
3
+ * Base class for statement blocks that chain together sequentially.
4
+ * Has previousStatement and nextStatement connections enabled.
5
+ */
6
+ export declare abstract class StatementBlock extends Block {
7
+ readonly previousStatement: boolean;
8
+ readonly nextStatement: boolean;
9
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StatementBlock = void 0;
4
+ const Block_1 = require("./Block");
5
+ /**
6
+ * Base class for statement blocks that chain together sequentially.
7
+ * Has previousStatement and nextStatement connections enabled.
8
+ */
9
+ class StatementBlock extends Block_1.Block {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.previousStatement = true;
13
+ this.nextStatement = true;
14
+ }
15
+ }
16
+ exports.StatementBlock = StatementBlock;
@@ -0,0 +1,12 @@
1
+ import { Block } from './Block';
2
+ import { BlockOutput } from '../../types';
3
+ /**
4
+ * Base class for value blocks that output a value.
5
+ * Has no statement connections, only output.
6
+ */
7
+ export declare abstract class ValueBlock extends Block {
8
+ readonly previousStatement: boolean;
9
+ readonly nextStatement: boolean;
10
+ /** Output type - must be defined by subclasses */
11
+ abstract readonly output: BlockOutput;
12
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValueBlock = void 0;
4
+ const Block_1 = require("./Block");
5
+ /**
6
+ * Base class for value blocks that output a value.
7
+ * Has no statement connections, only output.
8
+ */
9
+ class ValueBlock extends Block_1.Block {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.previousStatement = false;
13
+ this.nextStatement = false;
14
+ }
15
+ }
16
+ exports.ValueBlock = ValueBlock;