@sprucelabs/spruce-cli 15.4.10 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/build/.spruce/errors/spruceCli/actionCancelled.schema.js.map +1 -1
  3. package/build/.spruce/errors/spruceCli/bootError.schema.js.map +1 -1
  4. package/build/.spruce/errors/spruceCli/buildFailed.schema.js.map +1 -1
  5. package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js.map +1 -1
  6. package/build/.spruce/errors/spruceCli/commandAborted.schema.js.map +1 -1
  7. package/build/.spruce/errors/spruceCli/commandBlocked.schema.js.map +1 -1
  8. package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js.map +1 -1
  9. package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js.map +1 -1
  10. package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -1
  11. package/build/.spruce/errors/spruceCli/deployFailed.schema.js.map +1 -1
  12. package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js.map +1 -1
  13. package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js.map +1 -1
  14. package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js.map +1 -1
  15. package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js.map +1 -1
  16. package/build/.spruce/errors/spruceCli/failedToImport.schema.js.map +1 -1
  17. package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js.map +1 -1
  18. package/build/.spruce/errors/spruceCli/fileExists.schema.js.map +1 -1
  19. package/build/.spruce/errors/spruceCli/generic.schema.js.map +1 -1
  20. package/build/.spruce/errors/spruceCli/invalidCommand.schema.js.map +1 -1
  21. package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js.map +1 -1
  22. package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js.map +1 -1
  23. package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js.map +1 -1
  24. package/build/.spruce/errors/spruceCli/lintFailed.schema.js.map +1 -1
  25. package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js.map +1 -1
  26. package/build/.spruce/errors/spruceCli/missingDependencies.schema.js.map +1 -1
  27. package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js.map +1 -1
  28. package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js.map +1 -1
  29. package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js.map +1 -1
  30. package/build/.spruce/errors/spruceCli/notImplemented.schema.js.map +1 -1
  31. package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js.map +1 -1
  32. package/build/.spruce/errors/spruceCli/schemaExists.schema.js.map +1 -1
  33. package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js.map +1 -1
  34. package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js.map +1 -1
  35. package/build/.spruce/errors/spruceCli/skillNotFound.schema.js.map +1 -1
  36. package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js.map +1 -1
  37. package/build/.spruce/errors/spruceCli/skillViewExists.schema.js.map +1 -1
  38. package/build/.spruce/errors/spruceCli/storeExists.schema.js.map +1 -1
  39. package/build/.spruce/errors/spruceCli/testFailed.schema.js.map +1 -1
  40. package/build/.spruce/errors/spruceCli/themeExists.schema.js.map +1 -1
  41. package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js.map +1 -1
  42. package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js.map +1 -1
  43. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
  44. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
  45. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
  46. package/build/.spruce/events/heartwood/listViews.v2021_02_11.contract.js.map +1 -1
  47. package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js.map +1 -1
  48. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitPayload.schema.js.map +1 -1
  49. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTarget.schema.js.map +1 -1
  50. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  51. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitPayload.schema.js.map +1 -1
  52. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTarget.schema.js.map +1 -1
  53. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTargetAndPayload.schema.js.map +1 -1
  54. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlResponsePayload.schema.js.map +1 -1
  55. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  56. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsResponsePayload.schema.js.map +1 -1
  57. package/build/.spruce/schemas/heartwood/v2021_02_11/getViewControllersEmitTarget.schema.js.map +1 -1
  58. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResponsePayload.schema.js.map +1 -1
  59. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResult.schema.js.map +1 -1
  60. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitPayload.schema.js.map +1 -1
  61. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  62. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsResponsePayload.schema.js.map +1 -1
  63. package/build/.spruce/schemas/spruceCli/v2020_07_22/bootSkillOptions.schema.js.map +1 -1
  64. package/build/.spruce/schemas/spruceCli/v2020_07_22/createConversationTopicOptions.schema.js.map +1 -1
  65. package/build/.spruce/schemas/spruceCli/v2020_07_22/createErrorOptions.schema.js.map +1 -1
  66. package/build/.spruce/schemas/spruceCli/v2020_07_22/createOrganizationOptions.schema.js.map +1 -1
  67. package/build/.spruce/schemas/spruceCli/v2020_07_22/createSchemaOptions.schema.js.map +1 -1
  68. package/build/.spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema.js.map +1 -1
  69. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedDir.schema.js.map +1 -1
  70. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema.js.map +1 -1
  71. package/build/.spruce/schemas/spruceCli/v2020_07_22/installSkillAtOrganizationOptions.schema.js.map +1 -1
  72. package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js.map +1 -1
  73. package/build/.spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema.js.map +1 -1
  74. package/build/.spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema.js.map +1 -1
  75. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboardOptions.schema.js.map +1 -1
  76. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboarding.schema.js.map +1 -1
  77. package/build/.spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema.js.map +1 -1
  78. package/build/.spruce/schemas/spruceCli/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.schema.js.map +1 -1
  79. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupTestsOptions.schema.js.map +1 -1
  80. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema.js.map +1 -1
  81. package/build/.spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema.js.map +1 -1
  82. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncErrorOptions.schema.js.map +1 -1
  83. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema.js.map +1 -1
  84. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemaFieldsOptions.schema.js.map +1 -1
  85. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema.js.map +1 -1
  86. package/build/.spruce/schemas/spruceCli/v2020_07_22/testOptions.schema.js.map +1 -1
  87. package/build/.spruce/schemas/spruceCli/v2020_07_22/upgradeSkillOptions.schema.js.map +1 -1
  88. package/build/.spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema.js.map +1 -1
  89. package/build/GlobalEmitter.js.map +1 -1
  90. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
  91. package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
  92. package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
  93. package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
  94. package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
  95. package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +1 -1
  96. package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
  97. package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
  98. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  99. package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
  100. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  101. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -1
  102. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
  103. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
  104. package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
  105. package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
  106. package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
  107. package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
  108. package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
  109. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
  110. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  111. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  112. package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
  113. package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
  114. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  115. package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
  116. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
  117. package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +1 -1
  118. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  119. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  120. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  121. package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
  122. package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
  123. package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
  124. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  125. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  126. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  127. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  128. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  129. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  130. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
  131. package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
  132. package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
  133. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  134. package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
  135. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  136. package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
  137. package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
  138. package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
  139. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
  140. package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
  141. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  142. package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
  143. package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
  144. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
  145. package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
  146. package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
  147. package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
  148. package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
  149. package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
  150. package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
  151. package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
  152. package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
  153. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
  154. package/build/__tests__/behavioral/tests/CreatingATest.test.js +3 -3
  155. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  156. package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
  157. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  158. package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
  159. package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
  160. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  161. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  162. package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
  163. package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
  164. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  165. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  166. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  167. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  168. package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
  169. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +1 -1
  170. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  171. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  172. package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
  173. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  174. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  175. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  176. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  177. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  178. package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
  179. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  180. package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
  181. package/build/__tests__/implementation/BuildService.test.js.map +1 -1
  182. package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
  183. package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
  184. package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
  185. package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
  186. package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
  187. package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
  188. package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
  189. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  190. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  191. package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
  192. package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
  193. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  194. package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
  195. package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
  196. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  197. package/build/__tests__/implementation/Introspection.test.js.map +1 -1
  198. package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
  199. package/build/__tests__/implementation/LintService.test.js.map +1 -1
  200. package/build/__tests__/implementation/ListenerStore.test.js.map +1 -1
  201. package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
  202. package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
  203. package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
  204. package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
  205. package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
  206. package/build/__tests__/implementation/PkgService.test.js.map +1 -1
  207. package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
  208. package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
  209. package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
  210. package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
  211. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  212. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  213. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  214. package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
  215. package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
  216. package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
  217. package/build/__tests__/implementation/Widgets.test.js.map +1 -1
  218. package/build/__tests__/support/scripts/first.script.js.map +1 -1
  219. package/build/addons/filePrompt.addon.js.map +1 -1
  220. package/build/cli.js.map +1 -1
  221. package/build/components/FormComponent.js.map +1 -1
  222. package/build/components/QuizComponent.js.map +1 -1
  223. package/build/errors/SpruceError.js.map +1 -1
  224. package/build/errors/actionCancelled.builder.js.map +1 -1
  225. package/build/errors/bootError.builder.js.map +1 -1
  226. package/build/errors/buildFailed.builder.js.map +1 -1
  227. package/build/errors/cacheNotEnabled.builder.js.map +1 -1
  228. package/build/errors/commandAborted.builder.js.map +1 -1
  229. package/build/errors/commandBlocked.builder.js.map +1 -1
  230. package/build/errors/commandNotImplemented.builder.js.map +1 -1
  231. package/build/errors/createAutoloaderFailed.builder.js.map +1 -1
  232. package/build/errors/dependencyExists.builder.js.map +1 -1
  233. package/build/errors/deployFailed.builder.js.map +1 -1
  234. package/build/errors/directoryEmpty.builder.js.map +1 -1
  235. package/build/errors/directoryNotSkill.builder.js.map +1 -1
  236. package/build/errors/dockerNotStarted.builder.js.map +1 -1
  237. package/build/errors/executingCommandFailed.builder.js.map +1 -1
  238. package/build/errors/failedToImport.builder.js.map +1 -1
  239. package/build/errors/featureNotInstalled.builder.js.map +1 -1
  240. package/build/errors/fileExists.builder.js.map +1 -1
  241. package/build/errors/generic.builder.js.map +1 -1
  242. package/build/errors/invalidCommand.builder.js.map +1 -1
  243. package/build/errors/invalidEventContract.builder.js.map +1 -1
  244. package/build/errors/invalidFeatureCode.builder.js.map +1 -1
  245. package/build/errors/invalidTestDirectory.builder.js.map +1 -1
  246. package/build/errors/lintFailed.builder.js.map +1 -1
  247. package/build/errors/mercuryResponseError.builder.js.map +1 -1
  248. package/build/errors/missingDependencies.builder.js.map +1 -1
  249. package/build/errors/noOrganizationsFound.builder.js.map +1 -1
  250. package/build/errors/noSkillsRegistered.builder.js.map +1 -1
  251. package/build/errors/notImplemented.builder.js.map +1 -1
  252. package/build/errors/notLoggedIn.builder.js.map +1 -1
  253. package/build/errors/schemaExists.builder.js.map +1 -1
  254. package/build/errors/schemaFailedToImport.builder.js.map +1 -1
  255. package/build/errors/schemaTemplateItemBuildingFailed.builder.js.map +1 -1
  256. package/build/errors/skillNotFound.builder.js.map +1 -1
  257. package/build/errors/skillNotRegistered.builder.js.map +1 -1
  258. package/build/errors/skillViewExists.builder.js.map +1 -1
  259. package/build/errors/storeExists.builder.js.map +1 -1
  260. package/build/errors/testFailed.builder.js.map +1 -1
  261. package/build/errors/themeExists.builder.js.map +1 -1
  262. package/build/errors/transportAlreadyExists.builder.js.map +1 -1
  263. package/build/errors/vscodeNotInstalled.builder.js.map +1 -1
  264. package/build/features/AbstractAction.js.map +1 -1
  265. package/build/features/AbstractFeature.js.map +1 -1
  266. package/build/features/ActionExecuter.js.map +1 -1
  267. package/build/features/ActionFactory.js.map +1 -1
  268. package/build/features/ActionQuestionAsker.js.map +1 -1
  269. package/build/features/FeatureCommandAttacher.js.map +1 -1
  270. package/build/features/FeatureInstaller.js.map +1 -1
  271. package/build/features/OverrideActionDecorator.js.map +1 -1
  272. package/build/features/cache/CacheFeature.js.map +1 -1
  273. package/build/features/cache/actions/DisableAction.js.map +1 -1
  274. package/build/features/cache/actions/EnableAction.js.map +1 -1
  275. package/build/features/conversation/ConversationFeature.js.map +1 -1
  276. package/build/features/conversation/actions/TestAction.js.map +1 -1
  277. package/build/features/conversation/stores/ConversationStore.js.map +1 -1
  278. package/build/features/conversation/writers/ConversationWriter.js.map +1 -1
  279. package/build/features/dependencies/DependencyFeature.js.map +1 -1
  280. package/build/features/dependencies/actions/AddAction.js.map +1 -1
  281. package/build/features/dependencies/actions/ManageAction.js.map +1 -1
  282. package/build/features/deploy/DeployFeature.js.map +1 -1
  283. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  284. package/build/features/deploy/writers/DeployWriter.js.map +1 -1
  285. package/build/features/error/ErrorFeature.js.map +1 -1
  286. package/build/features/error/ParentTestFinder.js.map +1 -1
  287. package/build/features/error/actions/CreateAction.js.map +1 -1
  288. package/build/features/error/actions/SyncAction.js.map +1 -1
  289. package/build/features/error/writers/ErrorWriter.js.map +1 -1
  290. package/build/features/event/EventFeature.js.map +1 -1
  291. package/build/features/event/actions/CreateAction.js.map +1 -1
  292. package/build/features/event/actions/ListenAction.js.map +1 -1
  293. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  294. package/build/features/event/actions/SyncAction.js.map +1 -1
  295. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  296. package/build/features/event/builders/EventContractBuilder.js.map +1 -1
  297. package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -1
  298. package/build/features/event/stores/EventStore.js.map +1 -1
  299. package/build/features/event/stores/ListenerStore.js.map +1 -1
  300. package/build/features/event/writers/EventWriter.js.map +1 -1
  301. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  302. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  303. package/build/features/feature.utilities.js.map +1 -1
  304. package/build/features/features.types.js.map +1 -1
  305. package/build/features/log/LogFeature.js.map +1 -1
  306. package/build/features/log/actions/CreateTransportAction.js.map +1 -1
  307. package/build/features/log/writers/LogWriter.js.map +1 -1
  308. package/build/features/node/NodeFeature.js.map +1 -1
  309. package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
  310. package/build/features/node/actions/UpgradeAction.js.map +1 -1
  311. package/build/features/node/writers/NodeWriter.js.map +1 -1
  312. package/build/features/onboard/OnboardFeature.js.map +1 -1
  313. package/build/features/onboard/ScriptLoader.js.map +1 -1
  314. package/build/features/onboard/scripts/onboarding.first.script.js.map +1 -1
  315. package/build/features/onboard/scripts/onboarding.immersive.script.js.map +1 -1
  316. package/build/features/onboard/scripts/onboarding.returning.script.js.map +1 -1
  317. package/build/features/onboard/scripts/onboarding.short.script.js.map +1 -1
  318. package/build/features/onboard/scripts/wrongCommand.script.js.map +1 -1
  319. package/build/features/onboard/stores/OnboardingStore.js.map +1 -1
  320. package/build/features/organization/OrganizationFeature.js.map +1 -1
  321. package/build/features/organization/stores/OrganizationStore.js.map +1 -1
  322. package/build/features/person/PersonFeature.js.map +1 -1
  323. package/build/features/person/actions/LoginAction.js.map +1 -1
  324. package/build/features/person/actions/LogoutAction.js.map +1 -1
  325. package/build/features/person/actions/WhoamiAction.js.map +1 -1
  326. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  327. package/build/features/sandbox/actions/SetupAction.js.map +1 -1
  328. package/build/features/sandbox/writers/SandboxWriter.js.map +1 -1
  329. package/build/features/schema/SchemaFeature.js.map +1 -1
  330. package/build/features/schema/ValueTypeBuilder.js.map +1 -1
  331. package/build/features/schema/actions/CreateAction.js.map +1 -1
  332. package/build/features/schema/actions/SyncAction.js.map +1 -1
  333. package/build/features/schema/actions/SyncFieldsAction.js.map +1 -1
  334. package/build/features/schema/services/SchemaService.js.map +1 -1
  335. package/build/features/schema/stores/SchemaStore.d.ts +2 -1
  336. package/build/features/schema/stores/SchemaStore.js +2 -1
  337. package/build/features/schema/stores/SchemaStore.js.map +1 -1
  338. package/build/features/schema/utilities/schema.utility.js.map +1 -1
  339. package/build/features/schema/utilities/schemaDisk.utility.js.map +1 -1
  340. package/build/features/schema/utilities/schemaGenerator.utility.js.map +1 -1
  341. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  342. package/build/features/skill/SkillFeature.js.map +1 -1
  343. package/build/features/skill/actions/BootAction.js.map +1 -1
  344. package/build/features/skill/actions/CreateAction.js.map +1 -1
  345. package/build/features/skill/actions/DashboardAction.js.map +1 -1
  346. package/build/features/skill/actions/LoginAction.js.map +1 -1
  347. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  348. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  349. package/build/features/skill/stores/SkillStore.js.map +1 -1
  350. package/build/features/skill/updaters/Updater.js.map +1 -1
  351. package/build/features/skill/writers/SkillWriter.js.map +1 -1
  352. package/build/features/store/StoreFeature.js.map +1 -1
  353. package/build/features/store/actions/CreateAction.js.map +1 -1
  354. package/build/features/store/actions/SyncAction.js.map +1 -1
  355. package/build/features/store/stores/StoreStore.js.map +1 -1
  356. package/build/features/store/templateItemBuilders/StoreTemplateItemBuilder.js.map +1 -1
  357. package/build/features/store/writers/StoreWriter.js.map +1 -1
  358. package/build/features/test/TestFeature.js.map +1 -1
  359. package/build/features/test/TestLogItemGenerator.js.map +1 -1
  360. package/build/features/test/TestReporter.js.map +1 -1
  361. package/build/features/test/TestRunner.js.map +1 -1
  362. package/build/features/test/actions/CreateAction.js.map +1 -1
  363. package/build/features/test/actions/SetupAction.js.map +1 -1
  364. package/build/features/test/actions/TestAction.js.map +1 -1
  365. package/build/features/test/writers/TestWriter.js.map +1 -1
  366. package/build/features/validateAndNormalize.utility.js.map +1 -1
  367. package/build/features/view/ViewFeature.js.map +1 -1
  368. package/build/features/view/actions/CreateAction.js.map +1 -1
  369. package/build/features/view/actions/CreateThemeAction.js.map +1 -1
  370. package/build/features/view/actions/SyncAction.js.map +1 -1
  371. package/build/features/view/actions/WatchAction.js.map +1 -1
  372. package/build/features/view/stores/ViewStore.js.map +1 -1
  373. package/build/features/view/writers/ViewWriter.js.map +1 -1
  374. package/build/features/vscode/VsCodeFeature.js.map +1 -1
  375. package/build/features/vscode/services/VsCodeService.js.map +1 -1
  376. package/build/features/vscode/writers/VsCodeWriter.js.map +1 -1
  377. package/build/features/watch/WatchFeature.js.map +1 -1
  378. package/build/index.js.map +1 -1
  379. package/build/interfaces/SpyInterface.js +0 -1
  380. package/build/interfaces/SpyInterface.js.map +1 -1
  381. package/build/interfaces/TerminalInterface.js.map +1 -1
  382. package/build/schemas/v2020_07_22/bootSkillOptions.builder.js.map +1 -1
  383. package/build/schemas/v2020_07_22/createConversationTopicOptions.builder.js.map +1 -1
  384. package/build/schemas/v2020_07_22/createErrorOptions.builder.js.map +1 -1
  385. package/build/schemas/v2020_07_22/createOrganizationOptions.builder.js.map +1 -1
  386. package/build/schemas/v2020_07_22/createSchemaOptions.builder.js.map +1 -1
  387. package/build/schemas/v2020_07_22/createTestOptions.builder.js.map +1 -1
  388. package/build/schemas/v2020_07_22/installSkillAtOrganizationOptions.builder.js.map +1 -1
  389. package/build/schemas/v2020_07_22/listenEventOptions.builder.js.map +1 -1
  390. package/build/schemas/v2020_07_22/namedTemplateItem.builder.js.map +1 -1
  391. package/build/schemas/v2020_07_22/nodeFeatureOptions.builder.js.map +1 -1
  392. package/build/schemas/v2020_07_22/onboardOptions.builder.js.map +1 -1
  393. package/build/schemas/v2020_07_22/onboarding.builder.js.map +1 -1
  394. package/build/schemas/v2020_07_22/personWithToken.builder.js.map +1 -1
  395. package/build/schemas/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.builder.js.map +1 -1
  396. package/build/schemas/v2020_07_22/setupTestsOptions.builder.js.map +1 -1
  397. package/build/schemas/v2020_07_22/setupVscodeOptions.builder.js.map +1 -1
  398. package/build/schemas/v2020_07_22/skillFeature.builder.js.map +1 -1
  399. package/build/schemas/v2020_07_22/syncErrorOptions.builder.js.map +1 -1
  400. package/build/schemas/v2020_07_22/syncEventOptions.builder.js.map +1 -1
  401. package/build/schemas/v2020_07_22/syncSchemaFieldsOptions.builder.js.map +1 -1
  402. package/build/schemas/v2020_07_22/syncSchemasOptions.builder.js.map +1 -1
  403. package/build/schemas/v2020_07_22/testOptions.builder.js.map +1 -1
  404. package/build/schemas/v2020_07_22/upgradeSkillOptions.builder.js.map +1 -1
  405. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
  406. package/build/services/CommandService.js.map +1 -1
  407. package/build/services/GameService.js.map +1 -1
  408. package/build/services/ImportService.js.map +1 -1
  409. package/build/services/LintService.js.map +1 -1
  410. package/build/services/PkgService.js.map +1 -1
  411. package/build/services/ServiceFactory.js.map +1 -1
  412. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  413. package/build/templateItemBuilders/FieldTemplateItemBuilder.js.map +1 -1
  414. package/build/templateItemBuilders/SchemaTemplateItemBuilder.js.map +1 -1
  415. package/build/tests/AbstractCliTest.js.map +1 -1
  416. package/build/tests/AbstractEventTest.js.map +1 -1
  417. package/build/tests/AbstractSchemaTest.js.map +1 -1
  418. package/build/tests/AbstractTestTest.js.map +1 -1
  419. package/build/tests/CommandFaker.js.map +1 -1
  420. package/build/tests/JestJsonParser.js.map +1 -1
  421. package/build/tests/buildTestCache.js.map +1 -1
  422. package/build/tests/cleanTestCache.js.map +1 -1
  423. package/build/tests/cleanTestData.js.map +1 -1
  424. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  425. package/build/tests/fixtures/MercuryFixture.js.map +1 -1
  426. package/build/tests/fixtures/PersonFixture.js.map +1 -1
  427. package/build/tests/fixtures/SkillFixture.js.map +1 -1
  428. package/build/tests/utilities/test.utility.js.map +1 -1
  429. package/build/tests/utilities/uiAssert.utility.js.map +1 -1
  430. package/build/utilities/action.utility.js.map +1 -1
  431. package/build/utilities/commander.utility.js.map +1 -1
  432. package/build/utilities/eventContractCleaner.utility.js.map +1 -1
  433. package/build/utilities/form.utility.js.map +1 -1
  434. package/build/utilities/introspection.utility.js.map +1 -1
  435. package/build/utilities/tsConfig.utility.js.map +1 -1
  436. package/build/widgets/Theme.js.map +1 -1
  437. package/build/widgets/WidgetFactory.js.map +1 -1
  438. package/build/widgets/terminalKit/TKButtonWidget.js.map +1 -1
  439. package/build/widgets/terminalKit/TkInputWidget.js.map +1 -1
  440. package/build/widgets/terminalKit/TkLayoutWidget.js.map +1 -1
  441. package/build/widgets/terminalKit/TkMenuBarWidget.js.map +1 -1
  442. package/build/widgets/terminalKit/TkPopupWidget.js.map +1 -1
  443. package/build/widgets/terminalKit/TkTextWidget.js.map +1 -1
  444. package/build/widgets/terminalKit/termKit.utility.js.map +1 -1
  445. package/build/widgets/types/input.types.js.map +1 -1
  446. package/build/widgets/types/menuBar.types.js.map +1 -1
  447. package/build/widgets/types/text.types.js.map +1 -1
  448. package/build/widgets/types/window.types.js.map +1 -1
  449. package/build/writers/AbstractWriter.js.map +1 -1
  450. package/package.json +35 -35
  451. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +3 -2
  452. package/src/features/schema/stores/SchemaStore.ts +4 -2
  453. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.d.ts +0 -1
  454. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js +0 -14
  455. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js.map +0 -1
  456. package/src/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"invalidCommand.builder.js","names":["invalidParamsDefinition","id","name","description","fields","args","type","label","isArray","isRequired"],"sources":["../../src/errors/invalidCommand.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst invalidParamsDefinition = buildErrorSchema({\n\tid: 'invalidCommand',\n\tname: 'Invalid command',\n\tdescription: 'The command is not valid, try --help',\n\tfields: {\n\t\targs: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'args',\n\t\t\tisArray: true,\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\nexport default invalidParamsDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,uBAAuB,GAAG,8BAAiB;EAChDC,EAAE,EAAE,gBAD4C;EAEhDC,IAAI,EAAE,iBAF0C;EAGhDC,WAAW,EAAE,sCAHmC;EAIhDC,MAAM,EAAE;IACPC,IAAI,EAAE;MACLC,IAAI,EAAE,MADD;MAELC,KAAK,EAAE,MAFF;MAGLC,OAAO,EAAE,IAHJ;MAILC,UAAU,EAAE;IAJP;EADC;AAJwC,CAAjB,CAAhC;eAceT,uB"}
