@sprucelabs/spruce-cli 18.1.8 → 18.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/.spruce/events/events.contract.d.ts +159 -0
  3. package/build/.spruce/events/events.contract.js +5 -1
  4. package/build/.spruce/events/events.contract.js.map +1 -1
  5. package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.d.ts +46 -0
  6. package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js +57 -0
  7. package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js.map +1 -0
  8. package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.d.ts +68 -0
  9. package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js +78 -0
  10. package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js.map +1 -0
  11. package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.d.ts +40 -0
  12. package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js +51 -0
  13. package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js.map +1 -0
  14. package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.d.ts +9 -0
  15. package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js +17 -0
  16. package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js.map +1 -0
  17. package/build/.spruce/schemas/schemas.types.d.ts +158 -55
  18. package/build/.spruce/schemas/schemas.types.js.map +1 -1
  19. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.d.ts +3 -0
  20. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js +70 -0
  21. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js.map +1 -0
  22. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.d.ts +3 -0
  23. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js +35 -0
  24. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js.map +1 -0
  25. package/build/.spruce/settings.json +2 -1
  26. package/build/GlobalEmitter.d.ts +13 -38
  27. package/build/GlobalEmitter.js +3 -6
  28. package/build/GlobalEmitter.js.map +1 -1
  29. package/build/__tests__/behavioral/TestingAConversation.test.d.ts +2 -1
  30. package/build/__tests__/behavioral/TestingAConversation.test.js +74 -84
  31. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  32. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +38 -13
  33. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  34. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
  35. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +16 -9
  36. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  37. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.d.ts +2 -2
  38. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +7 -7
  39. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
  40. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.d.ts +6 -0
  41. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js +85 -0
  42. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js.map +1 -0
  43. package/build/__tests__/behavioral/permissions/PermissionStore.test.d.ts +12 -2
  44. package/build/__tests__/behavioral/permissions/PermissionStore.test.js +248 -36
  45. package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
  46. package/build/__tests__/behavioral/permissions/PermissionWriter.test.d.ts +5 -0
  47. package/build/__tests__/behavioral/permissions/PermissionWriter.test.js +88 -0
  48. package/build/__tests__/behavioral/permissions/PermissionWriter.test.js.map +1 -0
  49. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.d.ts +15 -4
  50. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js +325 -28
  51. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
  52. package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.d.ts +11 -0
  53. package/build/__tests__/behavioral/permissions/{AbstractPermissionsTest.js → support/AbstractPermissionsTest.js} +34 -2
  54. package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.js.map +1 -0
  55. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.d.ts +1 -0
  56. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js +11 -0
  57. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js.map +1 -0
  58. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.d.ts +1 -0
  59. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js +17 -0
  60. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js.map +1 -0
  61. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.d.ts +5 -0
  62. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js +10 -0
  63. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js.map +1 -0
  64. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.d.ts +1 -1
  65. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +46 -46
  66. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  67. package/build/__tests__/behavioral/tests/CreatingATest.test.js +2 -2
  68. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  69. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +7 -3
  70. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  71. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +2 -2
  72. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  73. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +1 -1
  74. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  75. package/build/__tests__/implementation/ActionExecuter2.test.d.ts +1 -1
  76. package/build/__tests__/implementation/ActionExecuter2.test.js +23 -11
  77. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  78. package/build/__tests__/implementation/GlobalEmitter.test.d.ts +1 -0
  79. package/build/__tests__/implementation/GlobalEmitter.test.js +40 -3
  80. package/build/__tests__/implementation/GlobalEmitter.test.js.map +1 -1
  81. package/build/__tests__/implementation/SkillStore.test.js +3 -4
  82. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  83. package/build/__tests__/support/EventFaker.d.ts +5 -0
  84. package/build/__tests__/support/EventFaker.js +48 -0
  85. package/build/__tests__/support/EventFaker.js.map +1 -0
  86. package/build/features/AbstractAction.d.ts +1 -1
  87. package/build/features/AbstractAction.js.map +1 -1
  88. package/build/features/AbstractFeature.d.ts +3 -3
  89. package/build/features/AbstractFeature.js +8 -8
  90. package/build/features/AbstractFeature.js.map +1 -1
  91. package/build/features/ActionExecuter.d.ts +1 -1
  92. package/build/features/ActionExecuter.js +3 -4
  93. package/build/features/ActionExecuter.js.map +1 -1
  94. package/build/features/ActionFactory.d.ts +12 -5
  95. package/build/features/ActionFactory.js +27 -6
  96. package/build/features/ActionFactory.js.map +1 -1
  97. package/build/features/ActionQuestionAsker.d.ts +1 -1
  98. package/build/features/ActionQuestionAsker.js +6 -6
  99. package/build/features/ActionQuestionAsker.js.map +1 -1
  100. package/build/features/conversation/ConversationFeature.js +1 -1
  101. package/build/features/conversation/ConversationFeature.js.map +1 -1
  102. package/build/features/dependencies/DependencyFeature.js +1 -1
  103. package/build/features/dependencies/DependencyFeature.js.map +1 -1
  104. package/build/features/deploy/actions/HerokuAction.js +31 -33
  105. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  106. package/build/features/error/ErrorFeature.js +4 -4
  107. package/build/features/error/ErrorFeature.js.map +1 -1
  108. package/build/features/event/EventFeature.d.ts +8 -8
  109. package/build/features/event/EventFeature.js +7 -4
  110. package/build/features/event/EventFeature.js.map +1 -1
  111. package/build/features/event/actions/CreateAction.js.map +1 -1
  112. package/build/features/event/actions/ListenAction.js.map +1 -1
  113. package/build/features/event/stores/EventStore.d.ts +9 -9
  114. package/build/features/event/stores/EventStore.js +26 -26
  115. package/build/features/event/stores/EventStore.js.map +1 -1
  116. package/build/features/eventContract/EventContractFeature.js +4 -1
  117. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  118. package/build/features/eventContract/actions/PullAction.js +10 -5
  119. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  120. package/build/features/features.types.d.ts +2 -37
  121. package/build/features/features.types.js +0 -41
  122. package/build/features/features.types.js.map +1 -1
  123. package/build/features/log/LogFeature.js +1 -1
  124. package/build/features/log/LogFeature.js.map +1 -1
  125. package/build/features/node/NodeFeature.js.map +1 -1
  126. package/build/features/organization/actions/InstallAction.js.map +1 -1
  127. package/build/features/permission/PermissionFeature.d.ts +12 -2
  128. package/build/features/permission/PermissionFeature.js +140 -15
  129. package/build/features/permission/PermissionFeature.js.map +1 -1
  130. package/build/features/permission/actions/CreateAction.js +4 -1
  131. package/build/features/permission/actions/CreateAction.js.map +1 -1
  132. package/build/features/permission/actions/SyncAction.d.ts +5 -1
  133. package/build/features/permission/actions/SyncAction.js +28 -10
  134. package/build/features/permission/actions/SyncAction.js.map +1 -1
  135. package/build/features/permission/stores/PermissionStore.d.ts +7 -1
  136. package/build/features/permission/stores/PermissionStore.js +92 -23
  137. package/build/features/permission/stores/PermissionStore.js.map +1 -1
  138. package/build/features/permission/writers/PermissionWriter.d.ts +7 -1
  139. package/build/features/permission/writers/PermissionWriter.js +66 -17
  140. package/build/features/permission/writers/PermissionWriter.js.map +1 -1
  141. package/build/features/person/PersonFeature.js +1 -1
  142. package/build/features/person/PersonFeature.js.map +1 -1
  143. package/build/features/sandbox/SandboxFeature.js +1 -1
  144. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  145. package/build/features/schema/SchemaFeature.d.ts +8 -8
  146. package/build/features/schema/SchemaFeature.js +4 -4
  147. package/build/features/schema/SchemaFeature.js.map +1 -1
  148. package/build/features/schema/writers/SchemaWriter.d.ts +12 -12
  149. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  150. package/build/features/skill/SkillFeature.d.ts +11 -11
  151. package/build/features/skill/SkillFeature.js +2 -2
  152. package/build/features/skill/SkillFeature.js.map +1 -1
  153. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  154. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  155. package/build/features/skill/stores/SkillStore.js +1 -2
  156. package/build/features/skill/stores/SkillStore.js.map +1 -1
  157. package/build/features/store/StoreFeature.js +1 -1
  158. package/build/features/store/StoreFeature.js.map +1 -1
  159. package/build/features/store/actions/SyncAction.d.ts +1 -1
  160. package/build/features/store/actions/SyncAction.js.map +1 -1
  161. package/build/features/test/TestFeature.js +1 -1
  162. package/build/features/test/TestFeature.js.map +1 -1
  163. package/build/features/view/ViewFeature.js +1 -1
  164. package/build/features/view/ViewFeature.js.map +1 -1
  165. package/build/schemas/v2020_07_22/actionResponse.builder.d.ts +85 -0
  166. package/build/schemas/v2020_07_22/actionResponse.builder.js +70 -0
  167. package/build/schemas/v2020_07_22/actionResponse.builder.js.map +1 -0
  168. package/build/schemas/v2020_07_22/generatedFile.builder.d.ts +27 -0
  169. package/build/schemas/v2020_07_22/generatedFile.builder.js +45 -0
  170. package/build/schemas/v2020_07_22/generatedFile.builder.js.map +1 -0
  171. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js +4 -40
  172. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
  173. package/build/services/CommandService.d.ts +2 -2
  174. package/build/services/CommandService.js +6 -6
  175. package/build/services/CommandService.js.map +1 -1
  176. package/build/services/PkgService.d.ts +1 -0
  177. package/build/services/PkgService.js +5 -0
  178. package/build/services/PkgService.js.map +1 -1
  179. package/build/tests/AbstractCliTest.d.ts +7 -3
  180. package/build/tests/AbstractCliTest.js +81 -45
  181. package/build/tests/AbstractCliTest.js.map +1 -1
  182. package/build/tests/buildTestCache.js +7 -0
  183. package/build/tests/buildTestCache.js.map +1 -1
  184. package/build/tests/fixtures/FeatureFixture.js +1 -0
  185. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  186. package/build/tests/utilities/test.utility.d.ts +2 -0
  187. package/build/tests/utilities/test.utility.js +6 -0
  188. package/build/tests/utilities/test.utility.js.map +1 -1
  189. package/node_modules/@typescript-eslint/parser/package.json +6 -6
  190. package/node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js +9 -9
  191. package/node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js.map +1 -1
  192. package/node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.d.ts +1 -1
  193. package/node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.d.ts.map +1 -1
  194. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.d.ts.map +1 -1
  195. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.d.ts.map +1 -1
  196. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js +1 -0
  197. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js.map +1 -1
  198. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js +21 -7
  199. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js.map +1 -1
  200. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.d.ts.map +1 -1
  201. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.d.ts +3 -0
  202. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.d.ts.map +1 -0
  203. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.js +12 -0
  204. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.js.map +1 -0
  205. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.js +2 -1
  206. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.js.map +1 -1
  207. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts +1 -0
  208. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts.map +1 -1
  209. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js +2 -0
  210. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js.map +1 -1
  211. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.d.ts.map +1 -1
  212. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.d.ts.map +1 -1
  213. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.js +2 -0
  214. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.js.map +1 -1
  215. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js +39 -1
  216. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js.map +1 -1
  217. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts +4 -2
  218. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts.map +1 -1
  219. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js +13 -5
  220. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js.map +1 -1
  221. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ExportVisitor.d.ts +1 -1
  222. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ExportVisitor.d.ts.map +1 -1
  223. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.d.ts +2 -2
  224. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.d.ts.map +1 -1
  225. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js +9 -9
  226. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js.map +1 -1
  227. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.js +17 -17
  228. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.js.map +1 -1
  229. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts +2 -1
  230. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts.map +1 -1
  231. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js +3 -0
  232. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js.map +1 -1
  233. package/node_modules/@typescript-eslint/scope-manager/dist/scope/Scope.d.ts +1 -1
  234. package/node_modules/@typescript-eslint/scope-manager/dist/scope/Scope.d.ts.map +1 -1
  235. package/node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.d.ts +1 -1
  236. package/node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.d.ts.map +1 -1
  237. package/node_modules/@typescript-eslint/scope-manager/package.json +12 -12
  238. package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +27 -3
  239. package/node_modules/@typescript-eslint/types/_ts3.4/dist/lib.d.ts +1 -1
  240. package/node_modules/@typescript-eslint/types/_ts3.4/dist/parser-options.d.ts +3 -3
  241. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +27 -3
  242. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
  243. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js +3 -0
  244. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js.map +1 -1
  245. package/node_modules/@typescript-eslint/types/dist/lib.d.ts +1 -1
  246. package/node_modules/@typescript-eslint/types/dist/lib.d.ts.map +1 -1
  247. package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts +3 -3
  248. package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts.map +1 -1
  249. package/node_modules/@typescript-eslint/types/package.json +3 -3
  250. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/create-program/shared.d.ts +1 -1
  251. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parseSettings/index.d.ts +2 -2
  252. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parser-options.d.ts +1 -1
  253. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parser.d.ts +1 -1
  254. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/simple-traverse.d.ts +1 -1
  255. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/estree-to-ts-node-types.d.ts +4 -1
  256. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/ts-nodes.d.ts +4 -2
  257. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
  258. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +22 -3
  259. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
  260. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.d.ts.map +1 -1
  261. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js +9 -0
  262. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js.map +1 -1
  263. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.d.ts +1 -1
  264. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.d.ts.map +1 -1
  265. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/index.d.ts +2 -2
  266. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/index.d.ts.map +1 -1
  267. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js +1 -1
  268. package/node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts +1 -1
  269. package/node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts.map +1 -1
  270. package/node_modules/@typescript-eslint/typescript-estree/dist/parser.d.ts +1 -1
  271. package/node_modules/@typescript-eslint/typescript-estree/dist/parser.d.ts.map +1 -1
  272. package/node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.d.ts +1 -1
  273. package/node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.d.ts.map +1 -1
  274. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts +4 -1
  275. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts.map +1 -1
  276. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts +4 -2
  277. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts.map +1 -1
  278. package/node_modules/@typescript-eslint/typescript-estree/package.json +6 -6
  279. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.d.ts.map +1 -1
  280. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js +63 -48
  281. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js.map +1 -1
  282. package/node_modules/@typescript-eslint/visitor-keys/package.json +4 -4
  283. package/package.json +65 -33
  284. package/src/.spruce/events/events.contract.ts +24 -0
  285. package/src/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.ts +54 -0
  286. package/src/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.ts +79 -0
  287. package/src/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.ts +48 -0
  288. package/src/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.ts +13 -0
  289. package/src/.spruce/schemas/schemas.types.ts +171 -52
  290. package/src/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.ts +58 -0
  291. package/src/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.ts +33 -0
  292. package/src/.spruce/settings.json +2 -1
  293. package/src/GlobalEmitter.ts +2 -7
  294. package/src/__tests__/behavioral/TestingAConversation.test.ts +20 -37
  295. package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +14 -2
  296. package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
  297. package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +2 -2
  298. package/src/__tests__/behavioral/permissions/PermissionPlugin.test.ts +24 -0
  299. package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +204 -23
  300. package/src/__tests__/behavioral/permissions/PermissionWriter.test.ts +23 -0
  301. package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +125 -8
  302. package/src/__tests__/behavioral/permissions/support/AbstractPermissionsTest.ts +38 -0
  303. package/src/__tests__/behavioral/permissions/support/generateShortAlphaId.ts +5 -0
  304. package/src/__tests__/behavioral/permissions/support/renderPermissionTestFile.ts +27 -0
  305. package/src/__tests__/behavioral/permissions/support/sortPermissionContracts.ts +3 -0
  306. package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +12 -12
  307. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -2
  308. package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +3 -0
  309. package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +3 -2
  310. package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
  311. package/src/__tests__/implementation/ActionExecuter2.test.ts +13 -6
  312. package/src/__tests__/implementation/GlobalEmitter.test.ts +22 -1
  313. package/src/__tests__/implementation/SkillStore.test.ts +1 -2
  314. package/src/__tests__/support/EventFaker.ts +23 -0
  315. package/src/features/AbstractAction.ts +2 -2
  316. package/src/features/AbstractFeature.ts +8 -8
  317. package/src/features/ActionExecuter.ts +4 -5
  318. package/src/features/ActionFactory.ts +44 -20
  319. package/src/features/ActionQuestionAsker.ts +17 -17
  320. package/src/features/conversation/ConversationFeature.ts +1 -1
  321. package/src/features/dependencies/DependencyFeature.ts +1 -1
  322. package/src/features/deploy/actions/HerokuAction.ts +2 -2
  323. package/src/features/error/ErrorFeature.ts +4 -4
  324. package/src/features/event/EventFeature.ts +15 -14
  325. package/src/features/event/actions/CreateAction.ts +1 -1
  326. package/src/features/event/actions/ListenAction.ts +1 -1
  327. package/src/features/event/stores/EventStore.ts +37 -37
  328. package/src/features/eventContract/EventContractFeature.ts +6 -1
  329. package/src/features/eventContract/actions/PullAction.ts +7 -3
  330. package/src/features/features.types.ts +4 -41
  331. package/src/features/log/LogFeature.ts +1 -1
  332. package/src/features/node/NodeFeature.ts +1 -1
  333. package/src/features/organization/actions/InstallAction.ts +1 -1
  334. package/src/features/permission/PermissionFeature.ts +66 -11
  335. package/src/features/permission/actions/CreateAction.ts +2 -0
  336. package/src/features/permission/actions/SyncAction.ts +22 -3
  337. package/src/features/permission/stores/PermissionStore.ts +44 -3
  338. package/src/features/permission/writers/PermissionWriter.ts +64 -3
  339. package/src/features/person/PersonFeature.ts +1 -1
  340. package/src/features/sandbox/SandboxFeature.ts +1 -3
  341. package/src/features/schema/SchemaFeature.ts +14 -14
  342. package/src/features/schema/writers/SchemaWriter.ts +14 -15
  343. package/src/features/skill/SkillFeature.ts +18 -18
  344. package/src/features/skill/actions/RebuildAction.ts +1 -1
  345. package/src/features/skill/actions/RegisterAction.ts +1 -1
  346. package/src/features/skill/stores/SkillStore.ts +1 -2
  347. package/src/features/store/StoreFeature.ts +1 -1
  348. package/src/features/store/actions/SyncAction.ts +1 -1
  349. package/src/features/test/TestFeature.ts +1 -1
  350. package/src/features/view/ViewFeature.ts +1 -1
  351. package/src/schemas/v2020_07_22/actionResponse.builder.ts +62 -0
  352. package/src/schemas/v2020_07_22/generatedFile.builder.ts +44 -0
  353. package/src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts +3 -46
  354. package/src/services/CommandService.ts +5 -5
  355. package/src/services/PkgService.ts +4 -0
  356. package/src/tests/AbstractCliTest.ts +31 -13
  357. package/src/tests/buildTestCache.ts +7 -0
  358. package/src/tests/fixtures/FeatureFixture.ts +2 -0
  359. package/src/tests/utilities/test.utility.ts +13 -0
  360. package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.d.ts +0 -8
  361. package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.js.map +0 -1
  362. package/src/__tests__/behavioral/permissions/AbstractPermissionsTest.ts +0 -20
