@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
@@ -1 +1 @@
1
- {"version":3,"file":"ActionExecuter2.test.js","names":["FeatureCommandExecuterContTest","test","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","setupMockCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","getLastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","fakeCommand","RegExp","code","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.emitter\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.setupMockCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\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\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static setupMockCommands() {\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ActionExecuter2.test.js","names":["FeatureCommandExecuterContTest","test","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","fakeInstallCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","getLastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","fakeCommand","RegExp","code","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.fakeInstallCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.emitter\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.fakeInstallCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.fakeInstallCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.fakeInstallCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('Y')\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\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\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static fakeInstallCommands() {\n\t\tCommandService.fakeCommand(new RegExp(/yarn|npm/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import AbstractCliTest from '../../tests/AbstractCliTest';
2
2
  export default class GlobalEmitterTest extends AbstractCliTest {
3
3
  protected static globalEmitterEmitsEquentally(): Promise<void>;
4
+ protected static didExecuteAcceptsInstalledPackages(): Promise<void>;
4
5
  }
@@ -15,10 +15,10 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
15
15
  var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
16
16
  var _testUtils = require("@sprucelabs/test-utils");
17
17
  var _AbstractCliTest2 = _interopRequireDefault(require("../../tests/AbstractCliTest"));
18
- var _dec, _class;
18
+ var _dec, _dec2, _class;
19
19
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
20
20
  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; } }
21
- var GlobalEmitterTest = (_dec = (0, _testUtils.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
21
+ var GlobalEmitterTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
22
22
  (0, _inherits2["default"])(GlobalEmitterTest, _AbstractCliTest);
23
23
  var _super = _createSuper(GlobalEmitterTest);
24
24
  function GlobalEmitterTest() {
@@ -47,8 +47,45 @@ var GlobalEmitterTest = (_dec = (0, _testUtils.test)(), (_class = /*#__PURE__*/f
47
47
  }
48
48
  return globalEmitterEmitsEquentally;
49
49
  }()
50
+ }, {
51
+ key: "didExecuteAcceptsInstalledPackages",
52
+ value: function () {
53
+ var _didExecuteAcceptsInstalledPackages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
54
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
55
+ while (1) {
56
+ switch (_context2.prev = _context2.next) {
57
+ case 0:
58
+ _context2.next = 2;
59
+ return this.emitter.on('feature.did-execute', function () {
60
+ return {
61
+ packagesInstalled: [{
62
+ isDev: true,
63
+ name: (0, _testUtils.generateId)(),
64
+ version: (0, _testUtils.generateId)()
65
+ }]
66
+ };
67
+ });
68
+ case 2:
69
+ _context2.next = 4;
70
+ return this.emitter.emitAndFlattenResponses('feature.did-execute', {
71
+ actionCode: (0, _testUtils.generateId)(),
72
+ featureCode: 'permission',
73
+ results: {}
74
+ });
75
+ case 4:
76
+ case "end":
77
+ return _context2.stop();
78
+ }
79
+ }
80
+ }, _callee2, this);
81
+ }));
82
+ function didExecuteAcceptsInstalledPackages() {
83
+ return _didExecuteAcceptsInstalledPackages.apply(this, arguments);
84
+ }
85
+ return didExecuteAcceptsInstalledPackages;
86
+ }()
50
87
  }]);
51
88
  return GlobalEmitterTest;
52
- }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "globalEmitterEmitsEquentally", [_dec], Object.getOwnPropertyDescriptor(_class, "globalEmitterEmitsEquentally"), _class)), _class));
89
+ }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "globalEmitterEmitsEquentally", [_dec], Object.getOwnPropertyDescriptor(_class, "globalEmitterEmitsEquentally"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "didExecuteAcceptsInstalledPackages", [_dec2], Object.getOwnPropertyDescriptor(_class, "didExecuteAcceptsInstalledPackages"), _class)), _class));
53
90
  exports["default"] = GlobalEmitterTest;
