@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
@@ -12,6 +12,7 @@ import * as SpruceSchema from '@sprucelabs/schema'
12
12
  import '@sprucelabs/spruce-event-utils'
13
13
  import { SkillViewControllerId } from '@sprucelabs/heartwood-view-controllers'
14
14
  import { BaseWidget } from '#spruce/../widgets/types/widgets.types'
15
+ import AbstractSpruceError from '@sprucelabs/error'
15
16
 
16
17
  declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schemas.types' {
17
18
 
@@ -921,58 +922,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
921
922
  }
922
923
 
923
924
 
924
- namespace SpruceSchemas.SpruceCli.v2020_07_22 {
925
-
926
-
927
- interface GeneratedFile {
928
-
929
-
930
- 'name': string
931
-
932
- 'path': string
933
-
934
- 'description'?: string| undefined | null
935
-
936
- 'action': ("skipped" | "generated" | "updated" | "deleted")
937
- }
938
-
939
- interface GeneratedFileSchema extends SpruceSchema.Schema {
940
- id: 'generatedFile',
941
- version: 'v2020_07_22',
942
- namespace: 'SpruceCli',
943
- name: '',
944
- fields: {
945
- /** . */
946
- 'name': {
947
- type: 'text',
948
- isRequired: true,
949
- options: undefined
950
- },
951
- /** . */
952
- 'path': {
953
- type: 'text',
954
- isRequired: true,
955
- options: undefined
956
- },
957
- /** . */
958
- 'description': {
959
- type: 'text',
960
- options: undefined
961
- },
962
- /** . */
963
- 'action': {
964
- type: 'select',
965
- isRequired: true,
966
- options: {choices: [{"label":"Skipped","value":"skipped"},{"label":"Generated","value":"generated"},{"label":"Updated","value":"updated"},{"label":"Deleted","value":"deleted"}],}
967
- },
968
- }
969
- }
970
-
971
- interface GeneratedFileEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.GeneratedFileSchema> {}
972
-
973
- }
974
-
975
-
976
925
  namespace SpruceSchemas.SpruceCli.v2020_07_22 {
977
926
 
978
927
 
@@ -2997,4 +2946,174 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
2997
2946
 
2998
2947
  }
2999
2948
 
