@sprucelabs/spruce-cli 18.2.0 → 18.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/.spruce/events/events.contract.d.ts +159 -0
  3. package/build/.spruce/events/events.contract.js +5 -1
  4. package/build/.spruce/events/events.contract.js.map +1 -1
  5. package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.d.ts +46 -0
  6. package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js +57 -0
  7. package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js.map +1 -0
  8. package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.d.ts +68 -0
  9. package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js +78 -0
  10. package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js.map +1 -0
  11. package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.d.ts +40 -0
  12. package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js +51 -0
  13. package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js.map +1 -0
  14. package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.d.ts +9 -0
  15. package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js +17 -0
  16. package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js.map +1 -0
  17. package/build/.spruce/schemas/schemas.types.d.ts +158 -55
  18. package/build/.spruce/schemas/schemas.types.js.map +1 -1
  19. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.d.ts +3 -0
  20. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js +70 -0
  21. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js.map +1 -0
  22. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.d.ts +3 -0
  23. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js +35 -0
  24. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js.map +1 -0
  25. package/build/.spruce/settings.json +2 -1
  26. package/build/GlobalEmitter.d.ts +13 -38
  27. package/build/GlobalEmitter.js +3 -6
  28. package/build/GlobalEmitter.js.map +1 -1
  29. package/build/__tests__/behavioral/TestingAConversation.test.d.ts +2 -1
  30. package/build/__tests__/behavioral/TestingAConversation.test.js +74 -84
  31. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  32. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +38 -13
  33. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  34. package/build/__tests__/behavioral/events/EventWriter.test.d.ts +4 -0
  35. package/build/__tests__/behavioral/events/EventWriter.test.js +116 -0
  36. package/build/__tests__/behavioral/events/EventWriter.test.js.map +1 -0
  37. package/build/__tests__/behavioral/{ListeningToCoreEvents.test.d.ts → events/ListeningToCoreEvents.test.d.ts} +1 -1
  38. package/build/__tests__/behavioral/{ListeningToCoreEvents.test.js → events/ListeningToCoreEvents.test.js} +1 -1
  39. package/build/__tests__/behavioral/events/ListeningToCoreEvents.test.js.map +1 -0
  40. package/build/__tests__/behavioral/{RegisteringEventsOnBoot.test.d.ts → events/RegisteringEventsOnBoot.test.d.ts} +1 -1
  41. package/build/__tests__/behavioral/{RegisteringEventsOnBoot.test.js → events/RegisteringEventsOnBoot.test.js} +2 -2
  42. package/build/__tests__/behavioral/events/RegisteringEventsOnBoot.test.js.map +1 -0
  43. package/build/__tests__/behavioral/{RegisteringGlobalEvents.test.d.ts → events/RegisteringGlobalEvents.test.d.ts} +2 -3
  44. package/build/__tests__/behavioral/{RegisteringGlobalEvents.test.js → events/RegisteringGlobalEvents.test.js} +45 -70
  45. package/build/__tests__/behavioral/events/RegisteringGlobalEvents.test.js.map +1 -0
  46. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
  47. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +16 -9
  48. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  49. package/build/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.d.ts → events/SyncingEventsOnlyFromDependencies.test.d.ts} +1 -1
  50. package/build/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.js → events/SyncingEventsOnlyFromDependencies.test.js} +1 -1
  51. package/build/__tests__/behavioral/events/SyncingEventsOnlyFromDependencies.test.js.map +1 -0
  52. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.d.ts +2 -2
  53. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +7 -7
  54. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
  55. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.d.ts +6 -0
  56. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js +85 -0
  57. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js.map +1 -0
  58. package/build/__tests__/behavioral/permissions/PermissionStore.test.d.ts +5 -4
  59. package/build/__tests__/behavioral/permissions/PermissionStore.test.js +97 -63
  60. package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
  61. package/build/__tests__/behavioral/permissions/PermissionWriter.test.d.ts +5 -0
  62. package/build/__tests__/behavioral/permissions/PermissionWriter.test.js +88 -0
  63. package/build/__tests__/behavioral/permissions/PermissionWriter.test.js.map +1 -0
  64. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.d.ts +15 -4
  65. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js +325 -28
  66. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
  67. package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.d.ts +11 -0
  68. package/build/__tests__/behavioral/permissions/{AbstractPermissionsTest.js → support/AbstractPermissionsTest.js} +34 -2
  69. package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.js.map +1 -0
  70. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.d.ts +1 -0
  71. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js +11 -0
  72. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js.map +1 -0
  73. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.d.ts +1 -0
  74. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js +17 -0
  75. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js.map +1 -0
  76. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.d.ts +5 -0
  77. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js +10 -0
  78. package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js.map +1 -0
  79. package/build/__tests__/behavioral/{CreatingSchemasWithGenerics.test.d.ts → schemas/CreatingSchemasWithGenerics.test.d.ts} +1 -1
  80. package/build/__tests__/behavioral/{CreatingSchemasWithGenerics.test.js → schemas/CreatingSchemasWithGenerics.test.js} +2 -2
  81. package/build/__tests__/behavioral/schemas/CreatingSchemasWithGenerics.test.js.map +1 -0
  82. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.d.ts +1 -1
  83. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +46 -46
  84. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  85. package/build/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.d.ts → schemas/SettingUpSchemasForModuleDistribution.test.d.ts} +1 -1
  86. package/build/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.js → schemas/SettingUpSchemasForModuleDistribution.test.js} +3 -3
  87. package/build/__tests__/behavioral/schemas/SettingUpSchemasForModuleDistribution.test.js.map +1 -0
  88. package/build/__tests__/behavioral/{InstallingASkillAtAnOrg.test.d.ts → skill/InstallingASkillAtAnOrg.test.d.ts} +1 -1
  89. package/build/__tests__/behavioral/{InstallingASkillAtAnOrg.test.js → skill/InstallingASkillAtAnOrg.test.js} +2 -2
  90. package/build/__tests__/behavioral/skill/InstallingASkillAtAnOrg.test.js.map +1 -0
  91. package/build/__tests__/behavioral/{LoggingInAsASkill.test.d.ts → skill/LoggingInAsASkill.test.d.ts} +1 -1
  92. package/build/__tests__/behavioral/{LoggingInAsASkill.test.js → skill/LoggingInAsASkill.test.js} +2 -2
  93. package/build/__tests__/behavioral/skill/LoggingInAsASkill.test.js.map +1 -0
  94. package/build/__tests__/behavioral/{RebuildingASkill.test.d.ts → skill/RebuildingASkill.test.d.ts} +1 -1
  95. package/build/__tests__/behavioral/{RebuildingASkill.test.js → skill/RebuildingASkill.test.js} +2 -2
  96. package/build/__tests__/behavioral/skill/RebuildingASkill.test.js.map +1 -0
  97. package/build/__tests__/behavioral/tests/CreatingATest.test.js +2 -2
  98. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  99. package/build/__tests__/behavioral/{SettingUpASkillForTesting.test.d.ts → tests/SettingUpASkillForTesting.test.d.ts} +1 -1
  100. package/build/__tests__/behavioral/{SettingUpASkillForTesting.test.js → tests/SettingUpASkillForTesting.test.js} +2 -2
  101. package/build/__tests__/behavioral/tests/SettingUpASkillForTesting.test.js.map +1 -0
  102. package/build/__tests__/behavioral/{TestReporterSettingsRemembered.test.d.ts → tests/TestReporterSettingsRemembered.test.d.ts} +1 -1
  103. package/build/__tests__/behavioral/{TestReporterSettingsRemembered.test.js → tests/TestReporterSettingsRemembered.test.js} +1 -1
  104. package/build/__tests__/behavioral/tests/TestReporterSettingsRemembered.test.js.map +1 -0
  105. package/build/__tests__/behavioral/{TestingDataStores.test.d.ts → tests/TestingDataStores.test.d.ts} +1 -1
  106. package/build/__tests__/behavioral/{TestingDataStores.test.js → tests/TestingDataStores.test.js} +3 -3
  107. package/build/__tests__/behavioral/tests/TestingDataStores.test.js.map +1 -0
  108. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +7 -3
  109. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  110. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +2 -2
  111. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  112. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +1 -1
  113. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  114. package/build/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.d.ts → views/RegisteringSkillViewOnBoot.test.d.ts} +4 -4
  115. package/build/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.js → views/RegisteringSkillViewOnBoot.test.js} +2 -2
  116. package/build/__tests__/behavioral/views/RegisteringSkillViewOnBoot.test.js.map +1 -0
  117. package/build/__tests__/behavioral/{WatchingSkillViews.test.d.ts → views/WatchingSkillViews.test.d.ts} +1 -1
  118. package/build/__tests__/behavioral/{WatchingSkillViews.test.js → views/WatchingSkillViews.test.js} +2 -2
  119. package/build/__tests__/behavioral/views/WatchingSkillViews.test.js.map +1 -0
  120. package/build/__tests__/implementation/ActionExecuter2.test.d.ts +1 -1
  121. package/build/__tests__/implementation/ActionExecuter2.test.js +23 -11
  122. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  123. package/build/__tests__/implementation/GlobalEmitter.test.d.ts +1 -0
  124. package/build/__tests__/implementation/GlobalEmitter.test.js +40 -3
  125. package/build/__tests__/implementation/GlobalEmitter.test.js.map +1 -1
  126. package/build/__tests__/implementation/SkillStore.test.js +3 -4
  127. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  128. package/build/features/AbstractAction.d.ts +1 -1
  129. package/build/features/AbstractAction.js.map +1 -1
  130. package/build/features/AbstractFeature.d.ts +3 -3
  131. package/build/features/AbstractFeature.js +8 -8
  132. package/build/features/AbstractFeature.js.map +1 -1
  133. package/build/features/ActionExecuter.d.ts +1 -1
  134. package/build/features/ActionExecuter.js +3 -4
  135. package/build/features/ActionExecuter.js.map +1 -1
  136. package/build/features/ActionFactory.d.ts +12 -5
  137. package/build/features/ActionFactory.js +27 -6
  138. package/build/features/ActionFactory.js.map +1 -1
  139. package/build/features/ActionQuestionAsker.d.ts +1 -1
  140. package/build/features/ActionQuestionAsker.js +6 -6
  141. package/build/features/ActionQuestionAsker.js.map +1 -1
  142. package/build/features/conversation/ConversationFeature.js +1 -1
  143. package/build/features/conversation/ConversationFeature.js.map +1 -1
  144. package/build/features/dependencies/DependencyFeature.js +1 -1
  145. package/build/features/dependencies/DependencyFeature.js.map +1 -1
  146. package/build/features/deploy/actions/HerokuAction.js +31 -33
  147. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  148. package/build/features/error/ErrorFeature.js +4 -4
  149. package/build/features/error/ErrorFeature.js.map +1 -1
  150. package/build/features/event/EventFeature.d.ts +8 -8
  151. package/build/features/event/EventFeature.js +7 -4
  152. package/build/features/event/EventFeature.js.map +1 -1
  153. package/build/features/event/actions/CreateAction.js.map +1 -1
  154. package/build/features/event/actions/ListenAction.js.map +1 -1
  155. package/build/features/event/stores/EventStore.d.ts +9 -9
  156. package/build/features/event/stores/EventStore.js +26 -26
  157. package/build/features/event/stores/EventStore.js.map +1 -1
  158. package/build/features/eventContract/EventContractFeature.js +4 -1
  159. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  160. package/build/features/eventContract/actions/PullAction.js +10 -5
  161. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  162. package/build/features/features.types.d.ts +2 -37
  163. package/build/features/features.types.js +0 -41
  164. package/build/features/features.types.js.map +1 -1
  165. package/build/features/log/LogFeature.js +1 -1
  166. package/build/features/log/LogFeature.js.map +1 -1
  167. package/build/features/node/NodeFeature.js.map +1 -1
  168. package/build/features/organization/actions/InstallAction.js.map +1 -1
  169. package/build/features/permission/PermissionFeature.d.ts +12 -2
  170. package/build/features/permission/PermissionFeature.js +138 -15
  171. package/build/features/permission/PermissionFeature.js.map +1 -1
  172. package/build/features/permission/actions/CreateAction.js +4 -1
  173. package/build/features/permission/actions/CreateAction.js.map +1 -1
  174. package/build/features/permission/actions/SyncAction.d.ts +5 -1
  175. package/build/features/permission/actions/SyncAction.js +28 -10
  176. package/build/features/permission/actions/SyncAction.js.map +1 -1
  177. package/build/features/permission/stores/PermissionStore.d.ts +6 -1
  178. package/build/features/permission/stores/PermissionStore.js +43 -31
  179. package/build/features/permission/stores/PermissionStore.js.map +1 -1
  180. package/build/features/permission/writers/PermissionWriter.d.ts +7 -1
  181. package/build/features/permission/writers/PermissionWriter.js +67 -18
  182. package/build/features/permission/writers/PermissionWriter.js.map +1 -1
  183. package/build/features/person/PersonFeature.js +1 -1
  184. package/build/features/person/PersonFeature.js.map +1 -1
  185. package/build/features/sandbox/SandboxFeature.js +1 -1
  186. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  187. package/build/features/schema/SchemaFeature.d.ts +8 -8
  188. package/build/features/schema/SchemaFeature.js +4 -4
  189. package/build/features/schema/SchemaFeature.js.map +1 -1
  190. package/build/features/schema/writers/SchemaWriter.d.ts +12 -12
  191. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  192. package/build/features/skill/SkillFeature.d.ts +11 -11
  193. package/build/features/skill/SkillFeature.js +2 -2
  194. package/build/features/skill/SkillFeature.js.map +1 -1
  195. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  196. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  197. package/build/features/skill/stores/SkillStore.js +1 -2
  198. package/build/features/skill/stores/SkillStore.js.map +1 -1
  199. package/build/features/store/StoreFeature.js +1 -1
  200. package/build/features/store/StoreFeature.js.map +1 -1
  201. package/build/features/store/actions/SyncAction.d.ts +1 -1
  202. package/build/features/store/actions/SyncAction.js.map +1 -1
  203. package/build/features/test/TestFeature.js +1 -1
  204. package/build/features/test/TestFeature.js.map +1 -1
  205. package/build/features/view/ViewFeature.js +1 -1
  206. package/build/features/view/ViewFeature.js.map +1 -1
  207. package/build/schemas/v2020_07_22/actionResponse.builder.d.ts +85 -0
  208. package/build/schemas/v2020_07_22/actionResponse.builder.js +70 -0
  209. package/build/schemas/v2020_07_22/actionResponse.builder.js.map +1 -0
  210. package/build/schemas/v2020_07_22/generatedFile.builder.d.ts +27 -0
  211. package/build/schemas/v2020_07_22/generatedFile.builder.js +45 -0
  212. package/build/schemas/v2020_07_22/generatedFile.builder.js.map +1 -0
  213. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js +4 -40
  214. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
  215. package/build/services/CommandService.d.ts +2 -2
  216. package/build/services/CommandService.js +6 -6
  217. package/build/services/CommandService.js.map +1 -1
  218. package/build/services/PkgService.d.ts +1 -0
  219. package/build/services/PkgService.js +5 -0
  220. package/build/services/PkgService.js.map +1 -1
  221. package/build/tests/AbstractCliTest.d.ts +7 -3
  222. package/build/tests/AbstractCliTest.js +81 -45
  223. package/build/tests/AbstractCliTest.js.map +1 -1
  224. package/build/tests/buildTestCache.js +7 -0
  225. package/build/tests/buildTestCache.js.map +1 -1
  226. package/build/tests/fixtures/FeatureFixture.js +1 -0
  227. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  228. package/build/tests/utilities/test.utility.d.ts +2 -0
  229. package/build/tests/utilities/test.utility.js +6 -0
  230. package/build/tests/utilities/test.utility.js.map +1 -1
  231. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  232. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts +4 -2
  233. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts.map +1 -1
  234. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js +13 -5
  235. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js.map +1 -1
  236. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts +2 -1
  237. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts.map +1 -1
  238. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js +3 -0
  239. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js.map +1 -1
  240. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  241. package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +20 -2
  242. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +20 -2
  243. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
  244. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js +2 -0
  245. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js.map +1 -1
  246. package/node_modules/@typescript-eslint/types/package.json +2 -2
  247. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/estree-to-ts-node-types.d.ts +2 -0
  248. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/ts-nodes.d.ts +2 -0
  249. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
  250. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +15 -3
  251. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
  252. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts +2 -0
  253. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts.map +1 -1
  254. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts +2 -0
  255. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts.map +1 -1
  256. package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
  257. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.d.ts.map +1 -1
  258. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js +63 -49
  259. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js.map +1 -1
  260. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  261. package/package.json +65 -33
  262. package/src/.spruce/events/events.contract.ts +24 -0
  263. package/src/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.ts +54 -0
  264. package/src/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.ts +79 -0
  265. package/src/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.ts +48 -0
  266. package/src/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.ts +13 -0
  267. package/src/.spruce/schemas/schemas.types.ts +171 -52
  268. package/src/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.ts +58 -0
  269. package/src/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.ts +33 -0
  270. package/src/.spruce/settings.json +2 -1
  271. package/src/GlobalEmitter.ts +2 -7
  272. package/src/__tests__/behavioral/TestingAConversation.test.ts +20 -37
  273. package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +14 -2
  274. package/src/__tests__/behavioral/events/EventWriter.test.ts +75 -0
  275. package/src/__tests__/behavioral/{ListeningToCoreEvents.test.ts → events/ListeningToCoreEvents.test.ts} +1 -1
  276. package/src/__tests__/behavioral/{RegisteringEventsOnBoot.test.ts → events/RegisteringEventsOnBoot.test.ts} +2 -2
  277. package/src/__tests__/behavioral/{RegisteringGlobalEvents.test.ts → events/RegisteringGlobalEvents.test.ts} +4 -12
  278. package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
  279. package/src/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.ts → events/SyncingEventsOnlyFromDependencies.test.ts} +2 -2
  280. package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +2 -2
  281. package/src/__tests__/behavioral/permissions/PermissionPlugin.test.ts +24 -0
  282. package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +96 -38
  283. package/src/__tests__/behavioral/permissions/PermissionWriter.test.ts +24 -0
  284. package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +125 -8
  285. package/src/__tests__/behavioral/permissions/support/AbstractPermissionsTest.ts +38 -0
  286. package/src/__tests__/behavioral/permissions/support/generateShortAlphaId.ts +5 -0
  287. package/src/__tests__/behavioral/permissions/support/renderPermissionTestFile.ts +27 -0
  288. package/src/__tests__/behavioral/permissions/support/sortPermissionContracts.ts +3 -0
  289. package/src/__tests__/behavioral/{CreatingSchemasWithGenerics.test.ts → schemas/CreatingSchemasWithGenerics.test.ts} +2 -2
  290. package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +12 -12
  291. package/src/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.ts → schemas/SettingUpSchemasForModuleDistribution.test.ts} +4 -4
  292. package/src/__tests__/behavioral/{InstallingASkillAtAnOrg.test.ts → skill/InstallingASkillAtAnOrg.test.ts} +2 -2
  293. package/src/__tests__/behavioral/{LoggingInAsASkill.test.ts → skill/LoggingInAsASkill.test.ts} +3 -3
  294. package/src/__tests__/behavioral/{RebuildingASkill.test.ts → skill/RebuildingASkill.test.ts} +2 -2
  295. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -2
  296. package/src/__tests__/behavioral/{SettingUpASkillForTesting.test.ts → tests/SettingUpASkillForTesting.test.ts} +2 -2
  297. package/src/__tests__/behavioral/{TestReporterSettingsRemembered.test.ts → tests/TestReporterSettingsRemembered.test.ts} +2 -2
  298. package/src/__tests__/behavioral/{TestingDataStores.test.ts → tests/TestingDataStores.test.ts} +3 -3
  299. package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +3 -0
  300. package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +3 -2
  301. package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
  302. package/src/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.ts → views/RegisteringSkillViewOnBoot.test.ts} +2 -2
  303. package/src/__tests__/behavioral/{WatchingSkillViews.test.ts → views/WatchingSkillViews.test.ts} +3 -3
  304. package/src/__tests__/implementation/ActionExecuter2.test.ts +13 -6
  305. package/src/__tests__/implementation/GlobalEmitter.test.ts +22 -1
  306. package/src/__tests__/implementation/SkillStore.test.ts +1 -2
  307. package/src/features/AbstractAction.ts +2 -2
  308. package/src/features/AbstractFeature.ts +8 -8
  309. package/src/features/ActionExecuter.ts +4 -5
  310. package/src/features/ActionFactory.ts +44 -20
  311. package/src/features/ActionQuestionAsker.ts +17 -17
  312. package/src/features/conversation/ConversationFeature.ts +1 -1
  313. package/src/features/dependencies/DependencyFeature.ts +1 -1
  314. package/src/features/deploy/actions/HerokuAction.ts +2 -2
  315. package/src/features/error/ErrorFeature.ts +4 -4
  316. package/src/features/event/EventFeature.ts +15 -14
  317. package/src/features/event/actions/CreateAction.ts +1 -1
  318. package/src/features/event/actions/ListenAction.ts +1 -1
  319. package/src/features/event/stores/EventStore.ts +37 -37
  320. package/src/features/eventContract/EventContractFeature.ts +6 -1
  321. package/src/features/eventContract/actions/PullAction.ts +7 -3
  322. package/src/features/features.types.ts +4 -41
  323. package/src/features/log/LogFeature.ts +1 -1
  324. package/src/features/node/NodeFeature.ts +1 -1
  325. package/src/features/organization/actions/InstallAction.ts +1 -1
  326. package/src/features/permission/PermissionFeature.ts +68 -11
  327. package/src/features/permission/actions/CreateAction.ts +2 -0
  328. package/src/features/permission/actions/SyncAction.ts +22 -3
  329. package/src/features/permission/stores/PermissionStore.ts +27 -8
  330. package/src/features/permission/writers/PermissionWriter.ts +62 -4
  331. package/src/features/person/PersonFeature.ts +1 -1
  332. package/src/features/sandbox/SandboxFeature.ts +1 -3
  333. package/src/features/schema/SchemaFeature.ts +14 -14
  334. package/src/features/schema/writers/SchemaWriter.ts +14 -15
  335. package/src/features/skill/SkillFeature.ts +18 -18
  336. package/src/features/skill/actions/RebuildAction.ts +1 -1
  337. package/src/features/skill/actions/RegisterAction.ts +1 -1
  338. package/src/features/skill/stores/SkillStore.ts +1 -2
  339. package/src/features/store/StoreFeature.ts +1 -1
  340. package/src/features/store/actions/SyncAction.ts +1 -1
  341. package/src/features/test/TestFeature.ts +1 -1
  342. package/src/features/view/ViewFeature.ts +1 -1
  343. package/src/schemas/v2020_07_22/actionResponse.builder.ts +62 -0
  344. package/src/schemas/v2020_07_22/generatedFile.builder.ts +44 -0
  345. package/src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts +3 -46
  346. package/src/services/CommandService.ts +5 -5
  347. package/src/services/PkgService.ts +4 -0
  348. package/src/tests/AbstractCliTest.ts +31 -13
  349. package/src/tests/buildTestCache.ts +7 -0
  350. package/src/tests/fixtures/FeatureFixture.ts +2 -0
  351. package/src/tests/utilities/test.utility.ts +13 -0
  352. package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +0 -1
  353. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +0 -1
  354. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +0 -1
  355. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +0 -1
  356. package/build/__tests__/behavioral/RebuildingASkill.test.js.map +0 -1
  357. package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +0 -1
  358. package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +0 -1
  359. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +0 -1
  360. package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +0 -1
  361. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +0 -1
  362. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +0 -1
  363. package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +0 -1
  364. package/build/__tests__/behavioral/TestingDataStores.test.js.map +0 -1
  365. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +0 -1
  366. package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.d.ts +0 -8
  367. package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.js.map +0 -1
  368. package/src/__tests__/behavioral/permissions/AbstractPermissionsTest.ts +0 -20
