@sprucelabs/spruce-cli 15.2.24 → 15.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/build/.spruce/errors/errors.types.js.map +1 -1
  3. package/build/.spruce/errors/options.types.js.map +1 -1
  4. package/build/.spruce/errors/spruceCli/actionCancelled.schema.js.map +1 -1
  5. package/build/.spruce/errors/spruceCli/bootError.schema.js.map +1 -1
  6. package/build/.spruce/errors/spruceCli/buildFailed.schema.js.map +1 -1
  7. package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js.map +1 -1
  8. package/build/.spruce/errors/spruceCli/commandAborted.schema.js.map +1 -1
  9. package/build/.spruce/errors/spruceCli/commandBlocked.schema.js.map +1 -1
  10. package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js.map +1 -1
  11. package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js.map +1 -1
  12. package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -1
  13. package/build/.spruce/errors/spruceCli/deployFailed.schema.js.map +1 -1
  14. package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js.map +1 -1
  15. package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js.map +1 -1
  16. package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js.map +1 -1
  17. package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js.map +1 -1
  18. package/build/.spruce/errors/spruceCli/failedToImport.schema.js.map +1 -1
  19. package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js.map +1 -1
  20. package/build/.spruce/errors/spruceCli/fileExists.schema.js.map +1 -1
  21. package/build/.spruce/errors/spruceCli/generic.schema.js.map +1 -1
  22. package/build/.spruce/errors/spruceCli/invalidCommand.schema.js.map +1 -1
  23. package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js.map +1 -1
  24. package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js.map +1 -1
  25. package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js.map +1 -1
  26. package/build/.spruce/errors/spruceCli/lintFailed.schema.js.map +1 -1
  27. package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js.map +1 -1
  28. package/build/.spruce/errors/spruceCli/missingDependencies.schema.js.map +1 -1
  29. package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js.map +1 -1
  30. package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js.map +1 -1
  31. package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js.map +1 -1
  32. package/build/.spruce/errors/spruceCli/notImplemented.schema.js.map +1 -1
  33. package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js.map +1 -1
  34. package/build/.spruce/errors/spruceCli/schemaExists.schema.js.map +1 -1
  35. package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js.map +1 -1
  36. package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js.map +1 -1
  37. package/build/.spruce/errors/spruceCli/skillNotFound.schema.js.map +1 -1
  38. package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js.map +1 -1
  39. package/build/.spruce/errors/spruceCli/skillViewExists.schema.js.map +1 -1
  40. package/build/.spruce/errors/spruceCli/storeExists.schema.js.map +1 -1
  41. package/build/.spruce/errors/spruceCli/testFailed.schema.js.map +1 -1
  42. package/build/.spruce/errors/spruceCli/themeExists.schema.js.map +1 -1
  43. package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js.map +1 -1
  44. package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js.map +1 -1
  45. package/build/.spruce/events/events.contract.js.map +1 -1
  46. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
  47. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
  48. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
  49. package/build/.spruce/events/heartwood/listViews.v2021_02_11.contract.js.map +1 -1
  50. package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js.map +1 -1
  51. package/build/.spruce/schemas/fields/fieldClassMap.js.map +1 -1
  52. package/build/.spruce/schemas/fields/fields.types.js.map +1 -1
  53. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitPayload.schema.js.map +1 -1
  54. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTarget.schema.js.map +1 -1
  55. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  56. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitPayload.schema.js.map +1 -1
  57. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTarget.schema.js.map +1 -1
  58. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTargetAndPayload.schema.js.map +1 -1
  59. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlResponsePayload.schema.js.map +1 -1
  60. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  61. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsResponsePayload.schema.js.map +1 -1
  62. package/build/.spruce/schemas/heartwood/v2021_02_11/getViewControllersEmitTarget.schema.js.map +1 -1
  63. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResponsePayload.schema.js.map +1 -1
  64. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResult.schema.js.map +1 -1
  65. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitPayload.schema.js.map +1 -1
  66. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  67. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsResponsePayload.schema.js.map +1 -1
  68. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/theme.schema.js.map +1 -1
  69. package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/themeProps.schema.js.map +1 -1
  70. package/build/.spruce/schemas/schemas.types.js.map +1 -1
  71. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js.map +1 -1
  72. package/build/.spruce/schemas/spruce/v2020_07_22/location.schema.js.map +1 -1
  73. package/build/.spruce/schemas/spruce/v2020_07_22/message.schema.js.map +1 -1
  74. package/build/.spruce/schemas/spruce/v2020_07_22/messageSource.schema.js.map +1 -1
  75. package/build/.spruce/schemas/spruce/v2020_07_22/messageTarget.schema.js.map +1 -1
  76. package/build/.spruce/schemas/spruce/v2020_07_22/organization.schema.js.map +1 -1
  77. package/build/.spruce/schemas/spruce/v2020_07_22/person.schema.js.map +1 -1
  78. package/build/.spruce/schemas/spruce/v2020_07_22/personLocation.schema.js.map +1 -1
  79. package/build/.spruce/schemas/spruce/v2020_07_22/personOrganization.schema.js.map +1 -1
  80. package/build/.spruce/schemas/spruce/v2020_07_22/profileImage.schema.js.map +1 -1
  81. package/build/.spruce/schemas/spruce/v2020_07_22/role.schema.js.map +1 -1
  82. package/build/.spruce/schemas/spruce/v2020_07_22/sendMessage.schema.js.map +1 -1
  83. package/build/.spruce/schemas/spruce/v2020_07_22/skill.schema.js.map +1 -1
  84. package/build/.spruce/schemas/spruce/v2020_07_22/skillCreator.schema.js.map +1 -1
  85. package/build/.spruce/schemas/spruceCli/v2020_07_22/bootSkillOptions.schema.js.map +1 -1
  86. package/build/.spruce/schemas/spruceCli/v2020_07_22/createConversationTopicOptions.schema.js.map +1 -1
  87. package/build/.spruce/schemas/spruceCli/v2020_07_22/createErrorOptions.schema.js.map +1 -1
  88. package/build/.spruce/schemas/spruceCli/v2020_07_22/createOrganizationOptions.schema.js.map +1 -1
  89. package/build/.spruce/schemas/spruceCli/v2020_07_22/createSchemaOptions.schema.js.map +1 -1
  90. package/build/.spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema.js.map +1 -1
  91. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedDir.schema.js.map +1 -1
  92. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema.js.map +1 -1
  93. package/build/.spruce/schemas/spruceCli/v2020_07_22/installSkillAtOrganizationOptions.schema.js.map +1 -1
  94. package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js.map +1 -1
  95. package/build/.spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema.js.map +1 -1
  96. package/build/.spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema.js.map +1 -1
  97. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboardOptions.schema.js.map +1 -1
  98. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboarding.schema.js.map +1 -1
  99. package/build/.spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema.js.map +1 -1
  100. package/build/.spruce/schemas/spruceCli/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.schema.js.map +1 -1
  101. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupTestsOptions.schema.js.map +1 -1
  102. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema.js.map +1 -1
  103. package/build/.spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema.js.map +1 -1
  104. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncErrorOptions.schema.js.map +1 -1
  105. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema.js.map +1 -1
  106. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemaFieldsOptions.schema.js.map +1 -1
  107. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema.js.map +1 -1
  108. package/build/.spruce/schemas/spruceCli/v2020_07_22/testOptions.schema.js.map +1 -1
  109. package/build/.spruce/schemas/spruceCli/v2020_07_22/upgradeSkillOptions.schema.js.map +1 -1
  110. package/build/.spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema.js.map +1 -1
  111. package/build/.spruce/schemas/spruceEventUtils/v2021_09_13/eventSource.schema.js.map +1 -1
  112. package/build/.spruce/skill.types.js.map +1 -1
  113. package/build/GlobalEmitter.js.map +1 -1
  114. package/build/InFlightEntertainment.js.map +1 -1
  115. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
  116. package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
  117. package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
  118. package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
  119. package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
  120. package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +1 -1
  121. package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
  122. package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
  123. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  124. package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
  125. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  126. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -1
  127. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
  128. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
  129. package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
  130. package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
  131. package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
  132. package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
  133. package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
  134. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
  135. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  136. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  137. package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
  138. package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
  139. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  140. package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
  141. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
  142. package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +1 -1
  143. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  144. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  145. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  146. package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
  147. package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
  148. package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
  149. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  150. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  151. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  152. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  153. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  154. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  155. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
  156. package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
  157. package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
  158. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  159. package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
  160. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  161. package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
  162. package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
  163. package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
  164. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
  165. package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
  166. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  167. package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
  168. package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
  169. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
  170. package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
  171. package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
  172. package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
  173. package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
  174. package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
  175. package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
  176. package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
  177. package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
  178. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
  179. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  180. package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
  181. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.d.ts +1 -0
  182. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +20 -14
  183. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  184. package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
  185. package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
  186. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  187. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  188. package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
  189. package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
  190. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  191. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  192. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  193. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  194. package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
  195. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  196. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  197. package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
  198. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  199. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  200. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  201. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  202. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  203. package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
  204. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  205. package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
  206. package/build/__tests__/implementation/BuildService.test.js.map +1 -1
  207. package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
  208. package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
  209. package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
  210. package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
  211. package/build/__tests__/implementation/DataStoreStore.test.d.ts +1 -0
  212. package/build/__tests__/implementation/DataStoreStore.test.js +30 -3
  213. package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
  214. package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
  215. package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
  216. package/build/__tests__/implementation/EventStore.test.d.ts +1 -0
  217. package/build/__tests__/implementation/EventStore.test.js +61 -33
  218. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  219. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  220. package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
  221. package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
  222. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  223. package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
  224. package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
  225. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  226. package/build/__tests__/implementation/Introspection.test.js.map +1 -1
  227. package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
  228. package/build/__tests__/implementation/LintService.test.js.map +1 -1
  229. package/build/__tests__/implementation/ListenerStore.test.d.ts +4 -0
  230. package/build/__tests__/implementation/ListenerStore.test.js +56 -0
  231. package/build/__tests__/implementation/ListenerStore.test.js.map +1 -0
  232. package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
  233. package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
  234. package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
  235. package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
  236. package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
  237. package/build/__tests__/implementation/PkgService.test.js.map +1 -1
  238. package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
  239. package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
  240. package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
  241. package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
  242. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  243. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  244. package/build/__tests__/implementation/StoreFeature.test.js +1 -1
  245. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  246. package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
  247. package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
  248. package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
  249. package/build/__tests__/implementation/Widgets.test.js.map +1 -1
  250. package/build/__tests__/support/onTestFileResult.js.map +1 -1
  251. package/build/__tests__/support/scripts/first.script.js.map +1 -1
  252. package/build/__tests__/support/scripts/second.script.js.map +1 -1
  253. package/build/__tests__/support/scripts/third.test.script.js.map +1 -1
  254. package/build/addons/filePrompt.addon.js.map +1 -1
  255. package/build/cli.js.map +1 -1
  256. package/build/components/AbstractComponent.js.map +1 -1
  257. package/build/components/FormComponent.js.map +1 -1
  258. package/build/components/QuizComponent.js.map +1 -1
  259. package/build/constants.js.map +1 -1
  260. package/build/errors/SpruceError.js.map +1 -1
  261. package/build/errors/actionCancelled.builder.js.map +1 -1
  262. package/build/errors/bootError.builder.js.map +1 -1
  263. package/build/errors/buildFailed.builder.js.map +1 -1
  264. package/build/errors/cacheNotEnabled.builder.js.map +1 -1
  265. package/build/errors/commandAborted.builder.js.map +1 -1
  266. package/build/errors/commandBlocked.builder.js.map +1 -1
  267. package/build/errors/commandNotImplemented.builder.js.map +1 -1
  268. package/build/errors/createAutoloaderFailed.builder.js.map +1 -1
  269. package/build/errors/dependencyExists.builder.js.map +1 -1
  270. package/build/errors/deployFailed.builder.js.map +1 -1
  271. package/build/errors/directoryEmpty.builder.js.map +1 -1
  272. package/build/errors/directoryNotSkill.builder.js.map +1 -1
  273. package/build/errors/dockerNotStarted.builder.js.map +1 -1
  274. package/build/errors/executingCommandFailed.builder.js.map +1 -1
  275. package/build/errors/failedToImport.builder.js.map +1 -1
  276. package/build/errors/featureNotInstalled.builder.js.map +1 -1
  277. package/build/errors/fileExists.builder.js.map +1 -1
  278. package/build/errors/generic.builder.js.map +1 -1
  279. package/build/errors/invalidCommand.builder.js.map +1 -1
  280. package/build/errors/invalidEventContract.builder.js.map +1 -1
  281. package/build/errors/invalidFeatureCode.builder.js.map +1 -1
  282. package/build/errors/invalidTestDirectory.builder.js.map +1 -1
  283. package/build/errors/lintFailed.builder.js.map +1 -1
  284. package/build/errors/mercuryResponseError.builder.js.map +1 -1
  285. package/build/errors/missingDependencies.builder.js.map +1 -1
  286. package/build/errors/noOrganizationsFound.builder.js.map +1 -1
  287. package/build/errors/noSkillsRegistered.builder.js.map +1 -1
  288. package/build/errors/notImplemented.builder.js.map +1 -1
  289. package/build/errors/notLoggedIn.builder.js.map +1 -1
  290. package/build/errors/schemaExists.builder.js.map +1 -1
  291. package/build/errors/schemaFailedToImport.builder.js.map +1 -1
  292. package/build/errors/schemaTemplateItemBuildingFailed.builder.js.map +1 -1
  293. package/build/errors/skillNotFound.builder.js.map +1 -1
  294. package/build/errors/skillNotRegistered.builder.js.map +1 -1
  295. package/build/errors/skillViewExists.builder.js.map +1 -1
  296. package/build/errors/storeExists.builder.js.map +1 -1
  297. package/build/errors/testFailed.builder.js.map +1 -1
  298. package/build/errors/themeExists.builder.js.map +1 -1
  299. package/build/errors/transportAlreadyExists.builder.js.map +1 -1
  300. package/build/errors/vscodeNotInstalled.builder.js.map +1 -1
  301. package/build/features/AbstractAction.js.map +1 -1
  302. package/build/features/AbstractFeature.js.map +1 -1
  303. package/build/features/ActionExecuter.js.map +1 -1
  304. package/build/features/ActionFactory.js.map +1 -1
  305. package/build/features/ActionQuestionAsker.js.map +1 -1
  306. package/build/features/FeatureCommandAttacher.js.map +1 -1
  307. package/build/features/FeatureInstaller.js.map +1 -1
  308. package/build/features/FeatureInstallerFactory.js.map +1 -1
  309. package/build/features/OverrideActionDecorator.js.map +1 -1
  310. package/build/features/cache/CacheFeature.js.map +1 -1
  311. package/build/features/cache/actions/DisableAction.js.map +1 -1
  312. package/build/features/cache/actions/EnableAction.js.map +1 -1
  313. package/build/features/cache/constants.js.map +1 -1
  314. package/build/features/conversation/ConversationFeature.js.map +1 -1
  315. package/build/features/conversation/actions/CreateAction.js.map +1 -1
  316. package/build/features/conversation/actions/TestAction.js.map +1 -1
  317. package/build/features/conversation/stores/ConversationStore.js.map +1 -1
  318. package/build/features/conversation/writers/ConversationWriter.js.map +1 -1
  319. package/build/features/dependencies/DependencyFeature.js.map +1 -1
  320. package/build/features/dependencies/actions/AddAction.js.map +1 -1
  321. package/build/features/dependencies/actions/ManageAction.js.map +1 -1
  322. package/build/features/deploy/DeployFeature.js.map +1 -1
  323. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  324. package/build/features/deploy/writers/DeployWriter.js.map +1 -1
  325. package/build/features/error/ErrorFeature.js.map +1 -1
  326. package/build/features/error/ParentTestFinder.js.map +1 -1
  327. package/build/features/error/actions/CreateAction.js.map +1 -1
  328. package/build/features/error/actions/SyncAction.js.map +1 -1
  329. package/build/features/error/writers/ErrorWriter.js.map +1 -1
  330. package/build/features/event/EventFeature.js.map +1 -1
  331. package/build/features/event/actions/CreateAction.js.map +1 -1
  332. package/build/features/event/actions/ListenAction.js.map +1 -1
  333. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  334. package/build/features/event/actions/SyncAction.js.map +1 -1
  335. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  336. package/build/features/event/builders/EventContractBuilder.js.map +1 -1
  337. package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -1
  338. package/build/features/event/services/EventSettingsService.js.map +1 -1
  339. package/build/features/event/services/RemoteService.js.map +1 -1
  340. package/build/features/event/stores/EventStore.d.ts +1 -0
  341. package/build/features/event/stores/EventStore.js +6 -1
  342. package/build/features/event/stores/EventStore.js.map +1 -1
  343. package/build/features/event/stores/ListenerStore.d.ts +1 -0
  344. package/build/features/event/stores/ListenerStore.js +6 -1
  345. package/build/features/event/stores/ListenerStore.js.map +1 -1
  346. package/build/features/event/writers/EventWriter.js +1 -1
  347. package/build/features/event/writers/EventWriter.js.map +1 -1
  348. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  349. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  350. package/build/features/feature.utilities.js.map +1 -1
  351. package/build/features/features.types.js.map +1 -1
  352. package/build/features/log/LogFeature.js.map +1 -1
  353. package/build/features/log/actions/CreateTransportAction.js.map +1 -1
  354. package/build/features/log/writers/LogWriter.js.map +1 -1
  355. package/build/features/node/NodeFeature.js.map +1 -1
  356. package/build/features/node/actions/CreateAction.js.map +1 -1
  357. package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
  358. package/build/features/node/actions/UpgradeAction.js.map +1 -1
  359. package/build/features/node/writers/NodeWriter.js.map +1 -1
  360. package/build/features/onboard/OnboardFeature.js.map +1 -1
  361. package/build/features/onboard/ScriptLoader.js.map +1 -1
  362. package/build/features/onboard/ScriptPlayer.js.map +1 -1
  363. package/build/features/onboard/actions/OnboardAction.js.map +1 -1
  364. package/build/features/onboard/scripts/onboarding.first.script.js.map +1 -1
  365. package/build/features/onboard/scripts/onboarding.immersive.script.js.map +1 -1
  366. package/build/features/onboard/scripts/onboarding.returning.script.js.map +1 -1
  367. package/build/features/onboard/scripts/onboarding.short.script.js.map +1 -1
  368. package/build/features/onboard/scripts/todo/todo.create.skill.script.js.map +1 -1
  369. package/build/features/onboard/scripts/todo/todo.test.script.js.map +1 -1
  370. package/build/features/onboard/scripts/wrongCommand.script.js.map +1 -1
  371. package/build/features/onboard/stores/OnboardingStore.js.map +1 -1
  372. package/build/features/organization/OrganizationFeature.js.map +1 -1
  373. package/build/features/organization/actions/CreateAction.js.map +1 -1
  374. package/build/features/organization/actions/InstallAction.js.map +1 -1
  375. package/build/features/organization/stores/OrganizationStore.js.map +1 -1
  376. package/build/features/person/PersonFeature.js.map +1 -1
  377. package/build/features/person/actions/LoginAction.js.map +1 -1
  378. package/build/features/person/actions/LogoutAction.js.map +1 -1
  379. package/build/features/person/actions/WhoamiAction.js.map +1 -1
  380. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  381. package/build/features/sandbox/actions/SetupAction.js.map +1 -1
  382. package/build/features/sandbox/writers/SandboxWriter.js.map +1 -1
  383. package/build/features/schema/SchemaFeature.js.map +1 -1
  384. package/build/features/schema/ValueTypeBuilder.js.map +1 -1
  385. package/build/features/schema/actions/CreateAction.js.map +1 -1
  386. package/build/features/schema/actions/SyncAction.js.map +1 -1
  387. package/build/features/schema/actions/SyncFieldsAction.js.map +1 -1
  388. package/build/features/schema/services/SchemaService.js.map +1 -1
  389. package/build/features/schema/stores/SchemaStore.js.map +1 -1
  390. package/build/features/schema/utilities/schema.utility.js.map +1 -1
  391. package/build/features/schema/utilities/schemaDisk.utility.js.map +1 -1
  392. package/build/features/schema/utilities/schemaGenerator.utility.js.map +1 -1
  393. package/build/features/schema/writers/SchemaWriter.js +1 -1
  394. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  395. package/build/features/skill/SkillFeature.js.map +1 -1
  396. package/build/features/skill/actions/BootAction.js.map +1 -1
  397. package/build/features/skill/actions/CreateAction.js.map +1 -1
  398. package/build/features/skill/actions/DashboardAction.js.map +1 -1
  399. package/build/features/skill/actions/LoginAction.js.map +1 -1
  400. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  401. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  402. package/build/features/skill/stores/SkillStore.js.map +1 -1
  403. package/build/features/skill/updaters/Updater.js.map +1 -1
  404. package/build/features/skill/writers/SkillWriter.js.map +1 -1
  405. package/build/features/store/StoreFeature.js +1 -1
  406. package/build/features/store/StoreFeature.js.map +1 -1
  407. package/build/features/store/actions/CreateAction.js.map +1 -1
  408. package/build/features/store/actions/SyncAction.js.map +1 -1
  409. package/build/features/store/stores/StoreStore.d.ts +1 -0
  410. package/build/features/store/stores/StoreStore.js +6 -1
  411. package/build/features/store/stores/StoreStore.js.map +1 -1
  412. package/build/features/store/templateItemBuilders/StoreTemplateItemBuilder.js.map +1 -1
  413. package/build/features/store/writers/StoreWriter.js.map +1 -1
  414. package/build/features/test/TestFeature.js.map +1 -1
  415. package/build/features/test/TestLogItemGenerator.js.map +1 -1
  416. package/build/features/test/TestReporter.js.map +1 -1
  417. package/build/features/test/TestRunner.js.map +1 -1
  418. package/build/features/test/actions/CreateAction.js +1 -1
  419. package/build/features/test/actions/CreateAction.js.map +1 -1
  420. package/build/features/test/actions/SetupAction.js.map +1 -1
  421. package/build/features/test/actions/TestAction.js.map +1 -1
  422. package/build/features/test/test.types.js.map +1 -1
  423. package/build/features/test/writers/TestWriter.js.map +1 -1
  424. package/build/features/universalDevDependencies.js.map +1 -1
  425. package/build/features/universalFileDescriptions.js.map +1 -1
  426. package/build/features/universalScripts.js.map +1 -1
  427. package/build/features/validateAndNormalize.utility.d.ts +2 -2
  428. package/build/features/validateAndNormalize.utility.js +2 -2
  429. package/build/features/validateAndNormalize.utility.js.map +1 -1
  430. package/build/features/view/ViewFeature.js.map +1 -1
  431. package/build/features/view/actions/CreateAction.js.map +1 -1
  432. package/build/features/view/actions/CreateThemeAction.js.map +1 -1
  433. package/build/features/view/actions/SyncAction.js.map +1 -1
  434. package/build/features/view/actions/WatchAction.js.map +1 -1
  435. package/build/features/view/stores/ViewStore.js.map +1 -1
  436. package/build/features/view/writers/ViewWriter.js +1 -3
  437. package/build/features/view/writers/ViewWriter.js.map +1 -1
  438. package/build/features/vscode/VsCodeFeature.js.map +1 -1
  439. package/build/features/vscode/actions/SetupAction.js.map +1 -1
  440. package/build/features/vscode/services/VsCodeService.js.map +1 -1
  441. package/build/features/vscode/writers/VsCodeWriter.js.map +1 -1
  442. package/build/features/watch/WatchFeature.js.map +1 -1
  443. package/build/index.js.map +1 -1
  444. package/build/interfaces/SpyInterface.js.map +1 -1
  445. package/build/interfaces/TerminalInterface.js.map +1 -1
  446. package/build/schemas/v2020_07_22/bootSkillOptions.builder.js.map +1 -1
  447. package/build/schemas/v2020_07_22/createConversationTopicOptions.builder.js.map +1 -1
  448. package/build/schemas/v2020_07_22/createErrorOptions.builder.js.map +1 -1
  449. package/build/schemas/v2020_07_22/createOrganizationOptions.builder.js.map +1 -1
  450. package/build/schemas/v2020_07_22/createSchemaOptions.builder.js.map +1 -1
  451. package/build/schemas/v2020_07_22/createTestOptions.builder.js.map +1 -1
  452. package/build/schemas/v2020_07_22/installSkillAtOrganizationOptions.builder.js.map +1 -1
  453. package/build/schemas/v2020_07_22/listenEventOptions.builder.js.map +1 -1
  454. package/build/schemas/v2020_07_22/namedTemplateItem.builder.js.map +1 -1
  455. package/build/schemas/v2020_07_22/nodeFeatureOptions.builder.js.map +1 -1
  456. package/build/schemas/v2020_07_22/onboardOptions.builder.js.map +1 -1
  457. package/build/schemas/v2020_07_22/onboarding.builder.js.map +1 -1
  458. package/build/schemas/v2020_07_22/personWithToken.builder.js.map +1 -1
  459. package/build/schemas/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.builder.js.map +1 -1
  460. package/build/schemas/v2020_07_22/setupTestsOptions.builder.js.map +1 -1
  461. package/build/schemas/v2020_07_22/setupVscodeOptions.builder.js.map +1 -1
  462. package/build/schemas/v2020_07_22/skillFeature.builder.js.map +1 -1
  463. package/build/schemas/v2020_07_22/syncErrorOptions.builder.js.map +1 -1
  464. package/build/schemas/v2020_07_22/syncEventOptions.builder.js.map +1 -1
  465. package/build/schemas/v2020_07_22/syncSchemaFieldsOptions.builder.js.map +1 -1
  466. package/build/schemas/v2020_07_22/syncSchemasOptions.builder.js.map +1 -1
  467. package/build/schemas/v2020_07_22/testOptions.builder.js.map +1 -1
  468. package/build/schemas/v2020_07_22/upgradeSkillOptions.builder.js.map +1 -1
  469. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
  470. package/build/services/BuildService.js.map +1 -1
  471. package/build/services/CommandService.js.map +1 -1
  472. package/build/services/DependencyService.js.map +1 -1
  473. package/build/services/GameService.js.map +1 -1
  474. package/build/services/ImportService.js.map +1 -1
  475. package/build/services/LintService.js.map +1 -1
  476. package/build/services/PkgService.js.map +1 -1
  477. package/build/services/ServiceFactory.js.map +1 -1
  478. package/build/services/TypeCheckerService.js.map +1 -1
  479. package/build/stores/AbstractLocalStore.js.map +1 -1
  480. package/build/stores/AbstractStore.js.map +1 -1
  481. package/build/stores/StoreFactory.js.map +1 -1
  482. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  483. package/build/templateItemBuilders/FieldTemplateItemBuilder.js.map +1 -1
  484. package/build/templateItemBuilders/SchemaTemplateItemBuilder.js.map +1 -1
  485. package/build/tests/AbstractCliTest.js.map +1 -1
  486. package/build/tests/AbstractErrorTest.js.map +1 -1
  487. package/build/tests/AbstractEventTest.js.map +1 -1
  488. package/build/tests/AbstractSchemaTest.js.map +1 -1
  489. package/build/tests/AbstractSkillTest.js.map +1 -1
  490. package/build/tests/AbstractTestTest.js.map +1 -1
  491. package/build/tests/CommandFaker.d.ts +2 -1
  492. package/build/tests/CommandFaker.js +13 -7
  493. package/build/tests/CommandFaker.js.map +1 -1
  494. package/build/tests/JestJsonParser.js.map +1 -1
  495. package/build/tests/MockProgramFactory.js.map +1 -1
  496. package/build/tests/buildTestCache.js.map +1 -1
  497. package/build/tests/cleanTestCache.js.map +1 -1
  498. package/build/tests/cleanTestData.js.map +1 -1
  499. package/build/tests/constants.js.map +1 -1
  500. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  501. package/build/tests/fixtures/MercuryFixture.js.map +1 -1
  502. package/build/tests/fixtures/OrganizationFixture.js.map +1 -1
  503. package/build/tests/fixtures/PersonFixture.js.map +1 -1
  504. package/build/tests/fixtures/SkillFixture.js.map +1 -1
  505. package/build/tests/fixtures/ViewFixture.js.map +1 -1
  506. package/build/tests/utilities/test.utility.js.map +1 -1
  507. package/build/tests/utilities/uiAssert.utility.js.map +1 -1
  508. package/build/types/apiClient.types.js.map +1 -1
  509. package/build/types/cli.types.js.map +1 -1
  510. package/build/types/graphicsInterface.types.js.map +1 -1
  511. package/build/updaters/ScriptUpdater.js.map +1 -1
  512. package/build/utilities/action.utility.js.map +1 -1
  513. package/build/utilities/apiClient.utility.js.map +1 -1
  514. package/build/utilities/argParser.utility.js.map +1 -1
  515. package/build/utilities/commander.utility.js.map +1 -1
  516. package/build/utilities/duration.utility.js.map +1 -1
  517. package/build/utilities/eventContractCleaner.utility.js.map +1 -1
  518. package/build/utilities/form.utility.js.map +1 -1
  519. package/build/utilities/introspection.utility.js.map +1 -1
  520. package/build/utilities/isCi.js.map +1 -1
  521. package/build/utilities/tsConfig.utility.js.map +1 -1
  522. package/build/utilities/ui.utility.js.map +1 -1
  523. package/build/widgets/Theme.js.map +1 -1
  524. package/build/widgets/WidgetFactory.js.map +1 -1
  525. package/build/widgets/keySelectChoices.js.map +1 -1
  526. package/build/widgets/terminalKit/TKButtonWidget.js.map +1 -1
  527. package/build/widgets/terminalKit/TkBaseWidget.js.map +1 -1
  528. package/build/widgets/terminalKit/TkInputWidget.js.map +1 -1
  529. package/build/widgets/terminalKit/TkLayoutCellWidget.js.map +1 -1
  530. package/build/widgets/terminalKit/TkLayoutWidget.js.map +1 -1
  531. package/build/widgets/terminalKit/TkMenuBarWidget.js.map +1 -1
  532. package/build/widgets/terminalKit/TkPopupWidget.js.map +1 -1
  533. package/build/widgets/terminalKit/TkProgressBarWidget.js.map +1 -1
  534. package/build/widgets/terminalKit/TkTextWidget.js.map +1 -1
  535. package/build/widgets/terminalKit/TkWindowWidget.js.map +1 -1
  536. package/build/widgets/terminalKit/termKit.utility.js.map +1 -1
  537. package/build/widgets/types/button.types.js.map +1 -1
  538. package/build/widgets/types/factory.types.js.map +1 -1
  539. package/build/widgets/types/input.types.js.map +1 -1
  540. package/build/widgets/types/layout.types.js.map +1 -1
  541. package/build/widgets/types/menuBar.types.js.map +1 -1
  542. package/build/widgets/types/popup.types.js.map +1 -1
  543. package/build/widgets/types/progressBar.types.js.map +1 -1
  544. package/build/widgets/types/table.types.js.map +1 -1
  545. package/build/widgets/types/text.types.js.map +1 -1
  546. package/build/widgets/types/widgets.types.js.map +1 -1
  547. package/build/widgets/types/window.types.js.map +1 -1
  548. package/build/widgets/widget.utilities.js.map +1 -1
  549. package/build/writers/AbstractWriter.js.map +1 -1
  550. package/build/writers/WriterFactory.js.map +1 -1
  551. package/package.json +36 -36
  552. package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +21 -7
  553. package/src/__tests__/implementation/DataStoreStore.test.ts +8 -0
  554. package/src/__tests__/implementation/EventStore.test.ts +14 -0
  555. package/src/__tests__/implementation/ListenerStore.test.ts +14 -0
  556. package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
  557. package/src/features/AbstractAction.ts +2 -2
  558. package/src/features/event/builders/EventContractBuilder.ts +2 -2
  559. package/src/features/event/stores/EventStore.ts +11 -8
  560. package/src/features/event/stores/ListenerStore.ts +5 -3
  561. package/src/features/event/writers/EventWriter.ts +1 -1
  562. package/src/features/schema/writers/SchemaWriter.ts +1 -1
  563. package/src/features/store/StoreFeature.ts +1 -1
  564. package/src/features/store/stores/StoreStore.ts +5 -1
  565. package/src/features/test/actions/CreateAction.ts +1 -1
  566. package/src/features/validateAndNormalize.utility.ts +2 -2
  567. package/src/features/view/writers/ViewWriter.ts +3 -2
  568. package/src/tests/CommandFaker.ts +9 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/test/actions/CreateAction.ts"],"names":["CreateAction","createTestActionSchema","options","normalizedOptions","validateAndNormalizeOptions","testDestinationDir","namePascal","nameCamel","type","resolvedDestination","diskUtil","resolvePath","cwd","ui","startLoading","testFeature","parent","stopLoading","buildParentClassCandidates","candidates","doesDirExist","promptForSubDir","length","promptForParentTestClassAndOptionallyInstallDependencies","parentTestClass","writer","Writer","generateTest","namesUtil","toPascal","results","files","hints","subdirs","readDir","filter","d","isDir","prompt","label","isRequired","choices","value","map","dir","match","candidate","idx","optionallyInstallFeatureBasedOnSelection","buildParentClassFromCandidate","featureCode","featureInstaller","isInstalled","name","install","features","code","isDefaultExport","importPath","pathUtil","relative","path","replace","extname","AbstractAction"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport createTestActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport TestFeature, { ParentClassCandidate } from '../TestFeature'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.CreateTestOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.CreateTestOptions\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = createTestActionSchema\n\tpublic invocationMessage = 'Creating a test... 🛡'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\t\tconst { testDestinationDir, namePascal, nameCamel, type } =\n\t\t\tnormalizedOptions\n\n\t\tlet resolvedDestination = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\ttestDestinationDir,\n\t\t\ttype\n\t\t)\n\n\t\tthis.ui.startLoading('Checking potential parent test classes')\n\n\t\tconst testFeature = this.parent as TestFeature\n\n\t\tthis.ui.stopLoading()\n\n\t\tlet parentTestClass:\n\t\t\t| undefined\n\t\t\t| { name: string; importPath: string; isDefaultExport: boolean }\n\n\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\tif (diskUtil.doesDirExist(resolvedDestination)) {\n\t\t\tresolvedDestination = await this.promptForSubDir(\n\t\t\t\tresolvedDestination,\n\t\t\t\ttype\n\t\t\t)\n\t\t}\n\n\t\tif (candidates.length > 0) {\n\t\t\tparentTestClass =\n\t\t\t\tawait this.promptForParentTestClassAndOptionallyInstallDependencies(\n\t\t\t\t\tcandidates,\n\t\t\t\t\tparentTestClass,\n\t\t\t\t\tresolvedDestination\n\t\t\t\t)\n\t\t}\n\n\t\tthis.ui.startLoading('Generating test file...')\n\n\t\tconst writer = this.Writer('test')\n\n\t\tconst results = await writer.generateTest(resolvedDestination, {\n\t\t\t...normalizedOptions,\n\t\t\ttype,\n\t\t\tnameCamel,\n\t\t\tparentTestClass,\n\t\t\tnamePascal: namePascal ?? namesUtil.toPascal(nameCamel),\n\t\t})\n\n\t\treturn {\n\t\t\tfiles: results,\n\t\t\thints: [\"run `spruce test` in your skill when you're ready!\"],\n\t\t}\n\t}\n\tprivate async promptForSubDir(resolvedDestination: string, type: string) {\n\t\tconst subdirs = diskUtil\n\t\t\t.readDir(resolvedDestination)\n\t\t\t.filter((d) =>\n\t\t\t\tdiskUtil.isDir(diskUtil.resolvePath(resolvedDestination, d))\n\t\t\t)\n\n\t\tif (subdirs.length > 0) {\n\t\t\tconst match = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Where should I write this test?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: '.',\n\t\t\t\t\t\t\tlabel: `${type}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...subdirs.map((dir) => ({\n\t\t\t\t\t\t\tvalue: `${dir}`,\n\t\t\t\t\t\t\tlabel: `${type}/${dir}`,\n\t\t\t\t\t\t})),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tresolvedDestination = diskUtil.resolvePath(resolvedDestination, match)\n\t\t}\n\t\treturn resolvedDestination\n\t}\n\n\tprivate async promptForParentTestClassAndOptionallyInstallDependencies(\n\t\tcandidates: ParentClassCandidate[],\n\t\tparentTestClass:\n\t\t\t| { name: string; importPath: string; isDefaultExport: boolean }\n\t\t\t| undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tconst idx = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\tlabel: 'Which abstract test class do you want to extend?',\n\t\t\toptions: {\n\t\t\t\tchoices: [\n\t\t\t\t\t{ value: '', label: 'AbstractSpruceTest (default)' },\n\t\t\t\t\t...candidates.map((candidate, idx) => ({\n\t\t\t\t\t\tvalue: `${idx}`,\n\t\t\t\t\t\tlabel: candidate.label,\n\t\t\t\t\t})),\n\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tif (idx !== '' && candidates[+idx]) {\n\t\t\tconst match = candidates[+idx]\n\n\t\t\tif (match) {\n\t\t\t\tawait this.optionallyInstallFeatureBasedOnSelection(match)\n\n\t\t\t\tparentTestClass = this.buildParentClassFromCandidate(\n\t\t\t\t\tmatch,\n\t\t\t\t\tresolvedDestination\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\treturn parentTestClass\n\t}\n\n\tprivate async optionallyInstallFeatureBasedOnSelection(\n\t\tmatch: ParentClassCandidate\n\t) {\n\t\tif (match.featureCode) {\n\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\tmatch.featureCode\n\t\t\t)\n\n\t\t\tif (!isInstalled) {\n\t\t\t\tthis.ui.startLoading(`Installing ${match.name}...`)\n\t\t\t\tawait this.featureInstaller.install({\n\t\t\t\t\tfeatures: [{ code: match.featureCode as any }],\n\t\t\t\t})\n\t\t\t\tthis.ui.stopLoading()\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate buildParentClassFromCandidate(\n\t\tmatch: ParentClassCandidate,\n\t\tresolvedDestination: string\n\t): {\n\t\tname: string\n\t\tlabel: string\n\t\timportPath: string\n\t\tisDefaultExport: boolean\n\t} {\n\t\treturn {\n\t\t\tname: match.name,\n\t\t\tlabel: match.label,\n\t\t\tisDefaultExport: match.isDefaultExport,\n\t\t\timportPath:\n\t\t\t\tmatch.import ??\n\t\t\t\tpathUtil.relative(\n\t\t\t\t\tresolvedDestination,\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tmatch.path.replace(pathUtil.extname(match.path), '')\n\t\t\t\t),\n\t\t}\n\t}\n}\n"],"file":"CreateAction.js"}
