@sprucelabs/spruce-cli 18.1.8 → 18.3.0

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 (362) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/.spruce/events/events.contract.d.ts +159 -0
  3. package/build/.spruce/events/events.contract.js +5 -1
  4. package/build/.spruce/events/events.contract.js.map +1 -1
  5. package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.d.ts +46 -0
  6. package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js +57 -0
  7. package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js.map +1 -0
  8. package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.d.ts +68 -0
  9. package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js +78 -0
  10. package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js.map +1 -0
  11. package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.d.ts +40 -0
  12. package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js +51 -0
  13. package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js.map +1 -0
  14. package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.d.ts +9 -0
  15. package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js +17 -0
  16. package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js.map +1 -0
  17. package/build/.spruce/schemas/schemas.types.d.ts +158 -55
  18. package/build/.spruce/schemas/schemas.types.js.map +1 -1
  19. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.d.ts +3 -0
  20. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js +70 -0
  21. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js.map +1 -0
  22. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.d.ts +3 -0
  23. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js +35 -0
  24. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js.map +1 -0
  25. package/build/.spruce/settings.json +2 -1
  26. package/build/GlobalEmitter.d.ts +13 -38
  27. package/build/GlobalEmitter.js +3 -6
  28. package/build/GlobalEmitter.js.map +1 -1
  29. package/build/__tests__/behavioral/TestingAConversation.test.d.ts +2 -1
  30. package/build/__tests__/behavioral/TestingAConversation.test.js +74 -84
  31. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  32. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +38 -13
  33. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  34. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
  35. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +16 -9
  36. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  37. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.d.ts +2 -2
  38. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +7 -7
  39. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
  40. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.d.ts +6 -0
  41. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js +85 -0
  42. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js.map +1 -0
  43. package/build/__tests__/behavioral/permissions/PermissionStore.test.d.ts +12 -2
  44. package/build/__tests__/behavioral/permissions/PermissionStore.test.js +248 -36
  45. package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
  46. package/build/__tests__/behavioral/permissions/PermissionWriter.test.d.ts +5 -0
  47. package/build/__tests__/behavioral/permissions/PermissionWriter.test.js +88 -0
  48. package/build/__tests__/behavioral/permissions/PermissionWriter.test.js.map +1 -0
  49. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.d.ts +15 -4
  50. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js +325 -28
  51. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
  52. package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.d.ts +11 -0
  53. package/build/__tests__/behavioral/permissions/{AbstractPermissionsTest.js → support/AbstractPermissionsTest.js} +34 -2
  54. package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.js.map +1 -0
  55. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.d.ts +1 -0
  56. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js +11 -0
  57. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js.map +1 -0
  58. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.d.ts +1 -0
  59. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js +17 -0
  60. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js.map +1 -0
  61. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.d.ts +5 -0
  62. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js +10 -0
  63. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js.map +1 -0
  64. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.d.ts +1 -1
  65. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +46 -46
  66. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  67. package/build/__tests__/behavioral/tests/CreatingATest.test.js +2 -2
  68. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  69. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +7 -3
  70. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  71. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +2 -2
  72. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  73. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +1 -1
  74. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  75. package/build/__tests__/implementation/ActionExecuter2.test.d.ts +1 -1
  76. package/build/__tests__/implementation/ActionExecuter2.test.js +23 -11
  77. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  78. package/build/__tests__/implementation/GlobalEmitter.test.d.ts +1 -0
  79. package/build/__tests__/implementation/GlobalEmitter.test.js +40 -3
  80. package/build/__tests__/implementation/GlobalEmitter.test.js.map +1 -1
  81. package/build/__tests__/implementation/SkillStore.test.js +3 -4
  82. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  83. package/build/__tests__/support/EventFaker.d.ts +5 -0
  84. package/build/__tests__/support/EventFaker.js +48 -0
  85. package/build/__tests__/support/EventFaker.js.map +1 -0
  86. package/build/features/AbstractAction.d.ts +1 -1
  87. package/build/features/AbstractAction.js.map +1 -1
  88. package/build/features/AbstractFeature.d.ts +3 -3
  89. package/build/features/AbstractFeature.js +8 -8
  90. package/build/features/AbstractFeature.js.map +1 -1
  91. package/build/features/ActionExecuter.d.ts +1 -1
  92. package/build/features/ActionExecuter.js +3 -4
  93. package/build/features/ActionExecuter.js.map +1 -1
  94. package/build/features/ActionFactory.d.ts +12 -5
  95. package/build/features/ActionFactory.js +27 -6
  96. package/build/features/ActionFactory.js.map +1 -1
  97. package/build/features/ActionQuestionAsker.d.ts +1 -1
  98. package/build/features/ActionQuestionAsker.js +6 -6
  99. package/build/features/ActionQuestionAsker.js.map +1 -1
  100. package/build/features/conversation/ConversationFeature.js +1 -1
  101. package/build/features/conversation/ConversationFeature.js.map +1 -1
  102. package/build/features/dependencies/DependencyFeature.js +1 -1
  103. package/build/features/dependencies/DependencyFeature.js.map +1 -1
  104. package/build/features/deploy/actions/HerokuAction.js +31 -33
  105. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  106. package/build/features/error/ErrorFeature.js +4 -4
  107. package/build/features/error/ErrorFeature.js.map +1 -1
  108. package/build/features/event/EventFeature.d.ts +8 -8
  109. package/build/features/event/EventFeature.js +7 -4
  110. package/build/features/event/EventFeature.js.map +1 -1
  111. package/build/features/event/actions/CreateAction.js.map +1 -1
  112. package/build/features/event/actions/ListenAction.js.map +1 -1
  113. package/build/features/event/stores/EventStore.d.ts +9 -9
  114. package/build/features/event/stores/EventStore.js +26 -26
  115. package/build/features/event/stores/EventStore.js.map +1 -1
  116. package/build/features/eventContract/EventContractFeature.js +4 -1
  117. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  118. package/build/features/eventContract/actions/PullAction.js +10 -5
  119. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  120. package/build/features/features.types.d.ts +2 -37
  121. package/build/features/features.types.js +0 -41
  122. package/build/features/features.types.js.map +1 -1
  123. package/build/features/log/LogFeature.js +1 -1
  124. package/build/features/log/LogFeature.js.map +1 -1
  125. package/build/features/node/NodeFeature.js.map +1 -1
  126. package/build/features/organization/actions/InstallAction.js.map +1 -1
  127. package/build/features/permission/PermissionFeature.d.ts +12 -2
  128. package/build/features/permission/PermissionFeature.js +140 -15
  129. package/build/features/permission/PermissionFeature.js.map +1 -1
  130. package/build/features/permission/actions/CreateAction.js +4 -1
  131. package/build/features/permission/actions/CreateAction.js.map +1 -1
  132. package/build/features/permission/actions/SyncAction.d.ts +5 -1
  133. package/build/features/permission/actions/SyncAction.js +28 -10
  134. package/build/features/permission/actions/SyncAction.js.map +1 -1
  135. package/build/features/permission/stores/PermissionStore.d.ts +7 -1
  136. package/build/features/permission/stores/PermissionStore.js +92 -23
  137. package/build/features/permission/stores/PermissionStore.js.map +1 -1
  138. package/build/features/permission/writers/PermissionWriter.d.ts +7 -1
  139. package/build/features/permission/writers/PermissionWriter.js +66 -17
  140. package/build/features/permission/writers/PermissionWriter.js.map +1 -1
  141. package/build/features/person/PersonFeature.js +1 -1
  142. package/build/features/person/PersonFeature.js.map +1 -1
  143. package/build/features/sandbox/SandboxFeature.js +1 -1
  144. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  145. package/build/features/schema/SchemaFeature.d.ts +8 -8
  146. package/build/features/schema/SchemaFeature.js +4 -4
  147. package/build/features/schema/SchemaFeature.js.map +1 -1
  148. package/build/features/schema/writers/SchemaWriter.d.ts +12 -12
  149. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  150. package/build/features/skill/SkillFeature.d.ts +11 -11
  151. package/build/features/skill/SkillFeature.js +2 -2
  152. package/build/features/skill/SkillFeature.js.map +1 -1
  153. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  154. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  155. package/build/features/skill/stores/SkillStore.js +1 -2
  156. package/build/features/skill/stores/SkillStore.js.map +1 -1
  157. package/build/features/store/StoreFeature.js +1 -1
  158. package/build/features/store/StoreFeature.js.map +1 -1
  159. package/build/features/store/actions/SyncAction.d.ts +1 -1
  160. package/build/features/store/actions/SyncAction.js.map +1 -1
  161. package/build/features/test/TestFeature.js +1 -1
  162. package/build/features/test/TestFeature.js.map +1 -1
  163. package/build/features/view/ViewFeature.js +1 -1
  164. package/build/features/view/ViewFeature.js.map +1 -1
  165. package/build/schemas/v2020_07_22/actionResponse.builder.d.ts +85 -0
  166. package/build/schemas/v2020_07_22/actionResponse.builder.js +70 -0
  167. package/build/schemas/v2020_07_22/actionResponse.builder.js.map +1 -0
  168. package/build/schemas/v2020_07_22/generatedFile.builder.d.ts +27 -0
  169. package/build/schemas/v2020_07_22/generatedFile.builder.js +45 -0
  170. package/build/schemas/v2020_07_22/generatedFile.builder.js.map +1 -0
  171. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js +4 -40
  172. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
  173. package/build/services/CommandService.d.ts +2 -2
  174. package/build/services/CommandService.js +6 -6
  175. package/build/services/CommandService.js.map +1 -1
  176. package/build/services/PkgService.d.ts +1 -0
  177. package/build/services/PkgService.js +5 -0
  178. package/build/services/PkgService.js.map +1 -1
  179. package/build/tests/AbstractCliTest.d.ts +7 -3
  180. package/build/tests/AbstractCliTest.js +81 -45
  181. package/build/tests/AbstractCliTest.js.map +1 -1
  182. package/build/tests/buildTestCache.js +7 -0
  183. package/build/tests/buildTestCache.js.map +1 -1
  184. package/build/tests/fixtures/FeatureFixture.js +1 -0
  185. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  186. package/build/tests/utilities/test.utility.d.ts +2 -0
  187. package/build/tests/utilities/test.utility.js +6 -0
  188. package/build/tests/utilities/test.utility.js.map +1 -1
  189. package/node_modules/@typescript-eslint/parser/package.json +6 -6
  190. package/node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js +9 -9
  191. package/node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js.map +1 -1
  192. package/node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.d.ts +1 -1
  193. package/node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.d.ts.map +1 -1
  194. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.d.ts.map +1 -1
  195. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.d.ts.map +1 -1
  196. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js +1 -0
  197. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js.map +1 -1
  198. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js +21 -7
  199. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js.map +1 -1
  200. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.d.ts.map +1 -1
  201. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.d.ts +3 -0
  202. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.d.ts.map +1 -0
  203. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.js +12 -0
  204. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.js.map +1 -0
  205. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.js +2 -1
  206. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.js.map +1 -1
  207. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts +1 -0
  208. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts.map +1 -1
  209. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js +2 -0
  210. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js.map +1 -1
  211. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.d.ts.map +1 -1
  212. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.d.ts.map +1 -1
  213. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.js +2 -0
  214. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.js.map +1 -1
  215. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js +39 -1
  216. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js.map +1 -1
  217. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts +4 -2
  218. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts.map +1 -1
  219. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js +13 -5
  220. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js.map +1 -1
  221. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ExportVisitor.d.ts +1 -1
  222. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ExportVisitor.d.ts.map +1 -1
  223. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.d.ts +2 -2
  224. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.d.ts.map +1 -1
  225. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js +9 -9
  226. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js.map +1 -1
  227. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.js +17 -17
  228. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.js.map +1 -1
  229. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts +2 -1
  230. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts.map +1 -1
  231. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js +3 -0
  232. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js.map +1 -1
  233. package/node_modules/@typescript-eslint/scope-manager/dist/scope/Scope.d.ts +1 -1
  234. package/node_modules/@typescript-eslint/scope-manager/dist/scope/Scope.d.ts.map +1 -1
  235. package/node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.d.ts +1 -1
  236. package/node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.d.ts.map +1 -1
  237. package/node_modules/@typescript-eslint/scope-manager/package.json +12 -12
  238. package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +27 -3
  239. package/node_modules/@typescript-eslint/types/_ts3.4/dist/lib.d.ts +1 -1
  240. package/node_modules/@typescript-eslint/types/_ts3.4/dist/parser-options.d.ts +3 -3
  241. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +27 -3
  242. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
  243. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js +3 -0
  244. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js.map +1 -1
  245. package/node_modules/@typescript-eslint/types/dist/lib.d.ts +1 -1
  246. package/node_modules/@typescript-eslint/types/dist/lib.d.ts.map +1 -1
  247. package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts +3 -3
  248. package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts.map +1 -1
  249. package/node_modules/@typescript-eslint/types/package.json +3 -3
  250. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/create-program/shared.d.ts +1 -1
  251. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parseSettings/index.d.ts +2 -2
  252. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parser-options.d.ts +1 -1
  253. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parser.d.ts +1 -1
  254. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/simple-traverse.d.ts +1 -1
  255. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/estree-to-ts-node-types.d.ts +4 -1
  256. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/ts-nodes.d.ts +4 -2
  257. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
  258. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +22 -3
  259. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
  260. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.d.ts.map +1 -1
  261. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js +9 -0
  262. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js.map +1 -1
  263. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.d.ts +1 -1
  264. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.d.ts.map +1 -1
  265. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/index.d.ts +2 -2
  266. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/index.d.ts.map +1 -1
  267. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js +1 -1
  268. package/node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts +1 -1
  269. package/node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts.map +1 -1
  270. package/node_modules/@typescript-eslint/typescript-estree/dist/parser.d.ts +1 -1
  271. package/node_modules/@typescript-eslint/typescript-estree/dist/parser.d.ts.map +1 -1
  272. package/node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.d.ts +1 -1
  273. package/node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.d.ts.map +1 -1
  274. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts +4 -1
  275. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts.map +1 -1
  276. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts +4 -2
  277. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts.map +1 -1
  278. package/node_modules/@typescript-eslint/typescript-estree/package.json +6 -6
  279. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.d.ts.map +1 -1
  280. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js +63 -48
  281. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js.map +1 -1
  282. package/node_modules/@typescript-eslint/visitor-keys/package.json +4 -4
  283. package/package.json +65 -33
  284. package/src/.spruce/events/events.contract.ts +24 -0
  285. package/src/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.ts +54 -0
  286. package/src/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.ts +79 -0
  287. package/src/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.ts +48 -0
  288. package/src/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.ts +13 -0
  289. package/src/.spruce/schemas/schemas.types.ts +171 -52
  290. package/src/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.ts +58 -0
  291. package/src/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.ts +33 -0
  292. package/src/.spruce/settings.json +2 -1
  293. package/src/GlobalEmitter.ts +2 -7
  294. package/src/__tests__/behavioral/TestingAConversation.test.ts +20 -37
  295. package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +14 -2
  296. package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
  297. package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +2 -2
  298. package/src/__tests__/behavioral/permissions/PermissionPlugin.test.ts +24 -0
  299. package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +204 -23
  300. package/src/__tests__/behavioral/permissions/PermissionWriter.test.ts +23 -0
  301. package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +125 -8
  302. package/src/__tests__/behavioral/permissions/support/AbstractPermissionsTest.ts +38 -0
  303. package/src/__tests__/behavioral/permissions/support/generateShortAlphaId.ts +5 -0
  304. package/src/__tests__/behavioral/permissions/support/renderPermissionTestFile.ts +27 -0
  305. package/src/__tests__/behavioral/permissions/support/sortPermissionContracts.ts +3 -0
  306. package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +12 -12
  307. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -2
  308. package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +3 -0
  309. package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +3 -2
  310. package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
  311. package/src/__tests__/implementation/ActionExecuter2.test.ts +13 -6
  312. package/src/__tests__/implementation/GlobalEmitter.test.ts +22 -1
  313. package/src/__tests__/implementation/SkillStore.test.ts +1 -2
  314. package/src/__tests__/support/EventFaker.ts +23 -0
  315. package/src/features/AbstractAction.ts +2 -2
  316. package/src/features/AbstractFeature.ts +8 -8
  317. package/src/features/ActionExecuter.ts +4 -5
  318. package/src/features/ActionFactory.ts +44 -20
  319. package/src/features/ActionQuestionAsker.ts +17 -17
  320. package/src/features/conversation/ConversationFeature.ts +1 -1
  321. package/src/features/dependencies/DependencyFeature.ts +1 -1
  322. package/src/features/deploy/actions/HerokuAction.ts +2 -2
  323. package/src/features/error/ErrorFeature.ts +4 -4
  324. package/src/features/event/EventFeature.ts +15 -14
  325. package/src/features/event/actions/CreateAction.ts +1 -1
  326. package/src/features/event/actions/ListenAction.ts +1 -1
  327. package/src/features/event/stores/EventStore.ts +37 -37
  328. package/src/features/eventContract/EventContractFeature.ts +6 -1
  329. package/src/features/eventContract/actions/PullAction.ts +7 -3
  330. package/src/features/features.types.ts +4 -41
  331. package/src/features/log/LogFeature.ts +1 -1
  332. package/src/features/node/NodeFeature.ts +1 -1
  333. package/src/features/organization/actions/InstallAction.ts +1 -1
  334. package/src/features/permission/PermissionFeature.ts +66 -11
  335. package/src/features/permission/actions/CreateAction.ts +2 -0
  336. package/src/features/permission/actions/SyncAction.ts +22 -3
  337. package/src/features/permission/stores/PermissionStore.ts +44 -3
  338. package/src/features/permission/writers/PermissionWriter.ts +64 -3
  339. package/src/features/person/PersonFeature.ts +1 -1
  340. package/src/features/sandbox/SandboxFeature.ts +1 -3
  341. package/src/features/schema/SchemaFeature.ts +14 -14
  342. package/src/features/schema/writers/SchemaWriter.ts +14 -15
  343. package/src/features/skill/SkillFeature.ts +18 -18
  344. package/src/features/skill/actions/RebuildAction.ts +1 -1
  345. package/src/features/skill/actions/RegisterAction.ts +1 -1
  346. package/src/features/skill/stores/SkillStore.ts +1 -2
  347. package/src/features/store/StoreFeature.ts +1 -1
  348. package/src/features/store/actions/SyncAction.ts +1 -1
  349. package/src/features/test/TestFeature.ts +1 -1
  350. package/src/features/view/ViewFeature.ts +1 -1
  351. package/src/schemas/v2020_07_22/actionResponse.builder.ts +62 -0
  352. package/src/schemas/v2020_07_22/generatedFile.builder.ts +44 -0
  353. package/src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts +3 -46
  354. package/src/services/CommandService.ts +5 -5
  355. package/src/services/PkgService.ts +4 -0
  356. package/src/tests/AbstractCliTest.ts +31 -13
  357. package/src/tests/buildTestCache.ts +7 -0
  358. package/src/tests/fixtures/FeatureFixture.ts +2 -0
  359. package/src/tests/utilities/test.utility.ts +13 -0
  360. package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.d.ts +0 -8
  361. package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.js.map +0 -1
  362. package/src/__tests__/behavioral/permissions/AbstractPermissionsTest.ts +0 -20
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _schema = require("@sprucelabs/schema");
8
+ var generatedFileBuilder = (0, _schema.buildSchema)({
9
+ id: 'generatedFile',
10
+ fields: {
11
+ name: {
12
+ type: 'text',
13
+ isRequired: true
14
+ },
15
+ path: {
16
+ type: 'text',
17
+ isRequired: true
18
+ },
19
+ description: {
20
+ type: 'text'
21
+ },
22
+ action: {
23
+ type: 'select',
24
+ isRequired: true,
25
+ options: {
26
+ choices: [{
27
+ label: 'Skipped',
28
+ value: 'skipped'
29
+ }, {
30
+ label: 'Generated',
31
+ value: 'generated'
32
+ }, {
33
+ label: 'Updated',
34
+ value: 'updated'
35
+ }, {
36
+ label: 'Deleted',
37
+ value: 'deleted'
38
+ }]
39
+ }
40
+ }
41
+ }
42
+ });
43
+ var _default = generatedFileBuilder;
44
+ exports["default"] = _default;
45
+ //# sourceMappingURL=generatedFile.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatedFile.builder.js","names":["generatedFileBuilder","buildSchema","id","fields","name","type","isRequired","path","description","action","options","choices","label","value"],"sources":["../../../src/schemas/v2020_07_22/generatedFile.builder.ts"],"sourcesContent":["import { buildSchema } from '@sprucelabs/schema'\n\nconst generatedFileBuilder = buildSchema({\n\tid: 'generatedFile',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tpath: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: 'text',\n\t\t},\n\t\taction: {\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Skipped',\n\t\t\t\t\t\tvalue: 'skipped',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Generated',\n\t\t\t\t\t\tvalue: 'generated',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Updated',\n\t\t\t\t\t\tvalue: 'updated',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Deleted',\n\t\t\t\t\t\tvalue: 'deleted',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n})\n\nexport default generatedFileBuilder\n"],"mappings":";;;;;;AAAA;AAEA,IAAMA,oBAAoB,GAAG,IAAAC,mBAAW,EAAC;EACxCC,EAAE,EAAE,eAAe;EACnBC,MAAM,EAAE;IACPC,IAAI,EAAE;MACLC,IAAI,EAAE,MAAM;MACZC,UAAU,EAAE;IACb,CAAC;IACDC,IAAI,EAAE;MACLF,IAAI,EAAE,MAAM;MACZC,UAAU,EAAE;IACb,CAAC;IACDE,WAAW,EAAE;MACZH,IAAI,EAAE;IACP,CAAC;IACDI,MAAM,EAAE;MACPJ,IAAI,EAAE,QAAQ;MACdC,UAAU,EAAE,IAAI;MAChBI,OAAO,EAAE;QACRC,OAAO,EAAE,CACR;UACCC,KAAK,EAAE,SAAS;UAChBC,KAAK,EAAE;QACR,CAAC,EACD;UACCD,KAAK,EAAE,WAAW;UAClBC,KAAK,EAAE;QACR,CAAC,EACD;UACCD,KAAK,EAAE,SAAS;UAChBC,KAAK,EAAE;QACR,CAAC,EACD;UACCD,KAAK,EAAE,SAAS;UAChBC,KAAK,EAAE;QACR,CAAC;MAEH;IACD;EACD;AACD,CAAC,CAAC;AAAA,eAEab,oBAAoB;AAAA"}
@@ -1,45 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports["default"] = void 0;
7
8
  var _schema = require("@sprucelabs/schema");