@@ -26,38 +26,79 @@ var PermissionWriter = /*#__PURE__*/function (_AbstractWriter) {
26
26
  (0, _createClass2["default"])(PermissionWriter, [{
27
27
  key: "writeTypesFile",
28
28
  value: function () {
29
- var _writeTypesFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(destinationDir) {
30
- var destination, files;
29
+ var _writeTypesFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(cwd, map) {
30
+ var destination, contents, files;
31
31
  return _regenerator["default"].wrap(function _callee$(_context) {
32
32
  while (1) {
33
33
  switch (_context.prev = _context.next) {
34
34
  case 0:
35
- destination = _spruceSkillUtils.diskUtil.resolveHashSprucePath(destinationDir, 'permissions', 'permissions.types.ts');
36
- _context.next = 3;
37
- return this.writeFileIfChangedMixinResults(destination, '', 'Types file for any permission contracts you created or depend on.');
38
- case 3:
35
+ destination = _spruceSkillUtils.diskUtil.resolveHashSprucePath(cwd, 'permissions', 'permissions.types.ts');
36
+ contents = this.templates.permissionTypes({
37
+ contracts: map
38
+ });
39
+ _context.next = 4;
40
+ return this.writeFileIfChangedMixinResults(destination, contents, 'Types file for any permission contracts you created or depend on.');
41
+ case 4:
39
42
  files = _context.sent;
40
43
  return _context.abrupt("return", files);
41
- case 5:
44
+ case 6:
42
45
  case "end":
43
46
  return _context.stop();
44
47
  }
45
48
  }
46
49
  }, _callee, this);
47
50
  }));
48
- function writeTypesFile(_x) {
51
+ function writeTypesFile(_x, _x2) {
49
52
  return _writeTypesFile.apply(this, arguments);
50
53
  }
51
54
  return writeTypesFile;
52
55
  }()
53
56
  }, {
54
- key: "writeContract",
57
+ key: "writeCombinedFile",
55
58
  value: function () {
56
- var _writeContract = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(destinationDir, options) {
57
- var nameReadable, nameKebab, nameCamel, description, destination, content, files;
59
+ var _writeCombinedFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(destinationDir, options) {
60
+ var contracts, destinationPath, destinationFile, local, content, files;
58
61
  return _regenerator["default"].wrap(function _callee2$(_context2) {
59
62
  while (1) {
60
63
  switch (_context2.prev = _context2.next) {
64
+ case 0:
65
+ contracts = options.contracts;
66
+ destinationPath = _spruceSkillUtils.diskUtil.resolveHashSprucePath(destinationDir, 'permissions');
67
+ destinationFile = _spruceSkillUtils.diskUtil.resolvePath(destinationPath, 'permissions.ts');
68
+ local = contracts.map(function (c) {
69
+ return {
70
+ nameCamel: _spruceSkillUtils.namesUtil.toCamel(c.id),
71
+ path: _spruceSkillUtils.diskUtil.resolveRelativePath(destinationPath, c.path.replace('.ts', ''))
72
+ };
73
+ });
74
+ content = this.templates.permissions({
75
+ contracts: local
76
+ });
77
+ _context2.next = 7;
78
+ return this.writeFileIfChangedMixinResults(destinationFile, content, 'Import of all permission contracts for loading on boot!');
79
+ case 7:
80
+ files = _context2.sent;
81
+ return _context2.abrupt("return", files);
82
+ case 9:
83
+ case "end":
84
+ return _context2.stop();
85
+ }
86
+ }
87
+ }, _callee2, this);
88
+ }));
89
+ function writeCombinedFile(_x3, _x4) {
90
+ return _writeCombinedFile.apply(this, arguments);
91
+ }
92
+ return writeCombinedFile;
93
+ }()
94
+ }, {
95
+ key: "writeContract",
96
+ value: function () {
97
+ var _writeContract = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(destinationDir, options) {
98
+ var nameReadable, nameKebab, nameCamel, description, destination, content, files;
99
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
100
+ while (1) {
101
+ switch (_context3.prev = _context3.next) {
61
102
  case 0:
62
103
  nameReadable = options.nameReadable, nameKebab = options.nameKebab, nameCamel = options.nameCamel, description = options.description;
63
104
  destination = _spruceSkillUtils.diskUtil.resolvePath(destinationDir, "".concat(nameKebab, ".permissions.ts"));
@@ -67,26 +108,34 @@ var PermissionWriter = /*#__PURE__*/function (_AbstractWriter) {
67
108
  description: description,
68
109
  nameReadable: nameReadable
69
110
  });
70
- _context2.next = 5;
111
+ _context3.next = 5;
71
112
  return this.writeFileIfChangedMixinResults(destination, content, 'Your brand new permissions contract!');
72
113
  case 5:
73
- files = _context2.sent;
74
- _context2.next = 8;
114
+ files = _context3.sent;
115
+ _context3.next = 8;
75
116
  return this.lint(destination);
76
117
  case 8:
77
- return _context2.abrupt("return", files);
118
+ return _context3.abrupt("return", files);
78
119
  case 9:
79
120
  case "end":
80
- return _context2.stop();
121
+ return _context3.stop();
81
122
  }
82
123
  }
83
- }, _callee2, this);
124
+ }, _callee3, this);
84
125
  }));