1
+ {"version":3,"file":"CreateAction.js","names":["CreateAction","createTestActionSchema","options","normalizedOptions","validateAndNormalizeOptions","testDestinationDir","namePascal","nameCamel","type","resolvedDestination","diskUtil","resolvePath","cwd","ui","startLoading","testFeature","parent","stopLoading","buildParentClassCandidates","candidates","doesDirExist","promptForSubDir","length","promptForParentTestClassAndOptionallyInstallDependencies","parentTestClass","writer","Writer","generateTest","namesUtil","toPascal","results","files","hints","subdirs","readDir","filter","d","isDir","prompt","label","isRequired","choices","value","map","dir","match","candidate","idx","optionallyInstallFeatureBasedOnSelection","buildParentClassFromCandidate","featureCode","featureInstaller","isInstalled","name","install","features","code","isDefaultExport","importPath","resolveRelativePath","path","replace","pathUtil","extname","AbstractAction"],"sources":["../../../../src/features/test/actions/CreateAction.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport createTestActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport TestFeature, { ParentClassCandidate } from '../TestFeature'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.CreateTestOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.CreateTestOptions\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = createTestActionSchema\n\tpublic invocationMessage = 'Creating a test... 🛡'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\t\tconst { testDestinationDir, namePascal, nameCamel, type } =\n\t\t\tnormalizedOptions\n\n\t\tlet resolvedDestination = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\ttestDestinationDir,\n\t\t\ttype\n\t\t)\n\n\t\tthis.ui.startLoading('Checking potential parent test classes')\n\n\t\tconst testFeature = this.parent as TestFeature\n\n\t\tthis.ui.stopLoading()\n\n\t\tlet parentTestClass:\n\t\t\t| undefined\n\t\t\t| { name: string; importPath: string; isDefaultExport: boolean }\n\n\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\tif (diskUtil.doesDirExist(resolvedDestination)) {\n\t\t\tresolvedDestination = await this.promptForSubDir(\n\t\t\t\tresolvedDestination,\n\t\t\t\ttype\n\t\t\t)\n\t\t}\n\n\t\tif (candidates.length > 0) {\n\t\t\tparentTestClass =\n\t\t\t\tawait this.promptForParentTestClassAndOptionallyInstallDependencies(\n\t\t\t\t\tcandidates,\n\t\t\t\t\tparentTestClass,\n\t\t\t\t\tresolvedDestination\n\t\t\t\t)\n\t\t}\n\n\t\tthis.ui.startLoading('Generating test file...')\n\n\t\tconst writer = this.Writer('test')\n\n\t\tconst results = await writer.generateTest(resolvedDestination, {\n\t\t\t...normalizedOptions,\n\t\t\ttype,\n\t\t\tnameCamel,\n\t\t\tparentTestClass,\n\t\t\tnamePascal: namePascal ?? namesUtil.toPascal(nameCamel),\n\t\t})\n\n\t\treturn {\n\t\t\tfiles: results,\n\t\t\thints: [\"run `spruce test` in your skill when you're ready!\"],\n\t\t}\n\t}\n\tprivate async promptForSubDir(resolvedDestination: string, type: string) {\n\t\tconst subdirs = diskUtil\n\t\t\t.readDir(resolvedDestination)\n\t\t\t.filter((d) =>\n\t\t\t\tdiskUtil.isDir(diskUtil.resolvePath(resolvedDestination, d))\n\t\t\t)\n\n\t\tif (subdirs.length > 0) {\n\t\t\tconst match = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Where should I write this test?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: '.',\n\t\t\t\t\t\t\tlabel: `${type}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...subdirs.map((dir) => ({\n\t\t\t\t\t\t\tvalue: `${dir}`,\n\t\t\t\t\t\t\tlabel: `${type}/${dir}`,\n\t\t\t\t\t\t})),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tresolvedDestination = diskUtil.resolvePath(resolvedDestination, match)\n\t\t}\n\t\treturn resolvedDestination\n\t}\n\n\tprivate async promptForParentTestClassAndOptionallyInstallDependencies(\n\t\tcandidates: ParentClassCandidate[],\n\t\tparentTestClass:\n\t\t\t| { name: string; importPath: string; isDefaultExport: boolean }\n\t\t\t| undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tconst idx = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\tlabel: 'Which abstract test class do you want to extend?',\n\t\t\toptions: {\n\t\t\t\tchoices: [\n\t\t\t\t\t{ value: '', label: 'AbstractSpruceTest (default)' },\n\t\t\t\t\t...candidates.map((candidate, idx) => ({\n\t\t\t\t\t\tvalue: `${idx}`,\n\t\t\t\t\t\tlabel: candidate.label,\n\t\t\t\t\t})),\n\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tif (idx !== '' && candidates[+idx]) {\n\t\t\tconst match = candidates[+idx]\n\n\t\t\tif (match) {\n\t\t\t\tawait this.optionallyInstallFeatureBasedOnSelection(match)\n\n\t\t\t\tparentTestClass = this.buildParentClassFromCandidate(\n\t\t\t\t\tmatch,\n\t\t\t\t\tresolvedDestination\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\treturn parentTestClass\n\t}\n\n\tprivate async optionallyInstallFeatureBasedOnSelection(\n\t\tmatch: ParentClassCandidate\n\t) {\n\t\tif (match.featureCode) {\n\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\tmatch.featureCode\n\t\t\t)\n\n\t\t\tif (!isInstalled) {\n\t\t\t\tthis.ui.startLoading(`Installing ${match.name}...`)\n\t\t\t\tawait this.featureInstaller.install({\n\t\t\t\t\tfeatures: [{ code: match.featureCode as any }],\n\t\t\t\t})\n\t\t\t\tthis.ui.stopLoading()\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate buildParentClassFromCandidate(\n\t\tmatch: ParentClassCandidate,\n\t\tresolvedDestination: string\n\t): {\n\t\tname: string\n\t\tlabel: string\n\t\timportPath: string\n\t\tisDefaultExport: boolean\n\t} {\n\t\treturn {\n\t\t\tname: match.name,\n\t\t\tlabel: match.label,\n\t\t\tisDefaultExport: match.isDefaultExport,\n\t\t\timportPath:\n\t\t\t\tmatch.import ??\n\t\t\t\tdiskUtil.resolveRelativePath(\n\t\t\t\t\tresolvedDestination,\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tmatch.path.replace(pathUtil.extname(match.path), '')\n\t\t\t\t),\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/test/actions/SetupAction.ts"],"names":["SetupAction","setupTestsOptionsSchema","options","normalizedOptions","validateAndNormalizeOptions","demoNumber","skillSlug","Action","execute","phone","pin","substr","length","loginResponse","nameReadable","nameKebab","registerResponse","err","errors","isDuplicateSlugError","responseErrors","code","loginAsSkillResponse","actionUtil","mergeActionResults","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;;;;;IAMqBA,W;;;;;;;;;;;;;;;sGACGC,6B;uGACC,CAAC,eAAD,C;0GACG,8B;;;;;;;mGAE3B,iBAAqBC,OAArB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AACOC,gBAAAA,iBADP,GAC2B,KAAKC,2BAAL,CAAiCF,OAAjC,CAD3B;AAESG,gBAAAA,UAFT,GAEmCF,iBAFnC,CAESE,UAFT,EAEqBC,SAFrB,GAEmCH,iBAFnC,CAEqBG,SAFrB;AAAA;AAAA,uBAI6B,KAAKC,MAAL,CAAY,QAAZ,EAAsB,OAAtB,EAA+BC,OAA/B,CAAuC;AAClEC,kBAAAA,KAAK,EAAEJ,UAD2D;AAElEK,kBAAAA,GAAG,EAAEL,UAAU,CAACM,MAAX,CAAkBN,UAAU,CAACO,MAAX,GAAoB,CAAtC;AAF6D,iBAAvC,CAJ7B;;AAAA;AAIOC,gBAAAA,aAJP;AAAA;AAAA,uBASgC,KAAKN,MAAL,CAAY,OAAZ,EAAqB,UAArB,EAAiCC,OAAjC,CAAyC;AACvEM,kBAAAA,YAAY,EAAER,SADyD;AAEvES,kBAAAA,SAAS,EAAET;AAF4D,iBAAzC,CAThC;;AAAA;AASOU,gBAAAA,gBATP;AAcOC,gBAAAA,GAdP,4BAcaD,gBAAgB,CAACE,MAd9B,0DAca,sBAA0B,CAA1B,CAdb;AAgBOC,gBAAAA,oBAhBP,GAiBE,CAAAF,GAAG,SAAH,IAAAA,GAAG,WAAH,4BAAAA,GAAG,CAAEf,OAAL,uFAAckB,cAAd,gFAA8BR,MAA9B,MAAyC,CAAzC,IACA,CAAAK,GAAG,SAAH,IAAAA,GAAG,WAAH,6BAAAA,GAAG,CAAEf,OAAL,yFAAckB,cAAd,0GAA+B,CAA/B,6GAAmClB,OAAnC,kFAA4CmB,IAA5C,MAAqD,gBAlBvD;AAoBKC,gBAAAA,oBApBL,GAoBiC,EApBjC;;AAAA,qBAsBKH,oBAtBL;AAAA;AAAA;AAAA;;AAuBE,uBAAOH,gBAAgB,CAACE,MAAxB;AAvBF;AAAA,uBAyB+B,KAAKX,MAAL,CAAY,OAAZ,EAAqB,OAArB,EAA8BC,OAA9B,CAAsC;AAClEF,kBAAAA,SAAS,EAATA;AADkE,iBAAtC,CAzB/B;;AAAA;AAyBEgB,gBAAAA,oBAzBF;;AAAA;AAAA,iDA8BQC,mBAAWC,kBAAX,CACN,EADM,EAENX,aAFM,EAGNG,gBAHM,EAINM,oBAJM,CA9BR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EALwCG,2B","sourcesContent":["import { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport setupTestsOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/setupTestsOptions.schema'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SetupTestsOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.SetupTestsOptions\n\nexport default class SetupAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = setupTestsOptionsSchema\n\tpublic commandAliases = ['setup.testing']\n\tpublic invocationMessage = 'Setting up for testing... 🛡'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\t\tconst { demoNumber, skillSlug } = normalizedOptions\n\n\t\tconst loginResponse = await this.Action('person', 'login').execute({\n\t\t\tphone: demoNumber,\n\t\t\tpin: demoNumber.substr(demoNumber.length - 4),\n\t\t})\n\n\t\tconst registerResponse = await this.Action('skill', 'register').execute({\n\t\t\tnameReadable: skillSlug,\n\t\t\tnameKebab: skillSlug,\n\t\t})\n\n\t\tconst err = registerResponse.errors?.[0]\n\n\t\tconst isDuplicateSlugError =\n\t\t\terr?.options?.responseErrors?.length === 1 &&\n\t\t\terr?.options?.responseErrors?.[0]?.options?.code === 'DUPLICATE_SLUG'\n\n\t\tlet loginAsSkillResponse: any = {}\n\n\t\tif (isDuplicateSlugError) {\n\t\t\tdelete registerResponse.errors\n\n\t\t\tloginAsSkillResponse = await this.Action('skill', 'login').execute({\n\t\t\t\tskillSlug,\n\t\t\t})\n\t\t}\n\n\t\treturn actionUtil.mergeActionResults(\n\t\t\t{},\n\t\t\tloginResponse,\n\t\t\tregisterResponse,\n\t\t\tloginAsSkillResponse\n\t\t)\n\t}\n}\n"],"file":"SetupAction.js"}
1
+ {"version":3,"file":"SetupAction.js","names":["SetupAction","setupTestsOptionsSchema","options","normalizedOptions","validateAndNormalizeOptions","demoNumber","skillSlug","Action","execute","phone","pin","substr","length","loginResponse","nameReadable","nameKebab","registerResponse","err","errors","isDuplicateSlugError","responseErrors","code","loginAsSkillResponse","actionUtil","mergeActionResults","AbstractAction"],"sources":["../../../../src/features/test/actions/SetupAction.ts"],"sourcesContent":["import { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport setupTestsOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/setupTestsOptions.schema'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SetupTestsOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.SetupTestsOptions\n\nexport default class SetupAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = setupTestsOptionsSchema\n\tpublic commandAliases = ['setup.testing']\n\tpublic invocationMessage = 'Setting up for testing... 🛡'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\t\tconst { demoNumber, skillSlug } = normalizedOptions\n\n\t\tconst loginResponse = await this.Action('person', 'login').execute({\n\t\t\tphone: demoNumber,\n\t\t\tpin: demoNumber.substr(demoNumber.length - 4),\n\t\t})\n\n\t\tconst registerResponse = await this.Action('skill', 'register').execute({\n\t\t\tnameReadable: skillSlug,\n\t\t\tnameKebab: skillSlug,\n\t\t})\n\n\t\tconst err = registerResponse.errors?.[0]\n\n\t\tconst isDuplicateSlugError =\n\t\t\terr?.options?.responseErrors?.length === 1 &&\n\t\t\terr?.options?.responseErrors?.[0]?.options?.code === 'DUPLICATE_SLUG'\n\n\t\tlet loginAsSkillResponse: any = {}\n\n\t\tif (isDuplicateSlugError) {\n\t\t\tdelete registerResponse.errors\n\n\t\t\tloginAsSkillResponse = await this.Action('skill', 'login').execute({\n\t\t\t\tskillSlug,\n\t\t\t})\n\t\t}\n\n\t\treturn actionUtil.mergeActionResults(\n\t\t\t{},\n\t\t\tloginResponse,\n\t\t\tregisterResponse,\n\t\t\tloginAsSkillResponse\n\t\t)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;;;;;IAMqBA,W;;;;;;;;;;;;;;;sGACGC,6B;uGACC,CAAC,eAAD,C;0GACG,8B;;;;;;;mGAE3B,iBAAqBC,OAArB;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBACOC,iBADP,GAC2B,KAAKC,2BAAL,CAAiCF,OAAjC,CAD3B;gBAESG,UAFT,GAEmCF,iBAFnC,CAESE,UAFT,EAEqBC,SAFrB,GAEmCH,iBAFnC,CAEqBG,SAFrB;gBAAA;gBAAA,OAI6B,KAAKC,MAAL,CAAY,QAAZ,EAAsB,OAAtB,EAA+BC,OAA/B,CAAuC;kBAClEC,KAAK,EAAEJ,UAD2D;kBAElEK,GAAG,EAAEL,UAAU,CAACM,MAAX,CAAkBN,UAAU,CAACO,MAAX,GAAoB,CAAtC;gBAF6D,CAAvC,CAJ7B;;cAAA;gBAIOC,aAJP;gBAAA;gBAAA,OASgC,KAAKN,MAAL,CAAY,OAAZ,EAAqB,UAArB,EAAiCC,OAAjC,CAAyC;kBACvEM,YAAY,EAAER,SADyD;kBAEvES,SAAS,EAAET;gBAF4D,CAAzC,CAThC;;cAAA;gBASOU,gBATP;gBAcOC,GAdP,4BAcaD,gBAAgB,CAACE,MAd9B,0DAca,sBAA0B,CAA1B,CAdb;gBAgBOC,oBAhBP,GAiBE,CAAAF,GAAG,SAAH,IAAAA,GAAG,WAAH,4BAAAA,GAAG,CAAEf,OAAL,uFAAckB,cAAd,gFAA8BR,MAA9B,MAAyC,CAAzC,IACA,CAAAK,GAAG,SAAH,IAAAA,GAAG,WAAH,6BAAAA,GAAG,CAAEf,OAAL,yFAAckB,cAAd,0GAA+B,CAA/B,6GAAmClB,OAAnC,kFAA4CmB,IAA5C,MAAqD,gBAlBvD;gBAoBKC,oBApBL,GAoBiC,EApBjC;;gBAAA,KAsBKH,oBAtBL;kBAAA;kBAAA;gBAAA;;gBAuBE,OAAOH,gBAAgB,CAACE,MAAxB;gBAvBF;gBAAA,OAyB+B,KAAKX,MAAL,CAAY,OAAZ,EAAqB,OAArB,EAA8BC,OAA9B,CAAsC;kBAClEF,SAAS,EAATA;gBADkE,CAAtC,CAzB/B;;cAAA;gBAyBEgB,oBAzBF;;cAAA;gBAAA,iCA8BQC,mBAAWC,kBAAX,CACN,EADM,EAENX,aAFM,EAGNG,gBAHM,EAINM,oBAJM,CA9BR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EALwCG,2B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/test/actions/TestAction.ts"],"names":["optionsSchema","testOptionsSchema","TestAction","options","totalTestFiles","watchMode","settings","Service","get","normalizedOptions","validateAndNormalizeOptions","pattern","shouldReportWhileRunning","inspect","shouldHoldAtStart","shouldReturnImmediately","originalInspect","hasWatchEverBeenEnabled","testReporter","TestReporter","cwd","status","isDebugging","filterPattern","undefined","handleRestart","bind","handleStartStop","handleQuit","handleRerunTestFile","handleOpenTestFile","handleFilterPatternChange","handleToggleDebug","handletoggleStandardWatch","handleToggleSmartWatch","start","watcher","getFeature","startWatching","delay","emitter","on","handleFileChange","runnerStatus","promise","startTestRunner","meta","test","emit","reporter","testResults","stopWatching","destroy","actionResponse","summaryLines","totalTests","totalPassed","totalFailed","totalSkipped","totalTodo","errors","generateErrorsFromTestResults","payload","changes","shouldRestart","filesWeCareAbout","change","values","path","name","doWeCareAboutThisFileChanging","setStatusLabel","push","fileChangeTimeout","clearTimeout","startCountdownTimer","watchDelaySec","setTimeout","smartFilter","generateFilterFromChangedFiles","length","restart","filter","file","search","map","fileToFilterPattern","join","ext","pathUtil","extname","setIsDebugging","setWatchMode","mode","kill","setFilterPattern","filename","basename","replace","dirname","split","sep","pop","holdPromiseResolve","testRunner","fileName","openTestFile","waitForStart","lastTestResults","setStatus","stopCountdownTimer","TestRunner","commandService","firstUpdate","reset","results","failed","testFiles","find","updateResults","render","appendError","message","run","debugPort","hasFailedTests","hasSkippedTests","Promise","resolve","diskUtil","resolvePath","forEach","tests","errorMessages","err","mapErrorResultToSpruceError","SpruceError","code","testName","errorMessage","AbstractAction"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport open from 'open'\nimport testOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/testOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse, ActionOptions } from '../../features.types'\nimport WatchFeature from '../../watch/WatchFeature'\nimport {\n\tSpruceTestFile,\n\tSpruceTestFileTest,\n\tSpruceTestResults,\n} from '../test.types'\nimport TestReporter, { WatchMode } from '../TestReporter'\nimport TestRunner from '../TestRunner'\n\nexport const optionsSchema = testOptionsSchema\n\nexport type OptionsSchema = typeof optionsSchema\n\ntype DidChangePayload =\n\tSchemaValues<SpruceSchemas.SpruceCli.v2020_07_22.WatcherDidDetectChangesEmitPayloadSchema>\n\nexport default class TestAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic invocationMessage = 'Starting tests... 🛡'\n\n\tprivate testReporter?: TestReporter | undefined\n\tprivate testRunner?: TestRunner\n\tprivate runnerStatus: 'hold' | 'quit' | 'run' | 'restart' = 'hold'\n\tprivate pattern: string | undefined\n\tprivate inspect?: number | null\n\tprivate holdPromiseResolve?: () => void\n\tprivate lastTestResults: SpruceTestResults = { totalTestFiles: 0 }\n\tprivate originalInspect!: number\n\tprivate watcher?: WatchFeature\n\tprivate watchMode: WatchMode = 'off'\n\tprivate fileChangeTimeout?: any\n\tprivate hasWatchEverBeenEnabled = false\n\n\tprivate readonly watchDelaySec = 2\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\t}\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tif (!options.watchMode) {\n\t\t\tconst settings = this.Service('settings')\n\t\t\toptions.watchMode = settings.get('test.watchMode') ?? 'off'\n\t\t}\n\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\n\t\tconst {\n\t\t\tpattern,\n\t\t\tshouldReportWhileRunning,\n\t\t\tinspect,\n\t\t\tshouldHoldAtStart,\n\t\t\twatchMode,\n\t\t\tshouldReturnImmediately,\n\t\t} = normalizedOptions\n\n\t\tthis.originalInspect = inspect ?? 5200\n\t\tthis.inspect = inspect\n\t\tthis.pattern = pattern\n\t\tthis.hasWatchEverBeenEnabled = watchMode !== 'off'\n\t\tthis.watchMode = watchMode as WatchMode\n\n\t\tif (shouldReportWhileRunning) {\n\t\t\tthis.testReporter = new TestReporter({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\twatchMode: this.watchMode,\n\t\t\t\tstatus: shouldHoldAtStart ? 'stopped' : 'ready',\n\t\t\t\tisDebugging: !!inspect,\n\t\t\t\tfilterPattern: pattern ?? undefined,\n\t\t\t\thandleRestart: this.handleRestart.bind(this),\n\t\t\t\thandleStartStop: this.handleStartStop.bind(this),\n\t\t\t\thandleQuit: this.handleQuit.bind(this),\n\t\t\t\thandleRerunTestFile: this.handleRerunTestFile.bind(this),\n\t\t\t\thandleOpenTestFile: this.handleOpenTestFile.bind(this),\n\t\t\t\thandleFilterPatternChange: this.handleFilterPatternChange.bind(this),\n\t\t\t\thandleToggleDebug: this.handleToggleDebug.bind(this),\n\t\t\t\thandletoggleStandardWatch: this.handletoggleStandardWatch.bind(this),\n\t\t\t\thandleToggleSmartWatch: this.handleToggleSmartWatch?.bind(this),\n\t\t\t})\n\n\t\t\tawait this.testReporter.start()\n\t\t}\n\n\t\tthis.watcher = this.getFeature('watch') as WatchFeature\n\t\tvoid this.watcher.startWatching({ delay: 0 })\n\n\t\tawait this.emitter.on(\n\t\t\t'watcher.did-detect-change',\n\t\t\tthis.handleFileChange.bind(this)\n\t\t)\n\n\t\tthis.runnerStatus = shouldHoldAtStart ? 'hold' : 'run'\n\n\t\tconst promise = this.startTestRunner(normalizedOptions)\n\n\t\tif (shouldReturnImmediately) {\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\tpromise,\n\t\t\t\t\ttest: this,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tvoid this.emitter.emit('test.reporter-did-boot', {\n\t\t\treporter: this,\n\t\t})\n\n\t\tconst testResults = await promise\n\n\t\tawait this.watcher?.stopWatching()\n\t\tawait this.testReporter?.destroy()\n\n\t\tconst actionResponse: FeatureActionResponse = {\n\t\t\tmeta: { testResults },\n\t\t\tsummaryLines: [\n\t\t\t\t`Test files: ${testResults.totalTestFiles}`,\n\t\t\t\t`Tests: ${testResults.totalTests ?? '0'}`,\n\t\t\t\t`Passed: ${testResults.totalPassed ?? '0'}`,\n\t\t\t\t`Failed: ${testResults.totalFailed ?? '0'}`,\n\t\t\t\t`Skipped: ${testResults.totalSkipped ?? '0'}`,\n\t\t\t\t`Todo: ${testResults.totalTodo ?? '0'}`,\n\t\t\t],\n\t\t}\n\n\t\tif (testResults.totalFailed ?? 0 > 0) {\n\t\t\tactionResponse.errors = this.generateErrorsFromTestResults(testResults)\n\t\t}\n\n\t\treturn actionResponse\n\t}\n\n\tprivate handleFileChange(payload: DidChangePayload) {\n\t\tif (\n\t\t\tthis.watchMode === 'off' ||\n\t\t\t!(this.runnerStatus === 'run' || this.runnerStatus == 'hold')\n\t\t) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { changes } = payload\n\n\t\tlet shouldRestart = false\n\t\tconst filesWeCareAbout: string[] = []\n\n\t\tfor (const change of changes) {\n\t\t\tconst { path, name } = change.values\n\n\t\t\tif (this.doWeCareAboutThisFileChanging(path)) {\n\t\t\t\tthis.testReporter?.setStatusLabel(`Built file: ${name}`)\n\t\t\t\tshouldRestart = true\n\t\t\t\tfilesWeCareAbout.push(path)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif (shouldRestart) {\n\t\t\tif (this.fileChangeTimeout) {\n\t\t\t\tclearTimeout(this.fileChangeTimeout)\n\t\t\t}\n\n\t\t\tthis.testReporter?.startCountdownTimer(this.watchDelaySec)\n\t\t\tthis.fileChangeTimeout = setTimeout(() => {\n\t\t\t\tif (this.watchMode === 'smart') {\n\t\t\t\t\tconst smartFilter =\n\t\t\t\t\t\tthis.generateFilterFromChangedFiles(filesWeCareAbout)\n\t\t\t\t\tif (smartFilter.length > 0) {\n\t\t\t\t\t\tthis.handleFilterPatternChange(smartFilter)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.restart()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.restart()\n\t\t\t\t}\n\t\t\t}, this.watchDelaySec * 1000) as any\n\t\t}\n\t}\n\n\tprivate generateFilterFromChangedFiles(filesWeCareAbout: string[]): string {\n\t\tconst filter = filesWeCareAbout\n\t\t\t.filter((file) => file.search('test.js') > -1)\n\t\t\t.map((file) => this.fileToFilterPattern(file))\n\t\t\t.join(' ')\n\n\t\treturn filter\n\t}\n\n\tprivate doWeCareAboutThisFileChanging(path: string) {\n\t\tconst ext = pathUtil.extname(path)\n\n\t\tif (\n\t\t\tpath.search('testDirsAndFiles') > -1 ||\n\t\t\tpath.search('.change_cache') > -1\n\t\t) {\n\t\t\treturn false\n\t\t}\n\n\t\tif (ext === '.js') {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate handleToggleDebug() {\n\t\tif (this.inspect) {\n\t\t\tthis.inspect = undefined\n\t\t} else {\n\t\t\tthis.inspect = this.originalInspect\n\t\t}\n\n\t\tthis.testReporter?.setIsDebugging(!!this.inspect)\n\t\tthis.restart()\n\t}\n\n\tprivate handletoggleStandardWatch() {\n\t\tif (this.watchMode === 'standard') {\n\t\t\tthis.testReporter?.setWatchMode('off')\n\t\t} else {\n\t\t\tthis.setWatchMode('standard')\n\t\t}\n\t}\n\n\tprivate handleToggleSmartWatch() {\n\t\tif (this.watchMode === 'smart') {\n\t\t\tthis.setWatchMode('off')\n\t\t} else {\n\t\t\tthis.setWatchMode('smart')\n\t\t}\n\t}\n\n\tpublic setWatchMode(mode: WatchMode) {\n\t\tthis.watchMode = mode\n\t\tthis.testReporter?.setWatchMode(mode)\n\t\tthis.hasWatchEverBeenEnabled = true\n\t}\n\n\tprivate restart() {\n\t\tthis.runnerStatus = 'restart'\n\t\tthis.kill()\n\t}\n\n\tprivate handleQuit() {\n\t\tthis.runnerStatus = 'quit'\n\t\tthis.kill()\n\t}\n\n\tprivate handleRerunTestFile(file: string) {\n\t\tconst name = this.fileToFilterPattern(file)\n\n\t\tthis.testReporter?.setFilterPattern(name)\n\t\tthis.handleFilterPatternChange(name)\n\t}\n\n\tprivate fileToFilterPattern(file: string) {\n\t\tconst filename = pathUtil\n\t\t\t.basename(file, '.ts')\n\t\t\t.replace('.tsx', '')\n\t\t\t.replace('.js', '')\n\t\tconst dirname = pathUtil.dirname(file).split(pathUtil.sep).pop() ?? ''\n\n\t\tconst name = pathUtil.join(dirname, filename)\n\t\treturn name\n\t}\n\n\tprivate handleFilterPatternChange(filterPattern?: string) {\n\t\tthis.pattern = filterPattern\n\t\tthis.testReporter?.setFilterPattern(filterPattern)\n\n\t\tthis.restart()\n\t}\n\n\tprivate handleStartStop() {\n\t\tif (this.runnerStatus === 'hold') {\n\t\t\tthis.runnerStatus = 'run'\n\t\t\tthis.holdPromiseResolve?.()\n\t\t\tthis.holdPromiseResolve = undefined\n\t\t} else if (this.runnerStatus === 'run') {\n\t\t\tthis.runnerStatus = 'hold'\n\t\t\tthis.kill()\n\t\t}\n\t}\n\n\tprivate handleRestart() {\n\t\tthis.restart()\n\t}\n\n\tpublic kill() {\n\t\tthis.testRunner?.kill()\n\t\tthis.holdPromiseResolve?.()\n\t\tthis.holdPromiseResolve = undefined\n\t}\n\n\tprivate async handleOpenTestFile(fileName: string) {\n\t\tawait this.openTestFile(fileName)\n\t}\n\n\tprivate async startTestRunner(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<SpruceTestResults> {\n\t\tif (this.runnerStatus === 'hold') {\n\t\t\tawait this.waitForStart()\n\t\t}\n\n\t\tif (this.runnerStatus === 'quit') {\n\t\t\treturn this.lastTestResults\n\t\t}\n\n\t\tthis.testReporter?.setStatus('ready')\n\t\tthis.testReporter?.stopCountdownTimer()\n\n\t\tthis.testRunner = new TestRunner({\n\t\t\tcwd: this.cwd,\n\t\t\tcommandService: this.Service('command'),\n\t\t})\n\n\t\tlet firstUpdate = true\n\n\t\tif (this.testReporter) {\n\t\t\tawait this.testRunner.on('did-update', (payload) => {\n\t\t\t\tif (firstUpdate) {\n\t\t\t\t\tfirstUpdate = false\n\t\t\t\t\tthis.testReporter?.setStatus('running')\n\t\t\t\t\tthis.testReporter?.reset()\n\t\t\t\t}\n\n\t\t\t\tif (this.watchMode === 'smart' && payload.results.totalFailed > 0) {\n\t\t\t\t\tconst failed = payload.results.testFiles.find(\n\t\t\t\t\t\t(file: any) => file.status === 'failed'\n\t\t\t\t\t)\n\n\t\t\t\t\tif (failed) {\n\t\t\t\t\t\tconst pattern = this.fileToFilterPattern(failed.path)\n\t\t\t\t\t\tif (this.pattern !== pattern) {\n\t\t\t\t\t\t\tthis.handleFilterPatternChange(pattern)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.testReporter?.updateResults(payload.results)\n\t\t\t\tthis.testReporter?.render()\n\t\t\t})\n\n\t\t\tawait this.testRunner.on('did-error', (payload) => {\n\t\t\t\tthis.testReporter?.appendError(payload.message)\n\t\t\t\tthis.testReporter?.render()\n\t\t\t})\n\t\t}\n\n\t\tthis.runnerStatus = 'run'\n\n\t\tlet testResults: SpruceTestResults = await this.testRunner.run({\n\t\t\tpattern: this.pattern,\n\t\t\tdebugPort: this.inspect,\n\t\t})\n\n\t\tif (\n\t\t\t//@ts-ignore\n\t\t\tthis.runnerStatus !== 'restart' &&\n\t\t\t(!options.shouldReportWhileRunning ||\n\t\t\t\t!this.hasWatchEverBeenEnabled ||\n\t\t\t\t(this.runnerStatus as any) === 'quit')\n\t\t) {\n\t\t\treturn testResults\n\t\t}\n\n\t\tif (\n\t\t\tthis.runnerStatus === 'run' &&\n\t\t\tthis.watchMode === 'smart' &&\n\t\t\tthis.testRunner?.hasFailedTests() === false &&\n\t\t\t!this.testRunner?.hasSkippedTests() &&\n\t\t\t(this.pattern ?? []).length > 0\n\t\t) {\n\t\t\tthis.testReporter?.setStatusLabel('Restarting...')\n\t\t\tthis.runnerStatus = 'restart'\n\t\t\tthis.testReporter?.startCountdownTimer(3)\n\n\t\t\treturn await new Promise((resolve) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.pattern = ''\n\t\t\t\t\tthis.testReporter?.setFilterPattern('')\n\t\t\t\t\tresolve(this.startTestRunner(options))\n\t\t\t\t}, 3000)\n\t\t\t})\n\t\t}\n\n\t\tif (this.runnerStatus === 'run') {\n\t\t\tthis.runnerStatus = 'hold'\n\t\t}\n\n\t\tthis.testReporter?.setStatus('stopped')\n\n\t\tthis.lastTestResults = testResults\n\n\t\treturn this.startTestRunner(options)\n\t}\n\n\tpublic async waitForStart() {\n\t\tawait new Promise((resolve: any) => {\n\t\t\tthis.runnerStatus = 'hold'\n\t\t\tthis.holdPromiseResolve = resolve\n\t\t})\n\t}\n\n\tprivate async openTestFile(fileName: string): Promise<void> {\n\t\tconst path = diskUtil.resolvePath(this.cwd, 'src', '__tests__', fileName)\n\t\tawait open(path)\n\t}\n\n\tprivate generateErrorsFromTestResults(testResults: SpruceTestResults) {\n\t\tconst errors: SpruceError[] = []\n\t\ttestResults.testFiles?.forEach((file) => {\n\t\t\tfile.tests?.forEach((test) => {\n\t\t\t\ttest.errorMessages?.forEach((message) => {\n\t\t\t\t\tconst err = this.mapErrorResultToSpruceError(test, file, message)\n\t\t\t\t\terrors.push(err)\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t\tif (errors.length > 0) {\n\t\t\treturn errors\n\t\t}\n\n\t\treturn undefined\n\t}\n\n\tprivate mapErrorResultToSpruceError(\n\t\ttest: SpruceTestFileTest,\n\t\tfile: SpruceTestFile,\n\t\tmessage: string\n\t) {\n\t\treturn new SpruceError({\n\t\t\tcode: 'TEST_FAILED',\n\t\t\ttestName: test.name,\n\t\t\tfileName: file.path,\n\t\t\terrorMessage: message,\n\t\t})\n\t}\n\n\tpublic getWatchMode() {\n\t\treturn this.watchMode\n\t}\n}\n"],"file":"TestAction.js"}
1
+ {"version":3,"file":"TestAction.js","names":["optionsSchema","testOptionsSchema","TestAction","options","totalTestFiles","watchMode","settings","Service","get","normalizedOptions","validateAndNormalizeOptions","pattern","shouldReportWhileRunning","inspect","shouldHoldAtStart","shouldReturnImmediately","originalInspect","hasWatchEverBeenEnabled","testReporter","TestReporter","cwd","status","isDebugging","filterPattern","undefined","handleRestart","bind","handleStartStop","handleQuit","handleRerunTestFile","handleOpenTestFile","handleFilterPatternChange","handleToggleDebug","handletoggleStandardWatch","handleToggleSmartWatch","start","watcher","getFeature","startWatching","delay","emitter","on","handleFileChange","runnerStatus","promise","startTestRunner","meta","test","emit","reporter","testResults","stopWatching","destroy","actionResponse","summaryLines","totalTests","totalPassed","totalFailed","totalSkipped","totalTodo","errors","generateErrorsFromTestResults","payload","changes","shouldRestart","filesWeCareAbout","change","values","path","name","doWeCareAboutThisFileChanging","setStatusLabel","push","fileChangeTimeout","clearTimeout","startCountdownTimer","watchDelaySec","setTimeout","smartFilter","generateFilterFromChangedFiles","length","restart","filter","file","search","map","fileToFilterPattern","join","ext","pathUtil","extname","setIsDebugging","setWatchMode","mode","kill","setFilterPattern","filename","basename","replace","dirname","split","sep","pop","holdPromiseResolve","testRunner","fileName","openTestFile","waitForStart","lastTestResults","setStatus","stopCountdownTimer","TestRunner","commandService","firstUpdate","reset","results","failed","testFiles","find","updateResults","render","appendError","message","run","debugPort","hasFailedTests","hasSkippedTests","Promise","resolve","diskUtil","resolvePath","forEach","tests","errorMessages","err","mapErrorResultToSpruceError","SpruceError","code","testName","errorMessage","AbstractAction"],"sources":["../../../../src/features/test/actions/TestAction.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport open from 'open'\nimport testOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/testOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse, ActionOptions } from '../../features.types'\nimport WatchFeature from '../../watch/WatchFeature'\nimport {\n\tSpruceTestFile,\n\tSpruceTestFileTest,\n\tSpruceTestResults,\n} from '../test.types'\nimport TestReporter, { WatchMode } from '../TestReporter'\nimport TestRunner from '../TestRunner'\n\nexport const optionsSchema = testOptionsSchema\n\nexport type OptionsSchema = typeof optionsSchema\n\ntype DidChangePayload =\n\tSchemaValues<SpruceSchemas.SpruceCli.v2020_07_22.WatcherDidDetectChangesEmitPayloadSchema>\n\nexport default class TestAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic invocationMessage = 'Starting tests... 🛡'\n\n\tprivate testReporter?: TestReporter | undefined\n\tprivate testRunner?: TestRunner\n\tprivate runnerStatus: 'hold' | 'quit' | 'run' | 'restart' = 'hold'\n\tprivate pattern: string | undefined\n\tprivate inspect?: number | null\n\tprivate holdPromiseResolve?: () => void\n\tprivate lastTestResults: SpruceTestResults = { totalTestFiles: 0 }\n\tprivate originalInspect!: number\n\tprivate watcher?: WatchFeature\n\tprivate watchMode: WatchMode = 'off'\n\tprivate fileChangeTimeout?: any\n\tprivate hasWatchEverBeenEnabled = false\n\n\tprivate readonly watchDelaySec = 2\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\t}\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tif (!options.watchMode) {\n\t\t\tconst settings = this.Service('settings')\n\t\t\toptions.watchMode = settings.get('test.watchMode') ?? 'off'\n\t\t}\n\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\n\t\tconst {\n\t\t\tpattern,\n\t\t\tshouldReportWhileRunning,\n\t\t\tinspect,\n\t\t\tshouldHoldAtStart,\n\t\t\twatchMode,\n\t\t\tshouldReturnImmediately,\n\t\t} = normalizedOptions\n\n\t\tthis.originalInspect = inspect ?? 5200\n\t\tthis.inspect = inspect\n\t\tthis.pattern = pattern\n\t\tthis.hasWatchEverBeenEnabled = watchMode !== 'off'\n\t\tthis.watchMode = watchMode as WatchMode\n\n\t\tif (shouldReportWhileRunning) {\n\t\t\tthis.testReporter = new TestReporter({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\twatchMode: this.watchMode,\n\t\t\t\tstatus: shouldHoldAtStart ? 'stopped' : 'ready',\n\t\t\t\tisDebugging: !!inspect,\n\t\t\t\tfilterPattern: pattern ?? undefined,\n\t\t\t\thandleRestart: this.handleRestart.bind(this),\n\t\t\t\thandleStartStop: this.handleStartStop.bind(this),\n\t\t\t\thandleQuit: this.handleQuit.bind(this),\n\t\t\t\thandleRerunTestFile: this.handleRerunTestFile.bind(this),\n\t\t\t\thandleOpenTestFile: this.handleOpenTestFile.bind(this),\n\t\t\t\thandleFilterPatternChange: this.handleFilterPatternChange.bind(this),\n\t\t\t\thandleToggleDebug: this.handleToggleDebug.bind(this),\n\t\t\t\thandletoggleStandardWatch: this.handletoggleStandardWatch.bind(this),\n\t\t\t\thandleToggleSmartWatch: this.handleToggleSmartWatch?.bind(this),\n\t\t\t})\n\n\t\t\tawait this.testReporter.start()\n\t\t}\n\n\t\tthis.watcher = this.getFeature('watch') as WatchFeature\n\t\tvoid this.watcher.startWatching({ delay: 0 })\n\n\t\tawait this.emitter.on(\n\t\t\t'watcher.did-detect-change',\n\t\t\tthis.handleFileChange.bind(this)\n\t\t)\n\n\t\tthis.runnerStatus = shouldHoldAtStart ? 'hold' : 'run'\n\n\t\tconst promise = this.startTestRunner(normalizedOptions)\n\n\t\tif (shouldReturnImmediately) {\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\tpromise,\n\t\t\t\t\ttest: this,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tvoid this.emitter.emit('test.reporter-did-boot', {\n\t\t\treporter: this,\n\t\t})\n\n\t\tconst testResults = await promise\n\n\t\tawait this.watcher?.stopWatching()\n\t\tawait this.testReporter?.destroy()\n\n\t\tconst actionResponse: FeatureActionResponse = {\n\t\t\tmeta: { testResults },\n\t\t\tsummaryLines: [\n\t\t\t\t`Test files: ${testResults.totalTestFiles}`,\n\t\t\t\t`Tests: ${testResults.totalTests ?? '0'}`,\n\t\t\t\t`Passed: ${testResults.totalPassed ?? '0'}`,\n\t\t\t\t`Failed: ${testResults.totalFailed ?? '0'}`,\n\t\t\t\t`Skipped: ${testResults.totalSkipped ?? '0'}`,\n\t\t\t\t`Todo: ${testResults.totalTodo ?? '0'}`,\n\t\t\t],\n\t\t}\n\n\t\tif (testResults.totalFailed ?? 0 > 0) {\n\t\t\tactionResponse.errors = this.generateErrorsFromTestResults(testResults)\n\t\t}\n\n\t\treturn actionResponse\n\t}\n\n\tprivate handleFileChange(payload: DidChangePayload) {\n\t\tif (\n\t\t\tthis.watchMode === 'off' ||\n\t\t\t!(this.runnerStatus === 'run' || this.runnerStatus == 'hold')\n\t\t) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { changes } = payload\n\n\t\tlet shouldRestart = false\n\t\tconst filesWeCareAbout: string[] = []\n\n\t\tfor (const change of changes) {\n\t\t\tconst { path, name } = change.values\n\n\t\t\tif (this.doWeCareAboutThisFileChanging(path)) {\n\t\t\t\tthis.testReporter?.setStatusLabel(`Built file: ${name}`)\n\t\t\t\tshouldRestart = true\n\t\t\t\tfilesWeCareAbout.push(path)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif (shouldRestart) {\n\t\t\tif (this.fileChangeTimeout) {\n\t\t\t\tclearTimeout(this.fileChangeTimeout)\n\t\t\t}\n\n\t\t\tthis.testReporter?.startCountdownTimer(this.watchDelaySec)\n\t\t\tthis.fileChangeTimeout = setTimeout(() => {\n\t\t\t\tif (this.watchMode === 'smart') {\n\t\t\t\t\tconst smartFilter =\n\t\t\t\t\t\tthis.generateFilterFromChangedFiles(filesWeCareAbout)\n\t\t\t\t\tif (smartFilter.length > 0) {\n\t\t\t\t\t\tthis.handleFilterPatternChange(smartFilter)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.restart()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.restart()\n\t\t\t\t}\n\t\t\t}, this.watchDelaySec * 1000) as any\n\t\t}\n\t}\n\n\tprivate generateFilterFromChangedFiles(filesWeCareAbout: string[]): string {\n\t\tconst filter = filesWeCareAbout\n\t\t\t.filter((file) => file.search('test.js') > -1)\n\t\t\t.map((file) => this.fileToFilterPattern(file))\n\t\t\t.join(' ')\n\n\t\treturn filter\n\t}\n\n\tprivate doWeCareAboutThisFileChanging(path: string) {\n\t\tconst ext = pathUtil.extname(path)\n\n\t\tif (\n\t\t\tpath.search('testDirsAndFiles') > -1 ||\n\t\t\tpath.search('.change_cache') > -1\n\t\t) {\n\t\t\treturn false\n\t\t}\n\n\t\tif (ext === '.js') {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate handleToggleDebug() {\n\t\tif (this.inspect) {\n\t\t\tthis.inspect = undefined\n\t\t} else {\n\t\t\tthis.inspect = this.originalInspect\n\t\t}\n\n\t\tthis.testReporter?.setIsDebugging(!!this.inspect)\n\t\tthis.restart()\n\t}\n\n\tprivate handletoggleStandardWatch() {\n\t\tif (this.watchMode === 'standard') {\n\t\t\tthis.testReporter?.setWatchMode('off')\n\t\t} else {\n\t\t\tthis.setWatchMode('standard')\n\t\t}\n\t}\n\n\tprivate handleToggleSmartWatch() {\n\t\tif (this.watchMode === 'smart') {\n\t\t\tthis.setWatchMode('off')\n\t\t} else {\n\t\t\tthis.setWatchMode('smart')\n\t\t}\n\t}\n\n\tpublic setWatchMode(mode: WatchMode) {\n\t\tthis.watchMode = mode\n\t\tthis.testReporter?.setWatchMode(mode)\n\t\tthis.hasWatchEverBeenEnabled = true\n\t}\n\n\tprivate restart() {\n\t\tthis.runnerStatus = 'restart'\n\t\tthis.kill()\n\t}\n\n\tprivate handleQuit() {\n\t\tthis.runnerStatus = 'quit'\n\t\tthis.kill()\n\t}\n\n\tprivate handleRerunTestFile(file: string) {\n\t\tconst name = this.fileToFilterPattern(file)\n\n\t\tthis.testReporter?.setFilterPattern(name)\n\t\tthis.handleFilterPatternChange(name)\n\t}\n\n\tprivate fileToFilterPattern(file: string) {\n\t\tconst filename = pathUtil\n\t\t\t.basename(file, '.ts')\n\t\t\t.replace('.tsx', '')\n\t\t\t.replace('.js', '')\n\t\tconst dirname = pathUtil.dirname(file).split(pathUtil.sep).pop() ?? ''\n\n\t\tconst name = pathUtil.join(dirname, filename)\n\t\treturn name\n\t}\n\n\tprivate handleFilterPatternChange(filterPattern?: string) {\n\t\tthis.pattern = filterPattern\n\t\tthis.testReporter?.setFilterPattern(filterPattern)\n\n\t\tthis.restart()\n\t}\n\n\tprivate handleStartStop() {\n\t\tif (this.runnerStatus === 'hold') {\n\t\t\tthis.runnerStatus = 'run'\n\t\t\tthis.holdPromiseResolve?.()\n\t\t\tthis.holdPromiseResolve = undefined\n\t\t} else if (this.runnerStatus === 'run') {\n\t\t\tthis.runnerStatus = 'hold'\n\t\t\tthis.kill()\n\t\t}\n\t}\n\n\tprivate handleRestart() {\n\t\tthis.restart()\n\t}\n\n\tpublic kill() {\n\t\tthis.testRunner?.kill()\n\t\tthis.holdPromiseResolve?.()\n\t\tthis.holdPromiseResolve = undefined\n\t}\n\n\tprivate async handleOpenTestFile(fileName: string) {\n\t\tawait this.openTestFile(fileName)\n\t}\n\n\tprivate async startTestRunner(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<SpruceTestResults> {\n\t\tif (this.runnerStatus === 'hold') {\n\t\t\tawait this.waitForStart()\n\t\t}\n\n\t\tif (this.runnerStatus === 'quit') {\n\t\t\treturn this.lastTestResults\n\t\t}\n\n\t\tthis.testReporter?.setStatus('ready')\n\t\tthis.testReporter?.stopCountdownTimer()\n\n\t\tthis.testRunner = new TestRunner({\n\t\t\tcwd: this.cwd,\n\t\t\tcommandService: this.Service('command'),\n\t\t})\n\n\t\tlet firstUpdate = true\n\n\t\tif (this.testReporter) {\n\t\t\tawait this.testRunner.on('did-update', (payload) => {\n\t\t\t\tif (firstUpdate) {\n\t\t\t\t\tfirstUpdate = false\n\t\t\t\t\tthis.testReporter?.setStatus('running')\n\t\t\t\t\tthis.testReporter?.reset()\n\t\t\t\t}\n\n\t\t\t\tif (this.watchMode === 'smart' && payload.results.totalFailed > 0) {\n\t\t\t\t\tconst failed = payload.results.testFiles.find(\n\t\t\t\t\t\t(file: any) => file.status === 'failed'\n\t\t\t\t\t)\n\n\t\t\t\t\tif (failed) {\n\t\t\t\t\t\tconst pattern = this.fileToFilterPattern(failed.path)\n\t\t\t\t\t\tif (this.pattern !== pattern) {\n\t\t\t\t\t\t\tthis.handleFilterPatternChange(pattern)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.testReporter?.updateResults(payload.results)\n\t\t\t\tthis.testReporter?.render()\n\t\t\t})\n\n\t\t\tawait this.testRunner.on('did-error', (payload) => {\n\t\t\t\tthis.testReporter?.appendError(payload.message)\n\t\t\t\tthis.testReporter?.render()\n\t\t\t})\n\t\t}\n\n\t\tthis.runnerStatus = 'run'\n\n\t\tlet testResults: SpruceTestResults = await this.testRunner.run({\n\t\t\tpattern: this.pattern,\n\t\t\tdebugPort: this.inspect,\n\t\t})\n\n\t\tif (\n\t\t\t//@ts-ignore\n\t\t\tthis.runnerStatus !== 'restart' &&\n\t\t\t(!options.shouldReportWhileRunning ||\n\t\t\t\t!this.hasWatchEverBeenEnabled ||\n\t\t\t\t(this.runnerStatus as any) === 'quit')\n\t\t) {\n\t\t\treturn testResults\n\t\t}\n\n\t\tif (\n\t\t\tthis.runnerStatus === 'run' &&\n\t\t\tthis.watchMode === 'smart' &&\n\t\t\tthis.testRunner?.hasFailedTests() === false &&\n\t\t\t!this.testRunner?.hasSkippedTests() &&\n\t\t\t(this.pattern ?? []).length > 0\n\t\t) {\n\t\t\tthis.testReporter?.setStatusLabel('Restarting...')\n\t\t\tthis.runnerStatus = 'restart'\n\t\t\tthis.testReporter?.startCountdownTimer(3)\n\n\t\t\treturn await new Promise((resolve) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.pattern = ''\n\t\t\t\t\tthis.testReporter?.setFilterPattern('')\n\t\t\t\t\tresolve(this.startTestRunner(options))\n\t\t\t\t}, 3000)\n\t\t\t})\n\t\t}\n\n\t\tif (this.runnerStatus === 'run') {\n\t\t\tthis.runnerStatus = 'hold'\n\t\t}\n\n\t\tthis.testReporter?.setStatus('stopped')\n\n\t\tthis.lastTestResults = testResults\n\n\t\treturn this.startTestRunner(options)\n\t}\n\n\tpublic async waitForStart() {\n\t\tawait new Promise((resolve: any) => {\n\t\t\tthis.runnerStatus = 'hold'\n\t\t\tthis.holdPromiseResolve = resolve\n\t\t})\n\t}\n\n\tprivate async openTestFile(fileName: string): Promise<void> {\n\t\tconst path = diskUtil.resolvePath(this.cwd, 'src', '__tests__', fileName)\n\t\tawait open(path)\n\t}\n\n\tprivate generateErrorsFromTestResults(testResults: SpruceTestResults) {\n\t\tconst errors: SpruceError[] = []\n\t\ttestResults.testFiles?.forEach((file) => {\n\t\t\tfile.tests?.forEach((test) => {\n\t\t\t\ttest.errorMessages?.forEach((message) => {\n\t\t\t\t\tconst err = this.mapErrorResultToSpruceError(test, file, message)\n\t\t\t\t\terrors.push(err)\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t\tif (errors.length > 0) {\n\t\t\treturn errors\n\t\t}\n\n\t\treturn undefined\n\t}\n\n\tprivate mapErrorResultToSpruceError(\n\t\ttest: SpruceTestFileTest,\n\t\tfile: SpruceTestFile,\n\t\tmessage: string\n\t) {\n\t\treturn new SpruceError({\n\t\t\tcode: 'TEST_FAILED',\n\t\t\ttestName: test.name,\n\t\t\tfileName: file.path,\n\t\t\terrorMessage: message,\n\t\t})\n\t}\n\n\tpublic getWatchMode() {\n\t\treturn this.watchMode\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"test.types.js"}
1
+ {"version":3,"file":"test.types.js","names":[],"sources":["../../../src/features/test/test.types.ts"],"sourcesContent":["export type TestResultStatus = 'running' | 'passed' | 'failed'\nexport interface SpruceTestFileTest {\n\tname: string\n\tstatus: 'passed' | 'failed' | 'skipped' | 'pending' | 'todo' | 'disabled'\n\terrorMessages?: string[]\n\tduration: number\n}\n\nexport interface SpruceTestFile {\n\tpath: string\n\tstatus: TestResultStatus\n\ttests?: SpruceTestFileTest[]\n\terrorMessage?: string\n}\n\nexport interface SpruceTestResults {\n\ttotalTests?: number\n\ttotalPassed?: number\n\ttotalFailed?: number\n\ttotalSkipped?: number\n\ttotalTodo?: number\n\ttotalTestFiles: number\n\ttotalTestFilesComplete?: number\n\ttestFiles?: SpruceTestFile[]\n}\n\nexport type TestRunnerStatus = 'running' | 'stopped' | 'ready'\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/test/writers/TestWriter.ts"],"names":["TestGenerator","destinationDir","options","namePascal","filename","resolvedDestination","pathUtil","join","testContent","templates","test","writeFileIfChangedMixinResults","type","results","lint","AbstractWriter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAEqBA,a;;;;;;;;;;;;;wGACpB,iBACCC,cADD,EAECC,OAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAISC,gBAAAA,UAJT,GAIwBD,OAJxB,CAISC,UAJT;AAKOC,gBAAAA,QALP,aAKqBD,UALrB;AAOOE,gBAAAA,mBAPP,GAO6BC,iBAASC,IAAT,CAAcN,cAAd,EAA8BG,QAA9B,CAP7B;AAQOI,gBAAAA,WARP,GAQqB,KAAKC,SAAL,CAAeC,IAAf,CAAoBR,OAApB,CARrB;AAAA;AAAA,uBAUuB,KAAKS,8BAAL,CACrBN,mBADqB,EAErBG,WAFqB,iBAGbN,OAAO,CAACU,IAHK,YAVvB;;AAAA;AAUOC,gBAAAA,OAVP;AAAA;AAAA,uBAgBO,KAAKC,IAAL,CAAUT,mBAAV,CAhBP;;AAAA;AAAA,iDAkBQQ,OAlBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAD0CE,2B","sourcesContent":["import pathUtil from 'path'\nimport { TestOptions } from '@sprucelabs/spruce-templates'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nexport default class TestGenerator extends AbstractWriter {\n\tpublic async generateTest(\n\t\tdestinationDir: string,\n\t\toptions: TestOptions & { type: string }\n\t) {\n\t\tconst { namePascal } = options\n\t\tconst filename = `${namePascal}.test.ts`\n\n\t\tconst resolvedDestination = pathUtil.join(destinationDir, filename)\n\t\tconst testContent = this.templates.test(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\ttestContent,\n\t\t\t`Your ${options.type} test.`\n\t\t)\n\n\t\tawait this.lint(resolvedDestination)\n\n\t\treturn results\n\t}\n}\n"],"file":"TestWriter.js"}
1
+ {"version":3,"file":"TestWriter.js","names":["TestGenerator","destinationDir","options","namePascal","filename","resolvedDestination","pathUtil","join","testContent","templates","test","writeFileIfChangedMixinResults","type","results","lint","AbstractWriter"],"sources":["../../../../src/features/test/writers/TestWriter.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { TestOptions } from '@sprucelabs/spruce-templates'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nexport default class TestGenerator extends AbstractWriter {\n\tpublic async generateTest(\n\t\tdestinationDir: string,\n\t\toptions: TestOptions & { type: string }\n\t) {\n\t\tconst { namePascal } = options\n\t\tconst filename = `${namePascal}.test.ts`\n\n\t\tconst resolvedDestination = pathUtil.join(destinationDir, filename)\n\t\tconst testContent = this.templates.test(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\ttestContent,\n\t\t\t`Your ${options.type} test.`\n\t\t)\n\n\t\tawait this.lint(resolvedDestination)\n\n\t\treturn results\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAEqBA,a;;;;;;;;;;;;;wGACpB,iBACCC,cADD,EAECC,OAFD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAISC,UAJT,GAIwBD,OAJxB,CAISC,UAJT;gBAKOC,QALP,aAKqBD,UALrB;gBAOOE,mBAPP,GAO6BC,iBAASC,IAAT,CAAcN,cAAd,EAA8BG,QAA9B,CAP7B;gBAQOI,WARP,GAQqB,KAAKC,SAAL,CAAeC,IAAf,CAAoBR,OAApB,CARrB;gBAAA;gBAAA,OAUuB,KAAKS,8BAAL,CACrBN,mBADqB,EAErBG,WAFqB,iBAGbN,OAAO,CAACU,IAHK,YAVvB;;cAAA;gBAUOC,OAVP;gBAAA;gBAAA,OAgBO,KAAKC,IAAL,CAAUT,mBAAV,CAhBP;;cAAA;gBAAA,iCAkBQQ,OAlBR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAD0CE,2B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/universalDevDependencies.ts"],"names":["universalDevDependencies","name","isDev"],"mappings":";;;;;;AAAA,IAAMA,wBAAwB,GAAG,CAChC;AAAEC,EAAAA,IAAI,EAAE,kCAAR;AAA4CC,EAAAA,KAAK,EAAE;AAAnD,CADgC,EAEhC;AAAED,EAAAA,IAAI,EAAE,aAAR;AAAuBC,EAAAA,KAAK,EAAE;AAA9B,CAFgC,EAGhC;AAAED,EAAAA,IAAI,EAAE,YAAR;AAAsBC,EAAAA,KAAK,EAAE;AAA7B,CAHgC,EAIhC;AAAED,EAAAA,IAAI,EAAE,QAAR;AAAkBC,EAAAA,KAAK,EAAE;AAAzB,CAJgC,EAKhC;AAAED,EAAAA,IAAI,EAAE,sBAAR;AAAgCC,EAAAA,KAAK,EAAE;AAAvC,CALgC,EAMhC;AAAED,EAAAA,IAAI,EAAE,UAAR;AAAoBC,EAAAA,KAAK,EAAE;AAA3B,CANgC,EAOhC;AAAED,EAAAA,IAAI,EAAE,cAAR;AAAwBC,EAAAA,KAAK,EAAE;AAA/B,CAPgC,EAQhC;AAAED,EAAAA,IAAI,EAAE,cAAR;AAAwBC,EAAAA,KAAK,EAAE;AAA/B,CARgC,EAShC;AAAED,EAAAA,IAAI,EAAE,WAAR;AAAqBC,EAAAA,KAAK,EAAE;AAA5B,CATgC,EAUhC;AAAED,EAAAA,IAAI,EAAE,SAAR;AAAmBC,EAAAA,KAAK,EAAE;AAA1B,CAVgC,CAAjC;eAaeF,wB","sourcesContent":["const universalDevDependencies = [\n\t{ name: '@sprucelabs/resolve-path-aliases', isDev: true },\n\t{ name: '@types/node', isDev: true },\n\t{ name: 'typescript', isDev: true },\n\t{ name: 'eslint', isDev: true },\n\t{ name: 'eslint-config-spruce', isDev: true },\n\t{ name: 'prettier', isDev: true },\n\t{ name: 'chokidar-cli', isDev: true },\n\t{ name: 'concurrently', isDev: true },\n\t{ name: 'tsc-watch', isDev: true },\n\t{ name: 'ts-node', isDev: true },\n]\n\nexport default universalDevDependencies\n"],"file":"universalDevDependencies.js"}
1
+ {"version":3,"file":"universalDevDependencies.js","names":["universalDevDependencies","name","isDev"],"sources":["../../src/features/universalDevDependencies.ts"],"sourcesContent":["const universalDevDependencies = [\n\t{ name: '@sprucelabs/resolve-path-aliases', isDev: true },\n\t{ name: '@types/node', isDev: true },\n\t{ name: 'typescript', isDev: true },\n\t{ name: 'eslint', isDev: true },\n\t{ name: 'eslint-config-spruce', isDev: true },\n\t{ name: 'prettier', isDev: true },\n\t{ name: 'chokidar-cli', isDev: true },\n\t{ name: 'concurrently', isDev: true },\n\t{ name: 'tsc-watch', isDev: true },\n\t{ name: 'ts-node', isDev: true },\n]\n\nexport default universalDevDependencies\n"],"mappings":";;;;;;AAAA,IAAMA,wBAAwB,GAAG,CAChC;EAAEC,IAAI,EAAE,kCAAR;EAA4CC,KAAK,EAAE;AAAnD,CADgC,EAEhC;EAAED,IAAI,EAAE,aAAR;EAAuBC,KAAK,EAAE;AAA9B,CAFgC,EAGhC;EAAED,IAAI,EAAE,YAAR;EAAsBC,KAAK,EAAE;AAA7B,CAHgC,EAIhC;EAAED,IAAI,EAAE,QAAR;EAAkBC,KAAK,EAAE;AAAzB,CAJgC,EAKhC;EAAED,IAAI,EAAE,sBAAR;EAAgCC,KAAK,EAAE;AAAvC,CALgC,EAMhC;EAAED,IAAI,EAAE,UAAR;EAAoBC,KAAK,EAAE;AAA3B,CANgC,EAOhC;EAAED,IAAI,EAAE,cAAR;EAAwBC,KAAK,EAAE;AAA/B,CAPgC,EAQhC;EAAED,IAAI,EAAE,cAAR;EAAwBC,KAAK,EAAE;AAA/B,CARgC,EAShC;EAAED,IAAI,EAAE,WAAR;EAAqBC,KAAK,EAAE;AAA5B,CATgC,EAUhC;EAAED,IAAI,EAAE,SAAR;EAAmBC,KAAK,EAAE;AAA1B,CAVgC,CAAjC;eAaeF,wB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/universalFileDescriptions.ts"],"names":["universalFileDescriptions","path","description","shouldOverwriteWhenChanged"],"mappings":";;;;;;AAEA,IAAMA,yBAA4C,GAAG,CACpD;AACCC,EAAAA,IAAI,EAAE,eADP;AAECC,EAAAA,WAAW,EAAE,gDAFd;AAGCC,EAAAA,0BAA0B,EAAE;AAH7B,CADoD,EAMpD;AACCF,EAAAA,IAAI,EAAE,cADP;AAECC,EAAAA,WAAW,EAAE,gCAFd;AAGCC,EAAAA,0BAA0B,EAAE;AAH7B,CANoD,EAWpD;AACCF,EAAAA,IAAI,EAAE,YADP;AAECC,EAAAA,WAAW,EAAE,qBAFd;AAGCC,EAAAA,0BAA0B,EAAE;AAH7B,CAXoD,EAgBpD;AACCF,EAAAA,IAAI,EAAE,QADP;AAECC,EAAAA,WAAW,EAAE,0BAFd;AAGCC,EAAAA,0BAA0B,EAAE;AAH7B,CAhBoD,EAqBpD;AACCF,EAAAA,IAAI,EAAE,WADP;AAECC,EAAAA,WAAW,EAAE,4CAFd;AAGCC,EAAAA,0BAA0B,EAAE;AAH7B,CArBoD,EA0BpD;AACCF,EAAAA,IAAI,EAAE,cADP;AAECC,EAAAA,WAAW,EAAE,+BAFd;AAGCC,EAAAA,0BAA0B,EAAE;AAH7B,CA1BoD,EA+BpD;AACCF,EAAAA,IAAI,EAAE,eADP;AAECC,EAAAA,WAAW,EAAE,qBAFd;AAGCC,EAAAA,0BAA0B,EAAE;AAH7B,CA/BoD,EAoCpD;AACCF,EAAAA,IAAI,EAAE,uBADP;AAECC,EAAAA,WAAW,EAAE,kDAFd;AAGCC,EAAAA,0BAA0B,EAAE;AAH7B,CApCoD,CAArD;eA2CeH,yB","sourcesContent":["import { FileDescription } from '../types/cli.types'\n\nconst universalFileDescriptions: FileDescription[] = [\n\t{\n\t\tpath: '.eslintignore',\n\t\tdescription: 'Ignore things like build and node_module dirs.',\n\t\tshouldOverwriteWhenChanged: true,\n\t},\n\t{\n\t\tpath: '.eslintrc.js',\n\t\tdescription: 'Extends Spruce configurations.',\n\t\tshouldOverwriteWhenChanged: true,\n\t},\n\t{\n\t\tpath: '.gitignore',\n\t\tdescription: 'The usual suspects.',\n\t\tshouldOverwriteWhenChanged: false,\n\t},\n\t{\n\t\tpath: '.nvmrc',\n\t\tdescription: 'Keep node at the latest.',\n\t\tshouldOverwriteWhenChanged: true,\n\t},\n\t{\n\t\tpath: 'readme.md',\n\t\tdescription: \"Don't forget to update this at some point.\",\n\t\tshouldOverwriteWhenChanged: false,\n\t},\n\t{\n\t\tpath: 'package.json',\n\t\tdescription: 'All dependencies and scripts.',\n\t\tshouldOverwriteWhenChanged: false,\n\t},\n\t{\n\t\tpath: 'tsconfig.json',\n\t\tdescription: 'Maps #spruce paths.',\n\t\tshouldOverwriteWhenChanged: true,\n\t},\n\t{\n\t\tpath: '.spruce/settings.json',\n\t\tdescription: 'Tracks things like which features are installed.',\n\t\tshouldOverwriteWhenChanged: false,\n\t},\n]\n\nexport default universalFileDescriptions\n"],"file":"universalFileDescriptions.js"}
1
+ {"version":3,"file":"universalFileDescriptions.js","names":["universalFileDescriptions","path","description","shouldOverwriteWhenChanged"],"sources":["../../src/features/universalFileDescriptions.ts"],"sourcesContent":["import { FileDescription } from '../types/cli.types'\n\nconst universalFileDescriptions: FileDescription[] = [\n\t{\n\t\tpath: '.eslintignore',\n\t\tdescription: 'Ignore things like build and node_module dirs.',\n\t\tshouldOverwriteWhenChanged: true,\n\t},\n\t{\n\t\tpath: '.eslintrc.js',\n\t\tdescription: 'Extends Spruce configurations.',\n\t\tshouldOverwriteWhenChanged: true,\n\t},\n\t{\n\t\tpath: '.gitignore',\n\t\tdescription: 'The usual suspects.',\n\t\tshouldOverwriteWhenChanged: false,\n\t},\n\t{\n\t\tpath: '.nvmrc',\n\t\tdescription: 'Keep node at the latest.',\n\t\tshouldOverwriteWhenChanged: true,\n\t},\n\t{\n\t\tpath: 'readme.md',\n\t\tdescription: \"Don't forget to update this at some point.\",\n\t\tshouldOverwriteWhenChanged: false,\n\t},\n\t{\n\t\tpath: 'package.json',\n\t\tdescription: 'All dependencies and scripts.',\n\t\tshouldOverwriteWhenChanged: false,\n\t},\n\t{\n\t\tpath: 'tsconfig.json',\n\t\tdescription: 'Maps #spruce paths.',\n\t\tshouldOverwriteWhenChanged: true,\n\t},\n\t{\n\t\tpath: '.spruce/settings.json',\n\t\tdescription: 'Tracks things like which features are installed.',\n\t\tshouldOverwriteWhenChanged: false,\n\t},\n]\n\nexport default universalFileDescriptions\n"],"mappings":";;;;;;AAEA,IAAMA,yBAA4C,GAAG,CACpD;EACCC,IAAI,EAAE,eADP;EAECC,WAAW,EAAE,gDAFd;EAGCC,0BAA0B,EAAE;AAH7B,CADoD,EAMpD;EACCF,IAAI,EAAE,cADP;EAECC,WAAW,EAAE,gCAFd;EAGCC,0BAA0B,EAAE;AAH7B,CANoD,EAWpD;EACCF,IAAI,EAAE,YADP;EAECC,WAAW,EAAE,qBAFd;EAGCC,0BAA0B,EAAE;AAH7B,CAXoD,EAgBpD;EACCF,IAAI,EAAE,QADP;EAECC,WAAW,EAAE,0BAFd;EAGCC,0BAA0B,EAAE;AAH7B,CAhBoD,EAqBpD;EACCF,IAAI,EAAE,WADP;EAECC,WAAW,EAAE,4CAFd;EAGCC,0BAA0B,EAAE;AAH7B,CArBoD,EA0BpD;EACCF,IAAI,EAAE,cADP;EAECC,WAAW,EAAE,+BAFd;EAGCC,0BAA0B,EAAE;AAH7B,CA1BoD,EA+BpD;EACCF,IAAI,EAAE,eADP;EAECC,WAAW,EAAE,qBAFd;EAGCC,0BAA0B,EAAE;AAH7B,CA/BoD,EAoCpD;EACCF,IAAI,EAAE,uBADP;EAECC,WAAW,EAAE,kDAFd;EAGCC,0BAA0B,EAAE;AAH7B,CApCoD,CAArD;eA2CeH,yB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/universalScripts.ts"],"names":["universalScripts","clean","lint","rebuild","test"],"mappings":";;;;;;AAAA,IAAMA,gBAAgB,GAAG;AACxB,cAAY,yDADY;AAExB,eAAa,sDAFW;AAGxB,sBACC,gEAJuB;AAKxB,yBACC,oEANuB;AAOxB,eAAa,8BAPW;AAQxBC,EAAAA,KAAK,EAAE,kBARiB;AASxB,eAAa,6CATW;AAUxB,iBAAe,eAVS;AAWxB,wBAAsB,kDAXE;AAYxB,cAAY,gCAZY;AAaxBC,EAAAA,IAAI,EAAE,0BAbkB;AAcxB,cAAY,mBAdY;AAexB,sBAAoB,mDAfI;AAgBxBC,EAAAA,OAAO,EAAE,0CAhBe;AAiBxB,yBAAuB,iCAjBC;AAkBxB,wBAAsB,sCAlBE;AAmBxBC,EAAAA,IAAI,EAAE,MAnBkB;AAoBxB,qBACC,uEArBuB;AAsBxB,gBACC,qEAvBuB;AAwBxB,mBAAiB,gDAxBO;AAyBxB,eAAa;AAzBW,CAAzB;eA4BeJ,gB","sourcesContent":["const universalScripts = {\n\t'build.ci': 'yarn build.tsc && yarn build.resolve-paths && yarn lint',\n\t'build.dev': 'yarn build.tsc --sourceMap ; yarn resolve-paths.lint',\n\t'build.copy-files':\n\t\t\"mkdir -p build && rsync -avzq --exclude='*.ts' ./src/ ./build/\",\n\t'build.resolve-paths':\n\t\t\"resolve-path-aliases --target build --patterns '**/*.js,**/*.d.ts'\",\n\t'build.tsc': 'yarn build.copy-files && tsc',\n\tclean: 'yarn clean.build',\n\t'clean.all': 'yarn clean.dependencies && yarn clean.build',\n\t'clean.build': 'rm -rf build/',\n\t'clean.dependencies': 'rm -rf node_modules/ package-lock.json yarn.lock',\n\t'fix.lint': \"eslint --fix --cache '**/*.ts'\",\n\tlint: \"eslint --cache '**/*.ts'\",\n\t'lint.tsc': 'tsc -p . --noEmit',\n\t'post.watch.build': 'yarn build.copy-files && yarn build.resolve-paths',\n\trebuild: 'yarn clean.all && yarn && yarn build.dev',\n\t'update.dependencies': 'yarn clean.dependencies && yarn',\n\t'resolve-paths.lint': 'yarn build.resolve-paths ; yarn lint',\n\ttest: 'jest',\n\t'watch.build.dev':\n\t\t\"tsc-watch --sourceMap --onCompilationComplete 'yarn post.watch.build'\",\n\t'watch.lint':\n\t\t\"concurrently 'yarn lint' \\\"chokidar 'src/**/*' -c 'yarn lint.tsc'\\\"\",\n\t'watch.rebuild': 'yarn clean.all && yarn && yarn watch.build.dev',\n\t'watch.tsc': 'tsc -w',\n}\n\nexport default universalScripts\n"],"file":"universalScripts.js"}
1
+ {"version":3,"file":"universalScripts.js","names":["universalScripts","clean","lint","rebuild","test"],"sources":["../../src/features/universalScripts.ts"],"sourcesContent":["const universalScripts = {\n\t'build.ci': 'yarn build.tsc && yarn build.resolve-paths && yarn lint',\n\t'build.dev': 'yarn build.tsc --sourceMap ; yarn resolve-paths.lint',\n\t'build.copy-files':\n\t\t\"mkdir -p build && rsync -avzq --exclude='*.ts' ./src/ ./build/\",\n\t'build.resolve-paths':\n\t\t\"resolve-path-aliases --target build --patterns '**/*.js,**/*.d.ts'\",\n\t'build.tsc': 'yarn build.copy-files && tsc',\n\tclean: 'yarn clean.build',\n\t'clean.all': 'yarn clean.dependencies && yarn clean.build',\n\t'clean.build': 'rm -rf build/',\n\t'clean.dependencies': 'rm -rf node_modules/ package-lock.json yarn.lock',\n\t'fix.lint': \"eslint --fix --cache '**/*.ts'\",\n\tlint: \"eslint --cache '**/*.ts'\",\n\t'lint.tsc': 'tsc -p . --noEmit',\n\t'post.watch.build': 'yarn build.copy-files && yarn build.resolve-paths',\n\trebuild: 'yarn clean.all && yarn && yarn build.dev',\n\t'update.dependencies': 'yarn clean.dependencies && yarn',\n\t'resolve-paths.lint': 'yarn build.resolve-paths ; yarn lint',\n\ttest: 'jest',\n\t'watch.build.dev':\n\t\t\"tsc-watch --sourceMap --onCompilationComplete 'yarn post.watch.build'\",\n\t'watch.lint':\n\t\t\"concurrently 'yarn lint' \\\"chokidar 'src/**/*' -c 'yarn lint.tsc'\\\"\",\n\t'watch.rebuild': 'yarn clean.all && yarn && yarn watch.build.dev',\n\t'watch.tsc': 'tsc -w',\n}\n\nexport default universalScripts\n"],"mappings":";;;;;;AAAA,IAAMA,gBAAgB,GAAG;EACxB,YAAY,yDADY;EAExB,aAAa,sDAFW;EAGxB,oBACC,gEAJuB;EAKxB,uBACC,oEANuB;EAOxB,aAAa,8BAPW;EAQxBC,KAAK,EAAE,kBARiB;EASxB,aAAa,6CATW;EAUxB,eAAe,eAVS;EAWxB,sBAAsB,kDAXE;EAYxB,YAAY,gCAZY;EAaxBC,IAAI,EAAE,0BAbkB;EAcxB,YAAY,mBAdY;EAexB,oBAAoB,mDAfI;EAgBxBC,OAAO,EAAE,0CAhBe;EAiBxB,uBAAuB,iCAjBC;EAkBxB,sBAAsB,sCAlBE;EAmBxBC,IAAI,EAAE,MAnBkB;EAoBxB,mBACC,uEArBuB;EAsBxB,cACC,qEAvBuB;EAwBxB,iBAAiB,gDAxBO;EAyBxB,aAAa;AAzBW,CAAzB;eA4BeJ,gB"}
@@ -2,8 +2,8 @@ import { Schema, SchemaPartialValues, SchemaValuesWithDefaults } from '@sprucela
2
2
  declare type StripNulls<T extends Record<string, any>> = {
3
3
  [K in keyof T]: Exclude<T[K], null>;
4
4
  };
5
- declare const validateAndNormalizeUtil: {
5
+ declare const validateAndNormalizer: {
6
6
  validateAndNormalize<S extends Schema = Schema>(schema: S, options: SchemaPartialValues<S, false>): StripNulls<SchemaValuesWithDefaults<S>>;
7
7
  stripUndefined(normalized: Record<string, any>): {};
8
8
  };
9
- export default validateAndNormalizeUtil;
9
+ export default validateAndNormalizer;
@@ -15,7 +15,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
15
15
 
16
16
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
17
 
18
- var validateAndNormalizeUtil = {
18
+ var validateAndNormalizer = {
19
19
  validateAndNormalize: function validateAndNormalize(schema, options) {
20
20
  var values = _objectSpread(_objectSpread({}, (0, _schema.defaultSchemaValues)(schema)), this.stripUndefined(options));
21
21
 
@@ -35,6 +35,6 @@ var validateAndNormalizeUtil = {
35
35
  return noUndefined;
36
36
  }
37
37
  };
38
- var _default = validateAndNormalizeUtil;
38
+ var _default = validateAndNormalizer;
39
39
  exports["default"] = _default;
40
40
  //# sourceMappingURL=validateAndNormalize.utility.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/features/validateAndNormalize.utility.ts"],"names":["validateAndNormalizeUtil","validateAndNormalize","schema","options","values","stripUndefined","normalized","noUndefined","Object","keys","forEach","key","undefined"],"mappings":";;;;;;;;;;;AAAA;;;;;;AAaA,IAAMA,wBAAwB,GAAG;AAChCC,EAAAA,oBADgC,gCAE/BC,MAF+B,EAG/BC,OAH+B,EAI9B;AACD,QAAMC,MAAM,mCACR,iCAAoBF,MAApB,CADQ,GAER,KAAKG,cAAL,CAAoBF,OAApB,CAFQ,CAAZ;;AAKA,sCAAqBD,MAArB,EAA6BE,MAA7B,EAAqC,EAArC;AAEA,QAAME,UAAU,GAAG,mCAAsBJ,MAAtB,EAA8BE,MAA9B,CAAnB;AAEA,WAAO,KAAKC,cAAL,CAAoBC,UAApB,CAAP;AAGA,GAjB+B;AAmBhCD,EAAAA,cAnBgC,0BAmBjBC,UAnBiB,EAmBgB;AAC/C,QAAMC,WAAW,GAAG,EAApB;AAEAC,IAAAA,MAAM,CAACC,IAAP,CAAYH,UAAZ,EAAwBI,OAAxB,CAAgC,UAACC,GAAD,EAAiB;AAChD;AACA,UAAIL,UAAU,CAACK,GAAD,CAAV,KAAoBC,SAAxB,EAAmC;AAClC;AACAL,QAAAA,WAAW,CAACI,GAAD,CAAX,GAAmBL,UAAU,CAACK,GAAD,CAA7B;AACA;AACD,KAND;AAOA,WAAOJ,WAAP;AACA;AA9B+B,CAAjC;eAiCeP,wB","sourcesContent":["import {\n\tdefaultSchemaValues,\n\tnormalizeSchemaValues,\n\tSchema,\n\tSchemaPartialValues,\n\tSchemaValuesWithDefaults,\n\tvalidateSchemaValues,\n} from '@sprucelabs/schema'\n\ntype StripNulls<T extends Record<string, any>> = {\n\t[K in keyof T]: Exclude<T[K], null>\n}\n\nconst validateAndNormalizeUtil = {\n\tvalidateAndNormalize<S extends Schema = Schema>(\n\t\tschema: S,\n\t\toptions: SchemaPartialValues<S, false>\n\t) {\n\t\tconst values = {\n\t\t\t...defaultSchemaValues(schema),\n\t\t\t...this.stripUndefined(options),\n\t\t} as SchemaPartialValues<S, false>\n\n\t\tvalidateSchemaValues(schema, values, {})\n\n\t\tconst normalized = normalizeSchemaValues(schema, values)\n\n\t\treturn this.stripUndefined(normalized) as StripNulls<\n\t\t\tSchemaValuesWithDefaults<S>\n\t\t>\n\t},\n\n\tstripUndefined(normalized: Record<string, any>) {\n\t\tconst noUndefined = {}\n\n\t\tObject.keys(normalized).forEach((key: string) => {\n\t\t\t// @ts-ignore\n\t\t\tif (normalized[key] !== undefined) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tnoUndefined[key] = normalized[key]\n\t\t\t}\n\t\t})\n\t\treturn noUndefined\n\t},\n}\n\nexport default validateAndNormalizeUtil\n"],"file":"validateAndNormalize.utility.js"}
1
+ {"version":3,"file":"validateAndNormalize.utility.js","names":["validateAndNormalizer","validateAndNormalize","schema","options","values","stripUndefined","normalized","noUndefined","Object","keys","forEach","key","undefined"],"sources":["../../src/features/validateAndNormalize.utility.ts"],"sourcesContent":["import {\n\tdefaultSchemaValues,\n\tnormalizeSchemaValues,\n\tSchema,\n\tSchemaPartialValues,\n\tSchemaValuesWithDefaults,\n\tvalidateSchemaValues,\n} from '@sprucelabs/schema'\n\ntype StripNulls<T extends Record<string, any>> = {\n\t[K in keyof T]: Exclude<T[K], null>\n}\n\nconst validateAndNormalizer = {\n\tvalidateAndNormalize<S extends Schema = Schema>(\n\t\tschema: S,\n\t\toptions: SchemaPartialValues<S, false>\n\t) {\n\t\tconst values = {\n\t\t\t...defaultSchemaValues(schema),\n\t\t\t...this.stripUndefined(options),\n\t\t} as SchemaPartialValues<S, false>\n\n\t\tvalidateSchemaValues(schema, values, {})\n\n\t\tconst normalized = normalizeSchemaValues(schema, values)\n\n\t\treturn this.stripUndefined(normalized) as StripNulls<\n\t\t\tSchemaValuesWithDefaults<S>\n\t\t>\n\t},\n\n\tstripUndefined(normalized: Record<string, any>) {\n\t\tconst noUndefined = {}\n\n\t\tObject.keys(normalized).forEach((key: string) => {\n\t\t\t// @ts-ignore\n\t\t\tif (normalized[key] !== undefined) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tnoUndefined[key] = normalized[key]\n\t\t\t}\n\t\t})\n\t\treturn noUndefined\n\t},\n}\n\nexport default validateAndNormalizer\n"],"mappings":";;;;;;;;;;;AAAA;;;;;;AAaA,IAAMA,qBAAqB,GAAG;EAC7BC,oBAD6B,gCAE5BC,MAF4B,EAG5BC,OAH4B,EAI3B;IACD,IAAMC,MAAM,mCACR,iCAAoBF,MAApB,CADQ,GAER,KAAKG,cAAL,CAAoBF,OAApB,CAFQ,CAAZ;;IAKA,kCAAqBD,MAArB,EAA6BE,MAA7B,EAAqC,EAArC;IAEA,IAAME,UAAU,GAAG,mCAAsBJ,MAAtB,EAA8BE,MAA9B,CAAnB;IAEA,OAAO,KAAKC,cAAL,CAAoBC,UAApB,CAAP;EAGA,CAjB4B;EAmB7BD,cAnB6B,0BAmBdC,UAnBc,EAmBmB;IAC/C,IAAMC,WAAW,GAAG,EAApB;IAEAC,MAAM,CAACC,IAAP,CAAYH,UAAZ,EAAwBI,OAAxB,CAAgC,UAACC,GAAD,EAAiB;MAChD;MACA,IAAIL,UAAU,CAACK,GAAD,CAAV,KAAoBC,SAAxB,EAAmC;QAClC;QACAL,WAAW,CAACI,GAAD,CAAX,GAAmBL,UAAU,CAACK,GAAD,CAA7B;MACA;IACD,CAND;IAOA,OAAOJ,WAAP;EACA;AA9B4B,CAA9B;eAiCeP,qB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/view/ViewFeature.ts"],"names":["ViewFeature","options","diskUtil","resolvePath","__dirname","name","code","isRequired","emitter","on","payload","featureCode","actionCode","featureInstaller","isInstalled","Writer","writePlugin","cwd","files","abstractClasses","label","Service","add","id","namespace","AbstractFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAaqBA,W;;;;;AA8BpB,uBAAmBC,OAAnB,EAA2C;AAAA;;AAAA;AAC1C,8BAAMA,OAAN;AAD0C,qGA7BrB,OA6BqB;AAAA,oGA5BtB,oDA4BsB;AAAA,6FA3BhB,MA2BgB;AAAA,mGA1BvBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CA0BuB;AAAA,4GAxBS,CACnD;AACCC,MAAAA,IAAI,EAAE;AADP,KADmD,EAInD;AACCA,MAAAA,IAAI,EAAE;AADP,KAJmD,CAwBT;AAAA,qGAfA,CAC1C;AACCC,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAD0C,EAK1C;AACCD,MAAAA,IAAI,EAAE,QADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAL0C,EAS1C;AACCD,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAT0C,CAeA;AAG1C,SAAK,MAAKC,OAAL,CAAaC,EAAb,CAAgB,qBAAhB;AAAA,+FAAuC,iBAAOC,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACnCC,gBAAAA,WADmC,GACPD,OADO,CACnCC,WADmC,EACtBC,UADsB,GACPF,OADO,CACtBE,UADsB;AAAA;AAAA,uBAEjB,MAAKC,gBAAL,CAAsBC,WAAtB,CAAkC,MAAlC,CAFiB;;AAAA;AAErCA,gBAAAA,WAFqC;;AAAA,sBAIvCA,WAAW,IAAIH,WAAW,KAAK,MAA/B,IAAyCC,UAAU,KAAK,SAJjB;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAKtB,MAAKG,MAAL,CAAY,MAAZ,EAAoBC,WAApB,CAAgC,MAAKC,GAArC,CALsB;;AAAA;AAKpCC,gBAAAA,KALoC;AAAA,iDAMnC;AACNA,kBAAAA,KAAK,EAALA;AADM,iBANmC;;AAAA;AAAA,iDAUpC,EAVoC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAvC;;AAAA;AAAA;AAAA;AAAA,QAAL;AAaA,SAAK,MAAKV,OAAL,CAAaC,EAAb,CAAgB,qCAAhB,6FAAuD;AAAA;AAAA;AAAA;AAAA;AAAA,gDACpD;AACNU,gBAAAA,eAAe,EAAE,CAChB;AACCd,kBAAAA,IAAI,EAAE,4BADP;AAECe,kBAAAA,KAAK,EAAE,4BAFR;AAGC,4BAAQ,gCAHT;AAICT,kBAAAA,WAAW,EAAE;AAJd,iBADgB;AADX,eADoD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAvD,GAAL;AAhB0C;AA4B1C;;;;;+GAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACqB,KAAKI,MAAL,CAAY,MAAZ,EAAoBC,WAApB,CAAgC,KAAKC,GAArC,CADrB;;AAAA;AACOC,gBAAAA,KADP;AAGC,qBAAKG,OAAL,CAAa,YAAb,EAA2BC,GAA3B,CAA+B;AAC9BC,kBAAAA,EAAE,EAAE,IAD0B;AAE9BC,kBAAAA,SAAS,EAAE;AAFmB,iBAA/B;AAHD,kDAQQ;AAAEN,kBAAAA,KAAK,EAALA;AAAF,iBARR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EA5DwCO,4B","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tview: ViewFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tview: undefined\n\t}\n}\n\nexport default class ViewFeature extends AbstractFeature {\n\tpublic nameReadable = 'views'\n\tpublic description = 'Views: Create views using the Heartwood framework.'\n\tpublic code: FeatureCode = 'view'\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/heartwood-view-controllers@latest',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-view-plugin@latest',\n\t\t},\n\t]\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t\t{\n\t\t\tcode: 'schema',\n\t\t\tisRequired: true,\n\t\t},\n\t\t{\n\t\t\tcode: 'event',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.did-execute', async (payload) => {\n\t\t\tconst { featureCode, actionCode } = payload\n\t\t\tconst isInstalled = await this.featureInstaller.isInstalled('view')\n\n\t\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\t\tconst files = await this.Writer('view').writePlugin(this.cwd)\n\t\t\t\treturn {\n\t\t\t\t\tfiles,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid this.emitter.on('test.register-abstract-test-classes', async () => {\n\t\t\treturn {\n\t\t\t\tabstractClasses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'AbstractViewControllerTest',\n\t\t\t\t\t\tlabel: 'AbstractViewControllerTest',\n\t\t\t\t\t\timport: '@sprucelabs/spruce-view-plugin',\n\t\t\t\t\t\tfeatureCode: 'view',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tconst files = await this.Writer('view').writePlugin(this.cwd)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: '**',\n\t\t\tnamespace: 'heartwood',\n\t\t})\n\n\t\treturn { files }\n\t}\n}\n"],"file":"ViewFeature.js"}
1
+ {"version":3,"file":"ViewFeature.js","names":["ViewFeature","options","diskUtil","resolvePath","__dirname","name","code","isRequired","emitter","on","payload","featureCode","actionCode","featureInstaller","isInstalled","Writer","writePlugin","cwd","files","abstractClasses","label","Service","add","id","namespace","AbstractFeature"],"sources":["../../../src/features/view/ViewFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tview: ViewFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tview: undefined\n\t}\n}\n\nexport default class ViewFeature extends AbstractFeature {\n\tpublic nameReadable = 'views'\n\tpublic description = 'Views: Create views using the Heartwood framework.'\n\tpublic code: FeatureCode = 'view'\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/heartwood-view-controllers@latest',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-view-plugin@latest',\n\t\t},\n\t]\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t\t{\n\t\t\tcode: 'schema',\n\t\t\tisRequired: true,\n\t\t},\n\t\t{\n\t\t\tcode: 'event',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.did-execute', async (payload) => {\n\t\t\tconst { featureCode, actionCode } = payload\n\t\t\tconst isInstalled = await this.featureInstaller.isInstalled('view')\n\n\t\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\t\tconst files = await this.Writer('view').writePlugin(this.cwd)\n\t\t\t\treturn {\n\t\t\t\t\tfiles,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid this.emitter.on('test.register-abstract-test-classes', async () => {\n\t\t\treturn {\n\t\t\t\tabstractClasses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'AbstractViewControllerTest',\n\t\t\t\t\t\tlabel: 'AbstractViewControllerTest',\n\t\t\t\t\t\timport: '@sprucelabs/spruce-view-plugin',\n\t\t\t\t\t\tfeatureCode: 'view',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tconst files = await this.Writer('view').writePlugin(this.cwd)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: '**',\n\t\t\tnamespace: 'heartwood',\n\t\t})\n\n\t\treturn { files }\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAaqBA,W;;;;;EA8BpB,qBAAmBC,OAAnB,EAA2C;IAAA;;IAAA;IAC1C,0BAAMA,OAAN;IAD0C,iGA7BrB,OA6BqB;IAAA,gGA5BtB,oDA4BsB;IAAA,yFA3BhB,MA2BgB;IAAA,+FA1BvBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CA0BuB;IAAA,wGAxBS,CACnD;MACCC,IAAI,EAAE;IADP,CADmD,EAInD;MACCA,IAAI,EAAE;IADP,CAJmD,CAwBT;IAAA,iGAfA,CAC1C;MACCC,IAAI,EAAE,OADP;MAECC,UAAU,EAAE;IAFb,CAD0C,EAK1C;MACCD,IAAI,EAAE,QADP;MAECC,UAAU,EAAE;IAFb,CAL0C,EAS1C;MACCD,IAAI,EAAE,OADP;MAECC,UAAU,EAAE;IAFb,CAT0C,CAeA;IAG1C,KAAK,MAAKC,OAAL,CAAaC,EAAb,CAAgB,qBAAhB;MAAA,yFAAuC,iBAAOC,OAAP;QAAA;QAAA;UAAA;YAAA;cAAA;gBACnCC,WADmC,GACPD,OADO,CACnCC,WADmC,EACtBC,UADsB,GACPF,OADO,CACtBE,UADsB;gBAAA;gBAAA,OAEjB,MAAKC,gBAAL,CAAsBC,WAAtB,CAAkC,MAAlC,CAFiB;;cAAA;gBAErCA,WAFqC;;gBAAA,MAIvCA,WAAW,IAAIH,WAAW,KAAK,MAA/B,IAAyCC,UAAU,KAAK,SAJjB;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAKtB,MAAKG,MAAL,CAAY,MAAZ,EAAoBC,WAApB,CAAgC,MAAKC,GAArC,CALsB;;cAAA;gBAKpCC,KALoC;gBAAA,iCAMnC;kBACNA,KAAK,EAALA;gBADM,CANmC;;cAAA;gBAAA,iCAUpC,EAVoC;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAAvC;;MAAA;QAAA;MAAA;IAAA,IAAL;IAaA,KAAK,MAAKV,OAAL,CAAaC,EAAb,CAAgB,qCAAhB,6FAAuD;MAAA;QAAA;UAAA;YAAA;cAAA,kCACpD;gBACNU,eAAe,EAAE,CAChB;kBACCd,IAAI,EAAE,4BADP;kBAECe,KAAK,EAAE,4BAFR;kBAGC,UAAQ,gCAHT;kBAICT,WAAW,EAAE;gBAJd,CADgB;cADX,CADoD;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAvD,GAAL;IAhB0C;EA4B1C;;;;;+GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACqB,KAAKI,MAAL,CAAY,MAAZ,EAAoBC,WAApB,CAAgC,KAAKC,GAArC,CADrB;;cAAA;gBACOC,KADP;gBAGC,KAAKG,OAAL,CAAa,YAAb,EAA2BC,GAA3B,CAA+B;kBAC9BC,EAAE,EAAE,IAD0B;kBAE9BC,SAAS,EAAE;gBAFmB,CAA/B;gBAHD,kCAQQ;kBAAEN,KAAK,EAALA;gBAAF,CARR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EA5DwCO,4B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/view/actions/CreateAction.ts"],"names":["viewTypeChoices","value","label","viewModels","sort","optionsSchema","id","description","fields","viewType","type","isRequired","options","choices","isRoot","nameReadable","namedTemplateItemBuilder","namePascal","viewModel","hint","map","model","followUpSchema","CreateAction","validateAndNormalizeOptions","writer","Writer","doesRootControllerExist","cwd","ui","confirm","form","FormComponent","schema","onWillAskQuestion","formUtil","onWillAskQuestionHandler","present","answers","prompt","namesUtil","toPascal","nameKebab","toKebab","files","Action","execute","syncResults","merged","actionUtil","mergeActionResults","AbstractAction"],"mappings":"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","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport FormComponent from '../../../components/FormComponent'\nimport namedTemplateItemBuilder from '../../../schemas/v2020_07_22/namedTemplateItem.builder'\nimport actionUtil from '../../../utilities/action.utility'\nimport formUtil from '../../../utilities/form.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst viewTypeChoices = [\n\t{\n\t\tvalue: 'skillView',\n\t\tlabel: 'Skill View Controller',\n\t},\n\t{\n\t\tvalue: 'view',\n\t\tlabel: 'View Controller',\n\t},\n]\n\nconst viewModels = [\n\t'BigForm',\n\t'Button',\n\t'Calendar',\n\t'Card',\n\t'CardBody',\n\t'CardHeader',\n\t'Dialog',\n\t'Form',\n\t'List',\n\t'CalendarEvent',\n].sort()\n\nconst optionsSchema = buildSchema({\n\tid: 'createViewOptions',\n\tdescription:\n\t\t'Create a new Heartwood view to render on web enabled and mobile devices.',\n\tfields: {\n\t\tviewType: {\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Which are you creating?',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: viewTypeChoices,\n\t\t\t},\n\t\t},\n\t\tisRoot: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Make this the Root View Controller?',\n\t\t},\n\t\tnameReadable: {\n\t\t\t...namedTemplateItemBuilder.fields.nameReadable,\n\t\t\tlabel: 'Controller name',\n\t\t\tisRequired: false,\n\t\t},\n\t\tnamePascal: {\n\t\t\t...namedTemplateItemBuilder.fields.namePascal,\n\t\t\tisRequired: false,\n\t\t},\n\t\tviewModel: {\n\t\t\ttype: 'select',\n\t\t\tlabel: 'View model',\n\t\t\thint: 'Which type of view will your controller render?',\n\t\t\toptions: {\n\t\t\t\tchoices: viewModels.map((model) => ({ value: model, label: model })),\n\t\t\t},\n\t\t},\n\t},\n})\n\nconst followUpSchema = buildSchema({\n\tid: 'creatViewFollowup',\n\tfields: {\n\t\tnameReadable: {\n\t\t\t...optionsSchema.fields.nameReadable,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnamePascal: {\n\t\t\t...optionsSchema.fields.namePascal,\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['create.view']\n\tpublic invocationMessage = 'Creating your new view controller... 🌲'\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tlet { viewType, isRoot, nameReadable, namePascal, viewModel } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst writer = this.Writer('view')\n\n\t\tif (\n\t\t\tviewType === 'skillView' &&\n\t\t\t!isRoot &&\n\t\t\t!writer.doesRootControllerExist(this.cwd)\n\t\t) {\n\t\t\tisRoot = await this.ui.confirm(\n\t\t\t\t'Do you want to create a root view controller?'\n\t\t\t)\n\t\t}\n\n\t\tif (!isRoot && !nameReadable) {\n\t\t\tconst form = new FormComponent({\n\t\t\t\tui: this.ui,\n\t\t\t\tschema: followUpSchema,\n\t\t\t\tonWillAskQuestion: formUtil.onWillAskQuestionHandler,\n\t\t\t})\n\t\t\tconst answers = await form.present()\n\n\t\t\tnamePascal = answers.namePascal\n\t\t\tnameReadable = answers.nameReadable\n\t\t}\n\n\t\tif (isRoot) {\n\t\t\tnameReadable = 'Root'\n\t\t}\n\n\t\tif (!viewModel && viewType === 'view') {\n\t\t\tviewModel = await this.ui.prompt({\n\t\t\t\t...optionsSchema.fields.viewModel,\n\t\t\t\tisRequired: true,\n\t\t\t})\n\t\t}\n\n\t\tnamePascal = namePascal ?? namesUtil.toPascal(nameReadable as string)\n\n\t\tconst files = await writer[\n\t\t\tviewType === 'skillView'\n\t\t\t\t? 'writeSkillViewController'\n\t\t\t\t: 'writeViewController'\n\t\t](this.cwd, {\n\t\t\tviewType,\n\t\t\tnamePascal,\n\t\t\tviewModel: viewModel as string,\n\t\t\tnameKebab: namesUtil.toKebab(namePascal),\n\t\t})\n\n\t\tconst syncResults = await this.Action('view', 'sync').execute({})\n\n\t\tconst merged = actionUtil.mergeActionResults(\n\t\t\t{\n\t\t\t\tfiles,\n\t\t\t},\n\t\t\tsyncResults\n\t\t)\n\n\t\treturn merged\n\t}\n}\n"],"file":"CreateAction.js"}
1
+ {"version":3,"file":"CreateAction.js","names":["viewTypeChoices","value","label","viewModels","sort","optionsSchema","id","description","fields","viewType","type","isRequired","options","choices","isRoot","nameReadable","namedTemplateItemBuilder","namePascal","viewModel","hint","map","model","followUpSchema","CreateAction","validateAndNormalizeOptions","writer","Writer","doesRootControllerExist","cwd","ui","confirm","form","FormComponent","schema","onWillAskQuestion","formUtil","onWillAskQuestionHandler","present","answers","prompt","namesUtil","toPascal","nameKebab","toKebab","files","Action","execute","syncResults","merged","actionUtil","mergeActionResults","AbstractAction"],"sources":["../../../../src/features/view/actions/CreateAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport FormComponent from '../../../components/FormComponent'\nimport namedTemplateItemBuilder from '../../../schemas/v2020_07_22/namedTemplateItem.builder'\nimport actionUtil from '../../../utilities/action.utility'\nimport formUtil from '../../../utilities/form.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst viewTypeChoices = [\n\t{\n\t\tvalue: 'skillView',\n\t\tlabel: 'Skill View Controller',\n\t},\n\t{\n\t\tvalue: 'view',\n\t\tlabel: 'View Controller',\n\t},\n]\n\nconst viewModels = [\n\t'BigForm',\n\t'Button',\n\t'Calendar',\n\t'Card',\n\t'CardBody',\n\t'CardHeader',\n\t'Dialog',\n\t'Form',\n\t'List',\n\t'CalendarEvent',\n].sort()\n\nconst optionsSchema = buildSchema({\n\tid: 'createViewOptions',\n\tdescription:\n\t\t'Create a new Heartwood view to render on web enabled and mobile devices.',\n\tfields: {\n\t\tviewType: {\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Which are you creating?',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: viewTypeChoices,\n\t\t\t},\n\t\t},\n\t\tisRoot: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Make this the Root View Controller?',\n\t\t},\n\t\tnameReadable: {\n\t\t\t...namedTemplateItemBuilder.fields.nameReadable,\n\t\t\tlabel: 'Controller name',\n\t\t\tisRequired: false,\n\t\t},\n\t\tnamePascal: {\n\t\t\t...namedTemplateItemBuilder.fields.namePascal,\n\t\t\tisRequired: false,\n\t\t},\n\t\tviewModel: {\n\t\t\ttype: 'select',\n\t\t\tlabel: 'View model',\n\t\t\thint: 'Which type of view will your controller render?',\n\t\t\toptions: {\n\t\t\t\tchoices: viewModels.map((model) => ({ value: model, label: model })),\n\t\t\t},\n\t\t},\n\t},\n})\n\nconst followUpSchema = buildSchema({\n\tid: 'creatViewFollowup',\n\tfields: {\n\t\tnameReadable: {\n\t\t\t...optionsSchema.fields.nameReadable,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnamePascal: {\n\t\t\t...optionsSchema.fields.namePascal,\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['create.view']\n\tpublic invocationMessage = 'Creating your new view controller... 🌲'\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tlet { viewType, isRoot, nameReadable, namePascal, viewModel } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst writer = this.Writer('view')\n\n\t\tif (\n\t\t\tviewType === 'skillView' &&\n\t\t\t!isRoot &&\n\t\t\t!writer.doesRootControllerExist(this.cwd)\n\t\t) {\n\t\t\tisRoot = await this.ui.confirm(\n\t\t\t\t'Do you want to create a root view controller?'\n\t\t\t)\n\t\t}\n\n\t\tif (!isRoot && !nameReadable) {\n\t\t\tconst form = new FormComponent({\n\t\t\t\tui: this.ui,\n\t\t\t\tschema: followUpSchema,\n\t\t\t\tonWillAskQuestion: formUtil.onWillAskQuestionHandler,\n\t\t\t})\n\t\t\tconst answers = await form.present()\n\n\t\t\tnamePascal = answers.namePascal\n\t\t\tnameReadable = answers.nameReadable\n\t\t}\n\n\t\tif (isRoot) {\n\t\t\tnameReadable = 'Root'\n\t\t}\n\n\t\tif (!viewModel && viewType === 'view') {\n\t\t\tviewModel = await this.ui.prompt({\n\t\t\t\t...optionsSchema.fields.viewModel,\n\t\t\t\tisRequired: true,\n\t\t\t})\n\t\t}\n\n\t\tnamePascal = namePascal ?? namesUtil.toPascal(nameReadable as string)\n\n\t\tconst files = await writer[\n\t\t\tviewType === 'skillView'\n\t\t\t\t? 'writeSkillViewController'\n\t\t\t\t: 'writeViewController'\n\t\t](this.cwd, {\n\t\t\tviewType,\n\t\t\tnamePascal,\n\t\t\tviewModel: viewModel as string,\n\t\t\tnameKebab: namesUtil.toKebab(namePascal),\n\t\t})\n\n\t\tconst syncResults = await this.Action('view', 'sync').execute({})\n\n\t\tconst merged = actionUtil.mergeActionResults(\n\t\t\t{\n\t\t\t\tfiles,\n\t\t\t},\n\t\t\tsyncResults\n\t\t)\n\n\t\treturn merged\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/view/actions/CreateThemeAction.ts"],"names":["optionsSchema","id","description","fields","CreateThemeAction","_options","writer","Writer","doesThemeFileExist","cwd","errors","SpruceError","code","events","getFeature","syncResults","hasBeenSynced","Action","execute","writeTheme","files","results","actionUtil","mergeActionResults","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,aAAa,GAAG,yBAAY;AACjCC,EAAAA,EAAE,EAAE,oBAD6B;AAEjCC,EAAAA,WAAW,EAAE,gCAFoB;AAGjCC,EAAAA,MAAM,EAAE;AAHyB,CAAZ,CAAtB;;IAQqBC,iB;;;;;;;;;;;;;;;sGACGJ,a;uGACC,CAAC,cAAD,C;;;;;;;;mGAGxB,iBAAqBK,QAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AACOC,gBAAAA,MADP,GACgB,KAAKC,MAAL,CAAY,MAAZ,CADhB;;AAAA,qBAGKD,MAAM,CAACE,kBAAP,CAA0B,KAAKC,GAA/B,CAHL;AAAA;AAAA;AAAA;;AAAA,iDAIS;AACNC,kBAAAA,MAAM,EAAE,CACP,IAAIC,uBAAJ,CAAgB;AACfC,oBAAAA,IAAI,EAAE;AADS,mBAAhB,CADO;AADF,iBAJT;;AAAA;AAaOC,gBAAAA,MAbP,GAagB,KAAKC,UAAL,CAAgB,OAAhB,CAbhB;AAcKC,gBAAAA,WAdL,GAcmB,EAdnB;;AAAA,oBAgBMF,MAAM,CAACG,aAAP,EAhBN;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAiBsB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAjBtB;;AAAA;AAiBEH,gBAAAA,WAjBF;;AAAA;AAAA;AAAA,uBAoBqBT,MAAM,CAACa,UAAP,CAAkB,KAAKV,GAAvB,CApBrB;;AAAA;AAoBOW,gBAAAA,KApBP;AAqBOC,gBAAAA,OArBP,GAqBiB;AAAED,kBAAAA,KAAK,EAALA;AAAF,iBArBjB;AAAA,iDAuBQE,mBAAWC,kBAAX,CAA8BR,WAA9B,EAA2CM,OAA3C,CAvBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAL8CG,2B","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\n\nconst optionsSchema = buildSchema({\n\tid: 'createThemeOptions',\n\tdescription: 'Create a theme for your skill.',\n\tfields: {},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateThemeAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['create.theme']\n\tpublic invocationMessage = `Let's get pretty! 🤩`\n\n\tpublic async execute(_options: SchemaValues<OptionsSchema>) {\n\t\tconst writer = this.Writer('view')\n\n\t\tif (writer.doesThemeFileExist(this.cwd)) {\n\t\t\treturn {\n\t\t\t\terrors: [\n\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\tcode: 'THEME_EXISTS',\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t}\n\t\t}\n\n\t\tconst events = this.getFeature('event')\n\t\tlet syncResults = {}\n\n\t\tif (!events.hasBeenSynced()) {\n\t\t\tsyncResults = await this.Action('event', 'sync').execute({})\n\t\t}\n\n\t\tconst files = await writer.writeTheme(this.cwd)\n\t\tconst results = { files }\n\n\t\treturn actionUtil.mergeActionResults(syncResults, results)\n\t}\n}\n"],"file":"CreateThemeAction.js"}
1
+ {"version":3,"file":"CreateThemeAction.js","names":["optionsSchema","id","description","fields","CreateThemeAction","_options","writer","Writer","doesThemeFileExist","cwd","errors","SpruceError","code","events","getFeature","syncResults","hasBeenSynced","Action","execute","writeTheme","files","results","actionUtil","mergeActionResults","AbstractAction"],"sources":["../../../../src/features/view/actions/CreateThemeAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\n\nconst optionsSchema = buildSchema({\n\tid: 'createThemeOptions',\n\tdescription: 'Create a theme for your skill.',\n\tfields: {},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateThemeAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['create.theme']\n\tpublic invocationMessage = `Let's get pretty! 🤩`\n\n\tpublic async execute(_options: SchemaValues<OptionsSchema>) {\n\t\tconst writer = this.Writer('view')\n\n\t\tif (writer.doesThemeFileExist(this.cwd)) {\n\t\t\treturn {\n\t\t\t\terrors: [\n\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\tcode: 'THEME_EXISTS',\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t}\n\t\t}\n\n\t\tconst events = this.getFeature('event')\n\t\tlet syncResults = {}\n\n\t\tif (!events.hasBeenSynced()) {\n\t\t\tsyncResults = await this.Action('event', 'sync').execute({})\n\t\t}\n\n\t\tconst files = await writer.writeTheme(this.cwd)\n\t\tconst results = { files }\n\n\t\treturn actionUtil.mergeActionResults(syncResults, results)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,aAAa,GAAG,yBAAY;EACjCC,EAAE,EAAE,oBAD6B;EAEjCC,WAAW,EAAE,gCAFoB;EAGjCC,MAAM,EAAE;AAHyB,CAAZ,CAAtB;;IAQqBC,iB;;;;;;;;;;;;;;;sGACGJ,a;uGACC,CAAC,cAAD,C;;;;;;;;mGAGxB,iBAAqBK,QAArB;QAAA;QAAA;UAAA;YAAA;cAAA;gBACOC,MADP,GACgB,KAAKC,MAAL,CAAY,MAAZ,CADhB;;gBAAA,KAGKD,MAAM,CAACE,kBAAP,CAA0B,KAAKC,GAA/B,CAHL;kBAAA;kBAAA;gBAAA;;gBAAA,iCAIS;kBACNC,MAAM,EAAE,CACP,IAAIC,uBAAJ,CAAgB;oBACfC,IAAI,EAAE;kBADS,CAAhB,CADO;gBADF,CAJT;;cAAA;gBAaOC,MAbP,GAagB,KAAKC,UAAL,CAAgB,OAAhB,CAbhB;gBAcKC,WAdL,GAcmB,EAdnB;;gBAAA,IAgBMF,MAAM,CAACG,aAAP,EAhBN;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAiBsB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAjBtB;;cAAA;gBAiBEH,WAjBF;;cAAA;gBAAA;gBAAA,OAoBqBT,MAAM,CAACa,UAAP,CAAkB,KAAKV,GAAvB,CApBrB;;cAAA;gBAoBOW,KApBP;gBAqBOC,OArBP,GAqBiB;kBAAED,KAAK,EAALA;gBAAF,CArBjB;gBAAA,iCAuBQE,mBAAWC,kBAAX,CAA8BR,WAA9B,EAA2CM,OAA3C,CAvBR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAL8CG,2B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/view/actions/SyncAction.ts"],"names":["optionsSchema","id","description","fields","SyncAction","_options","targetDir","diskUtil","resolvePath","cwd","matches","length","paths","map","m","introspect","introspectionUtil","vcTemplateItems","svcTemplateItems","forEach","classes","thisClass","mapIntrospectedClassToTemplateItem","vc","svc","push","Store","loadCurrentSkillsNamespace","namespace","Writer","writeCombinedViewsFile","namespaceKebab","namesUtil","toKebab","files","c","item","staticProperties","namePascal","className","path","classPath","endsWith","AbstractAction"],"mappings":"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","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { VcTemplateItem } from '../../../../../spruce-templates/build'\nimport introspectionUtil, {\n\tIntrospectionClass,\n} from '../../../utilities/introspection.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'syncViewsOptions',\n\tdescription: 'Keep types and generated files based on views in sync.',\n\tfields: {},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class SyncAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['sync.views']\n\tpublic invocationMessage = 'Syncing view controller types... 🌲'\n\n\tpublic async execute(\n\t\t_options: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tconst targetDir = diskUtil.resolvePath(this.cwd, 'src')\n\t\tconst matches = await globby(['**/*.svc.ts', '**/*.vc.ts'], {\n\t\t\tcwd: targetDir,\n\t\t})\n\n\t\tif (matches.length === 0) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst paths = matches.map((m) => diskUtil.resolvePath(targetDir, m))\n\t\tconst introspect = introspectionUtil.introspect(paths)\n\n\t\tconst vcTemplateItems: VcTemplateItem[] = []\n\t\tconst svcTemplateItems: VcTemplateItem[] = []\n\n\t\tintrospect.forEach(({ classes }) => {\n\t\t\tfor (const thisClass of classes) {\n\t\t\t\tconst { vc, svc } = this.mapIntrospectedClassToTemplateItem(thisClass)\n\n\t\t\t\tif (vc) {\n\t\t\t\t\tvcTemplateItems.push(vc)\n\t\t\t\t} else if (svc) {\n\t\t\t\t\tsvcTemplateItems.push(svc)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tconst namespace = await this.Store('skill').loadCurrentSkillsNamespace()\n\t\tconst files = await this.Writer('view').writeCombinedViewsFile(this.cwd, {\n\t\t\tnamespaceKebab: namesUtil.toKebab(namespace),\n\t\t\tvcTemplateItems,\n\t\t\tsvcTemplateItems,\n\t\t})\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate mapIntrospectedClassToTemplateItem(c: IntrospectionClass): {\n\t\tvc?: VcTemplateItem\n\t\tsvc?: VcTemplateItem\n\t} {\n\t\tconst item = {\n\t\t\tid: c.staticProperties.id,\n\t\t\tnamePascal: c.className,\n\t\t\tpath: c.classPath,\n\t\t}\n\n\t\tlet vc: VcTemplateItem | undefined\n\t\tlet svc: VcTemplateItem | undefined\n\n\t\tif (c.classPath.endsWith('.svc.ts')) {\n\t\t\tsvc = item\n\t\t} else {\n\t\t\tvc = item\n\t\t}\n\n\t\treturn { svc, vc }\n\t}\n}\n"],"file":"SyncAction.js"}
1
+ {"version":3,"file":"SyncAction.js","names":["optionsSchema","id","description","fields","SyncAction","_options","targetDir","diskUtil","resolvePath","cwd","matches","length","paths","map","m","introspect","introspectionUtil","vcTemplateItems","svcTemplateItems","forEach","classes","thisClass","mapIntrospectedClassToTemplateItem","vc","svc","push","Store","loadCurrentSkillsNamespace","namespace","Writer","writeCombinedViewsFile","namespaceKebab","namesUtil","toKebab","files","c","item","staticProperties","namePascal","className","path","classPath","endsWith","AbstractAction"],"sources":["../../../../src/features/view/actions/SyncAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { VcTemplateItem } from '../../../../../spruce-templates/build'\nimport introspectionUtil, {\n\tIntrospectionClass,\n} from '../../../utilities/introspection.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'syncViewsOptions',\n\tdescription: 'Keep types and generated files based on views in sync.',\n\tfields: {},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class SyncAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['sync.views']\n\tpublic invocationMessage = 'Syncing view controller types... 🌲'\n\n\tpublic async execute(\n\t\t_options: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tconst targetDir = diskUtil.resolvePath(this.cwd, 'src')\n\t\tconst matches = await globby(['**/*.svc.ts', '**/*.vc.ts'], {\n\t\t\tcwd: targetDir,\n\t\t})\n\n\t\tif (matches.length === 0) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst paths = matches.map((m) => diskUtil.resolvePath(targetDir, m))\n\t\tconst introspect = introspectionUtil.introspect(paths)\n\n\t\tconst vcTemplateItems: VcTemplateItem[] = []\n\t\tconst svcTemplateItems: VcTemplateItem[] = []\n\n\t\tintrospect.forEach(({ classes }) => {\n\t\t\tfor (const thisClass of classes) {\n\t\t\t\tconst { vc, svc } = this.mapIntrospectedClassToTemplateItem(thisClass)\n\n\t\t\t\tif (vc) {\n\t\t\t\t\tvcTemplateItems.push(vc)\n\t\t\t\t} else if (svc) {\n\t\t\t\t\tsvcTemplateItems.push(svc)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tconst namespace = await this.Store('skill').loadCurrentSkillsNamespace()\n\t\tconst files = await this.Writer('view').writeCombinedViewsFile(this.cwd, {\n\t\t\tnamespaceKebab: namesUtil.toKebab(namespace),\n\t\t\tvcTemplateItems,\n\t\t\tsvcTemplateItems,\n\t\t})\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate mapIntrospectedClassToTemplateItem(c: IntrospectionClass): {\n\t\tvc?: VcTemplateItem\n\t\tsvc?: VcTemplateItem\n\t} {\n\t\tconst item = {\n\t\t\tid: c.staticProperties.id,\n\t\t\tnamePascal: c.className,\n\t\t\tpath: c.classPath,\n\t\t}\n\n\t\tlet vc: VcTemplateItem | undefined\n\t\tlet svc: VcTemplateItem | undefined\n\n\t\tif (c.classPath.endsWith('.svc.ts')) {\n\t\t\tsvc = item\n\t\t} else {\n\t\t\tvc = item\n\t\t}\n\n\t\treturn { svc, vc }\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/view/actions/WatchAction.ts"],"names":["optionsSchema","id","description","fields","shouldReturnImmediately","type","hint","WatchAction","options","validateAndNormalizeOptions","watchFeature","featureInstaller","getFeature","startWatching","delay","Store","loadCurrentSkill","skill","skillName","name","boot","bootControls","emitter","on","kill","Promise","resolve","stopWatching","summaryLines","meta","bootPromise","remote","Service","getRemote","heartwoodRemoteUtil","buildUrl","bootMessage","resetUi","Action","execute","onData","msg","includes","ui","stopLoading","renderLine","trim","startLoading","onError","GraphicsTextEffect","Red","results","then","errors","clear","renderHero","renderDivider","renderLines","getPreviewUrl","pid","AbstractAction"],"mappings":"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","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { heartwoodRemoteUtil } from '@sprucelabs/spruce-event-utils'\nimport { GraphicsTextEffect } from '@sprucelabs/spruce-skill-utils'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport { BootMeta } from '../../skill/actions/BootAction'\nimport WatchFeature from '../../watch/WatchFeature'\n\nconst optionsSchema = buildSchema({\n\tid: 'watchViewsOptions',\n\tdescription: 'Watch for view changes and preview them in real time.',\n\tfields: {\n\t\tshouldReturnImmediately: {\n\t\t\ttype: 'boolean',\n\t\t\thint: \"For testing so we don't wait until the process is killed to get the results.\",\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class WatchAction extends AbstractAction<OptionsSchema> {\n\tpublic commandAliases = ['watch.views']\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic invocationMessage = 'Watching views... 🤩'\n\tprivate resolve?: () => void\n\tprivate bootControls?: BootMeta\n\tprivate skillName!: string\n\tprivate bootMessage!: string\n\tprivate watchFeature!: WatchFeature\n\n\tpublic async execute(options?: Options): Promise<FeatureActionResponse> {\n\t\tconst { shouldReturnImmediately } = this.validateAndNormalizeOptions(\n\t\t\toptions ?? {}\n\t\t)\n\n\t\tthis.watchFeature = this.featureInstaller.getFeature('watch')\n\t\tawait this.watchFeature.startWatching({ delay: 2000 })\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tthis.skillName = skill.name\n\t\tthis.bootControls = await this.boot()\n\n\t\tawait this.emitter.on('watcher.did-detect-change', async () => {\n\t\t\tthis.bootControls?.kill()\n\t\t\tthis.bootControls = await this.boot(\n\t\t\t\t'Changes detected, rebooting skill...'\n\t\t\t)\n\t\t})\n\n\t\tif (!shouldReturnImmediately) {\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthis.resolve = resolve\n\t\t\t})\n\n\t\t\tawait this.watchFeature.stopWatching()\n\t\t\tthis.bootControls?.kill()\n\t\t}\n\n\t\treturn {\n\t\t\tsummaryLines: [`Done watching...`],\n\t\t\tmeta: {\n\t\t\t\tbootPromise: this.bootControls.bootPromise,\n\t\t\t},\n\t\t}\n\t}\n\n\tprivate getPreviewUrl() {\n\t\tconst remote = this.Service('remote').getRemote() as any\n\t\treturn heartwoodRemoteUtil.buildUrl(remote) + '/#views/heartwood.watch'\n\t}\n\n\tprivate async boot(bootMessage = 'Booting skill...') {\n\t\tthis.bootMessage = bootMessage\n\t\tthis.resetUi()\n\n\t\tconst results = await this.Action('skill', 'boot').execute({\n\t\t\tshouldReturnImmediately: true,\n\t\t\tonData: (msg: string) => {\n\t\t\t\tif (!msg.includes('node build/index') && !msg.includes('yarn run')) {\n\t\t\t\t\tthis.ui.stopLoading()\n\t\t\t\t\tthis.ui.renderLine(msg.trim())\n\t\t\t\t\tthis.ui.startLoading(this.bootMessage)\n\t\t\t\t}\n\t\t\t},\n\t\t\tonError: (msg: string) => {\n\t\t\t\tif (!msg.includes('No license field')) {\n\t\t\t\t\tthis.ui.stopLoading()\n\t\t\t\t\tthis.ui.renderLine(msg, [GraphicsTextEffect.Red])\n\t\t\t\t\tthis.ui.startLoading()\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\t\tresults.meta?.bootPromise?.then(() => {\n\t\t\tthis.bootMessage = 'Skill booted. Waiting for changes...'\n\t\t\tthis.ui.startLoading(this.bootMessage)\n\t\t})\n\n\t\tif (results.errors) {\n\t\t\tthrow results.errors[0]\n\t\t}\n\n\t\treturn results.meta as BootMeta\n\t}\n\n\tprivate resetUi() {\n\t\tthis.ui.clear()\n\t\tthis.ui.renderHero('Heartwood')\n\t\tthis.ui.renderDivider()\n\t\tthis.ui.renderLines([\n\t\t\t'',\n\t\t\t`Skill: ${this.skillName}`,\n\t\t\t`Preview: ${this.getPreviewUrl()}`,\n\t\t\t'',\n\t\t])\n\t\tthis.ui.renderDivider()\n\t\tthis.ui.renderLine('')\n\t\tthis.ui.startLoading(this.bootMessage)\n\t}\n\n\tpublic async kill() {\n\t\tawait this.watchFeature.stopWatching()\n\t\tthis.bootControls?.kill()\n\t\tthis.resolve?.()\n\t}\n\n\tpublic getPid() {\n\t\treturn this.bootControls?.pid\n\t}\n}\n"],"file":"WatchAction.js"}
1
+ {"version":3,"file":"WatchAction.js","names":["optionsSchema","id","description","fields","shouldReturnImmediately","type","hint","WatchAction","options","validateAndNormalizeOptions","watchFeature","featureInstaller","getFeature","startWatching","delay","Store","loadCurrentSkill","skill","skillName","name","boot","bootControls","emitter","on","kill","Promise","resolve","stopWatching","summaryLines","meta","bootPromise","remote","Service","getRemote","heartwoodRemoteUtil","buildUrl","bootMessage","resetUi","Action","execute","onData","msg","includes","ui","stopLoading","renderLine","trim","startLoading","onError","GraphicsTextEffect","Red","results","then","errors","clear","renderHero","renderDivider","renderLines","getPreviewUrl","pid","AbstractAction"],"sources":["../../../../src/features/view/actions/WatchAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { heartwoodRemoteUtil } from '@sprucelabs/spruce-event-utils'\nimport { GraphicsTextEffect } from '@sprucelabs/spruce-skill-utils'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport { BootMeta } from '../../skill/actions/BootAction'\nimport WatchFeature from '../../watch/WatchFeature'\n\nconst optionsSchema = buildSchema({\n\tid: 'watchViewsOptions',\n\tdescription: 'Watch for view changes and preview them in real time.',\n\tfields: {\n\t\tshouldReturnImmediately: {\n\t\t\ttype: 'boolean',\n\t\t\thint: \"For testing so we don't wait until the process is killed to get the results.\",\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class WatchAction extends AbstractAction<OptionsSchema> {\n\tpublic commandAliases = ['watch.views']\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic invocationMessage = 'Watching views... 🤩'\n\tprivate resolve?: () => void\n\tprivate bootControls?: BootMeta\n\tprivate skillName!: string\n\tprivate bootMessage!: string\n\tprivate watchFeature!: WatchFeature\n\n\tpublic async execute(options?: Options): Promise<FeatureActionResponse> {\n\t\tconst { shouldReturnImmediately } = this.validateAndNormalizeOptions(\n\t\t\toptions ?? {}\n\t\t)\n\n\t\tthis.watchFeature = this.featureInstaller.getFeature('watch')\n\t\tawait this.watchFeature.startWatching({ delay: 2000 })\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tthis.skillName = skill.name\n\t\tthis.bootControls = await this.boot()\n\n\t\tawait this.emitter.on('watcher.did-detect-change', async () => {\n\t\t\tthis.bootControls?.kill()\n\t\t\tthis.bootControls = await this.boot(\n\t\t\t\t'Changes detected, rebooting skill...'\n\t\t\t)\n\t\t})\n\n\t\tif (!shouldReturnImmediately) {\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthis.resolve = resolve\n\t\t\t})\n\n\t\t\tawait this.watchFeature.stopWatching()\n\t\t\tthis.bootControls?.kill()\n\t\t}\n\n\t\treturn {\n\t\t\tsummaryLines: [`Done watching...`],\n\t\t\tmeta: {\n\t\t\t\tbootPromise: this.bootControls.bootPromise,\n\t\t\t},\n\t\t}\n\t}\n\n\tprivate getPreviewUrl() {\n\t\tconst remote = this.Service('remote').getRemote() as any\n\t\treturn heartwoodRemoteUtil.buildUrl(remote) + '/#views/heartwood.watch'\n\t}\n\n\tprivate async boot(bootMessage = 'Booting skill...') {\n\t\tthis.bootMessage = bootMessage\n\t\tthis.resetUi()\n\n\t\tconst results = await this.Action('skill', 'boot').execute({\n\t\t\tshouldReturnImmediately: true,\n\t\t\tonData: (msg: string) => {\n\t\t\t\tif (!msg.includes('node build/index') && !msg.includes('yarn run')) {\n\t\t\t\t\tthis.ui.stopLoading()\n\t\t\t\t\tthis.ui.renderLine(msg.trim())\n\t\t\t\t\tthis.ui.startLoading(this.bootMessage)\n\t\t\t\t}\n\t\t\t},\n\t\t\tonError: (msg: string) => {\n\t\t\t\tif (!msg.includes('No license field')) {\n\t\t\t\t\tthis.ui.stopLoading()\n\t\t\t\t\tthis.ui.renderLine(msg, [GraphicsTextEffect.Red])\n\t\t\t\t\tthis.ui.startLoading()\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\t\tresults.meta?.bootPromise?.then(() => {\n\t\t\tthis.bootMessage = 'Skill booted. Waiting for changes...'\n\t\t\tthis.ui.startLoading(this.bootMessage)\n\t\t})\n\n\t\tif (results.errors) {\n\t\t\tthrow results.errors[0]\n\t\t}\n\n\t\treturn results.meta as BootMeta\n\t}\n\n\tprivate resetUi() {\n\t\tthis.ui.clear()\n\t\tthis.ui.renderHero('Heartwood')\n\t\tthis.ui.renderDivider()\n\t\tthis.ui.renderLines([\n\t\t\t'',\n\t\t\t`Skill: ${this.skillName}`,\n\t\t\t`Preview: ${this.getPreviewUrl()}`,\n\t\t\t'',\n\t\t])\n\t\tthis.ui.renderDivider()\n\t\tthis.ui.renderLine('')\n\t\tthis.ui.startLoading(this.bootMessage)\n\t}\n\n\tpublic async kill() {\n\t\tawait this.watchFeature.stopWatching()\n\t\tthis.bootControls?.kill()\n\t\tthis.resolve?.()\n\t}\n\n\tpublic getPid() {\n\t\treturn this.bootControls?.pid\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/view/stores/ViewStore.ts"],"names":["ViewStore","connectToApi","shouldAuthAsCurrentSkill","client","skill","Service","getCurrentSkill","SpruceError","code","friendlyMessage","emit","target","namespace","slug","results","views","eventResponseUtil","getFirstResponseOrThrow","AbstractStore"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;IAEqBA,S;;;;;;;;;;;;;;;6FACN,M;;;;;;;2GAEd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACsB,KAAKC,YAAL,CAAkB;AAAEC,kBAAAA,wBAAwB,EAAE;AAA5B,iBAAlB,CADtB;;AAAA;AACOC,gBAAAA,MADP;AAEOC,gBAAAA,KAFP,GAEe,KAAKC,OAAL,CAAa,MAAb,EAAqBC,eAArB,EAFf;;AAAA,oBAIMF,KAJN;AAAA;AAAA;AAAA;;AAAA,sBAKQ,IAAIG,uBAAJ,CAAgB;AACrBC,kBAAAA,IAAI,EAAE,sBADe;AAErBC,kBAAAA,eAAe;AAFM,iBAAhB,CALR;;AAAA;AAAA;AAAA;AAAA,uBAYwBN,MAAM,CAACO,IAAP,CACrB,wCADqB,EAErB;AACCC,kBAAAA,MAAM,EAAE;AACPC,oBAAAA,SAAS,EAAER,KAAK,CAACS;AADV;AADT,iBAFqB,CAZxB;;AAAA;AAYQC,gBAAAA,OAZR;AAqBQC,gBAAAA,KArBR,GAqBgBC,oCAAkBC,uBAAlB,CAA0CH,OAA1C,CArBhB;AAAA,iDAuBSC,KAvBT;;AAAA;AAAA;AAAA;AAAA,iDAyBS,IAzBT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAHsCG,0B","sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\n\nexport default class ViewStore extends AbstractStore {\n\tpublic name = 'view'\n\n\tpublic async fetchSkillViews() {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\t\tconst skill = this.Service('auth').getCurrentSkill()\n\n\t\tif (!skill) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SKILL_NOT_REGISTERED',\n\t\t\t\tfriendlyMessage: `You can't get skill views without being registered. Try \\`spruce register\\``,\n\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tconst results = await client.emit(\n\t\t\t\t'heartwood.get-skill-views::v2021_02_11',\n\t\t\t\t{\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\tnamespace: skill.slug,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tconst views = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\treturn views\n\t\t} catch (err) {\n\t\t\treturn null\n\t\t}\n\t}\n}\n"],"file":"ViewStore.js"}
1
+ {"version":3,"file":"ViewStore.js","names":["ViewStore","connectToApi","shouldAuthAsCurrentSkill","client","skill","Service","getCurrentSkill","SpruceError","code","friendlyMessage","emit","target","namespace","slug","results","views","eventResponseUtil","getFirstResponseOrThrow","AbstractStore"],"sources":["../../../../src/features/view/stores/ViewStore.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\n\nexport default class ViewStore extends AbstractStore {\n\tpublic name = 'view'\n\n\tpublic async fetchSkillViews() {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\t\tconst skill = this.Service('auth').getCurrentSkill()\n\n\t\tif (!skill) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SKILL_NOT_REGISTERED',\n\t\t\t\tfriendlyMessage: `You can't get skill views without being registered. Try \\`spruce register\\``,\n\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tconst results = await client.emit(\n\t\t\t\t'heartwood.get-skill-views::v2021_02_11',\n\t\t\t\t{\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\tnamespace: skill.slug,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tconst views = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\treturn views\n\t\t} catch (err) {\n\t\t\treturn null\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;IAEqBA,S;;;;;;;;;;;;;;;6FACN,M;;;;;;;2GAEd;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACsB,KAAKC,YAAL,CAAkB;kBAAEC,wBAAwB,EAAE;gBAA5B,CAAlB,CADtB;;cAAA;gBACOC,MADP;gBAEOC,KAFP,GAEe,KAAKC,OAAL,CAAa,MAAb,EAAqBC,eAArB,EAFf;;gBAAA,IAIMF,KAJN;kBAAA;kBAAA;gBAAA;;gBAAA,MAKQ,IAAIG,uBAAJ,CAAgB;kBACrBC,IAAI,EAAE,sBADe;kBAErBC,eAAe;gBAFM,CAAhB,CALR;;cAAA;gBAAA;gBAAA;gBAAA,OAYwBN,MAAM,CAACO,IAAP,CACrB,wCADqB,EAErB;kBACCC,MAAM,EAAE;oBACPC,SAAS,EAAER,KAAK,CAACS;kBADV;gBADT,CAFqB,CAZxB;;cAAA;gBAYQC,OAZR;gBAqBQC,KArBR,GAqBgBC,oCAAkBC,uBAAlB,CAA0CH,OAA1C,CArBhB;gBAAA,iCAuBSC,KAvBT;;cAAA;gBAAA;gBAAA;gBAAA,iCAyBS,IAzBT;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAHsCG,0B"}
@@ -25,8 +25,6 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
25
25
 
26
26
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
27
 
28
- var _path = _interopRequireDefault(require("path"));
29
-
30
28
  var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
31
29
 
32
30
  var _SpruceError = _interopRequireDefault(require("../../../errors/SpruceError"));
@@ -107,7 +105,7 @@ var ViewWriter = /*#__PURE__*/function (_AbstractWriter) {
107
105
  value: function removeFileExtensionsFromTemplateItems(vcTemplateItems, destinationDir) {
108
106
  return vcTemplateItems.map(function (i) {
109
107
  return _objectSpread(_objectSpread({}, i), {}, {
110
- path: _path["default"].relative(destinationDir, i.path).replace('.ts', '')
108
+ path: _spruceSkillUtils.diskUtil.resolveRelativePath(destinationDir, i.path).replace('.ts', '')
111
109
  });
112
110
  });
113
111
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/view/writers/ViewWriter.ts"],"names":["ViewWriter","cwd","options","buildViewControllerPath","namePascal","path","writeController","viewType","vcTemplateItems","svcTemplateItems","rest","destinationDir","diskUtil","resolveHashSprucePath","destination","resolvePath","removeFileExtensionsFromTemplateItems","contents","templates","views","writeFileIfChangedMixinResults","results","map","i","pathUtil","relative","replace","viewModel","nameKebab","doesFileExist","SpruceError","code","name","skillViewController","viewController","lint","pluginContents","viewPlugin","buildThemePath","theme","ext","filename","AbstractWriter"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tVcTemplateItem,\n\tViewsOptions,\n} from '../../../../../spruce-templates/build'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nexport default class ViewWriter extends AbstractWriter {\n\tpublic writeSkillViewController(\n\t\tcwd: string,\n\t\toptions: {\n\t\t\tnamePascal: string\n\t\t\tnameKebab: string\n\t\t}\n\t) {\n\t\tconst { path } = this.buildViewControllerPath(\n\t\t\tcwd,\n\t\t\t'skillView',\n\t\t\toptions.namePascal\n\t\t)\n\n\t\treturn this.writeController(path, { ...options, viewType: 'skillView' })\n\t}\n\n\tpublic async writeCombinedViewsFile(cwd: string, options: ViewsOptions) {\n\t\tlet { vcTemplateItems, svcTemplateItems, ...rest } = options\n\n\t\tconst destinationDir = diskUtil.resolveHashSprucePath(cwd, 'views')\n\t\tconst destination = diskUtil.resolvePath(destinationDir, 'views.ts')\n\n\t\tvcTemplateItems = this.removeFileExtensionsFromTemplateItems(\n\t\t\tvcTemplateItems,\n\t\t\tdestinationDir\n\t\t)\n\n\t\tsvcTemplateItems = this.removeFileExtensionsFromTemplateItems(\n\t\t\tsvcTemplateItems,\n\t\t\tdestinationDir\n\t\t)\n\n\t\tconst contents = this.templates.views({\n\t\t\tvcTemplateItems,\n\t\t\tsvcTemplateItems,\n\t\t\t...rest,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'Used to export your controllers to Heartwood.'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tprivate removeFileExtensionsFromTemplateItems(\n\t\tvcTemplateItems: VcTemplateItem[],\n\t\tdestinationDir: string\n\t): VcTemplateItem[] {\n\t\treturn vcTemplateItems.map((i) => ({\n\t\t\t...i,\n\t\t\tpath: pathUtil.relative(destinationDir, i.path).replace('.ts', ''),\n\t\t}))\n\t}\n\n\tpublic writeViewController(\n\t\tcwd: string,\n\t\toptions: {\n\t\t\tviewType: string\n\t\t\tnamePascal: string\n\t\t\tviewModel: string\n\t\t\tnameKebab: string\n\t\t}\n\t) {\n\t\tconst { path } = this.buildViewControllerPath(\n\t\t\tcwd,\n\t\t\t'view',\n\t\t\toptions.namePascal\n\t\t)\n\n\t\treturn this.writeController(path, options)\n\t}\n\n\tprivate async writeController(path: string, options: any) {\n\t\tconst { namePascal, viewModel, viewType, nameKebab } = options\n\n\t\tif (diskUtil.doesFileExist(path)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SKILL_VIEW_EXISTS',\n\t\t\t\tname: namePascal,\n\t\t\t})\n\t\t}\n\n\t\tconst contents =\n\t\t\tviewType === 'skillView'\n\t\t\t\t? this.templates.skillViewController({ namePascal, nameKebab })\n\t\t\t\t: this.templates.viewController({ namePascal, viewModel, nameKebab })\n\n\t\tconst results = this.writeFileIfChangedMixinResults(path, contents, 'Test')\n\n\t\tawait this.lint(path)\n\n\t\treturn results\n\t}\n\n\tpublic doesRootControllerExist(cwd: string) {\n\t\tconst { path } = this.buildViewControllerPath(cwd, 'skillView', 'Root')\n\t\treturn diskUtil.doesFileExist(path)\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'view.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.viewPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Supports your skill with rendering views.'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tpublic writeTheme(cwd: string) {\n\t\tconst destination = this.buildThemePath(cwd)\n\n\t\tconst contents = this.templates.theme()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'Your brand new theme file!'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tprivate buildThemePath(cwd: string) {\n\t\treturn diskUtil.resolvePath(cwd, 'src', 'themes', 'skill.theme.ts')\n\t}\n\n\tpublic doesThemeFileExist(cwd: string) {\n\t\tconst destination = this.buildThemePath(cwd)\n\t\treturn diskUtil.doesFileExist(destination)\n\t}\n\n\tprivate buildViewControllerPath(\n\t\tcwd: string,\n\t\tviewType: 'skillView' | 'view',\n\t\tnamePascal: string\n\t) {\n\t\tconst ext = viewType === 'skillView' ? '.svc.ts' : '.vc.ts'\n\t\tconst filename = namePascal + ext\n\t\tconst path = diskUtil.resolvePath(\n\t\t\tcwd,\n\t\t\t'src',\n\t\t\tviewType + 'Controllers',\n\t\t\tfilename\n\t\t)\n\t\treturn { path, filename }\n\t}\n}\n"],"file":"ViewWriter.js"}
1
+ {"version":3,"file":"ViewWriter.js","names":["ViewWriter","cwd","options","buildViewControllerPath","namePascal","path","writeController","viewType","vcTemplateItems","svcTemplateItems","rest","destinationDir","diskUtil","resolveHashSprucePath","destination","resolvePath","removeFileExtensionsFromTemplateItems","contents","templates","views","writeFileIfChangedMixinResults","results","map","i","resolveRelativePath","replace","viewModel","nameKebab","doesFileExist","SpruceError","code","name","skillViewController","viewController","lint","pluginContents","viewPlugin","buildThemePath","theme","ext","filename","AbstractWriter"],"sources":["../../../../src/features/view/writers/ViewWriter.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tVcTemplateItem,\n\tViewsOptions,\n} from '../../../../../spruce-templates/build'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nexport default class ViewWriter extends AbstractWriter {\n\tpublic writeSkillViewController(\n\t\tcwd: string,\n\t\toptions: {\n\t\t\tnamePascal: string\n\t\t\tnameKebab: string\n\t\t}\n\t) {\n\t\tconst { path } = this.buildViewControllerPath(\n\t\t\tcwd,\n\t\t\t'skillView',\n\t\t\toptions.namePascal\n\t\t)\n\n\t\treturn this.writeController(path, { ...options, viewType: 'skillView' })\n\t}\n\n\tpublic async writeCombinedViewsFile(cwd: string, options: ViewsOptions) {\n\t\tlet { vcTemplateItems, svcTemplateItems, ...rest } = options\n\n\t\tconst destinationDir = diskUtil.resolveHashSprucePath(cwd, 'views')\n\t\tconst destination = diskUtil.resolvePath(destinationDir, 'views.ts')\n\n\t\tvcTemplateItems = this.removeFileExtensionsFromTemplateItems(\n\t\t\tvcTemplateItems,\n\t\t\tdestinationDir\n\t\t)\n\n\t\tsvcTemplateItems = this.removeFileExtensionsFromTemplateItems(\n\t\t\tsvcTemplateItems,\n\t\t\tdestinationDir\n\t\t)\n\n\t\tconst contents = this.templates.views({\n\t\t\tvcTemplateItems,\n\t\t\tsvcTemplateItems,\n\t\t\t...rest,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'Used to export your controllers to Heartwood.'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tprivate removeFileExtensionsFromTemplateItems(\n\t\tvcTemplateItems: VcTemplateItem[],\n\t\tdestinationDir: string\n\t): VcTemplateItem[] {\n\t\treturn vcTemplateItems.map((i) => ({\n\t\t\t...i,\n\t\t\tpath: diskUtil\n\t\t\t\t.resolveRelativePath(destinationDir, i.path)\n\t\t\t\t.replace('.ts', ''),\n\t\t}))\n\t}\n\n\tpublic writeViewController(\n\t\tcwd: string,\n\t\toptions: {\n\t\t\tviewType: string\n\t\t\tnamePascal: string\n\t\t\tviewModel: string\n\t\t\tnameKebab: string\n\t\t}\n\t) {\n\t\tconst { path } = this.buildViewControllerPath(\n\t\t\tcwd,\n\t\t\t'view',\n\t\t\toptions.namePascal\n\t\t)\n\n\t\treturn this.writeController(path, options)\n\t}\n\n\tprivate async writeController(path: string, options: any) {\n\t\tconst { namePascal, viewModel, viewType, nameKebab } = options\n\n\t\tif (diskUtil.doesFileExist(path)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SKILL_VIEW_EXISTS',\n\t\t\t\tname: namePascal,\n\t\t\t})\n\t\t}\n\n\t\tconst contents =\n\t\t\tviewType === 'skillView'\n\t\t\t\t? this.templates.skillViewController({ namePascal, nameKebab })\n\t\t\t\t: this.templates.viewController({ namePascal, viewModel, nameKebab })\n\n\t\tconst results = this.writeFileIfChangedMixinResults(path, contents, 'Test')\n\n\t\tawait this.lint(path)\n\n\t\treturn results\n\t}\n\n\tpublic doesRootControllerExist(cwd: string) {\n\t\tconst { path } = this.buildViewControllerPath(cwd, 'skillView', 'Root')\n\t\treturn diskUtil.doesFileExist(path)\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'view.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.viewPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Supports your skill with rendering views.'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tpublic writeTheme(cwd: string) {\n\t\tconst destination = this.buildThemePath(cwd)\n\n\t\tconst contents = this.templates.theme()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'Your brand new theme file!'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tprivate buildThemePath(cwd: string) {\n\t\treturn diskUtil.resolvePath(cwd, 'src', 'themes', 'skill.theme.ts')\n\t}\n\n\tpublic doesThemeFileExist(cwd: string) {\n\t\tconst destination = this.buildThemePath(cwd)\n\t\treturn diskUtil.doesFileExist(destination)\n\t}\n\n\tprivate buildViewControllerPath(\n\t\tcwd: string,\n\t\tviewType: 'skillView' | 'view',\n\t\tnamePascal: string\n\t) {\n\t\tconst ext = viewType === 'skillView' ? '.svc.ts' : '.vc.ts'\n\t\tconst filename = namePascal + ext\n\t\tconst path = diskUtil.resolvePath(\n\t\t\tcwd,\n\t\t\t'src',\n\t\t\tviewType + 'Controllers',\n\t\t\tfilename\n\t\t)\n\t\treturn { path, filename }\n\t}\n}\n"],"mappings":"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"}