@sprucelabs/spruce-cli 17.1.39 → 17.1.42
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.
- package/CHANGELOG.md +24 -0
- package/build/__tests__/behavioral/AddingADependency.test.js +10 -12
- package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
- package/build/__tests__/behavioral/BlockingCommands.test.js +3 -5
- package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
- package/build/__tests__/behavioral/BootingTheCli.test.js +3 -3
- package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
- package/build/__tests__/behavioral/BootingWithBadFiles.test.js +7 -7
- package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
- package/build/__tests__/behavioral/CreatingAConversationTopic.test.js +13 -13
- package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
- package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js +10 -10
- package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +1 -1
- package/build/__tests__/behavioral/DeployingASkill.test.js +32 -34
- package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/DeployingToSandbox.test.js +15 -17
- package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
- package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js +11 -13
- package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
- package/build/__tests__/behavioral/GettingCliVersion.test.js +4 -4
- package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +11 -13
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js +4 -4
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js +14 -16
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/ManagingDependencies.test.js +9 -9
- package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js +3 -3
- package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
- package/build/__tests__/behavioral/RebuildingASkill.test.js +4 -6
- package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js +4 -4
- package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js +7 -7
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js +11 -11
- package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js +6 -6
- package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +5 -5
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js +10 -12
- package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingRemote.test.js +9 -9
- package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js +10 -10
- package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js +29 -31
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpVscode.test.js +10 -10
- package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +13 -13
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js +6 -6
- package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingAConversation.test.js +17 -17
- package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js +13 -13
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
- package/build/__tests__/behavioral/WatchingSkillViews.test.js +15 -15
- package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js +15 -15
- package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js +8 -8
- package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js +32 -32
- package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/SettingUpErrors.test.js +4 -6
- package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +25 -25
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +29 -31
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +26 -28
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js +22 -22
- package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +38 -38
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js +7 -7
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js +6 -6
- package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
- package/build/__tests__/behavioral/events/SettingUpEvents.test.js +4 -4
- package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +3 -5
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/node/CreatingANodeModule.test.js +6 -6
- package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js +6 -6
- package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
- package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js +6 -6
- package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +3 -3
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
- package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js +14 -16
- package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
- package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js +7 -7
- package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
- package/build/__tests__/behavioral/polish/SettingUpPolish.test.js +8 -8
- package/build/__tests__/behavioral/polish/SettingUpPolish.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js +23 -25
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js +7 -7
- package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +6 -6
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js +18 -18
- package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js +7 -7
- package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js +62 -64
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js +6 -8
- package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js +4 -6
- package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.d.ts +1 -1
- package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js +4 -4
- package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/BootingASkill.test.js +12 -12
- package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/CreatingASkill.test.js +5 -5
- package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/RegisteringASkill.test.js +12 -14
- package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/SettingUpASkill.test.js +29 -29
- package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js +26 -28
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
- package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js +8 -10
- package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/CreatingATest.test.js +10 -10
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/RunningTests.test.js +8 -10
- package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +17 -17
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SettingUpTests.test.js +3 -5
- package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js +8 -8
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js +7 -7
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +6 -6
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js +15 -15
- package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js +24 -24
- package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +22 -22
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +10 -10
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js +9 -9
- package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js +4 -4
- package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js +9 -9
- package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js +28 -30
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingATheme.test.js +9 -11
- package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
- package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js +8 -8
- package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/views/SettingUpViews.test.js +5 -5
- package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js +12 -12
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
- package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js +10 -10
- package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter.test.js +5 -5
- package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +30 -30
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter3.test.js +3 -5
- package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter4.test.js +2 -4
- package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
- package/build/__tests__/implementation/ArgParser.test.d.ts +1 -1
- package/build/__tests__/implementation/ArgParser.test.js +7 -7
- package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
- package/build/__tests__/implementation/BuildService.test.js +4 -4
- package/build/__tests__/implementation/BuildService.test.js.map +1 -1
- package/build/__tests__/implementation/BulkImporting.test.d.ts +1 -1
- package/build/__tests__/implementation/BulkImporting.test.js +20 -22
- package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
- package/build/__tests__/implementation/CachingImports.test.js +3 -3
- package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
- package/build/__tests__/implementation/CommandOptionBuilder.test.js +12 -12
- package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/CommanderCommandResultMapper.test.d.ts +1 -1
- package/build/__tests__/implementation/CommanderCommandResultMapper.test.js +13 -13
- package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
- package/build/__tests__/implementation/DataStoreStore.test.js +16 -18
- package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
- package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js +6 -6
- package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
- package/build/__tests__/implementation/EventContractCleanerUtil.test.d.ts +1 -1
- package/build/__tests__/implementation/EventContractCleanerUtil.test.js +7 -7
- package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
- package/build/__tests__/implementation/EventStore.test.js +27 -29
- package/build/__tests__/implementation/EventStore.test.js.map +1 -1
- package/build/__tests__/implementation/EventTemplateItemBuilder.test.js +12 -12
- package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureCommandAttacher.test.js +23 -23
- package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureFixture.test.js +7 -7
- package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureInstaller.test.js +8 -8
- package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
- package/build/__tests__/implementation/FeaturesUtil.test.d.ts +1 -1
- package/build/__tests__/implementation/FeaturesUtil.test.js +4 -4
- package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
- package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js +11 -11
- package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/GlobalEmitter.js +3 -3
- package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
- package/build/__tests__/implementation/Introspection.test.js +4 -4
- package/build/__tests__/implementation/Introspection.test.js.map +1 -1
- package/build/__tests__/implementation/JestJsonParser.test.d.ts +1 -1
- package/build/__tests__/implementation/JestJsonParser.test.js +31 -31
- package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
- package/build/__tests__/implementation/LintService.test.js +3 -3
- package/build/__tests__/implementation/LintService.test.js.map +1 -1
- package/build/__tests__/implementation/ListenerStore.test.js +3 -3
- package/build/__tests__/implementation/ListenerStore.test.js.map +1 -1
- package/build/__tests__/implementation/OnboardingScriptLoader.test.js +9 -9
- package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
- package/build/__tests__/implementation/OnboardingScriptPlayer.test.js +17 -17
- package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
- package/build/__tests__/implementation/OnboardingStore.test.js +14 -14
- package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
- package/build/__tests__/implementation/OrganizationStore.test.js +10 -10
- package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
- package/build/__tests__/implementation/ParentTestFinder.test.js +6 -6
- package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
- package/build/__tests__/implementation/PkgService.test.js +8 -8
- package/build/__tests__/implementation/PkgService.test.js.map +1 -1
- package/build/__tests__/implementation/SchemaStore.test.js +30 -32
- package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
- package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js +10 -10
- package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/SchemaValueTypeWriter.test.js +13 -13
- package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
- package/build/__tests__/implementation/ServiceFactory.test.js +3 -3
- package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
- package/build/__tests__/implementation/SettingUpANodeModule.test.js +4 -6
- package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
- package/build/__tests__/implementation/SkillStore.test.js +25 -27
- package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
- package/build/__tests__/implementation/StoreFeature.test.js +4 -4
- package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
- package/build/__tests__/implementation/TestReporter.test.js +5 -5
- package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
- package/build/__tests__/implementation/TestRunner.test.js +23 -25
- package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
- package/build/__tests__/implementation/ValueTypeMapping.test.js +4 -4
- package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
- package/build/__tests__/implementation/Widgets.test.js +10 -10
- package/build/__tests__/implementation/Widgets.test.js.map +1 -1
- package/build/__tests__/testDirsAndFiles/abstract_tests/AbstractTest.d.ts +1 -1
- package/build/__tests__/testDirsAndFiles/abstract_tests/AbstractTest.ts +1 -1
- package/build/__tests__/testDirsAndFiles/abstract_tests/AbstractTest2.d.ts +1 -1
- package/build/__tests__/testDirsAndFiles/abstract_tests/AbstractTest2.ts +1 -1
- package/build/__tests__/testDirsAndFiles/abstract_tests/deeper/AbstractBananaTest.d.ts +1 -1
- package/build/__tests__/testDirsAndFiles/abstract_tests/deeper/AbstractBananaTest.ts +1 -1
- package/build/features/onboard/templates/ManagingTodos.test.ts.hbs +1 -1
- package/build/features/test/TestLogItemGenerator.js +2 -2
- package/build/features/test/TestLogItemGenerator.js.map +1 -1
- package/build/interfaces/SpyInterface.js +5 -5
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/tests/AbstractCliTest.d.ts +1 -1
- package/build/tests/AbstractCliTest.js +11 -11
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/AbstractSchemaTest.js +4 -4
- package/build/tests/AbstractSchemaTest.js.map +1 -1
- package/build/tests/utilities/test.utility.js +6 -6
- package/build/tests/utilities/test.utility.js.map +1 -1
- package/build/tests/utilities/uiAssert.utility.js +6 -6
- package/build/tests/utilities/uiAssert.utility.js.map +1 -1
- package/node_modules/@typescript-eslint/parser/package.json +5 -5
- package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
- package/node_modules/@typescript-eslint/types/package.json +2 -2
- package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
- package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
- package/package.json +15 -23
- package/src/__tests__/behavioral/AddingADependency.test.ts +1 -1
- package/src/__tests__/behavioral/BlockingCommands.test.ts +1 -1
- package/src/__tests__/behavioral/BootingTheCli.test.ts +1 -1
- package/src/__tests__/behavioral/BootingWithBadFiles.test.ts +1 -1
- package/src/__tests__/behavioral/CreatingAConversationTopic.test.ts +1 -1
- package/src/__tests__/behavioral/CreatingSchemasWithGenerics.test.ts +1 -1
- package/src/__tests__/behavioral/DeployingASkill.test.ts +1 -1
- package/src/__tests__/behavioral/DeployingToSandbox.test.ts +1 -1
- package/src/__tests__/behavioral/EnablingAndDisablingCache.test.ts +1 -1
- package/src/__tests__/behavioral/GettingCliVersion.test.ts +1 -1
- package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +1 -1
- package/src/__tests__/behavioral/ListeningToCoreEvents.test.ts +1 -1
- package/src/__tests__/behavioral/LoggingInAsASkill.test.ts +1 -1
- package/src/__tests__/behavioral/ManagingDependencies.test.ts +1 -1
- package/src/__tests__/behavioral/OverridingCommandsInPackageJson.test.ts +1 -1
- package/src/__tests__/behavioral/RebuildingASkill.test.ts +1 -1
- package/src/__tests__/behavioral/RegisteringConversationsOnBoot.test.ts +1 -1
- package/src/__tests__/behavioral/RegisteringEventsOnBoot.test.ts +1 -1
- package/src/__tests__/behavioral/RegisteringGlobalEvents.test.ts +1 -1
- package/src/__tests__/behavioral/RegisteringSkillViewOnBoot.test.ts +1 -1
- package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
- package/src/__tests__/behavioral/SettingLogTransportsInASkill.test.ts +1 -1
- package/src/__tests__/behavioral/SettingRemote.test.ts +1 -1
- package/src/__tests__/behavioral/SettingUpASkillForTesting.test.ts +1 -1
- package/src/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.ts +1 -1
- package/src/__tests__/behavioral/SettingUpVscode.test.ts +1 -1
- package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +1 -1
- package/src/__tests__/behavioral/TestReporterSettingsRemembered.test.ts +1 -1
- package/src/__tests__/behavioral/TestingAConversation.test.ts +1 -1
- package/src/__tests__/behavioral/TestingDataStores.test.ts +1 -1
- package/src/__tests__/behavioral/WatchingSkillViews.test.ts +1 -1
- package/src/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.ts +1 -1
- package/src/__tests__/behavioral/errors/KeepingErrorClassInSync.test.ts +1 -1
- package/src/__tests__/behavioral/errors/KeepingErrorsInSync.test.ts +1 -1
- package/src/__tests__/behavioral/errors/SettingUpErrors.test.ts +1 -1
- package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +1 -1
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +1 -1
- package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +1 -1
- package/src/__tests__/behavioral/events/KeepingEventsInSync.test.ts +1 -1
- package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +1 -1
- package/src/__tests__/behavioral/events/KeepingListenersInSync.test.ts +1 -1
- package/src/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.ts +1 -1
- package/src/__tests__/behavioral/events/SettingUpEvents.test.ts +1 -1
- package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +1 -1
- package/src/__tests__/behavioral/node/CreatingANodeModule.test.ts +1 -1
- package/src/__tests__/behavioral/onboard/StartingOnboarding.test.ts +1 -1
- package/src/__tests__/behavioral/organization/CreatingAnOrg.test.ts +1 -1
- package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +1 -1
- package/src/__tests__/behavioral/person/LoggingInAsPerson.test.ts +1 -1
- package/src/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.ts +1 -1
- package/src/__tests__/behavioral/polish/SettingUpPolish.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/ImportingSchemaImports.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/SettingUpSchemas.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/UsingSchemasInCli.test.ts +1 -1
- package/src/__tests__/behavioral/skill/BootingASkill.test.ts +1 -1
- package/src/__tests__/behavioral/skill/CreatingASkill.test.ts +1 -1
- package/src/__tests__/behavioral/skill/RegisteringASkill.test.ts +1 -1
- package/src/__tests__/behavioral/skill/SettingUpASkill.test.ts +1 -1
- package/src/__tests__/behavioral/stores/CreatingADataStore.test.ts +1 -1
- package/src/__tests__/behavioral/stores/KeepingDataStoresInSync.test.ts +1 -1
- package/src/__tests__/behavioral/tests/CreatingATest.test.ts +1 -1
- package/src/__tests__/behavioral/tests/RunningTests.test.ts +1 -1
- package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +1 -1
- package/src/__tests__/behavioral/tests/SettingUpTests.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpdatingDependencies.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpdatingDependencies2.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpgradingASkill.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpgradingASkill2.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpgradingASkill5.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts +1 -1
- package/src/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.ts +1 -1
- package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +1 -1
- package/src/__tests__/behavioral/views/CreatingATheme.test.ts +1 -1
- package/src/__tests__/behavioral/views/KeepingViewsInSync.test.ts +1 -1
- package/src/__tests__/behavioral/views/SettingUpViews.test.ts +1 -1
- package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +1 -1
- package/src/__tests__/behavioral/watchers/WatchingForChanges.test.ts +1 -1
- package/src/__tests__/implementation/ActionExecuter.test.ts +1 -1
- package/src/__tests__/implementation/ActionExecuter2.test.ts +1 -1
- package/src/__tests__/implementation/ActionExecuter3.test.ts +1 -1
- package/src/__tests__/implementation/ActionExecuter4.test.ts +1 -1
- package/src/__tests__/implementation/ArgParser.test.ts +1 -1
- package/src/__tests__/implementation/BuildService.test.ts +1 -1
- package/src/__tests__/implementation/BulkImporting.test.ts +1 -1
- package/src/__tests__/implementation/CachingImports.test.ts +1 -1
- package/src/__tests__/implementation/CommandOptionBuilder.test.ts +1 -1
- package/src/__tests__/implementation/CommanderCommandResultMapper.test.ts +1 -1
- package/src/__tests__/implementation/DataStoreStore.test.ts +1 -1
- package/src/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.ts +1 -1
- package/src/__tests__/implementation/EventContractCleanerUtil.test.ts +1 -1
- package/src/__tests__/implementation/EventStore.test.ts +1 -1
- package/src/__tests__/implementation/EventTemplateItemBuilder.test.ts +1 -1
- package/src/__tests__/implementation/FeatureCommandAttacher.test.ts +1 -1
- package/src/__tests__/implementation/FeatureFixture.test.ts +1 -1
- package/src/__tests__/implementation/FeatureInstaller.test.ts +1 -1
- package/src/__tests__/implementation/FeaturesUtil.test.ts +1 -1
- package/src/__tests__/implementation/FieldTemplateItemBuilder.test.ts +1 -1
- package/src/__tests__/implementation/GlobalEmitter.ts +1 -1
- package/src/__tests__/implementation/Introspection.test.ts +1 -1
- package/src/__tests__/implementation/JestJsonParser.test.ts +1 -1
- package/src/__tests__/implementation/LintService.test.ts +1 -1
- package/src/__tests__/implementation/ListenerStore.test.ts +1 -1
- package/src/__tests__/implementation/OnboardingScriptLoader.test.ts +1 -1
- package/src/__tests__/implementation/OnboardingScriptPlayer.test.ts +1 -1
- package/src/__tests__/implementation/OnboardingStore.test.ts +1 -1
- package/src/__tests__/implementation/OrganizationStore.test.ts +1 -1
- package/src/__tests__/implementation/ParentTestFinder.test.ts +1 -1
- package/src/__tests__/implementation/PkgService.test.ts +1 -1
- package/src/__tests__/implementation/SchemaStore.test.ts +1 -1
- package/src/__tests__/implementation/SchemaTemplateItemBuilder.test.ts +1 -1
- package/src/__tests__/implementation/SchemaValueTypeWriter.test.ts +1 -1
- package/src/__tests__/implementation/ServiceFactory.test.ts +1 -1
- package/src/__tests__/implementation/SettingUpANodeModule.test.ts +1 -1
- package/src/__tests__/implementation/SkillStore.test.ts +1 -1
- package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
- package/src/__tests__/implementation/TestReporter.test.ts +1 -1
- package/src/__tests__/implementation/TestRunner.test.ts +1 -1
- package/src/__tests__/implementation/ValueTypeMapping.test.ts +1 -1
- package/src/__tests__/implementation/Widgets.test.ts +1 -1
- package/src/__tests__/testDirsAndFiles/abstract_tests/AbstractTest.ts +1 -1
- package/src/__tests__/testDirsAndFiles/abstract_tests/AbstractTest2.ts +1 -1
- package/src/__tests__/testDirsAndFiles/abstract_tests/deeper/AbstractBananaTest.ts +1 -1
- package/src/features/onboard/templates/ManagingTodos.test.ts.hbs +1 -1
- package/src/features/test/TestLogItemGenerator.ts +1 -1
- package/src/interfaces/SpyInterface.ts +1 -1
- package/src/tests/AbstractCliTest.ts +1 -1
- package/src/tests/AbstractSchemaTest.ts +1 -1
- package/src/tests/utilities/test.utility.ts +1 -1
- package/src/tests/utilities/uiAssert.utility.ts +1 -1
|
@@ -27,7 +27,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
27
27
|
|
|
28
28
|
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _testUtils = require("@sprucelabs/test-utils");
|
|
31
31
|
|
|
32
32
|
var _AbstractCliTest2 = _interopRequireDefault(require("../../tests/AbstractCliTest"));
|
|
33
33
|
|
|
@@ -39,7 +39,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
39
39
|
|
|
40
40
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
41
41
|
|
|
42
|
-
var WidgetsTest = (_dec = (0,
|
|
42
|
+
var WidgetsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test)(), _dec3 = (0, _testUtils.test)(), _dec4 = (0, _testUtils.test)(), _dec5 = (0, _testUtils.test)(), _dec6 = (0, _testUtils.test)(), _dec7 = _testUtils.test.skip('enable when ready to fake termkit'), (_class = (_class2 = /*#__PURE__*/function (_AbstractCliTest) {
|
|
43
43
|
(0, _inherits2["default"])(WidgetsTest, _AbstractCliTest);
|
|
44
44
|
|
|
45
45
|
var _super = _createSuper(WidgetsTest);
|
|
@@ -85,7 +85,7 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
|
|
|
85
85
|
while (1) {
|
|
86
86
|
switch (_context2.prev = _context2.next) {
|
|
87
87
|
case 0:
|
|
88
|
-
|
|
88
|
+
_testUtils.assert.isTruthy(this.factory);
|
|
89
89
|
|
|
90
90
|
case 1:
|
|
91
91
|
case "end":
|
|
@@ -112,7 +112,7 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
|
|
|
112
112
|
case 0:
|
|
113
113
|
log = this.buildText();
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
_testUtils.assert.isTruthy(log);
|
|
116
116
|
|
|
117
117
|
case 2:
|
|
118
118
|
case "end":
|
|
@@ -139,7 +139,7 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
|
|
|
139
139
|
case 0:
|
|
140
140
|
text = this.buildText();
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
_testUtils.assert.isEqualDeep(text.getFrame(), {
|
|
143
143
|
left: 0,
|
|
144
144
|
top: 0,
|
|
145
145
|
width: 4,
|
|
@@ -165,7 +165,7 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
|
|
|
165
165
|
value: function canCreateWindow() {
|
|
166
166
|
var window = this.factory.Widget('window', {});
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
_testUtils.assert.isTruthy(window);
|
|
169
169
|
}
|
|
170
170
|
}, {
|
|
171
171
|
key: "canCreateProgressBar",
|
|
@@ -174,14 +174,14 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
|
|
|
174
174
|
progress: 0
|
|
175
175
|
});
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
_testUtils.assert.isTruthy(progress);
|
|
178
178
|
}
|
|
179
179
|
}, {
|
|
180
180
|
key: "canCreateText",
|
|
181
181
|
value: function canCreateText() {
|
|
182
182
|
var text = this.factory.Widget('text', {});
|
|
183
183
|
|
|
184
|
-
|
|
184
|
+
_testUtils.assert.isTruthy(text);
|
|
185
185
|
}
|
|
186
186
|
}, {
|
|
187
187
|
key: "canCreateLayout",
|
|
@@ -200,11 +200,11 @@ var WidgetsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 =
|
|
|
200
200
|
}]
|
|
201
201
|
});
|
|
202
202
|
|
|
203
|
-
|
|
203
|
+
_testUtils.assert.isTruthy(layout);
|
|
204
204
|
|
|
205
205
|
var column = layout.getChildById('results');
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
_testUtils.assert.isTruthy(column);
|
|
208
208
|
}
|
|
209
209
|
}, {
|
|
210
210
|
key: "buildText",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Widgets.test.js","names":["WidgetsTest","test","skip","factory","WidgetFactory","assert","isTruthy","log","buildText","text","isEqualDeep","getFrame","left","top","width","height","window","Widget","progress","layout","parent","rows","id","columns","column","getChildById","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/Widgets.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\nimport WidgetFactory from '../../widgets/WidgetFactory'\n\nexport default class WidgetsTest extends AbstractCliTest {\n\tprivate static factory: WidgetFactory\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.factory = new WidgetFactory()\n\t}\n\n\t@test()\n\tprotected static async canCreateFactory() {\n\t\tassert.isTruthy(this.factory)\n\t}\n\n\t@test()\n\tprotected static async canCreateTextWidget() {\n\t\tconst log = this.buildText()\n\t\tassert.isTruthy(log)\n\t}\n\n\t@test()\n\tprotected static async setsStartingFrame() {\n\t\tconst text = this.buildText()\n\t\tassert.isEqualDeep(text.getFrame(), {\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\twidth: 4,\n\t\t\theight: 4,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static canCreateWindow() {\n\t\tconst window = this.factory.Widget('window', {})\n\t\tassert.isTruthy(window)\n\t}\n\n\t@test()\n\tprotected static canCreateProgressBar() {\n\t\tconst progress = this.factory.Widget('progressBar', {\n\t\t\tprogress: 0,\n\t\t})\n\t\tassert.isTruthy(progress)\n\t}\n\n\t@test()\n\tprotected static canCreateText() {\n\t\tconst text = this.factory.Widget('text', {})\n\t\tassert.isTruthy(text)\n\t}\n\n\t@test.skip('enable when ready to fake termkit')\n\tprotected static canCreateLayout() {\n\t\tconst window = this.factory.Widget('window', {})\n\t\tconst layout = this.factory.Widget('layout', {\n\t\t\tparent: window,\n\t\t\twidth: '100%',\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tid: 'row_1',\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'column_1',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t\tassert.isTruthy(layout)\n\n\t\tconst column = layout.getChildById('results')\n\n\t\tassert.isTruthy(column)\n\t}\n\n\tprivate static buildText() {\n\t\treturn this.factory.Widget('text', { left: 0, top: 0, width: 4, height: 4 })\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,W,WAQnB,IAAAC,
|
|
1
|
+
{"version":3,"file":"Widgets.test.js","names":["WidgetsTest","test","skip","factory","WidgetFactory","assert","isTruthy","log","buildText","text","isEqualDeep","getFrame","left","top","width","height","window","Widget","progress","layout","parent","rows","id","columns","column","getChildById","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/Widgets.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\nimport WidgetFactory from '../../widgets/WidgetFactory'\n\nexport default class WidgetsTest extends AbstractCliTest {\n\tprivate static factory: WidgetFactory\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.factory = new WidgetFactory()\n\t}\n\n\t@test()\n\tprotected static async canCreateFactory() {\n\t\tassert.isTruthy(this.factory)\n\t}\n\n\t@test()\n\tprotected static async canCreateTextWidget() {\n\t\tconst log = this.buildText()\n\t\tassert.isTruthy(log)\n\t}\n\n\t@test()\n\tprotected static async setsStartingFrame() {\n\t\tconst text = this.buildText()\n\t\tassert.isEqualDeep(text.getFrame(), {\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\twidth: 4,\n\t\t\theight: 4,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static canCreateWindow() {\n\t\tconst window = this.factory.Widget('window', {})\n\t\tassert.isTruthy(window)\n\t}\n\n\t@test()\n\tprotected static canCreateProgressBar() {\n\t\tconst progress = this.factory.Widget('progressBar', {\n\t\t\tprogress: 0,\n\t\t})\n\t\tassert.isTruthy(progress)\n\t}\n\n\t@test()\n\tprotected static canCreateText() {\n\t\tconst text = this.factory.Widget('text', {})\n\t\tassert.isTruthy(text)\n\t}\n\n\t@test.skip('enable when ready to fake termkit')\n\tprotected static canCreateLayout() {\n\t\tconst window = this.factory.Widget('window', {})\n\t\tconst layout = this.factory.Widget('layout', {\n\t\t\tparent: window,\n\t\t\twidth: '100%',\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tid: 'row_1',\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'column_1',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t\tassert.isTruthy(layout)\n\n\t\tconst column = layout.getChildById('results')\n\n\t\tassert.isTruthy(column)\n\t}\n\n\tprivate static buildText() {\n\t\treturn this.factory.Widget('text', { left: 0, top: 0, width: 4, height: 4 })\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,W,WAQnB,IAAAC,eAAA,G,UAKA,IAAAA,eAAA,G,UAMA,IAAAA,eAAA,G,UAWA,IAAAA,eAAA,G,UAMA,IAAAA,eAAA,G,UAQA,IAAAA,eAAA,G,UAMAA,eAAA,CAAKC,IAAL,CAAU,mCAAV,C;;;;;;;;;;;;;sGA/CD;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAEC,KAAKC,OAAL,GAAe,IAAIC,yBAAJ,EAAf;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4GAKA;QAAA;UAAA;YAAA;cAAA;gBAECC,iBAAA,CAAOC,QAAP,CAAgB,KAAKH,OAArB;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GAKA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOI,GAFP,GAEa,KAAKC,SAAL,EAFb;;gBAGCH,iBAAA,CAAOC,QAAP,CAAgBC,GAAhB;;cAHD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;6GAMA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOE,IAFP,GAEc,KAAKD,SAAL,EAFd;;gBAGCH,iBAAA,CAAOK,WAAP,CAAmBD,IAAI,CAACE,QAAL,EAAnB,EAAoC;kBACnCC,IAAI,EAAE,CAD6B;kBAEnCC,GAAG,EAAE,CAF8B;kBAGnCC,KAAK,EAAE,CAH4B;kBAInCC,MAAM,EAAE;gBAJ2B,CAApC;;cAHD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAWA,2BACmC;MAClC,IAAMC,MAAM,GAAG,KAAKb,OAAL,CAAac,MAAb,CAAoB,QAApB,EAA8B,EAA9B,CAAf;;MACAZ,iBAAA,CAAOC,QAAP,CAAgBU,MAAhB;IACA;;;WAED,gCACwC;MACvC,IAAME,QAAQ,GAAG,KAAKf,OAAL,CAAac,MAAb,CAAoB,aAApB,EAAmC;QACnDC,QAAQ,EAAE;MADyC,CAAnC,CAAjB;;MAGAb,iBAAA,CAAOC,QAAP,CAAgBY,QAAhB;IACA;;;WAED,yBACiC;MAChC,IAAMT,IAAI,GAAG,KAAKN,OAAL,CAAac,MAAb,CAAoB,MAApB,EAA4B,EAA5B,CAAb;;MACAZ,iBAAA,CAAOC,QAAP,CAAgBG,IAAhB;IACA;;;WAED,2BACmC;MAClC,IAAMO,MAAM,GAAG,KAAKb,OAAL,CAAac,MAAb,CAAoB,QAApB,EAA8B,EAA9B,CAAf;MACA,IAAME,MAAM,GAAG,KAAKhB,OAAL,CAAac,MAAb,CAAoB,QAApB,EAA8B;QAC5CG,MAAM,EAAEJ,MADoC;QAE5CF,KAAK,EAAE,MAFqC;QAG5CO,IAAI,EAAE,CACL;UACCC,EAAE,EAAE,OADL;UAECP,MAAM,EAAE,MAFT;UAGCQ,OAAO,EAAE,CACR;YACCD,EAAE,EAAE,UADL;YAECR,KAAK,EAAE;UAFR,CADQ;QAHV,CADK;MAHsC,CAA9B,CAAf;;MAgBAT,iBAAA,CAAOC,QAAP,CAAgBa,MAAhB;;MAEA,IAAMK,MAAM,GAAGL,MAAM,CAACM,YAAP,CAAoB,SAApB,CAAf;;MAEApB,iBAAA,CAAOC,QAAP,CAAgBkB,MAAhB;IACA;;;WAED,qBAA2B;MAC1B,OAAO,KAAKrB,OAAL,CAAac,MAAb,CAAoB,MAApB,EAA4B;QAAEL,IAAI,EAAE,CAAR;QAAWC,GAAG,EAAE,CAAhB;QAAmBC,KAAK,EAAE,CAA1B;QAA6BC,MAAM,EAAE;MAArC,CAA5B,CAAP;IACA;;;EA9EuCW,4B"}
|
|
@@ -13,7 +13,7 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
13
13
|
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _testUtils = require("@sprucelabs/test-utils");
|
|
17
17
|
|
|
18
18
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
19
19
|
|
|
@@ -130,7 +130,7 @@ var TestLogItemGenerator = /*#__PURE__*/function () {
|
|
|
130
130
|
var _test$errorMessages;
|
|
131
131
|
|
|
132
132
|
(_test$errorMessages = test.errorMessages) === null || _test$errorMessages === void 0 ? void 0 : _test$errorMessages.forEach(function (message) {
|
|
133
|
-
var cleaned = message !== null && message !== void 0 ? message :
|
|
133
|
+
var cleaned = message !== null && message !== void 0 ? message : _testUtils.StackCleaner.clean(message);
|
|
134
134
|
errorContent += " ".concat(_chalk["default"].red(file.path), "\n");
|
|
135
135
|
errorContent += " - ".concat(_chalk["default"].red(test.name), "\n\n");
|
|
136
136
|
errorContent += cleaned.replace(/\n+ {4}at/i, '\n\n\n at') + '\n\n\n';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestLogItemGenerator.js","names":["TestLogItemGenerator","file","status","testRunnerStatus","logContent","duration","calculateDurationInMsForFile","generateStatusBlock","path","generateDuration","tests","forEach","test","bullet","bulletBasedOnStatus","name","pendingKey","length","calculateDurationInMs","durationColor","colorBasedOnStatus","durationUtil","msToFriendly","reduce","time","key","startTimes","Date","getTime","delta","errorContent","errorMessages","message","cleaned","StackCleaner","clean","chalk","red","replace","errorMessage","bgColor","statusLabel","color","padding","centerStringWithSpaces","text","numberOfSpaces","trim","l","w2","Math","floor","l2","s","Array","join"],"sources":["../../../src/features/test/TestLogItemGenerator.ts"],"sourcesContent":["import { StackCleaner } from '@sprucelabs/test'\nimport chalk from 'chalk'\nimport durationUtil from '../../utilities/duration.utility'\nimport {\n\tSpruceTestFile,\n\tSpruceTestFileTest,\n\tTestRunnerStatus,\n} from './test.types'\n\nexport default class TestLogItemGenerator {\n\tprivate startTimes: Record<string, number> = {}\n\tprivate testRunnerStatus!: TestRunnerStatus\n\n\tpublic generateLogItemForFile(\n\t\tfile: SpruceTestFile,\n\t\tstatus: TestRunnerStatus\n\t): string {\n\t\tthis.testRunnerStatus = status\n\n\t\tlet logContent = ''\n\t\tconst duration = this.calculateDurationInMsForFile(file)\n\n\t\tlogContent += `${this.generateStatusBlock(file.status)} ${file.path}${\n\t\t\tduration ? ` ${this.generateDuration(file.status, duration)}` : ''\n\t\t}\\n`\n\n\t\tif (file.tests) {\n\t\t\tfile.tests.forEach((test) => {\n\t\t\t\tconst bullet = this.bulletBasedOnStatus(test.status)\n\t\t\t\tlogContent += ` ${bullet} ^-${\n\t\t\t\t\ttest.name\n\t\t\t\t}^ ${this.generateDuration(test.status, test.duration)}\\n`\n\t\t\t})\n\t\t}\n\n\t\tif (file.status === 'running') {\n\t\t\tconst pendingKey = `${file.path}-pending-${file.tests?.length ?? 0}`\n\t\t\tlogContent += ` ^-${'Running next test... ⚡️⚡️⚡️'}^ ${this.generateDuration(\n\t\t\t\t'running',\n\t\t\t\tthis.calculateDurationInMs(pendingKey)\n\t\t\t)}\\n`\n\t\t}\n\n\t\treturn logContent\n\t}\n\n\tprivate generateDuration(status: any, duration: number) {\n\t\tif (duration === 0) {\n\t\t\treturn ''\n\t\t}\n\t\tconst durationColor = this.colorBasedOnStatus(status)\n\t\treturn `^${durationColor}(${durationUtil.msToFriendly(duration)})^`\n\t}\n\n\tprivate bulletBasedOnStatus(\n\t\tstatus: SpruceTestFileTest['status'] | 'running'\n\t) {\n\t\tlet bullet = 'y'\n\n\t\tswitch (status) {\n\t\t\tcase 'running':\n\t\t\t\tbullet = '^g(running)^'\n\t\t\t\tbreak\n\t\t\tcase 'passed':\n\t\t\t\tbullet = '^g√^'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tbullet = '^rx^'\n\t\t\t\tbreak\n\t\t\tcase 'pending':\n\t\t\tcase 'skipped':\n\t\t\t\tbullet = '^y(skipped)^'\n\t\t\t\tbreak\n\t\t\tcase 'todo':\n\t\t\t\tbullet = '^y(todo)^'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbullet = '??'\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn bullet\n\t}\n\n\tprivate calculateDurationInMsForFile(file: SpruceTestFile): number {\n\t\tif (file.status !== 'running' && file.tests) {\n\t\t\treturn file.tests.reduce((time, test) => {\n\t\t\t\ttime += test.duration\n\t\t\t\treturn time\n\t\t\t}, 0)\n\t\t}\n\n\t\tconst key = file.path\n\t\treturn this.calculateDurationInMs(key)\n\t}\n\n\tprivate calculateDurationInMs(key: string) {\n\t\tif (!this.startTimes[key]) {\n\t\t\tthis.startTimes[key] = new Date().getTime()\n\t\t}\n\n\t\tconst delta = new Date().getTime() - this.startTimes[key]\n\t\treturn delta\n\t}\n\n\tpublic generateErrorLogItemForFile(file: SpruceTestFile): string {\n\t\tlet errorContent = ''\n\n\t\tfile.tests?.forEach((test) => {\n\t\t\ttest.errorMessages?.forEach((message) => {\n\t\t\t\tconst cleaned = message ?? StackCleaner.clean(message)\n\t\t\t\terrorContent += ` ${chalk.red(file.path)}\\n`\n\t\t\t\terrorContent += ` - ${chalk.red(test.name)}\\n\\n`\n\t\t\t\terrorContent += cleaned.replace(/\\n+ {4}at/i, '\\n\\n\\n at') + '\\n\\n\\n'\n\t\t\t})\n\t\t})\n\n\t\tif (!errorContent && file.errorMessage) {\n\t\t\terrorContent += `${chalk.red(file.path)}\\n`\n\t\t\terrorContent += file.errorMessage + '\\n\\n\\n'\n\t\t}\n\n\t\treturn errorContent\n\t}\n\n\tpublic resetStartTimes() {\n\t\tthis.startTimes = {}\n\t}\n\n\tprivate generateStatusBlock(status: SpruceTestFile['status']) {\n\t\tconst bgColor = this.colorBasedOnStatus(status)\n\n\t\tlet statusLabel = status as string\n\t\tlet color = 'k'\n\t\tlet padding = 10\n\t\tswitch (status) {\n\t\t\tcase 'passed':\n\t\t\t\tpadding = 11\n\t\t\t\tcolor = 'w'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tpadding = 11\n\t\t\t\tcolor = 'w'\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (status === 'running' && this.testRunnerStatus === 'stopped') {\n\t\t\tstatusLabel = 'stopped'\n\t\t\tcolor = 'w'\n\t\t}\n\n\t\treturn `^b^#^${bgColor}^${color}^+${this.centerStringWithSpaces(\n\t\t\tstatusLabel,\n\t\t\tpadding\n\t\t)}^`\n\t}\n\n\tprivate colorBasedOnStatus(status: SpruceTestFile['status']) {\n\t\tlet color = 'y'\n\n\t\tswitch (status) {\n\t\t\tcase 'passed':\n\t\t\t\tcolor = 'g'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tcolor = 'r'\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (status === 'running' && this.testRunnerStatus === 'stopped') {\n\t\t\tcolor = 'b'\n\t\t}\n\n\t\treturn color\n\t}\n\n\tprivate centerStringWithSpaces(text: string, numberOfSpaces: number) {\n\t\ttext = text.trim()\n\t\tlet l = text.length\n\t\tlet w2 = Math.floor(numberOfSpaces / 2)\n\t\tlet l2 = Math.floor(l / 2)\n\t\tlet s = new Array(w2 - l2 + 1).join(' ')\n\t\ttext = s + text + s\n\t\tif (text.length < numberOfSpaces) {\n\t\t\ttext += new Array(numberOfSpaces - text.length + 1).join(' ')\n\t\t}\n\t\treturn text\n\t}\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TestLogItemGenerator.js","names":["TestLogItemGenerator","file","status","testRunnerStatus","logContent","duration","calculateDurationInMsForFile","generateStatusBlock","path","generateDuration","tests","forEach","test","bullet","bulletBasedOnStatus","name","pendingKey","length","calculateDurationInMs","durationColor","colorBasedOnStatus","durationUtil","msToFriendly","reduce","time","key","startTimes","Date","getTime","delta","errorContent","errorMessages","message","cleaned","StackCleaner","clean","chalk","red","replace","errorMessage","bgColor","statusLabel","color","padding","centerStringWithSpaces","text","numberOfSpaces","trim","l","w2","Math","floor","l2","s","Array","join"],"sources":["../../../src/features/test/TestLogItemGenerator.ts"],"sourcesContent":["import { StackCleaner } from '@sprucelabs/test-utils'\nimport chalk from 'chalk'\nimport durationUtil from '../../utilities/duration.utility'\nimport {\n\tSpruceTestFile,\n\tSpruceTestFileTest,\n\tTestRunnerStatus,\n} from './test.types'\n\nexport default class TestLogItemGenerator {\n\tprivate startTimes: Record<string, number> = {}\n\tprivate testRunnerStatus!: TestRunnerStatus\n\n\tpublic generateLogItemForFile(\n\t\tfile: SpruceTestFile,\n\t\tstatus: TestRunnerStatus\n\t): string {\n\t\tthis.testRunnerStatus = status\n\n\t\tlet logContent = ''\n\t\tconst duration = this.calculateDurationInMsForFile(file)\n\n\t\tlogContent += `${this.generateStatusBlock(file.status)} ${file.path}${\n\t\t\tduration ? ` ${this.generateDuration(file.status, duration)}` : ''\n\t\t}\\n`\n\n\t\tif (file.tests) {\n\t\t\tfile.tests.forEach((test) => {\n\t\t\t\tconst bullet = this.bulletBasedOnStatus(test.status)\n\t\t\t\tlogContent += ` ${bullet} ^-${\n\t\t\t\t\ttest.name\n\t\t\t\t}^ ${this.generateDuration(test.status, test.duration)}\\n`\n\t\t\t})\n\t\t}\n\n\t\tif (file.status === 'running') {\n\t\t\tconst pendingKey = `${file.path}-pending-${file.tests?.length ?? 0}`\n\t\t\tlogContent += ` ^-${'Running next test... ⚡️⚡️⚡️'}^ ${this.generateDuration(\n\t\t\t\t'running',\n\t\t\t\tthis.calculateDurationInMs(pendingKey)\n\t\t\t)}\\n`\n\t\t}\n\n\t\treturn logContent\n\t}\n\n\tprivate generateDuration(status: any, duration: number) {\n\t\tif (duration === 0) {\n\t\t\treturn ''\n\t\t}\n\t\tconst durationColor = this.colorBasedOnStatus(status)\n\t\treturn `^${durationColor}(${durationUtil.msToFriendly(duration)})^`\n\t}\n\n\tprivate bulletBasedOnStatus(\n\t\tstatus: SpruceTestFileTest['status'] | 'running'\n\t) {\n\t\tlet bullet = 'y'\n\n\t\tswitch (status) {\n\t\t\tcase 'running':\n\t\t\t\tbullet = '^g(running)^'\n\t\t\t\tbreak\n\t\t\tcase 'passed':\n\t\t\t\tbullet = '^g√^'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tbullet = '^rx^'\n\t\t\t\tbreak\n\t\t\tcase 'pending':\n\t\t\tcase 'skipped':\n\t\t\t\tbullet = '^y(skipped)^'\n\t\t\t\tbreak\n\t\t\tcase 'todo':\n\t\t\t\tbullet = '^y(todo)^'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbullet = '??'\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn bullet\n\t}\n\n\tprivate calculateDurationInMsForFile(file: SpruceTestFile): number {\n\t\tif (file.status !== 'running' && file.tests) {\n\t\t\treturn file.tests.reduce((time, test) => {\n\t\t\t\ttime += test.duration\n\t\t\t\treturn time\n\t\t\t}, 0)\n\t\t}\n\n\t\tconst key = file.path\n\t\treturn this.calculateDurationInMs(key)\n\t}\n\n\tprivate calculateDurationInMs(key: string) {\n\t\tif (!this.startTimes[key]) {\n\t\t\tthis.startTimes[key] = new Date().getTime()\n\t\t}\n\n\t\tconst delta = new Date().getTime() - this.startTimes[key]\n\t\treturn delta\n\t}\n\n\tpublic generateErrorLogItemForFile(file: SpruceTestFile): string {\n\t\tlet errorContent = ''\n\n\t\tfile.tests?.forEach((test) => {\n\t\t\ttest.errorMessages?.forEach((message) => {\n\t\t\t\tconst cleaned = message ?? StackCleaner.clean(message)\n\t\t\t\terrorContent += ` ${chalk.red(file.path)}\\n`\n\t\t\t\terrorContent += ` - ${chalk.red(test.name)}\\n\\n`\n\t\t\t\terrorContent += cleaned.replace(/\\n+ {4}at/i, '\\n\\n\\n at') + '\\n\\n\\n'\n\t\t\t})\n\t\t})\n\n\t\tif (!errorContent && file.errorMessage) {\n\t\t\terrorContent += `${chalk.red(file.path)}\\n`\n\t\t\terrorContent += file.errorMessage + '\\n\\n\\n'\n\t\t}\n\n\t\treturn errorContent\n\t}\n\n\tpublic resetStartTimes() {\n\t\tthis.startTimes = {}\n\t}\n\n\tprivate generateStatusBlock(status: SpruceTestFile['status']) {\n\t\tconst bgColor = this.colorBasedOnStatus(status)\n\n\t\tlet statusLabel = status as string\n\t\tlet color = 'k'\n\t\tlet padding = 10\n\t\tswitch (status) {\n\t\t\tcase 'passed':\n\t\t\t\tpadding = 11\n\t\t\t\tcolor = 'w'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tpadding = 11\n\t\t\t\tcolor = 'w'\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (status === 'running' && this.testRunnerStatus === 'stopped') {\n\t\t\tstatusLabel = 'stopped'\n\t\t\tcolor = 'w'\n\t\t}\n\n\t\treturn `^b^#^${bgColor}^${color}^+${this.centerStringWithSpaces(\n\t\t\tstatusLabel,\n\t\t\tpadding\n\t\t)}^`\n\t}\n\n\tprivate colorBasedOnStatus(status: SpruceTestFile['status']) {\n\t\tlet color = 'y'\n\n\t\tswitch (status) {\n\t\t\tcase 'passed':\n\t\t\t\tcolor = 'g'\n\t\t\t\tbreak\n\t\t\tcase 'failed':\n\t\t\t\tcolor = 'r'\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (status === 'running' && this.testRunnerStatus === 'stopped') {\n\t\t\tcolor = 'b'\n\t\t}\n\n\t\treturn color\n\t}\n\n\tprivate centerStringWithSpaces(text: string, numberOfSpaces: number) {\n\t\ttext = text.trim()\n\t\tlet l = text.length\n\t\tlet w2 = Math.floor(numberOfSpaces / 2)\n\t\tlet l2 = Math.floor(l / 2)\n\t\tlet s = new Array(w2 - l2 + 1).join(' ')\n\t\ttext = s + text + s\n\t\tif (text.length < numberOfSpaces) {\n\t\t\ttext += new Array(numberOfSpaces - text.length + 1).join(' ')\n\t\t}\n\t\treturn text\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -19,9 +19,9 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
19
19
|
|
|
20
20
|
var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _testUtils = require("@sprucelabs/test-utils");
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _test = _interopRequireDefault(require("../tests/utilities/test.utility"));
|
|
25
25
|
|
|
26
26
|
var _duration = _interopRequireDefault(require("../utilities/duration.utility"));
|
|
27
27
|
|
|
@@ -358,7 +358,7 @@ var SpyInterface = /*#__PURE__*/function () {
|
|
|
358
358
|
_this2.reset();
|
|
359
359
|
|
|
360
360
|
try {
|
|
361
|
-
|
|
361
|
+
_testUtils.assert.fail("Timed out waiting for input with label: '".concat(definition.label, "'\n\nConsider passing what you need to Action().execute({ something })"));
|
|
362
362
|
} catch (err) {
|
|
363
363
|
reject(err);
|
|
364
364
|
}
|
|
@@ -443,7 +443,7 @@ var SpyInterface = /*#__PURE__*/function () {
|
|
|
443
443
|
}
|
|
444
444
|
|
|
445
445
|
if (loops-- === 0) {
|
|
446
|
-
|
|
446
|
+
_testUtils.assert.fail("Waiting for input timed out.");
|
|
447
447
|
}
|
|
448
448
|
|
|
449
449
|
hasWritten = lastWriteCount != this.invocations.length;
|
|
@@ -453,7 +453,7 @@ var SpyInterface = /*#__PURE__*/function () {
|
|
|
453
453
|
lastWriteCount = this.invocations.length;
|
|
454
454
|
|
|
455
455
|
if (this.shouldRenderTestLogs()) {
|
|
456
|
-
|
|
456
|
+
_test["default"].log('waitForInput timeout reset because of new output.');
|
|
457
457
|
}
|
|
458
458
|
}
|
|
459
459
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpyInterface.js","names":["SpyInterface","x","y","startTime","Date","getTime","term","shouldRenderTestLogs","TerminalInterface","process","cwd","strs","optionallyRenderLine","join","undefined","env","SHOULD_RENDER_TEST_LOGS","message","effects","trackInvocation","renderWarning","renderHint","command","options","invocations","push","promptResolver","confirmResolver","waitForEnterResolver","clearTimeout","promptTimeout","length","input","resolver","promptDefaultValue","toLowerCase","Error","Promise","resolve","setTimeout","renderSection","obj","renderObject","err","renderError","code","renderCodeSample","results","renderActionSummary","renderHero","dividerEffects","renderHeadline","renderDivider","duration","friendly","durationUtil","msToFriendly","testLog","info","global","activeTest","test","path","messages","renderLines","definition","msg","namesUtil","toPascal","type","label","choices","forEach","choice","value","reject","reset","assert","fail","defaultValue","ttl","checkInterval","loops","lastWriteCount","isWaitingForInput","hasWritten","testUtil","log","question","title","cursorPosition","pos"],"sources":["../../src/interfaces/SpyInterface.ts"],"sourcesContent":["import { FieldDefinitionValueType } from '@sprucelabs/schema'\nimport { namesUtil, testLog } from '@sprucelabs/spruce-skill-utils'\nimport { assert } from '@sprucelabs/test'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport testUtil from '../tests/utilities/test.utility'\nimport { ExecutionResults } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n\tImageDimensions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport TerminalInterface from './TerminalInterface'\n\nexport default class SpyInterface implements GraphicsInterface {\n\tpublic invocations: { command: string; options?: any }[] = []\n\tprivate cursorPosition = { x: 0, y: 0 }\n\n\tprivate promptResolver?: (\n\t\tinput: FieldDefinitionValueType<FieldDefinitions>\n\t) => void | undefined\n\n\tprivate confirmResolver?: (pass: boolean) => void | undefined\n\tprivate waitForEnterResolver?: () => void | undefined\n\tprivate promptDefaultValue: any\n\tprivate term?: TerminalInterface\n\tprivate startTime: number\n\tprivate promptTimeout?: any\n\n\tpublic constructor() {\n\t\tthis.startTime = new Date().getTime()\n\n\t\tthis.term = this.shouldRenderTestLogs()\n\t\t\t? new TerminalInterface(process.cwd(), true, (...strs: []) => {\n\t\t\t\t\tthis.optionallyRenderLine(strs.join(' '))\n\t\t\t })\n\t\t\t: undefined\n\t}\n\n\tprivate shouldRenderTestLogs() {\n\t\treturn process.env.SHOULD_RENDER_TEST_LOGS === 'true'\n\t}\n\n\tpublic renderWarning(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderWarning', { message, effects })\n\t\tthis.term?.renderWarning(message)\n\t}\n\n\tpublic renderHint(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHint', { message, effects })\n\t\tthis.optionallyRenderLine(`Hint: ${message}`)\n\t\tthis.term?.renderHint(message)\n\t}\n\n\tprivate trackInvocation(command: string, options?: any) {\n\t\t// testUtil.log(command, JSON.stringify(options), '\\n')\n\t\tthis.invocations.push({ command, options })\n\t}\n\n\tpublic isWaitingForInput() {\n\t\treturn !!(\n\t\t\tthis.promptResolver ||\n\t\t\tthis.confirmResolver ||\n\t\t\tthis.waitForEnterResolver\n\t\t)\n\t}\n\n\tpublic reset() {\n\t\tthis.promptResolver = undefined\n\t\tthis.confirmResolver = undefined\n\t\tthis.waitForEnterResolver = undefined\n\t\tclearTimeout(this.promptTimeout)\n\t}\n\n\tpublic getLastInvocation() {\n\t\treturn this.invocations[this.invocations.length - 1]\n\t}\n\n\tpublic async sendInput(input: string | string[]): Promise<void> {\n\t\tthis.trackInvocation('sendInput', input)\n\n\t\tthis.optionallyRenderLine(\n\t\t\t`Sending input: \"${input.length > 0 ? input : 'ENTER'}\"`\n\t\t)\n\n\t\tif (this.waitForEnterResolver) {\n\t\t\tconst resolver = this.waitForEnterResolver\n\t\t\tthis.waitForEnterResolver = undefined\n\n\t\t\tresolver()\n\t\t} else if (this.promptResolver) {\n\t\t\tconst resolver = this.promptResolver\n\t\t\tthis.promptResolver = undefined\n\n\t\t\tresolver(input !== '\\n' && input !== '' ? input : this.promptDefaultValue)\n\t\t} else if (this.confirmResolver) {\n\t\t\tconst resolver = this.confirmResolver\n\t\t\tthis.confirmResolver = undefined\n\n\t\t\tresolver(\n\t\t\t\tinput === '\\n' ||\n\t\t\t\t\tinput.length === 0 ||\n\t\t\t\t\t(typeof input === 'string' && input.toLowerCase() === 'y')\n\t\t\t)\n\t\t} else {\n\t\t\tthrow new Error('Sent input before prompted for input')\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, 50)\n\t\t})\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline: string\n\t\tlines?: string[] | string[]\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tobject?: any\n\t}): void {\n\t\tthis.trackInvocation('renderSection', options)\n\t\tthis.term?.renderSection(options)\n\t}\n\n\tpublic renderObject(obj: any): void {\n\t\tthis.trackInvocation('renderObject', obj)\n\t\tthis.term?.renderObject(obj)\n\t}\n\n\tpublic renderError(err: Error): void {\n\t\tthis.trackInvocation('renderError', err)\n\t\tthis.term?.renderError(err)\n\t}\n\n\tpublic renderCodeSample(code: string): void {\n\t\tthis.trackInvocation('renderCodeSample', code)\n\t\tthis.term?.renderCodeSample(code)\n\t}\n\n\tpublic renderActionSummary(results: ExecutionResults): void {\n\t\tthis.trackInvocation('renderCommandSummary', results)\n\t\tthis.term?.renderActionSummary(results)\n\t}\n\n\tpublic renderHero(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHero', { message, effects })\n\t\tthis.term?.renderHero(message, effects)\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[],\n\t\tdividerEffects: GraphicsTextEffect[]\n\t): void {\n\t\tthis.trackInvocation('renderHeadline', { message, effects, dividerEffects })\n\t\tthis.term?.renderHeadline(message, effects, dividerEffects)\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[] | undefined): void {\n\t\tthis.trackInvocation('renderDivider', effects)\n\t\tthis.term?.renderDivider(effects)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLine', { message, effects })\n\t\tmessage && message.length > 0 && this.optionallyRenderLine(message)\n\t}\n\n\tprivate optionallyRenderLine(message: string) {\n\t\tif (this.shouldRenderTestLogs()) {\n\t\t\tconst duration = new Date().getTime() - this.startTime\n\t\t\tconst friendly = durationUtil.msToFriendly(duration)\n\n\t\t\ttestLog.info(\n\t\t\t\t`${\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tglobal.activeTest?.test ? global.activeTest?.test + ' :: ' : ''\n\t\t\t\t}${friendly} :: ${message}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tthis.trackInvocation('renderImage', { path, options })\n\t}\n\n\tpublic renderLines(\n\t\tmessages: string[],\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLines', { messages, effects })\n\t\tthis.term?.renderLines(messages, effects)\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(definition: T) {\n\t\tthis.trackInvocation('prompt', definition)\n\n\t\tif (this.promptResolver) {\n\t\t\tthrow new Error(\n\t\t\t\t'Tried to double prompt. Try this.term?.sendInput() before calling prompt next.'\n\t\t\t)\n\t\t}\n\n\t\tlet msg = `${namesUtil.toPascal(definition.type)} Prompt: ${\n\t\t\tdefinition.label\n\t\t}`\n\n\t\tif (definition.type === 'select') {\n\t\t\tmsg += '\\n\\nChoices:\\n'\n\t\t\tdefinition.options.choices.forEach((choice) => {\n\t\t\t\tmsg += `\\n${choice.value}: ${choice.label}`\n\t\t\t})\n\n\t\t\tmsg += '\\n'\n\t\t}\n\n\t\tthis.optionallyRenderLine(msg)\n\n\t\treturn new Promise<FieldDefinitionValueType<FieldDefinitions>>(\n\t\t\t(resolve, reject) => {\n\t\t\t\tthis.promptResolver = (...args: any[]) => {\n\t\t\t\t\tclearTimeout(this.promptTimeout)\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tresolve(...args)\n\t\t\t\t}\n\t\t\t\tthis.promptTimeout = setTimeout(() => {\n\t\t\t\t\tthis.reset()\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t`Timed out waiting for input with label: '${definition.label}'\\n\\nConsider passing what you need to Action().execute({ something })`\n\t\t\t\t\t\t)\n\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t}\n\t\t\t\t}, 10000)\n\t\t\t\tthis.promptDefaultValue = definition.defaultValue\n\t\t\t}\n\t\t)\n\t}\n\n\tpublic startLoading(message?: string | undefined): void {\n\t\tthis.trackInvocation('startLoading', message)\n\t\tthis.optionallyRenderLine(message ? `${message}` : 'Start loading...')\n\t}\n\n\tpublic stopLoading(): void {\n\t\tthis.trackInvocation('stopLoading')\n\t\tthis.optionallyRenderLine('Stop loading...')\n\t}\n\n\tpublic async waitForEnter(message?: string | undefined): Promise<void> {\n\t\tthis.trackInvocation('waitForEnter', message)\n\t\tthis.optionallyRenderLine(\n\t\t\t`${message ? ` ${message}\\n\\n` : ``}Waiting for enter...`\n\t\t)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.waitForEnterResolver = resolve\n\t\t})\n\t}\n\n\tpublic async waitForInput() {\n\t\tconst ttl = 1000 * 60 * 5\n\t\tconst checkInterval = 100\n\t\tlet loops = ttl / checkInterval\n\t\tlet lastWriteCount = this.invocations.length\n\n\t\twhile (!this.isWaitingForInput()) {\n\t\t\tif (loops-- === 0) {\n\t\t\t\tassert.fail(`Waiting for input timed out.`)\n\t\t\t}\n\n\t\t\tconst hasWritten = lastWriteCount != this.invocations.length\n\n\t\t\tif (hasWritten) {\n\t\t\t\tloops = ttl / checkInterval\n\t\t\t\tlastWriteCount = this.invocations.length\n\t\t\t\tif (this.shouldRenderTestLogs()) {\n\t\t\t\t\ttestUtil.log('waitForInput timeout reset because of new output.')\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, checkInterval))\n\t\t}\n\t}\n\n\tpublic confirm(question: string): Promise<boolean> {\n\t\tthis.trackInvocation('confirm', question)\n\t\tthis.optionallyRenderLine(`${question} :: Y/N...`)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.confirmResolver = resolve\n\t\t})\n\t}\n\n\tpublic clear(): void {\n\t\tthis.trackInvocation('clear')\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.trackInvocation('renderProgressBar', options)\n\t\tthis.optionallyRenderLine(\n\t\t\t`Showing progress${options.title ? ` ${options.title}` : ``}`\n\t\t)\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tthis.trackInvocation('updateProgressBar', options)\n\t}\n\n\tpublic removeProgressBar(): void {\n\t\tthis.trackInvocation('removeProgressBar')\n\t\tthis.optionallyRenderLine(`Hiding progress`)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\tthis.trackInvocation('getCursorPosition')\n\t\treturn this.cursorPosition\n\t}\n\n\tpublic setCursorPosition(pos: { x: number; y: number }) {\n\t\tthis.cursorPosition = pos\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tthis.trackInvocation('moveCursorTo', { x, y })\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tthis.trackInvocation('clearBelowCursor')\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SpyInterface.js","names":["SpyInterface","x","y","startTime","Date","getTime","term","shouldRenderTestLogs","TerminalInterface","process","cwd","strs","optionallyRenderLine","join","undefined","env","SHOULD_RENDER_TEST_LOGS","message","effects","trackInvocation","renderWarning","renderHint","command","options","invocations","push","promptResolver","confirmResolver","waitForEnterResolver","clearTimeout","promptTimeout","length","input","resolver","promptDefaultValue","toLowerCase","Error","Promise","resolve","setTimeout","renderSection","obj","renderObject","err","renderError","code","renderCodeSample","results","renderActionSummary","renderHero","dividerEffects","renderHeadline","renderDivider","duration","friendly","durationUtil","msToFriendly","testLog","info","global","activeTest","test","path","messages","renderLines","definition","msg","namesUtil","toPascal","type","label","choices","forEach","choice","value","reject","reset","assert","fail","defaultValue","ttl","checkInterval","loops","lastWriteCount","isWaitingForInput","hasWritten","testUtil","log","question","title","cursorPosition","pos"],"sources":["../../src/interfaces/SpyInterface.ts"],"sourcesContent":["import { FieldDefinitionValueType } from '@sprucelabs/schema'\nimport { namesUtil, testLog } from '@sprucelabs/spruce-skill-utils'\nimport { assert } from '@sprucelabs/test-utils'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport testUtil from '../tests/utilities/test.utility'\nimport { ExecutionResults } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n\tImageDimensions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport TerminalInterface from './TerminalInterface'\n\nexport default class SpyInterface implements GraphicsInterface {\n\tpublic invocations: { command: string; options?: any }[] = []\n\tprivate cursorPosition = { x: 0, y: 0 }\n\n\tprivate promptResolver?: (\n\t\tinput: FieldDefinitionValueType<FieldDefinitions>\n\t) => void | undefined\n\n\tprivate confirmResolver?: (pass: boolean) => void | undefined\n\tprivate waitForEnterResolver?: () => void | undefined\n\tprivate promptDefaultValue: any\n\tprivate term?: TerminalInterface\n\tprivate startTime: number\n\tprivate promptTimeout?: any\n\n\tpublic constructor() {\n\t\tthis.startTime = new Date().getTime()\n\n\t\tthis.term = this.shouldRenderTestLogs()\n\t\t\t? new TerminalInterface(process.cwd(), true, (...strs: []) => {\n\t\t\t\t\tthis.optionallyRenderLine(strs.join(' '))\n\t\t\t })\n\t\t\t: undefined\n\t}\n\n\tprivate shouldRenderTestLogs() {\n\t\treturn process.env.SHOULD_RENDER_TEST_LOGS === 'true'\n\t}\n\n\tpublic renderWarning(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderWarning', { message, effects })\n\t\tthis.term?.renderWarning(message)\n\t}\n\n\tpublic renderHint(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHint', { message, effects })\n\t\tthis.optionallyRenderLine(`Hint: ${message}`)\n\t\tthis.term?.renderHint(message)\n\t}\n\n\tprivate trackInvocation(command: string, options?: any) {\n\t\t// testUtil.log(command, JSON.stringify(options), '\\n')\n\t\tthis.invocations.push({ command, options })\n\t}\n\n\tpublic isWaitingForInput() {\n\t\treturn !!(\n\t\t\tthis.promptResolver ||\n\t\t\tthis.confirmResolver ||\n\t\t\tthis.waitForEnterResolver\n\t\t)\n\t}\n\n\tpublic reset() {\n\t\tthis.promptResolver = undefined\n\t\tthis.confirmResolver = undefined\n\t\tthis.waitForEnterResolver = undefined\n\t\tclearTimeout(this.promptTimeout)\n\t}\n\n\tpublic getLastInvocation() {\n\t\treturn this.invocations[this.invocations.length - 1]\n\t}\n\n\tpublic async sendInput(input: string | string[]): Promise<void> {\n\t\tthis.trackInvocation('sendInput', input)\n\n\t\tthis.optionallyRenderLine(\n\t\t\t`Sending input: \"${input.length > 0 ? input : 'ENTER'}\"`\n\t\t)\n\n\t\tif (this.waitForEnterResolver) {\n\t\t\tconst resolver = this.waitForEnterResolver\n\t\t\tthis.waitForEnterResolver = undefined\n\n\t\t\tresolver()\n\t\t} else if (this.promptResolver) {\n\t\t\tconst resolver = this.promptResolver\n\t\t\tthis.promptResolver = undefined\n\n\t\t\tresolver(input !== '\\n' && input !== '' ? input : this.promptDefaultValue)\n\t\t} else if (this.confirmResolver) {\n\t\t\tconst resolver = this.confirmResolver\n\t\t\tthis.confirmResolver = undefined\n\n\t\t\tresolver(\n\t\t\t\tinput === '\\n' ||\n\t\t\t\t\tinput.length === 0 ||\n\t\t\t\t\t(typeof input === 'string' && input.toLowerCase() === 'y')\n\t\t\t)\n\t\t} else {\n\t\t\tthrow new Error('Sent input before prompted for input')\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, 50)\n\t\t})\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline: string\n\t\tlines?: string[] | string[]\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tobject?: any\n\t}): void {\n\t\tthis.trackInvocation('renderSection', options)\n\t\tthis.term?.renderSection(options)\n\t}\n\n\tpublic renderObject(obj: any): void {\n\t\tthis.trackInvocation('renderObject', obj)\n\t\tthis.term?.renderObject(obj)\n\t}\n\n\tpublic renderError(err: Error): void {\n\t\tthis.trackInvocation('renderError', err)\n\t\tthis.term?.renderError(err)\n\t}\n\n\tpublic renderCodeSample(code: string): void {\n\t\tthis.trackInvocation('renderCodeSample', code)\n\t\tthis.term?.renderCodeSample(code)\n\t}\n\n\tpublic renderActionSummary(results: ExecutionResults): void {\n\t\tthis.trackInvocation('renderCommandSummary', results)\n\t\tthis.term?.renderActionSummary(results)\n\t}\n\n\tpublic renderHero(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHero', { message, effects })\n\t\tthis.term?.renderHero(message, effects)\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[],\n\t\tdividerEffects: GraphicsTextEffect[]\n\t): void {\n\t\tthis.trackInvocation('renderHeadline', { message, effects, dividerEffects })\n\t\tthis.term?.renderHeadline(message, effects, dividerEffects)\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[] | undefined): void {\n\t\tthis.trackInvocation('renderDivider', effects)\n\t\tthis.term?.renderDivider(effects)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLine', { message, effects })\n\t\tmessage && message.length > 0 && this.optionallyRenderLine(message)\n\t}\n\n\tprivate optionallyRenderLine(message: string) {\n\t\tif (this.shouldRenderTestLogs()) {\n\t\t\tconst duration = new Date().getTime() - this.startTime\n\t\t\tconst friendly = durationUtil.msToFriendly(duration)\n\n\t\t\ttestLog.info(\n\t\t\t\t`${\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tglobal.activeTest?.test ? global.activeTest?.test + ' :: ' : ''\n\t\t\t\t}${friendly} :: ${message}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tthis.trackInvocation('renderImage', { path, options })\n\t}\n\n\tpublic renderLines(\n\t\tmessages: string[],\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLines', { messages, effects })\n\t\tthis.term?.renderLines(messages, effects)\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(definition: T) {\n\t\tthis.trackInvocation('prompt', definition)\n\n\t\tif (this.promptResolver) {\n\t\t\tthrow new Error(\n\t\t\t\t'Tried to double prompt. Try this.term?.sendInput() before calling prompt next.'\n\t\t\t)\n\t\t}\n\n\t\tlet msg = `${namesUtil.toPascal(definition.type)} Prompt: ${\n\t\t\tdefinition.label\n\t\t}`\n\n\t\tif (definition.type === 'select') {\n\t\t\tmsg += '\\n\\nChoices:\\n'\n\t\t\tdefinition.options.choices.forEach((choice) => {\n\t\t\t\tmsg += `\\n${choice.value}: ${choice.label}`\n\t\t\t})\n\n\t\t\tmsg += '\\n'\n\t\t}\n\n\t\tthis.optionallyRenderLine(msg)\n\n\t\treturn new Promise<FieldDefinitionValueType<FieldDefinitions>>(\n\t\t\t(resolve, reject) => {\n\t\t\t\tthis.promptResolver = (...args: any[]) => {\n\t\t\t\t\tclearTimeout(this.promptTimeout)\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tresolve(...args)\n\t\t\t\t}\n\t\t\t\tthis.promptTimeout = setTimeout(() => {\n\t\t\t\t\tthis.reset()\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t`Timed out waiting for input with label: '${definition.label}'\\n\\nConsider passing what you need to Action().execute({ something })`\n\t\t\t\t\t\t)\n\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t}\n\t\t\t\t}, 10000)\n\t\t\t\tthis.promptDefaultValue = definition.defaultValue\n\t\t\t}\n\t\t)\n\t}\n\n\tpublic startLoading(message?: string | undefined): void {\n\t\tthis.trackInvocation('startLoading', message)\n\t\tthis.optionallyRenderLine(message ? `${message}` : 'Start loading...')\n\t}\n\n\tpublic stopLoading(): void {\n\t\tthis.trackInvocation('stopLoading')\n\t\tthis.optionallyRenderLine('Stop loading...')\n\t}\n\n\tpublic async waitForEnter(message?: string | undefined): Promise<void> {\n\t\tthis.trackInvocation('waitForEnter', message)\n\t\tthis.optionallyRenderLine(\n\t\t\t`${message ? ` ${message}\\n\\n` : ``}Waiting for enter...`\n\t\t)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.waitForEnterResolver = resolve\n\t\t})\n\t}\n\n\tpublic async waitForInput() {\n\t\tconst ttl = 1000 * 60 * 5\n\t\tconst checkInterval = 100\n\t\tlet loops = ttl / checkInterval\n\t\tlet lastWriteCount = this.invocations.length\n\n\t\twhile (!this.isWaitingForInput()) {\n\t\t\tif (loops-- === 0) {\n\t\t\t\tassert.fail(`Waiting for input timed out.`)\n\t\t\t}\n\n\t\t\tconst hasWritten = lastWriteCount != this.invocations.length\n\n\t\t\tif (hasWritten) {\n\t\t\t\tloops = ttl / checkInterval\n\t\t\t\tlastWriteCount = this.invocations.length\n\t\t\t\tif (this.shouldRenderTestLogs()) {\n\t\t\t\t\ttestUtil.log('waitForInput timeout reset because of new output.')\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, checkInterval))\n\t\t}\n\t}\n\n\tpublic confirm(question: string): Promise<boolean> {\n\t\tthis.trackInvocation('confirm', question)\n\t\tthis.optionallyRenderLine(`${question} :: Y/N...`)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.confirmResolver = resolve\n\t\t})\n\t}\n\n\tpublic clear(): void {\n\t\tthis.trackInvocation('clear')\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.trackInvocation('renderProgressBar', options)\n\t\tthis.optionallyRenderLine(\n\t\t\t`Showing progress${options.title ? ` ${options.title}` : ``}`\n\t\t)\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tthis.trackInvocation('updateProgressBar', options)\n\t}\n\n\tpublic removeProgressBar(): void {\n\t\tthis.trackInvocation('removeProgressBar')\n\t\tthis.optionallyRenderLine(`Hiding progress`)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\tthis.trackInvocation('getCursorPosition')\n\t\treturn this.cursorPosition\n\t}\n\n\tpublic setCursorPosition(pos: { x: number; y: number }) {\n\t\tthis.cursorPosition = pos\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tthis.trackInvocation('moveCursorTo', { x, y })\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tthis.trackInvocation('clearBelowCursor')\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import AbstractSpruceTest from '@sprucelabs/test';
|
|
1
|
+
import AbstractSpruceTest from '@sprucelabs/test-utils';
|
|
2
2
|
import { CliBootOptions } from '../cli';
|
|
3
3
|
import AbstractAction from '../features/AbstractAction';
|
|
4
4
|
import { FeatureOptions } from '../features/AbstractFeature';
|
|
@@ -37,7 +37,7 @@ var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
|
37
37
|
|
|
38
38
|
var _spruceTemplates = require("@sprucelabs/spruce-templates");
|
|
39
39
|
|
|
40
|
-
var
|
|
40
|
+
var _testUtils = _interopRequireWildcard(require("@sprucelabs/test-utils"));
|
|
41
41
|
|
|
42
42
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
43
43
|
|
|
@@ -87,7 +87,7 @@ var _SkillFixture = _interopRequireDefault(require("./fixtures/SkillFixture"));
|
|
|
87
87
|
|
|
88
88
|
var _ViewFixture = _interopRequireDefault(require("./fixtures/ViewFixture"));
|
|
89
89
|
|
|
90
|
-
var
|
|
90
|
+
var _test = _interopRequireDefault(require("./utilities/test.utility"));
|
|
91
91
|
|
|
92
92
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
93
93
|
|
|
@@ -171,7 +171,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
171
171
|
//@ts-ignore
|
|
172
172
|
process.env = _objectSpread({}, this.originalEnv);
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
_test["default"].startLogTimer();
|
|
175
175
|
|
|
176
176
|
_schema.SchemaRegistry.getInstance().forgetAllSchemas();
|
|
177
177
|
|
|
@@ -250,11 +250,11 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
250
250
|
throw new Error("Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.");
|
|
251
251
|
|
|
252
252
|
case 9:
|
|
253
|
-
if (_spruceSkillUtils.diskUtil.doesDirExist(this.cwd) &&
|
|
253
|
+
if (_spruceSkillUtils.diskUtil.doesDirExist(this.cwd) && _test["default"].shouldClearCache()) {
|
|
254
254
|
_spruceSkillUtils.diskUtil.deleteDir(this.cwd);
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
if (_spruceSkillUtils.diskUtil.doesDirExist(this.homeDir) &&
|
|
257
|
+
if (_spruceSkillUtils.diskUtil.doesDirExist(this.homeDir) && _test["default"].shouldClearCache()) {
|
|
258
258
|
_spruceSkillUtils.diskUtil.deleteDir(this.homeDir);
|
|
259
259
|
}
|
|
260
260
|
|
|
@@ -284,7 +284,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
284
284
|
return (0, _get2["default"])((0, _getPrototypeOf2["default"])(AbstractCliTest), "afterAll", this).call(this);
|
|
285
285
|
|
|
286
286
|
case 2:
|
|
287
|
-
if (
|
|
287
|
+
if (_test["default"].shouldCleanupTestSkillDirs()) {
|
|
288
288
|
_FeatureFixture2["default"].deleteOldSkillDirs();
|
|
289
289
|
}
|
|
290
290
|
|
|
@@ -359,7 +359,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
359
359
|
}, {
|
|
360
360
|
key: "freshTmpDir",
|
|
361
361
|
value: function freshTmpDir() {
|
|
362
|
-
var tmpDirectory =
|
|
362
|
+
var tmpDirectory = _test["default"].resolveTestDir(uuid.v4());
|
|
363
363
|
|
|
364
364
|
_fsExtra["default"].ensureDirSync(tmpDirectory);
|
|
365
365
|
|
|
@@ -679,7 +679,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
679
679
|
case 3:
|
|
680
680
|
isInstalled = _context10.sent;
|
|
681
681
|
|
|
682
|
-
|
|
682
|
+
_testUtils.assert.isTrue(isInstalled);
|
|
683
683
|
|
|
684
684
|
case 5:
|
|
685
685
|
case "end":
|
|
@@ -853,7 +853,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
853
853
|
}, {
|
|
854
854
|
key: "log",
|
|
855
855
|
value: function log() {
|
|
856
|
-
|
|
856
|
+
_test["default"].log.apply(_test["default"], arguments);
|
|
857
857
|
}
|
|
858
858
|
}, {
|
|
859
859
|
key: "Action",
|
|
@@ -912,7 +912,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
912
912
|
value: function selectOptionBasedOnLabel(label) {
|
|
913
913
|
var last = this.ui.getLastInvocation();
|
|
914
914
|
|
|
915
|
-
|
|
915
|
+
_testUtils.assert.doesInclude(last.options.options.choices, {
|
|
916
916
|
label: label
|
|
917
917
|
});
|
|
918
918
|
|
|
@@ -923,7 +923,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
923
923
|
}
|
|
924
924
|
}]);
|
|
925
925
|
return AbstractCliTest;
|
|
926
|
-
}(
|
|
926
|
+
}(_testUtils["default"]);
|
|
927
927
|
|
|
928
928
|
exports["default"] = AbstractCliTest;
|
|
929
929
|
(0, _defineProperty2["default"])(AbstractCliTest, "cliRoot", _path["default"].join(__dirname, '..'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractCliTest.js","names":["AbstractCliTest","cleanTestDirsAndFiles","LintService","disableLinting","ImportService","setCacheDir","diskUtil","createRandomTempDir","enableCaching","process","env","ENABLE_INSTALL_ENTERTAINMENT","originalEnv","testUtil","startLogTimer","SchemaRegistry","getInstance","forgetAllSchemas","cwd","freshTmpDir","homeDir","emitter","undefined","featureInstaller","OnboardingStore","overrideCwd","ui","reset","invocations","setCursorPosition","x","y","clearFixtures","clearCache","SkillStore","clearCurrentSkill","EventStore","CommandService","clearMockResponses","MercuryClientFactory","setIsTestMode","commandFaker","CommandFaker","organizationFixture","clearAllOrgs","mercuryFixture","disconnectAll","_ui","isWaitingForInput","Error","doesDirExist","shouldClearCache","deleteDir","shouldCleanupTestSkillDirs","FeatureFixture","deleteOldSkillDirs","pattern","resolveTestPath","globby","matches","match","deleteFile","personFixture","skillFixture","viewFixture","tmpDirectory","resolveTestDir","uuid","v4","fs","ensureDirSync","SpyInterface","CliGlobalEmitter","Emitter","pathAfterTestDirsAndFiles","pathUtil","join","cliRoot","options","Cli","fixture","linkLocalPackages","type","sf","ServiceFactory","Service","getEmitter","serviceFactory","apiClientFactory","getMercuryFixture","getApiClientFactory","getFeatureInstaller","MercuryFixture","PersonFixture","writerFactory","WriterFactory","viewWriter","Writer","fileDescriptions","ViewFixture","Action","templates","settings","execute","promise","waitForInput","sendInput","results","OrganizationFixture","people","StoreFactory","SkillFixture","filePath","resolveHashSprucePath","storeFactory","actionExecuter","ActionExecuter","FeatureInstallerFactory","WithAllFeatures","code","Store","isInstalled","assert","isTrue","files","file","checker","check","path","connectToApi","all","dir","wait","timeout","log","featureCode","actionCode","executer","shouldThrowOnListenerError","actionFactory","ActionFactory","optionOverrides","shouldInstallMissingDependencies","featureInstallerFactory","shouldAutoHandleDependencies","label","last","getLastInvocation","doesInclude","choices","find","o","value","AbstractSpruceTest","__dirname"],"sources":["../../src/tests/AbstractCliTest.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SchemaRegistry } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport AbstractSpruceTest, { assert } from '@sprucelabs/test'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport * as uuid from 'uuid'\nimport { CliBootOptions } from '../cli'\nimport AbstractAction from '../features/AbstractAction'\nimport { FeatureOptions } from '../features/AbstractFeature'\nimport ActionExecuter, {\n\tActionExecuterOptions,\n} from '../features/ActionExecuter'\nimport ActionFactory from '../features/ActionFactory'\nimport EventStore from '../features/event/stores/EventStore'\nimport FeatureInstaller from '../features/FeatureInstaller'\nimport FeatureInstallerFactory from '../features/FeatureInstallerFactory'\nimport { FeatureActionResponse, FeatureCode } from '../features/features.types'\nimport OnboardingStore from '../features/onboard/stores/OnboardingStore'\nimport SkillStore from '../features/skill/stores/SkillStore'\nimport CliGlobalEmitter, { GlobalEmitter } from '../GlobalEmitter'\nimport SpyInterface from '../interfaces/SpyInterface'\nimport CommandService from '../services/CommandService'\nimport ImportService from '../services/ImportService'\nimport LintService from '../services/LintService'\nimport ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreFactoryOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport { ApiClientFactoryOptions } from '../types/apiClient.types'\nimport { OptionOverrides } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport CommandFaker from './CommandFaker'\nimport FeatureFixture, {\n\tFeatureFixtureOptions,\n} from './fixtures/FeatureFixture'\nimport MercuryFixture from './fixtures/MercuryFixture'\nimport OrganizationFixture from './fixtures/OrganizationFixture'\nimport PersonFixture from './fixtures/PersonFixture'\nimport SkillFixture from './fixtures/SkillFixture'\nimport ViewFixture from './fixtures/ViewFixture'\nimport testUtil from './utilities/test.utility'\n\ntype ExecuterOptions = Partial<ActionExecuterOptions> & {\n\toptionOverrides?: OptionOverrides\n}\n\nexport default abstract class AbstractCliTest extends AbstractSpruceTest {\n\tprotected static cliRoot = pathUtil.join(__dirname, '..')\n\tprotected static homeDir: string\n\tprotected static commandFaker: CommandFaker\n\n\tprivate static _ui: SpyInterface\n\tprivate static emitter?: GlobalEmitter\n\tprivate static mercuryFixture?: MercuryFixture\n\tprivate static personFixture?: PersonFixture\n\tprivate static organizationFixture?: OrganizationFixture\n\tprivate static skillFixture?: SkillFixture\n\tprivate static featureInstaller?: FeatureInstaller\n\tprivate static viewFixture?: ViewFixture\n\tprivate static originalEnv: { [x: string]: string | undefined }\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tawait this.cleanTestDirsAndFiles()\n\n\t\tLintService.disableLinting()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tImportService.enableCaching()\n\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT = 'false'\n\n\t\tthis.originalEnv = { ...process.env }\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\t//@ts-ignore\n\t\tprocess.env = { ...this.originalEnv }\n\n\t\ttestUtil.startLogTimer()\n\n\t\tSchemaRegistry.getInstance().forgetAllSchemas()\n\n\t\tthis.cwd = this.freshTmpDir()\n\t\tthis.homeDir = this.freshTmpDir()\n\n\t\tthis.emitter = undefined\n\t\tthis.featureInstaller = undefined\n\n\t\tOnboardingStore.overrideCwd(diskUtil.createRandomTempDir())\n\n\t\tthis.ui.reset()\n\t\tthis.ui.invocations = []\n\t\tthis.ui.setCursorPosition({ x: 0, y: 0 })\n\n\t\tthis.clearFixtures()\n\n\t\tImportService.clearCache()\n\t\tSkillStore.clearCurrentSkill()\n\t\tEventStore.clearCache()\n\t\tCommandService.clearMockResponses()\n\t\tMercuryClientFactory.reset()\n\t\tMercuryClientFactory.setIsTestMode(false)\n\n\t\tthis.commandFaker = new CommandFaker()\n\t}\n\n\tprotected static async afterEach() {\n\t\tawait super.afterEach()\n\n\t\tawait this.organizationFixture?.clearAllOrgs()\n\t\tawait this.mercuryFixture?.disconnectAll()\n\n\t\tthis.clearFixtures()\n\n\t\tif (this._ui?.isWaitingForInput()) {\n\t\t\tthrow new Error(\n\t\t\t\t`Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.`\n\t\t\t)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.cwd) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.cwd)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.homeDir) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.homeDir)\n\t\t}\n\t}\n\n\tprotected static async afterAll() {\n\t\tawait super.afterAll()\n\t\tif (testUtil.shouldCleanupTestSkillDirs()) {\n\t\t\tFeatureFixture.deleteOldSkillDirs()\n\t\t}\n\t}\n\n\tprivate static async cleanTestDirsAndFiles() {\n\t\tconst pattern = this.resolveTestPath('**/*.d.ts')\n\t\tconst matches = await globby(pattern)\n\n\t\tfor (const match of matches) {\n\t\t\tdiskUtil.deleteFile(match)\n\t\t}\n\t}\n\n\tprivate static clearFixtures() {\n\t\tthis.emitter = undefined\n\t\tthis.mercuryFixture = undefined\n\t\tthis.organizationFixture = undefined\n\t\tthis.personFixture = undefined\n\t\tthis.skillFixture = undefined\n\t\tthis.viewFixture = undefined\n\t}\n\n\tprotected static freshTmpDir() {\n\t\tconst tmpDirectory = testUtil.resolveTestDir(uuid.v4())\n\t\tfs.ensureDirSync(tmpDirectory)\n\t\treturn tmpDirectory\n\t}\n\n\tprotected static get ui() {\n\t\tif (!this._ui) {\n\t\t\tthis._ui = new SpyInterface()\n\t\t}\n\n\t\treturn this._ui\n\t}\n\n\tprotected static getEmitter() {\n\t\tif (!this.emitter) {\n\t\t\tthis.emitter = CliGlobalEmitter.Emitter()\n\t\t}\n\t\treturn this.emitter\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUtil.join(\n\t\t\tthis.cliRoot,\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n\n\tprotected static async Cli(options?: CliBootOptions) {\n\t\treturn this.FeatureFixture(options).Cli({\n\t\t\tcwd: this.cwd,\n\t\t\thomeDir: this.homeDir,\n\t\t\t...(options ?? {}),\n\t\t})\n\t}\n\n\tprotected static async linkLocalPackages() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tawait fixture.linkLocalPackages()\n\t}\n\n\tprotected static Service<S extends Service>(\n\t\ttype: S,\n\t\tcwd?: string\n\t): ServiceMap[S] {\n\t\tconst sf = this.ServiceFactory()\n\t\treturn sf.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected static ServiceFactory() {\n\t\treturn new ServiceFactory()\n\t}\n\n\tprotected static FeatureFixture(options?: Partial<FeatureFixtureOptions>) {\n\t\tconst emitter = options?.emitter ?? this.getEmitter()\n\n\t\treturn new FeatureFixture({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory: this.ServiceFactory(),\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tfeatureInstaller: this.getFeatureInstaller({ emitter }),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static getMercuryFixture() {\n\t\tif (!this.mercuryFixture) {\n\t\t\tthis.mercuryFixture = new MercuryFixture(this.cwd, this.ServiceFactory())\n\t\t}\n\n\t\treturn this.mercuryFixture\n\t}\n\n\tprotected static get people() {\n\t\tif (!this.personFixture) {\n\t\t\tthis.personFixture = new PersonFixture(\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.personFixture\n\t}\n\n\tprotected static getViewFixture() {\n\t\tif (!this.viewFixture) {\n\t\t\tconst writerFactory = this.WriterFactory()\n\n\t\t\tconst viewWriter = writerFactory.Writer('view', { fileDescriptions: [] })\n\t\t\tthis.viewFixture = new ViewFixture(\n\t\t\t\tthis.cwd,\n\t\t\t\tviewWriter,\n\t\t\t\tthis.Action('view', 'sync')\n\t\t\t)\n\t\t}\n\n\t\treturn this.viewFixture\n\t}\n\n\tprivate static WriterFactory() {\n\t\treturn new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui: this.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t})\n\t}\n\n\tprotected static async skipInstallSkillPrompts<\n\t\tE extends () => Promise<FeatureActionResponse>\n\t>(\n\t\texecute?: E\n\t): Promise<E extends undefined ? undefined : FeatureActionResponse> {\n\t\tconst promise = execute?.()\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('n')\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\treturn results as any\n\t}\n\n\tprotected static getOrganizationFixture() {\n\t\tif (!this.organizationFixture) {\n\t\t\tthis.organizationFixture = new OrganizationFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.organizationFixture\n\t}\n\n\tprotected static getSkillFixture() {\n\t\tif (!this.skillFixture) {\n\t\t\tthis.skillFixture = new SkillFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory(),\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.skillFixture\n\t}\n\n\tprotected static resolveHashSprucePath(...filePath: string[]) {\n\t\treturn diskUtil.resolveHashSprucePath(this.cwd, ...filePath)\n\t}\n\n\tprotected static getFeatureInstaller(options?: Partial<FeatureOptions>) {\n\t\tif (!this.featureInstaller) {\n\t\t\tconst serviceFactory = this.ServiceFactory()\n\t\t\tconst storeFactory = this.StoreFactory(options)\n\t\t\tconst emitter = this.getEmitter()\n\t\t\tconst apiClientFactory = this.getMercuryFixture().getApiClientFactory()\n\n\t\t\tconst actionExecuter = this.ActionExecuter()\n\n\t\t\tthis.featureInstaller = FeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui: this.ui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t\t...options,\n\t\t\t})\n\t\t}\n\n\t\treturn this.featureInstaller\n\t}\n\n\tprotected static StoreFactory(options?: Partial<StoreFactoryOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\n\t\treturn new StoreFactory({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: this.homeDir,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\temitter: this.getEmitter(),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.StoreFactory().Store(code, {\n\t\t\tcwd: this.cwd,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static async waitForInput() {\n\t\treturn this.ui.waitForInput()\n\t}\n\n\tprotected static async assertIsFeatureInstalled(code: FeatureCode) {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\t\tconst isInstalled = await featureInstaller.isInstalled(code)\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\tprotected static async assertValidActionResponseFiles(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tfor (const file of results.files ?? []) {\n\t\t\tconst checker = this.Service('typeChecker')\n\t\t\tawait checker.check(file.path)\n\t\t}\n\n\t\t// await Promise.all(\n\t\t// \t(results.files ?? []).map((file) => {\n\t\t// \t\tconst checker = this.Service('typeChecker')\n\t\t// \t\treturn checker.check(file.path)\n\t\t// \t})\n\t\t// )\n\t}\n\n\tprotected static async connectToApi(options?: ApiClientFactoryOptions) {\n\t\treturn this.getMercuryFixture().connectToApi(options)\n\t}\n\n\tprotected static async openInVsCode(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Action('vscode', 'setup').execute({ all: true })\n\n\t\tawait this.Service('command').execute(\n\t\t\t`code ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static async openInFinder(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Service('command').execute(\n\t\t\t`open ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static log(...args: any[]) {\n\t\ttestUtil.log(...args)\n\t}\n\n\tprotected static Action<\n\t\tAction extends AbstractAction = AbstractAction,\n\t\tF extends FeatureCode = FeatureCode\n\t>(featureCode: F, actionCode: string, options?: ExecuterOptions): Action {\n\t\tconst executer = this.ActionExecuter({\n\t\t\tshouldThrowOnListenerError: true,\n\t\t\t...options,\n\t\t}).Action(featureCode, actionCode)\n\n\t\treturn executer as any\n\t}\n\n\tprotected static ActionExecuter(options?: ExecuterOptions) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\t\tconst writerFactory = this.WriterFactory()\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\twriterFactory,\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory: this.StoreFactory(),\n\t\t\ttemplates,\n\t\t\toptionOverrides: {\n\t\t\t\t'sync.schemas': {\n\t\t\t\t\tshouldInstallMissingDependencies: true,\n\t\t\t\t},\n\t\t\t\t...options?.optionOverrides,\n\t\t\t},\n\t\t})\n\n\t\tconst executer = new ActionExecuter({\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tactionFactory,\n\t\t\tfeatureInstallerFactory: () => {\n\t\t\t\treturn this.getFeatureInstaller()\n\t\t\t},\n\t\t\tshouldAutoHandleDependencies: false,\n\t\t\t...options,\n\t\t})\n\n\t\treturn executer\n\t}\n\n\tprotected static selectOptionBasedOnLabel(label: string) {\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel,\n\t\t})\n\n\t\tconst match = last.options.options.choices.find(\n\t\t\t(o: any) => o.label === label\n\t\t)\n\n\t\tvoid this.ui.sendInput(`${match.value}`)\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AbstractCliTest.js","names":["AbstractCliTest","cleanTestDirsAndFiles","LintService","disableLinting","ImportService","setCacheDir","diskUtil","createRandomTempDir","enableCaching","process","env","ENABLE_INSTALL_ENTERTAINMENT","originalEnv","testUtil","startLogTimer","SchemaRegistry","getInstance","forgetAllSchemas","cwd","freshTmpDir","homeDir","emitter","undefined","featureInstaller","OnboardingStore","overrideCwd","ui","reset","invocations","setCursorPosition","x","y","clearFixtures","clearCache","SkillStore","clearCurrentSkill","EventStore","CommandService","clearMockResponses","MercuryClientFactory","setIsTestMode","commandFaker","CommandFaker","organizationFixture","clearAllOrgs","mercuryFixture","disconnectAll","_ui","isWaitingForInput","Error","doesDirExist","shouldClearCache","deleteDir","shouldCleanupTestSkillDirs","FeatureFixture","deleteOldSkillDirs","pattern","resolveTestPath","globby","matches","match","deleteFile","personFixture","skillFixture","viewFixture","tmpDirectory","resolveTestDir","uuid","v4","fs","ensureDirSync","SpyInterface","CliGlobalEmitter","Emitter","pathAfterTestDirsAndFiles","pathUtil","join","cliRoot","options","Cli","fixture","linkLocalPackages","type","sf","ServiceFactory","Service","getEmitter","serviceFactory","apiClientFactory","getMercuryFixture","getApiClientFactory","getFeatureInstaller","MercuryFixture","PersonFixture","writerFactory","WriterFactory","viewWriter","Writer","fileDescriptions","ViewFixture","Action","templates","settings","execute","promise","waitForInput","sendInput","results","OrganizationFixture","people","StoreFactory","SkillFixture","filePath","resolveHashSprucePath","storeFactory","actionExecuter","ActionExecuter","FeatureInstallerFactory","WithAllFeatures","code","Store","isInstalled","assert","isTrue","files","file","checker","check","path","connectToApi","all","dir","wait","timeout","log","featureCode","actionCode","executer","shouldThrowOnListenerError","actionFactory","ActionFactory","optionOverrides","shouldInstallMissingDependencies","featureInstallerFactory","shouldAutoHandleDependencies","label","last","getLastInvocation","doesInclude","choices","find","o","value","AbstractSpruceTest","__dirname"],"sources":["../../src/tests/AbstractCliTest.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SchemaRegistry } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport AbstractSpruceTest, { assert } from '@sprucelabs/test-utils'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport * as uuid from 'uuid'\nimport { CliBootOptions } from '../cli'\nimport AbstractAction from '../features/AbstractAction'\nimport { FeatureOptions } from '../features/AbstractFeature'\nimport ActionExecuter, {\n\tActionExecuterOptions,\n} from '../features/ActionExecuter'\nimport ActionFactory from '../features/ActionFactory'\nimport EventStore from '../features/event/stores/EventStore'\nimport FeatureInstaller from '../features/FeatureInstaller'\nimport FeatureInstallerFactory from '../features/FeatureInstallerFactory'\nimport { FeatureActionResponse, FeatureCode } from '../features/features.types'\nimport OnboardingStore from '../features/onboard/stores/OnboardingStore'\nimport SkillStore from '../features/skill/stores/SkillStore'\nimport CliGlobalEmitter, { GlobalEmitter } from '../GlobalEmitter'\nimport SpyInterface from '../interfaces/SpyInterface'\nimport CommandService from '../services/CommandService'\nimport ImportService from '../services/ImportService'\nimport LintService from '../services/LintService'\nimport ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreFactoryOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport { ApiClientFactoryOptions } from '../types/apiClient.types'\nimport { OptionOverrides } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport CommandFaker from './CommandFaker'\nimport FeatureFixture, {\n\tFeatureFixtureOptions,\n} from './fixtures/FeatureFixture'\nimport MercuryFixture from './fixtures/MercuryFixture'\nimport OrganizationFixture from './fixtures/OrganizationFixture'\nimport PersonFixture from './fixtures/PersonFixture'\nimport SkillFixture from './fixtures/SkillFixture'\nimport ViewFixture from './fixtures/ViewFixture'\nimport testUtil from './utilities/test.utility'\n\ntype ExecuterOptions = Partial<ActionExecuterOptions> & {\n\toptionOverrides?: OptionOverrides\n}\n\nexport default abstract class AbstractCliTest extends AbstractSpruceTest {\n\tprotected static cliRoot = pathUtil.join(__dirname, '..')\n\tprotected static homeDir: string\n\tprotected static commandFaker: CommandFaker\n\n\tprivate static _ui: SpyInterface\n\tprivate static emitter?: GlobalEmitter\n\tprivate static mercuryFixture?: MercuryFixture\n\tprivate static personFixture?: PersonFixture\n\tprivate static organizationFixture?: OrganizationFixture\n\tprivate static skillFixture?: SkillFixture\n\tprivate static featureInstaller?: FeatureInstaller\n\tprivate static viewFixture?: ViewFixture\n\tprivate static originalEnv: { [x: string]: string | undefined }\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tawait this.cleanTestDirsAndFiles()\n\n\t\tLintService.disableLinting()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tImportService.enableCaching()\n\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT = 'false'\n\n\t\tthis.originalEnv = { ...process.env }\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\t//@ts-ignore\n\t\tprocess.env = { ...this.originalEnv }\n\n\t\ttestUtil.startLogTimer()\n\n\t\tSchemaRegistry.getInstance().forgetAllSchemas()\n\n\t\tthis.cwd = this.freshTmpDir()\n\t\tthis.homeDir = this.freshTmpDir()\n\n\t\tthis.emitter = undefined\n\t\tthis.featureInstaller = undefined\n\n\t\tOnboardingStore.overrideCwd(diskUtil.createRandomTempDir())\n\n\t\tthis.ui.reset()\n\t\tthis.ui.invocations = []\n\t\tthis.ui.setCursorPosition({ x: 0, y: 0 })\n\n\t\tthis.clearFixtures()\n\n\t\tImportService.clearCache()\n\t\tSkillStore.clearCurrentSkill()\n\t\tEventStore.clearCache()\n\t\tCommandService.clearMockResponses()\n\t\tMercuryClientFactory.reset()\n\t\tMercuryClientFactory.setIsTestMode(false)\n\n\t\tthis.commandFaker = new CommandFaker()\n\t}\n\n\tprotected static async afterEach() {\n\t\tawait super.afterEach()\n\n\t\tawait this.organizationFixture?.clearAllOrgs()\n\t\tawait this.mercuryFixture?.disconnectAll()\n\n\t\tthis.clearFixtures()\n\n\t\tif (this._ui?.isWaitingForInput()) {\n\t\t\tthrow new Error(\n\t\t\t\t`Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.`\n\t\t\t)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.cwd) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.cwd)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.homeDir) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.homeDir)\n\t\t}\n\t}\n\n\tprotected static async afterAll() {\n\t\tawait super.afterAll()\n\t\tif (testUtil.shouldCleanupTestSkillDirs()) {\n\t\t\tFeatureFixture.deleteOldSkillDirs()\n\t\t}\n\t}\n\n\tprivate static async cleanTestDirsAndFiles() {\n\t\tconst pattern = this.resolveTestPath('**/*.d.ts')\n\t\tconst matches = await globby(pattern)\n\n\t\tfor (const match of matches) {\n\t\t\tdiskUtil.deleteFile(match)\n\t\t}\n\t}\n\n\tprivate static clearFixtures() {\n\t\tthis.emitter = undefined\n\t\tthis.mercuryFixture = undefined\n\t\tthis.organizationFixture = undefined\n\t\tthis.personFixture = undefined\n\t\tthis.skillFixture = undefined\n\t\tthis.viewFixture = undefined\n\t}\n\n\tprotected static freshTmpDir() {\n\t\tconst tmpDirectory = testUtil.resolveTestDir(uuid.v4())\n\t\tfs.ensureDirSync(tmpDirectory)\n\t\treturn tmpDirectory\n\t}\n\n\tprotected static get ui() {\n\t\tif (!this._ui) {\n\t\t\tthis._ui = new SpyInterface()\n\t\t}\n\n\t\treturn this._ui\n\t}\n\n\tprotected static getEmitter() {\n\t\tif (!this.emitter) {\n\t\t\tthis.emitter = CliGlobalEmitter.Emitter()\n\t\t}\n\t\treturn this.emitter\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUtil.join(\n\t\t\tthis.cliRoot,\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n\n\tprotected static async Cli(options?: CliBootOptions) {\n\t\treturn this.FeatureFixture(options).Cli({\n\t\t\tcwd: this.cwd,\n\t\t\thomeDir: this.homeDir,\n\t\t\t...(options ?? {}),\n\t\t})\n\t}\n\n\tprotected static async linkLocalPackages() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tawait fixture.linkLocalPackages()\n\t}\n\n\tprotected static Service<S extends Service>(\n\t\ttype: S,\n\t\tcwd?: string\n\t): ServiceMap[S] {\n\t\tconst sf = this.ServiceFactory()\n\t\treturn sf.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected static ServiceFactory() {\n\t\treturn new ServiceFactory()\n\t}\n\n\tprotected static FeatureFixture(options?: Partial<FeatureFixtureOptions>) {\n\t\tconst emitter = options?.emitter ?? this.getEmitter()\n\n\t\treturn new FeatureFixture({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory: this.ServiceFactory(),\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tfeatureInstaller: this.getFeatureInstaller({ emitter }),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static getMercuryFixture() {\n\t\tif (!this.mercuryFixture) {\n\t\t\tthis.mercuryFixture = new MercuryFixture(this.cwd, this.ServiceFactory())\n\t\t}\n\n\t\treturn this.mercuryFixture\n\t}\n\n\tprotected static get people() {\n\t\tif (!this.personFixture) {\n\t\t\tthis.personFixture = new PersonFixture(\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.personFixture\n\t}\n\n\tprotected static getViewFixture() {\n\t\tif (!this.viewFixture) {\n\t\t\tconst writerFactory = this.WriterFactory()\n\n\t\t\tconst viewWriter = writerFactory.Writer('view', { fileDescriptions: [] })\n\t\t\tthis.viewFixture = new ViewFixture(\n\t\t\t\tthis.cwd,\n\t\t\t\tviewWriter,\n\t\t\t\tthis.Action('view', 'sync')\n\t\t\t)\n\t\t}\n\n\t\treturn this.viewFixture\n\t}\n\n\tprivate static WriterFactory() {\n\t\treturn new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui: this.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t})\n\t}\n\n\tprotected static async skipInstallSkillPrompts<\n\t\tE extends () => Promise<FeatureActionResponse>\n\t>(\n\t\texecute?: E\n\t): Promise<E extends undefined ? undefined : FeatureActionResponse> {\n\t\tconst promise = execute?.()\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('n')\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\treturn results as any\n\t}\n\n\tprotected static getOrganizationFixture() {\n\t\tif (!this.organizationFixture) {\n\t\t\tthis.organizationFixture = new OrganizationFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.organizationFixture\n\t}\n\n\tprotected static getSkillFixture() {\n\t\tif (!this.skillFixture) {\n\t\t\tthis.skillFixture = new SkillFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory(),\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.skillFixture\n\t}\n\n\tprotected static resolveHashSprucePath(...filePath: string[]) {\n\t\treturn diskUtil.resolveHashSprucePath(this.cwd, ...filePath)\n\t}\n\n\tprotected static getFeatureInstaller(options?: Partial<FeatureOptions>) {\n\t\tif (!this.featureInstaller) {\n\t\t\tconst serviceFactory = this.ServiceFactory()\n\t\t\tconst storeFactory = this.StoreFactory(options)\n\t\t\tconst emitter = this.getEmitter()\n\t\t\tconst apiClientFactory = this.getMercuryFixture().getApiClientFactory()\n\n\t\t\tconst actionExecuter = this.ActionExecuter()\n\n\t\t\tthis.featureInstaller = FeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui: this.ui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t\t...options,\n\t\t\t})\n\t\t}\n\n\t\treturn this.featureInstaller\n\t}\n\n\tprotected static StoreFactory(options?: Partial<StoreFactoryOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\n\t\treturn new StoreFactory({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: this.homeDir,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\temitter: this.getEmitter(),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.StoreFactory().Store(code, {\n\t\t\tcwd: this.cwd,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static async waitForInput() {\n\t\treturn this.ui.waitForInput()\n\t}\n\n\tprotected static async assertIsFeatureInstalled(code: FeatureCode) {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\t\tconst isInstalled = await featureInstaller.isInstalled(code)\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\tprotected static async assertValidActionResponseFiles(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tfor (const file of results.files ?? []) {\n\t\t\tconst checker = this.Service('typeChecker')\n\t\t\tawait checker.check(file.path)\n\t\t}\n\n\t\t// await Promise.all(\n\t\t// \t(results.files ?? []).map((file) => {\n\t\t// \t\tconst checker = this.Service('typeChecker')\n\t\t// \t\treturn checker.check(file.path)\n\t\t// \t})\n\t\t// )\n\t}\n\n\tprotected static async connectToApi(options?: ApiClientFactoryOptions) {\n\t\treturn this.getMercuryFixture().connectToApi(options)\n\t}\n\n\tprotected static async openInVsCode(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Action('vscode', 'setup').execute({ all: true })\n\n\t\tawait this.Service('command').execute(\n\t\t\t`code ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static async openInFinder(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Service('command').execute(\n\t\t\t`open ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static log(...args: any[]) {\n\t\ttestUtil.log(...args)\n\t}\n\n\tprotected static Action<\n\t\tAction extends AbstractAction = AbstractAction,\n\t\tF extends FeatureCode = FeatureCode\n\t>(featureCode: F, actionCode: string, options?: ExecuterOptions): Action {\n\t\tconst executer = this.ActionExecuter({\n\t\t\tshouldThrowOnListenerError: true,\n\t\t\t...options,\n\t\t}).Action(featureCode, actionCode)\n\n\t\treturn executer as any\n\t}\n\n\tprotected static ActionExecuter(options?: ExecuterOptions) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\t\tconst writerFactory = this.WriterFactory()\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\twriterFactory,\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory: this.StoreFactory(),\n\t\t\ttemplates,\n\t\t\toptionOverrides: {\n\t\t\t\t'sync.schemas': {\n\t\t\t\t\tshouldInstallMissingDependencies: true,\n\t\t\t\t},\n\t\t\t\t...options?.optionOverrides,\n\t\t\t},\n\t\t})\n\n\t\tconst executer = new ActionExecuter({\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tactionFactory,\n\t\t\tfeatureInstallerFactory: () => {\n\t\t\t\treturn this.getFeatureInstaller()\n\t\t\t},\n\t\t\tshouldAutoHandleDependencies: false,\n\t\t\t...options,\n\t\t})\n\n\t\treturn executer\n\t}\n\n\tprotected static selectOptionBasedOnLabel(label: string) {\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel,\n\t\t})\n\n\t\tconst match = last.options.options.choices.find(\n\t\t\t(o: any) => o.label === label\n\t\t)\n\n\t\tvoid this.ui.sendInput(`${match.value}`)\n\t}\n}\n"],"mappings":"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"}
|