85
- function writeContract(_x2, _x3) {
126
+ function writeContract(_x5, _x6) {
86
127
  return _writeContract.apply(this, arguments);
87
128
  }
88
129
  return writeContract;
89
130
  }()
131
+ }, {
132
+ key: "writePlugin",
133
+ value: function writePlugin(cwd) {
134
+ var destination = _spruceSkillUtils.diskUtil.resolveHashSprucePath(cwd, 'features', 'permission.plugin.ts');
135
+ var pluginContents = this.templates.permissionPlugin();
136
+ var results = this.writeFileIfChangedMixinResults(destination, pluginContents, 'Enable permission support in your skill.');
137
+ return results;
138
+ }
90
139
  }]);
91
140
  return PermissionWriter;
92
141
  }(_AbstractWriter2["default"]);
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionWriter.js","names":["PermissionWriter","destinationDir","destination","diskUtil","resolveHashSprucePath","writeFileIfChangedMixinResults","files","options","nameReadable","nameKebab","nameCamel","description","resolvePath","content","templates","permissionContractBuilder","lint","AbstractWriter"],"sources":["../../../../src/features/permission/writers/PermissionWriter.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nexport default class PermissionWriter extends AbstractWriter {\n\tpublic async writeTypesFile(destinationDir: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tdestinationDir,\n\t\t\t'permissions',\n\t\t\t'permissions.types.ts'\n\t\t)\n\n\t\tconst files = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\t'',\n\t\t\t'Types file for any permission contracts you created or depend on.'\n\t\t)\n\n\t\treturn files\n\t}\n\n\tpublic async writeContract(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tnameReadable: string\n\t\t\tnameKebab: string\n\t\t\tnameCamel: string\n\t\t\tdescription?: string\n\t\t}\n\t) {\n\t\tconst { nameReadable, nameKebab, nameCamel, description } = options\n\n\t\tconst destination = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\t`${nameKebab}.permissions.ts`\n\t\t)\n\n\t\tconst content = this.templates.permissionContractBuilder({\n\t\t\tnameCamel,\n\t\t\tnameKebab,\n\t\t\tdescription,\n\t\t\tnameReadable,\n\t\t})\n\n\t\tconst files = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontent,\n\t\t\t'Your brand new permissions contract!'\n\t\t)\n\n\t\tawait this.lint(destination)\n\n\t\treturn files\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAA4D;AAAA;AAAA,IAEvCA,gBAAgB;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,oGACpC,iBAA4BC,cAAsB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAC3CC,WAAW,GAAGC,0BAAQ,CAACC,qBAAqB,CACjDH,cAAc,EACd,aAAa,EACb,sBAAsB,CACtB;gBAAA;gBAAA,OAEmB,IAAI,CAACI,8BAA8B,CACtDH,WAAW,EACX,EAAE,EACF,mEAAmE,CACnE;cAAA;gBAJKI,KAAK;gBAAA,iCAMJA,KAAK;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACZ;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,mGAED,kBACCL,cAAsB,EACtBM,OAKC;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,YAAY,GAAwCD,OAAO,CAA3DC,YAAY,EAAEC,SAAS,GAA6BF,OAAO,CAA7CE,SAAS,EAAEC,SAAS,GAAkBH,OAAO,CAAlCG,SAAS,EAAEC,WAAW,GAAKJ,OAAO,CAAvBI,WAAW;gBAEjDT,WAAW,GAAGC,0BAAQ,CAACS,WAAW,CACvCX,cAAc,YACXQ,SAAS,qBACZ;gBAEKI,OAAO,GAAG,IAAI,CAACC,SAAS,CAACC,yBAAyB,CAAC;kBACxDL,SAAS,EAATA,SAAS;kBACTD,SAAS,EAATA,SAAS;kBACTE,WAAW,EAAXA,WAAW;kBACXH,YAAY,EAAZA;gBACD,CAAC,CAAC;gBAAA;gBAAA,OAEkB,IAAI,CAACH,8BAA8B,CACtDH,WAAW,EACXW,OAAO,EACP,sCAAsC,CACtC;cAAA;gBAJKP,KAAK;gBAAA;gBAAA,OAML,IAAI,CAACU,IAAI,CAACd,WAAW,CAAC;cAAA;gBAAA,kCAErBI,KAAK;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACZ;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAjD4CW,2BAAc;AAAA"}
1
+ {"version":3,"file":"PermissionWriter.js","names":["PermissionWriter","cwd","map","destination","diskUtil","resolveHashSprucePath","contents","templates","permissionTypes","contracts","writeFileIfChangedMixinResults","files","destinationDir","options","destinationPath","destinationFile","resolvePath","local","c","nameCamel","namesUtil","toCamel","id","path","resolveRelativePath","replace","content","permissions","nameReadable","nameKebab","description","permissionContractBuilder","lint","pluginContents","permissionPlugin","results","AbstractWriter"],"sources":["../../../../src/features/permission/writers/PermissionWriter.ts"],"sourcesContent":["import { PermissionContractMap } from '@sprucelabs/mercury-types'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractWriter from '../../../writers/AbstractWriter'\nimport { ImportedPermission } from '../stores/PermissionStore'\n\nexport default class PermissionWriter extends AbstractWriter {\n\tpublic async writeTypesFile(cwd: string, map: PermissionContractMap) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'permissions',\n\t\t\t'permissions.types.ts'\n\t\t)\n\n\t\tconst contents = this.templates.permissionTypes({ contracts: map })\n\n\t\tconst files = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'Types file for any permission contracts you created or depend on.'\n\t\t)\n\n\t\treturn files\n\t}\n\n\tpublic async writeCombinedFile(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tcontracts: ImportedPermission[]\n\t\t}\n\t) {\n\t\tconst { contracts } = options\n\n\t\tconst destinationPath = diskUtil.resolveHashSprucePath(\n\t\t\tdestinationDir,\n\t\t\t'permissions'\n\t\t)\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationPath,\n\t\t\t'permissions.ts'\n\t\t)\n\n\t\tconst local = contracts.map((c) => ({\n\t\t\tnameCamel: namesUtil.toCamel(c.id),\n\t\t\tpath: diskUtil.resolveRelativePath(\n\t\t\t\tdestinationPath,\n\t\t\t\tc.path.replace('.ts', '')\n\t\t\t),\n\t\t}))\n\n\t\tconst content = this.templates.permissions({ contracts: local })\n\n\t\tconst files = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\tcontent,\n\t\t\t'Import of all permission contracts for loading on boot!'\n\t\t)\n\n\t\treturn files\n\t}\n\n\tpublic async writeContract(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tnameReadable: string\n\t\t\tnameKebab: string\n\t\t\tnameCamel: string\n\t\t\tdescription?: string\n\t\t}\n\t) {\n\t\tconst { nameReadable, nameKebab, nameCamel, description } = options\n\n\t\tconst destination = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\t`${nameKebab}.permissions.ts`\n\t\t)\n\n\t\tconst content = this.templates.permissionContractBuilder({\n\t\t\tnameCamel,\n\t\t\tnameKebab,\n\t\t\tdescription,\n\t\t\tnameReadable,\n\t\t})\n\n\t\tconst files = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontent,\n\t\t\t'Your brand new permissions contract!'\n\t\t)\n\n\t\tawait this.lint(destination)\n\n\t\treturn files\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'permission.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.permissionPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Enable permission support in your skill.'\n\t\t)\n\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
@@ -36,7 +36,7 @@ var PersonFeature = /*#__PURE__*/function (_AbstractFeature) {
36
36
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "packageDependencies", []);
37
37
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "actionsDir", _spruceSkillUtils.diskUtil.resolvePath(__dirname, 'actions'));
38
38
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "isInstalled", function () {
39
- return _this.featureInstaller.isInstalled('skill');
39
+ return _this.features.isInstalled('skill');
40
40
  });
