@sprucelabs/spruce-cli 19.1.6 → 19.1.9

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 (396) hide show
  1. package/CHANGELOG.md +12 -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/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitPayload.schema.js.map +1 -1
  44. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTarget.schema.js.map +1 -1
  45. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  46. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitPayload.schema.js.map +1 -1
  47. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTarget.schema.js.map +1 -1
  48. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTargetAndPayload.schema.js.map +1 -1
  49. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlResponsePayload.schema.js.map +1 -1
  50. package/build/.spruce/schemas/heartwood/v2021_02_11/getActiveThemeEmitTarget.schema.js.map +1 -1
  51. package/build/.spruce/schemas/heartwood/v2021_02_11/getActiveThemeEmitTargetAndPayload.schema.js.map +1 -1
  52. package/build/.spruce/schemas/heartwood/v2021_02_11/getActiveThemeResponsePayload.schema.js.map +1 -1
  53. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  54. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsResponsePayload.schema.js.map +1 -1
  55. package/build/.spruce/schemas/heartwood/v2021_02_11/getViewControllersEmitTarget.schema.js.map +1 -1
  56. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResponsePayload.schema.js.map +1 -1
  57. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResult.schema.js.map +1 -1
  58. package/build/.spruce/schemas/heartwood/v2021_02_11/registerDashboardCardsResponsePayload.schema.js.map +1 -1
  59. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitPayload.schema.js.map +1 -1
  60. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  61. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsResponsePayload.schema.js.map +1 -1
  62. package/build/.spruce/schemas/heartwood/v2021_02_11/theme.schema.js.map +1 -1
  63. package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeEmitPayload.schema.js.map +1 -1
  64. package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeEmitTarget.schema.js.map +1 -1
  65. package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeEmitTargetAndPayload.schema.js.map +1 -1
  66. package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeResponsePayload.schema.js.map +1 -1
  67. package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js.map +1 -1
  68. package/build/.spruce/schemas/spruceCli/v2020_07_22/bootSkillOptions.schema.js.map +1 -1
  69. package/build/.spruce/schemas/spruceCli/v2020_07_22/createConversationTopicOptions.schema.js.map +1 -1
  70. package/build/.spruce/schemas/spruceCli/v2020_07_22/createErrorOptions.schema.js.map +1 -1
  71. package/build/.spruce/schemas/spruceCli/v2020_07_22/createOrganizationOptions.schema.js.map +1 -1
  72. package/build/.spruce/schemas/spruceCli/v2020_07_22/createSchemaOptions.schema.js.map +1 -1
  73. package/build/.spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema.js.map +1 -1
  74. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedDir.schema.js.map +1 -1
  75. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema.js.map +1 -1
  76. package/build/.spruce/schemas/spruceCli/v2020_07_22/installSkillAtOrganizationOptions.schema.js.map +1 -1
  77. package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js.map +1 -1
  78. package/build/.spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema.js.map +1 -1
  79. package/build/.spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema.js.map +1 -1
  80. package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js.map +1 -1
  81. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboardOptions.schema.js.map +1 -1
  82. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboarding.schema.js.map +1 -1
  83. package/build/.spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema.js.map +1 -1
  84. package/build/.spruce/schemas/spruceCli/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.schema.js.map +1 -1
  85. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupTestsOptions.schema.js.map +1 -1
  86. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema.js.map +1 -1
  87. package/build/.spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema.js.map +1 -1
  88. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncErrorOptions.schema.js.map +1 -1
  89. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema.js.map +1 -1
  90. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemaFieldsOptions.schema.js.map +1 -1
  91. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema.js.map +1 -1
  92. package/build/.spruce/schemas/spruceCli/v2020_07_22/testOptions.schema.js.map +1 -1
  93. package/build/.spruce/schemas/spruceCli/v2020_07_22/upgradeSkillOptions.schema.js.map +1 -1
  94. package/build/.spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema.js.map +1 -1
  95. package/build/InFlightEntertainment.js.map +1 -1
  96. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
  97. package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
  98. package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
  99. package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
  100. package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
  101. package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
  102. package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
  103. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  104. package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
  105. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
  106. package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
  107. package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
  108. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  109. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  110. package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
  111. package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
  112. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  113. package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
  114. package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
  115. package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
  116. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  117. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  118. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  119. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  120. package/build/__tests__/behavioral/events/EventWriter.test.js.map +1 -1
  121. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  122. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  123. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
  124. package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
  125. package/build/__tests__/behavioral/events/ListeningToCoreEvents.test.js.map +1 -1
  126. package/build/__tests__/behavioral/events/RegisteringEventsOnBoot.test.js.map +1 -1
  127. package/build/__tests__/behavioral/events/RegisteringGlobalEvents.test.js.map +1 -1
  128. package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
  129. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  130. package/build/__tests__/behavioral/events/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
  131. package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
  132. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  133. package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
  134. package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
  135. package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js.map +1 -1
  136. package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
  137. package/build/__tests__/behavioral/permissions/PermissionWriter.test.js.map +1 -1
  138. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
  139. package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.js.map +1 -1
  140. package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js.map +1 -1
  141. package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js.map +1 -1
  142. package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
  143. package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
  144. package/build/__tests__/behavioral/polish/SettingUpPolish.test.js.map +1 -1
  145. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
  146. package/build/__tests__/behavioral/schemas/CreatingSchemasWithGenerics.test.js.map +1 -1
  147. package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
  148. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  149. package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
  150. package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
  151. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
  152. package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
  153. package/build/__tests__/behavioral/schemas/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  154. package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
  155. package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
  156. package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
  157. package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
  158. package/build/__tests__/behavioral/skill/InstallingASkillAtAnOrg.test.js.map +1 -1
  159. package/build/__tests__/behavioral/skill/LoggingInAsASkill.test.js.map +1 -1
  160. package/build/__tests__/behavioral/skill/RebuildingASkill.test.js.map +1 -1
  161. package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
  162. package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
  163. package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
  164. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
  165. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  166. package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
  167. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  168. package/build/__tests__/behavioral/tests/SettingUpASkillForTesting.test.js.map +1 -1
  169. package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
  170. package/build/__tests__/behavioral/tests/TestReporterSettingsRemembered.test.js.map +1 -1
  171. package/build/__tests__/behavioral/tests/TestingDataStores.test.js.map +1 -1
  172. package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
  173. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  174. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  175. package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
  176. package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
  177. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  178. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  179. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  180. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  181. package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
  182. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  183. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  184. package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
  185. package/build/__tests__/behavioral/views/RegisteringSkillViewOnBoot.test.js.map +1 -1
  186. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  187. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  188. package/build/__tests__/behavioral/views/WatchingSkillViews.test.js.map +1 -1
  189. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  190. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  191. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  192. package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
  193. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  194. package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
  195. package/build/__tests__/implementation/BuildService.test.js.map +1 -1
  196. package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
  197. package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
  198. package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
  199. package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
  200. package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
  201. package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
  202. package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
  203. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  204. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  205. package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
  206. package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
  207. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  208. package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
  209. package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
  210. package/build/__tests__/implementation/GlobalEmitter.test.js.map +1 -1
  211. package/build/__tests__/implementation/Introspection.test.js.map +1 -1
  212. package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
  213. package/build/__tests__/implementation/LintService.test.js.map +1 -1
  214. package/build/__tests__/implementation/ListenerStore.test.js.map +1 -1
  215. package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
  216. package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
  217. package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
  218. package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
  219. package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
  220. package/build/__tests__/implementation/PkgService.test.js.map +1 -1
  221. package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
  222. package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
  223. package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
  224. package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
  225. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  226. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  227. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  228. package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
  229. package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
  230. package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
  231. package/build/__tests__/implementation/Widgets.test.js.map +1 -1
  232. package/build/__tests__/support/EventFaker.js.map +1 -1
  233. package/build/boot.js.map +1 -1
  234. package/build/cli/Cli.js.map +1 -1
  235. package/build/components/AbstractComponent.js.map +1 -1
  236. package/build/components/FormComponent.js.map +1 -1
  237. package/build/components/QuizComponent.js.map +1 -1
  238. package/build/errors/SpruceError.js.map +1 -1
  239. package/build/features/AbstractAction.js.map +1 -1
  240. package/build/features/AbstractFeature.js.map +1 -1
  241. package/build/features/ActionExecuter.js.map +1 -1
  242. package/build/features/ActionFactory.js.map +1 -1
  243. package/build/features/ActionQuestionAsker.js.map +1 -1
  244. package/build/features/FeatureCommandAttacher.js.map +1 -1
  245. package/build/features/FeatureInstaller.js.map +1 -1
  246. package/build/features/OverrideActionDecorator.js.map +1 -1
  247. package/build/features/cache/actions/DisableAction.js.map +1 -1
  248. package/build/features/conversation/ConversationFeature.js.map +1 -1
  249. package/build/features/conversation/actions/TestAction.js.map +1 -1
  250. package/build/features/conversation/stores/ConversationStore.js.map +1 -1
  251. package/build/features/conversation/writers/ConversationWriter.js.map +1 -1
  252. package/build/features/dependencies/actions/AddAction.js.map +1 -1
  253. package/build/features/dependencies/actions/ManageAction.js.map +1 -1
  254. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  255. package/build/features/deploy/writers/DeployWriter.js.map +1 -1
  256. package/build/features/error/ErrorFeature.js.map +1 -1
  257. package/build/features/error/actions/CreateAction.js.map +1 -1
  258. package/build/features/error/actions/SyncAction.js.map +1 -1
  259. package/build/features/error/writers/ErrorWriter.js.map +1 -1
  260. package/build/features/event/EventFeature.js.map +1 -1
  261. package/build/features/event/actions/CreateAction.js.map +1 -1
  262. package/build/features/event/actions/ListenAction.js.map +1 -1
  263. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  264. package/build/features/event/actions/SyncAction.js.map +1 -1
  265. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  266. package/build/features/event/builders/EventContractBuilder.js.map +1 -1
  267. package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -1
  268. package/build/features/event/stores/EventStore.js.map +1 -1
  269. package/build/features/event/stores/ListenerStore.js.map +1 -1
  270. package/build/features/event/writers/EventWriter.js.map +1 -1
  271. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  272. package/build/features/feature.utilities.js.map +1 -1
  273. package/build/features/log/writers/LogWriter.js.map +1 -1
  274. package/build/features/node/NodeFeature.js.map +1 -1
  275. package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
  276. package/build/features/node/actions/UpgradeAction.js.map +1 -1
  277. package/build/features/node/writers/NodeWriter.js.map +1 -1
  278. package/build/features/onboard/OnboardFeature.js.map +1 -1
  279. package/build/features/onboard/ScriptPlayer.js.map +1 -1
  280. package/build/features/onboard/actions/OnboardAction.js.map +1 -1
  281. package/build/features/onboard/scripts/onboarding.first.script.js.map +1 -1
  282. package/build/features/onboard/scripts/onboarding.immersive.script.js.map +1 -1
  283. package/build/features/onboard/scripts/onboarding.returning.script.js.map +1 -1
  284. package/build/features/onboard/scripts/onboarding.short.script.js.map +1 -1
  285. package/build/features/onboard/scripts/wrongCommand.script.js.map +1 -1
  286. package/build/features/onboard/stores/OnboardingStore.js.map +1 -1
  287. package/build/features/organization/actions/InstallAction.js.map +1 -1
  288. package/build/features/organization/stores/OrganizationStore.js.map +1 -1
  289. package/build/features/permission/PermissionFeature.js.map +1 -1
  290. package/build/features/permission/actions/SyncAction.js.map +1 -1
  291. package/build/features/permission/stores/PermissionStore.js.map +1 -1
  292. package/build/features/permission/writers/PermissionWriter.js.map +1 -1
  293. package/build/features/person/actions/LogoutAction.js.map +1 -1
  294. package/build/features/person/actions/WhoamiAction.js.map +1 -1
  295. package/build/features/polish/actions/SetupAction.js.map +1 -1
  296. package/build/features/polish/writers/PolishWriter.js.map +1 -1
  297. package/build/features/sandbox/actions/SetupAction.js.map +1 -1
  298. package/build/features/sandbox/writers/SandboxWriter.js.map +1 -1
  299. package/build/features/schema/SchemaFeature.js.map +1 -1
  300. package/build/features/schema/ValueTypeBuilder.js.map +1 -1
  301. package/build/features/schema/actions/CreateAction.js.map +1 -1
  302. package/build/features/schema/actions/SyncAction.js.map +1 -1
  303. package/build/features/schema/actions/SyncFieldsAction.js.map +1 -1
  304. package/build/features/schema/stores/SchemaStore.js.map +1 -1
  305. package/build/features/schema/utilities/schemaDisk.utility.js.map +1 -1
  306. package/build/features/schema/utilities/schemaGenerator.utility.js.map +1 -1
  307. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  308. package/build/features/skill/SkillFeature.js.map +1 -1
  309. package/build/features/skill/actions/BootAction.js.map +1 -1
  310. package/build/features/skill/actions/LoginAction.js.map +1 -1
  311. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  312. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  313. package/build/features/skill/stores/SkillStore.js.map +1 -1
  314. package/build/features/skill/updaters/Updater.js.map +1 -1
  315. package/build/features/store/StoreFeature.js.map +1 -1
  316. package/build/features/store/actions/SyncAction.js.map +1 -1
  317. package/build/features/store/stores/StoreStore.js.map +1 -1
  318. package/build/features/store/writers/StoreWriter.js.map +1 -1
  319. package/build/features/test/TestFeature.js.map +1 -1
  320. package/build/features/test/TestLogItemGenerator.js.map +1 -1
  321. package/build/features/test/TestReporter.js.map +1 -1
  322. package/build/features/test/TestRunner.js.map +1 -1
  323. package/build/features/test/actions/CreateAction.js.map +1 -1
  324. package/build/features/test/actions/SetupAction.js.map +1 -1
  325. package/build/features/test/actions/TestAction.js.map +1 -1
  326. package/build/features/test/writers/TestWriter.js.map +1 -1
  327. package/build/features/view/actions/CreateAction.js.map +1 -1
  328. package/build/features/view/actions/CreateThemeAction.js.map +1 -1
  329. package/build/features/view/actions/SyncAction.js.map +1 -1
  330. package/build/features/view/actions/WatchAction.js.map +1 -1
  331. package/build/features/view/stores/ViewStore.js.map +1 -1
  332. package/build/features/view/writers/ViewWriter.js.map +1 -1
  333. package/build/features/vscode/actions/SetupAction.js.map +1 -1
  334. package/build/features/vscode/services/VsCodeService.js.map +1 -1
  335. package/build/features/watch/WatchFeature.js.map +1 -1
  336. package/build/index.js.map +1 -1
  337. package/build/interfaces/SpyInterface.js.map +1 -1
  338. package/build/interfaces/TerminalInterface.js.map +1 -1
  339. package/build/services/BuildService.js.map +1 -1
  340. package/build/services/CommandService.js.map +1 -1
  341. package/build/services/DependencyService.js.map +1 -1
  342. package/build/services/GameService.js.map +1 -1
  343. package/build/services/ImportService.js.map +1 -1
  344. package/build/services/LintService.js.map +1 -1
  345. package/build/services/PkgService.js.map +1 -1
  346. package/build/services/ServiceFactory.js.map +1 -1
  347. package/build/stores/AbstractLocalStore.js.map +1 -1
  348. package/build/stores/StoreFactory.js.map +1 -1
  349. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  350. package/build/templateItemBuilders/SchemaTemplateItemBuilder.js.map +1 -1
  351. package/build/tests/AbstractCliTest.js.map +1 -1
  352. package/build/tests/AbstractErrorTest.js.map +1 -1
  353. package/build/tests/AbstractEventTest.js.map +1 -1
  354. package/build/tests/AbstractSchemaTest.js.map +1 -1
  355. package/build/tests/AbstractSkillTest.js.map +1 -1
  356. package/build/tests/AbstractTestTest.js.map +1 -1
  357. package/build/tests/JestJsonParser.js.map +1 -1
  358. package/build/tests/buildTestCache.js.map +1 -1
  359. package/build/tests/cleanTestCache.js.map +1 -1
  360. package/build/tests/cleanTestData.js.map +1 -1
  361. package/build/tests/constants.js.map +1 -1
  362. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  363. package/build/tests/fixtures/MercuryFixture.js.map +1 -1
  364. package/build/tests/fixtures/OrganizationFixture.js.map +1 -1
  365. package/build/tests/fixtures/PersonFixture.js.map +1 -1
  366. package/build/tests/fixtures/SkillFixture.js.map +1 -1
  367. package/build/tests/utilities/test.utility.js.map +1 -1
  368. package/build/tests/utilities/uiAssert.utility.js.map +1 -1
  369. package/build/updaters/ScriptUpdater.js.map +1 -1
  370. package/build/utilities/duration.utility.js.map +1 -1
  371. package/build/utilities/eventContractCleaner.utility.js.map +1 -1
  372. package/build/utilities/form.utility.js.map +1 -1
  373. package/build/utilities/introspection.utility.js.map +1 -1
  374. package/build/utilities/tsConfig.utility.js.map +1 -1
  375. package/build/utilities/ui.utility.js.map +1 -1
  376. package/build/widgets/WidgetFactory.js.map +1 -1
  377. package/build/widgets/terminalKit/TKButtonWidget.js.map +1 -1
  378. package/build/widgets/terminalKit/TkBaseWidget.js.map +1 -1
  379. package/build/widgets/terminalKit/TkInputWidget.js.map +1 -1
  380. package/build/widgets/terminalKit/TkLayoutCellWidget.js.map +1 -1
  381. package/build/widgets/terminalKit/TkLayoutWidget.js.map +1 -1
  382. package/build/widgets/terminalKit/TkMenuBarWidget.js.map +1 -1
  383. package/build/widgets/terminalKit/TkPopupWidget.js.map +1 -1
  384. package/build/widgets/terminalKit/TkProgressBarWidget.js.map +1 -1
  385. package/build/widgets/terminalKit/TkTextWidget.js.map +1 -1
  386. package/build/widgets/terminalKit/TkWindowWidget.js.map +1 -1
  387. package/build/widgets/terminalKit/termKit.utility.js.map +1 -1
  388. package/build/widgets/widget.utilities.js.map +1 -1
  389. package/build/writers/AbstractWriter.js.map +1 -1
  390. package/build/writers/WriterFactory.js.map +1 -1
  391. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  392. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  393. package/node_modules/@typescript-eslint/types/package.json +2 -2
  394. package/node_modules/@typescript-eslint/typescript-estree/package.json +4 -4
  395. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  396. package/package.json +36 -36
