@sprucelabs/spruce-cli 18.2.0 → 18.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/CHANGELOG.md +10 -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/EventWriter.test.d.ts +4 -0
  35. package/build/__tests__/behavioral/events/EventWriter.test.js +116 -0
  36. package/build/__tests__/behavioral/events/EventWriter.test.js.map +1 -0
  37. package/build/__tests__/behavioral/{ListeningToCoreEvents.test.d.ts → events/ListeningToCoreEvents.test.d.ts} +1 -1
  38. package/build/__tests__/behavioral/{ListeningToCoreEvents.test.js → events/ListeningToCoreEvents.test.js} +1 -1
  39. package/build/__tests__/behavioral/events/ListeningToCoreEvents.test.js.map +1 -0
  40. package/build/__tests__/behavioral/{RegisteringEventsOnBoot.test.d.ts → events/RegisteringEventsOnBoot.test.d.ts} +1 -1
  41. package/build/__tests__/behavioral/{RegisteringEventsOnBoot.test.js → events/RegisteringEventsOnBoot.test.js} +2 -2
  42. package/build/__tests__/behavioral/events/RegisteringEventsOnBoot.test.js.map +1 -0
  43. package/build/__tests__/behavioral/{RegisteringGlobalEvents.test.d.ts → events/RegisteringGlobalEvents.test.d.ts} +2 -3
  44. package/build/__tests__/behavioral/{RegisteringGlobalEvents.test.js → events/RegisteringGlobalEvents.test.js} +45 -70
  45. package/build/__tests__/behavioral/events/RegisteringGlobalEvents.test.js.map +1 -0
  46. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
  47. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +16 -9
  48. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  49. package/build/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.d.ts → events/SyncingEventsOnlyFromDependencies.test.d.ts} +1 -1
  50. package/build/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.js → events/SyncingEventsOnlyFromDependencies.test.js} +1 -1
  51. package/build/__tests__/behavioral/events/SyncingEventsOnlyFromDependencies.test.js.map +1 -0
  52. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.d.ts +2 -2
  53. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +7 -7
  54. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
  55. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.d.ts +6 -0
  56. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js +85 -0
  57. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js.map +1 -0
  58. package/build/__tests__/behavioral/permissions/PermissionStore.test.d.ts +5 -4
  59. package/build/__tests__/behavioral/permissions/PermissionStore.test.js +97 -63
  60. package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
  61. package/build/__tests__/behavioral/permissions/PermissionWriter.test.d.ts +5 -0
  62. package/build/__tests__/behavioral/permissions/PermissionWriter.test.js +88 -0
  63. package/build/__tests__/behavioral/permissions/PermissionWriter.test.js.map +1 -0
  64. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.d.ts +15 -4
  65. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js +325 -28
  66. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
  67. package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.d.ts +11 -0
  68. package/build/__tests__/behavioral/permissions/{AbstractPermissionsTest.js → support/AbstractPermissionsTest.js} +34 -2
  69. package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.js.map +1 -0
  70. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.d.ts +1 -0
  71. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js +11 -0
  72. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js.map +1 -0
  73. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.d.ts +1 -0
  74. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js +17 -0
  75. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js.map +1 -0
  76. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.d.ts +5 -0
  77. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js +10 -0
  78. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js.map +1 -0
  79. package/build/__tests__/behavioral/{CreatingSchemasWithGenerics.test.d.ts → schemas/CreatingSchemasWithGenerics.test.d.ts} +1 -1
  80. package/build/__tests__/behavioral/{CreatingSchemasWithGenerics.test.js → schemas/CreatingSchemasWithGenerics.test.js} +2 -2
  81. package/build/__tests__/behavioral/schemas/CreatingSchemasWithGenerics.test.js.map +1 -0
  82. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.d.ts +1 -1
  83. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +46 -46
  84. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  85. package/build/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.d.ts → schemas/SettingUpSchemasForModuleDistribution.test.d.ts} +1 -1
  86. package/build/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.js → schemas/SettingUpSchemasForModuleDistribution.test.js} +3 -3
  87. package/build/__tests__/behavioral/schemas/SettingUpSchemasForModuleDistribution.test.js.map +1 -0
  88. package/build/__tests__/behavioral/{InstallingASkillAtAnOrg.test.d.ts → skill/InstallingASkillAtAnOrg.test.d.ts} +1 -1
  89. package/build/__tests__/behavioral/{InstallingASkillAtAnOrg.test.js → skill/InstallingASkillAtAnOrg.test.js} +2 -2
  90. package/build/__tests__/behavioral/skill/InstallingASkillAtAnOrg.test.js.map +1 -0
  91. package/build/__tests__/behavioral/{LoggingInAsASkill.test.d.ts → skill/LoggingInAsASkill.test.d.ts} +1 -1
  92. package/build/__tests__/behavioral/{LoggingInAsASkill.test.js → skill/LoggingInAsASkill.test.js} +2 -2
  93. package/build/__tests__/behavioral/skill/LoggingInAsASkill.test.js.map +1 -0
  94. package/build/__tests__/behavioral/{RebuildingASkill.test.d.ts → skill/RebuildingASkill.test.d.ts} +1 -1
  95. package/build/__tests__/behavioral/{RebuildingASkill.test.js → skill/RebuildingASkill.test.js} +2 -2
  96. package/build/__tests__/behavioral/skill/RebuildingASkill.test.js.map +1 -0
  97. package/build/__tests__/behavioral/tests/CreatingATest.test.js +2 -2
  98. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  99. package/build/__tests__/behavioral/{SettingUpASkillForTesting.test.d.ts → tests/SettingUpASkillForTesting.test.d.ts} +1 -1
  100. package/build/__tests__/behavioral/{SettingUpASkillForTesting.test.js → tests/SettingUpASkillForTesting.test.js} +2 -2
  101. package/build/__tests__/behavioral/tests/SettingUpASkillForTesting.test.js.map +1 -0
  102. package/build/__tests__/behavioral/{TestReporterSettingsRemembered.test.d.ts → tests/TestReporterSettingsRemembered.test.d.ts} +1 -1
  103. package/build/__tests__/behavioral/{TestReporterSettingsRemembered.test.js → tests/TestReporterSettingsRemembered.test.js} +1 -1
  104. package/build/__tests__/behavioral/tests/TestReporterSettingsRemembered.test.js.map +1 -0
  105. package/build/__tests__/behavioral/{TestingDataStores.test.d.ts → tests/TestingDataStores.test.d.ts} +1 -1
  106. package/build/__tests__/behavioral/{TestingDataStores.test.js → tests/TestingDataStores.test.js} +3 -3
  107. package/build/__tests__/behavioral/tests/TestingDataStores.test.js.map +1 -0
  108. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +7 -3
  109. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  110. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +2 -2
  111. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  112. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +1 -1
  113. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  114. package/build/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.d.ts → views/RegisteringSkillViewOnBoot.test.d.ts} +4 -4
  115. package/build/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.js → views/RegisteringSkillViewOnBoot.test.js} +2 -2
  116. package/build/__tests__/behavioral/views/RegisteringSkillViewOnBoot.test.js.map +1 -0
  117. package/build/__tests__/behavioral/{WatchingSkillViews.test.d.ts → views/WatchingSkillViews.test.d.ts} +1 -1
  118. package/build/__tests__/behavioral/{WatchingSkillViews.test.js → views/WatchingSkillViews.test.js} +2 -2
  119. package/build/__tests__/behavioral/views/WatchingSkillViews.test.js.map +1 -0
  120. package/build/__tests__/implementation/ActionExecuter2.test.d.ts +1 -1
  121. package/build/__tests__/implementation/ActionExecuter2.test.js +23 -11
  122. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  123. package/build/__tests__/implementation/GlobalEmitter.test.d.ts +1 -0
  124. package/build/__tests__/implementation/GlobalEmitter.test.js +40 -3
  125. package/build/__tests__/implementation/GlobalEmitter.test.js.map +1 -1
  126. package/build/__tests__/implementation/SkillStore.test.js +3 -4
  127. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  128. package/build/features/AbstractAction.d.ts +1 -1
  129. package/build/features/AbstractAction.js.map +1 -1
  130. package/build/features/AbstractFeature.d.ts +3 -3
  131. package/build/features/AbstractFeature.js +8 -8
  132. package/build/features/AbstractFeature.js.map +1 -1
  133. package/build/features/ActionExecuter.d.ts +1 -1
  134. package/build/features/ActionExecuter.js +3 -4
  135. package/build/features/ActionExecuter.js.map +1 -1
  136. package/build/features/ActionFactory.d.ts +12 -5
  137. package/build/features/ActionFactory.js +27 -6
  138. package/build/features/ActionFactory.js.map +1 -1
  139. package/build/features/ActionQuestionAsker.d.ts +1 -1
  140. package/build/features/ActionQuestionAsker.js +6 -6
  141. package/build/features/ActionQuestionAsker.js.map +1 -1
  142. package/build/features/conversation/ConversationFeature.js +1 -1
  143. package/build/features/conversation/ConversationFeature.js.map +1 -1
  144. package/build/features/dependencies/DependencyFeature.js +1 -1
  145. package/build/features/dependencies/DependencyFeature.js.map +1 -1
  146. package/build/features/deploy/actions/HerokuAction.js +31 -33
  147. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  148. package/build/features/error/ErrorFeature.js +4 -4
  149. package/build/features/error/ErrorFeature.js.map +1 -1
  150. package/build/features/event/EventFeature.d.ts +8 -8
  151. package/build/features/event/EventFeature.js +7 -4
  152. package/build/features/event/EventFeature.js.map +1 -1
  153. package/build/features/event/actions/CreateAction.js.map +1 -1
  154. package/build/features/event/actions/ListenAction.js.map +1 -1
  155. package/build/features/event/stores/EventStore.d.ts +9 -9
  156. package/build/features/event/stores/EventStore.js +26 -26
  157. package/build/features/event/stores/EventStore.js.map +1 -1
  158. package/build/features/eventContract/EventContractFeature.js +4 -1
  159. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  160. package/build/features/eventContract/actions/PullAction.js +10 -5
  161. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  162. package/build/features/features.types.d.ts +2 -37
  163. package/build/features/features.types.js +0 -41
  164. package/build/features/features.types.js.map +1 -1
  165. package/build/features/log/LogFeature.js +1 -1
  166. package/build/features/log/LogFeature.js.map +1 -1
  167. package/build/features/node/NodeFeature.js.map +1 -1
  168. package/build/features/organization/actions/InstallAction.js.map +1 -1
  169. package/build/features/permission/PermissionFeature.d.ts +12 -2
  170. package/build/features/permission/PermissionFeature.js +138 -15
  171. package/build/features/permission/PermissionFeature.js.map +1 -1
  172. package/build/features/permission/actions/CreateAction.js +4 -1
  173. package/build/features/permission/actions/CreateAction.js.map +1 -1
  174. package/build/features/permission/actions/SyncAction.d.ts +5 -1
  175. package/build/features/permission/actions/SyncAction.js +28 -10
  176. package/build/features/permission/actions/SyncAction.js.map +1 -1
  177. package/build/features/permission/stores/PermissionStore.d.ts +6 -1
  178. package/build/features/permission/stores/PermissionStore.js +43 -31
  179. package/build/features/permission/stores/PermissionStore.js.map +1 -1
  180. package/build/features/permission/writers/PermissionWriter.d.ts +7 -1
  181. package/build/features/permission/writers/PermissionWriter.js +67 -18
  182. package/build/features/permission/writers/PermissionWriter.js.map +1 -1
  183. package/build/features/person/PersonFeature.js +1 -1
  184. package/build/features/person/PersonFeature.js.map +1 -1
  185. package/build/features/sandbox/SandboxFeature.js +1 -1
  186. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  187. package/build/features/schema/SchemaFeature.d.ts +8 -8
  188. package/build/features/schema/SchemaFeature.js +4 -4
  189. package/build/features/schema/SchemaFeature.js.map +1 -1
  190. package/build/features/schema/writers/SchemaWriter.d.ts +12 -12
  191. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  192. package/build/features/skill/SkillFeature.d.ts +11 -11
  193. package/build/features/skill/SkillFeature.js +2 -2
  194. package/build/features/skill/SkillFeature.js.map +1 -1
  195. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  196. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  197. package/build/features/skill/stores/SkillStore.js +1 -2
  198. package/build/features/skill/stores/SkillStore.js.map +1 -1
  199. package/build/features/store/StoreFeature.js +1 -1
  200. package/build/features/store/StoreFeature.js.map +1 -1
  201. package/build/features/store/actions/SyncAction.d.ts +1 -1
  202. package/build/features/store/actions/SyncAction.js.map +1 -1
  203. package/build/features/test/TestFeature.js +1 -1
  204. package/build/features/test/TestFeature.js.map +1 -1
  205. package/build/features/view/ViewFeature.js +1 -1
  206. package/build/features/view/ViewFeature.js.map +1 -1
  207. package/build/schemas/v2020_07_22/actionResponse.builder.d.ts +85 -0
  208. package/build/schemas/v2020_07_22/actionResponse.builder.js +70 -0
  209. package/build/schemas/v2020_07_22/actionResponse.builder.js.map +1 -0
  210. package/build/schemas/v2020_07_22/generatedFile.builder.d.ts +27 -0
  211. package/build/schemas/v2020_07_22/generatedFile.builder.js +45 -0
  212. package/build/schemas/v2020_07_22/generatedFile.builder.js.map +1 -0
  213. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js +4 -40
  214. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
  215. package/build/services/CommandService.d.ts +2 -2
  216. package/build/services/CommandService.js +6 -6
  217. package/build/services/CommandService.js.map +1 -1
  218. package/build/services/PkgService.d.ts +1 -0
  219. package/build/services/PkgService.js +5 -0
  220. package/build/services/PkgService.js.map +1 -1
  221. package/build/tests/AbstractCliTest.d.ts +7 -3
  222. package/build/tests/AbstractCliTest.js +81 -45
  223. package/build/tests/AbstractCliTest.js.map +1 -1
  224. package/build/tests/buildTestCache.js +7 -0
  225. package/build/tests/buildTestCache.js.map +1 -1
  226. package/build/tests/fixtures/FeatureFixture.js +1 -0
  227. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  228. package/build/tests/utilities/test.utility.d.ts +2 -0
  229. package/build/tests/utilities/test.utility.js +6 -0
  230. package/build/tests/utilities/test.utility.js.map +1 -1
  231. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  232. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts +4 -2
  233. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts.map +1 -1
  234. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js +13 -5
  235. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js.map +1 -1
  236. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts +2 -1
  237. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts.map +1 -1
  238. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js +3 -0
  239. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js.map +1 -1
  240. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  241. package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +20 -2
  242. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +20 -2
  243. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
  244. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js +2 -0
  245. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js.map +1 -1
  246. package/node_modules/@typescript-eslint/types/package.json +2 -2
  247. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/estree-to-ts-node-types.d.ts +2 -0
  248. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/ts-nodes.d.ts +2 -0
  249. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
  250. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +15 -3
  251. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
  252. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts +2 -0
  253. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts.map +1 -1
  254. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts +2 -0
  255. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts.map +1 -1
  256. package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
  257. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.d.ts.map +1 -1
  258. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js +63 -49
  259. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js.map +1 -1
  260. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  261. package/package.json +65 -33
  262. package/src/.spruce/events/events.contract.ts +24 -0
  263. package/src/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.ts +54 -0
  264. package/src/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.ts +79 -0
  265. package/src/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.ts +48 -0
  266. package/src/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.ts +13 -0
  267. package/src/.spruce/schemas/schemas.types.ts +171 -52
  268. package/src/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.ts +58 -0
  269. package/src/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.ts +33 -0
  270. package/src/.spruce/settings.json +2 -1
  271. package/src/GlobalEmitter.ts +2 -7
  272. package/src/__tests__/behavioral/TestingAConversation.test.ts +20 -37
  273. package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +14 -2
  274. package/src/__tests__/behavioral/events/EventWriter.test.ts +75 -0
  275. package/src/__tests__/behavioral/{ListeningToCoreEvents.test.ts → events/ListeningToCoreEvents.test.ts} +1 -1
  276. package/src/__tests__/behavioral/{RegisteringEventsOnBoot.test.ts → events/RegisteringEventsOnBoot.test.ts} +2 -2
  277. package/src/__tests__/behavioral/{RegisteringGlobalEvents.test.ts → events/RegisteringGlobalEvents.test.ts} +4 -12
  278. package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
  279. package/src/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.ts → events/SyncingEventsOnlyFromDependencies.test.ts} +2 -2
  280. package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +2 -2
  281. package/src/__tests__/behavioral/permissions/PermissionPlugin.test.ts +24 -0
  282. package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +96 -38
  283. package/src/__tests__/behavioral/permissions/PermissionWriter.test.ts +24 -0
  284. package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +125 -8
  285. package/src/__tests__/behavioral/permissions/support/AbstractPermissionsTest.ts +38 -0
  286. package/src/__tests__/behavioral/permissions/support/generateShortAlphaId.ts +5 -0
  287. package/src/__tests__/behavioral/permissions/support/renderPermissionTestFile.ts +27 -0
  288. package/src/__tests__/behavioral/permissions/support/sortPermissionContracts.ts +3 -0
  289. package/src/__tests__/behavioral/{CreatingSchemasWithGenerics.test.ts → schemas/CreatingSchemasWithGenerics.test.ts} +2 -2
  290. package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +12 -12
  291. package/src/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.ts → schemas/SettingUpSchemasForModuleDistribution.test.ts} +4 -4
  292. package/src/__tests__/behavioral/{InstallingASkillAtAnOrg.test.ts → skill/InstallingASkillAtAnOrg.test.ts} +2 -2
  293. package/src/__tests__/behavioral/{LoggingInAsASkill.test.ts → skill/LoggingInAsASkill.test.ts} +3 -3
  294. package/src/__tests__/behavioral/{RebuildingASkill.test.ts → skill/RebuildingASkill.test.ts} +2 -2
  295. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -2
  296. package/src/__tests__/behavioral/{SettingUpASkillForTesting.test.ts → tests/SettingUpASkillForTesting.test.ts} +2 -2
  297. package/src/__tests__/behavioral/{TestReporterSettingsRemembered.test.ts → tests/TestReporterSettingsRemembered.test.ts} +2 -2
  298. package/src/__tests__/behavioral/{TestingDataStores.test.ts → tests/TestingDataStores.test.ts} +3 -3
  299. package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +3 -0
  300. package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +3 -2
  301. package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
  302. package/src/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.ts → views/RegisteringSkillViewOnBoot.test.ts} +2 -2
  303. package/src/__tests__/behavioral/{WatchingSkillViews.test.ts → views/WatchingSkillViews.test.ts} +3 -3
  304. package/src/__tests__/implementation/ActionExecuter2.test.ts +13 -6
  305. package/src/__tests__/implementation/GlobalEmitter.test.ts +22 -1
  306. package/src/__tests__/implementation/SkillStore.test.ts +1 -2
  307. package/src/features/AbstractAction.ts +2 -2
  308. package/src/features/AbstractFeature.ts +8 -8
  309. package/src/features/ActionExecuter.ts +4 -5
  310. package/src/features/ActionFactory.ts +44 -20
  311. package/src/features/ActionQuestionAsker.ts +17 -17
  312. package/src/features/conversation/ConversationFeature.ts +1 -1
  313. package/src/features/dependencies/DependencyFeature.ts +1 -1
  314. package/src/features/deploy/actions/HerokuAction.ts +2 -2
  315. package/src/features/error/ErrorFeature.ts +4 -4
  316. package/src/features/event/EventFeature.ts +15 -14
  317. package/src/features/event/actions/CreateAction.ts +1 -1
  318. package/src/features/event/actions/ListenAction.ts +1 -1
  319. package/src/features/event/stores/EventStore.ts +37 -37
  320. package/src/features/eventContract/EventContractFeature.ts +6 -1
  321. package/src/features/eventContract/actions/PullAction.ts +7 -3
  322. package/src/features/features.types.ts +4 -41
  323. package/src/features/log/LogFeature.ts +1 -1
  324. package/src/features/node/NodeFeature.ts +1 -1
  325. package/src/features/organization/actions/InstallAction.ts +1 -1
  326. package/src/features/permission/PermissionFeature.ts +68 -11
  327. package/src/features/permission/actions/CreateAction.ts +2 -0
  328. package/src/features/permission/actions/SyncAction.ts +22 -3
  329. package/src/features/permission/stores/PermissionStore.ts +27 -8
  330. package/src/features/permission/writers/PermissionWriter.ts +62 -4
  331. package/src/features/person/PersonFeature.ts +1 -1
  332. package/src/features/sandbox/SandboxFeature.ts +1 -3
  333. package/src/features/schema/SchemaFeature.ts +14 -14
  334. package/src/features/schema/writers/SchemaWriter.ts +14 -15
  335. package/src/features/skill/SkillFeature.ts +18 -18
  336. package/src/features/skill/actions/RebuildAction.ts +1 -1
  337. package/src/features/skill/actions/RegisterAction.ts +1 -1
  338. package/src/features/skill/stores/SkillStore.ts +1 -2
  339. package/src/features/store/StoreFeature.ts +1 -1
  340. package/src/features/store/actions/SyncAction.ts +1 -1
  341. package/src/features/test/TestFeature.ts +1 -1
  342. package/src/features/view/ViewFeature.ts +1 -1
  343. package/src/schemas/v2020_07_22/actionResponse.builder.ts +62 -0
  344. package/src/schemas/v2020_07_22/generatedFile.builder.ts +44 -0
  345. package/src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts +3 -46
  346. package/src/services/CommandService.ts +5 -5
  347. package/src/services/PkgService.ts +4 -0
  348. package/src/tests/AbstractCliTest.ts +31 -13
  349. package/src/tests/buildTestCache.ts +7 -0
  350. package/src/tests/fixtures/FeatureFixture.ts +2 -0
  351. package/src/tests/utilities/test.utility.ts +13 -0
  352. package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +0 -1
  353. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +0 -1
  354. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +0 -1
  355. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +0 -1
  356. package/build/__tests__/behavioral/RebuildingASkill.test.js.map +0 -1
  357. package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +0 -1
  358. package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +0 -1
  359. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +0 -1
  360. package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +0 -1
  361. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +0 -1
  362. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +0 -1
  363. package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +0 -1
  364. package/build/__tests__/behavioral/TestingDataStores.test.js.map +0 -1
  365. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +0 -1
  366. package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.d.ts +0 -8
  367. package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.js.map +0 -1
  368. package/src/__tests__/behavioral/permissions/AbstractPermissionsTest.ts +0 -20
