@sprucelabs/spruce-cli 15.2.24 → 15.4.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 (568) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/build/.spruce/errors/errors.types.js.map +1 -1
  3. package/build/.spruce/errors/options.types.js.map +1 -1
  4. package/build/.spruce/errors/spruceCli/actionCancelled.schema.js.map +1 -1
  5. package/build/.spruce/errors/spruceCli/bootError.schema.js.map +1 -1
  6. package/build/.spruce/errors/spruceCli/buildFailed.schema.js.map +1 -1
  7. package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js.map +1 -1
  8. package/build/.spruce/errors/spruceCli/commandAborted.schema.js.map +1 -1
  9. package/build/.spruce/errors/spruceCli/commandBlocked.schema.js.map +1 -1
  10. package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js.map +1 -1
  11. package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js.map +1 -1
  12. package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -1
  13. package/build/.spruce/errors/spruceCli/deployFailed.schema.js.map +1 -1
  14. package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js.map +1 -1
  15. package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js.map +1 -1
  16. package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js.map +1 -1
  17. package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js.map +1 -1
  18. package/build/.spruce/errors/spruceCli/failedToImport.schema.js.map +1 -1
  19. package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js.map +1 -1
  20. package/build/.spruce/errors/spruceCli/fileExists.schema.js.map +1 -1
  21. package/build/.spruce/errors/spruceCli/generic.schema.js.map +1 -1
  22. package/build/.spruce/errors/spruceCli/invalidCommand.schema.js.map +1 -1
  23. package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js.map +1 -1
  24. package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js.map +1 -1
  25. package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js.map +1 -1
  26. package/build/.spruce/errors/spruceCli/lintFailed.schema.js.map +1 -1
  27. package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js.map +1 -1
  28. package/build/.spruce/errors/spruceCli/missingDependencies.schema.js.map +1 -1
  29. package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js.map +1 -1
  30. package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js.map +1 -1
  31. package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js.map +1 -1
  32. package/build/.spruce/errors/spruceCli/notImplemented.schema.js.map +1 -1
  33. package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js.map +1 -1
  34. package/build/.spruce/errors/spruceCli/schemaExists.schema.js.map +1 -1
  35. package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js.map +1 -1
  36. package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js.map +1 -1
  37. package/build/.spruce/errors/spruceCli/skillNotFound.schema.js.map +1 -1
  38. package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js.map +1 -1
  39. package/build/.spruce/errors/spruceCli/skillViewExists.schema.js.map +1 -1
  40. package/build/.spruce/errors/spruceCli/storeExists.schema.js.map +1 -1
  41. package/build/.spruce/errors/spruceCli/testFailed.schema.js.map +1 -1
  42. package/build/.spruce/errors/spruceCli/themeExists.schema.js.map +1 -1
  43. package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js.map +1 -1
  44. package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js.map +1 -1
  45. package/build/.spruce/events/events.contract.js.map +1 -1
  46. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
  47. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
  48. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
  49. package/build/.spruce/events/heartwood/listViews.v2021_02_11.contract.js.map +1 -1
  50. package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js.map +1 -1
  51. package/build/.spruce/schemas/fields/fieldClassMap.js.map +1 -1
  52. package/build/.spruce/schemas/fields/fields.types.js.map +1 -1
  53. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitPayload.schema.js.map +1 -1
  54. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTarget.schema.js.map +1 -1
  55. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  56. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitPayload.schema.js.map +1 -1
  57. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTarget.schema.js.map +1 -1
  58. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTargetAndPayload.schema.js.map +1 -1
  59. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlResponsePayload.schema.js.map +1 -1
  60. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  61. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsResponsePayload.schema.js.map +1 -1
  62. package/build/.spruce/schemas/heartwood/v2021_02_11/getViewControllersEmitTarget.schema.js.map +1 -1
  63. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResponsePayload.schema.js.map +1 -1
  64. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResult.schema.js.map +1 -1
  65. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitPayload.schema.js.map +1 -1
  66. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  67. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsResponsePayload.schema.js.map +1 -1
  68. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/theme.schema.js.map +1 -1
  69. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/themeProps.schema.js.map +1 -1
  70. package/build/.spruce/schemas/schemas.types.js.map +1 -1
  71. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js.map +1 -1
  72. package/build/.spruce/schemas/spruce/v2020_07_22/location.schema.js.map +1 -1
  73. package/build/.spruce/schemas/spruce/v2020_07_22/message.schema.js.map +1 -1
  74. package/build/.spruce/schemas/spruce/v2020_07_22/messageSource.schema.js.map +1 -1
  75. package/build/.spruce/schemas/spruce/v2020_07_22/messageTarget.schema.js.map +1 -1
  76. package/build/.spruce/schemas/spruce/v2020_07_22/organization.schema.js.map +1 -1
  77. package/build/.spruce/schemas/spruce/v2020_07_22/person.schema.js.map +1 -1
  78. package/build/.spruce/schemas/spruce/v2020_07_22/personLocation.schema.js.map +1 -1
  79. package/build/.spruce/schemas/spruce/v2020_07_22/personOrganization.schema.js.map +1 -1
  80. package/build/.spruce/schemas/spruce/v2020_07_22/profileImage.schema.js.map +1 -1
  81. package/build/.spruce/schemas/spruce/v2020_07_22/role.schema.js.map +1 -1
  82. package/build/.spruce/schemas/spruce/v2020_07_22/sendMessage.schema.js.map +1 -1
  83. package/build/.spruce/schemas/spruce/v2020_07_22/skill.schema.js.map +1 -1
  84. package/build/.spruce/schemas/spruce/v2020_07_22/skillCreator.schema.js.map +1 -1
  85. package/build/.spruce/schemas/spruceCli/v2020_07_22/bootSkillOptions.schema.js.map +1 -1
  86. package/build/.spruce/schemas/spruceCli/v2020_07_22/createConversationTopicOptions.schema.js.map +1 -1
  87. package/build/.spruce/schemas/spruceCli/v2020_07_22/createErrorOptions.schema.js.map +1 -1
  88. package/build/.spruce/schemas/spruceCli/v2020_07_22/createOrganizationOptions.schema.js.map +1 -1
  89. package/build/.spruce/schemas/spruceCli/v2020_07_22/createSchemaOptions.schema.js.map +1 -1
  90. package/build/.spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema.js.map +1 -1
  91. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedDir.schema.js.map +1 -1
  92. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema.js.map +1 -1
  93. package/build/.spruce/schemas/spruceCli/v2020_07_22/installSkillAtOrganizationOptions.schema.js.map +1 -1
  94. package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js.map +1 -1
  95. package/build/.spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema.js.map +1 -1
  96. package/build/.spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema.js.map +1 -1
  97. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboardOptions.schema.js.map +1 -1
  98. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboarding.schema.js.map +1 -1
  99. package/build/.spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema.js.map +1 -1
  100. package/build/.spruce/schemas/spruceCli/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.schema.js.map +1 -1
  101. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupTestsOptions.schema.js.map +1 -1
  102. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema.js.map +1 -1
  103. package/build/.spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema.js.map +1 -1
  104. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncErrorOptions.schema.js.map +1 -1
  105. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema.js.map +1 -1
  106. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemaFieldsOptions.schema.js.map +1 -1
  107. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema.js.map +1 -1
  108. package/build/.spruce/schemas/spruceCli/v2020_07_22/testOptions.schema.js.map +1 -1
  109. package/build/.spruce/schemas/spruceCli/v2020_07_22/upgradeSkillOptions.schema.js.map +1 -1
  110. package/build/.spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema.js.map +1 -1
  111. package/build/.spruce/schemas/spruceEventUtils/v2021_09_13/eventSource.schema.js.map +1 -1
  112. package/build/.spruce/skill.types.js.map +1 -1
  113. package/build/GlobalEmitter.js.map +1 -1
  114. package/build/InFlightEntertainment.js.map +1 -1
  115. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
  116. package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
  117. package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
  118. package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
  119. package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
  120. package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +1 -1
  121. package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
  122. package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
  123. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  124. package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
  125. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  126. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -1
  127. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
  128. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
  129. package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
  130. package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
  131. package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
  132. package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
  133. package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
  134. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
  135. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  136. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  137. package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
  138. package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
  139. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  140. package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
  141. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
  142. package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +1 -1
  143. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  144. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  145. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  146. package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
  147. package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
  148. package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
  149. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  150. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  151. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  152. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  153. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  154. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  155. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
  156. package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
  157. package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
  158. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  159. package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
  160. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  161. package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
  162. package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
  163. package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
  164. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
  165. package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
  166. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  167. package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
  168. package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
  169. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
  170. package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
  171. package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
  172. package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
  173. package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
  174. package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
  175. package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
  176. package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
  177. package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
  178. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
  179. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  180. package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
  181. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.d.ts +1 -0
  182. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +20 -14
  183. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  184. package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
  185. package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
  186. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  187. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  188. package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
  189. package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
  190. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  191. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  192. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  193. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  194. package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
  195. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  196. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  197. package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
  198. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  199. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  200. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  201. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  202. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  203. package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
  204. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  205. package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
  206. package/build/__tests__/implementation/BuildService.test.js.map +1 -1
  207. package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
  208. package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
  209. package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
  210. package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
  211. package/build/__tests__/implementation/DataStoreStore.test.d.ts +1 -0
  212. package/build/__tests__/implementation/DataStoreStore.test.js +30 -3
  213. package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
  214. package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
  215. package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
  216. package/build/__tests__/implementation/EventStore.test.d.ts +1 -0
  217. package/build/__tests__/implementation/EventStore.test.js +61 -33
  218. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  219. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  220. package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
  221. package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
  222. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  223. package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
  224. package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
  225. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  226. package/build/__tests__/implementation/Introspection.test.js.map +1 -1
  227. package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
  228. package/build/__tests__/implementation/LintService.test.js.map +1 -1
  229. package/build/__tests__/implementation/ListenerStore.test.d.ts +4 -0
  230. package/build/__tests__/implementation/ListenerStore.test.js +56 -0
  231. package/build/__tests__/implementation/ListenerStore.test.js.map +1 -0
  232. package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
  233. package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
  234. package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
  235. package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
  236. package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
  237. package/build/__tests__/implementation/PkgService.test.js.map +1 -1
  238. package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
  239. package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
  240. package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
  241. package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
  242. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  243. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  244. package/build/__tests__/implementation/StoreFeature.test.js +1 -1
  245. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  246. package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
  247. package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
  248. package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
  249. package/build/__tests__/implementation/Widgets.test.js.map +1 -1
  250. package/build/__tests__/support/onTestFileResult.js.map +1 -1
  251. package/build/__tests__/support/scripts/first.script.js.map +1 -1
  252. package/build/__tests__/support/scripts/second.script.js.map +1 -1
  253. package/build/__tests__/support/scripts/third.test.script.js.map +1 -1
  254. package/build/addons/filePrompt.addon.js.map +1 -1
  255. package/build/cli.js.map +1 -1
  256. package/build/components/AbstractComponent.js.map +1 -1
  257. package/build/components/FormComponent.js.map +1 -1
  258. package/build/components/QuizComponent.js.map +1 -1
  259. package/build/constants.js.map +1 -1
  260. package/build/errors/SpruceError.js.map +1 -1
  261. package/build/errors/actionCancelled.builder.js.map +1 -1
  262. package/build/errors/bootError.builder.js.map +1 -1
  263. package/build/errors/buildFailed.builder.js.map +1 -1
  264. package/build/errors/cacheNotEnabled.builder.js.map +1 -1
  265. package/build/errors/commandAborted.builder.js.map +1 -1
  266. package/build/errors/commandBlocked.builder.js.map +1 -1
  267. package/build/errors/commandNotImplemented.builder.js.map +1 -1
  268. package/build/errors/createAutoloaderFailed.builder.js.map +1 -1
  269. package/build/errors/dependencyExists.builder.js.map +1 -1
  270. package/build/errors/deployFailed.builder.js.map +1 -1
  271. package/build/errors/directoryEmpty.builder.js.map +1 -1
  272. package/build/errors/directoryNotSkill.builder.js.map +1 -1
  273. package/build/errors/dockerNotStarted.builder.js.map +1 -1
  274. package/build/errors/executingCommandFailed.builder.js.map +1 -1
  275. package/build/errors/failedToImport.builder.js.map +1 -1
  276. package/build/errors/featureNotInstalled.builder.js.map +1 -1
  277. package/build/errors/fileExists.builder.js.map +1 -1
  278. package/build/errors/generic.builder.js.map +1 -1
  279. package/build/errors/invalidCommand.builder.js.map +1 -1
  280. package/build/errors/invalidEventContract.builder.js.map +1 -1
  281. package/build/errors/invalidFeatureCode.builder.js.map +1 -1
  282. package/build/errors/invalidTestDirectory.builder.js.map +1 -1
  283. package/build/errors/lintFailed.builder.js.map +1 -1
  284. package/build/errors/mercuryResponseError.builder.js.map +1 -1
  285. package/build/errors/missingDependencies.builder.js.map +1 -1
  286. package/build/errors/noOrganizationsFound.builder.js.map +1 -1
  287. package/build/errors/noSkillsRegistered.builder.js.map +1 -1
  288. package/build/errors/notImplemented.builder.js.map +1 -1
  289. package/build/errors/notLoggedIn.builder.js.map +1 -1
  290. package/build/errors/schemaExists.builder.js.map +1 -1
  291. package/build/errors/schemaFailedToImport.builder.js.map +1 -1
  292. package/build/errors/schemaTemplateItemBuildingFailed.builder.js.map +1 -1
  293. package/build/errors/skillNotFound.builder.js.map +1 -1
  294. package/build/errors/skillNotRegistered.builder.js.map +1 -1
  295. package/build/errors/skillViewExists.builder.js.map +1 -1
  296. package/build/errors/storeExists.builder.js.map +1 -1
  297. package/build/errors/testFailed.builder.js.map +1 -1
  298. package/build/errors/themeExists.builder.js.map +1 -1
  299. package/build/errors/transportAlreadyExists.builder.js.map +1 -1
  300. package/build/errors/vscodeNotInstalled.builder.js.map +1 -1
  301. package/build/features/AbstractAction.js.map +1 -1
  302. package/build/features/AbstractFeature.js.map +1 -1
  303. package/build/features/ActionExecuter.js.map +1 -1
  304. package/build/features/ActionFactory.js.map +1 -1
  305. package/build/features/ActionQuestionAsker.js.map +1 -1
  306. package/build/features/FeatureCommandAttacher.js.map +1 -1
  307. package/build/features/FeatureInstaller.js.map +1 -1
  308. package/build/features/FeatureInstallerFactory.js.map +1 -1
  309. package/build/features/OverrideActionDecorator.js.map +1 -1
  310. package/build/features/cache/CacheFeature.js.map +1 -1
  311. package/build/features/cache/actions/DisableAction.js.map +1 -1
  312. package/build/features/cache/actions/EnableAction.js.map +1 -1
  313. package/build/features/cache/constants.js.map +1 -1
  314. package/build/features/conversation/ConversationFeature.js.map +1 -1
  315. package/build/features/conversation/actions/CreateAction.js.map +1 -1
  316. package/build/features/conversation/actions/TestAction.js.map +1 -1
  317. package/build/features/conversation/stores/ConversationStore.js.map +1 -1
  318. package/build/features/conversation/writers/ConversationWriter.js.map +1 -1
  319. package/build/features/dependencies/DependencyFeature.js.map +1 -1
  320. package/build/features/dependencies/actions/AddAction.js.map +1 -1
  321. package/build/features/dependencies/actions/ManageAction.js.map +1 -1
  322. package/build/features/deploy/DeployFeature.js.map +1 -1
  323. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  324. package/build/features/deploy/writers/DeployWriter.js.map +1 -1
  325. package/build/features/error/ErrorFeature.js.map +1 -1
  326. package/build/features/error/ParentTestFinder.js.map +1 -1
  327. package/build/features/error/actions/CreateAction.js.map +1 -1
  328. package/build/features/error/actions/SyncAction.js.map +1 -1
  329. package/build/features/error/writers/ErrorWriter.js.map +1 -1
  330. package/build/features/event/EventFeature.js.map +1 -1
  331. package/build/features/event/actions/CreateAction.js.map +1 -1
  332. package/build/features/event/actions/ListenAction.js.map +1 -1
  333. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  334. package/build/features/event/actions/SyncAction.js.map +1 -1
  335. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  336. package/build/features/event/builders/EventContractBuilder.js.map +1 -1
  337. package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -1
  338. package/build/features/event/services/EventSettingsService.js.map +1 -1
  339. package/build/features/event/services/RemoteService.js.map +1 -1
  340. package/build/features/event/stores/EventStore.d.ts +1 -0
  341. package/build/features/event/stores/EventStore.js +6 -1
  342. package/build/features/event/stores/EventStore.js.map +1 -1
  343. package/build/features/event/stores/ListenerStore.d.ts +1 -0
  344. package/build/features/event/stores/ListenerStore.js +6 -1
  345. package/build/features/event/stores/ListenerStore.js.map +1 -1
  346. package/build/features/event/writers/EventWriter.js +1 -1
  347. package/build/features/event/writers/EventWriter.js.map +1 -1
  348. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  349. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  350. package/build/features/feature.utilities.js.map +1 -1
  351. package/build/features/features.types.js.map +1 -1
  352. package/build/features/log/LogFeature.js.map +1 -1
  353. package/build/features/log/actions/CreateTransportAction.js.map +1 -1
  354. package/build/features/log/writers/LogWriter.js.map +1 -1
  355. package/build/features/node/NodeFeature.js.map +1 -1
  356. package/build/features/node/actions/CreateAction.js.map +1 -1
  357. package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
  358. package/build/features/node/actions/UpgradeAction.js.map +1 -1
  359. package/build/features/node/writers/NodeWriter.js.map +1 -1
  360. package/build/features/onboard/OnboardFeature.js.map +1 -1
  361. package/build/features/onboard/ScriptLoader.js.map +1 -1
  362. package/build/features/onboard/ScriptPlayer.js.map +1 -1
  363. package/build/features/onboard/actions/OnboardAction.js.map +1 -1
  364. package/build/features/onboard/scripts/onboarding.first.script.js.map +1 -1
  365. package/build/features/onboard/scripts/onboarding.immersive.script.js.map +1 -1
  366. package/build/features/onboard/scripts/onboarding.returning.script.js.map +1 -1
  367. package/build/features/onboard/scripts/onboarding.short.script.js.map +1 -1
  368. package/build/features/onboard/scripts/todo/todo.create.skill.script.js.map +1 -1
  369. package/build/features/onboard/scripts/todo/todo.test.script.js.map +1 -1
  370. package/build/features/onboard/scripts/wrongCommand.script.js.map +1 -1
  371. package/build/features/onboard/stores/OnboardingStore.js.map +1 -1
  372. package/build/features/organization/OrganizationFeature.js.map +1 -1
  373. package/build/features/organization/actions/CreateAction.js.map +1 -1
  374. package/build/features/organization/actions/InstallAction.js.map +1 -1
  375. package/build/features/organization/stores/OrganizationStore.js.map +1 -1
  376. package/build/features/person/PersonFeature.js.map +1 -1
  377. package/build/features/person/actions/LoginAction.js.map +1 -1
  378. package/build/features/person/actions/LogoutAction.js.map +1 -1
  379. package/build/features/person/actions/WhoamiAction.js.map +1 -1
  380. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  381. package/build/features/sandbox/actions/SetupAction.js.map +1 -1
  382. package/build/features/sandbox/writers/SandboxWriter.js.map +1 -1
  383. package/build/features/schema/SchemaFeature.js.map +1 -1
  384. package/build/features/schema/ValueTypeBuilder.js.map +1 -1
  385. package/build/features/schema/actions/CreateAction.js.map +1 -1
  386. package/build/features/schema/actions/SyncAction.js.map +1 -1
  387. package/build/features/schema/actions/SyncFieldsAction.js.map +1 -1
  388. package/build/features/schema/services/SchemaService.js.map +1 -1
  389. package/build/features/schema/stores/SchemaStore.js.map +1 -1
  390. package/build/features/schema/utilities/schema.utility.js.map +1 -1
  391. package/build/features/schema/utilities/schemaDisk.utility.js.map +1 -1
  392. package/build/features/schema/utilities/schemaGenerator.utility.js.map +1 -1
  393. package/build/features/schema/writers/SchemaWriter.js +1 -1
  394. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  395. package/build/features/skill/SkillFeature.js.map +1 -1
  396. package/build/features/skill/actions/BootAction.js.map +1 -1
  397. package/build/features/skill/actions/CreateAction.js.map +1 -1
  398. package/build/features/skill/actions/DashboardAction.js.map +1 -1
  399. package/build/features/skill/actions/LoginAction.js.map +1 -1
  400. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  401. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  402. package/build/features/skill/stores/SkillStore.js.map +1 -1
  403. package/build/features/skill/updaters/Updater.js.map +1 -1
  404. package/build/features/skill/writers/SkillWriter.js.map +1 -1
  405. package/build/features/store/StoreFeature.js +1 -1
  406. package/build/features/store/StoreFeature.js.map +1 -1
  407. package/build/features/store/actions/CreateAction.js.map +1 -1
  408. package/build/features/store/actions/SyncAction.js.map +1 -1
  409. package/build/features/store/stores/StoreStore.d.ts +1 -0
  410. package/build/features/store/stores/StoreStore.js +6 -1
  411. package/build/features/store/stores/StoreStore.js.map +1 -1
  412. package/build/features/store/templateItemBuilders/StoreTemplateItemBuilder.js.map +1 -1
  413. package/build/features/store/writers/StoreWriter.js.map +1 -1
  414. package/build/features/test/TestFeature.js.map +1 -1
  415. package/build/features/test/TestLogItemGenerator.js.map +1 -1
  416. package/build/features/test/TestReporter.js.map +1 -1
  417. package/build/features/test/TestRunner.js.map +1 -1
  418. package/build/features/test/actions/CreateAction.js +1 -1
  419. package/build/features/test/actions/CreateAction.js.map +1 -1
  420. package/build/features/test/actions/SetupAction.js.map +1 -1
  421. package/build/features/test/actions/TestAction.js.map +1 -1
  422. package/build/features/test/test.types.js.map +1 -1
  423. package/build/features/test/writers/TestWriter.js.map +1 -1
  424. package/build/features/universalDevDependencies.js.map +1 -1
  425. package/build/features/universalFileDescriptions.js.map +1 -1
  426. package/build/features/universalScripts.js.map +1 -1
  427. package/build/features/validateAndNormalize.utility.d.ts +2 -2
  428. package/build/features/validateAndNormalize.utility.js +2 -2
  429. package/build/features/validateAndNormalize.utility.js.map +1 -1
  430. package/build/features/view/ViewFeature.js.map +1 -1
  431. package/build/features/view/actions/CreateAction.js.map +1 -1
  432. package/build/features/view/actions/CreateThemeAction.js.map +1 -1
  433. package/build/features/view/actions/SyncAction.js.map +1 -1
  434. package/build/features/view/actions/WatchAction.js.map +1 -1
  435. package/build/features/view/stores/ViewStore.js.map +1 -1
  436. package/build/features/view/writers/ViewWriter.js +1 -3
  437. package/build/features/view/writers/ViewWriter.js.map +1 -1
  438. package/build/features/vscode/VsCodeFeature.js.map +1 -1
  439. package/build/features/vscode/actions/SetupAction.js.map +1 -1
  440. package/build/features/vscode/services/VsCodeService.js.map +1 -1
  441. package/build/features/vscode/writers/VsCodeWriter.js.map +1 -1
  442. package/build/features/watch/WatchFeature.js.map +1 -1
  443. package/build/index.js.map +1 -1
  444. package/build/interfaces/SpyInterface.js.map +1 -1
  445. package/build/interfaces/TerminalInterface.js.map +1 -1
  446. package/build/schemas/v2020_07_22/bootSkillOptions.builder.js.map +1 -1
  447. package/build/schemas/v2020_07_22/createConversationTopicOptions.builder.js.map +1 -1
  448. package/build/schemas/v2020_07_22/createErrorOptions.builder.js.map +1 -1
  449. package/build/schemas/v2020_07_22/createOrganizationOptions.builder.js.map +1 -1
  450. package/build/schemas/v2020_07_22/createSchemaOptions.builder.js.map +1 -1
  451. package/build/schemas/v2020_07_22/createTestOptions.builder.js.map +1 -1
  452. package/build/schemas/v2020_07_22/installSkillAtOrganizationOptions.builder.js.map +1 -1
  453. package/build/schemas/v2020_07_22/listenEventOptions.builder.js.map +1 -1
  454. package/build/schemas/v2020_07_22/namedTemplateItem.builder.js.map +1 -1
  455. package/build/schemas/v2020_07_22/nodeFeatureOptions.builder.js.map +1 -1
  456. package/build/schemas/v2020_07_22/onboardOptions.builder.js.map +1 -1
  457. package/build/schemas/v2020_07_22/onboarding.builder.js.map +1 -1
  458. package/build/schemas/v2020_07_22/personWithToken.builder.js.map +1 -1
  459. package/build/schemas/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.builder.js.map +1 -1
  460. package/build/schemas/v2020_07_22/setupTestsOptions.builder.js.map +1 -1
  461. package/build/schemas/v2020_07_22/setupVscodeOptions.builder.js.map +1 -1
  462. package/build/schemas/v2020_07_22/skillFeature.builder.js.map +1 -1
  463. package/build/schemas/v2020_07_22/syncErrorOptions.builder.js.map +1 -1
  464. package/build/schemas/v2020_07_22/syncEventOptions.builder.js.map +1 -1
  465. package/build/schemas/v2020_07_22/syncSchemaFieldsOptions.builder.js.map +1 -1
  466. package/build/schemas/v2020_07_22/syncSchemasOptions.builder.js.map +1 -1
  467. package/build/schemas/v2020_07_22/testOptions.builder.js.map +1 -1
  468. package/build/schemas/v2020_07_22/upgradeSkillOptions.builder.js.map +1 -1
  469. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
  470. package/build/services/BuildService.js.map +1 -1
  471. package/build/services/CommandService.js.map +1 -1
  472. package/build/services/DependencyService.js.map +1 -1
  473. package/build/services/GameService.js.map +1 -1
  474. package/build/services/ImportService.js.map +1 -1
  475. package/build/services/LintService.js.map +1 -1
  476. package/build/services/PkgService.js.map +1 -1
  477. package/build/services/ServiceFactory.js.map +1 -1
  478. package/build/services/TypeCheckerService.js.map +1 -1
  479. package/build/stores/AbstractLocalStore.js.map +1 -1
  480. package/build/stores/AbstractStore.js.map +1 -1
  481. package/build/stores/StoreFactory.js.map +1 -1
  482. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  483. package/build/templateItemBuilders/FieldTemplateItemBuilder.js.map +1 -1
  484. package/build/templateItemBuilders/SchemaTemplateItemBuilder.js.map +1 -1
  485. package/build/tests/AbstractCliTest.js.map +1 -1
  486. package/build/tests/AbstractErrorTest.js.map +1 -1
  487. package/build/tests/AbstractEventTest.js.map +1 -1
  488. package/build/tests/AbstractSchemaTest.js.map +1 -1
  489. package/build/tests/AbstractSkillTest.js.map +1 -1
  490. package/build/tests/AbstractTestTest.js.map +1 -1
  491. package/build/tests/CommandFaker.d.ts +2 -1
  492. package/build/tests/CommandFaker.js +13 -7
  493. package/build/tests/CommandFaker.js.map +1 -1
  494. package/build/tests/JestJsonParser.js.map +1 -1
  495. package/build/tests/MockProgramFactory.js.map +1 -1
  496. package/build/tests/buildTestCache.js.map +1 -1
  497. package/build/tests/cleanTestCache.js.map +1 -1
  498. package/build/tests/cleanTestData.js.map +1 -1
  499. package/build/tests/constants.js.map +1 -1
  500. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  501. package/build/tests/fixtures/MercuryFixture.js.map +1 -1
  502. package/build/tests/fixtures/OrganizationFixture.js.map +1 -1
  503. package/build/tests/fixtures/PersonFixture.js.map +1 -1
  504. package/build/tests/fixtures/SkillFixture.js.map +1 -1
  505. package/build/tests/fixtures/ViewFixture.js.map +1 -1
  506. package/build/tests/utilities/test.utility.js.map +1 -1
  507. package/build/tests/utilities/uiAssert.utility.js.map +1 -1
  508. package/build/types/apiClient.types.js.map +1 -1
  509. package/build/types/cli.types.js.map +1 -1
  510. package/build/types/graphicsInterface.types.js.map +1 -1
  511. package/build/updaters/ScriptUpdater.js.map +1 -1
  512. package/build/utilities/action.utility.js.map +1 -1
  513. package/build/utilities/apiClient.utility.js.map +1 -1
  514. package/build/utilities/argParser.utility.js.map +1 -1
  515. package/build/utilities/commander.utility.js.map +1 -1
  516. package/build/utilities/duration.utility.js.map +1 -1
  517. package/build/utilities/eventContractCleaner.utility.js.map +1 -1
  518. package/build/utilities/form.utility.js.map +1 -1
  519. package/build/utilities/introspection.utility.js.map +1 -1
  520. package/build/utilities/isCi.js.map +1 -1
  521. package/build/utilities/tsConfig.utility.js.map +1 -1
  522. package/build/utilities/ui.utility.js.map +1 -1
  523. package/build/widgets/Theme.js.map +1 -1
  524. package/build/widgets/WidgetFactory.js.map +1 -1
  525. package/build/widgets/keySelectChoices.js.map +1 -1
  526. package/build/widgets/terminalKit/TKButtonWidget.js.map +1 -1
  527. package/build/widgets/terminalKit/TkBaseWidget.js.map +1 -1
  528. package/build/widgets/terminalKit/TkInputWidget.js.map +1 -1
  529. package/build/widgets/terminalKit/TkLayoutCellWidget.js.map +1 -1
  530. package/build/widgets/terminalKit/TkLayoutWidget.js.map +1 -1
  531. package/build/widgets/terminalKit/TkMenuBarWidget.js.map +1 -1
  532. package/build/widgets/terminalKit/TkPopupWidget.js.map +1 -1
  533. package/build/widgets/terminalKit/TkProgressBarWidget.js.map +1 -1
  534. package/build/widgets/terminalKit/TkTextWidget.js.map +1 -1
  535. package/build/widgets/terminalKit/TkWindowWidget.js.map +1 -1
  536. package/build/widgets/terminalKit/termKit.utility.js.map +1 -1
  537. package/build/widgets/types/button.types.js.map +1 -1
  538. package/build/widgets/types/factory.types.js.map +1 -1
  539. package/build/widgets/types/input.types.js.map +1 -1
  540. package/build/widgets/types/layout.types.js.map +1 -1
  541. package/build/widgets/types/menuBar.types.js.map +1 -1
  542. package/build/widgets/types/popup.types.js.map +1 -1
  543. package/build/widgets/types/progressBar.types.js.map +1 -1
  544. package/build/widgets/types/table.types.js.map +1 -1
  545. package/build/widgets/types/text.types.js.map +1 -1
  546. package/build/widgets/types/widgets.types.js.map +1 -1
  547. package/build/widgets/types/window.types.js.map +1 -1
  548. package/build/widgets/widget.utilities.js.map +1 -1
  549. package/build/writers/AbstractWriter.js.map +1 -1
  550. package/build/writers/WriterFactory.js.map +1 -1
  551. package/package.json +36 -36
  552. package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +21 -7
  553. package/src/__tests__/implementation/DataStoreStore.test.ts +8 -0
  554. package/src/__tests__/implementation/EventStore.test.ts +14 -0
  555. package/src/__tests__/implementation/ListenerStore.test.ts +14 -0
  556. package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
  557. package/src/features/AbstractAction.ts +2 -2
  558. package/src/features/event/builders/EventContractBuilder.ts +2 -2
  559. package/src/features/event/stores/EventStore.ts +11 -8
  560. package/src/features/event/stores/ListenerStore.ts +5 -3
  561. package/src/features/event/writers/EventWriter.ts +1 -1
  562. package/src/features/schema/writers/SchemaWriter.ts +1 -1
  563. package/src/features/store/StoreFeature.ts +1 -1
  564. package/src/features/store/stores/StoreStore.ts +5 -1
  565. package/src/features/test/actions/CreateAction.ts +1 -1
  566. package/src/features/validateAndNormalize.utility.ts +2 -2
  567. package/src/features/view/writers/ViewWriter.ts +3 -2
  568. package/src/tests/CommandFaker.ts +9 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/skillViewExists.builder.ts"],"names":["id","name","description","fields","type","isRequired"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;AAC/BA,EAAAA,EAAE,EAAE,iBAD2B;AAE/BC,EAAAA,IAAI,EAAE,mBAFyB;AAG/BC,EAAAA,WAAW,EAAE,EAHkB;AAI/BC,EAAAA,MAAM,EAAE;AACPF,IAAAA,IAAI,EAAE;AACLG,MAAAA,IAAI,EAAE,MADD;AAELC,MAAAA,UAAU,EAAE;AAFP;AADC;AAJuB,CAAjB,C","sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillViewExists',\n\tname: 'Skill view exists',\n\tdescription: '',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"file":"skillViewExists.builder.js"}
