@sprucelabs/spruce-cli 14.26.19 → 14.28.2

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 (418) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/build/.spruce/errors/errors.types.d.ts +19 -0
  3. package/build/.spruce/errors/options.types.d.ts +4 -1
  4. package/build/.spruce/errors/spruceCli/dependencyExists.schema.d.ts +3 -0
  5. package/build/.spruce/errors/spruceCli/dependencyExists.schema.js +28 -0
  6. package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -0
  7. package/build/.spruce/events/events.contract.d.ts +4 -621
  8. package/build/.spruce/events/events.contract.js +1 -35
  9. package/build/.spruce/events/events.contract.js.map +1 -1
  10. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.d.ts +0 -15
  11. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js +2 -17
  12. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
  13. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.d.ts +4 -21
  14. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js +7 -24
  15. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
  16. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.d.ts +1 -24
  17. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js +5 -28
  18. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
  19. package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.d.ts +12 -0
  20. package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js +13 -1
  21. package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js.map +1 -1
  22. package/build/.spruce/schemas/schemas.types.d.ts +54 -1142
  23. package/build/.spruce/schemas/schemas.types.js.map +1 -1
  24. package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js +1 -1
  25. package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js.map +1 -1
  26. package/build/.spruce/settings.json +6 -0
  27. package/build/__tests__/behavioral/AddingADependency.test.d.ts +6 -3
  28. package/build/__tests__/behavioral/AddingADependency.test.js +116 -44
  29. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
  30. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +2 -2
  31. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  32. package/build/__tests__/behavioral/LoggingInAsASkill.test.js +4 -4
  33. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
  34. package/build/__tests__/behavioral/ManagingDependencies.test.js +3 -3
  35. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
  36. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +1 -1
  37. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  38. package/build/__tests__/behavioral/SettingRemote.test.js +1 -1
  39. package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
  40. package/build/__tests__/behavioral/SettingUpVscode.test.js +3 -3
  41. package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
  42. package/build/__tests__/behavioral/TestingDataStores.test.js +2 -2
  43. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  44. package/build/__tests__/behavioral/UpgradingANodeModule.test.d.ts +1 -0
  45. package/build/__tests__/behavioral/UpgradingANodeModule.test.js +50 -3
  46. package/build/__tests__/behavioral/UpgradingANodeModule.test.js.map +1 -1
  47. package/build/__tests__/behavioral/events/CreatingAListener.test.js +8 -8
  48. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  49. package/build/__tests__/behavioral/events/CreatingAnEvent.test.d.ts +3 -2
  50. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +156 -106
  51. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  52. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +6 -9
  53. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  54. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +2 -2
  55. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  56. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js +7 -4
  57. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
  58. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +7 -7
  59. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
  60. package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js +2 -2
  61. package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js.map +1 -1
  62. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +1 -1
  63. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  64. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +3 -3
  65. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  66. package/build/__tests__/behavioral/views/TestingViewControllers.test.js +2 -2
  67. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  68. package/build/__tests__/implementation/ActionExecuter2.test.js +3 -3
  69. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  70. package/build/errors/SpruceError.js +4 -0
  71. package/build/errors/SpruceError.js.map +1 -1
  72. package/build/errors/dependencyExists.builder.d.ts +11 -0
  73. package/build/errors/dependencyExists.builder.js +22 -0
  74. package/build/errors/dependencyExists.builder.js.map +1 -0
  75. package/build/features/AbstractAction.js +1 -1
  76. package/build/features/AbstractAction.js.map +1 -1
  77. package/build/features/dependencies/actions/AddAction.js +22 -15
  78. package/build/features/dependencies/actions/AddAction.js.map +1 -1
  79. package/build/features/event/actions/CreateAction.js +1 -1
  80. package/build/features/event/actions/CreateAction.js.map +1 -1
  81. package/build/features/event/actions/ListenAction.js +66 -54
  82. package/build/features/event/actions/ListenAction.js.map +1 -1
  83. package/build/features/event/stores/EventStore.js +24 -13
  84. package/build/features/event/stores/EventStore.js.map +1 -1
  85. package/build/features/node/NodeFeature.d.ts +1 -0
  86. package/build/features/node/NodeFeature.js +83 -64
  87. package/build/features/node/NodeFeature.js.map +1 -1
  88. package/build/features/node/actions/UpgradeAction.js +20 -9
  89. package/build/features/node/actions/UpgradeAction.js.map +1 -1
  90. package/build/features/node/writers/NodeWriter.d.ts +5 -2
  91. package/build/features/node/writers/NodeWriter.js +37 -22
  92. package/build/features/node/writers/NodeWriter.js.map +1 -1
  93. package/build/features/sandbox/actions/SetupAction.js +1 -1
  94. package/build/features/sandbox/actions/SetupAction.js.map +1 -1
  95. package/build/features/skill/updaters/Updater.js +3 -1
  96. package/build/features/skill/updaters/Updater.js.map +1 -1
  97. package/build/interfaces/SpyInterface.d.ts +1 -1
  98. package/build/interfaces/SpyInterface.js +2 -2
  99. package/build/interfaces/SpyInterface.js.map +1 -1
  100. package/build/schemas/v2020_07_22/listenEventOptions.builder.d.ts +1 -1
  101. package/build/schemas/v2020_07_22/listenEventOptions.builder.js +1 -1
  102. package/build/schemas/v2020_07_22/listenEventOptions.builder.js.map +1 -1
  103. package/build/services/DependencyService.d.ts +1 -0
  104. package/build/services/DependencyService.js +18 -0
  105. package/build/services/DependencyService.js.map +1 -1
  106. package/build/tests/AbstractCliTest.js +1 -1
  107. package/build/tests/AbstractCliTest.js.map +1 -1
  108. package/build/tests/utilities/uiAssert.utility.d.ts +7 -0
  109. package/build/tests/utilities/uiAssert.utility.js +85 -0
  110. package/build/tests/utilities/uiAssert.utility.js.map +1 -0
  111. package/build/writers/AbstractWriter.d.ts +10 -10
  112. package/build/writers/AbstractWriter.js.map +1 -1
  113. package/package.json +33 -31
  114. package/src/.spruce/errors/errors.types.ts +29 -0
  115. package/src/.spruce/errors/options.types.ts +4 -1
  116. package/src/.spruce/errors/spruceCli/dependencyExists.schema.ts +22 -0
  117. package/src/.spruce/events/events.contract.ts +0 -102
  118. package/src/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.ts +0 -15
  119. package/src/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.ts +4 -21
  120. package/src/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.ts +1 -24
  121. package/src/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.ts +15 -0
  122. package/src/.spruce/schemas/schemas.types.ts +59 -1413
  123. package/src/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.ts +1 -1
  124. package/src/.spruce/settings.json +6 -0
  125. package/src/__tests__/behavioral/AddingADependency.test.ts +45 -8
  126. package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +3 -3
  127. package/src/__tests__/behavioral/LoggingInAsASkill.test.ts +4 -4
  128. package/src/__tests__/behavioral/ManagingDependencies.test.ts +3 -3
  129. package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
  130. package/src/__tests__/behavioral/SettingRemote.test.ts +1 -1
  131. package/src/__tests__/behavioral/SettingUpVscode.test.ts +3 -3
  132. package/src/__tests__/behavioral/TestingDataStores.test.ts +2 -2
  133. package/src/__tests__/behavioral/UpgradingANodeModule.test.ts +24 -0
  134. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +8 -8
  135. package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +44 -22
  136. package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +1 -1
  137. package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +2 -2
  138. package/src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts +2 -0
  139. package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +7 -7
  140. package/src/__tests__/behavioral/skill/UpgradingASkill3.test.ts +2 -2
  141. package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +1 -1
  142. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +3 -3
  143. package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +2 -2
  144. package/src/__tests__/implementation/ActionExecuter2.test.ts +3 -3
  145. package/src/errors/SpruceError.ts +4 -0
  146. package/src/errors/dependencyExists.builder.ts +12 -0
  147. package/src/features/AbstractAction.ts +1 -4
  148. package/src/features/dependencies/actions/AddAction.ts +12 -5
  149. package/src/features/event/actions/CreateAction.ts +4 -1
  150. package/src/features/event/actions/ListenAction.ts +30 -20
  151. package/src/features/event/stores/EventStore.ts +7 -1
  152. package/src/features/node/NodeFeature.ts +31 -25
  153. package/src/features/node/actions/UpgradeAction.ts +8 -1
  154. package/src/features/node/writers/NodeWriter.ts +38 -23
  155. package/src/features/sandbox/actions/SetupAction.ts +1 -1
  156. package/src/features/skill/updaters/Updater.ts +2 -1
  157. package/src/interfaces/SpyInterface.ts +1 -1
  158. package/src/schemas/v2020_07_22/listenEventOptions.builder.ts +1 -1
  159. package/src/services/DependencyService.ts +14 -0
  160. package/src/tests/AbstractCliTest.ts +1 -1
  161. package/src/tests/utilities/uiAssert.utility.ts +45 -0
  162. package/src/writers/AbstractWriter.ts +15 -10
  163. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.d.ts +0 -10
  164. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js +0 -24
  165. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js.map +0 -1
  166. package/build/.spruce/events/calendar/createCalendarEventType.v2021_05_19.contract.d.ts +0 -11
  167. package/build/.spruce/events/calendar/createCalendarEventType.v2021_05_19.contract.js +0 -27
  168. package/build/.spruce/events/calendar/createCalendarEventType.v2021_05_19.contract.js.map +0 -1
  169. package/build/.spruce/events/calendar/listCalendarEventTypes.v2021_05_19.contract.d.ts +0 -10
  170. package/build/.spruce/events/calendar/listCalendarEventTypes.v2021_05_19.contract.js +0 -24
  171. package/build/.spruce/events/calendar/listCalendarEventTypes.v2021_05_19.contract.js.map +0 -1
  172. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.d.ts +0 -46
  173. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js +0 -62
  174. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js.map +0 -1
  175. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.d.ts +0 -46
  176. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js +0 -62
  177. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js.map +0 -1
  178. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.d.ts +0 -46
  179. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js +0 -62
  180. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js.map +0 -1
  181. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.d.ts +0 -46
  182. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js +0 -62
  183. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js.map +0 -1
  184. package/build/.spruce/events/forms/didUpdateCompletedForm.v2021_07_02.contract.d.ts +0 -10
  185. package/build/.spruce/events/forms/didUpdateCompletedForm.v2021_07_02.contract.js +0 -24
  186. package/build/.spruce/events/forms/didUpdateCompletedForm.v2021_07_02.contract.js.map +0 -1
  187. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.d.ts +0 -40
  188. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js +0 -56
  189. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js.map +0 -1
  190. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.d.ts +0 -45
  191. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js +0 -59
  192. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js.map +0 -1
  193. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.d.ts +0 -80
  194. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js +0 -94
  195. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js.map +0 -1
  196. package/build/.spruce/events/forms/updateCompletedForm.v2021_07_02.contract.d.ts +0 -11
  197. package/build/.spruce/events/forms/updateCompletedForm.v2021_07_02.contract.js +0 -27
  198. package/build/.spruce/events/forms/updateCompletedForm.v2021_07_02.contract.js.map +0 -1
  199. package/build/.spruce/events/mySkill163362874854325100/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
  200. package/build/.spruce/events/mySkill163362874854325100/myCoolEvent.v2021_01_22.contract.js +0 -48
  201. package/build/.spruce/events/mySkill163362874854325100/myCoolEvent.v2021_01_22.contract.js.map +0 -1
  202. package/build/.spruce/events/mySkill163362882591525586/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
  203. package/build/.spruce/events/mySkill163362882591525586/myCoolEvent.v2021_01_22.contract.js +0 -48
  204. package/build/.spruce/events/mySkill163362882591525586/myCoolEvent.v2021_01_22.contract.js.map +0 -1
  205. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
  206. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js +0 -48
  207. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js.map +0 -1
  208. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
  209. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js +0 -48
  210. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js.map +0 -1
  211. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
  212. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js +0 -48
  213. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js.map +0 -1
  214. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.d.ts +0 -3
  215. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js +0 -28
  216. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js.map +0 -1
  217. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.d.ts +0 -3
  218. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js +0 -36
  219. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js.map +0 -1
  220. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.d.ts +0 -3
  221. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js +0 -28
  222. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js.map +0 -1
  223. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.d.ts +0 -3
  224. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js +0 -56
  225. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js.map +0 -1
  226. package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitPayload.schema.d.ts +0 -3
  227. package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitPayload.schema.js +0 -36
  228. package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitPayload.schema.js.map +0 -1
  229. package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema.d.ts +0 -3
  230. package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema.js +0 -46
  231. package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema.js.map +0 -1
  232. package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema.d.ts +0 -3
  233. package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema.js +0 -35
  234. package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema.js.map +0 -1
  235. package/build/.spruce/schemas/calendar/v2021_05_19/fullCalendarEventType.schema.d.ts +0 -3
  236. package/build/.spruce/schemas/calendar/v2021_05_19/fullCalendarEventType.schema.js +0 -54
  237. package/build/.spruce/schemas/calendar/v2021_05_19/fullCalendarEventType.schema.js.map +0 -1
  238. package/build/.spruce/schemas/calendar/v2021_05_19/listCalendarEventTypesResponsePayload.schema.d.ts +0 -3
  239. package/build/.spruce/schemas/calendar/v2021_05_19/listCalendarEventTypesResponsePayload.schema.js +0 -37
  240. package/build/.spruce/schemas/calendar/v2021_05_19/listCalendarEventTypesResponsePayload.schema.js.map +0 -1
  241. package/build/.spruce/schemas/forms/v2021_07_02/builtForm.schema.d.ts +0 -3
  242. package/build/.spruce/schemas/forms/v2021_07_02/builtForm.schema.js +0 -66
  243. package/build/.spruce/schemas/forms/v2021_07_02/builtForm.schema.js.map +0 -1
  244. package/build/.spruce/schemas/forms/v2021_07_02/completedFormResponse.schema.d.ts +0 -3
  245. package/build/.spruce/schemas/forms/v2021_07_02/completedFormResponse.schema.js +0 -50
  246. package/build/.spruce/schemas/forms/v2021_07_02/completedFormResponse.schema.js.map +0 -1
  247. package/build/.spruce/schemas/forms/v2021_07_02/completedFormSourceForm.schema.d.ts +0 -3
  248. package/build/.spruce/schemas/forms/v2021_07_02/completedFormSourceForm.schema.js +0 -59
  249. package/build/.spruce/schemas/forms/v2021_07_02/completedFormSourceForm.schema.js.map +0 -1
  250. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitPayload.schema.d.ts +0 -3
  251. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitPayload.schema.js +0 -30
  252. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitPayload.schema.js.map +0 -1
  253. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitTargetAndPayload.schema.d.ts +0 -3
  254. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitTargetAndPayload.schema.js +0 -46
  255. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitTargetAndPayload.schema.js.map +0 -1
  256. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormResponsePayload.schema.d.ts +0 -3
  257. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormResponsePayload.schema.js +0 -34
  258. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormResponsePayload.schema.js.map +0 -1
  259. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitPayload.schema.d.ts +0 -3
  260. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitPayload.schema.js +0 -30
  261. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitPayload.schema.js.map +0 -1
  262. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitTargetAndPayload.schema.d.ts +0 -3
  263. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitTargetAndPayload.schema.js +0 -46
  264. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitTargetAndPayload.schema.js.map +0 -1
  265. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasResponsePayload.schema.d.ts +0 -3
  266. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasResponsePayload.schema.js +0 -33
  267. package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasResponsePayload.schema.js.map +0 -1
  268. package/build/.spruce/schemas/forms/v2021_07_02/createBuiltForm.schema.d.ts +0 -3
  269. package/build/.spruce/schemas/forms/v2021_07_02/createBuiltForm.schema.js +0 -52
  270. package/build/.spruce/schemas/forms/v2021_07_02/createBuiltForm.schema.js.map +0 -1
  271. package/build/.spruce/schemas/forms/v2021_07_02/createFormEmitTargetAndPayload.schema.d.ts +0 -3
  272. package/build/.spruce/schemas/forms/v2021_07_02/createFormEmitTargetAndPayload.schema.js +0 -46
  273. package/build/.spruce/schemas/forms/v2021_07_02/createFormEmitTargetAndPayload.schema.js.map +0 -1
  274. package/build/.spruce/schemas/forms/v2021_07_02/createFormResponsePayload.schema.d.ts +0 -3
  275. package/build/.spruce/schemas/forms/v2021_07_02/createFormResponsePayload.schema.js +0 -44
  276. package/build/.spruce/schemas/forms/v2021_07_02/createFormResponsePayload.schema.js.map +0 -1
  277. package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTarget.schema.d.ts +0 -3
  278. package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTarget.schema.js +0 -29
  279. package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTarget.schema.js.map +0 -1
  280. package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTargetAndPayload.schema.d.ts +0 -3
  281. package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTargetAndPayload.schema.js +0 -46
  282. package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTargetAndPayload.schema.js.map +0 -1
  283. package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormResponsePayload.schema.d.ts +0 -3
  284. package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormResponsePayload.schema.js +0 -29
  285. package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormResponsePayload.schema.js.map +0 -1
  286. package/build/.spruce/schemas/forms/v2021_07_02/didSaveFormEmitPayload.schema.d.ts +0 -3
  287. package/build/.spruce/schemas/forms/v2021_07_02/didSaveFormEmitPayload.schema.js +0 -29
  288. package/build/.spruce/schemas/forms/v2021_07_02/didSaveFormEmitPayload.schema.js.map +0 -1
  289. package/build/.spruce/schemas/forms/v2021_07_02/didUpdateCompletedFormEmitTargetAndPayload.schema.d.ts +0 -3
  290. package/build/.spruce/schemas/forms/v2021_07_02/didUpdateCompletedFormEmitTargetAndPayload.schema.js +0 -46
  291. package/build/.spruce/schemas/forms/v2021_07_02/didUpdateCompletedFormEmitTargetAndPayload.schema.js.map +0 -1
  292. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTarget.schema.d.ts +0 -3
  293. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTarget.schema.js +0 -29
  294. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTarget.schema.js.map +0 -1
  295. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTargetAndPayload.schema.d.ts +0 -3
  296. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTargetAndPayload.schema.js +0 -46
  297. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTargetAndPayload.schema.js.map +0 -1
  298. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEventForm.schema.d.ts +0 -3
  299. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEventForm.schema.js +0 -78
  300. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEventForm.schema.js.map +0 -1
  301. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormResponsePayload.schema.d.ts +0 -3
  302. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormResponsePayload.schema.js +0 -35
  303. package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormResponsePayload.schema.js.map +0 -1
  304. package/build/.spruce/schemas/forms/v2021_07_02/listCompletedFormsResponsePayload.schema.d.ts +0 -3
  305. package/build/.spruce/schemas/forms/v2021_07_02/listCompletedFormsResponsePayload.schema.js +0 -37
  306. package/build/.spruce/schemas/forms/v2021_07_02/listCompletedFormsResponsePayload.schema.js.map +0 -1
  307. package/build/.spruce/schemas/forms/v2021_07_02/listFormsForm.schema.d.ts +0 -3
  308. package/build/.spruce/schemas/forms/v2021_07_02/listFormsForm.schema.js +0 -51
  309. package/build/.spruce/schemas/forms/v2021_07_02/listFormsForm.schema.js.map +0 -1
  310. package/build/.spruce/schemas/forms/v2021_07_02/listFormsResponsePayload.schema.d.ts +0 -3
  311. package/build/.spruce/schemas/forms/v2021_07_02/listFormsResponsePayload.schema.js +0 -37
  312. package/build/.spruce/schemas/forms/v2021_07_02/listFormsResponsePayload.schema.js.map +0 -1
  313. package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitPayload.schema.d.ts +0 -3
  314. package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitPayload.schema.js +0 -38
  315. package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitPayload.schema.js.map +0 -1
  316. package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitTargetAndPayload.schema.d.ts +0 -3
  317. package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitTargetAndPayload.schema.js +0 -46
  318. package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitTargetAndPayload.schema.js.map +0 -1
  319. package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormResponsePayload.schema.d.ts +0 -3
  320. package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormResponsePayload.schema.js +0 -29
  321. package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormResponsePayload.schema.js.map +0 -1
  322. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/builderImportExportPage.schema.d.ts +0 -1
  323. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/builderImportExportPage.schema.js +0 -14
  324. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/builderImportExportPage.schema.js.map +0 -1
  325. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formBuilderImportExportObject.schema.d.ts +0 -1
  326. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formBuilderImportExportObject.schema.js +0 -14
  327. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formBuilderImportExportObject.schema.js.map +0 -1
  328. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formSection.schema.d.ts +0 -1
  329. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formSection.schema.js +0 -14
  330. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formSection.schema.js.map +0 -1
  331. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/list.schema.d.ts +0 -1
  332. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/list.schema.js +0 -14
  333. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/list.schema.js.map +0 -1
  334. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCell.schema.d.ts +0 -1
  335. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCell.schema.js +0 -14
  336. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCell.schema.js.map +0 -1
  337. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCellButton.schema.d.ts +0 -1
  338. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCellButton.schema.js +0 -14
  339. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCellButton.schema.js.map +0 -1
  340. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listRow.schema.d.ts +0 -1
  341. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listRow.schema.js +0 -14
  342. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listRow.schema.js.map +0 -1
  343. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listSelectInput.schema.d.ts +0 -1
  344. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listSelectInput.schema.js +0 -14
  345. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listSelectInput.schema.js.map +0 -1
  346. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listTextInput.schema.d.ts +0 -1
  347. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listTextInput.schema.js +0 -14
  348. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listTextInput.schema.js.map +0 -1
  349. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/selectInputChoice.schema.d.ts +0 -1
  350. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/selectInputChoice.schema.js +0 -14
  351. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/selectInputChoice.schema.js.map +0 -1
  352. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/text.schema.d.ts +0 -1
  353. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/text.schema.js +0 -14
  354. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/text.schema.js.map +0 -1
  355. package/src/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.ts +0 -15
  356. package/src/.spruce/events/calendar/createCalendarEventType.v2021_05_19.contract.ts +0 -17
  357. package/src/.spruce/events/calendar/listCalendarEventTypes.v2021_05_19.contract.ts +0 -16
  358. package/src/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.ts +0 -54
  359. package/src/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.ts +0 -55
  360. package/src/.spruce/events/forms/createForm.v2021_07_02.contract.ts +0 -54
  361. package/src/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.ts +0 -55
  362. package/src/.spruce/events/forms/didUpdateCompletedForm.v2021_07_02.contract.ts +0 -15
  363. package/src/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.ts +0 -48
  364. package/src/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.ts +0 -54
  365. package/src/.spruce/events/forms/listForms.v2021_07_02.contract.ts +0 -90
  366. package/src/.spruce/events/forms/updateCompletedForm.v2021_07_02.contract.ts +0 -17
  367. package/src/.spruce/events/mySkill163362874854325100/myCoolEvent.v2021_01_22.contract.ts +0 -45
  368. package/src/.spruce/events/mySkill163362882591525586/myCoolEvent.v2021_01_22.contract.ts +0 -45
  369. package/src/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.ts +0 -45
  370. package/src/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.ts +0 -45
  371. package/src/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.ts +0 -45
  372. package/src/.spruce/schemas/appointments/v2021_06_23/appointments.schema.ts +0 -22
  373. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.ts +0 -24
  374. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.ts +0 -22
  375. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.ts +0 -36
  376. package/src/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitPayload.schema.ts +0 -29
  377. package/src/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema.ts +0 -30
  378. package/src/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema.ts +0 -23
  379. package/src/.spruce/schemas/calendar/v2021_05_19/fullCalendarEventType.schema.ts +0 -39
  380. package/src/.spruce/schemas/calendar/v2021_05_19/listCalendarEventTypesResponsePayload.schema.ts +0 -25
  381. package/src/.spruce/schemas/forms/v2021_07_02/builtForm.schema.ts +0 -50
  382. package/src/.spruce/schemas/forms/v2021_07_02/completedFormResponse.schema.ts +0 -41
  383. package/src/.spruce/schemas/forms/v2021_07_02/completedFormSourceForm.schema.ts +0 -44
  384. package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitPayload.schema.ts +0 -24
  385. package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitTargetAndPayload.schema.ts +0 -30
  386. package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToFormResponsePayload.schema.ts +0 -22
  387. package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitPayload.schema.ts +0 -24
  388. package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitTargetAndPayload.schema.ts +0 -30
  389. package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasResponsePayload.schema.ts +0 -25
  390. package/src/.spruce/schemas/forms/v2021_07_02/createBuiltForm.schema.ts +0 -38
  391. package/src/.spruce/schemas/forms/v2021_07_02/createFormEmitTargetAndPayload.schema.ts +0 -30
  392. package/src/.spruce/schemas/forms/v2021_07_02/createFormResponsePayload.schema.ts +0 -29
  393. package/src/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTarget.schema.ts +0 -23
  394. package/src/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTargetAndPayload.schema.ts +0 -30
  395. package/src/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormResponsePayload.schema.ts +0 -23
  396. package/src/.spruce/schemas/forms/v2021_07_02/didSaveFormEmitPayload.schema.ts +0 -23
  397. package/src/.spruce/schemas/forms/v2021_07_02/didUpdateCompletedFormEmitTargetAndPayload.schema.ts +0 -30
  398. package/src/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTarget.schema.ts +0 -23
  399. package/src/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTargetAndPayload.schema.ts +0 -30
  400. package/src/.spruce/schemas/forms/v2021_07_02/getCompletedFormEventForm.schema.ts +0 -58
  401. package/src/.spruce/schemas/forms/v2021_07_02/getCompletedFormResponsePayload.schema.ts +0 -23
  402. package/src/.spruce/schemas/forms/v2021_07_02/listCompletedFormsResponsePayload.schema.ts +0 -25
  403. package/src/.spruce/schemas/forms/v2021_07_02/listFormsForm.schema.ts +0 -42
  404. package/src/.spruce/schemas/forms/v2021_07_02/listFormsResponsePayload.schema.ts +0 -25
  405. package/src/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitPayload.schema.ts +0 -29
  406. package/src/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitTargetAndPayload.schema.ts +0 -30
  407. package/src/.spruce/schemas/forms/v2021_07_02/updateCompletedFormResponsePayload.schema.ts +0 -23
  408. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/builderImportExportPage.schema.ts +0 -1
  409. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formBuilderImportExportObject.schema.ts +0 -1
  410. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formSection.schema.ts +0 -1
  411. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/list.schema.ts +0 -1
  412. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCell.schema.ts +0 -1
  413. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCellButton.schema.ts +0 -1
  414. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listRow.schema.ts +0 -1
  415. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listSelectInput.schema.ts +0 -1
  416. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listTextInput.schema.ts +0 -1
  417. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/selectInputChoice.schema.ts +0 -1
  418. package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/text.schema.ts +0 -1