2949
+
2950
+ namespace SpruceSchemas.SpruceCli.v2020_07_22 {
2951
+
2952
+
2953
+ interface NpmPackage {
2954
+
2955
+
2956
+ 'name': string
2957
+
2958
+ 'version'?: string| undefined | null
2959
+
2960
+ 'isDev'?: boolean| undefined | null
2961
+ }
2962
+
2963
+ interface NpmPackageSchema extends SpruceSchema.Schema {
2964
+ id: 'npmPackage',
2965
+ version: 'v2020_07_22',
2966
+ namespace: 'SpruceCli',
2967
+ name: '',
2968
+ fields: {
2969
+ /** . */
2970
+ 'name': {
2971
+ type: 'text',
2972
+ isRequired: true,
2973
+ options: undefined
2974
+ },
2975
+ /** . */
2976
+ 'version': {
2977
+ type: 'text',
2978
+ options: undefined
2979
+ },
2980
+ /** . */
2981
+ 'isDev': {
2982
+ type: 'boolean',
2983
+ options: undefined
2984
+ },
2985
+ }
2986
+ }
2987
+
2988
+ interface NpmPackageEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.NpmPackageSchema> {}
2989
+
2990
+ }
2991
+
2992
+
2993
+ namespace SpruceSchemas.SpruceCli.v2020_07_22 {
2994
+
2995
+
2996
+ interface GeneratedFile {
2997
+
2998
+
2999
+ 'name': string
3000
+
3001
+ 'path': string
3002
+
3003
+ 'description'?: string| undefined | null
3004
+
3005
+ 'action': ("skipped" | "generated" | "updated" | "deleted")
3006
+ }
3007
+
3008
+ interface GeneratedFileSchema extends SpruceSchema.Schema {
3009
+ id: 'generatedFile',
3010
+ version: 'v2020_07_22',
3011
+ namespace: 'SpruceCli',
3012
+ name: '',
3013
+ fields: {
3014
+ /** . */
3015
+ 'name': {
3016
+ type: 'text',
3017
+ isRequired: true,
3018
+ options: undefined
3019
+ },
3020
+ /** . */
3021
+ 'path': {
3022
+ type: 'text',
3023
+ isRequired: true,
3024
+ options: undefined
3025
+ },
3026
+ /** . */
3027
+ 'description': {
3028
+ type: 'text',
3029
+ options: undefined
3030
+ },
3031
+ /** . */
3032
+ 'action': {
3033
+ type: 'select',
3034
+ isRequired: true,
3035
+ options: {choices: [{"label":"Skipped","value":"skipped"},{"label":"Generated","value":"generated"},{"label":"Updated","value":"updated"},{"label":"Deleted","value":"deleted"}],}
3036
+ },
3037
+ }
3038
+ }
3039
+
3040
+ interface GeneratedFileEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.GeneratedFileSchema> {}
3041
+
3042
+ }
3043
+
3044
+
3045
+ namespace SpruceSchemas.SpruceCli.v2020_07_22 {
3046
+
3047
+
3048
+ interface ActionResponse {
3049
+
3050
+
3051
+ 'files'?: SpruceSchemas.SpruceCli.v2020_07_22.GeneratedFile[]| undefined | null
3052
+
3053
+ 'headline'?: string| undefined | null
3054
+
3055
+ 'hints'?: string[]| undefined | null
3056
+
3057
+ 'summaryLines'?: string[]| undefined | null
3058
+
3059
+ 'errors'?: (AbstractSpruceError<any>)[]| undefined | null
3060
+
3061
+ 'meta'?: (Record<string, any>)| undefined | null
3062
+
3063
+ 'packagesInstalled'?: SpruceSchemas.SpruceCli.v2020_07_22.NpmPackage[]| undefined | null
3064
+ }
3065
+
3066
+ interface ActionResponseSchema extends SpruceSchema.Schema {
3067
+ id: 'actionResponse',
3068
+ version: 'v2020_07_22',
3069
+ namespace: 'SpruceCli',
3070
+ name: 'Action response',
3071
+ fields: {
3072
+ /** . */
3073
+ 'files': {
3074
+ type: 'schema',
3075
+ isArray: true,
3076
+ options: {schema: SpruceSchemas.SpruceCli.v2020_07_22.GeneratedFileSchema,}
3077
+ },
3078
+ /** . */
3079
+ 'headline': {
3080
+ type: 'text',
3081
+ options: undefined
3082
+ },
3083
+ /** . */
3084
+ 'hints': {
3085
+ type: 'text',
3086
+ isArray: true,
3087
+ options: undefined
3088
+ },
3089
+ /** . */
3090
+ 'summaryLines': {
3091
+ type: 'text',
3092
+ isArray: true,
3093
+ options: undefined
3094
+ },
3095
+ /** . */
3096
+ 'errors': {
3097
+ type: 'raw',
3098
+ isArray: true,
3099
+ options: {valueType: `AbstractSpruceError<any>`,}
3100
+ },
3101
+ /** . */
3102
+ 'meta': {
3103
+ type: 'raw',
3104
+ options: {valueType: `Record<string, any>`,}
3105
+ },
3106
+ /** . */
3107
+ 'packagesInstalled': {
3108
+ type: 'schema',
3109
+ isArray: true,
3110
+ options: {schema: SpruceSchemas.SpruceCli.v2020_07_22.NpmPackageSchema,}
3111
+ },
3112
+ }
3113
+ }
3114
+
3115
+ interface ActionResponseEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.ActionResponseSchema> {}
3116
+
3117
+ }
3118
+
3000
3119
  }
