@neurodevs/node-tdd 0.2.5 → 1.0.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 (326) hide show
  1. package/.vscode/launch.json +52 -57
  2. package/.vscode/settings.json +61 -66
  3. package/.vscode/tasks.json +98 -129
  4. package/README.md +1 -0
  5. package/build/.spruce/settings.json +3 -10
  6. package/build/__tests__/MockFetch.d.ts +18 -0
  7. package/build/__tests__/MockFetch.js +55 -0
  8. package/build/__tests__/MockFetch.js.map +1 -0
  9. package/build/__tests__/{impl → behavioral}/AbstractModuleTest.test.d.ts +2 -3
  10. package/build/__tests__/{impl → behavioral}/AbstractModuleTest.test.js +3 -12
  11. package/build/__tests__/behavioral/AbstractModuleTest.test.js.map +1 -0
  12. package/build/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.d.ts +5 -0
  13. package/build/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.js +34 -0
  14. package/build/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.js.map +1 -0
  15. package/build/__tests__/behavioral/utilities/Assert.test.d.ts +45 -0
  16. package/build/__tests__/behavioral/utilities/Assert.test.js +645 -0
  17. package/build/__tests__/behavioral/utilities/Assert.test.js.map +1 -0
  18. package/build/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.d.ts +4 -0
  19. package/build/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.js +23 -0
  20. package/build/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.js.map +1 -0
  21. package/build/__tests__/behavioral/utilities/MockFetch.test.d.ts +28 -0
  22. package/build/__tests__/behavioral/utilities/MockFetch.test.js +211 -0
  23. package/build/__tests__/behavioral/utilities/MockFetch.test.js.map +1 -0
  24. package/build/__tests__/behavioral/utilities/StackCleaner.test.d.ts +4 -0
  25. package/build/__tests__/behavioral/utilities/StackCleaner.test.js +46 -0
  26. package/build/__tests__/behavioral/utilities/StackCleaner.test.js.map +1 -0
  27. package/build/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.d.ts +7 -0
  28. package/build/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.js +32 -0
  29. package/build/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.js.map +1 -0
  30. package/build/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.d.ts +4 -0
  31. package/build/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.js +19 -0
  32. package/build/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.js.map +1 -0
  33. package/build/__tests__/behavioral/utilities/Stringify.test.d.ts +5 -0
  34. package/build/__tests__/behavioral/utilities/Stringify.test.js +127 -0
  35. package/build/__tests__/behavioral/utilities/Stringify.test.js.map +1 -0
  36. package/build/__tests__/behavioral/utilities/TestDecoratorResolver.test.d.ts +7 -0
  37. package/build/__tests__/behavioral/utilities/TestDecoratorResolver.test.js +38 -0
  38. package/build/__tests__/behavioral/utilities/TestDecoratorResolver.test.js.map +1 -0
  39. package/build/__tests__/behavioral/utilities/TestOnBasic.test.d.ts +12 -0
  40. package/build/__tests__/behavioral/utilities/TestOnBasic.test.js +68 -0
  41. package/build/__tests__/behavioral/utilities/TestOnBasic.test.js.map +1 -0
  42. package/build/__tests__/behavioral/utilities/TestOnInstance.test.d.ts +28 -0
  43. package/build/__tests__/behavioral/utilities/TestOnInstance.test.js +289 -0
  44. package/build/__tests__/behavioral/utilities/TestOnInstance.test.js.map +1 -0
  45. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.d.ts +9 -0
  46. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.js +118 -0
  47. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.js.map +1 -0
  48. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.d.ts +5 -0
  49. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.js +78 -0
  50. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.js.map +1 -0
  51. package/build/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.d.ts +4 -0
  52. package/build/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.js +23 -0
  53. package/build/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.js.map +1 -0
  54. package/build/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.d.ts +4 -0
  55. package/build/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.js +24 -0
  56. package/build/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.js.map +1 -0
  57. package/build/__tests__/behavioral/utilities/TestResolver.test.d.ts +7 -0
  58. package/build/__tests__/behavioral/utilities/TestResolver.test.js +38 -0
  59. package/build/__tests__/behavioral/utilities/TestResolver.test.js.map +1 -0
  60. package/build/__tests__/behavioral/utilities/TestResolverOnStatic.test.d.ts +4 -0
  61. package/build/__tests__/behavioral/utilities/TestResolverOnStatic.test.js +20 -0
  62. package/build/__tests__/behavioral/utilities/TestResolverOnStatic.test.js.map +1 -0
  63. package/build/__tests__/behavioral/workspace/JestJsonParser.test.d.ts +18 -0
  64. package/build/__tests__/behavioral/workspace/JestJsonParser.test.js +267 -0
  65. package/build/__tests__/behavioral/workspace/JestJsonParser.test.js.map +1 -0
  66. package/build/__tests__/behavioral/workspace/TestReporter.test.d.ts +16 -0
  67. package/build/__tests__/behavioral/workspace/TestReporter.test.js +227 -0
  68. package/build/__tests__/behavioral/workspace/TestReporter.test.js.map +1 -0
  69. package/build/__tests__/behavioral/workspace/TestRunner.test.d.ts +15 -0
  70. package/build/__tests__/behavioral/workspace/TestRunner.test.js +99 -0
  71. package/build/__tests__/behavioral/workspace/TestRunner.test.js.map +1 -0
  72. package/build/__tests__/behavioral/workspace/Widgets.test.d.ts +13 -0
  73. package/build/__tests__/behavioral/workspace/Widgets.test.js +99 -0
  74. package/build/__tests__/behavioral/workspace/Widgets.test.js.map +1 -0
  75. package/build/__tests__/mock-terminal-kit.d.ts +79 -0
  76. package/build/__tests__/mock-terminal-kit.js +103 -0
  77. package/build/__tests__/mock-terminal-kit.js.map +1 -0
  78. package/build/__tests__/support/AbstractForInstanceTest.d.ts +4 -0
  79. package/build/__tests__/support/AbstractForInstanceTest.js +9 -0
  80. package/build/__tests__/support/AbstractForInstanceTest.js.map +1 -0
  81. package/build/__tests__/support/AbstractLevelOneTest.d.ts +3 -0
  82. package/build/__tests__/support/AbstractLevelOneTest.js +4 -0
  83. package/build/__tests__/support/AbstractLevelOneTest.js.map +1 -0
  84. package/build/__tests__/support/AbstractLevelTwoTest.d.ts +7 -0
  85. package/build/__tests__/support/AbstractLevelTwoTest.js +14 -0
  86. package/build/__tests__/support/AbstractLevelTwoTest.js.map +1 -0
  87. package/build/__tests__/support/AbstractStaticTest.d.ts +7 -0
  88. package/build/__tests__/support/AbstractStaticTest.js +14 -0
  89. package/build/__tests__/support/AbstractStaticTest.js.map +1 -0
  90. package/build/__tests__/support/AbstractTestOnInstanceTest.d.ts +22 -0
  91. package/build/__tests__/support/AbstractTestOnInstanceTest.js +23 -0
  92. package/build/__tests__/support/AbstractTestOnInstanceTest.js.map +1 -0
  93. package/build/__tests__/support/AbstractTestOnInstanceWithHooks.d.ts +26 -0
  94. package/build/__tests__/support/AbstractTestOnInstanceWithHooks.js +59 -0
  95. package/build/__tests__/support/AbstractTestOnInstanceWithHooks.js.map +1 -0
  96. package/build/__tests__/support/jest.setup.d.ts +1 -0
  97. package/build/__tests__/support/jest.setup.js +4 -0
  98. package/build/__tests__/support/jest.setup.js.map +1 -0
  99. package/build/__tests__/support/onTestFileResult.d.ts +244 -0
  100. package/build/__tests__/support/onTestFileResult.js +980 -0
  101. package/build/__tests__/support/onTestFileResult.js.map +1 -0
  102. package/build/impl/AbstractModuleTest.d.ts +18 -4
  103. package/build/impl/AbstractModuleTest.js +47 -9
  104. package/build/impl/AbstractModuleTest.js.map +1 -1
  105. package/build/index.d.ts +4 -4
  106. package/build/index.js +4 -4
  107. package/build/index.js.map +1 -1
  108. package/build/utilities/AssertionError.d.ts +3 -0
  109. package/build/utilities/AssertionError.js +12 -0
  110. package/build/utilities/AssertionError.js.map +1 -0
  111. package/build/utilities/StackCleaner.d.ts +4 -0
  112. package/build/utilities/StackCleaner.js +10 -0
  113. package/build/utilities/StackCleaner.js.map +1 -0
  114. package/build/utilities/TestDecoratorResolver.d.ts +35 -0
  115. package/build/utilities/TestDecoratorResolver.js +93 -0
  116. package/build/utilities/TestDecoratorResolver.js.map +1 -0
  117. package/build/utilities/assert.d.ts +49 -0
  118. package/build/utilities/assert.js +255 -0
  119. package/build/utilities/assert.js.map +1 -0
  120. package/build/utilities/assert.utility.d.ts +28 -0
  121. package/build/utilities/assert.utility.js +185 -0
  122. package/build/utilities/assert.utility.js.map +1 -0
  123. package/build/utilities/decorators.d.ts +9 -0
  124. package/build/utilities/decorators.js +133 -0
  125. package/build/utilities/decorators.js.map +1 -0
  126. package/build/workspace/CommandService.d.ts +49 -0
  127. package/build/workspace/CommandService.js +179 -0
  128. package/build/workspace/CommandService.js.map +1 -0
  129. package/build/workspace/JestJsonParser.d.ts +15 -0
  130. package/build/workspace/JestJsonParser.js +149 -0
  131. package/build/workspace/JestJsonParser.js.map +1 -0
  132. package/build/workspace/TKButtonWidget.d.ts +13 -0
  133. package/build/workspace/TKButtonWidget.js +37 -0
  134. package/build/workspace/TKButtonWidget.js.map +1 -0
  135. package/build/workspace/TestLogItemGenerator.d.ts +15 -0
  136. package/build/workspace/TestLogItemGenerator.js +142 -0
  137. package/build/workspace/TestLogItemGenerator.js.map +1 -0
  138. package/build/workspace/TestReporter.d.ts +103 -0
  139. package/build/workspace/TestReporter.js +677 -0
  140. package/build/workspace/TestReporter.js.map +1 -0
  141. package/build/workspace/TestRunner.d.ts +24 -0
  142. package/build/workspace/TestRunner.js +95 -0
  143. package/build/workspace/TestRunner.js.map +1 -0
  144. package/build/workspace/TkBaseWidget.d.ts +37 -0
  145. package/build/workspace/TkBaseWidget.js +185 -0
  146. package/build/workspace/TkBaseWidget.js.map +1 -0
  147. package/build/workspace/TkInputWidget.d.ts +16 -0
  148. package/build/workspace/TkInputWidget.js +64 -0
  149. package/build/workspace/TkInputWidget.js.map +1 -0
  150. package/build/workspace/TkLayoutCellWidget.d.ts +18 -0
  151. package/build/workspace/TkLayoutCellWidget.js +32 -0
  152. package/build/workspace/TkLayoutCellWidget.js.map +1 -0
  153. package/build/workspace/TkLayoutWidget.d.ts +34 -0
  154. package/build/workspace/TkLayoutWidget.js +130 -0
  155. package/build/workspace/TkLayoutWidget.js.map +1 -0
  156. package/build/workspace/TkMenuBarWidget.d.ts +13 -0
  157. package/build/workspace/TkMenuBarWidget.js +71 -0
  158. package/build/workspace/TkMenuBarWidget.js.map +1 -0
  159. package/build/workspace/TkPopupWidget.d.ts +16 -0
  160. package/build/workspace/TkPopupWidget.js +36 -0
  161. package/build/workspace/TkPopupWidget.js.map +1 -0
  162. package/build/workspace/TkProgressBarWidget.d.ts +10 -0
  163. package/build/workspace/TkProgressBarWidget.js +39 -0
  164. package/build/workspace/TkProgressBarWidget.js.map +1 -0
  165. package/build/workspace/TkTextWidget.d.ts +20 -0
  166. package/build/workspace/TkTextWidget.js +115 -0
  167. package/build/workspace/TkTextWidget.js.map +1 -0
  168. package/build/workspace/TkWindowWidget.d.ts +22 -0
  169. package/build/workspace/TkWindowWidget.js +88 -0
  170. package/build/workspace/TkWindowWidget.js.map +1 -0
  171. package/build/workspace/WidgetFactory.d.ts +6 -0
  172. package/build/workspace/WidgetFactory.js +21 -0
  173. package/build/workspace/WidgetFactory.js.map +1 -0
  174. package/build/workspace/button.types.d.ts +15 -0
  175. package/build/workspace/button.types.js +6 -0
  176. package/build/workspace/button.types.js.map +1 -0
  177. package/build/workspace/duration.utility.d.ts +4 -0
  178. package/build/workspace/duration.utility.js +26 -0
  179. package/build/workspace/duration.utility.js.map +1 -0
  180. package/build/workspace/factory.types.d.ts +89 -0
  181. package/build/workspace/factory.types.js +37 -0
  182. package/build/workspace/factory.types.js.map +1 -0
  183. package/build/workspace/input.types.d.ts +18 -0
  184. package/build/workspace/input.types.js +7 -0
  185. package/build/workspace/input.types.js.map +1 -0
  186. package/build/workspace/keySelectChoices.d.ts +517 -0
  187. package/build/workspace/keySelectChoices.js +2 -0
  188. package/build/workspace/keySelectChoices.js.map +1 -0
  189. package/build/workspace/layout.types.d.ts +33 -0
  190. package/build/workspace/layout.types.js +2 -0
  191. package/build/workspace/layout.types.js.map +1 -0
  192. package/build/workspace/menuBar.types.d.ts +19 -0
  193. package/build/workspace/menuBar.types.js +6 -0
  194. package/build/workspace/menuBar.types.js.map +1 -0
  195. package/build/workspace/popup.types.d.ts +13 -0
  196. package/build/workspace/popup.types.js +6 -0
  197. package/build/workspace/popup.types.js.map +1 -0
  198. package/build/workspace/progressBar.types.d.ts +10 -0
  199. package/build/workspace/progressBar.types.js +2 -0
  200. package/build/workspace/progressBar.types.js.map +1 -0
  201. package/build/workspace/table.types.d.ts +6 -0
  202. package/build/workspace/table.types.js +2 -0
  203. package/build/workspace/table.types.js.map +1 -0
  204. package/build/workspace/termKit.utility.d.ts +12 -0
  205. package/build/workspace/termKit.utility.js +128 -0
  206. package/build/workspace/termKit.utility.js.map +1 -0
  207. package/build/workspace/test.types.d.ts +24 -0
  208. package/build/workspace/test.types.js +2 -0
  209. package/build/workspace/test.types.js.map +1 -0
  210. package/build/workspace/testRunner.cli.d.ts +1 -0
  211. package/build/workspace/testRunner.cli.js +149 -0
  212. package/build/workspace/testRunner.cli.js.map +1 -0
  213. package/build/workspace/text.types.d.ts +20 -0
  214. package/build/workspace/text.types.js +7 -0
  215. package/build/workspace/text.types.js.map +1 -0
  216. package/build/workspace/widget.utilities.d.ts +5 -0
  217. package/build/workspace/widget.utilities.js +20 -0
  218. package/build/workspace/widget.utilities.js.map +1 -0
  219. package/build/workspace/widgets.types.d.ts +66 -0
  220. package/build/workspace/widgets.types.js +2 -0
  221. package/build/workspace/widgets.types.js.map +1 -0
  222. package/build/workspace/window.types.d.ts +18 -0
  223. package/build/workspace/window.types.js +9 -0
  224. package/build/workspace/window.types.js.map +1 -0
  225. package/eslint.config.js +3 -0
  226. package/package.json +31 -37
  227. package/prettier.config.js +3 -0
  228. package/src/.spruce/settings.json +3 -10
  229. package/src/__tests__/MockFetch.ts +100 -0
  230. package/src/__tests__/behavioral/AbstractModuleTest.test.ts +15 -0
  231. package/src/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.ts +31 -0
  232. package/src/__tests__/behavioral/utilities/Assert.test.ts +826 -0
  233. package/src/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.ts +14 -0
  234. package/src/__tests__/behavioral/utilities/MockFetch.test.ts +240 -0
  235. package/src/__tests__/behavioral/utilities/StackCleaner.test.ts +46 -0
  236. package/src/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.ts +34 -0
  237. package/src/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.ts +11 -0
  238. package/src/__tests__/behavioral/utilities/Stringify.test.ts +169 -0
  239. package/src/__tests__/behavioral/utilities/TestDecoratorResolver.test.ts +51 -0
  240. package/src/__tests__/behavioral/utilities/TestOnBasic.test.ts +62 -0
  241. package/src/__tests__/behavioral/utilities/TestOnInstance.test.ts +439 -0
  242. package/src/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.ts +237 -0
  243. package/src/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.ts +85 -0
  244. package/src/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.ts +14 -0
  245. package/src/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.ts +16 -0
  246. package/src/__tests__/behavioral/utilities/TestResolver.test.ts +48 -0
  247. package/src/__tests__/behavioral/utilities/TestResolverOnStatic.test.ts +12 -0
  248. package/src/__tests__/behavioral/workspace/JestJsonParser.test.ts +357 -0
  249. package/src/__tests__/behavioral/workspace/TestReporter.test.ts +257 -0
  250. package/src/__tests__/behavioral/workspace/TestRunner.test.ts +87 -0
  251. package/src/__tests__/behavioral/workspace/Widgets.test.ts +90 -0
  252. package/src/__tests__/mock-terminal-kit.ts +115 -0
  253. package/src/__tests__/support/AbstractForInstanceTest.ts +12 -0
  254. package/src/__tests__/support/AbstractLevelOneTest.ts +3 -0
  255. package/src/__tests__/support/AbstractLevelTwoTest.ts +16 -0
  256. package/src/__tests__/support/AbstractStaticTest.ts +16 -0
  257. package/src/__tests__/support/AbstractTestOnInstanceTest.ts +30 -0
  258. package/src/__tests__/support/AbstractTestOnInstanceWithHooks.ts +138 -0
  259. package/src/__tests__/support/jest.setup.ts +2 -0
  260. package/src/__tests__/support/onTestFileResult.ts +1008 -0
  261. package/src/impl/AbstractModuleTest.ts +59 -10
  262. package/src/index.ts +4 -4
  263. package/src/utilities/AssertionError.ts +14 -0
  264. package/src/utilities/StackCleaner.ts +14 -0
  265. package/src/utilities/TestDecoratorResolver.ts +118 -0
  266. package/src/utilities/assert.ts +583 -0
  267. package/src/utilities/assert.utility.ts +295 -0
  268. package/src/utilities/decorators.ts +167 -0
  269. package/src/workspace/CommandService.ts +256 -0
  270. package/src/workspace/JestJsonParser.ts +255 -0
  271. package/src/workspace/TKButtonWidget.ts +54 -0
  272. package/src/workspace/TestLogItemGenerator.ts +184 -0
  273. package/src/workspace/TestReporter.ts +865 -0
  274. package/src/workspace/TestRunner.ts +128 -0
  275. package/src/workspace/TkBaseWidget.ts +249 -0
  276. package/src/workspace/TkInputWidget.ts +83 -0
  277. package/src/workspace/TkLayoutCellWidget.ts +46 -0
  278. package/src/workspace/TkLayoutWidget.ts +181 -0
  279. package/src/workspace/TkMenuBarWidget.ts +95 -0
  280. package/src/workspace/TkPopupWidget.ts +47 -0
  281. package/src/workspace/TkProgressBarWidget.ts +54 -0
  282. package/src/workspace/TkTextWidget.ts +158 -0
  283. package/src/workspace/TkWindowWidget.ts +122 -0
  284. package/src/workspace/WidgetFactory.ts +33 -0
  285. package/src/workspace/button.types.ts +19 -0
  286. package/src/workspace/duration.utility.ts +34 -0
  287. package/src/workspace/factory.types.ts +101 -0
  288. package/src/workspace/input.types.ts +22 -0
  289. package/src/workspace/keySelectChoices.ts +134 -0
  290. package/src/workspace/layout.types.ts +40 -0
  291. package/src/workspace/menuBar.types.ts +24 -0
  292. package/src/workspace/popup.types.ts +17 -0
  293. package/src/workspace/progressBar.types.ts +13 -0
  294. package/src/workspace/table.types.ts +9 -0
  295. package/src/workspace/termKit.utility.ts +130 -0
  296. package/src/workspace/terminal-kit.d.ts +28 -0
  297. package/src/workspace/test.types.ts +34 -0
  298. package/src/workspace/testRunner.cli.ts +159 -0
  299. package/src/workspace/text.types.ts +26 -0
  300. package/src/workspace/widget.utilities.ts +35 -0
  301. package/src/workspace/widgets.types.ts +102 -0
  302. package/src/workspace/window.types.ts +22 -0
  303. package/tsconfig.json +23 -27
  304. package/build/__tests__/AbstractPackageTest.d.ts +0 -4
  305. package/build/__tests__/AbstractPackageTest.js +0 -7
  306. package/build/__tests__/AbstractPackageTest.js.map +0 -1
  307. package/build/__tests__/functions/assertFunction.test.d.ts +0 -5
  308. package/build/__tests__/functions/assertFunction.test.js +0 -23
  309. package/build/__tests__/functions/assertFunction.test.js.map +0 -1
  310. package/build/__tests__/functions/testFunction.test.d.ts +0 -5
  311. package/build/__tests__/functions/testFunction.test.js +0 -23
  312. package/build/__tests__/functions/testFunction.test.js.map +0 -1
  313. package/build/__tests__/impl/AbstractModuleTest.test.js.map +0 -1
  314. package/build/functions/assert.d.ts +0 -3
  315. package/build/functions/assert.js +0 -4
  316. package/build/functions/assert.js.map +0 -1
  317. package/build/functions/test.d.ts +0 -3
  318. package/build/functions/test.js +0 -4
  319. package/build/functions/test.js.map +0 -1
  320. package/eslint.config.mjs +0 -3
  321. package/src/__tests__/AbstractPackageTest.ts +0 -7
  322. package/src/__tests__/functions/assertFunction.test.ts +0 -22
  323. package/src/__tests__/functions/testFunction.test.ts +0 -22
  324. package/src/__tests__/impl/AbstractModuleTest.test.ts +0 -34
  325. package/src/functions/assert.ts +0 -4
  326. package/src/functions/test.ts +0 -4