@@ -107,7 +107,7 @@ export default class FeatureCommandExecuterContTest extends AbstractSchemaTest {
107
107
 
108
108
  await this.waitForInput()
109
109
 
110
- assert.doesNotInclude(this.ui.lastInvocation(), {
110
+ assert.doesNotInclude(this.ui.getLastInvocation(), {
111
111
  command: 'prompt',
112
112
  options: {
113
113
  type: 'select',
@@ -158,7 +158,7 @@ export default class FeatureCommandExecuterContTest extends AbstractSchemaTest {
158
158
  await this.waitForInput()
159
159
 
160
160
  this.ui.reset()
161
- const lastQuestion = this.ui.lastInvocation()
161
+ const lastQuestion = this.ui.getLastInvocation()
162
162
 
163
163
  assert.isEqual(lastQuestion.command, 'prompt')
164
164
  assert.doesInclude(
@@ -227,7 +227,7 @@ export default class FeatureCommandExecuterContTest extends AbstractSchemaTest {
227
227
  assert.doesInclude(message, /2 required/gi)
228
228
  assert.doesInclude(message, /1 optional/gi)
229
229
 
230
- assert.doesInclude(this.ui.lastInvocation(), {
230
+ assert.doesInclude(this.ui.getLastInvocation(), {
231
231
  command: 'prompt',
232
232
  options: {
233
233
  type: 'select',
@@ -252,6 +252,10 @@ export default class SpruceError extends AbstractSpruceError<ErrorOptions> {
252
252
  message = `A transport named '${options.name}' already exists!`
253
253
  break
254
254
 
255
+ case 'DEPENDENCY_EXISTS':
256
+ message = `You already have ${options.namespace} as a dependency!`
257
+ break
258
+
255
259
  default:
256
260
  message = super.friendlyMessage()
257
261
  }
@@ -0,0 +1,12 @@
1
+ import { buildErrorSchema } from '@sprucelabs/schema'
2
+
3
+ export default buildErrorSchema({
4
+ id: 'dependencyExists',
5
+ name: 'Dependency exists',
6
+ fields: {
7
+ namespace: {
8
+ type: 'text',
9
+ isRequired: true,
10
+ },
11
+ },
12
+ })
@@ -1,6 +1,5 @@
1
1
  import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'
2
2
  import { versionUtil } from '@sprucelabs/spruce-skill-utils'
3
- import { diskUtil } from '@sprucelabs/spruce-skill-utils'
4
3
  import { Templates } from '@sprucelabs/spruce-templates'
5
4
  import { GlobalEmitter } from '../GlobalEmitter'
6
5
  import ServiceFactory, {
@@ -132,9 +131,7 @@ export default abstract class AbstractAction<S extends Schema = Schema>
132
131
  resolvedDestination: string,
133
132
  fallbackVersion: string
134
133
  ) {
135
- const versions = diskUtil.doesDirExist(resolvedDestination)
136
- ? versionUtil.getAllVersions(resolvedDestination)
137
- : []
134
+ const versions = versionUtil.getAllVersions(resolvedDestination)
138
135
  const todaysVersion = versionUtil.generateVersion()
139
136
 
140
137
  let version = fallbackVersion
@@ -27,17 +27,24 @@ export default class DeployAction extends AbstractAction<OptionsSchema> {
27
27
  let { namespace } = this.validateAndNormalizeOptions(options)
28
28
 
29
29
  const skills = await this.Store('skill').fetchAllSkills()
30
+ const dependencyService = this.Service('dependency')
30
31
 
31
32
  if (!namespace) {
33
+ const dependencies = dependencyService.get().map((d) => d.namespace)
34
+
35
+ const choices = skills
36
+ .filter((s) => dependencies.indexOf(s.slug) === -1)
37
+ .map((s) => ({
38
+ value: s.slug,
39
+ label: s.name,
40
+ }))
41
+
32
42
  namespace = await this.ui.prompt({
33
43
  type: 'select',
34
44
  label: 'Which skill would you like to add as a dependency?',
35
45
  isRequired: true,
36
46
  options: {
37
- choices: skills.map((s) => ({
38
- value: s.slug,
39
- label: s.name,
40
- })),
47
+ choices,
41
48
  },
42
49
  })
43
50
  }
@@ -51,7 +58,7 @@ export default class DeployAction extends AbstractAction<OptionsSchema> {
51
58
  })
52
59
  }
53
60
 
54
- this.Service('dependency').add({
61
+ dependencyService.add({
55
62
  id: skill.id,
56
63
  namespace: skill.slug,
57
64
  })
@@ -68,7 +68,10 @@ export default class CreateAction extends AbstractAction<OptionsSchema> {
68
68
 
69
69
  try {
70
70
  const destinationDir = diskUtil.resolvePath(this.cwd, 'src', 'events')
71
- const resolvedVersion = await this.resolveVersion(version, destinationDir)
71
+ const resolvedVersion = await this.resolveVersion(
72
+ version,
73
+ diskUtil.resolvePath(destinationDir, '**', '*')
74
+ )
72
75
 
73
76
  const files = await this.Writer('event').writeEvent(destinationDir, {
74
77
  nameKebab,
@@ -42,7 +42,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
42
42
  listenerDestinationDir,
43
43
  version: versionOptions,
44
44
  eventName,
45
- eventNamespace,
45
+ namespace,
46
46
  schemaTypesLookupDir,
47
47
  contractDestinationDir,
48
48
  } = normalizedOptions
@@ -53,42 +53,52 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
53
53
 
54
54
  const skill = await this.Store('skill').loadCurrentSkill()
55
55
 
56
+ const namespacesForFetch =
57
+ namespace && namespace !== 'skill' ? [namespace] : undefined
58
+
56
59
  const { contracts } = skill.slug
57
- ? await eventStore.fetchEventContracts({ localNamespace: skill.slug })
58
- : await eventStore.fetchEventContracts()
60
+ ? await eventStore.fetchEventContracts({
61
+ localNamespace: skill.slug,
62
+ namespaces: namespacesForFetch,
63
+ didUpdateHandler: (msg: string) => this.ui.startLoading(msg),
64
+ })
65
+ : await eventStore.fetchEventContracts({
66
+ namespaces: namespacesForFetch,
67
+ didUpdateHandler: (msg: string) => this.ui.startLoading(msg),
68
+ })
59
69
 
60
70
  this.ui.stopLoading()
61
71
 
62
- if (!eventNamespace) {
63
- eventNamespace = await this.collectNamespace(contracts)
72
+ if (!namespace) {
73
+ namespace = await this.collectNamespace(contracts)
64
74
  }
65
75
 
66
76
  const { eventChoicesByNamespace } =
67
77
  this.mapContractsToSelectChoices(contracts)
68
78
 
69
- if (!eventChoicesByNamespace[eventNamespace]) {
79
+ if (!eventChoicesByNamespace[namespace]) {
70
80
  throw new SchemaError({
71
81
  code: 'INVALID_PARAMETERS',
72
- friendlyMessage: `${eventNamespace} is not a valid event namespace. Try: \n\n${Object.keys(
82
+ friendlyMessage: `${namespace} is not a valid event namespace. Try: \n\n${Object.keys(
73
83
  eventChoicesByNamespace
74
84
  ).join('\n')}`,
75
- parameters: ['eventNamespace'],
85
+ parameters: ['namespace'],
76
86
  })
77
87
  }
78
88
 
79
89
  if (!eventName) {
80
- eventName = await this.collectEvent(contracts, eventNamespace)
90
+ eventName = await this.collectEvent(contracts, namespace)
81
91
  }
82
92
 
83
93
  const fqen = eventNameUtil.join({
84
94
  eventName,
85
- eventNamespace,
95
+ eventNamespace: namespace,
86
96
  version: versionOptions,
87
97
  })
88
98
 
89
99
  let { version } = eventNameUtil.split(fqen)
90
100
 
91
- const isValidEvent = !!eventChoicesByNamespace[eventNamespace].find(
101
+ const isValidEvent = !!eventChoicesByNamespace[namespace].find(
92
102
  (e) => e.value === eventName || e.value === fqen
93
103
  )
94
104
 
@@ -96,7 +106,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
96
106
  throw new SchemaError({
97
107
  code: 'INVALID_PARAMETERS',
98
108
  friendlyMessage: `${eventName} is not a valid event . Try: \n\n${eventChoicesByNamespace[
99
- eventNamespace
109
+ namespace
100
110
  ]
101
111
  .map((i) => i.value)
102
112
  .join('\n')}`,
@@ -119,7 +129,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
119
129
  schemaTypesLookupDir
120
130
  )
121
131
 
122
- const isSkillEvent = eventNamespace !== SKILL_EVENT_NAMESPACE
132
+ const isSkillEvent = namespace !== SKILL_EVENT_NAMESPACE
123
133
 
124
134
  let emitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined
125
135
  let responsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined
@@ -129,7 +139,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
129
139
  const templateItems = builder.buildEventTemplateItemForName(
130
140
  contracts,
131
141
  eventNameUtil.join({
132
- eventNamespace,
142
+ eventNamespace: namespace,
133
143
  eventName,
134
144
  version: resolvedVersion,
135
145
  })
@@ -146,10 +156,10 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
146
156
  ...normalizedOptions,
147
157
  version: resolvedVersion,
148
158
  eventName,
149
- eventNamespace,
159
+ eventNamespace: namespace,
150
160
  fullyQualifiedEventName: eventNameUtil.join({
151
161
  eventName,
152
- eventNamespace,
162
+ eventNamespace: namespace,
153
163
  version: resolvedVersion,
154
164
  }),
155
165
  emitPayloadSchemaTemplateItem,
@@ -183,11 +193,11 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
183
193
 
184
194
  private async collectEvent(
185
195
  contracts: EventContract[],
186
- eventNamespace: string
196
+ namespace: string
187
197
  ): Promise<string> {
188
198
  const eventChoices: SelectChoice[] =
189
199
  this.mapContractsToSelectChoices(contracts).eventChoicesByNamespace[
190
- eventNamespace
200
+ namespace
191
201
  ]
192
202
 
193
203
  const eventName = await this.ui.prompt({
@@ -205,7 +215,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
205
215
  private async collectNamespace(contracts: EventContract[]): Promise<string> {
206
216
  const { namespaceChoices } = this.mapContractsToSelectChoices(contracts)
207
217
 
208
- const eventNamespace = await this.ui.prompt({
218
+ const namespace = await this.ui.prompt({
209
219
  type: 'select',
210
220
  label: 'Select an event namespace',
211
221
  isRequired: true,
@@ -214,7 +224,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
214
224
  },
215
225
  })
216
226
 
217
- return eventNamespace
227
+ return namespace
218
228
  }
219
229
 
220
230
  private mapContractsToSelectChoices(contracts: EventContract[]) {
@@ -72,7 +72,13 @@ export default class EventStore extends AbstractStore {
72
72
 
73
73
  didUpdateHandler?.('Pulling remote contracts...')
74
74
 
75
- const contracts = await this.fetchRemoteContracts(namespaces)
75
+ let contracts
76
+ try {
77
+ contracts = await this.fetchRemoteContracts(namespaces)
78
+ } catch (err: any) {
79
+ const error = err.options.responseErrors[0]
80
+ throw error
81
+ }
76
82
 
77
83
  const localContract =
78
84
  localNamespace &&
@@ -5,7 +5,11 @@ import nodeFeatureOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/node
5
5
  import { FileDescription, GeneratedFile } from '../../types/cli.types'
6
6
  import ScriptUpdater from '../../updaters/ScriptUpdater'
7
7
  import AbstractFeature, { FeatureDependency } from '../AbstractFeature'
8
- import { ActionOptions, FeatureCode } from '../features.types'
8
+ import {
9
+ ActionOptions,
10
+ FeatureActionResponse,
11
+ FeatureCode,
12
+ } from '../features.types'
9
13
  import universalDevDependencies from '../universalDevDependencies'
10
14
  import universalFileDescriptions from '../universalFileDescriptions'
11
15
  import universalScripts from '../universalScripts'
@@ -49,33 +53,36 @@ export default class NodeFeature<
49
53
 
50
54
  void this.emitter.on('feature.did-execute', async (payload) => {
51
55
  if (payload.featureCode === 'node' && payload.actionCode === 'upgrade') {
52
- try {
53
- this.ui.startLoading('Cleaning build...')
54
- await this.Service('command').execute('yarn clean.build')
55
-
56
- this.ui.startLoading('Applying lint rules to all files...')
57
- await this.Service('command').execute('yarn fix.lint')
58
-
59
- this.ui.startLoading('Rebuilding...')
60
- await this.Service('command').execute('yarn build.dev')
61
-
62
- return {
63
- summaryLines: [
64
- 'Build cleared.',
65
- 'Lint rules applied to source.',
66
- 'Code rebuilt successfully.',
67
- ],
68
- }
69
- } catch (err) {
70
- return {
71
- errors: [err],
72
- }
73
- }
56
+ return this.handleUpgrade()
74
57
  }
75
58
 
76
59
  return {}
77
60
  })
78
61
  }
62
+ private async handleUpgrade(): Promise<FeatureActionResponse> {
63
+ try {
64
+ this.ui.startLoading('Cleaning build...')
65
+ await this.Service('command').execute('yarn clean.build')
66
+
67
+ this.ui.startLoading('Applying lint rules to all files...')
68
+ await this.Service('command').execute('yarn fix.lint')
69
+
70
+ this.ui.startLoading('Rebuilding...')
71
+ await this.Service('command').execute('yarn build.dev')
72
+
73
+ return {
74
+ summaryLines: [
75
+ 'Build cleared.',
76
+ 'Lint rules applied to source.',
77
+ 'Code rebuilt successfully.',
78
+ ],
79
+ }
80
+ } catch (err) {
81
+ return {
82
+ errors: [err],
83
+ }
84
+ }
85
+ }
79
86
 
80
87
  public async beforePackageInstall(options: Options) {
81
88
  const destination = this.resolveDestination(options)
@@ -94,8 +101,7 @@ export default class NodeFeature<
94
101
 
95
102
  await this.Service('command', destination).execute('yarn init -y')
96
103
 
97
- const nodeWriter = this.Writer('node')
98
- const written = await nodeWriter.writeNodeModule(destination)
104
+ const written = await this.Writer('node').writeNodeModule(destination)
99
105
 
100
106
  files.push(...written)
101
107
 
@@ -24,6 +24,13 @@ export default class UpgradeAction extends AbstractAction<OptionsSchema> {
24
24
  })
25
25
 
26
26
  try {
27
+ const files = await this.Writer('node', {
28
+ upgradeMode: normalizedOptions.upgradeMode,
29
+ }).writeNodeModule(this.cwd, {
30
+ shouldConfirmBeforeWriting: true,
31
+ shouldWriteIndex: false,
32
+ })
33
+
27
34
  InFlightEntertainment.start([
28
35
  "Let's start the upgrade!",
29
36
  'While things are going, see if you can beat 1k points!',
@@ -34,10 +41,10 @@ export default class UpgradeAction extends AbstractAction<OptionsSchema> {
34
41
 
35
42
  return actionUtil.mergeActionResults(dependencyResults, {
36
43
  headline: 'Upgrade',
44
+ files,
37
45
  })
38
46
  } finally {
39
47
  InFlightEntertainment.stop()
40
-
41
48
  this.ui.renderHero('Upgrade')
42
49
  }
43
50
  }
@@ -1,35 +1,50 @@
1
1
  import { diskUtil } from '@sprucelabs/spruce-skill-utils'
2
2
  import { DirectoryTemplateCode } from '@sprucelabs/spruce-templates'
3
- import AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter'
3
+ import { GeneratedFile } from '../../../types/cli.types'
4
+ import AbstractWriter, {
5
+ WriteDirectoryTemplateOptions,
6
+ WriteResults,
7
+ } from '../../../writers/AbstractWriter'
4
8
 
9
+ export const NODE_FILES_TO_UPGRADE = [
10
+ 'tsconfig.json',
11
+ '.eslintrc.js',
12
+ '.eslintignore',
13
+ '.gitignore',
14
+ '.nvmrc',
15
+ ]
5
16
  export default class NodeWriter extends AbstractWriter {
6
- public async writeNodeModule(destinationDir: string): Promise<WriteResults> {
7
- const contents = '//exports go here\n'
8
- const destination = diskUtil.resolvePath(destinationDir, 'src', 'index.ts')
9
-
10
- diskUtil.writeFile(destination, contents)
17
+ public async writeNodeModule(
18
+ destinationDir: string,
19
+ options?: Partial<WriteDirectoryTemplateOptions> & {
20
+ shouldWriteIndex?: boolean
21
+ }
22
+ ): Promise<WriteResults> {
23
+ let files: GeneratedFile[] = []
24
+ if (options?.shouldWriteIndex !== false) {
25
+ const contents = '//exports go here\n'
26
+ const destination = diskUtil.resolvePath(
27
+ destinationDir,
28
+ 'src',
29
+ 'index.ts'
30
+ )
31
+ diskUtil.writeFile(destination, contents)
32
+ files.push({
33
+ name: 'src/index.ts',
34
+ description: 'Placeholder entry file!',
35
+ action: 'generated',
36
+ path: destination,
37
+ })
38
+ }
11
39
 
12
- const files = await this.writeDirectoryTemplate({
40
+ const directoryTemplateFiles = await this.writeDirectoryTemplate({
13
41
  destinationDir,
14
42
  code: DirectoryTemplateCode.Skill,
15
- filesToWrite: [
16
- 'tsconfig.json',
17
- '.eslintrc.js',
18
- '.eslintignore',
19
- '.gitignore',
20
- '.nvmrc',
21
- ],
43
+ filesToWrite: NODE_FILES_TO_UPGRADE,
22
44
  context: { name: 'ignored', description: 'ignored' },
45
+ ...options,
23
46
  })
24
47
 
25
- return [
26
- {
27
- name: 'src/index.ts',
28
- description: 'Placeholder entry file!',
29
- action: 'generated',
30
- path: destination,
31
- },
32
- ...files,
33
- ]
48
+ return [...files, ...directoryTemplateFiles]
34
49
  }
35
50
  }
@@ -18,7 +18,7 @@ export default class SetupAction extends AbstractAction<OptionsSchema> {
18
18
  public async execute(): Promise<FeatureActionResponse> {
19
19
  const createListenerAction = this.Action('event', 'listen')
20
20
  const results = await createListenerAction.execute({
21
- eventNamespace: 'skill',
21
+ namespace: 'skill',
22
22
  eventName: 'will-boot',
23
23
  })
24
24
 
@@ -3,6 +3,7 @@ import { SpruceSchemas } from '#spruce/schemas/schemas.types'
3
3
  import SpruceError from '../../../errors/SpruceError'
4
4
  import { GlobalEmitter } from '../../../GlobalEmitter'
5
5
  import AbstractFeature from '../../AbstractFeature'
6
+ import { NODE_FILES_TO_UPGRADE } from '../../node/writers/NodeWriter'
6
7
 
7
8
  type UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions
8
9
 
@@ -35,7 +36,7 @@ export default class Updater {
35
36
  SpruceError
36
37
  )
37
38
 
38
- const filesToSkip = ['package.json']
39
+ const filesToSkip = [...NODE_FILES_TO_UPGRADE, 'package.json']
39
40
 
40
41
  for (const payload of payloads) {
41
42
  if (payload.filesToSkip) {
@@ -80,7 +80,7 @@ export default class SpyInterface implements GraphicsInterface {
80
80
  clearTimeout(this.promptTimeout)
81
81
  }
82
82
 
83
- public lastInvocation() {
83
+ public getLastInvocation() {
84
84
  return this.invocations[this.invocations.length - 1]
85
85
  }
86
86
 
@@ -7,7 +7,7 @@ export default buildSchema({
7
7
  description: 'Options for event.listen.',
8
8
  fields: {
9
9
  ...syncEventOptionsBuilder.fields,
10
- eventNamespace: {
10
+ namespace: {
11
11
  type: 'text',
12
12
  label: 'Namespace',
13
13
  },
@@ -1,4 +1,5 @@
1
1
  import { SettingsService } from '@sprucelabs/spruce-skill-utils'
2
+ import SpruceError from '../errors/SpruceError'
2
3
 
3
4
  interface Dependency {
4
5
  id: string
@@ -16,10 +17,23 @@ export default class DependencyService {
16
17
  }
17
18
 
18
19
  public add(dependency: Dependency) {
20
+ this.assertDependencyDoesNotExist(dependency.namespace)
21
+
19
22
  const dependencies = this.settings.get('dependencies') ?? []
20
23
  dependencies.push(dependency)
21
24
  this.settings.set('dependencies', dependencies)
22
25
  }
26
+ private assertDependencyDoesNotExist(namespace: string) {
27
+ const dependencies = this.get()
28
+ const match = dependencies.find((d) => d.namespace === namespace)
29
+
30
+ if (match) {
31
+ throw new SpruceError({
32
+ code: 'DEPENDENCY_EXISTS',
33
+ namespace,
34
+ })
35
+ }
36
+ }
23
37
 
24
38
  public get(): Dependency[] {
25
39
  return this.settings.get('dependencies') ?? []
@@ -465,7 +465,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
465
465
  }
466
466
 
467
467
  protected static selectOptionBasedOnLabel(label: string) {
468
- const last = this.ui.lastInvocation()
468
+ const last = this.ui.getLastInvocation()
469
469
  assert.doesInclude(last.options.options.choices, {
470
470
  label,
471
471
  })
@@ -0,0 +1,45 @@
1
+ import { assert } from '@sprucelabs/test'
2
+ import SpyInterface from '../../interfaces/SpyInterface'
3
+
4
+ const uiAssertUtil = {
5
+ async assertRendersSelect(ui: SpyInterface) {
6
+ await ui.waitForInput()
7
+
8
+ const last = ui.getLastInvocation()
9
+ assert.isTruthy(
10
+ last.options.options.choices,
11
+ `I expected a select, I did not find one!`
12
+ )
13
+ },
14
+
15
+ assertSelectDidNotRenderChoice(
16
+ ui: SpyInterface,
17
+ value: string,
18
+ label: string
19
+ ) {
20
+ const last = ui.getLastInvocation()
21
+
22
+ assert.doesNotInclude(last.options.options.choices, {
23
+ value,
24
+ label,
25
+ })
26
+ },
27
+
28
+ async assertRendersConfirmWriteFile(ui: SpyInterface) {
29
+ await ui.waitForInput()
30
+
31
+ const last = ui.getLastInvocation()
32
+
33
+ assert.isEqual(last.options.type, 'select')
34
+ assert.isEqualDeep(last.options.options.choices, [
35
+ {
36
+ label: 'Overwrite',
37
+ value: 'overwrite',
38
+ },
39
+ { value: 'skip', label: 'Skip' },
40
+ { value: 'alwaysSkip', label: 'Always skip' },
41
+ ])
42
+ },
43
+ }
44
+
45
+ export default uiAssertUtil
@@ -16,13 +16,22 @@ export type WriteResults = GeneratedFile[]
16
16
  export interface WriterOptions {
17
17
  templates: Templates
18
18
  term: GraphicsInterface
19
- askBeforeUpdating?: boolean
20
19
  upgradeMode?: UpgradeMode
21
20
  fileDescriptions: FileDescription[]
22
21
  linter?: LintService
23
22
  settings: SettingsService
24
23
  }
25
24
 
25
+ export interface WriteDirectoryTemplateOptions {
26
+ destinationDir: string
27
+ code: DirectoryTemplateCode
28
+ filesToWrite?: string[]
29
+ filesToSkip?: string[]
30
+ context: any
31
+ shouldConfirmBeforeWriting?: boolean
32
+ firstFileWriteMessage?: string
33
+ }
34
+
26
35
  export default abstract class AbstractWriter {
27
36
  protected templates: Templates
28
37
  protected ui: GraphicsInterface
@@ -59,15 +68,9 @@ export default abstract class AbstractWriter {
59
68
  this.isLintingEnabled = true
60
69
  }
61
70
 
62
- protected async writeDirectoryTemplate(options: {
63
- destinationDir: string
64
- code: DirectoryTemplateCode
65
- filesToWrite?: string[]
66
- filesToSkip?: string[]
67
- context: any
68
- shouldConfirmBeforeWriting?: boolean
69
- firstFileWriteMessage?: string
70
- }) {
71
+ protected async writeDirectoryTemplate(
72
+ options: WriteDirectoryTemplateOptions
73
+ ) {
71
74
  const {
72
75
  context,
73
76
  destinationDir,
@@ -93,6 +96,7 @@ export default abstract class AbstractWriter {
93
96
  !filesToWrite || filesToWrite.indexOf(generated.filename) > -1
94
97
  const shouldSkip =
95
98
  filesToSkip && filesToSkip.indexOf(generated.filename) > -1
99
+
96
100
  if (shouldWrite && !shouldSkip) {
97
101
  results = await this.writeFileIfChangedMixinResults(
98
102
  pathUtil.join(destinationDir, generated.relativePath),
@@ -128,6 +132,7 @@ export default abstract class AbstractWriter {
128
132
 
129
133
  if (!diskUtil.doesFileExist(destination)) {
130
134
  let write = true
135
+
131
136
  if (
132
137
  this.shouldConfirmBeforeWriting &&
133
138
  fileDescription?.confirmPromptOnFirstWrite
@@ -1,10 +0,0 @@
1
- declare const didBookAppointmentsEventContract: {
2
- eventSignatures: {
3
- 'appointments.did-book-appointments::v2021_06_23': {
4
- isGlobal: true;
5
- emitPayloadSchema: import("@sprucelabs/mercury-types").SpruceSchemas.Appointments.v2021_06_23.DidBookAppointmentsEmitTargetAndPayloadSchema;
6
- };
7
- };
8
- };
9
- export default didBookAppointmentsEventContract;
10
- export declare type DidBookAppointmentsEventContract = typeof didBookAppointmentsEventContract;