1
+ {"version":3,"file":"skillViewExists.builder.js","names":["id","name","description","fields","type","isRequired"],"sources":["../../src/errors/skillViewExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillViewExists',\n\tname: 'Skill view exists',\n\tdescription: '',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,iBAD2B;EAE/BC,IAAI,EAAE,mBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPF,IAAI,EAAE;MACLG,IAAI,EAAE,MADD;MAELC,UAAU,EAAE;IAFP;EADC;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/storeExists.builder.ts"],"names":["id","name","description","fields"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;AAC/BA,EAAAA,EAAE,EAAE,aAD2B;AAE/BC,EAAAA,IAAI,EAAE,cAFyB;AAG/BC,EAAAA,WAAW,EAAE,EAHkB;AAI/BC,EAAAA,MAAM,EAAE;AAJuB,CAAjB,C","sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'storeExists',\n\tname: 'Store exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"file":"storeExists.builder.js"}
1
+ {"version":3,"file":"storeExists.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/storeExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'storeExists',\n\tname: 'Store exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,aAD2B;EAE/BC,IAAI,EAAE,cAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/testFailed.builder.ts"],"names":["id","name","description","fields","fileName","type","isRequired","testName","errorMessage"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;AAC/BA,EAAAA,EAAE,EAAE,YAD2B;AAE/BC,EAAAA,IAAI,EAAE,aAFyB;AAG/BC,EAAAA,WAAW,EAAE,EAHkB;AAI/BC,EAAAA,MAAM,EAAE;AACPC,IAAAA,QAAQ,EAAE;AACTC,MAAAA,IAAI,EAAE,MADG;AAETC,MAAAA,UAAU,EAAE;AAFH,KADH;AAKPC,IAAAA,QAAQ,EAAE;AACTF,MAAAA,IAAI,EAAE,MADG;AAETC,MAAAA,UAAU,EAAE;AAFH,KALH;AASPE,IAAAA,YAAY,EAAE;AACbH,MAAAA,IAAI,EAAE,MADO;AAEbC,MAAAA,UAAU,EAAE;AAFC;AATP;AAJuB,CAAjB,C","sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'testFailed',\n\tname: 'Test failed',\n\tdescription: '',\n\tfields: {\n\t\tfileName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\ttestName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\terrorMessage: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"file":"testFailed.builder.js"}
1
+ {"version":3,"file":"testFailed.builder.js","names":["id","name","description","fields","fileName","type","isRequired","testName","errorMessage"],"sources":["../../src/errors/testFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'testFailed',\n\tname: 'Test failed',\n\tdescription: '',\n\tfields: {\n\t\tfileName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\ttestName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\terrorMessage: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,YAD2B;EAE/BC,IAAI,EAAE,aAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,QAAQ,EAAE;MACTC,IAAI,EAAE,MADG;MAETC,UAAU,EAAE;IAFH,CADH;IAKPC,QAAQ,EAAE;MACTF,IAAI,EAAE,MADG;MAETC,UAAU,EAAE;IAFH,CALH;IASPE,YAAY,EAAE;MACbH,IAAI,EAAE,MADO;MAEbC,UAAU,EAAE;IAFC;EATP;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/themeExists.builder.ts"],"names":["id","name","description","fields"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;AAC/BA,EAAAA,EAAE,EAAE,aAD2B;AAE/BC,EAAAA,IAAI,EAAE,cAFyB;AAG/BC,EAAAA,WAAW,EAAE,EAHkB;AAI/BC,EAAAA,MAAM,EAAE;AAJuB,CAAjB,C","sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'themeExists',\n\tname: 'Theme exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"file":"themeExists.builder.js"}
1
+ {"version":3,"file":"themeExists.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/themeExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'themeExists',\n\tname: 'Theme exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,aAD2B;EAE/BC,IAAI,EAAE,cAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/transportAlreadyExists.builder.ts"],"names":["id","name","fields","type","label","isRequired"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;AAC/BA,EAAAA,EAAE,EAAE,wBAD2B;AAE/BC,EAAAA,IAAI,EAAE,0BAFyB;AAG/BC,EAAAA,MAAM,EAAE;AACPD,IAAAA,IAAI,EAAE;AACLE,MAAAA,IAAI,EAAE,MADD;AAELC,MAAAA,KAAK,EAAE,gBAFF;AAGLC,MAAAA,UAAU,EAAE;AAHP;AADC;AAHuB,CAAjB,C","sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'transportAlreadyExists',\n\tname: 'transport already exists',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Transport name',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"file":"transportAlreadyExists.builder.js"}
1
+ {"version":3,"file":"transportAlreadyExists.builder.js","names":["id","name","fields","type","label","isRequired"],"sources":["../../src/errors/transportAlreadyExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'transportAlreadyExists',\n\tname: 'transport already exists',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Transport name',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,wBAD2B;EAE/BC,IAAI,EAAE,0BAFyB;EAG/BC,MAAM,EAAE;IACPD,IAAI,EAAE;MACLE,IAAI,EAAE,MADD;MAELC,KAAK,EAAE,gBAFF;MAGLC,UAAU,EAAE;IAHP;EADC;AAHuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/vscodeNotInstalled.builder.ts"],"names":["id","name","description","fields"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;AAC/BA,EAAAA,EAAE,EAAE,oBAD2B;AAE/BC,EAAAA,IAAI,EAAE,sBAFyB;AAG/BC,EAAAA,WAAW,EAAE,EAHkB;AAI/BC,EAAAA,MAAM,EAAE;AAJuB,CAAjB,C","sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'vscodeNotInstalled',\n\tname: 'vscode not installed',\n\tdescription: '',\n\tfields: {},\n})\n"],"file":"vscodeNotInstalled.builder.js"}
1
+ {"version":3,"file":"vscodeNotInstalled.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/vscodeNotInstalled.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'vscodeNotInstalled',\n\tname: 'vscode not installed',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,oBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/AbstractAction.ts"],"names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizeUtil","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AA8BA;;;;;;IAE8BA,c;AAoB7B,0BAAmBC,OAAnB,EAA2C;AAAA;AAAA;AAAA,6DAhBA,EAgBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC1C,SAAKC,GAAL,GAAWD,OAAO,CAACC,GAAnB;AACA,SAAKC,SAAL,GAAiBF,OAAO,CAACE,SAAzB;AACA,SAAKC,MAAL,GAAcH,OAAO,CAACG,MAAtB;AACA,SAAKC,YAAL,GAAoBJ,OAAO,CAACI,YAA5B;AACA,SAAKC,cAAL,GAAsBL,OAAO,CAACK,cAA9B;AACA,SAAKC,gBAAL,GAAwBN,OAAO,CAACM,gBAAhC;AACA,SAAKC,EAAL,GAAUP,OAAO,CAACO,EAAlB;AACA,SAAKC,aAAL,GAAqBR,OAAO,CAACQ,aAA7B;AACA,SAAKC,gBAAL,GAAwBT,OAAO,CAACS,gBAAhC;AACA,SAAKC,OAAL,GAAeV,OAAO,CAACU,OAAvB;AACA,SAAKC,cAAL,GAAsBX,OAAO,CAACW,cAA9B;AACA;;;;WAMD,gBAAiBC,WAAjB,EAAsCC,UAAtC,EAA0D;AACzD,aAAO,KAAKF,cAAL,CAAoBG,MAApB,CAA2BF,WAA3B,EAA+CC,UAA/C,CAAP;AACA;;;;;;;;;;;;;MAED,UAAkCE,IAAlC,EAA2Cd,GAA3C,EAAwE;AACvE,aAAO,KAAKI,cAAL,CAAoBW,OAApB,CAA4Bf,GAA5B,aAA4BA,GAA5B,cAA4BA,GAA5B,GAAmC,KAAKA,GAAxC,EAA6Cc,IAA7C,CAAP;AACA,K;;;WAED,eACCE,IADD,EAECjB,OAFD,EAGe;AACd,aAAO,KAAKI,YAAL,CAAkBc,KAAlB,CAAwBD,IAAxB;AAAgChB,QAAAA,GAAG,EAAE,KAAKA;AAA1C,SAAkDD,OAAlD,EAAP;AACA;;;WAED,gBACCiB,IADD,EAECjB,OAFD,EAGgB;AACf,aAAO,KAAKQ,aAAL,CAAmBW,MAAnB,CAA0BF,IAA1B;AACNG,QAAAA,gBAAgB,EAAE,KAAKjB,MAAL,CAAYiB,gBADxB;AAENC,QAAAA,MAAM,EAAE,KAAKL,OAAL,CAAa,MAAb;AAFF,SAGHhB,OAHG,EAAP;AAKA;;;WAED,oBAA4CiB,IAA5C,EAAqD;AACpD,aAAO,KAAKX,gBAAL,CAAsBgB,UAAtB,CAAiCL,IAAjC,CAAP;AACA;;;WAED,2BAA2C;AAC1C,aAAO,KAAKX,gBAAL,CAAsBiB,WAAtB,EAAP;AACA;;;WAED,qCAAsCvB,OAAtC,EAAuE;AACtE,UAAMwB,MAAM,GAAG,KAAKC,aAApB;AACA,aAAOC,iCAAyBC,oBAAzB,CAA8CH,MAA9C,EAAsDxB,OAAtD,CAAP;AACA;;;;0GAED,iBACC4B,mBADD,EAECC,mBAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAIKC,gBAAAA,eAJL,GAIuBC,8BAAYC,eAAZ,CACrBJ,mBADqB,aACrBA,mBADqB,cACrBA,mBADqB,GACEK,SADF,EAEpBC,UANH;;AAAA,oBAQMN,mBARN;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAS0B,KAAKO,wCAAL,CACvBN,mBADuB,EAEvBC,eAFuB,CAT1B;;AAAA;AASEA,gBAAAA,eATF;;AAAA;AAcCC,8CAAYK,kBAAZ,CAA+BN,eAA/B;;AAdD,iDAgBQC,8BAAYC,eAAZ,CAA4BF,eAA5B,EAA6CO,QAhBrD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oIAmBA,kBACCR,mBADD,EAECS,eAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAIOC,gBAAAA,QAJP,GAIkBR,8BAAYS,cAAZ,CAA2BX,mBAA3B,CAJlB;AAKOY,gBAAAA,aALP,GAKuBV,8BAAYC,eAAZ,EALvB;AAOKU,gBAAAA,OAPL,GAOeJ,eAPf;AAQOK,gBAAAA,eARP,GAQyB,CAAC,CAACJ,QAAQ,CAACK,IAAT,CACzB,UAACF,OAAD;AAAA,yBAAaA,OAAO,CAACL,QAAR,KAAqBI,aAAa,CAACJ,QAAhD;AAAA,iBADyB,CAR3B;AAWOQ,gBAAAA,OAXP,GAWiB,EAXjB;;AAaC,oBAAI,CAACF,eAAL,EAAsB;AACrBE,kBAAAA,OAAO,CAACC,IAAR,CAAa;AACZC,oBAAAA,KAAK,EAAE,aADK;AAEZC,oBAAAA,KAAK,EAAEP,aAAa,CAACJ;AAFT,mBAAb;AAIA;;AAEDQ,gBAAAA,OAAO,CAACC,IAAR,OAAAD,OAAO,sCACHN,QAAQ,CACTU,IADC,CACI,UAACC,CAAD,EAAIC,CAAJ,EAAU;AACf,yBAAOD,CAAC,CAACE,QAAF,GAAaD,CAAC,CAACC,QAAf,GAA0B,CAAC,CAA3B,GAA+B,CAAtC;AACA,iBAHC,EAIDC,GAJC,CAIG,UAACX,OAAD;AAAA,yBAAc;AAClBM,oBAAAA,KAAK,EAAEN,OAAO,CAACL,QADG;AAElBU,oBAAAA,KAAK,EAAEL,OAAO,CAACL;AAFG,mBAAd;AAAA,iBAJH,CADG,EAAP;;AApBD,sBA+BKE,QAAQ,CAACe,MAAT,GAAkB,CA/BvB;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAgCkB,KAAK/C,EAAL,CAAQgD,MAAR,CAAe;AAC9BxC,kBAAAA,IAAI,EAAE,QADwB;AAE9BgC,kBAAAA,KAAK,EAAE,SAFuB;AAG9BS,kBAAAA,IAAI,EAAE,wCAHwB;AAI9BC,kBAAAA,UAAU,EAAE,IAJkB;AAK9BzD,kBAAAA,OAAO,EAAE;AACR6C,oBAAAA,OAAO,EAAPA;AADQ;AALqB,iBAAf,CAhClB;;AAAA;AAgCEH,gBAAAA,OAhCF;;AAAA;AAAA,kDA0CQA,OA1CR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wGA6CA,kBACC1C,OADD;AAAA;AAAA;AAAA;AAAA;AAAA,kDAGQ,KAAKS,gBAAL,CAAsBT,OAAtB,CAHR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O","sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizeUtil from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected featureInstaller: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.featureInstaller.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizeUtil.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"file":"AbstractAction.js"}
1
+ {"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected featureInstaller: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.featureInstaller.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizer.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/AbstractFeature.ts"],"names":["AbstractFeature","options","cwd","serviceFactory","templates","actionFactory","storeFactory","writerFactory","WriterFactory","ui","settings","Service","linter","emitter","featureInstaller","apiClientFactory","actionExecuter","featureCode","actionCode","Action","_options","type","code","Writer","fileDescriptions","getFeature","actionsDir","actionCodes","pathUtil","join","matches","codes","match","generatedCode","featuresUtil","filePathToActionCode","push","Store"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport globby from 'globby'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { NpmPackage, GeneratedFile, FileDescription } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport ActionExecuter from './ActionExecuter'\nimport ActionFactory from './ActionFactory'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\n\nexport interface InstallResults {\n\tfiles?: GeneratedFile[]\n\tcwd?: string\n}\n\nexport interface FeatureDependency {\n\tisRequired: boolean\n\tcode: FeatureCode\n}\n\nexport interface FeatureOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\ttemplates: Templates\n\tstoreFactory: StoreFactory\n\tactionFactory?: ActionFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tapiClientFactory: ApiClientFactory\n\tactionExecuter: ActionExecuter\n}\n\nexport default abstract class AbstractFeature<\n\tS extends Schema | undefined = Schema | undefined\n> implements ServiceProvider\n{\n\tpublic abstract description: string\n\tpublic readonly dependencies: FeatureDependency[] = []\n\tpublic readonly packageDependencies: NpmPackage[] = []\n\tpublic readonly optionsSchema?: S\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled?(): Promise<boolean>\n\n\tpublic abstract readonly code: FeatureCode\n\tpublic abstract readonly nameReadable: string\n\tpublic readonly installOrderWeight: number = 0\n\n\tpublic cwd: string\n\tpublic scripts: Record<string, any> = {}\n\tpublic actionsDir: string | undefined\n\tprotected actionFactory?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected featureInstaller: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\tprivate actionCodes?: string[]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.templates = options.templates\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writerFactory = new WriterFactory({\n\t\t\ttemplates: this.templates,\n\t\t\tui: options.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t\tlinter: this.Service('lint'),\n\t\t})\n\t\tthis.emitter = options.emitter\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic async beforePackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tpublic getFeature<Code extends FeatureCode>(code: Code) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async getAvailableActionCodes(): Promise<string[]> {\n\t\tif (!this.actionsDir) {\n\t\t\treturn []\n\t\t}\n\n\t\tif (!this.actionCodes) {\n\t\t\tconst matches: string[] = await globby(\n\t\t\t\tpathUtil.join(this.actionsDir, '**/*Action.js')\n\t\t\t)\n\n\t\t\tconst codes: string[] = []\n\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst generatedCode = featuresUtil.filePathToActionCode(match)\n\t\t\t\tcodes.push(generatedCode)\n\t\t\t}\n\n\t\t\tthis.actionCodes = codes\n\t\t}\n\n\t\treturn this.actionCodes\n\t}\n\n\tpublic Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"file":"AbstractFeature.js"}
1
+ {"version":3,"file":"AbstractFeature.js","names":["AbstractFeature","options","cwd","serviceFactory","templates","actionFactory","storeFactory","writerFactory","WriterFactory","ui","settings","Service","linter","emitter","featureInstaller","apiClientFactory","actionExecuter","featureCode","actionCode","Action","_options","type","code","Writer","fileDescriptions","getFeature","actionsDir","actionCodes","pathUtil","join","matches","codes","match","generatedCode","featuresUtil","filePathToActionCode","push","Store"],"sources":["../../src/features/AbstractFeature.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport globby from 'globby'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { NpmPackage, GeneratedFile, FileDescription } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport ActionExecuter from './ActionExecuter'\nimport ActionFactory from './ActionFactory'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\n\nexport interface InstallResults {\n\tfiles?: GeneratedFile[]\n\tcwd?: string\n}\n\nexport interface FeatureDependency {\n\tisRequired: boolean\n\tcode: FeatureCode\n}\n\nexport interface FeatureOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\ttemplates: Templates\n\tstoreFactory: StoreFactory\n\tactionFactory?: ActionFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tapiClientFactory: ApiClientFactory\n\tactionExecuter: ActionExecuter\n}\n\nexport default abstract class AbstractFeature<\n\tS extends Schema | undefined = Schema | undefined\n> implements ServiceProvider\n{\n\tpublic abstract description: string\n\tpublic readonly dependencies: FeatureDependency[] = []\n\tpublic readonly packageDependencies: NpmPackage[] = []\n\tpublic readonly optionsSchema?: S\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled?(): Promise<boolean>\n\n\tpublic abstract readonly code: FeatureCode\n\tpublic abstract readonly nameReadable: string\n\tpublic readonly installOrderWeight: number = 0\n\n\tpublic cwd: string\n\tpublic scripts: Record<string, any> = {}\n\tpublic actionsDir: string | undefined\n\tprotected actionFactory?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected featureInstaller: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\tprivate actionCodes?: string[]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.templates = options.templates\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writerFactory = new WriterFactory({\n\t\t\ttemplates: this.templates,\n\t\t\tui: options.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t\tlinter: this.Service('lint'),\n\t\t})\n\t\tthis.emitter = options.emitter\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic async beforePackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tpublic getFeature<Code extends FeatureCode>(code: Code) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async getAvailableActionCodes(): Promise<string[]> {\n\t\tif (!this.actionsDir) {\n\t\t\treturn []\n\t\t}\n\n\t\tif (!this.actionCodes) {\n\t\t\tconst matches: string[] = await globby(\n\t\t\t\tpathUtil.join(this.actionsDir, '**/*Action.js')\n\t\t\t)\n\n\t\t\tconst codes: string[] = []\n\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst generatedCode = featuresUtil.filePathToActionCode(match)\n\t\t\t\tcodes.push(generatedCode)\n\t\t\t}\n\n\t\t\tthis.actionCodes = codes\n\t\t}\n\n\t\treturn this.actionCodes\n\t}\n\n\tpublic Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/ActionExecuter.ts"],"names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"mappings":"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","sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actionFactory: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst actionFactory = this.actionFactory\n\t\tconst action = actionFactory.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n"],"file":"ActionExecuter.js"}
1
+ {"version":3,"file":"ActionExecuter.js","names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"sources":["../../src/features/ActionExecuter.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actionFactory: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst actionFactory = this.actionFactory\n\t\tconst action = actionFactory.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/ActionFactory.ts"],"names":["ActionFactory","options","blockedCommands","optionOverrides","actionOptions","featureCode","actionCode","actionExecuter","featureInstaller","feature","getFeature","actionsDir","Error","classPath","diskUtil","resolvePath","namesUtil","toPascal","Class","originalError","require","err","SpruceError","code","friendlyMessage","action","parent","execute","actionDecorator","OverrideActionDecorator","ui"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AAEA;;AAWA;;;;;;;;IAYqBA,a;AAKpB,yBAAmBC,OAAnB,EAAyD;AAAA;AAAA;AAAA;AAAA;AACxD,QAAQC,eAAR,GAA+DD,OAA/D,CAAQC,eAAR;AAAA,QAAyBC,eAAzB,GAA+DF,OAA/D,CAAyBE,eAAzB;AAAA,QAA6CC,aAA7C,6CAA+DH,OAA/D;AACA,SAAKG,aAAL,GAAqBA,aAArB;AACA,SAAKF,eAAL,GAAuBA,eAAvB;AACA,SAAKC,eAAL,GAAuBA,eAAvB;AACA;;;;WAED,gBAAgEF,OAAhE,EAKqB;AACpB,UAAQI,WAAR,GACCJ,OADD,CAAQI,WAAR;AAAA,UAAqBC,UAArB,GACCL,OADD,CAAqBK,UAArB;AAAA,UAAiCC,cAAjC,GACCN,OADD,CAAiCM,cAAjC;AAAA,UAAiDC,gBAAjD,GACCP,OADD,CAAiDO,gBAAjD;AAGA,UAAMC,OAAO,GAAGD,gBAAgB,CAACE,UAAjB,CAA4BL,WAA5B,CAAhB;;AAEA,UAAI,CAACI,OAAO,CAACE,UAAb,EAAyB;AACxB,cAAM,IAAIC,KAAJ,gBACGP,WADH,sFAAN;AAGA;;AAED,UAAMQ,SAAS,GAAGC,2BAASC,WAAT,CACjBN,OAAO,CAACE,UADS,YAEdK,4BAAUC,QAAV,CAAmBX,UAAnB,CAFc,YAAlB;;AAKA,UAAIY,KAAJ;AACA,UAAIC,aAAJ;;AAEA,UAAI;AACHD,QAAAA,KAAK,GAAGE,OAAO,CAACP,SAAD,CAAP,WAAR,CADG,CAEH;AACA,OAHD,CAGE,OAAOQ,GAAP,EAAiB;AAClBF,QAAAA,aAAa,GAAGE,GAAhB;AACA,OAzBmB,CA2BpB;;;AACA,UAAI,CAACH,KAAL,EAAY;AACX,cAAM,IAAII,uBAAJ,CAAgB;AACrBC,UAAAA,IAAI,EAAE,SADe;AAErBC,UAAAA,eAAe,+CAAwClB,UAAxC,uBAA+DG,OAAO,CAACc,IAAvE,4EAFM;AAGrBJ,UAAAA,aAAa,EAAbA;AAHqB,SAAhB,CAAN;AAKA;;AAED,UAAMM,MAAM,GAAG,IAAIP,KAAJ,iCACX,KAAKd,aADM;AAEdG,QAAAA,cAAc,EAAdA,cAFc;AAGdmB,QAAAA,MAAM,EAAEjB,OAHM;AAIdD,QAAAA,gBAAgB,EAAhBA;AAJc,SAAf;;AAOA,UAAI,CAACiB,MAAL,EAAa;AACZ,cAAM,IAAIH,uBAAJ,CAAgB;AACrBC,UAAAA,IAAI,EAAE,SADe;AAErBC,UAAAA,eAAe,oCAA6BlB,UAA7B,wBAAqDG,OAAO,CAACc,IAA7D;AAFM,SAAhB,CAAN;AAIA;;AAED,UAAI,CAACE,MAAM,CAACE,OAAZ,EAAqB;AACpB,cAAM,IAAIL,uBAAJ,CAAgB;AACrBC,UAAAA,IAAI,EAAE,SADe;AAErBC,UAAAA,eAAe,8BAAuBf,OAAO,CAACc,IAA/B,yBAAkDjB,UAAlD;AAFM,SAAhB,CAAN;AAIA;;AAED,UAAMsB,eAAe,GAAG,IAAIC,mCAAJ,CAA4B;AACnDJ,QAAAA,MAAM,EAANA,MADmD;AAEnDhB,QAAAA,OAAO,EAAPA,OAFmD;AAGnDP,QAAAA,eAAe,EAAE,KAAKA,eAH6B;AAInDC,QAAAA,eAAe,EAAE,KAAKA,eAJ6B;AAKnD2B,QAAAA,EAAE,EAAE,KAAK1B,aAAL,CAAmB0B,EAL4B;AAMnDxB,QAAAA,UAAU,EAAVA;AANmD,OAA5B,CAAxB;AASA,aAAOsB,eAAP;AACA","sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../errors/SpruceError'\nimport {\n\tFeatureAction,\n\tActionOptions,\n\tFeatureCode,\n} from '../features/features.types'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { BlockedCommands, OptionOverrides } from '../types/cli.types'\nimport AbstractAction from './AbstractAction'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport OverrideActionDecorator from './OverrideActionDecorator'\n\nexport interface FeatureActionFactoryOptions\n\textends Omit<\n\t\tActionOptions,\n\t\t'parent' | 'actionExecuter' | 'featureInstaller'\n\t> {\n\temitter: GlobalEmitter\n\tblockedCommands?: BlockedCommands\n\toptionOverrides?: OptionOverrides\n}\n\nexport default class ActionFactory {\n\tprivate actionOptions: FeatureActionFactoryOptions\n\tprivate blockedCommands?: BlockedCommands\n\tprivate optionOverrides?: OptionOverrides\n\n\tpublic constructor(options: FeatureActionFactoryOptions) {\n\t\tconst { blockedCommands, optionOverrides, ...actionOptions } = options\n\t\tthis.actionOptions = actionOptions\n\t\tthis.blockedCommands = blockedCommands\n\t\tthis.optionOverrides = optionOverrides\n\t}\n\n\tpublic Action<F extends FeatureCode, S extends Schema = Schema>(options: {\n\t\tfeatureCode: F\n\t\tactionCode: string\n\t\tactionExecuter: ActionExecuter\n\t\tfeatureInstaller: FeatureInstaller\n\t}): FeatureAction<S> {\n\t\tconst { featureCode, actionCode, actionExecuter, featureInstaller } =\n\t\t\toptions\n\n\t\tconst feature = featureInstaller.getFeature(featureCode)\n\n\t\tif (!feature.actionsDir) {\n\t\t\tthrow new Error(\n\t\t\t\t`Your ${featureCode} features needs \\`public actionsDir = diskUtil.resolvePath(__dirname, 'actions')\\``\n\t\t\t)\n\t\t}\n\n\t\tconst classPath = diskUtil.resolvePath(\n\t\t\tfeature.actionsDir,\n\t\t\t`${namesUtil.toPascal(actionCode)}Action`\n\t\t)\n\n\t\tlet Class: new (options: ActionOptions) => AbstractAction | undefined\n\t\tlet originalError: Error | undefined\n\n\t\ttry {\n\t\t\tClass = require(classPath).default\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch (err: any) {\n\t\t\toriginalError = err\n\t\t}\n\n\t\t//@ts-ignore\n\t\tif (!Class) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not find any action named '${actionCode}' for the ${feature.code} feature. Make sure it's the default export and extends AbstractAction.`,\n\t\t\t\toriginalError,\n\t\t\t})\n\t\t}\n\n\t\tconst action = new Class({\n\t\t\t...this.actionOptions,\n\t\t\tactionExecuter,\n\t\t\tparent: feature,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tif (!action) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not instantiate ${actionCode} action on ${feature.code} feature.`,\n\t\t\t})\n\t\t}\n\n\t\tif (!action.execute) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `It looks like the ${feature.code} feature's '${actionCode}' action does not properly extend AbstractAction.`,\n\t\t\t})\n\t\t}\n\n\t\tconst actionDecorator = new OverrideActionDecorator({\n\t\t\taction,\n\t\t\tfeature,\n\t\t\tblockedCommands: this.blockedCommands,\n\t\t\toptionOverrides: this.optionOverrides,\n\t\t\tui: this.actionOptions.ui,\n\t\t\tactionCode,\n\t\t})\n\n\t\treturn actionDecorator as FeatureAction<S>\n\t}\n}\n"],"file":"ActionFactory.js"}
1
+ {"version":3,"file":"ActionFactory.js","names":["ActionFactory","options","blockedCommands","optionOverrides","actionOptions","featureCode","actionCode","actionExecuter","featureInstaller","feature","getFeature","actionsDir","Error","classPath","diskUtil","resolvePath","namesUtil","toPascal","Class","originalError","require","err","SpruceError","code","friendlyMessage","action","parent","execute","actionDecorator","OverrideActionDecorator","ui"],"sources":["../../src/features/ActionFactory.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../errors/SpruceError'\nimport {\n\tFeatureAction,\n\tActionOptions,\n\tFeatureCode,\n} from '../features/features.types'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { BlockedCommands, OptionOverrides } from '../types/cli.types'\nimport AbstractAction from './AbstractAction'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport OverrideActionDecorator from './OverrideActionDecorator'\n\nexport interface FeatureActionFactoryOptions\n\textends Omit<\n\t\tActionOptions,\n\t\t'parent' | 'actionExecuter' | 'featureInstaller'\n\t> {\n\temitter: GlobalEmitter\n\tblockedCommands?: BlockedCommands\n\toptionOverrides?: OptionOverrides\n}\n\nexport default class ActionFactory {\n\tprivate actionOptions: FeatureActionFactoryOptions\n\tprivate blockedCommands?: BlockedCommands\n\tprivate optionOverrides?: OptionOverrides\n\n\tpublic constructor(options: FeatureActionFactoryOptions) {\n\t\tconst { blockedCommands, optionOverrides, ...actionOptions } = options\n\t\tthis.actionOptions = actionOptions\n\t\tthis.blockedCommands = blockedCommands\n\t\tthis.optionOverrides = optionOverrides\n\t}\n\n\tpublic Action<F extends FeatureCode, S extends Schema = Schema>(options: {\n\t\tfeatureCode: F\n\t\tactionCode: string\n\t\tactionExecuter: ActionExecuter\n\t\tfeatureInstaller: FeatureInstaller\n\t}): FeatureAction<S> {\n\t\tconst { featureCode, actionCode, actionExecuter, featureInstaller } =\n\t\t\toptions\n\n\t\tconst feature = featureInstaller.getFeature(featureCode)\n\n\t\tif (!feature.actionsDir) {\n\t\t\tthrow new Error(\n\t\t\t\t`Your ${featureCode} features needs \\`public actionsDir = diskUtil.resolvePath(__dirname, 'actions')\\``\n\t\t\t)\n\t\t}\n\n\t\tconst classPath = diskUtil.resolvePath(\n\t\t\tfeature.actionsDir,\n\t\t\t`${namesUtil.toPascal(actionCode)}Action`\n\t\t)\n\n\t\tlet Class: new (options: ActionOptions) => AbstractAction | undefined\n\t\tlet originalError: Error | undefined\n\n\t\ttry {\n\t\t\tClass = require(classPath).default\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch (err: any) {\n\t\t\toriginalError = err\n\t\t}\n\n\t\t//@ts-ignore\n\t\tif (!Class) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not find any action named '${actionCode}' for the ${feature.code} feature. Make sure it's the default export and extends AbstractAction.`,\n\t\t\t\toriginalError,\n\t\t\t})\n\t\t}\n\n\t\tconst action = new Class({\n\t\t\t...this.actionOptions,\n\t\t\tactionExecuter,\n\t\t\tparent: feature,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tif (!action) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not instantiate ${actionCode} action on ${feature.code} feature.`,\n\t\t\t})\n\t\t}\n\n\t\tif (!action.execute) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `It looks like the ${feature.code} feature's '${actionCode}' action does not properly extend AbstractAction.`,\n\t\t\t})\n\t\t}\n\n\t\tconst actionDecorator = new OverrideActionDecorator({\n\t\t\taction,\n\t\t\tfeature,\n\t\t\tblockedCommands: this.blockedCommands,\n\t\t\toptionOverrides: this.optionOverrides,\n\t\t\tui: this.actionOptions.ui,\n\t\t\tactionCode,\n\t\t})\n\n\t\treturn actionDecorator as FeatureAction<S>\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AAEA;;AAWA;;;;;;;;IAYqBA,a;EAKpB,uBAAmBC,OAAnB,EAAyD;IAAA;IAAA;IAAA;IAAA;IACxD,IAAQC,eAAR,GAA+DD,OAA/D,CAAQC,eAAR;IAAA,IAAyBC,eAAzB,GAA+DF,OAA/D,CAAyBE,eAAzB;IAAA,IAA6CC,aAA7C,6CAA+DH,OAA/D;IACA,KAAKG,aAAL,GAAqBA,aAArB;IACA,KAAKF,eAAL,GAAuBA,eAAvB;IACA,KAAKC,eAAL,GAAuBA,eAAvB;EACA;;;;WAED,gBAAgEF,OAAhE,EAKqB;MACpB,IAAQI,WAAR,GACCJ,OADD,CAAQI,WAAR;MAAA,IAAqBC,UAArB,GACCL,OADD,CAAqBK,UAArB;MAAA,IAAiCC,cAAjC,GACCN,OADD,CAAiCM,cAAjC;MAAA,IAAiDC,gBAAjD,GACCP,OADD,CAAiDO,gBAAjD;MAGA,IAAMC,OAAO,GAAGD,gBAAgB,CAACE,UAAjB,CAA4BL,WAA5B,CAAhB;;MAEA,IAAI,CAACI,OAAO,CAACE,UAAb,EAAyB;QACxB,MAAM,IAAIC,KAAJ,gBACGP,WADH,sFAAN;MAGA;;MAED,IAAMQ,SAAS,GAAGC,2BAASC,WAAT,CACjBN,OAAO,CAACE,UADS,YAEdK,4BAAUC,QAAV,CAAmBX,UAAnB,CAFc,YAAlB;;MAKA,IAAIY,KAAJ;MACA,IAAIC,aAAJ;;MAEA,IAAI;QACHD,KAAK,GAAGE,OAAO,CAACP,SAAD,CAAP,WAAR,CADG,CAEH;MACA,CAHD,CAGE,OAAOQ,GAAP,EAAiB;QAClBF,aAAa,GAAGE,GAAhB;MACA,CAzBmB,CA2BpB;;;MACA,IAAI,CAACH,KAAL,EAAY;QACX,MAAM,IAAII,uBAAJ,CAAgB;UACrBC,IAAI,EAAE,SADe;UAErBC,eAAe,+CAAwClB,UAAxC,uBAA+DG,OAAO,CAACc,IAAvE,4EAFM;UAGrBJ,aAAa,EAAbA;QAHqB,CAAhB,CAAN;MAKA;;MAED,IAAMM,MAAM,GAAG,IAAIP,KAAJ,iCACX,KAAKd,aADM;QAEdG,cAAc,EAAdA,cAFc;QAGdmB,MAAM,EAAEjB,OAHM;QAIdD,gBAAgB,EAAhBA;MAJc,GAAf;;MAOA,IAAI,CAACiB,MAAL,EAAa;QACZ,MAAM,IAAIH,uBAAJ,CAAgB;UACrBC,IAAI,EAAE,SADe;UAErBC,eAAe,oCAA6BlB,UAA7B,wBAAqDG,OAAO,CAACc,IAA7D;QAFM,CAAhB,CAAN;MAIA;;MAED,IAAI,CAACE,MAAM,CAACE,OAAZ,EAAqB;QACpB,MAAM,IAAIL,uBAAJ,CAAgB;UACrBC,IAAI,EAAE,SADe;UAErBC,eAAe,8BAAuBf,OAAO,CAACc,IAA/B,yBAAkDjB,UAAlD;QAFM,CAAhB,CAAN;MAIA;;MAED,IAAMsB,eAAe,GAAG,IAAIC,mCAAJ,CAA4B;QACnDJ,MAAM,EAANA,MADmD;QAEnDhB,OAAO,EAAPA,OAFmD;QAGnDP,eAAe,EAAE,KAAKA,eAH6B;QAInDC,eAAe,EAAE,KAAKA,eAJ6B;QAKnD2B,EAAE,EAAE,KAAK1B,aAAL,CAAmB0B,EAL4B;QAMnDxB,UAAU,EAAVA;MANmD,CAA5B,CAAxB;MASA,OAAOsB,eAAP;IACA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/ActionQuestionAsker.ts"],"names":["s","array","length","areIs","ActionOptionAsker","options","ui","featureInstaller","actionCode","feature","shouldAutoHandleDependencies","getDependenciesNotInstalled","notInstalled","response","installCount","renderLine","generateConfirmInstallMessage","toInstall","shift","Error","isInstalled","code","wasInstalled","isMarkedAsSkipped","installOrMarkAsSkippedMissingDependency","installResults","clear","waitForEnter","getCommandName","dependencies","getFeatureDependencies","Promise","all","map","dependency","getFeature","installedStatuses","filter","installOptions","optionsSchema","collectAnswers","answers","action","schema","SpruceError","featureCode","friendlyMessage","isFirstUpdate","install","installFeatureDependencies","features","didUpdateHandler","message","renderHeading","startLoading","stopLoading","renderHero","CLI_HERO","renderHeadline","isRequired","confirm","nameReadable","command","prompt","type","defaultValue","label","choices","value","markAsSkippedThisRun","markAsPermanentlySkipped","installResponse","undefined","cleaned","Object","keys","forEach","key","fieldNames","fields","providedFieldNames","fieldsToPresent","name","indexOf","isPrivate","featureForm","FormComponent","initialValues","onWillAskQuestion","formUtil","onWillAskQuestionHandler","bind","present","showOverview","featuresUtil","generateCommand","required","optional","feat","push","requiredMessage","optionalMessage","mixedMessage"],"mappings":"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","sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport merge from 'lodash/merge'\nimport FormComponent from '../components/FormComponent'\nimport { CLI_HERO } from '../constants'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport formUtil from '../utilities/form.utility'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureMap,\n} from './features.types'\n\ntype FeatureCommandExecuteOptions<\n\tF extends FeatureCode,\n\tS extends Schema | undefined = FeatureMap[F]['optionsSchema']\n> = S extends Schema ? SchemaPartialValues<S> : undefined\n\ntype FeatureDependencyWithFeature = FeatureDependency & {\n\tfeature: AbstractFeature\n}\n\nfunction s(array: any[]) {\n\treturn array.length === 1 ? '' : ''\n}\n\nfunction areIs(array: any[]) {\n\treturn array.length === 1 ? 'is' : 'are'\n}\n\nexport default class ActionOptionAsker<F extends FeatureCode = FeatureCode> {\n\tprivate ui: GraphicsInterface\n\tprivate featureInstaller: FeatureInstaller\n\tprivate actionCode: string\n\tprivate feature: AbstractFeature\n\tprivate shouldAutoHandleDependencies = true\n\n\tpublic constructor(options: {\n\t\tui: GraphicsInterface\n\t\tfeatureInstaller: FeatureInstaller\n\t\tactionCode: string\n\t\tfeature: AbstractFeature\n\t\tshouldAutoHandleDependencies: boolean\n\t}) {\n\t\tthis.ui = options.ui\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.actionCode = options.actionCode\n\t\tthis.feature = options.feature\n\t\tthis.shouldAutoHandleDependencies = options.shouldAutoHandleDependencies\n\t}\n\n\tpublic async installOrMarkAsSkippedMissingDependencies(): Promise<FeatureInstallResponse> {\n\t\tconst notInstalled = await this.getDependenciesNotInstalled()\n\n\t\tlet response: FeatureInstallResponse = {}\n\t\tlet installCount = 0\n\n\t\tif (notInstalled.length > 0) {\n\t\t\tthis.ui.renderLine(\n\t\t\t\tthis.generateConfirmInstallMessage(notInstalled) + '\\n'\n\t\t\t)\n\n\t\t\twhile (notInstalled.length > 0) {\n\t\t\t\tconst toInstall = notInstalled.shift()\n\t\t\t\tif (!toInstall) {\n\t\t\t\t\t// for typescript\n\t\t\t\t\tthrow new Error('Dependent feature error')\n\t\t\t\t}\n\n\t\t\t\tconst wasInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\ttoInstall.code\n\t\t\t\t)\n\n\t\t\t\tif (\n\t\t\t\t\t!wasInstalled &&\n\t\t\t\t\t!this.featureInstaller.isMarkedAsSkipped(toInstall.code)\n\t\t\t\t) {\n\t\t\t\t\tconst installResults =\n\t\t\t\t\t\tawait this.installOrMarkAsSkippedMissingDependency(toInstall)\n\t\t\t\t\tresponse = merge(response, installResults)\n\t\t\t\t\tinstallCount++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (installCount > 0) {\n\t\t\t\tthis.ui.clear()\n\n\t\t\t\tawait this.ui.waitForEnter(\n\t\t\t\t\t`Phew, now that we're done with that, lets get back to ${this.getCommandName()}!`\n\t\t\t\t)\n\n\t\t\t\tthis.ui.clear()\n\t\t\t}\n\t\t}\n\n\t\treturn response\n\t}\n\n\tprivate async getDependenciesNotInstalled(): Promise<\n\t\tFeatureDependencyWithFeature[]\n\t> {\n\t\tconst dependencies = this.featureInstaller.getFeatureDependencies(\n\t\t\tthis.feature.code\n\t\t)\n\n\t\tconst installedStatuses = await Promise.all(\n\t\t\tdependencies.map(async (dependency) => {\n\t\t\t\tconst feature = this.featureInstaller.getFeature(dependency.code)\n\n\t\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\tdependency.code\n\t\t\t\t)\n\n\t\t\t\tconst isMarkedAsSkipped = this.featureInstaller.isMarkedAsSkipped(\n\t\t\t\t\tfeature.code\n\t\t\t\t)\n\n\t\t\t\tif (isMarkedAsSkipped) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\treturn !isInstalled ? { feature, ...dependency } : null\n\t\t\t})\n\t\t)\n\n\t\tconst notInstalled = installedStatuses.filter(\n\t\t\t(feature) => !!feature\n\t\t) as FeatureDependencyWithFeature[]\n\n\t\treturn notInstalled\n\t}\n\n\tpublic async askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\tisInstalled: boolean,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet installOptions = { ...options }\n\n\t\tif (!isInstalled) {\n\t\t\tif (this.feature.optionsSchema) {\n\t\t\t\tconst answers = await this.collectAnswers(\n\t\t\t\t\tthis.feature.optionsSchema,\n\t\t\t\t\toptions\n\t\t\t\t)\n\n\t\t\t\tinstallOptions = { ...installOptions, ...answers }\n\t\t\t}\n\t\t}\n\t\treturn installOptions\n\t}\n\n\tpublic async askAboutMissingActionOptions(\n\t\taction: FeatureAction<Schema>,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet answers\n\n\t\tconst schema = action.optionsSchema\n\t\tif (schema) {\n\t\t\tanswers = await this.collectAnswers(schema, options)\n\t\t}\n\t\treturn answers\n\t}\n\n\tpublic async installOurFeature(installOptions: Record<string, any>) {\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: this.feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdidUpdateHandler: (message) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate renderHeading(code: string) {\n\t\tthis.ui.clear()\n\t\tthis.ui.renderHero(CLI_HERO)\n\t\tthis.ui.renderHeadline(`Installing ${code} feature...`)\n\t}\n\n\tprivate async installOrMarkAsSkippedMissingDependency(\n\t\ttoInstall: FeatureDependencyWithFeature\n\t): Promise<FeatureInstallResponse> {\n\t\tconst { feature, isRequired } = toInstall\n\n\t\tif (isRequired) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`Install the ${feature.nameReadable} feature?`\n\t\t\t)\n\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'COMMAND_ABORTED',\n\t\t\t\t\tcommand: this.getCommandName(),\n\t\t\t\t})\n\t\t\t}\n\t\t} else {\n\t\t\tconst response = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tdefaultValue: 'yes',\n\t\t\t\tlabel: `Install the ${feature.nameReadable} feature? (optional)`,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tif (response !== 'yes') {\n\t\t\t\tthis.ui.renderLine(\n\t\t\t\t\tresponse === 'alwaysSkip'\n\t\t\t\t\t\t? 'Skipping forever!'\n\t\t\t\t\t\t: 'Cool, skipping for now.'\n\t\t\t\t)\n\n\t\t\t\tif (response === 'skip') {\n\t\t\t\t\tthis.featureInstaller.markAsSkippedThisRun(feature.code)\n\t\t\t\t} else {\n\t\t\t\t\tthis.featureInstaller.markAsPermanentlySkipped(feature.code)\n\t\t\t\t}\n\n\t\t\t\tconst installResponse: FeatureInstallResponse = {}\n\t\t\t\treturn installResponse\n\t\t\t}\n\t\t}\n\n\t\tlet installOptions = {}\n\n\t\tif (feature.optionsSchema) {\n\t\t\tinstallOptions = await this.collectAnswers(\n\t\t\t\tfeature.optionsSchema,\n\t\t\t\tundefined\n\t\t\t)\n\t\t}\n\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tdidUpdateHandler: (message: string) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate async collectAnswers<S extends Schema>(\n\t\tschema: S,\n\t\toptions: FeatureCommandExecuteOptions<F, S> | undefined\n\t) {\n\t\tconst cleaned: Record<string, any> = {}\n\t\tObject.keys(options ?? {}).forEach((key) => {\n\t\t\t//@ts-ignore\n\t\t\tif (typeof options[key] !== 'undefined') {\n\t\t\t\t//@ts-ignore\n\t\t\t\tcleaned[key] = options[key]\n\t\t\t}\n\t\t})\n\n\t\tconst fieldNames = Object.keys(schema.fields ?? {})\n\t\tconst providedFieldNames = cleaned ? Object.keys(cleaned ?? {}) : []\n\t\tconst fieldsToPresent = fieldNames.filter(\n\t\t\t(name) =>\n\t\t\t\tprovidedFieldNames.indexOf(name) === -1 &&\n\t\t\t\tschema.fields?.[name].isRequired === true &&\n\t\t\t\tschema.fields?.[name].isPrivate !== true\n\t\t)\n\n\t\tlet answers = {}\n\t\tif (fieldsToPresent.length > 0) {\n\t\t\tconst featureForm = new FormComponent<S>({\n\t\t\t\tui: this.ui,\n\t\t\t\tschema,\n\t\t\t\t//@ts-ignore\n\t\t\t\tinitialValues: cleaned,\n\t\t\t\tonWillAskQuestion: formUtil.onWillAskQuestionHandler.bind(\n\t\t\t\t\tformUtil\n\t\t\t\t) as any,\n\t\t\t})\n\n\t\t\tanswers = await featureForm.present({\n\t\t\t\tshowOverview: false,\n\t\t\t\t// @ts-ignore\n\t\t\t\tfields: fieldsToPresent,\n\t\t\t})\n\t\t}\n\n\t\treturn { ...(cleaned ?? {}), ...answers } as SchemaValues<S>\n\t}\n\n\tprivate getCommandName() {\n\t\treturn featuresUtil.generateCommand(this.feature.code, this.actionCode)\n\t}\n\n\tprivate generateConfirmInstallMessage(\n\t\tnotInstalled: FeatureDependencyWithFeature[]\n\t): string {\n\t\tconst required: FeatureDependencyWithFeature[] = []\n\t\tconst optional: FeatureDependencyWithFeature[] = []\n\n\t\tnotInstalled.forEach((feat) => {\n\t\t\tif (feat.isRequired) {\n\t\t\t\trequired.push(feat)\n\t\t\t} else {\n\t\t\t\toptional.push(feat)\n\t\t\t}\n\t\t})\n\n\t\tconst requiredMessage = `I'll need to install ${required.length} feature${s(\n\t\t\trequired\n\t\t)}.`\n\n\t\tconst optionalMessage = `there ${areIs(optional)} ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} that could be installed.`\n\n\t\tconst mixedMessage = `I found ${required.length} required and ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} to install.`\n\n\t\tlet message = mixedMessage\n\n\t\tif (optional.length === 0) {\n\t\t\tmessage = requiredMessage\n\t\t} else if (optional.length > 0 && required.length === 0) {\n\t\t\tmessage = optionalMessage\n\t\t}\n\n\t\treturn `Before you can run \\`${this.getCommandName()}\\`, ${message} Don't worry, I'll walk you through it!`\n\t}\n}\n"],"file":"ActionQuestionAsker.js"}
1
+ {"version":3,"file":"ActionQuestionAsker.js","names":["s","array","length","areIs","ActionOptionAsker","options","ui","featureInstaller","actionCode","feature","shouldAutoHandleDependencies","getDependenciesNotInstalled","notInstalled","response","installCount","renderLine","generateConfirmInstallMessage","toInstall","shift","Error","isInstalled","code","wasInstalled","isMarkedAsSkipped","installOrMarkAsSkippedMissingDependency","installResults","clear","waitForEnter","getCommandName","dependencies","getFeatureDependencies","Promise","all","map","dependency","getFeature","installedStatuses","filter","installOptions","optionsSchema","collectAnswers","answers","action","schema","SpruceError","featureCode","friendlyMessage","isFirstUpdate","install","installFeatureDependencies","features","didUpdateHandler","message","renderHeading","startLoading","stopLoading","renderHero","CLI_HERO","renderHeadline","isRequired","confirm","nameReadable","command","prompt","type","defaultValue","label","choices","value","markAsSkippedThisRun","markAsPermanentlySkipped","installResponse","undefined","cleaned","Object","keys","forEach","key","fieldNames","fields","providedFieldNames","fieldsToPresent","name","indexOf","isPrivate","featureForm","FormComponent","initialValues","onWillAskQuestion","formUtil","onWillAskQuestionHandler","bind","present","showOverview","featuresUtil","generateCommand","required","optional","feat","push","requiredMessage","optionalMessage","mixedMessage"],"sources":["../../src/features/ActionQuestionAsker.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport merge from 'lodash/merge'\nimport FormComponent from '../components/FormComponent'\nimport { CLI_HERO } from '../constants'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport formUtil from '../utilities/form.utility'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureMap,\n} from './features.types'\n\ntype FeatureCommandExecuteOptions<\n\tF extends FeatureCode,\n\tS extends Schema | undefined = FeatureMap[F]['optionsSchema']\n> = S extends Schema ? SchemaPartialValues<S> : undefined\n\ntype FeatureDependencyWithFeature = FeatureDependency & {\n\tfeature: AbstractFeature\n}\n\nfunction s(array: any[]) {\n\treturn array.length === 1 ? '' : ''\n}\n\nfunction areIs(array: any[]) {\n\treturn array.length === 1 ? 'is' : 'are'\n}\n\nexport default class ActionOptionAsker<F extends FeatureCode = FeatureCode> {\n\tprivate ui: GraphicsInterface\n\tprivate featureInstaller: FeatureInstaller\n\tprivate actionCode: string\n\tprivate feature: AbstractFeature\n\tprivate shouldAutoHandleDependencies = true\n\n\tpublic constructor(options: {\n\t\tui: GraphicsInterface\n\t\tfeatureInstaller: FeatureInstaller\n\t\tactionCode: string\n\t\tfeature: AbstractFeature\n\t\tshouldAutoHandleDependencies: boolean\n\t}) {\n\t\tthis.ui = options.ui\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.actionCode = options.actionCode\n\t\tthis.feature = options.feature\n\t\tthis.shouldAutoHandleDependencies = options.shouldAutoHandleDependencies\n\t}\n\n\tpublic async installOrMarkAsSkippedMissingDependencies(): Promise<FeatureInstallResponse> {\n\t\tconst notInstalled = await this.getDependenciesNotInstalled()\n\n\t\tlet response: FeatureInstallResponse = {}\n\t\tlet installCount = 0\n\n\t\tif (notInstalled.length > 0) {\n\t\t\tthis.ui.renderLine(\n\t\t\t\tthis.generateConfirmInstallMessage(notInstalled) + '\\n'\n\t\t\t)\n\n\t\t\twhile (notInstalled.length > 0) {\n\t\t\t\tconst toInstall = notInstalled.shift()\n\t\t\t\tif (!toInstall) {\n\t\t\t\t\t// for typescript\n\t\t\t\t\tthrow new Error('Dependent feature error')\n\t\t\t\t}\n\n\t\t\t\tconst wasInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\ttoInstall.code\n\t\t\t\t)\n\n\t\t\t\tif (\n\t\t\t\t\t!wasInstalled &&\n\t\t\t\t\t!this.featureInstaller.isMarkedAsSkipped(toInstall.code)\n\t\t\t\t) {\n\t\t\t\t\tconst installResults =\n\t\t\t\t\t\tawait this.installOrMarkAsSkippedMissingDependency(toInstall)\n\t\t\t\t\tresponse = merge(response, installResults)\n\t\t\t\t\tinstallCount++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (installCount > 0) {\n\t\t\t\tthis.ui.clear()\n\n\t\t\t\tawait this.ui.waitForEnter(\n\t\t\t\t\t`Phew, now that we're done with that, lets get back to ${this.getCommandName()}!`\n\t\t\t\t)\n\n\t\t\t\tthis.ui.clear()\n\t\t\t}\n\t\t}\n\n\t\treturn response\n\t}\n\n\tprivate async getDependenciesNotInstalled(): Promise<\n\t\tFeatureDependencyWithFeature[]\n\t> {\n\t\tconst dependencies = this.featureInstaller.getFeatureDependencies(\n\t\t\tthis.feature.code\n\t\t)\n\n\t\tconst installedStatuses = await Promise.all(\n\t\t\tdependencies.map(async (dependency) => {\n\t\t\t\tconst feature = this.featureInstaller.getFeature(dependency.code)\n\n\t\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\tdependency.code\n\t\t\t\t)\n\n\t\t\t\tconst isMarkedAsSkipped = this.featureInstaller.isMarkedAsSkipped(\n\t\t\t\t\tfeature.code\n\t\t\t\t)\n\n\t\t\t\tif (isMarkedAsSkipped) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\treturn !isInstalled ? { feature, ...dependency } : null\n\t\t\t})\n\t\t)\n\n\t\tconst notInstalled = installedStatuses.filter(\n\t\t\t(feature) => !!feature\n\t\t) as FeatureDependencyWithFeature[]\n\n\t\treturn notInstalled\n\t}\n\n\tpublic async askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\tisInstalled: boolean,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet installOptions = { ...options }\n\n\t\tif (!isInstalled) {\n\t\t\tif (this.feature.optionsSchema) {\n\t\t\t\tconst answers = await this.collectAnswers(\n\t\t\t\t\tthis.feature.optionsSchema,\n\t\t\t\t\toptions\n\t\t\t\t)\n\n\t\t\t\tinstallOptions = { ...installOptions, ...answers }\n\t\t\t}\n\t\t}\n\t\treturn installOptions\n\t}\n\n\tpublic async askAboutMissingActionOptions(\n\t\taction: FeatureAction<Schema>,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet answers\n\n\t\tconst schema = action.optionsSchema\n\t\tif (schema) {\n\t\t\tanswers = await this.collectAnswers(schema, options)\n\t\t}\n\t\treturn answers\n\t}\n\n\tpublic async installOurFeature(installOptions: Record<string, any>) {\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: this.feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdidUpdateHandler: (message) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate renderHeading(code: string) {\n\t\tthis.ui.clear()\n\t\tthis.ui.renderHero(CLI_HERO)\n\t\tthis.ui.renderHeadline(`Installing ${code} feature...`)\n\t}\n\n\tprivate async installOrMarkAsSkippedMissingDependency(\n\t\ttoInstall: FeatureDependencyWithFeature\n\t): Promise<FeatureInstallResponse> {\n\t\tconst { feature, isRequired } = toInstall\n\n\t\tif (isRequired) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`Install the ${feature.nameReadable} feature?`\n\t\t\t)\n\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'COMMAND_ABORTED',\n\t\t\t\t\tcommand: this.getCommandName(),\n\t\t\t\t})\n\t\t\t}\n\t\t} else {\n\t\t\tconst response = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tdefaultValue: 'yes',\n\t\t\t\tlabel: `Install the ${feature.nameReadable} feature? (optional)`,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tif (response !== 'yes') {\n\t\t\t\tthis.ui.renderLine(\n\t\t\t\t\tresponse === 'alwaysSkip'\n\t\t\t\t\t\t? 'Skipping forever!'\n\t\t\t\t\t\t: 'Cool, skipping for now.'\n\t\t\t\t)\n\n\t\t\t\tif (response === 'skip') {\n\t\t\t\t\tthis.featureInstaller.markAsSkippedThisRun(feature.code)\n\t\t\t\t} else {\n\t\t\t\t\tthis.featureInstaller.markAsPermanentlySkipped(feature.code)\n\t\t\t\t}\n\n\t\t\t\tconst installResponse: FeatureInstallResponse = {}\n\t\t\t\treturn installResponse\n\t\t\t}\n\t\t}\n\n\t\tlet installOptions = {}\n\n\t\tif (feature.optionsSchema) {\n\t\t\tinstallOptions = await this.collectAnswers(\n\t\t\t\tfeature.optionsSchema,\n\t\t\t\tundefined\n\t\t\t)\n\t\t}\n\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tdidUpdateHandler: (message: string) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate async collectAnswers<S extends Schema>(\n\t\tschema: S,\n\t\toptions: FeatureCommandExecuteOptions<F, S> | undefined\n\t) {\n\t\tconst cleaned: Record<string, any> = {}\n\t\tObject.keys(options ?? {}).forEach((key) => {\n\t\t\t//@ts-ignore\n\t\t\tif (typeof options[key] !== 'undefined') {\n\t\t\t\t//@ts-ignore\n\t\t\t\tcleaned[key] = options[key]\n\t\t\t}\n\t\t})\n\n\t\tconst fieldNames = Object.keys(schema.fields ?? {})\n\t\tconst providedFieldNames = cleaned ? Object.keys(cleaned ?? {}) : []\n\t\tconst fieldsToPresent = fieldNames.filter(\n\t\t\t(name) =>\n\t\t\t\tprovidedFieldNames.indexOf(name) === -1 &&\n\t\t\t\tschema.fields?.[name].isRequired === true &&\n\t\t\t\tschema.fields?.[name].isPrivate !== true\n\t\t)\n\n\t\tlet answers = {}\n\t\tif (fieldsToPresent.length > 0) {\n\t\t\tconst featureForm = new FormComponent<S>({\n\t\t\t\tui: this.ui,\n\t\t\t\tschema,\n\t\t\t\t//@ts-ignore\n\t\t\t\tinitialValues: cleaned,\n\t\t\t\tonWillAskQuestion: formUtil.onWillAskQuestionHandler.bind(\n\t\t\t\t\tformUtil\n\t\t\t\t) as any,\n\t\t\t})\n\n\t\t\tanswers = await featureForm.present({\n\t\t\t\tshowOverview: false,\n\t\t\t\t// @ts-ignore\n\t\t\t\tfields: fieldsToPresent,\n\t\t\t})\n\t\t}\n\n\t\treturn { ...(cleaned ?? {}), ...answers } as SchemaValues<S>\n\t}\n\n\tprivate getCommandName() {\n\t\treturn featuresUtil.generateCommand(this.feature.code, this.actionCode)\n\t}\n\n\tprivate generateConfirmInstallMessage(\n\t\tnotInstalled: FeatureDependencyWithFeature[]\n\t): string {\n\t\tconst required: FeatureDependencyWithFeature[] = []\n\t\tconst optional: FeatureDependencyWithFeature[] = []\n\n\t\tnotInstalled.forEach((feat) => {\n\t\t\tif (feat.isRequired) {\n\t\t\t\trequired.push(feat)\n\t\t\t} else {\n\t\t\t\toptional.push(feat)\n\t\t\t}\n\t\t})\n\n\t\tconst requiredMessage = `I'll need to install ${required.length} feature${s(\n\t\t\trequired\n\t\t)}.`\n\n\t\tconst optionalMessage = `there ${areIs(optional)} ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} that could be installed.`\n\n\t\tconst mixedMessage = `I found ${required.length} required and ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} to install.`\n\n\t\tlet message = mixedMessage\n\n\t\tif (optional.length === 0) {\n\t\t\tmessage = requiredMessage\n\t\t} else if (optional.length > 0 && required.length === 0) {\n\t\t\tmessage = optionalMessage\n\t\t}\n\n\t\treturn `Before you can run \\`${this.getCommandName()}\\`, ${message} Don't worry, I'll walk you through it!`\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/FeatureCommandAttacher.ts"],"names":["FeatureCommandAttacher","options","program","term","ui","actionExecuter","feature","getAvailableActionCodes","actionCodes","actionCode","attachCode","code","commandStr","featuresUtil","generateCommand","action","Action","aliases","commandAliases","length","shift","command","clearAndRenderMasthead","startTime","Date","getTime","args","commanderUtil","mapIncomingToOptions","optionsSchema","execute","results","endTime","totalTime","clearAndRenderResults","featureCode","description","schema","attachOptions","stopLoading","clear","renderActionSummary","headline","uiUtil","renderActionMastHead","entity","SchemaEntityFactory","Entity","theProgram","fields","getNamedFields","generateOptionAliases","forEach","field","name","option","hint","definition","defaultValue","undefined","err","SpruceError","fieldName","id","schemaId","originalError","friendlyMessage"],"mappings":"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","sourcesContent":["import { Schema, SchemaEntityFactory } from '@sprucelabs/schema'\nimport { CommanderStatic } from 'commander'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport commanderUtil from '../utilities/commander.utility'\nimport uiUtil from '../utilities/ui.utility'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport featuresUtil from './feature.utilities'\nimport { FeatureAction, FeatureActionResponse } from './features.types'\n\nexport interface OptionOverrides {\n\t[command: string]: Record<string, any>\n}\n\nexport interface BlockedCommands {\n\t[command: string]: string\n}\n\nexport default class FeatureCommandAttacher {\n\tprivate program: CommanderStatic['program']\n\tprivate ui: GraphicsInterface\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: {\n\t\tprogram: CommanderStatic['program']\n\t\tui: GraphicsInterface\n\t\tactionExecuter: ActionExecuter\n\t}) {\n\t\tconst { program, ui: term, actionExecuter } = options\n\n\t\tthis.program = program\n\t\tthis.ui = term\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic async attachFeature(feature: AbstractFeature) {\n\t\tconst actionCodes = await feature.getAvailableActionCodes()\n\n\t\tfor (const actionCode of actionCodes) {\n\t\t\tthis.attachCode(actionCode, feature)\n\t\t}\n\t}\n\n\tprivate attachCode(code: string, feature: AbstractFeature) {\n\t\tlet commandStr = featuresUtil.generateCommand(feature.code, code)\n\t\tconst action = this.actionExecuter.Action(feature.code, code)\n\n\t\tconst aliases = action.commandAliases ? [...action.commandAliases] : []\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommandStr = aliases.shift() as string\n\t\t}\n\n\t\tlet command = this.program.command(commandStr)\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommand = command.aliases(aliases)\n\t\t}\n\n\t\tcommand = command.action(async (...args: any[]) => {\n\t\t\tthis.clearAndRenderMasthead(action)\n\t\t\tconst startTime = new Date().getTime()\n\n\t\t\tconst options = commanderUtil.mapIncomingToOptions(\n\t\t\t\t...args,\n\t\t\t\tfeature.optionsSchema ?? action.optionsSchema\n\t\t\t)\n\n\t\t\tconst results = await action.execute({\n\t\t\t\t...options,\n\t\t\t})\n\n\t\t\tconst endTime = new Date().getTime()\n\t\t\tconst totalTime = endTime - startTime\n\n\t\t\tthis.clearAndRenderResults({\n\t\t\t\tfeatureCode: feature.code,\n\t\t\t\tactionCode: code,\n\t\t\t\ttotalTime,\n\t\t\t\tresults,\n\t\t\t\taction,\n\t\t\t})\n\n\t\t\treturn results as any\n\t\t})\n\n\t\tconst description = action.optionsSchema?.description\n\n\t\tif (description) {\n\t\t\tcommand = command.description(description)\n\t\t}\n\n\t\tconst schema = action.optionsSchema\n\n\t\tif (schema) {\n\t\t\tthis.attachOptions(command, schema)\n\t\t}\n\t}\n\n\tprivate clearAndRenderResults(options: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t\ttotalTime: number\n\t\taction: FeatureAction\n\t\tresults: FeatureActionResponse\n\t}) {\n\t\tconst { featureCode, actionCode, results, totalTime, action } = options\n\n\t\tthis.ui.stopLoading()\n\t\tthis.ui.clear()\n\n\t\tthis.ui.renderActionSummary({\n\t\t\t//@ts-ignore\n\t\t\theadline: `${actionCode} finished!`,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\ttotalTime,\n\t\t\taction,\n\t\t\t...results,\n\t\t})\n\t}\n\n\tprivate clearAndRenderMasthead(action: FeatureAction<Schema>) {\n\t\tuiUtil.renderActionMastHead(this.ui, action)\n\t}\n\n\tprivate attachOptions(command: CommanderStatic['program'], schema: Schema) {\n\t\tconst entity = SchemaEntityFactory.Entity(schema)\n\n\t\tlet theProgram = command\n\n\t\tconst fields = entity.getNamedFields()\n\t\tconst aliases = featuresUtil.generateOptionAliases(schema)\n\n\t\tfields.forEach(({ field, name }) => {\n\t\t\ttry {\n\t\t\t\ttheProgram = theProgram.option(\n\t\t\t\t\taliases[name],\n\t\t\t\t\tfield.hint,\n\t\t\t\t\tfield.definition.defaultValue\n\t\t\t\t\t\t? `${field.definition.defaultValue}`\n\t\t\t\t\t\t: undefined\n\t\t\t\t)\n\t\t\t} catch (err: any) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tcode: 'FAILED_TO_ATTACH_COMMAND',\n\t\t\t\t\tfieldName: name,\n\t\t\t\t\tid: entity.schemaId,\n\t\t\t\t\toriginalError: err,\n\t\t\t\t\tfriendlyMessage: `Could not attach option ${aliases[name]} from ${entity.schemaId}.${name} to the command`,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n}\n"],"file":"FeatureCommandAttacher.js"}
1
+ {"version":3,"file":"FeatureCommandAttacher.js","names":["FeatureCommandAttacher","options","program","term","ui","actionExecuter","feature","getAvailableActionCodes","actionCodes","actionCode","attachCode","code","commandStr","featuresUtil","generateCommand","action","Action","aliases","commandAliases","length","shift","command","clearAndRenderMasthead","startTime","Date","getTime","args","commanderUtil","mapIncomingToOptions","optionsSchema","execute","results","endTime","totalTime","clearAndRenderResults","featureCode","description","schema","attachOptions","stopLoading","clear","renderActionSummary","headline","uiUtil","renderActionMastHead","entity","SchemaEntityFactory","Entity","theProgram","fields","getNamedFields","generateOptionAliases","forEach","field","name","option","hint","definition","defaultValue","undefined","err","SpruceError","fieldName","id","schemaId","originalError","friendlyMessage"],"sources":["../../src/features/FeatureCommandAttacher.ts"],"sourcesContent":["import { Schema, SchemaEntityFactory } from '@sprucelabs/schema'\nimport { CommanderStatic } from 'commander'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport commanderUtil from '../utilities/commander.utility'\nimport uiUtil from '../utilities/ui.utility'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport featuresUtil from './feature.utilities'\nimport { FeatureAction, FeatureActionResponse } from './features.types'\n\nexport interface OptionOverrides {\n\t[command: string]: Record<string, any>\n}\n\nexport interface BlockedCommands {\n\t[command: string]: string\n}\n\nexport default class FeatureCommandAttacher {\n\tprivate program: CommanderStatic['program']\n\tprivate ui: GraphicsInterface\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: {\n\t\tprogram: CommanderStatic['program']\n\t\tui: GraphicsInterface\n\t\tactionExecuter: ActionExecuter\n\t}) {\n\t\tconst { program, ui: term, actionExecuter } = options\n\n\t\tthis.program = program\n\t\tthis.ui = term\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic async attachFeature(feature: AbstractFeature) {\n\t\tconst actionCodes = await feature.getAvailableActionCodes()\n\n\t\tfor (const actionCode of actionCodes) {\n\t\t\tthis.attachCode(actionCode, feature)\n\t\t}\n\t}\n\n\tprivate attachCode(code: string, feature: AbstractFeature) {\n\t\tlet commandStr = featuresUtil.generateCommand(feature.code, code)\n\t\tconst action = this.actionExecuter.Action(feature.code, code)\n\n\t\tconst aliases = action.commandAliases ? [...action.commandAliases] : []\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommandStr = aliases.shift() as string\n\t\t}\n\n\t\tlet command = this.program.command(commandStr)\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommand = command.aliases(aliases)\n\t\t}\n\n\t\tcommand = command.action(async (...args: any[]) => {\n\t\t\tthis.clearAndRenderMasthead(action)\n\t\t\tconst startTime = new Date().getTime()\n\n\t\t\tconst options = commanderUtil.mapIncomingToOptions(\n\t\t\t\t...args,\n\t\t\t\tfeature.optionsSchema ?? action.optionsSchema\n\t\t\t)\n\n\t\t\tconst results = await action.execute({\n\t\t\t\t...options,\n\t\t\t})\n\n\t\t\tconst endTime = new Date().getTime()\n\t\t\tconst totalTime = endTime - startTime\n\n\t\t\tthis.clearAndRenderResults({\n\t\t\t\tfeatureCode: feature.code,\n\t\t\t\tactionCode: code,\n\t\t\t\ttotalTime,\n\t\t\t\tresults,\n\t\t\t\taction,\n\t\t\t})\n\n\t\t\treturn results as any\n\t\t})\n\n\t\tconst description = action.optionsSchema?.description\n\n\t\tif (description) {\n\t\t\tcommand = command.description(description)\n\t\t}\n\n\t\tconst schema = action.optionsSchema\n\n\t\tif (schema) {\n\t\t\tthis.attachOptions(command, schema)\n\t\t}\n\t}\n\n\tprivate clearAndRenderResults(options: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t\ttotalTime: number\n\t\taction: FeatureAction\n\t\tresults: FeatureActionResponse\n\t}) {\n\t\tconst { featureCode, actionCode, results, totalTime, action } = options\n\n\t\tthis.ui.stopLoading()\n\t\tthis.ui.clear()\n\n\t\tthis.ui.renderActionSummary({\n\t\t\t//@ts-ignore\n\t\t\theadline: `${actionCode} finished!`,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\ttotalTime,\n\t\t\taction,\n\t\t\t...results,\n\t\t})\n\t}\n\n\tprivate clearAndRenderMasthead(action: FeatureAction<Schema>) {\n\t\tuiUtil.renderActionMastHead(this.ui, action)\n\t}\n\n\tprivate attachOptions(command: CommanderStatic['program'], schema: Schema) {\n\t\tconst entity = SchemaEntityFactory.Entity(schema)\n\n\t\tlet theProgram = command\n\n\t\tconst fields = entity.getNamedFields()\n\t\tconst aliases = featuresUtil.generateOptionAliases(schema)\n\n\t\tfields.forEach(({ field, name }) => {\n\t\t\ttry {\n\t\t\t\ttheProgram = theProgram.option(\n\t\t\t\t\taliases[name],\n\t\t\t\t\tfield.hint,\n\t\t\t\t\tfield.definition.defaultValue\n\t\t\t\t\t\t? `${field.definition.defaultValue}`\n\t\t\t\t\t\t: undefined\n\t\t\t\t)\n\t\t\t} catch (err: any) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tcode: 'FAILED_TO_ATTACH_COMMAND',\n\t\t\t\t\tfieldName: name,\n\t\t\t\t\tid: entity.schemaId,\n\t\t\t\t\toriginalError: err,\n\t\t\t\t\tfriendlyMessage: `Could not attach option ${aliases[name]} from ${entity.schemaId}.${name} to the command`,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/FeatureInstaller.ts"],"names":["FeatureInstaller","cwd","serviceFactory","code","feature","getFeature","isInstalled","Service","isMarkedAsInstalled","isMarkedAsSkipped","featuresMarkedAsSkippedThisRun","push","markAsPermanentlySkipped","indexOf","isMarkedAsPermanentlySkipped","featureMap","SpruceError","featureCode","codes","Promise","all","map","f","results","i","length","result","trackedFeatures","deps","getFeatureDependenciesIncludingSelf","isRequired","filter","sortFeatures","featureDependency","features","isDependencyInTracker","dependencies","dependency","x","dependencyDependencies","find","options","installFeatureDependencies","didUpdateHandler","shouldAllowEntertainment","startInFlightIntertainmentHandler","handler","pendingFeatureInstalls","dependenciesToInstall","concat","isInstalledOrPendingInstall","installOptions","installFeature","installResults","installAllPending","pendingResults","stopInFlightIntertainmentHandler","optionsSchema","beforePackageInstall","beforeInstallResults","queueInstallPackageDependenciesWithoutEntertainment","packagesInstalled","afterPackageInstalls","featuresToMarkAsInstalled","files","undefined","installPackageDependenciesForFeatures","pkgService","packagesToInstall","install","devPackagesToInstall","isDev","settings","markAsInstalled","afterPackageInstall","afterInstallResults","packageDependencies","forEach","pkg","packageName","buildPackageName","name","getFeatureNameAndDesc","nameReadable","description","featureDependencies","sort","a","b","aFeature","bFeature","aDependsOnB","d","bDependsOnA","installOrderWeight","type","Object","keys","dep","getAllCodes","installed"],"mappings":"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","sourcesContent":["import { validateSchemaValues } from '@sprucelabs/schema'\nimport { uniq } from 'lodash'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport { InternalUpdateHandler, NpmPackage } from '../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport {\n\tInstallFeatureOptions,\n\tFeatureInstallResponse,\n\tFeatureCode,\n\tInstallFeature,\n\tFeatureMap,\n} from './features.types'\n\nexport default class FeatureInstaller implements ServiceProvider {\n\tpublic cwd: string\n\n\tprivate featureMap: Partial<FeatureMap> = {}\n\tprivate serviceFactory: ServiceFactory\n\tprivate featuresMarkedAsSkippedThisRun: FeatureCode[] = []\n\tpublic static startInFlightIntertainmentHandler?: (\n\t\tdidUpdateHandler: (handler: (message: string) => void) => void\n\t) => void\n\tpublic static stopInFlightIntertainmentHandler?: () => void\n\tprivate packagesToInstall: string[] = []\n\tprivate devPackagesToInstall: string[] = []\n\tprivate featuresToMarkAsInstalled: string[] = []\n\tprivate afterPackageInstalls: InstallFeature[] = []\n\tprivate pendingFeatureInstalls: Record<string, boolean> = {}\n\n\tpublic constructor(cwd: string, serviceFactory: ServiceFactory) {\n\t\tthis.cwd = cwd\n\t\tthis.serviceFactory = serviceFactory\n\t}\n\n\tpublic async isInstalled(code: FeatureCode): Promise<boolean> {\n\t\tconst feature = this.getFeature(code)\n\n\t\tif (feature.isInstalled) {\n\t\t\treturn feature.isInstalled()\n\t\t}\n\n\t\treturn this.Service('settings').isMarkedAsInstalled(code)\n\t}\n\n\tpublic markAsSkippedThisRun(code: FeatureCode) {\n\t\tif (!this.isMarkedAsSkipped(code)) {\n\t\t\tthis.featuresMarkedAsSkippedThisRun.push(code)\n\t\t}\n\t}\n\tpublic markAsPermanentlySkipped(code: FeatureCode) {\n\t\tif (!this.isMarkedAsSkipped(code)) {\n\t\t\tthis.Service('settings').markAsPermanentlySkipped(code)\n\t\t}\n\t}\n\n\tpublic isMarkedAsSkipped(code: FeatureCode) {\n\t\treturn (\n\t\t\tthis.featuresMarkedAsSkippedThisRun.indexOf(code) > -1 ||\n\t\t\tthis.Service('settings').isMarkedAsPermanentlySkipped(code)\n\t\t)\n\t}\n\n\tpublic mapFeature<C extends FeatureCode>(code: C, feature: FeatureMap[C]) {\n\t\tthis.featureMap[code] = feature\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C): FeatureMap[C] {\n\t\tconst feature = this.featureMap[code]\n\t\tif (!feature) {\n\t\t\tthrow new SpruceError({ code: 'INVALID_FEATURE_CODE', featureCode: code })\n\t\t}\n\n\t\treturn feature as FeatureMap[C]\n\t}\n\n\tpublic async areInstalled(codes: FeatureCode[]) {\n\t\tconst results = await Promise.all(\n\t\t\tcodes.map((f) => {\n\t\t\t\treturn this.isInstalled(f)\n\t\t\t})\n\t\t)\n\n\t\tfor (let i = 0; i < results.length; i += 1) {\n\t\t\tconst result = results[i]\n\t\t\tif (!result) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tpublic getFeatureDependencies<C extends FeatureCode>(\n\t\tfeatureCode: C,\n\t\ttrackedFeatures: FeatureDependency[] = []\n\t): FeatureDependency[] {\n\t\tlet deps = this.getFeatureDependenciesIncludingSelf(\n\t\t\t{ code: featureCode, isRequired: true },\n\t\t\ttrackedFeatures\n\t\t).filter((f) => f.code !== featureCode)\n\n\t\tdeps = this.sortFeatures(deps)\n\n\t\treturn deps\n\t}\n\n\tprivate getFeatureDependenciesIncludingSelf(\n\t\tfeatureDependency: FeatureDependency,\n\t\ttrackedFeatures: FeatureDependency[] = []\n\t): FeatureDependency[] {\n\t\tconst features: FeatureDependency[] = []\n\n\t\tif (!this.isDependencyInTracker(trackedFeatures, featureDependency)) {\n\t\t\tfeatures.push(featureDependency)\n\t\t\ttrackedFeatures.push(featureDependency)\n\t\t}\n\n\t\tconst feature = this.getFeature(featureDependency.code)\n\t\tconst dependencies = feature.dependencies\n\n\t\tfor (let i = 0; i < dependencies.length; i += 1) {\n\t\t\tconst dependency = dependencies[i]\n\t\t\tif (!this.isDependencyInTracker(trackedFeatures, dependency)) {\n\t\t\t\tfeatures.push(dependency)\n\t\t\t\ttrackedFeatures.push(dependency)\n\t\t\t}\n\t\t}\n\n\t\tfor (let x = 0; x < dependencies.length; x += 1) {\n\t\t\tconst dependency = dependencies[x]\n\t\t\tlet dependencyDependencies = this.getFeatureDependenciesIncludingSelf(\n\t\t\t\tdependency,\n\t\t\t\ttrackedFeatures\n\t\t\t)\n\t\t\tif (!dependency.isRequired) {\n\t\t\t\tdependencyDependencies = dependencyDependencies.map((f) => ({\n\t\t\t\t\t...f,\n\t\t\t\t\tisRequired: false,\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\tfeatures.push(...dependencyDependencies)\n\t\t}\n\n\t\treturn features\n\t}\n\n\tprivate isDependencyInTracker(\n\t\ttrackedFeatures: FeatureDependency[],\n\t\tdependency: FeatureDependency\n\t) {\n\t\treturn !!trackedFeatures.find((f) => f.code === dependency.code)\n\t}\n\n\tpublic async install(\n\t\toptions: InstallFeatureOptions\n\t): Promise<FeatureInstallResponse> {\n\t\tlet {\n\t\t\tfeatures,\n\t\t\tinstallFeatureDependencies = true,\n\t\t\tdidUpdateHandler,\n\t\t} = options\n\n\t\tconst shouldAllowEntertainment = !!features.find((f) => f.code === 'skill')\n\n\t\tif (\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler &&\n\t\t\tshouldAllowEntertainment\n\t\t) {\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler(\n\t\t\t\t(handler: InternalUpdateHandler) => {\n\t\t\t\t\tdidUpdateHandler = handler\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tthis.pendingFeatureInstalls = {}\n\n\t\tlet results: FeatureInstallResponse = {}\n\n\t\tlet dependenciesToInstall: FeatureDependency[] = []\n\n\t\tfor (let i = 0; i < features.length; i += 1) {\n\t\t\tconst f = features[i]\n\t\t\tconst code = f.code\n\n\t\t\tdidUpdateHandler?.(`Checking if ${code} is installed...`)\n\n\t\t\tconst isInstalled = await this.isInstalled(code)\n\t\t\tif (!isInstalled && installFeatureDependencies) {\n\t\t\t\tdidUpdateHandler?.(`It is not, checking dependencies...`)\n\t\t\t\tdependenciesToInstall = dependenciesToInstall.concat(\n\t\t\t\t\tthis.getFeatureDependenciesIncludingSelf({ code, isRequired: true })\n\t\t\t\t)\n\t\t\t} else if (!isInstalled) {\n\t\t\t\tdependenciesToInstall.push({ code, isRequired: true })\n\t\t\t}\n\t\t}\n\n\t\tdependenciesToInstall = uniq(dependenciesToInstall)\n\t\tdependenciesToInstall = this.sortFeatures(dependenciesToInstall)\n\n\t\tfor (let i = 0; i < dependenciesToInstall.length; i += 1) {\n\t\t\tconst { code, isRequired } = dependenciesToInstall[i]\n\n\t\t\tconst isInstalled = await this.isInstalledOrPendingInstall(code)\n\n\t\t\tif (!isInstalled && isRequired) {\n\t\t\t\tconst installOptions =\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\toptions.features.find((f) => f.code === code)?.options\n\n\t\t\t\tconst installFeature = {\n\t\t\t\t\tcode: dependenciesToInstall[i].code,\n\t\t\t\t\toptions: installOptions,\n\t\t\t\t} as InstallFeature\n\n\t\t\t\tdidUpdateHandler?.(`Installing the ${installFeature.code} feature....`)\n\n\t\t\t\tconst installResults = await this.installFeature(\n\t\t\t\t\tinstallFeature,\n\t\t\t\t\tdidUpdateHandler\n\t\t\t\t)\n\t\t\t\tresults = merge(results, installResults)\n\t\t\t}\n\t\t}\n\n\t\tconst pendingResults = await this.installAllPending(didUpdateHandler)\n\t\tresults = merge(results, pendingResults)\n\n\t\tif (\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler &&\n\t\t\tshouldAllowEntertainment\n\t\t) {\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate isInstalledOrPendingInstall(code: string) {\n\t\treturn this.pendingFeatureInstalls[code] || this.isInstalled(code as any)\n\t}\n\n\tprivate async installFeature(\n\t\tinstallFeature: InstallFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<FeatureInstallResponse> {\n\t\tthis.pendingFeatureInstalls[installFeature.code] = true\n\n\t\tconst feature = this.getFeature(installFeature.code) as AbstractFeature\n\n\t\tif (feature.optionsSchema) {\n\t\t\t//@ts-ignore\n\t\t\tvalidateSchemaValues(feature.optionsSchema, installFeature.options ?? {})\n\t\t}\n\n\t\tdidUpdateHandler?.(`Running before package install hook...`)\n\t\tconst beforeInstallResults = await feature.beforePackageInstall(\n\t\t\t//@ts-ignore\n\t\t\tinstallFeature.options\n\t\t)\n\n\t\tif (beforeInstallResults.cwd) {\n\t\t\tthis.cwd = beforeInstallResults.cwd\n\t\t}\n\n\t\tdidUpdateHandler?.(`Installing package dependencies...`)\n\t\tconst packagesInstalled =\n\t\t\tawait this.queueInstallPackageDependenciesWithoutEntertainment(\n\t\t\t\tfeature,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\n\t\tdidUpdateHandler?.(`Running after package install hook...`)\n\n\t\tthis.afterPackageInstalls.push(installFeature)\n\n\t\tif (!feature.isInstalled) {\n\t\t\tthis.featuresToMarkAsInstalled.push(feature.code)\n\t\t}\n\n\t\tconst files = [...(beforeInstallResults.files ?? [])]\n\n\t\treturn {\n\t\t\tfiles: files ?? undefined,\n\t\t\tpackagesInstalled,\n\t\t}\n\t}\n\n\tpublic async installPackageDependencies(\n\t\tfeature: AbstractFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\treturn this.installPackageDependenciesForFeatures(\n\t\t\t[feature],\n\t\t\tdidUpdateHandler\n\t\t)\n\t}\n\n\tpublic async installPackageDependenciesForFeatures(\n\t\tfeatures: AbstractFeature[],\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tif (FeatureInstaller.startInFlightIntertainmentHandler) {\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler(\n\t\t\t\t(handler: InternalUpdateHandler) => {\n\t\t\t\t\tdidUpdateHandler = handler\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tfor (const feature of features) {\n\t\t\tawait this.queueInstallPackageDependenciesWithoutEntertainment(\n\t\t\t\tfeature,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\t\t}\n\n\t\tawait this.installAllPending(didUpdateHandler)\n\n\t\tif (FeatureInstaller.stopInFlightIntertainmentHandler) {\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler()\n\t\t}\n\t}\n\n\tprivate async installAllPending(\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<FeatureInstallResponse> {\n\t\tconst pkgService = this.Service('pkg')\n\n\t\tif (this.packagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Installing ${this.packagesToInstall.length} node module${\n\t\t\t\t\tthis.packagesToInstall.length === 1 ? '' : 's'\n\t\t\t\t}. Please be patient.`\n\t\t\t)\n\t\t\tawait pkgService.install(this.packagesToInstall, {})\n\t\t}\n\n\t\tif (this.devPackagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Now installing ${this.devPackagesToInstall.length} DEV node module${\n\t\t\t\t\tthis.devPackagesToInstall.length === 1 ? '' : 's'\n\t\t\t\t}. Please be patient.`\n\t\t\t)\n\t\t\tawait pkgService.install(this.devPackagesToInstall, {\n\t\t\t\tisDev: true,\n\t\t\t})\n\t\t}\n\n\t\tthis.packagesToInstall = []\n\t\tthis.devPackagesToInstall = []\n\n\t\tconst settings = this.Service('settings')\n\n\t\tfor (const code of this.featuresToMarkAsInstalled) {\n\t\t\tsettings.markAsInstalled(code)\n\t\t}\n\n\t\tthis.featuresToMarkAsInstalled = []\n\n\t\tlet results: FeatureInstallResponse = {}\n\n\t\tfor (const installFeature of this.afterPackageInstalls) {\n\t\t\tconst feature = this.getFeature(installFeature.code)\n\t\t\tconst afterInstallResults = await feature.afterPackageInstall(\n\t\t\t\t//@ts-ignore\n\t\t\t\tinstallFeature.options\n\t\t\t)\n\n\t\t\tresults = merge(results, afterInstallResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async queueInstallPackageDependenciesWithoutEntertainment(\n\t\tfeature: AbstractFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tconst packagesInstalled: NpmPackage[] = []\n\t\tconst pkgService = this.Service('pkg')\n\n\t\tfeature.packageDependencies?.forEach((pkg) => {\n\t\t\tconst packageName = pkgService.buildPackageName(pkg)\n\n\t\t\tpackagesInstalled.push(pkg)\n\n\t\t\tdidUpdateHandler?.(`Checking node dependency: ${pkg.name}`)\n\n\t\t\tif (pkg.isDev && this.devPackagesToInstall.indexOf(packageName) === -1) {\n\t\t\t\tthis.devPackagesToInstall.push(packageName)\n\t\t\t} else if (\n\t\t\t\t!pkg.isDev &&\n\t\t\t\tthis.packagesToInstall.indexOf(packageName) === -1\n\t\t\t) {\n\t\t\t\tthis.packagesToInstall.push(packageName)\n\t\t\t}\n\t\t})\n\n\t\tif (this.packagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Queueing install of ${this.packagesToInstall.length} node dependenc${\n\t\t\t\t\tthis.packagesToInstall.length === 1\n\t\t\t\t\t\t? 'y.'\n\t\t\t\t\t\t: 'ies for ' + this.getFeatureNameAndDesc(feature) + '...'\n\t\t\t\t}.`\n\t\t\t)\n\t\t}\n\n\t\tif (this.devPackagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Queueing install of ${\n\t\t\t\t\tthis.devPackagesToInstall.length\n\t\t\t\t} DEV node dependenc${\n\t\t\t\t\tthis.devPackagesToInstall.length === 1\n\t\t\t\t\t\t? 'y.'\n\t\t\t\t\t\t: 'ies for ' + this.getFeatureNameAndDesc(feature) + '. 🤘'\n\t\t\t\t}.`\n\t\t\t)\n\t\t}\n\n\t\treturn packagesInstalled\n\t}\n\n\tprivate getFeatureNameAndDesc(feature: AbstractFeature) {\n\t\treturn `${feature.nameReadable}${\n\t\t\tfeature.description ? ' (' + feature.description + ')' : ''\n\t\t}`\n\t}\n\n\tprivate sortFeatures(\n\t\tfeatureDependencies: FeatureDependency[]\n\t): FeatureDependency[] {\n\t\treturn [...featureDependencies].sort((a, b) => {\n\t\t\tconst aFeature = this.getFeature(a.code)\n\t\t\tconst bFeature = this.getFeature(b.code)\n\n\t\t\tconst aDependsOnB = aFeature.dependencies.find((d) => d.code === b.code)\n\t\t\tconst bDependsOnA = bFeature.dependencies.find((d) => d.code === a.code)\n\n\t\t\tif (\n\t\t\t\taDependsOnB ||\n\t\t\t\taFeature.installOrderWeight < bFeature.installOrderWeight\n\t\t\t) {\n\t\t\t\treturn 1\n\t\t\t} else if (\n\t\t\t\tbDependsOnA ||\n\t\t\t\taFeature.installOrderWeight > bFeature.installOrderWeight\n\t\t\t) {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn 0\n\t\t})\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic getOptionsForFeature(code: FeatureCode) {\n\t\treturn this.getFeature(code).optionsSchema\n\t}\n\n\tpublic getAllCodes(): FeatureCode[] {\n\t\tconst codes = Object.keys(this.featureMap) as FeatureCode[]\n\t\treturn this.sortFeatures(\n\t\t\tcodes.map((code) => ({ code, isRequired: true }))\n\t\t).map((dep) => dep.code)\n\t}\n\n\tpublic async getInstalledFeatures() {\n\t\tconst installed = await Promise.all(\n\t\t\tthis.getAllCodes().map(async (code) => {\n\t\t\t\tconst isInstalled = await this.isInstalled(code)\n\t\t\t\tif (isInstalled) {\n\t\t\t\t\treturn this.getFeature(code)\n\t\t\t\t}\n\n\t\t\t\treturn false\n\t\t\t})\n\t\t)\n\n\t\treturn installed.filter((f) => !!f) as FeatureMap[keyof FeatureMap][]\n\t}\n}\n"],"file":"FeatureInstaller.js"}
1
+ {"version":3,"file":"FeatureInstaller.js","names":["FeatureInstaller","cwd","serviceFactory","code","feature","getFeature","isInstalled","Service","isMarkedAsInstalled","isMarkedAsSkipped","featuresMarkedAsSkippedThisRun","push","markAsPermanentlySkipped","indexOf","isMarkedAsPermanentlySkipped","featureMap","SpruceError","featureCode","codes","Promise","all","map","f","results","i","length","result","trackedFeatures","deps","getFeatureDependenciesIncludingSelf","isRequired","filter","sortFeatures","featureDependency","features","isDependencyInTracker","dependencies","dependency","x","dependencyDependencies","find","options","installFeatureDependencies","didUpdateHandler","shouldAllowEntertainment","startInFlightIntertainmentHandler","handler","pendingFeatureInstalls","dependenciesToInstall","concat","isInstalledOrPendingInstall","installOptions","installFeature","installResults","installAllPending","pendingResults","stopInFlightIntertainmentHandler","optionsSchema","beforePackageInstall","beforeInstallResults","queueInstallPackageDependenciesWithoutEntertainment","packagesInstalled","afterPackageInstalls","featuresToMarkAsInstalled","files","undefined","installPackageDependenciesForFeatures","pkgService","packagesToInstall","install","devPackagesToInstall","isDev","settings","markAsInstalled","afterPackageInstall","afterInstallResults","packageDependencies","forEach","pkg","packageName","buildPackageName","name","getFeatureNameAndDesc","nameReadable","description","featureDependencies","sort","a","b","aFeature","bFeature","aDependsOnB","d","bDependsOnA","installOrderWeight","type","Object","keys","dep","getAllCodes","installed"],"sources":["../../src/features/FeatureInstaller.ts"],"sourcesContent":["import { validateSchemaValues } from '@sprucelabs/schema'\nimport { uniq } from 'lodash'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport { InternalUpdateHandler, NpmPackage } from '../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport {\n\tInstallFeatureOptions,\n\tFeatureInstallResponse,\n\tFeatureCode,\n\tInstallFeature,\n\tFeatureMap,\n} from './features.types'\n\nexport default class FeatureInstaller implements ServiceProvider {\n\tpublic cwd: string\n\n\tprivate featureMap: Partial<FeatureMap> = {}\n\tprivate serviceFactory: ServiceFactory\n\tprivate featuresMarkedAsSkippedThisRun: FeatureCode[] = []\n\tpublic static startInFlightIntertainmentHandler?: (\n\t\tdidUpdateHandler: (handler: (message: string) => void) => void\n\t) => void\n\tpublic static stopInFlightIntertainmentHandler?: () => void\n\tprivate packagesToInstall: string[] = []\n\tprivate devPackagesToInstall: string[] = []\n\tprivate featuresToMarkAsInstalled: string[] = []\n\tprivate afterPackageInstalls: InstallFeature[] = []\n\tprivate pendingFeatureInstalls: Record<string, boolean> = {}\n\n\tpublic constructor(cwd: string, serviceFactory: ServiceFactory) {\n\t\tthis.cwd = cwd\n\t\tthis.serviceFactory = serviceFactory\n\t}\n\n\tpublic async isInstalled(code: FeatureCode): Promise<boolean> {\n\t\tconst feature = this.getFeature(code)\n\n\t\tif (feature.isInstalled) {\n\t\t\treturn feature.isInstalled()\n\t\t}\n\n\t\treturn this.Service('settings').isMarkedAsInstalled(code)\n\t}\n\n\tpublic markAsSkippedThisRun(code: FeatureCode) {\n\t\tif (!this.isMarkedAsSkipped(code)) {\n\t\t\tthis.featuresMarkedAsSkippedThisRun.push(code)\n\t\t}\n\t}\n\tpublic markAsPermanentlySkipped(code: FeatureCode) {\n\t\tif (!this.isMarkedAsSkipped(code)) {\n\t\t\tthis.Service('settings').markAsPermanentlySkipped(code)\n\t\t}\n\t}\n\n\tpublic isMarkedAsSkipped(code: FeatureCode) {\n\t\treturn (\n\t\t\tthis.featuresMarkedAsSkippedThisRun.indexOf(code) > -1 ||\n\t\t\tthis.Service('settings').isMarkedAsPermanentlySkipped(code)\n\t\t)\n\t}\n\n\tpublic mapFeature<C extends FeatureCode>(code: C, feature: FeatureMap[C]) {\n\t\tthis.featureMap[code] = feature\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C): FeatureMap[C] {\n\t\tconst feature = this.featureMap[code]\n\t\tif (!feature) {\n\t\t\tthrow new SpruceError({ code: 'INVALID_FEATURE_CODE', featureCode: code })\n\t\t}\n\n\t\treturn feature as FeatureMap[C]\n\t}\n\n\tpublic async areInstalled(codes: FeatureCode[]) {\n\t\tconst results = await Promise.all(\n\t\t\tcodes.map((f) => {\n\t\t\t\treturn this.isInstalled(f)\n\t\t\t})\n\t\t)\n\n\t\tfor (let i = 0; i < results.length; i += 1) {\n\t\t\tconst result = results[i]\n\t\t\tif (!result) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tpublic getFeatureDependencies<C extends FeatureCode>(\n\t\tfeatureCode: C,\n\t\ttrackedFeatures: FeatureDependency[] = []\n\t): FeatureDependency[] {\n\t\tlet deps = this.getFeatureDependenciesIncludingSelf(\n\t\t\t{ code: featureCode, isRequired: true },\n\t\t\ttrackedFeatures\n\t\t).filter((f) => f.code !== featureCode)\n\n\t\tdeps = this.sortFeatures(deps)\n\n\t\treturn deps\n\t}\n\n\tprivate getFeatureDependenciesIncludingSelf(\n\t\tfeatureDependency: FeatureDependency,\n\t\ttrackedFeatures: FeatureDependency[] = []\n\t): FeatureDependency[] {\n\t\tconst features: FeatureDependency[] = []\n\n\t\tif (!this.isDependencyInTracker(trackedFeatures, featureDependency)) {\n\t\t\tfeatures.push(featureDependency)\n\t\t\ttrackedFeatures.push(featureDependency)\n\t\t}\n\n\t\tconst feature = this.getFeature(featureDependency.code)\n\t\tconst dependencies = feature.dependencies\n\n\t\tfor (let i = 0; i < dependencies.length; i += 1) {\n\t\t\tconst dependency = dependencies[i]\n\t\t\tif (!this.isDependencyInTracker(trackedFeatures, dependency)) {\n\t\t\t\tfeatures.push(dependency)\n\t\t\t\ttrackedFeatures.push(dependency)\n\t\t\t}\n\t\t}\n\n\t\tfor (let x = 0; x < dependencies.length; x += 1) {\n\t\t\tconst dependency = dependencies[x]\n\t\t\tlet dependencyDependencies = this.getFeatureDependenciesIncludingSelf(\n\t\t\t\tdependency,\n\t\t\t\ttrackedFeatures\n\t\t\t)\n\t\t\tif (!dependency.isRequired) {\n\t\t\t\tdependencyDependencies = dependencyDependencies.map((f) => ({\n\t\t\t\t\t...f,\n\t\t\t\t\tisRequired: false,\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\tfeatures.push(...dependencyDependencies)\n\t\t}\n\n\t\treturn features\n\t}\n\n\tprivate isDependencyInTracker(\n\t\ttrackedFeatures: FeatureDependency[],\n\t\tdependency: FeatureDependency\n\t) {\n\t\treturn !!trackedFeatures.find((f) => f.code === dependency.code)\n\t}\n\n\tpublic async install(\n\t\toptions: InstallFeatureOptions\n\t): Promise<FeatureInstallResponse> {\n\t\tlet {\n\t\t\tfeatures,\n\t\t\tinstallFeatureDependencies = true,\n\t\t\tdidUpdateHandler,\n\t\t} = options\n\n\t\tconst shouldAllowEntertainment = !!features.find((f) => f.code === 'skill')\n\n\t\tif (\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler &&\n\t\t\tshouldAllowEntertainment\n\t\t) {\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler(\n\t\t\t\t(handler: InternalUpdateHandler) => {\n\t\t\t\t\tdidUpdateHandler = handler\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tthis.pendingFeatureInstalls = {}\n\n\t\tlet results: FeatureInstallResponse = {}\n\n\t\tlet dependenciesToInstall: FeatureDependency[] = []\n\n\t\tfor (let i = 0; i < features.length; i += 1) {\n\t\t\tconst f = features[i]\n\t\t\tconst code = f.code\n\n\t\t\tdidUpdateHandler?.(`Checking if ${code} is installed...`)\n\n\t\t\tconst isInstalled = await this.isInstalled(code)\n\t\t\tif (!isInstalled && installFeatureDependencies) {\n\t\t\t\tdidUpdateHandler?.(`It is not, checking dependencies...`)\n\t\t\t\tdependenciesToInstall = dependenciesToInstall.concat(\n\t\t\t\t\tthis.getFeatureDependenciesIncludingSelf({ code, isRequired: true })\n\t\t\t\t)\n\t\t\t} else if (!isInstalled) {\n\t\t\t\tdependenciesToInstall.push({ code, isRequired: true })\n\t\t\t}\n\t\t}\n\n\t\tdependenciesToInstall = uniq(dependenciesToInstall)\n\t\tdependenciesToInstall = this.sortFeatures(dependenciesToInstall)\n\n\t\tfor (let i = 0; i < dependenciesToInstall.length; i += 1) {\n\t\t\tconst { code, isRequired } = dependenciesToInstall[i]\n\n\t\t\tconst isInstalled = await this.isInstalledOrPendingInstall(code)\n\n\t\t\tif (!isInstalled && isRequired) {\n\t\t\t\tconst installOptions =\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\toptions.features.find((f) => f.code === code)?.options\n\n\t\t\t\tconst installFeature = {\n\t\t\t\t\tcode: dependenciesToInstall[i].code,\n\t\t\t\t\toptions: installOptions,\n\t\t\t\t} as InstallFeature\n\n\t\t\t\tdidUpdateHandler?.(`Installing the ${installFeature.code} feature....`)\n\n\t\t\t\tconst installResults = await this.installFeature(\n\t\t\t\t\tinstallFeature,\n\t\t\t\t\tdidUpdateHandler\n\t\t\t\t)\n\t\t\t\tresults = merge(results, installResults)\n\t\t\t}\n\t\t}\n\n\t\tconst pendingResults = await this.installAllPending(didUpdateHandler)\n\t\tresults = merge(results, pendingResults)\n\n\t\tif (\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler &&\n\t\t\tshouldAllowEntertainment\n\t\t) {\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate isInstalledOrPendingInstall(code: string) {\n\t\treturn this.pendingFeatureInstalls[code] || this.isInstalled(code as any)\n\t}\n\n\tprivate async installFeature(\n\t\tinstallFeature: InstallFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<FeatureInstallResponse> {\n\t\tthis.pendingFeatureInstalls[installFeature.code] = true\n\n\t\tconst feature = this.getFeature(installFeature.code) as AbstractFeature\n\n\t\tif (feature.optionsSchema) {\n\t\t\t//@ts-ignore\n\t\t\tvalidateSchemaValues(feature.optionsSchema, installFeature.options ?? {})\n\t\t}\n\n\t\tdidUpdateHandler?.(`Running before package install hook...`)\n\t\tconst beforeInstallResults = await feature.beforePackageInstall(\n\t\t\t//@ts-ignore\n\t\t\tinstallFeature.options\n\t\t)\n\n\t\tif (beforeInstallResults.cwd) {\n\t\t\tthis.cwd = beforeInstallResults.cwd\n\t\t}\n\n\t\tdidUpdateHandler?.(`Installing package dependencies...`)\n\t\tconst packagesInstalled =\n\t\t\tawait this.queueInstallPackageDependenciesWithoutEntertainment(\n\t\t\t\tfeature,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\n\t\tdidUpdateHandler?.(`Running after package install hook...`)\n\n\t\tthis.afterPackageInstalls.push(installFeature)\n\n\t\tif (!feature.isInstalled) {\n\t\t\tthis.featuresToMarkAsInstalled.push(feature.code)\n\t\t}\n\n\t\tconst files = [...(beforeInstallResults.files ?? [])]\n\n\t\treturn {\n\t\t\tfiles: files ?? undefined,\n\t\t\tpackagesInstalled,\n\t\t}\n\t}\n\n\tpublic async installPackageDependencies(\n\t\tfeature: AbstractFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\treturn this.installPackageDependenciesForFeatures(\n\t\t\t[feature],\n\t\t\tdidUpdateHandler\n\t\t)\n\t}\n\n\tpublic async installPackageDependenciesForFeatures(\n\t\tfeatures: AbstractFeature[],\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tif (FeatureInstaller.startInFlightIntertainmentHandler) {\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler(\n\t\t\t\t(handler: InternalUpdateHandler) => {\n\t\t\t\t\tdidUpdateHandler = handler\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tfor (const feature of features) {\n\t\t\tawait this.queueInstallPackageDependenciesWithoutEntertainment(\n\t\t\t\tfeature,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\t\t}\n\n\t\tawait this.installAllPending(didUpdateHandler)\n\n\t\tif (FeatureInstaller.stopInFlightIntertainmentHandler) {\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler()\n\t\t}\n\t}\n\n\tprivate async installAllPending(\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<FeatureInstallResponse> {\n\t\tconst pkgService = this.Service('pkg')\n\n\t\tif (this.packagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Installing ${this.packagesToInstall.length} node module${\n\t\t\t\t\tthis.packagesToInstall.length === 1 ? '' : 's'\n\t\t\t\t}. Please be patient.`\n\t\t\t)\n\t\t\tawait pkgService.install(this.packagesToInstall, {})\n\t\t}\n\n\t\tif (this.devPackagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Now installing ${this.devPackagesToInstall.length} DEV node module${\n\t\t\t\t\tthis.devPackagesToInstall.length === 1 ? '' : 's'\n\t\t\t\t}. Please be patient.`\n\t\t\t)\n\t\t\tawait pkgService.install(this.devPackagesToInstall, {\n\t\t\t\tisDev: true,\n\t\t\t})\n\t\t}\n\n\t\tthis.packagesToInstall = []\n\t\tthis.devPackagesToInstall = []\n\n\t\tconst settings = this.Service('settings')\n\n\t\tfor (const code of this.featuresToMarkAsInstalled) {\n\t\t\tsettings.markAsInstalled(code)\n\t\t}\n\n\t\tthis.featuresToMarkAsInstalled = []\n\n\t\tlet results: FeatureInstallResponse = {}\n\n\t\tfor (const installFeature of this.afterPackageInstalls) {\n\t\t\tconst feature = this.getFeature(installFeature.code)\n\t\t\tconst afterInstallResults = await feature.afterPackageInstall(\n\t\t\t\t//@ts-ignore\n\t\t\t\tinstallFeature.options\n\t\t\t)\n\n\t\t\tresults = merge(results, afterInstallResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async queueInstallPackageDependenciesWithoutEntertainment(\n\t\tfeature: AbstractFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tconst packagesInstalled: NpmPackage[] = []\n\t\tconst pkgService = this.Service('pkg')\n\n\t\tfeature.packageDependencies?.forEach((pkg) => {\n\t\t\tconst packageName = pkgService.buildPackageName(pkg)\n\n\t\t\tpackagesInstalled.push(pkg)\n\n\t\t\tdidUpdateHandler?.(`Checking node dependency: ${pkg.name}`)\n\n\t\t\tif (pkg.isDev && this.devPackagesToInstall.indexOf(packageName) === -1) {\n\t\t\t\tthis.devPackagesToInstall.push(packageName)\n\t\t\t} else if (\n\t\t\t\t!pkg.isDev &&\n\t\t\t\tthis.packagesToInstall.indexOf(packageName) === -1\n\t\t\t) {\n\t\t\t\tthis.packagesToInstall.push(packageName)\n\t\t\t}\n\t\t})\n\n\t\tif (this.packagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Queueing install of ${this.packagesToInstall.length} node dependenc${\n\t\t\t\t\tthis.packagesToInstall.length === 1\n\t\t\t\t\t\t? 'y.'\n\t\t\t\t\t\t: 'ies for ' + this.getFeatureNameAndDesc(feature) + '...'\n\t\t\t\t}.`\n\t\t\t)\n\t\t}\n\n\t\tif (this.devPackagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Queueing install of ${\n\t\t\t\t\tthis.devPackagesToInstall.length\n\t\t\t\t} DEV node dependenc${\n\t\t\t\t\tthis.devPackagesToInstall.length === 1\n\t\t\t\t\t\t? 'y.'\n\t\t\t\t\t\t: 'ies for ' + this.getFeatureNameAndDesc(feature) + '. 🤘'\n\t\t\t\t}.`\n\t\t\t)\n\t\t}\n\n\t\treturn packagesInstalled\n\t}\n\n\tprivate getFeatureNameAndDesc(feature: AbstractFeature) {\n\t\treturn `${feature.nameReadable}${\n\t\t\tfeature.description ? ' (' + feature.description + ')' : ''\n\t\t}`\n\t}\n\n\tprivate sortFeatures(\n\t\tfeatureDependencies: FeatureDependency[]\n\t): FeatureDependency[] {\n\t\treturn [...featureDependencies].sort((a, b) => {\n\t\t\tconst aFeature = this.getFeature(a.code)\n\t\t\tconst bFeature = this.getFeature(b.code)\n\n\t\t\tconst aDependsOnB = aFeature.dependencies.find((d) => d.code === b.code)\n\t\t\tconst bDependsOnA = bFeature.dependencies.find((d) => d.code === a.code)\n\n\t\t\tif (\n\t\t\t\taDependsOnB ||\n\t\t\t\taFeature.installOrderWeight < bFeature.installOrderWeight\n\t\t\t) {\n\t\t\t\treturn 1\n\t\t\t} else if (\n\t\t\t\tbDependsOnA ||\n\t\t\t\taFeature.installOrderWeight > bFeature.installOrderWeight\n\t\t\t) {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn 0\n\t\t})\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic getOptionsForFeature(code: FeatureCode) {\n\t\treturn this.getFeature(code).optionsSchema\n\t}\n\n\tpublic getAllCodes(): FeatureCode[] {\n\t\tconst codes = Object.keys(this.featureMap) as FeatureCode[]\n\t\treturn this.sortFeatures(\n\t\t\tcodes.map((code) => ({ code, isRequired: true }))\n\t\t).map((dep) => dep.code)\n\t}\n\n\tpublic async getInstalledFeatures() {\n\t\tconst installed = await Promise.all(\n\t\t\tthis.getAllCodes().map(async (code) => {\n\t\t\t\tconst isInstalled = await this.isInstalled(code)\n\t\t\t\tif (isInstalled) {\n\t\t\t\t\treturn this.getFeature(code)\n\t\t\t\t}\n\n\t\t\t\treturn false\n\t\t\t})\n\t\t)\n\n\t\treturn installed.filter((f) => !!f) as FeatureMap[keyof FeatureMap][]\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/FeatureInstallerFactory.ts"],"names":["FeatureInstallerFactory","options","cwd","serviceFactory","storeFactory","ui","emitter","actionExecuter","featureInstaller","FeatureInstaller","featureOptions","templates","apiClientFactory","features","forEach","Feature","feature","mapFeature","code","ErrorFeature","SchemaFeature","SkillFeature","TestFeature","VsCodeFeature","EventFeature","WatchFeature","NodeFeature","OnboardFeature","PersonFeature","OrganizationFeature","ConversationFeature","EventContractFeature","DeployFeature","SandboxFeature","StoreFeature","ViewFeature","CacheFeature","LogFeature","DependencyFeature"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAQA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;IACqBA,uB;;;;;;;WA+CpB,yBAA8BC,OAA9B,EASqB;AAAA;;AACpB,UAAQC,GAAR,GACCD,OADD,CAAQC,GAAR;AAAA,UAAaC,cAAb,GACCF,OADD,CAAaE,cAAb;AAAA,UAA6BC,YAA7B,GACCH,OADD,CAA6BG,YAA7B;AAAA,UAA2CC,EAA3C,GACCJ,OADD,CAA2CI,EAA3C;AAAA,UAA+CC,OAA/C,GACCL,OADD,CAA+CK,OAA/C;AAAA,UAAwDC,cAAxD,GACCN,OADD,CAAwDM,cAAxD;AAGA,UAAMC,gBAAgB,4BACrBP,OAAO,CAACO,gBADa,yEACO,IAAIC,4BAAJ,CAAqBP,GAArB,EAA0BC,cAA1B,CAD7B;AAGA,UAAMO,cAA8B,GAAG;AACtCR,QAAAA,GAAG,EAAHA,GADsC;AAEtCC,QAAAA,cAAc,EAAdA,cAFsC;AAGtCQ,QAAAA,SAAS,EAATA,0BAHsC;AAItCP,QAAAA,YAAY,EAAZA,YAJsC;AAKtCI,QAAAA,gBAAgB,EAAhBA,gBALsC;AAMtCH,QAAAA,EAAE,EAAFA,EANsC;AAOtCC,QAAAA,OAAO,EAAPA,OAPsC;AAQtCC,QAAAA,cAAc,EAAdA,cARsC;AAStCK,QAAAA,gBAAgB,EAAEX,OAAO,CAACW;AATY,OAAvC;AAYA,WAAKC,QAAL,CAAcC,OAAd,CAAsB,UAACC,OAAD,EAAa;AAClC,YAAMC,OAAO,GAAG,IAAID,OAAJ,CAAYL,cAAZ,CAAhB;AAEAF,QAAAA,gBAAgB,CAACS,UAAjB,CAA4BD,OAAO,CAACE,IAApC,EAA0CF,OAA1C;AACA,OAJD;AAMA,aAAOR,gBAAP;AACA;;;;;;iCAlFmBR,uB,cACsB,CACzCmB,wBADyC,EAEzCC,yBAFyC,EAGzCC,wBAHyC,EAIzCC,uBAJyC,EAKzCC,yBALyC,EAMzCC,wBANyC,EAOzCC,wBAPyC,EAQzCC,uBARyC,EASzCC,0BATyC,EAUzCC,yBAVyC,EAWzCC,+BAXyC,EAYzCC,+BAZyC,EAazCC,gCAbyC,EAczCC,yBAdyC,EAezCC,0BAfyC,EAgBzCC,wBAhByC,EAiBzCC,uBAjByC,EAkBzCC,wBAlByC,EAmBzCC,sBAnByC,EAoBzCC,6BApByC,C;iCADtBtC,uB,kBAwBiC,CACpD,OADoD,EAEpD,QAFoD,EAGpD,OAHoD,EAIpD,MAJoD,EAKpD,QALoD,EAMpD,OANoD,EAOpD,OAPoD,EAQpD,MARoD,EASpD,SAToD,EAUpD,QAVoD,EAWpD,cAXoD,EAYpD,cAZoD,EAapD,eAboD,EAcpD,QAdoD,EAepD,SAfoD,EAgBpD,OAhBoD,EAiBpD,MAjBoD,EAkBpD,OAlBoD,EAmBpD,KAnBoD,EAoBpD,YApBoD,C","sourcesContent":["import { templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory from '../services/ServiceFactory'\nimport StoreFactory from '../stores/StoreFactory'\nimport { ApiClientFactory } from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { FeatureOptions } from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport CacheFeature from './cache/CacheFeature'\nimport ConversationFeature from './conversation/ConversationFeature'\nimport DependencyFeature from './dependencies/DependencyFeature'\nimport DeployFeature from './deploy/DeployFeature'\nimport ErrorFeature from './error/ErrorFeature'\nimport EventFeature from './event/EventFeature'\nimport EventContractFeature from './eventContract/EventContractFeature'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\nimport LogFeature from './log/LogFeature'\nimport NodeFeature from './node/NodeFeature'\nimport OnboardFeature from './onboard/OnboardFeature'\nimport OrganizationFeature from './organization/OrganizationFeature'\nimport PersonFeature from './person/PersonFeature'\nimport SandboxFeature from './sandbox/SandboxFeature'\nimport SchemaFeature from './schema/SchemaFeature'\nimport SkillFeature from './skill/SkillFeature'\nimport StoreFeature from './store/StoreFeature'\nimport TestFeature from './test/TestFeature'\nimport ViewFeature from './view/ViewFeature'\nimport VsCodeFeature from './vscode/VsCodeFeature'\nimport WatchFeature from './watch/WatchFeature'\nexport default class FeatureInstallerFactory {\n\tprivate static readonly features: any[] = [\n\t\tErrorFeature,\n\t\tSchemaFeature,\n\t\tSkillFeature,\n\t\tTestFeature,\n\t\tVsCodeFeature,\n\t\tEventFeature,\n\t\tWatchFeature,\n\t\tNodeFeature,\n\t\tOnboardFeature,\n\t\tPersonFeature,\n\t\tOrganizationFeature,\n\t\tConversationFeature,\n\t\tEventContractFeature,\n\t\tDeployFeature,\n\t\tSandboxFeature,\n\t\tStoreFeature,\n\t\tViewFeature,\n\t\tCacheFeature,\n\t\tLogFeature,\n\t\tDependencyFeature,\n\t]\n\n\tpublic static readonly featureCodes: FeatureCode[] = [\n\t\t'error',\n\t\t'schema',\n\t\t'skill',\n\t\t'test',\n\t\t'vscode',\n\t\t'event',\n\t\t'watch',\n\t\t'node',\n\t\t'onboard',\n\t\t'person',\n\t\t'organization',\n\t\t'conversation',\n\t\t'eventContract',\n\t\t'deploy',\n\t\t'sandbox',\n\t\t'store',\n\t\t'view',\n\t\t'cache',\n\t\t'log',\n\t\t'dependency',\n\t]\n\n\tpublic static WithAllFeatures(options: {\n\t\tcwd: string\n\t\tserviceFactory: ServiceFactory\n\t\tstoreFactory: StoreFactory\n\t\tfeatureInstaller?: FeatureInstaller\n\t\tui: GraphicsInterface\n\t\temitter: GlobalEmitter\n\t\tapiClientFactory: ApiClientFactory\n\t\tactionExecuter: ActionExecuter\n\t}): FeatureInstaller {\n\t\tconst { cwd, serviceFactory, storeFactory, ui, emitter, actionExecuter } =\n\t\t\toptions\n\n\t\tconst featureInstaller =\n\t\t\toptions.featureInstaller ?? new FeatureInstaller(cwd, serviceFactory)\n\n\t\tconst featureOptions: FeatureOptions = {\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\ttemplates,\n\t\t\tstoreFactory,\n\t\t\tfeatureInstaller,\n\t\t\tui,\n\t\t\temitter,\n\t\t\tactionExecuter,\n\t\t\tapiClientFactory: options.apiClientFactory,\n\t\t}\n\n\t\tthis.features.forEach((Feature) => {\n\t\t\tconst feature = new Feature(featureOptions)\n\n\t\t\tfeatureInstaller.mapFeature(feature.code, feature)\n\t\t})\n\n\t\treturn featureInstaller\n\t}\n}\n"],"file":"FeatureInstallerFactory.js"}
1
+ {"version":3,"file":"FeatureInstallerFactory.js","names":["FeatureInstallerFactory","options","cwd","serviceFactory","storeFactory","ui","emitter","actionExecuter","featureInstaller","FeatureInstaller","featureOptions","templates","apiClientFactory","features","forEach","Feature","feature","mapFeature","code","ErrorFeature","SchemaFeature","SkillFeature","TestFeature","VsCodeFeature","EventFeature","WatchFeature","NodeFeature","OnboardFeature","PersonFeature","OrganizationFeature","ConversationFeature","EventContractFeature","DeployFeature","SandboxFeature","StoreFeature","ViewFeature","CacheFeature","LogFeature","DependencyFeature"],"sources":["../../src/features/FeatureInstallerFactory.ts"],"sourcesContent":["import { templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory from '../services/ServiceFactory'\nimport StoreFactory from '../stores/StoreFactory'\nimport { ApiClientFactory } from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { FeatureOptions } from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport CacheFeature from './cache/CacheFeature'\nimport ConversationFeature from './conversation/ConversationFeature'\nimport DependencyFeature from './dependencies/DependencyFeature'\nimport DeployFeature from './deploy/DeployFeature'\nimport ErrorFeature from './error/ErrorFeature'\nimport EventFeature from './event/EventFeature'\nimport EventContractFeature from './eventContract/EventContractFeature'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\nimport LogFeature from './log/LogFeature'\nimport NodeFeature from './node/NodeFeature'\nimport OnboardFeature from './onboard/OnboardFeature'\nimport OrganizationFeature from './organization/OrganizationFeature'\nimport PersonFeature from './person/PersonFeature'\nimport SandboxFeature from './sandbox/SandboxFeature'\nimport SchemaFeature from './schema/SchemaFeature'\nimport SkillFeature from './skill/SkillFeature'\nimport StoreFeature from './store/StoreFeature'\nimport TestFeature from './test/TestFeature'\nimport ViewFeature from './view/ViewFeature'\nimport VsCodeFeature from './vscode/VsCodeFeature'\nimport WatchFeature from './watch/WatchFeature'\nexport default class FeatureInstallerFactory {\n\tprivate static readonly features: any[] = [\n\t\tErrorFeature,\n\t\tSchemaFeature,\n\t\tSkillFeature,\n\t\tTestFeature,\n\t\tVsCodeFeature,\n\t\tEventFeature,\n\t\tWatchFeature,\n\t\tNodeFeature,\n\t\tOnboardFeature,\n\t\tPersonFeature,\n\t\tOrganizationFeature,\n\t\tConversationFeature,\n\t\tEventContractFeature,\n\t\tDeployFeature,\n\t\tSandboxFeature,\n\t\tStoreFeature,\n\t\tViewFeature,\n\t\tCacheFeature,\n\t\tLogFeature,\n\t\tDependencyFeature,\n\t]\n\n\tpublic static readonly featureCodes: FeatureCode[] = [\n\t\t'error',\n\t\t'schema',\n\t\t'skill',\n\t\t'test',\n\t\t'vscode',\n\t\t'event',\n\t\t'watch',\n\t\t'node',\n\t\t'onboard',\n\t\t'person',\n\t\t'organization',\n\t\t'conversation',\n\t\t'eventContract',\n\t\t'deploy',\n\t\t'sandbox',\n\t\t'store',\n\t\t'view',\n\t\t'cache',\n\t\t'log',\n\t\t'dependency',\n\t]\n\n\tpublic static WithAllFeatures(options: {\n\t\tcwd: string\n\t\tserviceFactory: ServiceFactory\n\t\tstoreFactory: StoreFactory\n\t\tfeatureInstaller?: FeatureInstaller\n\t\tui: GraphicsInterface\n\t\temitter: GlobalEmitter\n\t\tapiClientFactory: ApiClientFactory\n\t\tactionExecuter: ActionExecuter\n\t}): FeatureInstaller {\n\t\tconst { cwd, serviceFactory, storeFactory, ui, emitter, actionExecuter } =\n\t\t\toptions\n\n\t\tconst featureInstaller =\n\t\t\toptions.featureInstaller ?? new FeatureInstaller(cwd, serviceFactory)\n\n\t\tconst featureOptions: FeatureOptions = {\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\ttemplates,\n\t\t\tstoreFactory,\n\t\t\tfeatureInstaller,\n\t\t\tui,\n\t\t\temitter,\n\t\t\tactionExecuter,\n\t\t\tapiClientFactory: options.apiClientFactory,\n\t\t}\n\n\t\tthis.features.forEach((Feature) => {\n\t\t\tconst feature = new Feature(featureOptions)\n\n\t\t\tfeatureInstaller.mapFeature(feature.code, feature)\n\t\t})\n\n\t\treturn featureInstaller\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAQA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;IACqBA,uB;;;;;;;WA+CpB,yBAA8BC,OAA9B,EASqB;MAAA;;MACpB,IAAQC,GAAR,GACCD,OADD,CAAQC,GAAR;MAAA,IAAaC,cAAb,GACCF,OADD,CAAaE,cAAb;MAAA,IAA6BC,YAA7B,GACCH,OADD,CAA6BG,YAA7B;MAAA,IAA2CC,EAA3C,GACCJ,OADD,CAA2CI,EAA3C;MAAA,IAA+CC,OAA/C,GACCL,OADD,CAA+CK,OAA/C;MAAA,IAAwDC,cAAxD,GACCN,OADD,CAAwDM,cAAxD;MAGA,IAAMC,gBAAgB,4BACrBP,OAAO,CAACO,gBADa,yEACO,IAAIC,4BAAJ,CAAqBP,GAArB,EAA0BC,cAA1B,CAD7B;MAGA,IAAMO,cAA8B,GAAG;QACtCR,GAAG,EAAHA,GADsC;QAEtCC,cAAc,EAAdA,cAFsC;QAGtCQ,SAAS,EAATA,0BAHsC;QAItCP,YAAY,EAAZA,YAJsC;QAKtCI,gBAAgB,EAAhBA,gBALsC;QAMtCH,EAAE,EAAFA,EANsC;QAOtCC,OAAO,EAAPA,OAPsC;QAQtCC,cAAc,EAAdA,cARsC;QAStCK,gBAAgB,EAAEX,OAAO,CAACW;MATY,CAAvC;MAYA,KAAKC,QAAL,CAAcC,OAAd,CAAsB,UAACC,OAAD,EAAa;QAClC,IAAMC,OAAO,GAAG,IAAID,OAAJ,CAAYL,cAAZ,CAAhB;QAEAF,gBAAgB,CAACS,UAAjB,CAA4BD,OAAO,CAACE,IAApC,EAA0CF,OAA1C;MACA,CAJD;MAMA,OAAOR,gBAAP;IACA;;;;;;iCAlFmBR,uB,cACsB,CACzCmB,wBADyC,EAEzCC,yBAFyC,EAGzCC,wBAHyC,EAIzCC,uBAJyC,EAKzCC,yBALyC,EAMzCC,wBANyC,EAOzCC,wBAPyC,EAQzCC,uBARyC,EASzCC,0BATyC,EAUzCC,yBAVyC,EAWzCC,+BAXyC,EAYzCC,+BAZyC,EAazCC,gCAbyC,EAczCC,yBAdyC,EAezCC,0BAfyC,EAgBzCC,wBAhByC,EAiBzCC,uBAjByC,EAkBzCC,wBAlByC,EAmBzCC,sBAnByC,EAoBzCC,6BApByC,C;iCADtBtC,uB,kBAwBiC,CACpD,OADoD,EAEpD,QAFoD,EAGpD,OAHoD,EAIpD,MAJoD,EAKpD,QALoD,EAMpD,OANoD,EAOpD,OAPoD,EAQpD,MARoD,EASpD,SAToD,EAUpD,QAVoD,EAWpD,cAXoD,EAYpD,cAZoD,EAapD,eAboD,EAcpD,QAdoD,EAepD,SAfoD,EAgBpD,OAhBoD,EAiBpD,MAjBoD,EAkBpD,OAlBoD,EAmBpD,KAnBoD,EAoBpD,YApBoD,C"}