@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
@@ -1 +1 @@
1
- {"version":3,"file":"ListenAction.js","names":["SKILL_EVENT_NAMESPACE","CORE_EVENT_NAMESPACE","MERCURY_API_NAMESPACE","ListenAction","eventListenActionSchema","options","normalizedOptions","validateAndNormalizeOptions","response","listenerDestinationDir","versionOptions","version","eventName","namespace","schemaTypesLookupDir","ui","startLoading","fetchEventContracts","contracts","stopLoading","collectNamespace","mapContractsToSelectChoices","eventChoicesByNamespace","SchemaError","code","friendlyMessage","Object","keys","join","parameters","collectEvent","isCoreEvent","undefined","fqen","eventNameUtil","eventNamespace","split","assertIsValidChoice","resolvedDestination","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","isSkillEvent","builder","EventTemplateItemBuilder","templateItems","buildEventTemplateItemForName","emitPayloadSchemaTemplateItem","responsePayloadSchemaTemplateItem","writeListener","files","syncListeners","syncResults","actionUtil","mergeActionResults","syncEvents","errors","eventStore","Store","loadCurrentSkill","skill","namespacesForFetch","getDependencyNamespaces","didUpdateHandler","msg","slug","localNamespace","length","namespaces","Service","get","map","d","syncOptions","normalizeSchemaValues","syncEventActionSchema","Action","execute","resolvedSchemaTypesLookupDir","writer","Writer","fullyQualifiedEventName","isValidEvent","find","e","value","i","eventChoices","prompt","type","label","isRequired","choices","namespaceChoices","forEach","contract","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","o","push","namesUtil","toPascal","AbstractAction"],"sources":["../../../../src/features/event/actions/ListenAction.ts"],"sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport {\n\tnormalizeSchemaValues,\n\tSchemaError,\n\tSchemaTemplateItem,\n\tSelectChoice,\n} from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tnamesUtil,\n\tMERCURY_API_NAMESPACE,\n} from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport eventListenActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport EventTemplateItemBuilder from '../../../templateItemBuilders/EventTemplateItemBuilder'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport { FetchContractsOptions } from '../stores/EventStore'\n\nconst SKILL_EVENT_NAMESPACE = 'skill'\nexport const CORE_EVENT_NAMESPACE = MERCURY_API_NAMESPACE\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptionsSchema\nexport default class ListenAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = eventListenActionSchema\n\tpublic invocationMessage = 'Creating event listener... 🜒'\n\tpublic commandAliases = ['listen.event', 'create.listener']\n\n\tpublic async execute(\n\t\toptions: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions\n\t): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\n\t\ttry {\n\t\t\tlet response: FeatureActionResponse = {}\n\n\t\t\tlet {\n\t\t\t\tlistenerDestinationDir,\n\t\t\t\tversion: versionOptions,\n\t\t\t\teventName,\n\t\t\t\tnamespace,\n\t\t\t\tschemaTypesLookupDir,\n\t\t\t} = normalizedOptions\n\n\t\t\tthis.ui.startLoading('Loading event contracts...')\n\n\t\t\tconst contracts = await this.fetchEventContracts(namespace)\n\n\t\t\tthis.ui.stopLoading()\n\n\t\t\tif (!namespace) {\n\t\t\t\tnamespace = await this.collectNamespace(contracts)\n\t\t\t}\n\n\t\t\tconst { eventChoicesByNamespace } =\n\t\t\t\tthis.mapContractsToSelectChoices(contracts)\n\n\t\t\tif (!eventChoicesByNamespace[namespace]) {\n\t\t\t\tthrow new SchemaError({\n\t\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\t\tfriendlyMessage: `${namespace} is not a valid event namespace. Try: \\n\\n${Object.keys(\n\t\t\t\t\t\teventChoicesByNamespace\n\t\t\t\t\t).join('\\n')}`,\n\t\t\t\t\tparameters: ['namespace'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (!eventName) {\n\t\t\t\teventName = await this.collectEvent(contracts, namespace)\n\t\t\t}\n\n\t\t\tconst isCoreEvent = namespace === CORE_EVENT_NAMESPACE\n\t\t\tif (isCoreEvent) {\n\t\t\t\tnamespace = undefined\n\t\t\t}\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName,\n\t\t\t\teventNamespace: namespace,\n\t\t\t\tversion: versionOptions,\n\t\t\t})\n\n\t\t\tlet { version } = eventNameUtil.split(fqen)\n\n\t\t\tthis.assertIsValidChoice(\n\t\t\t\teventChoicesByNamespace,\n\t\t\t\tnamespace ?? 'mercury',\n\t\t\t\teventName,\n\t\t\t\tfqen\n\t\t\t)\n\n\t\t\tconst resolvedDestination = diskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\tlistenerDestinationDir\n\t\t\t)\n\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tresolvedDestination\n\t\t\t)\n\n\t\t\tconst isSkillEvent = namespace !== SKILL_EVENT_NAMESPACE\n\n\t\t\tlet emitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\t\tlet responsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\n\t\t\tif (isSkillEvent) {\n\t\t\t\tconst builder = new EventTemplateItemBuilder()\n\t\t\t\tconst templateItems = builder.buildEventTemplateItemForName(\n\t\t\t\t\tcontracts,\n\t\t\t\t\teventNameUtil.join({\n\t\t\t\t\t\teventNamespace: !isCoreEvent ? namespace : undefined,\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion: resolvedVersion,\n\t\t\t\t\t})\n\t\t\t\t)\n\n\t\t\t\temitPayloadSchemaTemplateItem =\n\t\t\t\t\ttemplateItems.emitPayloadSchemaTemplateItem\n\t\t\t\tresponsePayloadSchemaTemplateItem =\n\t\t\t\t\ttemplateItems.responsePayloadSchemaTemplateItem\n\t\t\t}\n\n\t\t\tresponse.files = await this.writeListener({\n\t\t\t\tschemaTypesLookupDir,\n\t\t\t\tresolvedDestination,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\teventName,\n\t\t\t\tnamespace,\n\t\t\t\temitPayloadSchemaTemplateItem,\n\t\t\t\tresponsePayloadSchemaTemplateItem,\n\t\t\t})\n\n\t\t\tconst syncResults = await this.syncListeners()\n\n\t\t\tresponse = actionUtil.mergeActionResults(syncResults, response)\n\n\t\t\tif (isSkillEvent) {\n\t\t\t\tconst syncResults = await this.syncEvents(options)\n\t\t\t\tresponse = actionUtil.mergeActionResults(syncResults, response)\n\t\t\t}\n\n\t\t\treturn response\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\tprivate async fetchEventContracts(namespace?: string) {\n\t\tconst eventStore = this.Store('event')\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tconst namespacesForFetch =\n\t\t\tnamespace &&\n\t\t\tnamespace !== SKILL_EVENT_NAMESPACE &&\n\t\t\tnamespace !== CORE_EVENT_NAMESPACE\n\t\t\t\t? [namespace]\n\t\t\t\t: [...this.getDependencyNamespaces(), 'mercury']\n\n\t\tconst options: FetchContractsOptions = {\n\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t}\n\n\t\tif (skill.slug) {\n\t\t\toptions.localNamespace = skill.slug\n\t\t}\n\n\t\tif (namespacesForFetch.length > 0) {\n\t\t\toptions.namespaces = namespacesForFetch\n\t\t}\n\n\t\tconst { contracts } = await eventStore.fetchEventContracts(options)\n\n\t\treturn contracts\n\t}\n\n\tprivate getDependencyNamespaces() {\n\t\treturn this.Service('dependency')\n\t\t\t.get()\n\t\t\t.map((d) => d.namespace)\n\t}\n\n\tprivate async syncEvents(\n\t\toptions: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions\n\t) {\n\t\tconst syncOptions = normalizeSchemaValues(syncEventActionSchema, options)\n\n\t\tconst syncResults = await this.Action('event', 'sync').execute(syncOptions)\n\t\treturn syncResults\n\t}\n\n\tprivate async writeListener(options: {\n\t\tresolvedDestination: string\n\t\tschemaTypesLookupDir: string\n\t\tnamespace?: string | undefined\n\t\teventName: string\n\t\temitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\tversion: string\n\t\tresponsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t}) {\n\t\tconst {\n\t\t\tresolvedDestination,\n\t\t\tschemaTypesLookupDir,\n\t\t\tnamespace,\n\t\t\teventName,\n\t\t\tversion,\n\t\t} = options\n\n\t\tconst resolvedSchemaTypesLookupDir = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\tschemaTypesLookupDir\n\t\t)\n\t\tconst writer = this.Writer('event')\n\t\tconst files = await writer.writeListener(resolvedDestination, {\n\t\t\t...options,\n\t\t\tfullyQualifiedEventName: eventNameUtil.join({\n\t\t\t\teventName,\n\t\t\t\teventNamespace: namespace,\n\t\t\t\tversion,\n\t\t\t}),\n\t\t\tschemaTypesLookupDir: resolvedSchemaTypesLookupDir,\n\t\t})\n\n\t\treturn files\n\t}\n\n\tprivate assertIsValidChoice(\n\t\teventChoicesByNamespace: Record<string, SelectChoice[]>,\n\t\tnamespace: string,\n\t\teventName: string | undefined,\n\t\tfqen: string\n\t) {\n\t\tconst isValidEvent = !!eventChoicesByNamespace[namespace].find(\n\t\t\t(e) => e.value === eventName || e.value === fqen\n\t\t)\n\n\t\tif (!isValidEvent) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\tfriendlyMessage: `${eventName} is not a valid event . Try: \\n\\n${eventChoicesByNamespace[\n\t\t\t\t\tnamespace\n\t\t\t\t]\n\t\t\t\t\t.map((i) => i.value)\n\t\t\t\t\t.join('\\n')}`,\n\t\t\t\tparameters: ['eventName'],\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async syncListeners() {\n\t\treturn this.Action('event', 'sync.listeners').execute({})\n\t}\n\n\tprivate async collectEvent(\n\t\tcontracts: EventContract[],\n\t\tnamespace: string\n\t): Promise<string> {\n\t\tconst eventChoices: SelectChoice[] =\n\t\t\tthis.mapContractsToSelectChoices(contracts).eventChoicesByNamespace[\n\t\t\t\tnamespace\n\t\t\t]\n\n\t\tconst eventName = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Select an event',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: eventChoices,\n\t\t\t},\n\t\t})\n\n\t\treturn eventName\n\t}\n\n\tprivate async collectNamespace(contracts: EventContract[]): Promise<string> {\n\t\tconst { namespaceChoices } = this.mapContractsToSelectChoices(contracts)\n\n\t\tconst namespace = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Select an event namespace',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: namespaceChoices,\n\t\t\t},\n\t\t})\n\n\t\treturn namespace\n\t}\n\n\tprivate mapContractsToSelectChoices(contracts: EventContract[]) {\n\t\tconst namespaceChoices: SelectChoice[] = [\n\t\t\t{\n\t\t\t\tlabel: 'Skill',\n\t\t\t\tvalue: SKILL_EVENT_NAMESPACE,\n\t\t\t},\n\t\t]\n\n\t\tconst eventChoicesByNamespace: Record<string, SelectChoice[]> = {\n\t\t\tskill: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'will-boot',\n\t\t\t\t\tvalue: 'will-boot',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'did-boot',\n\t\t\t\t\tvalue: 'did-boot',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\n\t\tcontracts.forEach((contract) => {\n\t\t\tconst namedSignatures =\n\t\t\t\teventContractUtil.getNamedEventSignatures(contract)\n\n\t\t\tfor (const namedSig of namedSignatures) {\n\t\t\t\tconst namespace = namedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\n\t\t\t\tif (!namespaceChoices.find((o) => o.value === namespace)) {\n\t\t\t\t\tnamespaceChoices.push({\n\t\t\t\t\t\tlabel: namesUtil.toPascal(namespace),\n\t\t\t\t\t\tvalue: namespace,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (!eventChoicesByNamespace[namespace]) {\n\t\t\t\t\teventChoicesByNamespace[namespace] = []\n\t\t\t\t}\n\n\t\t\t\teventChoicesByNamespace[namespace].push({\n\t\t\t\t\tvalue: namedSig.fullyQualifiedEventName,\n\t\t\t\t\tlabel: namedSig.fullyQualifiedEventName,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\treturn { eventChoicesByNamespace, namespaceChoices }\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ListenAction.js","names":["SKILL_EVENT_NAMESPACE","CORE_EVENT_NAMESPACE","MERCURY_API_NAMESPACE","ListenAction","eventListenActionSchema","options","normalizedOptions","validateAndNormalizeOptions","response","listenerDestinationDir","versionOptions","version","eventName","namespace","schemaTypesLookupDir","ui","startLoading","fetchEventContracts","contracts","stopLoading","collectNamespace","mapContractsToSelectChoices","eventChoicesByNamespace","SchemaError","code","friendlyMessage","Object","keys","join","parameters","collectEvent","isCoreEvent","undefined","fqen","eventNameUtil","eventNamespace","split","assertIsValidChoice","resolvedDestination","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","isSkillEvent","builder","EventTemplateItemBuilder","templateItems","buildEventTemplateItemForName","emitPayloadSchemaTemplateItem","responsePayloadSchemaTemplateItem","writeListener","files","syncListeners","syncResults","actionUtil","mergeActionResults","syncEvents","errors","eventStore","Store","loadCurrentSkill","skill","namespacesForFetch","getDependencyNamespaces","didUpdateHandler","msg","slug","localNamespace","length","namespaces","Service","get","map","d","syncOptions","normalizeSchemaValues","syncEventActionSchema","Action","execute","resolvedSchemaTypesLookupDir","writer","Writer","fullyQualifiedEventName","isValidEvent","find","e","value","i","eventChoices","prompt","type","label","isRequired","choices","namespaceChoices","forEach","contract","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","o","push","namesUtil","toPascal","AbstractAction"],"sources":["../../../../src/features/event/actions/ListenAction.ts"],"sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport {\n\tnormalizeSchemaValues,\n\tSchemaError,\n\tSchemaTemplateItem,\n\tSelectChoice,\n} from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tnamesUtil,\n\tMERCURY_API_NAMESPACE,\n} from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport eventListenActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport EventTemplateItemBuilder from '../../../templateItemBuilders/EventTemplateItemBuilder'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport { FetchContractsOptions } from '../stores/EventStore'\n\nconst SKILL_EVENT_NAMESPACE = 'skill'\nexport const CORE_EVENT_NAMESPACE = MERCURY_API_NAMESPACE\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptionsSchema\nexport default class ListenAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = eventListenActionSchema\n\tpublic invocationMessage = 'Creating event listener... 🜒'\n\tpublic commandAliases = ['listen.event', 'create.listener']\n\n\tpublic async execute(\n\t\toptions: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions\n\t): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\n\t\ttry {\n\t\t\tlet response: FeatureActionResponse = {}\n\n\t\t\tlet {\n\t\t\t\tlistenerDestinationDir,\n\t\t\t\tversion: versionOptions,\n\t\t\t\teventName,\n\t\t\t\tnamespace,\n\t\t\t\tschemaTypesLookupDir,\n\t\t\t} = normalizedOptions\n\n\t\t\tthis.ui.startLoading('Loading event contracts...')\n\n\t\t\tconst contracts = await this.fetchEventContracts(namespace)\n\n\t\t\tthis.ui.stopLoading()\n\n\t\t\tif (!namespace) {\n\t\t\t\tnamespace = await this.collectNamespace(contracts)\n\t\t\t}\n\n\t\t\tconst { eventChoicesByNamespace } =\n\t\t\t\tthis.mapContractsToSelectChoices(contracts)\n\n\t\t\tif (!eventChoicesByNamespace[namespace]) {\n\t\t\t\tthrow new SchemaError({\n\t\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\t\tfriendlyMessage: `${namespace} is not a valid event namespace. Try: \\n\\n${Object.keys(\n\t\t\t\t\t\teventChoicesByNamespace\n\t\t\t\t\t).join('\\n')}`,\n\t\t\t\t\tparameters: ['namespace'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (!eventName) {\n\t\t\t\teventName = await this.collectEvent(contracts, namespace)\n\t\t\t}\n\n\t\t\tconst isCoreEvent = namespace === CORE_EVENT_NAMESPACE\n\t\t\tif (isCoreEvent) {\n\t\t\t\tnamespace = undefined\n\t\t\t}\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName,\n\t\t\t\teventNamespace: namespace,\n\t\t\t\tversion: versionOptions,\n\t\t\t})\n\n\t\t\tlet { version } = eventNameUtil.split(fqen)\n\n\t\t\tthis.assertIsValidChoice(\n\t\t\t\teventChoicesByNamespace,\n\t\t\t\tnamespace ?? 'mercury',\n\t\t\t\teventName,\n\t\t\t\tfqen\n\t\t\t)\n\n\t\t\tconst resolvedDestination = diskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\tlistenerDestinationDir\n\t\t\t)\n\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tresolvedDestination\n\t\t\t)\n\n\t\t\tconst isSkillEvent = namespace !== SKILL_EVENT_NAMESPACE\n\n\t\t\tlet emitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\t\tlet responsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\n\t\t\tif (isSkillEvent) {\n\t\t\t\tconst builder = new EventTemplateItemBuilder()\n\t\t\t\tconst templateItems = builder.buildEventTemplateItemForName(\n\t\t\t\t\tcontracts,\n\t\t\t\t\teventNameUtil.join({\n\t\t\t\t\t\teventNamespace: !isCoreEvent ? namespace : undefined,\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion: resolvedVersion,\n\t\t\t\t\t})\n\t\t\t\t)\n\n\t\t\t\temitPayloadSchemaTemplateItem =\n\t\t\t\t\ttemplateItems.emitPayloadSchemaTemplateItem\n\t\t\t\tresponsePayloadSchemaTemplateItem =\n\t\t\t\t\ttemplateItems.responsePayloadSchemaTemplateItem\n\t\t\t}\n\n\t\t\tresponse.files = await this.writeListener({\n\t\t\t\tschemaTypesLookupDir,\n\t\t\t\tresolvedDestination,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\teventName,\n\t\t\t\tnamespace,\n\t\t\t\temitPayloadSchemaTemplateItem,\n\t\t\t\tresponsePayloadSchemaTemplateItem,\n\t\t\t})\n\n\t\t\tconst syncResults = await this.syncListeners()\n\n\t\t\tresponse = actionUtil.mergeActionResults(syncResults, response)\n\n\t\t\tif (isSkillEvent) {\n\t\t\t\tconst syncResults = await this.syncEvents(options)\n\t\t\t\tresponse = actionUtil.mergeActionResults(syncResults, response)\n\t\t\t}\n\n\t\t\treturn response\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\tprivate async fetchEventContracts(namespace?: string) {\n\t\tconst eventStore = this.Store('event')\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tconst namespacesForFetch =\n\t\t\tnamespace &&\n\t\t\tnamespace !== SKILL_EVENT_NAMESPACE &&\n\t\t\tnamespace !== CORE_EVENT_NAMESPACE\n\t\t\t\t? [namespace]\n\t\t\t\t: [...this.getDependencyNamespaces(), 'mercury']\n\n\t\tconst options: FetchContractsOptions = {\n\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t}\n\n\t\tif (skill.slug) {\n\t\t\toptions.localNamespace = skill.slug\n\t\t}\n\n\t\tif (namespacesForFetch.length > 0) {\n\t\t\toptions.namespaces = namespacesForFetch\n\t\t}\n\n\t\tconst { contracts } = await eventStore.fetchEventContracts(options)\n\n\t\treturn contracts\n\t}\n\n\tprivate getDependencyNamespaces() {\n\t\treturn this.Service('dependency')\n\t\t\t.get()\n\t\t\t.map((d) => d.namespace)\n\t}\n\n\tprivate async syncEvents(\n\t\toptions: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions\n\t) {\n\t\tconst syncOptions = normalizeSchemaValues(syncEventActionSchema, options)\n\n\t\tconst syncResults = await this.Action('event', 'sync').execute(syncOptions)\n\t\treturn syncResults\n\t}\n\n\tprivate async writeListener(options: {\n\t\tresolvedDestination: string\n\t\tschemaTypesLookupDir: string\n\t\tnamespace?: string | undefined\n\t\teventName: string\n\t\temitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\tversion: string\n\t\tresponsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t}) {\n\t\tconst {\n\t\t\tresolvedDestination,\n\t\t\tschemaTypesLookupDir,\n\t\t\tnamespace,\n\t\t\teventName,\n\t\t\tversion,\n\t\t} = options\n\n\t\tconst resolvedSchemaTypesLookupDir = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\tschemaTypesLookupDir\n\t\t)\n\t\tconst writer = this.Writer('event')\n\t\tconst files = await writer.writeListener(resolvedDestination, {\n\t\t\t...options,\n\t\t\tfullyQualifiedEventName: eventNameUtil.join({\n\t\t\t\teventName,\n\t\t\t\teventNamespace: namespace,\n\t\t\t\tversion,\n\t\t\t}),\n\t\t\tschemaTypesLookupDir: resolvedSchemaTypesLookupDir,\n\t\t})\n\n\t\treturn files\n\t}\n\n\tprivate assertIsValidChoice(\n\t\teventChoicesByNamespace: Record<string, SelectChoice[]>,\n\t\tnamespace: string,\n\t\teventName: string | undefined,\n\t\tfqen: string\n\t) {\n\t\tconst isValidEvent = !!eventChoicesByNamespace[namespace].find(\n\t\t\t(e) => e.value === eventName || e.value === fqen\n\t\t)\n\n\t\tif (!isValidEvent) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\tfriendlyMessage: `${eventName} is not a valid event . Try: \\n\\n${eventChoicesByNamespace[\n\t\t\t\t\tnamespace\n\t\t\t\t]\n\t\t\t\t\t.map((i) => i.value)\n\t\t\t\t\t.join('\\n')}`,\n\t\t\t\tparameters: ['eventName'],\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async syncListeners() {\n\t\treturn this.Action('event', 'sync.listeners').execute({})\n\t}\n\n\tprivate async collectEvent(\n\t\tcontracts: EventContract[],\n\t\tnamespace: string\n\t): Promise<string> {\n\t\tconst eventChoices: SelectChoice[] =\n\t\t\tthis.mapContractsToSelectChoices(contracts).eventChoicesByNamespace[\n\t\t\t\tnamespace\n\t\t\t]\n\n\t\tconst eventName = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Select an event',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: eventChoices,\n\t\t\t},\n\t\t})\n\n\t\treturn eventName\n\t}\n\n\tprivate async collectNamespace(contracts: EventContract[]): Promise<string> {\n\t\tconst { namespaceChoices } = this.mapContractsToSelectChoices(contracts)\n\n\t\tconst namespace = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Select an event namespace',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: namespaceChoices,\n\t\t\t},\n\t\t})\n\n\t\treturn namespace\n\t}\n\n\tprivate mapContractsToSelectChoices(contracts: EventContract[]) {\n\t\tconst namespaceChoices: SelectChoice[] = [\n\t\t\t{\n\t\t\t\tlabel: 'Skill',\n\t\t\t\tvalue: SKILL_EVENT_NAMESPACE,\n\t\t\t},\n\t\t]\n\n\t\tconst eventChoicesByNamespace: Record<string, SelectChoice[]> = {\n\t\t\tskill: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'will-boot',\n\t\t\t\t\tvalue: 'will-boot',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'did-boot',\n\t\t\t\t\tvalue: 'did-boot',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\n\t\tcontracts.forEach((contract) => {\n\t\t\tconst namedSignatures =\n\t\t\t\teventContractUtil.getNamedEventSignatures(contract)\n\n\t\t\tfor (const namedSig of namedSignatures) {\n\t\t\t\tconst namespace = namedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\n\t\t\t\tif (!namespaceChoices.find((o) => o.value === namespace)) {\n\t\t\t\t\tnamespaceChoices.push({\n\t\t\t\t\t\tlabel: namesUtil.toPascal(namespace),\n\t\t\t\t\t\tvalue: namespace,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (!eventChoicesByNamespace[namespace]) {\n\t\t\t\t\teventChoicesByNamespace[namespace] = []\n\t\t\t\t}\n\n\t\t\t\teventChoicesByNamespace[namespace].push({\n\t\t\t\t\tvalue: namedSig.fullyQualifiedEventName,\n\t\t\t\t\tlabel: namedSig.fullyQualifiedEventName,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\treturn { eventChoicesByNamespace, namespaceChoices }\n\t}\n}\n"],"mappings":"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"}
@@ -2,15 +2,6 @@ import { EventContract, SpruceSchemas } from '@sprucelabs/mercury-types';
2
2
  import SpruceError from '../../../errors/SpruceError';