@@ -2,14 +2,6 @@ import { FileDescription } from '../../types/cli.types';
2
2
  import AbstractFeature, { FeatureDependency, FeatureOptions } from '../AbstractFeature';
3
3
  import { FeatureActionResponse, FeatureCode } from '../features.types';
4
4
  import EventContractBuilder from './builders/EventContractBuilder';
5
- declare module '../../features/features.types' {
6
- interface FeatureMap {
7
- event: EventFeature;
8
- }
9
- interface FeatureOptionsMap {
10
- event: undefined;
11
- }
12
- }
13
5
  export default class EventFeature extends AbstractFeature {
14
6
  code: FeatureCode;
15
7
  nameReadable: string;
@@ -33,3 +25,11 @@ export default class EventFeature extends AbstractFeature {
33
25
  getEventContractBuilder(): EventContractBuilder;
34
26
  hasBeenSynced(): boolean;
35
27
  }
28
+ declare module '../../features/features.types' {
29
+ interface FeatureMap {
30
+ event: EventFeature;
31
+ }
32
+ interface FeatureOptionsMap {
33
+ event: undefined;
34
+ }
35
+ }
@@ -36,6 +36,9 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
36
36
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dependencies", [{
37
37
  code: 'schema',
38
38
  isRequired: true
39
+ }, {
40
+ code: 'permission',
41
+ isRequired: true
39
42
  }]);
