@sprucelabs/spruce-cli 15.2.24 → 15.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/build/.spruce/errors/errors.types.js.map +1 -1
- package/build/.spruce/errors/options.types.js.map +1 -1
- package/build/.spruce/errors/spruceCli/actionCancelled.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/bootError.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/buildFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/commandAborted.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/commandBlocked.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/deployFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/failedToImport.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/fileExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/generic.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidCommand.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/lintFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/missingDependencies.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/notImplemented.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/schemaExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/skillNotFound.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/skillViewExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/storeExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/testFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/themeExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js.map +1 -1
- package/build/.spruce/events/events.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/listViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/schemas/fields/fieldClassMap.js.map +1 -1
- package/build/.spruce/schemas/fields/fields.types.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTarget.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTarget.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTargetAndPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlResponsePayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsResponsePayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/getViewControllersEmitTarget.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResponsePayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResult.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsResponsePayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/theme.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/themeProps.schema.js.map +1 -1
- package/build/.spruce/schemas/schemas.types.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/location.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/message.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/messageSource.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/messageTarget.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/organization.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/person.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/personLocation.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/personOrganization.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/profileImage.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/role.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/sendMessage.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/skill.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/skillCreator.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/bootSkillOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/createConversationTopicOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/createErrorOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/createOrganizationOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/createSchemaOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedDir.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/installSkillAtOrganizationOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/onboardOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/onboarding.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/setupTestsOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/syncErrorOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemaFieldsOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/testOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/upgradeSkillOptions.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceEventUtils/v2021_09_13/eventSource.schema.js.map +1 -1
- package/build/.spruce/skill.types.js.map +1 -1
- package/build/GlobalEmitter.js.map +1 -1
- package/build/InFlightEntertainment.js.map +1 -1
- package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
- package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
- package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
- package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
- package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
- package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +1 -1
- package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
- package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
- package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
- package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
- package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
- package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
- package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
- package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
- package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.d.ts +1 -0
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +20 -14
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
- package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
- package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
- package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
- package/build/__tests__/implementation/BuildService.test.js.map +1 -1
- package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
- package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
- package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
- package/build/__tests__/implementation/DataStoreStore.test.d.ts +1 -0
- package/build/__tests__/implementation/DataStoreStore.test.js +30 -3
- package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
- package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
- package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
- package/build/__tests__/implementation/EventStore.test.d.ts +1 -0
- package/build/__tests__/implementation/EventStore.test.js +61 -33
- package/build/__tests__/implementation/EventStore.test.js.map +1 -1
- package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
- package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
- package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
- package/build/__tests__/implementation/Introspection.test.js.map +1 -1
- package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
- package/build/__tests__/implementation/LintService.test.js.map +1 -1
- package/build/__tests__/implementation/ListenerStore.test.d.ts +4 -0
- package/build/__tests__/implementation/ListenerStore.test.js +56 -0
- package/build/__tests__/implementation/ListenerStore.test.js.map +1 -0
- package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
- package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
- package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
- package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
- package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
- package/build/__tests__/implementation/PkgService.test.js.map +1 -1
- package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
- package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
- package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
- package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
- package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
- package/build/__tests__/implementation/StoreFeature.test.js +1 -1
- package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
- package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
- package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
- package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
- package/build/__tests__/implementation/Widgets.test.js.map +1 -1
- package/build/__tests__/support/onTestFileResult.js.map +1 -1
- package/build/__tests__/support/scripts/first.script.js.map +1 -1
- package/build/__tests__/support/scripts/second.script.js.map +1 -1
- package/build/__tests__/support/scripts/third.test.script.js.map +1 -1
- package/build/addons/filePrompt.addon.js.map +1 -1
- package/build/cli.js.map +1 -1
- package/build/components/AbstractComponent.js.map +1 -1
- package/build/components/FormComponent.js.map +1 -1
- package/build/components/QuizComponent.js.map +1 -1
- package/build/constants.js.map +1 -1
- package/build/errors/SpruceError.js.map +1 -1
- package/build/errors/actionCancelled.builder.js.map +1 -1
- package/build/errors/bootError.builder.js.map +1 -1
- package/build/errors/buildFailed.builder.js.map +1 -1
- package/build/errors/cacheNotEnabled.builder.js.map +1 -1
- package/build/errors/commandAborted.builder.js.map +1 -1
- package/build/errors/commandBlocked.builder.js.map +1 -1
- package/build/errors/commandNotImplemented.builder.js.map +1 -1
- package/build/errors/createAutoloaderFailed.builder.js.map +1 -1
- package/build/errors/dependencyExists.builder.js.map +1 -1
- package/build/errors/deployFailed.builder.js.map +1 -1
- package/build/errors/directoryEmpty.builder.js.map +1 -1
- package/build/errors/directoryNotSkill.builder.js.map +1 -1
- package/build/errors/dockerNotStarted.builder.js.map +1 -1
- package/build/errors/executingCommandFailed.builder.js.map +1 -1
- package/build/errors/failedToImport.builder.js.map +1 -1
- package/build/errors/featureNotInstalled.builder.js.map +1 -1
- package/build/errors/fileExists.builder.js.map +1 -1
- package/build/errors/generic.builder.js.map +1 -1
- package/build/errors/invalidCommand.builder.js.map +1 -1
- package/build/errors/invalidEventContract.builder.js.map +1 -1
- package/build/errors/invalidFeatureCode.builder.js.map +1 -1
- package/build/errors/invalidTestDirectory.builder.js.map +1 -1
- package/build/errors/lintFailed.builder.js.map +1 -1
- package/build/errors/mercuryResponseError.builder.js.map +1 -1
- package/build/errors/missingDependencies.builder.js.map +1 -1
- package/build/errors/noOrganizationsFound.builder.js.map +1 -1
- package/build/errors/noSkillsRegistered.builder.js.map +1 -1
- package/build/errors/notImplemented.builder.js.map +1 -1
- package/build/errors/notLoggedIn.builder.js.map +1 -1
- package/build/errors/schemaExists.builder.js.map +1 -1
- package/build/errors/schemaFailedToImport.builder.js.map +1 -1
- package/build/errors/schemaTemplateItemBuildingFailed.builder.js.map +1 -1
- package/build/errors/skillNotFound.builder.js.map +1 -1
- package/build/errors/skillNotRegistered.builder.js.map +1 -1
- package/build/errors/skillViewExists.builder.js.map +1 -1
- package/build/errors/storeExists.builder.js.map +1 -1
- package/build/errors/testFailed.builder.js.map +1 -1
- package/build/errors/themeExists.builder.js.map +1 -1
- package/build/errors/transportAlreadyExists.builder.js.map +1 -1
- package/build/errors/vscodeNotInstalled.builder.js.map +1 -1
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/AbstractFeature.js.map +1 -1
- package/build/features/ActionExecuter.js.map +1 -1
- package/build/features/ActionFactory.js.map +1 -1
- package/build/features/ActionQuestionAsker.js.map +1 -1
- package/build/features/FeatureCommandAttacher.js.map +1 -1
- package/build/features/FeatureInstaller.js.map +1 -1
- package/build/features/FeatureInstallerFactory.js.map +1 -1
- package/build/features/OverrideActionDecorator.js.map +1 -1
- package/build/features/cache/CacheFeature.js.map +1 -1
- package/build/features/cache/actions/DisableAction.js.map +1 -1
- package/build/features/cache/actions/EnableAction.js.map +1 -1
- package/build/features/cache/constants.js.map +1 -1
- package/build/features/conversation/ConversationFeature.js.map +1 -1
- package/build/features/conversation/actions/CreateAction.js.map +1 -1
- package/build/features/conversation/actions/TestAction.js.map +1 -1
- package/build/features/conversation/stores/ConversationStore.js.map +1 -1
- package/build/features/conversation/writers/ConversationWriter.js.map +1 -1
- package/build/features/dependencies/DependencyFeature.js.map +1 -1
- package/build/features/dependencies/actions/AddAction.js.map +1 -1
- package/build/features/dependencies/actions/ManageAction.js.map +1 -1
- package/build/features/deploy/DeployFeature.js.map +1 -1
- package/build/features/deploy/actions/HerokuAction.js.map +1 -1
- package/build/features/deploy/writers/DeployWriter.js.map +1 -1
- package/build/features/error/ErrorFeature.js.map +1 -1
- package/build/features/error/ParentTestFinder.js.map +1 -1
- package/build/features/error/actions/CreateAction.js.map +1 -1
- package/build/features/error/actions/SyncAction.js.map +1 -1
- package/build/features/error/writers/ErrorWriter.js.map +1 -1
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/actions/CreateAction.js.map +1 -1
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/actions/SetRemoteAction.js.map +1 -1
- package/build/features/event/actions/SyncAction.js.map +1 -1
- package/build/features/event/actions/SyncListenersAction.js.map +1 -1
- package/build/features/event/builders/EventContractBuilder.js.map +1 -1
- package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -1
- package/build/features/event/services/EventSettingsService.js.map +1 -1
- package/build/features/event/services/RemoteService.js.map +1 -1
- package/build/features/event/stores/EventStore.d.ts +1 -0
- package/build/features/event/stores/EventStore.js +6 -1
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/event/stores/ListenerStore.d.ts +1 -0
- package/build/features/event/stores/ListenerStore.js +6 -1
- package/build/features/event/stores/ListenerStore.js.map +1 -1
- package/build/features/event/writers/EventWriter.js +1 -1
- package/build/features/event/writers/EventWriter.js.map +1 -1
- package/build/features/eventContract/EventContractFeature.js.map +1 -1
- package/build/features/eventContract/actions/PullAction.js.map +1 -1
- package/build/features/feature.utilities.js.map +1 -1
- package/build/features/features.types.js.map +1 -1
- package/build/features/log/LogFeature.js.map +1 -1
- package/build/features/log/actions/CreateTransportAction.js.map +1 -1
- package/build/features/log/writers/LogWriter.js.map +1 -1
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/node/actions/CreateAction.js.map +1 -1
- package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
- package/build/features/node/actions/UpgradeAction.js.map +1 -1
- package/build/features/node/writers/NodeWriter.js.map +1 -1
- package/build/features/onboard/OnboardFeature.js.map +1 -1
- package/build/features/onboard/ScriptLoader.js.map +1 -1
- package/build/features/onboard/ScriptPlayer.js.map +1 -1
- package/build/features/onboard/actions/OnboardAction.js.map +1 -1
- package/build/features/onboard/scripts/onboarding.first.script.js.map +1 -1
- package/build/features/onboard/scripts/onboarding.immersive.script.js.map +1 -1
- package/build/features/onboard/scripts/onboarding.returning.script.js.map +1 -1
- package/build/features/onboard/scripts/onboarding.short.script.js.map +1 -1
- package/build/features/onboard/scripts/todo/todo.create.skill.script.js.map +1 -1
- package/build/features/onboard/scripts/todo/todo.test.script.js.map +1 -1
- package/build/features/onboard/scripts/wrongCommand.script.js.map +1 -1
- package/build/features/onboard/stores/OnboardingStore.js.map +1 -1
- package/build/features/organization/OrganizationFeature.js.map +1 -1
- package/build/features/organization/actions/CreateAction.js.map +1 -1
- package/build/features/organization/actions/InstallAction.js.map +1 -1
- package/build/features/organization/stores/OrganizationStore.js.map +1 -1
- package/build/features/person/PersonFeature.js.map +1 -1
- package/build/features/person/actions/LoginAction.js.map +1 -1
- package/build/features/person/actions/LogoutAction.js.map +1 -1
- package/build/features/person/actions/WhoamiAction.js.map +1 -1
- package/build/features/sandbox/SandboxFeature.js.map +1 -1
- package/build/features/sandbox/actions/SetupAction.js.map +1 -1
- package/build/features/sandbox/writers/SandboxWriter.js.map +1 -1
- package/build/features/schema/SchemaFeature.js.map +1 -1
- package/build/features/schema/ValueTypeBuilder.js.map +1 -1
- package/build/features/schema/actions/CreateAction.js.map +1 -1
- package/build/features/schema/actions/SyncAction.js.map +1 -1
- package/build/features/schema/actions/SyncFieldsAction.js.map +1 -1
- package/build/features/schema/services/SchemaService.js.map +1 -1
- package/build/features/schema/stores/SchemaStore.js.map +1 -1
- package/build/features/schema/utilities/schema.utility.js.map +1 -1
- package/build/features/schema/utilities/schemaDisk.utility.js.map +1 -1
- package/build/features/schema/utilities/schemaGenerator.utility.js.map +1 -1
- package/build/features/schema/writers/SchemaWriter.js +1 -1
- package/build/features/schema/writers/SchemaWriter.js.map +1 -1
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/skill/actions/BootAction.js.map +1 -1
- package/build/features/skill/actions/CreateAction.js.map +1 -1
- package/build/features/skill/actions/DashboardAction.js.map +1 -1
- package/build/features/skill/actions/LoginAction.js.map +1 -1
- package/build/features/skill/actions/RebuildAction.js.map +1 -1
- package/build/features/skill/actions/RegisterAction.js.map +1 -1
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/skill/updaters/Updater.js.map +1 -1
- package/build/features/skill/writers/SkillWriter.js.map +1 -1
- package/build/features/store/StoreFeature.js +1 -1
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/features/store/actions/CreateAction.js.map +1 -1
- package/build/features/store/actions/SyncAction.js.map +1 -1
- package/build/features/store/stores/StoreStore.d.ts +1 -0
- package/build/features/store/stores/StoreStore.js +6 -1
- package/build/features/store/stores/StoreStore.js.map +1 -1
- package/build/features/store/templateItemBuilders/StoreTemplateItemBuilder.js.map +1 -1
- package/build/features/store/writers/StoreWriter.js.map +1 -1
- package/build/features/test/TestFeature.js.map +1 -1
- package/build/features/test/TestLogItemGenerator.js.map +1 -1
- package/build/features/test/TestReporter.js.map +1 -1
- package/build/features/test/TestRunner.js.map +1 -1
- package/build/features/test/actions/CreateAction.js +1 -1
- package/build/features/test/actions/CreateAction.js.map +1 -1
- package/build/features/test/actions/SetupAction.js.map +1 -1
- package/build/features/test/actions/TestAction.js.map +1 -1
- package/build/features/test/test.types.js.map +1 -1
- package/build/features/test/writers/TestWriter.js.map +1 -1
- package/build/features/universalDevDependencies.js.map +1 -1
- package/build/features/universalFileDescriptions.js.map +1 -1
- package/build/features/universalScripts.js.map +1 -1
- package/build/features/validateAndNormalize.utility.d.ts +2 -2
- package/build/features/validateAndNormalize.utility.js +2 -2
- package/build/features/validateAndNormalize.utility.js.map +1 -1
- package/build/features/view/ViewFeature.js.map +1 -1
- package/build/features/view/actions/CreateAction.js.map +1 -1
- package/build/features/view/actions/CreateThemeAction.js.map +1 -1
- package/build/features/view/actions/SyncAction.js.map +1 -1
- package/build/features/view/actions/WatchAction.js.map +1 -1
- package/build/features/view/stores/ViewStore.js.map +1 -1
- package/build/features/view/writers/ViewWriter.js +1 -3
- package/build/features/view/writers/ViewWriter.js.map +1 -1
- package/build/features/vscode/VsCodeFeature.js.map +1 -1
- package/build/features/vscode/actions/SetupAction.js.map +1 -1
- package/build/features/vscode/services/VsCodeService.js.map +1 -1
- package/build/features/vscode/writers/VsCodeWriter.js.map +1 -1
- package/build/features/watch/WatchFeature.js.map +1 -1
- package/build/index.js.map +1 -1
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/interfaces/TerminalInterface.js.map +1 -1
- package/build/schemas/v2020_07_22/bootSkillOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createConversationTopicOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createErrorOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createOrganizationOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createSchemaOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createTestOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/installSkillAtOrganizationOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/listenEventOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/namedTemplateItem.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/nodeFeatureOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/onboardOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/onboarding.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/personWithToken.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/setupTestsOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/setupVscodeOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/skillFeature.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/syncErrorOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/syncEventOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/syncSchemaFieldsOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/syncSchemasOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/testOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/upgradeSkillOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
- package/build/services/BuildService.js.map +1 -1
- package/build/services/CommandService.js.map +1 -1
- package/build/services/DependencyService.js.map +1 -1
- package/build/services/GameService.js.map +1 -1
- package/build/services/ImportService.js.map +1 -1
- package/build/services/LintService.js.map +1 -1
- package/build/services/PkgService.js.map +1 -1
- package/build/services/ServiceFactory.js.map +1 -1
- package/build/services/TypeCheckerService.js.map +1 -1
- package/build/stores/AbstractLocalStore.js.map +1 -1
- package/build/stores/AbstractStore.js.map +1 -1
- package/build/stores/StoreFactory.js.map +1 -1
- package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
- package/build/templateItemBuilders/FieldTemplateItemBuilder.js.map +1 -1
- package/build/templateItemBuilders/SchemaTemplateItemBuilder.js.map +1 -1
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/AbstractErrorTest.js.map +1 -1
- package/build/tests/AbstractEventTest.js.map +1 -1
- package/build/tests/AbstractSchemaTest.js.map +1 -1
- package/build/tests/AbstractSkillTest.js.map +1 -1
- package/build/tests/AbstractTestTest.js.map +1 -1
- package/build/tests/CommandFaker.d.ts +2 -1
- package/build/tests/CommandFaker.js +13 -7
- package/build/tests/CommandFaker.js.map +1 -1
- package/build/tests/JestJsonParser.js.map +1 -1
- package/build/tests/MockProgramFactory.js.map +1 -1
- package/build/tests/buildTestCache.js.map +1 -1
- package/build/tests/cleanTestCache.js.map +1 -1
- package/build/tests/cleanTestData.js.map +1 -1
- package/build/tests/constants.js.map +1 -1
- package/build/tests/fixtures/FeatureFixture.js.map +1 -1
- package/build/tests/fixtures/MercuryFixture.js.map +1 -1
- package/build/tests/fixtures/OrganizationFixture.js.map +1 -1
- package/build/tests/fixtures/PersonFixture.js.map +1 -1
- package/build/tests/fixtures/SkillFixture.js.map +1 -1
- package/build/tests/fixtures/ViewFixture.js.map +1 -1
- package/build/tests/utilities/test.utility.js.map +1 -1
- package/build/tests/utilities/uiAssert.utility.js.map +1 -1
- package/build/types/apiClient.types.js.map +1 -1
- package/build/types/cli.types.js.map +1 -1
- package/build/types/graphicsInterface.types.js.map +1 -1
- package/build/updaters/ScriptUpdater.js.map +1 -1
- package/build/utilities/action.utility.js.map +1 -1
- package/build/utilities/apiClient.utility.js.map +1 -1
- package/build/utilities/argParser.utility.js.map +1 -1
- package/build/utilities/commander.utility.js.map +1 -1
- package/build/utilities/duration.utility.js.map +1 -1
- package/build/utilities/eventContractCleaner.utility.js.map +1 -1
- package/build/utilities/form.utility.js.map +1 -1
- package/build/utilities/introspection.utility.js.map +1 -1
- package/build/utilities/isCi.js.map +1 -1
- package/build/utilities/tsConfig.utility.js.map +1 -1
- package/build/utilities/ui.utility.js.map +1 -1
- package/build/widgets/Theme.js.map +1 -1
- package/build/widgets/WidgetFactory.js.map +1 -1
- package/build/widgets/keySelectChoices.js.map +1 -1
- package/build/widgets/terminalKit/TKButtonWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkBaseWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkInputWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkLayoutCellWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkLayoutWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkMenuBarWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkPopupWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkProgressBarWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkTextWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkWindowWidget.js.map +1 -1
- package/build/widgets/terminalKit/termKit.utility.js.map +1 -1
- package/build/widgets/types/button.types.js.map +1 -1
- package/build/widgets/types/factory.types.js.map +1 -1
- package/build/widgets/types/input.types.js.map +1 -1
- package/build/widgets/types/layout.types.js.map +1 -1
- package/build/widgets/types/menuBar.types.js.map +1 -1
- package/build/widgets/types/popup.types.js.map +1 -1
- package/build/widgets/types/progressBar.types.js.map +1 -1
- package/build/widgets/types/table.types.js.map +1 -1
- package/build/widgets/types/text.types.js.map +1 -1
- package/build/widgets/types/widgets.types.js.map +1 -1
- package/build/widgets/types/window.types.js.map +1 -1
- package/build/widgets/widget.utilities.js.map +1 -1
- package/build/writers/AbstractWriter.js.map +1 -1
- package/build/writers/WriterFactory.js.map +1 -1
- package/package.json +36 -36
- package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +21 -7
- package/src/__tests__/implementation/DataStoreStore.test.ts +8 -0
- package/src/__tests__/implementation/EventStore.test.ts +14 -0
- package/src/__tests__/implementation/ListenerStore.test.ts +14 -0
- package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
- package/src/features/AbstractAction.ts +2 -2
- package/src/features/event/builders/EventContractBuilder.ts +2 -2
- package/src/features/event/stores/EventStore.ts +11 -8
- package/src/features/event/stores/ListenerStore.ts +5 -3
- package/src/features/event/writers/EventWriter.ts +1 -1
- package/src/features/schema/writers/SchemaWriter.ts +1 -1
- package/src/features/store/StoreFeature.ts +1 -1
- package/src/features/store/stores/StoreStore.ts +5 -1
- package/src/features/test/actions/CreateAction.ts +1 -1
- package/src/features/validateAndNormalize.utility.ts +2 -2
- package/src/features/view/writers/ViewWriter.ts +3 -2
- package/src/tests/CommandFaker.ts +9 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"skillViewExists.builder.js","names":["id","name","description","fields","type","isRequired"],"sources":["../../src/errors/skillViewExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillViewExists',\n\tname: 'Skill view exists',\n\tdescription: '',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,iBAD2B;EAE/BC,IAAI,EAAE,mBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPF,IAAI,EAAE;MACLG,IAAI,EAAE,MADD;MAELC,UAAU,EAAE;IAFP;EADC;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storeExists.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/storeExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'storeExists',\n\tname: 'Store exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,aAD2B;EAE/BC,IAAI,EAAE,cAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"testFailed.builder.js","names":["id","name","description","fields","fileName","type","isRequired","testName","errorMessage"],"sources":["../../src/errors/testFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'testFailed',\n\tname: 'Test failed',\n\tdescription: '',\n\tfields: {\n\t\tfileName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\ttestName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\terrorMessage: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,YAD2B;EAE/BC,IAAI,EAAE,aAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,QAAQ,EAAE;MACTC,IAAI,EAAE,MADG;MAETC,UAAU,EAAE;IAFH,CADH;IAKPC,QAAQ,EAAE;MACTF,IAAI,EAAE,MADG;MAETC,UAAU,EAAE;IAFH,CALH;IASPE,YAAY,EAAE;MACbH,IAAI,EAAE,MADO;MAEbC,UAAU,EAAE;IAFC;EATP;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"themeExists.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/themeExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'themeExists',\n\tname: 'Theme exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,aAD2B;EAE/BC,IAAI,EAAE,cAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"transportAlreadyExists.builder.js","names":["id","name","fields","type","label","isRequired"],"sources":["../../src/errors/transportAlreadyExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'transportAlreadyExists',\n\tname: 'transport already exists',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Transport name',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,wBAD2B;EAE/BC,IAAI,EAAE,0BAFyB;EAG/BC,MAAM,EAAE;IACPD,IAAI,EAAE;MACLE,IAAI,EAAE,MADD;MAELC,KAAK,EAAE,gBAFF;MAGLC,UAAU,EAAE;IAHP;EADC;AAHuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"vscodeNotInstalled.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/vscodeNotInstalled.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'vscodeNotInstalled',\n\tname: 'vscode not installed',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;EAC/BA,EAAE,EAAE,oBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected featureInstaller: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.featureInstaller.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizer.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"AbstractFeature.js","names":["AbstractFeature","options","cwd","serviceFactory","templates","actionFactory","storeFactory","writerFactory","WriterFactory","ui","settings","Service","linter","emitter","featureInstaller","apiClientFactory","actionExecuter","featureCode","actionCode","Action","_options","type","code","Writer","fileDescriptions","getFeature","actionsDir","actionCodes","pathUtil","join","matches","codes","match","generatedCode","featuresUtil","filePathToActionCode","push","Store"],"sources":["../../src/features/AbstractFeature.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport globby from 'globby'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { NpmPackage, GeneratedFile, FileDescription } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport ActionExecuter from './ActionExecuter'\nimport ActionFactory from './ActionFactory'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\n\nexport interface InstallResults {\n\tfiles?: GeneratedFile[]\n\tcwd?: string\n}\n\nexport interface FeatureDependency {\n\tisRequired: boolean\n\tcode: FeatureCode\n}\n\nexport interface FeatureOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\ttemplates: Templates\n\tstoreFactory: StoreFactory\n\tactionFactory?: ActionFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tapiClientFactory: ApiClientFactory\n\tactionExecuter: ActionExecuter\n}\n\nexport default abstract class AbstractFeature<\n\tS extends Schema | undefined = Schema | undefined\n> implements ServiceProvider\n{\n\tpublic abstract description: string\n\tpublic readonly dependencies: FeatureDependency[] = []\n\tpublic readonly packageDependencies: NpmPackage[] = []\n\tpublic readonly optionsSchema?: S\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled?(): Promise<boolean>\n\n\tpublic abstract readonly code: FeatureCode\n\tpublic abstract readonly nameReadable: string\n\tpublic readonly installOrderWeight: number = 0\n\n\tpublic cwd: string\n\tpublic scripts: Record<string, any> = {}\n\tpublic actionsDir: string | undefined\n\tprotected actionFactory?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected featureInstaller: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\tprivate actionCodes?: string[]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.templates = options.templates\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writerFactory = new WriterFactory({\n\t\t\ttemplates: this.templates,\n\t\t\tui: options.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t\tlinter: this.Service('lint'),\n\t\t})\n\t\tthis.emitter = options.emitter\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic async beforePackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tpublic getFeature<Code extends FeatureCode>(code: Code) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async getAvailableActionCodes(): Promise<string[]> {\n\t\tif (!this.actionsDir) {\n\t\t\treturn []\n\t\t}\n\n\t\tif (!this.actionCodes) {\n\t\t\tconst matches: string[] = await globby(\n\t\t\t\tpathUtil.join(this.actionsDir, '**/*Action.js')\n\t\t\t)\n\n\t\t\tconst codes: string[] = []\n\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst generatedCode = featuresUtil.filePathToActionCode(match)\n\t\t\t\tcodes.push(generatedCode)\n\t\t\t}\n\n\t\t\tthis.actionCodes = codes\n\t\t}\n\n\t\treturn this.actionCodes\n\t}\n\n\tpublic Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/features/ActionExecuter.ts"],"names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"mappings":"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","sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actionFactory: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst actionFactory = this.actionFactory\n\t\tconst action = actionFactory.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n"],"file":"ActionExecuter.js"}
|
|
1
|
+
{"version":3,"file":"ActionExecuter.js","names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"sources":["../../src/features/ActionExecuter.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actionFactory: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst actionFactory = this.actionFactory\n\t\tconst action = actionFactory.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"ActionFactory.js","names":["ActionFactory","options","blockedCommands","optionOverrides","actionOptions","featureCode","actionCode","actionExecuter","featureInstaller","feature","getFeature","actionsDir","Error","classPath","diskUtil","resolvePath","namesUtil","toPascal","Class","originalError","require","err","SpruceError","code","friendlyMessage","action","parent","execute","actionDecorator","OverrideActionDecorator","ui"],"sources":["../../src/features/ActionFactory.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../errors/SpruceError'\nimport {\n\tFeatureAction,\n\tActionOptions,\n\tFeatureCode,\n} from '../features/features.types'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { BlockedCommands, OptionOverrides } from '../types/cli.types'\nimport AbstractAction from './AbstractAction'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport OverrideActionDecorator from './OverrideActionDecorator'\n\nexport interface FeatureActionFactoryOptions\n\textends Omit<\n\t\tActionOptions,\n\t\t'parent' | 'actionExecuter' | 'featureInstaller'\n\t> {\n\temitter: GlobalEmitter\n\tblockedCommands?: BlockedCommands\n\toptionOverrides?: OptionOverrides\n}\n\nexport default class ActionFactory {\n\tprivate actionOptions: FeatureActionFactoryOptions\n\tprivate blockedCommands?: BlockedCommands\n\tprivate optionOverrides?: OptionOverrides\n\n\tpublic constructor(options: FeatureActionFactoryOptions) {\n\t\tconst { blockedCommands, optionOverrides, ...actionOptions } = options\n\t\tthis.actionOptions = actionOptions\n\t\tthis.blockedCommands = blockedCommands\n\t\tthis.optionOverrides = optionOverrides\n\t}\n\n\tpublic Action<F extends FeatureCode, S extends Schema = Schema>(options: {\n\t\tfeatureCode: F\n\t\tactionCode: string\n\t\tactionExecuter: ActionExecuter\n\t\tfeatureInstaller: FeatureInstaller\n\t}): FeatureAction<S> {\n\t\tconst { featureCode, actionCode, actionExecuter, featureInstaller } =\n\t\t\toptions\n\n\t\tconst feature = featureInstaller.getFeature(featureCode)\n\n\t\tif (!feature.actionsDir) {\n\t\t\tthrow new Error(\n\t\t\t\t`Your ${featureCode} features needs \\`public actionsDir = diskUtil.resolvePath(__dirname, 'actions')\\``\n\t\t\t)\n\t\t}\n\n\t\tconst classPath = diskUtil.resolvePath(\n\t\t\tfeature.actionsDir,\n\t\t\t`${namesUtil.toPascal(actionCode)}Action`\n\t\t)\n\n\t\tlet Class: new (options: ActionOptions) => AbstractAction | undefined\n\t\tlet originalError: Error | undefined\n\n\t\ttry {\n\t\t\tClass = require(classPath).default\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch (err: any) {\n\t\t\toriginalError = err\n\t\t}\n\n\t\t//@ts-ignore\n\t\tif (!Class) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not find any action named '${actionCode}' for the ${feature.code} feature. Make sure it's the default export and extends AbstractAction.`,\n\t\t\t\toriginalError,\n\t\t\t})\n\t\t}\n\n\t\tconst action = new Class({\n\t\t\t...this.actionOptions,\n\t\t\tactionExecuter,\n\t\t\tparent: feature,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tif (!action) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not instantiate ${actionCode} action on ${feature.code} feature.`,\n\t\t\t})\n\t\t}\n\n\t\tif (!action.execute) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `It looks like the ${feature.code} feature's '${actionCode}' action does not properly extend AbstractAction.`,\n\t\t\t})\n\t\t}\n\n\t\tconst actionDecorator = new OverrideActionDecorator({\n\t\t\taction,\n\t\t\tfeature,\n\t\t\tblockedCommands: this.blockedCommands,\n\t\t\toptionOverrides: this.optionOverrides,\n\t\t\tui: this.actionOptions.ui,\n\t\t\tactionCode,\n\t\t})\n\n\t\treturn actionDecorator as FeatureAction<S>\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AAEA;;AAWA;;;;;;;;IAYqBA,a;EAKpB,uBAAmBC,OAAnB,EAAyD;IAAA;IAAA;IAAA;IAAA;IACxD,IAAQC,eAAR,GAA+DD,OAA/D,CAAQC,eAAR;IAAA,IAAyBC,eAAzB,GAA+DF,OAA/D,CAAyBE,eAAzB;IAAA,IAA6CC,aAA7C,6CAA+DH,OAA/D;IACA,KAAKG,aAAL,GAAqBA,aAArB;IACA,KAAKF,eAAL,GAAuBA,eAAvB;IACA,KAAKC,eAAL,GAAuBA,eAAvB;EACA;;;;WAED,gBAAgEF,OAAhE,EAKqB;MACpB,IAAQI,WAAR,GACCJ,OADD,CAAQI,WAAR;MAAA,IAAqBC,UAArB,GACCL,OADD,CAAqBK,UAArB;MAAA,IAAiCC,cAAjC,GACCN,OADD,CAAiCM,cAAjC;MAAA,IAAiDC,gBAAjD,GACCP,OADD,CAAiDO,gBAAjD;MAGA,IAAMC,OAAO,GAAGD,gBAAgB,CAACE,UAAjB,CAA4BL,WAA5B,CAAhB;;MAEA,IAAI,CAACI,OAAO,CAACE,UAAb,EAAyB;QACxB,MAAM,IAAIC,KAAJ,gBACGP,WADH,sFAAN;MAGA;;MAED,IAAMQ,SAAS,GAAGC,2BAASC,WAAT,CACjBN,OAAO,CAACE,UADS,YAEdK,4BAAUC,QAAV,CAAmBX,UAAnB,CAFc,YAAlB;;MAKA,IAAIY,KAAJ;MACA,IAAIC,aAAJ;;MAEA,IAAI;QACHD,KAAK,GAAGE,OAAO,CAACP,SAAD,CAAP,WAAR,CADG,CAEH;MACA,CAHD,CAGE,OAAOQ,GAAP,EAAiB;QAClBF,aAAa,GAAGE,GAAhB;MACA,CAzBmB,CA2BpB;;;MACA,IAAI,CAACH,KAAL,EAAY;QACX,MAAM,IAAII,uBAAJ,CAAgB;UACrBC,IAAI,EAAE,SADe;UAErBC,eAAe,+CAAwClB,UAAxC,uBAA+DG,OAAO,CAACc,IAAvE,4EAFM;UAGrBJ,aAAa,EAAbA;QAHqB,CAAhB,CAAN;MAKA;;MAED,IAAMM,MAAM,GAAG,IAAIP,KAAJ,iCACX,KAAKd,aADM;QAEdG,cAAc,EAAdA,cAFc;QAGdmB,MAAM,EAAEjB,OAHM;QAIdD,gBAAgB,EAAhBA;MAJc,GAAf;;MAOA,IAAI,CAACiB,MAAL,EAAa;QACZ,MAAM,IAAIH,uBAAJ,CAAgB;UACrBC,IAAI,EAAE,SADe;UAErBC,eAAe,oCAA6BlB,UAA7B,wBAAqDG,OAAO,CAACc,IAA7D;QAFM,CAAhB,CAAN;MAIA;;MAED,IAAI,CAACE,MAAM,CAACE,OAAZ,EAAqB;QACpB,MAAM,IAAIL,uBAAJ,CAAgB;UACrBC,IAAI,EAAE,SADe;UAErBC,eAAe,8BAAuBf,OAAO,CAACc,IAA/B,yBAAkDjB,UAAlD;QAFM,CAAhB,CAAN;MAIA;;MAED,IAAMsB,eAAe,GAAG,IAAIC,mCAAJ,CAA4B;QACnDJ,MAAM,EAANA,MADmD;QAEnDhB,OAAO,EAAPA,OAFmD;QAGnDP,eAAe,EAAE,KAAKA,eAH6B;QAInDC,eAAe,EAAE,KAAKA,eAJ6B;QAKnD2B,EAAE,EAAE,KAAK1B,aAAL,CAAmB0B,EAL4B;QAMnDxB,UAAU,EAAVA;MANmD,CAA5B,CAAxB;MASA,OAAOsB,eAAP;IACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/features/ActionQuestionAsker.ts"],"names":["s","array","length","areIs","ActionOptionAsker","options","ui","featureInstaller","actionCode","feature","shouldAutoHandleDependencies","getDependenciesNotInstalled","notInstalled","response","installCount","renderLine","generateConfirmInstallMessage","toInstall","shift","Error","isInstalled","code","wasInstalled","isMarkedAsSkipped","installOrMarkAsSkippedMissingDependency","installResults","clear","waitForEnter","getCommandName","dependencies","getFeatureDependencies","Promise","all","map","dependency","getFeature","installedStatuses","filter","installOptions","optionsSchema","collectAnswers","answers","action","schema","SpruceError","featureCode","friendlyMessage","isFirstUpdate","install","installFeatureDependencies","features","didUpdateHandler","message","renderHeading","startLoading","stopLoading","renderHero","CLI_HERO","renderHeadline","isRequired","confirm","nameReadable","command","prompt","type","defaultValue","label","choices","value","markAsSkippedThisRun","markAsPermanentlySkipped","installResponse","undefined","cleaned","Object","keys","forEach","key","fieldNames","fields","providedFieldNames","fieldsToPresent","name","indexOf","isPrivate","featureForm","FormComponent","initialValues","onWillAskQuestion","formUtil","onWillAskQuestionHandler","bind","present","showOverview","featuresUtil","generateCommand","required","optional","feat","push","requiredMessage","optionalMessage","mixedMessage"],"mappings":"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","sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport merge from 'lodash/merge'\nimport FormComponent from '../components/FormComponent'\nimport { CLI_HERO } from '../constants'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport formUtil from '../utilities/form.utility'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureMap,\n} from './features.types'\n\ntype FeatureCommandExecuteOptions<\n\tF extends FeatureCode,\n\tS extends Schema | undefined = FeatureMap[F]['optionsSchema']\n> = S extends Schema ? SchemaPartialValues<S> : undefined\n\ntype FeatureDependencyWithFeature = FeatureDependency & {\n\tfeature: AbstractFeature\n}\n\nfunction s(array: any[]) {\n\treturn array.length === 1 ? '' : ''\n}\n\nfunction areIs(array: any[]) {\n\treturn array.length === 1 ? 'is' : 'are'\n}\n\nexport default class ActionOptionAsker<F extends FeatureCode = FeatureCode> {\n\tprivate ui: GraphicsInterface\n\tprivate featureInstaller: FeatureInstaller\n\tprivate actionCode: string\n\tprivate feature: AbstractFeature\n\tprivate shouldAutoHandleDependencies = true\n\n\tpublic constructor(options: {\n\t\tui: GraphicsInterface\n\t\tfeatureInstaller: FeatureInstaller\n\t\tactionCode: string\n\t\tfeature: AbstractFeature\n\t\tshouldAutoHandleDependencies: boolean\n\t}) {\n\t\tthis.ui = options.ui\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.actionCode = options.actionCode\n\t\tthis.feature = options.feature\n\t\tthis.shouldAutoHandleDependencies = options.shouldAutoHandleDependencies\n\t}\n\n\tpublic async installOrMarkAsSkippedMissingDependencies(): Promise<FeatureInstallResponse> {\n\t\tconst notInstalled = await this.getDependenciesNotInstalled()\n\n\t\tlet response: FeatureInstallResponse = {}\n\t\tlet installCount = 0\n\n\t\tif (notInstalled.length > 0) {\n\t\t\tthis.ui.renderLine(\n\t\t\t\tthis.generateConfirmInstallMessage(notInstalled) + '\\n'\n\t\t\t)\n\n\t\t\twhile (notInstalled.length > 0) {\n\t\t\t\tconst toInstall = notInstalled.shift()\n\t\t\t\tif (!toInstall) {\n\t\t\t\t\t// for typescript\n\t\t\t\t\tthrow new Error('Dependent feature error')\n\t\t\t\t}\n\n\t\t\t\tconst wasInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\ttoInstall.code\n\t\t\t\t)\n\n\t\t\t\tif (\n\t\t\t\t\t!wasInstalled &&\n\t\t\t\t\t!this.featureInstaller.isMarkedAsSkipped(toInstall.code)\n\t\t\t\t) {\n\t\t\t\t\tconst installResults =\n\t\t\t\t\t\tawait this.installOrMarkAsSkippedMissingDependency(toInstall)\n\t\t\t\t\tresponse = merge(response, installResults)\n\t\t\t\t\tinstallCount++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (installCount > 0) {\n\t\t\t\tthis.ui.clear()\n\n\t\t\t\tawait this.ui.waitForEnter(\n\t\t\t\t\t`Phew, now that we're done with that, lets get back to ${this.getCommandName()}!`\n\t\t\t\t)\n\n\t\t\t\tthis.ui.clear()\n\t\t\t}\n\t\t}\n\n\t\treturn response\n\t}\n\n\tprivate async getDependenciesNotInstalled(): Promise<\n\t\tFeatureDependencyWithFeature[]\n\t> {\n\t\tconst dependencies = this.featureInstaller.getFeatureDependencies(\n\t\t\tthis.feature.code\n\t\t)\n\n\t\tconst installedStatuses = await Promise.all(\n\t\t\tdependencies.map(async (dependency) => {\n\t\t\t\tconst feature = this.featureInstaller.getFeature(dependency.code)\n\n\t\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\tdependency.code\n\t\t\t\t)\n\n\t\t\t\tconst isMarkedAsSkipped = this.featureInstaller.isMarkedAsSkipped(\n\t\t\t\t\tfeature.code\n\t\t\t\t)\n\n\t\t\t\tif (isMarkedAsSkipped) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\treturn !isInstalled ? { feature, ...dependency } : null\n\t\t\t})\n\t\t)\n\n\t\tconst notInstalled = installedStatuses.filter(\n\t\t\t(feature) => !!feature\n\t\t) as FeatureDependencyWithFeature[]\n\n\t\treturn notInstalled\n\t}\n\n\tpublic async askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\tisInstalled: boolean,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet installOptions = { ...options }\n\n\t\tif (!isInstalled) {\n\t\t\tif (this.feature.optionsSchema) {\n\t\t\t\tconst answers = await this.collectAnswers(\n\t\t\t\t\tthis.feature.optionsSchema,\n\t\t\t\t\toptions\n\t\t\t\t)\n\n\t\t\t\tinstallOptions = { ...installOptions, ...answers }\n\t\t\t}\n\t\t}\n\t\treturn installOptions\n\t}\n\n\tpublic async askAboutMissingActionOptions(\n\t\taction: FeatureAction<Schema>,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet answers\n\n\t\tconst schema = action.optionsSchema\n\t\tif (schema) {\n\t\t\tanswers = await this.collectAnswers(schema, options)\n\t\t}\n\t\treturn answers\n\t}\n\n\tpublic async installOurFeature(installOptions: Record<string, any>) {\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: this.feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdidUpdateHandler: (message) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate renderHeading(code: string) {\n\t\tthis.ui.clear()\n\t\tthis.ui.renderHero(CLI_HERO)\n\t\tthis.ui.renderHeadline(`Installing ${code} feature...`)\n\t}\n\n\tprivate async installOrMarkAsSkippedMissingDependency(\n\t\ttoInstall: FeatureDependencyWithFeature\n\t): Promise<FeatureInstallResponse> {\n\t\tconst { feature, isRequired } = toInstall\n\n\t\tif (isRequired) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`Install the ${feature.nameReadable} feature?`\n\t\t\t)\n\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'COMMAND_ABORTED',\n\t\t\t\t\tcommand: this.getCommandName(),\n\t\t\t\t})\n\t\t\t}\n\t\t} else {\n\t\t\tconst response = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tdefaultValue: 'yes',\n\t\t\t\tlabel: `Install the ${feature.nameReadable} feature? (optional)`,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tif (response !== 'yes') {\n\t\t\t\tthis.ui.renderLine(\n\t\t\t\t\tresponse === 'alwaysSkip'\n\t\t\t\t\t\t? 'Skipping forever!'\n\t\t\t\t\t\t: 'Cool, skipping for now.'\n\t\t\t\t)\n\n\t\t\t\tif (response === 'skip') {\n\t\t\t\t\tthis.featureInstaller.markAsSkippedThisRun(feature.code)\n\t\t\t\t} else {\n\t\t\t\t\tthis.featureInstaller.markAsPermanentlySkipped(feature.code)\n\t\t\t\t}\n\n\t\t\t\tconst installResponse: FeatureInstallResponse = {}\n\t\t\t\treturn installResponse\n\t\t\t}\n\t\t}\n\n\t\tlet installOptions = {}\n\n\t\tif (feature.optionsSchema) {\n\t\t\tinstallOptions = await this.collectAnswers(\n\t\t\t\tfeature.optionsSchema,\n\t\t\t\tundefined\n\t\t\t)\n\t\t}\n\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tdidUpdateHandler: (message: string) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate async collectAnswers<S extends Schema>(\n\t\tschema: S,\n\t\toptions: FeatureCommandExecuteOptions<F, S> | undefined\n\t) {\n\t\tconst cleaned: Record<string, any> = {}\n\t\tObject.keys(options ?? {}).forEach((key) => {\n\t\t\t//@ts-ignore\n\t\t\tif (typeof options[key] !== 'undefined') {\n\t\t\t\t//@ts-ignore\n\t\t\t\tcleaned[key] = options[key]\n\t\t\t}\n\t\t})\n\n\t\tconst fieldNames = Object.keys(schema.fields ?? {})\n\t\tconst providedFieldNames = cleaned ? Object.keys(cleaned ?? {}) : []\n\t\tconst fieldsToPresent = fieldNames.filter(\n\t\t\t(name) =>\n\t\t\t\tprovidedFieldNames.indexOf(name) === -1 &&\n\t\t\t\tschema.fields?.[name].isRequired === true &&\n\t\t\t\tschema.fields?.[name].isPrivate !== true\n\t\t)\n\n\t\tlet answers = {}\n\t\tif (fieldsToPresent.length > 0) {\n\t\t\tconst featureForm = new FormComponent<S>({\n\t\t\t\tui: this.ui,\n\t\t\t\tschema,\n\t\t\t\t//@ts-ignore\n\t\t\t\tinitialValues: cleaned,\n\t\t\t\tonWillAskQuestion: formUtil.onWillAskQuestionHandler.bind(\n\t\t\t\t\tformUtil\n\t\t\t\t) as any,\n\t\t\t})\n\n\t\t\tanswers = await featureForm.present({\n\t\t\t\tshowOverview: false,\n\t\t\t\t// @ts-ignore\n\t\t\t\tfields: fieldsToPresent,\n\t\t\t})\n\t\t}\n\n\t\treturn { ...(cleaned ?? {}), ...answers } as SchemaValues<S>\n\t}\n\n\tprivate getCommandName() {\n\t\treturn featuresUtil.generateCommand(this.feature.code, this.actionCode)\n\t}\n\n\tprivate generateConfirmInstallMessage(\n\t\tnotInstalled: FeatureDependencyWithFeature[]\n\t): string {\n\t\tconst required: FeatureDependencyWithFeature[] = []\n\t\tconst optional: FeatureDependencyWithFeature[] = []\n\n\t\tnotInstalled.forEach((feat) => {\n\t\t\tif (feat.isRequired) {\n\t\t\t\trequired.push(feat)\n\t\t\t} else {\n\t\t\t\toptional.push(feat)\n\t\t\t}\n\t\t})\n\n\t\tconst requiredMessage = `I'll need to install ${required.length} feature${s(\n\t\t\trequired\n\t\t)}.`\n\n\t\tconst optionalMessage = `there ${areIs(optional)} ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} that could be installed.`\n\n\t\tconst mixedMessage = `I found ${required.length} required and ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} to install.`\n\n\t\tlet message = mixedMessage\n\n\t\tif (optional.length === 0) {\n\t\t\tmessage = requiredMessage\n\t\t} else if (optional.length > 0 && required.length === 0) {\n\t\t\tmessage = optionalMessage\n\t\t}\n\n\t\treturn `Before you can run \\`${this.getCommandName()}\\`, ${message} Don't worry, I'll walk you through it!`\n\t}\n}\n"],"file":"ActionQuestionAsker.js"}
|
|
1
|
+
{"version":3,"file":"ActionQuestionAsker.js","names":["s","array","length","areIs","ActionOptionAsker","options","ui","featureInstaller","actionCode","feature","shouldAutoHandleDependencies","getDependenciesNotInstalled","notInstalled","response","installCount","renderLine","generateConfirmInstallMessage","toInstall","shift","Error","isInstalled","code","wasInstalled","isMarkedAsSkipped","installOrMarkAsSkippedMissingDependency","installResults","clear","waitForEnter","getCommandName","dependencies","getFeatureDependencies","Promise","all","map","dependency","getFeature","installedStatuses","filter","installOptions","optionsSchema","collectAnswers","answers","action","schema","SpruceError","featureCode","friendlyMessage","isFirstUpdate","install","installFeatureDependencies","features","didUpdateHandler","message","renderHeading","startLoading","stopLoading","renderHero","CLI_HERO","renderHeadline","isRequired","confirm","nameReadable","command","prompt","type","defaultValue","label","choices","value","markAsSkippedThisRun","markAsPermanentlySkipped","installResponse","undefined","cleaned","Object","keys","forEach","key","fieldNames","fields","providedFieldNames","fieldsToPresent","name","indexOf","isPrivate","featureForm","FormComponent","initialValues","onWillAskQuestion","formUtil","onWillAskQuestionHandler","bind","present","showOverview","featuresUtil","generateCommand","required","optional","feat","push","requiredMessage","optionalMessage","mixedMessage"],"sources":["../../src/features/ActionQuestionAsker.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport merge from 'lodash/merge'\nimport FormComponent from '../components/FormComponent'\nimport { CLI_HERO } from '../constants'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport formUtil from '../utilities/form.utility'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureMap,\n} from './features.types'\n\ntype FeatureCommandExecuteOptions<\n\tF extends FeatureCode,\n\tS extends Schema | undefined = FeatureMap[F]['optionsSchema']\n> = S extends Schema ? SchemaPartialValues<S> : undefined\n\ntype FeatureDependencyWithFeature = FeatureDependency & {\n\tfeature: AbstractFeature\n}\n\nfunction s(array: any[]) {\n\treturn array.length === 1 ? '' : ''\n}\n\nfunction areIs(array: any[]) {\n\treturn array.length === 1 ? 'is' : 'are'\n}\n\nexport default class ActionOptionAsker<F extends FeatureCode = FeatureCode> {\n\tprivate ui: GraphicsInterface\n\tprivate featureInstaller: FeatureInstaller\n\tprivate actionCode: string\n\tprivate feature: AbstractFeature\n\tprivate shouldAutoHandleDependencies = true\n\n\tpublic constructor(options: {\n\t\tui: GraphicsInterface\n\t\tfeatureInstaller: FeatureInstaller\n\t\tactionCode: string\n\t\tfeature: AbstractFeature\n\t\tshouldAutoHandleDependencies: boolean\n\t}) {\n\t\tthis.ui = options.ui\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.actionCode = options.actionCode\n\t\tthis.feature = options.feature\n\t\tthis.shouldAutoHandleDependencies = options.shouldAutoHandleDependencies\n\t}\n\n\tpublic async installOrMarkAsSkippedMissingDependencies(): Promise<FeatureInstallResponse> {\n\t\tconst notInstalled = await this.getDependenciesNotInstalled()\n\n\t\tlet response: FeatureInstallResponse = {}\n\t\tlet installCount = 0\n\n\t\tif (notInstalled.length > 0) {\n\t\t\tthis.ui.renderLine(\n\t\t\t\tthis.generateConfirmInstallMessage(notInstalled) + '\\n'\n\t\t\t)\n\n\t\t\twhile (notInstalled.length > 0) {\n\t\t\t\tconst toInstall = notInstalled.shift()\n\t\t\t\tif (!toInstall) {\n\t\t\t\t\t// for typescript\n\t\t\t\t\tthrow new Error('Dependent feature error')\n\t\t\t\t}\n\n\t\t\t\tconst wasInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\ttoInstall.code\n\t\t\t\t)\n\n\t\t\t\tif (\n\t\t\t\t\t!wasInstalled &&\n\t\t\t\t\t!this.featureInstaller.isMarkedAsSkipped(toInstall.code)\n\t\t\t\t) {\n\t\t\t\t\tconst installResults =\n\t\t\t\t\t\tawait this.installOrMarkAsSkippedMissingDependency(toInstall)\n\t\t\t\t\tresponse = merge(response, installResults)\n\t\t\t\t\tinstallCount++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (installCount > 0) {\n\t\t\t\tthis.ui.clear()\n\n\t\t\t\tawait this.ui.waitForEnter(\n\t\t\t\t\t`Phew, now that we're done with that, lets get back to ${this.getCommandName()}!`\n\t\t\t\t)\n\n\t\t\t\tthis.ui.clear()\n\t\t\t}\n\t\t}\n\n\t\treturn response\n\t}\n\n\tprivate async getDependenciesNotInstalled(): Promise<\n\t\tFeatureDependencyWithFeature[]\n\t> {\n\t\tconst dependencies = this.featureInstaller.getFeatureDependencies(\n\t\t\tthis.feature.code\n\t\t)\n\n\t\tconst installedStatuses = await Promise.all(\n\t\t\tdependencies.map(async (dependency) => {\n\t\t\t\tconst feature = this.featureInstaller.getFeature(dependency.code)\n\n\t\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\tdependency.code\n\t\t\t\t)\n\n\t\t\t\tconst isMarkedAsSkipped = this.featureInstaller.isMarkedAsSkipped(\n\t\t\t\t\tfeature.code\n\t\t\t\t)\n\n\t\t\t\tif (isMarkedAsSkipped) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\treturn !isInstalled ? { feature, ...dependency } : null\n\t\t\t})\n\t\t)\n\n\t\tconst notInstalled = installedStatuses.filter(\n\t\t\t(feature) => !!feature\n\t\t) as FeatureDependencyWithFeature[]\n\n\t\treturn notInstalled\n\t}\n\n\tpublic async askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\tisInstalled: boolean,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet installOptions = { ...options }\n\n\t\tif (!isInstalled) {\n\t\t\tif (this.feature.optionsSchema) {\n\t\t\t\tconst answers = await this.collectAnswers(\n\t\t\t\t\tthis.feature.optionsSchema,\n\t\t\t\t\toptions\n\t\t\t\t)\n\n\t\t\t\tinstallOptions = { ...installOptions, ...answers }\n\t\t\t}\n\t\t}\n\t\treturn installOptions\n\t}\n\n\tpublic async askAboutMissingActionOptions(\n\t\taction: FeatureAction<Schema>,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet answers\n\n\t\tconst schema = action.optionsSchema\n\t\tif (schema) {\n\t\t\tanswers = await this.collectAnswers(schema, options)\n\t\t}\n\t\treturn answers\n\t}\n\n\tpublic async installOurFeature(installOptions: Record<string, any>) {\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: this.feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdidUpdateHandler: (message) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate renderHeading(code: string) {\n\t\tthis.ui.clear()\n\t\tthis.ui.renderHero(CLI_HERO)\n\t\tthis.ui.renderHeadline(`Installing ${code} feature...`)\n\t}\n\n\tprivate async installOrMarkAsSkippedMissingDependency(\n\t\ttoInstall: FeatureDependencyWithFeature\n\t): Promise<FeatureInstallResponse> {\n\t\tconst { feature, isRequired } = toInstall\n\n\t\tif (isRequired) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`Install the ${feature.nameReadable} feature?`\n\t\t\t)\n\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'COMMAND_ABORTED',\n\t\t\t\t\tcommand: this.getCommandName(),\n\t\t\t\t})\n\t\t\t}\n\t\t} else {\n\t\t\tconst response = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tdefaultValue: 'yes',\n\t\t\t\tlabel: `Install the ${feature.nameReadable} feature? (optional)`,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tif (response !== 'yes') {\n\t\t\t\tthis.ui.renderLine(\n\t\t\t\t\tresponse === 'alwaysSkip'\n\t\t\t\t\t\t? 'Skipping forever!'\n\t\t\t\t\t\t: 'Cool, skipping for now.'\n\t\t\t\t)\n\n\t\t\t\tif (response === 'skip') {\n\t\t\t\t\tthis.featureInstaller.markAsSkippedThisRun(feature.code)\n\t\t\t\t} else {\n\t\t\t\t\tthis.featureInstaller.markAsPermanentlySkipped(feature.code)\n\t\t\t\t}\n\n\t\t\t\tconst installResponse: FeatureInstallResponse = {}\n\t\t\t\treturn installResponse\n\t\t\t}\n\t\t}\n\n\t\tlet installOptions = {}\n\n\t\tif (feature.optionsSchema) {\n\t\t\tinstallOptions = await this.collectAnswers(\n\t\t\t\tfeature.optionsSchema,\n\t\t\t\tundefined\n\t\t\t)\n\t\t}\n\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tdidUpdateHandler: (message: string) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate async collectAnswers<S extends Schema>(\n\t\tschema: S,\n\t\toptions: FeatureCommandExecuteOptions<F, S> | undefined\n\t) {\n\t\tconst cleaned: Record<string, any> = {}\n\t\tObject.keys(options ?? {}).forEach((key) => {\n\t\t\t//@ts-ignore\n\t\t\tif (typeof options[key] !== 'undefined') {\n\t\t\t\t//@ts-ignore\n\t\t\t\tcleaned[key] = options[key]\n\t\t\t}\n\t\t})\n\n\t\tconst fieldNames = Object.keys(schema.fields ?? {})\n\t\tconst providedFieldNames = cleaned ? Object.keys(cleaned ?? {}) : []\n\t\tconst fieldsToPresent = fieldNames.filter(\n\t\t\t(name) =>\n\t\t\t\tprovidedFieldNames.indexOf(name) === -1 &&\n\t\t\t\tschema.fields?.[name].isRequired === true &&\n\t\t\t\tschema.fields?.[name].isPrivate !== true\n\t\t)\n\n\t\tlet answers = {}\n\t\tif (fieldsToPresent.length > 0) {\n\t\t\tconst featureForm = new FormComponent<S>({\n\t\t\t\tui: this.ui,\n\t\t\t\tschema,\n\t\t\t\t//@ts-ignore\n\t\t\t\tinitialValues: cleaned,\n\t\t\t\tonWillAskQuestion: formUtil.onWillAskQuestionHandler.bind(\n\t\t\t\t\tformUtil\n\t\t\t\t) as any,\n\t\t\t})\n\n\t\t\tanswers = await featureForm.present({\n\t\t\t\tshowOverview: false,\n\t\t\t\t// @ts-ignore\n\t\t\t\tfields: fieldsToPresent,\n\t\t\t})\n\t\t}\n\n\t\treturn { ...(cleaned ?? {}), ...answers } as SchemaValues<S>\n\t}\n\n\tprivate getCommandName() {\n\t\treturn featuresUtil.generateCommand(this.feature.code, this.actionCode)\n\t}\n\n\tprivate generateConfirmInstallMessage(\n\t\tnotInstalled: FeatureDependencyWithFeature[]\n\t): string {\n\t\tconst required: FeatureDependencyWithFeature[] = []\n\t\tconst optional: FeatureDependencyWithFeature[] = []\n\n\t\tnotInstalled.forEach((feat) => {\n\t\t\tif (feat.isRequired) {\n\t\t\t\trequired.push(feat)\n\t\t\t} else {\n\t\t\t\toptional.push(feat)\n\t\t\t}\n\t\t})\n\n\t\tconst requiredMessage = `I'll need to install ${required.length} feature${s(\n\t\t\trequired\n\t\t)}.`\n\n\t\tconst optionalMessage = `there ${areIs(optional)} ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} that could be installed.`\n\n\t\tconst mixedMessage = `I found ${required.length} required and ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} to install.`\n\n\t\tlet message = mixedMessage\n\n\t\tif (optional.length === 0) {\n\t\t\tmessage = requiredMessage\n\t\t} else if (optional.length > 0 && required.length === 0) {\n\t\t\tmessage = optionalMessage\n\t\t}\n\n\t\treturn `Before you can run \\`${this.getCommandName()}\\`, ${message} Don't worry, I'll walk you through it!`\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"FeatureCommandAttacher.js","names":["FeatureCommandAttacher","options","program","term","ui","actionExecuter","feature","getAvailableActionCodes","actionCodes","actionCode","attachCode","code","commandStr","featuresUtil","generateCommand","action","Action","aliases","commandAliases","length","shift","command","clearAndRenderMasthead","startTime","Date","getTime","args","commanderUtil","mapIncomingToOptions","optionsSchema","execute","results","endTime","totalTime","clearAndRenderResults","featureCode","description","schema","attachOptions","stopLoading","clear","renderActionSummary","headline","uiUtil","renderActionMastHead","entity","SchemaEntityFactory","Entity","theProgram","fields","getNamedFields","generateOptionAliases","forEach","field","name","option","hint","definition","defaultValue","undefined","err","SpruceError","fieldName","id","schemaId","originalError","friendlyMessage"],"sources":["../../src/features/FeatureCommandAttacher.ts"],"sourcesContent":["import { Schema, SchemaEntityFactory } from '@sprucelabs/schema'\nimport { CommanderStatic } from 'commander'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport commanderUtil from '../utilities/commander.utility'\nimport uiUtil from '../utilities/ui.utility'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport featuresUtil from './feature.utilities'\nimport { FeatureAction, FeatureActionResponse } from './features.types'\n\nexport interface OptionOverrides {\n\t[command: string]: Record<string, any>\n}\n\nexport interface BlockedCommands {\n\t[command: string]: string\n}\n\nexport default class FeatureCommandAttacher {\n\tprivate program: CommanderStatic['program']\n\tprivate ui: GraphicsInterface\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: {\n\t\tprogram: CommanderStatic['program']\n\t\tui: GraphicsInterface\n\t\tactionExecuter: ActionExecuter\n\t}) {\n\t\tconst { program, ui: term, actionExecuter } = options\n\n\t\tthis.program = program\n\t\tthis.ui = term\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic async attachFeature(feature: AbstractFeature) {\n\t\tconst actionCodes = await feature.getAvailableActionCodes()\n\n\t\tfor (const actionCode of actionCodes) {\n\t\t\tthis.attachCode(actionCode, feature)\n\t\t}\n\t}\n\n\tprivate attachCode(code: string, feature: AbstractFeature) {\n\t\tlet commandStr = featuresUtil.generateCommand(feature.code, code)\n\t\tconst action = this.actionExecuter.Action(feature.code, code)\n\n\t\tconst aliases = action.commandAliases ? [...action.commandAliases] : []\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommandStr = aliases.shift() as string\n\t\t}\n\n\t\tlet command = this.program.command(commandStr)\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommand = command.aliases(aliases)\n\t\t}\n\n\t\tcommand = command.action(async (...args: any[]) => {\n\t\t\tthis.clearAndRenderMasthead(action)\n\t\t\tconst startTime = new Date().getTime()\n\n\t\t\tconst options = commanderUtil.mapIncomingToOptions(\n\t\t\t\t...args,\n\t\t\t\tfeature.optionsSchema ?? action.optionsSchema\n\t\t\t)\n\n\t\t\tconst results = await action.execute({\n\t\t\t\t...options,\n\t\t\t})\n\n\t\t\tconst endTime = new Date().getTime()\n\t\t\tconst totalTime = endTime - startTime\n\n\t\t\tthis.clearAndRenderResults({\n\t\t\t\tfeatureCode: feature.code,\n\t\t\t\tactionCode: code,\n\t\t\t\ttotalTime,\n\t\t\t\tresults,\n\t\t\t\taction,\n\t\t\t})\n\n\t\t\treturn results as any\n\t\t})\n\n\t\tconst description = action.optionsSchema?.description\n\n\t\tif (description) {\n\t\t\tcommand = command.description(description)\n\t\t}\n\n\t\tconst schema = action.optionsSchema\n\n\t\tif (schema) {\n\t\t\tthis.attachOptions(command, schema)\n\t\t}\n\t}\n\n\tprivate clearAndRenderResults(options: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t\ttotalTime: number\n\t\taction: FeatureAction\n\t\tresults: FeatureActionResponse\n\t}) {\n\t\tconst { featureCode, actionCode, results, totalTime, action } = options\n\n\t\tthis.ui.stopLoading()\n\t\tthis.ui.clear()\n\n\t\tthis.ui.renderActionSummary({\n\t\t\t//@ts-ignore\n\t\t\theadline: `${actionCode} finished!`,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\ttotalTime,\n\t\t\taction,\n\t\t\t...results,\n\t\t})\n\t}\n\n\tprivate clearAndRenderMasthead(action: FeatureAction<Schema>) {\n\t\tuiUtil.renderActionMastHead(this.ui, action)\n\t}\n\n\tprivate attachOptions(command: CommanderStatic['program'], schema: Schema) {\n\t\tconst entity = SchemaEntityFactory.Entity(schema)\n\n\t\tlet theProgram = command\n\n\t\tconst fields = entity.getNamedFields()\n\t\tconst aliases = featuresUtil.generateOptionAliases(schema)\n\n\t\tfields.forEach(({ field, name }) => {\n\t\t\ttry {\n\t\t\t\ttheProgram = theProgram.option(\n\t\t\t\t\taliases[name],\n\t\t\t\t\tfield.hint,\n\t\t\t\t\tfield.definition.defaultValue\n\t\t\t\t\t\t? `${field.definition.defaultValue}`\n\t\t\t\t\t\t: undefined\n\t\t\t\t)\n\t\t\t} catch (err: any) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tcode: 'FAILED_TO_ATTACH_COMMAND',\n\t\t\t\t\tfieldName: name,\n\t\t\t\t\tid: entity.schemaId,\n\t\t\t\t\toriginalError: err,\n\t\t\t\t\tfriendlyMessage: `Could not attach option ${aliases[name]} from ${entity.schemaId}.${name} to the command`,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;AACA;;AAGA;;;;;;;;;;;;IAWqBA,sB;EAKpB,gCAAmBC,OAAnB,EAIG;IAAA;IAAA;IAAA;IAAA;IACF,IAAQC,OAAR,GAA8CD,OAA9C,CAAQC,OAAR;IAAA,IAAqBC,IAArB,GAA8CF,OAA9C,CAAiBG,EAAjB;IAAA,IAA2BC,cAA3B,GAA8CJ,OAA9C,CAA2BI,cAA3B;IAEA,KAAKH,OAAL,GAAeA,OAAf;IACA,KAAKE,EAAL,GAAUD,IAAV;IACA,KAAKE,cAAL,GAAsBA,cAAtB;EACA;;;;;yGAED,iBAA2BC,OAA3B;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC2BA,OAAO,CAACC,uBAAR,EAD3B;;cAAA;gBACOC,WADP;gBAAA,uCAG0BA,WAH1B;;gBAAA;kBAGC,oDAAsC;oBAA3BC,UAA2B;oBACrC,KAAKC,UAAL,CAAgBD,UAAhB,EAA4BH,OAA5B;kBACA;gBALF;kBAAA;gBAAA;kBAAA;gBAAA;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAQA,oBAAmBK,IAAnB,EAAiCL,OAAjC,EAA2D;MAAA;MAAA;;MAC1D,IAAIM,UAAU,GAAGC,oBAAaC,eAAb,CAA6BR,OAAO,CAACK,IAArC,EAA2CA,IAA3C,CAAjB;;MACA,IAAMI,MAAM,GAAG,KAAKV,cAAL,CAAoBW,MAApB,CAA2BV,OAAO,CAACK,IAAnC,EAAyCA,IAAzC,CAAf;MAEA,IAAMM,OAAO,GAAGF,MAAM,CAACG,cAAP,uCAA4BH,MAAM,CAACG,cAAnC,IAAqD,EAArE;;MAEA,IAAID,OAAO,CAACE,MAAR,GAAiB,CAArB,EAAwB;QACvBP,UAAU,GAAGK,OAAO,CAACG,KAAR,EAAb;MACA;;MAED,IAAIC,OAAO,GAAG,KAAKnB,OAAL,CAAamB,OAAb,CAAqBT,UAArB,CAAd;;MAEA,IAAIK,OAAO,CAACE,MAAR,GAAiB,CAArB,EAAwB;QACvBE,OAAO,GAAGA,OAAO,CAACJ,OAAR,CAAgBA,OAAhB,CAAV;MACA;;MAEDI,OAAO,GAAGA,OAAO,CAACN,MAAR,6FAAe;QAAA;;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;;QAAA;UAAA;YAAA;cAAA;gBACxB,KAAI,CAACO,sBAAL,CAA4BP,MAA5B;;gBACMQ,SAFkB,GAEN,IAAIC,IAAJ,GAAWC,OAAX,EAFM;;gBAAA,2BAAUC,IAAV;kBAAUA,IAAV;gBAAA;;gBAIlBzB,OAJkB,GAIR0B,sBAAcC,oBAAd,8BACZF,IADY,kCAEfpB,OAAO,CAACuB,aAFO,yEAEUd,MAAM,CAACc,aAFjB,GAJQ;gBAAA;gBAAA,OASFd,MAAM,CAACe,OAAP,mBAClB7B,OADkB,EATE;;cAAA;gBASlB8B,OATkB;gBAalBC,OAbkB,GAaR,IAAIR,IAAJ,GAAWC,OAAX,EAbQ;gBAclBQ,SAdkB,GAcND,OAAO,GAAGT,SAdJ;;gBAgBxB,KAAI,CAACW,qBAAL,CAA2B;kBAC1BC,WAAW,EAAE7B,OAAO,CAACK,IADK;kBAE1BF,UAAU,EAAEE,IAFc;kBAG1BsB,SAAS,EAATA,SAH0B;kBAI1BF,OAAO,EAAPA,OAJ0B;kBAK1BhB,MAAM,EAANA;gBAL0B,CAA3B;;gBAhBwB,kCAwBjBgB,OAxBiB;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAAf,GAAV;MA2BA,IAAMK,WAAW,4BAAGrB,MAAM,CAACc,aAAV,0DAAG,sBAAsBO,WAA1C;;MAEA,IAAIA,WAAJ,EAAiB;QAChBf,OAAO,GAAGA,OAAO,CAACe,WAAR,CAAoBA,WAApB,CAAV;MACA;;MAED,IAAMC,MAAM,GAAGtB,MAAM,CAACc,aAAtB;;MAEA,IAAIQ,MAAJ,EAAY;QACX,KAAKC,aAAL,CAAmBjB,OAAnB,EAA4BgB,MAA5B;MACA;IACD;;;WAED,+BAA8BpC,OAA9B,EAMG;MACF,IAAQkC,WAAR,GAAgElC,OAAhE,CAAQkC,WAAR;MAAA,IAAqB1B,UAArB,GAAgER,OAAhE,CAAqBQ,UAArB;MAAA,IAAiCsB,OAAjC,GAAgE9B,OAAhE,CAAiC8B,OAAjC;MAAA,IAA0CE,SAA1C,GAAgEhC,OAAhE,CAA0CgC,SAA1C;MAAA,IAAqDlB,MAArD,GAAgEd,OAAhE,CAAqDc,MAArD;MAEA,KAAKX,EAAL,CAAQmC,WAAR;MACA,KAAKnC,EAAL,CAAQoC,KAAR;MAEA,KAAKpC,EAAL,CAAQqC,mBAAR;QACC;QACAC,QAAQ,YAAKjC,UAAL,eAFT;QAGC0B,WAAW,EAAXA,WAHD;QAIC1B,UAAU,EAAVA,UAJD;QAKCwB,SAAS,EAATA,SALD;QAMClB,MAAM,EAANA;MAND,GAOIgB,OAPJ;IASA;;;WAED,gCAA+BhB,MAA/B,EAA8D;MAC7D4B,eAAOC,oBAAP,CAA4B,KAAKxC,EAAjC,EAAqCW,MAArC;IACA;;;WAED,uBAAsBM,OAAtB,EAA2DgB,MAA3D,EAA2E;MAC1E,IAAMQ,MAAM,GAAGC,4BAAoBC,MAApB,CAA2BV,MAA3B,CAAf;;MAEA,IAAIW,UAAU,GAAG3B,OAAjB;MAEA,IAAM4B,MAAM,GAAGJ,MAAM,CAACK,cAAP,EAAf;;MACA,IAAMjC,OAAO,GAAGJ,oBAAasC,qBAAb,CAAmCd,MAAnC,CAAhB;;MAEAY,MAAM,CAACG,OAAP,CAAe,iBAAqB;QAAA,IAAlBC,KAAkB,SAAlBA,KAAkB;QAAA,IAAXC,IAAW,SAAXA,IAAW;;QACnC,IAAI;UACHN,UAAU,GAAGA,UAAU,CAACO,MAAX,CACZtC,OAAO,CAACqC,IAAD,CADK,EAEZD,KAAK,CAACG,IAFM,EAGZH,KAAK,CAACI,UAAN,CAAiBC,YAAjB,aACML,KAAK,CAACI,UAAN,CAAiBC,YADvB,IAEGC,SALS,CAAb;QAOA,CARD,CAQE,OAAOC,GAAP,EAAiB;UAClB,MAAM,IAAIC,uBAAJ,CAAgB;YACrB;YACAlD,IAAI,EAAE,0BAFe;YAGrBmD,SAAS,EAAER,IAHU;YAIrBS,EAAE,EAAElB,MAAM,CAACmB,QAJU;YAKrBC,aAAa,EAAEL,GALM;YAMrBM,eAAe,oCAA6BjD,OAAO,CAACqC,IAAD,CAApC,mBAAmDT,MAAM,CAACmB,QAA1D,cAAsEV,IAAtE;UANM,CAAhB,CAAN;QAQA;MACD,CAnBD;IAoBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/features/FeatureInstaller.ts"],"names":["FeatureInstaller","cwd","serviceFactory","code","feature","getFeature","isInstalled","Service","isMarkedAsInstalled","isMarkedAsSkipped","featuresMarkedAsSkippedThisRun","push","markAsPermanentlySkipped","indexOf","isMarkedAsPermanentlySkipped","featureMap","SpruceError","featureCode","codes","Promise","all","map","f","results","i","length","result","trackedFeatures","deps","getFeatureDependenciesIncludingSelf","isRequired","filter","sortFeatures","featureDependency","features","isDependencyInTracker","dependencies","dependency","x","dependencyDependencies","find","options","installFeatureDependencies","didUpdateHandler","shouldAllowEntertainment","startInFlightIntertainmentHandler","handler","pendingFeatureInstalls","dependenciesToInstall","concat","isInstalledOrPendingInstall","installOptions","installFeature","installResults","installAllPending","pendingResults","stopInFlightIntertainmentHandler","optionsSchema","beforePackageInstall","beforeInstallResults","queueInstallPackageDependenciesWithoutEntertainment","packagesInstalled","afterPackageInstalls","featuresToMarkAsInstalled","files","undefined","installPackageDependenciesForFeatures","pkgService","packagesToInstall","install","devPackagesToInstall","isDev","settings","markAsInstalled","afterPackageInstall","afterInstallResults","packageDependencies","forEach","pkg","packageName","buildPackageName","name","getFeatureNameAndDesc","nameReadable","description","featureDependencies","sort","a","b","aFeature","bFeature","aDependsOnB","d","bDependsOnA","installOrderWeight","type","Object","keys","dep","getAllCodes","installed"],"mappings":"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","sourcesContent":["import { validateSchemaValues } from '@sprucelabs/schema'\nimport { uniq } from 'lodash'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport { InternalUpdateHandler, NpmPackage } from '../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport {\n\tInstallFeatureOptions,\n\tFeatureInstallResponse,\n\tFeatureCode,\n\tInstallFeature,\n\tFeatureMap,\n} from './features.types'\n\nexport default class FeatureInstaller implements ServiceProvider {\n\tpublic cwd: string\n\n\tprivate featureMap: Partial<FeatureMap> = {}\n\tprivate serviceFactory: ServiceFactory\n\tprivate featuresMarkedAsSkippedThisRun: FeatureCode[] = []\n\tpublic static startInFlightIntertainmentHandler?: (\n\t\tdidUpdateHandler: (handler: (message: string) => void) => void\n\t) => void\n\tpublic static stopInFlightIntertainmentHandler?: () => void\n\tprivate packagesToInstall: string[] = []\n\tprivate devPackagesToInstall: string[] = []\n\tprivate featuresToMarkAsInstalled: string[] = []\n\tprivate afterPackageInstalls: InstallFeature[] = []\n\tprivate pendingFeatureInstalls: Record<string, boolean> = {}\n\n\tpublic constructor(cwd: string, serviceFactory: ServiceFactory) {\n\t\tthis.cwd = cwd\n\t\tthis.serviceFactory = serviceFactory\n\t}\n\n\tpublic async isInstalled(code: FeatureCode): Promise<boolean> {\n\t\tconst feature = this.getFeature(code)\n\n\t\tif (feature.isInstalled) {\n\t\t\treturn feature.isInstalled()\n\t\t}\n\n\t\treturn this.Service('settings').isMarkedAsInstalled(code)\n\t}\n\n\tpublic markAsSkippedThisRun(code: FeatureCode) {\n\t\tif (!this.isMarkedAsSkipped(code)) {\n\t\t\tthis.featuresMarkedAsSkippedThisRun.push(code)\n\t\t}\n\t}\n\tpublic markAsPermanentlySkipped(code: FeatureCode) {\n\t\tif (!this.isMarkedAsSkipped(code)) {\n\t\t\tthis.Service('settings').markAsPermanentlySkipped(code)\n\t\t}\n\t}\n\n\tpublic isMarkedAsSkipped(code: FeatureCode) {\n\t\treturn (\n\t\t\tthis.featuresMarkedAsSkippedThisRun.indexOf(code) > -1 ||\n\t\t\tthis.Service('settings').isMarkedAsPermanentlySkipped(code)\n\t\t)\n\t}\n\n\tpublic mapFeature<C extends FeatureCode>(code: C, feature: FeatureMap[C]) {\n\t\tthis.featureMap[code] = feature\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C): FeatureMap[C] {\n\t\tconst feature = this.featureMap[code]\n\t\tif (!feature) {\n\t\t\tthrow new SpruceError({ code: 'INVALID_FEATURE_CODE', featureCode: code })\n\t\t}\n\n\t\treturn feature as FeatureMap[C]\n\t}\n\n\tpublic async areInstalled(codes: FeatureCode[]) {\n\t\tconst results = await Promise.all(\n\t\t\tcodes.map((f) => {\n\t\t\t\treturn this.isInstalled(f)\n\t\t\t})\n\t\t)\n\n\t\tfor (let i = 0; i < results.length; i += 1) {\n\t\t\tconst result = results[i]\n\t\t\tif (!result) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tpublic getFeatureDependencies<C extends FeatureCode>(\n\t\tfeatureCode: C,\n\t\ttrackedFeatures: FeatureDependency[] = []\n\t): FeatureDependency[] {\n\t\tlet deps = this.getFeatureDependenciesIncludingSelf(\n\t\t\t{ code: featureCode, isRequired: true },\n\t\t\ttrackedFeatures\n\t\t).filter((f) => f.code !== featureCode)\n\n\t\tdeps = this.sortFeatures(deps)\n\n\t\treturn deps\n\t}\n\n\tprivate getFeatureDependenciesIncludingSelf(\n\t\tfeatureDependency: FeatureDependency,\n\t\ttrackedFeatures: FeatureDependency[] = []\n\t): FeatureDependency[] {\n\t\tconst features: FeatureDependency[] = []\n\n\t\tif (!this.isDependencyInTracker(trackedFeatures, featureDependency)) {\n\t\t\tfeatures.push(featureDependency)\n\t\t\ttrackedFeatures.push(featureDependency)\n\t\t}\n\n\t\tconst feature = this.getFeature(featureDependency.code)\n\t\tconst dependencies = feature.dependencies\n\n\t\tfor (let i = 0; i < dependencies.length; i += 1) {\n\t\t\tconst dependency = dependencies[i]\n\t\t\tif (!this.isDependencyInTracker(trackedFeatures, dependency)) {\n\t\t\t\tfeatures.push(dependency)\n\t\t\t\ttrackedFeatures.push(dependency)\n\t\t\t}\n\t\t}\n\n\t\tfor (let x = 0; x < dependencies.length; x += 1) {\n\t\t\tconst dependency = dependencies[x]\n\t\t\tlet dependencyDependencies = this.getFeatureDependenciesIncludingSelf(\n\t\t\t\tdependency,\n\t\t\t\ttrackedFeatures\n\t\t\t)\n\t\t\tif (!dependency.isRequired) {\n\t\t\t\tdependencyDependencies = dependencyDependencies.map((f) => ({\n\t\t\t\t\t...f,\n\t\t\t\t\tisRequired: false,\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\tfeatures.push(...dependencyDependencies)\n\t\t}\n\n\t\treturn features\n\t}\n\n\tprivate isDependencyInTracker(\n\t\ttrackedFeatures: FeatureDependency[],\n\t\tdependency: FeatureDependency\n\t) {\n\t\treturn !!trackedFeatures.find((f) => f.code === dependency.code)\n\t}\n\n\tpublic async install(\n\t\toptions: InstallFeatureOptions\n\t): Promise<FeatureInstallResponse> {\n\t\tlet {\n\t\t\tfeatures,\n\t\t\tinstallFeatureDependencies = true,\n\t\t\tdidUpdateHandler,\n\t\t} = options\n\n\t\tconst shouldAllowEntertainment = !!features.find((f) => f.code === 'skill')\n\n\t\tif (\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler &&\n\t\t\tshouldAllowEntertainment\n\t\t) {\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler(\n\t\t\t\t(handler: InternalUpdateHandler) => {\n\t\t\t\t\tdidUpdateHandler = handler\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tthis.pendingFeatureInstalls = {}\n\n\t\tlet results: FeatureInstallResponse = {}\n\n\t\tlet dependenciesToInstall: FeatureDependency[] = []\n\n\t\tfor (let i = 0; i < features.length; i += 1) {\n\t\t\tconst f = features[i]\n\t\t\tconst code = f.code\n\n\t\t\tdidUpdateHandler?.(`Checking if ${code} is installed...`)\n\n\t\t\tconst isInstalled = await this.isInstalled(code)\n\t\t\tif (!isInstalled && installFeatureDependencies) {\n\t\t\t\tdidUpdateHandler?.(`It is not, checking dependencies...`)\n\t\t\t\tdependenciesToInstall = dependenciesToInstall.concat(\n\t\t\t\t\tthis.getFeatureDependenciesIncludingSelf({ code, isRequired: true })\n\t\t\t\t)\n\t\t\t} else if (!isInstalled) {\n\t\t\t\tdependenciesToInstall.push({ code, isRequired: true })\n\t\t\t}\n\t\t}\n\n\t\tdependenciesToInstall = uniq(dependenciesToInstall)\n\t\tdependenciesToInstall = this.sortFeatures(dependenciesToInstall)\n\n\t\tfor (let i = 0; i < dependenciesToInstall.length; i += 1) {\n\t\t\tconst { code, isRequired } = dependenciesToInstall[i]\n\n\t\t\tconst isInstalled = await this.isInstalledOrPendingInstall(code)\n\n\t\t\tif (!isInstalled && isRequired) {\n\t\t\t\tconst installOptions =\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\toptions.features.find((f) => f.code === code)?.options\n\n\t\t\t\tconst installFeature = {\n\t\t\t\t\tcode: dependenciesToInstall[i].code,\n\t\t\t\t\toptions: installOptions,\n\t\t\t\t} as InstallFeature\n\n\t\t\t\tdidUpdateHandler?.(`Installing the ${installFeature.code} feature....`)\n\n\t\t\t\tconst installResults = await this.installFeature(\n\t\t\t\t\tinstallFeature,\n\t\t\t\t\tdidUpdateHandler\n\t\t\t\t)\n\t\t\t\tresults = merge(results, installResults)\n\t\t\t}\n\t\t}\n\n\t\tconst pendingResults = await this.installAllPending(didUpdateHandler)\n\t\tresults = merge(results, pendingResults)\n\n\t\tif (\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler &&\n\t\t\tshouldAllowEntertainment\n\t\t) {\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate isInstalledOrPendingInstall(code: string) {\n\t\treturn this.pendingFeatureInstalls[code] || this.isInstalled(code as any)\n\t}\n\n\tprivate async installFeature(\n\t\tinstallFeature: InstallFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<FeatureInstallResponse> {\n\t\tthis.pendingFeatureInstalls[installFeature.code] = true\n\n\t\tconst feature = this.getFeature(installFeature.code) as AbstractFeature\n\n\t\tif (feature.optionsSchema) {\n\t\t\t//@ts-ignore\n\t\t\tvalidateSchemaValues(feature.optionsSchema, installFeature.options ?? {})\n\t\t}\n\n\t\tdidUpdateHandler?.(`Running before package install hook...`)\n\t\tconst beforeInstallResults = await feature.beforePackageInstall(\n\t\t\t//@ts-ignore\n\t\t\tinstallFeature.options\n\t\t)\n\n\t\tif (beforeInstallResults.cwd) {\n\t\t\tthis.cwd = beforeInstallResults.cwd\n\t\t}\n\n\t\tdidUpdateHandler?.(`Installing package dependencies...`)\n\t\tconst packagesInstalled =\n\t\t\tawait this.queueInstallPackageDependenciesWithoutEntertainment(\n\t\t\t\tfeature,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\n\t\tdidUpdateHandler?.(`Running after package install hook...`)\n\n\t\tthis.afterPackageInstalls.push(installFeature)\n\n\t\tif (!feature.isInstalled) {\n\t\t\tthis.featuresToMarkAsInstalled.push(feature.code)\n\t\t}\n\n\t\tconst files = [...(beforeInstallResults.files ?? [])]\n\n\t\treturn {\n\t\t\tfiles: files ?? undefined,\n\t\t\tpackagesInstalled,\n\t\t}\n\t}\n\n\tpublic async installPackageDependencies(\n\t\tfeature: AbstractFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\treturn this.installPackageDependenciesForFeatures(\n\t\t\t[feature],\n\t\t\tdidUpdateHandler\n\t\t)\n\t}\n\n\tpublic async installPackageDependenciesForFeatures(\n\t\tfeatures: AbstractFeature[],\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tif (FeatureInstaller.startInFlightIntertainmentHandler) {\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler(\n\t\t\t\t(handler: InternalUpdateHandler) => {\n\t\t\t\t\tdidUpdateHandler = handler\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tfor (const feature of features) {\n\t\t\tawait this.queueInstallPackageDependenciesWithoutEntertainment(\n\t\t\t\tfeature,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\t\t}\n\n\t\tawait this.installAllPending(didUpdateHandler)\n\n\t\tif (FeatureInstaller.stopInFlightIntertainmentHandler) {\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler()\n\t\t}\n\t}\n\n\tprivate async installAllPending(\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<FeatureInstallResponse> {\n\t\tconst pkgService = this.Service('pkg')\n\n\t\tif (this.packagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Installing ${this.packagesToInstall.length} node module${\n\t\t\t\t\tthis.packagesToInstall.length === 1 ? '' : 's'\n\t\t\t\t}. Please be patient.`\n\t\t\t)\n\t\t\tawait pkgService.install(this.packagesToInstall, {})\n\t\t}\n\n\t\tif (this.devPackagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Now installing ${this.devPackagesToInstall.length} DEV node module${\n\t\t\t\t\tthis.devPackagesToInstall.length === 1 ? '' : 's'\n\t\t\t\t}. Please be patient.`\n\t\t\t)\n\t\t\tawait pkgService.install(this.devPackagesToInstall, {\n\t\t\t\tisDev: true,\n\t\t\t})\n\t\t}\n\n\t\tthis.packagesToInstall = []\n\t\tthis.devPackagesToInstall = []\n\n\t\tconst settings = this.Service('settings')\n\n\t\tfor (const code of this.featuresToMarkAsInstalled) {\n\t\t\tsettings.markAsInstalled(code)\n\t\t}\n\n\t\tthis.featuresToMarkAsInstalled = []\n\n\t\tlet results: FeatureInstallResponse = {}\n\n\t\tfor (const installFeature of this.afterPackageInstalls) {\n\t\t\tconst feature = this.getFeature(installFeature.code)\n\t\t\tconst afterInstallResults = await feature.afterPackageInstall(\n\t\t\t\t//@ts-ignore\n\t\t\t\tinstallFeature.options\n\t\t\t)\n\n\t\t\tresults = merge(results, afterInstallResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async queueInstallPackageDependenciesWithoutEntertainment(\n\t\tfeature: AbstractFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tconst packagesInstalled: NpmPackage[] = []\n\t\tconst pkgService = this.Service('pkg')\n\n\t\tfeature.packageDependencies?.forEach((pkg) => {\n\t\t\tconst packageName = pkgService.buildPackageName(pkg)\n\n\t\t\tpackagesInstalled.push(pkg)\n\n\t\t\tdidUpdateHandler?.(`Checking node dependency: ${pkg.name}`)\n\n\t\t\tif (pkg.isDev && this.devPackagesToInstall.indexOf(packageName) === -1) {\n\t\t\t\tthis.devPackagesToInstall.push(packageName)\n\t\t\t} else if (\n\t\t\t\t!pkg.isDev &&\n\t\t\t\tthis.packagesToInstall.indexOf(packageName) === -1\n\t\t\t) {\n\t\t\t\tthis.packagesToInstall.push(packageName)\n\t\t\t}\n\t\t})\n\n\t\tif (this.packagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Queueing install of ${this.packagesToInstall.length} node dependenc${\n\t\t\t\t\tthis.packagesToInstall.length === 1\n\t\t\t\t\t\t? 'y.'\n\t\t\t\t\t\t: 'ies for ' + this.getFeatureNameAndDesc(feature) + '...'\n\t\t\t\t}.`\n\t\t\t)\n\t\t}\n\n\t\tif (this.devPackagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Queueing install of ${\n\t\t\t\t\tthis.devPackagesToInstall.length\n\t\t\t\t} DEV node dependenc${\n\t\t\t\t\tthis.devPackagesToInstall.length === 1\n\t\t\t\t\t\t? 'y.'\n\t\t\t\t\t\t: 'ies for ' + this.getFeatureNameAndDesc(feature) + '. 🤘'\n\t\t\t\t}.`\n\t\t\t)\n\t\t}\n\n\t\treturn packagesInstalled\n\t}\n\n\tprivate getFeatureNameAndDesc(feature: AbstractFeature) {\n\t\treturn `${feature.nameReadable}${\n\t\t\tfeature.description ? ' (' + feature.description + ')' : ''\n\t\t}`\n\t}\n\n\tprivate sortFeatures(\n\t\tfeatureDependencies: FeatureDependency[]\n\t): FeatureDependency[] {\n\t\treturn [...featureDependencies].sort((a, b) => {\n\t\t\tconst aFeature = this.getFeature(a.code)\n\t\t\tconst bFeature = this.getFeature(b.code)\n\n\t\t\tconst aDependsOnB = aFeature.dependencies.find((d) => d.code === b.code)\n\t\t\tconst bDependsOnA = bFeature.dependencies.find((d) => d.code === a.code)\n\n\t\t\tif (\n\t\t\t\taDependsOnB ||\n\t\t\t\taFeature.installOrderWeight < bFeature.installOrderWeight\n\t\t\t) {\n\t\t\t\treturn 1\n\t\t\t} else if (\n\t\t\t\tbDependsOnA ||\n\t\t\t\taFeature.installOrderWeight > bFeature.installOrderWeight\n\t\t\t) {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn 0\n\t\t})\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic getOptionsForFeature(code: FeatureCode) {\n\t\treturn this.getFeature(code).optionsSchema\n\t}\n\n\tpublic getAllCodes(): FeatureCode[] {\n\t\tconst codes = Object.keys(this.featureMap) as FeatureCode[]\n\t\treturn this.sortFeatures(\n\t\t\tcodes.map((code) => ({ code, isRequired: true }))\n\t\t).map((dep) => dep.code)\n\t}\n\n\tpublic async getInstalledFeatures() {\n\t\tconst installed = await Promise.all(\n\t\t\tthis.getAllCodes().map(async (code) => {\n\t\t\t\tconst isInstalled = await this.isInstalled(code)\n\t\t\t\tif (isInstalled) {\n\t\t\t\t\treturn this.getFeature(code)\n\t\t\t\t}\n\n\t\t\t\treturn false\n\t\t\t})\n\t\t)\n\n\t\treturn installed.filter((f) => !!f) as FeatureMap[keyof FeatureMap][]\n\t}\n}\n"],"file":"FeatureInstaller.js"}
|
|
1
|
+
{"version":3,"file":"FeatureInstaller.js","names":["FeatureInstaller","cwd","serviceFactory","code","feature","getFeature","isInstalled","Service","isMarkedAsInstalled","isMarkedAsSkipped","featuresMarkedAsSkippedThisRun","push","markAsPermanentlySkipped","indexOf","isMarkedAsPermanentlySkipped","featureMap","SpruceError","featureCode","codes","Promise","all","map","f","results","i","length","result","trackedFeatures","deps","getFeatureDependenciesIncludingSelf","isRequired","filter","sortFeatures","featureDependency","features","isDependencyInTracker","dependencies","dependency","x","dependencyDependencies","find","options","installFeatureDependencies","didUpdateHandler","shouldAllowEntertainment","startInFlightIntertainmentHandler","handler","pendingFeatureInstalls","dependenciesToInstall","concat","isInstalledOrPendingInstall","installOptions","installFeature","installResults","installAllPending","pendingResults","stopInFlightIntertainmentHandler","optionsSchema","beforePackageInstall","beforeInstallResults","queueInstallPackageDependenciesWithoutEntertainment","packagesInstalled","afterPackageInstalls","featuresToMarkAsInstalled","files","undefined","installPackageDependenciesForFeatures","pkgService","packagesToInstall","install","devPackagesToInstall","isDev","settings","markAsInstalled","afterPackageInstall","afterInstallResults","packageDependencies","forEach","pkg","packageName","buildPackageName","name","getFeatureNameAndDesc","nameReadable","description","featureDependencies","sort","a","b","aFeature","bFeature","aDependsOnB","d","bDependsOnA","installOrderWeight","type","Object","keys","dep","getAllCodes","installed"],"sources":["../../src/features/FeatureInstaller.ts"],"sourcesContent":["import { validateSchemaValues } from '@sprucelabs/schema'\nimport { uniq } from 'lodash'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport { InternalUpdateHandler, NpmPackage } from '../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport {\n\tInstallFeatureOptions,\n\tFeatureInstallResponse,\n\tFeatureCode,\n\tInstallFeature,\n\tFeatureMap,\n} from './features.types'\n\nexport default class FeatureInstaller implements ServiceProvider {\n\tpublic cwd: string\n\n\tprivate featureMap: Partial<FeatureMap> = {}\n\tprivate serviceFactory: ServiceFactory\n\tprivate featuresMarkedAsSkippedThisRun: FeatureCode[] = []\n\tpublic static startInFlightIntertainmentHandler?: (\n\t\tdidUpdateHandler: (handler: (message: string) => void) => void\n\t) => void\n\tpublic static stopInFlightIntertainmentHandler?: () => void\n\tprivate packagesToInstall: string[] = []\n\tprivate devPackagesToInstall: string[] = []\n\tprivate featuresToMarkAsInstalled: string[] = []\n\tprivate afterPackageInstalls: InstallFeature[] = []\n\tprivate pendingFeatureInstalls: Record<string, boolean> = {}\n\n\tpublic constructor(cwd: string, serviceFactory: ServiceFactory) {\n\t\tthis.cwd = cwd\n\t\tthis.serviceFactory = serviceFactory\n\t}\n\n\tpublic async isInstalled(code: FeatureCode): Promise<boolean> {\n\t\tconst feature = this.getFeature(code)\n\n\t\tif (feature.isInstalled) {\n\t\t\treturn feature.isInstalled()\n\t\t}\n\n\t\treturn this.Service('settings').isMarkedAsInstalled(code)\n\t}\n\n\tpublic markAsSkippedThisRun(code: FeatureCode) {\n\t\tif (!this.isMarkedAsSkipped(code)) {\n\t\t\tthis.featuresMarkedAsSkippedThisRun.push(code)\n\t\t}\n\t}\n\tpublic markAsPermanentlySkipped(code: FeatureCode) {\n\t\tif (!this.isMarkedAsSkipped(code)) {\n\t\t\tthis.Service('settings').markAsPermanentlySkipped(code)\n\t\t}\n\t}\n\n\tpublic isMarkedAsSkipped(code: FeatureCode) {\n\t\treturn (\n\t\t\tthis.featuresMarkedAsSkippedThisRun.indexOf(code) > -1 ||\n\t\t\tthis.Service('settings').isMarkedAsPermanentlySkipped(code)\n\t\t)\n\t}\n\n\tpublic mapFeature<C extends FeatureCode>(code: C, feature: FeatureMap[C]) {\n\t\tthis.featureMap[code] = feature\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C): FeatureMap[C] {\n\t\tconst feature = this.featureMap[code]\n\t\tif (!feature) {\n\t\t\tthrow new SpruceError({ code: 'INVALID_FEATURE_CODE', featureCode: code })\n\t\t}\n\n\t\treturn feature as FeatureMap[C]\n\t}\n\n\tpublic async areInstalled(codes: FeatureCode[]) {\n\t\tconst results = await Promise.all(\n\t\t\tcodes.map((f) => {\n\t\t\t\treturn this.isInstalled(f)\n\t\t\t})\n\t\t)\n\n\t\tfor (let i = 0; i < results.length; i += 1) {\n\t\t\tconst result = results[i]\n\t\t\tif (!result) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tpublic getFeatureDependencies<C extends FeatureCode>(\n\t\tfeatureCode: C,\n\t\ttrackedFeatures: FeatureDependency[] = []\n\t): FeatureDependency[] {\n\t\tlet deps = this.getFeatureDependenciesIncludingSelf(\n\t\t\t{ code: featureCode, isRequired: true },\n\t\t\ttrackedFeatures\n\t\t).filter((f) => f.code !== featureCode)\n\n\t\tdeps = this.sortFeatures(deps)\n\n\t\treturn deps\n\t}\n\n\tprivate getFeatureDependenciesIncludingSelf(\n\t\tfeatureDependency: FeatureDependency,\n\t\ttrackedFeatures: FeatureDependency[] = []\n\t): FeatureDependency[] {\n\t\tconst features: FeatureDependency[] = []\n\n\t\tif (!this.isDependencyInTracker(trackedFeatures, featureDependency)) {\n\t\t\tfeatures.push(featureDependency)\n\t\t\ttrackedFeatures.push(featureDependency)\n\t\t}\n\n\t\tconst feature = this.getFeature(featureDependency.code)\n\t\tconst dependencies = feature.dependencies\n\n\t\tfor (let i = 0; i < dependencies.length; i += 1) {\n\t\t\tconst dependency = dependencies[i]\n\t\t\tif (!this.isDependencyInTracker(trackedFeatures, dependency)) {\n\t\t\t\tfeatures.push(dependency)\n\t\t\t\ttrackedFeatures.push(dependency)\n\t\t\t}\n\t\t}\n\n\t\tfor (let x = 0; x < dependencies.length; x += 1) {\n\t\t\tconst dependency = dependencies[x]\n\t\t\tlet dependencyDependencies = this.getFeatureDependenciesIncludingSelf(\n\t\t\t\tdependency,\n\t\t\t\ttrackedFeatures\n\t\t\t)\n\t\t\tif (!dependency.isRequired) {\n\t\t\t\tdependencyDependencies = dependencyDependencies.map((f) => ({\n\t\t\t\t\t...f,\n\t\t\t\t\tisRequired: false,\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\tfeatures.push(...dependencyDependencies)\n\t\t}\n\n\t\treturn features\n\t}\n\n\tprivate isDependencyInTracker(\n\t\ttrackedFeatures: FeatureDependency[],\n\t\tdependency: FeatureDependency\n\t) {\n\t\treturn !!trackedFeatures.find((f) => f.code === dependency.code)\n\t}\n\n\tpublic async install(\n\t\toptions: InstallFeatureOptions\n\t): Promise<FeatureInstallResponse> {\n\t\tlet {\n\t\t\tfeatures,\n\t\t\tinstallFeatureDependencies = true,\n\t\t\tdidUpdateHandler,\n\t\t} = options\n\n\t\tconst shouldAllowEntertainment = !!features.find((f) => f.code === 'skill')\n\n\t\tif (\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler &&\n\t\t\tshouldAllowEntertainment\n\t\t) {\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler(\n\t\t\t\t(handler: InternalUpdateHandler) => {\n\t\t\t\t\tdidUpdateHandler = handler\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tthis.pendingFeatureInstalls = {}\n\n\t\tlet results: FeatureInstallResponse = {}\n\n\t\tlet dependenciesToInstall: FeatureDependency[] = []\n\n\t\tfor (let i = 0; i < features.length; i += 1) {\n\t\t\tconst f = features[i]\n\t\t\tconst code = f.code\n\n\t\t\tdidUpdateHandler?.(`Checking if ${code} is installed...`)\n\n\t\t\tconst isInstalled = await this.isInstalled(code)\n\t\t\tif (!isInstalled && installFeatureDependencies) {\n\t\t\t\tdidUpdateHandler?.(`It is not, checking dependencies...`)\n\t\t\t\tdependenciesToInstall = dependenciesToInstall.concat(\n\t\t\t\t\tthis.getFeatureDependenciesIncludingSelf({ code, isRequired: true })\n\t\t\t\t)\n\t\t\t} else if (!isInstalled) {\n\t\t\t\tdependenciesToInstall.push({ code, isRequired: true })\n\t\t\t}\n\t\t}\n\n\t\tdependenciesToInstall = uniq(dependenciesToInstall)\n\t\tdependenciesToInstall = this.sortFeatures(dependenciesToInstall)\n\n\t\tfor (let i = 0; i < dependenciesToInstall.length; i += 1) {\n\t\t\tconst { code, isRequired } = dependenciesToInstall[i]\n\n\t\t\tconst isInstalled = await this.isInstalledOrPendingInstall(code)\n\n\t\t\tif (!isInstalled && isRequired) {\n\t\t\t\tconst installOptions =\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\toptions.features.find((f) => f.code === code)?.options\n\n\t\t\t\tconst installFeature = {\n\t\t\t\t\tcode: dependenciesToInstall[i].code,\n\t\t\t\t\toptions: installOptions,\n\t\t\t\t} as InstallFeature\n\n\t\t\t\tdidUpdateHandler?.(`Installing the ${installFeature.code} feature....`)\n\n\t\t\t\tconst installResults = await this.installFeature(\n\t\t\t\t\tinstallFeature,\n\t\t\t\t\tdidUpdateHandler\n\t\t\t\t)\n\t\t\t\tresults = merge(results, installResults)\n\t\t\t}\n\t\t}\n\n\t\tconst pendingResults = await this.installAllPending(didUpdateHandler)\n\t\tresults = merge(results, pendingResults)\n\n\t\tif (\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler &&\n\t\t\tshouldAllowEntertainment\n\t\t) {\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate isInstalledOrPendingInstall(code: string) {\n\t\treturn this.pendingFeatureInstalls[code] || this.isInstalled(code as any)\n\t}\n\n\tprivate async installFeature(\n\t\tinstallFeature: InstallFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<FeatureInstallResponse> {\n\t\tthis.pendingFeatureInstalls[installFeature.code] = true\n\n\t\tconst feature = this.getFeature(installFeature.code) as AbstractFeature\n\n\t\tif (feature.optionsSchema) {\n\t\t\t//@ts-ignore\n\t\t\tvalidateSchemaValues(feature.optionsSchema, installFeature.options ?? {})\n\t\t}\n\n\t\tdidUpdateHandler?.(`Running before package install hook...`)\n\t\tconst beforeInstallResults = await feature.beforePackageInstall(\n\t\t\t//@ts-ignore\n\t\t\tinstallFeature.options\n\t\t)\n\n\t\tif (beforeInstallResults.cwd) {\n\t\t\tthis.cwd = beforeInstallResults.cwd\n\t\t}\n\n\t\tdidUpdateHandler?.(`Installing package dependencies...`)\n\t\tconst packagesInstalled =\n\t\t\tawait this.queueInstallPackageDependenciesWithoutEntertainment(\n\t\t\t\tfeature,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\n\t\tdidUpdateHandler?.(`Running after package install hook...`)\n\n\t\tthis.afterPackageInstalls.push(installFeature)\n\n\t\tif (!feature.isInstalled) {\n\t\t\tthis.featuresToMarkAsInstalled.push(feature.code)\n\t\t}\n\n\t\tconst files = [...(beforeInstallResults.files ?? [])]\n\n\t\treturn {\n\t\t\tfiles: files ?? undefined,\n\t\t\tpackagesInstalled,\n\t\t}\n\t}\n\n\tpublic async installPackageDependencies(\n\t\tfeature: AbstractFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\treturn this.installPackageDependenciesForFeatures(\n\t\t\t[feature],\n\t\t\tdidUpdateHandler\n\t\t)\n\t}\n\n\tpublic async installPackageDependenciesForFeatures(\n\t\tfeatures: AbstractFeature[],\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tif (FeatureInstaller.startInFlightIntertainmentHandler) {\n\t\t\tFeatureInstaller.startInFlightIntertainmentHandler(\n\t\t\t\t(handler: InternalUpdateHandler) => {\n\t\t\t\t\tdidUpdateHandler = handler\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tfor (const feature of features) {\n\t\t\tawait this.queueInstallPackageDependenciesWithoutEntertainment(\n\t\t\t\tfeature,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\t\t}\n\n\t\tawait this.installAllPending(didUpdateHandler)\n\n\t\tif (FeatureInstaller.stopInFlightIntertainmentHandler) {\n\t\t\tFeatureInstaller.stopInFlightIntertainmentHandler()\n\t\t}\n\t}\n\n\tprivate async installAllPending(\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<FeatureInstallResponse> {\n\t\tconst pkgService = this.Service('pkg')\n\n\t\tif (this.packagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Installing ${this.packagesToInstall.length} node module${\n\t\t\t\t\tthis.packagesToInstall.length === 1 ? '' : 's'\n\t\t\t\t}. Please be patient.`\n\t\t\t)\n\t\t\tawait pkgService.install(this.packagesToInstall, {})\n\t\t}\n\n\t\tif (this.devPackagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Now installing ${this.devPackagesToInstall.length} DEV node module${\n\t\t\t\t\tthis.devPackagesToInstall.length === 1 ? '' : 's'\n\t\t\t\t}. Please be patient.`\n\t\t\t)\n\t\t\tawait pkgService.install(this.devPackagesToInstall, {\n\t\t\t\tisDev: true,\n\t\t\t})\n\t\t}\n\n\t\tthis.packagesToInstall = []\n\t\tthis.devPackagesToInstall = []\n\n\t\tconst settings = this.Service('settings')\n\n\t\tfor (const code of this.featuresToMarkAsInstalled) {\n\t\t\tsettings.markAsInstalled(code)\n\t\t}\n\n\t\tthis.featuresToMarkAsInstalled = []\n\n\t\tlet results: FeatureInstallResponse = {}\n\n\t\tfor (const installFeature of this.afterPackageInstalls) {\n\t\t\tconst feature = this.getFeature(installFeature.code)\n\t\t\tconst afterInstallResults = await feature.afterPackageInstall(\n\t\t\t\t//@ts-ignore\n\t\t\t\tinstallFeature.options\n\t\t\t)\n\n\t\t\tresults = merge(results, afterInstallResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async queueInstallPackageDependenciesWithoutEntertainment(\n\t\tfeature: AbstractFeature,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tconst packagesInstalled: NpmPackage[] = []\n\t\tconst pkgService = this.Service('pkg')\n\n\t\tfeature.packageDependencies?.forEach((pkg) => {\n\t\t\tconst packageName = pkgService.buildPackageName(pkg)\n\n\t\t\tpackagesInstalled.push(pkg)\n\n\t\t\tdidUpdateHandler?.(`Checking node dependency: ${pkg.name}`)\n\n\t\t\tif (pkg.isDev && this.devPackagesToInstall.indexOf(packageName) === -1) {\n\t\t\t\tthis.devPackagesToInstall.push(packageName)\n\t\t\t} else if (\n\t\t\t\t!pkg.isDev &&\n\t\t\t\tthis.packagesToInstall.indexOf(packageName) === -1\n\t\t\t) {\n\t\t\t\tthis.packagesToInstall.push(packageName)\n\t\t\t}\n\t\t})\n\n\t\tif (this.packagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Queueing install of ${this.packagesToInstall.length} node dependenc${\n\t\t\t\t\tthis.packagesToInstall.length === 1\n\t\t\t\t\t\t? 'y.'\n\t\t\t\t\t\t: 'ies for ' + this.getFeatureNameAndDesc(feature) + '...'\n\t\t\t\t}.`\n\t\t\t)\n\t\t}\n\n\t\tif (this.devPackagesToInstall.length > 0) {\n\t\t\tdidUpdateHandler?.(\n\t\t\t\t`Queueing install of ${\n\t\t\t\t\tthis.devPackagesToInstall.length\n\t\t\t\t} DEV node dependenc${\n\t\t\t\t\tthis.devPackagesToInstall.length === 1\n\t\t\t\t\t\t? 'y.'\n\t\t\t\t\t\t: 'ies for ' + this.getFeatureNameAndDesc(feature) + '. 🤘'\n\t\t\t\t}.`\n\t\t\t)\n\t\t}\n\n\t\treturn packagesInstalled\n\t}\n\n\tprivate getFeatureNameAndDesc(feature: AbstractFeature) {\n\t\treturn `${feature.nameReadable}${\n\t\t\tfeature.description ? ' (' + feature.description + ')' : ''\n\t\t}`\n\t}\n\n\tprivate sortFeatures(\n\t\tfeatureDependencies: FeatureDependency[]\n\t): FeatureDependency[] {\n\t\treturn [...featureDependencies].sort((a, b) => {\n\t\t\tconst aFeature = this.getFeature(a.code)\n\t\t\tconst bFeature = this.getFeature(b.code)\n\n\t\t\tconst aDependsOnB = aFeature.dependencies.find((d) => d.code === b.code)\n\t\t\tconst bDependsOnA = bFeature.dependencies.find((d) => d.code === a.code)\n\n\t\t\tif (\n\t\t\t\taDependsOnB ||\n\t\t\t\taFeature.installOrderWeight < bFeature.installOrderWeight\n\t\t\t) {\n\t\t\t\treturn 1\n\t\t\t} else if (\n\t\t\t\tbDependsOnA ||\n\t\t\t\taFeature.installOrderWeight > bFeature.installOrderWeight\n\t\t\t) {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn 0\n\t\t})\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic getOptionsForFeature(code: FeatureCode) {\n\t\treturn this.getFeature(code).optionsSchema\n\t}\n\n\tpublic getAllCodes(): FeatureCode[] {\n\t\tconst codes = Object.keys(this.featureMap) as FeatureCode[]\n\t\treturn this.sortFeatures(\n\t\t\tcodes.map((code) => ({ code, isRequired: true }))\n\t\t).map((dep) => dep.code)\n\t}\n\n\tpublic async getInstalledFeatures() {\n\t\tconst installed = await Promise.all(\n\t\t\tthis.getAllCodes().map(async (code) => {\n\t\t\t\tconst isInstalled = await this.isInstalled(code)\n\t\t\t\tif (isInstalled) {\n\t\t\t\t\treturn this.getFeature(code)\n\t\t\t\t}\n\n\t\t\t\treturn false\n\t\t\t})\n\t\t)\n\n\t\treturn installed.filter((f) => !!f) as FeatureMap[keyof FeatureMap][]\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"FeatureInstallerFactory.js","names":["FeatureInstallerFactory","options","cwd","serviceFactory","storeFactory","ui","emitter","actionExecuter","featureInstaller","FeatureInstaller","featureOptions","templates","apiClientFactory","features","forEach","Feature","feature","mapFeature","code","ErrorFeature","SchemaFeature","SkillFeature","TestFeature","VsCodeFeature","EventFeature","WatchFeature","NodeFeature","OnboardFeature","PersonFeature","OrganizationFeature","ConversationFeature","EventContractFeature","DeployFeature","SandboxFeature","StoreFeature","ViewFeature","CacheFeature","LogFeature","DependencyFeature"],"sources":["../../src/features/FeatureInstallerFactory.ts"],"sourcesContent":["import { templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory from '../services/ServiceFactory'\nimport StoreFactory from '../stores/StoreFactory'\nimport { ApiClientFactory } from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { FeatureOptions } from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport CacheFeature from './cache/CacheFeature'\nimport ConversationFeature from './conversation/ConversationFeature'\nimport DependencyFeature from './dependencies/DependencyFeature'\nimport DeployFeature from './deploy/DeployFeature'\nimport ErrorFeature from './error/ErrorFeature'\nimport EventFeature from './event/EventFeature'\nimport EventContractFeature from './eventContract/EventContractFeature'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\nimport LogFeature from './log/LogFeature'\nimport NodeFeature from './node/NodeFeature'\nimport OnboardFeature from './onboard/OnboardFeature'\nimport OrganizationFeature from './organization/OrganizationFeature'\nimport PersonFeature from './person/PersonFeature'\nimport SandboxFeature from './sandbox/SandboxFeature'\nimport SchemaFeature from './schema/SchemaFeature'\nimport SkillFeature from './skill/SkillFeature'\nimport StoreFeature from './store/StoreFeature'\nimport TestFeature from './test/TestFeature'\nimport ViewFeature from './view/ViewFeature'\nimport VsCodeFeature from './vscode/VsCodeFeature'\nimport WatchFeature from './watch/WatchFeature'\nexport default class FeatureInstallerFactory {\n\tprivate static readonly features: any[] = [\n\t\tErrorFeature,\n\t\tSchemaFeature,\n\t\tSkillFeature,\n\t\tTestFeature,\n\t\tVsCodeFeature,\n\t\tEventFeature,\n\t\tWatchFeature,\n\t\tNodeFeature,\n\t\tOnboardFeature,\n\t\tPersonFeature,\n\t\tOrganizationFeature,\n\t\tConversationFeature,\n\t\tEventContractFeature,\n\t\tDeployFeature,\n\t\tSandboxFeature,\n\t\tStoreFeature,\n\t\tViewFeature,\n\t\tCacheFeature,\n\t\tLogFeature,\n\t\tDependencyFeature,\n\t]\n\n\tpublic static readonly featureCodes: FeatureCode[] = [\n\t\t'error',\n\t\t'schema',\n\t\t'skill',\n\t\t'test',\n\t\t'vscode',\n\t\t'event',\n\t\t'watch',\n\t\t'node',\n\t\t'onboard',\n\t\t'person',\n\t\t'organization',\n\t\t'conversation',\n\t\t'eventContract',\n\t\t'deploy',\n\t\t'sandbox',\n\t\t'store',\n\t\t'view',\n\t\t'cache',\n\t\t'log',\n\t\t'dependency',\n\t]\n\n\tpublic static WithAllFeatures(options: {\n\t\tcwd: string\n\t\tserviceFactory: ServiceFactory\n\t\tstoreFactory: StoreFactory\n\t\tfeatureInstaller?: FeatureInstaller\n\t\tui: GraphicsInterface\n\t\temitter: GlobalEmitter\n\t\tapiClientFactory: ApiClientFactory\n\t\tactionExecuter: ActionExecuter\n\t}): FeatureInstaller {\n\t\tconst { cwd, serviceFactory, storeFactory, ui, emitter, actionExecuter } =\n\t\t\toptions\n\n\t\tconst featureInstaller =\n\t\t\toptions.featureInstaller ?? new FeatureInstaller(cwd, serviceFactory)\n\n\t\tconst featureOptions: FeatureOptions = {\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\ttemplates,\n\t\t\tstoreFactory,\n\t\t\tfeatureInstaller,\n\t\t\tui,\n\t\t\temitter,\n\t\t\tactionExecuter,\n\t\t\tapiClientFactory: options.apiClientFactory,\n\t\t}\n\n\t\tthis.features.forEach((Feature) => {\n\t\t\tconst feature = new Feature(featureOptions)\n\n\t\t\tfeatureInstaller.mapFeature(feature.code, feature)\n\t\t})\n\n\t\treturn featureInstaller\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAQA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;IACqBA,uB;;;;;;;WA+CpB,yBAA8BC,OAA9B,EASqB;MAAA;;MACpB,IAAQC,GAAR,GACCD,OADD,CAAQC,GAAR;MAAA,IAAaC,cAAb,GACCF,OADD,CAAaE,cAAb;MAAA,IAA6BC,YAA7B,GACCH,OADD,CAA6BG,YAA7B;MAAA,IAA2CC,EAA3C,GACCJ,OADD,CAA2CI,EAA3C;MAAA,IAA+CC,OAA/C,GACCL,OADD,CAA+CK,OAA/C;MAAA,IAAwDC,cAAxD,GACCN,OADD,CAAwDM,cAAxD;MAGA,IAAMC,gBAAgB,4BACrBP,OAAO,CAACO,gBADa,yEACO,IAAIC,4BAAJ,CAAqBP,GAArB,EAA0BC,cAA1B,CAD7B;MAGA,IAAMO,cAA8B,GAAG;QACtCR,GAAG,EAAHA,GADsC;QAEtCC,cAAc,EAAdA,cAFsC;QAGtCQ,SAAS,EAATA,0BAHsC;QAItCP,YAAY,EAAZA,YAJsC;QAKtCI,gBAAgB,EAAhBA,gBALsC;QAMtCH,EAAE,EAAFA,EANsC;QAOtCC,OAAO,EAAPA,OAPsC;QAQtCC,cAAc,EAAdA,cARsC;QAStCK,gBAAgB,EAAEX,OAAO,CAACW;MATY,CAAvC;MAYA,KAAKC,QAAL,CAAcC,OAAd,CAAsB,UAACC,OAAD,EAAa;QAClC,IAAMC,OAAO,GAAG,IAAID,OAAJ,CAAYL,cAAZ,CAAhB;QAEAF,gBAAgB,CAACS,UAAjB,CAA4BD,OAAO,CAACE,IAApC,EAA0CF,OAA1C;MACA,CAJD;MAMA,OAAOR,gBAAP;IACA;;;;;;iCAlFmBR,uB,cACsB,CACzCmB,wBADyC,EAEzCC,yBAFyC,EAGzCC,wBAHyC,EAIzCC,uBAJyC,EAKzCC,yBALyC,EAMzCC,wBANyC,EAOzCC,wBAPyC,EAQzCC,uBARyC,EASzCC,0BATyC,EAUzCC,yBAVyC,EAWzCC,+BAXyC,EAYzCC,+BAZyC,EAazCC,gCAbyC,EAczCC,yBAdyC,EAezCC,0BAfyC,EAgBzCC,wBAhByC,EAiBzCC,uBAjByC,EAkBzCC,wBAlByC,EAmBzCC,sBAnByC,EAoBzCC,6BApByC,C;iCADtBtC,uB,kBAwBiC,CACpD,OADoD,EAEpD,QAFoD,EAGpD,OAHoD,EAIpD,MAJoD,EAKpD,QALoD,EAMpD,OANoD,EAOpD,OAPoD,EAQpD,MARoD,EASpD,SAToD,EAUpD,QAVoD,EAWpD,cAXoD,EAYpD,cAZoD,EAapD,eAboD,EAcpD,QAdoD,EAepD,SAfoD,EAgBpD,OAhBoD,EAiBpD,MAjBoD,EAkBpD,OAlBoD,EAmBpD,KAnBoD,EAoBpD,YApBoD,C"}
|