@@ -0,0 +1,58 @@
1
+ import { SchemaRegistry } from '@sprucelabs/schema'
2
+ import { SpruceSchemas } from '../../schemas.types'
3
+
4
+ import generatedFileSchema_v2020_07_22 from '#spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema'
5
+ import npmPackageSchema_v2020_07_22 from '#spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema'
6
+
7
+ const actionResponseSchema: SpruceSchemas.SpruceCli.v2020_07_22.ActionResponseSchema = {
8
+ id: 'actionResponse',
9
+ version: 'v2020_07_22',
10
+ namespace: 'SpruceCli',
11
+ name: 'Action response',
12
+ fields: {
13
+ /** . */
14
+ 'files': {
15
+ type: 'schema',
16
+ isArray: true,
17
+ options: {schema: generatedFileSchema_v2020_07_22,}
18
+ },
19
+ /** . */
20
+ 'headline': {
21
+ type: 'text',
22
+ options: undefined
23
+ },
24
+ /** . */
25
+ 'hints': {
26
+ type: 'text',
27
+ isArray: true,
28
+ options: undefined
29
+ },
30
+ /** . */
31
+ 'summaryLines': {
32
+ type: 'text',
33
+ isArray: true,
34
+ options: undefined
35
+ },
36
+ /** . */
37
+ 'errors': {
38
+ type: 'raw',
39
+ isArray: true,
40
+ options: {valueType: `AbstractSpruceError<any>`,}
41
+ },
42
+ /** . */
43
+ 'meta': {
44
+ type: 'raw',
45
+ options: {valueType: `Record<string, any>`,}
46
+ },
47
+ /** . */
48
+ 'packagesInstalled': {
49
+ type: 'schema',
50
+ isArray: true,
51
+ options: {schema: npmPackageSchema_v2020_07_22,}
52
+ },
53
+ }
54
+ }
55
+
56
+ SchemaRegistry.getInstance().trackSchema(actionResponseSchema)
57
+
58
+ export default actionResponseSchema
@@ -0,0 +1,33 @@
1
+ import { SchemaRegistry } from '@sprucelabs/schema'
2
+ import { SpruceSchemas } from '../../schemas.types'
3
+
4
+
5
+
6
+ const npmPackageSchema: SpruceSchemas.SpruceCli.v2020_07_22.NpmPackageSchema = {
7
+ id: 'npmPackage',
8
+ version: 'v2020_07_22',
9
+ namespace: 'SpruceCli',
10
+ name: '',
11
+ fields: {
12
+ /** . */
13
+ 'name': {
14
+ type: 'text',
15
+ isRequired: true,
16
+ options: undefined
17
+ },
18
+ /** . */
19
+ 'version': {
20
+ type: 'text',
21
+ options: undefined
22
+ },
23
+ /** . */
24
+ 'isDev': {
25
+ type: 'boolean',
26
+ options: undefined
27
+ },
28
+ }
29
+ }
30
+
31
+ SchemaRegistry.getInstance().trackSchema(npmPackageSchema)
32
+
33
+ export default npmPackageSchema
@@ -7,7 +7,8 @@
7
7
  "schema",
8
8
  "error",
9
9
  "test",
10
- "event"
10
+ "event",
11
+ "permission"
11
12
  ],
