@sprucelabs/spruce-cli 17.1.39 → 17.1.42

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 (428) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/build/__tests__/behavioral/AddingADependency.test.js +10 -12
  3. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
  4. package/build/__tests__/behavioral/BlockingCommands.test.js +3 -5
  5. package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
  6. package/build/__tests__/behavioral/BootingTheCli.test.js +3 -3
  7. package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
  8. package/build/__tests__/behavioral/BootingWithBadFiles.test.js +7 -7
  9. package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
  10. package/build/__tests__/behavioral/CreatingAConversationTopic.test.js +13 -13
  11. package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
  12. package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js +10 -10
  13. package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +1 -1
  14. package/build/__tests__/behavioral/DeployingASkill.test.js +32 -34
  15. package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
  16. package/build/__tests__/behavioral/DeployingToSandbox.test.js +15 -17
  17. package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
  18. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js +11 -13
  19. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  20. package/build/__tests__/behavioral/GettingCliVersion.test.js +4 -4
  21. package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
  22. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +11 -13
  23. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  24. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js +4 -4
  25. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -1
  26. package/build/__tests__/behavioral/LoggingInAsASkill.test.js +14 -16
  27. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
  28. package/build/__tests__/behavioral/ManagingDependencies.test.js +9 -9
  29. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
  30. package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js +3 -3
  31. package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
  32. package/build/__tests__/behavioral/RebuildingASkill.test.js +4 -6
  33. package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
  34. package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js +4 -4
  35. package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
  36. package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js +7 -7
  37. package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
  38. package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js +11 -11
  39. package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
  40. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js +6 -6
  41. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
  42. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +5 -5
  43. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  44. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js +10 -12
  45. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  46. package/build/__tests__/behavioral/SettingRemote.test.js +9 -9
  47. package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
  48. package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js +10 -10
  49. package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
  50. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js +29 -31
  51. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  52. package/build/__tests__/behavioral/SettingUpVscode.test.js +10 -10
  53. package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
  54. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +13 -13
  55. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
  56. package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js +6 -6
  57. package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +1 -1
  58. package/build/__tests__/behavioral/TestingAConversation.test.js +17 -17
  59. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  60. package/build/__tests__/behavioral/TestingDataStores.test.js +13 -13
  61. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  62. package/build/__tests__/behavioral/WatchingSkillViews.test.js +15 -15
  63. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  64. package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js +15 -15
  65. package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
  66. package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js +8 -8
  67. package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
  68. package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js +32 -32
  69. package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
  70. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js +4 -6
  71. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  72. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +25 -25
  73. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  74. package/build/__tests__/behavioral/events/CreatingAListener.test.js +29 -31
  75. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  76. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +26 -28
  77. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  78. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js +22 -22
  79. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  80. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +38 -38
  81. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  82. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js +7 -7
  83. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
  84. package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js +6 -6
  85. package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
  86. package/build/__tests__/behavioral/events/SettingUpEvents.test.js +4 -4
  87. package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
  88. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +3 -5
  89. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  90. package/build/__tests__/behavioral/node/CreatingANodeModule.test.js +6 -6
  91. package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
  92. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js +6 -6
  93. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  94. package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js +6 -6
  95. package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
  96. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +3 -3
  97. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
  98. package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js +14 -16
  99. package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
  100. package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js +7 -7
  101. package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
  102. package/build/__tests__/behavioral/polish/SettingUpPolish.test.js +8 -8
  103. package/build/__tests__/behavioral/polish/SettingUpPolish.test.js.map +1 -1
  104. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js +23 -25
  105. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
  106. package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js +7 -7
  107. package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
  108. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +6 -6
  109. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  110. package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js +18 -18
  111. package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
  112. package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js +7 -7
  113. package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
  114. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js +62 -64
  115. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
  116. package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js +6 -8
  117. package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
  118. package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js +4 -6
  119. package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
  120. package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.d.ts +1 -1
  121. package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js +4 -4
  122. package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
  123. package/build/__tests__/behavioral/skill/BootingASkill.test.js +12 -12
  124. package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
  125. package/build/__tests__/behavioral/skill/CreatingASkill.test.js +5 -5
  126. package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
  127. package/build/__tests__/behavioral/skill/RegisteringASkill.test.js +12 -14
  128. package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
  129. package/build/__tests__/behavioral/skill/SettingUpASkill.test.js +29 -29
  130. package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
  131. package/build/__tests__/behavioral/stores/CreatingADataStore.test.js +26 -28
  132. package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
  133. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js +8 -10
  134. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
  135. package/build/__tests__/behavioral/tests/CreatingATest.test.js +10 -10
  136. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  137. package/build/__tests__/behavioral/tests/RunningTests.test.js +8 -10
  138. package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
  139. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +17 -17
  140. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  141. package/build/__tests__/behavioral/tests/SettingUpTests.test.js +3 -5
  142. package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
  143. package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js +8 -8
  144. package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
  145. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js +7 -7
  146. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  147. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +6 -6
  148. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  149. package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js +15 -15
  150. package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
  151. package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js +24 -24
  152. package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
  153. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +22 -22
  154. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  155. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +10 -10
  156. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  157. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js +9 -9
  158. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  159. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js +4 -4
  160. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  161. package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js +9 -9
  162. package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
  163. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +28 -30
  164. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  165. package/build/__tests__/behavioral/views/CreatingATheme.test.js +9 -11
  166. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  167. package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js +8 -8
  168. package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
  169. package/build/__tests__/behavioral/views/SettingUpViews.test.js +5 -5
  170. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  171. package/build/__tests__/behavioral/views/TestingViewControllers.test.js +12 -12
  172. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  173. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js +10 -10
  174. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  175. package/build/__tests__/implementation/ActionExecuter.test.js +5 -5
  176. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  177. package/build/__tests__/implementation/ActionExecuter2.test.js +30 -30
  178. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  179. package/build/__tests__/implementation/ActionExecuter3.test.js +3 -5
  180. package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
  181. package/build/__tests__/implementation/ActionExecuter4.test.js +2 -4
  182. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  183. package/build/__tests__/implementation/ArgParser.test.d.ts +1 -1
  184. package/build/__tests__/implementation/ArgParser.test.js +7 -7
  185. package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
  186. package/build/__tests__/implementation/BuildService.test.js +4 -4
  187. package/build/__tests__/implementation/BuildService.test.js.map +1 -1
  188. package/build/__tests__/implementation/BulkImporting.test.d.ts +1 -1
  189. package/build/__tests__/implementation/BulkImporting.test.js +20 -22
  190. package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
  191. package/build/__tests__/implementation/CachingImports.test.js +3 -3
  192. package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
  193. package/build/__tests__/implementation/CommandOptionBuilder.test.js +12 -12
  194. package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
  195. package/build/__tests__/implementation/CommanderCommandResultMapper.test.d.ts +1 -1
  196. package/build/__tests__/implementation/CommanderCommandResultMapper.test.js +13 -13
  197. package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
  198. package/build/__tests__/implementation/DataStoreStore.test.js +16 -18
  199. package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
  200. package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js +6 -6
  201. package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
  202. package/build/__tests__/implementation/EventContractCleanerUtil.test.d.ts +1 -1
  203. package/build/__tests__/implementation/EventContractCleanerUtil.test.js +7 -7
  204. package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
  205. package/build/__tests__/implementation/EventStore.test.js +27 -29
  206. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  207. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js +12 -12
  208. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  209. package/build/__tests__/implementation/FeatureCommandAttacher.test.js +23 -23
  210. package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
  211. package/build/__tests__/implementation/FeatureFixture.test.js +7 -7
  212. package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
  213. package/build/__tests__/implementation/FeatureInstaller.test.js +8 -8
  214. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  215. package/build/__tests__/implementation/FeaturesUtil.test.d.ts +1 -1
  216. package/build/__tests__/implementation/FeaturesUtil.test.js +4 -4
  217. package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
  218. package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js +11 -11
  219. package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
  220. package/build/__tests__/implementation/GlobalEmitter.js +3 -3
  221. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  222. package/build/__tests__/implementation/Introspection.test.js +4 -4
  223. package/build/__tests__/implementation/Introspection.test.js.map +1 -1
  224. package/build/__tests__/implementation/JestJsonParser.test.d.ts +1 -1
  225. package/build/__tests__/implementation/JestJsonParser.test.js +31 -31
  226. package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
  227. package/build/__tests__/implementation/LintService.test.js +3 -3
  228. package/build/__tests__/implementation/LintService.test.js.map +1 -1
  229. package/build/__tests__/implementation/ListenerStore.test.js +3 -3
  230. package/build/__tests__/implementation/ListenerStore.test.js.map +1 -1
  231. package/build/__tests__/implementation/OnboardingScriptLoader.test.js +9 -9
  232. package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
  233. package/build/__tests__/implementation/OnboardingScriptPlayer.test.js +17 -17
  234. package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
  235. package/build/__tests__/implementation/OnboardingStore.test.js +14 -14
  236. package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
  237. package/build/__tests__/implementation/OrganizationStore.test.js +10 -10
  238. package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
  239. package/build/__tests__/implementation/ParentTestFinder.test.js +6 -6
  240. package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
  241. package/build/__tests__/implementation/PkgService.test.js +8 -8
  242. package/build/__tests__/implementation/PkgService.test.js.map +1 -1
  243. package/build/__tests__/implementation/SchemaStore.test.js +30 -32
  244. package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
  245. package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js +10 -10
  246. package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
  247. package/build/__tests__/implementation/SchemaValueTypeWriter.test.js +13 -13
  248. package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
  249. package/build/__tests__/implementation/ServiceFactory.test.js +3 -3
  250. package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
  251. package/build/__tests__/implementation/SettingUpANodeModule.test.js +4 -6
  252. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  253. package/build/__tests__/implementation/SkillStore.test.js +25 -27
  254. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  255. package/build/__tests__/implementation/StoreFeature.test.js +4 -4
  256. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  257. package/build/__tests__/implementation/TestReporter.test.js +5 -5
  258. package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
  259. package/build/__tests__/implementation/TestRunner.test.js +23 -25
  260. package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
  261. package/build/__tests__/implementation/ValueTypeMapping.test.js +4 -4
  262. package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
  263. package/build/__tests__/implementation/Widgets.test.js +10 -10
  264. package/build/__tests__/implementation/Widgets.test.js.map +1 -1
  265. package/build/__tests__/testDirsAndFiles/abstract_tests/AbstractTest.d.ts +1 -1
  266. package/build/__tests__/testDirsAndFiles/abstract_tests/AbstractTest.ts +1 -1
  267. package/build/__tests__/testDirsAndFiles/abstract_tests/AbstractTest2.d.ts +1 -1
  268. package/build/__tests__/testDirsAndFiles/abstract_tests/AbstractTest2.ts +1 -1
  269. package/build/__tests__/testDirsAndFiles/abstract_tests/deeper/AbstractBananaTest.d.ts +1 -1
  270. package/build/__tests__/testDirsAndFiles/abstract_tests/deeper/AbstractBananaTest.ts +1 -1
  271. package/build/features/onboard/templates/ManagingTodos.test.ts.hbs +1 -1
  272. package/build/features/test/TestLogItemGenerator.js +2 -2
  273. package/build/features/test/TestLogItemGenerator.js.map +1 -1
  274. package/build/interfaces/SpyInterface.js +5 -5
  275. package/build/interfaces/SpyInterface.js.map +1 -1
  276. package/build/tests/AbstractCliTest.d.ts +1 -1
  277. package/build/tests/AbstractCliTest.js +11 -11
  278. package/build/tests/AbstractCliTest.js.map +1 -1
  279. package/build/tests/AbstractSchemaTest.js +4 -4
  280. package/build/tests/AbstractSchemaTest.js.map +1 -1
  281. package/build/tests/utilities/test.utility.js +6 -6
  282. package/build/tests/utilities/test.utility.js.map +1 -1
  283. package/build/tests/utilities/uiAssert.utility.js +6 -6
  284. package/build/tests/utilities/uiAssert.utility.js.map +1 -1
  285. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  286. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  287. package/node_modules/@typescript-eslint/types/package.json +2 -2
  288. package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
  289. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  290. package/package.json +15 -23
  291. package/src/__tests__/behavioral/AddingADependency.test.ts +1 -1
  292. package/src/__tests__/behavioral/BlockingCommands.test.ts +1 -1
  293. package/src/__tests__/behavioral/BootingTheCli.test.ts +1 -1
  294. package/src/__tests__/behavioral/BootingWithBadFiles.test.ts +1 -1
  295. package/src/__tests__/behavioral/CreatingAConversationTopic.test.ts +1 -1
  296. package/src/__tests__/behavioral/CreatingSchemasWithGenerics.test.ts +1 -1
  297. package/src/__tests__/behavioral/DeployingASkill.test.ts +1 -1
  298. package/src/__tests__/behavioral/DeployingToSandbox.test.ts +1 -1
  299. package/src/__tests__/behavioral/EnablingAndDisablingCache.test.ts +1 -1
  300. package/src/__tests__/behavioral/GettingCliVersion.test.ts +1 -1
  301. package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +1 -1
  302. package/src/__tests__/behavioral/ListeningToCoreEvents.test.ts +1 -1
  303. package/src/__tests__/behavioral/LoggingInAsASkill.test.ts +1 -1
  304. package/src/__tests__/behavioral/ManagingDependencies.test.ts +1 -1
  305. package/src/__tests__/behavioral/OverridingCommandsInPackageJson.test.ts +1 -1
  306. package/src/__tests__/behavioral/RebuildingASkill.test.ts +1 -1
  307. package/src/__tests__/behavioral/RegisteringConversationsOnBoot.test.ts +1 -1
  308. package/src/__tests__/behavioral/RegisteringEventsOnBoot.test.ts +1 -1
  309. package/src/__tests__/behavioral/RegisteringGlobalEvents.test.ts +1 -1
  310. package/src/__tests__/behavioral/RegisteringSkillViewOnBoot.test.ts +1 -1
  311. package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
  312. package/src/__tests__/behavioral/SettingLogTransportsInASkill.test.ts +1 -1
  313. package/src/__tests__/behavioral/SettingRemote.test.ts +1 -1
  314. package/src/__tests__/behavioral/SettingUpASkillForTesting.test.ts +1 -1
  315. package/src/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.ts +1 -1
  316. package/src/__tests__/behavioral/SettingUpVscode.test.ts +1 -1
  317. package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +1 -1
  318. package/src/__tests__/behavioral/TestReporterSettingsRemembered.test.ts +1 -1
  319. package/src/__tests__/behavioral/TestingAConversation.test.ts +1 -1
  320. package/src/__tests__/behavioral/TestingDataStores.test.ts +1 -1
  321. package/src/__tests__/behavioral/WatchingSkillViews.test.ts +1 -1
  322. package/src/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.ts +1 -1
  323. package/src/__tests__/behavioral/errors/KeepingErrorClassInSync.test.ts +1 -1
  324. package/src/__tests__/behavioral/errors/KeepingErrorsInSync.test.ts +1 -1
  325. package/src/__tests__/behavioral/errors/SettingUpErrors.test.ts +1 -1
  326. package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +1 -1
  327. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +1 -1
  328. package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +1 -1
  329. package/src/__tests__/behavioral/events/KeepingEventsInSync.test.ts +1 -1
  330. package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +1 -1
  331. package/src/__tests__/behavioral/events/KeepingListenersInSync.test.ts +1 -1
  332. package/src/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.ts +1 -1
  333. package/src/__tests__/behavioral/events/SettingUpEvents.test.ts +1 -1
  334. package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +1 -1
  335. package/src/__tests__/behavioral/node/CreatingANodeModule.test.ts +1 -1
  336. package/src/__tests__/behavioral/onboard/StartingOnboarding.test.ts +1 -1
  337. package/src/__tests__/behavioral/organization/CreatingAnOrg.test.ts +1 -1
  338. package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +1 -1
  339. package/src/__tests__/behavioral/person/LoggingInAsPerson.test.ts +1 -1
  340. package/src/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.ts +1 -1
  341. package/src/__tests__/behavioral/polish/SettingUpPolish.test.ts +1 -1
  342. package/src/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.ts +1 -1
  343. package/src/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.ts +1 -1
  344. package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +1 -1
  345. package/src/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.ts +1 -1
  346. package/src/__tests__/behavioral/schemas/ImportingSchemaImports.test.ts +1 -1
  347. package/src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts +1 -1
  348. package/src/__tests__/behavioral/schemas/SettingUpSchemas.test.ts +1 -1
  349. package/src/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.ts +1 -1
  350. package/src/__tests__/behavioral/schemas/UsingSchemasInCli.test.ts +1 -1
  351. package/src/__tests__/behavioral/skill/BootingASkill.test.ts +1 -1
  352. package/src/__tests__/behavioral/skill/CreatingASkill.test.ts +1 -1
  353. package/src/__tests__/behavioral/skill/RegisteringASkill.test.ts +1 -1
  354. package/src/__tests__/behavioral/skill/SettingUpASkill.test.ts +1 -1
  355. package/src/__tests__/behavioral/stores/CreatingADataStore.test.ts +1 -1
  356. package/src/__tests__/behavioral/stores/KeepingDataStoresInSync.test.ts +1 -1
  357. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +1 -1
  358. package/src/__tests__/behavioral/tests/RunningTests.test.ts +1 -1
  359. package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +1 -1
  360. package/src/__tests__/behavioral/tests/SettingUpTests.test.ts +1 -1
  361. package/src/__tests__/behavioral/upgrading/UpdatingDependencies.test.ts +1 -1
  362. package/src/__tests__/behavioral/upgrading/UpdatingDependencies2.test.ts +1 -1
  363. package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +1 -1
  364. package/src/__tests__/behavioral/upgrading/UpgradingASkill.test.ts +1 -1
  365. package/src/__tests__/behavioral/upgrading/UpgradingASkill2.test.ts +1 -1
  366. package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +1 -1
  367. package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
  368. package/src/__tests__/behavioral/upgrading/UpgradingASkill5.test.ts +1 -1
  369. package/src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts +1 -1
  370. package/src/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.ts +1 -1
  371. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +1 -1
  372. package/src/__tests__/behavioral/views/CreatingATheme.test.ts +1 -1
  373. package/src/__tests__/behavioral/views/KeepingViewsInSync.test.ts +1 -1
  374. package/src/__tests__/behavioral/views/SettingUpViews.test.ts +1 -1
  375. package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +1 -1
  376. package/src/__tests__/behavioral/watchers/WatchingForChanges.test.ts +1 -1
  377. package/src/__tests__/implementation/ActionExecuter.test.ts +1 -1
  378. package/src/__tests__/implementation/ActionExecuter2.test.ts +1 -1
  379. package/src/__tests__/implementation/ActionExecuter3.test.ts +1 -1
  380. package/src/__tests__/implementation/ActionExecuter4.test.ts +1 -1
  381. package/src/__tests__/implementation/ArgParser.test.ts +1 -1
  382. package/src/__tests__/implementation/BuildService.test.ts +1 -1
  383. package/src/__tests__/implementation/BulkImporting.test.ts +1 -1
  384. package/src/__tests__/implementation/CachingImports.test.ts +1 -1
  385. package/src/__tests__/implementation/CommandOptionBuilder.test.ts +1 -1
  386. package/src/__tests__/implementation/CommanderCommandResultMapper.test.ts +1 -1
  387. package/src/__tests__/implementation/DataStoreStore.test.ts +1 -1
  388. package/src/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.ts +1 -1
  389. package/src/__tests__/implementation/EventContractCleanerUtil.test.ts +1 -1
  390. package/src/__tests__/implementation/EventStore.test.ts +1 -1
  391. package/src/__tests__/implementation/EventTemplateItemBuilder.test.ts +1 -1
  392. package/src/__tests__/implementation/FeatureCommandAttacher.test.ts +1 -1
  393. package/src/__tests__/implementation/FeatureFixture.test.ts +1 -1
  394. package/src/__tests__/implementation/FeatureInstaller.test.ts +1 -1
  395. package/src/__tests__/implementation/FeaturesUtil.test.ts +1 -1
  396. package/src/__tests__/implementation/FieldTemplateItemBuilder.test.ts +1 -1
  397. package/src/__tests__/implementation/GlobalEmitter.ts +1 -1
  398. package/src/__tests__/implementation/Introspection.test.ts +1 -1
  399. package/src/__tests__/implementation/JestJsonParser.test.ts +1 -1
  400. package/src/__tests__/implementation/LintService.test.ts +1 -1
  401. package/src/__tests__/implementation/ListenerStore.test.ts +1 -1
  402. package/src/__tests__/implementation/OnboardingScriptLoader.test.ts +1 -1
  403. package/src/__tests__/implementation/OnboardingScriptPlayer.test.ts +1 -1
  404. package/src/__tests__/implementation/OnboardingStore.test.ts +1 -1
  405. package/src/__tests__/implementation/OrganizationStore.test.ts +1 -1
  406. package/src/__tests__/implementation/ParentTestFinder.test.ts +1 -1
  407. package/src/__tests__/implementation/PkgService.test.ts +1 -1
  408. package/src/__tests__/implementation/SchemaStore.test.ts +1 -1
  409. package/src/__tests__/implementation/SchemaTemplateItemBuilder.test.ts +1 -1
  410. package/src/__tests__/implementation/SchemaValueTypeWriter.test.ts +1 -1
  411. package/src/__tests__/implementation/ServiceFactory.test.ts +1 -1
  412. package/src/__tests__/implementation/SettingUpANodeModule.test.ts +1 -1
  413. package/src/__tests__/implementation/SkillStore.test.ts +1 -1
  414. package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
  415. package/src/__tests__/implementation/TestReporter.test.ts +1 -1
  416. package/src/__tests__/implementation/TestRunner.test.ts +1 -1
  417. package/src/__tests__/implementation/ValueTypeMapping.test.ts +1 -1
  418. package/src/__tests__/implementation/Widgets.test.ts +1 -1
  419. package/src/__tests__/testDirsAndFiles/abstract_tests/AbstractTest.ts +1 -1
  420. package/src/__tests__/testDirsAndFiles/abstract_tests/AbstractTest2.ts +1 -1
  421. package/src/__tests__/testDirsAndFiles/abstract_tests/deeper/AbstractBananaTest.ts +1 -1
  422. package/src/features/onboard/templates/ManagingTodos.test.ts.hbs +1 -1
  423. package/src/features/test/TestLogItemGenerator.ts +1 -1
  424. package/src/interfaces/SpyInterface.ts +1 -1
  425. package/src/tests/AbstractCliTest.ts +1 -1
  426. package/src/tests/AbstractSchemaTest.ts +1 -1
  427. package/src/tests/utilities/test.utility.ts +1 -1
  428. package/src/tests/utilities/uiAssert.utility.ts +1 -1