3
3
  import AbstractStore from '../../../stores/AbstractStore';
4
4
  import { InternalUpdateHandler } from '../../../types/cli.types';
5
- export interface EventStoreFetchEventContractsResponse {
6
- errors: SpruceError[];
7
- contracts: EventContract[];
8
- }
9
- export interface FetchContractsOptions {
10
- localNamespace?: string;
11
- namespaces?: string[];
12
- didUpdateHandler?: InternalUpdateHandler;
13
- }
14
5
  export default class EventStore extends AbstractStore {
15
6
  name: string;
16
7
  protected static contractCache: Record<string, any>;
@@ -26,3 +17,12 @@ export default class EventStore extends AbstractStore {
26
17
  }): Promise<import("@sprucelabs/mercury-types").MercuryAggregateResponse<import("@sprucelabs/schema").SchemaStaticValues<SpruceSchemas.Mercury.v2020_12_25.RegisterEventsResponsePayloadSchema, false, never, import("@sprucelabs/schema").StaticSchemaAllValues<SpruceSchemas.Mercury.v2020_12_25.RegisterEventsResponsePayloadSchema, false>>>>;
27
18
  unRegisterEvents(options: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload): Promise<void>;
28
19
  }
20
+ export interface EventStoreFetchEventContractsResponse {
21
+ errors: SpruceError[];
22
+ contracts: EventContract[];
23
+ }
24
+ export interface FetchContractsOptions {
25
+ localNamespace?: string;
26
+ namespaces?: string[];
27
+ didUpdateHandler?: InternalUpdateHandler;
28
+ }
@@ -32,32 +32,6 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
32
32
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
33
33
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
34
34
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
35
- var eventFileNamesImportKeyMap = {
36
- 'event.options.ts': {
37
- key: 'options',
38
- isSchema: false
39
- },
40
- 'emitPayload.builder.ts': {
41
- key: 'emitPayload',
42
- isSchema: true
43
- },
44
- 'emitTarget.builder.ts': {
45
- key: 'emitTarget',
46
- isSchema: true
47
- },
48
- 'responsePayload.builder.ts': {
49
- key: 'responsePayload',
50
- isSchema: true
51
- },
52
- 'emitPermissions.builder.ts': {
53
- key: 'emitPermissions',
54
- isSchema: false
55
- },
56
- 'listenPermissions.builder.ts': {
57
- key: 'listenPermissions',
58
- isSchema: false
59
- }
60
- };
61
35
  var EventStore = /*#__PURE__*/function (_AbstractStore) {
62
36
  (0, _inherits2["default"])(EventStore, _AbstractStore);
63
37
  var _super = _createSuper(EventStore);
@@ -453,4 +427,30 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
453
427
  exports["default"] = EventStore;
454
428
  (0, _defineProperty2["default"])(EventStore, "contractCache", {});
455
429
  (0, _defineProperty2["default"])(EventStore, "localEventCache", void 0);
430
+ var eventFileNamesImportKeyMap = {
431
+ 'event.options.ts': {
432
+ key: 'options',
433
+ isSchema: false
434
+ },
435
+ 'emitPayload.builder.ts': {
436
+ key: 'emitPayload',
437
+ isSchema: true
438
+ },
439
+ 'emitTarget.builder.ts': {
440
+ key: 'emitTarget',
441
+ isSchema: true
442
+ },
443
+ 'responsePayload.builder.ts': {
444
+ key: 'responsePayload',
445
+ isSchema: true
446
+ },
447
+ 'emitPermissions.builder.ts': {
448
+ key: 'emitPermissions',
449
+ isSchema: false
450
+ },
451
+ 'listenPermissions.builder.ts': {
452
+ key: 'listenPermissions',
453
+ isSchema: false
454
+ }
455
+ };
456
456
  //# sourceMappingURL=EventStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventStore.js","names":["eventFileNamesImportKeyMap","key","isSchema","EventStore","options","localNamespace","didUpdateHandler","namespaces","fetchRemoteContracts","contracts","error","responseErrors","loadLocalContract","localContract","filterOutLocalEventsFromRemoteContractsMutating","push","errors","join","contractCache","connectToApi","shouldAuthAsCurrentSkill","client","emitAndFlattenResponses","target","cloneDeep","remoteContracts","ns","namesUtil","toKebab","contract","sigs","eventContractUtil","getNamedEventSignatures","sig","eventNamespace","eventSignatures","fullyQualifiedEventName","localEventCache","globby","generateGlobbyForLocalEvents","localMatches","filesByFqenAndEventKey","length","Promise","all","map","match","eventDiskUtil","splitPathToEvent","eventName","version","fqen","eventNameUtil","filename","pathUtil","basename","eventKey","SpruceError","code","brokenProperty","originalError","matches","o","Service","bulkImport","importsInOrder","importsByName","idx","imported","validateSchema","Object","keys","forEach","split","emitPayloadSchema","buildEmitTargetAndPayloadSchema","payloadSchema","emitPayload","targetSchema","emitTarget","responsePayloadSchema","responsePayload","emitPermissionContract","emitPermissions","listenPermissionContract","listenPermissions","cleaned","eventContractCleanerUtil","cleanPayloadsAndPermissions","validateEventContract","diskUtil","resolvePath","cwd","emit","payload","eventContract","results","eventResponseUtil","getFirstResponseOrThrow","undefined","AbstractStore"],"sources":["../../../../src/features/event/stores/EventStore.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tEventContract,\n\tEventSignature,\n\tPermissionContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { Schema, validateSchema } from '@sprucelabs/schema'\nimport {\n\teventResponseUtil,\n\teventDiskUtil,\n\teventNameUtil,\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { cloneDeep } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\nimport { eventContractCleanerUtil } from '../../../utilities/eventContractCleaner.utility'\n\nexport interface EventStoreFetchEventContractsResponse {\n\terrors: SpruceError[]\n\tcontracts: EventContract[]\n}\n\ntype Options = Omit<\n\tEventSignature,\n\t| 'responsePayloadSchema'\n\t| 'emitPayloadSchema'\n\t| 'listenPermissionContract'\n\t| 'emitPermissionContract'\n>\n\ninterface EventImport {\n\toptions?: Options\n\temitPayload?: Schema\n\temitTarget?: Schema\n\tresponsePayload?: Schema\n\temitPermissions?: PermissionContract\n\tlistenPermissions?: PermissionContract\n}\n\nconst eventFileNamesImportKeyMap = {\n\t'event.options.ts': { key: 'options', isSchema: false },\n\t'emitPayload.builder.ts': { key: 'emitPayload', isSchema: true },\n\t'emitTarget.builder.ts': { key: 'emitTarget', isSchema: true },\n\t'responsePayload.builder.ts': { key: 'responsePayload', isSchema: true },\n\t'emitPermissions.builder.ts': { key: 'emitPermissions', isSchema: false },\n\t'listenPermissions.builder.ts': { key: 'listenPermissions', isSchema: false },\n}\n\nexport interface FetchContractsOptions {\n\tlocalNamespace?: string\n\tnamespaces?: string[]\n\tdidUpdateHandler?: InternalUpdateHandler\n}\n\nexport default class EventStore extends AbstractStore {\n\tpublic name = 'event'\n\tprotected static contractCache: Record<string, any> = {}\n\tprivate static localEventCache?: SpruceSchemas.Mercury.v2020_12_25.EventContract\n\n\tpublic static clearCache() {\n\t\tEventStore.localEventCache = undefined\n\t\tEventStore.contractCache = {}\n\t}\n\n\tpublic async fetchEventContracts(\n\t\toptions?: FetchContractsOptions\n\t): Promise<EventStoreFetchEventContractsResponse> {\n\t\tconst { localNamespace, didUpdateHandler, namespaces } = options ?? {}\n\n\t\tdidUpdateHandler?.('Pulling remote contracts...')\n\n\t\tlet contracts\n\t\ttry {\n\t\t\tcontracts = await this.fetchRemoteContracts(namespaces)\n\t\t} catch (err: any) {\n\t\t\tconst error = err.options.responseErrors?.[0] ?? err\n\t\t\tthrow error\n\t\t}\n\n\t\tconst localContract =\n\t\t\tlocalNamespace &&\n\t\t\t(await this.loadLocalContract(localNamespace, didUpdateHandler))\n\n\t\tif (localNamespace) {\n\t\t\tthis.filterOutLocalEventsFromRemoteContractsMutating(\n\t\t\t\tcontracts,\n\t\t\t\tlocalNamespace\n\t\t\t)\n\t\t}\n\n\t\tif (localContract) {\n\t\t\tcontracts.push(localContract)\n\t\t}\n\n\t\treturn {\n\t\t\tcontracts,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tprivate async fetchRemoteContracts(namespaces?: string[]) {\n\t\tconst key = namespaces?.join('|') ?? '_'\n\n\t\tif (!EventStore.contractCache[key]) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\t\tconst [{ contracts }] = await client.emitAndFlattenResponses(\n\t\t\t\t'get-event-contracts::v2020_12_25',\n\t\t\t\t{\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\tnamespaces,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tEventStore.contractCache[key] = contracts\n\t\t}\n\n\t\treturn cloneDeep(EventStore.contractCache[key])\n\t}\n\n\tprivate filterOutLocalEventsFromRemoteContractsMutating(\n\t\tremoteContracts: EventContract[],\n\t\tlocalNamespace: string\n\t) {\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\n\t\tfor (const contract of remoteContracts) {\n\t\t\tconst sigs = eventContractUtil.getNamedEventSignatures(contract)\n\t\t\tfor (const sig of sigs) {\n\t\t\t\tif (sig.eventNamespace === ns) {\n\t\t\t\t\tdelete contract.eventSignatures[sig.fullyQualifiedEventName]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async loadLocalContract(\n\t\tlocalNamespace: string,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<EventContract | null> {\n\t\tif (EventStore.localEventCache) {\n\t\t\treturn EventStore.localEventCache\n\t\t}\n\n\t\tconst localMatches = await globby(this.generateGlobbyForLocalEvents())\n\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\t\tconst eventSignatures: Record<string, EventSignature> = {}\n\t\tconst filesByFqenAndEventKey: {\n\t\t\tfqen: string\n\t\t\tisSchema: boolean\n\t\t\tmatch: string\n\t\t\teventKey: string\n\t\t}[] = []\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Importing ${localMatches.length} local event signature files...`\n\t\t)\n\n\t\tawait Promise.all(\n\t\t\tlocalMatches.map(async (match) => {\n\t\t\t\tlet fqen: string | undefined\n\t\t\t\tlet eventKey: keyof EventImport | undefined\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { eventName, version } = eventDiskUtil.splitPathToEvent(match)\n\t\t\t\t\tfqen = eventNameUtil.join({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t\teventNamespace: ns,\n\t\t\t\t\t})\n\n\t\t\t\t\tconst filename = pathUtil.basename(\n\t\t\t\t\t\tmatch\n\t\t\t\t\t) as keyof typeof eventFileNamesImportKeyMap\n\n\t\t\t\t\tconst map = eventFileNamesImportKeyMap[filename]\n\n\t\t\t\t\tif (map) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\teventKey = map.key\n\n\t\t\t\t\t\tfilesByFqenAndEventKey.push({\n\t\t\t\t\t\t\tfqen,\n\t\t\t\t\t\t\tisSchema: map.isSchema,\n\t\t\t\t\t\t\tmatch,\n\t\t\t\t\t\t\teventKey: eventKey as string,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen ?? 'Bad event name',\n\t\t\t\t\t\tbrokenProperty: eventKey ?? '*** major failure ***',\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\n\t\tconst matches = filesByFqenAndEventKey.map((o) => o.match)\n\t\tconst importsInOrder = (await this.Service('import').bulkImport(\n\t\t\tmatches\n\t\t)) as Record<string, any>[]\n\t\tconst importsByName: Record<string, EventImport> = {}\n\n\t\tfor (let idx = 0; idx < filesByFqenAndEventKey.length; idx++) {\n\t\t\tconst imported = importsInOrder[idx]\n\t\t\tconst { fqen, eventKey, isSchema } = filesByFqenAndEventKey[idx]\n\n\t\t\tif (isSchema) {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateSchema(imported)\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen,\n\t\t\t\t\t\tbrokenProperty: eventKey,\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!importsByName[fqen]) {\n\t\t\t\timportsByName[fqen] = {}\n\t\t\t}\n\n\t\t\t//@ts-ignore\n\t\t\timportsByName[fqen][eventKey] = imported\n\t\t}\n\n\t\tObject.keys(importsByName).forEach((fqen) => {\n\t\t\tconst imported = importsByName[fqen]\n\t\t\tconst { eventName } = eventNameUtil.split(fqen)\n\t\t\teventSignatures[fqen] = {\n\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\teventName,\n\t\t\t\t\tpayloadSchema: imported.emitPayload,\n\t\t\t\t\ttargetSchema: imported.emitTarget,\n\t\t\t\t}),\n\t\t\t\tresponsePayloadSchema: imported.responsePayload,\n\t\t\t\temitPermissionContract: imported.emitPermissions,\n\t\t\t\tlistenPermissionContract: imported.listenPermissions,\n\t\t\t\t...imported.options,\n\t\t\t}\n\t\t})\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Loaded ${Object.keys(eventSignatures).length} local event signatures...`\n\t\t)\n\n\t\tif (Object.keys(eventSignatures).length > 0) {\n\t\t\tconst cleaned = eventContractCleanerUtil.cleanPayloadsAndPermissions({\n\t\t\t\teventSignatures,\n\t\t\t})\n\n\t\t\tvalidateEventContract(cleaned)\n\n\t\t\tEventStore.localEventCache = cleaned\n\n\t\t\treturn cleaned\n\t\t}\n\n\t\treturn null\n\t}\n\n\tprivate generateGlobbyForLocalEvents(): string | readonly string[] {\n\t\treturn diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\t'src',\n\t\t\t'**',\n\t\t\t'events',\n\t\t\t'**/*.(builder|options).ts'\n\t\t)\n\t}\n\n\tpublic async registerEventContract(options: {\n\t\teventContract: EventContract\n\t}) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('register-events::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tcontract: options.eventContract,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\n\t\treturn results\n\t}\n\n\tpublic async unRegisterEvents(\n\t\toptions: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload\n\t) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('unregister-events::v2020_12_25', {\n\t\t\tpayload: options,\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EventStore.js","names":["EventStore","options","localNamespace","didUpdateHandler","namespaces","fetchRemoteContracts","contracts","error","responseErrors","loadLocalContract","localContract","filterOutLocalEventsFromRemoteContractsMutating","push","errors","key","join","contractCache","connectToApi","shouldAuthAsCurrentSkill","client","emitAndFlattenResponses","target","cloneDeep","remoteContracts","ns","namesUtil","toKebab","contract","sigs","eventContractUtil","getNamedEventSignatures","sig","eventNamespace","eventSignatures","fullyQualifiedEventName","localEventCache","globby","generateGlobbyForLocalEvents","localMatches","filesByFqenAndEventKey","length","Promise","all","map","match","eventDiskUtil","splitPathToEvent","eventName","version","fqen","eventNameUtil","filename","pathUtil","basename","eventFileNamesImportKeyMap","eventKey","isSchema","SpruceError","code","brokenProperty","originalError","matches","o","Service","bulkImport","importsInOrder","importsByName","idx","imported","validateSchema","Object","keys","forEach","split","emitPayloadSchema","buildEmitTargetAndPayloadSchema","payloadSchema","emitPayload","targetSchema","emitTarget","responsePayloadSchema","responsePayload","emitPermissionContract","emitPermissions","listenPermissionContract","listenPermissions","cleaned","eventContractCleanerUtil","cleanPayloadsAndPermissions","validateEventContract","diskUtil","resolvePath","cwd","emit","payload","eventContract","results","eventResponseUtil","getFirstResponseOrThrow","undefined","AbstractStore"],"sources":["../../../../src/features/event/stores/EventStore.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tEventContract,\n\tEventSignature,\n\tPermissionContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { Schema, validateSchema } from '@sprucelabs/schema'\nimport {\n\teventResponseUtil,\n\teventDiskUtil,\n\teventNameUtil,\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { cloneDeep } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\nimport { eventContractCleanerUtil } from '../../../utilities/eventContractCleaner.utility'\n\nexport default class EventStore extends AbstractStore {\n\tpublic name = 'event'\n\tprotected static contractCache: Record<string, any> = {}\n\tprivate static localEventCache?: SpruceSchemas.Mercury.v2020_12_25.EventContract\n\n\tpublic static clearCache() {\n\t\tEventStore.localEventCache = undefined\n\t\tEventStore.contractCache = {}\n\t}\n\n\tpublic async fetchEventContracts(\n\t\toptions?: FetchContractsOptions\n\t): Promise<EventStoreFetchEventContractsResponse> {\n\t\tconst { localNamespace, didUpdateHandler, namespaces } = options ?? {}\n\n\t\tdidUpdateHandler?.('Pulling remote contracts...')\n\n\t\tlet contracts\n\t\ttry {\n\t\t\tcontracts = await this.fetchRemoteContracts(namespaces)\n\t\t} catch (err: any) {\n\t\t\tconst error = err.options.responseErrors?.[0] ?? err\n\t\t\tthrow error\n\t\t}\n\n\t\tconst localContract =\n\t\t\tlocalNamespace &&\n\t\t\t(await this.loadLocalContract(localNamespace, didUpdateHandler))\n\n\t\tif (localNamespace) {\n\t\t\tthis.filterOutLocalEventsFromRemoteContractsMutating(\n\t\t\t\tcontracts,\n\t\t\t\tlocalNamespace\n\t\t\t)\n\t\t}\n\n\t\tif (localContract) {\n\t\t\tcontracts.push(localContract)\n\t\t}\n\n\t\treturn {\n\t\t\tcontracts,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tprivate async fetchRemoteContracts(namespaces?: string[]) {\n\t\tconst key = namespaces?.join('|') ?? '_'\n\n\t\tif (!EventStore.contractCache[key]) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\t\tconst [{ contracts }] = await client.emitAndFlattenResponses(\n\t\t\t\t'get-event-contracts::v2020_12_25',\n\t\t\t\t{\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\tnamespaces,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tEventStore.contractCache[key] = contracts\n\t\t}\n\n\t\treturn cloneDeep(EventStore.contractCache[key])\n\t}\n\n\tprivate filterOutLocalEventsFromRemoteContractsMutating(\n\t\tremoteContracts: EventContract[],\n\t\tlocalNamespace: string\n\t) {\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\n\t\tfor (const contract of remoteContracts) {\n\t\t\tconst sigs = eventContractUtil.getNamedEventSignatures(contract)\n\t\t\tfor (const sig of sigs) {\n\t\t\t\tif (sig.eventNamespace === ns) {\n\t\t\t\t\tdelete contract.eventSignatures[sig.fullyQualifiedEventName]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async loadLocalContract(\n\t\tlocalNamespace: string,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<EventContract | null> {\n\t\tif (EventStore.localEventCache) {\n\t\t\treturn EventStore.localEventCache\n\t\t}\n\n\t\tconst localMatches = await globby(this.generateGlobbyForLocalEvents())\n\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\t\tconst eventSignatures: Record<string, EventSignature> = {}\n\t\tconst filesByFqenAndEventKey: {\n\t\t\tfqen: string\n\t\t\tisSchema: boolean\n\t\t\tmatch: string\n\t\t\teventKey: string\n\t\t}[] = []\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Importing ${localMatches.length} local event signature files...`\n\t\t)\n\n\t\tawait Promise.all(\n\t\t\tlocalMatches.map(async (match) => {\n\t\t\t\tlet fqen: string | undefined\n\t\t\t\tlet eventKey: keyof EventImport | undefined\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { eventName, version } = eventDiskUtil.splitPathToEvent(match)\n\t\t\t\t\tfqen = eventNameUtil.join({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t\teventNamespace: ns,\n\t\t\t\t\t})\n\n\t\t\t\t\tconst filename = pathUtil.basename(\n\t\t\t\t\t\tmatch\n\t\t\t\t\t) as keyof typeof eventFileNamesImportKeyMap\n\n\t\t\t\t\tconst map = eventFileNamesImportKeyMap[filename]\n\n\t\t\t\t\tif (map) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\teventKey = map.key\n\n\t\t\t\t\t\tfilesByFqenAndEventKey.push({\n\t\t\t\t\t\t\tfqen,\n\t\t\t\t\t\t\tisSchema: map.isSchema,\n\t\t\t\t\t\t\tmatch,\n\t\t\t\t\t\t\teventKey: eventKey as string,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen ?? 'Bad event name',\n\t\t\t\t\t\tbrokenProperty: eventKey ?? '*** major failure ***',\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\n\t\tconst matches = filesByFqenAndEventKey.map((o) => o.match)\n\t\tconst importsInOrder = (await this.Service('import').bulkImport(\n\t\t\tmatches\n\t\t)) as Record<string, any>[]\n\t\tconst importsByName: Record<string, EventImport> = {}\n\n\t\tfor (let idx = 0; idx < filesByFqenAndEventKey.length; idx++) {\n\t\t\tconst imported = importsInOrder[idx]\n\t\t\tconst { fqen, eventKey, isSchema } = filesByFqenAndEventKey[idx]\n\n\t\t\tif (isSchema) {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateSchema(imported)\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen,\n\t\t\t\t\t\tbrokenProperty: eventKey,\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!importsByName[fqen]) {\n\t\t\t\timportsByName[fqen] = {}\n\t\t\t}\n\n\t\t\t//@ts-ignore\n\t\t\timportsByName[fqen][eventKey] = imported\n\t\t}\n\n\t\tObject.keys(importsByName).forEach((fqen) => {\n\t\t\tconst imported = importsByName[fqen]\n\t\t\tconst { eventName } = eventNameUtil.split(fqen)\n\t\t\teventSignatures[fqen] = {\n\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\teventName,\n\t\t\t\t\tpayloadSchema: imported.emitPayload,\n\t\t\t\t\ttargetSchema: imported.emitTarget,\n\t\t\t\t}),\n\t\t\t\tresponsePayloadSchema: imported.responsePayload,\n\t\t\t\temitPermissionContract: imported.emitPermissions,\n\t\t\t\tlistenPermissionContract: imported.listenPermissions,\n\t\t\t\t...imported.options,\n\t\t\t}\n\t\t})\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Loaded ${Object.keys(eventSignatures).length} local event signatures...`\n\t\t)\n\n\t\tif (Object.keys(eventSignatures).length > 0) {\n\t\t\tconst cleaned = eventContractCleanerUtil.cleanPayloadsAndPermissions({\n\t\t\t\teventSignatures,\n\t\t\t})\n\n\t\t\tvalidateEventContract(cleaned)\n\n\t\t\tEventStore.localEventCache = cleaned\n\n\t\t\treturn cleaned\n\t\t}\n\n\t\treturn null\n\t}\n\n\tprivate generateGlobbyForLocalEvents(): string | readonly string[] {\n\t\treturn diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\t'src',\n\t\t\t'**',\n\t\t\t'events',\n\t\t\t'**/*.(builder|options).ts'\n\t\t)\n\t}\n\n\tpublic async registerEventContract(options: {\n\t\teventContract: EventContract\n\t}) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('register-events::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tcontract: options.eventContract,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\n\t\treturn results\n\t}\n\n\tpublic async unRegisterEvents(\n\t\toptions: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload\n\t) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('unregister-events::v2020_12_25', {\n\t\t\tpayload: options,\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\t}\n}\n\nexport interface EventStoreFetchEventContractsResponse {\n\terrors: SpruceError[]\n\tcontracts: EventContract[]\n}\n\ntype Options = Omit<\n\tEventSignature,\n\t| 'responsePayloadSchema'\n\t| 'emitPayloadSchema'\n\t| 'listenPermissionContract'\n\t| 'emitPermissionContract'\n>\n\ninterface EventImport {\n\toptions?: Options\n\temitPayload?: Schema\n\temitTarget?: Schema\n\tresponsePayload?: Schema\n\temitPermissions?: PermissionContract\n\tlistenPermissions?: PermissionContract\n}\n\nconst eventFileNamesImportKeyMap = {\n\t'event.options.ts': { key: 'options', isSchema: false },\n\t'emitPayload.builder.ts': { key: 'emitPayload', isSchema: true },\n\t'emitTarget.builder.ts': { key: 'emitTarget', isSchema: true },\n\t'responsePayload.builder.ts': { key: 'responsePayload', isSchema: true },\n\t'emitPermissions.builder.ts': { key: 'emitPermissions', isSchema: false },\n\t'listenPermissions.builder.ts': { key: 'listenPermissions', isSchema: false },\n}\n\nexport interface FetchContractsOptions {\n\tlocalNamespace?: string\n\tnamespaces?: string[]\n\tdidUpdateHandler?: InternalUpdateHandler\n}\n"],"mappings":"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"}
@@ -31,7 +31,10 @@ var EventContractFeature = /*#__PURE__*/function (_AbstractFeature) {
31
31
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "code", 'eventContract');
32
32
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "nameReadable", 'Event Contract');
33
33
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "description", 'Pull core Mercury events down and write to single, portable, dependency-free, strongly typed contract.');
34
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dependencies", []);
34
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dependencies", [{
35
+ code: 'permission',
36
+ isRequired: true
37
+ }]);
35
38
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "packageDependencies", []);
36
39
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "actionsDir", _spruceSkillUtils.diskUtil.resolvePath(__dirname, 'actions'));
37
40
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "fileDescriptions", []);
@@ -1 +1 @@
1
- {"version":3,"file":"EventContractFeature.js","names":["EventContractFeature","diskUtil","resolvePath","__dirname","AbstractFeature"],"sources":["../../../src/features/eventContract/EventContractFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\teventContract: EventContractFeature\n\t}\n}\n\nexport default class EventContractFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'eventContract'\n\tpublic nameReadable = 'Event Contract'\n\tpublic description =\n\t\t'Pull core Mercury events down and write to single, portable, dependency-free, strongly typed contract.'\n\tpublic dependencies: FeatureDependency[] = []\n\tpublic packageDependencies = []\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled = async () => true\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AAAuE;AAAA;AAAA,IASlDA,oBAAoB;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,yFACb,eAAe;IAAA,iGACpB,gBAAgB;IAAA,gGAErC,wGAAwG;IAAA,iGAC9D,EAAE;IAAA,wGAChB,EAAE;IAAA,+FAEXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,qGACR,EAAE;IAAA,2LAEnC;MAAA;QAAA;UAAA;YAAA;cAAA,iCAAY,IAAI;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;EAAA;EAAA;AAAA,EAXYC,4BAAe;AAAA"}
1
+ {"version":3,"file":"EventContractFeature.js","names":["EventContractFeature","code","isRequired","diskUtil","resolvePath","__dirname","AbstractFeature"],"sources":["../../../src/features/eventContract/EventContractFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\teventContract: EventContractFeature\n\t}\n}\n\nexport default class EventContractFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'eventContract'\n\tpublic nameReadable = 'Event Contract'\n\tpublic description =\n\t\t'Pull core Mercury events down and write to single, portable, dependency-free, strongly typed contract.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'permission',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled = async () => true\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AAAuE;AAAA;AAAA,IASlDA,oBAAoB;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,yFACb,eAAe;IAAA,iGACpB,gBAAgB;IAAA,gGAErC,wGAAwG;IAAA,iGAC9D,CAC1C;MACCC,IAAI,EAAE,YAAY;MAClBC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA,+FAEXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,qGACR,EAAE;IAAA,2LAEnC;MAAA;QAAA;UAAA;YAAA;cAAA,iCAAY,IAAI;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;EAAA;EAAA;AAAA,EAhBYC,4BAAe;AAAA"}
@@ -16,6 +16,7 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
17
  var _schema = require("@sprucelabs/schema");
18
18
  var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
19
+ var _action = _interopRequireDefault(require("../../../utilities/action.utility"));
19
20
  var _AbstractAction2 = _interopRequireDefault(require("../../AbstractAction"));
20
21
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
21
22
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -49,7 +50,7 @@ var PullAction = /*#__PURE__*/function (_AbstractAction) {
49
50
  key: "execute",
50
51
  value: function () {
51
52
  var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(options) {
52
- var _this$validateAndNorm, _this$validateAndNorm2, destination, filename, _yield$this$Store$fet, contracts, buildEventContractImport, contents, action;
53
+ var _this$validateAndNorm, _this$validateAndNorm2, destination, filename, _yield$this$Store$fet, contracts, buildEventContractImport, contents, action, results;
53
54
  return _regenerator["default"].wrap(function _callee$(_context) {
54
55
  while (1) {
55
56
  switch (_context.prev = _context.next) {
@@ -62,7 +63,7 @@ var PullAction = /*#__PURE__*/function (_AbstractAction) {
62
63
  case 5:
63
64
  _yield$this$Store$fet = _context.sent;
64
65
  contracts = _yield$this$Store$fet.contracts;
65
- buildEventContractImport = "import { buildEventContract } from '@sprucelabs/mercury-types'";
66
+ buildEventContractImport = "import { buildEventContract } from '@sprucelabs/mercury-types'\nimport '".concat('#spruce', "/permissions/permissions.types'");
66
67
  contents = "".concat(buildEventContractImport, "\nconst eventContracts = [").concat(contracts.map(function (c) {
67
68
  return "buildEventContract(".concat(JSON.stringify(c, null, 2), ")");
68
69
  }).join(',\n'), "] as const\n\n\nexport default eventContracts\nexport type CoreEventContract = ").concat(contracts.map(function (_, idx) {
@@ -70,15 +71,19 @@ var PullAction = /*#__PURE__*/function (_AbstractAction) {
70
71
  }).join(' & '), "\n");
71
72
  action = _spruceSkillUtils.diskUtil.doesFileExist(destination) ? 'updated' : 'generated';
72
73
  _spruceSkillUtils.diskUtil.writeFile(destination, contents);
73
- return _context.abrupt("return", {
74
+ _context.next = 13;
75
+ return this.Action('permission', 'sync').execute({});
76
+ case 13:
77
+ results = _context.sent;
78
+ return _context.abrupt("return", _action["default"].mergeActionResults(results, {
74
79
  files: [{
75
80
  name: filename,
76
81
  path: destination,
77
82
  action: action,
78
83
  description: 'All your Mercury core events ready for testing!'
79
84
  }]
80
- });
81
- case 12:
85
+ }));
86
+ case 15:
82
87
  case "end":
83
88
  return _context.stop();
84
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PullAction.js","names":["pullOptionsSchema","buildSchema","id","description","fields","destination","type","label","hint","PullAction","options","validateAndNormalizeOptions","filename","diskUtil","resolvePath","cwd","Store","fetchEventContracts","contracts","buildEventContractImport","contents","map","c","JSON","stringify","join","_","idx","action","doesFileExist","writeFile","files","name","path","AbstractAction"],"sources":["../../../../src/features/eventContract/actions/PullAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst pullOptionsSchema = buildSchema({\n\tid: 'pullActionSchema',\n\tdescription:\n\t\t'Pulls the event contracts from Mercury down to a single file for easy distribution.',\n\tfields: {\n\t\tdestination: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Destination',\n\t\t\thint: 'File is always named `events.contract.ts`.',\n\t\t},\n\t},\n})\ntype PullOptionsSchema = typeof pullOptionsSchema\ntype Options = SchemaValues<PullOptionsSchema>\n\nexport default class PullAction extends AbstractAction<PullOptionsSchema> {\n\tpublic commandAliases = ['pull.event.contracts']\n\tpublic optionsSchema = pullOptionsSchema\n\tpublic invocationMessage = 'Pulling combined event contract... 🜒'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet { destination = '.' } = this.validateAndNormalizeOptions(options)\n\n\t\tconst filename = 'events.contract.ts'\n\t\tdestination = diskUtil.resolvePath(this.cwd, destination, filename)\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts()\n\t\tlet buildEventContractImport = `import { buildEventContract } from '@sprucelabs/mercury-types'`\n\n\t\tconst contents = `${buildEventContractImport}\nconst eventContracts = [${contracts\n\t\t\t.map((c) => `buildEventContract(${JSON.stringify(c, null, 2)})`)\n\t\t\t.join(',\\n')}] as const\n\n\nexport default eventContracts\nexport type CoreEventContract = ${contracts\n\t\t\t.map((_, idx) => `typeof eventContracts[${idx}]`)\n\t\t\t.join(' & ')}\n`\n\n\t\tconst action = diskUtil.doesFileExist(destination) ? 'updated' : 'generated'\n\n\t\tdiskUtil.writeFile(destination, contents)\n\n\t\treturn {\n\t\t\tfiles: [\n\t\t\t\t{\n\t\t\t\t\tname: filename,\n\t\t\t\t\tpath: destination,\n\t\t\t\t\taction,\n\t\t\t\t\tdescription: 'All your Mercury core events ready for testing!',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAiD;AAAA;AAGjD,IAAMA,iBAAiB,GAAG,IAAAC,mBAAW,EAAC;EACrCC,EAAE,EAAE,kBAAkB;EACtBC,WAAW,EACV,qFAAqF;EACtFC,MAAM,EAAE;IACPC,WAAW,EAAE;MACZC,IAAI,EAAE,MAAM;MACZC,KAAK,EAAE,aAAa;MACpBC,IAAI,EAAE;IACP;EACD;AACD,CAAC,CAAC;AAAA,IAImBC,UAAU;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,mGACN,CAAC,sBAAsB,CAAC;IAAA,kGACzBT,iBAAiB;IAAA,sGACb,uCAAuC;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAElE,iBAAqBU,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,wBACR,IAAI,CAACC,2BAA2B,CAACD,OAAO,CAAC,iDAA/DL,WAAW,EAAXA,WAAW,uCAAG,GAAG;gBAEjBO,QAAQ,GAAG,oBAAoB;gBACrCP,WAAW,GAAGQ,0BAAQ,CAACC,WAAW,CAAC,IAAI,CAACC,GAAG,EAAEV,WAAW,EAAEO,QAAQ,CAAC;gBAAA;gBAAA,OAEvC,IAAI,CAACI,KAAK,CAAC,OAAO,CAAC,CAACC,mBAAmB,EAAE;cAAA;gBAAA;gBAA7DC,SAAS,yBAATA,SAAS;gBACbC,wBAAwB;gBAEtBC,QAAQ,aAAMD,wBAAwB,uCACpBD,SAAS,CAC/BG,GAAG,CAAC,UAACC,CAAC;kBAAA,oCAA2BC,IAAI,CAACC,SAAS,CAACF,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAA,CAAG,CAAC,CAC/DG,IAAI,CAAC,KAAK,CAAC,4FAImBP,SAAS,CACvCG,GAAG,CAAC,UAACK,CAAC,EAAEC,GAAG;kBAAA,uCAA8BA,GAAG;gBAAA,CAAG,CAAC,CAChDF,IAAI,CAAC,KAAK,CAAC;gBAGPG,MAAM,GAAGf,0BAAQ,CAACgB,aAAa,CAACxB,WAAW,CAAC,GAAG,SAAS,GAAG,WAAW;gBAE5EQ,0BAAQ,CAACiB,SAAS,CAACzB,WAAW,EAAEe,QAAQ,CAAC;gBAAA,iCAElC;kBACNW,KAAK,EAAE,CACN;oBACCC,IAAI,EAAEpB,QAAQ;oBACdqB,IAAI,EAAE5B,WAAW;oBACjBuB,MAAM,EAANA,MAAM;oBACNzB,WAAW,EAAE;kBACd,CAAC;gBAEH,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAxCsC+B,2BAAc;AAAA"}
1
+ {"version":3,"file":"PullAction.js","names":["pullOptionsSchema","buildSchema","id","description","fields","destination","type","label","hint","PullAction","options","validateAndNormalizeOptions","filename","diskUtil","resolvePath","cwd","Store","fetchEventContracts","contracts","buildEventContractImport","contents","map","c","JSON","stringify","join","_","idx","action","doesFileExist","writeFile","Action","execute","results","actionUtil","mergeActionResults","files","name","path","AbstractAction"],"sources":["../../../../src/features/eventContract/actions/PullAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst pullOptionsSchema = buildSchema({\n\tid: 'pullActionSchema',\n\tdescription:\n\t\t'Pulls the event contracts from Mercury down to a single file for easy distribution.',\n\tfields: {\n\t\tdestination: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Destination',\n\t\t\thint: 'File is always named `events.contract.ts`.',\n\t\t},\n\t},\n})\ntype PullOptionsSchema = typeof pullOptionsSchema\ntype Options = SchemaValues<PullOptionsSchema>\n\nexport default class PullAction extends AbstractAction<PullOptionsSchema> {\n\tpublic commandAliases = ['pull.event.contracts']\n\tpublic optionsSchema = pullOptionsSchema\n\tpublic invocationMessage = 'Pulling combined event contract... 🜒'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet { destination = '.' } = this.validateAndNormalizeOptions(options)\n\n\t\tconst filename = 'events.contract.ts'\n\t\tdestination = diskUtil.resolvePath(this.cwd, destination, filename)\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts()\n\t\tlet buildEventContractImport = `import { buildEventContract } from '@sprucelabs/mercury-types'\nimport '${'#spruce'}/permissions/permissions.types'`\n\n\t\tconst contents = `${buildEventContractImport}\nconst eventContracts = [${contracts\n\t\t\t.map((c) => `buildEventContract(${JSON.stringify(c, null, 2)})`)\n\t\t\t.join(',\\n')}] as const\n\n\nexport default eventContracts\nexport type CoreEventContract = ${contracts\n\t\t\t.map((_, idx) => `typeof eventContracts[${idx}]`)\n\t\t\t.join(' & ')}\n`\n\n\t\tconst action = diskUtil.doesFileExist(destination) ? 'updated' : 'generated'\n\n\t\tdiskUtil.writeFile(destination, contents)\n\n\t\tconst results = await this.Action('permission', 'sync').execute({})\n\n\t\treturn actionUtil.mergeActionResults(results, {\n\t\t\tfiles: [\n\t\t\t\t{\n\t\t\t\t\tname: filename,\n\t\t\t\t\tpath: destination,\n\t\t\t\t\taction,\n\t\t\t\t\tdescription: 'All your Mercury core events ready for testing!',\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAAiD;AAAA;AAGjD,IAAMA,iBAAiB,GAAG,IAAAC,mBAAW,EAAC;EACrCC,EAAE,EAAE,kBAAkB;EACtBC,WAAW,EACV,qFAAqF;EACtFC,MAAM,EAAE;IACPC,WAAW,EAAE;MACZC,IAAI,EAAE,MAAM;MACZC,KAAK,EAAE,aAAa;MACpBC,IAAI,EAAE;IACP;EACD;AACD,CAAC,CAAC;AAAA,IAImBC,UAAU;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,mGACN,CAAC,sBAAsB,CAAC;IAAA,kGACzBT,iBAAiB;IAAA,sGACb,uCAAuC;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAElE,iBAAqBU,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,wBACR,IAAI,CAACC,2BAA2B,CAACD,OAAO,CAAC,iDAA/DL,WAAW,EAAXA,WAAW,uCAAG,GAAG;gBAEjBO,QAAQ,GAAG,oBAAoB;gBACrCP,WAAW,GAAGQ,0BAAQ,CAACC,WAAW,CAAC,IAAI,CAACC,GAAG,EAAEV,WAAW,EAAEO,QAAQ,CAAC;gBAAA;gBAAA,OAEvC,IAAI,CAACI,KAAK,CAAC,OAAO,CAAC,CAACC,mBAAmB,EAAE;cAAA;gBAAA;gBAA7DC,SAAS,yBAATA,SAAS;gBACbC,wBAAwB,qFACpB,SAAS;gBAEXC,QAAQ,aAAMD,wBAAwB,uCACpBD,SAAS,CAC/BG,GAAG,CAAC,UAACC,CAAC;kBAAA,oCAA2BC,IAAI,CAACC,SAAS,CAACF,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAA,CAAG,CAAC,CAC/DG,IAAI,CAAC,KAAK,CAAC,4FAImBP,SAAS,CACvCG,GAAG,CAAC,UAACK,CAAC,EAAEC,GAAG;kBAAA,uCAA8BA,GAAG;gBAAA,CAAG,CAAC,CAChDF,IAAI,CAAC,KAAK,CAAC;gBAGPG,MAAM,GAAGf,0BAAQ,CAACgB,aAAa,CAACxB,WAAW,CAAC,GAAG,SAAS,GAAG,WAAW;gBAE5EQ,0BAAQ,CAACiB,SAAS,CAACzB,WAAW,EAAEe,QAAQ,CAAC;gBAAA;gBAAA,OAEnB,IAAI,CAACW,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAA7DC,OAAO;gBAAA,iCAENC,kBAAU,CAACC,kBAAkB,CAACF,OAAO,EAAE;kBAC7CG,KAAK,EAAE,CACN;oBACCC,IAAI,EAAEzB,QAAQ;oBACd0B,IAAI,EAAEjC,WAAW;oBACjBuB,MAAM,EAANA,MAAM;oBACNzB,WAAW,EAAE;kBACd,CAAC;gBAEH,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA3CsCoC,2BAAc;AAAA"}
@@ -1,3 +1,4 @@
1
+ import { SpruceSchemas } from '@sprucelabs/mercury-types';
1
2
  import { Schema, SchemaValues } from '@sprucelabs/schema';
2
3
  import { Templates } from '@sprucelabs/spruce-templates';
3
4
  import { GlobalEmitter } from '../GlobalEmitter';
@@ -40,47 +41,11 @@ export interface InstallFeatureOptions {
40
41
  installFeatureDependencies?: boolean;
41
42
  didUpdateHandler?: InternalUpdateHandler;
42
43
  }
43
- export declare const actionResponseSchema: {
44
- id: string;
45
- fields: {
46
- files: {
47
- type: "schema";
48
- isArray: true;
49
- options: {
50
- schema: import("@sprucelabs/mercury-types").SpruceSchemas.SpruceCli.v2020_07_22.GeneratedFileSchema;
51
- };
52
- };
53
- headline: {
54
- type: "text";
55
- };
56
- hints: {
57
- type: "text";
58
- isArray: true;
59
- };
60
- summaryLines: {
61
- type: "text";
62
- isArray: true;
63
- };
64
- errors: {
65
- type: "raw";
66
- isArray: true;
67
- options: {
68
- valueType: string;
69
- };
70
- };
71
- meta: {
72
- type: "raw";
73
- options: {
74
- valueType: string;
75
- };
76
- };
77
- };
78
- };
79
44
  export interface FeatureInstallResponse {
80
45
  files?: GeneratedFile[];
81
46
  packagesInstalled?: NpmPackage[];
82
47
  }
83
- export declare type FeatureActionResponse = SchemaValues<typeof actionResponseSchema> & FeatureInstallResponse;
48
+ export declare type FeatureActionResponse = SpruceSchemas.SpruceCli.v2020_07_22.ActionResponse & FeatureInstallResponse;
84
49
  export interface FeatureAction<S extends Schema = Schema> {
85
50
  optionsSchema?: S;
86
51
  commandAliases: string[];
@@ -1,47 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports.actionResponseSchema = void 0;
8
- var _schema = require("@sprucelabs/schema");
9
- var _generatedFile = _interopRequireDefault(require("../.spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema"));
10
- var actionResponseSchema = (0, _schema.buildSchema)({
11
- id: 'actionResponse',
12
- fields: {
13
- files: {
14
- type: 'schema',
15
- isArray: true,
16
- options: {
17
- schema: _generatedFile["default"]
18
- }
19
- },
20
- headline: {
21
- type: 'text'
22
- },
23
- hints: {
24
- type: 'text',
25
- isArray: true
26
- },
27
- summaryLines: {
28
- type: 'text',
29
- isArray: true
30
- },
31
- errors: {
32
- type: 'raw',
33
- isArray: true,
34
- options: {
35
- valueType: 'SpruceError<any>'
36
- }
37
- },
38
- meta: {
39
- type: 'raw',
40
- options: {
41
- valueType: 'Record<string, any>'
42
- }
43
- }
44
- }
45
- });
46
- exports.actionResponseSchema = actionResponseSchema;
47
6
  //# sourceMappingURL=features.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"features.types.js","names":["actionResponseSchema","buildSchema","id","fields","files","type","isArray","options","schema","generatedFileSchema","headline","hints","summaryLines","errors","valueType","meta"],"sources":["../../src/features/features.types.ts"],"sourcesContent":["import { buildSchema, Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport generatedFileSchema from '#spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory from '../services/ServiceFactory'\nimport StoreFactory from '../stores/StoreFactory'\nimport { ApiClientFactory } from '../types/apiClient.types'\nimport {\n\tGeneratedFile,\n\tNpmPackage,\n\tInternalUpdateHandler,\n} from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\n\nexport interface FeatureMap {}\nexport interface FeatureOptionsMap {}\n\nexport type InstallFeature<\n\tKeys extends keyof FeatureOptionsMap = keyof FeatureOptionsMap\n> = {\n\t[Key in Keys]: Omit<\n\t\t{\n\t\t\tcode: Key\n\t\t\toptions: FeatureOptionsMap[Key]\n\t\t},\n\t\tFeatureOptionsMap[Key] extends Record<string, any> ? never : 'options'\n\t>\n}[Keys]\n\nexport interface ActionOptions {\n\ttemplates: Templates\n\tserviceFactory: ServiceFactory\n\tcwd: string\n\tparent: AbstractFeature\n\tstoreFactory: StoreFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\twriterFactory: WriterFactory\n\temitter: GlobalEmitter\n\tactionExecuter: ActionExecuter\n\tapiClientFactory: ApiClientFactory\n}\n\nexport type FeatureCode = keyof FeatureMap\n\nexport type FeatureExecuteOptions<F extends FeatureCode> =\n\tFeatureMap[F]['optionsSchema'] extends Schema\n\t\t? SchemaValues<FeatureMap[F]['optionsSchema']>\n\t\t: undefined\n\nexport interface InstallFeatureOptions {\n\tfeatures: InstallFeature[]\n\tinstallFeatureDependencies?: boolean\n\tdidUpdateHandler?: InternalUpdateHandler\n}\n\nexport const actionResponseSchema = buildSchema({\n\tid: 'actionResponse',\n\tfields: {\n\t\tfiles: {\n\t\t\ttype: 'schema',\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tschema: generatedFileSchema,\n\t\t\t},\n\t\t},\n\t\theadline: {\n\t\t\ttype: 'text',\n\t\t},\n\t\thints: {\n\t\t\ttype: 'text',\n\t\t\tisArray: true,\n\t\t},\n\t\tsummaryLines: {\n\t\t\ttype: 'text',\n\t\t\tisArray: true,\n\t\t},\n\t\terrors: {\n\t\t\ttype: 'raw',\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tvalueType: 'SpruceError<any>',\n\t\t\t},\n\t\t},\n\t\tmeta: {\n\t\t\ttype: 'raw',\n\t\t\toptions: {\n\t\t\t\tvalueType: 'Record<string, any>',\n\t\t\t},\n\t\t},\n\t},\n})\n\nexport interface FeatureInstallResponse {\n\tfiles?: GeneratedFile[]\n\tpackagesInstalled?: NpmPackage[]\n}\n\nexport type FeatureActionResponse = SchemaValues<typeof actionResponseSchema> &\n\tFeatureInstallResponse\n\nexport interface FeatureAction<S extends Schema = Schema> {\n\toptionsSchema?: S\n\tcommandAliases: string[]\n\tinvocationMessage: string\n\texecute: (options: SchemaValues<S>) => Promise<FeatureActionResponse>\n}\n"],"mappings":";;;;;;;AAAA;AAEA;AA0DO,IAAMA,oBAAoB,GAAG,IAAAC,mBAAW,EAAC;EAC/CC,EAAE,EAAE,gBAAgB;EACpBC,MAAM,EAAE;IACPC,KAAK,EAAE;MACNC,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;QACRC,MAAM,EAAEC;MACT;IACD,CAAC;IACDC,QAAQ,EAAE;MACTL,IAAI,EAAE;IACP,CAAC;IACDM,KAAK,EAAE;MACNN,IAAI,EAAE,MAAM;MACZC,OAAO,EAAE;IACV,CAAC;IACDM,YAAY,EAAE;MACbP,IAAI,EAAE,MAAM;MACZC,OAAO,EAAE;IACV,CAAC;IACDO,MAAM,EAAE;MACPR,IAAI,EAAE,KAAK;MACXC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;QACRO,SAAS,EAAE;MACZ;IACD,CAAC;IACDC,IAAI,EAAE;MACLV,IAAI,EAAE,KAAK;MACXE,OAAO,EAAE;QACRO,SAAS,EAAE;MACZ;IACD;EACD;AACD,CAAC,CAAC;AAAA"}
1
+ {"version":3,"file":"features.types.js","names":[],"sources":["../../src/features/features.types.ts"],"sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory from '../services/ServiceFactory'\nimport StoreFactory from '../stores/StoreFactory'\nimport { ApiClientFactory } from '../types/apiClient.types'\nimport {\n\tGeneratedFile,\n\tNpmPackage,\n\tInternalUpdateHandler,\n} from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\n\nexport interface FeatureMap {}\nexport interface FeatureOptionsMap {}\n\nexport type InstallFeature<\n\tKeys extends keyof FeatureOptionsMap = keyof FeatureOptionsMap\n> = {\n\t[Key in Keys]: Omit<\n\t\t{\n\t\t\tcode: Key\n\t\t\toptions: FeatureOptionsMap[Key]\n\t\t},\n\t\tFeatureOptionsMap[Key] extends Record<string, any> ? never : 'options'\n\t>\n}[Keys]\n\nexport interface ActionOptions {\n\ttemplates: Templates\n\tserviceFactory: ServiceFactory\n\tcwd: string\n\tparent: AbstractFeature\n\tstoreFactory: StoreFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\twriterFactory: WriterFactory\n\temitter: GlobalEmitter\n\tactionExecuter: ActionExecuter\n\tapiClientFactory: ApiClientFactory\n}\n\nexport type FeatureCode = keyof FeatureMap\n\nexport type FeatureExecuteOptions<F extends FeatureCode> =\n\tFeatureMap[F]['optionsSchema'] extends Schema\n\t\t? SchemaValues<FeatureMap[F]['optionsSchema']>\n\t\t: undefined\n\nexport interface InstallFeatureOptions {\n\tfeatures: InstallFeature[]\n\tinstallFeatureDependencies?: boolean\n\tdidUpdateHandler?: InternalUpdateHandler\n}\n\nexport interface FeatureInstallResponse {\n\tfiles?: GeneratedFile[]\n\tpackagesInstalled?: NpmPackage[]\n}\n\nexport type FeatureActionResponse =\n\tSpruceSchemas.SpruceCli.v2020_07_22.ActionResponse & FeatureInstallResponse\n\nexport interface FeatureAction<S extends Schema = Schema> {\n\toptionsSchema?: S\n\tcommandAliases: string[]\n\tinvocationMessage: string\n\texecute: (options: SchemaValues<S>) => Promise<FeatureActionResponse>\n}\n"],"mappings":""}
@@ -39,7 +39,7 @@ var LogFeature = /*#__PURE__*/function (_AbstractFeature) {
39
39
  (0, _createClass2["default"])(LogFeature, [{
40
40
  key: "isInstalled",
41
41
  value: function isInstalled() {
42
- return this.featureInstaller.isInstalled('skill');
42
+ return this.features.isInstalled('skill');
43
43
  }
44
44
  }]);
45
45
  return LogFeature;
@@ -1 +1 @@
1
- {"version":3,"file":"LogFeature.js","names":["LogFeature","code","isRequired","diskUtil","resolvePath","__dirname","featureInstaller","isInstalled","AbstractFeature"],"sources":["../../../src/features/log/LogFeature.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\tlog: LogFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tlog: undefined\n\t}\n}\n\nexport default class LogFeature extends AbstractFeature {\n\tpublic nameReadable = 'Logging support'\n\tpublic description = 'Logs: Configure how your skill logs and to where.'\n\tpublic code: FeatureCode = 'log'\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'skill', isRequired: true },\n\t]\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic isInstalled() {\n\t\treturn this.featureInstaller.isInstalled('skill')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAAuE;AAAA;AAAA,IAalDA,UAAU;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,iGACR,iBAAiB;IAAA,gGAClB,mDAAmD;IAAA,yFAC7C,KAAK;IAAA,iGAEW,CAC1C;MAAEC,IAAI,EAAE,OAAO;MAAEC,UAAU,EAAE;IAAK,CAAC,CACnC;IAAA,+FACmBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA;EAAA;EAAA;IAAA;IAAA,OAE9D,uBAAqB;MACpB,OAAO,IAAI,CAACC,gBAAgB,CAACC,WAAW,CAAC,OAAO,CAAC;IAClD;EAAC;EAAA;AAAA,EAZsCC,4BAAe;AAAA"}
1
+ {"version":3,"file":"LogFeature.js","names":["LogFeature","code","isRequired","diskUtil","resolvePath","__dirname","features","isInstalled","AbstractFeature"],"sources":["../../../src/features/log/LogFeature.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\tlog: LogFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tlog: undefined\n\t}\n}\n\nexport default class LogFeature extends AbstractFeature {\n\tpublic nameReadable = 'Logging support'\n\tpublic description = 'Logs: Configure how your skill logs and to where.'\n\tpublic code: FeatureCode = 'log'\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'skill', isRequired: true },\n\t]\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic isInstalled() {\n\t\treturn this.features.isInstalled('skill')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAAuE;AAAA;AAAA,IAalDA,UAAU;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,iGACR,iBAAiB;IAAA,gGAClB,mDAAmD;IAAA,yFAC7C,KAAK;IAAA,iGAEW,CAC1C;MAAEC,IAAI,EAAE,OAAO;MAAEC,UAAU,EAAE;IAAK,CAAC,CACnC;IAAA,+FACmBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA;EAAA;EAAA;IAAA;IAAA,OAE9D,uBAAqB;MACpB,OAAO,IAAI,CAACC,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;IAC1C;EAAC;EAAA;AAAA,EAZsCC,4BAAe;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeFeature.js","names":["NodeFeature","options","nodeFeatureOptionsSchema","universalDevDependencies","universalScripts","universalFileDescriptions","diskUtil","resolvePath","__dirname","doesFileExist","cwd","emitter","on","payload","featureCode","actionCode","handleUpgrade","ui","clear","renderHero","startLoading","Service","execute","summaryLines","errors","destination","resolveDestination","doesDirExist","createDir","files","name","path","action","Writer","writeNodeModule","written","push","installScripts","pkg","set","value","namesUtil","toKebab","description","unset","Store","setCurrentSkillsNamespace","scriptUpdater","ScriptUpdater","FromFeature","update","AbstractFeature"],"sources":["../../../src/features/node/NodeFeature.ts"],"sourcesContent":["import { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { SpruceSchemas } from '@sprucelabs/spruce-core-schemas'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport nodeFeatureOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema'\nimport { FileDescription, GeneratedFile } from '../../types/cli.types'\nimport ScriptUpdater from '../../updaters/ScriptUpdater'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport {\n\tActionOptions,\n\tFeatureActionResponse,\n\tFeatureCode,\n} from '../features.types'\nimport universalDevDependencies from '../universalDevDependencies'\nimport universalFileDescriptions from '../universalFileDescriptions'\nimport universalScripts from '../universalScripts'\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptions\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tnode: NodeFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tnode: SchemaValues<OptionsSchema>\n\t}\n}\n\nexport default class NodeFeature<\n\tS extends OptionsSchema = OptionsSchema\n> extends AbstractFeature<S> {\n\tpublic code: FeatureCode = 'node'\n\tpublic nameReadable = 'nodejs support'\n\tpublic description = ''\n\tpublic dependencies: FeatureDependency[] = []\n\tpublic optionsSchema = nodeFeatureOptionsSchema as S\n\tpublic packageDependencies = [...universalDevDependencies]\n\n\tpublic scripts = {\n\t\t...universalScripts,\n\t}\n\n\tpublic readonly fileDescriptions: FileDescription[] = [\n\t\t...universalFileDescriptions,\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.did-execute', async (payload) => {\n\t\t\tif (payload.featureCode === 'node' && payload.actionCode === 'upgrade') {\n\t\t\t\treturn this.handleUpgrade()\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n\n\tprivate async handleUpgrade(): Promise<FeatureActionResponse> {\n\t\ttry {\n\t\t\tthis.ui.clear()\n\t\t\tthis.ui.renderHero('Upgrade')\n\n\t\t\tthis.ui.startLoading('Cleaning build...')\n\t\t\tawait this.Service('command').execute('yarn clean.build')\n\n\t\t\tthis.ui.startLoading('Building for development...')\n\t\t\tawait this.Service('command').execute('yarn build.dev')\n\n\t\t\treturn {\n\t\t\t\tsummaryLines: [\n\t\t\t\t\t'Build cleared.',\n\t\t\t\t\t'Lint rules applied to source.',\n\t\t\t\t\t'Code rebuilt successfully.',\n\t\t\t\t],\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\tpublic async beforePackageInstall(options: Options) {\n\t\tconst destination = this.resolveDestination(options)\n\n\t\tif (!diskUtil.doesDirExist(destination)) {\n\t\t\tdiskUtil.createDir(destination)\n\t\t}\n\n\t\tconst files: GeneratedFile[] = [\n\t\t\t{\n\t\t\t\tname: 'package.json',\n\t\t\t\tpath: diskUtil.resolvePath(destination, 'package.json'),\n\t\t\t\taction: 'generated',\n\t\t\t},\n\t\t]\n\n\t\tawait this.Service('command', destination).execute('yarn init -y')\n\n\t\tconst written = await this.Writer('node').writeNodeModule(destination)\n\n\t\tfiles.push(...written)\n\n\t\tawait this.installScripts(destination)\n\n\t\treturn { files, cwd: destination }\n\t}\n\n\tprivate resolveDestination(options: Options) {\n\t\treturn diskUtil.resolvePath(this.cwd, options.destination ?? '')\n\t}\n\n\tpublic async afterPackageInstall(\n\t\toptions: S extends Schema ? SchemaValues<S> : undefined\n\t) {\n\t\tconst cwd = this.resolveDestination(options)\n\t\tconst pkg = this.Service('pkg', cwd)\n\n\t\tpkg.set({ path: 'name', value: namesUtil.toKebab(options.name) })\n\t\tpkg.set({ path: 'description', value: options.description })\n\t\tpkg.set({ path: 'version', value: '0.0.1' })\n\n\t\tpkg.unset('main')\n\t\tpkg.unset('license')\n\n\t\tawait this.Store('skill', {\n\t\t\tcwd,\n\t\t}).setCurrentSkillsNamespace(options.name)\n\n\t\treturn {}\n\t}\n\n\tprivate async installScripts(destination = this.cwd) {\n\t\tconst scriptUpdater = ScriptUpdater.FromFeature(this, {\n\t\t\tcwd: destination,\n\t\t})\n\n\t\tawait scriptUpdater.update()\n\t}\n\n\tpublic isInstalled = async (): Promise<boolean> => {\n\t\treturn diskUtil.doesFileExist(\n\t\t\tdiskUtil.resolvePath(this.cwd, 'package.json')\n\t\t)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"NodeFeature.js","names":["NodeFeature","options","nodeFeatureOptionsSchema","universalDevDependencies","universalScripts","universalFileDescriptions","diskUtil","resolvePath","__dirname","doesFileExist","cwd","emitter","on","payload","featureCode","actionCode","handleUpgrade","ui","clear","renderHero","startLoading","Service","execute","summaryLines","errors","destination","resolveDestination","doesDirExist","createDir","files","name","path","action","Writer","writeNodeModule","written","push","installScripts","pkg","set","value","namesUtil","toKebab","description","unset","Store","setCurrentSkillsNamespace","scriptUpdater","ScriptUpdater","FromFeature","update","AbstractFeature"],"sources":["../../../src/features/node/NodeFeature.ts"],"sourcesContent":["import { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { SpruceSchemas } from '@sprucelabs/spruce-core-schemas'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport nodeFeatureOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema'\nimport { FileDescription, GeneratedFile } from '../../types/cli.types'\nimport ScriptUpdater from '../../updaters/ScriptUpdater'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport {\n\tActionOptions,\n\tFeatureActionResponse,\n\tFeatureCode,\n} from '../features.types'\nimport universalDevDependencies from '../universalDevDependencies'\nimport universalFileDescriptions from '../universalFileDescriptions'\nimport universalScripts from '../universalScripts'\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptions\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tnode: NodeFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tnode: SchemaValues<OptionsSchema>\n\t}\n}\n\nexport default class NodeFeature<\n\tS extends OptionsSchema = OptionsSchema\n> extends AbstractFeature<S> {\n\tpublic code: FeatureCode = 'node'\n\tpublic nameReadable = 'nodejs support'\n\tpublic description = ''\n\tpublic dependencies: FeatureDependency[] = []\n\tpublic optionsSchema = nodeFeatureOptionsSchema as S\n\tpublic packageDependencies = [...universalDevDependencies]\n\n\tpublic scripts = {\n\t\t...universalScripts,\n\t}\n\n\tpublic readonly fileDescriptions: FileDescription[] = [\n\t\t...universalFileDescriptions,\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.did-execute', async (payload) => {\n\t\t\tif (payload.featureCode === 'node' && payload.actionCode === 'upgrade') {\n\t\t\t\treturn this.handleUpgrade()\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n\n\tprivate async handleUpgrade(): Promise<FeatureActionResponse> {\n\t\ttry {\n\t\t\tthis.ui.clear()\n\t\t\tthis.ui.renderHero('Upgrade')\n\n\t\t\tthis.ui.startLoading('Cleaning build...')\n\t\t\tawait this.Service('command').execute('yarn clean.build')\n\n\t\t\tthis.ui.startLoading('Building for development...')\n\t\t\tawait this.Service('command').execute('yarn build.dev')\n\n\t\t\treturn {\n\t\t\t\tsummaryLines: [\n\t\t\t\t\t'Build cleared.',\n\t\t\t\t\t'Lint rules applied to source.',\n\t\t\t\t\t'Code rebuilt successfully.',\n\t\t\t\t],\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\tpublic async beforePackageInstall(options: Options) {\n\t\tconst destination = this.resolveDestination(options)\n\n\t\tif (!diskUtil.doesDirExist(destination)) {\n\t\t\tdiskUtil.createDir(destination)\n\t\t}\n\n\t\tconst files: GeneratedFile[] = [\n\t\t\t{\n\t\t\t\tname: 'package.json',\n\t\t\t\tpath: diskUtil.resolvePath(destination, 'package.json'),\n\t\t\t\taction: 'generated',\n\t\t\t},\n\t\t]\n\n\t\tawait this.Service('command', destination).execute('yarn init -y')\n\n\t\tconst written = await this.Writer('node').writeNodeModule(destination)\n\n\t\tfiles.push(...written)\n\n\t\tawait this.installScripts(destination)\n\n\t\treturn { files, cwd: destination }\n\t}\n\n\tprivate resolveDestination(options: Options) {\n\t\treturn diskUtil.resolvePath(this.cwd, options.destination ?? '')\n\t}\n\n\tpublic async afterPackageInstall(\n\t\toptions: S extends Schema ? SchemaValues<S> : undefined\n\t) {\n\t\tconst cwd = this.resolveDestination(options)\n\t\tconst pkg = this.Service('pkg', cwd)\n\n\t\tpkg.set({ path: 'name', value: namesUtil.toKebab(options.name) })\n\t\tpkg.set({ path: 'description', value: options.description })\n\t\tpkg.set({ path: 'version', value: '0.0.1' })\n\n\t\tpkg.unset('main')\n\t\tpkg.unset('license')\n\n\t\tawait this.Store('skill', {\n\t\t\tcwd,\n\t\t}).setCurrentSkillsNamespace(options.name)\n\n\t\treturn {}\n\t}\n\n\tprivate async installScripts(destination = this.cwd) {\n\t\tconst scriptUpdater = ScriptUpdater.FromFeature(this, {\n\t\t\tcwd: destination,\n\t\t})\n\n\t\tawait scriptUpdater.update()\n\t}\n\n\tpublic isInstalled = async (): Promise<boolean> => {\n\t\treturn diskUtil.doesFileExist(\n\t\t\tdiskUtil.resolvePath(this.cwd, 'package.json')\n\t\t)\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"InstallAction.js","names":["InstallAction","installSkillAtOrganizationActionSchema","options","Store","loadCurrentSkill","skill","id","SpruceError","code","validateAndNormalizeOptions","organizationId","fetchMyOrganizations","orgs","length","ui","confirm","name","choices","map","o","value","label","prompt","type","isRequired","installSkillAtOrganization","summaryLines","errors","AbstractAction"],"sources":["../../../../src/features/organization/actions/InstallAction.ts"],"sourcesContent":["import { SelectChoice } from '@sprucelabs/schema'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport installSkillAtOrganizationActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/installSkillAtOrganizationOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.InstallSkillAtOrganizationOptionsSchema\ntype Options =\n\tSpruceSchemas.SpruceCli.v2020_07_22.InstallSkillAtOrganizationOptions\nexport default class InstallAction extends AbstractAction<OptionsSchema> {\n\tpublic commandAliases = ['install.skill']\n\tpublic optionsSchema: OptionsSchema = installSkillAtOrganizationActionSchema\n\tpublic invocationMessage = 'Installing skill at org... 🏙'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\ttry {\n\t\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\t\tif (!skill.id) {\n\t\t\t\tthrow new SpruceError({ code: 'SKILL_NOT_REGISTERED' })\n\t\t\t}\n\n\t\t\tlet { organizationId } = this.validateAndNormalizeOptions(options)\n\n\t\t\tif (!organizationId) {\n\t\t\t\tconst orgs = await this.Store('organization').fetchMyOrganizations()\n\n\t\t\t\tif (orgs.length === 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NO_ORGANIZATIONS_FOUND',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (orgs.length === 1) {\n\t\t\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t\t\t`You ready to install your skill at ${orgs[0].name}?`\n\t\t\t\t\t)\n\n\t\t\t\t\tif (!confirm) {\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t}\n\n\t\t\t\t\torganizationId = orgs[0].id\n\t\t\t\t} else {\n\t\t\t\t\tconst choices: SelectChoice[] = orgs.map((o) => ({\n\t\t\t\t\t\tvalue: o.id,\n\t\t\t\t\t\tlabel: o.name,\n\t\t\t\t\t}))\n\n\t\t\t\t\torganizationId = await this.ui.prompt({\n\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\tlabel: 'Which organization should we install your skill to?',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tchoices,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait this.Store('organization').installSkillAtOrganization(\n\t\t\t\tskill.id,\n\t\t\t\torganizationId\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tsummaryLines: ['Skill installed!'],\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":";;;;;;;;;;;;;;;;AAEA;AACA;AACA;AAAiD;AAAA;AAAA,IAO5BA,aAAa;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,mGACT,CAAC,eAAe,CAAC;IAAA,kGACHC,6CAAsC;IAAA,sGACjD,+BAA+B;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAE1D,iBAAqBC,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;gBAAA,OAEf,IAAI,CAACC,KAAK,CAAC,OAAO,CAAC,CAACC,gBAAgB,EAAE;cAAA;gBAApDC,KAAK;gBAAA,IAENA,KAAK,CAACC,EAAE;kBAAA;kBAAA;gBAAA;gBAAA,MACN,IAAIC,uBAAW,CAAC;kBAAEC,IAAI,EAAE;gBAAuB,CAAC,CAAC;cAAA;gBAAA,wBAG/B,IAAI,CAACC,2BAA2B,CAACP,OAAO,CAAC,EAA5DQ,cAAc,yBAAdA,cAAc;gBAAA,IAEfA,cAAc;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACC,IAAI,CAACP,KAAK,CAAC,cAAc,CAAC,CAACQ,oBAAoB,EAAE;cAAA;gBAA9DC,IAAI;gBAAA,MAENA,IAAI,CAACC,MAAM,KAAK,CAAC;kBAAA;kBAAA;gBAAA;gBAAA,MACd,IAAIN,uBAAW,CAAC;kBACrBC,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAAA,MAGCI,IAAI,CAACC,MAAM,KAAK,CAAC;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACE,IAAI,CAACC,EAAE,CAACC,OAAO,8CACEH,IAAI,CAAC,CAAC,CAAC,CAACI,IAAI,OAClD;cAAA;gBAFKD,OAAO;gBAAA,IAIRA,OAAO;kBAAA;kBAAA;gBAAA;gBAAA,iCACJ,CAAC,CAAC;cAAA;gBAGVL,cAAc,GAAGE,IAAI,CAAC,CAAC,CAAC,CAACN,EAAE;gBAAA;gBAAA;cAAA;gBAErBW,OAAuB,GAAGL,IAAI,CAACM,GAAG,CAAC,UAACC,CAAC;kBAAA,OAAM;oBAChDC,KAAK,EAAED,CAAC,CAACb,EAAE;oBACXe,KAAK,EAAEF,CAAC,CAACH;kBACV,CAAC;gBAAA,CAAC,CAAC;gBAAA;gBAAA,OAEoB,IAAI,CAACF,EAAE,CAACQ,MAAM,CAAC;kBACrCC,IAAI,EAAE,QAAQ;kBACdF,KAAK,EAAE,qDAAqD;kBAC5DG,UAAU,EAAE,IAAI;kBAChBtB,OAAO,EAAE;oBACRe,OAAO,EAAPA;kBACD;gBACD,CAAC,CAAC;cAAA;gBAPFP,cAAc;cAAA;gBAAA;gBAAA,OAWV,IAAI,CAACP,KAAK,CAAC,cAAc,CAAC,CAACsB,0BAA0B,CAC1DpB,KAAK,CAACC,EAAE,EACRI,cAAc,CACd;cAAA;gBAAA,iCAEM;kBACNgB,YAAY,EAAE,CAAC,kBAAkB;gBAClC,CAAC;cAAA;gBAAA;gBAAA;gBAAA,iCAEM;kBACNC,MAAM,EAAE;gBACT,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAhEyCC,2BAAc;AAAA"}
1
+ {"version":3,"file":"InstallAction.js","names":["InstallAction","installSkillAtOrganizationActionSchema","options","Store","loadCurrentSkill","skill","id","SpruceError","code","validateAndNormalizeOptions","organizationId","fetchMyOrganizations","orgs","length","ui","confirm","name","choices","map","o","value","label","prompt","type","isRequired","installSkillAtOrganization","summaryLines","errors","AbstractAction"],"sources":["../../../../src/features/organization/actions/InstallAction.ts"],"sourcesContent":["import { SelectChoice } from '@sprucelabs/schema'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport installSkillAtOrganizationActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/installSkillAtOrganizationOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.InstallSkillAtOrganizationOptionsSchema\ntype Options =\n\tSpruceSchemas.SpruceCli.v2020_07_22.InstallSkillAtOrganizationOptions\nexport default class InstallAction extends AbstractAction<OptionsSchema> {\n\tpublic commandAliases = ['install.skill']\n\tpublic optionsSchema: OptionsSchema = installSkillAtOrganizationActionSchema\n\tpublic invocationMessage = 'Installing skill at org... 🏙'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\ttry {\n\t\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\t\tif (!skill.id) {\n\t\t\t\tthrow new SpruceError({ code: 'SKILL_NOT_REGISTERED' })\n\t\t\t}\n\n\t\t\tlet { organizationId } = this.validateAndNormalizeOptions(options)\n\n\t\t\tif (!organizationId) {\n\t\t\t\tconst orgs = await this.Store('organization').fetchMyOrganizations()\n\n\t\t\t\tif (orgs.length === 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NO_ORGANIZATIONS_FOUND',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (orgs.length === 1) {\n\t\t\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t\t\t`You ready to install your skill at ${orgs[0].name}?`\n\t\t\t\t\t)\n\n\t\t\t\t\tif (!confirm) {\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t}\n\n\t\t\t\t\torganizationId = orgs[0].id\n\t\t\t\t} else {\n\t\t\t\t\tconst choices: SelectChoice[] = orgs.map((o) => ({\n\t\t\t\t\t\tvalue: o.id,\n\t\t\t\t\t\tlabel: o.name,\n\t\t\t\t\t}))\n\n\t\t\t\t\torganizationId = await this.ui.prompt({\n\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\tlabel: 'Which organization should we install your skill to?',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tchoices,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait this.Store('organization').installSkillAtOrganization(\n\t\t\t\tskill.id,\n\t\t\t\torganizationId\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tsummaryLines: ['Skill installed!'],\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":";;;;;;;;;;;;;;;;AAEA;AACA;AACA;AAAiD;AAAA;AAAA,IAO5BA,aAAa;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,mGACT,CAAC,eAAe,CAAC;IAAA,kGACHC,6CAAsC;IAAA,sGACjD,+BAA+B;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAE1D,iBAAqBC,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;gBAAA,OAEf,IAAI,CAACC,KAAK,CAAC,OAAO,CAAC,CAACC,gBAAgB,EAAE;cAAA;gBAApDC,KAAK;gBAAA,IAENA,KAAK,CAACC,EAAE;kBAAA;kBAAA;gBAAA;gBAAA,MACN,IAAIC,uBAAW,CAAC;kBAAEC,IAAI,EAAE;gBAAuB,CAAC,CAAC;cAAA;gBAAA,wBAG/B,IAAI,CAACC,2BAA2B,CAACP,OAAO,CAAC,EAA5DQ,cAAc,yBAAdA,cAAc;gBAAA,IAEfA,cAAc;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACC,IAAI,CAACP,KAAK,CAAC,cAAc,CAAC,CAACQ,oBAAoB,EAAE;cAAA;gBAA9DC,IAAI;gBAAA,MAENA,IAAI,CAACC,MAAM,KAAK,CAAC;kBAAA;kBAAA;gBAAA;gBAAA,MACd,IAAIN,uBAAW,CAAC;kBACrBC,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;gBAAA,MAGCI,IAAI,CAACC,MAAM,KAAK,CAAC;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACE,IAAI,CAACC,EAAE,CAACC,OAAO,8CACEH,IAAI,CAAC,CAAC,CAAC,CAACI,IAAI,OAClD;cAAA;gBAFKD,OAAO;gBAAA,IAIRA,OAAO;kBAAA;kBAAA;gBAAA;gBAAA,iCACJ,CAAC,CAAC;cAAA;gBAGVL,cAAc,GAAGE,IAAI,CAAC,CAAC,CAAC,CAACN,EAAE;gBAAA;gBAAA;cAAA;gBAErBW,OAAuB,GAAGL,IAAI,CAACM,GAAG,CAAC,UAACC,CAAC;kBAAA,OAAM;oBAChDC,KAAK,EAAED,CAAC,CAACb,EAAE;oBACXe,KAAK,EAAEF,CAAC,CAACH;kBACV,CAAC;gBAAA,CAAC,CAAC;gBAAA;gBAAA,OAEoB,IAAI,CAACF,EAAE,CAACQ,MAAM,CAAC;kBACrCC,IAAI,EAAE,QAAQ;kBACdF,KAAK,EAAE,qDAAqD;kBAC5DG,UAAU,EAAE,IAAI;kBAChBtB,OAAO,EAAE;oBACRe,OAAO,EAAPA;kBACD;gBACD,CAAC,CAAC;cAAA;gBAPFP,cAAc;cAAA;gBAAA;gBAAA,OAWV,IAAI,CAACP,KAAK,CAAC,cAAc,CAAC,CAACsB,0BAA0B,CAC1DpB,KAAK,CAACC,EAAE,EACRI,cAAc,CACd;cAAA;gBAAA,iCAEM;kBACNgB,YAAY,EAAE,CAAC,kBAAkB;gBAClC,CAAC;cAAA;gBAAA;gBAAA;gBAAA,iCAEM;kBACNC,MAAM,EAAE;gBACT,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAhEyCC,2BAAc;AAAA"}