54
91
  //# sourceMappingURL=GlobalEmitter.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalEmitter.test.js","names":["GlobalEmitterTest","test","assert","isTrue","emitter","shouldEmitSequentally","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/GlobalEmitter.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class GlobalEmitterTest extends AbstractCliTest {\n\t@test()\n\tprotected static async globalEmitterEmitsEquentally() {\n\t\t//@ts-ignore\n\t\tassert.isTrue(this.emitter.shouldEmitSequentally)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,iBAAiB,WACpC,IAAAC,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,kHAAP;QAAA;UAAA;YAAA;cAAA;gBAEC;gBACAC,iBAAM,CAACC,MAAM,CAAC,IAAI,CAACC,OAAO,CAACC,qBAAqB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAL6CC,4BAAe;AAAA"}
1
+ {"version":3,"file":"GlobalEmitter.test.js","names":["GlobalEmitterTest","test","assert","isTrue","emitter","shouldEmitSequentally","on","packagesInstalled","isDev","name","generateId","version","emitAndFlattenResponses","actionCode","featureCode","results","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/GlobalEmitter.test.ts"],"sourcesContent":["import { test, assert, generateId } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class GlobalEmitterTest extends AbstractCliTest {\n\t@test()\n\tprotected static async globalEmitterEmitsEquentally() {\n\t\t//@ts-ignore\n\t\tassert.isTrue(this.emitter.shouldEmitSequentally)\n\t}\n\n\t@test()\n\tprotected static async didExecuteAcceptsInstalledPackages() {\n\t\tawait this.emitter.on('feature.did-execute', () => {\n\t\t\treturn {\n\t\t\t\tpackagesInstalled: [\n\t\t\t\t\t{\n\t\t\t\t\t\tisDev: true,\n\t\t\t\t\t\tname: generateId(),\n\t\t\t\t\t\tversion: generateId(),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\n\t\tawait this.emitter.emitAndFlattenResponses('feature.did-execute', {\n\t\t\tactionCode: generateId(),\n\t\t\tfeatureCode: 'permission',\n\t\t\tresults: {},\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,iBAAiB,WACpC,IAAAC,eAAI,GAAE,UAMN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,kHANP;QAAA;UAAA;YAAA;cAAA;gBAEC;gBACAC,iBAAM,CAACC,MAAM,CAAC,IAAI,CAACC,OAAO,CAACC,qBAAqB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,wHAED;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACD,OAAO,CAACE,EAAE,CAAC,qBAAqB,EAAE,YAAM;kBAClD,OAAO;oBACNC,iBAAiB,EAAE,CAClB;sBACCC,KAAK,EAAE,IAAI;sBACXC,IAAI,EAAE,IAAAC,qBAAU,GAAE;sBAClBC,OAAO,EAAE,IAAAD,qBAAU;oBACpB,CAAC;kBAEH,CAAC;gBACF,CAAC,CAAC;cAAA;gBAAA;gBAAA,OAEI,IAAI,CAACN,OAAO,CAACQ,uBAAuB,CAAC,qBAAqB,EAAE;kBACjEC,UAAU,EAAE,IAAAH,qBAAU,GAAE;kBACxBI,WAAW,EAAE,YAAY;kBACzBC,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA1B6CC,4BAAe;AAAA"}
@@ -233,7 +233,7 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
233
233
  var _canRegister = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
234
234
  var _results$skill,
235
235
  _this4 = this;
236
- var slug, isRegistered, skill, client, results, currentSkill, env, err, pkg, namespace;
236
+ var slug, isRegistered, skill, client, results, currentSkill, env, err, namespace;
237
237
  return _regenerator["default"].wrap(function _callee8$(_context8) {
238
238
  while (1) {
239
239
  switch (_context8.prev = _context8.next) {
@@ -298,10 +298,9 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
298
298
  case 41:
299
299
  err = _context8.sent;
300
300
  _testUtils.errorAssert.assertError(err, 'GENERIC');
301
- pkg = this.Service('pkg');
302
- namespace = pkg.get('skill.namespace');
301
+ namespace = this.Service('pkg').getSkillNamespace();
303
302
  _testUtils.assert.isEqual(namespace, slug);
304
- case 46:
303
+ case 45:
305
304
  case "end":
306
305
  return _context8.stop();
307
306
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SkillStore.test.js","names":["SkillStoreTest","test","store","SkillStore","assert","isFunction","register","doesThrowAsync","name","slug","err","errorAssert","assertError","loadCurrentSkill","isCurrentSkillRegistered","FeatureFixture","installCachedFeatures","loadCurrentSkillsNamespace","namespace","isEqual","setCurrentSkillsNamespace","Date","getTime","people","loginAsDemoPerson","isRegistered","isFalse","skill","isTruthy","isString","apiKey","id","connectToApi","client","authenticate","skillId","results","isTrue","currentSkill","env","Service","get","pkg","Store","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/SkillStore.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport SkillStore from '../../features/skill/stores/SkillStore'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class SkillStoreTest extends AbstractCliTest {\n\tprivate static store: SkillStore\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.store = this.SkillStore()\n\t}\n\n\t@test()\n\tprotected static async hasRegisterMethod() {\n\t\tassert.isFunction(this.store.register)\n\t}\n\n\t@test()\n\tprotected static async cantRegisterIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.register({\n\t\t\t\tname: 'awesome skill',\n\t\t\t\tslug: 'awesome-skill',\n\t\t\t})\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantLoadcurrentSkillIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() => this.store.loadCurrentSkill())\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantCheckIfSkillIsRegisteredNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.isCurrentSkillRegistered()\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async canGetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\t\tconst namespace = await this.store.loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'TestSkill')\n\t}\n\n\t@test()\n\tprotected static async canSetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tlet namespace = await this.store.loadCurrentSkillsNamespace()\n\t\tawait this.store.setCurrentSkillsNamespace('new-namespace')\n\t\tnamespace = await this.store.loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'NewNamespace')\n\t}\n\n\t@test()\n\tprotected static async canRegister() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst slug = `awesome-skill-${new Date().getTime()}`\n\t\tawait this.people.loginAsDemoPerson()\n\n\t\tlet isRegistered = await this.store.isCurrentSkillRegistered()\n\t\tassert.isFalse(isRegistered)\n\n\t\tconst skill = await this.store.register({\n\t\t\tname: 'awesome skill',\n\t\t\tslug,\n\t\t})\n\n\t\tassert.isTruthy(skill)\n\t\tassert.isEqual(skill.name, 'awesome skill')\n\t\tassert.isEqual(skill.slug, slug)\n\t\tassert.isString(skill.apiKey)\n\t\tassert.isString(skill.id)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst results = await client.authenticate({\n\t\t\tskillId: skill.id,\n\t\t\tapiKey: skill.apiKey,\n\t\t})\n\n\t\tassert.isEqual(results.skill?.id, skill.id)\n\n\t\tisRegistered = await this.store.isCurrentSkillRegistered()\n\t\tassert.isTrue(isRegistered)\n\n\t\tconst currentSkill = await this.store.loadCurrentSkill()\n\n\t\tassert.isEqual(currentSkill.id, skill.id)\n\t\tassert.isTrue(currentSkill.isRegistered)\n\t\tassert.isEqual(currentSkill.name, 'awesome skill')\n\t\tassert.isEqual(currentSkill.slug, slug)\n\t\tassert.isEqual(currentSkill.apiKey, skill.apiKey)\n\n\t\tconst env = this.Service('env')\n\n\t\tassert.isEqual(env.get('SKILL_ID'), skill.id)\n\t\tassert.isEqual(env.get('SKILL_API_KEY'), skill.apiKey)\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.setCurrentSkillsNamespace('test')\n\t\t)\n\n\t\terrorAssert.assertError(err, 'GENERIC')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst namespace = pkg.get('skill.namespace')\n\t\tassert.isEqual(namespace, slug)\n\t}\n\n\tprivate static SkillStore(): SkillStore {\n\t\treturn this.Store('skill', {})\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SkillStore.test.js","names":["SkillStoreTest","test","store","SkillStore","assert","isFunction","register","doesThrowAsync","name","slug","err","errorAssert","assertError","loadCurrentSkill","isCurrentSkillRegistered","FeatureFixture","installCachedFeatures","loadCurrentSkillsNamespace","namespace","isEqual","setCurrentSkillsNamespace","Date","getTime","people","loginAsDemoPerson","isRegistered","isFalse","skill","isTruthy","isString","apiKey","id","connectToApi","client","authenticate","skillId","results","isTrue","currentSkill","env","Service","get","getSkillNamespace","Store","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/SkillStore.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport SkillStore from '../../features/skill/stores/SkillStore'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class SkillStoreTest extends AbstractCliTest {\n\tprivate static store: SkillStore\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.store = this.SkillStore()\n\t}\n\n\t@test()\n\tprotected static async hasRegisterMethod() {\n\t\tassert.isFunction(this.store.register)\n\t}\n\n\t@test()\n\tprotected static async cantRegisterIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.register({\n\t\t\t\tname: 'awesome skill',\n\t\t\t\tslug: 'awesome-skill',\n\t\t\t})\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantLoadcurrentSkillIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() => this.store.loadCurrentSkill())\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantCheckIfSkillIsRegisteredNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.isCurrentSkillRegistered()\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async canGetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\t\tconst namespace = await this.store.loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'TestSkill')\n\t}\n\n\t@test()\n\tprotected static async canSetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tlet namespace = await this.store.loadCurrentSkillsNamespace()\n\t\tawait this.store.setCurrentSkillsNamespace('new-namespace')\n\t\tnamespace = await this.store.loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'NewNamespace')\n\t}\n\n\t@test()\n\tprotected static async canRegister() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst slug = `awesome-skill-${new Date().getTime()}`\n\t\tawait this.people.loginAsDemoPerson()\n\n\t\tlet isRegistered = await this.store.isCurrentSkillRegistered()\n\t\tassert.isFalse(isRegistered)\n\n\t\tconst skill = await this.store.register({\n\t\t\tname: 'awesome skill',\n\t\t\tslug,\n\t\t})\n\n\t\tassert.isTruthy(skill)\n\t\tassert.isEqual(skill.name, 'awesome skill')\n\t\tassert.isEqual(skill.slug, slug)\n\t\tassert.isString(skill.apiKey)\n\t\tassert.isString(skill.id)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst results = await client.authenticate({\n\t\t\tskillId: skill.id,\n\t\t\tapiKey: skill.apiKey,\n\t\t})\n\n\t\tassert.isEqual(results.skill?.id, skill.id)\n\n\t\tisRegistered = await this.store.isCurrentSkillRegistered()\n\t\tassert.isTrue(isRegistered)\n\n\t\tconst currentSkill = await this.store.loadCurrentSkill()\n\n\t\tassert.isEqual(currentSkill.id, skill.id)\n\t\tassert.isTrue(currentSkill.isRegistered)\n\t\tassert.isEqual(currentSkill.name, 'awesome skill')\n\t\tassert.isEqual(currentSkill.slug, slug)\n\t\tassert.isEqual(currentSkill.apiKey, skill.apiKey)\n\n\t\tconst env = this.Service('env')\n\n\t\tassert.isEqual(env.get('SKILL_ID'), skill.id)\n\t\tassert.isEqual(env.get('SKILL_API_KEY'), skill.apiKey)\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.setCurrentSkillsNamespace('test')\n\t\t)\n\n\t\terrorAssert.assertError(err, 'GENERIC')\n\n\t\tconst namespace = this.Service('pkg').getSkillNamespace()\n\t\tassert.isEqual(namespace, slug)\n\t}\n\n\tprivate static SkillStore(): SkillStore {\n\t\treturn this.Store('skill', {})\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { SpruceSchemas } from '@sprucelabs/mercury-types';
2
+ export declare type ListPermContractsTargetAndPayload = SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsEmitTargetAndPayload;
3
+ export default class EventFaker {
4
+ fakeListPermissionContracts(cb?: (targetAndPayload: ListPermContractsTargetAndPayload) => void | SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsResponsePayload['permissionContracts']): Promise<void>;
5
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _spruceTestFixtures = require("@sprucelabs/spruce-test-fixtures");
13
+ var EventFaker = /*#__PURE__*/function () {
14
+ function EventFaker() {
15
+ (0, _classCallCheck2["default"])(this, EventFaker);
16
+ }
17
+ (0, _createClass2["default"])(EventFaker, [{
18
+ key: "fakeListPermissionContracts",
19
+ value: function () {
20
+ var _fakeListPermissionContracts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(cb) {
21
+ return _regenerator["default"].wrap(function _callee$(_context) {
22
+ while (1) {
23
+ switch (_context.prev = _context.next) {
24
+ case 0:
25
+ _context.next = 2;
26
+ return _spruceTestFixtures.eventFaker.on('list-permission-contracts::v2020_12_25', function (targetAndPayload) {
27
+ var _cb;
28
+ return {
29
+ permissionContracts: (_cb = cb === null || cb === void 0 ? void 0 : cb(targetAndPayload)) !== null && _cb !== void 0 ? _cb : []
30
+ };
31
+ });
32
+ case 2:
33
+ case "end":
34
+ return _context.stop();
35
+ }
36
+ }
37
+ }, _callee);
38
+ }));
39
+ function fakeListPermissionContracts(_x) {
40
+ return _fakeListPermissionContracts.apply(this, arguments);
41
+ }
42
+ return fakeListPermissionContracts;
43
+ }()
44
+ }]);
45
+ return EventFaker;
46
+ }();
47
+ exports["default"] = EventFaker;
48
+ //# sourceMappingURL=EventFaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventFaker.js","names":["EventFaker","cb","eventFaker","on","targetAndPayload","permissionContracts"],"sources":["../../../src/__tests__/support/EventFaker.ts"],"sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { eventFaker } from '@sprucelabs/spruce-test-fixtures'\n\nexport type ListPermContractsTargetAndPayload =\n\tSpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsEmitTargetAndPayload\nexport default class EventFaker {\n\tpublic async fakeListPermissionContracts(\n\t\tcb?: (\n\t\t\ttargetAndPayload: ListPermContractsTargetAndPayload\n\t\t) =>\n\t\t\t| void\n\t\t\t| SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsResponsePayload['permissionContracts']\n\t) {\n\t\tawait eventFaker.on(\n\t\t\t'list-permission-contracts::v2020_12_25',\n\t\t\t(targetAndPayload) => {\n\t\t\t\treturn {\n\t\t\t\t\tpermissionContracts: cb?.(targetAndPayload) ?? [],\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t}\n}\n"],"mappings":";;;;;;;;;;;AACA;AAA6D,IAIxCA,UAAU;EAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,iHAC9B,iBACCC,EAIkG;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAE5FC,8BAAU,CAACC,EAAE,CAClB,wCAAwC,EACxC,UAACC,gBAAgB,EAAK;kBAAA;kBACrB,OAAO;oBACNC,mBAAmB,SAAEJ,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAGG,gBAAgB,CAAC,qCAAI;kBAChD,CAAC;gBACF,CAAC,CACD;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA"}
@@ -27,7 +27,7 @@ export default abstract class AbstractAction<S extends Schema = Schema> implemen
27
27
  private actionExecuter;
