@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
@@ -50,7 +50,7 @@ var ConversationFeature = /*#__PURE__*/function (_AbstractFeature) {
50
50
  switch (_context.prev = _context.next) {
51
51
  case 0:
52
52
  _context.next = 2;
53
- return this.featureInstaller.isInstalled('conversation');
53
+ return this.features.isInstalled('conversation');
54
54
  case 2:
55
55
  isInstalled = _context.sent;
56
56
  if (!(payload.featureCode === 'node' && payload.actionCode === 'upgrade' && isInstalled)) {
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationFeature.js","names":["ConversationFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","handleWillExecute","bind","payload","featureInstaller","isInstalled","featureCode","actionCode","writePlugin","files","Writer","cwd","AbstractFeature"],"sources":["../../../src/features/conversation/ConversationFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n\tInstallResults,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tconversation: ConversationFeature\n\t}\n}\n\nexport default class ConversationFeature extends AbstractFeature {\n\tpublic nameReadable = 'Conversation'\n\tpublic code: FeatureCode = 'conversation'\n\tpublic description = 'Computers like to talk, too.'\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'event', isRequired: true },\n\t]\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-conversation-plugin@latest',\n\t\t\tisDev: false,\n\t\t},\n\t]\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tactionCode: string\n\t\tfeatureCode: string\n\t}) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('conversation')\n\n\t\tif (\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade' &&\n\t\t\tisInstalled\n\t\t) {\n\t\t\tconst files = await this.writePlugin()\n\t\t\treturn { files }\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(): Promise<InstallResults> {\n\t\tconst files = await this.writePlugin()\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async writePlugin() {\n\t\treturn this.Writer('conversation').writePlugin(this.cwd)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AAI2B;AAAA;AAAA,IASNA,mBAAmB;EAAA;EAAA;EAgBvC,6BAAmBC,OAAuB,EAAE;IAAA;IAAA;IAC3C,0BAAMA,OAAO;IAAC,iGAhBO,cAAc;IAAA,yFACT,cAAc;IAAA,gGACpB,8BAA8B;IAAA,iGAER,CAC1C;MAAEC,IAAI,EAAE,OAAO;MAAEC,UAAU,EAAE;IAAK,CAAC,CACnC;IAAA,wGAC0C,CAC1C;MACCC,IAAI,EAAE,+CAA+C;MACrDC,KAAK,EAAE;IACR,CAAC,CACD;IAAA,+FACmBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAK7D,KAAK,MAAKC,OAAO,CAACC,EAAE,CACnB,sBAAsB,EACtB,MAAKC,iBAAiB,CAACC,IAAI,gDAAM,CACjC;IAAA;EACF;EAAC;IAAA;IAAA;MAAA,uGAED,iBAAgCC,OAG/B;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC0B,IAAI,CAACC,gBAAgB,CAACC,WAAW,CAAC,cAAc,CAAC;cAAA;gBAArEA,WAAW;gBAAA,MAGhBF,OAAO,CAACG,WAAW,KAAK,MAAM,IAC9BH,OAAO,CAACI,UAAU,KAAK,SAAS,IAChCF,WAAW;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OAES,IAAI,CAACG,WAAW,EAAE;cAAA;gBAAhCC,KAAK;gBAAA,iCACJ;kBAAEA,KAAK,EAALA;gBAAM,CAAC;cAAA;gBAAA,iCAGV,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACT;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,yGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACqB,IAAI,CAACD,WAAW,EAAE;cAAA;gBAAhCC,KAAK;gBAAA,kCAEJ;kBACNA,KAAK,EAALA;gBACD,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,iGAED;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACQ,IAAI,CAACC,MAAM,CAAC,cAAc,CAAC,CAACF,WAAW,CAAC,IAAI,CAACG,GAAG,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACxD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EArD+CC,4BAAe;AAAA"}
1
+ {"version":3,"file":"ConversationFeature.js","names":["ConversationFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","handleWillExecute","bind","payload","features","isInstalled","featureCode","actionCode","writePlugin","files","Writer","cwd","AbstractFeature"],"sources":["../../../src/features/conversation/ConversationFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n\tInstallResults,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tconversation: ConversationFeature\n\t}\n}\n\nexport default class ConversationFeature extends AbstractFeature {\n\tpublic nameReadable = 'Conversation'\n\tpublic code: FeatureCode = 'conversation'\n\tpublic description = 'Computers like to talk, too.'\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'event', isRequired: true },\n\t]\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-conversation-plugin@latest',\n\t\t\tisDev: false,\n\t\t},\n\t]\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tactionCode: string\n\t\tfeatureCode: string\n\t}) {\n\t\tconst isInstalled = await this.features.isInstalled('conversation')\n\n\t\tif (\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade' &&\n\t\t\tisInstalled\n\t\t) {\n\t\t\tconst files = await this.writePlugin()\n\t\t\treturn { files }\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(): Promise<InstallResults> {\n\t\tconst files = await this.writePlugin()\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async writePlugin() {\n\t\treturn this.Writer('conversation').writePlugin(this.cwd)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AAI2B;AAAA;AAAA,IASNA,mBAAmB;EAAA;EAAA;EAgBvC,6BAAmBC,OAAuB,EAAE;IAAA;IAAA;IAC3C,0BAAMA,OAAO;IAAC,iGAhBO,cAAc;IAAA,yFACT,cAAc;IAAA,gGACpB,8BAA8B;IAAA,iGAER,CAC1C;MAAEC,IAAI,EAAE,OAAO;MAAEC,UAAU,EAAE;IAAK,CAAC,CACnC;IAAA,wGAC0C,CAC1C;MACCC,IAAI,EAAE,+CAA+C;MACrDC,KAAK,EAAE;IACR,CAAC,CACD;IAAA,+FACmBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAK7D,KAAK,MAAKC,OAAO,CAACC,EAAE,CACnB,sBAAsB,EACtB,MAAKC,iBAAiB,CAACC,IAAI,gDAAM,CACjC;IAAA;EACF;EAAC;IAAA;IAAA;MAAA,uGAED,iBAAgCC,OAG/B;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC0B,IAAI,CAACC,QAAQ,CAACC,WAAW,CAAC,cAAc,CAAC;cAAA;gBAA7DA,WAAW;gBAAA,MAGhBF,OAAO,CAACG,WAAW,KAAK,MAAM,IAC9BH,OAAO,CAACI,UAAU,KAAK,SAAS,IAChCF,WAAW;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OAES,IAAI,CAACG,WAAW,EAAE;cAAA;gBAAhCC,KAAK;gBAAA,iCACJ;kBAAEA,KAAK,EAALA;gBAAM,CAAC;cAAA;gBAAA,iCAGV,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACT;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,yGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACqB,IAAI,CAACD,WAAW,EAAE;cAAA;gBAAhCC,KAAK;gBAAA,kCAEJ;kBACNA,KAAK,EAALA;gBACD,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,iGAED;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACQ,IAAI,CAACC,MAAM,CAAC,cAAc,CAAC,CAACF,WAAW,CAAC,IAAI,CAACG,GAAG,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACxD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EArD+CC,4BAAe;AAAA"}
@@ -47,7 +47,7 @@ var DependencyFeature = /*#__PURE__*/function (_AbstractFeature) {
47
47
  while (1) {
48
48
  switch (_context.prev = _context.next) {
49
49
  case 0:
50
- return _context.abrupt("return", this.featureInstaller.isInstalled('skill'));
50
+ return _context.abrupt("return", this.features.isInstalled('skill'));
51
51
  case 1:
52
52
  case "end":
53
53
  return _context.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"DependencyFeature.js","names":["DependencyFeature","diskUtil","resolvePath","__dirname","code","isRequired","featureInstaller","isInstalled","AbstractFeature"],"sources":["../../../src/features/dependencies/DependencyFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tdependency: DependencyFeature\n\t}\n}\n\nexport default class DependencyFeature extends AbstractFeature {\n\tpublic description = 'Tell me which skills you depend on.'\n\tpublic code: FeatureCode = 'dependency'\n\tpublic nameReadable = 'Dependencies'\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\n\tpublic async isInstalled() {\n\t\treturn this.featureInstaller.isInstalled('skill')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AAAuE;AAAA;AAAA,IASlDA,iBAAiB;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,gGAChB,qCAAqC;IAAA,yFAC/B,YAAY;IAAA,iGACjB,cAAc;IAAA,+FAChBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,iGACnB,CAC1C;MACCC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,iGAE/B;QAAA;UAAA;YAAA;cAAA;gBAAA,iCACQ,IAAI,CAACC,gBAAgB,CAACC,WAAW,CAAC,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAf6CC,4BAAe;AAAA"}
1
+ {"version":3,"file":"DependencyFeature.js","names":["DependencyFeature","diskUtil","resolvePath","__dirname","code","isRequired","features","isInstalled","AbstractFeature"],"sources":["../../../src/features/dependencies/DependencyFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tdependency: DependencyFeature\n\t}\n}\n\nexport default class DependencyFeature extends AbstractFeature {\n\tpublic description = 'Tell me which skills you depend on.'\n\tpublic code: FeatureCode = 'dependency'\n\tpublic nameReadable = 'Dependencies'\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\n\tpublic async isInstalled() {\n\t\treturn this.features.isInstalled('skill')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AAAuE;AAAA;AAAA,IASlDA,iBAAiB;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,gGAChB,qCAAqC;IAAA,yFAC/B,YAAY;IAAA,iGACjB,cAAc;IAAA,+FAChBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,iGACnB,CAC1C;MACCC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,iGAE/B;QAAA;UAAA;YAAA;cAAA;gBAAA,iCACQ,IAAI,CAACC,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACzC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAf6CC,4BAAe;AAAA"}
@@ -70,80 +70,78 @@ var DeployAction = /*#__PURE__*/function (_AbstractAction) {
70
70
  case 0:
71
71
  results = {};
72
72
  _context.prev = 1;
73
- _context.next = 4;
74
- return this.assertRegisteredSkill();
75
- case 4:
76
- _context.next = 6;
73
+ this.assertRegisteredSkill();
74
+ _context.next = 5;
77
75
  return this.assertDependencies();
78
- case 6:
79
- _context.next = 8;
76
+ case 5:
77
+ _context.next = 7;
80
78
  return this.assertLoggedInToHeroku();
81
- case 8:
82
- _context.next = 10;
79
+ case 7:
80
+ _context.next = 9;
83
81
  return this.setupGitRepo();
84
- case 10:
85
- _context.next = 12;
82
+ case 9:
83
+ _context.next = 11;
86
84
  return this.setupGitRemote();
87
- case 12:
88
- _context.next = 14;
85
+ case 11:
86
+ _context.next = 13;
89
87
  return this.setupProcFile();
90
- case 14:
88
+ case 13:
91
89
  procResults = _context.sent;
92
90
  results = _action["default"].mergeActionResults(results, procResults);
93
- _context.next = 18;
91
+ _context.next = 17;
94
92
  return this.assertNoPendingGitChanges();
95
- case 18:
96
- _context.next = 23;
93
+ case 17:
94
+ _context.next = 22;
97
95
  break;
98
- case 20:
99
- _context.prev = 20;
96
+ case 19:
97
+ _context.prev = 19;
100
98
  _context.t0 = _context["catch"](1);
101
99
  return _context.abrupt("return", {
102
100
  errors: [_context.t0]
103
101
  });
104
- case 23:
102
+ case 22:
105
103
  _this$validateAndNorm = this.validateAndNormalizeOptions(options), shouldBuildAndLint = _this$validateAndNorm.shouldBuildAndLint, shouldRunTests = _this$validateAndNorm.shouldRunTests;
106
104
  if (!shouldBuildAndLint) {
107
- _context.next = 30;
105
+ _context.next = 29;
108
106
  break;
109
107
  }
110
- _context.next = 27;
108
+ _context.next = 26;
111
109
  return this.buildAndLint();
112
- case 27:
110
+ case 26:
113
111
  results = _context.sent;
114
112
  if (!results.errors) {
115
- _context.next = 30;
113
+ _context.next = 29;
116
114
  break;
117
115
  }
118
116
  return _context.abrupt("return", results);
119
- case 30:
117
+ case 29:
120
118
  if (!shouldRunTests) {
121
- _context.next = 36;
119
+ _context.next = 35;
122
120
  break;
123
121
  }
124
- _context.next = 33;
122
+ _context.next = 32;
125
123
  return this.runTests();
126
- case 33:
124
+ case 32:
127
125
  results = _context.sent;
128
126
  if (!results.errors) {
129
- _context.next = 36;
127
+ _context.next = 35;
130
128
  break;
131
129
  }
132
130
  return _context.abrupt("return", results);
133
- case 36:
134
- _context.next = 38;
131
+ case 35:
132
+ _context.next = 37;
135
133
  return this.deploy();
136
- case 38:
134
+ case 37:
137
135
  this.ui.clear();
138
136
  skill = this.Service('auth').getCurrentSkill();
139
137
  results.summaryLines = ["You are good to go!", "You gotta make sure that your ENV's are set on Heroku to the following:\n", "SKILL_NAME=".concat(skill.name), "SKILL_SLUG=".concat(skill.slug), "SKILL_ID=".concat(skill.id), "SKILL_API_KEY=".concat(skill.apiKey)];
140
138
  return _context.abrupt("return", results);
141
- case 42:
139
+ case 41:
142
140
  case "end":
143
141
  return _context.stop();
144
142
  }
145
143
  }
146
- }, _callee, this, [[1, 20]]);
144
+ }, _callee, this, [[1, 19]]);
147
145
  }));