@@ -0,0 +1,130 @@
1
+ import terminal_kit from 'terminal-kit';
2
+ import termKitUtil from './termKit.utility.js';
3
+ import TkBaseWidget from './TkBaseWidget.js';
4
+ import TkLayoutCellWidget from './TkLayoutCellWidget.js';
5
+ const termKit = terminal_kit;
6
+ export default class TkLayoutWidget extends TkBaseWidget {
7
+ type = 'layout';
8
+ layout;
9
+ constructor(options) {
10
+ super(options);
11
+ const mappedOptions = termKitUtil.mapWidgetOptionsToTermKitOptions(options);
12
+ const { parent, ...layout } = mappedOptions;
13
+ if (!parent) {
14
+ throw new Error('Missing required parameter: parent');
15
+ }
16
+ this.layout = new termKit.Layout({
17
+ parent,
18
+ layout,
19
+ });
20
+ this.layout.__widget = this;
21
+ this.layout.off('parentResize', this.layout.onParentResize);
22
+ this.calculateSizeLockDeltas();
23
+ }
24
+ getChildren() {
25
+ return this.layout.zChildren.map((child) => {
26
+ return new TkLayoutCellWidget({
27
+ term: this.term,
28
+ termKitElement: child,
29
+ parent: this,
30
+ });
31
+ });
32
+ }
33
+ getTermKitElement() {
34
+ return this.layout;
35
+ }
36
+ getFrame() {
37
+ return {
38
+ left: this.layout.computed.xmin,
39
+ top: this.layout.computed.ymin,
40
+ width: this.layout.computed.width,
41
+ height: this.layout.computed.height,
42
+ };
43
+ }
44
+ async destroy() {
45
+ this.layout.destroy();
46
+ }
47
+ setFrame(frame) {
48
+ const calculated = termKitUtil.buildFrame(frame, this.parent);
49
+ const def = this.layout.layoutDef;
50
+ delete def.height;
51
+ delete def.heightPercent;
52
+ this.layout.layoutDef.height = calculated.height;
53
+ this.handleResize();
54
+ }
55
+ handleResize() {
56
+ this.layout.computeBoundingBoxes();
57
+ this.layout.draw();
58
+ this.sizeLockedChildren();
59
+ }
60
+ getRows() {
61
+ const rows = this.layout.layoutDef.rows;
62
+ const layoutRows = this.termKitRowsToLayoutRows(rows);
63
+ return layoutRows;
64
+ }
65
+ termKitRowsToLayoutRows(rows) {
66
+ return rows.map((row) => ({
67
+ ...termKitUtil.mapTermKitOptionsToWidgetOptions(row),
68
+ columns: this.termKitColumnsToLayoutColumns(row.columns),
69
+ }));
70
+ }
71
+ termKitColumnsToLayoutColumns(columns) {
72
+ return columns.map((col) => termKitUtil.mapTermKitOptionsToWidgetOptions(col));
73
+ }
74
+ addRow(row) {
75
+ this.layout.layoutDef.rows.push({
76
+ ...termKitUtil.mapWidgetOptionsToTermKitOptions(row),
77
+ columns: this.widgetColumnsToTermKitColumns(row.columns),
78
+ });
79
+ }
80
+ removeRow(rowIdx) {
81
+ this.layout.layoutDef.rows.splice(rowIdx, 1);
82
+ }
83
+ removeColumn(rowIdx, columnIdx) {
84
+ const row = this.layout.layoutDef.rows[rowIdx];
85
+ if (row) {
86
+ row.columns.splice(columnIdx, 1);
87
+ }
88
+ else {
89
+ throw new Error(`Can't add remove column because row at index ${rowIdx} does not exist.`);
90
+ }
91
+ }
92
+ addColumn(rowIdx, column) {
93
+ if (this.layout.layoutDef.rows[rowIdx]) {
94
+ this.layout.layoutDef.rows[rowIdx].columns.push({
95
+ ...termKitUtil.mapWidgetOptionsToTermKitOptions(column),
96
+ });
97
+ }
98
+ else {
99
+ throw new Error(`Can't add column because row at index ${rowIdx} does not exist.`);
100
+ }
101
+ }
102
+ setColumnWidth(options) {
103
+ const { rowIdx, columnIdx, width } = options;
104
+ const col = this.layout.layoutDef.rows[rowIdx]?.columns[columnIdx];
105
+ if (col) {
106
+ this.layout.layoutDef.rows[rowIdx].columns[columnIdx] = {
107
+ ...col,
108
+ ...termKitUtil.mapWidgetOptionsToTermKitOptions({ width }),
109
+ };
110
+ }
111
+ else {
112
+ throw new Error(`Can't add set column width because column ${columnIdx} at row ${rowIdx} does not exist.`);
113
+ }
114
+ }
115
+ widgetColumnsToTermKitColumns(columns) {
116
+ return columns.map((column) => ({
117
+ ...termKitUtil.mapWidgetOptionsToTermKitOptions(column),
118
+ }));
119
+ }
120
+ setRowHeight(rowIdx, height) {
121
+ this.layout.layoutDef.rows[rowIdx] = {
122
+ ...this.layout.layoutDef.rows[rowIdx],
123
+ ...termKitUtil.mapWidgetOptionsToTermKitOptions({ height }),
124
+ };
125
+ }
126
+ updateLayout() {
127
+ this.handleResize();
128
+ }
129
+ }
130
+ //# sourceMappingURL=TkLayoutWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TkLayoutWidget.js","sourceRoot":"","sources":["../../src/workspace/TkLayoutWidget.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAA;AAQvC,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,YAAiC,MAAM,mBAAmB,CAAA;AACjE,OAAO,kBAAkB,MAAM,yBAAyB,CAAA;AACxD,MAAM,OAAO,GAAG,YAAmB,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,cACjB,SAAQ,YAAY;IAGJ,IAAI,GAAG,QAAQ,CAAA;IAEvB,MAAM,CAAK;IAEnB,YAAmB,OAA8C;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,MAAM,aAAa,GACf,WAAW,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAA;QAEzD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,aAAa,CAAA;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;YAC7B,MAAM;YACN,MAAM;SACT,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QAE3D,IAAI,CAAC,uBAAuB,EAAE,CAAA;IAClC,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;YAC5C,OAAO,IAAI,kBAAkB,CAAC;gBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,cAAc,EAAE,KAAK;gBACrB,MAAM,EAAE,IAAI;aACf,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAEM,QAAQ;QACX,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC/B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;SACtC,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;IACzB,CAAC;IAEM,QAAQ,CAAC,KAA2B;QACvC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;QAEjC,OAAO,GAAG,CAAC,MAAM,CAAA;QACjB,OAAO,GAAG,CAAC,aAAa,CAAA;QAExB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAEhD,IAAI,CAAC,YAAY,EAAE,CAAA;IACvB,CAAC;IAEO,YAAY;QAChB,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAA;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAElB,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC7B,CAAC;IAEM,OAAO;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAA;QAErD,OAAO,UAAU,CAAA;IACrB,CAAC;IAEO,uBAAuB,CAAC,IAAS;QACrC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YAC3B,GAAG,WAAW,CAAC,gCAAgC,CAAC,GAAG,CAAC;YACpD,OAAO,EAAE,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC;SAC3D,CAAC,CAAC,CAAA;IACP,CAAC;IAEO,6BAA6B,CAAC,OAAY;QAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAC5B,WAAW,CAAC,gCAAgC,CAAC,GAAG,CAAC,CACpD,CAAA;IACL,CAAC;IAEM,MAAM,CAAC,GAAc;QACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,GAAG,WAAW,CAAC,gCAAgC,CAAC,GAAG,CAAC;YACpD,OAAO,EAAE,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC;SAC3D,CAAC,CAAA;IACN,CAAC;IAEM,SAAS,CAAC,MAAc;QAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,YAAY,CAAC,MAAc,EAAE,SAAiB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,GAAG,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QACpC,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CACX,gDAAgD,MAAM,kBAAkB,CAC3E,CAAA;QACL,CAAC;IACL,CAAC;IAEM,SAAS,CAAC,MAAc,EAAE,MAAoB;QACjD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC5C,GAAG,WAAW,CAAC,gCAAgC,CAAC,MAAM,CAAC;aAC1D,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CACX,yCAAyC,MAAM,kBAAkB,CACpE,CAAA;QACL,CAAC;IACL,CAAC;IAEM,cAAc,CAAC,OAIrB;QACG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QAE5C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;QAClE,IAAI,GAAG,EAAE,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG;gBACpD,GAAG,GAAG;gBACN,GAAG,WAAW,CAAC,gCAAgC,CAAC,EAAE,KAAK,EAAE,CAAC;aAC7D,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CACX,6CAA6C,SAAS,WAAW,MAAM,kBAAkB,CAC5F,CAAA;QACL,CAAC;IACL,CAAC;IAEO,6BAA6B,CAAC,OAAuB;QACzD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC5B,GAAG,WAAW,CAAC,gCAAgC,CAAC,MAAM,CAAC;SAC1D,CAAC,CAAC,CAAA;IACP,CAAC;IAEM,YAAY,CAAC,MAAc,EAAE,MAA4B;QAC5D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;YACjC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACrC,GAAG,WAAW,CAAC,gCAAgC,CAAC,EAAE,MAAM,EAAE,CAAC;SAC9D,CAAA;IACL,CAAC;IAEM,YAAY;QACf,IAAI,CAAC,YAAY,EAAE,CAAA;IACvB,CAAC;CACJ"}
@@ -0,0 +1,13 @@
1
+ import { MenuBarWidget, MenuBarWidgetOptions } from './menuBar.types.js';
2
+ import TkBaseWidget, { TkWidgetOptions } from './TkBaseWidget.js';
3
+ export default class TkMenuBarWidget extends TkBaseWidget implements MenuBarWidget {
4
+ readonly type = "menuBar";
5
+ private menu;
6
+ constructor(options: TkWidgetOptions & MenuBarWidgetOptions);
7
+ setTextForItem(value: string, text: string): void;
8
+ private getButtonByValue;
9
+ private handleMenuSubmit;
10
+ getTermKitElement(): any;
11
+ private mapItemsToTkItems;
12
+ private buildItemText;
13
+ }
@@ -0,0 +1,71 @@
1
+ import terminal_kit from 'terminal-kit';
2
+ const termKit = terminal_kit;
3
+ import termKitUtil from './termKit.utility.js';
4
+ import TkBaseWidget from './TkBaseWidget.js';
5
+ export default class TkMenuBarWidget extends TkBaseWidget {
6
+ type = 'menuBar';
7
+ menu;
8
+ constructor(options) {
9
+ super(options);
10
+ const frame = termKitUtil.buildFrame(options, options.parent);
11
+ const items = this.mapItemsToTkItems(options.items);
12
+ this.menu = new termKit.DropDownMenu({
13
+ parent: options.parent.getTermKitElement(),
14
+ separator: '|',
15
+ items,
16
+ backgroundAttr: { bgColor: 'black', color: 'white' },
17
+ buttonBlurAttr: { bgColor: 'black', color: 'yellow' },
18
+ buttonFocusAttr: { bgColor: 'yellow', color: 'black' },
19
+ separatorAttr: { bgColor: 'black', color: 'yellow' },
20
+ ...frame,
21
+ });
22
+ this.calculateSizeLockDeltas();
23
+ this.menu.__widget = this;
24
+ this.menu.on('submit', this.handleMenuSubmit.bind(this));
25
+ }
26
+ setTextForItem(value, text) {
27
+ let buttonItem = this.getButtonByValue(value, this.menu.buttons);
28
+ if (!buttonItem) {
29
+ for (const item of this.menu.itemsDef) {
30
+ for (const subItem of item.items ?? []) {
31
+ if (subItem.value === value) {
32
+ subItem.content = this.buildItemText(text);
33
+ return;
34
+ }
35
+ }
36
+ }
37
+ }
38
+ if (!buttonItem) {
39
+ throw new Error(`No menu item with value of ${value}`);
40
+ }
41
+ buttonItem.setContent(this.buildItemText(text), true);
42
+ }
43
+ getButtonByValue(value, buttons) {
44
+ let button;
45
+ for (const button of buttons) {
46
+ if (button.def.value === value) {
47
+ return button;
48
+ }
49
+ }
50
+ return button;
51
+ }
52
+ handleMenuSubmit(value) {
53
+ this.menu.clearColumnMenu();
54
+ void this.emit('select', { value });
55
+ }
56
+ getTermKitElement() {
57
+ return this.menu;
58
+ }
59
+ mapItemsToTkItems(items) {
60
+ return items.map((item) => ({
61
+ value: item.value,
62
+ content: this.buildItemText(item.label),
63
+ topSubmit: !item.items || item.items.length === 0,
64
+ items: item.items ? this.mapItemsToTkItems(item.items) : undefined,
65
+ }));
66
+ }
67
+ buildItemText(text) {
68
+ return ` ${text} `;
69
+ }
70
+ }
71
+ //# sourceMappingURL=TkMenuBarWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TkMenuBarWidget.js","sourceRoot":"","sources":["../../src/workspace/TkMenuBarWidget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { PopupWidget, PopupWidgetOptions } from './popup.types.js';
2
+ import TkBaseWidget, { TkWidgetOptions } from './TkBaseWidget.js';
3
+ export default class TkPopupWidget extends TkBaseWidget implements PopupWidget {
4
+ private popup;
5
+ readonly type = "popup";
6
+ constructor(options: TkWidgetOptions & PopupWidgetOptions & {
7
+ termKitElement: any;
8
+ });
9
+ getTermKitElement(): any;
10
+ getFrame(): {
11
+ left: any;
12
+ top: any;
13
+ width: any;
14
+ height: any;
15
+ };
16
+ }
@@ -0,0 +1,36 @@
1
+ import terminal_kit from 'terminal-kit';
2
+ import termKitUtil from './termKit.utility.js';
3
+ import TkBaseWidget from './TkBaseWidget.js';
4
+ const termKit = terminal_kit;
5
+ export default class TkPopupWidget extends TkBaseWidget {
6
+ popup;
7
+ type = 'popup';
8
+ constructor(options) {
9
+ super({
10
+ shouldLockHeightWithParent: true,
11
+ shouldLockWidthWithParent: true,
12
+ ...options,
13
+ });
14
+ const { parent, ...rest } = options;
15
+ const frame = termKitUtil.buildFrame(options, parent);
16
+ this.popup = new termKit.Window({
17
+ parent: parent ? parent.getTermKitElement() : undefined,
18
+ movable: true,
19
+ ...rest,
20
+ ...frame,
21
+ });
22
+ this.popup.__widget = this;
23
+ }
24
+ getTermKitElement() {
25
+ return this.popup;
26
+ }
27
+ getFrame() {
28
+ return {
29
+ left: this.popup.outputDst.x,
30
+ top: this.popup.outputDst.y,
31
+ width: this.popup.inputWidth,
32
+ height: this.popup.inputHeight,
33
+ };
34
+ }
35
+ }
36
+ //# sourceMappingURL=TkPopupWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TkPopupWidget.js","sourceRoot":"","sources":["../../src/workspace/TkPopupWidget.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAA;AAEvC,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,YAAiC,MAAM,mBAAmB,CAAA;AACjE,MAAM,OAAO,GAAG,YAAmB,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,YAAY;IAC3C,KAAK,CAAK;IAEF,IAAI,GAAG,OAAO,CAAA;IAE9B,YACI,OAAuE;QAEvE,KAAK,CAAC;YACF,0BAA0B,EAAE,IAAI;YAChC,yBAAyB,EAAE,IAAI;YAC/B,GAAG,OAAO;SACb,CAAC,CAAA;QAEF,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;QAEnC,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAErD,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;YAC5B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS;YACvD,OAAO,EAAE,IAAI;YACb,GAAG,IAAI;YACP,GAAG,KAAK;SACX,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;IAC9B,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAEM,QAAQ;QACX,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;SACjC,CAAA;IACL,CAAC;CACJ"}
@@ -0,0 +1,10 @@
1
+ import { ProgressBarWidget, ProgressBarWidgetOptions } from './progressBar.types.js';
2
+ import TkBaseWidget, { TkWidgetOptions } from './TkBaseWidget.js';
3
+ export default class TkProgressBarWidget extends TkBaseWidget implements ProgressBarWidget {
4
+ readonly type = "progressBar";
5
+ private bar;
6
+ constructor(options: TkWidgetOptions & ProgressBarWidgetOptions);
7
+ setProgress(progress: number): void;
8
+ setLabel(label?: string): void;
9
+ getTermKitElement(): any;
10
+ }
@@ -0,0 +1,39 @@
1
+ import terminal_kit from 'terminal-kit';
2
+ import TkBaseWidget from './TkBaseWidget.js';
3
+ const termKit = terminal_kit;
4
+ export default class TkProgressBarWidget extends TkBaseWidget {
5
+ type = 'progressBar';
6
+ bar;
7
+ constructor(options) {
8
+ super(options);
9
+ const { parent, label, left, top, progress, ...barOptions } = options;
10
+ this.bar = new termKit.Bar({
11
+ parent: parent?.getTermKitElement(),
12
+ content: label ? ` ${label}` : undefined,
13
+ x: left,
14
+ y: top,
15
+ barChars: 'solid',
16
+ bodyAttr: { bgColor: 'yellow', dim: false, color: 'yellow' },
17
+ overTextFullAttr: { bgColor: 'yellow', color: 'black', dim: false },
18
+ overTextEmptyAttr: {
19
+ bgColor: 'yellow',
20
+ color: 'black',
21
+ dim: false,
22
+ },
23
+ value: progress,
24
+ ...barOptions,
25
+ });
26
+ this.bar.__widget = this;
27
+ this.calculateSizeLockDeltas();
28
+ }
29
+ setProgress(progress) {
30
+ this.bar.setValue(progress);
31
+ }
32
+ setLabel(label) {
33
+ this.bar.setContent(label ? ` ${label}` : '');
34
+ }
35
+ getTermKitElement() {
36
+ return this.bar;
37
+ }
38
+ }
39
+ //# sourceMappingURL=TkProgressBarWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TkProgressBarWidget.js","sourceRoot":"","sources":["../../src/workspace/TkProgressBarWidget.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAA;AAKvC,OAAO,YAAiC,MAAM,mBAAmB,CAAA;AACjE,MAAM,OAAO,GAAG,YAAmB,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,mBACjB,SAAQ,YAAY;IAGJ,IAAI,GAAG,aAAa,CAAA;IAE5B,GAAG,CAAK;IAEhB,YAAmB,OAAmD;QAClE,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,CAAA;QAErE,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;YACvB,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE;YACnC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;YACxC,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,GAAG;YACN,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC5D,gBAAgB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE;YACnE,iBAAiB,EAAE;gBACf,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,OAAO;gBACd,GAAG,EAAE,KAAK;aACb;YACD,KAAK,EAAE,QAAQ;YACf,GAAG,UAAU;SAChB,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,uBAAuB,EAAE,CAAA;IAClC,CAAC;IAEM,WAAW,CAAC,QAAgB;QAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAEM,QAAQ,CAAC,KAAc;QAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACjD,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,GAAG,CAAA;IACnB,CAAC;CACJ"}
@@ -0,0 +1,20 @@
1
+ import { TextWidget, TextWidgetOptions } from './text.types.js';
2
+ import { WidgetFrame } from './widgets.types.js';
3
+ import TkBaseWidget, { TkWidgetOptions } from './TkBaseWidget.js';
4
+ export default class TkTextWidget extends TkBaseWidget implements TextWidget {
5
+ readonly type = "text";
6
+ private text;
7
+ private shouldAutoScrollWhenAppendingContent;
8
+ constructor(options: TkWidgetOptions & TextWidgetOptions);
9
+ private handleMouseDown;
10
+ getTermKitElement(): any;
11
+ setFrame(frame: WidgetFrame): void;
12
+ getText(): string;
13
+ private isLogScrolledAllTheWay;
14
+ getScrollY(): any;
15
+ getScrollX(): any;
16
+ setText(content: string): void;
17
+ private markupType;
18
+ private padAnsiSegments;
19
+ private padSegment;
20
+ }
@@ -0,0 +1,115 @@
1
+ import terminal_kit from 'terminal-kit';
2
+ import widgetUtil from './widget.utilities.js';
3
+ import termKitUtil from './termKit.utility.js';
4
+ import TkBaseWidget from './TkBaseWidget.js';
5
+ const termKit = terminal_kit;
6
+ export default class TkTextWidget extends TkBaseWidget {
7
+ type = 'text';
8
+ text;
9
+ shouldAutoScrollWhenAppendingContent;
10
+ constructor(options) {
11
+ super(options);
12
+ const { parent, text, isScrollEnabled: enableScroll = false, shouldAutoScrollWhenAppendingContent = true, ...rest } = options;
13
+ this.shouldAutoScrollWhenAppendingContent =
14
+ shouldAutoScrollWhenAppendingContent;
15
+ const frame = termKitUtil.buildFrame(options, parent);
16
+ this.text = new termKit.TextBox({
17
+ parent: parent ? parent.getTermKitElement() : undefined,
18
+ scrollable: enableScroll,
19
+ vScrollBar: enableScroll,
20
+ hScrollBar: enableScroll && !rest.wordWrap,
21
+ content: text,
22
+ wordWrap: true,
23
+ ...termKitUtil.mapWidgetOptionsToTermKitOptions(rest),
24
+ ...frame,
25
+ });
26
+ this.calculateSizeLockDeltas();
27
+ this.text.__widget = this;
28
+ this.text.on('click', this.handleMouseDown.bind(this));
29
+ }
30
+ async handleMouseDown(position) {
31
+ const { x, y } = position;
32
+ const line = this.text.content.split('\n')[y];
33
+ await this.emit('click', {
34
+ text: line,
35
+ row: y,
36
+ column: x,
37
+ });
38
+ }
39
+ getTermKitElement() {
40
+ return this.text;
41
+ }
42
+ setFrame(frame) {
43
+ const oldFrame = this.getFrame();
44
+ const newFrame = widgetUtil.buildFrame(frame, this.parent);
45
+ this.text.setSizeAndPosition({
46
+ x: newFrame.left ?? oldFrame.left,
47
+ y: newFrame.top ?? oldFrame.top,
48
+ width: newFrame.width ?? oldFrame.width,
49
+ height: newFrame.height ?? oldFrame.height,
50
+ });
51
+ this.text.draw();
52
+ }
53
+ getText() {
54
+ return this.text.content;
55
+ }
56
+ isLogScrolledAllTheWay() {
57
+ const scrollDistance = this.getScrollY() * -1;
58
+ const contentHeight = this.text.textBuffer.cy;
59
+ const visibleHeight = this.text.textAreaHeight;
60
+ const maxScrollDistance = Math.max(contentHeight, visibleHeight) - visibleHeight;
61
+ const isScrolledAllTheWay = scrollDistance >= maxScrollDistance;
62
+ return isScrolledAllTheWay;
63
+ }
64
+ getScrollY() {
65
+ return this.text.scrollY;
66
+ }
67
+ getScrollX() {
68
+ return this.text.scrollX;
69
+ }
70
+ setText(content) {
71
+ if (this.getText() === content) {
72
+ return;
73
+ }
74
+ const isScrolledAllTheWay = this.isLogScrolledAllTheWay();
75
+ const markupType = this.markupType(content);
76
+ const normalizedContent = markupType === 'ansi' ? this.padAnsiSegments(content) : content;
77
+ this.text.setContent(normalizedContent, markupType);
78
+ if (this.shouldAutoScrollWhenAppendingContent && isScrolledAllTheWay) {
79
+ this.text.scrollToBottom();
80
+ }
81
+ }
82
+ markupType(content) {
83
+ const match = /\x1b\[[0-9;]+m/.exec(content);
84
+ const markupType = match ? 'ansi' : true;
85
+ return markupType;
86
+ }
87
+ padAnsiSegments(content) {
88
+ const sgrPattern = /\[[0-9;]+m/g;
89
+ let result = '';
90
+ let lastIndex = 0;
91
+ let match;
92
+ while ((match = sgrPattern.exec(content))) {
93
+ const segment = content.slice(lastIndex, match.index);
94
+ if (segment) {
95
+ result += this.padSegment(segment);
96
+ }
97
+ result += match[0];
98
+ lastIndex = match.index + match[0].length;
99
+ }
100
+ if (lastIndex < content.length) {
101
+ result += this.padSegment(content.slice(lastIndex));
102
+ }
103
+ return result;
104
+ }
105
+ padSegment(segment) {
106
+ if (segment.length !== 1) {
107
+ return segment;
108
+ }
109
+ if (segment.trim().length > 0) {
110
+ return `${segment}​`;
111
+ }
112
+ return segment;
113
+ }
114
+ }
115
+ //# sourceMappingURL=TkTextWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TkTextWidget.js","sourceRoot":"","sources":["../../src/workspace/TkTextWidget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { BaseWidget } from './widgets.types.js';
2
+ import { WindowWidget, WindowWidgetOptions } from './window.types.js';
3
+ import TkBaseWidget, { TkWidgetOptions } from './TkBaseWidget.js';
4
+ export default class TkWindowWidget extends TkBaseWidget implements WindowWidget {
5
+ readonly type = "window";
6
+ private document;
7
+ constructor(options: TkWidgetOptions & WindowWidgetOptions);
8
+ getFocusedWidget(): BaseWidget<any> | null;
9
+ private handleKeyPress;
10
+ protected handleParentResize(): void;
11
+ setTitle(title: string): void;
12
+ hideCursor(): void;
13
+ showCursor(): void;
14
+ getFrame(): {
15
+ left: number;
16
+ top: number;
17
+ width: any;
18
+ height: any;
19
+ };
20
+ getTermKitElement(): any;
21
+ destroy(): Promise<void>;
22
+ }
@@ -0,0 +1,88 @@
1
+ import terminal_kit from 'terminal-kit';
2
+ import TkBaseWidget from './TkBaseWidget.js';
3
+ const termKit = terminal_kit;
4
+ export default class TkWindowWidget extends TkBaseWidget {
5
+ type = 'window';
6
+ document;
7
+ constructor(options) {
8
+ super(options);
9
+ //@ts-ignore
10
+ this.document = this.term.createDocument({
11
+ palette: new termKit.Palette(),
12
+ });
13
+ this.document.eventSource.on('resize', async () => {
14
+ this.handleParentResize();
15
+ const frame = this.getFrame();
16
+ await this.emit('resize', {
17
+ width: frame.width,
18
+ height: frame.height,
19
+ });
20
+ });
21
+ this.document.__widget = this;
22
+ options.term.on('key', this.handleKeyPress.bind(this));
23
+ process.on('exit', (code) => {
24
+ void this.emit('kill', { code });
25
+ });
26
+ process.on('SIGQUIT', (code) => {
27
+ void this.emit('kill', { code });
28
+ });
29
+ process.on('kill', (code) => {
30
+ void this.emit('kill', { code });
31
+ });
32
+ process.on('SIGINT', (code) => {
33
+ void this.emit('kill', { code });
34
+ });
35
+ process.on('SIGTERM', (code) => {
36
+ void this.emit('kill', { code });
37
+ });
38
+ process.on('SIGUSR1', (code) => {
39
+ void this.emit('kill', { code });
40
+ });
41
+ process.on('SIGUSR2', (code) => {
42
+ void this.emit('kill', { code });
43
+ });
44
+ process.on('uncaughtException', (code) => {
45
+ void this.emit('kill', { code });
46
+ });
47
+ }
48
+ getFocusedWidget() {
49
+ return this.document.focusElement.__widget;
50
+ }
51
+ async handleKeyPress(key) {
52
+ await this.emit('key', { key });
53
+ }
54
+ handleParentResize() {
55
+ this.sizeLockedChildren();
56
+ }
57
+ setTitle(title) {
58
+ this.term.windowTitle(title);
59
+ }
60
+ hideCursor() {
61
+ this.term.hideCursor(true);
62
+ }
63
+ showCursor() {
64
+ this.term.hideCursor(false);
65
+ }
66
+ getFrame() {
67
+ return {
68
+ left: 0,
69
+ top: 0,
70
+ width: this.document.inputWidth,
71
+ height: this.document.inputHeight,
72
+ };
73
+ }
74
+ getTermKitElement() {
75
+ return this.document;
76
+ }
77
+ async destroy() {
78
+ this.showCursor();
79
+ //@ts-ignore
80
+ this.term.removeAllListeners();
81
+ this.term.styleReset();
82
+ await this.term.grabInput(false, true);
83
+ this.document.destroy();
84
+ this.term.clear();
85
+ this.term(`\n`);
86
+ }
87
+ }
88
+ //# sourceMappingURL=TkWindowWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TkWindowWidget.js","sourceRoot":"","sources":["../../src/workspace/TkWindowWidget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { FactoryOptions, WidgetRegistry, WidgetType } from './factory.types.js';
2
+ export default class WidgetFactory {
3
+ private term;
4
+ constructor();
5
+ Widget<T extends WidgetType>(type: T, options: FactoryOptions<T>): WidgetRegistry[T];
6
+ }
@@ -0,0 +1,21 @@
1
+ import terminal_kit from 'terminal-kit';
2
+ import { contractRegistry, widgetRegistry, } from './factory.types.js';
3
+ const termKit = terminal_kit;
4
+ export default class WidgetFactory {
5
+ term;
6
+ constructor() {
7
+ this.term = termKit.terminal;
8
+ }
9
+ Widget(type, options) {
10
+ const Class = widgetRegistry[type];
11
+ //@ts-ignore
12
+ const instance = new Class({
13
+ ...options,
14
+ term: this.term,
15
+ eventContract: contractRegistry[type],
16
+ });
17
+ //@ts-ignore
18
+ return instance;
19
+ }
20
+ }
21
+ //# sourceMappingURL=WidgetFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetFactory.js","sourceRoot":"","sources":["../../src/workspace/WidgetFactory.ts"],"names":[],"mappings":"AAAA,OAAO,YAA0B,MAAM,cAAc,CAAA;AACrD,OAAO,EACH,gBAAgB,EAEhB,cAAc,GAGjB,MAAM,oBAAoB,CAAA;AAC3B,MAAM,OAAO,GAAG,YAAmB,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,aAAa;IACtB,IAAI,CAAU;IACtB;QACI,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAA;IAChC,CAAC;IAEM,MAAM,CACT,IAAO,EACP,OAA0B;QAE1B,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QAElC,YAAY;QACZ,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC;YACvB,GAAG,OAAO;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,gBAAgB,CAAC,IAAI,CAAQ;SAC/C,CAAC,CAAA;QAEF,YAAY;QACZ,OAAO,QAAQ,CAAA;IACnB,CAAC;CACJ"}