@@ -11,22 +11,6 @@ import universalFileDescriptions from '../universalFileDescriptions'
11
11
  import universalScripts from '../universalScripts'
12
12
  import Updater from './updaters/Updater'
13
13
 
14
- type SkillFeatureOptionsSchema =
15
- SpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema
16
- type SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature
17
-
18
- declare module '../../features/features.types' {
19
- interface FeatureMap {
20
- skill: SkillFeature
21
- }
22
-
23
- interface FeatureOptionsMap {
24
- skill: SchemaValues<SkillFeatureOptionsSchema>
25
- }
26
- }
27
-
28
- type UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions
29
-
30
14
  export default class SkillFeature<
31
15
  S extends SkillFeatureOptionsSchema = SkillFeatureOptionsSchema
32
16
  > extends AbstractFeature<S> {
@@ -120,7 +104,7 @@ export default class SkillFeature<
120
104
  name: 'AbstractSpruceFixtureTest',
121
105
  label: 'AbstractSpruceFixtureTest',
122
106
  import: '@sprucelabs/spruce-test-fixtures',
123
- featureCode: 'skill',
107
+ featureCode: 'node',
124
108
  },
125
109
  ],
126
110
  }
@@ -191,7 +175,7 @@ export default class SkillFeature<
191
175
  options?: UpgradeOptions