28
28
  constructor(options: ActionOptions);
29
29
  abstract execute(options: SchemaValues<S>): Promise<FeatureActionResponse>;
30
- protected Action(featureCode: string, actionCode: string): FeatureAction<Schema>;
30
+ protected Action(featureCode: FeatureCode, actionCode: string): FeatureAction<Schema>;
31
31
  Service<S extends Service>(type: S, cwd?: string): ServiceMap[S];
32
32
  protected Store<C extends StoreCode>(code: C, options?: CreateStoreOptions<C>): StoreMap[C];
33
33
  protected Writer<C extends WriterCode>(code: C, options?: Partial<WriterOptions>): WriterMap[C];
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","features","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected features: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.features = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.features.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.features.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizer.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","features","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected features: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.features = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: FeatureCode, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.features.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.features.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizer.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}
@@ -25,14 +25,14 @@ export default abstract class AbstractFeature<S extends Schema | undefined = Sch
25
25
  cwd: string;
26
26
  scripts: Record<string, any>;
27
27
  actionsDir: string | undefined;
28
- protected actionFactory?: ActionFactory;
28
+ protected actions?: ActionFactory;
29
29
  protected templates: Templates;
30
30
  protected emitter: GlobalEmitter;
31
- protected featureInstaller: FeatureInstaller;
31
+ protected features: FeatureInstaller;
32
32
  protected ui: GraphicsInterface;