12
13
  "events.lastSync": {
13
14
  "contractDestinationDir": "#spruce/events",
@@ -4,8 +4,8 @@ import {
4
4
  MercuryEventEmitter,
5
5
  } from '@sprucelabs/mercury-types'
6
6
  import { buildSchema } from '@sprucelabs/schema'
7
+ import actionResponseSchema from '#spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema'
7
8
  import watcherDidDetectChangesEmitPayloadSchema from '#spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema'
8
- import { actionResponseSchema } from './features/features.types'
9
9
 
10
10
  export const globalContract = buildEventContract({
11
11
  eventSignatures: {
@@ -97,12 +97,7 @@ export const globalContract = buildEventContract({
97
97
  },
98
98
  },
99
99
  }),
100
- responsePayloadSchema: buildSchema({
101
- id: 'willExecuteResponsePayload',
102
- fields: {
103
- ...actionResponseSchema.fields,
104
- },
105
- }),
100
+ responsePayloadSchema: actionResponseSchema,
106
101
  },
107
102
  'feature.did-execute': {
108
103
  emitPayloadSchema: buildSchema({
@@ -15,6 +15,8 @@ export default class TestingAConversationTest extends AbstractCliTest {
15
15
  protected static async shouldRunWithoutConversationShouldShutdownOnItsOwn() {
16
16
  await this.FeatureFixture().installCachedFeatures('conversation')
17
17
 
18
+ this.disablePermissionSyncing()
19
+
18
20
  const test = await this.Action('conversation', 'test').execute({
19
21
  shouldReturnImmediately: true,
20
22
  shouldRunSilently: true,
@@ -58,43 +60,6 @@ export default class TestingAConversationTest extends AbstractCliTest {
58
60
  } while (psResults.length > 0)
59
61
  }
60
62
 
61
- // @test.skip('No longer dies on stderr')
62
- // protected static async diesWithStandardError() {
63
- // const { conversation } = await this.installAndCreateConversation()
64
-
65
- // const topicFile = this.resolvePath(
66
- // 'src',
67
- // 'conversations',
68
- // 'knockKnockJoke.topic.ts'
69
- // )
70
-
71
- // const contents =
72
- // `process.stderr.write('oh no!')\n\n` + diskUtil.readFile(topicFile)
73
-
74
- // diskUtil.writeFile(topicFile, contents)
75
-
76
- // const test = await conversation
77
- // .Action('test')
78
- // .execute({ shouldRunSilently: true })
79
-
80
- // assert.isTruthy(test.errors)
81
- // errorAssert.assertError(test.errors[0], 'EXECUTING_COMMAND_FAILED', {
82
- // stderr: 'oh no!',
83
- // })
84
- // }
85
-
86
- private static async installAndCreateConversation() {
87
- await this.FeatureFixture().installCachedFeatures('conversation')
88
-
89
- const results = await this.Action('conversation', 'create').execute({
90
- nameReadable: 'tell a knock knock joke',
91
- nameCamel: 'knockKnockJoke',
92
- })
93
-
94
- assert.isFalsy(results.errors)
95
- return { createResults: results }
96
- }
97
-
98
63
  @test()
99
64
  protected static async doesntReturnErrorWhenKilled() {
100
65
  await this.installAndCreateConversation()
@@ -131,4 +96,22 @@ export default class TestingAConversationTest extends AbstractCliTest {
131
96
 
132
97
  assert.isArray(results.errors)
133
98
  }
99
+
100
+ private static async installAndCreateConversation() {
101
+ await this.FeatureFixture().installCachedFeatures('conversation')
102
+ this.disablePermissionSyncing()
103
+
104
+ const results = await this.Action('conversation', 'create').execute({
105
+ nameReadable: 'tell a knock knock joke',
106
+ nameCamel: 'knockKnockJoke',
107
+ })
108
+
109
+ assert.isFalsy(results.errors)
110
+ return { createResults: results }
111
+ }
112
+
113
+ private static disablePermissionSyncing() {
114
+ const env = this.Service('env')
115
+ env.set('SHOULD_REGISTER_PERMISSIONS', 'false')
116
+ }
134
117
  }
@@ -8,6 +8,7 @@ import testUtil from '../../../tests/utilities/test.utility'
8
8
 
9
9
  export default class GeneratingMercuryEventContractTest extends AbstractCliTest {
10
10
  private static cli: CliInterface
11
+
11
12
  protected static async beforeEach() {
12
13
  await super.beforeEach()
13
14
  this.cli = await this.Cli()
@@ -26,6 +27,7 @@ export default class GeneratingMercuryEventContractTest extends AbstractCliTest
26
27
 
27
28
  @test()
28
29
  protected static async generatesContractAtCwd() {
30
+ await this.FeatureFixture().installCachedFeatures('events')
29
31
  const results = await this.Action('eventContract', 'pull').execute({})
30
32
  assert.isFalsy(results.errors)
31
33
 
@@ -51,6 +53,7 @@ export default class GeneratingMercuryEventContractTest extends AbstractCliTest
51
53
 
52
54
  @test()
53
55
  protected static async generatesAtDestination() {
56
+ await this.FeatureFixture().installCachedFeatures('events')
54
57
  const results = await this.Action('eventContract', 'pull').execute({
55
58
  destination: './src/tests',
56
59
  })
@@ -109,7 +112,16 @@ export default class GeneratingMercuryEventContractTest extends AbstractCliTest
109
112
  protected static async contractHasTypes() {
110
113
  this.cli = await this.FeatureFixture().installCachedFeatures('node')
111
114
 
112
- const results = await this.Action('eventContract', 'pull').execute({})
115
+ const promise = this.Action('eventContract', 'pull', {
116
+ shouldAutoHandleDependencies: true,
117
+ }).execute({})
118
+
119
+ await this.waitForInput()
120
+ await this.ui.sendInput('Y')
121
+ await this.waitForInput()
122
+ await this.ui.sendInput('\n')
123
+
124
+ const results = await promise
113
125
 
114
126
  const match = testUtil.assertFileByNameInGeneratedFiles(
115
127
  'events.contract.ts',
@@ -128,6 +140,7 @@ export default class GeneratingMercuryEventContractTest extends AbstractCliTest
128
140
 
129
141
  @test()
130
142
  protected static async generatingASecondTimeReportsAnUpdate() {
143
+ this.cli = await this.FeatureFixture().installCachedFeatures('events')
131
144
  await this.Action('eventContract', 'pull').execute({})
132
145
 
133
146
  const results = await this.Action('eventContract', 'pull').execute({})
@@ -145,7 +158,6 @@ export default class GeneratingMercuryEventContractTest extends AbstractCliTest
145
158
 
146
159
  private static async installSkillAndPullContracts() {
147
160
  this.cli = await this.FeatureFixture().installCachedFeatures('events')
148
-
149
161
  return await this.pullContracts()
150
162
  }
151
163
 
@@ -30,6 +30,7 @@ export default class SkillEmitsBootEventsTest extends AbstractEventTest {
30
30
  @test()
31
31
  protected static async skillEmitsDidBootEventsThatErrorAfterBoot() {
32
32
  await this.installEventFeature('events')
33
+ this.disablePermissionSyncing()
33
34
  const version = 'v2020_01_01'
34
35
 
35
36
  await this.Action('event', 'listen').execute({
@@ -44,4 +45,9 @@ export default class SkillEmitsBootEventsTest extends AbstractEventTest {
44
45
  const err = await assert.doesThrowAsync(() => response.meta?.promise)
45
46
  errorAssert.assertError(err, 'LISTENER_NOT_IMPLEMENTED')
46
47
  }
48
+
49
+ private static disablePermissionSyncing() {
50
+ const env = this.Service('env')
51
+ env.set('SHOULD_REGISTER_PERMISSIONS', 'false')
52
+ }
47
53
  }
@@ -1,7 +1,7 @@
1
1
  import { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'
2
2
  import { test, assert } from '@sprucelabs/test-utils'
3
3
  import testUtil from '../../../tests/utilities/test.utility'
4
- import AbstractPermissionsTest from './AbstractPermissionsTest'
4
+ import AbstractPermissionsTest from './support/AbstractPermissionsTest'
5
5
 
6
6
  export default class CreatingPermissionsTest extends AbstractPermissionsTest {
7
7
  @test('can create permission contract named booking', 'booking')
@@ -16,7 +16,7 @@ export default class CreatingPermissionsTest extends AbstractPermissionsTest {
16
16
  }
17
17
 
18
18
  @test()
19
- protected static async rendersExpectedTemplate() {
19
+ protected static async generatesExpectedPermissionContract() {
20
20
  const { contractPath } = await this.executeAndGetContract()
21
21
  const contents = diskUtil.readFile(contractPath)
22
22
  assert.doesInclude(
@@ -0,0 +1,24 @@
1
+ import { diskUtil } from '@sprucelabs/spruce-skill-utils'
2
+ import { assert, test } from '@sprucelabs/test-utils'
3
+ import AbstractPermissionsTest from './support/AbstractPermissionsTest'
4
+
5
+ export default class PermissionPluginTest extends AbstractPermissionsTest {
6
+ @test()
7
+ protected static async createsPluginWithExpectedContent() {
8
+ const expected = this.getPluginPath()
9
+ await this.assertFilePassesTypeChecks(expected)
10
+ }
11
+
12
+ @test()
13
+ protected static async pluginIsExpectedContent() {
14
+ const content = diskUtil.readFile(this.getPluginPath())
15
+ assert.isEqual(
16
+ content.trim(),
17
+ `export { plugin as default } from '@sprucelabs/spruce-permission-plugin'`
18
+ )
19
+ }
20
+
21
+ private static getPluginPath() {
22
+ return this.resolveHashSprucePath('features', 'permission.plugin.ts')
23
+ }
24
+ }