40
43
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "packageDependencies", [{
41
44
  name: '@sprucelabs/mercury-client'
@@ -68,7 +71,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
68
71
  case 0:
69
72
  _spruceSkillUtils.diskUtil.createDir(_spruceSkillUtils.diskUtil.resolvePath(this.cwd, 'src', 'events'));
70
73
  _context.next = 3;
71
- return this.featureInstaller.isInstalled('skill');
74
+ return this.features.isInstalled('skill');
72
75
  case 3:
73
76
  isSkillInstalled = _context.sent;
74
77
  if (!isSkillInstalled) {
@@ -114,7 +117,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
114
117
  settings.clearListenerCache();
115
118
  }
116
119
  _context2.next = 6;
117
- return this.featureInstaller.isInstalled('event');
120
+ return this.features.isInstalled('event');
118
121
  case 6:
119
122
  isInstalled = _context2.sent;
120
123
  isRemoteRelevant = isInstalled && (featureCode === 'event' || featureCode === 'eventContract' || actionCode === 'login') && actionCode !== 'setRemote';
@@ -179,7 +182,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
179
182
  case 0:
180
183
  featureCode = payload.featureCode, actionCode = payload.actionCode;
181
184
  _context4.next = 3;
182
- return this.featureInstaller.isInstalled('event');
185
+ return this.features.isInstalled('event');
183
186
  case 3:
184
187
  isInstalled = _context4.sent;
185
188
  results = {};
@@ -272,7 +275,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
272
275
  switch (_context6.prev = _context6.next) {
273
276
  case 0:
274
277
  _context6.next = 2;
275
- return this.featureInstaller.isInstalled(this.code);
278
+ return this.features.isInstalled(this.code);
276
279
  case 2:
277
280
  isInstalled = _context6.sent;
278
281
  lastSync = this.Service('eventSettings').getLastSyncOptions();
@@ -1 +1 @@
1
- {"version":3,"file":"EventFeature.js","names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","featureInstaller","isInstalled","isSkillInstalled","Action","execute","payload","featureCode","actionCode","results","initiatingAction","EventStore","clearCache","combined","combineCodes","settings","Service","clearListenerCache","isRemoteRelevant","appendRemoteToResultsOrPrompt","remoteResults","actionUtil","mergeActionResults","syncResults","isUpgrade","syncListenersAndMixinResults","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"sources":["../../../src/features/event/EventFeature.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport actionUtil from '../../utilities/action.utility'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\nimport EventStore from './stores/EventStore'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\tprivate initiatingAction?: string\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\t\tif (isSkillInstalled) {\n\t\t\treturn await this.Action('event', 'sync.listeners').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tif (!this.initiatingAction) {\n\t\t\tEventStore.clearCache()\n\t\t\tconst combined = this.combineCodes(featureCode, actionCode)\n\t\t\tthis.initiatingAction = combined\n\t\t}\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\t\tconst isRemoteRelevant =\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\n\t\tif (isRemoteRelevant) {\n\t\t\tconst remoteResults = await this.appendRemoteToResultsOrPrompt()\n\t\t\tresults = actionUtil.mergeActionResults(results, remoteResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async syncListenersAndMixinResults(results: FeatureActionResponse) {\n\t\tconst syncResults = await this.Action('event', 'sync.listeners').execute({})\n\t\tresults = actionUtil.mergeActionResults(results, syncResults)\n\t\treturn results\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tlet results = {}\n\n\t\tconst isUpgrade =\n\t\t\tisInstalled && featureCode === 'node' && actionCode === 'upgrade'\n\n\t\tif (isUpgrade) {\n\t\t\tresults = await this.Action('event', 'sync').execute({})\n\t\t\tresults = await this.syncListenersAndMixinResults(results)\n\t\t}\n\n\t\tif (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {\n\t\t\tEventStore.clearCache()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate combineCodes(featureCode: string, actionCode: string) {\n\t\treturn `${featureCode}.${actionCode}`\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EventFeature.js","names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","features","isInstalled","isSkillInstalled","Action","execute","payload","featureCode","actionCode","results","initiatingAction","EventStore","clearCache","combined","combineCodes","settings","Service","clearListenerCache","isRemoteRelevant","appendRemoteToResultsOrPrompt","remoteResults","actionUtil","mergeActionResults","syncResults","isUpgrade","syncListenersAndMixinResults","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"sources":["../../../src/features/event/EventFeature.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport actionUtil from '../../utilities/action.utility'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\nimport EventStore from './stores/EventStore'\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t\t{ code: 'permission', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\tprivate initiatingAction?: string\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\t\tif (isSkillInstalled) {\n\t\t\treturn await this.Action('event', 'sync.listeners').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tif (!this.initiatingAction) {\n\t\t\tEventStore.clearCache()\n\t\t\tconst combined = this.combineCodes(featureCode, actionCode)\n\t\t\tthis.initiatingAction = combined\n\t\t}\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tconst isInstalled = await this.features.isInstalled('event')\n\t\tconst isRemoteRelevant =\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\n\t\tif (isRemoteRelevant) {\n\t\t\tconst remoteResults = await this.appendRemoteToResultsOrPrompt()\n\t\t\tresults = actionUtil.mergeActionResults(results, remoteResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async syncListenersAndMixinResults(results: FeatureActionResponse) {\n\t\tconst syncResults = await this.Action('event', 'sync.listeners').execute({})\n\t\tresults = actionUtil.mergeActionResults(results, syncResults)\n\t\treturn results\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.features.isInstalled('event')\n\n\t\tlet results = {}\n\n\t\tconst isUpgrade =\n\t\t\tisInstalled && featureCode === 'node' && actionCode === 'upgrade'\n\n\t\tif (isUpgrade) {\n\t\t\tresults = await this.Action('event', 'sync').execute({})\n\t\t\tresults = await this.syncListenersAndMixinResults(results)\n\t\t}\n\n\t\tif (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {\n\t\t\tEventStore.clearCache()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate combineCodes(featureCode: string, actionCode: string) {\n\t\treturn `${featureCode}.${actionCode}`\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.features.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AACA;AACA;AACA;AAEA;AACA;AAKA;AACA;AAA4C;AAAA;AAAA,IAEvBA,YAAY;EAAA;EAAA;EAgChC,sBAAmBC,OAAuB,EAAE;IAAA;IAAA;IAC3C,0BAAMA,OAAO;IAAC,yFAhCY,OAAO;IAAA,iGACZ,QAAQ;IAAA,gGACT,sCAAsC;IAAA,iGAChB,CAC1C;MAAEC,IAAI,EAAE,QAAQ;MAAEC,UAAU,EAAE;IAAK,CAAC,EACpC;MAAED,IAAI,EAAE,YAAY;MAAEC,UAAU,EAAE;IAAK,CAAC,CACxC;IAAA,wGAC4B,CAC5B;MACCC,IAAI,EAAE;IACP,CAAC,EACD;MACCA,IAAI,EAAE;IACP,CAAC,EACD;MACCA,IAAI,EAAE;IACP,CAAC,EACD;MACCA,IAAI,EAAE;IACP,CAAC,EACD;MACCA,IAAI,EAAE;IACP,CAAC,CACD;IAAA,+FAEmBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,qGAER,EAAE;IAAA;IAAA;IAOvD,KAAK,MAAKC,OAAO,CAACC,EAAE,CACnB,0BAA0B,EAC1B,MAAKC,qBAAqB,CAACC,IAAI,gDAAM,CACrC;IAED,KAAK,MAAKH,OAAO,CAACC,EAAE,CACnB,sBAAsB,EACtB,MAAKG,iBAAiB,CAACD,IAAI,gDAAM,CACjC;IAED,KAAK,MAAKH,OAAO,CAACC,EAAE,CACnB,qBAAqB,EACrB,MAAKI,gBAAgB,CAACF,IAAI,gDAAM,CAChC;IAAA;EACF;EAAC;IAAA;IAAA;MAAA,yGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBACCN,0BAAQ,CAACS,SAAS,CAACT,0BAAQ,CAACC,WAAW,CAAC,IAAI,CAACS,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAAA;gBAAA,OACpC,IAAI,CAACC,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;cAAA;gBAA3DC,gBAAgB;gBAAA,KAClBA,gBAAgB;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACN,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAA;cAAA;gBAAA,iCAGzD,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACT;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,uGAED,kBAAgCC,OAG/B;QAAA;QAAA;UAAA;YAAA;cAAA;gBACQC,WAAW,GAAiBD,OAAO,CAAnCC,WAAW,EAAEC,UAAU,GAAKF,OAAO,CAAtBE,UAAU;gBAE3BC,OAA8B,GAAG,CAAC,CAAC;gBAEvC,IAAI,CAAC,IAAI,CAACC,gBAAgB,EAAE;kBAC3BC,sBAAU,CAACC,UAAU,EAAE;kBACjBC,QAAQ,GAAG,IAAI,CAACC,YAAY,CAACP,WAAW,EAAEC,UAAU,CAAC;kBAC3D,IAAI,CAACE,gBAAgB,GAAGG,QAAQ;gBACjC;gBAEA,IAAIN,WAAW,KAAK,MAAM,IAAIA,WAAW,KAAK,SAAS,EAAE;kBAClDQ,QAAQ,GAAG,IAAI,CAACC,OAAO,CAAC,eAAe,CAAC;kBAC9CD,QAAQ,CAACE,kBAAkB,EAAE;gBAC9B;gBAAC;gBAAA,OAEyB,IAAI,CAAChB,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;cAAA;gBAAtDA,WAAW;gBACXgB,gBAAgB,GACrBhB,WAAW,KACVK,WAAW,KAAK,OAAO,IACvBA,WAAW,KAAK,eAAe,IAC/BC,UAAU,KAAK,OAAO,CAAC,IACxBA,UAAU,KAAK,WAAW;gBAAA,KAEvBU,gBAAgB;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACS,IAAI,CAACC,6BAA6B,EAAE;cAAA;gBAA1DC,aAAa;gBACnBX,OAAO,GAAGY,kBAAU,CAACC,kBAAkB,CAACb,OAAO,EAAEW,aAAa,CAAC;cAAA;gBAAA,kCAGzDX,OAAO;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACd;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,kHAED,kBAA2CA,OAA8B;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC9C,IAAI,CAACL,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAtEkB,WAAW;gBACjBd,OAAO,GAAGY,kBAAU,CAACC,kBAAkB,CAACb,OAAO,EAAEc,WAAW,CAAC;gBAAA,kCACtDd,OAAO;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACd;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,sGAED,kBAA+BH,OAG9B;QAAA;QAAA;UAAA;YAAA;cAAA;gBACQC,WAAW,GAAiBD,OAAO,CAAnCC,WAAW,EAAEC,UAAU,GAAKF,OAAO,CAAtBE,UAAU;gBAAA;gBAAA,OACL,IAAI,CAACP,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;cAAA;gBAAtDA,WAAW;gBAEbO,OAAO,GAAG,CAAC,CAAC;gBAEVe,SAAS,GACdtB,WAAW,IAAIK,WAAW,KAAK,MAAM,IAAIC,UAAU,KAAK,SAAS;gBAAA,KAE9DgB,SAAS;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACI,IAAI,CAACpB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAxDI,OAAO;gBAAA;gBAAA,OACS,IAAI,CAACgB,4BAA4B,CAAChB,OAAO,CAAC;cAAA;gBAA1DA,OAAO;cAAA;gBAGR,IAAI,IAAI,CAACC,gBAAgB,KAAK,IAAI,CAACI,YAAY,CAACP,WAAW,EAAEC,UAAU,CAAC,EAAE;kBACzEG,sBAAU,CAACC,UAAU,EAAE;gBACxB;gBAAC,kCAEMH,OAAO;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACd;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,sBAAqBF,WAAmB,EAAEC,UAAkB,EAAE;MAC7D,iBAAUD,WAAW,cAAIC,UAAU;IACpC;EAAC;IAAA;IAAA;MAAA,mHAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBACOkB,MAAM,GAAG,IAAI,CAACV,OAAO,CAAC,QAAQ,CAAC;gBAC/BW,CAAC,GAAGD,MAAM,CAACE,SAAS,EAAE;gBAAA,IAEvBD,CAAC;kBAAA;kBAAA;gBAAA;gBAAA,IACAE,6BAAiB,CAACC,gBAAgB,EAAE;kBAAA;kBAAA;gBAAA;gBAAA,MAClC,IAAIC,KAAK,qEAEd;cAAA;gBAGF,IAAI,CAACC,EAAE,CAACC,WAAW,EAAE;gBACrB,IAAI,CAACD,EAAE,CAACE,UAAU,8EAEjB;gBAAA;gBAAA,OAEqB,IAAI,CAAC9B,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAA7DI,OAAO;gBAAA,kCAENA,OAAO;cAAA;gBAAA,kCAEP;kBACN0B,YAAY,EAAE,mBAAYR,CAAC,mBAAaD,MAAM,CAACU,OAAO,EAAE;gBACzD,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,2GAED,kBAAoC9B,OAAsC;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC/C,IAAI,CAACL,QAAQ,CAACC,WAAW,CAAC,IAAI,CAACf,IAAI,CAAC;cAAA;gBAAxDe,WAAW;gBAEXmC,QAAQ,GAAG,IAAI,CAACrB,OAAO,CAAC,eAAe,CAAC,CAACsB,kBAAkB,EAAE;gBAAA,MAE/DD,QAAQ,IAAInC,WAAW;kBAAA;kBAAA;gBAAA;gBACpBqC,MAAM,GAAG,IAAI,CAACC,uBAAuB,EAAE;gBAAA;gBAAA,OAEjBD,MAAM,CAACE,sCAAsC,qBACxEnC,OAAO,CAACoC,OAAO,+DAAI,EAAE,EACrBL,QAAQ,CAACM,wBAAwB,CACjC;cAAA;gBAHKC,aAAa;gBAAA,kCAKZ;kBACNF,OAAO,2BAAEE,aAAa,CAACF,OAAO,yEAAI;gBACnC,CAAC;cAAA;gBAAA,kCAGK;kBACNA,OAAO,EAAE;gBACV,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,mCAAiC;MAChC,IAAI,CAAC,IAAI,CAACG,eAAe,EAAE;QAC1B,IAAI,CAACA,eAAe,GAAG,IAAIC,gCAAoB,CAAC;UAC/C9C,GAAG,EAAE,IAAI,CAACA,GAAG;UACb+C,aAAa,EAAEC,4BAAqB;UACpChB,EAAE,EAAE,IAAI,CAACA,EAAE;UACXiB,cAAc,EAAE,IAAI,CAACC,MAAM,CAAC,OAAO,CAAC;UACpCC,UAAU,EAAE,IAAI,CAACC,KAAK,CAAC,OAAO,CAAC;UAC/BC,UAAU,EAAE,IAAI,CAACD,KAAK,CAAC,OAAO,CAAC;UAC/BE,iBAAiB,EAAE,IAAI,CAACtC,OAAO,CAAC,YAAY;QAC7C,CAAC,CAAC;MACH;MAEA,OAAO,IAAI,CAAC6B,eAAe;IAC5B;EAAC;IAAA;IAAA,OAED,yBAAuB;MACtB,IAAIvD,0BAAQ,CAACiE,uBAAuB,CAAC,IAAI,CAACvD,GAAG,CAAC,EAAE;QAC/C,IAAMuC,MAAM,GAAG,IAAI,CAACW,MAAM,CAAC,OAAO,CAAC;QACnC,OAAOX,MAAM,CAACiB,8BAA8B,CAAC,IAAI,CAACxD,GAAG,CAAC;MACvD;MAEA,OAAO,KAAK;IACb;EAAC;EAAA;AAAA,EA1MwCyD,4BAAe;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreateAction.js","names":["optionsSchema","buildSchema","id","description","fields","nameReadable","namedTemplateItemSchema","isRequired","nameKebab","label","hint","nameCamel","isGlobal","type","version","isPrivate","syncEventActionSchema","CreateAction","options","validateAndNormalizeOptions","Store","loadCurrentSkill","skill","slug","errors","SpruceError","code","destinationDir","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","Writer","writeEvent","files","syncOptions","normalizeSchemaValues","shouldIncludePrivateFields","Action","execute","syncResponse","fqen","eventNameUtil","join","eventName","eventNamespace","actionUtil","mergeActionResults","meta","AbstractAction"],"sources":["../../../../src/features/event/actions/CreateAction.ts"],"sourcesContent":["import {\n\tbuildSchema,\n\tnormalizeSchemaValues,\n\tSchemaValues,\n} from '@sprucelabs/schema'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport namedTemplateItemSchema from '#spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'createEventAction',\n\tdescription:\n\t\t\"Create a new event and I'll register it with Mercury when you boot the skill!\",\n\tfields: {\n\t\tnameReadable: {\n\t\t\t...namedTemplateItemSchema.fields.nameReadable,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameKebab: {\n\t\t\t...namedTemplateItemSchema.fields.nameKebab,\n\t\t\tlabel: 'Event name',\n\t\t\thint: `kebab-case`,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameCamel: {\n\t\t\t...namedTemplateItemSchema.fields.nameCamel,\n\t\t\tisRequired: true,\n\t\t},\n\t\tisGlobal: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Is this a global event?',\n\t\t\thint: \"This will allow skills to listen without being installed at the same organization. You'll need permission to make this happen.\",\n\t\t},\n\t\tversion: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Version',\n\t\t\tisPrivate: true,\n\t\t},\n\t\t...syncEventActionSchema.fields,\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic invocationMessage = 'Creating a new event signature... 🜒'\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tlet { nameKebab, nameReadable, nameCamel, version, isGlobal } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tif (!skill.id || !skill.slug) {\n\t\t\treturn {\n\t\t\t\terrors: [new SpruceError({ code: 'SKILL_NOT_REGISTERED' })],\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst destinationDir = diskUtil.resolvePath(this.cwd, 'src', 'events')\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tdiskUtil.resolvePath(destinationDir, '**', '*')\n\t\t\t)\n\n\t\t\tconst files = await this.Writer('event').writeEvent(destinationDir, {\n\t\t\t\tnameKebab,\n\t\t\t\tnameCamel,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\tnameReadable,\n\t\t\t\tisGlobal,\n\t\t\t})\n\n\t\t\tconst syncOptions = normalizeSchemaValues(\n\t\t\t\tsyncEventActionSchema,\n\t\t\t\toptions,\n\t\t\t\t{\n\t\t\t\t\tshouldIncludePrivateFields: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tconst syncResponse = await this.Action('event', 'sync').execute(\n\t\t\t\tsyncOptions\n\t\t\t)\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName: nameKebab,\n\t\t\t\teventNamespace: skill.slug,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t})\n\n\t\t\treturn actionUtil.mergeActionResults(\n\t\t\t\t{ files, meta: { fqen } },\n\t\t\t\tsyncResponse\n\t\t\t)\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreateAction.js","names":["optionsSchema","buildSchema","id","description","fields","nameReadable","namedTemplateItemSchema","isRequired","nameKebab","label","hint","nameCamel","isGlobal","type","version","isPrivate","syncEventActionSchema","CreateAction","options","validateAndNormalizeOptions","Store","loadCurrentSkill","skill","slug","errors","SpruceError","code","destinationDir","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","Writer","writeEvent","files","syncOptions","normalizeSchemaValues","shouldIncludePrivateFields","Action","execute","syncResponse","fqen","eventNameUtil","join","eventName","eventNamespace","actionUtil","mergeActionResults","meta","AbstractAction"],"sources":["../../../../src/features/event/actions/CreateAction.ts"],"sourcesContent":["import {\n\tbuildSchema,\n\tnormalizeSchemaValues,\n\tSchemaValues,\n} from '@sprucelabs/schema'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport namedTemplateItemSchema from '#spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'createEventAction',\n\tdescription:\n\t\t\"Create a new event and I'll register it with Mercury when you boot the skill!\",\n\tfields: {\n\t\tnameReadable: {\n\t\t\t...namedTemplateItemSchema.fields.nameReadable,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameKebab: {\n\t\t\t...namedTemplateItemSchema.fields.nameKebab,\n\t\t\tlabel: 'Event name',\n\t\t\thint: `kebab-case`,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameCamel: {\n\t\t\t...namedTemplateItemSchema.fields.nameCamel,\n\t\t\tisRequired: true,\n\t\t},\n\t\tisGlobal: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Is this a global event?',\n\t\t\thint: \"This will allow skills to listen without being installed at the same organization. You'll need permission to make this happen.\",\n\t\t},\n\t\tversion: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Version',\n\t\t\tisPrivate: true,\n\t\t},\n\t\t...syncEventActionSchema.fields,\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic invocationMessage = 'Creating a new event signature... 🜒'\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tlet { nameKebab, nameReadable, nameCamel, version, isGlobal } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tif (!skill.id || !skill.slug) {\n\t\t\treturn {\n\t\t\t\terrors: [new SpruceError({ code: 'SKILL_NOT_REGISTERED' })],\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst destinationDir = diskUtil.resolvePath(this.cwd, 'src', 'events')\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tdiskUtil.resolvePath(destinationDir, '**', '*')\n\t\t\t)\n\n\t\t\tconst files = await this.Writer('event').writeEvent(destinationDir, {\n\t\t\t\tnameKebab,\n\t\t\t\tnameCamel,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\tnameReadable,\n\t\t\t\tisGlobal,\n\t\t\t})\n\n\t\t\tconst syncOptions = normalizeSchemaValues(\n\t\t\t\tsyncEventActionSchema,\n\t\t\t\toptions,\n\t\t\t\t{\n\t\t\t\t\tshouldIncludePrivateFields: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tconst syncResponse = await this.Action('event', 'sync').execute(\n\t\t\t\tsyncOptions\n\t\t\t)\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName: nameKebab,\n\t\t\t\teventNamespace: skill.slug,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t})\n\n\t\t\treturn actionUtil.mergeActionResults(\n\t\t\t\t{ files, meta: { fqen } },\n\t\t\t\tsyncResponse\n\t\t\t)\n\t\t} catch (err: any) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -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"}