33
33
  private serviceFactory;
34
34
  private storeFactory;
35
- private writerFactory;
35
+ private writers;
36
36
  private apiClientFactory;
37
37
  private actionExecuter;
38
38
  private actionCodes?;
@@ -33,30 +33,30 @@ var AbstractFeature = /*#__PURE__*/function () {
33
33
  (0, _defineProperty2["default"])(this, "cwd", void 0);
34
34
  (0, _defineProperty2["default"])(this, "scripts", {});
35
35
  (0, _defineProperty2["default"])(this, "actionsDir", void 0);
36
- (0, _defineProperty2["default"])(this, "actionFactory", void 0);
36
+ (0, _defineProperty2["default"])(this, "actions", void 0);
37
37
  (0, _defineProperty2["default"])(this, "templates", void 0);
38
38
  (0, _defineProperty2["default"])(this, "emitter", void 0);
39
- (0, _defineProperty2["default"])(this, "featureInstaller", void 0);
39
+ (0, _defineProperty2["default"])(this, "features", void 0);
40
40
  (0, _defineProperty2["default"])(this, "ui", void 0);
41
41
  (0, _defineProperty2["default"])(this, "serviceFactory", void 0);
42
42
  (0, _defineProperty2["default"])(this, "storeFactory", void 0);
43
- (0, _defineProperty2["default"])(this, "writerFactory", void 0);
43
+ (0, _defineProperty2["default"])(this, "writers", void 0);
44
44
  (0, _defineProperty2["default"])(this, "apiClientFactory", void 0);
45
45
  (0, _defineProperty2["default"])(this, "actionExecuter", void 0);
46
46
  (0, _defineProperty2["default"])(this, "actionCodes", void 0);
47
47
  this.cwd = options.cwd;
48
48
  this.serviceFactory = options.serviceFactory;
49
49
  this.templates = options.templates;
50
- this.actionFactory = options.actionFactory;
50
+ this.actions = options.actionFactory;
51
51
  this.storeFactory = options.storeFactory;
52
- this.writerFactory = new _WriterFactory["default"]({
52
+ this.writers = new _WriterFactory["default"]({
53
53
  templates: this.templates,
54
54
  ui: options.ui,
55
55
  settings: this.Service('settings'),
56
56
  linter: this.Service('lint')
57
57
  });
58
58
  this.emitter = options.emitter;
59
- this.featureInstaller = options.featureInstaller;
59
+ this.features = options.featureInstaller;
60
60
  this.ui = options.ui;
61
61
  this.apiClientFactory = options.apiClientFactory;
62
62
  this.actionExecuter = options.actionExecuter;
@@ -124,7 +124,7 @@ var AbstractFeature = /*#__PURE__*/function () {
124
124
  }, {
125
125
  key: "Writer",
126
126
  value: function Writer(code, options) {
127
- return this.writerFactory.Writer(code, _objectSpread({
127
+ return this.writers.Writer(code, _objectSpread({
128
128
  fileDescriptions: this.fileDescriptions,
129
129
  linter: this.Service('lint')
130
130
  }, options));
@@ -132,7 +132,7 @@ var AbstractFeature = /*#__PURE__*/function () {
132
132
  }, {
133
133
  key: "getFeature",
134
134
  value: function getFeature(code) {
135
- return this.featureInstaller.getFeature(code);
135
+ return this.features.getFeature(code);
136
136
  }
137
137
  }, {
138
138
  key: "getAvailableActionCodes",
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractFeature.js","names":["AbstractFeature","options","cwd","serviceFactory","templates","actionFactory","storeFactory","writerFactory","WriterFactory","ui","settings","Service","linter","emitter","featureInstaller","apiClientFactory","actionExecuter","featureCode","actionCode","Action","_options","type","code","Writer","fileDescriptions","getFeature","actionsDir","actionCodes","globby","pathUtil","join","matches","codes","match","generatedCode","featuresUtil","filePathToActionCode","push","Store"],"sources":["../../src/features/AbstractFeature.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport globby from 'globby'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { NpmPackage, GeneratedFile, FileDescription } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport ActionExecuter from './ActionExecuter'\nimport ActionFactory from './ActionFactory'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\n\nexport default abstract class AbstractFeature<\n\tS extends Schema | undefined = Schema | undefined\n> implements ServiceProvider\n{\n\tpublic abstract description: string\n\tpublic readonly dependencies: FeatureDependency[] = []\n\tpublic readonly packageDependencies: NpmPackage[] = []\n\tpublic readonly optionsSchema?: S\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled?(): Promise<boolean>\n\n\tpublic abstract readonly code: FeatureCode\n\tpublic abstract readonly nameReadable: string\n\tpublic readonly installOrderWeight: number = 0\n\n\tpublic cwd: string\n\tpublic scripts: Record<string, any> = {}\n\tpublic actionsDir: string | undefined\n\tprotected actionFactory?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected featureInstaller: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\tprivate actionCodes?: string[]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.templates = options.templates\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writerFactory = new WriterFactory({\n\t\t\ttemplates: this.templates,\n\t\t\tui: options.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t\tlinter: this.Service('lint'),\n\t\t})\n\t\tthis.emitter = options.emitter\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic async beforePackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tpublic getFeature<Code extends FeatureCode>(code: Code) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async getAvailableActionCodes(): Promise<string[]> {\n\t\tif (!this.actionsDir) {\n\t\t\treturn []\n\t\t}\n\n\t\tif (!this.actionCodes) {\n\t\t\tconst matches: string[] = await globby(\n\t\t\t\tpathUtil.join(this.actionsDir, '**/*Action.js')\n\t\t\t)\n\n\t\t\tconst codes: string[] = []\n\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst generatedCode = featuresUtil.filePathToActionCode(match)\n\t\t\t\tcodes.push(generatedCode)\n\t\t\t}\n\n\t\t\tthis.actionCodes = codes\n\t\t}\n\n\t\treturn this.actionCodes\n\t}\n\n\tpublic Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n\nexport interface InstallResults {\n\tfiles?: GeneratedFile[]\n\tcwd?: string\n}\n\nexport interface FeatureDependency {\n\tisRequired: boolean\n\tcode: FeatureCode\n}\n\nexport interface FeatureOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\ttemplates: Templates\n\tstoreFactory: StoreFactory\n\tactionFactory?: ActionFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tapiClientFactory: ApiClientFactory\n\tactionExecuter: ActionExecuter\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AbstractFeature.js","names":["AbstractFeature","options","cwd","serviceFactory","templates","actions","actionFactory","storeFactory","writers","WriterFactory","ui","settings","Service","linter","emitter","features","featureInstaller","apiClientFactory","actionExecuter","featureCode","actionCode","Action","_options","type","code","Writer","fileDescriptions","getFeature","actionsDir","actionCodes","globby","pathUtil","join","matches","codes","match","generatedCode","featuresUtil","filePathToActionCode","push","Store"],"sources":["../../src/features/AbstractFeature.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport globby from 'globby'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { NpmPackage, GeneratedFile, FileDescription } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport ActionExecuter from './ActionExecuter'\nimport ActionFactory from './ActionFactory'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\n\nexport default abstract class AbstractFeature<\n\tS extends Schema | undefined = Schema | undefined\n> implements ServiceProvider\n{\n\tpublic abstract description: string\n\tpublic readonly dependencies: FeatureDependency[] = []\n\tpublic readonly packageDependencies: NpmPackage[] = []\n\tpublic readonly optionsSchema?: S\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled?(): Promise<boolean>\n\n\tpublic abstract readonly code: FeatureCode\n\tpublic abstract readonly nameReadable: string\n\tpublic readonly installOrderWeight: number = 0\n\n\tpublic cwd: string\n\tpublic scripts: Record<string, any> = {}\n\tpublic actionsDir: string | undefined\n\tprotected actions?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected features: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writers: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\tprivate actionCodes?: string[]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.templates = options.templates\n\t\tthis.actions = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writers = new WriterFactory({\n\t\t\ttemplates: this.templates,\n\t\t\tui: options.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t\tlinter: this.Service('lint'),\n\t\t})\n\t\tthis.emitter = options.emitter\n\t\tthis.features = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic async beforePackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writers.Writer(code, {\n\t\t\tfileDescriptions: this.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tpublic getFeature<Code extends FeatureCode>(code: Code) {\n\t\treturn this.features.getFeature(code)\n\t}\n\n\tpublic async getAvailableActionCodes(): Promise<string[]> {\n\t\tif (!this.actionsDir) {\n\t\t\treturn []\n\t\t}\n\n\t\tif (!this.actionCodes) {\n\t\t\tconst matches: string[] = await globby(\n\t\t\t\tpathUtil.join(this.actionsDir, '**/*Action.js')\n\t\t\t)\n\n\t\t\tconst codes: string[] = []\n\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst generatedCode = featuresUtil.filePathToActionCode(match)\n\t\t\t\tcodes.push(generatedCode)\n\t\t\t}\n\n\t\t\tthis.actionCodes = codes\n\t\t}\n\n\t\treturn this.actionCodes\n\t}\n\n\tpublic Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n\nexport interface InstallResults {\n\tfiles?: GeneratedFile[]\n\tcwd?: string\n}\n\nexport interface FeatureDependency {\n\tisRequired: boolean\n\tcode: FeatureCode\n}\n\nexport interface FeatureOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\ttemplates: Templates\n\tstoreFactory: StoreFactory\n\tactionFactory?: ActionFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tapiClientFactory: ApiClientFactory\n\tactionExecuter: ActionExecuter\n}\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { FeatureCode, FeatureAction } from './features.types';
6
6
  export default class ActionExecuter {
7
7
  private emitter;
8
8
  private ui;
9
- private actionFactory;
9
+ private actions;
10
10
  private featureInstallerFactory;
11
11
  private shouldAutoHandleDependencies;
12
12
  private shouldThrowOnListenerError;
@@ -24,14 +24,14 @@ var ActionExecuter = /*#__PURE__*/function () {
24
24
  (0, _classCallCheck2["default"])(this, ActionExecuter);
25
25
  (0, _defineProperty2["default"])(this, "emitter", void 0);
26
26
  (0, _defineProperty2["default"])(this, "ui", void 0);
27
- (0, _defineProperty2["default"])(this, "actionFactory", void 0);
27
+ (0, _defineProperty2["default"])(this, "actions", void 0);
28
28
  (0, _defineProperty2["default"])(this, "featureInstallerFactory", void 0);
29
29
  (0, _defineProperty2["default"])(this, "shouldAutoHandleDependencies", void 0);
30
30
  (0, _defineProperty2["default"])(this, "shouldThrowOnListenerError", void 0);
31
31
  this.featureInstallerFactory = options.featureInstallerFactory;
32
32
  this.emitter = options.emitter;
33
33
  this.ui = options.ui;
34
- this.actionFactory = options.actionFactory;
34
+ this.actions = options.actionFactory;
35
35
  this.shouldAutoHandleDependencies = (_options$shouldAutoHa = options.shouldAutoHandleDependencies) !== null && _options$shouldAutoHa !== void 0 ? _options$shouldAutoHa : true;
36
36
  this.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError;
37
37
  }
@@ -263,8 +263,7 @@ var ActionExecuter = /*#__PURE__*/function () {
263
263
  value: function Action(featureCode, actionCode) {
264
264
  var _this = this;
265
265
  var featureInstaller = this.getFeatureInstaller();
266
- var actionFactory = this.actionFactory;
267
- var action = actionFactory.Action({
266
+ var action = this.actions.Action({
268
267
  featureCode: featureCode,
269
268
  actionCode: actionCode,
270
269
  actionExecuter: this,
@@ -1 +1 @@
1
- {"version":3,"file":"ActionExecuter.js","names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","merge","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"sources":["../../src/features/ActionExecuter.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actionFactory: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst actionFactory = this.actionFactory\n\t\tconst action = actionFactory.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ActionExecuter.js","names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actions","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","merge","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"sources":["../../src/features/ActionExecuter.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actions: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actions = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err: any) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst action = this.actions.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n"],"mappings":"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"}