41
41
  return _this;
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PersonFeature.js","names":["PersonFeature","code","isRequired","diskUtil","resolvePath","__dirname","featureInstaller","isInstalled","AbstractFeature"],"sources":["../../../src/features/person/PersonFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\nexport default class PersonFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'person'\n\tpublic nameReadable = 'Person'\n\tpublic description = 'Log in, log out, etc.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic isInstalled = () => {\n\t\treturn this.featureInstaller.isInstalled('skill')\n\t}\n}\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tperson: PersonFeature\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAAuE;AAAA;AAAA,IAGlDA,aAAa;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,yFACN,QAAQ;IAAA,iGACb,QAAQ;IAAA,gGACT,uBAAuB;IAAA,iGACD,CAC1C;MACCC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA,+FAEXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,gGAEzC,YAAM;MAC1B,OAAO,MAAKC,gBAAgB,CAACC,WAAW,CAAC,OAAO,CAAC;IAClD,CAAC;IAAA;EAAA;EAAA;AAAA,EAhByCC,4BAAe;AAAA"}
1
+ {"version":3,"file":"PersonFeature.js","names":["PersonFeature","code","isRequired","diskUtil","resolvePath","__dirname","features","isInstalled","AbstractFeature"],"sources":["../../../src/features/person/PersonFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\nexport default class PersonFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'person'\n\tpublic nameReadable = 'Person'\n\tpublic description = 'Log in, log out, etc.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic isInstalled = () => {\n\t\treturn this.features.isInstalled('skill')\n\t}\n}\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tperson: PersonFeature\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAAuE;AAAA;AAAA,IAGlDA,aAAa;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,yFACN,QAAQ;IAAA,iGACb,QAAQ;IAAA,gGACT,uBAAuB;IAAA,iGACD,CAC1C;MACCC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA,+FAEXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,gGAEzC,YAAM;MAC1B,OAAO,MAAKC,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;IAC1C,CAAC;IAAA;EAAA;EAAA;AAAA,EAhByCC,4BAAe;AAAA"}
@@ -43,7 +43,7 @@ var SandboxFeature = /*#__PURE__*/function (_AbstractFeature) {
43
43
  switch (_context.prev = _context.next) {
44
44
  case 0:
45
45
  _context.next = 2;
46
- return _this.featureInstaller.isInstalled('sandbox');
46
+ return _this.features.isInstalled('sandbox');
47
47
  case 2:
48
48
  isSkillInstalled = _context.sent;
49
49
  if (!(isSkillInstalled && payload.featureCode === 'node' && payload.actionCode === 'upgrade')) {
@@ -1 +1 @@
1
- {"version":3,"file":"SandboxFeature.js","names":["SandboxFeature","options","code","isRequired","diskUtil","resolvePath","__dirname","emitter","on","payload","featureInstaller","isInstalled","isSkillInstalled","featureCode","actionCode","uiUtil","renderMasthead","ui","headline","Action","execute","AbstractFeature"],"sources":["../../../src/features/sandbox/SandboxFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport uiUtil from '../../utilities/ui.utility'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tsandbox: SandboxFeature\n\t}\n}\n\nexport default class SandboxFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'sandbox'\n\tpublic nameReadable = 'Sandbox'\n\tpublic description =\n\t\t'For getting your skill up-and-running on sandbox.mercury.spruce.ai.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'event',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.will-execute', async (payload) => {\n\t\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t'sandbox'\n\t\t\t)\n\t\t\tif (\n\t\t\t\tisSkillInstalled &&\n\t\t\t\tpayload.featureCode === 'node' &&\n\t\t\t\tpayload.actionCode === 'upgrade'\n\t\t\t) {\n\t\t\t\tuiUtil.renderMasthead({\n\t\t\t\t\tui: this.ui,\n\t\t\t\t\theadline: 'Updating sandbox support...',\n\t\t\t\t})\n\n\t\t\t\treturn this.Action('sandbox', 'setup').execute({})\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAuE;AAAA;AAAA,IASlDA,cAAc;EAAA;EAAA;EAclC,wBAAmBC,OAAsB,EAAE;IAAA;IAAA;IAC1C,0BAAMA,OAAO;IAAC,yFAdY,SAAS;IAAA,iGACd,SAAS;IAAA,gGAE9B,qEAAqE;IAAA,iGAC3B,CAC1C;MACCC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA,+FACXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAK7D,KAAK,MAAKC,OAAO,CAACC,EAAE,CAAC,sBAAsB;MAAA,yFAAE,iBAAOC,OAAO;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC3B,MAAKC,gBAAgB,CAACC,WAAW,CAC/D,SAAS,CACT;cAAA;gBAFKC,gBAAgB;gBAAA,MAIrBA,gBAAgB,IAChBH,OAAO,CAACI,WAAW,KAAK,MAAM,IAC9BJ,OAAO,CAACK,UAAU,KAAK,SAAS;kBAAA;kBAAA;gBAAA;gBAEhCC,cAAM,CAACC,cAAc,CAAC;kBACrBC,EAAE,EAAE,MAAKA,EAAE;kBACXC,QAAQ,EAAE;gBACX,CAAC,CAAC;gBAAA,iCAEK,MAAKC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAA,iCAG5C,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACT;MAAA;QAAA;MAAA;IAAA,IAAC;IAAA;EACH;EAAC;AAAA,EApC0CC,4BAAe;AAAA"}
1
+ {"version":3,"file":"SandboxFeature.js","names":["SandboxFeature","options","code","isRequired","diskUtil","resolvePath","__dirname","emitter","on","payload","features","isInstalled","isSkillInstalled","featureCode","actionCode","uiUtil","renderMasthead","ui","headline","Action","execute","AbstractFeature"],"sources":["../../../src/features/sandbox/SandboxFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport uiUtil from '../../utilities/ui.utility'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tsandbox: SandboxFeature\n\t}\n}\n\nexport default class SandboxFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'sandbox'\n\tpublic nameReadable = 'Sandbox'\n\tpublic description =\n\t\t'For getting your skill up-and-running on sandbox.mercury.spruce.ai.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'event',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.will-execute', async (payload) => {\n\t\t\tconst isSkillInstalled = await this.features.isInstalled('sandbox')\n\t\t\tif (\n\t\t\t\tisSkillInstalled &&\n\t\t\t\tpayload.featureCode === 'node' &&\n\t\t\t\tpayload.actionCode === 'upgrade'\n\t\t\t) {\n\t\t\t\tuiUtil.renderMasthead({\n\t\t\t\t\tui: this.ui,\n\t\t\t\t\theadline: 'Updating sandbox support...',\n\t\t\t\t})\n\n\t\t\t\treturn this.Action('sandbox', 'setup').execute({})\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAuE;AAAA;AAAA,IASlDA,cAAc;EAAA;EAAA;EAclC,wBAAmBC,OAAsB,EAAE;IAAA;IAAA;IAC1C,0BAAMA,OAAO;IAAC,yFAdY,SAAS;IAAA,iGACd,SAAS;IAAA,gGAE9B,qEAAqE;IAAA,iGAC3B,CAC1C;MACCC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA,+FACXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAK7D,KAAK,MAAKC,OAAO,CAACC,EAAE,CAAC,sBAAsB;MAAA,yFAAE,iBAAOC,OAAO;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC3B,MAAKC,QAAQ,CAACC,WAAW,CAAC,SAAS,CAAC;cAAA;gBAA7DC,gBAAgB;gBAAA,MAErBA,gBAAgB,IAChBH,OAAO,CAACI,WAAW,KAAK,MAAM,IAC9BJ,OAAO,CAACK,UAAU,KAAK,SAAS;kBAAA;kBAAA;gBAAA;gBAEhCC,cAAM,CAACC,cAAc,CAAC;kBACrBC,EAAE,EAAE,MAAKA,EAAE;kBACXC,QAAQ,EAAE;gBACX,CAAC,CAAC;gBAAA,iCAEK,MAAKC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAA,iCAG5C,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACT;MAAA;QAAA;MAAA;IAAA,IAAC;IAAA;EACH;EAAC;AAAA,EAlC0CC,4BAAe;AAAA"}
@@ -1,14 +1,6 @@
1
1
  import { NpmPackage } from '../../types/cli.types';
2
2
  import AbstractFeature, { FeatureDependency, FeatureOptions, InstallResults } from '../AbstractFeature';
3
3
  import { FeatureCode } from '../features.types';
4
- declare module '../../features/features.types' {
5
- interface FeatureMap {
6
- schema: SchemaFeature;
7
- }
8
- interface FeatureOptionsMap {
9
- schema: undefined;
10
- }
11
- }
12
4
  export default class SchemaFeature extends AbstractFeature {
13
5
  nameReadable: string;
14
6
  description: string;
@@ -22,3 +14,11 @@ export default class SchemaFeature extends AbstractFeature {
22
14
  afterPackageInstall(): Promise<InstallResults>;
23
15
  private writePlugin;
24
16
  }
17
+ declare module '../../features/features.types' {
18
+ interface FeatureMap {
19
+ schema: SchemaFeature;
20
+ }
21
+ interface FeatureOptionsMap {
22
+ schema: undefined;
23
+ }
24
+ }
@@ -60,11 +60,11 @@ var SchemaFeature = /*#__PURE__*/function (_AbstractFeature) {
60
60
  switch (_context.prev = _context.next) {
61
61
  case 0:
62
62
  _context.next = 2;
63
- return this.featureInstaller.isInstalled('schema');
63
+ return this.features.isInstalled('schema');
64
64
  case 2:
65
65
  isInstalled = _context.sent;
66
66
  _context.next = 5;
67
- return this.featureInstaller.isInstalled('skill');
67
+ return this.features.isInstalled('skill');
68
68
  case 5:
69
69
  isSkillInstalled = _context.sent;
70
70
  if (!(payload.featureCode === 'node' && payload.actionCode === 'upgrade' && isInstalled && isSkillInstalled)) {
@@ -102,7 +102,7 @@ var SchemaFeature = /*#__PURE__*/function (_AbstractFeature) {
102
102
  switch (_context2.prev = _context2.next) {
103
103
  case 0:
104
104
  _context2.next = 2;
105
- return this.featureInstaller.isInstalled('schema');
105
+ return this.features.isInstalled('schema');
106
106
  case 2:
107
107
  isInstalled = _context2.sent;
108
108
  if (!(payload.featureCode === 'node' && payload.actionCode === 'upgrade' && isInstalled)) {
@@ -146,7 +146,7 @@ var SchemaFeature = /*#__PURE__*/function (_AbstractFeature) {
146
146
  switch (_context3.prev = _context3.next) {
147
147
  case 0:
148
148
  _context3.next = 2;
149
- return this.featureInstaller.isInstalled('skill');
149
+ return this.features.isInstalled('skill');
150
150
  case 2:
151
151
  isSkillInstalled = _context3.sent;
152
152
  if (isSkillInstalled) {
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaFeature.js","names":["SchemaFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","handleWillExecute","bind","handleDidExecute","payload","featureInstaller","isInstalled","isSkillInstalled","featureCode","actionCode","writePlugin","files","Store","hasLocalSchemas","Action","execute","results","Writer","cwd","AbstractFeature"],"sources":["../../../src/features/schema/SchemaFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n\tInstallResults,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tschema: SchemaFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tschema: undefined\n\t}\n}\n\nexport default class SchemaFeature extends AbstractFeature {\n\tpublic nameReadable = 'Schema'\n\tpublic description = 'Define, validate, and normalize everything.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'skill', isRequired: false },\n\t\t{ code: 'node', isRequired: true },\n\t]\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/schema@latest',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-core-schemas@latest',\n\t\t},\n\t\t{ name: '@sprucelabs/resolve-path-aliases@latest', isDev: true },\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-skill-utils',\n\t\t},\n\t]\n\n\tpublic code: FeatureCode = 'schema'\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tactionCode: string\n\t\tfeatureCode: string\n\t}) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('schema')\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade' &&\n\t\t\tisInstalled &&\n\t\t\tisSkillInstalled\n\t\t) {\n\t\t\tconst files = await this.writePlugin()\n\t\t\treturn { files }\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tactionCode: string\n\t\tfeatureCode: string\n\t}) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('schema')\n\n\t\tif (\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade' &&\n\t\t\tisInstalled\n\t\t) {\n\t\t\tconst hasLocalSchemas = await this.Store('schema').hasLocalSchemas()\n\t\t\tif (hasLocalSchemas) {\n\t\t\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(): Promise<InstallResults> {\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (!isSkillInstalled) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst files = await this.writePlugin()\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async writePlugin() {\n\t\treturn this.Writer('schema').writePlugin(this.cwd)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaFeature.js","names":["SchemaFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","handleWillExecute","bind","handleDidExecute","payload","features","isInstalled","isSkillInstalled","featureCode","actionCode","writePlugin","files","Store","hasLocalSchemas","Action","execute","results","Writer","cwd","AbstractFeature"],"sources":["../../../src/features/schema/SchemaFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n\tInstallResults,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\nexport default class SchemaFeature extends AbstractFeature {\n\tpublic nameReadable = 'Schema'\n\tpublic description = 'Define, validate, and normalize everything.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'skill', isRequired: false },\n\t\t{ code: 'node', isRequired: true },\n\t]\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/schema@latest',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-core-schemas@latest',\n\t\t},\n\t\t{ name: '@sprucelabs/resolve-path-aliases@latest', isDev: true },\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-skill-utils',\n\t\t},\n\t]\n\n\tpublic code: FeatureCode = 'schema'\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tactionCode: string\n\t\tfeatureCode: string\n\t}) {\n\t\tconst isInstalled = await this.features.isInstalled('schema')\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade' &&\n\t\t\tisInstalled &&\n\t\t\tisSkillInstalled\n\t\t) {\n\t\t\tconst files = await this.writePlugin()\n\t\t\treturn { files }\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tactionCode: string\n\t\tfeatureCode: string\n\t}) {\n\t\tconst isInstalled = await this.features.isInstalled('schema')\n\n\t\tif (\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade' &&\n\t\t\tisInstalled\n\t\t) {\n\t\t\tconst hasLocalSchemas = await this.Store('schema').hasLocalSchemas()\n\t\t\tif (hasLocalSchemas) {\n\t\t\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(): Promise<InstallResults> {\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (!isSkillInstalled) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst files = await this.writePlugin()\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async writePlugin() {\n\t\treturn this.Writer('schema').writePlugin(this.cwd)\n\t}\n}\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tschema: SchemaFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tschema: undefined\n\t}\n}\n"],"mappings":"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"}
@@ -1,18 +1,6 @@
1
1
  import { FieldTemplateItem, SchemaTemplateItem } from '@sprucelabs/schema';
2
2
  import { SchemaBuilderTemplateItem, ValueTypes } from '@sprucelabs/spruce-templates';
3
3
  import AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter';
4
- interface WriteFieldTypesOptions {
5
- fieldTemplateItems: FieldTemplateItem[];
6
- }
7
- export interface GenerateSchemaTypesOptions {
8
- fieldTemplateItems: FieldTemplateItem[];
9
- schemaTemplateItems: SchemaTemplateItem[];
10
- valueTypes: ValueTypes;
11
- globalSchemaNamespace?: string;
12
- typesTemplate?: string;
13
- registerBuiltSchemas?: boolean;
14
- shouldImportCoreSchemas: boolean;
15
- }
16
4
  export default class SchemaWriter extends AbstractWriter {
17
5
  private readonly fieldTemplates;
18
6
  writeBuilder(destinationDir: string, options: SchemaBuilderTemplateItem & {
@@ -37,4 +25,16 @@ export default class SchemaWriter extends AbstractWriter {
37
25
  }): Promise<WriteResults>;
38
26
  writePlugin(cwd: string): Promise<WriteResults>;
39
27
  }
28
+ interface WriteFieldTypesOptions {
29
+ fieldTemplateItems: FieldTemplateItem[];
30
+ }
31
+ export interface GenerateSchemaTypesOptions {
32
+ fieldTemplateItems: FieldTemplateItem[];
33
+ schemaTemplateItems: SchemaTemplateItem[];
34
+ valueTypes: ValueTypes;
35
+ globalSchemaNamespace?: string;
36
+ typesTemplate?: string;
37
+ registerBuiltSchemas?: boolean;
38
+ shouldImportCoreSchemas: boolean;
39
+ }
40
40
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaWriter.js","names":["SchemaWriter","filename","templateFuncName","description","destinationDir","options","ui","startLoading","nameCamel","resolvedBuilderDestination","shouldEnableVersioning","pathUtil","resolve","versionUtil","resolveNewLatestPath","version","LATEST_HANDLEBARS","diskUtil","doesFileExist","SpruceError","code","schemaId","destination","builderContent","templates","schemaBuilder","writeFileIfChangedMixinResults","results","lint","fieldTemplateItems","fieldTemplates","fileAndFunc","resolvedDestination","path","join","contents","destinationDirOrFilename","schemaTemplateItems","valueTypes","typesTemplate","resolvedTypesDestination","resolveFilenameWithFallback","DEFAULT_SCHEMA_TYPES_FILENAME","localItems","filter","i","importFrom","length","schemaTypesContents","schemasTypes","globalSchemaNamespace","writeAllSchemas","dirname","typesFile","allSchemaResults","push","item","writeSchema","schemaResults","registerBuiltSchemas","schemaDiskUtil","resolvePath","schema","resolveRelativePath","undefined","replace","extname","schemaContents","schemaFile","shouldImportCoreSchemas","id","cwd","resolveHashSprucePath","pluginContents","schemaPlugin","AbstractWriter"],"sources":["../../../../src/features/schema/writers/SchemaWriter.ts"],"sourcesContent":["import path from 'path'\nimport pathUtil from 'path'\nimport { FieldTemplateItem, SchemaTemplateItem } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tLATEST_HANDLEBARS,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tSchemaBuilderTemplateItem,\n\tValueTypes,\n} from '@sprucelabs/spruce-templates'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter'\nimport schemaDiskUtil from '../utilities/schemaDisk.utility'\n\ninterface WriteFieldTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport interface GenerateSchemaTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n\tschemaTemplateItems: SchemaTemplateItem[]\n\tvalueTypes: ValueTypes\n\tglobalSchemaNamespace?: string\n\ttypesTemplate?: string\n\tregisterBuiltSchemas?: boolean\n\tshouldImportCoreSchemas: boolean\n}\n\nexport default class SchemaWriter extends AbstractWriter {\n\tprivate readonly fieldTemplates: {\n\t\tfilename: string\n\t\ttemplateFuncName: 'fieldsTypes' | 'fieldClassMap'\n\t\tdescription: string\n\t}[] = [\n\t\t{\n\t\t\tfilename: 'fields.types.ts',\n\t\t\ttemplateFuncName: 'fieldsTypes',\n\t\t\tdescription:\n\t\t\t\t'All the interfaces generated for every type of schema field (text, number, address, etc).',\n\t\t},\n\t\t{\n\t\t\tfilename: 'fieldClassMap.ts',\n\t\t\ttemplateFuncName: 'fieldClassMap',\n\t\t\tdescription:\n\t\t\t\t'An object that is injected into the FieldFactory and ensures 3rd party fields are integrated.',\n\t\t},\n\t]\n\n\tpublic async writeBuilder(\n\t\tdestinationDir: string,\n\t\toptions: SchemaBuilderTemplateItem & {\n\t\t\tshouldEnableVersioning?: boolean\n\t\t\tversion?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Writing builder...')\n\n\t\tconst filename = `${options.nameCamel}.builder.ts`\n\n\t\tconst resolvedBuilderDestination =\n\t\t\toptions.shouldEnableVersioning === false\n\t\t\t\t? pathUtil.resolve(destinationDir, filename)\n\t\t\t\t: versionUtil.resolveNewLatestPath(\n\t\t\t\t\t\tdestinationDir,\n\t\t\t\t\t\toptions.version ?? LATEST_HANDLEBARS,\n\t\t\t\t\t\tfilename\n\t\t\t\t )\n\n\t\tif (diskUtil.doesFileExist(resolvedBuilderDestination)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SCHEMA_EXISTS',\n\t\t\t\tschemaId: options.nameCamel,\n\t\t\t\tdestination: destinationDir,\n\t\t\t})\n\t\t}\n\n\t\tconst builderContent = this.templates.schemaBuilder(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedBuilderDestination,\n\t\t\tbuilderContent,\n\t\t\t'The source of truth for building your schemas and their types. Run spruce sync.errors when you change this.'\n\t\t)\n\n\t\tawait this.lint(resolvedBuilderDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeFieldTypes(\n\t\tdestinationDir: string,\n\t\toptions: WriteFieldTypesOptions\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Checking schema field types...')\n\n\t\tconst { fieldTemplateItems } = options\n\n\t\tlet results: WriteResults = []\n\n\t\tfor (const fileAndFunc of this.fieldTemplates) {\n\t\t\tconst { filename, templateFuncName, description } = fileAndFunc\n\n\t\t\tconst resolvedDestination = path.join(destinationDir, 'fields', filename)\n\n\t\t\tconst contents = this.templates[templateFuncName]({\n\t\t\t\tfieldTemplateItems,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedDestination,\n\t\t\t\tcontents,\n\t\t\t\tdescription,\n\t\t\t\tresults\n\t\t\t)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchemasAndTypes(\n\t\tdestinationDirOrFilename: string,\n\t\toptions: GenerateSchemaTypesOptions\n\t): Promise<WriteResults> {\n\t\tconst {\n\t\t\tfieldTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesTemplate,\n\t\t} = options\n\n\t\tconst resolvedTypesDestination = this.resolveFilenameWithFallback(\n\t\t\tdestinationDirOrFilename,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet results: WriteResults = []\n\t\tthis.ui.startLoading('Generating schema types...')\n\n\t\tconst localItems = schemaTemplateItems.filter((i) => !i.importFrom)\n\n\t\tif (localItems.length > 0) {\n\t\t\tconst schemaTypesContents = this.templates.schemasTypes({\n\t\t\t\tschemaTemplateItems: localItems,\n\t\t\t\tfieldTemplateItems,\n\t\t\t\tvalueTypes,\n\t\t\t\tglobalSchemaNamespace: options.globalSchemaNamespace,\n\t\t\t\ttypesTemplate,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedTypesDestination,\n\t\t\t\tschemaTypesContents,\n\t\t\t\t'Namespace for accessing all your schemas. Type `SpruceSchemas` in your IDE to get started. ⚡️'\n\t\t\t)\n\n\t\t\tawait this.lint(resolvedTypesDestination)\n\t\t}\n\n\t\tthis.ui.startLoading(\n\t\t\t`Checking ${schemaTemplateItems.length} schemas for changes...`\n\t\t)\n\n\t\tconst allSchemaResults = await this.writeAllSchemas(\n\t\t\tpathUtil.dirname(resolvedTypesDestination),\n\t\t\t{\n\t\t\t\t...options,\n\t\t\t\ttypesFile: resolvedTypesDestination,\n\t\t\t}\n\t\t)\n\n\t\tresults.push(...allSchemaResults)\n\n\t\treturn results\n\t}\n\n\tprivate async writeAllSchemas(\n\t\tdestinationDir: string,\n\t\toptions: GenerateSchemaTypesOptions & { typesFile?: string }\n\t): Promise<WriteResults> {\n\t\tconst results: WriteResults = []\n\n\t\tfor (const item of options.schemaTemplateItems) {\n\t\t\tconst schemaResults = await this.writeSchema(destinationDir, {\n\t\t\t\t...options,\n\t\t\t\t...item,\n\t\t\t})\n\t\t\tresults.push(...schemaResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchema(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tvalueTypes: ValueTypes\n\t\t\ttypesFile?: string\n\t\t\tregisterBuiltSchemas?: boolean\n\t\t\tshouldImportCoreSchemas: boolean\n\t\t} & SchemaTemplateItem\n\t) {\n\t\tconst {\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\tregisterBuiltSchemas = true,\n\t\t\t...item\n\t\t} = options\n\n\t\tconst resolvedDestination = schemaDiskUtil.resolvePath({\n\t\t\tdestination: destinationDir,\n\t\t\tschema: options.schema,\n\t\t})\n\n\t\tlet typesFile = options.typesFile\n\t\t\t? diskUtil.resolveRelativePath(\n\t\t\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\t\t\toptions.typesFile\n\t\t\t )\n\t\t\t: undefined\n\n\t\tif (typesFile) {\n\t\t\ttypesFile = typesFile.replace(pathUtil.extname(typesFile), '')\n\t\t}\n\n\t\tconst schemaContents = this.templates.schema({\n\t\t\t...item,\n\t\t\tregisterBuiltSchemas,\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesFile,\n\t\t\tschemaFile:\n\t\t\t\titem.importFrom && options.shouldImportCoreSchemas\n\t\t\t\t\t? `schema/imported.schema.ts.hbs`\n\t\t\t\t\t: undefined,\n\t\t})\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tschemaContents,\n\t\t\t`${\n\t\t\t\titem.schema.description ? `${item.schema.description} ` : ''\n\t\t\t}This is the schema generated by ${\n\t\t\t\titem.id\n\t\t\t}.builder.ts. AUTOGENERATED. DO NOT EDIT.`\n\t\t)\n\t}\n\n\tpublic async writeValueTypes(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tglobalSchemaNamespace?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tconst contents = this.templates.valueTypes(options)\n\t\tconst destination = pathUtil.join(destinationDir, 'tmp', 'valueType.tmp.ts')\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'For constructing what goes to the right of the : after each property in the interface.'\n\t\t)\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'schema.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.schemaPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Enable schema support in your skill.'\n\t\t)\n\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaWriter.js","names":["SchemaWriter","filename","templateFuncName","description","destinationDir","options","ui","startLoading","nameCamel","resolvedBuilderDestination","shouldEnableVersioning","pathUtil","resolve","versionUtil","resolveNewLatestPath","version","LATEST_HANDLEBARS","diskUtil","doesFileExist","SpruceError","code","schemaId","destination","builderContent","templates","schemaBuilder","writeFileIfChangedMixinResults","results","lint","fieldTemplateItems","fieldTemplates","fileAndFunc","resolvedDestination","path","join","contents","destinationDirOrFilename","schemaTemplateItems","valueTypes","typesTemplate","resolvedTypesDestination","resolveFilenameWithFallback","DEFAULT_SCHEMA_TYPES_FILENAME","localItems","filter","i","importFrom","length","schemaTypesContents","schemasTypes","globalSchemaNamespace","writeAllSchemas","dirname","typesFile","allSchemaResults","push","item","writeSchema","schemaResults","registerBuiltSchemas","schemaDiskUtil","resolvePath","schema","resolveRelativePath","undefined","replace","extname","schemaContents","schemaFile","shouldImportCoreSchemas","id","cwd","resolveHashSprucePath","pluginContents","schemaPlugin","AbstractWriter"],"sources":["../../../../src/features/schema/writers/SchemaWriter.ts"],"sourcesContent":["import path from 'path'\nimport pathUtil from 'path'\nimport { FieldTemplateItem, SchemaTemplateItem } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tLATEST_HANDLEBARS,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tSchemaBuilderTemplateItem,\n\tValueTypes,\n} from '@sprucelabs/spruce-templates'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter'\nimport schemaDiskUtil from '../utilities/schemaDisk.utility'\n\nexport default class SchemaWriter extends AbstractWriter {\n\tprivate readonly fieldTemplates: {\n\t\tfilename: string\n\t\ttemplateFuncName: 'fieldsTypes' | 'fieldClassMap'\n\t\tdescription: string\n\t}[] = [\n\t\t{\n\t\t\tfilename: 'fields.types.ts',\n\t\t\ttemplateFuncName: 'fieldsTypes',\n\t\t\tdescription:\n\t\t\t\t'All the interfaces generated for every type of schema field (text, number, address, etc).',\n\t\t},\n\t\t{\n\t\t\tfilename: 'fieldClassMap.ts',\n\t\t\ttemplateFuncName: 'fieldClassMap',\n\t\t\tdescription:\n\t\t\t\t'An object that is injected into the FieldFactory and ensures 3rd party fields are integrated.',\n\t\t},\n\t]\n\n\tpublic async writeBuilder(\n\t\tdestinationDir: string,\n\t\toptions: SchemaBuilderTemplateItem & {\n\t\t\tshouldEnableVersioning?: boolean\n\t\t\tversion?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Writing builder...')\n\n\t\tconst filename = `${options.nameCamel}.builder.ts`\n\n\t\tconst resolvedBuilderDestination =\n\t\t\toptions.shouldEnableVersioning === false\n\t\t\t\t? pathUtil.resolve(destinationDir, filename)\n\t\t\t\t: versionUtil.resolveNewLatestPath(\n\t\t\t\t\t\tdestinationDir,\n\t\t\t\t\t\toptions.version ?? LATEST_HANDLEBARS,\n\t\t\t\t\t\tfilename\n\t\t\t\t )\n\n\t\tif (diskUtil.doesFileExist(resolvedBuilderDestination)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SCHEMA_EXISTS',\n\t\t\t\tschemaId: options.nameCamel,\n\t\t\t\tdestination: destinationDir,\n\t\t\t})\n\t\t}\n\n\t\tconst builderContent = this.templates.schemaBuilder(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedBuilderDestination,\n\t\t\tbuilderContent,\n\t\t\t'The source of truth for building your schemas and their types. Run spruce sync.errors when you change this.'\n\t\t)\n\n\t\tawait this.lint(resolvedBuilderDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeFieldTypes(\n\t\tdestinationDir: string,\n\t\toptions: WriteFieldTypesOptions\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Checking schema field types...')\n\n\t\tconst { fieldTemplateItems } = options\n\n\t\tlet results: WriteResults = []\n\n\t\tfor (const fileAndFunc of this.fieldTemplates) {\n\t\t\tconst { filename, templateFuncName, description } = fileAndFunc\n\n\t\t\tconst resolvedDestination = path.join(destinationDir, 'fields', filename)\n\n\t\t\tconst contents = this.templates[templateFuncName]({\n\t\t\t\tfieldTemplateItems,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedDestination,\n\t\t\t\tcontents,\n\t\t\t\tdescription,\n\t\t\t\tresults\n\t\t\t)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchemasAndTypes(\n\t\tdestinationDirOrFilename: string,\n\t\toptions: GenerateSchemaTypesOptions\n\t): Promise<WriteResults> {\n\t\tconst {\n\t\t\tfieldTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesTemplate,\n\t\t} = options\n\n\t\tconst resolvedTypesDestination = this.resolveFilenameWithFallback(\n\t\t\tdestinationDirOrFilename,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet results: WriteResults = []\n\t\tthis.ui.startLoading('Generating schema types...')\n\n\t\tconst localItems = schemaTemplateItems.filter((i) => !i.importFrom)\n\n\t\tif (localItems.length > 0) {\n\t\t\tconst schemaTypesContents = this.templates.schemasTypes({\n\t\t\t\tschemaTemplateItems: localItems,\n\t\t\t\tfieldTemplateItems,\n\t\t\t\tvalueTypes,\n\t\t\t\tglobalSchemaNamespace: options.globalSchemaNamespace,\n\t\t\t\ttypesTemplate,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedTypesDestination,\n\t\t\t\tschemaTypesContents,\n\t\t\t\t'Namespace for accessing all your schemas. Type `SpruceSchemas` in your IDE to get started. ⚡️'\n\t\t\t)\n\n\t\t\tawait this.lint(resolvedTypesDestination)\n\t\t}\n\n\t\tthis.ui.startLoading(\n\t\t\t`Checking ${schemaTemplateItems.length} schemas for changes...`\n\t\t)\n\n\t\tconst allSchemaResults = await this.writeAllSchemas(\n\t\t\tpathUtil.dirname(resolvedTypesDestination),\n\t\t\t{\n\t\t\t\t...options,\n\t\t\t\ttypesFile: resolvedTypesDestination,\n\t\t\t}\n\t\t)\n\n\t\tresults.push(...allSchemaResults)\n\n\t\treturn results\n\t}\n\n\tprivate async writeAllSchemas(\n\t\tdestinationDir: string,\n\t\toptions: GenerateSchemaTypesOptions & { typesFile?: string }\n\t): Promise<WriteResults> {\n\t\tconst results: WriteResults = []\n\n\t\tfor (const item of options.schemaTemplateItems) {\n\t\t\tconst schemaResults = await this.writeSchema(destinationDir, {\n\t\t\t\t...options,\n\t\t\t\t...item,\n\t\t\t})\n\t\t\tresults.push(...schemaResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchema(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tvalueTypes: ValueTypes\n\t\t\ttypesFile?: string\n\t\t\tregisterBuiltSchemas?: boolean\n\t\t\tshouldImportCoreSchemas: boolean\n\t\t} & SchemaTemplateItem\n\t) {\n\t\tconst {\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\tregisterBuiltSchemas = true,\n\t\t\t...item\n\t\t} = options\n\n\t\tconst resolvedDestination = schemaDiskUtil.resolvePath({\n\t\t\tdestination: destinationDir,\n\t\t\tschema: options.schema,\n\t\t})\n\n\t\tlet typesFile = options.typesFile\n\t\t\t? diskUtil.resolveRelativePath(\n\t\t\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\t\t\toptions.typesFile\n\t\t\t )\n\t\t\t: undefined\n\n\t\tif (typesFile) {\n\t\t\ttypesFile = typesFile.replace(pathUtil.extname(typesFile), '')\n\t\t}\n\n\t\tconst schemaContents = this.templates.schema({\n\t\t\t...item,\n\t\t\tregisterBuiltSchemas,\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesFile,\n\t\t\tschemaFile:\n\t\t\t\titem.importFrom && options.shouldImportCoreSchemas\n\t\t\t\t\t? `schema/imported.schema.ts.hbs`\n\t\t\t\t\t: undefined,\n\t\t})\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tschemaContents,\n\t\t\t`${\n\t\t\t\titem.schema.description ? `${item.schema.description} ` : ''\n\t\t\t}This is the schema generated by ${\n\t\t\t\titem.id\n\t\t\t}.builder.ts. AUTOGENERATED. DO NOT EDIT.`\n\t\t)\n\t}\n\n\tpublic async writeValueTypes(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tglobalSchemaNamespace?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tconst contents = this.templates.valueTypes(options)\n\t\tconst destination = pathUtil.join(destinationDir, 'tmp', 'valueType.tmp.ts')\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'For constructing what goes to the right of the : after each property in the interface.'\n\t\t)\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'schema.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.schemaPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Enable schema support in your skill.'\n\t\t)\n\n\t\treturn results\n\t}\n}\n\ninterface WriteFieldTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n}\n\nexport interface GenerateSchemaTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n\tschemaTemplateItems: SchemaTemplateItem[]\n\tvalueTypes: ValueTypes\n\tglobalSchemaNamespace?: string\n\ttypesTemplate?: string\n\tregisterBuiltSchemas?: boolean\n\tshouldImportCoreSchemas: boolean\n}\n"],"mappings":"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"}
@@ -3,17 +3,6 @@ import { SpruceSchemas } from "./../../.spruce/schemas/schemas.types";
3
3
  import { FileDescription, NpmPackage } from '../../types/cli.types';
4
4
  import AbstractFeature, { FeatureOptions } from '../AbstractFeature';
5
5
  import { FeatureCode } from '../features.types';
6
- declare type SkillFeatureOptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema;
7
- declare type SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature;
8
- declare module '../../features/features.types' {
9
- interface FeatureMap {
10
- skill: SkillFeature;
11
- }
12
- interface FeatureOptionsMap {
13
- skill: SchemaValues<SkillFeatureOptionsSchema>;
14
- }
15
- }
16
- declare type UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions;
17
6
  export default class SkillFeature<S extends SkillFeatureOptionsSchema = SkillFeatureOptionsSchema> extends AbstractFeature<S> {
18
7
  nameReadable: string;
19
8
  code: FeatureCode;
@@ -72,4 +61,15 @@ export default class SkillFeature<S extends SkillFeatureOptionsSchema = SkillFea
72
61
  files?: undefined;
73
62
  }>;
74
63
  }
64
+ declare type SkillFeatureOptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema;
65
+ declare type SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature;
66
+ declare module '../../features/features.types' {
67
+ interface FeatureMap {
68
+ skill: SkillFeature;
69
+ }
70
+ interface FeatureOptionsMap {
71
+ skill: SchemaValues<SkillFeatureOptionsSchema>;
72
+ }
73
+ }
74
+ declare type UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions;
75
75
  export {};
@@ -114,7 +114,7 @@ var SkillFeature = /*#__PURE__*/function (_AbstractFeature) {
114
114
  name: 'AbstractSpruceFixtureTest',
115
115
  label: 'AbstractSpruceFixtureTest',
116
116
  "import": '@sprucelabs/spruce-test-fixtures',
117
- featureCode: 'skill'
117
+ featureCode: 'node'
118
118
  }]
119
119
  });
120
120
  case 1:
@@ -287,7 +287,7 @@ var SkillFeature = /*#__PURE__*/function (_AbstractFeature) {
287
287
  case 0:
288
288
  featureCode = options.featureCode, actionCode = options.actionCode, upgradeOptions = options.options;
289
289
  _context6.next = 3;
290
- return this.featureInstaller.isInstalled('skill');
290
+ return this.features.isInstalled('skill');
291
291
  case 3:
292
292
  isInstalled = _context6.sent;
293
293
  if (!(isInstalled && featureCode === 'node' && actionCode === 'upgrade')) {
@@ -1 +1 @@
1
- {"version":3,"file":"SkillFeature.js","names":["SkillFeature","options","name","version","isDev","universalDevDependencies","skillFeatureSchema","diskUtil","resolvePath","__dirname","yarn","boot","health","universalScripts","universalFileDescriptions","path","description","shouldOverwriteWhenChanged","emitter","on","handleRegisterAbstractTestClasses","bind","handleWillExecute","abstractClasses","label","featureCode","install","files","cwd","resolveDestination","destination","Store","setCurrentSkillsNamespace","validateSchemaValues","doesDirExist","createDir","skillGenerator","Writer","writeSkill","installScripts","setEngines","env","Service","set","scriptUpdater","ScriptUpdater","FromFeature","update","pkg","engines","get","all","value","actionCode","upgradeOptions","featureInstaller","isInstalled","updater","Updater","updateFiles","AbstractFeature"],"sources":["../../../src/features/skill/SkillFeature.ts"],"sourcesContent":["import { SchemaValues, validateSchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport skillFeatureSchema from '#spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema'\nimport { FileDescription, NpmPackage } from '../../types/cli.types'\nimport ScriptUpdater from '../../updaters/ScriptUpdater'\nimport AbstractFeature, { FeatureOptions } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\nimport universalDevDependencies from '../universalDevDependencies'\nimport universalFileDescriptions from '../universalFileDescriptions'\nimport universalScripts from '../universalScripts'\nimport Updater from './updaters/Updater'\n\ntype SkillFeatureOptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema\ntype SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tskill: SkillFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tskill: SchemaValues<SkillFeatureOptionsSchema>\n\t}\n}\n\ntype UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions\n\nexport default class SkillFeature<\n\tS extends SkillFeatureOptionsSchema = SkillFeatureOptionsSchema\n> extends AbstractFeature<S> {\n\tpublic nameReadable = 'Skill'\n\tpublic code: FeatureCode = 'skill'\n\tpublic description = 'The scaffolding needed to run a Skill'\n\tpublic readonly installOrderWeight = 100\n\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{ name: '@sprucelabs/error' },\n\t\t{ name: '@sprucelabs/spruce-skill-utils' },\n\t\t{ name: '@sprucelabs/spruce-skill-booter' },\n\t\t{ name: '@sprucelabs/spruce-event-utils' },\n\t\t{ name: '@sprucelabs/spruce-event-plugin' },\n\t\t{ name: '@sprucelabs/spruce-core-schemas' },\n\t\t{ name: 'dotenv' },\n\t\t{ name: 'globby', version: '^11.0.4' },\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{ name: 'tsconfig-paths', isDev: true },\n\t\t{ name: 'ts-node', isDev: true },\n\t\t...universalDevDependencies,\n\t]\n\n\tpublic optionsSchema = skillFeatureSchema as S\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tprivate engines = {\n\t\tyarn: '1.x',\n\t}\n\tpublic scripts = {\n\t\tboot: 'node build/index',\n\t\t'boot.local':\n\t\t\t'node -r ts-node/register -r tsconfig-paths/register ./src/index',\n\n\t\thealth: 'yarn boot --health',\n\t\t'health.local': 'yarn boot.local --health',\n\n\t\t...universalScripts,\n\t}\n\n\tpublic readonly fileDescriptions: FileDescription[] = [\n\t\t...universalFileDescriptions,\n\t\t{\n\t\t\tpath: 'src/index.ts',\n\t\t\tdescription: 'The file that \"boots\" the skill.',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: 'errors/SpruceError.ts',\n\t\t\tdescription: 'Starting error class that you can edit.',\n\t\t\tshouldOverwriteWhenChanged: false,\n\t\t},\n\t\t{\n\t\t\tpath: '.spruce/skill.ts',\n\t\t\tdescription: 'Used to support booting the skill.',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: '.spruce/errors/options.types.ts',\n\t\t\tdescription:\n\t\t\t\t'Holds all possible error codes and options. Will be updated as you create more errors (spruce create.error).',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: 'src/.spruce/features/event.plugin.ts',\n\t\t\tdescription:\n\t\t\t\t'Gives your skill event support through local boot events and optionall Mercury (spruce event.listen).',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t`test.register-abstract-test-classes`,\n\t\t\tthis.handleRegisterAbstractTestClasses.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async handleRegisterAbstractTestClasses() {\n\t\treturn {\n\t\t\tabstractClasses: [\n\t\t\t\t{\n\t\t\t\t\tname: 'AbstractSpruceFixtureTest',\n\t\t\t\t\tlabel: 'AbstractSpruceFixtureTest',\n\t\t\t\t\timport: '@sprucelabs/spruce-test-fixtures',\n\t\t\t\t\tfeatureCode: 'skill',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tpublic async beforePackageInstall(options: SkillFeatureOptions) {\n\t\tconst { files } = await this.install(options)\n\t\treturn { files, cwd: this.resolveDestination(options) }\n\t}\n\n\tpublic async afterPackageInstall(options: SkillFeatureOptions) {\n\t\tconst destination = this.resolveDestination(options)\n\t\tawait this.Store('skill', {\n\t\t\tcwd: destination,\n\t\t}).setCurrentSkillsNamespace(options.name)\n\t\treturn {}\n\t}\n\n\tprivate async install(options: SkillFeatureOptions) {\n\t\tvalidateSchemaValues(skillFeatureSchema, options)\n\n\t\tconst destination = this.resolveDestination(options)\n\t\tif (!diskUtil.doesDirExist(destination)) {\n\t\t\tdiskUtil.createDir(destination)\n\t\t}\n\n\t\tconst skillGenerator = this.Writer('skill')\n\n\t\tconst files = await skillGenerator.writeSkill(destination, options)\n\n\t\tawait this.installScripts(destination)\n\n\t\tthis.setEngines(destination)\n\n\t\tconst env = this.Service('env', destination)\n\t\tenv.set('SKILL_NAME', options.name)\n\n\t\treturn { files }\n\t}\n\n\tprivate resolveDestination(options: SkillFeatureOptions) {\n\t\treturn diskUtil.resolvePath(this.cwd, options.destination ?? '')\n\t}\n\n\tpublic async installScripts(destination = this.cwd) {\n\t\tconst scriptUpdater = ScriptUpdater.FromFeature(this, {\n\t\t\tcwd: destination,\n\t\t})\n\n\t\tawait scriptUpdater.update()\n\t}\n\n\tpublic setEngines(destination: string) {\n\t\tconst pkg = this.Service('pkg', destination)\n\t\tconst engines = (pkg.get('engines') as Record<string, string>) || {}\n\n\t\tfor (const name in this.engines) {\n\t\t\tconst all = this.engines\n\t\t\tengines[name] = this.engines[name as keyof typeof all]\n\t\t}\n\n\t\tpkg.set({ path: 'engines', value: engines })\n\t}\n\n\tpublic async handleWillExecute(options: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t\toptions?: UpgradeOptions\n\t}) {\n\t\tconst { featureCode, actionCode, options: upgradeOptions } = options\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tconst updater = new Updater(this, this.emitter)\n\t\t\tconst files = await updater.updateFiles(upgradeOptions ?? {})\n\t\t\treturn {\n\t\t\t\tfiles,\n\t\t\t}\n\t\t}\n\n\t\treturn {}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SkillFeature.js","names":["SkillFeature","options","name","version","isDev","universalDevDependencies","skillFeatureSchema","diskUtil","resolvePath","__dirname","yarn","boot","health","universalScripts","universalFileDescriptions","path","description","shouldOverwriteWhenChanged","emitter","on","handleRegisterAbstractTestClasses","bind","handleWillExecute","abstractClasses","label","featureCode","install","files","cwd","resolveDestination","destination","Store","setCurrentSkillsNamespace","validateSchemaValues","doesDirExist","createDir","skillGenerator","Writer","writeSkill","installScripts","setEngines","env","Service","set","scriptUpdater","ScriptUpdater","FromFeature","update","pkg","engines","get","all","value","actionCode","upgradeOptions","features","isInstalled","updater","Updater","updateFiles","AbstractFeature"],"sources":["../../../src/features/skill/SkillFeature.ts"],"sourcesContent":["import { SchemaValues, validateSchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport skillFeatureSchema from '#spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema'\nimport { FileDescription, NpmPackage } from '../../types/cli.types'\nimport ScriptUpdater from '../../updaters/ScriptUpdater'\nimport AbstractFeature, { FeatureOptions } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\nimport universalDevDependencies from '../universalDevDependencies'\nimport universalFileDescriptions from '../universalFileDescriptions'\nimport universalScripts from '../universalScripts'\nimport Updater from './updaters/Updater'\n\nexport default class SkillFeature<\n\tS extends SkillFeatureOptionsSchema = SkillFeatureOptionsSchema\n> extends AbstractFeature<S> {\n\tpublic nameReadable = 'Skill'\n\tpublic code: FeatureCode = 'skill'\n\tpublic description = 'The scaffolding needed to run a Skill'\n\tpublic readonly installOrderWeight = 100\n\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{ name: '@sprucelabs/error' },\n\t\t{ name: '@sprucelabs/spruce-skill-utils' },\n\t\t{ name: '@sprucelabs/spruce-skill-booter' },\n\t\t{ name: '@sprucelabs/spruce-event-utils' },\n\t\t{ name: '@sprucelabs/spruce-event-plugin' },\n\t\t{ name: '@sprucelabs/spruce-core-schemas' },\n\t\t{ name: 'dotenv' },\n\t\t{ name: 'globby', version: '^11.0.4' },\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{ name: 'tsconfig-paths', isDev: true },\n\t\t{ name: 'ts-node', isDev: true },\n\t\t...universalDevDependencies,\n\t]\n\n\tpublic optionsSchema = skillFeatureSchema as S\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tprivate engines = {\n\t\tyarn: '1.x',\n\t}\n\tpublic scripts = {\n\t\tboot: 'node build/index',\n\t\t'boot.local':\n\t\t\t'node -r ts-node/register -r tsconfig-paths/register ./src/index',\n\n\t\thealth: 'yarn boot --health',\n\t\t'health.local': 'yarn boot.local --health',\n\n\t\t...universalScripts,\n\t}\n\n\tpublic readonly fileDescriptions: FileDescription[] = [\n\t\t...universalFileDescriptions,\n\t\t{\n\t\t\tpath: 'src/index.ts',\n\t\t\tdescription: 'The file that \"boots\" the skill.',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: 'errors/SpruceError.ts',\n\t\t\tdescription: 'Starting error class that you can edit.',\n\t\t\tshouldOverwriteWhenChanged: false,\n\t\t},\n\t\t{\n\t\t\tpath: '.spruce/skill.ts',\n\t\t\tdescription: 'Used to support booting the skill.',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: '.spruce/errors/options.types.ts',\n\t\t\tdescription:\n\t\t\t\t'Holds all possible error codes and options. Will be updated as you create more errors (spruce create.error).',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: 'src/.spruce/features/event.plugin.ts',\n\t\t\tdescription:\n\t\t\t\t'Gives your skill event support through local boot events and optionall Mercury (spruce event.listen).',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t`test.register-abstract-test-classes`,\n\t\t\tthis.handleRegisterAbstractTestClasses.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async handleRegisterAbstractTestClasses() {\n\t\treturn {\n\t\t\tabstractClasses: [\n\t\t\t\t{\n\t\t\t\t\tname: 'AbstractSpruceFixtureTest',\n\t\t\t\t\tlabel: 'AbstractSpruceFixtureTest',\n\t\t\t\t\timport: '@sprucelabs/spruce-test-fixtures',\n\t\t\t\t\tfeatureCode: 'node',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tpublic async beforePackageInstall(options: SkillFeatureOptions) {\n\t\tconst { files } = await this.install(options)\n\t\treturn { files, cwd: this.resolveDestination(options) }\n\t}\n\n\tpublic async afterPackageInstall(options: SkillFeatureOptions) {\n\t\tconst destination = this.resolveDestination(options)\n\t\tawait this.Store('skill', {\n\t\t\tcwd: destination,\n\t\t}).setCurrentSkillsNamespace(options.name)\n\t\treturn {}\n\t}\n\n\tprivate async install(options: SkillFeatureOptions) {\n\t\tvalidateSchemaValues(skillFeatureSchema, options)\n\n\t\tconst destination = this.resolveDestination(options)\n\t\tif (!diskUtil.doesDirExist(destination)) {\n\t\t\tdiskUtil.createDir(destination)\n\t\t}\n\n\t\tconst skillGenerator = this.Writer('skill')\n\n\t\tconst files = await skillGenerator.writeSkill(destination, options)\n\n\t\tawait this.installScripts(destination)\n\n\t\tthis.setEngines(destination)\n\n\t\tconst env = this.Service('env', destination)\n\t\tenv.set('SKILL_NAME', options.name)\n\n\t\treturn { files }\n\t}\n\n\tprivate resolveDestination(options: SkillFeatureOptions) {\n\t\treturn diskUtil.resolvePath(this.cwd, options.destination ?? '')\n\t}\n\n\tpublic async installScripts(destination = this.cwd) {\n\t\tconst scriptUpdater = ScriptUpdater.FromFeature(this, {\n\t\t\tcwd: destination,\n\t\t})\n\n\t\tawait scriptUpdater.update()\n\t}\n\n\tpublic setEngines(destination: string) {\n\t\tconst pkg = this.Service('pkg', destination)\n\t\tconst engines = (pkg.get('engines') as Record<string, string>) || {}\n\n\t\tfor (const name in this.engines) {\n\t\t\tconst all = this.engines\n\t\t\tengines[name] = this.engines[name as keyof typeof all]\n\t\t}\n\n\t\tpkg.set({ path: 'engines', value: engines })\n\t}\n\n\tpublic async handleWillExecute(options: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t\toptions?: UpgradeOptions\n\t}) {\n\t\tconst { featureCode, actionCode, options: upgradeOptions } = options\n\t\tconst isInstalled = await this.features.isInstalled('skill')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tconst updater = new Updater(this, this.emitter)\n\t\t\tconst files = await updater.updateFiles(upgradeOptions ?? {})\n\t\t\treturn {\n\t\t\t\tfiles,\n\t\t\t}\n\t\t}\n\n\t\treturn {}\n\t}\n}\n\ntype SkillFeatureOptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema\ntype SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tskill: SkillFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tskill: SchemaValues<SkillFeatureOptionsSchema>\n\t}\n}\n\ntype UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RebuildAction.js","names":["optionsSchema","buildSchema","id","description","fields","shouldPlayGames","type","label","defaultValue","RebuildAction","options","validateAndNormalizeOptions","command","Service","InFlightEntertainment","start","ui","startLoading","execute","onData","data","writeStatus","resetUi","errors","summaryLines","stop","stopLoading","AbstractAction"],"sources":["../../../../src/features/skill/actions/RebuildAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport InFlightEntertainment from '../../../InFlightEntertainment'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'rebuildOptions',\n\tdescription:\n\t\t'Clear the build and node_modules folder and start from the top.',\n\tfields: {\n\t\tshouldPlayGames: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Play games',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class RebuildAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['rebuild']\n\tpublic invocationMessage = 'Rebuilding your skill... ⚡️'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst { shouldPlayGames } = this.validateAndNormalizeOptions(options)\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tif (shouldPlayGames) {\n\t\t\t\tInFlightEntertainment.start([\n\t\t\t\t\t'Rebuild sequence initialized...',\n\t\t\t\t\t'The only option is setting a new high score!',\n\t\t\t\t])\n\t\t\t} else {\n\t\t\t\tthis.ui.startLoading('Rebuilding....')\n\t\t\t}\n\n\t\t\tawait command.execute('yarn rebuild', {\n\t\t\t\tonData: (data: string) => {\n\t\t\t\t\tInFlightEntertainment?.writeStatus(data)\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tthis.resetUi()\n\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tthis.resetUi()\n\n\t\treturn {\n\t\t\tsummaryLines: [\n\t\t\t\t'☑️ node_modules cleared.',\n\t\t\t\t'☑️ node_modules installed.',\n\t\t\t\t'☑️ Build folder cleared.',\n\t\t\t\t'☑️ Build complete.',\n\t\t\t],\n\t\t}\n\t}\n\n\tprivate resetUi() {\n\t\tInFlightEntertainment.stop()\n\t\tthis.ui.stopLoading()\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAiD;AAAA;AAGjD,IAAMA,aAAa,GAAG,IAAAC,mBAAW,EAAC;EACjCC,EAAE,EAAE,gBAAgB;EACpBC,WAAW,EACV,iEAAiE;EAClEC,MAAM,EAAE;IACPC,eAAe,EAAE;MAChBC,IAAI,EAAE,SAAS;MACfC,KAAK,EAAE,YAAY;MACnBC,YAAY,EAAE;IACf;EACD;AACD,CAAC,CAAC;AAAA,IAKmBC,aAAa;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,kGACKT,aAAa;IAAA,mGAC3B,CAAC,SAAS,CAAC;IAAA,sGACR,6BAA6B;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAExD,iBAAqBU,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,wBACR,IAAI,CAACC,2BAA2B,CAACD,OAAO,CAAC,EAA7DL,eAAe,yBAAfA,eAAe;gBACjBO,OAAO,GAAG,IAAI,CAACC,OAAO,CAAC,SAAS,CAAC;gBAAA;gBAGtC,IAAIR,eAAe,EAAE;kBACpBS,iCAAqB,CAACC,KAAK,CAAC,CAC3B,iCAAiC,EACjC,8CAA8C,CAC9C,CAAC;gBACH,CAAC,MAAM;kBACN,IAAI,CAACC,EAAE,CAACC,YAAY,CAAC,gBAAgB,CAAC;gBACvC;gBAAC;gBAAA,OAEKL,OAAO,CAACM,OAAO,CAAC,cAAc,EAAE;kBACrCC,MAAM,EAAE,gBAACC,IAAY,EAAK;oBACzBN,iCAAqB,aAArBA,iCAAqB,uBAArBA,iCAAqB,CAAEO,WAAW,CAACD,IAAI,CAAC;kBACzC;gBACD,CAAC,CAAC;cAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAEF,IAAI,CAACE,OAAO,EAAE;gBAAA,iCAEP;kBACNC,MAAM,EAAE;gBACT,CAAC;cAAA;gBAGF,IAAI,CAACD,OAAO,EAAE;gBAAA,iCAEP;kBACNE,YAAY,EAAE,CACb,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,oBAAoB;gBAEtB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,mBAAkB;MACjBV,iCAAqB,CAACW,IAAI,EAAE;MAC5B,IAAI,CAACT,EAAE,CAACU,WAAW,EAAE;IACtB;EAAC;EAAA;AAAA,EA/CyCC,2BAAc;AAAA"}
1
+ {"version":3,"file":"RebuildAction.js","names":["optionsSchema","buildSchema","id","description","fields","shouldPlayGames","type","label","defaultValue","RebuildAction","options","validateAndNormalizeOptions","command","Service","InFlightEntertainment","start","ui","startLoading","execute","onData","data","writeStatus","resetUi","errors","summaryLines","stop","stopLoading","AbstractAction"],"sources":["../../../../src/features/skill/actions/RebuildAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport InFlightEntertainment from '../../../InFlightEntertainment'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'rebuildOptions',\n\tdescription:\n\t\t'Clear the build and node_modules folder and start from the top.',\n\tfields: {\n\t\tshouldPlayGames: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Play games',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class RebuildAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['rebuild']\n\tpublic invocationMessage = 'Rebuilding your skill... ⚡️'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst { shouldPlayGames } = this.validateAndNormalizeOptions(options)\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tif (shouldPlayGames) {\n\t\t\t\tInFlightEntertainment.start([\n\t\t\t\t\t'Rebuild sequence initialized...',\n\t\t\t\t\t'The only option is setting a new high score!',\n\t\t\t\t])\n\t\t\t} else {\n\t\t\t\tthis.ui.startLoading('Rebuilding....')\n\t\t\t}\n\n\t\t\tawait command.execute('yarn rebuild', {\n\t\t\t\tonData: (data: string) => {\n\t\t\t\t\tInFlightEntertainment?.writeStatus(data)\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (err: any) {\n\t\t\tthis.resetUi()\n\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tthis.resetUi()\n\n\t\treturn {\n\t\t\tsummaryLines: [\n\t\t\t\t'☑️ node_modules cleared.',\n\t\t\t\t'☑️ node_modules installed.',\n\t\t\t\t'☑️ Build folder cleared.',\n\t\t\t\t'☑️ Build complete.',\n\t\t\t],\n\t\t}\n\t}\n\n\tprivate resetUi() {\n\t\tInFlightEntertainment.stop()\n\t\tthis.ui.stopLoading()\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAiD;AAAA;AAGjD,IAAMA,aAAa,GAAG,IAAAC,mBAAW,EAAC;EACjCC,EAAE,EAAE,gBAAgB;EACpBC,WAAW,EACV,iEAAiE;EAClEC,MAAM,EAAE;IACPC,eAAe,EAAE;MAChBC,IAAI,EAAE,SAAS;MACfC,KAAK,EAAE,YAAY;MACnBC,YAAY,EAAE;IACf;EACD;AACD,CAAC,CAAC;AAAA,IAKmBC,aAAa;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,kGACKT,aAAa;IAAA,mGAC3B,CAAC,SAAS,CAAC;IAAA,sGACR,6BAA6B;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAExD,iBAAqBU,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,wBACR,IAAI,CAACC,2BAA2B,CAACD,OAAO,CAAC,EAA7DL,eAAe,yBAAfA,eAAe;gBACjBO,OAAO,GAAG,IAAI,CAACC,OAAO,CAAC,SAAS,CAAC;gBAAA;gBAGtC,IAAIR,eAAe,EAAE;kBACpBS,iCAAqB,CAACC,KAAK,CAAC,CAC3B,iCAAiC,EACjC,8CAA8C,CAC9C,CAAC;gBACH,CAAC,MAAM;kBACN,IAAI,CAACC,EAAE,CAACC,YAAY,CAAC,gBAAgB,CAAC;gBACvC;gBAAC;gBAAA,OAEKL,OAAO,CAACM,OAAO,CAAC,cAAc,EAAE;kBACrCC,MAAM,EAAE,gBAACC,IAAY,EAAK;oBACzBN,iCAAqB,aAArBA,iCAAqB,uBAArBA,iCAAqB,CAAEO,WAAW,CAACD,IAAI,CAAC;kBACzC;gBACD,CAAC,CAAC;cAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAEF,IAAI,CAACE,OAAO,EAAE;gBAAA,iCAEP;kBACNC,MAAM,EAAE;gBACT,CAAC;cAAA;gBAGF,IAAI,CAACD,OAAO,EAAE;gBAAA,iCAEP;kBACNE,YAAY,EAAE,CACb,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,oBAAoB;gBAEtB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,mBAAkB;MACjBV,iCAAqB,CAACW,IAAI,EAAE;MAC5B,IAAI,CAACT,EAAE,CAACU,WAAW,EAAE;IACtB;EAAC;EAAA;AAAA,EA/CyCC,2BAAc;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegisterAction.js","names":["optionsSchema","buildSchema","id","description","fields","nameReadable","type","label","isRequired","hint","nameKebab","RegisterAction","options","validateAndNormalizeOptions","connectToApi","client","emit","payload","name","slug","results","eventResponseUtil","getFirstResponseOrThrow","skill","summaryLines","generateSkillSummaryLines","Service","updateCurrentSkill","hints","meta","errors","AbstractAction","apiKey"],"sources":["../../../../src/features/skill/actions/RegisterAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { RegisteredSkill } from '../../../types/cli.types'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'registerSkillAction',\n\tdescription:\n\t\t'Register your skill with Mercury so you can start communicating with other skills.',\n\tfields: {\n\t\tnameReadable: {\n\t\t\ttype: 'text',\n\t\t\tlabel: `What is your skill's name?`,\n\t\t\tisRequired: true,\n\t\t\thint: 'The name people will see with their special eyes!',\n\t\t},\n\t\tnameKebab: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Namespace',\n\t\t\tisRequired: true,\n\t\t\thint: 'The namespace of your skill in-kebab-case',\n\t\t},\n\t\tdescription: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Describe your skill',\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class RegisterAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['register.skill', 'register']\n\tpublic invocationMessage = 'Registering your skill... ⚡️'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst { nameReadable, nameKebab, description } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst results = await client.emit('register-skill::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tname: nameReadable,\n\t\t\t\tslug: nameKebab,\n\t\t\t\tdescription,\n\t\t\t},\n\t\t})\n\n\t\ttry {\n\t\t\tconst { skill } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\tconst summaryLines = generateSkillSummaryLines(skill)\n\n\t\t\tthis.Service('auth').updateCurrentSkill(skill)\n\n\t\t\treturn {\n\t\t\t\tsummaryLines,\n\t\t\t\thints: [\n\t\t\t\t\t'Your skill is registered.',\n\t\t\t\t\t'You can check your .env for more details.',\n\t\t\t\t\t\"If you're ready to deploy, try `spruce deploy`. 🚀\",\n\t\t\t\t],\n\t\t\t\tmeta: {\n\t\t\t\t\tskill,\n\t\t\t\t},\n\t\t\t}\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\thints: [\n\t\t\t\t\t`If you've already registered your skill, try 'spruce login.skill'!`,\n\t\t\t\t],\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function generateSkillSummaryLines(skill: RegisteredSkill) {\n\treturn [\n\t\t`Name: ${skill.name}`,\n\t\t`Namespace: ${skill.slug}`,\n\t\t`ID: ${skill.id}`,\n\t\t`API Key: ${skill.apiKey}`,\n\t]\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AAEA;AAAiD;AAAA;AAGjD,IAAMA,aAAa,GAAG,IAAAC,mBAAW,EAAC;EACjCC,EAAE,EAAE,qBAAqB;EACzBC,WAAW,EACV,oFAAoF;EACrFC,MAAM,EAAE;IACPC,YAAY,EAAE;MACbC,IAAI,EAAE,MAAM;MACZC,KAAK,8BAA8B;MACnCC,UAAU,EAAE,IAAI;MAChBC,IAAI,EAAE;IACP,CAAC;IACDC,SAAS,EAAE;MACVJ,IAAI,EAAE,MAAM;MACZC,KAAK,EAAE,WAAW;MAClBC,UAAU,EAAE,IAAI;MAChBC,IAAI,EAAE;IACP,CAAC;IACDN,WAAW,EAAE;MACZG,IAAI,EAAE,MAAM;MACZC,KAAK,EAAE;IACR;EACD;AACD,CAAC,CAAC;AAAA,IAKmBI,cAAc;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,kGACIX,aAAa;IAAA,mGAC3B,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAAA,sGAC3B,8BAA8B;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAEzD,iBAAqBY,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,wBAEnC,IAAI,CAACC,2BAA2B,CAACD,OAAO,CAAC,EADlCP,YAAY,yBAAZA,YAAY,EAAEK,SAAS,yBAATA,SAAS,EAAEP,WAAW,yBAAXA,WAAW;gBAAA;gBAAA,OAGvB,IAAI,CAACW,YAAY,EAAE;cAAA;gBAAlCC,MAAM;gBAAA;gBAAA,OACUA,MAAM,CAACC,IAAI,CAAC,6BAA6B,EAAE;kBAChEC,OAAO,EAAE;oBACRC,IAAI,EAAEb,YAAY;oBAClBc,IAAI,EAAET,SAAS;oBACfP,WAAW,EAAXA;kBACD;gBACD,CAAC,CAAC;cAAA;gBANIiB,OAAO;gBAAA;gBAAA,wBASMC,mCAAiB,CAACC,uBAAuB,CAACF,OAAO,CAAC,EAA5DG,KAAK,yBAALA,KAAK;gBAEPC,YAAY,GAAGC,yBAAyB,CAACF,KAAK,CAAC;gBAErD,IAAI,CAACG,OAAO,CAAC,MAAM,CAAC,CAACC,kBAAkB,CAACJ,KAAK,CAAC;gBAAA,iCAEvC;kBACNC,YAAY,EAAZA,YAAY;kBACZI,KAAK,EAAE,CACN,2BAA2B,EAC3B,2CAA2C,EAC3C,oDAAoD,CACpD;kBACDC,IAAI,EAAE;oBACLN,KAAK,EAALA;kBACD;gBACD,CAAC;cAAA;gBAAA;gBAAA;gBAAA,iCAEM;kBACNK,KAAK,EAAE,sEAEN;kBACDE,MAAM,EAAE;gBACT,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA5C0CC,2BAAc;AAAA;AA+CnD,SAASN,yBAAyB,CAACF,KAAsB,EAAE;EACjE,OAAO,iBACGA,KAAK,CAACL,IAAI,wBACLK,KAAK,CAACJ,IAAI,iBACjBI,KAAK,CAACrB,EAAE,sBACHqB,KAAK,CAACS,MAAM,EACxB;AACF"}
1
+ {"version":3,"file":"RegisterAction.js","names":["optionsSchema","buildSchema","id","description","fields","nameReadable","type","label","isRequired","hint","nameKebab","RegisterAction","options","validateAndNormalizeOptions","connectToApi","client","emit","payload","name","slug","results","eventResponseUtil","getFirstResponseOrThrow","skill","summaryLines","generateSkillSummaryLines","Service","updateCurrentSkill","hints","meta","errors","AbstractAction","apiKey"],"sources":["../../../../src/features/skill/actions/RegisterAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { RegisteredSkill } from '../../../types/cli.types'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'registerSkillAction',\n\tdescription:\n\t\t'Register your skill with Mercury so you can start communicating with other skills.',\n\tfields: {\n\t\tnameReadable: {\n\t\t\ttype: 'text',\n\t\t\tlabel: `What is your skill's name?`,\n\t\t\tisRequired: true,\n\t\t\thint: 'The name people will see with their special eyes!',\n\t\t},\n\t\tnameKebab: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Namespace',\n\t\t\tisRequired: true,\n\t\t\thint: 'The namespace of your skill in-kebab-case',\n\t\t},\n\t\tdescription: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Describe your skill',\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class RegisterAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['register.skill', 'register']\n\tpublic invocationMessage = 'Registering your skill... ⚡️'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst { nameReadable, nameKebab, description } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst results = await client.emit('register-skill::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tname: nameReadable,\n\t\t\t\tslug: nameKebab,\n\t\t\t\tdescription,\n\t\t\t},\n\t\t})\n\n\t\ttry {\n\t\t\tconst { skill } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\tconst summaryLines = generateSkillSummaryLines(skill)\n\n\t\t\tthis.Service('auth').updateCurrentSkill(skill)\n\n\t\t\treturn {\n\t\t\t\tsummaryLines,\n\t\t\t\thints: [\n\t\t\t\t\t'Your skill is registered.',\n\t\t\t\t\t'You can check your .env for more details.',\n\t\t\t\t\t\"If you're ready to deploy, try `spruce deploy`. 🚀\",\n\t\t\t\t],\n\t\t\t\tmeta: {\n\t\t\t\t\tskill,\n\t\t\t\t},\n\t\t\t}\n\t\t} catch (err: any) {\n\t\t\treturn {\n\t\t\t\thints: [\n\t\t\t\t\t`If you've already registered your skill, try 'spruce login.skill'!`,\n\t\t\t\t],\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function generateSkillSummaryLines(skill: RegisteredSkill) {\n\treturn [\n\t\t`Name: ${skill.name}`,\n\t\t`Namespace: ${skill.slug}`,\n\t\t`ID: ${skill.id}`,\n\t\t`API Key: ${skill.apiKey}`,\n\t]\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AAEA;AAAiD;AAAA;AAGjD,IAAMA,aAAa,GAAG,IAAAC,mBAAW,EAAC;EACjCC,EAAE,EAAE,qBAAqB;EACzBC,WAAW,EACV,oFAAoF;EACrFC,MAAM,EAAE;IACPC,YAAY,EAAE;MACbC,IAAI,EAAE,MAAM;MACZC,KAAK,8BAA8B;MACnCC,UAAU,EAAE,IAAI;MAChBC,IAAI,EAAE;IACP,CAAC;IACDC,SAAS,EAAE;MACVJ,IAAI,EAAE,MAAM;MACZC,KAAK,EAAE,WAAW;MAClBC,UAAU,EAAE,IAAI;MAChBC,IAAI,EAAE;IACP,CAAC;IACDN,WAAW,EAAE;MACZG,IAAI,EAAE,MAAM;MACZC,KAAK,EAAE;IACR;EACD;AACD,CAAC,CAAC;AAAA,IAKmBI,cAAc;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,kGACIX,aAAa;IAAA,mGAC3B,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAAA,sGAC3B,8BAA8B;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAEzD,iBAAqBY,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,wBAEnC,IAAI,CAACC,2BAA2B,CAACD,OAAO,CAAC,EADlCP,YAAY,yBAAZA,YAAY,EAAEK,SAAS,yBAATA,SAAS,EAAEP,WAAW,yBAAXA,WAAW;gBAAA;gBAAA,OAGvB,IAAI,CAACW,YAAY,EAAE;cAAA;gBAAlCC,MAAM;gBAAA;gBAAA,OACUA,MAAM,CAACC,IAAI,CAAC,6BAA6B,EAAE;kBAChEC,OAAO,EAAE;oBACRC,IAAI,EAAEb,YAAY;oBAClBc,IAAI,EAAET,SAAS;oBACfP,WAAW,EAAXA;kBACD;gBACD,CAAC,CAAC;cAAA;gBANIiB,OAAO;gBAAA;gBAAA,wBASMC,mCAAiB,CAACC,uBAAuB,CAACF,OAAO,CAAC,EAA5DG,KAAK,yBAALA,KAAK;gBAEPC,YAAY,GAAGC,yBAAyB,CAACF,KAAK,CAAC;gBAErD,IAAI,CAACG,OAAO,CAAC,MAAM,CAAC,CAACC,kBAAkB,CAACJ,KAAK,CAAC;gBAAA,iCAEvC;kBACNC,YAAY,EAAZA,YAAY;kBACZI,KAAK,EAAE,CACN,2BAA2B,EAC3B,2CAA2C,EAC3C,oDAAoD,CACpD;kBACDC,IAAI,EAAE;oBACLN,KAAK,EAALA;kBACD;gBACD,CAAC;cAAA;gBAAA;gBAAA;gBAAA,iCAEM;kBACNK,KAAK,EAAE,sEAEN;kBACDE,MAAM,EAAE;gBACT,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA5C0CC,2BAAc;AAAA;AA+CnD,SAASN,yBAAyB,CAACF,KAAsB,EAAE;EACjE,OAAO,iBACGA,KAAK,CAACL,IAAI,wBACLK,KAAK,CAACJ,IAAI,iBACjBI,KAAK,CAACrB,EAAE,sBACHqB,KAAK,CAACS,MAAM,EACxB;AACF"}
@@ -211,8 +211,7 @@ var SkillStore = /*#__PURE__*/function (_AbstractStore) {
211
211
  }, {
212
212
  key: "getNamespaceFromPkg",
213
213
  value: function getNamespaceFromPkg() {
214
- var pkg = this.Service('pkg');
215
- var nameFromPackage = pkg.get('skill.namespace');
214
+ var nameFromPackage = this.Service('pkg').getSkillNamespace();
216
215
  if (!nameFromPackage) {
217
216
  throw new Error('You need need to set skill.namespace in the package.json');
218
217
  }