148
146
  function execute(_x) {
149
147
  return _execute.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"file":"HerokuAction.js","names":["optionsSchema","buildSchema","id","description","fields","teamName","type","label","isRequired","shouldRunSilently","isPrivate","shouldBuildAndLint","defaultValue","shouldRunTests","DeployAction","options","results","assertRegisteredSkill","assertDependencies","assertLoggedInToHeroku","setupGitRepo","setupGitRemote","setupProcFile","procResults","actionUtil","mergeActionResults","assertNoPendingGitChanges","errors","validateAndNormalizeOptions","buildAndLint","runTests","deploy","ui","clear","skill","Service","getCurrentSkill","summaryLines","name","slug","apiKey","SpruceError","code","stage","friendlyMessage","execute","failed","stdout","toLowerCase","search","command","confirm","pass","pkg","skillName","get","prompt","namesUtil","toKebab","args","env","HOME","process","procFile","diskUtil","resolvePath","cwd","files","doesFileExist","writeFile","push","action","path","inRepo","missing","hint","length","dependencies","features","isInstalled","isTestInstalled","startLoading","Action","watchMode","shouldReportWhileRunning","testResults","isSkillInstalled","build","shouldFixLintFirst","buildResults","AbstractAction"],"sources":["../../../../src/features/deploy/actions/HerokuAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil, namesUtil, SkillAuth } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'deployHeroku',\n\tdescription: 'Deploy your skill to Heroku.',\n\tfields: {\n\t\tteamName: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'team name',\n\t\t\tisRequired: false,\n\t\t},\n\t\tshouldRunSilently: {\n\t\t\ttype: 'boolean',\n\t\t\tisPrivate: true,\n\t\t},\n\t\tshouldBuildAndLint: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t\tshouldRunTests: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class DeployAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['deploy.heroku']\n\tpublic invocationMessage = 'Deploying to Heroku... 🚀'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\tawait this.assertRegisteredSkill()\n\t\t\tawait this.assertDependencies()\n\t\t\tawait this.assertLoggedInToHeroku()\n\t\t\tawait this.setupGitRepo()\n\t\t\tawait this.setupGitRemote()\n\n\t\t\tconst procResults = await this.setupProcFile()\n\t\t\tresults = actionUtil.mergeActionResults(results, procResults)\n\n\t\t\tawait this.assertNoPendingGitChanges()\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tconst { shouldBuildAndLint, shouldRunTests } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tif (shouldBuildAndLint) {\n\t\t\tresults = await this.buildAndLint()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tif (shouldRunTests) {\n\t\t\tresults = await this.runTests()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tawait this.deploy()\n\n\t\tthis.ui.clear()\n\n\t\tconst skill = this.Service('auth').getCurrentSkill() as SkillAuth\n\n\t\tresults.summaryLines = [\n\t\t\t`You are good to go!`,\n\t\t\t\"You gotta make sure that your ENV's are set on Heroku to the following:\\n\",\n\t\t\t`SKILL_NAME=${skill.name}`,\n\t\t\t`SKILL_SLUG=${skill.slug}`,\n\t\t\t`SKILL_ID=${skill.id}`,\n\t\t\t`SKILL_API_KEY=${skill.apiKey}`,\n\t\t]\n\n\t\treturn results\n\t}\n\n\tprivate assertRegisteredSkill() {\n\t\tconst skill = this.Service('auth').getCurrentSkill()\n\t\tif (!skill) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'skill',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You have to register your skill. Try `spruce login && spruce register` to get going!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async deploy() {\n\t\tawait this.Service('command').execute(\n\t\t\t'git push --set-upstream heroku master'\n\t\t)\n\t}\n\n\tprivate async assertNoPendingGitChanges() {\n\t\tconst results = await this.Service('command').execute('git status')\n\n\t\tconst failed =\n\t\t\t(results.stdout ?? '').toLowerCase().search('not staged') > -1 ||\n\t\t\t(results.stdout ?? '').toLowerCase().search('no commits') > -1\n\n\t\tif (failed) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You have pending changes. Commit them and try again!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async setupGitRemote() {\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tawait command.execute('git ls-remote heroku')\n\n\t\t\treturn\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch {}\n\n\t\tconst confirm = await this.ui.confirm(\n\t\t\t`I didn't find a a remote named \"heroku\", want me to create one?`\n\t\t)\n\n\t\tif (!confirm) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'remote',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You need to setup a remote named \"heroku\" that Heroku will pull from.',\n\t\t\t})\n\t\t}\n\n\t\tlet pass = false\n\t\tlet label =\n\t\t\t'What name do you wanna give your app on heroku (using-kebab-case)?'\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst skillName = pkg.get('name')\n\n\t\tdo {\n\t\t\tlet name = await this.ui.prompt({\n\t\t\t\ttype: 'text',\n\t\t\t\tlabel,\n\t\t\t\tdefaultValue: skillName,\n\t\t\t\tisRequired: true,\n\t\t\t})\n\n\t\t\tname = namesUtil.toKebab(name)\n\n\t\t\ttry {\n\t\t\t\tawait command.execute('heroku create', {\n\t\t\t\t\targs: [name],\n\t\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t\t})\n\n\t\t\t\tpass = true\n\t\t\t} catch {\n\t\t\t\tlabel = `Uh oh, \"${name}\" is taken, try again!`\n\t\t\t}\n\t\t} while (!pass)\n\n\t\ttry {\n\t\t\tawait command.execute('heroku buildpacks:set heroku/nodejs', {\n\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t})\n\t\t} catch {\n\t\t\tthrow new SpruceError({ code: 'DEPLOY_FAILED', stage: 'remote' })\n\t\t}\n\t}\n\n\tprivate async setupProcFile(): Promise<FeatureActionResponse> {\n\t\tconst procFile = diskUtil.resolvePath(this.cwd, 'Procfile')\n\t\tconst results: FeatureActionResponse = {\n\t\t\tfiles: [],\n\t\t}\n\t\tif (!diskUtil.doesFileExist(procFile)) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`I don't see a Procfile, which Heroku needs to know how to run your skill. Want me to create one?`\n\t\t\t)\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\t\tstage: 'procfile',\n\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t'You are gonna need to create a Procfile in your project root so heroku knows how to run your skill.',\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdiskUtil.writeFile(procFile, 'worker: npm run boot')\n\t\t\tresults.files?.push({\n\t\t\t\tname: 'Procfile',\n\t\t\t\taction: 'generated',\n\t\t\t\tpath: procFile,\n\t\t\t\tdescription: 'Used by Heroku to know how to run your skill.',\n\t\t\t})\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async setupGitRepo() {\n\t\tconst command = this.Service('command')\n\n\t\tlet inRepo = true\n\t\ttry {\n\t\t\tawait command.execute('git status')\n\t\t} catch {\n\t\t\tinRepo = false\n\t\t}\n\n\t\tif (!inRepo) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t'You are not in a git repo. Would you like to initialize one now?'\n\t\t\t)\n\n\t\t\ttry {\n\t\t\t\tif (confirm) {\n\t\t\t\t\tawait command.execute('git init')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t} catch {}\n\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You must be in a git repo to deploy!',\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async assertLoggedInToHeroku() {\n\t\ttry {\n\t\t\tawait this.Service('command').execute('grep api.heroku.com ~/.netrc')\n\t\t} catch {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'heroku',\n\t\t\t\tfriendlyMessage: `You gotta be logged in using \\`heroku login\\` before you can deploy.!`,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async assertDependencies() {\n\t\tconst command = this.Service('command')\n\t\tconst missing: { name: string; hint: string }[] = []\n\n\t\ttry {\n\t\t\tawait command.execute('which heroku')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'heroku',\n\t\t\t\thint: 'Follow install instructions @ https://devcenter.heroku.com/articles/heroku-cli#download-and-install',\n\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tawait command.execute('which git')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'git',\n\t\t\t\thint: 'Follow install instructions @ https://git-scm.com/downloads',\n\t\t\t})\n\t\t}\n\n\t\tif (missing.length > 0) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'MISSING_DEPENDENCIES',\n\t\t\t\tdependencies: missing,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async runTests() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isTestInstalled = await this.features.isInstalled('test')\n\n\t\tif (isTestInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Testing your skill. Hold onto your pants. 👖')\n\n\t\t\t\tconst testResults = await this.Action('test', 'test').execute({\n\t\t\t\t\twatchMode: 'off',\n\t\t\t\t\tshouldReportWhileRunning: false,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, testResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'testing' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n\n\tprivate async buildAndLint() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (isSkillInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Building your skill. This may take a minute...')\n\n\t\t\t\tconst buildResults = await this.Service('build').build({\n\t\t\t\t\tshouldFixLintFirst: true,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, buildResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'building' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"HerokuAction.js","names":["optionsSchema","buildSchema","id","description","fields","teamName","type","label","isRequired","shouldRunSilently","isPrivate","shouldBuildAndLint","defaultValue","shouldRunTests","DeployAction","options","results","assertRegisteredSkill","assertDependencies","assertLoggedInToHeroku","setupGitRepo","setupGitRemote","setupProcFile","procResults","actionUtil","mergeActionResults","assertNoPendingGitChanges","errors","validateAndNormalizeOptions","buildAndLint","runTests","deploy","ui","clear","skill","Service","getCurrentSkill","summaryLines","name","slug","apiKey","SpruceError","code","stage","friendlyMessage","execute","failed","stdout","toLowerCase","search","command","confirm","pass","pkg","skillName","get","prompt","namesUtil","toKebab","args","env","HOME","process","procFile","diskUtil","resolvePath","cwd","files","doesFileExist","writeFile","push","action","path","inRepo","missing","hint","length","dependencies","features","isInstalled","isTestInstalled","startLoading","Action","watchMode","shouldReportWhileRunning","testResults","isSkillInstalled","build","shouldFixLintFirst","buildResults","AbstractAction"],"sources":["../../../../src/features/deploy/actions/HerokuAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil, namesUtil, SkillAuth } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'deployHeroku',\n\tdescription: 'Deploy your skill to Heroku.',\n\tfields: {\n\t\tteamName: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'team name',\n\t\t\tisRequired: false,\n\t\t},\n\t\tshouldRunSilently: {\n\t\t\ttype: 'boolean',\n\t\t\tisPrivate: true,\n\t\t},\n\t\tshouldBuildAndLint: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t\tshouldRunTests: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class DeployAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['deploy.heroku']\n\tpublic invocationMessage = 'Deploying to Heroku... 🚀'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\tthis.assertRegisteredSkill()\n\t\t\tawait this.assertDependencies()\n\t\t\tawait this.assertLoggedInToHeroku()\n\t\t\tawait this.setupGitRepo()\n\t\t\tawait this.setupGitRemote()\n\n\t\t\tconst procResults = await this.setupProcFile()\n\t\t\tresults = actionUtil.mergeActionResults(results, procResults)\n\n\t\t\tawait this.assertNoPendingGitChanges()\n\t\t} catch (err: any) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tconst { shouldBuildAndLint, shouldRunTests } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tif (shouldBuildAndLint) {\n\t\t\tresults = await this.buildAndLint()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tif (shouldRunTests) {\n\t\t\tresults = await this.runTests()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tawait this.deploy()\n\n\t\tthis.ui.clear()\n\n\t\tconst skill = this.Service('auth').getCurrentSkill() as SkillAuth\n\n\t\tresults.summaryLines = [\n\t\t\t`You are good to go!`,\n\t\t\t\"You gotta make sure that your ENV's are set on Heroku to the following:\\n\",\n\t\t\t`SKILL_NAME=${skill.name}`,\n\t\t\t`SKILL_SLUG=${skill.slug}`,\n\t\t\t`SKILL_ID=${skill.id}`,\n\t\t\t`SKILL_API_KEY=${skill.apiKey}`,\n\t\t]\n\n\t\treturn results\n\t}\n\n\tprivate assertRegisteredSkill() {\n\t\tconst skill = this.Service('auth').getCurrentSkill()\n\t\tif (!skill) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'skill',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You have to register your skill. Try `spruce login && spruce register` to get going!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async deploy() {\n\t\tawait this.Service('command').execute(\n\t\t\t'git push --set-upstream heroku master'\n\t\t)\n\t}\n\n\tprivate async assertNoPendingGitChanges() {\n\t\tconst results = await this.Service('command').execute('git status')\n\n\t\tconst failed =\n\t\t\t(results.stdout ?? '').toLowerCase().search('not staged') > -1 ||\n\t\t\t(results.stdout ?? '').toLowerCase().search('no commits') > -1\n\n\t\tif (failed) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You have pending changes. Commit them and try again!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async setupGitRemote() {\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tawait command.execute('git ls-remote heroku')\n\n\t\t\treturn\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch {}\n\n\t\tconst confirm = await this.ui.confirm(\n\t\t\t`I didn't find a a remote named \"heroku\", want me to create one?`\n\t\t)\n\n\t\tif (!confirm) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'remote',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You need to setup a remote named \"heroku\" that Heroku will pull from.',\n\t\t\t})\n\t\t}\n\n\t\tlet pass = false\n\t\tlet label =\n\t\t\t'What name do you wanna give your app on heroku (using-kebab-case)?'\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst skillName = pkg.get('name')\n\n\t\tdo {\n\t\t\tlet name = await this.ui.prompt({\n\t\t\t\ttype: 'text',\n\t\t\t\tlabel,\n\t\t\t\tdefaultValue: skillName,\n\t\t\t\tisRequired: true,\n\t\t\t})\n\n\t\t\tname = namesUtil.toKebab(name)\n\n\t\t\ttry {\n\t\t\t\tawait command.execute('heroku create', {\n\t\t\t\t\targs: [name],\n\t\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t\t})\n\n\t\t\t\tpass = true\n\t\t\t} catch {\n\t\t\t\tlabel = `Uh oh, \"${name}\" is taken, try again!`\n\t\t\t}\n\t\t} while (!pass)\n\n\t\ttry {\n\t\t\tawait command.execute('heroku buildpacks:set heroku/nodejs', {\n\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t})\n\t\t} catch {\n\t\t\tthrow new SpruceError({ code: 'DEPLOY_FAILED', stage: 'remote' })\n\t\t}\n\t}\n\n\tprivate async setupProcFile(): Promise<FeatureActionResponse> {\n\t\tconst procFile = diskUtil.resolvePath(this.cwd, 'Procfile')\n\t\tconst results: FeatureActionResponse = {\n\t\t\tfiles: [],\n\t\t}\n\t\tif (!diskUtil.doesFileExist(procFile)) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`I don't see a Procfile, which Heroku needs to know how to run your skill. Want me to create one?`\n\t\t\t)\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\t\tstage: 'procfile',\n\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t'You are gonna need to create a Procfile in your project root so heroku knows how to run your skill.',\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdiskUtil.writeFile(procFile, 'worker: npm run boot')\n\t\t\tresults.files?.push({\n\t\t\t\tname: 'Procfile',\n\t\t\t\taction: 'generated',\n\t\t\t\tpath: procFile,\n\t\t\t\tdescription: 'Used by Heroku to know how to run your skill.',\n\t\t\t})\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async setupGitRepo() {\n\t\tconst command = this.Service('command')\n\n\t\tlet inRepo = true\n\t\ttry {\n\t\t\tawait command.execute('git status')\n\t\t} catch {\n\t\t\tinRepo = false\n\t\t}\n\n\t\tif (!inRepo) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t'You are not in a git repo. Would you like to initialize one now?'\n\t\t\t)\n\n\t\t\ttry {\n\t\t\t\tif (confirm) {\n\t\t\t\t\tawait command.execute('git init')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t} catch {}\n\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You must be in a git repo to deploy!',\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async assertLoggedInToHeroku() {\n\t\ttry {\n\t\t\tawait this.Service('command').execute('grep api.heroku.com ~/.netrc')\n\t\t} catch {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'heroku',\n\t\t\t\tfriendlyMessage: `You gotta be logged in using \\`heroku login\\` before you can deploy.!`,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async assertDependencies() {\n\t\tconst command = this.Service('command')\n\t\tconst missing: { name: string; hint: string }[] = []\n\n\t\ttry {\n\t\t\tawait command.execute('which heroku')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'heroku',\n\t\t\t\thint: 'Follow install instructions @ https://devcenter.heroku.com/articles/heroku-cli#download-and-install',\n\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tawait command.execute('which git')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'git',\n\t\t\t\thint: 'Follow install instructions @ https://git-scm.com/downloads',\n\t\t\t})\n\t\t}\n\n\t\tif (missing.length > 0) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'MISSING_DEPENDENCIES',\n\t\t\t\tdependencies: missing,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async runTests() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isTestInstalled = await this.features.isInstalled('test')\n\n\t\tif (isTestInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Testing your skill. Hold onto your pants. 👖')\n\n\t\t\t\tconst testResults = await this.Action('test', 'test').execute({\n\t\t\t\t\twatchMode: 'off',\n\t\t\t\t\tshouldReportWhileRunning: false,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, testResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'testing' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n\n\tprivate async buildAndLint() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (isSkillInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Building your skill. This may take a minute...')\n\n\t\t\t\tconst buildResults = await this.Service('build').build({\n\t\t\t\t\tshouldFixLintFirst: true,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, buildResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'building' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
@@ -48,7 +48,7 @@ var ErrorFeature = /*#__PURE__*/function (_AbstractFeature) {
48
48
  switch (_context.prev = _context.next) {
49
49
  case 0:
50
50
  _context.next = 2;
51
- return _this.featureInstaller.isInstalled('error');
51
+ return _this.features.isInstalled('error');
52
52
  case 2:
53
53
  isInstalled = _context.sent;
54
54
  if (!isInstalled) {
@@ -79,7 +79,7 @@ var ErrorFeature = /*#__PURE__*/function (_AbstractFeature) {
79
79
  switch (_context2.prev = _context2.next) {
80
80
  case 0:
81
81
  _context2.next = 2;
82
- return this.featureInstaller.isInstalled('skill');
82
+ return this.features.isInstalled('skill');
83
83
  case 2:
84
84
  isSkillInstalled = _context2.sent;
85
85
  if (isSkillInstalled) {
@@ -118,11 +118,11 @@ var ErrorFeature = /*#__PURE__*/function (_AbstractFeature) {
118
118
  case 0:
119
119
  featureCode = payload.featureCode, actionCode = payload.actionCode;
120
120
  _context3.next = 3;
121
- return this.featureInstaller.isInstalled('error');
121
+ return this.features.isInstalled('error');
122
122
  case 3:
123
123
  isInstalled = _context3.sent;
124
124
  _context3.next = 6;
125
- return this.featureInstaller.isInstalled('skill');
125
+ return this.features.isInstalled('skill');
126
126
  case 6:
127
127
  isSkillInstalled = _context3.sent;
128
128
  if (!(isInstalled && featureCode === 'node' && actionCode === 'upgrade')) {
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorFeature.js","names":["ErrorFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidExecuteCommand","bind","featureInstaller","isInstalled","filesToSkip","isSkillInstalled","writePlugin","files","payload","featureCode","actionCode","Action","execute","results","plugin","push","Writer","cwd","AbstractFeature"],"sources":["../../../src/features/error/ErrorFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n\tInstallResults,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\terror: ErrorFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\terror: undefined\n\t}\n}\n\nexport default class ErrorFeature extends AbstractFeature {\n\tpublic nameReadable = 'error handling'\n\tpublic description =\n\t\t'Errors: Use schemas to define your errors and get great type checking!'\n\tpublic code: FeatureCode = 'error'\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t\t{ code: 'node', isRequired: true },\n\t]\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/error@latest',\n\t\t},\n\t]\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecuteCommand.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on('skill.will-write-directory-template', async () => {\n\t\t\tconst isInstalled = await this.featureInstaller.isInstalled('error')\n\t\t\tif (isInstalled) {\n\t\t\t\treturn {\n\t\t\t\t\tfilesToSkip: ['options.types.ts'],\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n\n\tpublic async afterPackageInstall(): Promise<InstallResults> {\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (!isSkillInstalled) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst files = await this.writePlugin()\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async handleDidExecuteCommand(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('error')\n\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tconst results = await this.Action('error', 'sync').execute({})\n\n\t\t\tif (isSkillInstalled) {\n\t\t\t\tif (!results.files) {\n\t\t\t\t\tresults.files = []\n\t\t\t\t}\n\n\t\t\t\tconst plugin = await this.writePlugin()\n\t\t\t\tresults.files.push(...plugin)\n\t\t\t}\n\n\t\t\treturn results\n\t\t}\n\n\t\treturn {}\n\t}\n\tprivate async writePlugin() {\n\t\treturn this.Writer('error').writePlugin(this.cwd)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ErrorFeature.js","names":["ErrorFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidExecuteCommand","bind","features","isInstalled","filesToSkip","isSkillInstalled","writePlugin","files","payload","featureCode","actionCode","Action","execute","results","plugin","push","Writer","cwd","AbstractFeature"],"sources":["../../../src/features/error/ErrorFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n\tInstallResults,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\terror: ErrorFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\terror: undefined\n\t}\n}\n\nexport default class ErrorFeature extends AbstractFeature {\n\tpublic nameReadable = 'error handling'\n\tpublic description =\n\t\t'Errors: Use schemas to define your errors and get great type checking!'\n\tpublic code: FeatureCode = 'error'\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t\t{ code: 'node', isRequired: true },\n\t]\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/error@latest',\n\t\t},\n\t]\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecuteCommand.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on('skill.will-write-directory-template', async () => {\n\t\t\tconst isInstalled = await this.features.isInstalled('error')\n\t\t\tif (isInstalled) {\n\t\t\t\treturn {\n\t\t\t\t\tfilesToSkip: ['options.types.ts'],\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n\n\tpublic async afterPackageInstall(): Promise<InstallResults> {\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (!isSkillInstalled) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst files = await this.writePlugin()\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async handleDidExecuteCommand(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tconst isInstalled = await this.features.isInstalled('error')\n\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tconst results = await this.Action('error', 'sync').execute({})\n\n\t\t\tif (isSkillInstalled) {\n\t\t\t\tif (!results.files) {\n\t\t\t\t\tresults.files = []\n\t\t\t\t}\n\n\t\t\t\tconst plugin = await this.writePlugin()\n\t\t\t\tresults.files.push(...plugin)\n\t\t\t}\n\n\t\t\treturn results\n\t\t}\n\n\t\treturn {}\n\t}\n\tprivate async writePlugin() {\n\t\treturn this.Writer('error').writePlugin(this.cwd)\n\t}\n}\n"],"mappings":"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"}
@@ -2,14 +2,6 @@ import { FileDescription } from '../../types/cli.types';
2
2
  import AbstractFeature, { FeatureDependency, FeatureOptions } from '../AbstractFeature';
3
3
  import { FeatureActionResponse, FeatureCode } from '../features.types';
4
4
  import EventContractBuilder from './builders/EventContractBuilder';
5
- declare module '../../features/features.types' {
6
- interface FeatureMap {
7
- event: EventFeature;
8
- }
9
- interface FeatureOptionsMap {
10
- event: undefined;
11
- }
12
- }
13
5
  export default class EventFeature extends AbstractFeature {
14
6
  code: FeatureCode;
15
7
  nameReadable: string;
@@ -33,3 +25,11 @@ export default class EventFeature extends AbstractFeature {
33
25
  getEventContractBuilder(): EventContractBuilder;
34
26
  hasBeenSynced(): boolean;
35
27
  }
28
+ declare module '../../features/features.types' {
29
+ interface FeatureMap {
30
+ event: EventFeature;
31
+ }
32
+ interface FeatureOptionsMap {
33
+ event: undefined;
34
+ }
35
+ }
@@ -36,6 +36,9 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
36
36
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dependencies", [{
37
37
  code: 'schema',
38
38
  isRequired: true
39
+ }, {
40
+ code: 'permission',
41
+ isRequired: true
39
42
  }]);
40
43
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "packageDependencies", [{
41
44
  name: '@sprucelabs/mercury-client'
@@ -68,7 +71,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
68
71
  case 0:
69
72
  _spruceSkillUtils.diskUtil.createDir(_spruceSkillUtils.diskUtil.resolvePath(this.cwd, 'src', 'events'));
70
73
  _context.next = 3;
71
- return this.featureInstaller.isInstalled('skill');
74
+ return this.features.isInstalled('skill');
72
75
  case 3:
73
76
  isSkillInstalled = _context.sent;
74
77
  if (!isSkillInstalled) {
@@ -114,7 +117,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
114
117
  settings.clearListenerCache();
115
118
  }
116
119
  _context2.next = 6;
117
- return this.featureInstaller.isInstalled('event');
120
+ return this.features.isInstalled('event');
118
121
  case 6:
119
122
  isInstalled = _context2.sent;
120
123
  isRemoteRelevant = isInstalled && (featureCode === 'event' || featureCode === 'eventContract' || actionCode === 'login') && actionCode !== 'setRemote';
@@ -179,7 +182,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
179
182
  case 0:
180
183
  featureCode = payload.featureCode, actionCode = payload.actionCode;
181
184
  _context4.next = 3;
182
- return this.featureInstaller.isInstalled('event');
185
+ return this.features.isInstalled('event');
183
186
  case 3:
184
187
  isInstalled = _context4.sent;
185
188
  results = {};
@@ -272,7 +275,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
272
275
  switch (_context6.prev = _context6.next) {
273
276
  case 0:
274
277
  _context6.next = 2;
275
- return this.featureInstaller.isInstalled(this.code);
278
+ return this.features.isInstalled(this.code);
276
279
  case 2:
277
280
  isInstalled = _context6.sent;
278
281
  lastSync = this.Service('eventSettings').getLastSyncOptions();
@@ -1 +1 @@
1
- {"version":3,"file":"EventFeature.js","names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","featureInstaller","isInstalled","isSkillInstalled","Action","execute","payload","featureCode","actionCode","results","initiatingAction","EventStore","clearCache","combined","combineCodes","settings","Service","clearListenerCache","isRemoteRelevant","appendRemoteToResultsOrPrompt","remoteResults","actionUtil","mergeActionResults","syncResults","isUpgrade","syncListenersAndMixinResults","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"sources":["../../../src/features/event/EventFeature.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport actionUtil from '../../utilities/action.utility'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\nimport EventStore from './stores/EventStore'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\tprivate initiatingAction?: string\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\t\tif (isSkillInstalled) {\n\t\t\treturn await this.Action('event', 'sync.listeners').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tif (!this.initiatingAction) {\n\t\t\tEventStore.clearCache()\n\t\t\tconst combined = this.combineCodes(featureCode, actionCode)\n\t\t\tthis.initiatingAction = combined\n\t\t}\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\t\tconst isRemoteRelevant =\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\n\t\tif (isRemoteRelevant) {\n\t\t\tconst remoteResults = await this.appendRemoteToResultsOrPrompt()\n\t\t\tresults = actionUtil.mergeActionResults(results, remoteResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async syncListenersAndMixinResults(results: FeatureActionResponse) {\n\t\tconst syncResults = await this.Action('event', 'sync.listeners').execute({})\n\t\tresults = actionUtil.mergeActionResults(results, syncResults)\n\t\treturn results\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tlet results = {}\n\n\t\tconst isUpgrade =\n\t\t\tisInstalled && featureCode === 'node' && actionCode === 'upgrade'\n\n\t\tif (isUpgrade) {\n\t\t\tresults = await this.Action('event', 'sync').execute({})\n\t\t\tresults = await this.syncListenersAndMixinResults(results)\n\t\t}\n\n\t\tif (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {\n\t\t\tEventStore.clearCache()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate combineCodes(featureCode: string, actionCode: string) {\n\t\treturn `${featureCode}.${actionCode}`\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EventFeature.js","names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","features","isInstalled","isSkillInstalled","Action","execute","payload","featureCode","actionCode","results","initiatingAction","EventStore","clearCache","combined","combineCodes","settings","Service","clearListenerCache","isRemoteRelevant","appendRemoteToResultsOrPrompt","remoteResults","actionUtil","mergeActionResults","syncResults","isUpgrade","syncListenersAndMixinResults","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"sources":["../../../src/features/event/EventFeature.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport actionUtil from '../../utilities/action.utility'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\nimport EventStore from './stores/EventStore'\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t\t{ code: 'permission', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\tprivate initiatingAction?: string\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\t\tif (isSkillInstalled) {\n\t\t\treturn await this.Action('event', 'sync.listeners').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tif (!this.initiatingAction) {\n\t\t\tEventStore.clearCache()\n\t\t\tconst combined = this.combineCodes(featureCode, actionCode)\n\t\t\tthis.initiatingAction = combined\n\t\t}\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tconst isInstalled = await this.features.isInstalled('event')\n\t\tconst isRemoteRelevant =\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\n\t\tif (isRemoteRelevant) {\n\t\t\tconst remoteResults = await this.appendRemoteToResultsOrPrompt()\n\t\t\tresults = actionUtil.mergeActionResults(results, remoteResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async syncListenersAndMixinResults(results: FeatureActionResponse) {\n\t\tconst syncResults = await this.Action('event', 'sync.listeners').execute({})\n\t\tresults = actionUtil.mergeActionResults(results, syncResults)\n\t\treturn results\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.features.isInstalled('event')\n\n\t\tlet results = {}\n\n\t\tconst isUpgrade =\n\t\t\tisInstalled && featureCode === 'node' && actionCode === 'upgrade'\n\n\t\tif (isUpgrade) {\n\t\t\tresults = await this.Action('event', 'sync').execute({})\n\t\t\tresults = await this.syncListenersAndMixinResults(results)\n\t\t}\n\n\t\tif (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {\n\t\t\tEventStore.clearCache()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate combineCodes(featureCode: string, actionCode: string) {\n\t\treturn `${featureCode}.${actionCode}`\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.features.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreateAction.js","names":["optionsSchema","buildSchema","id","description","fields","nameReadable","namedTemplateItemSchema","isRequired","nameKebab","label","hint","nameCamel","isGlobal","type","version","isPrivate","syncEventActionSchema","CreateAction","options","validateAndNormalizeOptions","Store","loadCurrentSkill","skill","slug","errors","SpruceError","code","destinationDir","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","Writer","writeEvent","files","syncOptions","normalizeSchemaValues","shouldIncludePrivateFields","Action","execute","syncResponse","fqen","eventNameUtil","join","eventName","eventNamespace","actionUtil","mergeActionResults","meta","AbstractAction"],"sources":["../../../../src/features/event/actions/CreateAction.ts"],"sourcesContent":["import {\n\tbuildSchema,\n\tnormalizeSchemaValues,\n\tSchemaValues,\n} from '@sprucelabs/schema'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport namedTemplateItemSchema from '#spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'createEventAction',\n\tdescription:\n\t\t\"Create a new event and I'll register it with Mercury when you boot the skill!\",\n\tfields: {\n\t\tnameReadable: {\n\t\t\t...namedTemplateItemSchema.fields.nameReadable,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameKebab: {\n\t\t\t...namedTemplateItemSchema.fields.nameKebab,\n\t\t\tlabel: 'Event name',\n\t\t\thint: `kebab-case`,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameCamel: {\n\t\t\t...namedTemplateItemSchema.fields.nameCamel,\n\t\t\tisRequired: true,\n\t\t},\n\t\tisGlobal: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Is this a global event?',\n\t\t\thint: \"This will allow skills to listen without being installed at the same organization. You'll need permission to make this happen.\",\n\t\t},\n\t\tversion: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Version',\n\t\t\tisPrivate: true,\n\t\t},\n\t\t...syncEventActionSchema.fields,\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic invocationMessage = 'Creating a new event signature... 🜒'\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tlet { nameKebab, nameReadable, nameCamel, version, isGlobal } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tif (!skill.id || !skill.slug) {\n\t\t\treturn {\n\t\t\t\terrors: [new SpruceError({ code: 'SKILL_NOT_REGISTERED' })],\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst destinationDir = diskUtil.resolvePath(this.cwd, 'src', 'events')\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tdiskUtil.resolvePath(destinationDir, '**', '*')\n\t\t\t)\n\n\t\t\tconst files = await this.Writer('event').writeEvent(destinationDir, {\n\t\t\t\tnameKebab,\n\t\t\t\tnameCamel,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\tnameReadable,\n\t\t\t\tisGlobal,\n\t\t\t})\n\n\t\t\tconst syncOptions = normalizeSchemaValues(\n\t\t\t\tsyncEventActionSchema,\n\t\t\t\toptions,\n\t\t\t\t{\n\t\t\t\t\tshouldIncludePrivateFields: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tconst syncResponse = await this.Action('event', 'sync').execute(\n\t\t\t\tsyncOptions\n\t\t\t)\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName: nameKebab,\n\t\t\t\teventNamespace: skill.slug,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t})\n\n\t\t\treturn actionUtil.mergeActionResults(\n\t\t\t\t{ files, meta: { fqen } },\n\t\t\t\tsyncResponse\n\t\t\t)\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAAiD;AAAA;AAAA;AAAA;AAGjD,IAAMA,aAAa,GAAG,IAAAC,mBAAW,EAAC;EACjCC,EAAE,EAAE,mBAAmB;EACvBC,WAAW,EACV,+EAA+E;EAChFC,MAAM;IACLC,YAAY,kCACRC,6BAAuB,CAACF,MAAM,CAACC,YAAY;MAC9CE,UAAU,EAAE;IAAI,EAChB;IACDC,SAAS,kCACLF,6BAAuB,CAACF,MAAM,CAACI,SAAS;MAC3CC,KAAK,EAAE,YAAY;MACnBC,IAAI,cAAc;MAClBH,UAAU,EAAE;IAAI,EAChB;IACDI,SAAS,kCACLL,6BAAuB,CAACF,MAAM,CAACO,SAAS;MAC3CJ,UAAU,EAAE;IAAI,EAChB;IACDK,QAAQ,EAAE;MACTC,IAAI,EAAE,SAAS;MACfJ,KAAK,EAAE,yBAAyB;MAChCC,IAAI,EAAE;IACP,CAAC;IACDI,OAAO,EAAE;MACRD,IAAI,EAAE,MAAM;MACZJ,KAAK,EAAE,SAAS;MAChBM,SAAS,EAAE;IACZ;EAAC,GACEC,4BAAqB,CAACZ,MAAM;AAEjC,CAAC,CAAC;AAAA,IAImBa,YAAY;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,kGACMjB,aAAa;IAAA,sGACxB,sCAAsC;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAEjE,iBACCkB,OAAoC;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,wBAGnC,IAAI,CAACC,2BAA2B,CAACD,OAAO,CAAC,EADpCV,SAAS,yBAATA,SAAS,EAAEH,YAAY,yBAAZA,YAAY,EAAEM,SAAS,yBAATA,SAAS,EAAEG,OAAO,yBAAPA,OAAO,EAAEF,QAAQ,yBAARA,QAAQ;gBAAA;gBAAA,OAGvC,IAAI,CAACQ,KAAK,CAAC,OAAO,CAAC,CAACC,gBAAgB,EAAE;cAAA;gBAApDC,KAAK;gBAAA,MAEP,CAACA,KAAK,CAACpB,EAAE,IAAI,CAACoB,KAAK,CAACC,IAAI;kBAAA;kBAAA;gBAAA;gBAAA,iCACpB;kBACNC,MAAM,EAAE,CAAC,IAAIC,uBAAW,CAAC;oBAAEC,IAAI,EAAE;kBAAuB,CAAC,CAAC;gBAC3D,CAAC;cAAA;gBAAA;gBAIKC,cAAc,GAAGC,0BAAQ,CAACC,WAAW,CAAC,IAAI,CAACC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;gBAAA;gBAAA,OACxC,IAAI,CAACC,cAAc,CAChDjB,OAAO,EACPc,0BAAQ,CAACC,WAAW,CAACF,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,CAC/C;cAAA;gBAHKK,eAAe;gBAAA;gBAAA,OAKD,IAAI,CAACC,MAAM,CAAC,OAAO,CAAC,CAACC,UAAU,CAACP,cAAc,EAAE;kBACnEnB,SAAS,EAATA,SAAS;kBACTG,SAAS,EAATA,SAAS;kBACTG,OAAO,EAAEkB,eAAe;kBACxB3B,YAAY,EAAZA,YAAY;kBACZO,QAAQ,EAARA;gBACD,CAAC,CAAC;cAAA;gBANIuB,KAAK;gBAQLC,WAAW,GAAG,IAAAC,6BAAqB,EACxCrB,4BAAqB,EACrBE,OAAO,EACP;kBACCoB,0BAA0B,EAAE;gBAC7B,CAAC,CACD;gBAAA;gBAAA,OAE0B,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAACC,OAAO,CAC9DJ,WAAW,CACX;cAAA;gBAFKK,YAAY;gBAIZC,IAAI,GAAGC,+BAAa,CAACC,IAAI,CAAC;kBAC/BC,SAAS,EAAErC,SAAS;kBACpBsC,cAAc,EAAExB,KAAK,CAACC,IAAI;kBAC1BT,OAAO,EAAEkB;gBACV,CAAC,CAAC;gBAAA,iCAEKe,kBAAU,CAACC,kBAAkB,CACnC;kBAAEb,KAAK,EAALA,KAAK;kBAAEc,IAAI,EAAE;oBAAEP,IAAI,EAAJA;kBAAK;gBAAE,CAAC,EACzBD,YAAY,CACZ;cAAA;gBAAA;gBAAA;gBAAA,iCAEM;kBACNjB,MAAM,EAAE;gBACT,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA5DwC0B,2BAAc;AAAA"}
1
+ {"version":3,"file":"CreateAction.js","names":["optionsSchema","buildSchema","id","description","fields","nameReadable","namedTemplateItemSchema","isRequired","nameKebab","label","hint","nameCamel","isGlobal","type","version","isPrivate","syncEventActionSchema","CreateAction","options","validateAndNormalizeOptions","Store","loadCurrentSkill","skill","slug","errors","SpruceError","code","destinationDir","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","Writer","writeEvent","files","syncOptions","normalizeSchemaValues","shouldIncludePrivateFields","Action","execute","syncResponse","fqen","eventNameUtil","join","eventName","eventNamespace","actionUtil","mergeActionResults","meta","AbstractAction"],"sources":["../../../../src/features/event/actions/CreateAction.ts"],"sourcesContent":["import {\n\tbuildSchema,\n\tnormalizeSchemaValues,\n\tSchemaValues,\n} from '@sprucelabs/schema'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport namedTemplateItemSchema from '#spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'createEventAction',\n\tdescription:\n\t\t\"Create a new event and I'll register it with Mercury when you boot the skill!\",\n\tfields: {\n\t\tnameReadable: {\n\t\t\t...namedTemplateItemSchema.fields.nameReadable,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameKebab: {\n\t\t\t...namedTemplateItemSchema.fields.nameKebab,\n\t\t\tlabel: 'Event name',\n\t\t\thint: `kebab-case`,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameCamel: {\n\t\t\t...namedTemplateItemSchema.fields.nameCamel,\n\t\t\tisRequired: true,\n\t\t},\n\t\tisGlobal: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Is this a global event?',\n\t\t\thint: \"This will allow skills to listen without being installed at the same organization. You'll need permission to make this happen.\",\n\t\t},\n\t\tversion: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Version',\n\t\t\tisPrivate: true,\n\t\t},\n\t\t...syncEventActionSchema.fields,\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic invocationMessage = 'Creating a new event signature... 🜒'\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tlet { nameKebab, nameReadable, nameCamel, version, isGlobal } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tif (!skill.id || !skill.slug) {\n\t\t\treturn {\n\t\t\t\terrors: [new SpruceError({ code: 'SKILL_NOT_REGISTERED' })],\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst destinationDir = diskUtil.resolvePath(this.cwd, 'src', 'events')\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tdiskUtil.resolvePath(destinationDir, '**', '*')\n\t\t\t)\n\n\t\t\tconst files = await this.Writer('event').writeEvent(destinationDir, {\n\t\t\t\tnameKebab,\n\t\t\t\tnameCamel,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\tnameReadable,\n\t\t\t\tisGlobal,\n\t\t\t})\n\n\t\t\tconst syncOptions = normalizeSchemaValues(\n\t\t\t\tsyncEventActionSchema,\n\t\t\t\toptions,\n\t\t\t\t{\n\t\t\t\t\tshouldIncludePrivateFields: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tconst syncResponse = await this.Action('event', 'sync').execute(\n\t\t\t\tsyncOptions\n\t\t\t)\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName: nameKebab,\n\t\t\t\teventNamespace: skill.slug,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t})\n\n\t\t\treturn actionUtil.mergeActionResults(\n\t\t\t\t{ files, meta: { fqen } },\n\t\t\t\tsyncResponse\n\t\t\t)\n\t\t} catch (err: any) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"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"}