@@ -27,7 +27,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
27
27
 
28
28
  var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
29
29
 
30
- var _test = require("@sprucelabs/test");
30
+ var _testUtils = require("@sprucelabs/test-utils");
31
31
 
32
32
  var _AbstractCliTest2 = _interopRequireDefault(require("../../tests/AbstractCliTest"));
33
33
 
@@ -39,7 +39,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
39
39
 
40
40
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
41
 
42
- var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)(), _dec4 = (0, _test.test)(), _dec5 = (0, _test.test)(), _dec6 = (0, _test.test)(), _dec7 = _test.test.skip('enable when ready to fake termkit'), (_class = (_class2 = /*#__PURE__*/function (_AbstractCliTest) {
42
+ var WidgetsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test)(), _dec3 = (0, _testUtils.test)(), _dec4 = (0, _testUtils.test)(), _dec5 = (0, _testUtils.test)(), _dec6 = (0, _testUtils.test)(), _dec7 = _testUtils.test.skip('enable when ready to fake termkit'), (_class = (_class2 = /*#__PURE__*/function (_AbstractCliTest) {
43
43
  (0, _inherits2["default"])(WidgetsTest, _AbstractCliTest);
44
44
 
45
45
  var _super = _createSuper(WidgetsTest);
@@ -85,7 +85,7 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
85
85
  while (1) {
86
86
  switch (_context2.prev = _context2.next) {
87
87
  case 0:
88
- _test.assert.isTruthy(this.factory);
88
+ _testUtils.assert.isTruthy(this.factory);
89
89
 
90
90
  case 1:
91
91
  case "end":
@@ -112,7 +112,7 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
112
112
  case 0:
113
113
  log = this.buildText();
114
114
 
115
- _test.assert.isTruthy(log);
115
+ _testUtils.assert.isTruthy(log);
116
116
 
117
117
  case 2:
118
118
  case "end":
@@ -139,7 +139,7 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
139
139
  case 0:
140
140
  text = this.buildText();
141
141
 
142
- _test.assert.isEqualDeep(text.getFrame(), {
142
+ _testUtils.assert.isEqualDeep(text.getFrame(), {
143
143
  left: 0,
144
144
  top: 0,
145
145
  width: 4,
@@ -165,7 +165,7 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
165
165
  value: function canCreateWindow() {
166
166
  var window = this.factory.Widget('window', {});
167
167
 
168
- _test.assert.isTruthy(window);
168
+ _testUtils.assert.isTruthy(window);
169
169
  }
170
170
  }, {
171
171
  key: "canCreateProgressBar",
@@ -174,14 +174,14 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
174
174
  progress: 0
175
175
  });
176
176
 
177
- _test.assert.isTruthy(progress);
177
+ _testUtils.assert.isTruthy(progress);
178
178
  }
179
179
  }, {
180
180
  key: "canCreateText",
181
181
  value: function canCreateText() {
182
182
  var text = this.factory.Widget('text', {});
183
183
 
184
- _test.assert.isTruthy(text);
184
+ _testUtils.assert.isTruthy(text);
185
185
  }
186
186
  }, {
187
187
  key: "canCreateLayout",
@@ -200,11 +200,11 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
200
200
  }]
201
201
  });
202
202
 
203
- _test.assert.isTruthy(layout);
203
+ _testUtils.assert.isTruthy(layout);
204
204
 
205
205
  var column = layout.getChildById('results');
206
206
 
207
- _test.assert.isTruthy(column);
207
+ _testUtils.assert.isTruthy(column);
208
208
  }
209
209
  }, {
210
210
  key: "buildText",
@@ -1 +1 @@
1
- {"version":3,"file":"Widgets.test.js","names":["WidgetsTest","test","skip","factory","WidgetFactory","assert","isTruthy","log","buildText","text","isEqualDeep","getFrame","left","top","width","height","window","Widget","progress","layout","parent","rows","id","columns","column","getChildById","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/Widgets.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\nimport WidgetFactory from '../../widgets/WidgetFactory'\n\nexport default class WidgetsTest extends AbstractCliTest {\n\tprivate static factory: WidgetFactory\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.factory = new WidgetFactory()\n\t}\n\n\t@test()\n\tprotected static async canCreateFactory() {\n\t\tassert.isTruthy(this.factory)\n\t}\n\n\t@test()\n\tprotected static async canCreateTextWidget() {\n\t\tconst log = this.buildText()\n\t\tassert.isTruthy(log)\n\t}\n\n\t@test()\n\tprotected static async setsStartingFrame() {\n\t\tconst text = this.buildText()\n\t\tassert.isEqualDeep(text.getFrame(), {\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\twidth: 4,\n\t\t\theight: 4,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static canCreateWindow() {\n\t\tconst window = this.factory.Widget('window', {})\n\t\tassert.isTruthy(window)\n\t}\n\n\t@test()\n\tprotected static canCreateProgressBar() {\n\t\tconst progress = this.factory.Widget('progressBar', {\n\t\t\tprogress: 0,\n\t\t})\n\t\tassert.isTruthy(progress)\n\t}\n\n\t@test()\n\tprotected static canCreateText() {\n\t\tconst text = this.factory.Widget('text', {})\n\t\tassert.isTruthy(text)\n\t}\n\n\t@test.skip('enable when ready to fake termkit')\n\tprotected static canCreateLayout() {\n\t\tconst window = this.factory.Widget('window', {})\n\t\tconst layout = this.factory.Widget('layout', {\n\t\t\tparent: window,\n\t\t\twidth: '100%',\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tid: 'row_1',\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'column_1',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t\tassert.isTruthy(layout)\n\n\t\tconst column = layout.getChildById('results')\n\n\t\tassert.isTruthy(column)\n\t}\n\n\tprivate static buildText() {\n\t\treturn this.factory.Widget('text', { left: 0, top: 0, width: 4, height: 4 })\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,W,WAQnB,IAAAC,UAAA,G,UAKA,IAAAA,UAAA,G,UAMA,IAAAA,UAAA,G,UAWA,IAAAA,UAAA,G,UAMA,IAAAA,UAAA,G,UAQA,IAAAA,UAAA,G,UAMAA,UAAA,CAAKC,IAAL,CAAU,mCAAV,C;;;;;;;;;;;;;sGA/CD;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAEC,KAAKC,OAAL,GAAe,IAAIC,yBAAJ,EAAf;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4GAKA;QAAA;UAAA;YAAA;cAAA;gBAECC,YAAA,CAAOC,QAAP,CAAgB,KAAKH,OAArB;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GAKA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOI,GAFP,GAEa,KAAKC,SAAL,EAFb;;gBAGCH,YAAA,CAAOC,QAAP,CAAgBC,GAAhB;;cAHD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;6GAMA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOE,IAFP,GAEc,KAAKD,SAAL,EAFd;;gBAGCH,YAAA,CAAOK,WAAP,CAAmBD,IAAI,CAACE,QAAL,EAAnB,EAAoC;kBACnCC,IAAI,EAAE,CAD6B;kBAEnCC,GAAG,EAAE,CAF8B;kBAGnCC,KAAK,EAAE,CAH4B;kBAInCC,MAAM,EAAE;gBAJ2B,CAApC;;cAHD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAWA,2BACmC;MAClC,IAAMC,MAAM,GAAG,KAAKb,OAAL,CAAac,MAAb,CAAoB,QAApB,EAA8B,EAA9B,CAAf;;MACAZ,YAAA,CAAOC,QAAP,CAAgBU,MAAhB;IACA;;;WAED,gCACwC;MACvC,IAAME,QAAQ,GAAG,KAAKf,OAAL,CAAac,MAAb,CAAoB,aAApB,EAAmC;QACnDC,QAAQ,EAAE;MADyC,CAAnC,CAAjB;;MAGAb,YAAA,CAAOC,QAAP,CAAgBY,QAAhB;IACA;;;WAED,yBACiC;MAChC,IAAMT,IAAI,GAAG,KAAKN,OAAL,CAAac,MAAb,CAAoB,MAApB,EAA4B,EAA5B,CAAb;;MACAZ,YAAA,CAAOC,QAAP,CAAgBG,IAAhB;IACA;;;WAED,2BACmC;MAClC,IAAMO,MAAM,GAAG,KAAKb,OAAL,CAAac,MAAb,CAAoB,QAApB,EAA8B,EAA9B,CAAf;MACA,IAAME,MAAM,GAAG,KAAKhB,OAAL,CAAac,MAAb,CAAoB,QAApB,EAA8B;QAC5CG,MAAM,EAAEJ,MADoC;QAE5CF,KAAK,EAAE,MAFqC;QAG5CO,IAAI,EAAE,CACL;UACCC,EAAE,EAAE,OADL;UAECP,MAAM,EAAE,MAFT;UAGCQ,OAAO,EAAE,CACR;YACCD,EAAE,EAAE,UADL;YAECR,KAAK,EAAE;UAFR,CADQ;QAHV,CADK;MAHsC,CAA9B,CAAf;;MAgBAT,YAAA,CAAOC,QAAP,CAAgBa,MAAhB;;MAEA,IAAMK,MAAM,GAAGL,MAAM,CAACM,YAAP,CAAoB,SAApB,CAAf;;MAEApB,YAAA,CAAOC,QAAP,CAAgBkB,MAAhB;IACA;;;WAED,qBAA2B;MAC1B,OAAO,KAAKrB,OAAL,CAAac,MAAb,CAAoB,MAApB,EAA4B;QAAEL,IAAI,EAAE,CAAR;QAAWC,GAAG,EAAE,CAAhB;QAAmBC,KAAK,EAAE,CAA1B;QAA6BC,MAAM,EAAE;MAArC,CAA5B,CAAP;IACA;;;EA9EuCW,4B"}
1
+ {"version":3,"file":"Widgets.test.js","names":["WidgetsTest","test","skip","factory","WidgetFactory","assert","isTruthy","log","buildText","text","isEqualDeep","getFrame","left","top","width","height","window","Widget","progress","layout","parent","rows","id","columns","column","getChildById","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/Widgets.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\nimport WidgetFactory from '../../widgets/WidgetFactory'\n\nexport default class WidgetsTest extends AbstractCliTest {\n\tprivate static factory: WidgetFactory\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.factory = new WidgetFactory()\n\t}\n\n\t@test()\n\tprotected static async canCreateFactory() {\n\t\tassert.isTruthy(this.factory)\n\t}\n\n\t@test()\n\tprotected static async canCreateTextWidget() {\n\t\tconst log = this.buildText()\n\t\tassert.isTruthy(log)\n\t}\n\n\t@test()\n\tprotected static async setsStartingFrame() {\n\t\tconst text = this.buildText()\n\t\tassert.isEqualDeep(text.getFrame(), {\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\twidth: 4,\n\t\t\theight: 4,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static canCreateWindow() {\n\t\tconst window = this.factory.Widget('window', {})\n\t\tassert.isTruthy(window)\n\t}\n\n\t@test()\n\tprotected static canCreateProgressBar() {\n\t\tconst progress = this.factory.Widget('progressBar', {\n\t\t\tprogress: 0,\n\t\t})\n\t\tassert.isTruthy(progress)\n\t}\n\n\t@test()\n\tprotected static canCreateText() {\n\t\tconst text = this.factory.Widget('text', {})\n\t\tassert.isTruthy(text)\n\t}\n\n\t@test.skip('enable when ready to fake termkit')\n\tprotected static canCreateLayout() {\n\t\tconst window = this.factory.Widget('window', {})\n\t\tconst layout = this.factory.Widget('layout', {\n\t\t\tparent: window,\n\t\t\twidth: '100%',\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tid: 'row_1',\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'column_1',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t\tassert.isTruthy(layout)\n\n\t\tconst column = layout.getChildById('results')\n\n\t\tassert.isTruthy(column)\n\t}\n\n\tprivate static buildText() {\n\t\treturn this.factory.Widget('text', { left: 0, top: 0, width: 4, height: 4 })\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,W,WAQnB,IAAAC,eAAA,G,UAKA,IAAAA,eAAA,G,UAMA,IAAAA,eAAA,G,UAWA,IAAAA,eAAA,G,UAMA,IAAAA,eAAA,G,UAQA,IAAAA,eAAA,G,UAMAA,eAAA,CAAKC,IAAL,CAAU,mCAAV,C;;;;;;;;;;;;;sGA/CD;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAEC,KAAKC,OAAL,GAAe,IAAIC,yBAAJ,EAAf;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4GAKA;QAAA;UAAA;YAAA;cAAA;gBAECC,iBAAA,CAAOC,QAAP,CAAgB,KAAKH,OAArB;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GAKA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOI,GAFP,GAEa,KAAKC,SAAL,EAFb;;gBAGCH,iBAAA,CAAOC,QAAP,CAAgBC,GAAhB;;cAHD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;6GAMA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOE,IAFP,GAEc,KAAKD,SAAL,EAFd;;gBAGCH,iBAAA,CAAOK,WAAP,CAAmBD,IAAI,CAACE,QAAL,EAAnB,EAAoC;kBACnCC,IAAI,EAAE,CAD6B;kBAEnCC,GAAG,EAAE,CAF8B;kBAGnCC,KAAK,EAAE,CAH4B;kBAInCC,MAAM,EAAE;gBAJ2B,CAApC;;cAHD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAWA,2BACmC;MAClC,IAAMC,MAAM,GAAG,KAAKb,OAAL,CAAac,MAAb,CAAoB,QAApB,EAA8B,EAA9B,CAAf;;MACAZ,iBAAA,CAAOC,QAAP,CAAgBU,MAAhB;IACA;;;WAED,gCACwC;MACvC,IAAME,QAAQ,GAAG,KAAKf,OAAL,CAAac,MAAb,CAAoB,aAApB,EAAmC;QACnDC,QAAQ,EAAE;MADyC,CAAnC,CAAjB;;MAGAb,iBAAA,CAAOC,QAAP,CAAgBY,QAAhB;IACA;;;WAED,yBACiC;MAChC,IAAMT,IAAI,GAAG,KAAKN,OAAL,CAAac,MAAb,CAAoB,MAApB,EAA4B,EAA5B,CAAb;;MACAZ,iBAAA,CAAOC,QAAP,CAAgBG,IAAhB;IACA;;;WAED,2BACmC;MAClC,IAAMO,MAAM,GAAG,KAAKb,OAAL,CAAac,MAAb,CAAoB,QAApB,EAA8B,EAA9B,CAAf;MACA,IAAME,MAAM,GAAG,KAAKhB,OAAL,CAAac,MAAb,CAAoB,QAApB,EAA8B;QAC5CG,MAAM,EAAEJ,MADoC;QAE5CF,KAAK,EAAE,MAFqC;QAG5CO,IAAI,EAAE,CACL;UACCC,EAAE,EAAE,OADL;UAECP,MAAM,EAAE,MAFT;UAGCQ,OAAO,EAAE,CACR;YACCD,EAAE,EAAE,UADL;YAECR,KAAK,EAAE;UAFR,CADQ;QAHV,CADK;MAHsC,CAA9B,CAAf;;MAgBAT,iBAAA,CAAOC,QAAP,CAAgBa,MAAhB;;MAEA,IAAMK,MAAM,GAAGL,MAAM,CAACM,YAAP,CAAoB,SAApB,CAAf;;MAEApB,iBAAA,CAAOC,QAAP,CAAgBkB,MAAhB;IACA;;;WAED,qBAA2B;MAC1B,OAAO,KAAKrB,OAAL,CAAac,MAAb,CAAoB,MAApB,EAA4B;QAAEL,IAAI,EAAE,CAAR;QAAWC,GAAG,EAAE,CAAhB;QAAmBC,KAAK,EAAE,CAA1B;QAA6BC,MAAM,EAAE;MAArC,CAA5B,CAAP;IACA;;;EA9EuCW,4B"}
@@ -1,3 +1,3 @@
1
- import AbstractSpruceTest from '@sprucelabs/test';
1
+ import AbstractSpruceTest from '@sprucelabs/test-utils';
2
2
  export default class AbstractTest extends AbstractSpruceTest {
3
3
  }
@@ -1,3 +1,3 @@
1
- import AbstractSpruceTest from '@sprucelabs/test'
1
+ import AbstractSpruceTest from '@sprucelabs/test-utils'
2
2
 
3
3
  export default class AbstractTest extends AbstractSpruceTest {}
@@ -1,3 +1,3 @@
1
- import AbstractSpruceTest from '@sprucelabs/test';
1
+ import AbstractSpruceTest from '@sprucelabs/test-utils';
2
2
  export default class AbstractTest2 extends AbstractSpruceTest {
3
3
  }
@@ -1,3 +1,3 @@
1
- import AbstractSpruceTest from '@sprucelabs/test'
1
+ import AbstractSpruceTest from '@sprucelabs/test-utils'
2
2
 
3
3
  export default class AbstractTest2 extends AbstractSpruceTest {}
@@ -1,3 +1,3 @@
1
- import AbstractSpruceTest from '@sprucelabs/test';
1
+ import AbstractSpruceTest from '@sprucelabs/test-utils';
2
2
  export default class AbstractBananaTestDifferentThanFileName extends AbstractSpruceTest {
3
3
  }
@@ -1,3 +1,3 @@
1
- import AbstractSpruceTest from '@sprucelabs/test'
1
+ import AbstractSpruceTest from '@sprucelabs/test-utils'
2
2
 
3
3
  export default class AbstractBananaTestDifferentThanFileName extends AbstractSpruceTest {}
@@ -1,5 +1,5 @@
1
1
  import { testLog } from '@sprucelabs/spruce-skill-utils'
2
- import AbstractSpruceTest, { test, assert } from '@sprucelabs/test'
2
+ import AbstractSpruceTest, { test, assert } from '@sprucelabs/test-utils'
3
3
 
4
4
  // Hey hey! 👋
5
5
 
@@ -13,7 +13,7 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
13
13
 
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
 
16
- var _test = require("@sprucelabs/test");
16
+ var _testUtils = require("@sprucelabs/test-utils");
17
17
 
18
18
  var _chalk = _interopRequireDefault(require("chalk"));
19
19
 
@@ -130,7 +130,7 @@ var TestLogItemGenerator = /*#__PURE__*/function () {
130
130
  var _test$errorMessages;
131
131
 
132
132
  (_test$errorMessages = test.errorMessages) === null || _test$errorMessages === void 0 ? void 0 : _test$errorMessages.forEach(function (message) {
133
- var cleaned = message !== null && message !== void 0 ? message : _test.StackCleaner.clean(message);
133
+ var cleaned = message !== null && message !== void 0 ? message : _testUtils.StackCleaner.clean(message);
134
134
  errorContent += " ".concat(_chalk["default"].red(file.path), "\n");
135
135
  errorContent += " - ".concat(_chalk["default"].red(test.name), "\n\n");
136
136
  errorContent += cleaned.replace(/\n+ {4}at/i, '\n\n\n at') + '\n\n\n';
@@ -1 +1 @@
1
- {"version":3,"file":"TestLogItemGenerator.js","names":["TestLogItemGenerator","file","status","testRunnerStatus","logContent","duration","calculateDurationInMsForFile","generateStatusBlock","path","generateDuration","tests","forEach","test","bullet","bulletBasedOnStatus","name","pendingKey","length","calculateDurationInMs","durationColor","colorBasedOnStatus","durationUtil","msToFriendly","reduce","time","key","startTimes","Date","getTime","delta","errorContent","errorMessages","message","cleaned","StackCleaner","clean","chalk","red","replace","errorMessage","bgColor","statusLabel","color","padding","centerStringWithSpaces","text","numberOfSpaces","trim","l","w2","Math","floor","l2","s","Array","join"],"sources":["../../../src/features/test/TestLogItemGenerator.ts"],"sourcesContent":["import { StackCleaner } from '@sprucelabs/test'\nimport chalk from 'chalk'\nimport durationUtil from '../../utilities/duration.utility'\nimport {\n\tSpruceTestFile,\n\tSpruceTestFileTest,\n\tTestRunnerStatus,\n} from './test.types'\n\nexport default class TestLogItemGenerator {\n\tprivate startTimes: Record<string, number> = {}\n\tprivate testRunnerStatus!: TestRunnerStatus\n\n\tpublic generateLogItemForFile(\n\t\tfile: SpruceTestFile,\n\t\tstatus: TestRunnerStatus\n\t): string {\n\t\tthis.testRunnerStatus = status\n\n\t\tlet logContent = ''\n\t\tconst duration = this.calculateDurationInMsForFile(file)\n\n\t\tlogContent += `${this.generateStatusBlock(file.status)} ${file.path}${\n\t\t\tduration ? ` ${this.generateDuration(file.status, duration)}` : ''\n\t\t}\\n`\n\n\t\tif (file.tests) {\n\t\t\tfile.tests.forEach((test) => {\n\t\t\t\tconst bullet = this.bulletBasedOnStatus(test.status)\n\t\t\t\tlogContent += ` ${bullet} ^-${\n\t\t\t\t\ttest.name\n\t\t\t\t}^ ${this.generateDuration(test.status, test.duration)}\\n`\n\t\t\t})\n\t\t}\n\n\t\tif (file.status === 'running') {\n\t\t\tconst pendingKey = `${file.path}-pending-${file.tests?.length ?? 0}`\n\t\t\tlogContent += ` ^-${'Running next test... ⚡️⚡️⚡️'}^ ${this.generateDuration(\n\t\t\t\t'running',\n\t\t\t\tthis.calculateDurationInMs(pendingKey)\n\t\t\t)}\\n`\n\t\t}\n\n\t\treturn logContent\n\t}\n\n\tprivate generateDuration(status: any, duration: number) {\n\t\tif (duration === 0) {\n\t\t\treturn ''\n\t\t}\n\t\tconst durationColor = this.colorBasedOnStatus(status)\n\t\treturn `^${durationColor}(${durationUtil.msToFriendly(duration)})^`\n\t}\n\n\tprivate bulletBasedOnStatus(\n\t\tstatus: SpruceTestFileTest['status'] | 'running'\n\t) {\n\t\tlet bullet = 'y'\n\n\t\tswitch (status) {\n\t\t\tcase 'running':\n\t\t\t\tbullet = '^g(running)^'\n\t\t\t\tbreak\n\t\t\tcase 'passed':\n\t\t\t\tbullet = '^g√^'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tbullet = '^rx^'\n\t\t\t\tbreak\n\t\t\tcase 'pending':\n\t\t\tcase 'skipped':\n\t\t\t\tbullet = '^y(skipped)^'\n\t\t\t\tbreak\n\t\t\tcase 'todo':\n\t\t\t\tbullet = '^y(todo)^'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbullet = '??'\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn bullet\n\t}\n\n\tprivate calculateDurationInMsForFile(file: SpruceTestFile): number {\n\t\tif (file.status !== 'running' && file.tests) {\n\t\t\treturn file.tests.reduce((time, test) => {\n\t\t\t\ttime += test.duration\n\t\t\t\treturn time\n\t\t\t}, 0)\n\t\t}\n\n\t\tconst key = file.path\n\t\treturn this.calculateDurationInMs(key)\n\t}\n\n\tprivate calculateDurationInMs(key: string) {\n\t\tif (!this.startTimes[key]) {\n\t\t\tthis.startTimes[key] = new Date().getTime()\n\t\t}\n\n\t\tconst delta = new Date().getTime() - this.startTimes[key]\n\t\treturn delta\n\t}\n\n\tpublic generateErrorLogItemForFile(file: SpruceTestFile): string {\n\t\tlet errorContent = ''\n\n\t\tfile.tests?.forEach((test) => {\n\t\t\ttest.errorMessages?.forEach((message) => {\n\t\t\t\tconst cleaned = message ?? StackCleaner.clean(message)\n\t\t\t\terrorContent += ` ${chalk.red(file.path)}\\n`\n\t\t\t\terrorContent += ` - ${chalk.red(test.name)}\\n\\n`\n\t\t\t\terrorContent += cleaned.replace(/\\n+ {4}at/i, '\\n\\n\\n at') + '\\n\\n\\n'\n\t\t\t})\n\t\t})\n\n\t\tif (!errorContent && file.errorMessage) {\n\t\t\terrorContent += `${chalk.red(file.path)}\\n`\n\t\t\terrorContent += file.errorMessage + '\\n\\n\\n'\n\t\t}\n\n\t\treturn errorContent\n\t}\n\n\tpublic resetStartTimes() {\n\t\tthis.startTimes = {}\n\t}\n\n\tprivate generateStatusBlock(status: SpruceTestFile['status']) {\n\t\tconst bgColor = this.colorBasedOnStatus(status)\n\n\t\tlet statusLabel = status as string\n\t\tlet color = 'k'\n\t\tlet padding = 10\n\t\tswitch (status) {\n\t\t\tcase 'passed':\n\t\t\t\tpadding = 11\n\t\t\t\tcolor = 'w'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tpadding = 11\n\t\t\t\tcolor = 'w'\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (status === 'running' && this.testRunnerStatus === 'stopped') {\n\t\t\tstatusLabel = 'stopped'\n\t\t\tcolor = 'w'\n\t\t}\n\n\t\treturn `^b^#^${bgColor}^${color}^+${this.centerStringWithSpaces(\n\t\t\tstatusLabel,\n\t\t\tpadding\n\t\t)}^`\n\t}\n\n\tprivate colorBasedOnStatus(status: SpruceTestFile['status']) {\n\t\tlet color = 'y'\n\n\t\tswitch (status) {\n\t\t\tcase 'passed':\n\t\t\t\tcolor = 'g'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tcolor = 'r'\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (status === 'running' && this.testRunnerStatus === 'stopped') {\n\t\t\tcolor = 'b'\n\t\t}\n\n\t\treturn color\n\t}\n\n\tprivate centerStringWithSpaces(text: string, numberOfSpaces: number) {\n\t\ttext = text.trim()\n\t\tlet l = text.length\n\t\tlet w2 = Math.floor(numberOfSpaces / 2)\n\t\tlet l2 = Math.floor(l / 2)\n\t\tlet s = new Array(w2 - l2 + 1).join(' ')\n\t\ttext = s + text + s\n\t\tif (text.length < numberOfSpaces) {\n\t\t\ttext += new Array(numberOfSpaces - text.length + 1).join(' ')\n\t\t}\n\t\treturn text\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TestLogItemGenerator.js","names":["TestLogItemGenerator","file","status","testRunnerStatus","logContent","duration","calculateDurationInMsForFile","generateStatusBlock","path","generateDuration","tests","forEach","test","bullet","bulletBasedOnStatus","name","pendingKey","length","calculateDurationInMs","durationColor","colorBasedOnStatus","durationUtil","msToFriendly","reduce","time","key","startTimes","Date","getTime","delta","errorContent","errorMessages","message","cleaned","StackCleaner","clean","chalk","red","replace","errorMessage","bgColor","statusLabel","color","padding","centerStringWithSpaces","text","numberOfSpaces","trim","l","w2","Math","floor","l2","s","Array","join"],"sources":["../../../src/features/test/TestLogItemGenerator.ts"],"sourcesContent":["import { StackCleaner } from '@sprucelabs/test-utils'\nimport chalk from 'chalk'\nimport durationUtil from '../../utilities/duration.utility'\nimport {\n\tSpruceTestFile,\n\tSpruceTestFileTest,\n\tTestRunnerStatus,\n} from './test.types'\n\nexport default class TestLogItemGenerator {\n\tprivate startTimes: Record<string, number> = {}\n\tprivate testRunnerStatus!: TestRunnerStatus\n\n\tpublic generateLogItemForFile(\n\t\tfile: SpruceTestFile,\n\t\tstatus: TestRunnerStatus\n\t): string {\n\t\tthis.testRunnerStatus = status\n\n\t\tlet logContent = ''\n\t\tconst duration = this.calculateDurationInMsForFile(file)\n\n\t\tlogContent += `${this.generateStatusBlock(file.status)} ${file.path}${\n\t\t\tduration ? ` ${this.generateDuration(file.status, duration)}` : ''\n\t\t}\\n`\n\n\t\tif (file.tests) {\n\t\t\tfile.tests.forEach((test) => {\n\t\t\t\tconst bullet = this.bulletBasedOnStatus(test.status)\n\t\t\t\tlogContent += ` ${bullet} ^-${\n\t\t\t\t\ttest.name\n\t\t\t\t}^ ${this.generateDuration(test.status, test.duration)}\\n`\n\t\t\t})\n\t\t}\n\n\t\tif (file.status === 'running') {\n\t\t\tconst pendingKey = `${file.path}-pending-${file.tests?.length ?? 0}`\n\t\t\tlogContent += ` ^-${'Running next test... ⚡️⚡️⚡️'}^ ${this.generateDuration(\n\t\t\t\t'running',\n\t\t\t\tthis.calculateDurationInMs(pendingKey)\n\t\t\t)}\\n`\n\t\t}\n\n\t\treturn logContent\n\t}\n\n\tprivate generateDuration(status: any, duration: number) {\n\t\tif (duration === 0) {\n\t\t\treturn ''\n\t\t}\n\t\tconst durationColor = this.colorBasedOnStatus(status)\n\t\treturn `^${durationColor}(${durationUtil.msToFriendly(duration)})^`\n\t}\n\n\tprivate bulletBasedOnStatus(\n\t\tstatus: SpruceTestFileTest['status'] | 'running'\n\t) {\n\t\tlet bullet = 'y'\n\n\t\tswitch (status) {\n\t\t\tcase 'running':\n\t\t\t\tbullet = '^g(running)^'\n\t\t\t\tbreak\n\t\t\tcase 'passed':\n\t\t\t\tbullet = '^g√^'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tbullet = '^rx^'\n\t\t\t\tbreak\n\t\t\tcase 'pending':\n\t\t\tcase 'skipped':\n\t\t\t\tbullet = '^y(skipped)^'\n\t\t\t\tbreak\n\t\t\tcase 'todo':\n\t\t\t\tbullet = '^y(todo)^'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbullet = '??'\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn bullet\n\t}\n\n\tprivate calculateDurationInMsForFile(file: SpruceTestFile): number {\n\t\tif (file.status !== 'running' && file.tests) {\n\t\t\treturn file.tests.reduce((time, test) => {\n\t\t\t\ttime += test.duration\n\t\t\t\treturn time\n\t\t\t}, 0)\n\t\t}\n\n\t\tconst key = file.path\n\t\treturn this.calculateDurationInMs(key)\n\t}\n\n\tprivate calculateDurationInMs(key: string) {\n\t\tif (!this.startTimes[key]) {\n\t\t\tthis.startTimes[key] = new Date().getTime()\n\t\t}\n\n\t\tconst delta = new Date().getTime() - this.startTimes[key]\n\t\treturn delta\n\t}\n\n\tpublic generateErrorLogItemForFile(file: SpruceTestFile): string {\n\t\tlet errorContent = ''\n\n\t\tfile.tests?.forEach((test) => {\n\t\t\ttest.errorMessages?.forEach((message) => {\n\t\t\t\tconst cleaned = message ?? StackCleaner.clean(message)\n\t\t\t\terrorContent += ` ${chalk.red(file.path)}\\n`\n\t\t\t\terrorContent += ` - ${chalk.red(test.name)}\\n\\n`\n\t\t\t\terrorContent += cleaned.replace(/\\n+ {4}at/i, '\\n\\n\\n at') + '\\n\\n\\n'\n\t\t\t})\n\t\t})\n\n\t\tif (!errorContent && file.errorMessage) {\n\t\t\terrorContent += `${chalk.red(file.path)}\\n`\n\t\t\terrorContent += file.errorMessage + '\\n\\n\\n'\n\t\t}\n\n\t\treturn errorContent\n\t}\n\n\tpublic resetStartTimes() {\n\t\tthis.startTimes = {}\n\t}\n\n\tprivate generateStatusBlock(status: SpruceTestFile['status']) {\n\t\tconst bgColor = this.colorBasedOnStatus(status)\n\n\t\tlet statusLabel = status as string\n\t\tlet color = 'k'\n\t\tlet padding = 10\n\t\tswitch (status) {\n\t\t\tcase 'passed':\n\t\t\t\tpadding = 11\n\t\t\t\tcolor = 'w'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tpadding = 11\n\t\t\t\tcolor = 'w'\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (status === 'running' && this.testRunnerStatus === 'stopped') {\n\t\t\tstatusLabel = 'stopped'\n\t\t\tcolor = 'w'\n\t\t}\n\n\t\treturn `^b^#^${bgColor}^${color}^+${this.centerStringWithSpaces(\n\t\t\tstatusLabel,\n\t\t\tpadding\n\t\t)}^`\n\t}\n\n\tprivate colorBasedOnStatus(status: SpruceTestFile['status']) {\n\t\tlet color = 'y'\n\n\t\tswitch (status) {\n\t\t\tcase 'passed':\n\t\t\t\tcolor = 'g'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tcolor = 'r'\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (status === 'running' && this.testRunnerStatus === 'stopped') {\n\t\t\tcolor = 'b'\n\t\t}\n\n\t\treturn color\n\t}\n\n\tprivate centerStringWithSpaces(text: string, numberOfSpaces: number) {\n\t\ttext = text.trim()\n\t\tlet l = text.length\n\t\tlet w2 = Math.floor(numberOfSpaces / 2)\n\t\tlet l2 = Math.floor(l / 2)\n\t\tlet s = new Array(w2 - l2 + 1).join(' ')\n\t\ttext = s + text + s\n\t\tif (text.length < numberOfSpaces) {\n\t\t\ttext += new Array(numberOfSpaces - text.length + 1).join(' ')\n\t\t}\n\t\treturn text\n\t}\n}\n"],"mappings":"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"}
@@ -19,9 +19,9 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
19
19
 
20
20
  var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
21
21
 
22
- var _test = require("@sprucelabs/test");
22
+ var _testUtils = require("@sprucelabs/test-utils");
23
23
 
24
- var _test2 = _interopRequireDefault(require("../tests/utilities/test.utility"));
24
+ var _test = _interopRequireDefault(require("../tests/utilities/test.utility"));
25
25
 
26
26
  var _duration = _interopRequireDefault(require("../utilities/duration.utility"));
27
27
 
@@ -358,7 +358,7 @@ var SpyInterface = /*#__PURE__*/function () {
358
358
  _this2.reset();
359
359
 
360
360
  try {
361
- _test.assert.fail("Timed out waiting for input with label: '".concat(definition.label, "'\n\nConsider passing what you need to Action().execute({ something })"));
361
+ _testUtils.assert.fail("Timed out waiting for input with label: '".concat(definition.label, "'\n\nConsider passing what you need to Action().execute({ something })"));
362
362
  } catch (err) {
363
363
  reject(err);
364
364
  }
@@ -443,7 +443,7 @@ var SpyInterface = /*#__PURE__*/function () {
443
443
  }
444
444
 
445
445
  if (loops-- === 0) {
446
- _test.assert.fail("Waiting for input timed out.");
446
+ _testUtils.assert.fail("Waiting for input timed out.");
447
447
  }
448
448
 
449
449
  hasWritten = lastWriteCount != this.invocations.length;
@@ -453,7 +453,7 @@ var SpyInterface = /*#__PURE__*/function () {
453
453
  lastWriteCount = this.invocations.length;
454
454
 
455
455
  if (this.shouldRenderTestLogs()) {
456
- _test2["default"].log('waitForInput timeout reset because of new output.');
456
+ _test["default"].log('waitForInput timeout reset because of new output.');
457
457
  }
458
458
  }
459
459
 
@@ -1 +1 @@
1
- {"version":3,"file":"SpyInterface.js","names":["SpyInterface","x","y","startTime","Date","getTime","term","shouldRenderTestLogs","TerminalInterface","process","cwd","strs","optionallyRenderLine","join","undefined","env","SHOULD_RENDER_TEST_LOGS","message","effects","trackInvocation","renderWarning","renderHint","command","options","invocations","push","promptResolver","confirmResolver","waitForEnterResolver","clearTimeout","promptTimeout","length","input","resolver","promptDefaultValue","toLowerCase","Error","Promise","resolve","setTimeout","renderSection","obj","renderObject","err","renderError","code","renderCodeSample","results","renderActionSummary","renderHero","dividerEffects","renderHeadline","renderDivider","duration","friendly","durationUtil","msToFriendly","testLog","info","global","activeTest","test","path","messages","renderLines","definition","msg","namesUtil","toPascal","type","label","choices","forEach","choice","value","reject","reset","assert","fail","defaultValue","ttl","checkInterval","loops","lastWriteCount","isWaitingForInput","hasWritten","testUtil","log","question","title","cursorPosition","pos"],"sources":["../../src/interfaces/SpyInterface.ts"],"sourcesContent":["import { FieldDefinitionValueType } from '@sprucelabs/schema'\nimport { namesUtil, testLog } from '@sprucelabs/spruce-skill-utils'\nimport { assert } from '@sprucelabs/test'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport testUtil from '../tests/utilities/test.utility'\nimport { ExecutionResults } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n\tImageDimensions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport TerminalInterface from './TerminalInterface'\n\nexport default class SpyInterface implements GraphicsInterface {\n\tpublic invocations: { command: string; options?: any }[] = []\n\tprivate cursorPosition = { x: 0, y: 0 }\n\n\tprivate promptResolver?: (\n\t\tinput: FieldDefinitionValueType<FieldDefinitions>\n\t) => void | undefined\n\n\tprivate confirmResolver?: (pass: boolean) => void | undefined\n\tprivate waitForEnterResolver?: () => void | undefined\n\tprivate promptDefaultValue: any\n\tprivate term?: TerminalInterface\n\tprivate startTime: number\n\tprivate promptTimeout?: any\n\n\tpublic constructor() {\n\t\tthis.startTime = new Date().getTime()\n\n\t\tthis.term = this.shouldRenderTestLogs()\n\t\t\t? new TerminalInterface(process.cwd(), true, (...strs: []) => {\n\t\t\t\t\tthis.optionallyRenderLine(strs.join(' '))\n\t\t\t })\n\t\t\t: undefined\n\t}\n\n\tprivate shouldRenderTestLogs() {\n\t\treturn process.env.SHOULD_RENDER_TEST_LOGS === 'true'\n\t}\n\n\tpublic renderWarning(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderWarning', { message, effects })\n\t\tthis.term?.renderWarning(message)\n\t}\n\n\tpublic renderHint(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHint', { message, effects })\n\t\tthis.optionallyRenderLine(`Hint: ${message}`)\n\t\tthis.term?.renderHint(message)\n\t}\n\n\tprivate trackInvocation(command: string, options?: any) {\n\t\t// testUtil.log(command, JSON.stringify(options), '\\n')\n\t\tthis.invocations.push({ command, options })\n\t}\n\n\tpublic isWaitingForInput() {\n\t\treturn !!(\n\t\t\tthis.promptResolver ||\n\t\t\tthis.confirmResolver ||\n\t\t\tthis.waitForEnterResolver\n\t\t)\n\t}\n\n\tpublic reset() {\n\t\tthis.promptResolver = undefined\n\t\tthis.confirmResolver = undefined\n\t\tthis.waitForEnterResolver = undefined\n\t\tclearTimeout(this.promptTimeout)\n\t}\n\n\tpublic getLastInvocation() {\n\t\treturn this.invocations[this.invocations.length - 1]\n\t}\n\n\tpublic async sendInput(input: string | string[]): Promise<void> {\n\t\tthis.trackInvocation('sendInput', input)\n\n\t\tthis.optionallyRenderLine(\n\t\t\t`Sending input: \"${input.length > 0 ? input : 'ENTER'}\"`\n\t\t)\n\n\t\tif (this.waitForEnterResolver) {\n\t\t\tconst resolver = this.waitForEnterResolver\n\t\t\tthis.waitForEnterResolver = undefined\n\n\t\t\tresolver()\n\t\t} else if (this.promptResolver) {\n\t\t\tconst resolver = this.promptResolver\n\t\t\tthis.promptResolver = undefined\n\n\t\t\tresolver(input !== '\\n' && input !== '' ? input : this.promptDefaultValue)\n\t\t} else if (this.confirmResolver) {\n\t\t\tconst resolver = this.confirmResolver\n\t\t\tthis.confirmResolver = undefined\n\n\t\t\tresolver(\n\t\t\t\tinput === '\\n' ||\n\t\t\t\t\tinput.length === 0 ||\n\t\t\t\t\t(typeof input === 'string' && input.toLowerCase() === 'y')\n\t\t\t)\n\t\t} else {\n\t\t\tthrow new Error('Sent input before prompted for input')\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, 50)\n\t\t})\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline: string\n\t\tlines?: string[] | string[]\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tobject?: any\n\t}): void {\n\t\tthis.trackInvocation('renderSection', options)\n\t\tthis.term?.renderSection(options)\n\t}\n\n\tpublic renderObject(obj: any): void {\n\t\tthis.trackInvocation('renderObject', obj)\n\t\tthis.term?.renderObject(obj)\n\t}\n\n\tpublic renderError(err: Error): void {\n\t\tthis.trackInvocation('renderError', err)\n\t\tthis.term?.renderError(err)\n\t}\n\n\tpublic renderCodeSample(code: string): void {\n\t\tthis.trackInvocation('renderCodeSample', code)\n\t\tthis.term?.renderCodeSample(code)\n\t}\n\n\tpublic renderActionSummary(results: ExecutionResults): void {\n\t\tthis.trackInvocation('renderCommandSummary', results)\n\t\tthis.term?.renderActionSummary(results)\n\t}\n\n\tpublic renderHero(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHero', { message, effects })\n\t\tthis.term?.renderHero(message, effects)\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[],\n\t\tdividerEffects: GraphicsTextEffect[]\n\t): void {\n\t\tthis.trackInvocation('renderHeadline', { message, effects, dividerEffects })\n\t\tthis.term?.renderHeadline(message, effects, dividerEffects)\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[] | undefined): void {\n\t\tthis.trackInvocation('renderDivider', effects)\n\t\tthis.term?.renderDivider(effects)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLine', { message, effects })\n\t\tmessage && message.length > 0 && this.optionallyRenderLine(message)\n\t}\n\n\tprivate optionallyRenderLine(message: string) {\n\t\tif (this.shouldRenderTestLogs()) {\n\t\t\tconst duration = new Date().getTime() - this.startTime\n\t\t\tconst friendly = durationUtil.msToFriendly(duration)\n\n\t\t\ttestLog.info(\n\t\t\t\t`${\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tglobal.activeTest?.test ? global.activeTest?.test + ' :: ' : ''\n\t\t\t\t}${friendly} :: ${message}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tthis.trackInvocation('renderImage', { path, options })\n\t}\n\n\tpublic renderLines(\n\t\tmessages: string[],\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLines', { messages, effects })\n\t\tthis.term?.renderLines(messages, effects)\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(definition: T) {\n\t\tthis.trackInvocation('prompt', definition)\n\n\t\tif (this.promptResolver) {\n\t\t\tthrow new Error(\n\t\t\t\t'Tried to double prompt. Try this.term?.sendInput() before calling prompt next.'\n\t\t\t)\n\t\t}\n\n\t\tlet msg = `${namesUtil.toPascal(definition.type)} Prompt: ${\n\t\t\tdefinition.label\n\t\t}`\n\n\t\tif (definition.type === 'select') {\n\t\t\tmsg += '\\n\\nChoices:\\n'\n\t\t\tdefinition.options.choices.forEach((choice) => {\n\t\t\t\tmsg += `\\n${choice.value}: ${choice.label}`\n\t\t\t})\n\n\t\t\tmsg += '\\n'\n\t\t}\n\n\t\tthis.optionallyRenderLine(msg)\n\n\t\treturn new Promise<FieldDefinitionValueType<FieldDefinitions>>(\n\t\t\t(resolve, reject) => {\n\t\t\t\tthis.promptResolver = (...args: any[]) => {\n\t\t\t\t\tclearTimeout(this.promptTimeout)\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tresolve(...args)\n\t\t\t\t}\n\t\t\t\tthis.promptTimeout = setTimeout(() => {\n\t\t\t\t\tthis.reset()\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t`Timed out waiting for input with label: '${definition.label}'\\n\\nConsider passing what you need to Action().execute({ something })`\n\t\t\t\t\t\t)\n\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t}\n\t\t\t\t}, 10000)\n\t\t\t\tthis.promptDefaultValue = definition.defaultValue\n\t\t\t}\n\t\t)\n\t}\n\n\tpublic startLoading(message?: string | undefined): void {\n\t\tthis.trackInvocation('startLoading', message)\n\t\tthis.optionallyRenderLine(message ? `${message}` : 'Start loading...')\n\t}\n\n\tpublic stopLoading(): void {\n\t\tthis.trackInvocation('stopLoading')\n\t\tthis.optionallyRenderLine('Stop loading...')\n\t}\n\n\tpublic async waitForEnter(message?: string | undefined): Promise<void> {\n\t\tthis.trackInvocation('waitForEnter', message)\n\t\tthis.optionallyRenderLine(\n\t\t\t`${message ? ` ${message}\\n\\n` : ``}Waiting for enter...`\n\t\t)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.waitForEnterResolver = resolve\n\t\t})\n\t}\n\n\tpublic async waitForInput() {\n\t\tconst ttl = 1000 * 60 * 5\n\t\tconst checkInterval = 100\n\t\tlet loops = ttl / checkInterval\n\t\tlet lastWriteCount = this.invocations.length\n\n\t\twhile (!this.isWaitingForInput()) {\n\t\t\tif (loops-- === 0) {\n\t\t\t\tassert.fail(`Waiting for input timed out.`)\n\t\t\t}\n\n\t\t\tconst hasWritten = lastWriteCount != this.invocations.length\n\n\t\t\tif (hasWritten) {\n\t\t\t\tloops = ttl / checkInterval\n\t\t\t\tlastWriteCount = this.invocations.length\n\t\t\t\tif (this.shouldRenderTestLogs()) {\n\t\t\t\t\ttestUtil.log('waitForInput timeout reset because of new output.')\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, checkInterval))\n\t\t}\n\t}\n\n\tpublic confirm(question: string): Promise<boolean> {\n\t\tthis.trackInvocation('confirm', question)\n\t\tthis.optionallyRenderLine(`${question} :: Y/N...`)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.confirmResolver = resolve\n\t\t})\n\t}\n\n\tpublic clear(): void {\n\t\tthis.trackInvocation('clear')\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.trackInvocation('renderProgressBar', options)\n\t\tthis.optionallyRenderLine(\n\t\t\t`Showing progress${options.title ? ` ${options.title}` : ``}`\n\t\t)\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tthis.trackInvocation('updateProgressBar', options)\n\t}\n\n\tpublic removeProgressBar(): void {\n\t\tthis.trackInvocation('removeProgressBar')\n\t\tthis.optionallyRenderLine(`Hiding progress`)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\tthis.trackInvocation('getCursorPosition')\n\t\treturn this.cursorPosition\n\t}\n\n\tpublic setCursorPosition(pos: { x: number; y: number }) {\n\t\tthis.cursorPosition = pos\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tthis.trackInvocation('moveCursorTo', { x, y })\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tthis.trackInvocation('clearBelowCursor')\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SpyInterface.js","names":["SpyInterface","x","y","startTime","Date","getTime","term","shouldRenderTestLogs","TerminalInterface","process","cwd","strs","optionallyRenderLine","join","undefined","env","SHOULD_RENDER_TEST_LOGS","message","effects","trackInvocation","renderWarning","renderHint","command","options","invocations","push","promptResolver","confirmResolver","waitForEnterResolver","clearTimeout","promptTimeout","length","input","resolver","promptDefaultValue","toLowerCase","Error","Promise","resolve","setTimeout","renderSection","obj","renderObject","err","renderError","code","renderCodeSample","results","renderActionSummary","renderHero","dividerEffects","renderHeadline","renderDivider","duration","friendly","durationUtil","msToFriendly","testLog","info","global","activeTest","test","path","messages","renderLines","definition","msg","namesUtil","toPascal","type","label","choices","forEach","choice","value","reject","reset","assert","fail","defaultValue","ttl","checkInterval","loops","lastWriteCount","isWaitingForInput","hasWritten","testUtil","log","question","title","cursorPosition","pos"],"sources":["../../src/interfaces/SpyInterface.ts"],"sourcesContent":["import { FieldDefinitionValueType } from '@sprucelabs/schema'\nimport { namesUtil, testLog } from '@sprucelabs/spruce-skill-utils'\nimport { assert } from '@sprucelabs/test-utils'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport testUtil from '../tests/utilities/test.utility'\nimport { ExecutionResults } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n\tImageDimensions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport TerminalInterface from './TerminalInterface'\n\nexport default class SpyInterface implements GraphicsInterface {\n\tpublic invocations: { command: string; options?: any }[] = []\n\tprivate cursorPosition = { x: 0, y: 0 }\n\n\tprivate promptResolver?: (\n\t\tinput: FieldDefinitionValueType<FieldDefinitions>\n\t) => void | undefined\n\n\tprivate confirmResolver?: (pass: boolean) => void | undefined\n\tprivate waitForEnterResolver?: () => void | undefined\n\tprivate promptDefaultValue: any\n\tprivate term?: TerminalInterface\n\tprivate startTime: number\n\tprivate promptTimeout?: any\n\n\tpublic constructor() {\n\t\tthis.startTime = new Date().getTime()\n\n\t\tthis.term = this.shouldRenderTestLogs()\n\t\t\t? new TerminalInterface(process.cwd(), true, (...strs: []) => {\n\t\t\t\t\tthis.optionallyRenderLine(strs.join(' '))\n\t\t\t })\n\t\t\t: undefined\n\t}\n\n\tprivate shouldRenderTestLogs() {\n\t\treturn process.env.SHOULD_RENDER_TEST_LOGS === 'true'\n\t}\n\n\tpublic renderWarning(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderWarning', { message, effects })\n\t\tthis.term?.renderWarning(message)\n\t}\n\n\tpublic renderHint(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHint', { message, effects })\n\t\tthis.optionallyRenderLine(`Hint: ${message}`)\n\t\tthis.term?.renderHint(message)\n\t}\n\n\tprivate trackInvocation(command: string, options?: any) {\n\t\t// testUtil.log(command, JSON.stringify(options), '\\n')\n\t\tthis.invocations.push({ command, options })\n\t}\n\n\tpublic isWaitingForInput() {\n\t\treturn !!(\n\t\t\tthis.promptResolver ||\n\t\t\tthis.confirmResolver ||\n\t\t\tthis.waitForEnterResolver\n\t\t)\n\t}\n\n\tpublic reset() {\n\t\tthis.promptResolver = undefined\n\t\tthis.confirmResolver = undefined\n\t\tthis.waitForEnterResolver = undefined\n\t\tclearTimeout(this.promptTimeout)\n\t}\n\n\tpublic getLastInvocation() {\n\t\treturn this.invocations[this.invocations.length - 1]\n\t}\n\n\tpublic async sendInput(input: string | string[]): Promise<void> {\n\t\tthis.trackInvocation('sendInput', input)\n\n\t\tthis.optionallyRenderLine(\n\t\t\t`Sending input: \"${input.length > 0 ? input : 'ENTER'}\"`\n\t\t)\n\n\t\tif (this.waitForEnterResolver) {\n\t\t\tconst resolver = this.waitForEnterResolver\n\t\t\tthis.waitForEnterResolver = undefined\n\n\t\t\tresolver()\n\t\t} else if (this.promptResolver) {\n\t\t\tconst resolver = this.promptResolver\n\t\t\tthis.promptResolver = undefined\n\n\t\t\tresolver(input !== '\\n' && input !== '' ? input : this.promptDefaultValue)\n\t\t} else if (this.confirmResolver) {\n\t\t\tconst resolver = this.confirmResolver\n\t\t\tthis.confirmResolver = undefined\n\n\t\t\tresolver(\n\t\t\t\tinput === '\\n' ||\n\t\t\t\t\tinput.length === 0 ||\n\t\t\t\t\t(typeof input === 'string' && input.toLowerCase() === 'y')\n\t\t\t)\n\t\t} else {\n\t\t\tthrow new Error('Sent input before prompted for input')\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, 50)\n\t\t})\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline: string\n\t\tlines?: string[] | string[]\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tobject?: any\n\t}): void {\n\t\tthis.trackInvocation('renderSection', options)\n\t\tthis.term?.renderSection(options)\n\t}\n\n\tpublic renderObject(obj: any): void {\n\t\tthis.trackInvocation('renderObject', obj)\n\t\tthis.term?.renderObject(obj)\n\t}\n\n\tpublic renderError(err: Error): void {\n\t\tthis.trackInvocation('renderError', err)\n\t\tthis.term?.renderError(err)\n\t}\n\n\tpublic renderCodeSample(code: string): void {\n\t\tthis.trackInvocation('renderCodeSample', code)\n\t\tthis.term?.renderCodeSample(code)\n\t}\n\n\tpublic renderActionSummary(results: ExecutionResults): void {\n\t\tthis.trackInvocation('renderCommandSummary', results)\n\t\tthis.term?.renderActionSummary(results)\n\t}\n\n\tpublic renderHero(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHero', { message, effects })\n\t\tthis.term?.renderHero(message, effects)\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[],\n\t\tdividerEffects: GraphicsTextEffect[]\n\t): void {\n\t\tthis.trackInvocation('renderHeadline', { message, effects, dividerEffects })\n\t\tthis.term?.renderHeadline(message, effects, dividerEffects)\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[] | undefined): void {\n\t\tthis.trackInvocation('renderDivider', effects)\n\t\tthis.term?.renderDivider(effects)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLine', { message, effects })\n\t\tmessage && message.length > 0 && this.optionallyRenderLine(message)\n\t}\n\n\tprivate optionallyRenderLine(message: string) {\n\t\tif (this.shouldRenderTestLogs()) {\n\t\t\tconst duration = new Date().getTime() - this.startTime\n\t\t\tconst friendly = durationUtil.msToFriendly(duration)\n\n\t\t\ttestLog.info(\n\t\t\t\t`${\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tglobal.activeTest?.test ? global.activeTest?.test + ' :: ' : ''\n\t\t\t\t}${friendly} :: ${message}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tthis.trackInvocation('renderImage', { path, options })\n\t}\n\n\tpublic renderLines(\n\t\tmessages: string[],\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLines', { messages, effects })\n\t\tthis.term?.renderLines(messages, effects)\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(definition: T) {\n\t\tthis.trackInvocation('prompt', definition)\n\n\t\tif (this.promptResolver) {\n\t\t\tthrow new Error(\n\t\t\t\t'Tried to double prompt. Try this.term?.sendInput() before calling prompt next.'\n\t\t\t)\n\t\t}\n\n\t\tlet msg = `${namesUtil.toPascal(definition.type)} Prompt: ${\n\t\t\tdefinition.label\n\t\t}`\n\n\t\tif (definition.type === 'select') {\n\t\t\tmsg += '\\n\\nChoices:\\n'\n\t\t\tdefinition.options.choices.forEach((choice) => {\n\t\t\t\tmsg += `\\n${choice.value}: ${choice.label}`\n\t\t\t})\n\n\t\t\tmsg += '\\n'\n\t\t}\n\n\t\tthis.optionallyRenderLine(msg)\n\n\t\treturn new Promise<FieldDefinitionValueType<FieldDefinitions>>(\n\t\t\t(resolve, reject) => {\n\t\t\t\tthis.promptResolver = (...args: any[]) => {\n\t\t\t\t\tclearTimeout(this.promptTimeout)\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tresolve(...args)\n\t\t\t\t}\n\t\t\t\tthis.promptTimeout = setTimeout(() => {\n\t\t\t\t\tthis.reset()\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t`Timed out waiting for input with label: '${definition.label}'\\n\\nConsider passing what you need to Action().execute({ something })`\n\t\t\t\t\t\t)\n\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t}\n\t\t\t\t}, 10000)\n\t\t\t\tthis.promptDefaultValue = definition.defaultValue\n\t\t\t}\n\t\t)\n\t}\n\n\tpublic startLoading(message?: string | undefined): void {\n\t\tthis.trackInvocation('startLoading', message)\n\t\tthis.optionallyRenderLine(message ? `${message}` : 'Start loading...')\n\t}\n\n\tpublic stopLoading(): void {\n\t\tthis.trackInvocation('stopLoading')\n\t\tthis.optionallyRenderLine('Stop loading...')\n\t}\n\n\tpublic async waitForEnter(message?: string | undefined): Promise<void> {\n\t\tthis.trackInvocation('waitForEnter', message)\n\t\tthis.optionallyRenderLine(\n\t\t\t`${message ? ` ${message}\\n\\n` : ``}Waiting for enter...`\n\t\t)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.waitForEnterResolver = resolve\n\t\t})\n\t}\n\n\tpublic async waitForInput() {\n\t\tconst ttl = 1000 * 60 * 5\n\t\tconst checkInterval = 100\n\t\tlet loops = ttl / checkInterval\n\t\tlet lastWriteCount = this.invocations.length\n\n\t\twhile (!this.isWaitingForInput()) {\n\t\t\tif (loops-- === 0) {\n\t\t\t\tassert.fail(`Waiting for input timed out.`)\n\t\t\t}\n\n\t\t\tconst hasWritten = lastWriteCount != this.invocations.length\n\n\t\t\tif (hasWritten) {\n\t\t\t\tloops = ttl / checkInterval\n\t\t\t\tlastWriteCount = this.invocations.length\n\t\t\t\tif (this.shouldRenderTestLogs()) {\n\t\t\t\t\ttestUtil.log('waitForInput timeout reset because of new output.')\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, checkInterval))\n\t\t}\n\t}\n\n\tpublic confirm(question: string): Promise<boolean> {\n\t\tthis.trackInvocation('confirm', question)\n\t\tthis.optionallyRenderLine(`${question} :: Y/N...`)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.confirmResolver = resolve\n\t\t})\n\t}\n\n\tpublic clear(): void {\n\t\tthis.trackInvocation('clear')\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.trackInvocation('renderProgressBar', options)\n\t\tthis.optionallyRenderLine(\n\t\t\t`Showing progress${options.title ? ` ${options.title}` : ``}`\n\t\t)\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tthis.trackInvocation('updateProgressBar', options)\n\t}\n\n\tpublic removeProgressBar(): void {\n\t\tthis.trackInvocation('removeProgressBar')\n\t\tthis.optionallyRenderLine(`Hiding progress`)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\tthis.trackInvocation('getCursorPosition')\n\t\treturn this.cursorPosition\n\t}\n\n\tpublic setCursorPosition(pos: { x: number; y: number }) {\n\t\tthis.cursorPosition = pos\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tthis.trackInvocation('moveCursorTo', { x, y })\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tthis.trackInvocation('clearBelowCursor')\n\t}\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import AbstractSpruceTest from '@sprucelabs/test';
1
+ import AbstractSpruceTest from '@sprucelabs/test-utils';
2
2
  import { CliBootOptions } from '../cli';
3
3
  import AbstractAction from '../features/AbstractAction';
4
4
  import { FeatureOptions } from '../features/AbstractFeature';
@@ -37,7 +37,7 @@ var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
37
37
 
38
38
  var _spruceTemplates = require("@sprucelabs/spruce-templates");
39
39
 
40
- var _test = _interopRequireWildcard(require("@sprucelabs/test"));
40
+ var _testUtils = _interopRequireWildcard(require("@sprucelabs/test-utils"));
41
41
 
42
42
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
43
43
 
@@ -87,7 +87,7 @@ var _SkillFixture = _interopRequireDefault(require("./fixtures/SkillFixture"));
87
87
 
88
88
  var _ViewFixture = _interopRequireDefault(require("./fixtures/ViewFixture"));
89
89
 
90
- var _test2 = _interopRequireDefault(require("./utilities/test.utility"));
90
+ var _test = _interopRequireDefault(require("./utilities/test.utility"));
91
91
 
92
92
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
93
93
 
@@ -171,7 +171,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
171
171
  //@ts-ignore
172
172
  process.env = _objectSpread({}, this.originalEnv);
173
173
 
174
- _test2["default"].startLogTimer();
174
+ _test["default"].startLogTimer();
175
175
 
176
176
  _schema.SchemaRegistry.getInstance().forgetAllSchemas();
177
177
 
@@ -250,11 +250,11 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
250
250
  throw new Error("Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.");
251
251
 
252
252
  case 9:
253
- if (_spruceSkillUtils.diskUtil.doesDirExist(this.cwd) && _test2["default"].shouldClearCache()) {
253
+ if (_spruceSkillUtils.diskUtil.doesDirExist(this.cwd) && _test["default"].shouldClearCache()) {
254
254
  _spruceSkillUtils.diskUtil.deleteDir(this.cwd);
255
255
  }
256
256
 
257
- if (_spruceSkillUtils.diskUtil.doesDirExist(this.homeDir) && _test2["default"].shouldClearCache()) {
257
+ if (_spruceSkillUtils.diskUtil.doesDirExist(this.homeDir) && _test["default"].shouldClearCache()) {
258
258
  _spruceSkillUtils.diskUtil.deleteDir(this.homeDir);
259
259
  }
260
260
 
@@ -284,7 +284,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
284
284
  return (0, _get2["default"])((0, _getPrototypeOf2["default"])(AbstractCliTest), "afterAll", this).call(this);
285
285
 
286
286
  case 2:
287
- if (_test2["default"].shouldCleanupTestSkillDirs()) {
287
+ if (_test["default"].shouldCleanupTestSkillDirs()) {
288
288
  _FeatureFixture2["default"].deleteOldSkillDirs();
289
289
  }
290
290
 
@@ -359,7 +359,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
359
359
  }, {
360
360
  key: "freshTmpDir",
361
361
  value: function freshTmpDir() {
362
- var tmpDirectory = _test2["default"].resolveTestDir(uuid.v4());
362
+ var tmpDirectory = _test["default"].resolveTestDir(uuid.v4());
363
363
 
364
364
  _fsExtra["default"].ensureDirSync(tmpDirectory);
365
365
 
@@ -679,7 +679,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
679
679
  case 3:
680
680
  isInstalled = _context10.sent;
681
681
 
682
- _test.assert.isTrue(isInstalled);
682
+ _testUtils.assert.isTrue(isInstalled);
683
683
 
684
684
  case 5:
685
685
  case "end":
@@ -853,7 +853,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
853
853
  }, {
854
854
  key: "log",
855
855
  value: function log() {
856
- _test2["default"].log.apply(_test2["default"], arguments);
856
+ _test["default"].log.apply(_test["default"], arguments);
857
857
  }
858
858
  }, {
859
859
  key: "Action",
@@ -912,7 +912,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
912
912
  value: function selectOptionBasedOnLabel(label) {
913
913
  var last = this.ui.getLastInvocation();
914
914
 
915
- _test.assert.doesInclude(last.options.options.choices, {
915
+ _testUtils.assert.doesInclude(last.options.options.choices, {
916
916
  label: label
917
917
  });
918
918
 
@@ -923,7 +923,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
923
923
  }
924
924
  }]);
925
925
  return AbstractCliTest;
926
- }(_test["default"]);
926
+ }(_testUtils["default"]);
927
927
 
928
928
  exports["default"] = AbstractCliTest;
929
929
  (0, _defineProperty2["default"])(AbstractCliTest, "cliRoot", _path["default"].join(__dirname, '..'));
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractCliTest.js","names":["AbstractCliTest","cleanTestDirsAndFiles","LintService","disableLinting","ImportService","setCacheDir","diskUtil","createRandomTempDir","enableCaching","process","env","ENABLE_INSTALL_ENTERTAINMENT","originalEnv","testUtil","startLogTimer","SchemaRegistry","getInstance","forgetAllSchemas","cwd","freshTmpDir","homeDir","emitter","undefined","featureInstaller","OnboardingStore","overrideCwd","ui","reset","invocations","setCursorPosition","x","y","clearFixtures","clearCache","SkillStore","clearCurrentSkill","EventStore","CommandService","clearMockResponses","MercuryClientFactory","setIsTestMode","commandFaker","CommandFaker","organizationFixture","clearAllOrgs","mercuryFixture","disconnectAll","_ui","isWaitingForInput","Error","doesDirExist","shouldClearCache","deleteDir","shouldCleanupTestSkillDirs","FeatureFixture","deleteOldSkillDirs","pattern","resolveTestPath","globby","matches","match","deleteFile","personFixture","skillFixture","viewFixture","tmpDirectory","resolveTestDir","uuid","v4","fs","ensureDirSync","SpyInterface","CliGlobalEmitter","Emitter","pathAfterTestDirsAndFiles","pathUtil","join","cliRoot","options","Cli","fixture","linkLocalPackages","type","sf","ServiceFactory","Service","getEmitter","serviceFactory","apiClientFactory","getMercuryFixture","getApiClientFactory","getFeatureInstaller","MercuryFixture","PersonFixture","writerFactory","WriterFactory","viewWriter","Writer","fileDescriptions","ViewFixture","Action","templates","settings","execute","promise","waitForInput","sendInput","results","OrganizationFixture","people","StoreFactory","SkillFixture","filePath","resolveHashSprucePath","storeFactory","actionExecuter","ActionExecuter","FeatureInstallerFactory","WithAllFeatures","code","Store","isInstalled","assert","isTrue","files","file","checker","check","path","connectToApi","all","dir","wait","timeout","log","featureCode","actionCode","executer","shouldThrowOnListenerError","actionFactory","ActionFactory","optionOverrides","shouldInstallMissingDependencies","featureInstallerFactory","shouldAutoHandleDependencies","label","last","getLastInvocation","doesInclude","choices","find","o","value","AbstractSpruceTest","__dirname"],"sources":["../../src/tests/AbstractCliTest.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SchemaRegistry } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport AbstractSpruceTest, { assert } from '@sprucelabs/test'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport * as uuid from 'uuid'\nimport { CliBootOptions } from '../cli'\nimport AbstractAction from '../features/AbstractAction'\nimport { FeatureOptions } from '../features/AbstractFeature'\nimport ActionExecuter, {\n\tActionExecuterOptions,\n} from '../features/ActionExecuter'\nimport ActionFactory from '../features/ActionFactory'\nimport EventStore from '../features/event/stores/EventStore'\nimport FeatureInstaller from '../features/FeatureInstaller'\nimport FeatureInstallerFactory from '../features/FeatureInstallerFactory'\nimport { FeatureActionResponse, FeatureCode } from '../features/features.types'\nimport OnboardingStore from '../features/onboard/stores/OnboardingStore'\nimport SkillStore from '../features/skill/stores/SkillStore'\nimport CliGlobalEmitter, { GlobalEmitter } from '../GlobalEmitter'\nimport SpyInterface from '../interfaces/SpyInterface'\nimport CommandService from '../services/CommandService'\nimport ImportService from '../services/ImportService'\nimport LintService from '../services/LintService'\nimport ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreFactoryOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport { ApiClientFactoryOptions } from '../types/apiClient.types'\nimport { OptionOverrides } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport CommandFaker from './CommandFaker'\nimport FeatureFixture, {\n\tFeatureFixtureOptions,\n} from './fixtures/FeatureFixture'\nimport MercuryFixture from './fixtures/MercuryFixture'\nimport OrganizationFixture from './fixtures/OrganizationFixture'\nimport PersonFixture from './fixtures/PersonFixture'\nimport SkillFixture from './fixtures/SkillFixture'\nimport ViewFixture from './fixtures/ViewFixture'\nimport testUtil from './utilities/test.utility'\n\ntype ExecuterOptions = Partial<ActionExecuterOptions> & {\n\toptionOverrides?: OptionOverrides\n}\n\nexport default abstract class AbstractCliTest extends AbstractSpruceTest {\n\tprotected static cliRoot = pathUtil.join(__dirname, '..')\n\tprotected static homeDir: string\n\tprotected static commandFaker: CommandFaker\n\n\tprivate static _ui: SpyInterface\n\tprivate static emitter?: GlobalEmitter\n\tprivate static mercuryFixture?: MercuryFixture\n\tprivate static personFixture?: PersonFixture\n\tprivate static organizationFixture?: OrganizationFixture\n\tprivate static skillFixture?: SkillFixture\n\tprivate static featureInstaller?: FeatureInstaller\n\tprivate static viewFixture?: ViewFixture\n\tprivate static originalEnv: { [x: string]: string | undefined }\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tawait this.cleanTestDirsAndFiles()\n\n\t\tLintService.disableLinting()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tImportService.enableCaching()\n\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT = 'false'\n\n\t\tthis.originalEnv = { ...process.env }\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\t//@ts-ignore\n\t\tprocess.env = { ...this.originalEnv }\n\n\t\ttestUtil.startLogTimer()\n\n\t\tSchemaRegistry.getInstance().forgetAllSchemas()\n\n\t\tthis.cwd = this.freshTmpDir()\n\t\tthis.homeDir = this.freshTmpDir()\n\n\t\tthis.emitter = undefined\n\t\tthis.featureInstaller = undefined\n\n\t\tOnboardingStore.overrideCwd(diskUtil.createRandomTempDir())\n\n\t\tthis.ui.reset()\n\t\tthis.ui.invocations = []\n\t\tthis.ui.setCursorPosition({ x: 0, y: 0 })\n\n\t\tthis.clearFixtures()\n\n\t\tImportService.clearCache()\n\t\tSkillStore.clearCurrentSkill()\n\t\tEventStore.clearCache()\n\t\tCommandService.clearMockResponses()\n\t\tMercuryClientFactory.reset()\n\t\tMercuryClientFactory.setIsTestMode(false)\n\n\t\tthis.commandFaker = new CommandFaker()\n\t}\n\n\tprotected static async afterEach() {\n\t\tawait super.afterEach()\n\n\t\tawait this.organizationFixture?.clearAllOrgs()\n\t\tawait this.mercuryFixture?.disconnectAll()\n\n\t\tthis.clearFixtures()\n\n\t\tif (this._ui?.isWaitingForInput()) {\n\t\t\tthrow new Error(\n\t\t\t\t`Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.`\n\t\t\t)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.cwd) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.cwd)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.homeDir) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.homeDir)\n\t\t}\n\t}\n\n\tprotected static async afterAll() {\n\t\tawait super.afterAll()\n\t\tif (testUtil.shouldCleanupTestSkillDirs()) {\n\t\t\tFeatureFixture.deleteOldSkillDirs()\n\t\t}\n\t}\n\n\tprivate static async cleanTestDirsAndFiles() {\n\t\tconst pattern = this.resolveTestPath('**/*.d.ts')\n\t\tconst matches = await globby(pattern)\n\n\t\tfor (const match of matches) {\n\t\t\tdiskUtil.deleteFile(match)\n\t\t}\n\t}\n\n\tprivate static clearFixtures() {\n\t\tthis.emitter = undefined\n\t\tthis.mercuryFixture = undefined\n\t\tthis.organizationFixture = undefined\n\t\tthis.personFixture = undefined\n\t\tthis.skillFixture = undefined\n\t\tthis.viewFixture = undefined\n\t}\n\n\tprotected static freshTmpDir() {\n\t\tconst tmpDirectory = testUtil.resolveTestDir(uuid.v4())\n\t\tfs.ensureDirSync(tmpDirectory)\n\t\treturn tmpDirectory\n\t}\n\n\tprotected static get ui() {\n\t\tif (!this._ui) {\n\t\t\tthis._ui = new SpyInterface()\n\t\t}\n\n\t\treturn this._ui\n\t}\n\n\tprotected static getEmitter() {\n\t\tif (!this.emitter) {\n\t\t\tthis.emitter = CliGlobalEmitter.Emitter()\n\t\t}\n\t\treturn this.emitter\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUtil.join(\n\t\t\tthis.cliRoot,\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n\n\tprotected static async Cli(options?: CliBootOptions) {\n\t\treturn this.FeatureFixture(options).Cli({\n\t\t\tcwd: this.cwd,\n\t\t\thomeDir: this.homeDir,\n\t\t\t...(options ?? {}),\n\t\t})\n\t}\n\n\tprotected static async linkLocalPackages() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tawait fixture.linkLocalPackages()\n\t}\n\n\tprotected static Service<S extends Service>(\n\t\ttype: S,\n\t\tcwd?: string\n\t): ServiceMap[S] {\n\t\tconst sf = this.ServiceFactory()\n\t\treturn sf.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected static ServiceFactory() {\n\t\treturn new ServiceFactory()\n\t}\n\n\tprotected static FeatureFixture(options?: Partial<FeatureFixtureOptions>) {\n\t\tconst emitter = options?.emitter ?? this.getEmitter()\n\n\t\treturn new FeatureFixture({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory: this.ServiceFactory(),\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tfeatureInstaller: this.getFeatureInstaller({ emitter }),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static getMercuryFixture() {\n\t\tif (!this.mercuryFixture) {\n\t\t\tthis.mercuryFixture = new MercuryFixture(this.cwd, this.ServiceFactory())\n\t\t}\n\n\t\treturn this.mercuryFixture\n\t}\n\n\tprotected static get people() {\n\t\tif (!this.personFixture) {\n\t\t\tthis.personFixture = new PersonFixture(\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.personFixture\n\t}\n\n\tprotected static getViewFixture() {\n\t\tif (!this.viewFixture) {\n\t\t\tconst writerFactory = this.WriterFactory()\n\n\t\t\tconst viewWriter = writerFactory.Writer('view', { fileDescriptions: [] })\n\t\t\tthis.viewFixture = new ViewFixture(\n\t\t\t\tthis.cwd,\n\t\t\t\tviewWriter,\n\t\t\t\tthis.Action('view', 'sync')\n\t\t\t)\n\t\t}\n\n\t\treturn this.viewFixture\n\t}\n\n\tprivate static WriterFactory() {\n\t\treturn new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui: this.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t})\n\t}\n\n\tprotected static async skipInstallSkillPrompts<\n\t\tE extends () => Promise<FeatureActionResponse>\n\t>(\n\t\texecute?: E\n\t): Promise<E extends undefined ? undefined : FeatureActionResponse> {\n\t\tconst promise = execute?.()\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('n')\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\treturn results as any\n\t}\n\n\tprotected static getOrganizationFixture() {\n\t\tif (!this.organizationFixture) {\n\t\t\tthis.organizationFixture = new OrganizationFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.organizationFixture\n\t}\n\n\tprotected static getSkillFixture() {\n\t\tif (!this.skillFixture) {\n\t\t\tthis.skillFixture = new SkillFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory(),\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.skillFixture\n\t}\n\n\tprotected static resolveHashSprucePath(...filePath: string[]) {\n\t\treturn diskUtil.resolveHashSprucePath(this.cwd, ...filePath)\n\t}\n\n\tprotected static getFeatureInstaller(options?: Partial<FeatureOptions>) {\n\t\tif (!this.featureInstaller) {\n\t\t\tconst serviceFactory = this.ServiceFactory()\n\t\t\tconst storeFactory = this.StoreFactory(options)\n\t\t\tconst emitter = this.getEmitter()\n\t\t\tconst apiClientFactory = this.getMercuryFixture().getApiClientFactory()\n\n\t\t\tconst actionExecuter = this.ActionExecuter()\n\n\t\t\tthis.featureInstaller = FeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui: this.ui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t\t...options,\n\t\t\t})\n\t\t}\n\n\t\treturn this.featureInstaller\n\t}\n\n\tprotected static StoreFactory(options?: Partial<StoreFactoryOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\n\t\treturn new StoreFactory({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: this.homeDir,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\temitter: this.getEmitter(),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.StoreFactory().Store(code, {\n\t\t\tcwd: this.cwd,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static async waitForInput() {\n\t\treturn this.ui.waitForInput()\n\t}\n\n\tprotected static async assertIsFeatureInstalled(code: FeatureCode) {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\t\tconst isInstalled = await featureInstaller.isInstalled(code)\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\tprotected static async assertValidActionResponseFiles(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tfor (const file of results.files ?? []) {\n\t\t\tconst checker = this.Service('typeChecker')\n\t\t\tawait checker.check(file.path)\n\t\t}\n\n\t\t// await Promise.all(\n\t\t// \t(results.files ?? []).map((file) => {\n\t\t// \t\tconst checker = this.Service('typeChecker')\n\t\t// \t\treturn checker.check(file.path)\n\t\t// \t})\n\t\t// )\n\t}\n\n\tprotected static async connectToApi(options?: ApiClientFactoryOptions) {\n\t\treturn this.getMercuryFixture().connectToApi(options)\n\t}\n\n\tprotected static async openInVsCode(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Action('vscode', 'setup').execute({ all: true })\n\n\t\tawait this.Service('command').execute(\n\t\t\t`code ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static async openInFinder(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Service('command').execute(\n\t\t\t`open ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static log(...args: any[]) {\n\t\ttestUtil.log(...args)\n\t}\n\n\tprotected static Action<\n\t\tAction extends AbstractAction = AbstractAction,\n\t\tF extends FeatureCode = FeatureCode\n\t>(featureCode: F, actionCode: string, options?: ExecuterOptions): Action {\n\t\tconst executer = this.ActionExecuter({\n\t\t\tshouldThrowOnListenerError: true,\n\t\t\t...options,\n\t\t}).Action(featureCode, actionCode)\n\n\t\treturn executer as any\n\t}\n\n\tprotected static ActionExecuter(options?: ExecuterOptions) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\t\tconst writerFactory = this.WriterFactory()\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\twriterFactory,\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory: this.StoreFactory(),\n\t\t\ttemplates,\n\t\t\toptionOverrides: {\n\t\t\t\t'sync.schemas': {\n\t\t\t\t\tshouldInstallMissingDependencies: true,\n\t\t\t\t},\n\t\t\t\t...options?.optionOverrides,\n\t\t\t},\n\t\t})\n\n\t\tconst executer = new ActionExecuter({\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tactionFactory,\n\t\t\tfeatureInstallerFactory: () => {\n\t\t\t\treturn this.getFeatureInstaller()\n\t\t\t},\n\t\t\tshouldAutoHandleDependencies: false,\n\t\t\t...options,\n\t\t})\n\n\t\treturn executer\n\t}\n\n\tprotected static selectOptionBasedOnLabel(label: string) {\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel,\n\t\t})\n\n\t\tconst match = last.options.options.choices.find(\n\t\t\t(o: any) => o.label === label\n\t\t)\n\n\t\tvoid this.ui.sendInput(`${match.value}`)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AbstractCliTest.js","names":["AbstractCliTest","cleanTestDirsAndFiles","LintService","disableLinting","ImportService","setCacheDir","diskUtil","createRandomTempDir","enableCaching","process","env","ENABLE_INSTALL_ENTERTAINMENT","originalEnv","testUtil","startLogTimer","SchemaRegistry","getInstance","forgetAllSchemas","cwd","freshTmpDir","homeDir","emitter","undefined","featureInstaller","OnboardingStore","overrideCwd","ui","reset","invocations","setCursorPosition","x","y","clearFixtures","clearCache","SkillStore","clearCurrentSkill","EventStore","CommandService","clearMockResponses","MercuryClientFactory","setIsTestMode","commandFaker","CommandFaker","organizationFixture","clearAllOrgs","mercuryFixture","disconnectAll","_ui","isWaitingForInput","Error","doesDirExist","shouldClearCache","deleteDir","shouldCleanupTestSkillDirs","FeatureFixture","deleteOldSkillDirs","pattern","resolveTestPath","globby","matches","match","deleteFile","personFixture","skillFixture","viewFixture","tmpDirectory","resolveTestDir","uuid","v4","fs","ensureDirSync","SpyInterface","CliGlobalEmitter","Emitter","pathAfterTestDirsAndFiles","pathUtil","join","cliRoot","options","Cli","fixture","linkLocalPackages","type","sf","ServiceFactory","Service","getEmitter","serviceFactory","apiClientFactory","getMercuryFixture","getApiClientFactory","getFeatureInstaller","MercuryFixture","PersonFixture","writerFactory","WriterFactory","viewWriter","Writer","fileDescriptions","ViewFixture","Action","templates","settings","execute","promise","waitForInput","sendInput","results","OrganizationFixture","people","StoreFactory","SkillFixture","filePath","resolveHashSprucePath","storeFactory","actionExecuter","ActionExecuter","FeatureInstallerFactory","WithAllFeatures","code","Store","isInstalled","assert","isTrue","files","file","checker","check","path","connectToApi","all","dir","wait","timeout","log","featureCode","actionCode","executer","shouldThrowOnListenerError","actionFactory","ActionFactory","optionOverrides","shouldInstallMissingDependencies","featureInstallerFactory","shouldAutoHandleDependencies","label","last","getLastInvocation","doesInclude","choices","find","o","value","AbstractSpruceTest","__dirname"],"sources":["../../src/tests/AbstractCliTest.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SchemaRegistry } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport AbstractSpruceTest, { assert } from '@sprucelabs/test-utils'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport * as uuid from 'uuid'\nimport { CliBootOptions } from '../cli'\nimport AbstractAction from '../features/AbstractAction'\nimport { FeatureOptions } from '../features/AbstractFeature'\nimport ActionExecuter, {\n\tActionExecuterOptions,\n} from '../features/ActionExecuter'\nimport ActionFactory from '../features/ActionFactory'\nimport EventStore from '../features/event/stores/EventStore'\nimport FeatureInstaller from '../features/FeatureInstaller'\nimport FeatureInstallerFactory from '../features/FeatureInstallerFactory'\nimport { FeatureActionResponse, FeatureCode } from '../features/features.types'\nimport OnboardingStore from '../features/onboard/stores/OnboardingStore'\nimport SkillStore from '../features/skill/stores/SkillStore'\nimport CliGlobalEmitter, { GlobalEmitter } from '../GlobalEmitter'\nimport SpyInterface from '../interfaces/SpyInterface'\nimport CommandService from '../services/CommandService'\nimport ImportService from '../services/ImportService'\nimport LintService from '../services/LintService'\nimport ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreFactoryOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport { ApiClientFactoryOptions } from '../types/apiClient.types'\nimport { OptionOverrides } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport CommandFaker from './CommandFaker'\nimport FeatureFixture, {\n\tFeatureFixtureOptions,\n} from './fixtures/FeatureFixture'\nimport MercuryFixture from './fixtures/MercuryFixture'\nimport OrganizationFixture from './fixtures/OrganizationFixture'\nimport PersonFixture from './fixtures/PersonFixture'\nimport SkillFixture from './fixtures/SkillFixture'\nimport ViewFixture from './fixtures/ViewFixture'\nimport testUtil from './utilities/test.utility'\n\ntype ExecuterOptions = Partial<ActionExecuterOptions> & {\n\toptionOverrides?: OptionOverrides\n}\n\nexport default abstract class AbstractCliTest extends AbstractSpruceTest {\n\tprotected static cliRoot = pathUtil.join(__dirname, '..')\n\tprotected static homeDir: string\n\tprotected static commandFaker: CommandFaker\n\n\tprivate static _ui: SpyInterface\n\tprivate static emitter?: GlobalEmitter\n\tprivate static mercuryFixture?: MercuryFixture\n\tprivate static personFixture?: PersonFixture\n\tprivate static organizationFixture?: OrganizationFixture\n\tprivate static skillFixture?: SkillFixture\n\tprivate static featureInstaller?: FeatureInstaller\n\tprivate static viewFixture?: ViewFixture\n\tprivate static originalEnv: { [x: string]: string | undefined }\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tawait this.cleanTestDirsAndFiles()\n\n\t\tLintService.disableLinting()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tImportService.enableCaching()\n\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT = 'false'\n\n\t\tthis.originalEnv = { ...process.env }\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\t//@ts-ignore\n\t\tprocess.env = { ...this.originalEnv }\n\n\t\ttestUtil.startLogTimer()\n\n\t\tSchemaRegistry.getInstance().forgetAllSchemas()\n\n\t\tthis.cwd = this.freshTmpDir()\n\t\tthis.homeDir = this.freshTmpDir()\n\n\t\tthis.emitter = undefined\n\t\tthis.featureInstaller = undefined\n\n\t\tOnboardingStore.overrideCwd(diskUtil.createRandomTempDir())\n\n\t\tthis.ui.reset()\n\t\tthis.ui.invocations = []\n\t\tthis.ui.setCursorPosition({ x: 0, y: 0 })\n\n\t\tthis.clearFixtures()\n\n\t\tImportService.clearCache()\n\t\tSkillStore.clearCurrentSkill()\n\t\tEventStore.clearCache()\n\t\tCommandService.clearMockResponses()\n\t\tMercuryClientFactory.reset()\n\t\tMercuryClientFactory.setIsTestMode(false)\n\n\t\tthis.commandFaker = new CommandFaker()\n\t}\n\n\tprotected static async afterEach() {\n\t\tawait super.afterEach()\n\n\t\tawait this.organizationFixture?.clearAllOrgs()\n\t\tawait this.mercuryFixture?.disconnectAll()\n\n\t\tthis.clearFixtures()\n\n\t\tif (this._ui?.isWaitingForInput()) {\n\t\t\tthrow new Error(\n\t\t\t\t`Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.`\n\t\t\t)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.cwd) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.cwd)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.homeDir) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.homeDir)\n\t\t}\n\t}\n\n\tprotected static async afterAll() {\n\t\tawait super.afterAll()\n\t\tif (testUtil.shouldCleanupTestSkillDirs()) {\n\t\t\tFeatureFixture.deleteOldSkillDirs()\n\t\t}\n\t}\n\n\tprivate static async cleanTestDirsAndFiles() {\n\t\tconst pattern = this.resolveTestPath('**/*.d.ts')\n\t\tconst matches = await globby(pattern)\n\n\t\tfor (const match of matches) {\n\t\t\tdiskUtil.deleteFile(match)\n\t\t}\n\t}\n\n\tprivate static clearFixtures() {\n\t\tthis.emitter = undefined\n\t\tthis.mercuryFixture = undefined\n\t\tthis.organizationFixture = undefined\n\t\tthis.personFixture = undefined\n\t\tthis.skillFixture = undefined\n\t\tthis.viewFixture = undefined\n\t}\n\n\tprotected static freshTmpDir() {\n\t\tconst tmpDirectory = testUtil.resolveTestDir(uuid.v4())\n\t\tfs.ensureDirSync(tmpDirectory)\n\t\treturn tmpDirectory\n\t}\n\n\tprotected static get ui() {\n\t\tif (!this._ui) {\n\t\t\tthis._ui = new SpyInterface()\n\t\t}\n\n\t\treturn this._ui\n\t}\n\n\tprotected static getEmitter() {\n\t\tif (!this.emitter) {\n\t\t\tthis.emitter = CliGlobalEmitter.Emitter()\n\t\t}\n\t\treturn this.emitter\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUtil.join(\n\t\t\tthis.cliRoot,\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n\n\tprotected static async Cli(options?: CliBootOptions) {\n\t\treturn this.FeatureFixture(options).Cli({\n\t\t\tcwd: this.cwd,\n\t\t\thomeDir: this.homeDir,\n\t\t\t...(options ?? {}),\n\t\t})\n\t}\n\n\tprotected static async linkLocalPackages() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tawait fixture.linkLocalPackages()\n\t}\n\n\tprotected static Service<S extends Service>(\n\t\ttype: S,\n\t\tcwd?: string\n\t): ServiceMap[S] {\n\t\tconst sf = this.ServiceFactory()\n\t\treturn sf.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected static ServiceFactory() {\n\t\treturn new ServiceFactory()\n\t}\n\n\tprotected static FeatureFixture(options?: Partial<FeatureFixtureOptions>) {\n\t\tconst emitter = options?.emitter ?? this.getEmitter()\n\n\t\treturn new FeatureFixture({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory: this.ServiceFactory(),\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tfeatureInstaller: this.getFeatureInstaller({ emitter }),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static getMercuryFixture() {\n\t\tif (!this.mercuryFixture) {\n\t\t\tthis.mercuryFixture = new MercuryFixture(this.cwd, this.ServiceFactory())\n\t\t}\n\n\t\treturn this.mercuryFixture\n\t}\n\n\tprotected static get people() {\n\t\tif (!this.personFixture) {\n\t\t\tthis.personFixture = new PersonFixture(\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.personFixture\n\t}\n\n\tprotected static getViewFixture() {\n\t\tif (!this.viewFixture) {\n\t\t\tconst writerFactory = this.WriterFactory()\n\n\t\t\tconst viewWriter = writerFactory.Writer('view', { fileDescriptions: [] })\n\t\t\tthis.viewFixture = new ViewFixture(\n\t\t\t\tthis.cwd,\n\t\t\t\tviewWriter,\n\t\t\t\tthis.Action('view', 'sync')\n\t\t\t)\n\t\t}\n\n\t\treturn this.viewFixture\n\t}\n\n\tprivate static WriterFactory() {\n\t\treturn new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui: this.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t})\n\t}\n\n\tprotected static async skipInstallSkillPrompts<\n\t\tE extends () => Promise<FeatureActionResponse>\n\t>(\n\t\texecute?: E\n\t): Promise<E extends undefined ? undefined : FeatureActionResponse> {\n\t\tconst promise = execute?.()\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('n')\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\treturn results as any\n\t}\n\n\tprotected static getOrganizationFixture() {\n\t\tif (!this.organizationFixture) {\n\t\t\tthis.organizationFixture = new OrganizationFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.organizationFixture\n\t}\n\n\tprotected static getSkillFixture() {\n\t\tif (!this.skillFixture) {\n\t\t\tthis.skillFixture = new SkillFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory(),\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.skillFixture\n\t}\n\n\tprotected static resolveHashSprucePath(...filePath: string[]) {\n\t\treturn diskUtil.resolveHashSprucePath(this.cwd, ...filePath)\n\t}\n\n\tprotected static getFeatureInstaller(options?: Partial<FeatureOptions>) {\n\t\tif (!this.featureInstaller) {\n\t\t\tconst serviceFactory = this.ServiceFactory()\n\t\t\tconst storeFactory = this.StoreFactory(options)\n\t\t\tconst emitter = this.getEmitter()\n\t\t\tconst apiClientFactory = this.getMercuryFixture().getApiClientFactory()\n\n\t\t\tconst actionExecuter = this.ActionExecuter()\n\n\t\t\tthis.featureInstaller = FeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui: this.ui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t\t...options,\n\t\t\t})\n\t\t}\n\n\t\treturn this.featureInstaller\n\t}\n\n\tprotected static StoreFactory(options?: Partial<StoreFactoryOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\n\t\treturn new StoreFactory({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: this.homeDir,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\temitter: this.getEmitter(),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.StoreFactory().Store(code, {\n\t\t\tcwd: this.cwd,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static async waitForInput() {\n\t\treturn this.ui.waitForInput()\n\t}\n\n\tprotected static async assertIsFeatureInstalled(code: FeatureCode) {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\t\tconst isInstalled = await featureInstaller.isInstalled(code)\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\tprotected static async assertValidActionResponseFiles(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tfor (const file of results.files ?? []) {\n\t\t\tconst checker = this.Service('typeChecker')\n\t\t\tawait checker.check(file.path)\n\t\t}\n\n\t\t// await Promise.all(\n\t\t// \t(results.files ?? []).map((file) => {\n\t\t// \t\tconst checker = this.Service('typeChecker')\n\t\t// \t\treturn checker.check(file.path)\n\t\t// \t})\n\t\t// )\n\t}\n\n\tprotected static async connectToApi(options?: ApiClientFactoryOptions) {\n\t\treturn this.getMercuryFixture().connectToApi(options)\n\t}\n\n\tprotected static async openInVsCode(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Action('vscode', 'setup').execute({ all: true })\n\n\t\tawait this.Service('command').execute(\n\t\t\t`code ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static async openInFinder(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Service('command').execute(\n\t\t\t`open ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static log(...args: any[]) {\n\t\ttestUtil.log(...args)\n\t}\n\n\tprotected static Action<\n\t\tAction extends AbstractAction = AbstractAction,\n\t\tF extends FeatureCode = FeatureCode\n\t>(featureCode: F, actionCode: string, options?: ExecuterOptions): Action {\n\t\tconst executer = this.ActionExecuter({\n\t\t\tshouldThrowOnListenerError: true,\n\t\t\t...options,\n\t\t}).Action(featureCode, actionCode)\n\n\t\treturn executer as any\n\t}\n\n\tprotected static ActionExecuter(options?: ExecuterOptions) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\t\tconst writerFactory = this.WriterFactory()\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\twriterFactory,\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory: this.StoreFactory(),\n\t\t\ttemplates,\n\t\t\toptionOverrides: {\n\t\t\t\t'sync.schemas': {\n\t\t\t\t\tshouldInstallMissingDependencies: true,\n\t\t\t\t},\n\t\t\t\t...options?.optionOverrides,\n\t\t\t},\n\t\t})\n\n\t\tconst executer = new ActionExecuter({\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tactionFactory,\n\t\t\tfeatureInstallerFactory: () => {\n\t\t\t\treturn this.getFeatureInstaller()\n\t\t\t},\n\t\t\tshouldAutoHandleDependencies: false,\n\t\t\t...options,\n\t\t})\n\n\t\treturn executer\n\t}\n\n\tprotected static selectOptionBasedOnLabel(label: string) {\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel,\n\t\t})\n\n\t\tconst match = last.options.options.choices.find(\n\t\t\t(o: any) => o.label === label\n\t\t)\n\n\t\tvoid this.ui.sendInput(`${match.value}`)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AAGA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAQA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;IAM8BA,e;;;;;;;;;;;;;qGAe7B;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA,OAEO,KAAKC,qBAAL,EAFP;;cAAA;gBAICC,uBAAA,CAAYC,cAAZ;;gBAEAC,yBAAA,CAAcC,WAAd,CAA0BC,0BAAA,CAASC,mBAAT,EAA1B;;gBACAH,yBAAA,CAAcI,aAAd;;gBAEAC,OAAO,CAACC,GAAR,CAAYC,4BAAZ,GAA2C,OAA3C;gBAEA,KAAKC,WAAL,qBAAwBH,OAAO,CAACC,GAAhC;;cAXD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;sGAcA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAGC;gBACAD,OAAO,CAACC,GAAR,qBAAmB,KAAKE,WAAxB;;gBAEAC,gBAAA,CAASC,aAAT;;gBAEAC,sBAAA,CAAeC,WAAf,GAA6BC,gBAA7B;;gBAEA,KAAKC,GAAL,GAAW,KAAKC,WAAL,EAAX;gBACA,KAAKC,OAAL,GAAe,KAAKD,WAAL,EAAf;gBAEA,KAAKE,OAAL,GAAeC,SAAf;gBACA,KAAKC,gBAAL,GAAwBD,SAAxB;;gBAEAE,2BAAA,CAAgBC,WAAhB,CAA4BnB,0BAAA,CAASC,mBAAT,EAA5B;;gBAEA,KAAKmB,EAAL,CAAQC,KAAR;gBACA,KAAKD,EAAL,CAAQE,WAAR,GAAsB,EAAtB;gBACA,KAAKF,EAAL,CAAQG,iBAAR,CAA0B;kBAAEC,CAAC,EAAE,CAAL;kBAAQC,CAAC,EAAE;gBAAX,CAA1B;gBAEA,KAAKC,aAAL;;gBAEA5B,yBAAA,CAAc6B,UAAd;;gBACAC,sBAAA,CAAWC,iBAAX;;gBACAC,sBAAA,CAAWH,UAAX;;gBACAI,0BAAA,CAAeC,kBAAf;;gBACAC,mCAAA,CAAqBZ,KAArB;;gBACAY,mCAAA,CAAqBC,aAArB,CAAmC,KAAnC;;gBAEA,KAAKC,YAAL,GAAoB,IAAIC,wBAAJ,EAApB;;cA/BD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;qGAkCA;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA,gCAGO,KAAKC,mBAHZ,0DAGO,sBAA0BC,YAA1B,EAHP;;cAAA;gBAAA;gBAAA,+BAIO,KAAKC,cAJZ,yDAIO,qBAAqBC,aAArB,EAJP;;cAAA;gBAMC,KAAKd,aAAL;;gBAND,mBAQK,KAAKe,GARV,sCAQK,UAAUC,iBAAV,EARL;kBAAA;kBAAA;gBAAA;;gBAAA,MASQ,IAAIC,KAAJ,sHATR;;cAAA;gBAcC,IAAI3C,0BAAA,CAAS4C,YAAT,CAAsB,KAAKhC,GAA3B,KAAmCL,gBAAA,CAASsC,gBAAT,EAAvC,EAAoE;kBACnE7C,0BAAA,CAAS8C,SAAT,CAAmB,KAAKlC,GAAxB;gBACA;;gBAED,IAAIZ,0BAAA,CAAS4C,YAAT,CAAsB,KAAK9B,OAA3B,KAAuCP,gBAAA,CAASsC,gBAAT,EAA3C,EAAwE;kBACvE7C,0BAAA,CAAS8C,SAAT,CAAmB,KAAKhC,OAAxB;gBACA;;cApBF;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;oGAuBA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAEC,IAAIP,gBAAA,CAASwC,0BAAT,EAAJ,EAA2C;kBAC1CC,2BAAA,CAAeC,kBAAf;gBACA;;cAJF;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;iHAOA;QAAA;;QAAA;UAAA;YAAA;cAAA;gBACOC,OADP,GACiB,KAAKC,eAAL,CAAqB,WAArB,CADjB;gBAAA;gBAAA,OAEuB,IAAAC,kBAAA,EAAOF,OAAP,CAFvB;;cAAA;gBAEOG,OAFP;gBAAA,uCAIqBA,OAJrB;;gBAAA;kBAIC,oDAA6B;oBAAlBC,KAAkB;;oBAC5BtD,0BAAA,CAASuD,UAAT,CAAoBD,KAApB;kBACA;gBANF;kBAAA;gBAAA;kBAAA;gBAAA;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WASA,yBAA+B;MAC9B,KAAKvC,OAAL,GAAeC,SAAf;MACA,KAAKuB,cAAL,GAAsBvB,SAAtB;MACA,KAAKqB,mBAAL,GAA2BrB,SAA3B;MACA,KAAKwC,aAAL,GAAqBxC,SAArB;MACA,KAAKyC,YAAL,GAAoBzC,SAApB;MACA,KAAK0C,WAAL,GAAmB1C,SAAnB;IACA;;;WAED,uBAA+B;MAC9B,IAAM2C,YAAY,GAAGpD,gBAAA,CAASqD,cAAT,CAAwBC,IAAI,CAACC,EAAL,EAAxB,CAArB;;MACAC,mBAAA,CAAGC,aAAH,CAAiBL,YAAjB;;MACA,OAAOA,YAAP;IACA;;;SAED,eAA0B;MACzB,IAAI,CAAC,KAAKlB,GAAV,EAAe;QACd,KAAKA,GAAL,GAAW,IAAIwB,wBAAJ,EAAX;MACA;;MAED,OAAO,KAAKxB,GAAZ;IACA;;;WAED,sBAA8B;MAC7B,IAAI,CAAC,KAAK1B,OAAV,EAAmB;QAClB,KAAKA,OAAL,GAAemD,yBAAA,CAAiBC,OAAjB,EAAf;MACA;;MACD,OAAO,KAAKpD,OAAZ;IACA;;;WAED,2BAAyE;MAAA,kCAArCqD,yBAAqC;QAArCA,yBAAqC;MAAA;;MACxE,OAAOC,gBAAA,CAASC,IAAT,OAAAD,gBAAA,GACN,KAAKE,OADC,EAEN,WAFM,EAGN,kBAHM,SAIHH,yBAJG,EAAP;IAMA;;;;+FAED,kBAA2BI,OAA3B;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACQ,KAAKxB,cAAL,CAAoBwB,OAApB,EAA6BC,GAA7B;kBACN7D,GAAG,EAAE,KAAKA,GADJ;kBAENE,OAAO,EAAE,KAAKA;gBAFR,GAGF0D,OAHE,aAGFA,OAHE,cAGFA,OAHE,GAGS,EAHT,EADR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;6GAQA;QAAA;QAAA;UAAA;YAAA;cAAA;gBACOE,OADP,GACiB,KAAK1B,cAAL,EADjB;gBAAA;gBAAA,OAEO0B,OAAO,CAACC,iBAAR,EAFP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;;;;;;;;;;MAKA,UACCC,IADD,EAEChE,GAFD,EAGiB;MAChB,IAAMiE,EAAE,GAAG,KAAKC,cAAL,EAAX;MACA,OAAOD,EAAE,CAACE,OAAH,CAAWnE,GAAX,aAAWA,GAAX,cAAWA,GAAX,GAAkB,KAAKA,GAAvB,EAA4BgE,IAA5B,CAAP;IACA,C;;;WAED,0BAAkC;MACjC,OAAO,IAAIE,2BAAJ,EAAP;IACA;;;WAED,wBAAgCN,OAAhC,EAA0E;MAAA;;MACzE,IAAMzD,OAAO,uBAAGyD,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEzD,OAAZ,+DAAuB,KAAKiE,UAAL,EAApC;MAEA,OAAO,IAAIhC,2BAAJ;QACNpC,GAAG,EAAE,KAAKA,GADJ;QAENqE,cAAc,EAAE,KAAKH,cAAL,EAFV;QAGN1D,EAAE,EAAE,KAAKA,EAHH;QAINL,OAAO,EAAPA,OAJM;QAKNmE,gBAAgB,EAAE,KAAKC,iBAAL,GAAyBC,mBAAzB,EALZ;QAMNnE,gBAAgB,EAAE,KAAKoE,mBAAL,CAAyB;UAAEtE,OAAO,EAAPA;QAAF,CAAzB;MANZ,GAOHyD,OAPG,EAAP;IASA;;;WAED,6BAAqC;MACpC,IAAI,CAAC,KAAKjC,cAAV,EAA0B;QACzB,KAAKA,cAAL,GAAsB,IAAI+C,0BAAJ,CAAmB,KAAK1E,GAAxB,EAA6B,KAAKkE,cAAL,EAA7B,CAAtB;MACA;;MAED,OAAO,KAAKvC,cAAZ;IACA;;;SAED,eAA8B;MAC7B,IAAI,CAAC,KAAKiB,aAAV,EAAyB;QACxB,KAAKA,aAAL,GAAqB,IAAI+B,yBAAJ,CACpB,KAAKJ,iBAAL,GAAyBC,mBAAzB,EADoB,CAArB;MAGA;;MAED,OAAO,KAAK5B,aAAZ;IACA;;;WAED,0BAAkC;MACjC,IAAI,CAAC,KAAKE,WAAV,EAAuB;QACtB,IAAM8B,aAAa,GAAG,KAAKC,aAAL,EAAtB;QAEA,IAAMC,UAAU,GAAGF,aAAa,CAACG,MAAd,CAAqB,MAArB,EAA6B;UAAEC,gBAAgB,EAAE;QAApB,CAA7B,CAAnB;QACA,KAAKlC,WAAL,GAAmB,IAAImC,uBAAJ,CAClB,KAAKjF,GADa,EAElB8E,UAFkB,EAGlB,KAAKI,MAAL,CAAY,MAAZ,EAAoB,MAApB,CAHkB,CAAnB;MAKA;;MAED,OAAO,KAAKpC,WAAZ;IACA;;;WAED,yBAA+B;MAC9B,OAAO,IAAI+B,0BAAJ,CAAkB;QACxBM,SAAS,EAATA,0BADwB;QAExB3E,EAAE,EAAE,KAAKA,EAFe;QAGxB4E,QAAQ,EAAE,KAAKjB,OAAL,CAAa,UAAb;MAHc,CAAlB,CAAP;IAKA;;;;mHAED,kBAGCkB,OAHD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAKOC,OALP,GAKiBD,OALjB,aAKiBA,OALjB,uBAKiBA,OAAO,EALxB;gBAAA;gBAAA,OAOO,KAAKE,YAAL,EAPP;;cAAA;gBAAA;gBAAA,OAQO,KAAK/E,EAAL,CAAQgF,SAAR,CAAkB,GAAlB,CARP;;cAAA;gBAAA;gBAAA,OAUO,KAAKD,YAAL,EAVP;;cAAA;gBAAA;gBAAA,OAWO,KAAK/E,EAAL,CAAQgF,SAAR,CAAkB,EAAlB,CAXP;;cAAA;gBAAA;gBAAA,OAauBF,OAbvB;;cAAA;gBAaOG,OAbP;gBAAA,kCAeQA,OAfR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAkBA,kCAA0C;MACzC,IAAI,CAAC,KAAKhE,mBAAV,EAA+B;QAC9B,KAAKA,mBAAL,GAA2B,IAAIiE,+BAAJ,CAC1B,KAAKC,MADqB,EAE1B,KAAKC,YAAL,EAF0B,CAA3B;MAIA;;MAED,OAAO,KAAKnE,mBAAZ;IACA;;;WAED,2BAAmC;MAClC,IAAI,CAAC,KAAKoB,YAAV,EAAwB;QACvB,KAAKA,YAAL,GAAoB,IAAIgD,wBAAJ,CACnB,KAAKF,MADc,EAEnB,KAAKC,YAAL,EAFmB,EAGnB,KAAKrB,iBAAL,GAAyBC,mBAAzB,EAHmB,CAApB;MAKA;;MAED,OAAO,KAAK3B,YAAZ;IACA;;;WAED,iCAA8D;MAAA,mCAApBiD,QAAoB;QAApBA,QAAoB;MAAA;;MAC7D,OAAO1G,0BAAA,CAAS2G,qBAAT,OAAA3G,0BAAA,GAA+B,KAAKY,GAApC,SAA4C8F,QAA5C,EAAP;IACA;;;WAED,6BAAqClC,OAArC,EAAwE;MACvE,IAAI,CAAC,KAAKvD,gBAAV,EAA4B;QAC3B,IAAMgE,cAAc,GAAG,KAAKH,cAAL,EAAvB;QACA,IAAM8B,YAAY,GAAG,KAAKJ,YAAL,CAAkBhC,OAAlB,CAArB;QACA,IAAMzD,OAAO,GAAG,KAAKiE,UAAL,EAAhB;QACA,IAAME,gBAAgB,GAAG,KAAKC,iBAAL,GAAyBC,mBAAzB,EAAzB;QAEA,IAAMyB,cAAc,GAAG,KAAKC,cAAL,EAAvB;QAEA,KAAK7F,gBAAL,GAAwB8F,mCAAA,CAAwBC,eAAxB;UACvBpG,GAAG,EAAE,KAAKA,GADa;UAEvBqE,cAAc,EAAdA,cAFuB;UAGvB2B,YAAY,EAAZA,YAHuB;UAIvBxF,EAAE,EAAE,KAAKA,EAJc;UAKvBL,OAAO,EAAPA,OALuB;UAMvBmE,gBAAgB,EAAhBA,gBANuB;UAOvB2B,cAAc,EAAdA;QAPuB,GAQpBrC,OARoB,EAAxB;MAUA;;MAED,OAAO,KAAKvD,gBAAZ;IACA;;;WAED,sBAA8BuD,OAA9B,EAAsE;MACrE,IAAMS,cAAc,GAAG,KAAKH,cAAL,EAAvB;MAEA,OAAO,IAAI0B,yBAAJ;QACN5F,GAAG,EAAE,KAAKA,GADJ;QAENqE,cAAc,EAAdA,cAFM;QAGNnE,OAAO,EAAE,KAAKA,OAHR;QAINoE,gBAAgB,EAAE,KAAKC,iBAAL,GAAyBC,mBAAzB,EAJZ;QAKNrE,OAAO,EAAE,KAAKiE,UAAL;MALH,GAMHR,OANG,EAAP;IAQA;;;WAED,eACCyC,IADD,EAECzC,OAFD,EAGe;MACd,OAAO,KAAKgC,YAAL,GAAoBU,KAApB,CAA0BD,IAA1B;QACNrG,GAAG,EAAE,KAAKA;MADJ,GAEH4D,OAFG,EAAP;IAIA;;;;wGAED;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACQ,KAAKpD,EAAL,CAAQ+E,YAAR,EADR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;oHAIA,mBAAgDc,IAAhD;QAAA;QAAA;UAAA;YAAA;cAAA;gBACOhG,gBADP,GAC0B,KAAKoE,mBAAL,EAD1B;gBAAA;gBAAA,OAE2BpE,gBAAgB,CAACkG,WAAjB,CAA6BF,IAA7B,CAF3B;;cAAA;gBAEOE,WAFP;;gBAICC,iBAAA,CAAOC,MAAP,CAAcF,WAAd;;cAJD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;0HAOA,mBACCd,OADD;QAAA;;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA,0DAGoBA,OAAO,CAACiB,KAH5B,2DAGqC,EAHrC;gBAAA;;gBAAA;;cAAA;gBAAA;kBAAA;kBAAA;gBAAA;;gBAGYC,IAHZ;gBAIQC,OAJR,GAIkB,KAAKzC,OAAL,CAAa,aAAb,CAJlB;gBAAA;gBAAA,OAKQyC,OAAO,CAACC,KAAR,CAAcF,IAAI,CAACG,IAAnB,CALR;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;;gBAAA;;cAAA;gBAAA;;gBAAA;;gBAAA;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wGAgBA,mBAAoClD,OAApC;QAAA;UAAA;YAAA;cAAA;gBAAA,mCACQ,KAAKW,iBAAL,GAAyBwC,YAAzB,CAAsCnD,OAAtC,CADR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wGAIA,mBAAoCA,OAApC;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAKO,KAAKsB,MAAL,CAAY,QAAZ,EAAsB,OAAtB,EAA+BG,OAA/B,CAAuC;kBAAE2B,GAAG,EAAE;gBAAP,CAAvC,CALP;;cAAA;gBAAA;gBAAA,OAOO,KAAK7C,OAAL,CAAa,SAAb,EAAwBkB,OAAxB,yCACGzB,OADH,aACGA,OADH,uBACGA,OAAO,CAAE+C,IADZ,yDACoB/C,OADpB,aACoBA,OADpB,uBACoBA,OAAO,CAAEqD,GAD7B,uCACoC,KAAKjH,GADzC,EAPP;;cAAA;gBAAA;gBAAA,OAUO,KAAKkH,IAAL,qBAAUtD,OAAV,aAAUA,OAAV,uBAAUA,OAAO,CAAEuD,OAAnB,+DAA8B,QAA9B,CAVP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wGAaA,mBAAoCvD,OAApC;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAKO,KAAKO,OAAL,CAAa,SAAb,EAAwBkB,OAAxB,2CACGzB,OADH,aACGA,OADH,uBACGA,OAAO,CAAE+C,IADZ,2DACoB/C,OADpB,aACoBA,OADpB,uBACoBA,OAAO,CAAEqD,GAD7B,yCACoC,KAAKjH,GADzC,EALP;;cAAA;gBAAA;gBAAA,OAQO,KAAKkH,IAAL,sBAAUtD,OAAV,aAAUA,OAAV,uBAAUA,OAAO,CAAEuD,OAAnB,iEAA8B,QAA9B,CARP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAWA,eAAqC;MACpCxH,gBAAA,CAASyH,GAAT,OAAAzH,gBAAA;IACA;;;;;;;;;;;;;MAED,UAGE0H,WAHF,EAGkBC,UAHlB,EAGsC1D,OAHtC,EAGyE;MACxE,IAAM2D,QAAQ,GAAG,KAAKrB,cAAL;QAChBsB,0BAA0B,EAAE;MADZ,GAEb5D,OAFa,GAGdsB,MAHc,CAGPmC,WAHO,EAGMC,UAHN,CAAjB;MAKA,OAAOC,QAAP;IACA,C;;;WAED,wBAAgC3D,OAAhC,EAA2D;MAAA;;MAC1D,IAAMS,cAAc,GAAG,KAAKH,cAAL,EAAvB;MACA,IAAMU,aAAa,GAAG,KAAKC,aAAL,EAAtB;MAEA,IAAM1E,OAAO,GAAG,KAAKiE,UAAL,EAAhB;MAEA,IAAMqD,aAAa,GAAG,IAAIC,yBAAJ,CAAkB;QACvC9C,aAAa,EAAbA,aADuC;QAEvCpE,EAAE,EAAE,KAAKA,EAF8B;QAGvCL,OAAO,EAAPA,OAHuC;QAIvCmE,gBAAgB,EAAE,KAAKC,iBAAL,GAAyBC,mBAAzB,EAJqB;QAKvCxE,GAAG,EAAE,KAAKA,GAL6B;QAMvCqE,cAAc,EAAdA,cANuC;QAOvC2B,YAAY,EAAE,KAAKJ,YAAL,EAPyB;QAQvCT,SAAS,EAATA,0BARuC;QASvCwC,eAAe;UACd,gBAAgB;YACfC,gCAAgC,EAAE;UADnB;QADF,GAIXhE,OAJW,aAIXA,OAJW,uBAIXA,OAAO,CAAE+D,eAJE;MATwB,CAAlB,CAAtB;MAiBA,IAAMJ,QAAQ,GAAG,IAAIrB,2BAAJ;QAChB1F,EAAE,EAAE,KAAKA,EADO;QAEhBL,OAAO,EAAPA,OAFgB;QAGhBsH,aAAa,EAAbA,aAHgB;QAIhBI,uBAAuB,EAAE,mCAAM;UAC9B,OAAO,KAAI,CAACpD,mBAAL,EAAP;QACA,CANe;QAOhBqD,4BAA4B,EAAE;MAPd,GAQblE,OARa,EAAjB;MAWA,OAAO2D,QAAP;IACA;;;WAED,kCAA0CQ,KAA1C,EAAyD;MACxD,IAAMC,IAAI,GAAG,KAAKxH,EAAL,CAAQyH,iBAAR,EAAb;;MACAzB,iBAAA,CAAO0B,WAAP,CAAmBF,IAAI,CAACpE,OAAL,CAAaA,OAAb,CAAqBuE,OAAxC,EAAiD;QAChDJ,KAAK,EAALA;MADgD,CAAjD;;MAIA,IAAMrF,KAAK,GAAGsF,IAAI,CAACpE,OAAL,CAAaA,OAAb,CAAqBuE,OAArB,CAA6BC,IAA7B,CACb,UAACC,CAAD;QAAA,OAAYA,CAAC,CAACN,KAAF,KAAYA,KAAxB;MAAA,CADa,CAAd;MAIA,KAAK,KAAKvH,EAAL,CAAQgF,SAAR,WAAqB9C,KAAK,CAAC4F,KAA3B,EAAL;IACA;;;EAhboDC,qB;;;iCAAxBzJ,e,aACF2E,gBAAA,CAASC,IAAT,CAAc8E,SAAd,EAAyB,IAAzB,C;iCADE1J,e;iCAAAA,e;iCAAAA,e;iCAAAA,e;iCAAAA,e;iCAAAA,e;iCAAAA,e;iCAAAA,e;iCAAAA,e;iCAAAA,e;iCAAAA,e"}