1
+ {"version":3,"file":"invalidCommand.builder.js","names":["invalidParamsDefinition","buildErrorSchema","id","name","description","fields","args","type","label","isArray","isRequired"],"sources":["../../src/errors/invalidCommand.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst invalidParamsDefinition = buildErrorSchema({\n\tid: 'invalidCommand',\n\tname: 'Invalid command',\n\tdescription: 'The command is not valid, try --help',\n\tfields: {\n\t\targs: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'args',\n\t\t\tisArray: true,\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\nexport default invalidParamsDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,uBAAuB,GAAG,IAAAC,wBAAA,EAAiB;EAChDC,EAAE,EAAE,gBAD4C;EAEhDC,IAAI,EAAE,iBAF0C;EAGhDC,WAAW,EAAE,sCAHmC;EAIhDC,MAAM,EAAE;IACPC,IAAI,EAAE;MACLC,IAAI,EAAE,MADD;MAELC,KAAK,EAAE,MAFF;MAGLC,OAAO,EAAE,IAHJ;MAILC,UAAU,EAAE;IAJP;EADC;AAJwC,CAAjB,CAAhC;eAceV,uB"}
@@ -1 +1 @@
1
- {"version":3,"file":"invalidEventContract.builder.js","names":["id","name","description","fields","fullyQualifiedEventName","type","isRequired","brokenProperty"],"sources":["../../src/errors/invalidEventContract.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidEventContract',\n\tname: 'invalid event contract',\n\tdescription: '',\n\tfields: {\n\t\tfullyQualifiedEventName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tbrokenProperty: {\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,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,uBAAuB,EAAE;MACxBC,IAAI,EAAE,MADkB;MAExBC,UAAU,EAAE;IAFY,CADlB;IAKPC,cAAc,EAAE;MACfF,IAAI,EAAE,MADS;MAEfC,UAAU,EAAE;IAFG;EALT;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"invalidEventContract.builder.js","names":["buildErrorSchema","id","name","description","fields","fullyQualifiedEventName","type","isRequired","brokenProperty"],"sources":["../../src/errors/invalidEventContract.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidEventContract',\n\tname: 'invalid event contract',\n\tdescription: '',\n\tfields: {\n\t\tfullyQualifiedEventName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tbrokenProperty: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,uBAAuB,EAAE;MACxBC,IAAI,EAAE,MADkB;MAExBC,UAAU,EAAE;IAFY,CADlB;IAKPC,cAAc,EAAE;MACfF,IAAI,EAAE,MADS;MAEfC,UAAU,EAAE;IAFG;EALT;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"invalidFeatureCode.builder.js","names":["id","name","description","fields","featureCode","type","isRequired"],"sources":["../../src/errors/invalidFeatureCode.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidFeatureCode',\n\tname: 'Invalid feature code',\n\tdescription: '',\n\tfields: {\n\t\tfeatureCode: {\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,oBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,WAAW,EAAE;MACZC,IAAI,EAAE,MADM;MAEZC,UAAU,EAAE;IAFA;EADN;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"invalidFeatureCode.builder.js","names":["buildErrorSchema","id","name","description","fields","featureCode","type","isRequired"],"sources":["../../src/errors/invalidFeatureCode.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidFeatureCode',\n\tname: 'Invalid feature code',\n\tdescription: '',\n\tfields: {\n\t\tfeatureCode: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,oBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,WAAW,EAAE;MACZC,IAAI,EAAE,MADM;MAEZC,UAAU,EAAE;IAFA;EADN;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"invalidTestDirectory.builder.js","names":["id","name","description","fields","dir","type","isRequired"],"sources":["../../src/errors/invalidTestDirectory.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidTestDirectory',\n\tname: 'invalid test directory',\n\tdescription: '',\n\tfields: {\n\t\tdir: {\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,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,GAAG,EAAE;MACJC,IAAI,EAAE,MADF;MAEJC,UAAU,EAAE;IAFR;EADE;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"invalidTestDirectory.builder.js","names":["buildErrorSchema","id","name","description","fields","dir","type","isRequired"],"sources":["../../src/errors/invalidTestDirectory.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidTestDirectory',\n\tname: 'invalid test directory',\n\tdescription: '',\n\tfields: {\n\t\tdir: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,GAAG,EAAE;MACJC,IAAI,EAAE,MADF;MAEJC,UAAU,EAAE;IAFR;EADE;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"lintFailed.builder.js","names":["lintFailedDefinition","id","name","description","fields","pattern","type","label","hint","isRequired"],"sources":["../../src/errors/lintFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst lintFailedDefinition = buildErrorSchema({\n\tid: 'lintFailed',\n\tname: 'Lint failed!',\n\tdescription: 'When linting a file fails',\n\tfields: {\n\t\tpattern: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Pattern',\n\t\t\thint: 'The pattern used to match files relative to the root of the skill',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\nexport default lintFailedDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,oBAAoB,GAAG,8BAAiB;EAC7CC,EAAE,EAAE,YADyC;EAE7CC,IAAI,EAAE,cAFuC;EAG7CC,WAAW,EAAE,2BAHgC;EAI7CC,MAAM,EAAE;IACPC,OAAO,EAAE;MACRC,IAAI,EAAE,MADE;MAERC,KAAK,EAAE,SAFC;MAGRC,IAAI,EAAE,mEAHE;MAIRC,UAAU,EAAE;IAJJ;EADF;AAJqC,CAAjB,CAA7B;eAceT,oB"}
1
+ {"version":3,"file":"lintFailed.builder.js","names":["lintFailedDefinition","buildErrorSchema","id","name","description","fields","pattern","type","label","hint","isRequired"],"sources":["../../src/errors/lintFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst lintFailedDefinition = buildErrorSchema({\n\tid: 'lintFailed',\n\tname: 'Lint failed!',\n\tdescription: 'When linting a file fails',\n\tfields: {\n\t\tpattern: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Pattern',\n\t\t\thint: 'The pattern used to match files relative to the root of the skill',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\nexport default lintFailedDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,oBAAoB,GAAG,IAAAC,wBAAA,EAAiB;EAC7CC,EAAE,EAAE,YADyC;EAE7CC,IAAI,EAAE,cAFuC;EAG7CC,WAAW,EAAE,2BAHgC;EAI7CC,MAAM,EAAE;IACPC,OAAO,EAAE;MACRC,IAAI,EAAE,MADE;MAERC,KAAK,EAAE,SAFC;MAGRC,IAAI,EAAE,mEAHE;MAIRC,UAAU,EAAE;IAJJ;EADF;AAJqC,CAAjB,CAA7B;eAceV,oB"}
@@ -1 +1 @@
1
- {"version":3,"file":"mercuryResponseError.builder.js","names":["id","name","description","importsWhenLocal","fields","responseErrors","type","isRequired","isArray","options","valueType"],"sources":["../../src/errors/mercuryResponseError.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'mercuryResponseError',\n\tname: 'Mercury response error',\n\tdescription: '',\n\timportsWhenLocal: [`import AbstractSpruceError from '@sprucelabs/error'`],\n\tfields: {\n\t\tresponseErrors: {\n\t\t\ttype: 'raw',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tvalueType: 'AbstractSpruceError<any>',\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,gBAAgB,EAAE,uDAJa;EAK/BC,MAAM,EAAE;IACPC,cAAc,EAAE;MACfC,IAAI,EAAE,KADS;MAEfC,UAAU,EAAE,IAFG;MAGfC,OAAO,EAAE,IAHM;MAIfC,OAAO,EAAE;QACRC,SAAS,EAAE;MADH;IAJM;EADT;AALuB,CAAjB,C"}
1
+ {"version":3,"file":"mercuryResponseError.builder.js","names":["buildErrorSchema","id","name","description","importsWhenLocal","fields","responseErrors","type","isRequired","isArray","options","valueType"],"sources":["../../src/errors/mercuryResponseError.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'mercuryResponseError',\n\tname: 'Mercury response error',\n\tdescription: '',\n\timportsWhenLocal: [`import AbstractSpruceError from '@sprucelabs/error'`],\n\tfields: {\n\t\tresponseErrors: {\n\t\t\ttype: 'raw',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tvalueType: 'AbstractSpruceError<any>',\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,gBAAgB,EAAE,uDAJa;EAK/BC,MAAM,EAAE;IACPC,cAAc,EAAE;MACfC,IAAI,EAAE,KADS;MAEfC,UAAU,EAAE,IAFG;MAGfC,OAAO,EAAE,IAHM;MAIfC,OAAO,EAAE;QACRC,SAAS,EAAE;MADH;IAJM;EADT;AALuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"missingDependencies.builder.js","names":["id","name","description","fields","dependencies","type","isRequired","isArray","options","schema","hint"],"sources":["../../src/errors/missingDependencies.builder.ts"],"sourcesContent":["import { buildErrorSchema, buildSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'missingDependencies',\n\tname: 'Missing dependencies',\n\tdescription: '',\n\tfields: {\n\t\tdependencies: {\n\t\t\ttype: 'schema',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tschema: buildSchema({\n\t\t\t\t\tid: 'missingDependenciesDependency',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\thint: {\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,qBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,YAAY,EAAE;MACbC,IAAI,EAAE,QADO;MAEbC,UAAU,EAAE,IAFC;MAGbC,OAAO,EAAE,IAHI;MAIbC,OAAO,EAAE;QACRC,MAAM,EAAE,yBAAY;UACnBT,EAAE,EAAE,+BADe;UAEnBG,MAAM,EAAE;YACPF,IAAI,EAAE;cACLI,IAAI,EAAE,MADD;cAELC,UAAU,EAAE;YAFP,CADC;YAKPI,IAAI,EAAE;cACLL,IAAI,EAAE,MADD;cAELC,UAAU,EAAE;YAFP;UALC;QAFW,CAAZ;MADA;IAJI;EADP;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"missingDependencies.builder.js","names":["buildErrorSchema","id","name","description","fields","dependencies","type","isRequired","isArray","options","schema","buildSchema","hint"],"sources":["../../src/errors/missingDependencies.builder.ts"],"sourcesContent":["import { buildErrorSchema, buildSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'missingDependencies',\n\tname: 'Missing dependencies',\n\tdescription: '',\n\tfields: {\n\t\tdependencies: {\n\t\t\ttype: 'schema',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tschema: buildSchema({\n\t\t\t\t\tid: 'missingDependenciesDependency',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\thint: {\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,qBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,YAAY,EAAE;MACbC,IAAI,EAAE,QADO;MAEbC,UAAU,EAAE,IAFC;MAGbC,OAAO,EAAE,IAHI;MAIbC,OAAO,EAAE;QACRC,MAAM,EAAE,IAAAC,mBAAA,EAAY;UACnBV,EAAE,EAAE,+BADe;UAEnBG,MAAM,EAAE;YACPF,IAAI,EAAE;cACLI,IAAI,EAAE,MADD;cAELC,UAAU,EAAE;YAFP,CADC;YAKPK,IAAI,EAAE;cACLN,IAAI,EAAE,MADD;cAELC,UAAU,EAAE;YAFP;UALC;QAFW,CAAZ;MADA;IAJI;EADP;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"noOrganizationsFound.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/noOrganizationsFound.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'noOrganizationsFound',\n\tname: 'no organizations found',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"noOrganizationsFound.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/noOrganizationsFound.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'noOrganizationsFound',\n\tname: 'no organizations found',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"noSkillsRegistered.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/noSkillsRegistered.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'noSkillsRegistered',\n\tname: 'No skills registered',\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
+ {"version":3,"file":"noSkillsRegistered.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/noSkillsRegistered.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'noSkillsRegistered',\n\tname: 'No skills registered',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,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,"file":"notImplemented.builder.js","names":["notImplementedDefinition","id","name","description","fields"],"sources":["../../src/errors/notImplemented.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst notImplementedDefinition = buildErrorSchema({\n\tid: 'notImplemented',\n\tname: 'Not implemented',\n\tdescription: 'This feature has not been implemented',\n\tfields: {},\n})\n\nexport default notImplementedDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,wBAAwB,GAAG,8BAAiB;EACjDC,EAAE,EAAE,gBAD6C;EAEjDC,IAAI,EAAE,iBAF2C;EAGjDC,WAAW,EAAE,uCAHoC;EAIjDC,MAAM,EAAE;AAJyC,CAAjB,CAAjC;eAOeJ,wB"}
1
+ {"version":3,"file":"notImplemented.builder.js","names":["notImplementedDefinition","buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/notImplemented.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst notImplementedDefinition = buildErrorSchema({\n\tid: 'notImplemented',\n\tname: 'Not implemented',\n\tdescription: 'This feature has not been implemented',\n\tfields: {},\n})\n\nexport default notImplementedDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,wBAAwB,GAAG,IAAAC,wBAAA,EAAiB;EACjDC,EAAE,EAAE,gBAD6C;EAEjDC,IAAI,EAAE,iBAF2C;EAGjDC,WAAW,EAAE,uCAHoC;EAIjDC,MAAM,EAAE;AAJyC,CAAjB,CAAjC;eAOeL,wB"}
@@ -1 +1 @@
1
- {"version":3,"file":"notLoggedIn.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/notLoggedIn.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'notLoggedIn',\n\tname: 'Not logged in',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,aAD2B;EAE/BC,IAAI,EAAE,eAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"notLoggedIn.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/notLoggedIn.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'notLoggedIn',\n\tname: 'Not logged in',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,aAD2B;EAE/BC,IAAI,EAAE,eAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemaExists.builder.js","names":["id","name","description","fields","schemaId","type","label","isRequired","destination"],"sources":["../../src/errors/schemaExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaExists',\n\tname: 'Schema exists',\n\tdescription: '',\n\tfields: {\n\t\tschemaId: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Schema id',\n\t\t\tisRequired: true,\n\t\t},\n\t\tdestination: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Destination',\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,cAD2B;EAE/BC,IAAI,EAAE,eAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,QAAQ,EAAE;MACTC,IAAI,EAAE,MADG;MAETC,KAAK,EAAE,WAFE;MAGTC,UAAU,EAAE;IAHH,CADH;IAMPC,WAAW,EAAE;MACZH,IAAI,EAAE,MADM;MAEZC,KAAK,EAAE;IAFK;EANN;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"schemaExists.builder.js","names":["buildErrorSchema","id","name","description","fields","schemaId","type","label","isRequired","destination"],"sources":["../../src/errors/schemaExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaExists',\n\tname: 'Schema exists',\n\tdescription: '',\n\tfields: {\n\t\tschemaId: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Schema id',\n\t\t\tisRequired: true,\n\t\t},\n\t\tdestination: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Destination',\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,cAD2B;EAE/BC,IAAI,EAAE,eAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,QAAQ,EAAE;MACTC,IAAI,EAAE,MADG;MAETC,KAAK,EAAE,WAFE;MAGTC,UAAU,EAAE;IAHH,CADH;IAMPC,WAAW,EAAE;MACZH,IAAI,EAAE,MADM;MAEZC,KAAK,EAAE;IAFK;EANN;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemaFailedToImport.builder.js","names":["id","name","description","fields","file","type","label","isRequired","hint"],"sources":["../../src/errors/schemaFailedToImport.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaFailedToImport',\n\tname: 'Definition failed to import',\n\tdescription: 'The definition file failed to import',\n\tfields: {\n\t\tfile: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'File',\n\t\t\tisRequired: true,\n\t\t\thint: 'The file definition file I tried to import',\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,6BAFyB;EAG/BC,WAAW,EAAE,sCAHkB;EAI/BC,MAAM,EAAE;IACPC,IAAI,EAAE;MACLC,IAAI,EAAE,MADD;MAELC,KAAK,EAAE,MAFF;MAGLC,UAAU,EAAE,IAHP;MAILC,IAAI,EAAE;IAJD;EADC;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"schemaFailedToImport.builder.js","names":["buildErrorSchema","id","name","description","fields","file","type","label","isRequired","hint"],"sources":["../../src/errors/schemaFailedToImport.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaFailedToImport',\n\tname: 'Definition failed to import',\n\tdescription: 'The definition file failed to import',\n\tfields: {\n\t\tfile: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'File',\n\t\t\tisRequired: true,\n\t\t\thint: 'The file definition file I tried to import',\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,6BAFyB;EAG/BC,WAAW,EAAE,sCAHkB;EAI/BC,MAAM,EAAE;IACPC,IAAI,EAAE;MACLC,IAAI,EAAE,MADD;MAELC,KAAK,EAAE,MAFF;MAGLC,UAAU,EAAE,IAHP;MAILC,IAAI,EAAE;IAJD;EADC;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemaTemplateItemBuildingFailed.builder.js","names":["id","name","description","fields","schemaId","type","isRequired","schemaNamespace","fieldName","fieldOptions","options","valueType"],"sources":["../../src/errors/schemaTemplateItemBuildingFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaTemplateItemBuildingFailed',\n\tname: 'Schema template item building failed',\n\tdescription: '',\n\tfields: {\n\t\tschemaId: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tschemaNamespace: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tfieldName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tfieldOptions: {\n\t\t\ttype: 'raw',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tvalueType: 'Record<string, any>',\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,kCAD2B;EAE/BC,IAAI,EAAE,sCAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,QAAQ,EAAE;MACTC,IAAI,EAAE,MADG;MAETC,UAAU,EAAE;IAFH,CADH;IAKPC,eAAe,EAAE;MAChBF,IAAI,EAAE,MADU;MAEhBC,UAAU,EAAE;IAFI,CALV;IASPE,SAAS,EAAE;MACVH,IAAI,EAAE,MADI;MAEVC,UAAU,EAAE;IAFF,CATJ;IAaPG,YAAY,EAAE;MACbJ,IAAI,EAAE,KADO;MAEbC,UAAU,EAAE,IAFC;MAGbI,OAAO,EAAE;QACRC,SAAS,EAAE;MADH;IAHI;EAbP;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"schemaTemplateItemBuildingFailed.builder.js","names":["buildErrorSchema","id","name","description","fields","schemaId","type","isRequired","schemaNamespace","fieldName","fieldOptions","options","valueType"],"sources":["../../src/errors/schemaTemplateItemBuildingFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaTemplateItemBuildingFailed',\n\tname: 'Schema template item building failed',\n\tdescription: '',\n\tfields: {\n\t\tschemaId: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tschemaNamespace: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tfieldName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tfieldOptions: {\n\t\t\ttype: 'raw',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tvalueType: 'Record<string, any>',\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,kCAD2B;EAE/BC,IAAI,EAAE,sCAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,QAAQ,EAAE;MACTC,IAAI,EAAE,MADG;MAETC,UAAU,EAAE;IAFH,CADH;IAKPC,eAAe,EAAE;MAChBF,IAAI,EAAE,MADU;MAEhBC,UAAU,EAAE;IAFI,CALV;IASPE,SAAS,EAAE;MACVH,IAAI,EAAE,MADI;MAEVC,UAAU,EAAE;IAFF,CATJ;IAaPG,YAAY,EAAE;MACbJ,IAAI,EAAE,KADO;MAEbC,UAAU,EAAE,IAFC;MAGbI,OAAO,EAAE;QACRC,SAAS,EAAE;MADH;IAHI;EAbP;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"skillNotFound.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/skillNotFound.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillNotFound',\n\tname: 'skill not found',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,eAD2B;EAE/BC,IAAI,EAAE,iBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
1
+ {"version":3,"file":"skillNotFound.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/skillNotFound.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillNotFound',\n\tname: 'skill not found',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,eAD2B;EAE/BC,IAAI,EAAE,iBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"skillNotRegistered.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/skillNotRegistered.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillNotRegistered',\n\tname: 'Skill not registered',\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
+ {"version":3,"file":"skillNotRegistered.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/skillNotRegistered.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillNotRegistered',\n\tname: 'Skill not registered',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,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,"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
+ {"version":3,"file":"skillViewExists.builder.js","names":["buildErrorSchema","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,IAAAA,wBAAA,EAAiB;EAC/BC,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,"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
+ {"version":3,"file":"storeExists.builder.js","names":["buildErrorSchema","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,IAAAA,wBAAA,EAAiB;EAC/BC,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,"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
+ {"version":3,"file":"testFailed.builder.js","names":["buildErrorSchema","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,IAAAA,wBAAA,EAAiB;EAC/BC,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,"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
+ {"version":3,"file":"themeExists.builder.js","names":["buildErrorSchema","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,IAAAA,wBAAA,EAAiB;EAC/BC,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,"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
+ {"version":3,"file":"transportAlreadyExists.builder.js","names":["buildErrorSchema","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,IAAAA,wBAAA,EAAiB;EAC/BC,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,"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
+ {"version":3,"file":"vscodeNotInstalled.builder.js","names":["buildErrorSchema","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,IAAAA,wBAAA,EAAiB;EAC/BC,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,"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
+ {"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,"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":";;;;;;;;;;;;;;;;;;;AAAA;;AAGA;;AAoBA;;AAGA;;;;;;;;;;;;IA2B8BA,e;EAgC7B,yBAAmBC,OAAnB,EAA4C;IAAA;IAAA;IAAA,uDA3BQ,EA2BR;IAAA,8DA1BQ,EA0BR;IAAA;IAAA,2DAxBU,EAwBV;IAAA;IAAA;IAAA,6DAlBC,CAkBD;IAAA;IAAA,kDAfN,EAeM;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAC3C,KAAKC,GAAL,GAAWD,OAAO,CAACC,GAAnB;IACA,KAAKC,cAAL,GAAsBF,OAAO,CAACE,cAA9B;IACA,KAAKC,SAAL,GAAiBH,OAAO,CAACG,SAAzB;IACA,KAAKC,aAAL,GAAqBJ,OAAO,CAACI,aAA7B;IACA,KAAKC,YAAL,GAAoBL,OAAO,CAACK,YAA5B;IACA,KAAKC,aAAL,GAAqB,IAAIC,yBAAJ,CAAkB;MACtCJ,SAAS,EAAE,KAAKA,SADsB;MAEtCK,EAAE,EAAER,OAAO,CAACQ,EAF0B;MAGtCC,QAAQ,EAAE,KAAKC,OAAL,CAAa,UAAb,CAH4B;MAItCC,MAAM,EAAE,KAAKD,OAAL,CAAa,MAAb;IAJ8B,CAAlB,CAArB;IAMA,KAAKE,OAAL,GAAeZ,OAAO,CAACY,OAAvB;IACA,KAAKC,gBAAL,GAAwBb,OAAO,CAACa,gBAAhC;IACA,KAAKL,EAAL,GAAUR,OAAO,CAACQ,EAAlB;IACA,KAAKM,gBAAL,GAAwBd,OAAO,CAACc,gBAAhC;IACA,KAAKC,cAAL,GAAsBf,OAAO,CAACe,cAA9B;EACA;;;;WAED,gBAAiBC,WAAjB,EAAsCC,UAAtC,EAA0D;MACzD,OAAO,KAAKF,cAAL,CAAoBG,MAApB,CAA2BF,WAA3B,EAA+CC,UAA/C,CAAP;IACA;;;;gHAED,iBACCE,QADD;QAAA;UAAA;YAAA;cAAA;gBAAA,iCAGQ,EAHR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GAMA,kBACCA,QADD;QAAA;UAAA;YAAA;cAAA;gBAAA,kCAGQ,EAHR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;;;;;;;;;;MAMA,UAAkCC,IAAlC,EAA2CnB,GAA3C,EAAwE;MACvE,OAAO,KAAKC,cAAL,CAAoBQ,OAApB,CAA4BT,GAA5B,aAA4BA,GAA5B,cAA4BA,GAA5B,GAAmC,KAAKA,GAAxC,EAA6CmB,IAA7C,CAAP;IACA,C;;;WAED,gBACCC,IADD,EAECrB,OAFD,EAGgB;MACf,OAAO,KAAKM,aAAL,CAAmBgB,MAAnB,CAA0BD,IAA1B;QACNE,gBAAgB,EAAE,KAAKA,gBADjB;QAENZ,MAAM,EAAE,KAAKD,OAAL,CAAa,MAAb;MAFF,GAGHV,OAHG,EAAP;IAKA;;;WAED,oBAA4CqB,IAA5C,EAAwD;MACvD,OAAO,KAAKR,gBAAL,CAAsBW,UAAtB,CAAiCH,IAAjC,CAAP;IACA;;;;mHAED;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA,IACM,KAAKI,UADX;kBAAA;kBAAA;gBAAA;;gBAAA,kCAES,EAFT;;cAAA;gBAAA,IAKM,KAAKC,WALX;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAMkC,wBAC/BC,iBAASC,IAAT,CAAc,KAAKH,UAAnB,EAA+B,eAA/B,CAD+B,CANlC;;cAAA;gBAMQI,OANR;gBAUQC,KAVR,GAU0B,EAV1B;gBAAA,uCAYsBD,OAZtB;;gBAAA;kBAYE,oDAA6B;oBAAlBE,KAAkB;oBACtBC,aADsB,GACNC,oBAAaC,oBAAb,CAAkCH,KAAlC,CADM;oBAE5BD,KAAK,CAACK,IAAN,CAAWH,aAAX;kBACA;gBAfH;kBAAA;gBAAA;kBAAA;gBAAA;;gBAiBE,KAAKN,WAAL,GAAmBI,KAAnB;;cAjBF;gBAAA,kCAoBQ,KAAKJ,WApBb;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAuBA,eACCL,IADD,EAECrB,OAFD,EAGe;MACd,OAAO,KAAKK,YAAL,CAAkB+B,KAAlB,CAAwBf,IAAxB;QAAgCpB,GAAG,EAAE,KAAKA;MAA1C,GAAkDD,OAAlD,EAAP;IACA;;;;wGAED,kBACCA,OADD;QAAA;UAAA;YAAA;cAAA;gBAAA,kCAGQ,KAAKc,gBAAL,CAAsBd,OAAtB,CAHR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C"}
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","globby","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,"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
+ {"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","merge","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,"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
+ {"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,0BAAA,CAASC,WAAT,CACjBN,OAAO,CAACE,UADS,YAEdK,2BAAA,CAAUC,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,"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
+ {"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","merge","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,"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
+ {"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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"}