@@ -1 +1 @@
1
- {"version":3,"file":"FormComponent.js","names":["_error","_interopRequireDefault","require","_schema","_lodash","_SpruceError","_graphicsInterface","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","FormBuilderActionType","FormComponent","_SchemaEntity","_inherits2","_super","options","_this","_classCallCheck2","schema","initialValues","_assertThisInitialized2","ui","onWillAskQuestion","handlers","_createClass2","_present","_asyncToGenerator2","_regenerator","mark","_callee","headline","showOverview","_options$fields","fields","valid","action","fieldName","answer","namedFields","_iterator","_step","namedField","_name","_answer","values","cleanValues","_args","wrap","_callee$","_context","prev","undefined","getNamedFields","map","nf","renderHeadline","GraphicsTextEffect","SpruceHeader","renderLine","renderOverview","sent","t0","type","EditField","Done","askQuestion","set","abrupt","t1","finish","validate","t2","renderError","waitForEnter","getValues","shouldCreateEntityInstances","pick","stop","present","_this$getNamedFields$","field","find","Error","concat","schemaId","definition","get","shouldValidate","SpruceError","code","friendlyMessage","defaultValue","prompt","error","renderDivider","Red","Bold","AbstractSpruceError","renderWarning","message","_renderOverview","_callee2","_this2","_options$fields2","actionMap","choices","response","_args2","_callee2$","_context2","indexOf","actionKey","label","isRequired","SchemaEntity","exports"],"sources":["../../src/components/FormComponent.ts"],"sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport SchemaEntity, {\n\tSchema,\n\tSchemaAllValues,\n\tSchemaPartialValues,\n\tSchemaFieldNames,\n\tSelectChoice,\n\tIFieldDefinition,\n} from '@sprucelabs/schema'\nimport { pick } from 'lodash'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { GraphicsTextEffect } from '../types/graphicsInterface.types'\n\nenum FormBuilderActionType {\n\tDone = 'done',\n\tCancel = 'cancel',\n\tEditField = 'edit_field',\n}\n\ninterface FormActionDone {\n\ttype: FormBuilderActionType.Done\n}\n\ninterface FormActionCancel {\n\ttype: FormBuilderActionType.Cancel\n}\n\ntype FormActionEditField<T extends Schema> = {\n\ttype: FormBuilderActionType.EditField\n\tfieldName: SchemaFieldNames<T>\n}\n\ntype FormAction<T extends Schema> =\n\t| FormActionDone\n\t| FormActionCancel\n\t| FormActionEditField<T>\n\nexport interface FormPresentationOptions<\n\tT extends Schema,\n\tF extends SchemaFieldNames<T> = SchemaFieldNames<T>\n> {\n\theadline?: string\n\tshowOverview?: boolean\n\tfields?: F[]\n}\n\nexport interface FormOptions<T extends Schema> {\n\tui: GraphicsInterface\n\tschema: T\n\tinitialValues?: SchemaPartialValues<T>\n\tonWillAskQuestion?: <K extends SchemaFieldNames<T>>(\n\t\tname: K,\n\t\tfieldDefinition: FieldDefinitions,\n\t\tvalues: SchemaPartialValues<T>\n\t) => FieldDefinitions\n}\n\ninterface Handlers<T extends Schema> {\n\tonWillAskQuestion?: FormOptions<T>['onWillAskQuestion']\n}\n\nexport default class FormComponent<S extends Schema> extends SchemaEntity<S> {\n\tpublic ui: GraphicsInterface\n\tpublic handlers: Handlers<S> = {}\n\n\tpublic constructor(options: FormOptions<S>) {\n\t\t// Setup schema\n\t\tsuper(options.schema, options.initialValues)\n\n\t\tconst { ui } = options\n\n\t\t// Save ui for writing, saving\n\t\tthis.ui = ui\n\n\t\t// Handlers\n\t\tconst { onWillAskQuestion } = options\n\t\tthis.handlers.onWillAskQuestion = onWillAskQuestion\n\t}\n\n\t/** Pass me a schema and i'll give you back an object that conforms to it based on user input */\n\tpublic async present<F extends SchemaFieldNames<S> = SchemaFieldNames<S>>(\n\t\toptions: FormPresentationOptions<S, F> = {}\n\t): Promise<Pick<SchemaAllValues<S>, F>> {\n\t\tconst { ui } = this\n\t\tconst {\n\t\t\theadline,\n\t\t\tshowOverview,\n\t\t\tfields = this.getNamedFields().map((nf) => nf.name),\n\t\t} = options\n\n\t\tlet done = false\n\t\tlet valid = false\n\n\t\tdo {\n\t\t\tif (headline) {\n\t\t\t\tui.renderHeadline(headline, [GraphicsTextEffect.SpruceHeader])\n\t\t\t\tui.renderLine('')\n\t\t\t}\n\n\t\t\tif (showOverview) {\n\t\t\t\t// Overview mode\n\t\t\t\tconst action = await this.renderOverview({ fields })\n\n\t\t\t\tswitch (action.type) {\n\t\t\t\t\tcase FormBuilderActionType.EditField: {\n\t\t\t\t\t\t// Editing a field\n\t\t\t\t\t\tconst fieldName = action.fieldName\n\t\t\t\t\t\tconst answer = await this.askQuestion(fieldName)\n\n\t\t\t\t\t\t// Set the new value\n\t\t\t\t\t\tthis.set(fieldName, answer)\n\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase FormBuilderActionType.Done: {\n\t\t\t\t\t\tdone = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Asking one question at a time\n\t\t\t\tconst namedFields = this.getNamedFields({ fields })\n\n\t\t\t\tfor (const namedField of namedFields) {\n\t\t\t\t\tconst { name } = namedField\n\t\t\t\t\tconst answer = await this.askQuestion(name)\n\n\t\t\t\t\tthis.set(name, answer)\n\t\t\t\t}\n\n\t\t\t\tdone = true\n\t\t\t}\n\n\t\t\tif (done) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.validate({ fields })\n\t\t\t\t\tvalid = true\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthis.renderError(err)\n\n\t\t\t\t\tawait this.ui.waitForEnter()\n\t\t\t\t}\n\t\t\t}\n\t\t} while (!done || !valid)\n\n\t\tconst values = this.getValues({\n\t\t\tfields,\n\t\t\tshouldCreateEntityInstances: false,\n\t\t})\n\t\tconst cleanValues = pick(values, fields) as Pick<SchemaAllValues<S>, F>\n\n\t\treturn cleanValues\n\t}\n\n\t/** Ask a question based on a field */\n\tpublic askQuestion<F extends SchemaFieldNames<S>>(fieldName: F) {\n\t\tconst field = this.getNamedFields().find(\n\t\t\t(nf) => nf.name === fieldName\n\t\t)?.field\n\n\t\tif (!field) {\n\t\t\tthrow new Error(`No field named ${fieldName} on form ${this.schemaId}`)\n\t\t}\n\n\t\tlet definition = { ...field.definition }\n\t\tconst value = this.get(fieldName, {\n\t\t\tshouldValidate: false,\n\t\t\tshouldCreateEntityInstances: false,\n\t\t})\n\t\tif (definition.isArray) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\tfriendlyMessage: 'Form builder does not support isArray yet',\n\t\t\t})\n\t\t}\n\n\t\tif (value) {\n\t\t\tdefinition.defaultValue = value as IFieldDefinition['defaultValue']\n\t\t}\n\n\t\tif (this.handlers.onWillAskQuestion) {\n\t\t\tdefinition = this.handlers.onWillAskQuestion(\n\t\t\t\tfieldName,\n\t\t\t\t//@ts-ignore\n\t\t\t\tdefinition,\n\t\t\t\tthis.getValues({\n\t\t\t\t\tshouldValidate: false,\n\t\t\t\t\tshouldCreateEntityInstances: false,\n\t\t\t\t}) as unknown as SchemaPartialValues<S>\n\t\t\t)\n\t\t}\n\n\t\treturn this.ui.prompt(definition)\n\t}\n\n\tpublic renderError(error: Error) {\n\t\tthis.ui.renderDivider()\n\t\tthis.ui.renderHeadline('Please fix the following...', [\n\t\t\tGraphicsTextEffect.Red,\n\t\t\tGraphicsTextEffect.Bold,\n\t\t])\n\n\t\tthis.ui.renderLine('')\n\n\t\tif (error instanceof AbstractSpruceError) {\n\t\t\tthis.ui.renderWarning(error.friendlyMessage())\n\t\t} else {\n\t\t\tthis.ui.renderWarning(`Unexpected error ${error.message}`)\n\t\t}\n\n\t\tthis.ui.renderLine('')\n\t}\n\n\tpublic async renderOverview<F extends SchemaFieldNames<S>>(\n\t\toptions: { fields?: F[] } = {}\n\t): Promise<FormAction<S>> {\n\t\tconst { ui } = this\n\t\tconst { fields = this.getNamedFields().map((nf) => nf.name) } = options\n\n\t\tconst actionMap: Record<string, FormAction<S>> = {}\n\n\t\tconst choices: SelectChoice[] = this.getNamedFields()\n\t\t\t.filter((namedField) => fields.indexOf(namedField.name) > -1)\n\t\t\t.map((namedField) => {\n\t\t\t\tconst { field, name } = namedField\n\n\t\t\t\tconst actionKey = `field:${name}`\n\t\t\t\tconst action: FormActionEditField<S> = {\n\t\t\t\t\ttype: FormBuilderActionType.EditField,\n\t\t\t\t\tfieldName: name,\n\t\t\t\t}\n\n\t\t\t\tactionMap[actionKey] = action\n\n\t\t\t\tconst value = this.get(name, { shouldValidate: false })\n\n\t\t\t\treturn {\n\t\t\t\t\tvalue: actionKey,\n\t\t\t\t\tlabel: `${field.label}: ${value ? value : '***missing***'}`,\n\t\t\t\t}\n\t\t\t})\n\n\t\tactionMap['done'] = {\n\t\t\ttype: FormBuilderActionType.Done,\n\t\t}\n\n\t\tchoices.push({\n\t\t\tvalue: 'done',\n\t\t\tlabel: 'Done',\n\t\t})\n\n\t\tconst response = await ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\tlabel: 'Select any field to edit',\n\t\t\toptions: {\n\t\t\t\tchoices,\n\t\t\t},\n\t\t})\n\n\t\tconst action = actionMap[response]\n\t\treturn action\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"FormComponent.js","names":["_error","_interopRequireDefault","require","_schema","_lodash","_SpruceError","_graphicsInterface","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","FormBuilderActionType","FormComponent","_SchemaEntity","_inherits2","_super","options","_this","_classCallCheck2","schema","initialValues","_assertThisInitialized2","ui","onWillAskQuestion","handlers","_createClass2","_present","_asyncToGenerator2","_regenerator","mark","_callee","headline","showOverview","_options$fields","fields","valid","action","fieldName","answer","namedFields","_iterator","_step","namedField","_name","_answer","values","cleanValues","_args","wrap","_callee$","_context","prev","undefined","getNamedFields","map","nf","renderHeadline","GraphicsTextEffect","SpruceHeader","renderLine","renderOverview","sent","t0","type","EditField","Done","askQuestion","set","abrupt","t1","finish","validate","t2","renderError","waitForEnter","getValues","shouldCreateEntityInstances","pick","stop","present","_this$getNamedFields$","field","find","Error","concat","schemaId","definition","get","shouldValidate","SpruceError","code","friendlyMessage","defaultValue","prompt","error","renderDivider","Red","Bold","AbstractSpruceError","renderWarning","message","_renderOverview","_callee2","_this2","_options$fields2","actionMap","choices","response","_args2","_callee2$","_context2","indexOf","actionKey","label","isRequired","SchemaEntity","exports"],"sources":["../../src/components/FormComponent.ts"],"sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport SchemaEntity, {\n\tSchema,\n\tSchemaAllValues,\n\tSchemaPartialValues,\n\tSchemaFieldNames,\n\tSelectChoice,\n\tIFieldDefinition,\n} from '@sprucelabs/schema'\nimport { pick } from 'lodash'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { GraphicsTextEffect } from '../types/graphicsInterface.types'\n\nenum FormBuilderActionType {\n\tDone = 'done',\n\tCancel = 'cancel',\n\tEditField = 'edit_field',\n}\n\ninterface FormActionDone {\n\ttype: FormBuilderActionType.Done\n}\n\ninterface FormActionCancel {\n\ttype: FormBuilderActionType.Cancel\n}\n\ntype FormActionEditField<T extends Schema> = {\n\ttype: FormBuilderActionType.EditField\n\tfieldName: SchemaFieldNames<T>\n}\n\ntype FormAction<T extends Schema> =\n\t| FormActionDone\n\t| FormActionCancel\n\t| FormActionEditField<T>\n\nexport interface FormPresentationOptions<\n\tT extends Schema,\n\tF extends SchemaFieldNames<T> = SchemaFieldNames<T>\n> {\n\theadline?: string\n\tshowOverview?: boolean\n\tfields?: F[]\n}\n\nexport interface FormOptions<T extends Schema> {\n\tui: GraphicsInterface\n\tschema: T\n\tinitialValues?: SchemaPartialValues<T>\n\tonWillAskQuestion?: <K extends SchemaFieldNames<T>>(\n\t\tname: K,\n\t\tfieldDefinition: FieldDefinitions,\n\t\tvalues: SchemaPartialValues<T>\n\t) => FieldDefinitions\n}\n\ninterface Handlers<T extends Schema> {\n\tonWillAskQuestion?: FormOptions<T>['onWillAskQuestion']\n}\n\nexport default class FormComponent<S extends Schema> extends SchemaEntity<S> {\n\tpublic ui: GraphicsInterface\n\tpublic handlers: Handlers<S> = {}\n\n\tpublic constructor(options: FormOptions<S>) {\n\t\t// Setup schema\n\t\tsuper(options.schema, options.initialValues)\n\n\t\tconst { ui } = options\n\n\t\t// Save ui for writing, saving\n\t\tthis.ui = ui\n\n\t\t// Handlers\n\t\tconst { onWillAskQuestion } = options\n\t\tthis.handlers.onWillAskQuestion = onWillAskQuestion\n\t}\n\n\t/** Pass me a schema and i'll give you back an object that conforms to it based on user input */\n\tpublic async present<F extends SchemaFieldNames<S> = SchemaFieldNames<S>>(\n\t\toptions: FormPresentationOptions<S, F> = {}\n\t): Promise<Pick<SchemaAllValues<S>, F>> {\n\t\tconst { ui } = this\n\t\tconst {\n\t\t\theadline,\n\t\t\tshowOverview,\n\t\t\tfields = this.getNamedFields().map((nf) => nf.name),\n\t\t} = options\n\n\t\tlet done = false\n\t\tlet valid = false\n\n\t\tdo {\n\t\t\tif (headline) {\n\t\t\t\tui.renderHeadline(headline, [GraphicsTextEffect.SpruceHeader])\n\t\t\t\tui.renderLine('')\n\t\t\t}\n\n\t\t\tif (showOverview) {\n\t\t\t\t// Overview mode\n\t\t\t\tconst action = await this.renderOverview({ fields })\n\n\t\t\t\tswitch (action.type) {\n\t\t\t\t\tcase FormBuilderActionType.EditField: {\n\t\t\t\t\t\t// Editing a field\n\t\t\t\t\t\tconst fieldName = action.fieldName\n\t\t\t\t\t\tconst answer = await this.askQuestion(fieldName)\n\n\t\t\t\t\t\t// Set the new value\n\t\t\t\t\t\tthis.set(fieldName, answer)\n\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase FormBuilderActionType.Done: {\n\t\t\t\t\t\tdone = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Asking one question at a time\n\t\t\t\tconst namedFields = this.getNamedFields({ fields })\n\n\t\t\t\tfor (const namedField of namedFields) {\n\t\t\t\t\tconst { name } = namedField\n\t\t\t\t\tconst answer = await this.askQuestion(name)\n\n\t\t\t\t\tthis.set(name, answer)\n\t\t\t\t}\n\n\t\t\t\tdone = true\n\t\t\t}\n\n\t\t\tif (done) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.validate({ fields })\n\t\t\t\t\tvalid = true\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthis.renderError(err)\n\n\t\t\t\t\tawait this.ui.waitForEnter()\n\t\t\t\t}\n\t\t\t}\n\t\t} while (!done || !valid)\n\n\t\tconst values = this.getValues({\n\t\t\tfields,\n\t\t\tshouldCreateEntityInstances: false,\n\t\t})\n\t\tconst cleanValues = pick(values, fields) as Pick<SchemaAllValues<S>, F>\n\n\t\treturn cleanValues\n\t}\n\n\t/** Ask a question based on a field */\n\tpublic askQuestion<F extends SchemaFieldNames<S>>(fieldName: F) {\n\t\tconst field = this.getNamedFields().find(\n\t\t\t(nf) => nf.name === fieldName\n\t\t)?.field\n\n\t\tif (!field) {\n\t\t\tthrow new Error(`No field named ${fieldName} on form ${this.schemaId}`)\n\t\t}\n\n\t\tlet definition = { ...field.definition }\n\t\tconst value = this.get(fieldName, {\n\t\t\tshouldValidate: false,\n\t\t\tshouldCreateEntityInstances: false,\n\t\t})\n\t\tif (definition.isArray) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\tfriendlyMessage: 'Form builder does not support isArray yet',\n\t\t\t})\n\t\t}\n\n\t\tif (value) {\n\t\t\tdefinition.defaultValue = value as IFieldDefinition['defaultValue']\n\t\t}\n\n\t\tif (this.handlers.onWillAskQuestion) {\n\t\t\tdefinition = this.handlers.onWillAskQuestion(\n\t\t\t\tfieldName,\n\t\t\t\t//@ts-ignore\n\t\t\t\tdefinition,\n\t\t\t\tthis.getValues({\n\t\t\t\t\tshouldValidate: false,\n\t\t\t\t\tshouldCreateEntityInstances: false,\n\t\t\t\t}) as unknown as SchemaPartialValues<S>\n\t\t\t)\n\t\t}\n\n\t\treturn this.ui.prompt(definition)\n\t}\n\n\tpublic renderError(error: Error) {\n\t\tthis.ui.renderDivider()\n\t\tthis.ui.renderHeadline('Please fix the following...', [\n\t\t\tGraphicsTextEffect.Red,\n\t\t\tGraphicsTextEffect.Bold,\n\t\t])\n\n\t\tthis.ui.renderLine('')\n\n\t\tif (error instanceof AbstractSpruceError) {\n\t\t\tthis.ui.renderWarning(error.friendlyMessage())\n\t\t} else {\n\t\t\tthis.ui.renderWarning(`Unexpected error ${error.message}`)\n\t\t}\n\n\t\tthis.ui.renderLine('')\n\t}\n\n\tpublic async renderOverview<F extends SchemaFieldNames<S>>(\n\t\toptions: { fields?: F[] } = {}\n\t): Promise<FormAction<S>> {\n\t\tconst { ui } = this\n\t\tconst { fields = this.getNamedFields().map((nf) => nf.name) } = options\n\n\t\tconst actionMap: Record<string, FormAction<S>> = {}\n\n\t\tconst choices: SelectChoice[] = this.getNamedFields()\n\t\t\t.filter((namedField) => fields.indexOf(namedField.name) > -1)\n\t\t\t.map((namedField) => {\n\t\t\t\tconst { field, name } = namedField\n\n\t\t\t\tconst actionKey = `field:${name}`\n\t\t\t\tconst action: FormActionEditField<S> = {\n\t\t\t\t\ttype: FormBuilderActionType.EditField,\n\t\t\t\t\tfieldName: name,\n\t\t\t\t}\n\n\t\t\t\tactionMap[actionKey] = action\n\n\t\t\t\tconst value = this.get(name, { shouldValidate: false })\n\n\t\t\t\treturn {\n\t\t\t\t\tvalue: actionKey,\n\t\t\t\t\tlabel: `${field.label}: ${value ? value : '***missing***'}`,\n\t\t\t\t}\n\t\t\t})\n\n\t\tactionMap['done'] = {\n\t\t\ttype: FormBuilderActionType.Done,\n\t\t}\n\n\t\tchoices.push({\n\t\t\tvalue: 'done',\n\t\t\tlabel: 'Done',\n\t\t})\n\n\t\tconst response = await ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\tlabel: 'Select any field to edit',\n\t\t\toptions: {\n\t\t\t\tchoices,\n\t\t\t},\n\t\t})\n\n\t\tconst action = actionMap[response]\n\t\treturn action\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"QuizComponent.js","names":["_schema","require","_chalk","_interopRequireDefault","_lodash","_FormComponent","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","AnswerValidity","QuizComponent","options","_options$randomizeQue","_classCallCheck2","definition","buildSchemaFromQuestions","questions","originalQuestions","formBuilder","FormComponent","schema","term","ui","randomizeQuestions","_createClass2","value","_present","_asyncToGenerator2","_regenerator","mark","_callee","_this","_options$questions","_options$randomizeQue2","startTime","fields","results","answers","answerValidities","totalQuestions","totalCorrect","questionNames","totalWrong","endTime","_args","wrap","_callee$","_context","prev","next","undefined","getNamedFields","map","nf","name","Date","getTime","shuffle","present","sent","questionName","fieldName","answer","_answer$split","split","_answer$split2","_slicedToArray2","validity","idx","_ref","find","namedField","field","Error","fieldDefinition","type","parseInt","Correct","Incorrect","lastResults","percentCorrect","time","startTimeMs","endTimeMs","totalTimeSec","toFixed","abrupt","stop","_scorecard","_callee2","_this2","headline","_options$results","testResults","_args2","_callee2$","_context2","SchemaError","code","parameters","clear","renderHero","questionFieldName","isCorrect","guessedAnswer","concat","correctAnswer","originalQuestion","objectKey","label","chalk","bgGreenBright","black","bgRedBright","strikethrough","renderObject","renderLine","renderHeadline","waitForEnter","scorecard","question","choices","id","exports"],"sources":["../../src/components/QuizComponent.ts"],"sourcesContent":["import {\n\tSchema,\n\tSchemaFieldsByName,\n\tSchemaFieldNames,\n\tSchemaError,\n} from '@sprucelabs/schema'\nimport chalk from 'chalk'\nimport { shuffle } from 'lodash'\nimport { GraphicsInterface } from '../types/cli.types'\nimport FormComponent, {\n\tFormOptions,\n\tFormPresentationOptions,\n} from './FormComponent'\n\ninterface QuizMultipleChoiceQuestion {\n\ttype: 'select'\n\tquestion: string\n\tanswers: string[]\n}\n\ninterface QuizTextQuestion {\n\ttype: 'text'\n\tquestion: string\n\tanswer: string\n}\n\ninterface QuizQuestions {\n\t[key: string]: QuizMultipleChoiceQuestion | QuizTextQuestion\n}\n\nenum AnswerValidity {\n\tCorrect = 'correct',\n\tIncorrect = 'incorrect',\n}\n\ninterface QuizPresentationOptions<T extends Schema, Q extends QuizQuestions>\n\textends Omit<FormPresentationOptions<T>, 'fields'> {\n\tquestions?: QuizAnswerFieldNames<Q>[]\n\trandomizeQuestions?: boolean\n}\n\ntype QuizAnswerFieldNames<Q extends QuizQuestions> = Extract<keyof Q, string>\n\ntype QuizAnswers<Q extends QuizQuestions> = {\n\t[K in QuizAnswerFieldNames<Q>]: string\n}\n\ntype QuizAnswerValidities<Q extends QuizQuestions> = {\n\t[K in QuizAnswerFieldNames<Q>]: AnswerValidity\n}\n\ntype QuizPresentationResults<Q extends QuizQuestions> = {\n\t/** The answers that were given */\n\tanswers: QuizAnswers<Q>\n\n\t/** The answers right or wrong */\n\tanswerValidities: QuizAnswerValidities<Q>\n\n\t/** The percent of correct answers given */\n\tpercentCorrect: number\n\n\t/** How long it took them to take the quiz in ms */\n\ttime: {\n\t\tstartTimeMs: number\n\t\tendTimeMs: number\n\t\ttotalTimeSec: number\n\t}\n\n\t/** How many were correct */\n\ttotalCorrect: number\n\n\t/** How many were wrong */\n\ttotalWrong: number\n\n\t/** How many questions we ended up taking */\n\ttotalQuestions: number\n}\n\ninterface QuizOptions<T extends Schema, Q extends QuizQuestions>\n\textends Omit<FormOptions<T>, 'schema'> {\n\t/** Should we randomize the questions */\n\trandomizeQuestions?: boolean\n\t/** The questions we are asking */\n\tquestions: Q\n}\n\nexport default class QuizComponent<T extends Schema, Q extends QuizQuestions> {\n\tpublic formBuilder: FormComponent<T>\n\tpublic term: GraphicsInterface\n\tpublic randomizeQuestions = true\n\tpublic originalQuestions: QuizQuestions\n\tpublic lastResults?: QuizPresentationResults<Q>\n\n\tpublic constructor(options: QuizOptions<T, Q>) {\n\t\t// We're going to build a schema from the questions and pass that to the form builder\n\t\tconst definition = this.buildSchemaFromQuestions(options.questions)\n\n\t\t// Track questions for later reference\n\t\tthis.originalQuestions = options.questions\n\n\t\t// Construct new form builder\n\t\tthis.formBuilder = new FormComponent<T>({\n\t\t\t...options,\n\t\t\tschema: definition,\n\t\t})\n\n\t\t// Set state locally\n\t\tthis.term = options.ui\n\t\tthis.randomizeQuestions = options.randomizeQuestions ?? true\n\t}\n\n\t/** Present the quiz */\n\tpublic async present(\n\t\toptions: QuizPresentationOptions<T, Q> = {}\n\t): Promise<QuizPresentationResults<Q>> {\n\t\tconst {\n\t\t\tquestions = this.formBuilder\n\t\t\t\t.getNamedFields()\n\t\t\t\t.map((nf) => nf.name) as QuizAnswerFieldNames<Q>[],\n\t\t\trandomizeQuestions = this.randomizeQuestions,\n\t\t} = options\n\n\t\tconst startTime = new Date().getTime()\n\n\t\t// Pull out answers\n\t\tconst fields = randomizeQuestions ? shuffle(questions) : questions\n\n\t\t// Ask for the answers\n\t\tconst results = await this.formBuilder.present({\n\t\t\t...options,\n\t\t\tfields: fields as SchemaFieldNames<T>[],\n\t\t})\n\n\t\t// Generate stats\n\t\tconst answers: Partial<QuizAnswers<Q>> = {}\n\t\tconst answerValidities: Partial<QuizAnswerValidities<Q>> = {}\n\n\t\tconst totalQuestions = questions.length\n\t\tlet totalCorrect = 0\n\n\t\tconst questionNames = Object.keys(results) as QuizAnswerFieldNames<Q>[]\n\n\t\tquestionNames.forEach((questionName) => {\n\t\t\tconst fieldName = questionName as SchemaFieldNames<T>\n\t\t\tconst answer = (results[fieldName] as string) || ''\n\t\t\tconst [validity, idx] = answer.split('-')\n\n\t\t\t// Get the field to tell type\n\t\t\tconst { field } =\n\t\t\t\tthis.formBuilder\n\t\t\t\t\t.getNamedFields()\n\t\t\t\t\t.find((namedField) => namedField.name === fieldName) || {}\n\n\t\t\tif (!field) {\n\t\t\t\tthrow new Error('Field issue in QuizComponent')\n\t\t\t}\n\n\t\t\tconst fieldDefinition = field.definition\n\n\t\t\tswitch (fieldDefinition.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\t// Pull the original multiple choice, we can cast it as multiple choice\n\t\t\t\t\t// question with confidence\n\t\t\t\t\tanswers[questionName] = (\n\t\t\t\t\t\tthis.originalQuestions[questionName] as QuizMultipleChoiceQuestion\n\t\t\t\t\t).answers[parseInt(idx)]\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\t// @ts-ignore TODO proper questions to schema should fix this because we only support a few fields\n\t\t\t\t\tanswers[questionName] = results[fieldName]\n\t\t\t}\n\n\t\t\t// Track validity\n\t\t\tif (validity === AnswerValidity.Correct) {\n\t\t\t\ttotalCorrect = totalCorrect + 1\n\t\t\t\tanswerValidities[questionName] = AnswerValidity.Correct\n\t\t\t} else {\n\t\t\t\tanswerValidities[questionName] = AnswerValidity.Incorrect\n\t\t\t}\n\t\t}, 0)\n\n\t\tconst totalWrong = totalQuestions - totalCorrect\n\n\t\t// Track time\n\t\tconst endTime = new Date().getTime()\n\n\t\tthis.lastResults = {\n\t\t\tpercentCorrect: totalCorrect / totalQuestions,\n\t\t\ttotalCorrect,\n\t\t\ttotalWrong,\n\t\t\tanswerValidities: answerValidities as QuizAnswerValidities<Q>,\n\t\t\tanswers: answers as QuizAnswers<Q>,\n\t\t\ttotalQuestions,\n\t\t\ttime: {\n\t\t\t\tstartTimeMs: startTime,\n\t\t\t\tendTimeMs: endTime,\n\t\t\t\ttotalTimeSec: +((endTime - startTime) / 1000).toFixed(1),\n\t\t\t},\n\t\t}\n\n\t\treturn this.lastResults\n\t}\n\n\tpublic async scorecard(\n\t\toptions: {\n\t\t\tresults?: QuizPresentationResults<Q>\n\t\t\theadline?: string\n\t\t} = {}\n\t) {\n\t\tconst { headline, results = this.lastResults } = options\n\t\tconst { term } = this\n\n\t\tif (!results) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\tparameters: [],\n\t\t\t})\n\t\t}\n\n\t\tterm.clear()\n\t\tterm.renderHero(headline ?? 'Quiz results!')\n\n\t\tconst testResults: Record<string, string> = {}\n\n\t\tthis.formBuilder.getNamedFields().forEach((namedField) => {\n\t\t\tconst { name, field } = namedField\n\t\t\tconst questionFieldName = name as QuizAnswerFieldNames<Q>\n\n\t\t\t// Get results\n\t\t\tconst isCorrect =\n\t\t\t\tresults.answerValidities[questionFieldName] === AnswerValidity.Correct\n\t\t\tconst guessedAnswer = `${results.answers[questionFieldName]}`\n\n\t\t\t// Build the real answer\n\t\t\tlet correctAnswer = ''\n\n\t\t\tconst originalQuestion = this.originalQuestions[questionFieldName]\n\n\t\t\tswitch (originalQuestion.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\tcorrectAnswer = originalQuestion.answers[0]\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\t// All options just pass through the answer tied to the question during instantiation\n\t\t\t\t\tcorrectAnswer = originalQuestion.answer\n\t\t\t}\n\n\t\t\tconst objectKey = field.label || '**missing'\n\n\t\t\tif (isCorrect) {\n\t\t\t\ttestResults[objectKey] = `${chalk.bgGreenBright.black(\n\t\t\t\t\t'Correct!'\n\t\t\t\t)} ${guessedAnswer} `\n\t\t\t} else {\n\t\t\t\ttestResults[objectKey] = `${chalk.bgRedBright.black(\n\t\t\t\t\t'Wrong!'\n\t\t\t\t)} ${chalk.strikethrough(guessedAnswer)} -> ${correctAnswer}`\n\t\t\t}\n\t\t})\n\n\t\tterm.renderObject(testResults)\n\n\t\tterm.renderLine(`# questions: ${results.totalQuestions}`)\n\t\tterm.renderLine(`# correct: ${results.totalCorrect}`)\n\n\t\tterm.renderHeadline(\n\t\t\t`Your score: ${(results.percentCorrect * 100).toFixed(1)}%`\n\t\t)\n\n\t\tawait term.waitForEnter()\n\t}\n\n\t/** Takes questions and builds a schema */\n\tprivate buildSchemaFromQuestions(questions: QuizQuestions): T {\n\t\t// TODO change SchemaFields to something based on schema generated from questions\n\t\tconst fields: SchemaFieldsByName = {}\n\n\t\tObject.keys(questions).forEach((fieldName) => {\n\t\t\tconst question = questions[fieldName]\n\n\t\t\tswitch (question.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\tfields[fieldName] = {\n\t\t\t\t\t\ttype: question.type,\n\t\t\t\t\t\tlabel: question.question,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tchoices: shuffle(\n\t\t\t\t\t\t\t\tquestion.answers.map((question, idx) => ({\n\t\t\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\t\t\tidx === 0\n\t\t\t\t\t\t\t\t\t\t\t? `${AnswerValidity.Correct}-${idx}`\n\t\t\t\t\t\t\t\t\t\t\t: `${AnswerValidity.Incorrect}-${idx}`,\n\t\t\t\t\t\t\t\t\tlabel: question,\n\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tfields[fieldName] = {\n\t\t\t\t\t\ttype: question.type,\n\t\t\t\t\t\tlabel: question.question,\n\t\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\t//@ts-ignore TODO better mapping of questions to schema definition\n\t\tconst definition: T = {\n\t\t\tid: 'quizGenerated',\n\t\t\tname: 'Generated quiz',\n\t\t\tfields,\n\t\t}\n\n\t\treturn definition\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"QuizComponent.js","names":["_schema","require","_chalk","_interopRequireDefault","_lodash","_FormComponent","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","AnswerValidity","QuizComponent","options","_options$randomizeQue","_classCallCheck2","definition","buildSchemaFromQuestions","questions","originalQuestions","formBuilder","FormComponent","schema","term","ui","randomizeQuestions","_createClass2","value","_present","_asyncToGenerator2","_regenerator","mark","_callee","_this","_options$questions","_options$randomizeQue2","startTime","fields","results","answers","answerValidities","totalQuestions","totalCorrect","questionNames","totalWrong","endTime","_args","wrap","_callee$","_context","prev","next","undefined","getNamedFields","map","nf","name","Date","getTime","shuffle","present","sent","questionName","fieldName","answer","_answer$split","split","_answer$split2","_slicedToArray2","validity","idx","_ref","find","namedField","field","Error","fieldDefinition","type","parseInt","Correct","Incorrect","lastResults","percentCorrect","time","startTimeMs","endTimeMs","totalTimeSec","toFixed","abrupt","stop","_scorecard","_callee2","_this2","headline","_options$results","testResults","_args2","_callee2$","_context2","SchemaError","code","parameters","clear","renderHero","questionFieldName","isCorrect","guessedAnswer","concat","correctAnswer","originalQuestion","objectKey","label","chalk","bgGreenBright","black","bgRedBright","strikethrough","renderObject","renderLine","renderHeadline","waitForEnter","scorecard","question","choices","id","exports"],"sources":["../../src/components/QuizComponent.ts"],"sourcesContent":["import {\n\tSchema,\n\tSchemaFieldsByName,\n\tSchemaFieldNames,\n\tSchemaError,\n} from '@sprucelabs/schema'\nimport chalk from 'chalk'\nimport { shuffle } from 'lodash'\nimport { GraphicsInterface } from '../types/cli.types'\nimport FormComponent, {\n\tFormOptions,\n\tFormPresentationOptions,\n} from './FormComponent'\n\ninterface QuizMultipleChoiceQuestion {\n\ttype: 'select'\n\tquestion: string\n\tanswers: string[]\n}\n\ninterface QuizTextQuestion {\n\ttype: 'text'\n\tquestion: string\n\tanswer: string\n}\n\ninterface QuizQuestions {\n\t[key: string]: QuizMultipleChoiceQuestion | QuizTextQuestion\n}\n\nenum AnswerValidity {\n\tCorrect = 'correct',\n\tIncorrect = 'incorrect',\n}\n\ninterface QuizPresentationOptions<T extends Schema, Q extends QuizQuestions>\n\textends Omit<FormPresentationOptions<T>, 'fields'> {\n\tquestions?: QuizAnswerFieldNames<Q>[]\n\trandomizeQuestions?: boolean\n}\n\ntype QuizAnswerFieldNames<Q extends QuizQuestions> = Extract<keyof Q, string>\n\ntype QuizAnswers<Q extends QuizQuestions> = {\n\t[K in QuizAnswerFieldNames<Q>]: string\n}\n\ntype QuizAnswerValidities<Q extends QuizQuestions> = {\n\t[K in QuizAnswerFieldNames<Q>]: AnswerValidity\n}\n\ntype QuizPresentationResults<Q extends QuizQuestions> = {\n\t/** The answers that were given */\n\tanswers: QuizAnswers<Q>\n\n\t/** The answers right or wrong */\n\tanswerValidities: QuizAnswerValidities<Q>\n\n\t/** The percent of correct answers given */\n\tpercentCorrect: number\n\n\t/** How long it took them to take the quiz in ms */\n\ttime: {\n\t\tstartTimeMs: number\n\t\tendTimeMs: number\n\t\ttotalTimeSec: number\n\t}\n\n\t/** How many were correct */\n\ttotalCorrect: number\n\n\t/** How many were wrong */\n\ttotalWrong: number\n\n\t/** How many questions we ended up taking */\n\ttotalQuestions: number\n}\n\ninterface QuizOptions<T extends Schema, Q extends QuizQuestions>\n\textends Omit<FormOptions<T>, 'schema'> {\n\t/** Should we randomize the questions */\n\trandomizeQuestions?: boolean\n\t/** The questions we are asking */\n\tquestions: Q\n}\n\nexport default class QuizComponent<T extends Schema, Q extends QuizQuestions> {\n\tpublic formBuilder: FormComponent<T>\n\tpublic term: GraphicsInterface\n\tpublic randomizeQuestions = true\n\tpublic originalQuestions: QuizQuestions\n\tpublic lastResults?: QuizPresentationResults<Q>\n\n\tpublic constructor(options: QuizOptions<T, Q>) {\n\t\t// We're going to build a schema from the questions and pass that to the form builder\n\t\tconst definition = this.buildSchemaFromQuestions(options.questions)\n\n\t\t// Track questions for later reference\n\t\tthis.originalQuestions = options.questions\n\n\t\t// Construct new form builder\n\t\tthis.formBuilder = new FormComponent<T>({\n\t\t\t...options,\n\t\t\tschema: definition,\n\t\t})\n\n\t\t// Set state locally\n\t\tthis.term = options.ui\n\t\tthis.randomizeQuestions = options.randomizeQuestions ?? true\n\t}\n\n\t/** Present the quiz */\n\tpublic async present(\n\t\toptions: QuizPresentationOptions<T, Q> = {}\n\t): Promise<QuizPresentationResults<Q>> {\n\t\tconst {\n\t\t\tquestions = this.formBuilder\n\t\t\t\t.getNamedFields()\n\t\t\t\t.map((nf) => nf.name) as QuizAnswerFieldNames<Q>[],\n\t\t\trandomizeQuestions = this.randomizeQuestions,\n\t\t} = options\n\n\t\tconst startTime = new Date().getTime()\n\n\t\t// Pull out answers\n\t\tconst fields = randomizeQuestions ? shuffle(questions) : questions\n\n\t\t// Ask for the answers\n\t\tconst results = await this.formBuilder.present({\n\t\t\t...options,\n\t\t\tfields: fields as SchemaFieldNames<T>[],\n\t\t})\n\n\t\t// Generate stats\n\t\tconst answers: Partial<QuizAnswers<Q>> = {}\n\t\tconst answerValidities: Partial<QuizAnswerValidities<Q>> = {}\n\n\t\tconst totalQuestions = questions.length\n\t\tlet totalCorrect = 0\n\n\t\tconst questionNames = Object.keys(results) as QuizAnswerFieldNames<Q>[]\n\n\t\tquestionNames.forEach((questionName) => {\n\t\t\tconst fieldName = questionName as SchemaFieldNames<T>\n\t\t\tconst answer = (results[fieldName] as string) || ''\n\t\t\tconst [validity, idx] = answer.split('-')\n\n\t\t\t// Get the field to tell type\n\t\t\tconst { field } =\n\t\t\t\tthis.formBuilder\n\t\t\t\t\t.getNamedFields()\n\t\t\t\t\t.find((namedField) => namedField.name === fieldName) || {}\n\n\t\t\tif (!field) {\n\t\t\t\tthrow new Error('Field issue in QuizComponent')\n\t\t\t}\n\n\t\t\tconst fieldDefinition = field.definition\n\n\t\t\tswitch (fieldDefinition.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\t// Pull the original multiple choice, we can cast it as multiple choice\n\t\t\t\t\t// question with confidence\n\t\t\t\t\tanswers[questionName] = (\n\t\t\t\t\t\tthis.originalQuestions[questionName] as QuizMultipleChoiceQuestion\n\t\t\t\t\t).answers[parseInt(idx)]\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\t// @ts-ignore TODO proper questions to schema should fix this because we only support a few fields\n\t\t\t\t\tanswers[questionName] = results[fieldName]\n\t\t\t}\n\n\t\t\t// Track validity\n\t\t\tif (validity === AnswerValidity.Correct) {\n\t\t\t\ttotalCorrect = totalCorrect + 1\n\t\t\t\tanswerValidities[questionName] = AnswerValidity.Correct\n\t\t\t} else {\n\t\t\t\tanswerValidities[questionName] = AnswerValidity.Incorrect\n\t\t\t}\n\t\t}, 0)\n\n\t\tconst totalWrong = totalQuestions - totalCorrect\n\n\t\t// Track time\n\t\tconst endTime = new Date().getTime()\n\n\t\tthis.lastResults = {\n\t\t\tpercentCorrect: totalCorrect / totalQuestions,\n\t\t\ttotalCorrect,\n\t\t\ttotalWrong,\n\t\t\tanswerValidities: answerValidities as QuizAnswerValidities<Q>,\n\t\t\tanswers: answers as QuizAnswers<Q>,\n\t\t\ttotalQuestions,\n\t\t\ttime: {\n\t\t\t\tstartTimeMs: startTime,\n\t\t\t\tendTimeMs: endTime,\n\t\t\t\ttotalTimeSec: +((endTime - startTime) / 1000).toFixed(1),\n\t\t\t},\n\t\t}\n\n\t\treturn this.lastResults\n\t}\n\n\tpublic async scorecard(\n\t\toptions: {\n\t\t\tresults?: QuizPresentationResults<Q>\n\t\t\theadline?: string\n\t\t} = {}\n\t) {\n\t\tconst { headline, results = this.lastResults } = options\n\t\tconst { term } = this\n\n\t\tif (!results) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\tparameters: [],\n\t\t\t})\n\t\t}\n\n\t\tterm.clear()\n\t\tterm.renderHero(headline ?? 'Quiz results!')\n\n\t\tconst testResults: Record<string, string> = {}\n\n\t\tthis.formBuilder.getNamedFields().forEach((namedField) => {\n\t\t\tconst { name, field } = namedField\n\t\t\tconst questionFieldName = name as QuizAnswerFieldNames<Q>\n\n\t\t\t// Get results\n\t\t\tconst isCorrect =\n\t\t\t\tresults.answerValidities[questionFieldName] === AnswerValidity.Correct\n\t\t\tconst guessedAnswer = `${results.answers[questionFieldName]}`\n\n\t\t\t// Build the real answer\n\t\t\tlet correctAnswer = ''\n\n\t\t\tconst originalQuestion = this.originalQuestions[questionFieldName]\n\n\t\t\tswitch (originalQuestion.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\tcorrectAnswer = originalQuestion.answers[0]\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\t// All options just pass through the answer tied to the question during instantiation\n\t\t\t\t\tcorrectAnswer = originalQuestion.answer\n\t\t\t}\n\n\t\t\tconst objectKey = field.label || '**missing'\n\n\t\t\tif (isCorrect) {\n\t\t\t\ttestResults[objectKey] = `${chalk.bgGreenBright.black(\n\t\t\t\t\t'Correct!'\n\t\t\t\t)} ${guessedAnswer} `\n\t\t\t} else {\n\t\t\t\ttestResults[objectKey] = `${chalk.bgRedBright.black(\n\t\t\t\t\t'Wrong!'\n\t\t\t\t)} ${chalk.strikethrough(guessedAnswer)} -> ${correctAnswer}`\n\t\t\t}\n\t\t})\n\n\t\tterm.renderObject(testResults)\n\n\t\tterm.renderLine(`# questions: ${results.totalQuestions}`)\n\t\tterm.renderLine(`# correct: ${results.totalCorrect}`)\n\n\t\tterm.renderHeadline(\n\t\t\t`Your score: ${(results.percentCorrect * 100).toFixed(1)}%`\n\t\t)\n\n\t\tawait term.waitForEnter()\n\t}\n\n\t/** Takes questions and builds a schema */\n\tprivate buildSchemaFromQuestions(questions: QuizQuestions): T {\n\t\t// TODO change SchemaFields to something based on schema generated from questions\n\t\tconst fields: SchemaFieldsByName = {}\n\n\t\tObject.keys(questions).forEach((fieldName) => {\n\t\t\tconst question = questions[fieldName]\n\n\t\t\tswitch (question.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\tfields[fieldName] = {\n\t\t\t\t\t\ttype: question.type,\n\t\t\t\t\t\tlabel: question.question,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tchoices: shuffle(\n\t\t\t\t\t\t\t\tquestion.answers.map((question, idx) => ({\n\t\t\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\t\t\tidx === 0\n\t\t\t\t\t\t\t\t\t\t\t? `${AnswerValidity.Correct}-${idx}`\n\t\t\t\t\t\t\t\t\t\t\t: `${AnswerValidity.Incorrect}-${idx}`,\n\t\t\t\t\t\t\t\t\tlabel: question,\n\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tfields[fieldName] = {\n\t\t\t\t\t\ttype: question.type,\n\t\t\t\t\t\tlabel: question.question,\n\t\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\t//@ts-ignore TODO better mapping of questions to schema definition\n\t\tconst definition: T = {\n\t\t\tid: 'quizGenerated',\n\t\t\tname: 'Generated quiz',\n\t\t\tfields,\n\t\t}\n\n\t\treturn definition\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SpruceError.js","names":["_error","_interopRequireDefault","require","_spruceSkillUtils","_upperFirst","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","SpruceError","_AbstractSpruceError","_inherits2","_super","_classCallCheck2","_createClass2","key","friendlyMessage","_options$friendlyMess","_options$originalErro2","_options$originalErro3","_options$friendlyMess2","_options$originalErro4","_options$originalErro5","_options$originalErro7","_ref","_options$friendlyMess3","_options$originalErro8","_options$friendlyMess4","options","message","code","args","concat","join","originalError","_options$originalErro","stack","command","file","pattern","_options$originalErro6","cmd","cwd","stderr","cleanStdErr","stdout","schemaId","destination","featureCode","fileName","testName","errorMessage","split","map","line","upperFirst","errors","responseErrors","errorMessages","_iterator","_step","push","fullyQualifiedEventName","brokenProperty","dependencies","d","hint","namesUtil","toPascal","schemaNamespace","fieldName","JSON","stringify","fieldOptions","namespace","_get2","replace","trim","AbstractSpruceError","exports"],"sources":["../../src/errors/SpruceError.ts"],"sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport upperFirst from 'lodash/upperFirst'\nimport ErrorOptions from '#spruce/errors/options.types'\n\nexport default class SpruceError extends AbstractSpruceError<ErrorOptions> {\n\t/** An easy to understand version of the errors */\n\tpublic friendlyMessage(): string {\n\t\tconst { options } = this\n\t\tlet message\n\n\t\tswitch (options?.code) {\n\t\t\tcase 'INVALID_COMMAND':\n\t\t\t\tif (!options.args || options.args.length === 0) {\n\t\t\t\t\tmessage = `Hey friend 👋.. I don't support the command you tried.`\n\t\t\t\t} else {\n\t\t\t\t\tmessage = `Hey friend 👋. I don't know the command: ${options.args.join(\n\t\t\t\t\t\t' '\n\t\t\t\t\t)}.`\n\t\t\t\t}\n\t\t\t\tmessage += ' Try running `spruce --help`'\n\t\t\t\tbreak\n\n\t\t\tcase 'GENERIC':\n\t\t\t\tmessage = options.friendlyMessage ?? 'Oh shoot! 🤔'\n\n\t\t\t\tif (options.originalError) {\n\t\t\t\t\tmessage += `\\n\\n${\n\t\t\t\t\t\toptions.originalError.stack ?? options.originalError.name\n\t\t\t\t\t}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'NOT_IMPLEMENTED':\n\t\t\t\tmessage = ''\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'COMMAND_NOT_IMPLEMENTED':\n\t\t\t\tmessage = `${options.command} has not yet been implemented. ${\n\t\t\t\t\toptions.args ? `Args: ${options.args.join(', ')}` : ''\n\t\t\t\t}`\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_FAILED_TO_IMPORT':\n\t\t\t\tmessage = `Error importing \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BUILD_FAILED':\n\t\t\t\tmessage = `Build${\n\t\t\t\t\toptions.file ? `ing ${options.file}` : ''\n\t\t\t\t} failed. It looks like you're not running 'yarn watch'. Run it and then run 'spruce all:sync'.`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FAILED_TO_IMPORT':\n\t\t\t\tmessage =\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\t`Failed to import \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'LINT_FAILED':\n\t\t\t\tmessage = options.friendlyMessage\n\n\t\t\t\tif (!message) {\n\t\t\t\t\tmessage = `Lint failed on pattern ${options.pattern}.`\n\n\t\t\t\t\tif (options.originalError) {\n\t\t\t\t\t\tmessage += `\\n\\nOriginal error:${\n\t\t\t\t\t\t\toptions.originalError.stack ?? options.originalError.message\n\t\t\t\t\t\t}`\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'EXECUTING_COMMAND_FAILED':\n\t\t\t\tif (this.originalError && this.originalError.message) {\n\t\t\t\t\tmessage = this.originalError.message + '\\n\\n'\n\t\t\t\t} else {\n\t\t\t\t\tmessage = ''\n\t\t\t\t}\n\t\t\t\tmessage += `Executing command failed '${options.cmd}'.\\n\\n`\n\t\t\t\tif (options.cwd) {\n\t\t\t\t\tmessage += `cwd: ${options.cwd}\\n\\n`\n\t\t\t\t}\n\n\t\t\t\tif (options.stderr) {\n\t\t\t\t\tmessage += this.cleanStdErr(options.stderr) + '\\n\\n'\n\t\t\t\t}\n\n\t\t\t\tif (options.stdout) {\n\t\t\t\t\tmessage += options.stdout\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'CREATE_AUTOLOADER_FAILED':\n\t\t\t\tmessage = 'A Could not create an autoloader just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_EMPTY':\n\t\t\t\tmessage = 'A directory empty just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'FILE_EXISTS':\n\t\t\t\tmessage = 'A fail already exists.'\n\t\t\t\tbreak\n\n\t\t\tcase 'VSCODE_NOT_INSTALLED':\n\t\t\t\tmessage =\n\t\t\t\t\t\"vscode's 'code' is not installed.\\n\\nMac instructions: https://code.visualstudio.com/docs/setup/mac\\n\\nLinux instructions: https://code.visualstudio.com/docs/setup/linux\\n\\nWindows instructions: https://code.visualstudio.com/docs/setup/windows\"\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_EXISTS':\n\t\t\t\tmessage = `A schema called ${options.schemaId} already exists at ${options.destination}`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_ABORTED':\n\t\t\t\tmessage = 'Aborted! See ya later! ✌️'\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_FEATURE_CODE':\n\t\t\t\tmessage = `Oh no! I couldn't find a feature with the code '${options.featureCode}'.`\n\t\t\t\tbreak\n\n\t\t\tcase 'TEST_FAILED':\n\t\t\t\tmessage = `${options.fileName}\\n - ${\n\t\t\t\t\toptions.testName\n\t\t\t\t}\\n\\n${options.errorMessage\n\t\t\t\t\t.split('\\n')\n\t\t\t\t\t.map((line) => ` ${line}`)\n\t\t\t\t\t.join('\\n')}`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FEATURE_NOT_INSTALLED':\n\t\t\t\tmessage = `\\`${upperFirst(\n\t\t\t\t\toptions.featureCode\n\t\t\t\t)}\\` feature is not installed. Install it first, then try again.`\n\t\t\t\tbreak\n\n\t\t\tcase 'MERCURY_RESPONSE_ERROR': {\n\t\t\t\tconst errors = options.responseErrors\n\t\t\t\tmessage = `Got ${\n\t\t\t\t\terrors.length === 1 ? 'an error' : `${errors.length} errors`\n\t\t\t\t} from the server:\\n\\n`\n\n\t\t\t\tconst errorMessages: string[] = []\n\t\t\t\tfor (const err of errors) {\n\t\t\t\t\terrorMessages.push(err.message)\n\t\t\t\t}\n\n\t\t\t\tmessage += errorMessages.join('\\n')\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'INVALID_TEST_DIRECTORY':\n\t\t\t\tmessage = `You are missing dependencies I need to run tests. Try \\`spruce test.install\\` to reinstall.`\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_NOT_SKILL':\n\t\t\t\tmessage = 'The directory you are in is not a skill!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_REGISTERED':\n\t\t\t\tmessage = `Dang! I can't continue until you register your skill! Run \\`spruce login\\` and then \\`spruce register.skill\\` to get the ball rolling!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_ORGANIZATIONS_FOUND':\n\t\t\t\tmessage =\n\t\t\t\t\t\"It looks like you don't have any organizations setup yet. Try `spruce create.organization` first.\"\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_EVENT_CONTRACT':\n\t\t\t\tmessage = `The event named \\`${options.fullyQualifiedEventName}\\` is not valid. Check ${options.brokenProperty}. The original error is:\\n\\n${options.originalError?.message}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BOOT_ERROR':\n\t\t\t\tmessage = `Booting your skill failed: ${\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\toptions.originalError?.message ??\n\t\t\t\t\t'Not sure why, tho.'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'DEPLOY_FAILED':\n\t\t\t\tmessage = 'Deploy halted!'\n\t\t\t\tbreak\n\n\t\t\tcase 'MISSING_DEPENDENCIES':\n\t\t\t\tmessage = `Looks like you're missing some dependencies:\\n\\n${options.dependencies\n\t\t\t\t\t.map((d) => `${d.name}: ${d.hint}`)\n\t\t\t\t\t.join('\\n')}`\n\t\t\t\tbreak\n\n\t\t\tcase 'STORE_EXISTS':\n\t\t\t\tmessage = 'A Store exists just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'NOT_LOGGED_IN':\n\t\t\t\tmessage = 'You have to be logged in to do that!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_FOUND':\n\t\t\t\tmessage = options.friendlyMessage ?? `I couldn't find that skill!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_SKILLS_REGISTERED':\n\t\t\t\tmessage = `Whoa! Looks like you haven't registered your skill yet! Try \\`spruce register\\` to get that done!`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_BLOCKED':\n\t\t\t\tmessage = `${options.command} is blocked! ${options.hint}`\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_VIEW_EXISTS':\n\t\t\t\tmessage = `A skill view controller already exists named ${options.name}!`\n\t\t\t\tbreak\n\n\t\t\tcase 'THEME_EXISTS':\n\t\t\t\tmessage = `Yikes! You can't create a new theme. One per skill for now.`\n\t\t\t\tbreak\n\n\t\t\tcase 'CACHE_NOT_ENABLED':\n\t\t\t\tmessage = \"Cache is not enabled, so it can't be disabled!\"\n\t\t\t\tbreak\n\n\t\t\tcase 'DOCKER_NOT_STARTED':\n\t\t\t\tmessage = 'Docker has not been started! Start it and try again!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_TEMPLATE_ITEM_BUILDING_FAILED':\n\t\t\t\tmessage = `Failed to build schema template item for '${namesUtil.toPascal(\n\t\t\t\t\toptions.schemaNamespace\n\t\t\t\t)}.${options.schemaId}'. The field I had an issue on was '${\n\t\t\t\t\toptions.fieldName\n\t\t\t\t}'. It's options are:\\n\\n${JSON.stringify(\n\t\t\t\t\toptions.fieldOptions\n\t\t\t\t)}.\\n\\nChances are you have a circular reference in your schemas. You'll need to extract shared fields to a new file and have your schemas mix those in, vs referencing eath other.`\n\t\t\t\tbreak\n\n\t\t\tcase 'ACTION_CANCELLED':\n\t\t\t\tmessage = 'A Action cancelled just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'TRANSPORT_ALREADY_EXISTS':\n\t\t\t\tmessage = `A transport named '${options.name}' already exists!`\n\t\t\t\tbreak\n\n\t\t\tcase 'DEPENDENCY_EXISTS':\n\t\t\t\tmessage = `You already have ${options.namespace} as a dependency!`\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tmessage = super.friendlyMessage()\n\t\t}\n\n\t\treturn message\n\t}\n\n\tprivate cleanStdErr(stderr: string) {\n\t\treturn stderr.replace('warning package.json: No license field', '').trim()\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SpruceError.js","names":["_error","_interopRequireDefault","require","_spruceSkillUtils","_upperFirst","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","SpruceError","_AbstractSpruceError","_inherits2","_super","_classCallCheck2","_createClass2","key","friendlyMessage","_options$friendlyMess","_options$originalErro2","_options$originalErro3","_options$friendlyMess2","_options$originalErro4","_options$originalErro5","_options$originalErro7","_ref","_options$friendlyMess3","_options$originalErro8","_options$friendlyMess4","options","message","code","args","concat","join","originalError","_options$originalErro","stack","command","file","pattern","_options$originalErro6","cmd","cwd","stderr","cleanStdErr","stdout","schemaId","destination","featureCode","fileName","testName","errorMessage","split","map","line","upperFirst","errors","responseErrors","errorMessages","_iterator","_step","push","fullyQualifiedEventName","brokenProperty","dependencies","d","hint","namesUtil","toPascal","schemaNamespace","fieldName","JSON","stringify","fieldOptions","namespace","_get2","replace","trim","AbstractSpruceError","exports"],"sources":["../../src/errors/SpruceError.ts"],"sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport upperFirst from 'lodash/upperFirst'\nimport ErrorOptions from '#spruce/errors/options.types'\n\nexport default class SpruceError extends AbstractSpruceError<ErrorOptions> {\n\t/** An easy to understand version of the errors */\n\tpublic friendlyMessage(): string {\n\t\tconst { options } = this\n\t\tlet message\n\n\t\tswitch (options?.code) {\n\t\t\tcase 'INVALID_COMMAND':\n\t\t\t\tif (!options.args || options.args.length === 0) {\n\t\t\t\t\tmessage = `Hey friend 👋.. I don't support the command you tried.`\n\t\t\t\t} else {\n\t\t\t\t\tmessage = `Hey friend 👋. I don't know the command: ${options.args.join(\n\t\t\t\t\t\t' '\n\t\t\t\t\t)}.`\n\t\t\t\t}\n\t\t\t\tmessage += ' Try running `spruce --help`'\n\t\t\t\tbreak\n\n\t\t\tcase 'GENERIC':\n\t\t\t\tmessage = options.friendlyMessage ?? 'Oh shoot! 🤔'\n\n\t\t\t\tif (options.originalError) {\n\t\t\t\t\tmessage += `\\n\\n${\n\t\t\t\t\t\toptions.originalError.stack ?? options.originalError.name\n\t\t\t\t\t}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'NOT_IMPLEMENTED':\n\t\t\t\tmessage = ''\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'COMMAND_NOT_IMPLEMENTED':\n\t\t\t\tmessage = `${options.command} has not yet been implemented. ${\n\t\t\t\t\toptions.args ? `Args: ${options.args.join(', ')}` : ''\n\t\t\t\t}`\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_FAILED_TO_IMPORT':\n\t\t\t\tmessage = `Error importing \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BUILD_FAILED':\n\t\t\t\tmessage = `Build${\n\t\t\t\t\toptions.file ? `ing ${options.file}` : ''\n\t\t\t\t} failed. It looks like you're not running 'yarn watch'. Run it and then run 'spruce all:sync'.`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FAILED_TO_IMPORT':\n\t\t\t\tmessage =\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\t`Failed to import \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'LINT_FAILED':\n\t\t\t\tmessage = options.friendlyMessage\n\n\t\t\t\tif (!message) {\n\t\t\t\t\tmessage = `Lint failed on pattern ${options.pattern}.`\n\n\t\t\t\t\tif (options.originalError) {\n\t\t\t\t\t\tmessage += `\\n\\nOriginal error:${\n\t\t\t\t\t\t\toptions.originalError.stack ?? options.originalError.message\n\t\t\t\t\t\t}`\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'EXECUTING_COMMAND_FAILED':\n\t\t\t\tif (this.originalError && this.originalError.message) {\n\t\t\t\t\tmessage = this.originalError.message + '\\n\\n'\n\t\t\t\t} else {\n\t\t\t\t\tmessage = ''\n\t\t\t\t}\n\t\t\t\tmessage += `Executing command failed '${options.cmd}'.\\n\\n`\n\t\t\t\tif (options.cwd) {\n\t\t\t\t\tmessage += `cwd: ${options.cwd}\\n\\n`\n\t\t\t\t}\n\n\t\t\t\tif (options.stderr) {\n\t\t\t\t\tmessage += this.cleanStdErr(options.stderr) + '\\n\\n'\n\t\t\t\t}\n\n\t\t\t\tif (options.stdout) {\n\t\t\t\t\tmessage += options.stdout\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'CREATE_AUTOLOADER_FAILED':\n\t\t\t\tmessage = 'A Could not create an autoloader just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_EMPTY':\n\t\t\t\tmessage = 'A directory empty just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'FILE_EXISTS':\n\t\t\t\tmessage = 'A fail already exists.'\n\t\t\t\tbreak\n\n\t\t\tcase 'VSCODE_NOT_INSTALLED':\n\t\t\t\tmessage =\n\t\t\t\t\t\"vscode's 'code' is not installed.\\n\\nMac instructions: https://code.visualstudio.com/docs/setup/mac\\n\\nLinux instructions: https://code.visualstudio.com/docs/setup/linux\\n\\nWindows instructions: https://code.visualstudio.com/docs/setup/windows\"\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_EXISTS':\n\t\t\t\tmessage = `A schema called ${options.schemaId} already exists at ${options.destination}`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_ABORTED':\n\t\t\t\tmessage = 'Aborted! See ya later! ✌️'\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_FEATURE_CODE':\n\t\t\t\tmessage = `Oh no! I couldn't find a feature with the code '${options.featureCode}'.`\n\t\t\t\tbreak\n\n\t\t\tcase 'TEST_FAILED':\n\t\t\t\tmessage = `${options.fileName}\\n - ${\n\t\t\t\t\toptions.testName\n\t\t\t\t}\\n\\n${options.errorMessage\n\t\t\t\t\t.split('\\n')\n\t\t\t\t\t.map((line) => ` ${line}`)\n\t\t\t\t\t.join('\\n')}`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FEATURE_NOT_INSTALLED':\n\t\t\t\tmessage = `\\`${upperFirst(\n\t\t\t\t\toptions.featureCode\n\t\t\t\t)}\\` feature is not installed. Install it first, then try again.`\n\t\t\t\tbreak\n\n\t\t\tcase 'MERCURY_RESPONSE_ERROR': {\n\t\t\t\tconst errors = options.responseErrors\n\t\t\t\tmessage = `Got ${\n\t\t\t\t\terrors.length === 1 ? 'an error' : `${errors.length} errors`\n\t\t\t\t} from the server:\\n\\n`\n\n\t\t\t\tconst errorMessages: string[] = []\n\t\t\t\tfor (const err of errors) {\n\t\t\t\t\terrorMessages.push(err.message)\n\t\t\t\t}\n\n\t\t\t\tmessage += errorMessages.join('\\n')\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'INVALID_TEST_DIRECTORY':\n\t\t\t\tmessage = `You are missing dependencies I need to run tests. Try \\`spruce test.install\\` to reinstall.`\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_NOT_SKILL':\n\t\t\t\tmessage = 'The directory you are in is not a skill!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_REGISTERED':\n\t\t\t\tmessage = `Dang! I can't continue until you register your skill! Run \\`spruce login\\` and then \\`spruce register.skill\\` to get the ball rolling!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_ORGANIZATIONS_FOUND':\n\t\t\t\tmessage =\n\t\t\t\t\t\"It looks like you don't have any organizations setup yet. Try `spruce create.organization` first.\"\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_EVENT_CONTRACT':\n\t\t\t\tmessage = `The event named \\`${options.fullyQualifiedEventName}\\` is not valid. Check ${options.brokenProperty}. The original error is:\\n\\n${options.originalError?.message}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BOOT_ERROR':\n\t\t\t\tmessage = `Booting your skill failed: ${\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\toptions.originalError?.message ??\n\t\t\t\t\t'Not sure why, tho.'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'DEPLOY_FAILED':\n\t\t\t\tmessage = 'Deploy halted!'\n\t\t\t\tbreak\n\n\t\t\tcase 'MISSING_DEPENDENCIES':\n\t\t\t\tmessage = `Looks like you're missing some dependencies:\\n\\n${options.dependencies\n\t\t\t\t\t.map((d) => `${d.name}: ${d.hint}`)\n\t\t\t\t\t.join('\\n')}`\n\t\t\t\tbreak\n\n\t\t\tcase 'STORE_EXISTS':\n\t\t\t\tmessage = 'A Store exists just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'NOT_LOGGED_IN':\n\t\t\t\tmessage = 'You have to be logged in to do that!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_FOUND':\n\t\t\t\tmessage = options.friendlyMessage ?? `I couldn't find that skill!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_SKILLS_REGISTERED':\n\t\t\t\tmessage = `Whoa! Looks like you haven't registered your skill yet! Try \\`spruce register\\` to get that done!`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_BLOCKED':\n\t\t\t\tmessage = `${options.command} is blocked! ${options.hint}`\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_VIEW_EXISTS':\n\t\t\t\tmessage = `A skill view controller already exists named ${options.name}!`\n\t\t\t\tbreak\n\n\t\t\tcase 'THEME_EXISTS':\n\t\t\t\tmessage = `Yikes! You can't create a new theme. One per skill for now.`\n\t\t\t\tbreak\n\n\t\t\tcase 'CACHE_NOT_ENABLED':\n\t\t\t\tmessage = \"Cache is not enabled, so it can't be disabled!\"\n\t\t\t\tbreak\n\n\t\t\tcase 'DOCKER_NOT_STARTED':\n\t\t\t\tmessage = 'Docker has not been started! Start it and try again!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_TEMPLATE_ITEM_BUILDING_FAILED':\n\t\t\t\tmessage = `Failed to build schema template item for '${namesUtil.toPascal(\n\t\t\t\t\toptions.schemaNamespace\n\t\t\t\t)}.${options.schemaId}'. The field I had an issue on was '${\n\t\t\t\t\toptions.fieldName\n\t\t\t\t}'. It's options are:\\n\\n${JSON.stringify(\n\t\t\t\t\toptions.fieldOptions\n\t\t\t\t)}.\\n\\nChances are you have a circular reference in your schemas. You'll need to extract shared fields to a new file and have your schemas mix those in, vs referencing eath other.`\n\t\t\t\tbreak\n\n\t\t\tcase 'ACTION_CANCELLED':\n\t\t\t\tmessage = 'A Action cancelled just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'TRANSPORT_ALREADY_EXISTS':\n\t\t\t\tmessage = `A transport named '${options.name}' already exists!`\n\t\t\t\tbreak\n\n\t\t\tcase 'DEPENDENCY_EXISTS':\n\t\t\t\tmessage = `You already have ${options.namespace} as a dependency!`\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tmessage = super.friendlyMessage()\n\t\t}\n\n\t\treturn message\n\t}\n\n\tprivate cleanStdErr(stderr: string) {\n\t\treturn stderr.replace('warning package.json: No license field', '').trim()\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractAction.js","names":["_spruceSkillUtils","require","_validateAndNormalize","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","AbstractAction","options","_classCallCheck2","cwd","templates","parent","storeFactory","serviceFactory","features","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","_createClass2","value","Action","featureCode","actionCode","_Service","Service","_x","_x2","toString","type","Store","code","Writer","fileDescriptions","linter","getFeature","getFeatureCodes","getAllCodes","validateAndNormalizeOptions","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","_resolveVersion","_asyncToGenerator2","_regenerator","mark","_callee","userSuppliedVersion","resolvedDestination","resolvedVersion","wrap","_callee$","_context","prev","next","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","sent","assertValidVersion","abrupt","dirValue","stop","resolveVersion","_x3","_x4","_askForVersionIfTodaysVersionDoesNotExist","_callee2","fallbackVersion","versions","todaysVersion","version","alreadyHasToday","choices","_callee2$","_context2","getAllVersions","find","label","_toConsumableArray2","sort","a","b","intValue","map","prompt","hint","isRequired","_x5","_x6","_connectToApi","_callee3","_callee3$","_context3","connectToApi","_x7","exports"],"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\tCreateStoreOptions,\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 features: 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.features = 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: FeatureCode, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode, 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?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\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.features.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.features.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":["_spruceSkillUtils","require","_validateAndNormalize","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","AbstractAction","options","_classCallCheck2","cwd","templates","parent","storeFactory","serviceFactory","features","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","_createClass2","value","Action","featureCode","actionCode","_Service","Service","_x","_x2","toString","type","Store","code","Writer","fileDescriptions","linter","getFeature","getFeatureCodes","getAllCodes","validateAndNormalizeOptions","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","_resolveVersion","_asyncToGenerator2","_regenerator","mark","_callee","userSuppliedVersion","resolvedDestination","resolvedVersion","wrap","_callee$","_context","prev","next","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","sent","assertValidVersion","abrupt","dirValue","stop","resolveVersion","_x3","_x4","_askForVersionIfTodaysVersionDoesNotExist","_callee2","fallbackVersion","versions","todaysVersion","version","alreadyHasToday","choices","_callee2$","_context2","getAllVersions","find","label","_toConsumableArray2","sort","a","b","intValue","map","prompt","hint","isRequired","_x5","_x6","_connectToApi","_callee3","_callee3$","_context3","connectToApi","_x7","exports"],"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\tCreateStoreOptions,\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 features: 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.features = 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: FeatureCode, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode, 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?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\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.features.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.features.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":["_path","_interopRequireDefault","require","_globby","_WriterFactory","_feature","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","AbstractFeature","options","_classCallCheck2","cwd","serviceFactory","templates","actions","actionFactory","storeFactory","writers","WriterFactory","ui","settings","Service","linter","emitter","features","featureInstaller","apiClientFactory","actionExecuter","_createClass2","Action","featureCode","actionCode","_beforePackageInstall","_asyncToGenerator2","_regenerator","mark","_callee","_options","wrap","_callee$","_context","prev","abrupt","stop","beforePackageInstall","_x3","_afterPackageInstall","_callee2","_callee2$","_context2","afterPackageInstall","_x4","_Service","_x","_x2","type","Writer","code","fileDescriptions","getFeature","_getAvailableActionCodes","_callee3","matches","codes","_iterator","_step","match","generatedCode","_callee3$","_context3","actionsDir","actionCodes","globby","pathUtil","join","sent","featuresUtil","filePathToActionCode","getAvailableActionCodes","Store","_connectToApi","_callee4","_callee4$","_context4","connectToApi","_x5","exports"],"sources":["../../src/features/AbstractFeature.ts"],"sourcesContent":["import pathUtil from 'path'\nimport globby from '@sprucelabs/globby'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\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 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 actions?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected features: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writers: 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.actions = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writers = 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.features = 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.writers.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.features.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?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\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\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"],"mappings":"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"}
1
+ {"version":3,"file":"AbstractFeature.js","names":["_path","_interopRequireDefault","require","_globby","_WriterFactory","_feature","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","AbstractFeature","options","_classCallCheck2","cwd","serviceFactory","templates","actions","actionFactory","storeFactory","writers","WriterFactory","ui","settings","Service","linter","emitter","features","featureInstaller","apiClientFactory","actionExecuter","_createClass2","Action","featureCode","actionCode","_beforePackageInstall","_asyncToGenerator2","_regenerator","mark","_callee","_options","wrap","_callee$","_context","prev","abrupt","stop","beforePackageInstall","_x3","_afterPackageInstall","_callee2","_callee2$","_context2","afterPackageInstall","_x4","_Service","_x","_x2","type","Writer","code","fileDescriptions","getFeature","_getAvailableActionCodes","_callee3","matches","codes","_iterator","_step","match","generatedCode","_callee3$","_context3","actionsDir","actionCodes","globby","pathUtil","join","sent","featuresUtil","filePathToActionCode","getAvailableActionCodes","Store","_connectToApi","_callee4","_callee4$","_context4","connectToApi","_x5","exports"],"sources":["../../src/features/AbstractFeature.ts"],"sourcesContent":["import pathUtil from 'path'\nimport globby from '@sprucelabs/globby'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\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 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 actions?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected features: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writers: 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.actions = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writers = 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.features = 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.writers.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.features.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?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\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\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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionExecuter.js","names":["_spruceEventUtils","require","_merge","_interopRequireDefault","_SpruceError","_action","_ActionQuestionAsker","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","ActionExecuter","options","_options$shouldAutoHa","_classCallCheck2","featureInstallerFactory","emitter","ui","actions","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","_createClass2","value","getFeatureInstaller","_execute","_asyncToGenerator2","_regenerator","mark","_callee","_errors$length","_yield$asker$installO","_ref","_yield$asker$askAbout","_yield$asker$askAbout2","_ref2","featureCode","actionCode","action","originalExecute","actionOptions","installer","isInstalled","willExecuteResults","_eventResponseUtil$ge","willExecutePayloads","errors","feature","asker","response","installOptions","answers","_yield$asker$installO2","ourFeatureResults","executeResults","didExecuteResults","_eventResponseUtil$ge2","payloads","didExecuteErrors","wrap","_callee$","_context","prev","next","sent","SpruceError","code","friendlyMessage","concat","emit","eventResponseUtil","getAllResponsePayloadsAndErrors","abrupt","actionUtil","assertNoErrorsInResponse","getFeature","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","t1","t0","t2","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","t5","t4","t6","t7","t3","t8","askAboutMissingActionOptions","t10","t9","t11","installOurFeature","t13","t12","t14","merge","t15","results","mergeActionResults","_toConsumableArray2","stop","execute","_x","Action","_this","actionExecuter","bind","_ref3","_callee2","_callee2$","_context2","_x2","exports"],"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 default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actions: 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.actions = 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: any) {\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 action = this.actions.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\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ActionExecuter.js","names":["_spruceEventUtils","require","_merge","_interopRequireDefault","_SpruceError","_action","_ActionQuestionAsker","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","ActionExecuter","options","_options$shouldAutoHa","_classCallCheck2","featureInstallerFactory","emitter","ui","actions","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","_createClass2","value","getFeatureInstaller","_execute","_asyncToGenerator2","_regenerator","mark","_callee","_errors$length","_yield$asker$installO","_ref","_yield$asker$askAbout","_yield$asker$askAbout2","_ref2","featureCode","actionCode","action","originalExecute","actionOptions","installer","isInstalled","willExecuteResults","_eventResponseUtil$ge","willExecutePayloads","errors","feature","asker","response","installOptions","answers","_yield$asker$installO2","ourFeatureResults","executeResults","didExecuteResults","_eventResponseUtil$ge2","payloads","didExecuteErrors","wrap","_callee$","_context","prev","next","sent","SpruceError","code","friendlyMessage","concat","emit","eventResponseUtil","getAllResponsePayloadsAndErrors","abrupt","actionUtil","assertNoErrorsInResponse","getFeature","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","t1","t0","t2","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","t5","t4","t6","t7","t3","t8","askAboutMissingActionOptions","t10","t9","t11","installOurFeature","t13","t12","t14","merge","t15","results","mergeActionResults","_toConsumableArray2","stop","execute","_x","Action","_this","actionExecuter","bind","_ref3","_callee2","_callee2$","_context2","_x2","exports"],"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 default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actions: 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.actions = 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: any) {\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 action = this.actions.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\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAD,sBAAA,CAAAF,OAAA;AAGA,IAAAI,OAAA,GAAAF,sBAAA,CAAAF,OAAA;AAEA,IAAAK,oBAAA,GAAAH,sBAAA,CAAAF,OAAA;AAAqD,SAAAM,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,aAAAP,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAkB,yBAAA,GAAAlB,MAAA,CAAAmB,gBAAA,CAAAT,MAAA,EAAAV,MAAA,CAAAkB,yBAAA,CAAAJ,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAoB,cAAA,CAAAV,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAAA,IAShCW,cAAc;EAQlC,SAAAA,eAAmBC,OAA8B,EAAE;IAAA,IAAAC,qBAAA;IAAA,IAAAC,gBAAA,mBAAAH,cAAA;IAAA,IAAAJ,gBAAA;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA;IAClD,IAAI,CAACQ,uBAAuB,GAAGH,OAAO,CAACG,uBAAuB;IAC9D,IAAI,CAACC,OAAO,GAAGJ,OAAO,CAACI,OAAO;IAC9B,IAAI,CAACC,EAAE,GAAGL,OAAO,CAACK,EAAE;IACpB,IAAI,CAACC,OAAO,GAAGN,OAAO,CAACO,aAAa;IACpC,IAAI,CAACC,4BAA4B,IAAAP,qBAAA,GAChCD,OAAO,CAACQ,4BAA4B,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IAE7C,IAAI,CAACQ,0BAA0B,GAAG,CAAC,CAACT,OAAO,CAACS,0BAA0B;EACvE;EAAC,IAAAC,aAAA,aAAAX,cAAA;IAAAL,GAAA;IAAAiB,KAAA,EAED,SAAAC,oBAAA,EAA8B;MAC7B,OAAO,IAAI,CAACT,uBAAuB,CAAC,CAAC;IACtC;EAAC;IAAAT,GAAA;IAAAiB,KAAA;MAAA,IAAAE,QAAA,OAAAC,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAED,SAAAC,QAAsBjB,OAMrB;QAAA,IAAAkB,cAAA,EAAAC,qBAAA,EAAAC,IAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,KAAA;QAAA,IAAAC,WAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAC,eAAA,EAAAC,aAAA,EAAAC,SAAA,EAAAC,WAAA,EAAAC,kBAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,MAAA,EAAAC,OAAA,EAAAC,KAAA,EAAAC,QAAA,EAAAC,cAAA,EAAAC,OAAA,EAAAC,sBAAA,EAAAC,iBAAA,EAAAC,cAAA,EAAAC,iBAAA,EAAAC,sBAAA,EAAAC,QAAA,EAAAC,gBAAA;QAAA,OAAA/B,YAAA,YAAAgC,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAEC3B,WAAW,GAKRxB,OAAO,CALVwB,WAAW,EACXC,UAAU,GAIPzB,OAAO,CAJVyB,UAAU,EACVC,MAAM,GAGH1B,OAAO,CAHV0B,MAAM,EACNC,eAAe,GAEZ3B,OAAO,CAFV2B,eAAe,EACNC,aAAa,GACnB5B,OAAO,CADVA,OAAO;cAGF6B,SAAS,GAAG,IAAI,CAACjB,mBAAmB,CAAC,CAAC;cAAAqC,QAAA,CAAAE,IAAA;cAAA,OAClBtB,SAAS,CAACC,WAAW,CAACN,WAAW,CAAC;YAAA;cAAtDM,WAAW,GAAAmB,QAAA,CAAAG,IAAA;cAAA,MAEb,CAACtB,WAAW,IAAI,CAAC,IAAI,CAACtB,4BAA4B;gBAAAyC,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAA,MAC/C,IAAIE,uBAAW,CAAC;gBACrBC,IAAI,EAAE,uBAAuB;gBAC7B9B,WAAW,EAAXA,WAAW;gBACX+B,eAAe,8BAAAC,MAAA,CAA+BhC,WAAW;cAC1D,CAAC,CAAC;YAAA;cAAAyB,QAAA,CAAAE,IAAA;cAAA,OAG8B,IAAI,CAAC/C,OAAO,CAACqD,IAAI,CAAC,sBAAsB,EAAE;gBAC1EjC,WAAW,EAAXA,WAAW;gBACXC,UAAU,EAAVA,UAAU;gBACVzB,OAAO,EAAE4B;cACV,CAAC,CAAC;YAAA;cAJIG,kBAAkB,GAAAkB,QAAA,CAAAG,IAAA;cAAApB,qBAAA,GAOvB0B,mCAAiB,CAACC,+BAA+B,CAChD5B,kBAAkB,EAClBsB,uBACD,CAAC,EAJgBpB,mBAAmB,GAAAD,qBAAA,CAA7Ba,QAAQ,EAAuBX,MAAM,GAAAF,qBAAA,CAANE,MAAM;cAAA,OAAAhB,cAAA,GAMzCgB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE3C,MAAM,cAAA2B,cAAA,cAAAA,cAAA,GAAI,CAAC,GAAG,CAAC;gBAAA+B,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAA,KACtB,IAAI,CAAC1C,0BAA0B;gBAAAwC,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAA,MAE5BjB,MAAM,CAAC,CAAC,CAAC;YAAA;cAAA,OAAAe,QAAA,CAAAW,MAAA,WAET;gBAAE1B,MAAM,EAANA;cAAO,CAAC;YAAA;cAGlB2B,kBAAU,CAACC,wBAAwB,CAAC/B,kBAAkB,CAAC;cAEjDI,OAAO,GAAGN,SAAS,CAACkC,UAAU,CAACvC,WAAW,CAAC;cAE3CY,KAAK,GAAG,IAAI4B,+BAAiB,CAAC;gBACnCC,gBAAgB,EAAEpC,SAAS;gBAC3BM,OAAO,EAAPA,OAAO;gBACPV,UAAU,EAAVA,UAAU;gBACVjB,4BAA4B,EAAE,IAAI,CAACA,4BAA4B;gBAC/DH,EAAE,EAAE,IAAI,CAACA;cACV,CAAC,CAAC;cAAA4C,QAAA,CAAAE,IAAA;cAAA,OAGMf,KAAK,CAAC8B,yCAAyC,CAAC,CAAC;YAAA;cAAAjB,QAAA,CAAAkB,EAAA,GAAAhD,qBAAA,GAAA8B,QAAA,CAAAG,IAAA;cAAAH,QAAA,CAAAmB,EAAA,GAAAnB,QAAA,CAAAkB,EAAA;cAAA,KAAAlB,QAAA,CAAAmB,EAAA;gBAAAnB,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAAmB,EAAA,GAAAjD,qBAAA;YAAA;cAAA,KAAA8B,QAAA,CAAAmB,EAAA;gBAAAnB,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAAoB,EAAA,GAAAlD,qBAAA;cAAA8B,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAAoB,EAAA,GAAK,CAAC,CAAC;YAAA;cAD5DhC,QAAQ,GAAAY,QAAA,CAAAoB,EAAA;cAAApB,QAAA,CAAAE,IAAA;cAAA,OAIJf,KAAK,CAACkC,oDAAoD,CAChExC,WAAW,EACXF,aACD,CAAC;YAAA;cAAAqB,QAAA,CAAAsB,EAAA,GAAAlD,qBAAA,GAAA4B,QAAA,CAAAG,IAAA;cAAAH,QAAA,CAAAuB,EAAA,GAAAvB,QAAA,CAAAsB,EAAA;cAAA,KAAAtB,QAAA,CAAAuB,EAAA;gBAAAvB,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAAuB,EAAA,GAAAnD,qBAAA;YAAA;cAAA,KAAA4B,QAAA,CAAAuB,EAAA;gBAAAvB,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAAwB,EAAA,GAAApD,qBAAA;cAAA4B,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAAwB,EAAA,GACD7C,aAAa;YAAA;cAAAqB,QAAA,CAAAyB,EAAA,GAAAtD,IAAA,GAAA6B,QAAA,CAAAwB,EAAA;cAAAxB,QAAA,CAAA0B,EAAA,GAAA1B,QAAA,CAAAyB,EAAA;cAAA,KAAAzB,QAAA,CAAA0B,EAAA;gBAAA1B,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAA0B,EAAA,GAAAvD,IAAA;YAAA;cAAA,KAAA6B,QAAA,CAAA0B,EAAA;gBAAA1B,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAA2B,EAAA,GAAAxD,IAAA;cAAA6B,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAA2B,EAAA,GACb,CAAC,CAAC;YAAA;cANGtC,cAAc,GAAAW,QAAA,CAAA2B,EAAA;cAAA3B,QAAA,CAAAE,IAAA;cAAA,OASZf,KAAK,CAACyC,4BAA4B,CAACnD,MAAM,EAAEY,cAAc,CAAC;YAAA;cAAAW,QAAA,CAAA6B,GAAA,GAAAxD,sBAAA,GAAA2B,QAAA,CAAAG,IAAA;cAAAH,QAAA,CAAA8B,EAAA,GAAA9B,QAAA,CAAA6B,GAAA;cAAA,KAAA7B,QAAA,CAAA8B,EAAA;gBAAA9B,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAA8B,EAAA,GAAAzD,sBAAA;YAAA;cAAA,KAAA2B,QAAA,CAAA8B,EAAA;gBAAA9B,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAA+B,GAAA,GAAA1D,sBAAA;cAAA2B,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAA+B,GAAA,GACjE1C,cAAc;YAAA;cAFXC,OAAO,GAAAU,QAAA,CAAA+B,GAAA;cAAA,IAINlD,WAAW;gBAAAmB,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAAE,IAAA;cAAA,OAEPf,KAAK,CAAC6C,iBAAiB,CAAC3C,cAAc,CAAC;YAAA;cAAAW,QAAA,CAAAiC,GAAA,GAAA1C,sBAAA,GAAAS,QAAA,CAAAG,IAAA;cAAAH,QAAA,CAAAkC,GAAA,GAAAlC,QAAA,CAAAiC,GAAA;cAAA,KAAAjC,QAAA,CAAAkC,GAAA;gBAAAlC,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAAkC,GAAA,GAAA3C,sBAAA;YAAA;cAAA,KAAAS,QAAA,CAAAkC,GAAA;gBAAAlC,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAAmC,GAAA,GAAA5C,sBAAA;cAAAS,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAAmC,GAAA,GAAK,CAAC,CAAC;YAAA;cADhD3C,iBAAiB,GAAAQ,QAAA,CAAAmC,GAAA;cAEvB/C,QAAQ,GAAG,IAAAgD,iBAAK,EAAChD,QAAQ,EAAEI,iBAAiB,CAAC;YAAA;cAG1CC,cAAqC,GAAG,CAAC,CAAC;cAAAO,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAE,IAAA;cAAA,OAGtBxB,eAAe,CAAAxC,aAAA,KAClCoD,OAAO,CACV,CAAC;YAAA;cAFFG,cAAc,GAAAO,QAAA,CAAAG,IAAA;cAAAH,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAqC,GAAA,GAAArC,QAAA;cAIdP,cAAc,CAACR,MAAM,GAAG,CAAAe,QAAA,CAAAqC,GAAA,CAAK;YAAA;cAG9BjD,QAAQ,GAAG,IAAAgD,iBAAK,EAAChD,QAAQ,EAAEK,cAAc,CAAC;cAAAO,QAAA,CAAAE,IAAA;cAAA,OAEV,IAAI,CAAC/C,OAAO,CAACqD,IAAI,CAAC,qBAAqB,EAAE;gBACxE8B,OAAO,EAAElD,QAAQ;gBACjBb,WAAW,EAAXA,WAAW;gBACXC,UAAU,EAAVA;cACD,CAAC,CAAC;YAAA;cAJIkB,iBAAiB,GAAAM,QAAA,CAAAG,IAAA;cAAAR,sBAAA,GAOtBc,mCAAiB,CAACC,+BAA+B,CAChDhB,iBAAiB,EACjBU,uBACD,CAAC,EAJMR,QAAQ,GAAAD,sBAAA,CAARC,QAAQ,EAAUC,gBAAgB,GAAAF,sBAAA,CAAxBV,MAAM;cAAA,OAAAX,KAAA,GAOtB,IAAI,CAACd,0BAA0B,KAAIqC,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEvD,MAAM,eAAAgC,KAAA,cAAAA,KAAA,GAC5D,CAAC,GAAG,CAAC;gBAAA0B,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAA,MAGCL,gBAAgB,CAAC,CAAC,CAAC;YAAA;cAG1BT,QAAQ,GAAGwB,kBAAU,CAAC2B,kBAAkB,CAAAtG,KAAA,CAA7B2E,kBAAU,GACpBxB,QAAQ,EAAAmB,MAAA,KAAAiC,mBAAA,aACLxD,mBAAmB,OAAAwD,mBAAA,aACnB5C,QAAQ,EACZ,CAAC;cAED,IAAIC,gBAAgB,EAAE;gBACrBT,QAAQ,GAAGwB,kBAAU,CAAC2B,kBAAkB,CAACnD,QAAQ,EAAE;kBAClDH,MAAM,EAAEY;gBACT,CAAC,CAAC;cACH;cAAC,OAAAG,QAAA,CAAAW,MAAA,WAEMvB,QAAQ;YAAA;YAAA;cAAA,OAAAY,QAAA,CAAAyC,IAAA;UAAA;QAAA,GAAAzE,OAAA;MAAA,CACf;MAAA,SAAA0E,QAAAC,EAAA;QAAA,OAAA/E,QAAA,CAAA3B,KAAA,OAAAI,SAAA;MAAA;MAAA,OAAAqG,OAAA;IAAA;EAAA;IAAAjG,GAAA;IAAAiB,KAAA,EAED,SAAAkF,OACCrE,WAAc,EACdC,UAAkB,EACF;MAAA,IAAAqE,KAAA;MAChB,IAAM7B,gBAAgB,GAAG,IAAI,CAACrD,mBAAmB,CAAC,CAAC;MAEnD,IAAMc,MAAM,GAAG,IAAI,CAACpB,OAAO,CAACuF,MAAM,CAAC;QAClCrE,WAAW,EAAXA,WAAW;QACXC,UAAU,EAAVA,UAAU;QACVsE,cAAc,EAAE,IAAI;QACpB9B,gBAAgB,EAAhBA;MACD,CAAC,CAAC;MAEF,IAAMtC,eAAe,GAAGD,MAAM,CAACiE,OAAO,CAACK,IAAI,CAACtE,MAAM,CAAC;MAEnDA,MAAM,CAACiE,OAAO;QAAA,IAAAM,KAAA,OAAAnF,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAkF,SAAOlG,OAAY;UAAA,OAAAe,YAAA,YAAAgC,IAAA,UAAAoD,UAAAC,SAAA;YAAA,kBAAAA,SAAA,CAAAlD,IAAA,GAAAkD,SAAA,CAAAjD,IAAA;cAAA;gBAAA,OAAAiD,SAAA,CAAAxC,MAAA,WAC5BkC,KAAI,CAACH,OAAO,CAAC;kBACnBnE,WAAW,EAAXA,WAAW;kBACXC,UAAU,EAAVA,UAAU;kBACVC,MAAM,EAANA,MAAM;kBACNC,eAAe,EAAfA,eAAe;kBACf3B,OAAO,EAAPA;gBACD,CAAC,CAAC;cAAA;cAAA;gBAAA,OAAAoG,SAAA,CAAAV,IAAA;YAAA;UAAA,GAAAQ,QAAA;QAAA,CACF;QAAA,iBAAAG,GAAA;UAAA,OAAAJ,KAAA,CAAA/G,KAAA,OAAAI,SAAA;QAAA;MAAA;MAED,OAAOoC,MAAM;IACd;EAAC;EAAA,OAAA3B,cAAA;AAAA;AAAAuG,OAAA,cAAAvG,cAAA"}