@sprucelabs/spruce-cli 15.4.10 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- 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/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/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/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/GlobalEmitter.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 +3 -3
- 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.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 +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.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.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.js.map +1 -1
- 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.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/scripts/first.script.js.map +1 -1
- package/build/addons/filePrompt.addon.js.map +1 -1
- package/build/cli.js.map +1 -1
- package/build/components/FormComponent.js.map +1 -1
- package/build/components/QuizComponent.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/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/conversation/ConversationFeature.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/stores/EventStore.js.map +1 -1
- package/build/features/event/stores/ListenerStore.js.map +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/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/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/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/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.d.ts +2 -1
- package/build/features/schema/stores/SchemaStore.js +2 -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.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.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.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.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/writers/TestWriter.js.map +1 -1
- 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.map +1 -1
- package/build/features/vscode/VsCodeFeature.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 +0 -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/CommandService.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/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/AbstractEventTest.js.map +1 -1
- package/build/tests/AbstractSchemaTest.js.map +1 -1
- package/build/tests/AbstractTestTest.js.map +1 -1
- package/build/tests/CommandFaker.js.map +1 -1
- package/build/tests/JestJsonParser.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/fixtures/FeatureFixture.js.map +1 -1
- package/build/tests/fixtures/MercuryFixture.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/utilities/test.utility.js.map +1 -1
- package/build/tests/utilities/uiAssert.utility.js.map +1 -1
- package/build/utilities/action.utility.js.map +1 -1
- package/build/utilities/commander.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/tsConfig.utility.js.map +1 -1
- package/build/widgets/Theme.js.map +1 -1
- package/build/widgets/WidgetFactory.js.map +1 -1
- package/build/widgets/terminalKit/TKButtonWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkInputWidget.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/TkTextWidget.js.map +1 -1
- package/build/widgets/terminalKit/termKit.utility.js.map +1 -1
- package/build/widgets/types/input.types.js.map +1 -1
- package/build/widgets/types/menuBar.types.js.map +1 -1
- package/build/widgets/types/text.types.js.map +1 -1
- package/build/widgets/types/window.types.js.map +1 -1
- package/build/writers/AbstractWriter.js.map +1 -1
- package/package.json +35 -35
- package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +3 -2
- package/src/features/schema/stores/SchemaStore.ts +4 -2
- package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.d.ts +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js +0 -14
- package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js.map +0 -1
- package/src/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidCommand.builder.js","names":["invalidParamsDefinition","id","name","description","fields","args","type","label","isArray","isRequired"],"sources":["../../src/errors/invalidCommand.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst invalidParamsDefinition = buildErrorSchema({\n\tid: 'invalidCommand',\n\tname: 'Invalid command',\n\tdescription: 'The command is not valid, try --help',\n\tfields: {\n\t\targs: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'args',\n\t\t\tisArray: true,\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\nexport default invalidParamsDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,uBAAuB,GAAG,
|
|
1
|
+
{"version":3,"file":"invalidCommand.builder.js","names":["invalidParamsDefinition","buildErrorSchema","id","name","description","fields","args","type","label","isArray","isRequired"],"sources":["../../src/errors/invalidCommand.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst invalidParamsDefinition = buildErrorSchema({\n\tid: 'invalidCommand',\n\tname: 'Invalid command',\n\tdescription: 'The command is not valid, try --help',\n\tfields: {\n\t\targs: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'args',\n\t\t\tisArray: true,\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\nexport default invalidParamsDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,uBAAuB,GAAG,IAAAC,wBAAA,EAAiB;EAChDC,EAAE,EAAE,gBAD4C;EAEhDC,IAAI,EAAE,iBAF0C;EAGhDC,WAAW,EAAE,sCAHmC;EAIhDC,MAAM,EAAE;IACPC,IAAI,EAAE;MACLC,IAAI,EAAE,MADD;MAELC,KAAK,EAAE,MAFF;MAGLC,OAAO,EAAE,IAHJ;MAILC,UAAU,EAAE;IAJP;EADC;AAJwC,CAAjB,CAAhC;eAceV,uB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidEventContract.builder.js","names":["id","name","description","fields","fullyQualifiedEventName","type","isRequired","brokenProperty"],"sources":["../../src/errors/invalidEventContract.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidEventContract',\n\tname: 'invalid event contract',\n\tdescription: '',\n\tfields: {\n\t\tfullyQualifiedEventName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tbrokenProperty: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"invalidEventContract.builder.js","names":["buildErrorSchema","id","name","description","fields","fullyQualifiedEventName","type","isRequired","brokenProperty"],"sources":["../../src/errors/invalidEventContract.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidEventContract',\n\tname: 'invalid event contract',\n\tdescription: '',\n\tfields: {\n\t\tfullyQualifiedEventName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tbrokenProperty: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,uBAAuB,EAAE;MACxBC,IAAI,EAAE,MADkB;MAExBC,UAAU,EAAE;IAFY,CADlB;IAKPC,cAAc,EAAE;MACfF,IAAI,EAAE,MADS;MAEfC,UAAU,EAAE;IAFG;EALT;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidFeatureCode.builder.js","names":["id","name","description","fields","featureCode","type","isRequired"],"sources":["../../src/errors/invalidFeatureCode.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidFeatureCode',\n\tname: 'Invalid feature code',\n\tdescription: '',\n\tfields: {\n\t\tfeatureCode: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"invalidFeatureCode.builder.js","names":["buildErrorSchema","id","name","description","fields","featureCode","type","isRequired"],"sources":["../../src/errors/invalidFeatureCode.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidFeatureCode',\n\tname: 'Invalid feature code',\n\tdescription: '',\n\tfields: {\n\t\tfeatureCode: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,oBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,WAAW,EAAE;MACZC,IAAI,EAAE,MADM;MAEZC,UAAU,EAAE;IAFA;EADN;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidTestDirectory.builder.js","names":["id","name","description","fields","dir","type","isRequired"],"sources":["../../src/errors/invalidTestDirectory.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidTestDirectory',\n\tname: 'invalid test directory',\n\tdescription: '',\n\tfields: {\n\t\tdir: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"invalidTestDirectory.builder.js","names":["buildErrorSchema","id","name","description","fields","dir","type","isRequired"],"sources":["../../src/errors/invalidTestDirectory.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'invalidTestDirectory',\n\tname: 'invalid test directory',\n\tdescription: '',\n\tfields: {\n\t\tdir: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,GAAG,EAAE;MACJC,IAAI,EAAE,MADF;MAEJC,UAAU,EAAE;IAFR;EADE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lintFailed.builder.js","names":["lintFailedDefinition","id","name","description","fields","pattern","type","label","hint","isRequired"],"sources":["../../src/errors/lintFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst lintFailedDefinition = buildErrorSchema({\n\tid: 'lintFailed',\n\tname: 'Lint failed!',\n\tdescription: 'When linting a file fails',\n\tfields: {\n\t\tpattern: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Pattern',\n\t\t\thint: 'The pattern used to match files relative to the root of the skill',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\nexport default lintFailedDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,oBAAoB,GAAG,
|
|
1
|
+
{"version":3,"file":"lintFailed.builder.js","names":["lintFailedDefinition","buildErrorSchema","id","name","description","fields","pattern","type","label","hint","isRequired"],"sources":["../../src/errors/lintFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst lintFailedDefinition = buildErrorSchema({\n\tid: 'lintFailed',\n\tname: 'Lint failed!',\n\tdescription: 'When linting a file fails',\n\tfields: {\n\t\tpattern: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Pattern',\n\t\t\thint: 'The pattern used to match files relative to the root of the skill',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\nexport default lintFailedDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,oBAAoB,GAAG,IAAAC,wBAAA,EAAiB;EAC7CC,EAAE,EAAE,YADyC;EAE7CC,IAAI,EAAE,cAFuC;EAG7CC,WAAW,EAAE,2BAHgC;EAI7CC,MAAM,EAAE;IACPC,OAAO,EAAE;MACRC,IAAI,EAAE,MADE;MAERC,KAAK,EAAE,SAFC;MAGRC,IAAI,EAAE,mEAHE;MAIRC,UAAU,EAAE;IAJJ;EADF;AAJqC,CAAjB,CAA7B;eAceV,oB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mercuryResponseError.builder.js","names":["id","name","description","importsWhenLocal","fields","responseErrors","type","isRequired","isArray","options","valueType"],"sources":["../../src/errors/mercuryResponseError.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'mercuryResponseError',\n\tname: 'Mercury response error',\n\tdescription: '',\n\timportsWhenLocal: [`import AbstractSpruceError from '@sprucelabs/error'`],\n\tfields: {\n\t\tresponseErrors: {\n\t\t\ttype: 'raw',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tvalueType: 'AbstractSpruceError<any>',\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"mercuryResponseError.builder.js","names":["buildErrorSchema","id","name","description","importsWhenLocal","fields","responseErrors","type","isRequired","isArray","options","valueType"],"sources":["../../src/errors/mercuryResponseError.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'mercuryResponseError',\n\tname: 'Mercury response error',\n\tdescription: '',\n\timportsWhenLocal: [`import AbstractSpruceError from '@sprucelabs/error'`],\n\tfields: {\n\t\tresponseErrors: {\n\t\t\ttype: 'raw',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tvalueType: 'AbstractSpruceError<any>',\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,gBAAgB,EAAE,uDAJa;EAK/BC,MAAM,EAAE;IACPC,cAAc,EAAE;MACfC,IAAI,EAAE,KADS;MAEfC,UAAU,EAAE,IAFG;MAGfC,OAAO,EAAE,IAHM;MAIfC,OAAO,EAAE;QACRC,SAAS,EAAE;MADH;IAJM;EADT;AALuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missingDependencies.builder.js","names":["id","name","description","fields","dependencies","type","isRequired","isArray","options","schema","hint"],"sources":["../../src/errors/missingDependencies.builder.ts"],"sourcesContent":["import { buildErrorSchema, buildSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'missingDependencies',\n\tname: 'Missing dependencies',\n\tdescription: '',\n\tfields: {\n\t\tdependencies: {\n\t\t\ttype: 'schema',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tschema: buildSchema({\n\t\t\t\t\tid: 'missingDependenciesDependency',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\thint: {\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"missingDependencies.builder.js","names":["buildErrorSchema","id","name","description","fields","dependencies","type","isRequired","isArray","options","schema","buildSchema","hint"],"sources":["../../src/errors/missingDependencies.builder.ts"],"sourcesContent":["import { buildErrorSchema, buildSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'missingDependencies',\n\tname: 'Missing dependencies',\n\tdescription: '',\n\tfields: {\n\t\tdependencies: {\n\t\t\ttype: 'schema',\n\t\t\tisRequired: true,\n\t\t\tisArray: true,\n\t\t\toptions: {\n\t\t\t\tschema: buildSchema({\n\t\t\t\t\tid: 'missingDependenciesDependency',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\thint: {\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,qBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,YAAY,EAAE;MACbC,IAAI,EAAE,QADO;MAEbC,UAAU,EAAE,IAFC;MAGbC,OAAO,EAAE,IAHI;MAIbC,OAAO,EAAE;QACRC,MAAM,EAAE,IAAAC,mBAAA,EAAY;UACnBV,EAAE,EAAE,+BADe;UAEnBG,MAAM,EAAE;YACPF,IAAI,EAAE;cACLI,IAAI,EAAE,MADD;cAELC,UAAU,EAAE;YAFP,CADC;YAKPK,IAAI,EAAE;cACLN,IAAI,EAAE,MADD;cAELC,UAAU,EAAE;YAFP;UALC;QAFW,CAAZ;MADA;IAJI;EADP;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noOrganizationsFound.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/noOrganizationsFound.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'noOrganizationsFound',\n\tname: 'no organizations found',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"noOrganizationsFound.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/noOrganizationsFound.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'noOrganizationsFound',\n\tname: 'no organizations found',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,wBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noSkillsRegistered.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/noSkillsRegistered.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'noSkillsRegistered',\n\tname: 'No skills registered',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"noSkillsRegistered.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/noSkillsRegistered.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'noSkillsRegistered',\n\tname: 'No skills registered',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,oBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notImplemented.builder.js","names":["notImplementedDefinition","id","name","description","fields"],"sources":["../../src/errors/notImplemented.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst notImplementedDefinition = buildErrorSchema({\n\tid: 'notImplemented',\n\tname: 'Not implemented',\n\tdescription: 'This feature has not been implemented',\n\tfields: {},\n})\n\nexport default notImplementedDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,wBAAwB,GAAG,
|
|
1
|
+
{"version":3,"file":"notImplemented.builder.js","names":["notImplementedDefinition","buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/notImplemented.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nconst notImplementedDefinition = buildErrorSchema({\n\tid: 'notImplemented',\n\tname: 'Not implemented',\n\tdescription: 'This feature has not been implemented',\n\tfields: {},\n})\n\nexport default notImplementedDefinition\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,wBAAwB,GAAG,IAAAC,wBAAA,EAAiB;EACjDC,EAAE,EAAE,gBAD6C;EAEjDC,IAAI,EAAE,iBAF2C;EAGjDC,WAAW,EAAE,uCAHoC;EAIjDC,MAAM,EAAE;AAJyC,CAAjB,CAAjC;eAOeL,wB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notLoggedIn.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/notLoggedIn.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'notLoggedIn',\n\tname: 'Not logged in',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"notLoggedIn.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/notLoggedIn.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'notLoggedIn',\n\tname: 'Not logged in',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,aAD2B;EAE/BC,IAAI,EAAE,eAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaExists.builder.js","names":["id","name","description","fields","schemaId","type","label","isRequired","destination"],"sources":["../../src/errors/schemaExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaExists',\n\tname: 'Schema exists',\n\tdescription: '',\n\tfields: {\n\t\tschemaId: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Schema id',\n\t\t\tisRequired: true,\n\t\t},\n\t\tdestination: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Destination',\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"schemaExists.builder.js","names":["buildErrorSchema","id","name","description","fields","schemaId","type","label","isRequired","destination"],"sources":["../../src/errors/schemaExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaExists',\n\tname: 'Schema exists',\n\tdescription: '',\n\tfields: {\n\t\tschemaId: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Schema id',\n\t\t\tisRequired: true,\n\t\t},\n\t\tdestination: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Destination',\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,cAD2B;EAE/BC,IAAI,EAAE,eAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,QAAQ,EAAE;MACTC,IAAI,EAAE,MADG;MAETC,KAAK,EAAE,WAFE;MAGTC,UAAU,EAAE;IAHH,CADH;IAMPC,WAAW,EAAE;MACZH,IAAI,EAAE,MADM;MAEZC,KAAK,EAAE;IAFK;EANN;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaFailedToImport.builder.js","names":["id","name","description","fields","file","type","label","isRequired","hint"],"sources":["../../src/errors/schemaFailedToImport.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaFailedToImport',\n\tname: 'Definition failed to import',\n\tdescription: 'The definition file failed to import',\n\tfields: {\n\t\tfile: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'File',\n\t\t\tisRequired: true,\n\t\t\thint: 'The file definition file I tried to import',\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"schemaFailedToImport.builder.js","names":["buildErrorSchema","id","name","description","fields","file","type","label","isRequired","hint"],"sources":["../../src/errors/schemaFailedToImport.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaFailedToImport',\n\tname: 'Definition failed to import',\n\tdescription: 'The definition file failed to import',\n\tfields: {\n\t\tfile: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'File',\n\t\t\tisRequired: true,\n\t\t\thint: 'The file definition file I tried to import',\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,sBAD2B;EAE/BC,IAAI,EAAE,6BAFyB;EAG/BC,WAAW,EAAE,sCAHkB;EAI/BC,MAAM,EAAE;IACPC,IAAI,EAAE;MACLC,IAAI,EAAE,MADD;MAELC,KAAK,EAAE,MAFF;MAGLC,UAAU,EAAE,IAHP;MAILC,IAAI,EAAE;IAJD;EADC;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaTemplateItemBuildingFailed.builder.js","names":["id","name","description","fields","schemaId","type","isRequired","schemaNamespace","fieldName","fieldOptions","options","valueType"],"sources":["../../src/errors/schemaTemplateItemBuildingFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaTemplateItemBuildingFailed',\n\tname: 'Schema template item building failed',\n\tdescription: '',\n\tfields: {\n\t\tschemaId: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tschemaNamespace: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tfieldName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tfieldOptions: {\n\t\t\ttype: 'raw',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tvalueType: 'Record<string, any>',\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"schemaTemplateItemBuildingFailed.builder.js","names":["buildErrorSchema","id","name","description","fields","schemaId","type","isRequired","schemaNamespace","fieldName","fieldOptions","options","valueType"],"sources":["../../src/errors/schemaTemplateItemBuildingFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'schemaTemplateItemBuildingFailed',\n\tname: 'Schema template item building failed',\n\tdescription: '',\n\tfields: {\n\t\tschemaId: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tschemaNamespace: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tfieldName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\tfieldOptions: {\n\t\t\ttype: 'raw',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tvalueType: 'Record<string, any>',\n\t\t\t},\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,kCAD2B;EAE/BC,IAAI,EAAE,sCAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,QAAQ,EAAE;MACTC,IAAI,EAAE,MADG;MAETC,UAAU,EAAE;IAFH,CADH;IAKPC,eAAe,EAAE;MAChBF,IAAI,EAAE,MADU;MAEhBC,UAAU,EAAE;IAFI,CALV;IASPE,SAAS,EAAE;MACVH,IAAI,EAAE,MADI;MAEVC,UAAU,EAAE;IAFF,CATJ;IAaPG,YAAY,EAAE;MACbJ,IAAI,EAAE,KADO;MAEbC,UAAU,EAAE,IAFC;MAGbI,OAAO,EAAE;QACRC,SAAS,EAAE;MADH;IAHI;EAbP;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillNotFound.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/skillNotFound.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillNotFound',\n\tname: 'skill not found',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"skillNotFound.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/skillNotFound.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillNotFound',\n\tname: 'skill not found',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,eAD2B;EAE/BC,IAAI,EAAE,iBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillNotRegistered.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/skillNotRegistered.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillNotRegistered',\n\tname: 'Skill not registered',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"skillNotRegistered.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/skillNotRegistered.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillNotRegistered',\n\tname: 'Skill not registered',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,oBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillViewExists.builder.js","names":["id","name","description","fields","type","isRequired"],"sources":["../../src/errors/skillViewExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillViewExists',\n\tname: 'Skill view exists',\n\tdescription: '',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"skillViewExists.builder.js","names":["buildErrorSchema","id","name","description","fields","type","isRequired"],"sources":["../../src/errors/skillViewExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'skillViewExists',\n\tname: 'Skill view exists',\n\tdescription: '',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,iBAD2B;EAE/BC,IAAI,EAAE,mBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPF,IAAI,EAAE;MACLG,IAAI,EAAE,MADD;MAELC,UAAU,EAAE;IAFP;EADC;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storeExists.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/storeExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'storeExists',\n\tname: 'Store exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"storeExists.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/storeExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'storeExists',\n\tname: 'Store exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,aAD2B;EAE/BC,IAAI,EAAE,cAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testFailed.builder.js","names":["id","name","description","fields","fileName","type","isRequired","testName","errorMessage"],"sources":["../../src/errors/testFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'testFailed',\n\tname: 'Test failed',\n\tdescription: '',\n\tfields: {\n\t\tfileName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\ttestName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\terrorMessage: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"testFailed.builder.js","names":["buildErrorSchema","id","name","description","fields","fileName","type","isRequired","testName","errorMessage"],"sources":["../../src/errors/testFailed.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'testFailed',\n\tname: 'Test failed',\n\tdescription: '',\n\tfields: {\n\t\tfileName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\ttestName: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t\terrorMessage: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,YAD2B;EAE/BC,IAAI,EAAE,aAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;IACPC,QAAQ,EAAE;MACTC,IAAI,EAAE,MADG;MAETC,UAAU,EAAE;IAFH,CADH;IAKPC,QAAQ,EAAE;MACTF,IAAI,EAAE,MADG;MAETC,UAAU,EAAE;IAFH,CALH;IASPE,YAAY,EAAE;MACbH,IAAI,EAAE,MADO;MAEbC,UAAU,EAAE;IAFC;EATP;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeExists.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/themeExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'themeExists',\n\tname: 'Theme exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"themeExists.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/themeExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'themeExists',\n\tname: 'Theme exists',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,aAD2B;EAE/BC,IAAI,EAAE,cAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transportAlreadyExists.builder.js","names":["id","name","fields","type","label","isRequired"],"sources":["../../src/errors/transportAlreadyExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'transportAlreadyExists',\n\tname: 'transport already exists',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Transport name',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"transportAlreadyExists.builder.js","names":["buildErrorSchema","id","name","fields","type","label","isRequired"],"sources":["../../src/errors/transportAlreadyExists.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'transportAlreadyExists',\n\tname: 'transport already exists',\n\tfields: {\n\t\tname: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Transport name',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,wBAD2B;EAE/BC,IAAI,EAAE,0BAFyB;EAG/BC,MAAM,EAAE;IACPD,IAAI,EAAE;MACLE,IAAI,EAAE,MADD;MAELC,KAAK,EAAE,gBAFF;MAGLC,UAAU,EAAE;IAHP;EADC;AAHuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscodeNotInstalled.builder.js","names":["id","name","description","fields"],"sources":["../../src/errors/vscodeNotInstalled.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'vscodeNotInstalled',\n\tname: 'vscode not installed',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,
|
|
1
|
+
{"version":3,"file":"vscodeNotInstalled.builder.js","names":["buildErrorSchema","id","name","description","fields"],"sources":["../../src/errors/vscodeNotInstalled.builder.ts"],"sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'vscodeNotInstalled',\n\tname: 'vscode not installed',\n\tdescription: '',\n\tfields: {},\n})\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,wBAAA,EAAiB;EAC/BC,EAAE,EAAE,oBAD2B;EAE/BC,IAAI,EAAE,sBAFyB;EAG/BC,WAAW,EAAE,EAHkB;EAI/BC,MAAM,EAAE;AAJuB,CAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected featureInstaller: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.featureInstaller.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizer.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AA8BA;;;;;;IAE8BA,c;EAoB7B,wBAAmBC,OAAnB,EAA2C;IAAA;IAAA;IAAA,yDAhBA,EAgBA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAC1C,KAAKC,GAAL,GAAWD,OAAO,CAACC,GAAnB;IACA,KAAKC,SAAL,GAAiBF,OAAO,CAACE,SAAzB;IACA,KAAKC,MAAL,GAAcH,OAAO,CAACG,MAAtB;IACA,KAAKC,YAAL,GAAoBJ,OAAO,CAACI,YAA5B;IACA,KAAKC,cAAL,GAAsBL,OAAO,CAACK,cAA9B;IACA,KAAKC,gBAAL,GAAwBN,OAAO,CAACM,gBAAhC;IACA,KAAKC,EAAL,GAAUP,OAAO,CAACO,EAAlB;IACA,KAAKC,aAAL,GAAqBR,OAAO,CAACQ,aAA7B;IACA,KAAKC,gBAAL,GAAwBT,OAAO,CAACS,gBAAhC;IACA,KAAKC,OAAL,GAAeV,OAAO,CAACU,OAAvB;IACA,KAAKC,cAAL,GAAsBX,OAAO,CAACW,cAA9B;EACA;;;;WAMD,gBAAiBC,WAAjB,EAAsCC,UAAtC,EAA0D;MACzD,OAAO,KAAKF,cAAL,CAAoBG,MAApB,CAA2BF,WAA3B,EAA+CC,UAA/C,CAAP;IACA;;;;;;;;;;;;;MAED,UAAkCE,IAAlC,EAA2Cd,GAA3C,EAAwE;MACvE,OAAO,KAAKI,cAAL,CAAoBW,OAApB,CAA4Bf,GAA5B,aAA4BA,GAA5B,cAA4BA,GAA5B,GAAmC,KAAKA,GAAxC,EAA6Cc,IAA7C,CAAP;IACA,C;;;WAED,eACCE,IADD,EAECjB,OAFD,EAGe;MACd,OAAO,KAAKI,YAAL,CAAkBc,KAAlB,CAAwBD,IAAxB;QAAgChB,GAAG,EAAE,KAAKA;MAA1C,GAAkDD,OAAlD,EAAP;IACA;;;WAED,gBACCiB,IADD,EAECjB,OAFD,EAGgB;MACf,OAAO,KAAKQ,aAAL,CAAmBW,MAAnB,CAA0BF,IAA1B;QACNG,gBAAgB,EAAE,KAAKjB,MAAL,CAAYiB,gBADxB;QAENC,MAAM,EAAE,KAAKL,OAAL,CAAa,MAAb;MAFF,GAGHhB,OAHG,EAAP;IAKA;;;WAED,oBAA4CiB,IAA5C,EAAqD;MACpD,OAAO,KAAKX,gBAAL,CAAsBgB,UAAtB,CAAiCL,IAAjC,CAAP;IACA;;;WAED,2BAA2C;MAC1C,OAAO,KAAKX,gBAAL,CAAsBiB,WAAtB,EAAP;IACA;;;WAED,qCAAsCvB,OAAtC,EAAuE;MACtE,IAAMwB,MAAM,GAAG,KAAKC,aAApB;MACA,OAAOC,
|
|
1
|
+
{"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected featureInstaller: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.featureInstaller.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizer.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractFeature.js","names":["AbstractFeature","options","cwd","serviceFactory","templates","actionFactory","storeFactory","writerFactory","WriterFactory","ui","settings","Service","linter","emitter","featureInstaller","apiClientFactory","actionExecuter","featureCode","actionCode","Action","_options","type","code","Writer","fileDescriptions","getFeature","actionsDir","actionCodes","pathUtil","join","matches","codes","match","generatedCode","featuresUtil","filePathToActionCode","push","Store"],"sources":["../../src/features/AbstractFeature.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport globby from 'globby'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { NpmPackage, GeneratedFile, FileDescription } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport ActionExecuter from './ActionExecuter'\nimport ActionFactory from './ActionFactory'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\n\nexport interface InstallResults {\n\tfiles?: GeneratedFile[]\n\tcwd?: string\n}\n\nexport interface FeatureDependency {\n\tisRequired: boolean\n\tcode: FeatureCode\n}\n\nexport interface FeatureOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\ttemplates: Templates\n\tstoreFactory: StoreFactory\n\tactionFactory?: ActionFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tapiClientFactory: ApiClientFactory\n\tactionExecuter: ActionExecuter\n}\n\nexport default abstract class AbstractFeature<\n\tS extends Schema | undefined = Schema | undefined\n> implements ServiceProvider\n{\n\tpublic abstract description: string\n\tpublic readonly dependencies: FeatureDependency[] = []\n\tpublic readonly packageDependencies: NpmPackage[] = []\n\tpublic readonly optionsSchema?: S\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled?(): Promise<boolean>\n\n\tpublic abstract readonly code: FeatureCode\n\tpublic abstract readonly nameReadable: string\n\tpublic readonly installOrderWeight: number = 0\n\n\tpublic cwd: string\n\tpublic scripts: Record<string, any> = {}\n\tpublic actionsDir: string | undefined\n\tprotected actionFactory?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected featureInstaller: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\tprivate actionCodes?: string[]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.templates = options.templates\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writerFactory = new WriterFactory({\n\t\t\ttemplates: this.templates,\n\t\t\tui: options.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t\tlinter: this.Service('lint'),\n\t\t})\n\t\tthis.emitter = options.emitter\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic async beforePackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tpublic getFeature<Code extends FeatureCode>(code: Code) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async getAvailableActionCodes(): Promise<string[]> {\n\t\tif (!this.actionsDir) {\n\t\t\treturn []\n\t\t}\n\n\t\tif (!this.actionCodes) {\n\t\t\tconst matches: string[] = await globby(\n\t\t\t\tpathUtil.join(this.actionsDir, '**/*Action.js')\n\t\t\t)\n\n\t\t\tconst codes: string[] = []\n\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst generatedCode = featuresUtil.filePathToActionCode(match)\n\t\t\t\tcodes.push(generatedCode)\n\t\t\t}\n\n\t\t\tthis.actionCodes = codes\n\t\t}\n\n\t\treturn this.actionCodes\n\t}\n\n\tpublic Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAGA;;AAoBA;;AAGA;;;;;;;;;;;;IA2B8BA,e;EAgC7B,yBAAmBC,OAAnB,EAA4C;IAAA;IAAA;IAAA,uDA3BQ,EA2BR;IAAA,8DA1BQ,EA0BR;IAAA;IAAA,2DAxBU,EAwBV;IAAA;IAAA;IAAA,6DAlBC,CAkBD;IAAA;IAAA,kDAfN,EAeM;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAC3C,KAAKC,GAAL,GAAWD,OAAO,CAACC,GAAnB;IACA,KAAKC,cAAL,GAAsBF,OAAO,CAACE,cAA9B;IACA,KAAKC,SAAL,GAAiBH,OAAO,CAACG,SAAzB;IACA,KAAKC,aAAL,GAAqBJ,OAAO,CAACI,aAA7B;IACA,KAAKC,YAAL,GAAoBL,OAAO,CAACK,YAA5B;IACA,KAAKC,aAAL,GAAqB,IAAIC,yBAAJ,CAAkB;MACtCJ,SAAS,EAAE,KAAKA,SADsB;MAEtCK,EAAE,EAAER,OAAO,CAACQ,EAF0B;MAGtCC,QAAQ,EAAE,KAAKC,OAAL,CAAa,UAAb,CAH4B;MAItCC,MAAM,EAAE,KAAKD,OAAL,CAAa,MAAb;IAJ8B,CAAlB,CAArB;IAMA,KAAKE,OAAL,GAAeZ,OAAO,CAACY,OAAvB;IACA,KAAKC,gBAAL,GAAwBb,OAAO,CAACa,gBAAhC;IACA,KAAKL,EAAL,GAAUR,OAAO,CAACQ,EAAlB;IACA,KAAKM,gBAAL,GAAwBd,OAAO,CAACc,gBAAhC;IACA,KAAKC,cAAL,GAAsBf,OAAO,CAACe,cAA9B;EACA;;;;WAED,gBAAiBC,WAAjB,EAAsCC,UAAtC,EAA0D;MACzD,OAAO,KAAKF,cAAL,CAAoBG,MAApB,CAA2BF,WAA3B,EAA+CC,UAA/C,CAAP;IACA;;;;gHAED,iBACCE,QADD;QAAA;UAAA;YAAA;cAAA;gBAAA,iCAGQ,EAHR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GAMA,kBACCA,QADD;QAAA;UAAA;YAAA;cAAA;gBAAA,kCAGQ,EAHR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;;;;;;;;;;MAMA,UAAkCC,IAAlC,EAA2CnB,GAA3C,EAAwE;MACvE,OAAO,KAAKC,cAAL,CAAoBQ,OAApB,CAA4BT,GAA5B,aAA4BA,GAA5B,cAA4BA,GAA5B,GAAmC,KAAKA,GAAxC,EAA6CmB,IAA7C,CAAP;IACA,C;;;WAED,gBACCC,IADD,EAECrB,OAFD,EAGgB;MACf,OAAO,KAAKM,aAAL,CAAmBgB,MAAnB,CAA0BD,IAA1B;QACNE,gBAAgB,EAAE,KAAKA,gBADjB;QAENZ,MAAM,EAAE,KAAKD,OAAL,CAAa,MAAb;MAFF,GAGHV,OAHG,EAAP;IAKA;;;WAED,oBAA4CqB,IAA5C,EAAwD;MACvD,OAAO,KAAKR,gBAAL,CAAsBW,UAAtB,CAAiCH,IAAjC,CAAP;IACA;;;;mHAED;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA,IACM,KAAKI,UADX;kBAAA;kBAAA;gBAAA;;gBAAA,kCAES,EAFT;;cAAA;gBAAA,IAKM,KAAKC,WALX;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAMkC,
|
|
1
|
+
{"version":3,"file":"AbstractFeature.js","names":["AbstractFeature","options","cwd","serviceFactory","templates","actionFactory","storeFactory","writerFactory","WriterFactory","ui","settings","Service","linter","emitter","featureInstaller","apiClientFactory","actionExecuter","featureCode","actionCode","Action","_options","type","code","Writer","fileDescriptions","getFeature","actionsDir","actionCodes","globby","pathUtil","join","matches","codes","match","generatedCode","featuresUtil","filePathToActionCode","push","Store"],"sources":["../../src/features/AbstractFeature.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport globby from 'globby'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { NpmPackage, GeneratedFile, FileDescription } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport ActionExecuter from './ActionExecuter'\nimport ActionFactory from './ActionFactory'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\n\nexport interface InstallResults {\n\tfiles?: GeneratedFile[]\n\tcwd?: string\n}\n\nexport interface FeatureDependency {\n\tisRequired: boolean\n\tcode: FeatureCode\n}\n\nexport interface FeatureOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\ttemplates: Templates\n\tstoreFactory: StoreFactory\n\tactionFactory?: ActionFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tapiClientFactory: ApiClientFactory\n\tactionExecuter: ActionExecuter\n}\n\nexport default abstract class AbstractFeature<\n\tS extends Schema | undefined = Schema | undefined\n> implements ServiceProvider\n{\n\tpublic abstract description: string\n\tpublic readonly dependencies: FeatureDependency[] = []\n\tpublic readonly packageDependencies: NpmPackage[] = []\n\tpublic readonly optionsSchema?: S\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled?(): Promise<boolean>\n\n\tpublic abstract readonly code: FeatureCode\n\tpublic abstract readonly nameReadable: string\n\tpublic readonly installOrderWeight: number = 0\n\n\tpublic cwd: string\n\tpublic scripts: Record<string, any> = {}\n\tpublic actionsDir: string | undefined\n\tprotected actionFactory?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected featureInstaller: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\tprivate actionCodes?: string[]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.templates = options.templates\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writerFactory = new WriterFactory({\n\t\t\ttemplates: this.templates,\n\t\t\tui: options.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t\tlinter: this.Service('lint'),\n\t\t})\n\t\tthis.emitter = options.emitter\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic async beforePackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tpublic getFeature<Code extends FeatureCode>(code: Code) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async getAvailableActionCodes(): Promise<string[]> {\n\t\tif (!this.actionsDir) {\n\t\t\treturn []\n\t\t}\n\n\t\tif (!this.actionCodes) {\n\t\t\tconst matches: string[] = await globby(\n\t\t\t\tpathUtil.join(this.actionsDir, '**/*Action.js')\n\t\t\t)\n\n\t\t\tconst codes: string[] = []\n\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst generatedCode = featuresUtil.filePathToActionCode(match)\n\t\t\t\tcodes.push(generatedCode)\n\t\t\t}\n\n\t\t\tthis.actionCodes = codes\n\t\t}\n\n\t\treturn this.actionCodes\n\t}\n\n\tpublic Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAGA;;AAoBA;;AAGA;;;;;;;;;;;;IA2B8BA,e;EAgC7B,yBAAmBC,OAAnB,EAA4C;IAAA;IAAA;IAAA,uDA3BQ,EA2BR;IAAA,8DA1BQ,EA0BR;IAAA;IAAA,2DAxBU,EAwBV;IAAA;IAAA;IAAA,6DAlBC,CAkBD;IAAA;IAAA,kDAfN,EAeM;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAC3C,KAAKC,GAAL,GAAWD,OAAO,CAACC,GAAnB;IACA,KAAKC,cAAL,GAAsBF,OAAO,CAACE,cAA9B;IACA,KAAKC,SAAL,GAAiBH,OAAO,CAACG,SAAzB;IACA,KAAKC,aAAL,GAAqBJ,OAAO,CAACI,aAA7B;IACA,KAAKC,YAAL,GAAoBL,OAAO,CAACK,YAA5B;IACA,KAAKC,aAAL,GAAqB,IAAIC,yBAAJ,CAAkB;MACtCJ,SAAS,EAAE,KAAKA,SADsB;MAEtCK,EAAE,EAAER,OAAO,CAACQ,EAF0B;MAGtCC,QAAQ,EAAE,KAAKC,OAAL,CAAa,UAAb,CAH4B;MAItCC,MAAM,EAAE,KAAKD,OAAL,CAAa,MAAb;IAJ8B,CAAlB,CAArB;IAMA,KAAKE,OAAL,GAAeZ,OAAO,CAACY,OAAvB;IACA,KAAKC,gBAAL,GAAwBb,OAAO,CAACa,gBAAhC;IACA,KAAKL,EAAL,GAAUR,OAAO,CAACQ,EAAlB;IACA,KAAKM,gBAAL,GAAwBd,OAAO,CAACc,gBAAhC;IACA,KAAKC,cAAL,GAAsBf,OAAO,CAACe,cAA9B;EACA;;;;WAED,gBAAiBC,WAAjB,EAAsCC,UAAtC,EAA0D;MACzD,OAAO,KAAKF,cAAL,CAAoBG,MAApB,CAA2BF,WAA3B,EAA+CC,UAA/C,CAAP;IACA;;;;gHAED,iBACCE,QADD;QAAA;UAAA;YAAA;cAAA;gBAAA,iCAGQ,EAHR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GAMA,kBACCA,QADD;QAAA;UAAA;YAAA;cAAA;gBAAA,kCAGQ,EAHR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;;;;;;;;;;MAMA,UAAkCC,IAAlC,EAA2CnB,GAA3C,EAAwE;MACvE,OAAO,KAAKC,cAAL,CAAoBQ,OAApB,CAA4BT,GAA5B,aAA4BA,GAA5B,cAA4BA,GAA5B,GAAmC,KAAKA,GAAxC,EAA6CmB,IAA7C,CAAP;IACA,C;;;WAED,gBACCC,IADD,EAECrB,OAFD,EAGgB;MACf,OAAO,KAAKM,aAAL,CAAmBgB,MAAnB,CAA0BD,IAA1B;QACNE,gBAAgB,EAAE,KAAKA,gBADjB;QAENZ,MAAM,EAAE,KAAKD,OAAL,CAAa,MAAb;MAFF,GAGHV,OAHG,EAAP;IAKA;;;WAED,oBAA4CqB,IAA5C,EAAwD;MACvD,OAAO,KAAKR,gBAAL,CAAsBW,UAAtB,CAAiCH,IAAjC,CAAP;IACA;;;;mHAED;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA,IACM,KAAKI,UADX;kBAAA;kBAAA;gBAAA;;gBAAA,kCAES,EAFT;;cAAA;gBAAA,IAKM,KAAKC,WALX;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAMkC,IAAAC,kBAAA,EAC/BC,gBAAA,CAASC,IAAT,CAAc,KAAKJ,UAAnB,EAA+B,eAA/B,CAD+B,CANlC;;cAAA;gBAMQK,OANR;gBAUQC,KAVR,GAU0B,EAV1B;gBAAA,uCAYsBD,OAZtB;;gBAAA;kBAYE,oDAA6B;oBAAlBE,KAAkB;oBACtBC,aADsB,GACNC,mBAAA,CAAaC,oBAAb,CAAkCH,KAAlC,CADM;oBAE5BD,KAAK,CAACK,IAAN,CAAWH,aAAX;kBACA;gBAfH;kBAAA;gBAAA;kBAAA;gBAAA;;gBAiBE,KAAKP,WAAL,GAAmBK,KAAnB;;cAjBF;gBAAA,kCAoBQ,KAAKL,WApBb;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAuBA,eACCL,IADD,EAECrB,OAFD,EAGe;MACd,OAAO,KAAKK,YAAL,CAAkBgC,KAAlB,CAAwBhB,IAAxB;QAAgCpB,GAAG,EAAE,KAAKA;MAA1C,GAAkDD,OAAlD,EAAP;IACA;;;;wGAED,kBACCA,OADD;QAAA;UAAA;YAAA;cAAA;gBAAA,kCAGQ,KAAKc,gBAAL,CAAsBd,OAAtB,CAHR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionExecuter.js","names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"sources":["../../src/features/ActionExecuter.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actionFactory: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst actionFactory = this.actionFactory\n\t\tconst action = actionFactory.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionExecuter.js","names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","merge","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"sources":["../../src/features/ActionExecuter.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actionFactory: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst actionFactory = this.actionFactory\n\t\tconst action = actionFactory.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionFactory.js","names":["ActionFactory","options","blockedCommands","optionOverrides","actionOptions","featureCode","actionCode","actionExecuter","featureInstaller","feature","getFeature","actionsDir","Error","classPath","diskUtil","resolvePath","namesUtil","toPascal","Class","originalError","require","err","SpruceError","code","friendlyMessage","action","parent","execute","actionDecorator","OverrideActionDecorator","ui"],"sources":["../../src/features/ActionFactory.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../errors/SpruceError'\nimport {\n\tFeatureAction,\n\tActionOptions,\n\tFeatureCode,\n} from '../features/features.types'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { BlockedCommands, OptionOverrides } from '../types/cli.types'\nimport AbstractAction from './AbstractAction'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport OverrideActionDecorator from './OverrideActionDecorator'\n\nexport interface FeatureActionFactoryOptions\n\textends Omit<\n\t\tActionOptions,\n\t\t'parent' | 'actionExecuter' | 'featureInstaller'\n\t> {\n\temitter: GlobalEmitter\n\tblockedCommands?: BlockedCommands\n\toptionOverrides?: OptionOverrides\n}\n\nexport default class ActionFactory {\n\tprivate actionOptions: FeatureActionFactoryOptions\n\tprivate blockedCommands?: BlockedCommands\n\tprivate optionOverrides?: OptionOverrides\n\n\tpublic constructor(options: FeatureActionFactoryOptions) {\n\t\tconst { blockedCommands, optionOverrides, ...actionOptions } = options\n\t\tthis.actionOptions = actionOptions\n\t\tthis.blockedCommands = blockedCommands\n\t\tthis.optionOverrides = optionOverrides\n\t}\n\n\tpublic Action<F extends FeatureCode, S extends Schema = Schema>(options: {\n\t\tfeatureCode: F\n\t\tactionCode: string\n\t\tactionExecuter: ActionExecuter\n\t\tfeatureInstaller: FeatureInstaller\n\t}): FeatureAction<S> {\n\t\tconst { featureCode, actionCode, actionExecuter, featureInstaller } =\n\t\t\toptions\n\n\t\tconst feature = featureInstaller.getFeature(featureCode)\n\n\t\tif (!feature.actionsDir) {\n\t\t\tthrow new Error(\n\t\t\t\t`Your ${featureCode} features needs \\`public actionsDir = diskUtil.resolvePath(__dirname, 'actions')\\``\n\t\t\t)\n\t\t}\n\n\t\tconst classPath = diskUtil.resolvePath(\n\t\t\tfeature.actionsDir,\n\t\t\t`${namesUtil.toPascal(actionCode)}Action`\n\t\t)\n\n\t\tlet Class: new (options: ActionOptions) => AbstractAction | undefined\n\t\tlet originalError: Error | undefined\n\n\t\ttry {\n\t\t\tClass = require(classPath).default\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch (err: any) {\n\t\t\toriginalError = err\n\t\t}\n\n\t\t//@ts-ignore\n\t\tif (!Class) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not find any action named '${actionCode}' for the ${feature.code} feature. Make sure it's the default export and extends AbstractAction.`,\n\t\t\t\toriginalError,\n\t\t\t})\n\t\t}\n\n\t\tconst action = new Class({\n\t\t\t...this.actionOptions,\n\t\t\tactionExecuter,\n\t\t\tparent: feature,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tif (!action) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not instantiate ${actionCode} action on ${feature.code} feature.`,\n\t\t\t})\n\t\t}\n\n\t\tif (!action.execute) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `It looks like the ${feature.code} feature's '${actionCode}' action does not properly extend AbstractAction.`,\n\t\t\t})\n\t\t}\n\n\t\tconst actionDecorator = new OverrideActionDecorator({\n\t\t\taction,\n\t\t\tfeature,\n\t\t\tblockedCommands: this.blockedCommands,\n\t\t\toptionOverrides: this.optionOverrides,\n\t\t\tui: this.actionOptions.ui,\n\t\t\tactionCode,\n\t\t})\n\n\t\treturn actionDecorator as FeatureAction<S>\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AAEA;;AAWA;;;;;;;;IAYqBA,a;EAKpB,uBAAmBC,OAAnB,EAAyD;IAAA;IAAA;IAAA;IAAA;IACxD,IAAQC,eAAR,GAA+DD,OAA/D,CAAQC,eAAR;IAAA,IAAyBC,eAAzB,GAA+DF,OAA/D,CAAyBE,eAAzB;IAAA,IAA6CC,aAA7C,6CAA+DH,OAA/D;IACA,KAAKG,aAAL,GAAqBA,aAArB;IACA,KAAKF,eAAL,GAAuBA,eAAvB;IACA,KAAKC,eAAL,GAAuBA,eAAvB;EACA;;;;WAED,gBAAgEF,OAAhE,EAKqB;MACpB,IAAQI,WAAR,GACCJ,OADD,CAAQI,WAAR;MAAA,IAAqBC,UAArB,GACCL,OADD,CAAqBK,UAArB;MAAA,IAAiCC,cAAjC,GACCN,OADD,CAAiCM,cAAjC;MAAA,IAAiDC,gBAAjD,GACCP,OADD,CAAiDO,gBAAjD;MAGA,IAAMC,OAAO,GAAGD,gBAAgB,CAACE,UAAjB,CAA4BL,WAA5B,CAAhB;;MAEA,IAAI,CAACI,OAAO,CAACE,UAAb,EAAyB;QACxB,MAAM,IAAIC,KAAJ,gBACGP,WADH,sFAAN;MAGA;;MAED,IAAMQ,SAAS,GAAGC,
|
|
1
|
+
{"version":3,"file":"ActionFactory.js","names":["ActionFactory","options","blockedCommands","optionOverrides","actionOptions","featureCode","actionCode","actionExecuter","featureInstaller","feature","getFeature","actionsDir","Error","classPath","diskUtil","resolvePath","namesUtil","toPascal","Class","originalError","require","err","SpruceError","code","friendlyMessage","action","parent","execute","actionDecorator","OverrideActionDecorator","ui"],"sources":["../../src/features/ActionFactory.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../errors/SpruceError'\nimport {\n\tFeatureAction,\n\tActionOptions,\n\tFeatureCode,\n} from '../features/features.types'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { BlockedCommands, OptionOverrides } from '../types/cli.types'\nimport AbstractAction from './AbstractAction'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport OverrideActionDecorator from './OverrideActionDecorator'\n\nexport interface FeatureActionFactoryOptions\n\textends Omit<\n\t\tActionOptions,\n\t\t'parent' | 'actionExecuter' | 'featureInstaller'\n\t> {\n\temitter: GlobalEmitter\n\tblockedCommands?: BlockedCommands\n\toptionOverrides?: OptionOverrides\n}\n\nexport default class ActionFactory {\n\tprivate actionOptions: FeatureActionFactoryOptions\n\tprivate blockedCommands?: BlockedCommands\n\tprivate optionOverrides?: OptionOverrides\n\n\tpublic constructor(options: FeatureActionFactoryOptions) {\n\t\tconst { blockedCommands, optionOverrides, ...actionOptions } = options\n\t\tthis.actionOptions = actionOptions\n\t\tthis.blockedCommands = blockedCommands\n\t\tthis.optionOverrides = optionOverrides\n\t}\n\n\tpublic Action<F extends FeatureCode, S extends Schema = Schema>(options: {\n\t\tfeatureCode: F\n\t\tactionCode: string\n\t\tactionExecuter: ActionExecuter\n\t\tfeatureInstaller: FeatureInstaller\n\t}): FeatureAction<S> {\n\t\tconst { featureCode, actionCode, actionExecuter, featureInstaller } =\n\t\t\toptions\n\n\t\tconst feature = featureInstaller.getFeature(featureCode)\n\n\t\tif (!feature.actionsDir) {\n\t\t\tthrow new Error(\n\t\t\t\t`Your ${featureCode} features needs \\`public actionsDir = diskUtil.resolvePath(__dirname, 'actions')\\``\n\t\t\t)\n\t\t}\n\n\t\tconst classPath = diskUtil.resolvePath(\n\t\t\tfeature.actionsDir,\n\t\t\t`${namesUtil.toPascal(actionCode)}Action`\n\t\t)\n\n\t\tlet Class: new (options: ActionOptions) => AbstractAction | undefined\n\t\tlet originalError: Error | undefined\n\n\t\ttry {\n\t\t\tClass = require(classPath).default\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch (err: any) {\n\t\t\toriginalError = err\n\t\t}\n\n\t\t//@ts-ignore\n\t\tif (!Class) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not find any action named '${actionCode}' for the ${feature.code} feature. Make sure it's the default export and extends AbstractAction.`,\n\t\t\t\toriginalError,\n\t\t\t})\n\t\t}\n\n\t\tconst action = new Class({\n\t\t\t...this.actionOptions,\n\t\t\tactionExecuter,\n\t\t\tparent: feature,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tif (!action) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not instantiate ${actionCode} action on ${feature.code} feature.`,\n\t\t\t})\n\t\t}\n\n\t\tif (!action.execute) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `It looks like the ${feature.code} feature's '${actionCode}' action does not properly extend AbstractAction.`,\n\t\t\t})\n\t\t}\n\n\t\tconst actionDecorator = new OverrideActionDecorator({\n\t\t\taction,\n\t\t\tfeature,\n\t\t\tblockedCommands: this.blockedCommands,\n\t\t\toptionOverrides: this.optionOverrides,\n\t\t\tui: this.actionOptions.ui,\n\t\t\tactionCode,\n\t\t})\n\n\t\treturn actionDecorator as FeatureAction<S>\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AAEA;;AAWA;;;;;;;;IAYqBA,a;EAKpB,uBAAmBC,OAAnB,EAAyD;IAAA;IAAA;IAAA;IAAA;IACxD,IAAQC,eAAR,GAA+DD,OAA/D,CAAQC,eAAR;IAAA,IAAyBC,eAAzB,GAA+DF,OAA/D,CAAyBE,eAAzB;IAAA,IAA6CC,aAA7C,6CAA+DH,OAA/D;IACA,KAAKG,aAAL,GAAqBA,aAArB;IACA,KAAKF,eAAL,GAAuBA,eAAvB;IACA,KAAKC,eAAL,GAAuBA,eAAvB;EACA;;;;WAED,gBAAgEF,OAAhE,EAKqB;MACpB,IAAQI,WAAR,GACCJ,OADD,CAAQI,WAAR;MAAA,IAAqBC,UAArB,GACCL,OADD,CAAqBK,UAArB;MAAA,IAAiCC,cAAjC,GACCN,OADD,CAAiCM,cAAjC;MAAA,IAAiDC,gBAAjD,GACCP,OADD,CAAiDO,gBAAjD;MAGA,IAAMC,OAAO,GAAGD,gBAAgB,CAACE,UAAjB,CAA4BL,WAA5B,CAAhB;;MAEA,IAAI,CAACI,OAAO,CAACE,UAAb,EAAyB;QACxB,MAAM,IAAIC,KAAJ,gBACGP,WADH,sFAAN;MAGA;;MAED,IAAMQ,SAAS,GAAGC,0BAAA,CAASC,WAAT,CACjBN,OAAO,CAACE,UADS,YAEdK,2BAAA,CAAUC,QAAV,CAAmBX,UAAnB,CAFc,YAAlB;;MAKA,IAAIY,KAAJ;MACA,IAAIC,aAAJ;;MAEA,IAAI;QACHD,KAAK,GAAGE,OAAO,CAACP,SAAD,CAAP,WAAR,CADG,CAEH;MACA,CAHD,CAGE,OAAOQ,GAAP,EAAiB;QAClBF,aAAa,GAAGE,GAAhB;MACA,CAzBmB,CA2BpB;;;MACA,IAAI,CAACH,KAAL,EAAY;QACX,MAAM,IAAII,uBAAJ,CAAgB;UACrBC,IAAI,EAAE,SADe;UAErBC,eAAe,+CAAwClB,UAAxC,uBAA+DG,OAAO,CAACc,IAAvE,4EAFM;UAGrBJ,aAAa,EAAbA;QAHqB,CAAhB,CAAN;MAKA;;MAED,IAAMM,MAAM,GAAG,IAAIP,KAAJ,iCACX,KAAKd,aADM;QAEdG,cAAc,EAAdA,cAFc;QAGdmB,MAAM,EAAEjB,OAHM;QAIdD,gBAAgB,EAAhBA;MAJc,GAAf;;MAOA,IAAI,CAACiB,MAAL,EAAa;QACZ,MAAM,IAAIH,uBAAJ,CAAgB;UACrBC,IAAI,EAAE,SADe;UAErBC,eAAe,oCAA6BlB,UAA7B,wBAAqDG,OAAO,CAACc,IAA7D;QAFM,CAAhB,CAAN;MAIA;;MAED,IAAI,CAACE,MAAM,CAACE,OAAZ,EAAqB;QACpB,MAAM,IAAIL,uBAAJ,CAAgB;UACrBC,IAAI,EAAE,SADe;UAErBC,eAAe,8BAAuBf,OAAO,CAACc,IAA/B,yBAAkDjB,UAAlD;QAFM,CAAhB,CAAN;MAIA;;MAED,IAAMsB,eAAe,GAAG,IAAIC,mCAAJ,CAA4B;QACnDJ,MAAM,EAANA,MADmD;QAEnDhB,OAAO,EAAPA,OAFmD;QAGnDP,eAAe,EAAE,KAAKA,eAH6B;QAInDC,eAAe,EAAE,KAAKA,eAJ6B;QAKnD2B,EAAE,EAAE,KAAK1B,aAAL,CAAmB0B,EAL4B;QAMnDxB,UAAU,EAAVA;MANmD,CAA5B,CAAxB;MASA,OAAOsB,eAAP;IACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionQuestionAsker.js","names":["s","array","length","areIs","ActionOptionAsker","options","ui","featureInstaller","actionCode","feature","shouldAutoHandleDependencies","getDependenciesNotInstalled","notInstalled","response","installCount","renderLine","generateConfirmInstallMessage","toInstall","shift","Error","isInstalled","code","wasInstalled","isMarkedAsSkipped","installOrMarkAsSkippedMissingDependency","installResults","clear","waitForEnter","getCommandName","dependencies","getFeatureDependencies","Promise","all","map","dependency","getFeature","installedStatuses","filter","installOptions","optionsSchema","collectAnswers","answers","action","schema","SpruceError","featureCode","friendlyMessage","isFirstUpdate","install","installFeatureDependencies","features","didUpdateHandler","message","renderHeading","startLoading","stopLoading","renderHero","CLI_HERO","renderHeadline","isRequired","confirm","nameReadable","command","prompt","type","defaultValue","label","choices","value","markAsSkippedThisRun","markAsPermanentlySkipped","installResponse","undefined","cleaned","Object","keys","forEach","key","fieldNames","fields","providedFieldNames","fieldsToPresent","name","indexOf","isPrivate","featureForm","FormComponent","initialValues","onWillAskQuestion","formUtil","onWillAskQuestionHandler","bind","present","showOverview","featuresUtil","generateCommand","required","optional","feat","push","requiredMessage","optionalMessage","mixedMessage"],"sources":["../../src/features/ActionQuestionAsker.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport merge from 'lodash/merge'\nimport FormComponent from '../components/FormComponent'\nimport { CLI_HERO } from '../constants'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport formUtil from '../utilities/form.utility'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureMap,\n} from './features.types'\n\ntype FeatureCommandExecuteOptions<\n\tF extends FeatureCode,\n\tS extends Schema | undefined = FeatureMap[F]['optionsSchema']\n> = S extends Schema ? SchemaPartialValues<S> : undefined\n\ntype FeatureDependencyWithFeature = FeatureDependency & {\n\tfeature: AbstractFeature\n}\n\nfunction s(array: any[]) {\n\treturn array.length === 1 ? '' : ''\n}\n\nfunction areIs(array: any[]) {\n\treturn array.length === 1 ? 'is' : 'are'\n}\n\nexport default class ActionOptionAsker<F extends FeatureCode = FeatureCode> {\n\tprivate ui: GraphicsInterface\n\tprivate featureInstaller: FeatureInstaller\n\tprivate actionCode: string\n\tprivate feature: AbstractFeature\n\tprivate shouldAutoHandleDependencies = true\n\n\tpublic constructor(options: {\n\t\tui: GraphicsInterface\n\t\tfeatureInstaller: FeatureInstaller\n\t\tactionCode: string\n\t\tfeature: AbstractFeature\n\t\tshouldAutoHandleDependencies: boolean\n\t}) {\n\t\tthis.ui = options.ui\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.actionCode = options.actionCode\n\t\tthis.feature = options.feature\n\t\tthis.shouldAutoHandleDependencies = options.shouldAutoHandleDependencies\n\t}\n\n\tpublic async installOrMarkAsSkippedMissingDependencies(): Promise<FeatureInstallResponse> {\n\t\tconst notInstalled = await this.getDependenciesNotInstalled()\n\n\t\tlet response: FeatureInstallResponse = {}\n\t\tlet installCount = 0\n\n\t\tif (notInstalled.length > 0) {\n\t\t\tthis.ui.renderLine(\n\t\t\t\tthis.generateConfirmInstallMessage(notInstalled) + '\\n'\n\t\t\t)\n\n\t\t\twhile (notInstalled.length > 0) {\n\t\t\t\tconst toInstall = notInstalled.shift()\n\t\t\t\tif (!toInstall) {\n\t\t\t\t\t// for typescript\n\t\t\t\t\tthrow new Error('Dependent feature error')\n\t\t\t\t}\n\n\t\t\t\tconst wasInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\ttoInstall.code\n\t\t\t\t)\n\n\t\t\t\tif (\n\t\t\t\t\t!wasInstalled &&\n\t\t\t\t\t!this.featureInstaller.isMarkedAsSkipped(toInstall.code)\n\t\t\t\t) {\n\t\t\t\t\tconst installResults =\n\t\t\t\t\t\tawait this.installOrMarkAsSkippedMissingDependency(toInstall)\n\t\t\t\t\tresponse = merge(response, installResults)\n\t\t\t\t\tinstallCount++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (installCount > 0) {\n\t\t\t\tthis.ui.clear()\n\n\t\t\t\tawait this.ui.waitForEnter(\n\t\t\t\t\t`Phew, now that we're done with that, lets get back to ${this.getCommandName()}!`\n\t\t\t\t)\n\n\t\t\t\tthis.ui.clear()\n\t\t\t}\n\t\t}\n\n\t\treturn response\n\t}\n\n\tprivate async getDependenciesNotInstalled(): Promise<\n\t\tFeatureDependencyWithFeature[]\n\t> {\n\t\tconst dependencies = this.featureInstaller.getFeatureDependencies(\n\t\t\tthis.feature.code\n\t\t)\n\n\t\tconst installedStatuses = await Promise.all(\n\t\t\tdependencies.map(async (dependency) => {\n\t\t\t\tconst feature = this.featureInstaller.getFeature(dependency.code)\n\n\t\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\tdependency.code\n\t\t\t\t)\n\n\t\t\t\tconst isMarkedAsSkipped = this.featureInstaller.isMarkedAsSkipped(\n\t\t\t\t\tfeature.code\n\t\t\t\t)\n\n\t\t\t\tif (isMarkedAsSkipped) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\treturn !isInstalled ? { feature, ...dependency } : null\n\t\t\t})\n\t\t)\n\n\t\tconst notInstalled = installedStatuses.filter(\n\t\t\t(feature) => !!feature\n\t\t) as FeatureDependencyWithFeature[]\n\n\t\treturn notInstalled\n\t}\n\n\tpublic async askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\tisInstalled: boolean,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet installOptions = { ...options }\n\n\t\tif (!isInstalled) {\n\t\t\tif (this.feature.optionsSchema) {\n\t\t\t\tconst answers = await this.collectAnswers(\n\t\t\t\t\tthis.feature.optionsSchema,\n\t\t\t\t\toptions\n\t\t\t\t)\n\n\t\t\t\tinstallOptions = { ...installOptions, ...answers }\n\t\t\t}\n\t\t}\n\t\treturn installOptions\n\t}\n\n\tpublic async askAboutMissingActionOptions(\n\t\taction: FeatureAction<Schema>,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet answers\n\n\t\tconst schema = action.optionsSchema\n\t\tif (schema) {\n\t\t\tanswers = await this.collectAnswers(schema, options)\n\t\t}\n\t\treturn answers\n\t}\n\n\tpublic async installOurFeature(installOptions: Record<string, any>) {\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: this.feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdidUpdateHandler: (message) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate renderHeading(code: string) {\n\t\tthis.ui.clear()\n\t\tthis.ui.renderHero(CLI_HERO)\n\t\tthis.ui.renderHeadline(`Installing ${code} feature...`)\n\t}\n\n\tprivate async installOrMarkAsSkippedMissingDependency(\n\t\ttoInstall: FeatureDependencyWithFeature\n\t): Promise<FeatureInstallResponse> {\n\t\tconst { feature, isRequired } = toInstall\n\n\t\tif (isRequired) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`Install the ${feature.nameReadable} feature?`\n\t\t\t)\n\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'COMMAND_ABORTED',\n\t\t\t\t\tcommand: this.getCommandName(),\n\t\t\t\t})\n\t\t\t}\n\t\t} else {\n\t\t\tconst response = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tdefaultValue: 'yes',\n\t\t\t\tlabel: `Install the ${feature.nameReadable} feature? (optional)`,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tif (response !== 'yes') {\n\t\t\t\tthis.ui.renderLine(\n\t\t\t\t\tresponse === 'alwaysSkip'\n\t\t\t\t\t\t? 'Skipping forever!'\n\t\t\t\t\t\t: 'Cool, skipping for now.'\n\t\t\t\t)\n\n\t\t\t\tif (response === 'skip') {\n\t\t\t\t\tthis.featureInstaller.markAsSkippedThisRun(feature.code)\n\t\t\t\t} else {\n\t\t\t\t\tthis.featureInstaller.markAsPermanentlySkipped(feature.code)\n\t\t\t\t}\n\n\t\t\t\tconst installResponse: FeatureInstallResponse = {}\n\t\t\t\treturn installResponse\n\t\t\t}\n\t\t}\n\n\t\tlet installOptions = {}\n\n\t\tif (feature.optionsSchema) {\n\t\t\tinstallOptions = await this.collectAnswers(\n\t\t\t\tfeature.optionsSchema,\n\t\t\t\tundefined\n\t\t\t)\n\t\t}\n\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tdidUpdateHandler: (message: string) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate async collectAnswers<S extends Schema>(\n\t\tschema: S,\n\t\toptions: FeatureCommandExecuteOptions<F, S> | undefined\n\t) {\n\t\tconst cleaned: Record<string, any> = {}\n\t\tObject.keys(options ?? {}).forEach((key) => {\n\t\t\t//@ts-ignore\n\t\t\tif (typeof options[key] !== 'undefined') {\n\t\t\t\t//@ts-ignore\n\t\t\t\tcleaned[key] = options[key]\n\t\t\t}\n\t\t})\n\n\t\tconst fieldNames = Object.keys(schema.fields ?? {})\n\t\tconst providedFieldNames = cleaned ? Object.keys(cleaned ?? {}) : []\n\t\tconst fieldsToPresent = fieldNames.filter(\n\t\t\t(name) =>\n\t\t\t\tprovidedFieldNames.indexOf(name) === -1 &&\n\t\t\t\tschema.fields?.[name].isRequired === true &&\n\t\t\t\tschema.fields?.[name].isPrivate !== true\n\t\t)\n\n\t\tlet answers = {}\n\t\tif (fieldsToPresent.length > 0) {\n\t\t\tconst featureForm = new FormComponent<S>({\n\t\t\t\tui: this.ui,\n\t\t\t\tschema,\n\t\t\t\t//@ts-ignore\n\t\t\t\tinitialValues: cleaned,\n\t\t\t\tonWillAskQuestion: formUtil.onWillAskQuestionHandler.bind(\n\t\t\t\t\tformUtil\n\t\t\t\t) as any,\n\t\t\t})\n\n\t\t\tanswers = await featureForm.present({\n\t\t\t\tshowOverview: false,\n\t\t\t\t// @ts-ignore\n\t\t\t\tfields: fieldsToPresent,\n\t\t\t})\n\t\t}\n\n\t\treturn { ...(cleaned ?? {}), ...answers } as SchemaValues<S>\n\t}\n\n\tprivate getCommandName() {\n\t\treturn featuresUtil.generateCommand(this.feature.code, this.actionCode)\n\t}\n\n\tprivate generateConfirmInstallMessage(\n\t\tnotInstalled: FeatureDependencyWithFeature[]\n\t): string {\n\t\tconst required: FeatureDependencyWithFeature[] = []\n\t\tconst optional: FeatureDependencyWithFeature[] = []\n\n\t\tnotInstalled.forEach((feat) => {\n\t\t\tif (feat.isRequired) {\n\t\t\t\trequired.push(feat)\n\t\t\t} else {\n\t\t\t\toptional.push(feat)\n\t\t\t}\n\t\t})\n\n\t\tconst requiredMessage = `I'll need to install ${required.length} feature${s(\n\t\t\trequired\n\t\t)}.`\n\n\t\tconst optionalMessage = `there ${areIs(optional)} ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} that could be installed.`\n\n\t\tconst mixedMessage = `I found ${required.length} required and ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} to install.`\n\n\t\tlet message = mixedMessage\n\n\t\tif (optional.length === 0) {\n\t\t\tmessage = requiredMessage\n\t\t} else if (optional.length > 0 && required.length === 0) {\n\t\t\tmessage = optionalMessage\n\t\t}\n\n\t\treturn `Before you can run \\`${this.getCommandName()}\\`, ${message} Don't worry, I'll walk you through it!`\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionQuestionAsker.js","names":["s","array","length","areIs","ActionOptionAsker","options","ui","featureInstaller","actionCode","feature","shouldAutoHandleDependencies","getDependenciesNotInstalled","notInstalled","response","installCount","renderLine","generateConfirmInstallMessage","toInstall","shift","Error","isInstalled","code","wasInstalled","isMarkedAsSkipped","installOrMarkAsSkippedMissingDependency","installResults","merge","clear","waitForEnter","getCommandName","dependencies","getFeatureDependencies","Promise","all","map","dependency","getFeature","installedStatuses","filter","installOptions","optionsSchema","collectAnswers","answers","action","schema","SpruceError","featureCode","friendlyMessage","isFirstUpdate","install","installFeatureDependencies","features","didUpdateHandler","message","renderHeading","startLoading","stopLoading","renderHero","CLI_HERO","renderHeadline","isRequired","confirm","nameReadable","command","prompt","type","defaultValue","label","choices","value","markAsSkippedThisRun","markAsPermanentlySkipped","installResponse","undefined","cleaned","Object","keys","forEach","key","fieldNames","fields","providedFieldNames","fieldsToPresent","name","indexOf","isPrivate","featureForm","FormComponent","initialValues","onWillAskQuestion","formUtil","onWillAskQuestionHandler","bind","present","showOverview","featuresUtil","generateCommand","required","optional","feat","push","requiredMessage","optionalMessage","mixedMessage"],"sources":["../../src/features/ActionQuestionAsker.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport merge from 'lodash/merge'\nimport FormComponent from '../components/FormComponent'\nimport { CLI_HERO } from '../constants'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport formUtil from '../utilities/form.utility'\nimport AbstractFeature, { FeatureDependency } from './AbstractFeature'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureMap,\n} from './features.types'\n\ntype FeatureCommandExecuteOptions<\n\tF extends FeatureCode,\n\tS extends Schema | undefined = FeatureMap[F]['optionsSchema']\n> = S extends Schema ? SchemaPartialValues<S> : undefined\n\ntype FeatureDependencyWithFeature = FeatureDependency & {\n\tfeature: AbstractFeature\n}\n\nfunction s(array: any[]) {\n\treturn array.length === 1 ? '' : ''\n}\n\nfunction areIs(array: any[]) {\n\treturn array.length === 1 ? 'is' : 'are'\n}\n\nexport default class ActionOptionAsker<F extends FeatureCode = FeatureCode> {\n\tprivate ui: GraphicsInterface\n\tprivate featureInstaller: FeatureInstaller\n\tprivate actionCode: string\n\tprivate feature: AbstractFeature\n\tprivate shouldAutoHandleDependencies = true\n\n\tpublic constructor(options: {\n\t\tui: GraphicsInterface\n\t\tfeatureInstaller: FeatureInstaller\n\t\tactionCode: string\n\t\tfeature: AbstractFeature\n\t\tshouldAutoHandleDependencies: boolean\n\t}) {\n\t\tthis.ui = options.ui\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.actionCode = options.actionCode\n\t\tthis.feature = options.feature\n\t\tthis.shouldAutoHandleDependencies = options.shouldAutoHandleDependencies\n\t}\n\n\tpublic async installOrMarkAsSkippedMissingDependencies(): Promise<FeatureInstallResponse> {\n\t\tconst notInstalled = await this.getDependenciesNotInstalled()\n\n\t\tlet response: FeatureInstallResponse = {}\n\t\tlet installCount = 0\n\n\t\tif (notInstalled.length > 0) {\n\t\t\tthis.ui.renderLine(\n\t\t\t\tthis.generateConfirmInstallMessage(notInstalled) + '\\n'\n\t\t\t)\n\n\t\t\twhile (notInstalled.length > 0) {\n\t\t\t\tconst toInstall = notInstalled.shift()\n\t\t\t\tif (!toInstall) {\n\t\t\t\t\t// for typescript\n\t\t\t\t\tthrow new Error('Dependent feature error')\n\t\t\t\t}\n\n\t\t\t\tconst wasInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\ttoInstall.code\n\t\t\t\t)\n\n\t\t\t\tif (\n\t\t\t\t\t!wasInstalled &&\n\t\t\t\t\t!this.featureInstaller.isMarkedAsSkipped(toInstall.code)\n\t\t\t\t) {\n\t\t\t\t\tconst installResults =\n\t\t\t\t\t\tawait this.installOrMarkAsSkippedMissingDependency(toInstall)\n\t\t\t\t\tresponse = merge(response, installResults)\n\t\t\t\t\tinstallCount++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (installCount > 0) {\n\t\t\t\tthis.ui.clear()\n\n\t\t\t\tawait this.ui.waitForEnter(\n\t\t\t\t\t`Phew, now that we're done with that, lets get back to ${this.getCommandName()}!`\n\t\t\t\t)\n\n\t\t\t\tthis.ui.clear()\n\t\t\t}\n\t\t}\n\n\t\treturn response\n\t}\n\n\tprivate async getDependenciesNotInstalled(): Promise<\n\t\tFeatureDependencyWithFeature[]\n\t> {\n\t\tconst dependencies = this.featureInstaller.getFeatureDependencies(\n\t\t\tthis.feature.code\n\t\t)\n\n\t\tconst installedStatuses = await Promise.all(\n\t\t\tdependencies.map(async (dependency) => {\n\t\t\t\tconst feature = this.featureInstaller.getFeature(dependency.code)\n\n\t\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t\tdependency.code\n\t\t\t\t)\n\n\t\t\t\tconst isMarkedAsSkipped = this.featureInstaller.isMarkedAsSkipped(\n\t\t\t\t\tfeature.code\n\t\t\t\t)\n\n\t\t\t\tif (isMarkedAsSkipped) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\treturn !isInstalled ? { feature, ...dependency } : null\n\t\t\t})\n\t\t)\n\n\t\tconst notInstalled = installedStatuses.filter(\n\t\t\t(feature) => !!feature\n\t\t) as FeatureDependencyWithFeature[]\n\n\t\treturn notInstalled\n\t}\n\n\tpublic async askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\tisInstalled: boolean,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet installOptions = { ...options }\n\n\t\tif (!isInstalled) {\n\t\t\tif (this.feature.optionsSchema) {\n\t\t\t\tconst answers = await this.collectAnswers(\n\t\t\t\t\tthis.feature.optionsSchema,\n\t\t\t\t\toptions\n\t\t\t\t)\n\n\t\t\t\tinstallOptions = { ...installOptions, ...answers }\n\t\t\t}\n\t\t}\n\t\treturn installOptions\n\t}\n\n\tpublic async askAboutMissingActionOptions(\n\t\taction: FeatureAction<Schema>,\n\t\toptions: (Record<string, any> & FeatureCommandExecuteOptions<F>) | undefined\n\t) {\n\t\tlet answers\n\n\t\tconst schema = action.optionsSchema\n\t\tif (schema) {\n\t\t\tanswers = await this.collectAnswers(schema, options)\n\t\t}\n\t\treturn answers\n\t}\n\n\tpublic async installOurFeature(installOptions: Record<string, any>) {\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: this.feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdidUpdateHandler: (message) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate renderHeading(code: string) {\n\t\tthis.ui.clear()\n\t\tthis.ui.renderHero(CLI_HERO)\n\t\tthis.ui.renderHeadline(`Installing ${code} feature...`)\n\t}\n\n\tprivate async installOrMarkAsSkippedMissingDependency(\n\t\ttoInstall: FeatureDependencyWithFeature\n\t): Promise<FeatureInstallResponse> {\n\t\tconst { feature, isRequired } = toInstall\n\n\t\tif (isRequired) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`Install the ${feature.nameReadable} feature?`\n\t\t\t)\n\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'COMMAND_ABORTED',\n\t\t\t\t\tcommand: this.getCommandName(),\n\t\t\t\t})\n\t\t\t}\n\t\t} else {\n\t\t\tconst response = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tdefaultValue: 'yes',\n\t\t\t\tlabel: `Install the ${feature.nameReadable} feature? (optional)`,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tif (response !== 'yes') {\n\t\t\t\tthis.ui.renderLine(\n\t\t\t\t\tresponse === 'alwaysSkip'\n\t\t\t\t\t\t? 'Skipping forever!'\n\t\t\t\t\t\t: 'Cool, skipping for now.'\n\t\t\t\t)\n\n\t\t\t\tif (response === 'skip') {\n\t\t\t\t\tthis.featureInstaller.markAsSkippedThisRun(feature.code)\n\t\t\t\t} else {\n\t\t\t\t\tthis.featureInstaller.markAsPermanentlySkipped(feature.code)\n\t\t\t\t}\n\n\t\t\t\tconst installResponse: FeatureInstallResponse = {}\n\t\t\t\treturn installResponse\n\t\t\t}\n\t\t}\n\n\t\tlet installOptions = {}\n\n\t\tif (feature.optionsSchema) {\n\t\t\tinstallOptions = await this.collectAnswers(\n\t\t\t\tfeature.optionsSchema,\n\t\t\t\tundefined\n\t\t\t)\n\t\t}\n\n\t\tif (!this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode: this.feature.code,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${this.feature.code}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tlet isFirstUpdate = true\n\n\t\tconst installResults = await this.featureInstaller.install({\n\t\t\tinstallFeatureDependencies: false,\n\t\t\tdidUpdateHandler: (message: string) => {\n\t\t\t\tif (isFirstUpdate) {\n\t\t\t\t\tthis.renderHeading(this.feature.code)\n\t\t\t\t\tisFirstUpdate = false\n\t\t\t\t}\n\t\t\t\tthis.ui.startLoading(message)\n\t\t\t},\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: feature.code as any,\n\t\t\t\t\toptions: installOptions as any,\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tthis.ui.stopLoading()\n\n\t\treturn installResults\n\t}\n\n\tprivate async collectAnswers<S extends Schema>(\n\t\tschema: S,\n\t\toptions: FeatureCommandExecuteOptions<F, S> | undefined\n\t) {\n\t\tconst cleaned: Record<string, any> = {}\n\t\tObject.keys(options ?? {}).forEach((key) => {\n\t\t\t//@ts-ignore\n\t\t\tif (typeof options[key] !== 'undefined') {\n\t\t\t\t//@ts-ignore\n\t\t\t\tcleaned[key] = options[key]\n\t\t\t}\n\t\t})\n\n\t\tconst fieldNames = Object.keys(schema.fields ?? {})\n\t\tconst providedFieldNames = cleaned ? Object.keys(cleaned ?? {}) : []\n\t\tconst fieldsToPresent = fieldNames.filter(\n\t\t\t(name) =>\n\t\t\t\tprovidedFieldNames.indexOf(name) === -1 &&\n\t\t\t\tschema.fields?.[name].isRequired === true &&\n\t\t\t\tschema.fields?.[name].isPrivate !== true\n\t\t)\n\n\t\tlet answers = {}\n\t\tif (fieldsToPresent.length > 0) {\n\t\t\tconst featureForm = new FormComponent<S>({\n\t\t\t\tui: this.ui,\n\t\t\t\tschema,\n\t\t\t\t//@ts-ignore\n\t\t\t\tinitialValues: cleaned,\n\t\t\t\tonWillAskQuestion: formUtil.onWillAskQuestionHandler.bind(\n\t\t\t\t\tformUtil\n\t\t\t\t) as any,\n\t\t\t})\n\n\t\t\tanswers = await featureForm.present({\n\t\t\t\tshowOverview: false,\n\t\t\t\t// @ts-ignore\n\t\t\t\tfields: fieldsToPresent,\n\t\t\t})\n\t\t}\n\n\t\treturn { ...(cleaned ?? {}), ...answers } as SchemaValues<S>\n\t}\n\n\tprivate getCommandName() {\n\t\treturn featuresUtil.generateCommand(this.feature.code, this.actionCode)\n\t}\n\n\tprivate generateConfirmInstallMessage(\n\t\tnotInstalled: FeatureDependencyWithFeature[]\n\t): string {\n\t\tconst required: FeatureDependencyWithFeature[] = []\n\t\tconst optional: FeatureDependencyWithFeature[] = []\n\n\t\tnotInstalled.forEach((feat) => {\n\t\t\tif (feat.isRequired) {\n\t\t\t\trequired.push(feat)\n\t\t\t} else {\n\t\t\t\toptional.push(feat)\n\t\t\t}\n\t\t})\n\n\t\tconst requiredMessage = `I'll need to install ${required.length} feature${s(\n\t\t\trequired\n\t\t)}.`\n\n\t\tconst optionalMessage = `there ${areIs(optional)} ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} that could be installed.`\n\n\t\tconst mixedMessage = `I found ${required.length} required and ${\n\t\t\toptional.length\n\t\t} optional feature${s(optional)} to install.`\n\n\t\tlet message = mixedMessage\n\n\t\tif (optional.length === 0) {\n\t\t\tmessage = requiredMessage\n\t\t} else if (optional.length > 0 && required.length === 0) {\n\t\t\tmessage = optionalMessage\n\t\t}\n\n\t\treturn `Before you can run \\`${this.getCommandName()}\\`, ${message} Don't worry, I'll walk you through it!`\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureCommandAttacher.js","names":["FeatureCommandAttacher","options","program","term","ui","actionExecuter","feature","getAvailableActionCodes","actionCodes","actionCode","attachCode","code","commandStr","featuresUtil","generateCommand","action","Action","aliases","commandAliases","length","shift","command","clearAndRenderMasthead","startTime","Date","getTime","args","commanderUtil","mapIncomingToOptions","optionsSchema","execute","results","endTime","totalTime","clearAndRenderResults","featureCode","description","schema","attachOptions","stopLoading","clear","renderActionSummary","headline","uiUtil","renderActionMastHead","entity","SchemaEntityFactory","Entity","theProgram","fields","getNamedFields","generateOptionAliases","forEach","field","name","option","hint","definition","defaultValue","undefined","err","SpruceError","fieldName","id","schemaId","originalError","friendlyMessage"],"sources":["../../src/features/FeatureCommandAttacher.ts"],"sourcesContent":["import { Schema, SchemaEntityFactory } from '@sprucelabs/schema'\nimport { CommanderStatic } from 'commander'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport commanderUtil from '../utilities/commander.utility'\nimport uiUtil from '../utilities/ui.utility'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport featuresUtil from './feature.utilities'\nimport { FeatureAction, FeatureActionResponse } from './features.types'\n\nexport interface OptionOverrides {\n\t[command: string]: Record<string, any>\n}\n\nexport interface BlockedCommands {\n\t[command: string]: string\n}\n\nexport default class FeatureCommandAttacher {\n\tprivate program: CommanderStatic['program']\n\tprivate ui: GraphicsInterface\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: {\n\t\tprogram: CommanderStatic['program']\n\t\tui: GraphicsInterface\n\t\tactionExecuter: ActionExecuter\n\t}) {\n\t\tconst { program, ui: term, actionExecuter } = options\n\n\t\tthis.program = program\n\t\tthis.ui = term\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic async attachFeature(feature: AbstractFeature) {\n\t\tconst actionCodes = await feature.getAvailableActionCodes()\n\n\t\tfor (const actionCode of actionCodes) {\n\t\t\tthis.attachCode(actionCode, feature)\n\t\t}\n\t}\n\n\tprivate attachCode(code: string, feature: AbstractFeature) {\n\t\tlet commandStr = featuresUtil.generateCommand(feature.code, code)\n\t\tconst action = this.actionExecuter.Action(feature.code, code)\n\n\t\tconst aliases = action.commandAliases ? [...action.commandAliases] : []\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommandStr = aliases.shift() as string\n\t\t}\n\n\t\tlet command = this.program.command(commandStr)\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommand = command.aliases(aliases)\n\t\t}\n\n\t\tcommand = command.action(async (...args: any[]) => {\n\t\t\tthis.clearAndRenderMasthead(action)\n\t\t\tconst startTime = new Date().getTime()\n\n\t\t\tconst options = commanderUtil.mapIncomingToOptions(\n\t\t\t\t...args,\n\t\t\t\tfeature.optionsSchema ?? action.optionsSchema\n\t\t\t)\n\n\t\t\tconst results = await action.execute({\n\t\t\t\t...options,\n\t\t\t})\n\n\t\t\tconst endTime = new Date().getTime()\n\t\t\tconst totalTime = endTime - startTime\n\n\t\t\tthis.clearAndRenderResults({\n\t\t\t\tfeatureCode: feature.code,\n\t\t\t\tactionCode: code,\n\t\t\t\ttotalTime,\n\t\t\t\tresults,\n\t\t\t\taction,\n\t\t\t})\n\n\t\t\treturn results as any\n\t\t})\n\n\t\tconst description = action.optionsSchema?.description\n\n\t\tif (description) {\n\t\t\tcommand = command.description(description)\n\t\t}\n\n\t\tconst schema = action.optionsSchema\n\n\t\tif (schema) {\n\t\t\tthis.attachOptions(command, schema)\n\t\t}\n\t}\n\n\tprivate clearAndRenderResults(options: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t\ttotalTime: number\n\t\taction: FeatureAction\n\t\tresults: FeatureActionResponse\n\t}) {\n\t\tconst { featureCode, actionCode, results, totalTime, action } = options\n\n\t\tthis.ui.stopLoading()\n\t\tthis.ui.clear()\n\n\t\tthis.ui.renderActionSummary({\n\t\t\t//@ts-ignore\n\t\t\theadline: `${actionCode} finished!`,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\ttotalTime,\n\t\t\taction,\n\t\t\t...results,\n\t\t})\n\t}\n\n\tprivate clearAndRenderMasthead(action: FeatureAction<Schema>) {\n\t\tuiUtil.renderActionMastHead(this.ui, action)\n\t}\n\n\tprivate attachOptions(command: CommanderStatic['program'], schema: Schema) {\n\t\tconst entity = SchemaEntityFactory.Entity(schema)\n\n\t\tlet theProgram = command\n\n\t\tconst fields = entity.getNamedFields()\n\t\tconst aliases = featuresUtil.generateOptionAliases(schema)\n\n\t\tfields.forEach(({ field, name }) => {\n\t\t\ttry {\n\t\t\t\ttheProgram = theProgram.option(\n\t\t\t\t\taliases[name],\n\t\t\t\t\tfield.hint,\n\t\t\t\t\tfield.definition.defaultValue\n\t\t\t\t\t\t? `${field.definition.defaultValue}`\n\t\t\t\t\t\t: undefined\n\t\t\t\t)\n\t\t\t} catch (err: any) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tcode: 'FAILED_TO_ATTACH_COMMAND',\n\t\t\t\t\tfieldName: name,\n\t\t\t\t\tid: entity.schemaId,\n\t\t\t\t\toriginalError: err,\n\t\t\t\t\tfriendlyMessage: `Could not attach option ${aliases[name]} from ${entity.schemaId}.${name} to the command`,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;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,
|
|
1
|
+
{"version":3,"file":"FeatureCommandAttacher.js","names":["FeatureCommandAttacher","options","program","term","ui","actionExecuter","feature","getAvailableActionCodes","actionCodes","actionCode","attachCode","code","commandStr","featuresUtil","generateCommand","action","Action","aliases","commandAliases","length","shift","command","clearAndRenderMasthead","startTime","Date","getTime","args","commanderUtil","mapIncomingToOptions","optionsSchema","execute","results","endTime","totalTime","clearAndRenderResults","featureCode","description","schema","attachOptions","stopLoading","clear","renderActionSummary","headline","uiUtil","renderActionMastHead","entity","SchemaEntityFactory","Entity","theProgram","fields","getNamedFields","generateOptionAliases","forEach","field","name","option","hint","definition","defaultValue","undefined","err","SpruceError","fieldName","id","schemaId","originalError","friendlyMessage"],"sources":["../../src/features/FeatureCommandAttacher.ts"],"sourcesContent":["import { Schema, SchemaEntityFactory } from '@sprucelabs/schema'\nimport { CommanderStatic } from 'commander'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport commanderUtil from '../utilities/commander.utility'\nimport uiUtil from '../utilities/ui.utility'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport featuresUtil from './feature.utilities'\nimport { FeatureAction, FeatureActionResponse } from './features.types'\n\nexport interface OptionOverrides {\n\t[command: string]: Record<string, any>\n}\n\nexport interface BlockedCommands {\n\t[command: string]: string\n}\n\nexport default class FeatureCommandAttacher {\n\tprivate program: CommanderStatic['program']\n\tprivate ui: GraphicsInterface\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: {\n\t\tprogram: CommanderStatic['program']\n\t\tui: GraphicsInterface\n\t\tactionExecuter: ActionExecuter\n\t}) {\n\t\tconst { program, ui: term, actionExecuter } = options\n\n\t\tthis.program = program\n\t\tthis.ui = term\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic async attachFeature(feature: AbstractFeature) {\n\t\tconst actionCodes = await feature.getAvailableActionCodes()\n\n\t\tfor (const actionCode of actionCodes) {\n\t\t\tthis.attachCode(actionCode, feature)\n\t\t}\n\t}\n\n\tprivate attachCode(code: string, feature: AbstractFeature) {\n\t\tlet commandStr = featuresUtil.generateCommand(feature.code, code)\n\t\tconst action = this.actionExecuter.Action(feature.code, code)\n\n\t\tconst aliases = action.commandAliases ? [...action.commandAliases] : []\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommandStr = aliases.shift() as string\n\t\t}\n\n\t\tlet command = this.program.command(commandStr)\n\n\t\tif (aliases.length > 0) {\n\t\t\tcommand = command.aliases(aliases)\n\t\t}\n\n\t\tcommand = command.action(async (...args: any[]) => {\n\t\t\tthis.clearAndRenderMasthead(action)\n\t\t\tconst startTime = new Date().getTime()\n\n\t\t\tconst options = commanderUtil.mapIncomingToOptions(\n\t\t\t\t...args,\n\t\t\t\tfeature.optionsSchema ?? action.optionsSchema\n\t\t\t)\n\n\t\t\tconst results = await action.execute({\n\t\t\t\t...options,\n\t\t\t})\n\n\t\t\tconst endTime = new Date().getTime()\n\t\t\tconst totalTime = endTime - startTime\n\n\t\t\tthis.clearAndRenderResults({\n\t\t\t\tfeatureCode: feature.code,\n\t\t\t\tactionCode: code,\n\t\t\t\ttotalTime,\n\t\t\t\tresults,\n\t\t\t\taction,\n\t\t\t})\n\n\t\t\treturn results as any\n\t\t})\n\n\t\tconst description = action.optionsSchema?.description\n\n\t\tif (description) {\n\t\t\tcommand = command.description(description)\n\t\t}\n\n\t\tconst schema = action.optionsSchema\n\n\t\tif (schema) {\n\t\t\tthis.attachOptions(command, schema)\n\t\t}\n\t}\n\n\tprivate clearAndRenderResults(options: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t\ttotalTime: number\n\t\taction: FeatureAction\n\t\tresults: FeatureActionResponse\n\t}) {\n\t\tconst { featureCode, actionCode, results, totalTime, action } = options\n\n\t\tthis.ui.stopLoading()\n\t\tthis.ui.clear()\n\n\t\tthis.ui.renderActionSummary({\n\t\t\t//@ts-ignore\n\t\t\theadline: `${actionCode} finished!`,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\ttotalTime,\n\t\t\taction,\n\t\t\t...results,\n\t\t})\n\t}\n\n\tprivate clearAndRenderMasthead(action: FeatureAction<Schema>) {\n\t\tuiUtil.renderActionMastHead(this.ui, action)\n\t}\n\n\tprivate attachOptions(command: CommanderStatic['program'], schema: Schema) {\n\t\tconst entity = SchemaEntityFactory.Entity(schema)\n\n\t\tlet theProgram = command\n\n\t\tconst fields = entity.getNamedFields()\n\t\tconst aliases = featuresUtil.generateOptionAliases(schema)\n\n\t\tfields.forEach(({ field, name }) => {\n\t\t\ttry {\n\t\t\t\ttheProgram = theProgram.option(\n\t\t\t\t\taliases[name],\n\t\t\t\t\tfield.hint,\n\t\t\t\t\tfield.definition.defaultValue\n\t\t\t\t\t\t? `${field.definition.defaultValue}`\n\t\t\t\t\t\t: undefined\n\t\t\t\t)\n\t\t\t} catch (err: any) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tcode: 'FAILED_TO_ATTACH_COMMAND',\n\t\t\t\t\tfieldName: name,\n\t\t\t\t\tid: entity.schemaId,\n\t\t\t\t\toriginalError: err,\n\t\t\t\t\tfriendlyMessage: `Could not attach option ${aliases[name]} from ${entity.schemaId}.${name} to the command`,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n}\n"],"mappings":"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"}
|