8
- var fieldsSchema = (0, _schema.buildSchema)({
9
- id: 'generatedFileFields',
10
- fields: {
11
- name: {
12
- type: 'text',
13
- isRequired: true
14
- },
15
- path: {
16
- type: 'text',
17
- isRequired: true
18
- },
19
- description: {
20
- type: 'text'
21
- },
22
- action: {
23
- type: 'select',
24
- isRequired: true,
25
- options: {
26
- choices: [{
27
- label: 'Skipped',
28
- value: 'skipped'
29
- }, {
30
- label: 'Generated',
31
- value: 'generated'
32
- }, {
33
- label: 'Updated',
34
- value: 'updated'
35
- }, {
36
- label: 'Deleted',
37
- value: 'deleted'
38
- }]
39
- }
40
- }
41
- }
42
- });
9
+ var _generatedFile = _interopRequireDefault(require("./generatedFile.builder"));
43
10
  var _default = (0, _schema.buildSchema)({
44
11
  id: 'watcherDidDetectChangesEmitPayload',
45
12
  name: 'Watcher did detect changes emit payload',
@@ -49,12 +16,9 @@ var _default = (0, _schema.buildSchema)({
49
16
  isRequired: true,
50
17
  isArray: true,
51
18
  options: {
52
- schemas: [(0, _schema.buildSchema)({
53
- id: 'generatedFile',
54
- fields: fieldsSchema.fields
55
- }), (0, _schema.buildSchema)({
19
+ schemas: [_generatedFile["default"], (0, _schema.buildSchema)({
56
20
  id: 'generatedDir',
57
- fields: fieldsSchema.fields
21
+ fields: _generatedFile["default"].fields
58
22
  })]
59
23
  }
60
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"watcherDidDetectChangesEmitPayload.builder.js","names":["fieldsSchema","buildSchema","id","fields","name","type","isRequired","path","description","action","options","choices","label","value","changes","isArray","schemas"],"sources":["../../../src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts"],"sourcesContent":["import { buildSchema } from '@sprucelabs/schema'\n\nconst fieldsSchema = buildSchema({\n\tid: 'generatedFileFields',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tpath: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: 'text',\n\t\t},\n\t\taction: {\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Skipped',\n\t\t\t\t\t\tvalue: 'skipped',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Generated',\n\t\t\t\t\t\tvalue: 'generated',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Updated',\n\t\t\t\t\t\tvalue: 'updated',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Deleted',\n\t\t\t\t\t\tvalue: 'deleted',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n})\n\nexport default buildSchema({\n\tid: 'watcherDidDetectChangesEmitPayload',\n\tname: 'Watcher did detect changes emit payload',\n\tfields: {\n\t\tchanges: {\n\t\t\ttype: 'schema',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tschemas: [\n\t\t\t\t\tbuildSchema({\n\t\t\t\t\t\tid: 'generatedFile',\n\t\t\t\t\t\tfields: fieldsSchema.fields,\n\t\t\t\t\t}),\n\t\t\t\t\tbuildSchema({\n\t\t\t\t\t\tid: 'generatedDir',\n\t\t\t\t\t\tfields: fieldsSchema.fields,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;AAAA;AAEA,IAAMA,YAAY,GAAG,IAAAC,mBAAW,EAAC;EAChCC,EAAE,EAAE,qBAAqB;EACzBC,MAAM,EAAE;IACPC,IAAI,EAAE;MACLC,IAAI,EAAE,MAAM;MACZC,UAAU,EAAE;IACb,CAAC;IACDC,IAAI,EAAE;MACLF,IAAI,EAAE,MAAM;MACZC,UAAU,EAAE;IACb,CAAC;IACDE,WAAW,EAAE;MACZH,IAAI,EAAE;IACP,CAAC;IACDI,MAAM,EAAE;MACPJ,IAAI,EAAE,QAAQ;MACdC,UAAU,EAAE,IAAI;MAChBI,OAAO,EAAE;QACRC,OAAO,EAAE,CACR;UACCC,KAAK,EAAE,SAAS;UAChBC,KAAK,EAAE;QACR,CAAC,EACD;UACCD,KAAK,EAAE,WAAW;UAClBC,KAAK,EAAE;QACR,CAAC,EACD;UACCD,KAAK,EAAE,SAAS;UAChBC,KAAK,EAAE;QACR,CAAC,EACD;UACCD,KAAK,EAAE,SAAS;UAChBC,KAAK,EAAE;QACR,CAAC;MAEH;IACD;EACD;AACD,CAAC,CAAC;AAAA,eAEa,IAAAZ,mBAAW,EAAC;EAC1BC,EAAE,EAAE,oCAAoC;EACxCE,IAAI,EAAE,yCAAyC;EAC/CD,MAAM,EAAE;IACPW,OAAO,EAAE;MACRT,IAAI,EAAE,QAAQ;MACdC,UAAU,EAAE,IAAI;MAChBS,OAAO,EAAE,IAAI;MACbL,OAAO,EAAE;QACRM,OAAO,EAAE,CACR,IAAAf,mBAAW,EAAC;UACXC,EAAE,EAAE,eAAe;UACnBC,MAAM,EAAEH,YAAY,CAACG;QACtB,CAAC,CAAC,EACF,IAAAF,mBAAW,EAAC;UACXC,EAAE,EAAE,cAAc;UAClBC,MAAM,EAAEH,YAAY,CAACG;QACtB,CAAC,CAAC;MAEJ;IACD;EACD;AACD,CAAC,CAAC;AAAA"}
1
+ {"version":3,"file":"watcherDidDetectChangesEmitPayload.builder.js","names":["buildSchema","id","name","fields","changes","type","isRequired","isArray","options","schemas","generatedFileBuilder"],"sources":["../../../src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts"],"sourcesContent":["import { buildSchema } from '@sprucelabs/schema'\nimport generatedFileBuilder from './generatedFile.builder'\n\nexport default buildSchema({\n\tid: 'watcherDidDetectChangesEmitPayload',\n\tname: 'Watcher did detect changes emit payload',\n\tfields: {\n\t\tchanges: {\n\t\t\ttype: 'schema',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tschemas: [\n\t\t\t\t\tgeneratedFileBuilder,\n\t\t\t\t\tbuildSchema({\n\t\t\t\t\t\tid: 'generatedDir',\n\t\t\t\t\t\tfields: generatedFileBuilder.fields,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;AACA;AAA0D,eAE3C,IAAAA,mBAAW,EAAC;EAC1BC,EAAE,EAAE,oCAAoC;EACxCC,IAAI,EAAE,yCAAyC;EAC/CC,MAAM,EAAE;IACPC,OAAO,EAAE;MACRC,IAAI,EAAE,QAAQ;MACdC,UAAU,EAAE,IAAI;MAChBC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;QACRC,OAAO,EAAE,CACRC,yBAAoB,EACpB,IAAAV,mBAAW,EAAC;UACXC,EAAE,EAAE,cAAc;UAClBE,MAAM,EAAEO,yBAAoB,CAACP;QAC9B,CAAC,CAAC;MAEJ;IACD;EACD;AACD,CAAC,CAAC;AAAA"}
@@ -6,7 +6,7 @@ export default class CommandService {
6
6
  cwd: string;
7
7
  private activeChildProcess;
8
8
  private ignoreCloseErrors;
9
- private static mockResponses;
9
+ private static fakeResponses;
10
10
  private static commandsRunCapturedByMockResponses;
11
11
  constructor(cwd: string);
12
12
  execute(cmd: string, options?: {
@@ -26,7 +26,7 @@ export default class CommandService {
26
26
  pid: () => number | undefined;
27
27
  private getMockResponse;
28
28
  static fakeCommand(command: string | RegExp, response: MockResponse): void;
29
- static clearMockResponses(): void;
29
+ static clearFakedResponses(): void;
30
30
  }
31
31
  interface MockResponse {
32
32
  code: number;
@@ -173,7 +173,7 @@ var CommandService = /*#__PURE__*/function () {
173
173
  key: "getMockResponse",
174
174
  value: function getMockResponse(executable, args) {
175
175
  var mockKey = "".concat(executable, " ").concat(args.join(' ')).trim();
176
- var commands = CommandService.mockResponses;
176
+ var commands = CommandService.fakeResponses;
177
177
  var match = commands.find(function (r) {
178
178
  return r.command instanceof RegExp ? mockKey.search(r.command) > -1 : r.command.replace(/ +/gi, '') === mockKey.replace(/ +/gi, '');
179
179
  });
@@ -185,20 +185,20 @@ var CommandService = /*#__PURE__*/function () {
185
185
  }], [{
186
186
  key: "fakeCommand",
187
187
  value: function fakeCommand(command, response) {
188
- this.mockResponses.unshift({
188
+ this.fakeResponses.unshift({
189
189
  command: command,
190
190
  response: response
191
191
  });
192
192
  }
193
193
  }, {
194
- key: "clearMockResponses",
195
- value: function clearMockResponses() {
196
- this.mockResponses = [];
194
+ key: "clearFakedResponses",
195
+ value: function clearFakedResponses() {
196
+ this.fakeResponses = [];
197
197
  }
198
198
  }]);
199
199
  return CommandService;
200
200
  }();
201
201
  exports["default"] = CommandService;
202
- (0, _defineProperty2["default"])(CommandService, "mockResponses", []);
202
+ (0, _defineProperty2["default"])(CommandService, "fakeResponses", []);
203
203
  (0, _defineProperty2["default"])(CommandService, "commandsRunCapturedByMockResponses", []);
204
204
  //# sourceMappingURL=CommandService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandService.js","names":["process","setMaxListeners","CommandService","cwd","activeChildProcess","pid","ignoreCloseErrors","treeKill","cmd","options","args","stringArgv","executable","shift","boundKill","kill","bind","Error","getMockResponse","mockResponse","mockKey","commandsRunCapturedByMockResponses","push","callback","code","SpruceError","join","stdout","stderr","on","Promise","resolve","reject","spawnOptions","shouldStream","stdio","env","PATH","IS_CLI","FORCE_COLOR","forceColor","shell","child","spawn","outStream","pipe","addListener","data","onData","toString","onError","closeHandler","off","undefined","setTimeout","removeAllListeners","ignoreErrors","search","escapeRegExp","ERROR_DIVIDER","stderrParts","split","err","AbstractSpruceError","parse","trim","commands","mockResponses","match","find","r","command","RegExp","replace","response","unshift"],"sources":["../../src/services/CommandService.ts"],"sourcesContent":["import { spawn, SpawnOptions, ChildProcess } from 'child_process'\nimport { Writable } from 'stream'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport { ERROR_DIVIDER } from '@sprucelabs/spruce-skill-utils'\nimport escapeRegExp from 'lodash/escapeRegExp'\nimport stringArgv from 'string-argv'\nimport treeKill from 'tree-kill'\nimport SpruceError from '../errors/SpruceError'\n\nprocess.setMaxListeners(100)\n\nexport default class CommandService {\n\tpublic cwd: string\n\tprivate activeChildProcess: ChildProcess | undefined\n\tprivate ignoreCloseErrors = false\n\tprivate static mockResponses: {\n\t\tcommand: string | RegExp\n\t\tresponse: MockResponse\n\t}[] = []\n\tprivate static commandsRunCapturedByMockResponses: string[] = []\n\n\tpublic constructor(cwd: string) {\n\t\tthis.cwd = cwd\n\t}\n\n\tpublic async execute(\n\t\tcmd: string,\n\t\toptions?: {\n\t\t\tignoreErrors?: boolean\n\t\t\targs?: string[]\n\t\t\tshouldStream?: boolean\n\t\t\toutStream?: Writable\n\t\t\tonError?: (error: string) => void\n\t\t\tonData?: (data: string) => void\n\t\t\tspawnOptions?: SpawnOptions\n\t\t\tforceColor?: boolean\n\t\t\tenv?: Record<string, any>\n\t\t}\n\t): Promise<{\n\t\tstdout: string\n\t}> {\n\t\tconst cwd = this.cwd\n\t\tconst args = options?.args || stringArgv(cmd)\n\t\tconst executable = options?.args ? cmd : args.shift()\n\t\tconst boundKill = this.kill.bind(this)\n\n\t\tif (!executable) {\n\t\t\tthrow new Error('Bad params sent to command service')\n\t\t}\n\n\t\tconst { mockResponse, mockKey } = this.getMockResponse(executable, args)\n\n\t\tif (mockResponse) {\n\t\t\tCommandService.commandsRunCapturedByMockResponses.push(mockKey)\n\t\t\tmockResponse.callback?.(executable, args)\n\n\t\t\tif (mockResponse.code !== 0) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\tcwd,\n\t\t\t\t\tstdout: mockResponse.stdout,\n\t\t\t\t\tstderr: mockResponse.stderr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn { stdout: mockResponse.stdout ?? '' }\n\t\t}\n\n\t\tprocess.on('exit', boundKill)\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet stdout = ''\n\t\t\tlet stderr = ''\n\t\t\tconst spawnOptions: SpawnOptions = options?.shouldStream\n\t\t\t\t? {\n\t\t\t\t\t\tstdio: 'inherit',\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshell: true,\n\t\t\t\t\t\t...options?.spawnOptions,\n\t\t\t\t }\n\n\t\t\tconst child = spawn(executable, args, spawnOptions)\n\t\t\tthis.activeChildProcess = child\n\n\t\t\tif (options?.outStream) {\n\t\t\t\tchild.stdout?.pipe(options.outStream)\n\t\t\t}\n\n\t\t\tchild.stdout?.addListener('data', (data) => {\n\t\t\t\toptions?.onData?.(data.toString())\n\t\t\t\tstdout += data\n\t\t\t})\n\n\t\t\tchild.stderr?.addListener('data', (data) => {\n\t\t\t\toptions?.onError?.(data.toString())\n\t\t\t\tstderr += data\n\t\t\t})\n\n\t\t\tconst closeHandler = (code: number) => {\n\t\t\t\tprocess.off('exit', boundKill)\n\n\t\t\t\tif (!this.activeChildProcess) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.activeChildProcess = undefined\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchild.stdout?.removeAllListeners()\n\t\t\t\t\tchild.stderr?.removeAllListeners()\n\t\t\t\t\tchild.removeAllListeners()\n\n\t\t\t\t\tif (code === 0 || this.ignoreCloseErrors || options?.ignoreErrors) {\n\t\t\t\t\t\tresolve({ stdout })\n\t\t\t\t\t\tthis.ignoreCloseErrors = false\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (stderr.search(escapeRegExp(ERROR_DIVIDER)) > -1) {\n\t\t\t\t\t\t\tconst stderrParts = stderr.split(ERROR_DIVIDER)\n\t\t\t\t\t\t\tconst err = AbstractSpruceError.parse(stderrParts[1], SpruceError)\n\t\t\t\t\t\t\treject(err)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treject(\n\t\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\tstdout,\n\t\t\t\t\t\t\t\tstderr,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}, 0)\n\t\t\t}\n\n\t\t\tchild.addListener('close', closeHandler)\n\t\t\tchild.addListener('exit', closeHandler)\n\t\t})\n\t}\n\n\tpublic kill = () => {\n\t\tif (this.activeChildProcess?.pid) {\n\t\t\tthis.ignoreCloseErrors = true\n\t\t\ttreeKill(this.activeChildProcess.pid, 'SIGTERM')\n\t\t}\n\t}\n\n\tpublic pid = () => {\n\t\treturn this.activeChildProcess?.pid\n\t}\n\n\tprivate getMockResponse(executable: string, args: string[]) {\n\t\tconst mockKey = `${executable} ${args.join(' ')}`.trim()\n\t\tconst commands = CommandService.mockResponses\n\t\tconst match = commands.find((r) =>\n\t\t\tr.command instanceof RegExp\n\t\t\t\t? mockKey.search(r.command) > -1\n\t\t\t\t: r.command.replace(/ +/gis, '') === mockKey.replace(/ +/gis, '')\n\t\t)\n\n\t\treturn { mockResponse: match?.response, mockKey }\n\t}\n\n\tpublic static fakeCommand(command: string | RegExp, response: MockResponse) {\n\t\tthis.mockResponses.unshift({\n\t\t\tcommand,\n\t\t\tresponse,\n\t\t})\n\t}\n\n\tpublic static clearMockResponses() {\n\t\tthis.mockResponses = []\n\t}\n}\n\ninterface MockResponse {\n\tcode: number\n\tstdout?: string\n\tstderr?: string\n\tcallback?: (executable: string, args: any[]) => void\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CommandService.js","names":["process","setMaxListeners","CommandService","cwd","activeChildProcess","pid","ignoreCloseErrors","treeKill","cmd","options","args","stringArgv","executable","shift","boundKill","kill","bind","Error","getMockResponse","mockResponse","mockKey","commandsRunCapturedByMockResponses","push","callback","code","SpruceError","join","stdout","stderr","on","Promise","resolve","reject","spawnOptions","shouldStream","stdio","env","PATH","IS_CLI","FORCE_COLOR","forceColor","shell","child","spawn","outStream","pipe","addListener","data","onData","toString","onError","closeHandler","off","undefined","setTimeout","removeAllListeners","ignoreErrors","search","escapeRegExp","ERROR_DIVIDER","stderrParts","split","err","AbstractSpruceError","parse","trim","commands","fakeResponses","match","find","r","command","RegExp","replace","response","unshift"],"sources":["../../src/services/CommandService.ts"],"sourcesContent":["import { spawn, SpawnOptions, ChildProcess } from 'child_process'\nimport { Writable } from 'stream'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport { ERROR_DIVIDER } from '@sprucelabs/spruce-skill-utils'\nimport escapeRegExp from 'lodash/escapeRegExp'\nimport stringArgv from 'string-argv'\nimport treeKill from 'tree-kill'\nimport SpruceError from '../errors/SpruceError'\n\nprocess.setMaxListeners(100)\n\nexport default class CommandService {\n\tpublic cwd: string\n\tprivate activeChildProcess: ChildProcess | undefined\n\tprivate ignoreCloseErrors = false\n\tprivate static fakeResponses: {\n\t\tcommand: string | RegExp\n\t\tresponse: MockResponse\n\t}[] = []\n\tprivate static commandsRunCapturedByMockResponses: string[] = []\n\n\tpublic constructor(cwd: string) {\n\t\tthis.cwd = cwd\n\t}\n\n\tpublic async execute(\n\t\tcmd: string,\n\t\toptions?: {\n\t\t\tignoreErrors?: boolean\n\t\t\targs?: string[]\n\t\t\tshouldStream?: boolean\n\t\t\toutStream?: Writable\n\t\t\tonError?: (error: string) => void\n\t\t\tonData?: (data: string) => void\n\t\t\tspawnOptions?: SpawnOptions\n\t\t\tforceColor?: boolean\n\t\t\tenv?: Record<string, any>\n\t\t}\n\t): Promise<{\n\t\tstdout: string\n\t}> {\n\t\tconst cwd = this.cwd\n\t\tconst args = options?.args || stringArgv(cmd)\n\t\tconst executable = options?.args ? cmd : args.shift()\n\t\tconst boundKill = this.kill.bind(this)\n\n\t\tif (!executable) {\n\t\t\tthrow new Error('Bad params sent to command service')\n\t\t}\n\n\t\tconst { mockResponse, mockKey } = this.getMockResponse(executable, args)\n\n\t\tif (mockResponse) {\n\t\t\tCommandService.commandsRunCapturedByMockResponses.push(mockKey)\n\t\t\tmockResponse.callback?.(executable, args)\n\n\t\t\tif (mockResponse.code !== 0) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\tcwd,\n\t\t\t\t\tstdout: mockResponse.stdout,\n\t\t\t\t\tstderr: mockResponse.stderr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn { stdout: mockResponse.stdout ?? '' }\n\t\t}\n\n\t\tprocess.on('exit', boundKill)\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet stdout = ''\n\t\t\tlet stderr = ''\n\t\t\tconst spawnOptions: SpawnOptions = options?.shouldStream\n\t\t\t\t? {\n\t\t\t\t\t\tstdio: 'inherit',\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshell: true,\n\t\t\t\t\t\t...options?.spawnOptions,\n\t\t\t\t }\n\n\t\t\tconst child = spawn(executable, args, spawnOptions)\n\t\t\tthis.activeChildProcess = child\n\n\t\t\tif (options?.outStream) {\n\t\t\t\tchild.stdout?.pipe(options.outStream)\n\t\t\t}\n\n\t\t\tchild.stdout?.addListener('data', (data) => {\n\t\t\t\toptions?.onData?.(data.toString())\n\t\t\t\tstdout += data\n\t\t\t})\n\n\t\t\tchild.stderr?.addListener('data', (data) => {\n\t\t\t\toptions?.onError?.(data.toString())\n\t\t\t\tstderr += data\n\t\t\t})\n\n\t\t\tconst closeHandler = (code: number) => {\n\t\t\t\tprocess.off('exit', boundKill)\n\n\t\t\t\tif (!this.activeChildProcess) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.activeChildProcess = undefined\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchild.stdout?.removeAllListeners()\n\t\t\t\t\tchild.stderr?.removeAllListeners()\n\t\t\t\t\tchild.removeAllListeners()\n\n\t\t\t\t\tif (code === 0 || this.ignoreCloseErrors || options?.ignoreErrors) {\n\t\t\t\t\t\tresolve({ stdout })\n\t\t\t\t\t\tthis.ignoreCloseErrors = false\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (stderr.search(escapeRegExp(ERROR_DIVIDER)) > -1) {\n\t\t\t\t\t\t\tconst stderrParts = stderr.split(ERROR_DIVIDER)\n\t\t\t\t\t\t\tconst err = AbstractSpruceError.parse(stderrParts[1], SpruceError)\n\t\t\t\t\t\t\treject(err)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treject(\n\t\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\tstdout,\n\t\t\t\t\t\t\t\tstderr,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}, 0)\n\t\t\t}\n\n\t\t\tchild.addListener('close', closeHandler)\n\t\t\tchild.addListener('exit', closeHandler)\n\t\t})\n\t}\n\n\tpublic kill = () => {\n\t\tif (this.activeChildProcess?.pid) {\n\t\t\tthis.ignoreCloseErrors = true\n\t\t\ttreeKill(this.activeChildProcess.pid, 'SIGTERM')\n\t\t}\n\t}\n\n\tpublic pid = () => {\n\t\treturn this.activeChildProcess?.pid\n\t}\n\n\tprivate getMockResponse(executable: string, args: string[]) {\n\t\tconst mockKey = `${executable} ${args.join(' ')}`.trim()\n\t\tconst commands = CommandService.fakeResponses\n\t\tconst match = commands.find((r) =>\n\t\t\tr.command instanceof RegExp\n\t\t\t\t? mockKey.search(r.command) > -1\n\t\t\t\t: r.command.replace(/ +/gis, '') === mockKey.replace(/ +/gis, '')\n\t\t)\n\n\t\treturn { mockResponse: match?.response, mockKey }\n\t}\n\n\tpublic static fakeCommand(command: string | RegExp, response: MockResponse) {\n\t\tthis.fakeResponses.unshift({\n\t\t\tcommand,\n\t\t\tresponse,\n\t\t})\n\t}\n\n\tpublic static clearFakedResponses() {\n\t\tthis.fakeResponses = []\n\t}\n}\n\ninterface MockResponse {\n\tcode: number\n\tstdout?: string\n\tstderr?: string\n\tcallback?: (executable: string, args: any[]) => void\n}\n"],"mappings":";;;;;;;;;;;;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAA+C;AAAA;AAE/CA,OAAO,CAACC,eAAe,CAAC,GAAG,CAAC;AAAA,IAEPC,cAAc;EAUlC,wBAAmBC,GAAW,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA,4DAPJ,KAAK;IAAA,+CA8InB,YAAM;MAAA;MACnB,6BAAI,KAAI,CAACC,kBAAkB,kDAAvB,sBAAyBC,GAAG,EAAE;QACjC,KAAI,CAACC,iBAAiB,GAAG,IAAI;QAC7B,IAAAC,oBAAQ,EAAC,KAAI,CAACH,kBAAkB,CAACC,GAAG,EAAE,SAAS,CAAC;MACjD;IACD,CAAC;IAAA,8CAEY,YAAM;MAAA;MAClB,iCAAO,KAAI,CAACD,kBAAkB,2DAAvB,uBAAyBC,GAAG;IACpC,CAAC;IA/IA,IAAI,CAACF,GAAG,GAAGA,GAAG;EACf;EAAC;IAAA;IAAA;MAAA,6FAED,iBACCK,GAAW,EACXC,OAUC;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAIKN,GAAG,GAAG,IAAI,CAACA,GAAG;gBACdO,IAAI,GAAG,CAAAD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,IAAI,KAAI,IAAAC,sBAAU,EAACH,GAAG,CAAC;gBACvCI,UAAU,GAAGH,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,IAAI,GAAGF,GAAG,GAAGE,IAAI,CAACG,KAAK,EAAE;gBAC/CC,SAAS,GAAG,IAAI,CAACC,IAAI,CAACC,IAAI,CAAC,IAAI,CAAC;gBAAA,IAEjCJ,UAAU;kBAAA;kBAAA;gBAAA;gBAAA,MACR,IAAIK,KAAK,CAAC,oCAAoC,CAAC;cAAA;gBAAA,wBAGpB,IAAI,CAACC,eAAe,CAACN,UAAU,EAAEF,IAAI,CAAC,EAAhES,YAAY,yBAAZA,YAAY,EAAEC,OAAO,yBAAPA,OAAO;gBAAA,KAEzBD,YAAY;kBAAA;kBAAA;gBAAA;gBACfjB,cAAc,CAACmB,kCAAkC,CAACC,IAAI,CAACF,OAAO,CAAC;gBAC/D,yBAAAD,YAAY,CAACI,QAAQ,0DAArB,2BAAAJ,YAAY,EAAYP,UAAU,EAAEF,IAAI,CAAC;gBAAA,MAErCS,YAAY,CAACK,IAAI,KAAK,CAAC;kBAAA;kBAAA;gBAAA;gBAAA,MACpB,IAAIC,uBAAW,CAAC;kBACrBD,IAAI,EAAE,0BAA0B;kBAChChB,GAAG,YAAKI,UAAU,cAAIF,IAAI,CAACgB,IAAI,CAAC,GAAG,CAAC,CAAE;kBACtCvB,GAAG,EAAHA,GAAG;kBACHwB,MAAM,EAAER,YAAY,CAACQ,MAAM;kBAC3BC,MAAM,EAAET,YAAY,CAACS;gBACtB,CAAC,CAAC;cAAA;gBAAA,iCAGI;kBAAED,MAAM,0BAAER,YAAY,CAACQ,MAAM,uEAAI;gBAAG,CAAC;cAAA;gBAG7C3B,OAAO,CAAC6B,EAAE,CAAC,MAAM,EAAEf,SAAS,CAAC;gBAAA,iCAEtB,IAAIgB,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;kBAAA;kBACvC,IAAIL,MAAM,GAAG,EAAE;kBACf,IAAIC,MAAM,GAAG,EAAE;kBACf,IAAMK,YAA0B,GAAGxB,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEyB,YAAY,GACrD;oBACAC,KAAK,EAAE,SAAS;oBAChBhC,GAAG,EAAHA,GAAG;oBACHiC,GAAG;sBACFC,IAAI,EAAErC,OAAO,CAACoC,GAAG,CAACC,IAAI;sBACtBC,MAAM,EAAE,MAAM;sBACdC,WAAW,EAAE9B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE+B,UAAU,GAAG,GAAG,GAAG;oBAAG,GACzC/B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE2B,GAAG;kBAEhB,CAAC;oBAEDjC,GAAG,EAAHA,GAAG;oBACHiC,GAAG;sBACFC,IAAI,EAAErC,OAAO,CAACoC,GAAG,CAACC,IAAI;sBACtBC,MAAM,EAAE,MAAM;sBACdC,WAAW,EAAE9B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE+B,UAAU,GAAG,GAAG,GAAG;oBAAG,GACzC/B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE2B,GAAG,CACf;oBACDK,KAAK,EAAE;kBAAI,GACRhC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEwB,YAAY,CACvB;kBAEJ,IAAMS,KAAK,GAAG,IAAAC,oBAAK,EAAC/B,UAAU,EAAEF,IAAI,EAAEuB,YAAY,CAAC;kBACnD,MAAI,CAAC7B,kBAAkB,GAAGsC,KAAK;kBAE/B,IAAIjC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEmC,SAAS,EAAE;oBAAA;oBACvB,iBAAAF,KAAK,CAACf,MAAM,kDAAZ,cAAckB,IAAI,CAACpC,OAAO,CAACmC,SAAS,CAAC;kBACtC;kBAEA,kBAAAF,KAAK,CAACf,MAAM,mDAAZ,eAAcmB,WAAW,CAAC,MAAM,EAAE,UAACC,IAAI,EAAK;oBAAA;oBAC3CtC,OAAO,aAAPA,OAAO,0CAAPA,OAAO,CAAEuC,MAAM,oDAAf,qBAAAvC,OAAO,EAAWsC,IAAI,CAACE,QAAQ,EAAE,CAAC;oBAClCtB,MAAM,IAAIoB,IAAI;kBACf,CAAC,CAAC;kBAEF,iBAAAL,KAAK,CAACd,MAAM,kDAAZ,cAAckB,WAAW,CAAC,MAAM,EAAE,UAACC,IAAI,EAAK;oBAAA;oBAC3CtC,OAAO,aAAPA,OAAO,2CAAPA,OAAO,CAAEyC,OAAO,qDAAhB,sBAAAzC,OAAO,EAAYsC,IAAI,CAACE,QAAQ,EAAE,CAAC;oBACnCrB,MAAM,IAAImB,IAAI;kBACf,CAAC,CAAC;kBAEF,IAAMI,YAAY,GAAG,SAAfA,YAAY,CAAI3B,IAAY,EAAK;oBACtCxB,OAAO,CAACoD,GAAG,CAAC,MAAM,EAAEtC,SAAS,CAAC;oBAE9B,IAAI,CAAC,MAAI,CAACV,kBAAkB,EAAE;sBAC7B;oBACD;oBACA,MAAI,CAACA,kBAAkB,GAAGiD,SAAS;oBAEnCC,UAAU,CAAC,YAAM;sBAAA;sBAChB,kBAAAZ,KAAK,CAACf,MAAM,mDAAZ,eAAc4B,kBAAkB,EAAE;sBAClC,kBAAAb,KAAK,CAACd,MAAM,mDAAZ,eAAc2B,kBAAkB,EAAE;sBAClCb,KAAK,CAACa,kBAAkB,EAAE;sBAE1B,IAAI/B,IAAI,KAAK,CAAC,IAAI,MAAI,CAAClB,iBAAiB,IAAIG,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE+C,YAAY,EAAE;wBAClEzB,OAAO,CAAC;0BAAEJ,MAAM,EAANA;wBAAO,CAAC,CAAC;wBACnB,MAAI,CAACrB,iBAAiB,GAAG,KAAK;sBAC/B,CAAC,MAAM;wBACN,IAAIsB,MAAM,CAAC6B,MAAM,CAAC,IAAAC,wBAAY,EAACC,+BAAa,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;0BACpD,IAAMC,WAAW,GAAGhC,MAAM,CAACiC,KAAK,CAACF,+BAAa,CAAC;0BAC/C,IAAMG,GAAG,GAAGC,iBAAmB,CAACC,KAAK,CAACJ,WAAW,CAAC,CAAC,CAAC,EAAEnC,uBAAW,CAAC;0BAClEO,MAAM,CAAC8B,GAAG,CAAC;0BACX;wBACD;wBAEA9B,MAAM,CACL,IAAIP,uBAAW,CAAC;0BACfD,IAAI,EAAE,0BAA0B;0BAChChB,GAAG,YAAKI,UAAU,cAAIF,IAAI,CAACgB,IAAI,CAAC,GAAG,CAAC,CAAE;0BACtCvB,GAAG,EAAHA,GAAG;0BACHwB,MAAM,EAANA,MAAM;0BACNC,MAAM,EAANA;wBACD,CAAC,CAAC,CACF;sBACF;oBACD,CAAC,EAAE,CAAC,CAAC;kBACN,CAAC;kBAEDc,KAAK,CAACI,WAAW,CAAC,OAAO,EAAEK,YAAY,CAAC;kBACxCT,KAAK,CAACI,WAAW,CAAC,MAAM,EAAEK,YAAY,CAAC;gBACxC,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAaD,yBAAwBvC,UAAkB,EAAEF,IAAc,EAAE;MAC3D,IAAMU,OAAO,GAAG,UAAGR,UAAU,cAAIF,IAAI,CAACgB,IAAI,CAAC,GAAG,CAAC,EAAGuC,IAAI,EAAE;MACxD,IAAMC,QAAQ,GAAGhE,cAAc,CAACiE,aAAa;MAC7C,IAAMC,KAAK,GAAGF,QAAQ,CAACG,IAAI,CAAC,UAACC,CAAC;QAAA,OAC7BA,CAAC,CAACC,OAAO,YAAYC,MAAM,GACxBpD,OAAO,CAACqC,MAAM,CAACa,CAAC,CAACC,OAAO,CAAC,GAAG,CAAC,CAAC,GAC9BD,CAAC,CAACC,OAAO,CAACE,OAAO,CAAC,MAAO,EAAE,EAAE,CAAC,KAAKrD,OAAO,CAACqD,OAAO,CAAC,MAAO,EAAE,EAAE,CAAC;MAAA,EAClE;MAED,OAAO;QAAEtD,YAAY,EAAEiD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,QAAQ;QAAEtD,OAAO,EAAPA;MAAQ,CAAC;IAClD;EAAC;IAAA;IAAA,OAED,qBAA0BmD,OAAwB,EAAEG,QAAsB,EAAE;MAC3E,IAAI,CAACP,aAAa,CAACQ,OAAO,CAAC;QAC1BJ,OAAO,EAAPA,OAAO;QACPG,QAAQ,EAARA;MACD,CAAC,CAAC;IACH;EAAC;IAAA;IAAA,OAED,+BAAoC;MACnC,IAAI,CAACP,aAAa,GAAG,EAAE;IACxB;EAAC;EAAA;AAAA;AAAA;AAAA,iCAjLmBjE,cAAc,mBAO5B,EAAE;AAAA,iCAPYA,cAAc,wCAQ4B,EAAE"}
@@ -16,5 +16,6 @@ export default class PkgService extends BasePkgService {
16
16
  executable: string;
17
17
  args: any[];
18
18
  };
19
+ getSkillNamespace(): any;
19
20
  uninstall(pkg: string[] | string): Promise<void>;
20
21
  }
@@ -123,6 +123,11 @@ var PkgService = /*#__PURE__*/function (_BasePkgService) {
123
123
  }
124
124
  return install;
125
125
  }()
126
+ }, {
127
+ key: "getSkillNamespace",
128
+ value: function getSkillNamespace() {
129
+ return this.get('skill.namespace');
130
+ }
126
131
  }, {
127
132
  key: "uninstall",
128
133
  value: function () {
@@ -1 +1 @@
1
- {"version":3,"file":"PkgService.js","names":["PkgService","cwd","commandService","pkg","options","shouldCleanupLockFiles","deleteLockFile","bind","execute","args","totalInstalled","totalSkipped","packages","Array","isArray","toInstall","labsModules","thisPackage","isInstalled","shouldForceInstall","startsWith","push","stripLatest","buildCommandAndArgs","executable","diskUtil","doesDirExist","pathUtil","join","_parsedPkg","undefined","length","install","isCi","createRandomTempDir","filter","a","isDev","BasePkgService"],"sources":["../../src/services/PkgService.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tdiskUtil,\n\tPkgService as BasePkgService,\n} from '@sprucelabs/spruce-skill-utils'\nimport isCi from '../utilities/isCi'\nimport CommandService from './CommandService'\n\nexport interface AddOptions {\n\tisDev?: boolean\n\tshouldForceInstall?: boolean\n\tshouldCleanupLockFiles?: boolean\n}\n\nexport default class PkgService extends BasePkgService {\n\tprivate commandService: CommandService\n\n\tpublic constructor(cwd: string, commandService: CommandService) {\n\t\tsuper(cwd)\n\t\tthis.commandService = commandService\n\t}\n\n\tpublic async install(pkg?: string[] | string, options?: AddOptions) {\n\t\tconst shouldCleanupLockFiles = options?.shouldCleanupLockFiles !== false\n\t\tconst deleteLockFile = shouldCleanupLockFiles\n\t\t\t? this.deleteLockFile.bind(this)\n\t\t\t: () => {}\n\n\t\tif (!pkg) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t\tdeleteLockFile()\n\t\t\treturn { totalInstalled: -1, totalSkipped: -1 }\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst toInstall = []\n\t\tconst labsModules: string[] = []\n\n\t\tlet totalInstalled = 0\n\t\tlet totalSkipped = 0\n\n\t\tfor (const thisPackage of packages) {\n\t\t\tconst isInstalled =\n\t\t\t\t!options?.shouldForceInstall && this.isInstalled(thisPackage)\n\t\t\tif (thisPackage.startsWith('@sprucelabs/') || !isInstalled) {\n\t\t\t\ttoInstall.push(this.stripLatest(thisPackage))\n\t\t\t\ttotalInstalled++\n\t\t\t} else {\n\t\t\t\ttotalSkipped++\n\t\t\t}\n\t\t}\n\n\t\tif (totalInstalled > 0) {\n\t\t\tconst { executable, args } = PkgService.buildCommandAndArgs(\n\t\t\t\ttoInstall,\n\t\t\t\toptions\n\t\t\t)\n\n\t\t\tawait this.commandService.execute(executable, {\n\t\t\t\targs,\n\t\t\t})\n\t\t} else if (\n\t\t\t!diskUtil.doesDirExist(pathUtil.join(this.cwd, 'node_modules'))\n\t\t) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tthis._parsedPkg = undefined\n\n\t\treturn { totalInstalled: totalInstalled + labsModules.length, totalSkipped }\n\t}\n\n\tpublic static buildCommandAndArgs(\n\t\ttoInstall: string[],\n\t\toptions: AddOptions | undefined\n\t) {\n\t\tconst args: any[] = [\n\t\t\tisCi() && '--cache-folder',\n\t\t\tisCi() && diskUtil.createRandomTempDir(),\n\t\t\t'add',\n\t\t\t...toInstall,\n\t\t].filter((a) => !!a)\n\n\t\tif (options?.isDev) {\n\t\t\targs.push('-D')\n\t\t}\n\n\t\tconst executable = 'yarn'\n\t\treturn { executable, args }\n\t}\n\n\tpublic async uninstall(pkg: string[] | string) {\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst args: string[] = ['uninstall', ...packages]\n\t\tawait this.commandService.execute('npm', {\n\t\t\targs,\n\t\t})\n\n\t\tthis._parsedPkg = undefined\n\n\t\tawait this.install()\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PkgService.js","names":["PkgService","cwd","commandService","pkg","options","shouldCleanupLockFiles","deleteLockFile","bind","execute","args","totalInstalled","totalSkipped","packages","Array","isArray","toInstall","labsModules","thisPackage","isInstalled","shouldForceInstall","startsWith","push","stripLatest","buildCommandAndArgs","executable","diskUtil","doesDirExist","pathUtil","join","_parsedPkg","undefined","length","get","install","isCi","createRandomTempDir","filter","a","isDev","BasePkgService"],"sources":["../../src/services/PkgService.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tdiskUtil,\n\tPkgService as BasePkgService,\n} from '@sprucelabs/spruce-skill-utils'\nimport isCi from '../utilities/isCi'\nimport CommandService from './CommandService'\n\nexport interface AddOptions {\n\tisDev?: boolean\n\tshouldForceInstall?: boolean\n\tshouldCleanupLockFiles?: boolean\n}\n\nexport default class PkgService extends BasePkgService {\n\tprivate commandService: CommandService\n\n\tpublic constructor(cwd: string, commandService: CommandService) {\n\t\tsuper(cwd)\n\t\tthis.commandService = commandService\n\t}\n\n\tpublic async install(pkg?: string[] | string, options?: AddOptions) {\n\t\tconst shouldCleanupLockFiles = options?.shouldCleanupLockFiles !== false\n\t\tconst deleteLockFile = shouldCleanupLockFiles\n\t\t\t? this.deleteLockFile.bind(this)\n\t\t\t: () => {}\n\n\t\tif (!pkg) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t\tdeleteLockFile()\n\t\t\treturn { totalInstalled: -1, totalSkipped: -1 }\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst toInstall = []\n\t\tconst labsModules: string[] = []\n\n\t\tlet totalInstalled = 0\n\t\tlet totalSkipped = 0\n\n\t\tfor (const thisPackage of packages) {\n\t\t\tconst isInstalled =\n\t\t\t\t!options?.shouldForceInstall && this.isInstalled(thisPackage)\n\t\t\tif (thisPackage.startsWith('@sprucelabs/') || !isInstalled) {\n\t\t\t\ttoInstall.push(this.stripLatest(thisPackage))\n\t\t\t\ttotalInstalled++\n\t\t\t} else {\n\t\t\t\ttotalSkipped++\n\t\t\t}\n\t\t}\n\n\t\tif (totalInstalled > 0) {\n\t\t\tconst { executable, args } = PkgService.buildCommandAndArgs(\n\t\t\t\ttoInstall,\n\t\t\t\toptions\n\t\t\t)\n\n\t\t\tawait this.commandService.execute(executable, {\n\t\t\t\targs,\n\t\t\t})\n\t\t} else if (\n\t\t\t!diskUtil.doesDirExist(pathUtil.join(this.cwd, 'node_modules'))\n\t\t) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tthis._parsedPkg = undefined\n\n\t\treturn { totalInstalled: totalInstalled + labsModules.length, totalSkipped }\n\t}\n\n\tpublic static buildCommandAndArgs(\n\t\ttoInstall: string[],\n\t\toptions: AddOptions | undefined\n\t) {\n\t\tconst args: any[] = [\n\t\t\tisCi() && '--cache-folder',\n\t\t\tisCi() && diskUtil.createRandomTempDir(),\n\t\t\t'add',\n\t\t\t...toInstall,\n\t\t].filter((a) => !!a)\n\n\t\tif (options?.isDev) {\n\t\t\targs.push('-D')\n\t\t}\n\n\t\tconst executable = 'yarn'\n\t\treturn { executable, args }\n\t}\n\n\tpublic getSkillNamespace() {\n\t\treturn this.get('skill.namespace')\n\t}\n\n\tpublic async uninstall(pkg: string[] | string) {\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst args: string[] = ['uninstall', ...packages]\n\t\tawait this.commandService.execute('npm', {\n\t\t\targs,\n\t\t})\n\n\t\tthis._parsedPkg = undefined\n\n\t\tawait this.install()\n\t}\n}\n"],"mappings":"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"}
@@ -11,6 +11,7 @@ import ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'
11
11
  import StoreFactory, { StoreCode, CreateStoreOptions, StoreFactoryOptions, StoreMap } from '../stores/StoreFactory';
12
12
  import { ApiClientFactoryOptions } from '../types/apiClient.types';
13
13
  import { OptionOverrides } from '../types/cli.types';
14
+ import WriterFactory from '../writers/WriterFactory';
14
15
  import CommandFaker from './CommandFaker';
15
16
  import FeatureFixture, { FeatureFixtureOptions } from './fixtures/FeatureFixture';
16
17
  import MercuryFixture from './fixtures/MercuryFixture';
@@ -18,9 +19,6 @@ import OrganizationFixture from './fixtures/OrganizationFixture';
18
19
  import PersonFixture from './fixtures/PersonFixture';
19
20
  import SkillFixture from './fixtures/SkillFixture';
20
21
  import ViewFixture from './fixtures/ViewFixture';
21
- declare type ExecuterOptions = Partial<ActionExecuterOptions> & {
22
- optionOverrides?: OptionOverrides;
23
- };
24
22
  export default abstract class AbstractCliTest extends AbstractSpruceTest {
25
23
  protected static cliRoot: string;
26
24
  protected static homeDir: string;
@@ -34,6 +32,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
34
32
  private static _featureInstaller?;
35
33
  private static viewFixture?;
36
34
  private static originalEnv;
35
+ private static _writers?;
37
36
  protected static beforeAll(): Promise<void>;
38
37
  protected static beforeEach(): Promise<void>;
39
38
  protected static afterEach(): Promise<void>;
@@ -53,6 +52,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
53
52
  protected static getMercuryFixture(): MercuryFixture;
54
53
  protected static get people(): PersonFixture;
55
54
  protected static getViewFixture(): ViewFixture;
55
+ protected static get writers(): WriterFactory;
56
56
  private static WriterFactory;
57
57
  protected static skipInstallSkillPrompts<E extends () => Promise<FeatureActionResponse>>(execute?: E): Promise<E extends undefined ? undefined : FeatureActionResponse>;
58
58
  protected static getOrganizationFixture(): OrganizationFixture;
@@ -66,6 +66,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
66
66
  protected static waitForInput(): Promise<void>;
67
67
  protected static assertIsFeatureInstalled(code: FeatureCode): Promise<void>;
68
68
  protected static assertValidActionResponseFiles(results: FeatureActionResponse): Promise<void>;
69
+ protected static assertFilePassesTypeChecks(file: string): Promise<void>;
69
70
  protected static connectToApi(options?: ApiClientFactoryOptions): Promise<import("../types/apiClient.types").ApiClient>;
70
71
  protected static openInVsCode(options?: {
71
72
  file?: string;
@@ -82,4 +83,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
82
83
  protected static ActionExecuter(options?: ExecuterOptions): ActionExecuter;
83
84
  protected static selectOptionBasedOnLabel(label: string): void;
84
85
  }
86
+ declare type ExecuterOptions = Partial<ActionExecuterOptions> & {
87
+ optionOverrides?: OptionOverrides;
88
+ };
85
89
  export {};
@@ -104,6 +104,9 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
104
104
  _context2.next = 2;
105
105
  return (0, _get2["default"])((0, _getPrototypeOf2["default"])(AbstractCliTest), "beforeEach", this).call(this);
106
106
  case 2:
107
+ delete this._writers;
108
+ _ActionFactory["default"].clearActionOverrides();
109
+
107
110
  //@ts-ignore
108
111
  process.env = _objectSpread({}, this.originalEnv);
109
112
  _test["default"].startLogTimer();
@@ -123,11 +126,11 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
123
126
  _ImportService["default"].clearCache();
124
127
  _SkillStore["default"].clearCurrentSkill();
125
128
  _EventStore["default"].clearCache();
126
- _CommandService["default"].clearMockResponses();
129
+ _CommandService["default"].clearFakedResponses();
127
130
  _mercuryClient.MercuryClientFactory.reset();
128
131
  _mercuryClient.MercuryClientFactory.setIsTestMode(false);
129
132
  this.commandFaker = new _CommandFaker["default"]();
130
- case 21:
133
+ case 23:
131
134
  case "end":
132
135
  return _context2.stop();
133
136
  }
@@ -170,7 +173,10 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
170
173
  if (_spruceSkillUtils.diskUtil.doesDirExist(this.homeDir) && _test["default"].shouldClearCache()) {
171
174
  _spruceSkillUtils.diskUtil.deleteDir(this.homeDir);
172
175
  }
173
- case 11:
176
+ if (_test["default"].shouldCleanupAfterEach()) {
177
+ _FeatureFixture2["default"].deleteOldSkillDirs();
178
+ }
179
+ case 12:
174
180
  case "end":
175
181
  return _context3.stop();
176
182
  }
@@ -193,7 +199,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
193
199
  _context4.next = 2;
194
200
  return (0, _get2["default"])((0, _getPrototypeOf2["default"])(AbstractCliTest), "afterAll", this).call(this);
195
201
  case 2:
196
- if (_test["default"].shouldCleanupTestSkillDirs()) {
202
+ if (_test["default"].shouldCleanupAfterAll()) {
197
203
  _FeatureFixture2["default"].deleteOldSkillDirs();
198
204
  }
199
205
  case 3:
@@ -388,14 +394,21 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
388
394
  key: "getViewFixture",
389
395
  value: function getViewFixture() {
390
396
  if (!this.viewFixture) {
391
- var writerFactory = this.WriterFactory();
392
- var viewWriter = writerFactory.Writer('view', {
397
+ var viewWriter = this.writers.Writer('view', {
393
398
  fileDescriptions: []
394
399
  });
395
400
  this.viewFixture = new _ViewFixture["default"](this.cwd, viewWriter, this.Action('view', 'sync'));
396
401
  }
397
402
  return this.viewFixture;
398
403
  }
404
+ }, {
405
+ key: "writers",
406
+ get: function get() {
407
+ if (!this._writers) {
408
+ this._writers = this.WriterFactory();
409
+ }
410
+ return this._writers;
411
+ }
399
412
  }, {
400
413
  key: "WriterFactory",
401
414
  value: function WriterFactory() {
@@ -571,7 +584,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
571
584
  value: function () {
572
585
  var _assertValidActionResponseFiles = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11(results) {
573
586
  var _results$files;
574
- var _iterator2, _step2, file, checker;
587
+ var _iterator2, _step2, file;
575
588
  return _regenerator["default"].wrap(function _callee11$(_context11) {
576
589
  while (1) {
577
590
  switch (_context11.prev = _context11.next) {
@@ -581,33 +594,32 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
581
594
  _iterator2.s();
582
595
  case 3:
583
596
  if ((_step2 = _iterator2.n()).done) {
584
- _context11.next = 10;
597
+ _context11.next = 9;
585
598
  break;
586
599
  }
587
600
  file = _step2.value;
588
- checker = this.Service('typeChecker');
589
- _context11.next = 8;
590
- return checker.check(file.path);
591
- case 8:
601
+ _context11.next = 7;
602
+ return this.assertFilePassesTypeChecks(file.path);
603
+ case 7:
592
604
  _context11.next = 3;
593
605
  break;
594
- case 10:
595
- _context11.next = 15;
606
+ case 9:
607
+ _context11.next = 14;
596
608
  break;
597
- case 12:
598
- _context11.prev = 12;
609
+ case 11:
610
+ _context11.prev = 11;
599
611
  _context11.t0 = _context11["catch"](1);
600
612
  _iterator2.e(_context11.t0);
601
- case 15:
602
- _context11.prev = 15;
613
+ case 14:
614
+ _context11.prev = 14;
603
615
  _iterator2.f();
604
- return _context11.finish(15);
605
- case 18:
616
+ return _context11.finish(14);
617
+ case 17:
606
618
  case "end":
607
619
  return _context11.stop();
608
620
  }
609
621
  }
610
- }, _callee11, this, [[1, 12, 15, 18]]);
622
+ }, _callee11, this, [[1, 11, 14, 17]]);
611
623
  }));
612
624
  function assertValidActionResponseFiles(_x9) {
613
625
  return _assertValidActionResponseFiles.apply(this, arguments);
@@ -615,22 +627,46 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
615
627
  return assertValidActionResponseFiles;
616
628
  }()
617
629
  }, {
618
- key: "connectToApi",
630
+ key: "assertFilePassesTypeChecks",
619
631
  value: function () {
620
- var _connectToApi = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(options) {
632
+ var _assertFilePassesTypeChecks = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(file) {
633
+ var checker;
621
634
  return _regenerator["default"].wrap(function _callee12$(_context12) {
622
635
  while (1) {
623
636
  switch (_context12.prev = _context12.next) {
624
637
  case 0:
625
- return _context12.abrupt("return", this.getMercuryFixture().connectToApi(options));
626
- case 1:
638
+ checker = this.Service('typeChecker');
639
+ _context12.next = 3;
640
+ return checker.check(file);
641
+ case 3:
627
642
  case "end":
628
643
  return _context12.stop();
629
644
  }
630
645
  }
631
646
  }, _callee12, this);
632
647
  }));
633
- function connectToApi(_x10) {
648
+ function assertFilePassesTypeChecks(_x10) {
649
+ return _assertFilePassesTypeChecks.apply(this, arguments);
650
+ }
651
+ return assertFilePassesTypeChecks;
652
+ }()
653
+ }, {
654
+ key: "connectToApi",
655
+ value: function () {
656
+ var _connectToApi = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13(options) {
657
+ return _regenerator["default"].wrap(function _callee13$(_context13) {
658
+ while (1) {
659
+ switch (_context13.prev = _context13.next) {
660
+ case 0:
661
+ return _context13.abrupt("return", this.getMercuryFixture().connectToApi(options));
662
+ case 1:
663
+ case "end":
664
+ return _context13.stop();
665
+ }
666
+ }
667
+ }, _callee13, this);
668
+ }));
669
+ function connectToApi(_x11) {
634
670
  return _connectToApi.apply(this, arguments);
635
671
  }
636
672
  return connectToApi;
@@ -638,30 +674,30 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
638
674
  }, {
639
675
  key: "openInVsCode",
640
676
  value: function () {
641
- var _openInVsCode = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13(options) {
677
+ var _openInVsCode = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14(options) {
642
678
  var _ref, _options$file, _options$timeout;
643
- return _regenerator["default"].wrap(function _callee13$(_context13) {
679
+ return _regenerator["default"].wrap(function _callee14$(_context14) {
644
680
  while (1) {
645
- switch (_context13.prev = _context13.next) {
681
+ switch (_context14.prev = _context14.next) {
646
682
  case 0:
647
- _context13.next = 2;
683
+ _context14.next = 2;
648
684
  return this.Action('vscode', 'setup').execute({
649
685
  all: true
650
686
  });
651
687
  case 2:
652
- _context13.next = 4;
688
+ _context14.next = 4;
653
689
  return this.Service('command').execute("code ".concat((_ref = (_options$file = options === null || options === void 0 ? void 0 : options.file) !== null && _options$file !== void 0 ? _options$file : options === null || options === void 0 ? void 0 : options.dir) !== null && _ref !== void 0 ? _ref : this.cwd));
654
690
  case 4:
655
- _context13.next = 6;
691
+ _context14.next = 6;
656
692
  return this.wait((_options$timeout = options === null || options === void 0 ? void 0 : options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : 99999999);
657
693
  case 6:
658
694
  case "end":
659
- return _context13.stop();
695
+ return _context14.stop();
660
696
  }
661
697
  }
662
- }, _callee13, this);
698
+ }, _callee14, this);
663
699
  }));
664
- function openInVsCode(_x11) {
700
+ function openInVsCode(_x12) {
665
701
  return _openInVsCode.apply(this, arguments);
666
702
  }
667
703
  return openInVsCode;
@@ -669,25 +705,25 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
669
705
  }, {
670
706
  key: "openInFinder",
671
707
  value: function () {
672
- var _openInFinder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14(options) {
708
+ var _openInFinder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15(options) {
673
709
  var _ref2, _options$file2, _options$timeout2;
674
- return _regenerator["default"].wrap(function _callee14$(_context14) {
710
+ return _regenerator["default"].wrap(function _callee15$(_context15) {
675
711
  while (1) {
676
- switch (_context14.prev = _context14.next) {
712
+ switch (_context15.prev = _context15.next) {
677
713
  case 0:
678
- _context14.next = 2;
714
+ _context15.next = 2;
679
715
  return this.Service('command').execute("open ".concat((_ref2 = (_options$file2 = options === null || options === void 0 ? void 0 : options.file) !== null && _options$file2 !== void 0 ? _options$file2 : options === null || options === void 0 ? void 0 : options.dir) !== null && _ref2 !== void 0 ? _ref2 : this.cwd));
680
716
  case 2:
681
- _context14.next = 4;
717
+ _context15.next = 4;
682
718
  return this.wait((_options$timeout2 = options === null || options === void 0 ? void 0 : options.timeout) !== null && _options$timeout2 !== void 0 ? _options$timeout2 : 99999999);
683
719
  case 4:
684
720
  case "end":
685
- return _context14.stop();
721
+ return _context15.stop();
686
722
  }
687
723
  }
688
- }, _callee14, this);
724
+ }, _callee15, this);
689
725
  }));
690
- function openInFinder(_x12) {
726
+ function openInFinder(_x13) {
691
727
  return _openInFinder.apply(this, arguments);
692
728
  }
693
729
  return openInFinder;
@@ -718,9 +754,8 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
718
754
  value: function ActionExecuter(options) {
719
755
  var _this = this;
720
756
  var serviceFactory = this.ServiceFactory();
721
- var writerFactory = this.WriterFactory();
722
757
  var actionFactory = new _ActionFactory["default"]({
723
- writerFactory: writerFactory,
758
+ writerFactory: this.writers,
724
759
  ui: this.ui,
725
760
  emitter: this.emitter,
726
761
  apiClientFactory: this.getMercuryFixture().getApiClientFactory(),
@@ -773,4 +808,5 @@ exports["default"] = AbstractCliTest;
773
808
  (0, _defineProperty2["default"])(AbstractCliTest, "_featureInstaller", void 0);
774
809
  (0, _defineProperty2["default"])(AbstractCliTest, "viewFixture", void 0);
775
810
  (0, _defineProperty2["default"])(AbstractCliTest, "originalEnv", void 0);
811
+ (0, _defineProperty2["default"])(AbstractCliTest, "_writers", void 0);
776
812
  //# sourceMappingURL=AbstractCliTest.js.map