192
176
  }) {
193
177
  const { featureCode, actionCode, options: upgradeOptions } = options
194
- const isInstalled = await this.featureInstaller.isInstalled('skill')
178
+ const isInstalled = await this.features.isInstalled('skill')
195
179
 
196
180
  if (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {
197
181
  const updater = new Updater(this, this.emitter)
@@ -204,3 +188,19 @@ export default class SkillFeature<
204
188
  return {}
205
189
  }
206
190
  }
191
+
192
+ type SkillFeatureOptionsSchema =
193
+ SpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema
194
+ type SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature
195
+
196
+ declare module '../../features/features.types' {
197
+ interface FeatureMap {
198
+ skill: SkillFeature
199
+ }
200
+
201
+ interface FeatureOptionsMap {
202
+ skill: SchemaValues<SkillFeatureOptionsSchema>
203
+ }
204
+ }
205
+
206
+ type UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions
@@ -43,7 +43,7 @@ export default class RebuildAction extends AbstractAction<OptionsSchema> {
43
43
  InFlightEntertainment?.writeStatus(data)
44
44
  },
45
45
  })
46
- } catch (err) {
46
+ } catch (err: any) {
47
47
  this.resetUi()
48
48
 
49
49
  return {
@@ -67,7 +67,7 @@ export default class RegisterAction extends AbstractAction<OptionsSchema> {
67
67
  skill,
68
68
  },
69
69
  }
70
- } catch (err) {
70
+ } catch (err: any) {
71
71
  return {
72
72
  hints: [
73
73
  `If you've already registered your skill, try 'spruce login.skill'!`,
@@ -99,8 +99,7 @@ export default class SkillStore extends AbstractStore {
99
99
  }
100
100
 
101
101
  private getNamespaceFromPkg() {
102
- const pkg = this.Service('pkg')
103
- const nameFromPackage = pkg.get('skill.namespace')
102
+ const nameFromPackage = this.Service('pkg').getSkillNamespace()
104
103
  if (!nameFromPackage) {
105
104
  throw new Error(
106
105
  'You need need to set skill.namespace in the package.json'
@@ -59,7 +59,7 @@ export default class StoreFeature extends AbstractFeature {
59
59
  featureCode: string
60
60
  actionCode: string
61
61
  }) {
62
- const isInstalled = await this.featureInstaller.isInstalled('store')
62
+ const isInstalled = await this.features.isInstalled('store')
63
63
 
64
64
  const isUpgrade =
65
65
  isInstalled &&
@@ -40,7 +40,7 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
40
40
  return {
41
41
  files,
42
42
  }
43
- } catch (err) {
43
+ } catch (err: any) {
44
44
  return {
45
45
  errors: [err],
46
46
  }
@@ -123,7 +123,7 @@ export default class TestFeature extends AbstractFeature {
123
123
  const a = { ...ac, isDefaultExport: false }
124
124
 
125
125
  if (ac.featureCode) {
126
- const isInstalled = await this.featureInstaller.isInstalled(
126
+ const isInstalled = await this.features.isInstalled(
127
127
  ac.featureCode as any
128
128
  )
129
129
 
@@ -48,7 +48,7 @@ export default class ViewFeature extends AbstractFeature {
48
48
 
49
49
  void this.emitter.on('feature.did-execute', async (payload) => {
50
50
  const { featureCode, actionCode } = payload
51
- const isInstalled = await this.featureInstaller.isInstalled('view')
51
+ const isInstalled = await this.features.isInstalled('view')
52
52
 
53
53
  if (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {
54
54
  const files = await this.Writer('view').writePlugin(this.cwd)
@@ -0,0 +1,62 @@
1
+ import { buildSchema } from '@sprucelabs/schema'
2
+ import generatedFileBuilder from './generatedFile.builder'
3
+
4
+ export default buildSchema({
5
+ id: 'actionResponse',
6
+ name: 'Action response',
7
+ importsWhenLocal: [`import AbstractSpruceError from '@sprucelabs/error'`],
8
+ fields: {
9
+ files: {
10
+ type: 'schema',
11
+ isArray: true,
12
+ options: {
13
+ schema: generatedFileBuilder,
14
+ },
15
+ },
16
+ headline: {
17
+ type: 'text',
18
+ },
19
+ hints: {
20
+ type: 'text',
21
+ isArray: true,
22
+ },
23
+ summaryLines: {
24
+ type: 'text',
25
+ isArray: true,
26
+ },
27
+ errors: {
28
+ type: 'raw',
29
+ isArray: true,
30
+ options: {
31
+ valueType: 'AbstractSpruceError<any>',
32
+ },
33
+ },
34
+ meta: {
35
+ type: 'raw',
36
+ options: {
37
+ valueType: 'Record<string, any>',
38
+ },
39
+ },
40
+ packagesInstalled: {
41
+ type: 'schema',
42
+ isArray: true,
43
+ options: {
44
+ schema: buildSchema({
45
+ id: 'npmPackage',
46
+ fields: {
47
+ name: {
48
+ type: 'text',
49
+ isRequired: true,
50
+ },
51
+ version: {
52
+ type: 'text',
53
+ },
54
+ isDev: {
55
+ type: 'boolean',
56
+ },
57
+ },
58
+ }),
59
+ },
60
+ },
61
+ },
62
+ })
@@ -0,0 +1,44 @@
1
+ import { buildSchema } from '@sprucelabs/schema'
2
+
3
+ const generatedFileBuilder = buildSchema({
4
+ id: 'generatedFile',
5
+ fields: {
6
+ name: {
7
+ type: 'text',
8
+ isRequired: true,
9
+ },
10
+ path: {
11
+ type: 'text',
12
+ isRequired: true,
13
+ },
14
+ description: {
15
+ type: 'text',
16
+ },
17
+ action: {
18
+ type: 'select',
19
+ isRequired: true,
20
+ options: {
21
+ choices: [
22
+ {
23
+ label: 'Skipped',
24
+ value: 'skipped',
25
+ },
26
+ {
27
+ label: 'Generated',
28
+ value: 'generated',
29
+ },
30
+ {
31
+ label: 'Updated',
32
+ value: 'updated',
33
+ },
34
+ {
35
+ label: 'Deleted',
36
+ value: 'deleted',
37
+ },
38
+ ],
39
+ },
40
+ },
41
+ },
42
+ })
43
+
44
+ export default generatedFileBuilder
@@ -1,45 +1,5 @@
1
1
  import { buildSchema } from '@sprucelabs/schema'
2
-
3
- const fieldsSchema = buildSchema({
4
- id: 'generatedFileFields',
5
- fields: {
6
- name: {
7
- type: 'text',
8
- isRequired: true,
9
- },
10
- path: {
11
- type: 'text',
12
- isRequired: true,
13
- },
14
- description: {
15
- type: 'text',
16
- },
17
- action: {
18
- type: 'select',
19
- isRequired: true,
20
- options: {
21
- choices: [
22
- {
23
- label: 'Skipped',
24
- value: 'skipped',
25
- },
26
- {
27
- label: 'Generated',
28
- value: 'generated',
29
- },
30
- {
31
- label: 'Updated',
32
- value: 'updated',
33
- },
34
- {
35
- label: 'Deleted',
36
- value: 'deleted',
37
- },
38
- ],
39
- },
40
- },
41
- },
42
- })
2
+ import generatedFileBuilder from './generatedFile.builder'
43
3
 
44
4
  export default buildSchema({
45
5
  id: 'watcherDidDetectChangesEmitPayload',
@@ -51,13 +11,10 @@ export default buildSchema({
51
11
  isArray: true,
52
12
  options: {
53
13
  schemas: [
54
- buildSchema({
55
- id: 'generatedFile',
56
- fields: fieldsSchema.fields,
57
- }),
14
+ generatedFileBuilder,
58
15
  buildSchema({
59
16
  id: 'generatedDir',
60
- fields: fieldsSchema.fields,
17
+ fields: generatedFileBuilder.fields,
61
18
  }),
62
19
  ],
63
20
  },
@@ -13,7 +13,7 @@ export default class CommandService {
13
13
  public cwd: string
14
14
  private activeChildProcess: ChildProcess | undefined
15
15
  private ignoreCloseErrors = false
16
- private static mockResponses: {
16
+ private static fakeResponses: {
17
17
  command: string | RegExp
18
18
  response: MockResponse
19
19
  }[] = []
@@ -167,7 +167,7 @@ export default class CommandService {
167
167
 
168
168
  private getMockResponse(executable: string, args: string[]) {
169
169
  const mockKey = `${executable} ${args.join(' ')}`.trim()
170
- const commands = CommandService.mockResponses
170
+ const commands = CommandService.fakeResponses
171
171
  const match = commands.find((r) =>
172
172
  r.command instanceof RegExp
173
173
  ? mockKey.search(r.command) > -1
@@ -178,14 +178,14 @@ export default class CommandService {
178
178
  }
179
179
 
180
180
  public static fakeCommand(command: string | RegExp, response: MockResponse) {
181
- this.mockResponses.unshift({
181
+ this.fakeResponses.unshift({
182
182
  command,
183
183
  response,
184
184
  })
185
185
  }
186
186
 
187
- public static clearMockResponses() {
188
- this.mockResponses = []
187
+ public static clearFakedResponses() {
188
+ this.fakeResponses = []
189
189
  }
190
190
  }
191
191
 
@@ -93,6 +93,10 @@ export default class PkgService extends BasePkgService {
93
93
  return { executable, args }
94
94
  }
95
95
 
96
+ public getSkillNamespace() {
97
+ return this.get('skill.namespace')
98
+ }
99
+
96
100
  public async uninstall(pkg: string[] | string) {
97
101
  const packages = Array.isArray(pkg) ? pkg : [pkg]
98
102
  const args: string[] = ['uninstall', ...packages]
@@ -46,10 +46,6 @@ import SkillFixture from './fixtures/SkillFixture'
46
46
  import ViewFixture from './fixtures/ViewFixture'
47
47
  import testUtil from './utilities/test.utility'
48
48
 
49
- type ExecuterOptions = Partial<ActionExecuterOptions> & {
50
- optionOverrides?: OptionOverrides
51
- }
52
-
53
49
  export default abstract class AbstractCliTest extends AbstractSpruceTest {
54
50
  protected static cliRoot = pathUtil.join(__dirname, '..')
55
51
  protected static homeDir: string
@@ -64,6 +60,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
64
60
  private static _featureInstaller?: FeatureInstaller
65
61
  private static viewFixture?: ViewFixture
66
62
  private static originalEnv: { [x: string]: string | undefined }
63
+ private static _writers?: WriterFactory
67
64
 
68
65
  protected static async beforeAll() {
69
66
  await super.beforeAll()
@@ -82,6 +79,10 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
82
79
  protected static async beforeEach() {
83
80
  await super.beforeEach()
84
81
 
82
+ delete this._writers
83
+
84
+ ActionFactory.clearActionOverrides()
85
+
85
86
  //@ts-ignore
86
87
  process.env = { ...this.originalEnv }
87
88
 
@@ -106,7 +107,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
106
107
  ImportService.clearCache()
107
108
  SkillStore.clearCurrentSkill()
108
109
  EventStore.clearCache()
109
- CommandService.clearMockResponses()
110
+ CommandService.clearFakedResponses()
110
111
  MercuryClientFactory.reset()
111
112
  MercuryClientFactory.setIsTestMode(false)
112
113
 
@@ -134,11 +135,15 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
134
135
  if (diskUtil.doesDirExist(this.homeDir) && testUtil.shouldClearCache()) {
135
136
  diskUtil.deleteDir(this.homeDir)
136
137
  }
138
+
139
+ if (testUtil.shouldCleanupAfterEach()) {
140
+ FeatureFixture.deleteOldSkillDirs()
141
+ }
137
142
  }
138
143
 
139
144
  protected static async afterAll() {
140
145
  await super.afterAll()
141
- if (testUtil.shouldCleanupTestSkillDirs()) {
146
+ if (testUtil.shouldCleanupAfterAll()) {
142
147
  FeatureFixture.deleteOldSkillDirs()
143
148
  }
144
149
  }
@@ -252,9 +257,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
252
257
 
253
258
  protected static getViewFixture() {
254
259
  if (!this.viewFixture) {
255
- const writerFactory = this.WriterFactory()
256
-
257
- const viewWriter = writerFactory.Writer('view', { fileDescriptions: [] })
260
+ const viewWriter = this.writers.Writer('view', { fileDescriptions: [] })
258
261
  this.viewFixture = new ViewFixture(
259
262
  this.cwd,
260
263
  viewWriter,
@@ -265,6 +268,14 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
265
268
  return this.viewFixture
266
269
  }
267
270
 
271
+ protected static get writers() {
272
+ if (!this._writers) {
273
+ this._writers = this.WriterFactory()
274
+ }
275
+
276
+ return this._writers
277
+ }
278
+
268
279
  private static WriterFactory() {
269
280
  return new WriterFactory({
270
281
  templates,
@@ -388,8 +399,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
388
399
  results: FeatureActionResponse
389
400
  ) {
390
401
  for (const file of results.files ?? []) {
391
- const checker = this.Service('typeChecker')
392
- await checker.check(file.path)
402
+ await this.assertFilePassesTypeChecks(file.path)
393
403
  }
394
404
 
395
405
  // await Promise.all(
@@ -400,6 +410,11 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
400
410
  // )
401
411
  }
402
412
 
413
+ protected static async assertFilePassesTypeChecks(file: string) {
414
+ const checker = this.Service('typeChecker')
415
+ await checker.check(file)
416
+ }
417
+
403
418
  protected static async connectToApi(options?: ApiClientFactoryOptions) {
404
419
  return this.getMercuryFixture().connectToApi(options)
405
420
  }
@@ -446,10 +461,9 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
446
461
 
447
462
  protected static ActionExecuter(options?: ExecuterOptions) {
448
463
  const serviceFactory = this.ServiceFactory()
449
- const writerFactory = this.WriterFactory()
450
464
 
451
465
  const actionFactory = new ActionFactory({
452
- writerFactory,
466
+ writerFactory: this.writers,
453
467
  ui: this.ui,
454
468
  emitter: this.emitter,
455
469
  apiClientFactory: this.getMercuryFixture().getApiClientFactory(),
@@ -492,3 +506,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
492
506
  void this.ui.sendInput(`${match.value}`)
493
507
  }
494
508
  }
509
+
510
+ type ExecuterOptions = Partial<ActionExecuterOptions> & {
511
+ optionOverrides?: OptionOverrides
512
+ }
@@ -45,6 +45,13 @@ async function run() {
45
45
 
46
46
  if (process.env.WILL_BUILD_CACHE_SCRIPT) {
47
47
  term.renderLine('Running pre build cache script')
48
+ if (process.env.CLEAN_CACHE_SCRIPT) {
49
+ try {
50
+ execSync(process.env.CLEAN_CACHE_SCRIPT)
51
+ } catch {
52
+ /* Empty */
53
+ }
54
+ }
48
55
  execSync(process.env.WILL_BUILD_CACHE_SCRIPT)
49
56
  }
50
57
 
@@ -58,6 +58,8 @@ export default class FeatureFixture implements ServiceProvider {
58
58
  for (const dir of this.dirsToDelete) {
59
59
  diskUtil.deleteDir(dir)
60
60
  }
61
+
62
+ this.dirsToDelete = []
61
63
  }
62
64
 
63
65
  public Service<S extends Service>(
@@ -26,6 +26,19 @@ const testUtil = {
26
26
  return process.env.CLEANUP_TEST_SKILL_DIRS !== 'false'
27
27
  },
28
28
 
29
+ shouldCleanupAfterEach() {
30
+ return (
31
+ this.shouldCleanupTestSkillDirs() &&
32
+ process.env.CLEANUP_TEST_SKILL_DIRS_ON === 'afterEach'
33
+ )
34
+ },
35
+ shouldCleanupAfterAll() {
36
+ return (
37
+ this.shouldCleanupTestSkillDirs() &&
38
+ process.env.CLEANUP_TEST_SKILL_DIRS_ON !== 'afterEach'
39
+ )
40
+ },
41
+
29
42
  getTestRootDir() {
30
43
  return process.env.TEST_CACHE_ROOT_DIR ?? pathUtil.join(os.tmpdir())
31
44
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreatingSchemasWithGenerics.test.js","names":["CreatingSchemasWithGenericsTest","test","installSchemaFeature","source","resolveTestPath","destination","resolvePath","diskUtil","copyDir","Action","execute","results","assert","isFalsy","errors","isTruthy","files","match","testUtil","assertFileByNameInGeneratedFiles","contents","readFile","doesInclude","assertValidActionResponseFiles","AbstractSchemaTest"],"sources":["../../../src/__tests__/behavioral/CreatingSchemasWithGenerics.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class CreatingSchemasWithGenericsTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async schemaImportsLocalImports() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst source = this.resolveTestPath('schemas_with_suffix')\n\n\t\tconst destination = this.resolvePath('src', 'schemas')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isTruthy(results.files)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'schemas.types.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\t\tassert.doesInclude(contents, '<Type extends string = string>')\n\t\tassert.doesInclude(contents, '<Type2 extends string = string>')\n\t\tassert.doesInclude(contents, '<Type>')\n\t\tassert.doesInclude(contents, \"typedByGeneric'?: (Type2)| undefined | null\")\n\n\t\tawait this.assertValidActionResponseFiles(results)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,+BAA+B,WAClD,IAAAC,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,+GAAP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACC,oBAAoB,CAAC,SAAS,CAAC;cAAA;gBAEpCC,MAAM,GAAG,IAAI,CAACC,eAAe,CAAC,qBAAqB,CAAC;gBAEpDC,WAAW,GAAG,IAAI,CAACC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC;gBAAA;gBAAA,OAEhDC,0BAAQ,CAACC,OAAO,CAACL,MAAM,EAAEE,WAAW,CAAC;cAAA;gBAAA;gBAAA,OAErB,IAAI,CAACI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAzDC,OAAO;gBAEbC,iBAAM,CAACC,OAAO,CAACF,OAAO,CAACG,MAAM,CAAC;gBAC9BF,iBAAM,CAACG,QAAQ,CAACJ,OAAO,CAACK,KAAK,CAAC;gBAExBC,KAAK,GAAGC,gBAAQ,CAACC,gCAAgC,CACtD,kBAAkB,EAClBR,OAAO,CAACK,KAAK,CACb;gBAEKI,QAAQ,GAAGb,0BAAQ,CAACc,QAAQ,CAACJ,KAAK,CAAC;gBACzCL,iBAAM,CAACU,WAAW,CAACF,QAAQ,EAAE,gCAAgC,CAAC;gBAC9DR,iBAAM,CAACU,WAAW,CAACF,QAAQ,EAAE,iCAAiC,CAAC;gBAC/DR,iBAAM,CAACU,WAAW,CAACF,QAAQ,EAAE,QAAQ,CAAC;gBACtCR,iBAAM,CAACU,WAAW,CAACF,QAAQ,EAAE,6CAA6C,CAAC;gBAAA;gBAAA,OAErE,IAAI,CAACG,8BAA8B,CAACZ,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAClD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA5B2Da,+BAAkB;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InstallingASkillAtAnOrg.test.js","names":["InstallingASkillAtAnOrgTest","test","login","getOrganizationFixture","clearAllOrgs","Cli","assert","isFunction","Action","execute","seedDemoOrg","name","org","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","people","logout","organizationId","id","anonResults","isTruthy","errors","eventAssertUtil","assertError","errorAssert","skill","promise","waitForInput","doesInclude","ui","getLastInvocation","command","assertUtil","stringify","sendInput","results","isFalsy","Store","isSkillInstalledAtOrg","isInstalled","org2","options","type","loginAsDemoPerson","DEMO_NUMBER_INSTALL_SKILL","AbstractCliTest"],"sources":["../../../src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts"],"sourcesContent":["import { eventAssertUtil } from '@sprucelabs/spruce-event-utils'\nimport { test, assert, assertUtil } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\nimport { DEMO_NUMBER_INSTALL_SKILL } from '../../tests/constants'\n\nexport default class InstallingASkillAtAnOrgTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tawait this.login()\n\t\tawait this.getOrganizationFixture().clearAllOrgs()\n\t}\n\n\t@test()\n\tprotected static async hasInstallAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('organization', 'install').execute)\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingLoggedIn() {\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'new org',\n\t\t})\n\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tawait this.people.logout()\n\n\t\tawait this.Cli()\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({\n\t\t\torganizationId: org.id,\n\t\t})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\teventAssertUtil.assertError(anonResults.errors[0], 'UNAUTHORIZED_ACCESS')\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutAnyOrgs() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssert.assertError(anonResults.errors[0], 'NO_ORGANIZATIONS_FOUND')\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingRegistered() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssert.assertError(anonResults.errors[0], 'SKILL_NOT_REGISTERED')\n\t}\n\n\t@test()\n\tprotected static async canInstallSkillAtOrg() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(\n\t\t\tthis.ui.getLastInvocation().command,\n\t\t\t'confirm',\n\t\t\t`ui didn't get back a confirm, got back \\n\\n${assertUtil.stringify(\n\t\t\t\tthis.ui.getLastInvocation()\n\t\t\t)}`\n\t\t)\n\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async asksYouToSelectOrgWithMoreThanOne() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst org2 = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(this.ui.getLastInvocation().options, {\n\t\t\ttype: 'select',\n\t\t})\n\n\t\tawait this.ui.sendInput(org2.id)\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg2.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n\n\tprivate static async login() {\n\t\tawait this.people.loginAsDemoPerson(DEMO_NUMBER_INSTALL_SKILL)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AAEA;AACA;AAAiE;AAAA;AAAA;AAAA,IAE5CA,2BAA2B,WAO9C,IAAAC,eAAI,GAAE,UAMN,IAAAA,eAAI,GAAE,UAwBN,IAAAA,eAAI,GAAE,UAcN,IAAAA,eAAI,GAAE,UAcN,IAAAA,eAAI,GAAE,UAsCN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,gGAtGP;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACC,KAAK,EAAE;cAAA;gBAAA;gBAAA,OACZ,IAAI,CAACC,sBAAsB,EAAE,CAACC,YAAY,EAAE;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAClD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,sGAED;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACC,GAAG,EAAE;cAAA;gBAChBC,iBAAM,CAACC,UAAU,CAAC,IAAI,CAACC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAACC,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,qHAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,IAAI,CAACN,sBAAsB,EAAE,CAACO,WAAW,CAAC;kBAC3DC,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAFIC,GAAG;gBAAA;gBAAA,OAIH,IAAI,CAACC,cAAc,EAAE,CAACC,qBAAqB,CAAC,eAAe,CAAC;cAAA;gBAAA;gBAAA,OAE5D,IAAI,CAACC,eAAe,EAAE,CAACC,oBAAoB,CAAC;kBACjDL,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAAA;gBAAA,OAEI,IAAI,CAACM,MAAM,CAACC,MAAM,EAAE;cAAA;gBAAA;gBAAA,OAEpB,IAAI,CAACb,GAAG,EAAE;cAAA;gBAAA;gBAAA,OAEU,IAAI,CAACG,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAACC,OAAO,CAAC;kBACxEU,cAAc,EAAEP,GAAG,CAACQ;gBACrB,CAAC,CAAC;cAAA;gBAFIC,WAAW;gBAIjBf,iBAAM,CAACgB,QAAQ,CAACD,WAAW,CAACE,MAAM,CAAC;gBACnCC,iCAAe,CAACC,WAAW,CAACJ,WAAW,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACzE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACV,cAAc,EAAE,CAACC,qBAAqB,CAAC,eAAe,CAAC;cAAA;gBAAA;gBAAA,OAE5D,IAAI,CAACC,eAAe,EAAE,CAACC,oBAAoB,CAAC;kBACjDL,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAAA;gBAAA,OAEwB,IAAI,CAACH,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAtEY,WAAW;gBAEjBf,iBAAM,CAACgB,QAAQ,CAACD,WAAW,CAACE,MAAM,CAAC;gBACnCG,sBAAW,CAACD,WAAW,CAACJ,WAAW,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACxE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,uHAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACV,cAAc,EAAE,CAACC,qBAAqB,CAAC,eAAe,CAAC;cAAA;gBAAA;gBAAA,OAE5D,IAAI,CAACX,sBAAsB,EAAE,CAACO,WAAW,CAAC;kBAC/CC,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAAA;gBAAA,OAEwB,IAAI,CAACH,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAtEY,WAAW;gBAEjBf,iBAAM,CAACgB,QAAQ,CAACD,WAAW,CAACE,MAAM,CAAC;gBACnCG,sBAAW,CAACD,WAAW,CAACJ,WAAW,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACtE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,0GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACV,cAAc,EAAE,CAACC,qBAAqB,CAAC,eAAe,CAAC;cAAA;gBAAA;gBAAA,OAEhD,IAAI,CAACX,sBAAsB,EAAE,CAACO,WAAW,CAAC;kBAC3DC,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAFIC,GAAG;gBAAA;gBAAA,OAIW,IAAI,CAACG,eAAe,EAAE,CAACC,oBAAoB,CAAC;kBAC/DL,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAFIgB,KAAK;gBAILC,OAAO,GAAG,IAAI,CAACpB,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE5D,IAAI,CAACoB,YAAY,EAAE;cAAA;gBAEzBvB,iBAAM,CAACwB,WAAW,CACjB,IAAI,CAACC,EAAE,CAACC,iBAAiB,EAAE,CAACC,OAAO,EACnC,SAAS,uDACqCC,qBAAU,CAACC,SAAS,CACjE,IAAI,CAACJ,EAAE,CAACC,iBAAiB,EAAE,CAC3B,EACD;gBAAA;gBAAA,OAEK,IAAI,CAACD,EAAE,CAACK,SAAS,CAAC,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAELR,OAAO;cAAA;gBAAvBS,OAAO;gBAEb/B,iBAAM,CAACgC,OAAO,CAACD,OAAO,CAACd,MAAM,CAAC;gBAAA;gBAAA,OAEJ,IAAI,CAACgB,KAAK,CAAC,cAAc,CAAC,CAACC,qBAAqB,CACzEb,KAAK,CAACP,EAAE,EACRR,GAAG,CAACQ,EAAE,CACN;cAAA;gBAHKqB,WAAW;gBAKjBnC,iBAAM,CAACgB,QAAQ,CAACmB,WAAW,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC5B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,uHAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAAC5B,cAAc,EAAE,CAACC,qBAAqB,CAAC,eAAe,CAAC;cAAA;gBAAA;gBAAA,OAE5D,IAAI,CAACX,sBAAsB,EAAE,CAACO,WAAW,CAAC;kBAC/CC,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAAA;gBAAA,OAEiB,IAAI,CAACR,sBAAsB,EAAE,CAACO,WAAW,CAAC;kBAC5DC,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAFI+B,IAAI;gBAAA;gBAAA,OAIU,IAAI,CAAC3B,eAAe,EAAE,CAACC,oBAAoB,CAAC;kBAC/DL,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAFIgB,KAAK;gBAILC,OAAO,GAAG,IAAI,CAACpB,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE5D,IAAI,CAACoB,YAAY,EAAE;cAAA;gBAEzBvB,iBAAM,CAACwB,WAAW,CAAC,IAAI,CAACC,EAAE,CAACC,iBAAiB,EAAE,CAACW,OAAO,EAAE;kBACvDC,IAAI,EAAE;gBACP,CAAC,CAAC;gBAAA;gBAAA,OAEI,IAAI,CAACb,EAAE,CAACK,SAAS,CAACM,IAAI,CAACtB,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAEVQ,OAAO;cAAA;gBAAvBS,OAAO;gBAEb/B,iBAAM,CAACgC,OAAO,CAACD,OAAO,CAACd,MAAM,CAAC;gBAAA;gBAAA,OAEJ,IAAI,CAACgB,KAAK,CAAC,cAAc,CAAC,CAACC,qBAAqB,CACzEb,KAAK,CAACP,EAAE,EACRsB,IAAI,CAACtB,EAAE,CACP;cAAA;gBAHKqB,WAAW;gBAKjBnC,iBAAM,CAACgB,QAAQ,CAACmB,WAAW,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC5B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,2FAED;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACO,IAAI,CAACxB,MAAM,CAAC4B,iBAAiB,CAACC,oCAAyB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC9D;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA/IuDC,4BAAe;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListeningToCoreEvents.test.js","names":["ListeningToCoreEventsTest","test","Action","execute","eventName","namespace","version","results","assert","isFalsy","errors","getSkillFixture","registerCurrentSkill","name","local","response","AbstractSkillTest"],"sources":["../../../src/__tests__/behavioral/ListeningToCoreEvents.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\n\nexport default class ListeningToCoreEventsTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'events'\n\n\t@test()\n\tprotected static async canListenToDidInstallWithoutErroring() {\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventName: 'did-install',\n\t\t\tnamespace: 'mercury',\n\t\t\tversion: 'v2020_12_25',\n\t\t})\n\n\t\tassert.isFalsy(results.errors?.[0])\n\t}\n\n\t@test()\n\tprotected static async canBootASkillWithACoreListener() {\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'global listen test',\n\t\t})\n\t\tconst response = await this.Action('skill', 'boot').execute({ local: true })\n\t\tassert.isFalsy(response.errors)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AAA6D;AAAA;AAAA;AAAA,IAExCA,yBAAyB,WAG5C,IAAAC,eAAI,GAAE,UAWN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,0HAXP;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEuB,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAACC,OAAO,CAAC;kBAC5DC,SAAS,EAAE,aAAa;kBACxBC,SAAS,EAAE,SAAS;kBACpBC,OAAO,EAAE;gBACV,CAAC,CAAC;cAAA;gBAJIC,OAAO;gBAMbC,iBAAM,CAACC,OAAO,oBAACF,OAAO,CAACG,MAAM,oDAAd,gBAAiB,CAAC,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACnC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,oHAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACC,eAAe,EAAE,CAACC,oBAAoB,CAAC;kBACjDC,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAAA;gBAAA,OACqB,IAAI,CAACX,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC;kBAAEW,KAAK,EAAE;gBAAK,CAAC,CAAC;cAAA;gBAAtEC,QAAQ;gBACdP,iBAAM,CAACC,OAAO,CAACM,QAAQ,CAACL,MAAM,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC/B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EArBqDM,8BAAiB,8DACtC,QAAQ;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoggingInAsASkill.test.js","names":["LoggingInAsASkillTest","test","people","loginAsDemoPerson","DEMO_NUMBER_LOGIN_AS_SKILL","skillFixture","getSkillFixture","clearAllSkills","logout","assert","isFunction","Action","execute","waitForInput","doesInclude","ui","getLastInvocation","options","label","reset","login","results","isTruthy","errors","isLength","errorAssert","assertError","person","Service","setLoggedInPerson","seedDemoSkill","name","Date","getTime","skill1","isFalsy","loggedIn","getCurrentSkill","isEqual","id","skill2","promise","command","type","isEqualDeep","choices","map","s","value","sendInput","skillSlug","skill3","slug","AbstractSkillTest"],"sources":["../../../src/__tests__/behavioral/LoggingInAsASkill.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\nimport { DEMO_NUMBER_LOGIN_AS_SKILL } from '../../tests/constants'\nimport { RegisteredSkill } from '../../types/cli.types'\n\nexport default class LoggingInAsASkillTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'skills'\n\tprivate static skill1: RegisteredSkill\n\tprivate static skill2: RegisteredSkill\n\tprivate static skill3: RegisteredSkill\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\n\t\tawait this.people.loginAsDemoPerson(DEMO_NUMBER_LOGIN_AS_SKILL)\n\n\t\tconst skillFixture = this.getSkillFixture()\n\t\tawait skillFixture.clearAllSkills()\n\n\t\tawait this.people.logout()\n\t}\n\n\t@test()\n\tprotected static async hasLoginAction() {\n\t\tassert.isFunction(this.Action('skill', 'login').execute)\n\t}\n\n\t@test()\n\tprotected static async asksToLoginIfNotLoggedIn() {\n\t\tvoid this.Action('skill', 'login').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(this.ui.getLastInvocation().options.label, 'Phone')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async returnsErrorIfNoSkillHasEverBeenRegistered() {\n\t\tawait this.login()\n\n\t\tconst results = await this.Action('skill', 'login').execute({})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.isLength(results.errors, 1)\n\t\terrorAssert.assertError(results.errors[0], 'NO_SKILLS_REGISTERED')\n\t}\n\n\tprivate static async login() {\n\t\tconst person = await this.people.loginAsDemoPerson(\n\t\t\tDEMO_NUMBER_LOGIN_AS_SKILL\n\t\t)\n\n\t\tthis.Service('auth').setLoggedInPerson(person)\n\t}\n\n\t@test()\n\tprotected static async logsInAsOnlySkillIfOnly1Registered() {\n\t\tawait this.login()\n\n\t\tthis.skill1 = await this.getSkillFixture().seedDemoSkill({\n\t\t\tname: `login skill ${new Date().getTime()}`,\n\t\t})\n\n\t\tconst results = await this.Action('skill', 'login').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst loggedIn = this.Service('auth').getCurrentSkill()\n\t\tassert.isEqual(loggedIn?.id, this.skill1.id)\n\t}\n\n\t@test()\n\tprotected static async letsYouSelectSkillIfMoreThan1IsRegistered() {\n\t\tawait this.login()\n\n\t\tthis.skill2 = await this.getSkillFixture().seedDemoSkill({\n\t\t\tname: `login skill 2 ${new Date().getTime()}`,\n\t\t})\n\n\t\tconst promise = this.Action('skill', 'login').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(this.ui.getLastInvocation().command, 'prompt')\n\t\tassert.doesInclude(this.ui.getLastInvocation().options.type, 'select')\n\t\tassert.isEqualDeep(\n\t\t\tthis.ui.getLastInvocation().options.options.choices,\n\t\t\t[this.skill1, this.skill2].map((s) => ({\n\t\t\t\tlabel: s.name,\n\t\t\t\tvalue: s.id,\n\t\t\t}))\n\t\t)\n\n\t\tawait this.ui.sendInput(this.skill2.id)\n\n\t\tawait promise\n\n\t\tconst loggedIn = this.Service('auth').getCurrentSkill()\n\t\tassert.isEqual(loggedIn?.id, this.skill2.id)\n\t}\n\n\t@test()\n\tprotected static async cantLoginWithSlugYouDontOwn() {\n\t\tawait this.login()\n\t\tconst results = await this.Action('skill', 'login').execute({\n\t\t\tskillSlug: 'never found',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\n\t\terrorAssert.assertError(results.errors[0], 'SKILL_NOT_FOUND')\n\t}\n\n\t@test()\n\tprotected static async canLoginWithSlugYouOwn() {\n\t\tawait this.login()\n\n\t\tthis.skill3 = await this.getSkillFixture().seedDemoSkill({\n\t\t\tname: `login skill 3 ${new Date().getTime()}`,\n\t\t})\n\n\t\tconst results = await this.Action('skill', 'login').execute({\n\t\t\tskillSlug: this.skill3.slug,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst loggedIn = this.Service('auth').getCurrentSkill()\n\t\tassert.isEqual(loggedIn?.id, this.skill3.id)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AAAkE;AAAA;AAAA;AAAA,IAG7CA,qBAAqB,WAiBxC,IAAAC,eAAI,GAAE,UAKN,IAAAA,eAAI,GAAE,UAWN,IAAAA,eAAI,GAAE,UAmBN,IAAAA,eAAI,GAAE,UAgBN,IAAAA,eAAI,GAAE,UA8BN,IAAAA,eAAI,GAAE,UAYN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,+FAxGP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA,OAGO,IAAI,CAACC,MAAM,CAACC,iBAAiB,CAACC,qCAA0B,CAAC;cAAA;gBAEzDC,YAAY,GAAG,IAAI,CAACC,eAAe,EAAE;gBAAA;gBAAA,OACrCD,YAAY,CAACE,cAAc,EAAE;cAAA;gBAAA;gBAAA,OAE7B,IAAI,CAACL,MAAM,CAACM,MAAM,EAAE;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC1B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,oGAED;QAAA;UAAA;YAAA;cAAA;gBAECC,iBAAM,CAACC,UAAU,CAAC,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACxD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,8GAED;QAAA;UAAA;YAAA;cAAA;gBAEC,KAAK,IAAI,CAACD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAExC,IAAI,CAACC,YAAY,EAAE;cAAA;gBAEzBJ,iBAAM,CAACK,WAAW,CAAC,IAAI,CAACC,EAAE,CAACC,iBAAiB,EAAE,CAACC,OAAO,CAACC,KAAK,EAAE,OAAO,CAAC;gBAEtE,IAAI,CAACH,EAAE,CAACI,KAAK,EAAE;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACf;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,gIAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACC,KAAK,EAAE;cAAA;gBAAA;gBAAA,OAEI,IAAI,CAACT,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAzDS,OAAO;gBAEbZ,iBAAM,CAACa,QAAQ,CAACD,OAAO,CAACE,MAAM,CAAC;gBAC/Bd,iBAAM,CAACe,QAAQ,CAACH,OAAO,CAACE,MAAM,EAAE,CAAC,CAAC;gBAClCE,sBAAW,CAACC,WAAW,CAACL,OAAO,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAClE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,2FAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACsB,IAAI,CAACrB,MAAM,CAACC,iBAAiB,CACjDC,qCAA0B,CAC1B;cAAA;gBAFKuB,MAAM;gBAIZ,IAAI,CAACC,OAAO,CAAC,MAAM,CAAC,CAACC,iBAAiB,CAACF,MAAM,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC9C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,wHAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACP,KAAK,EAAE;cAAA;gBAAA;gBAAA,OAEE,IAAI,CAACd,eAAe,EAAE,CAACwB,aAAa,CAAC;kBACxDC,IAAI,wBAAiB,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE;gBAC1C,CAAC,CAAC;cAAA;gBAFF,IAAI,CAACC,MAAM;gBAAA;gBAAA,OAIW,IAAI,CAACvB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAzDS,OAAO;gBAEbZ,iBAAM,CAAC0B,OAAO,CAACd,OAAO,CAACE,MAAM,CAAC;gBAExBa,QAAQ,GAAG,IAAI,CAACR,OAAO,CAAC,MAAM,CAAC,CAACS,eAAe,EAAE;gBACvD5B,iBAAM,CAAC6B,OAAO,CAACF,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEG,EAAE,EAAE,IAAI,CAACL,MAAM,CAACK,EAAE,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC5C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+HAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACnB,KAAK,EAAE;cAAA;gBAAA;gBAAA,OAEE,IAAI,CAACd,eAAe,EAAE,CAACwB,aAAa,CAAC;kBACxDC,IAAI,0BAAmB,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE;gBAC5C,CAAC,CAAC;cAAA;gBAFF,IAAI,CAACO,MAAM;gBAILC,OAAO,GAAG,IAAI,CAAC9B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAEnD,IAAI,CAACC,YAAY,EAAE;cAAA;gBAEzBJ,iBAAM,CAACK,WAAW,CAAC,IAAI,CAACC,EAAE,CAACC,iBAAiB,EAAE,CAAC0B,OAAO,EAAE,QAAQ,CAAC;gBACjEjC,iBAAM,CAACK,WAAW,CAAC,IAAI,CAACC,EAAE,CAACC,iBAAiB,EAAE,CAACC,OAAO,CAAC0B,IAAI,EAAE,QAAQ,CAAC;gBACtElC,iBAAM,CAACmC,WAAW,CACjB,IAAI,CAAC7B,EAAE,CAACC,iBAAiB,EAAE,CAACC,OAAO,CAACA,OAAO,CAAC4B,OAAO,EACnD,CAAC,IAAI,CAACX,MAAM,EAAE,IAAI,CAACM,MAAM,CAAC,CAACM,GAAG,CAAC,UAACC,CAAC;kBAAA,OAAM;oBACtC7B,KAAK,EAAE6B,CAAC,CAAChB,IAAI;oBACbiB,KAAK,EAAED,CAAC,CAACR;kBACV,CAAC;gBAAA,CAAC,CAAC,CACH;gBAAA;gBAAA,OAEK,IAAI,CAACxB,EAAE,CAACkC,SAAS,CAAC,IAAI,CAACT,MAAM,CAACD,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAEjCE,OAAO;cAAA;gBAEPL,QAAQ,GAAG,IAAI,CAACR,OAAO,CAAC,MAAM,CAAC,CAACS,eAAe,EAAE;gBACvD5B,iBAAM,CAAC6B,OAAO,CAACF,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEG,EAAE,EAAE,IAAI,CAACC,MAAM,CAACD,EAAE,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC5C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,iHAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACnB,KAAK,EAAE;cAAA;gBAAA;gBAAA,OACI,IAAI,CAACT,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC;kBAC3DsC,SAAS,EAAE;gBACZ,CAAC,CAAC;cAAA;gBAFI7B,OAAO;gBAIbZ,iBAAM,CAACa,QAAQ,CAACD,OAAO,CAACE,MAAM,CAAC;gBAE/BE,sBAAW,CAACC,WAAW,CAACL,OAAO,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC7D;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,4GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACH,KAAK,EAAE;cAAA;gBAAA;gBAAA,OAEE,IAAI,CAACd,eAAe,EAAE,CAACwB,aAAa,CAAC;kBACxDC,IAAI,0BAAmB,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE;gBAC5C,CAAC,CAAC;cAAA;gBAFF,IAAI,CAACkB,MAAM;gBAAA;gBAAA,OAIW,IAAI,CAACxC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC;kBAC3DsC,SAAS,EAAE,IAAI,CAACC,MAAM,CAACC;gBACxB,CAAC,CAAC;cAAA;gBAFI/B,OAAO;gBAIbZ,iBAAM,CAAC0B,OAAO,CAACd,OAAO,CAACE,MAAM,CAAC;gBAExBa,QAAQ,GAAG,IAAI,CAACR,OAAO,CAAC,MAAM,CAAC,CAACS,eAAe,EAAE;gBACvD5B,iBAAM,CAAC6B,OAAO,CAACF,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEG,EAAE,EAAE,IAAI,CAACY,MAAM,CAACZ,EAAE,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC5C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA9HiDc,8BAAiB,8DAClC,QAAQ;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RebuildingASkill.test.js","names":["RebuildingASkillTest","test","assert","isFunction","Action","execute","CommandService","fakeCommand","code","shouldPlayGames","results","isFalsy","errors","isArray","errorAssert","assertError","AbstractSkillTest"],"sources":["../../../src/__tests__/behavioral/RebuildingASkill.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport CommandService from '../../services/CommandService'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\n\nexport default class RebuildingASkillTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'skills'\n\n\t@test()\n\tprotected static async hasRebuildCommand() {\n\t\tassert.isFunction(this.Action('skill', 'rebuild').execute)\n\t}\n\n\t@test()\n\tprotected static async runsExpectedCommand() {\n\t\tCommandService.fakeCommand('yarn rebuild', { code: 0 })\n\n\t\tconst results = await this.Action('skill', 'rebuild').execute({\n\t\t\tshouldPlayGames: false,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t}\n\n\t@test()\n\tprotected static async handlesError() {\n\t\tCommandService.fakeCommand('yarn rebuild', { code: 1 })\n\n\t\tconst results = await this.Action('skill', 'rebuild').execute({\n\t\t\tshouldPlayGames: false,\n\t\t})\n\n\t\tassert.isArray(results.errors)\n\n\t\terrorAssert.assertError(results.errors[0], 'EXECUTING_COMMAND_FAILED')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AAA6D;AAAA;AAAA;AAAA,IAExCA,oBAAoB,WAGvC,IAAAC,eAAI,GAAE,UAKN,IAAAA,eAAI,GAAE,UAWN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,uGAhBP;QAAA;UAAA;YAAA;cAAA;gBAECC,iBAAM,CAACC,UAAU,CAAC,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAACC,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC1D;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,yGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAECC,0BAAc,CAACC,WAAW,CAAC,cAAc,EAAE;kBAAEC,IAAI,EAAE;gBAAE,CAAC,CAAC;gBAAA;gBAAA,OAEjC,IAAI,CAACJ,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAACC,OAAO,CAAC;kBAC7DI,eAAe,EAAE;gBAClB,CAAC,CAAC;cAAA;gBAFIC,OAAO;gBAIbR,iBAAM,CAACS,OAAO,CAACD,OAAO,CAACE,MAAM,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC9B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,kGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAECN,0BAAc,CAACC,WAAW,CAAC,cAAc,EAAE;kBAAEC,IAAI,EAAE;gBAAE,CAAC,CAAC;gBAAA;gBAAA,OAEjC,IAAI,CAACJ,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAACC,OAAO,CAAC;kBAC7DI,eAAe,EAAE;gBAClB,CAAC,CAAC;cAAA;gBAFIC,OAAO;gBAIbR,iBAAM,CAACW,OAAO,CAACH,OAAO,CAACE,MAAM,CAAC;gBAE9BE,sBAAW,CAACC,WAAW,CAACL,OAAO,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE,0BAA0B,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACtE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA9BgDI,8BAAiB,8DACjC,QAAQ;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RegisteringEventsOnBoot.test.js","names":["EVENT_NAME_READABLE","EVENT_NAME","EVENT_CAMEL","RegisteringEventsOnBootTest","test","people","loginAsDemoPerson","DEMO_NUMBER_EVENTS_ON_BOOT","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skill2","currentSkill","Action","execute","nameReadable","nameKebab","nameCamel","copyEventBuildersAndPermissions","local","boot","connectToApi","skillId","id","apiKey","client","Store","apiClientFactory","fetchEventContracts","contracts","meta","kill","version","versionUtil","generateVersion","constValue","name","eventNameUtil","join","eventNamespace","slug","eventName","assert","isTrue","length","namespace","namesUtil","toPascal","sig","eventContractUtil","getSignatureByName","doesInclude","emitPayloadSchema","responsePayloadSchema","emitPermissionContract","listenPermissionContract","AbstractEventTest"],"sources":["../../../src/__tests__/behavioral/RegisteringEventsOnBoot.test.ts"],"sourcesContent":["import {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport { namesUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../tests/AbstractEventTest'\nimport { DEMO_NUMBER_EVENTS_ON_BOOT } from '../../tests/constants'\n\nconst EVENT_NAME_READABLE = 'did book appointment'\nconst EVENT_NAME = 'did-book-appointment'\nconst EVENT_CAMEL = 'didBookAppointment'\n\nexport default class RegisteringEventsOnBootTest extends AbstractEventTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tawait this.people.loginAsDemoPerson(DEMO_NUMBER_EVENTS_ON_BOOT)\n\t}\n\n\t@test()\n\tprotected static async registeringEventsOnBoot() {\n\t\tconst { skill2, currentSkill } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait this.Action('event', 'create').execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tawait this.copyEventBuildersAndPermissions(EVENT_NAME)\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tconst client = await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})\n\n\t\tconst { contracts } = await this.Store('event', {\n\t\t\tapiClientFactory: async () => client,\n\t\t}).fetchEventContracts()\n\n\t\tboot.meta?.kill()\n\n\t\tconst version = versionUtil.generateVersion().constValue\n\t\tconst name = eventNameUtil.join({\n\t\t\teventNamespace: currentSkill.slug,\n\t\t\teventName: EVENT_NAME,\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isTrue(contracts.length >= 2)\n\n\t\tconst namespace = namesUtil.toPascal(currentSkill.slug)\n\t\tconst sig = eventContractUtil.getSignatureByName(contracts[1], name)\n\n\t\tassert.doesInclude(sig.emitPayloadSchema, {\n\t\t\tid: 'didBookAppointmentEmitTargetAndPayload',\n\t\t\tversion,\n\t\t\tnamespace,\n\t\t})\n\n\t\tassert.doesInclude(sig.responsePayloadSchema, {\n\t\t\tid: 'myFantasticallyAmazingEventResponsePayload',\n\t\t\tversion,\n\t\t\tnamespace,\n\t\t})\n\t\tassert.doesInclude(sig.emitPermissionContract, {\n\t\t\tid: 'myFantasticallyAmazingEventEmitPermissions',\n\t\t\tname: 'my fantastically amazing event',\n\t\t})\n\n\t\tassert.doesInclude(sig.listenPermissionContract, {\n\t\t\tid: 'myFantasticallyAmazingEventListenPermissions',\n\t\t\tname: 'my fantastically amazing event',\n\t\t})\n\t}\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RegisteringGlobalEvents.test.js","names":["dotenv","config","stamp","Date","getTime","EVENT_NAME_READABLE","EVENT_NAME","EVENT_CAMEL","RegisteringGlobalEventsTest","test","people","loginAsDemoPerson","DEMO_NUMBER_GLOBAL_EVENTS","resetAccount","orgFixture","getOrganizationFixture","skillFixture","getSkillFixture","seedDemoOrg","name","org","registerCurrentSkill","skill","installSkillAtOrganization","id","Action","execute","isGlobal","nameReadable","nameKebab","nameCamel","results","assert","isFalsy","errors","optionsFile","testUtil","assertFileByNameInGeneratedFiles","files","Service","importDefault","importedOptions","isEqualDeep","version","versionUtil","generateVersion","dirValue","contractFile","importedContract","sig","eventSignatures","slug","isTrue","isTruthy","emitPayloadSchema","local","boot","connectToApi","skillId","apiKey","client","Store","apiClientFactory","fetchEventContracts","contractResults","contracts","meta","kill","constValue","eventName","check","resolveHashSprucePath","AbstractSkillTest"],"sources":["../../../src/__tests__/behavioral/RegisteringGlobalEvents.test.ts"],"sourcesContent":["import { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport dotenv from 'dotenv'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\nimport { DEMO_NUMBER_GLOBAL_EVENTS } from '../../tests/constants'\nimport testUtil from '../../tests/utilities/test.utility'\nimport { RegisteredSkill } from '../../types/cli.types'\ndotenv.config()\n\nconst stamp = new Date().getTime()\nconst EVENT_NAME_READABLE = 'did book appointment'\nconst EVENT_NAME = `test-register-skill-views${stamp}`\nconst EVENT_CAMEL = `testRegisterSkillViews${stamp}`\n\nexport default class RegisteringGlobalEventsTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'events'\n\tprotected static skill: RegisteredSkill\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\n\t\tawait this.people.loginAsDemoPerson(DEMO_NUMBER_GLOBAL_EVENTS)\n\n\t\tawait this.resetAccount()\n\n\t\tconst orgFixture = this.getOrganizationFixture()\n\t\tconst skillFixture = this.getSkillFixture()\n\n\t\tconst org = await orgFixture.seedDemoOrg({ name: 'my org' })\n\n\t\tthis.skill = await skillFixture.registerCurrentSkill({\n\t\t\tname: 'heartwood test',\n\t\t})\n\n\t\tawait orgFixture.installSkillAtOrganization(this.skill.id, org.id)\n\t}\n\n\tprotected static async afterAll() {\n\t\tawait super.afterAll()\n\t\tawait this.resetAccount()\n\t}\n\n\tprivate static async resetAccount() {\n\t\t// await this.getOrganizationFixture().clearAllOrgs()\n\t\t// await this.getSkillFixture().clearAllSkills()\n\t}\n\n\t@test()\n\tprotected static async canCreateGlobalEvent() {\n\t\tconst results = await this.Action('event', 'create').execute({\n\t\t\tisGlobal: true,\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst optionsFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'event.options.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst importedOptions = await this.Service('import').importDefault(\n\t\t\toptionsFile\n\t\t)\n\t\tassert.isEqualDeep(importedOptions, {\n\t\t\tisGlobal: true,\n\t\t})\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\tconst contractFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`${EVENT_CAMEL}.${version}.contract.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst importedContract = await this.Service('import').importDefault(\n\t\t\tcontractFile\n\t\t)\n\n\t\tconst sig =\n\t\t\timportedContract.eventSignatures[\n\t\t\t\t`${this.skill.slug}.${EVENT_NAME}::${version}`\n\t\t\t]\n\n\t\tassert.isTrue(sig.isGlobal)\n\t\tassert.isTruthy(sig.emitPayloadSchema)\n\t}\n\n\t@test()\n\tprotected static async registersGloballyOnBoot() {\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tconst client = await this.connectToApi({\n\t\t\tskillId: this.skill.id,\n\t\t\tapiKey: this.skill.apiKey,\n\t\t})\n\n\t\tconst contractResults = await this.Store('event', {\n\t\t\tapiClientFactory: async () => client,\n\t\t}).fetchEventContracts()\n\n\t\tconst contracts = contractResults.contracts\n\n\t\tboot.meta?.kill()\n\n\t\tconst version = versionUtil.generateVersion().constValue\n\t\tconst eventName = `${this.skill.slug}.${EVENT_NAME}::${version}`\n\n\t\tassert.isTruthy(contracts[1].eventSignatures[eventName])\n\t}\n\n\t@test()\n\tprotected static async canSyncGlobalEvents() {\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.Service('typeChecker').check(\n\t\t\tthis.resolveHashSprucePath('events/events.contract.ts')\n\t\t)\n\t}\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RegisteringSkillViewOnBoot.test.js","names":["RegisteringSkillViewOnBootTest","test","registerAndBootSkill","Store","fetchSkillViews","skillViews","assert","isFalsy","Action","execute","viewType","isRoot","buildSkill","bootSkill","results","errors","isTruthy","registerCurrentSkillAndInstallToOrg","boot","meta","kill","Service","build","people","loginAsDemoPerson","DEMO_NUMBER_VIEWS_ON_BOOT","skillFixture","getSkillFixture","orgFixture","getOrganizationFixture","seedDemoOrg","name","org","registerCurrentSkill","skill","installSkillAtOrganization","id","currentSkill","AbstractSkillTest"],"sources":["../../../src/__tests__/behavioral/RegisteringSkillViewOnBoot.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\nimport { DEMO_NUMBER_VIEWS_ON_BOOT } from '../../tests/constants'\n\nexport default class RegisteringSkillViewOnBootTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\n\t@test()\n\tprotected static async noEventsToStart() {\n\t\tawait this.registerAndBootSkill()\n\n\t\tconst skillViews = await this.Store('view').fetchSkillViews()\n\n\t\tassert.isFalsy(skillViews)\n\t}\n\n\t@test()\n\tprotected static async syncsViewsOnBoot() {\n\t\tawait this.Action('view', 'create').execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tawait this.buildSkill()\n\n\t\tconst results = await this.bootSkill()\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst skillViews = await this.Store('view').fetchSkillViews()\n\n\t\tassert.isTruthy(skillViews, 'Skill views were not registered on boot!')\n\t}\n\n\tprotected static async registerAndBootSkill() {\n\t\tawait this.registerCurrentSkillAndInstallToOrg()\n\t\tawait this.buildSkill()\n\n\t\tconst results = await this.bootSkill()\n\t\tassert.isFalsy(results.errors)\n\t}\n\n\tprivate static async bootSkill() {\n\t\tconst boot = await this.Action('skill', 'boot').execute({})\n\t\tboot.meta?.kill()\n\t\treturn boot\n\t}\n\n\tprivate static async buildSkill() {\n\t\tawait this.Service('build').build()\n\t}\n\n\tprotected static async registerCurrentSkillAndInstallToOrg() {\n\t\tawait this.people.loginAsDemoPerson(DEMO_NUMBER_VIEWS_ON_BOOT)\n\t\tconst skillFixture = this.getSkillFixture()\n\t\tconst orgFixture = this.getOrganizationFixture()\n\n\t\tconst org = await orgFixture.seedDemoOrg({ name: 'my org' })\n\n\t\tconst skill = await skillFixture.registerCurrentSkill({\n\t\t\tname: 'current skill',\n\t\t})\n\n\t\tawait orgFixture.installSkillAtOrganization(skill.id, org.id)\n\n\t\treturn { skillFixture, currentSkill: skill, org, orgFixture }\n\t}\n}\n"],"mappings":"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"}