@sprucelabs/spruce-cli 15.4.12 → 17.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/build/.spruce/errors/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.d.ts +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.d.ts +1 -0
- 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/apiClient.utility.d.ts +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.d.ts +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/widgets/widget.utilities.d.ts +1 -1
- package/build/writers/AbstractWriter.js.map +1 -1
- package/package.json +36 -36
- 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":"CommandService.js","names":["process","setMaxListeners","CommandService","cwd","activeChildProcess","pid","ignoreCloseErrors","cmd","options","args","executable","shift","boundKill","kill","bind","Error","getMockResponse","mockResponse","mockKey","commandsRunCapturedByMockResponses","push","callback","code","SpruceError","join","stdout","stderr","on","Promise","resolve","reject","spawnOptions","shouldStream","stdio","env","PATH","IS_CLI","FORCE_COLOR","forceColor","shell","child","outStream","pipe","addListener","data","onData","toString","onError","closeHandler","off","undefined","setTimeout","removeAllListeners","ignoreErrors","search","ERROR_DIVIDER","stderrParts","split","err","AbstractSpruceError","parse","trim","commands","mockResponses","match","find","r","command","RegExp","replace","response","unshift"],"sources":["../../src/services/CommandService.ts"],"sourcesContent":["import { spawn, SpawnOptions, ChildProcess } from 'child_process'\nimport { Writable } from 'stream'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport { ERROR_DIVIDER } from '@sprucelabs/spruce-skill-utils'\nimport escapeRegExp from 'lodash/escapeRegExp'\nimport stringArgv from 'string-argv'\nimport treeKill from 'tree-kill'\nimport SpruceError from '../errors/SpruceError'\n\nprocess.setMaxListeners(100)\n\ninterface MockResponse {\n\tcode: number\n\tstdout?: string\n\tstderr?: string\n\tcallback?: (executable: string, args: any[]) => void\n}\n\nexport default class CommandService {\n\tpublic cwd: string\n\tprivate activeChildProcess: ChildProcess | undefined\n\tprivate ignoreCloseErrors = false\n\tprivate static mockResponses: {\n\t\tcommand: string | RegExp\n\t\tresponse: MockResponse\n\t}[] = []\n\tprivate static commandsRunCapturedByMockResponses: string[] = []\n\n\tpublic constructor(cwd: string) {\n\t\tthis.cwd = cwd\n\t}\n\n\tpublic async execute(\n\t\tcmd: string,\n\t\toptions?: {\n\t\t\tignoreErrors?: boolean\n\t\t\targs?: string[]\n\t\t\tshouldStream?: boolean\n\t\t\toutStream?: Writable\n\t\t\tonError?: (error: string) => void\n\t\t\tonData?: (data: string) => void\n\t\t\tspawnOptions?: SpawnOptions\n\t\t\tforceColor?: boolean\n\t\t\tenv?: Record<string, any>\n\t\t}\n\t): Promise<{\n\t\tstdout: string\n\t}> {\n\t\tconst cwd = this.cwd\n\t\tconst args = options?.args || stringArgv(cmd)\n\t\tconst executable = options?.args ? cmd : args.shift()\n\t\tconst boundKill = this.kill.bind(this)\n\n\t\tif (!executable) {\n\t\t\tthrow new Error('Bad params sent to command service')\n\t\t}\n\n\t\tconst { mockResponse, mockKey } = this.getMockResponse(executable, args)\n\n\t\tif (mockResponse) {\n\t\t\tCommandService.commandsRunCapturedByMockResponses.push(mockKey)\n\t\t\tmockResponse.callback?.(executable, args)\n\n\t\t\tif (mockResponse.code !== 0) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\tcwd,\n\t\t\t\t\tstdout: mockResponse.stdout,\n\t\t\t\t\tstderr: mockResponse.stderr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn { stdout: mockResponse.stdout ?? '' }\n\t\t}\n\n\t\tprocess.on('exit', boundKill)\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet stdout = ''\n\t\t\tlet stderr = ''\n\t\t\tconst spawnOptions: SpawnOptions = options?.shouldStream\n\t\t\t\t? {\n\t\t\t\t\t\tstdio: 'inherit',\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshell: true,\n\t\t\t\t\t\t...options?.spawnOptions,\n\t\t\t\t }\n\n\t\t\tconst child = spawn(executable, args, spawnOptions)\n\t\t\tthis.activeChildProcess = child\n\n\t\t\tif (options?.outStream) {\n\t\t\t\tchild.stdout?.pipe(options.outStream)\n\t\t\t}\n\n\t\t\tchild.stdout?.addListener('data', (data) => {\n\t\t\t\toptions?.onData?.(data.toString())\n\t\t\t\tstdout += data\n\t\t\t})\n\n\t\t\tchild.stderr?.addListener('data', (data) => {\n\t\t\t\toptions?.onError?.(data.toString())\n\t\t\t\tstderr += data\n\t\t\t})\n\n\t\t\tconst closeHandler = (code: number) => {\n\t\t\t\tprocess.off('exit', boundKill)\n\n\t\t\t\tif (!this.activeChildProcess) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.activeChildProcess = undefined\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchild.stdout?.removeAllListeners()\n\t\t\t\t\tchild.stderr?.removeAllListeners()\n\t\t\t\t\tchild.removeAllListeners()\n\n\t\t\t\t\tif (code === 0 || this.ignoreCloseErrors || options?.ignoreErrors) {\n\t\t\t\t\t\tresolve({ stdout })\n\t\t\t\t\t\tthis.ignoreCloseErrors = false\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (stderr.search(escapeRegExp(ERROR_DIVIDER)) > -1) {\n\t\t\t\t\t\t\tconst stderrParts = stderr.split(ERROR_DIVIDER)\n\t\t\t\t\t\t\tconst err = AbstractSpruceError.parse(stderrParts[1], SpruceError)\n\t\t\t\t\t\t\treject(err)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treject(\n\t\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\tstdout,\n\t\t\t\t\t\t\t\tstderr,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}, 0)\n\t\t\t}\n\n\t\t\tchild.addListener('close', closeHandler)\n\t\t\tchild.addListener('exit', closeHandler)\n\t\t})\n\t}\n\n\tpublic kill = () => {\n\t\tif (this.activeChildProcess?.pid) {\n\t\t\tthis.ignoreCloseErrors = true\n\t\t\ttreeKill(this.activeChildProcess.pid, 'SIGTERM')\n\t\t}\n\t}\n\n\tpublic pid = () => {\n\t\treturn this.activeChildProcess?.pid\n\t}\n\n\tprivate getMockResponse(executable: string, args: string[]) {\n\t\tconst mockKey = `${executable} ${args.join(' ')}`.trim()\n\t\tconst commands = CommandService.mockResponses\n\t\tconst match = commands.find((r) =>\n\t\t\tr.command instanceof RegExp\n\t\t\t\t? mockKey.search(r.command) > -1\n\t\t\t\t: r.command.replace(/ +/gis, '') === mockKey.replace(/ +/gis, '')\n\t\t)\n\n\t\treturn { mockResponse: match?.response, mockKey }\n\t}\n\n\tpublic static fakeCommand(command: string | RegExp, response: MockResponse) {\n\t\tthis.mockResponses.unshift({\n\t\t\tcommand,\n\t\t\tresponse,\n\t\t})\n\t}\n\n\tpublic static clearMockResponses() {\n\t\tthis.mockResponses = []\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CommandService.js","names":["process","setMaxListeners","CommandService","cwd","activeChildProcess","pid","ignoreCloseErrors","treeKill","cmd","options","args","stringArgv","executable","shift","boundKill","kill","bind","Error","getMockResponse","mockResponse","mockKey","commandsRunCapturedByMockResponses","push","callback","code","SpruceError","join","stdout","stderr","on","Promise","resolve","reject","spawnOptions","shouldStream","stdio","env","PATH","IS_CLI","FORCE_COLOR","forceColor","shell","child","spawn","outStream","pipe","addListener","data","onData","toString","onError","closeHandler","off","undefined","setTimeout","removeAllListeners","ignoreErrors","search","escapeRegExp","ERROR_DIVIDER","stderrParts","split","err","AbstractSpruceError","parse","trim","commands","mockResponses","match","find","r","command","RegExp","replace","response","unshift"],"sources":["../../src/services/CommandService.ts"],"sourcesContent":["import { spawn, SpawnOptions, ChildProcess } from 'child_process'\nimport { Writable } from 'stream'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport { ERROR_DIVIDER } from '@sprucelabs/spruce-skill-utils'\nimport escapeRegExp from 'lodash/escapeRegExp'\nimport stringArgv from 'string-argv'\nimport treeKill from 'tree-kill'\nimport SpruceError from '../errors/SpruceError'\n\nprocess.setMaxListeners(100)\n\ninterface MockResponse {\n\tcode: number\n\tstdout?: string\n\tstderr?: string\n\tcallback?: (executable: string, args: any[]) => void\n}\n\nexport default class CommandService {\n\tpublic cwd: string\n\tprivate activeChildProcess: ChildProcess | undefined\n\tprivate ignoreCloseErrors = false\n\tprivate static mockResponses: {\n\t\tcommand: string | RegExp\n\t\tresponse: MockResponse\n\t}[] = []\n\tprivate static commandsRunCapturedByMockResponses: string[] = []\n\n\tpublic constructor(cwd: string) {\n\t\tthis.cwd = cwd\n\t}\n\n\tpublic async execute(\n\t\tcmd: string,\n\t\toptions?: {\n\t\t\tignoreErrors?: boolean\n\t\t\targs?: string[]\n\t\t\tshouldStream?: boolean\n\t\t\toutStream?: Writable\n\t\t\tonError?: (error: string) => void\n\t\t\tonData?: (data: string) => void\n\t\t\tspawnOptions?: SpawnOptions\n\t\t\tforceColor?: boolean\n\t\t\tenv?: Record<string, any>\n\t\t}\n\t): Promise<{\n\t\tstdout: string\n\t}> {\n\t\tconst cwd = this.cwd\n\t\tconst args = options?.args || stringArgv(cmd)\n\t\tconst executable = options?.args ? cmd : args.shift()\n\t\tconst boundKill = this.kill.bind(this)\n\n\t\tif (!executable) {\n\t\t\tthrow new Error('Bad params sent to command service')\n\t\t}\n\n\t\tconst { mockResponse, mockKey } = this.getMockResponse(executable, args)\n\n\t\tif (mockResponse) {\n\t\t\tCommandService.commandsRunCapturedByMockResponses.push(mockKey)\n\t\t\tmockResponse.callback?.(executable, args)\n\n\t\t\tif (mockResponse.code !== 0) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\tcwd,\n\t\t\t\t\tstdout: mockResponse.stdout,\n\t\t\t\t\tstderr: mockResponse.stderr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn { stdout: mockResponse.stdout ?? '' }\n\t\t}\n\n\t\tprocess.on('exit', boundKill)\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet stdout = ''\n\t\t\tlet stderr = ''\n\t\t\tconst spawnOptions: SpawnOptions = options?.shouldStream\n\t\t\t\t? {\n\t\t\t\t\t\tstdio: 'inherit',\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshell: true,\n\t\t\t\t\t\t...options?.spawnOptions,\n\t\t\t\t }\n\n\t\t\tconst child = spawn(executable, args, spawnOptions)\n\t\t\tthis.activeChildProcess = child\n\n\t\t\tif (options?.outStream) {\n\t\t\t\tchild.stdout?.pipe(options.outStream)\n\t\t\t}\n\n\t\t\tchild.stdout?.addListener('data', (data) => {\n\t\t\t\toptions?.onData?.(data.toString())\n\t\t\t\tstdout += data\n\t\t\t})\n\n\t\t\tchild.stderr?.addListener('data', (data) => {\n\t\t\t\toptions?.onError?.(data.toString())\n\t\t\t\tstderr += data\n\t\t\t})\n\n\t\t\tconst closeHandler = (code: number) => {\n\t\t\t\tprocess.off('exit', boundKill)\n\n\t\t\t\tif (!this.activeChildProcess) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.activeChildProcess = undefined\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchild.stdout?.removeAllListeners()\n\t\t\t\t\tchild.stderr?.removeAllListeners()\n\t\t\t\t\tchild.removeAllListeners()\n\n\t\t\t\t\tif (code === 0 || this.ignoreCloseErrors || options?.ignoreErrors) {\n\t\t\t\t\t\tresolve({ stdout })\n\t\t\t\t\t\tthis.ignoreCloseErrors = false\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (stderr.search(escapeRegExp(ERROR_DIVIDER)) > -1) {\n\t\t\t\t\t\t\tconst stderrParts = stderr.split(ERROR_DIVIDER)\n\t\t\t\t\t\t\tconst err = AbstractSpruceError.parse(stderrParts[1], SpruceError)\n\t\t\t\t\t\t\treject(err)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treject(\n\t\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\tstdout,\n\t\t\t\t\t\t\t\tstderr,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}, 0)\n\t\t\t}\n\n\t\t\tchild.addListener('close', closeHandler)\n\t\t\tchild.addListener('exit', closeHandler)\n\t\t})\n\t}\n\n\tpublic kill = () => {\n\t\tif (this.activeChildProcess?.pid) {\n\t\t\tthis.ignoreCloseErrors = true\n\t\t\ttreeKill(this.activeChildProcess.pid, 'SIGTERM')\n\t\t}\n\t}\n\n\tpublic pid = () => {\n\t\treturn this.activeChildProcess?.pid\n\t}\n\n\tprivate getMockResponse(executable: string, args: string[]) {\n\t\tconst mockKey = `${executable} ${args.join(' ')}`.trim()\n\t\tconst commands = CommandService.mockResponses\n\t\tconst match = commands.find((r) =>\n\t\t\tr.command instanceof RegExp\n\t\t\t\t? mockKey.search(r.command) > -1\n\t\t\t\t: r.command.replace(/ +/gis, '') === mockKey.replace(/ +/gis, '')\n\t\t)\n\n\t\treturn { mockResponse: match?.response, mockKey }\n\t}\n\n\tpublic static fakeCommand(command: string | RegExp, response: MockResponse) {\n\t\tthis.mockResponses.unshift({\n\t\t\tcommand,\n\t\t\tresponse,\n\t\t})\n\t}\n\n\tpublic static clearMockResponses() {\n\t\tthis.mockResponses = []\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GameService.js","names":["GameService","command","ui","cwd","diskUtil","resolvePath","__dirname","message","statusMessage","introductionSentences","sentencesToPlay","stopLoading","killed","length","next","shift","renderLine","Promise","r","setTimeout","execute","spawnOptions","stdio","process","stdin","onData","data","stdout","write","saveCursor","moveCursorTo","clearBelowCursor","restoreCursor","kill","clear"],"sources":["../../src/services/GameService.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport TerminalInterface from '../interfaces/TerminalInterface'\nimport CommandService from './CommandService'\n\nexport default class GameService {\n\tprivate command: CommandService\n\tprivate ui: TerminalInterface\n\tprivate statusMessage?: string\n\tprivate killed = false\n\n\tpublic constructor(command: CommandService, ui: TerminalInterface) {\n\t\tthis.command = command\n\t\tthis.ui = ui\n\t\tthis.command.cwd = diskUtil.resolvePath(__dirname, '../../')\n\t}\n\n\tpublic setStatusMessage(message: string) {\n\t\tthis.statusMessage = message\n\t}\n\n\tpublic async play(introductionSentences: string[] = []) {\n\t\tconst sentencesToPlay = [...introductionSentences]\n\t\tawait this.ui.stopLoading()\n\t\tthis.killed = false\n\n\t\twhile (sentencesToPlay.length > 0) {\n\t\t\tconst next = sentencesToPlay.shift() as string\n\t\t\tthis.ui.renderLine(next)\n\t\t\tawait new Promise((r) => setTimeout(r, 2000))\n\t\t\tif (this.killed) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tawait this.command.execute('node ./node_modules/.bin/js-tetris-cli', {\n\t\t\tspawnOptions: {\n\t\t\t\tstdio: [process.stdin, 'pipe', 'pipe'],\n\t\t\t},\n\t\t\tonData: (data: string) => {\n\t\t\t\tif (!this.killed) {\n\t\t\t\t\tprocess.stdout?.write(data)\n\t\t\t\t\tif (this.statusMessage) {\n\t\t\t\t\t\tthis.ui.saveCursor()\n\t\t\t\t\t\tthis.ui.moveCursorTo(0, 25)\n\t\t\t\t\t\tthis.ui.clearBelowCursor()\n\t\t\t\t\t\tprocess.stdout?.write(this.statusMessage)\n\t\t\t\t\t\tthis.ui.restoreCursor()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\t}\n\n\tpublic kill() {\n\t\tthis.killed = true\n\t\tthis.command.kill()\n\t\tthis.ui.clear()\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;IAIqBA,W;EAMpB,qBAAmBC,OAAnB,EAA4CC,EAA5C,EAAmE;IAAA;IAAA;IAAA;IAAA;IAAA,iDAFlD,KAEkD;IAClE,KAAKD,OAAL,GAAeA,OAAf;IACA,KAAKC,EAAL,GAAUA,EAAV;IACA,KAAKD,OAAL,CAAaE,GAAb,GAAmBC,
|
|
1
|
+
{"version":3,"file":"GameService.js","names":["GameService","command","ui","cwd","diskUtil","resolvePath","__dirname","message","statusMessage","introductionSentences","sentencesToPlay","stopLoading","killed","length","next","shift","renderLine","Promise","r","setTimeout","execute","spawnOptions","stdio","process","stdin","onData","data","stdout","write","saveCursor","moveCursorTo","clearBelowCursor","restoreCursor","kill","clear"],"sources":["../../src/services/GameService.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport TerminalInterface from '../interfaces/TerminalInterface'\nimport CommandService from './CommandService'\n\nexport default class GameService {\n\tprivate command: CommandService\n\tprivate ui: TerminalInterface\n\tprivate statusMessage?: string\n\tprivate killed = false\n\n\tpublic constructor(command: CommandService, ui: TerminalInterface) {\n\t\tthis.command = command\n\t\tthis.ui = ui\n\t\tthis.command.cwd = diskUtil.resolvePath(__dirname, '../../')\n\t}\n\n\tpublic setStatusMessage(message: string) {\n\t\tthis.statusMessage = message\n\t}\n\n\tpublic async play(introductionSentences: string[] = []) {\n\t\tconst sentencesToPlay = [...introductionSentences]\n\t\tawait this.ui.stopLoading()\n\t\tthis.killed = false\n\n\t\twhile (sentencesToPlay.length > 0) {\n\t\t\tconst next = sentencesToPlay.shift() as string\n\t\t\tthis.ui.renderLine(next)\n\t\t\tawait new Promise((r) => setTimeout(r, 2000))\n\t\t\tif (this.killed) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tawait this.command.execute('node ./node_modules/.bin/js-tetris-cli', {\n\t\t\tspawnOptions: {\n\t\t\t\tstdio: [process.stdin, 'pipe', 'pipe'],\n\t\t\t},\n\t\t\tonData: (data: string) => {\n\t\t\t\tif (!this.killed) {\n\t\t\t\t\tprocess.stdout?.write(data)\n\t\t\t\t\tif (this.statusMessage) {\n\t\t\t\t\t\tthis.ui.saveCursor()\n\t\t\t\t\t\tthis.ui.moveCursorTo(0, 25)\n\t\t\t\t\t\tthis.ui.clearBelowCursor()\n\t\t\t\t\t\tprocess.stdout?.write(this.statusMessage)\n\t\t\t\t\t\tthis.ui.restoreCursor()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\t}\n\n\tpublic kill() {\n\t\tthis.killed = true\n\t\tthis.command.kill()\n\t\tthis.ui.clear()\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;IAIqBA,W;EAMpB,qBAAmBC,OAAnB,EAA4CC,EAA5C,EAAmE;IAAA;IAAA;IAAA;IAAA;IAAA,iDAFlD,KAEkD;IAClE,KAAKD,OAAL,GAAeA,OAAf;IACA,KAAKC,EAAL,GAAUA,EAAV;IACA,KAAKD,OAAL,CAAaE,GAAb,GAAmBC,0BAAA,CAASC,WAAT,CAAqBC,SAArB,EAAgC,QAAhC,CAAnB;EACA;;;;WAED,0BAAwBC,OAAxB,EAAyC;MACxC,KAAKC,aAAL,GAAqBD,OAArB;IACA;;;;gGAED;QAAA;;QAAA;QAAA;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAkBE,qBAAlB,2DAAoD,EAApD;gBACOC,eADP,uCAC6BD,qBAD7B;gBAAA;gBAAA,OAEO,KAAKP,EAAL,CAAQS,WAAR,EAFP;;cAAA;gBAGC,KAAKC,MAAL,GAAc,KAAd;;cAHD;gBAAA,MAKQF,eAAe,CAACG,MAAhB,GAAyB,CALjC;kBAAA;kBAAA;gBAAA;;gBAMQC,IANR,GAMeJ,eAAe,CAACK,KAAhB,EANf;gBAOE,KAAKb,EAAL,CAAQc,UAAR,CAAmBF,IAAnB;gBAPF;gBAAA,OAQQ,IAAIG,OAAJ,CAAY,UAACC,CAAD;kBAAA,OAAOC,UAAU,CAACD,CAAD,EAAI,IAAJ,CAAjB;gBAAA,CAAZ,CARR;;cAAA;gBAAA,KASM,KAAKN,MATX;kBAAA;kBAAA;gBAAA;;gBAAA;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA,OAcO,KAAKX,OAAL,CAAamB,OAAb,CAAqB,wCAArB,EAA+D;kBACpEC,YAAY,EAAE;oBACbC,KAAK,EAAE,CAACC,OAAO,CAACC,KAAT,EAAgB,MAAhB,EAAwB,MAAxB;kBADM,CADsD;kBAIpEC,MAAM,EAAE,gBAACC,IAAD,EAAkB;oBACzB,IAAI,CAAC,KAAI,CAACd,MAAV,EAAkB;sBAAA;;sBACjB,mBAAAW,OAAO,CAACI,MAAR,oEAAgBC,KAAhB,CAAsBF,IAAtB;;sBACA,IAAI,KAAI,CAAClB,aAAT,EAAwB;wBAAA;;wBACvB,KAAI,CAACN,EAAL,CAAQ2B,UAAR;;wBACA,KAAI,CAAC3B,EAAL,CAAQ4B,YAAR,CAAqB,CAArB,EAAwB,EAAxB;;wBACA,KAAI,CAAC5B,EAAL,CAAQ6B,gBAAR;;wBACA,oBAAAR,OAAO,CAACI,MAAR,sEAAgBC,KAAhB,CAAsB,KAAI,CAACpB,aAA3B;;wBACA,KAAI,CAACN,EAAL,CAAQ8B,aAAR;sBACA;oBACD;kBACD;gBAfmE,CAA/D,CAdP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAiCA,gBAAc;MACb,KAAKpB,MAAL,GAAc,IAAd;MACA,KAAKX,OAAL,CAAagC,IAAb;MACA,KAAK/B,EAAL,CAAQgC,KAAR;IACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportService.js","names":["ImportService","options","file","isCachingEnabled","importAllUncached","pullHashAndContents","hash","fileContents","hasFileChanged","isDirty","haveImportsChanged","cachedImports","importAllCached","response","writeCacheFile","fs","existsSync","SpruceError","code","friendlyMessage","args","divider","errorDivider","search","command","execute","stdout","successParts","split","errParts","length","proxyError","buildErrorFromExecuteResponse","defaultImported","JSON","parse","originalError","importAll","imported","cwd","originalFilepath","contents","changed","importMatches","regex","exec","match","dir","pathUtil","dirname","nodeResolved","require","resolve","join","destination","resolveCacheFile","diskUtil","writeFile","stringify","cacheFile","readFile","err","Error","stack","files","filepath","resolvePath","filename","Date","getTime","imports","exports","idx","relative","replace","extname","fullPath","importDefault","results","deleteDir","resolvedFilePath","doesFileExist","cacheDir","importCacheDir","createTempDir"],"sources":["../../src/services/ImportService.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport fs from 'fs-extra'\nimport md5 from 'md5'\nimport SpruceError from '../errors/SpruceError'\nimport CommandService from './CommandService'\n\nexport default class ImportService {\n\tpublic cwd: string\n\n\tprivate divider = '## SPRUCE-CLI DIVIDER ##'\n\tprivate errorDivider = '## SPRUCE-CLI ERROR DIVIDER ##'\n\n\tprivate static cachedImports: Record<string, Record<string, any>> = {}\n\tprivate static importCacheDir: string =\n\t\tdiskUtil.createTempDir('import-service')\n\tprivate command: CommandService\n\tprivate static isCachingEnabled: boolean\n\n\tpublic constructor(options: { cwd: string; command: CommandService }) {\n\t\tthis.cwd = options.cwd\n\t\tthis.command = options.command\n\t}\n\n\tpublic importAll = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tif (!ImportService.isCachingEnabled) {\n\t\t\treturn this.importAllUncached(file)\n\t\t}\n\n\t\tconst { hash, fileContents } = this.pullHashAndContents(file)\n\n\t\tif (!this.hasFileChanged(hash)) {\n\t\t\tconst isDirty = this.haveImportsChanged(file, fileContents)\n\n\t\t\tif (!isDirty && ImportService.cachedImports[hash]) {\n\t\t\t\treturn ImportService.cachedImports[hash] as T\n\t\t\t} else if (!isDirty) {\n\t\t\t\tImportService.cachedImports[hash] = this.importAllCached(file)\n\t\t\t\treturn ImportService.cachedImports[hash] as T\n\t\t\t}\n\t\t}\n\n\t\tImportService.cachedImports[hash] = this.importAllUncached(file)\n\t\tconst response = (await ImportService.cachedImports[hash]) as T\n\t\tthis.writeCacheFile(hash, response)\n\n\t\treturn response\n\t}\n\n\tprivate haveImportsChanged(\n\t\toriginalFilepath: string,\n\t\tcontents: string\n\t): boolean {\n\t\tlet changed = false\n\t\tlet importMatches\n\n\t\t// only check files that start with dot because they are local and we can actually only check local files\n\t\tconst regex =\n\t\t\toriginalFilepath.search(/\\.js$/i) > -1\n\t\t\t\t? /require\\(['\"](\\..*?)['\"]\\)/gis\n\t\t\t\t: /import.*[\"'](\\..*?)[\"']/gis\n\n\t\twhile ((importMatches = regex.exec(contents)) !== null) {\n\t\t\ttry {\n\t\t\t\tconst match = importMatches[1]\n\t\t\t\tconst dir = pathUtil.dirname(originalFilepath)\n\t\t\t\tconst nodeResolved = require.resolve(pathUtil.join(dir, match))\n\t\t\t\tconst { hash } = this.pullHashAndContents(nodeResolved)\n\n\t\t\t\tif (this.hasFileChanged(hash)) {\n\t\t\t\t\tchanged = true\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tchanged = true\n\t\t\t}\n\t\t}\n\n\t\treturn changed\n\t}\n\n\tprivate writeCacheFile(hash: string, contents: Record<string, any>) {\n\t\tconst destination = this.resolveCacheFile(hash)\n\t\tdiskUtil.writeFile(destination, JSON.stringify(contents))\n\t}\n\n\tprivate importAllCached(file: string) {\n\t\tconst { hash } = this.pullHashAndContents(file)\n\n\t\tconst cacheFile = this.resolveCacheFile(hash)\n\t\tconst contents = diskUtil.readFile(cacheFile)\n\n\t\treturn JSON.parse(contents)\n\t}\n\n\tprivate importAllUncached = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tlet defaultImported: T | undefined\n\n\t\tif (!fs.existsSync(file)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\tfile,\n\t\t\t\tfriendlyMessage: `I couldn't import ${file} because I couldn't find it!`,\n\t\t\t})\n\t\t}\n\n\t\tlet args = [\n\t\t\t'-e',\n\t\t\t`\"try { const imported = require('${file}');console.log('${this.divider}');console.log(JSON.stringify(imported)); } catch(err) { console.log('${this.errorDivider}');console.log(err.options ? err.toString() : err.stack); }\"`,\n\t\t]\n\n\t\tif (file.search(/\\.ts$/i) > -1) {\n\t\t\targs = [\n\t\t\t\t'-r',\n\t\t\t\t'ts-node/register',\n\t\t\t\t'-r',\n\t\t\t\t'tsconfig-paths/register',\n\t\t\t\t...args,\n\t\t\t]\n\t\t}\n\n\t\ttry {\n\t\t\tconst { stdout } = await this.command.execute('node', {\n\t\t\t\targs,\n\t\t\t})\n\n\t\t\tconst successParts = stdout.split(this.divider)\n\t\t\tconst errParts = stdout.split(this.errorDivider)\n\n\t\t\tif (errParts.length > 1) {\n\t\t\t\tconst proxyError = this.buildErrorFromExecuteResponse(\n\t\t\t\t\terrParts,\n\t\t\t\t\tfile,\n\t\t\t\t\tstdout\n\t\t\t\t)\n\n\t\t\t\tthrow proxyError\n\t\t\t} else {\n\t\t\t\tdefaultImported = JSON.parse(successParts[1])\n\t\t\t}\n\t\t} catch (err: any) {\n\t\t\tif (err instanceof SpruceError) {\n\t\t\t\tthrow err\n\t\t\t} else {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\tfile,\n\t\t\t\t\toriginalError: err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn defaultImported as T\n\t}\n\n\tpublic importDefault = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tconst imported: any = await this.importAll(file)\n\t\treturn imported.default as T\n\t}\n\n\tprivate buildErrorFromExecuteResponse(\n\t\terrParts: string[],\n\t\tfile: string,\n\t\tstdout: string\n\t) {\n\t\tlet err: Record<string, any> = {}\n\t\ttry {\n\t\t\terr = JSON.parse(errParts[1])\n\t\t\tif (!err.options) {\n\t\t\t\tthrow Error('Capture and reported below')\n\t\t\t}\n\t\t} catch {\n\t\t\terr = {\n\t\t\t\toptions: {\n\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\tfile,\n\t\t\t\t\tfriendlyMessage: `Unknown error from import, output was: \\n\\n\"${\n\t\t\t\t\t\terrParts[1] ?? stdout\n\t\t\t\t\t}\"`,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst proxyError = new SpruceError(err.options)\n\n\t\tif (err.stack) {\n\t\t\tproxyError.stack = err.stack\n\t\t}\n\t\treturn proxyError\n\t}\n\n\tpublic async bulkImport(files: string[]): Promise<any[]> {\n\t\tif (files.length === 0) {\n\t\t\treturn []\n\t\t}\n\t\tconst filepath = diskUtil.resolvePath(this.cwd, '.tmp')\n\t\tconst filename = 'bulk-import-' + new Date().getTime() + '.ts'\n\n\t\tlet imports = ``\n\t\tlet exports = `export default [\\n`\n\n\t\tlet idx = 0\n\t\tfor (const file of files) {\n\t\t\tconst relative = pathUtil\n\t\t\t\t.relative(filepath, file)\n\t\t\t\t.replace(pathUtil.extname(file), '')\n\n\t\t\timports += `import { default as import${idx}} from '${relative}'\\n`\n\t\t\texports += `import${idx},\\n`\n\t\t\tidx++\n\t\t}\n\n\t\texports += ']'\n\n\t\tconst contents = imports + `\\n\\n` + exports\n\t\tconst fullPath = pathUtil.join(filepath, filename)\n\t\tdiskUtil.writeFile(fullPath, contents)\n\n\t\ttry {\n\t\t\tconst results = (await this.importDefault(fullPath)) as any[]\n\n\t\t\treturn results as any\n\t\t} catch (err) {\n\t\t\t// if something failed, lets load one at a time until we find the one that failes\n\t\t\tfor (const file of files) {\n\t\t\t\tconst imported = await this.importDefault(file)\n\t\t\t\tif (!imported) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\tfriendlyMessage: `Looks like ${file} does not export default.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthrow err\n\t\t} finally {\n\t\t\tdiskUtil.deleteDir(filepath)\n\t\t}\n\t}\n\n\tpublic static clearCache() {\n\t\tImportService.cachedImports = {}\n\t\tdiskUtil.deleteDir(this.cacheDir())\n\t}\n\n\tpublic static setCacheDir(cacheDir: string) {\n\t\tthis.importCacheDir = cacheDir\n\t}\n\n\tpublic static disableCache() {\n\t\tthis.isCachingEnabled = false\n\t}\n\n\tpublic static enableCaching() {\n\t\tthis.isCachingEnabled = true\n\t}\n\n\tprivate hasFileChanged(hash: string) {\n\t\tconst resolvedFilePath = this.resolveCacheFile(hash)\n\t\treturn !diskUtil.doesFileExist(resolvedFilePath)\n\t}\n\n\tprivate resolveCacheFile(hash: string) {\n\t\treturn diskUtil.resolvePath(ImportService.cacheDir(), hash + '.json')\n\t}\n\n\tprivate static cacheDir(): string {\n\t\treturn this.importCacheDir\n\t}\n\n\tprivate pullHashAndContents(file: string) {\n\t\tconst fileContents = diskUtil.readFile(file)\n\t\tconst hash = md5(fileContents)\n\t\treturn { hash, fileContents }\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ImportService.js","names":["ImportService","options","file","isCachingEnabled","importAllUncached","pullHashAndContents","hash","fileContents","hasFileChanged","isDirty","haveImportsChanged","cachedImports","importAllCached","response","writeCacheFile","fs","existsSync","SpruceError","code","friendlyMessage","args","divider","errorDivider","search","command","execute","stdout","successParts","split","errParts","length","proxyError","buildErrorFromExecuteResponse","defaultImported","JSON","parse","originalError","importAll","imported","cwd","originalFilepath","contents","changed","importMatches","regex","exec","match","dir","pathUtil","dirname","nodeResolved","require","resolve","join","destination","resolveCacheFile","diskUtil","writeFile","stringify","cacheFile","readFile","err","Error","stack","files","filepath","resolvePath","filename","Date","getTime","imports","exports","idx","relative","replace","extname","fullPath","importDefault","results","deleteDir","resolvedFilePath","doesFileExist","cacheDir","md5","importCacheDir","createTempDir"],"sources":["../../src/services/ImportService.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport fs from 'fs-extra'\nimport md5 from 'md5'\nimport SpruceError from '../errors/SpruceError'\nimport CommandService from './CommandService'\n\nexport default class ImportService {\n\tpublic cwd: string\n\n\tprivate divider = '## SPRUCE-CLI DIVIDER ##'\n\tprivate errorDivider = '## SPRUCE-CLI ERROR DIVIDER ##'\n\n\tprivate static cachedImports: Record<string, Record<string, any>> = {}\n\tprivate static importCacheDir: string =\n\t\tdiskUtil.createTempDir('import-service')\n\tprivate command: CommandService\n\tprivate static isCachingEnabled: boolean\n\n\tpublic constructor(options: { cwd: string; command: CommandService }) {\n\t\tthis.cwd = options.cwd\n\t\tthis.command = options.command\n\t}\n\n\tpublic importAll = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tif (!ImportService.isCachingEnabled) {\n\t\t\treturn this.importAllUncached(file)\n\t\t}\n\n\t\tconst { hash, fileContents } = this.pullHashAndContents(file)\n\n\t\tif (!this.hasFileChanged(hash)) {\n\t\t\tconst isDirty = this.haveImportsChanged(file, fileContents)\n\n\t\t\tif (!isDirty && ImportService.cachedImports[hash]) {\n\t\t\t\treturn ImportService.cachedImports[hash] as T\n\t\t\t} else if (!isDirty) {\n\t\t\t\tImportService.cachedImports[hash] = this.importAllCached(file)\n\t\t\t\treturn ImportService.cachedImports[hash] as T\n\t\t\t}\n\t\t}\n\n\t\tImportService.cachedImports[hash] = this.importAllUncached(file)\n\t\tconst response = (await ImportService.cachedImports[hash]) as T\n\t\tthis.writeCacheFile(hash, response)\n\n\t\treturn response\n\t}\n\n\tprivate haveImportsChanged(\n\t\toriginalFilepath: string,\n\t\tcontents: string\n\t): boolean {\n\t\tlet changed = false\n\t\tlet importMatches\n\n\t\t// only check files that start with dot because they are local and we can actually only check local files\n\t\tconst regex =\n\t\t\toriginalFilepath.search(/\\.js$/i) > -1\n\t\t\t\t? /require\\(['\"](\\..*?)['\"]\\)/gis\n\t\t\t\t: /import.*[\"'](\\..*?)[\"']/gis\n\n\t\twhile ((importMatches = regex.exec(contents)) !== null) {\n\t\t\ttry {\n\t\t\t\tconst match = importMatches[1]\n\t\t\t\tconst dir = pathUtil.dirname(originalFilepath)\n\t\t\t\tconst nodeResolved = require.resolve(pathUtil.join(dir, match))\n\t\t\t\tconst { hash } = this.pullHashAndContents(nodeResolved)\n\n\t\t\t\tif (this.hasFileChanged(hash)) {\n\t\t\t\t\tchanged = true\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tchanged = true\n\t\t\t}\n\t\t}\n\n\t\treturn changed\n\t}\n\n\tprivate writeCacheFile(hash: string, contents: Record<string, any>) {\n\t\tconst destination = this.resolveCacheFile(hash)\n\t\tdiskUtil.writeFile(destination, JSON.stringify(contents))\n\t}\n\n\tprivate importAllCached(file: string) {\n\t\tconst { hash } = this.pullHashAndContents(file)\n\n\t\tconst cacheFile = this.resolveCacheFile(hash)\n\t\tconst contents = diskUtil.readFile(cacheFile)\n\n\t\treturn JSON.parse(contents)\n\t}\n\n\tprivate importAllUncached = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tlet defaultImported: T | undefined\n\n\t\tif (!fs.existsSync(file)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\tfile,\n\t\t\t\tfriendlyMessage: `I couldn't import ${file} because I couldn't find it!`,\n\t\t\t})\n\t\t}\n\n\t\tlet args = [\n\t\t\t'-e',\n\t\t\t`\"try { const imported = require('${file}');console.log('${this.divider}');console.log(JSON.stringify(imported)); } catch(err) { console.log('${this.errorDivider}');console.log(err.options ? err.toString() : err.stack); }\"`,\n\t\t]\n\n\t\tif (file.search(/\\.ts$/i) > -1) {\n\t\t\targs = [\n\t\t\t\t'-r',\n\t\t\t\t'ts-node/register',\n\t\t\t\t'-r',\n\t\t\t\t'tsconfig-paths/register',\n\t\t\t\t...args,\n\t\t\t]\n\t\t}\n\n\t\ttry {\n\t\t\tconst { stdout } = await this.command.execute('node', {\n\t\t\t\targs,\n\t\t\t})\n\n\t\t\tconst successParts = stdout.split(this.divider)\n\t\t\tconst errParts = stdout.split(this.errorDivider)\n\n\t\t\tif (errParts.length > 1) {\n\t\t\t\tconst proxyError = this.buildErrorFromExecuteResponse(\n\t\t\t\t\terrParts,\n\t\t\t\t\tfile,\n\t\t\t\t\tstdout\n\t\t\t\t)\n\n\t\t\t\tthrow proxyError\n\t\t\t} else {\n\t\t\t\tdefaultImported = JSON.parse(successParts[1])\n\t\t\t}\n\t\t} catch (err: any) {\n\t\t\tif (err instanceof SpruceError) {\n\t\t\t\tthrow err\n\t\t\t} else {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\tfile,\n\t\t\t\t\toriginalError: err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn defaultImported as T\n\t}\n\n\tpublic importDefault = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tconst imported: any = await this.importAll(file)\n\t\treturn imported.default as T\n\t}\n\n\tprivate buildErrorFromExecuteResponse(\n\t\terrParts: string[],\n\t\tfile: string,\n\t\tstdout: string\n\t) {\n\t\tlet err: Record<string, any> = {}\n\t\ttry {\n\t\t\terr = JSON.parse(errParts[1])\n\t\t\tif (!err.options) {\n\t\t\t\tthrow Error('Capture and reported below')\n\t\t\t}\n\t\t} catch {\n\t\t\terr = {\n\t\t\t\toptions: {\n\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\tfile,\n\t\t\t\t\tfriendlyMessage: `Unknown error from import, output was: \\n\\n\"${\n\t\t\t\t\t\terrParts[1] ?? stdout\n\t\t\t\t\t}\"`,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst proxyError = new SpruceError(err.options)\n\n\t\tif (err.stack) {\n\t\t\tproxyError.stack = err.stack\n\t\t}\n\t\treturn proxyError\n\t}\n\n\tpublic async bulkImport(files: string[]): Promise<any[]> {\n\t\tif (files.length === 0) {\n\t\t\treturn []\n\t\t}\n\t\tconst filepath = diskUtil.resolvePath(this.cwd, '.tmp')\n\t\tconst filename = 'bulk-import-' + new Date().getTime() + '.ts'\n\n\t\tlet imports = ``\n\t\tlet exports = `export default [\\n`\n\n\t\tlet idx = 0\n\t\tfor (const file of files) {\n\t\t\tconst relative = pathUtil\n\t\t\t\t.relative(filepath, file)\n\t\t\t\t.replace(pathUtil.extname(file), '')\n\n\t\t\timports += `import { default as import${idx}} from '${relative}'\\n`\n\t\t\texports += `import${idx},\\n`\n\t\t\tidx++\n\t\t}\n\n\t\texports += ']'\n\n\t\tconst contents = imports + `\\n\\n` + exports\n\t\tconst fullPath = pathUtil.join(filepath, filename)\n\t\tdiskUtil.writeFile(fullPath, contents)\n\n\t\ttry {\n\t\t\tconst results = (await this.importDefault(fullPath)) as any[]\n\n\t\t\treturn results as any\n\t\t} catch (err) {\n\t\t\t// if something failed, lets load one at a time until we find the one that failes\n\t\t\tfor (const file of files) {\n\t\t\t\tconst imported = await this.importDefault(file)\n\t\t\t\tif (!imported) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\tfriendlyMessage: `Looks like ${file} does not export default.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthrow err\n\t\t} finally {\n\t\t\tdiskUtil.deleteDir(filepath)\n\t\t}\n\t}\n\n\tpublic static clearCache() {\n\t\tImportService.cachedImports = {}\n\t\tdiskUtil.deleteDir(this.cacheDir())\n\t}\n\n\tpublic static setCacheDir(cacheDir: string) {\n\t\tthis.importCacheDir = cacheDir\n\t}\n\n\tpublic static disableCache() {\n\t\tthis.isCachingEnabled = false\n\t}\n\n\tpublic static enableCaching() {\n\t\tthis.isCachingEnabled = true\n\t}\n\n\tprivate hasFileChanged(hash: string) {\n\t\tconst resolvedFilePath = this.resolveCacheFile(hash)\n\t\treturn !diskUtil.doesFileExist(resolvedFilePath)\n\t}\n\n\tprivate resolveCacheFile(hash: string) {\n\t\treturn diskUtil.resolvePath(ImportService.cacheDir(), hash + '.json')\n\t}\n\n\tprivate static cacheDir(): string {\n\t\treturn this.importCacheDir\n\t}\n\n\tprivate pullHashAndContents(file: string) {\n\t\tconst fileContents = diskUtil.readFile(file)\n\t\tconst hash = md5(fileContents)\n\t\treturn { hash, fileContents }\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LintService.js","names":["LintService","cwd","commandServiceFactory","pattern","SchemaError","code","parameters","isLintingEnabled","fixedFiles","fixedPaths","script","getCommand","execute","args","stdout","JSON","parse","SpruceError","originalError","i","length","fixedFile","output","fs","writeFile","filePath","push","messages","errorCount","friendlyMessage","map","m","message","join"],"sources":["../../src/services/LintService.ts"],"sourcesContent":["import { SchemaError } from '@sprucelabs/schema'\n// import { ESLint } from 'eslint'\nimport fs from 'fs-extra'\nimport SpruceError from '../errors/SpruceError'\nimport CommandService from './CommandService'\n\nexport default class LintService {\n\tpublic cwd: string\n\tprivate getCommand: () => CommandService\n\n\tprivate static isLintingEnabled = true\n\n\tpublic static disableLinting() {\n\t\tthis.isLintingEnabled = false\n\t}\n\n\tpublic static enableLinting() {\n\t\tthis.isLintingEnabled = true\n\t}\n\n\tpublic constructor(cwd: string, commandServiceFactory: () => CommandService) {\n\t\tthis.cwd = cwd\n\t\tthis.getCommand = commandServiceFactory\n\t}\n\n\tpublic fix = async (pattern: string): Promise<string[]> => {\n\t\tif (!pattern) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'MISSING_PARAMETERS',\n\t\t\t\tparameters: ['pattern'],\n\t\t\t})\n\t\t}\n\n\t\tif (!LintService.isLintingEnabled) {\n\t\t\treturn []\n\t\t}\n\n\t\tlet fixedFiles: any = {}\n\t\tconst fixedPaths: string[] = []\n\n\t\ttry {\n\t\t\t// const cli = new ESLint({ fix: true, cwd: this.cwd, cache: true })\n\t\t\t// fixedFiles = await cli.lintFiles([pattern])\n\t\t\tconst script = `\"(async function lint() { try { const { ESLint } = require('eslint'); const cli = new ESLint({ fix: true, cwd: '${this.cwd}', }); const result = await cli.lintFiles(['${pattern}']); console.log(JSON.stringify(result)); } catch (err) { console.log(err.toString()); }})()\"`\n\n\t\t\tconst { stdout } = await this.getCommand().execute('node', {\n\t\t\t\targs: ['-e', script],\n\t\t\t})\n\n\t\t\tfixedFiles = JSON.parse(stdout)\n\t\t} catch (err: any) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'LINT_FAILED',\n\t\t\t\tpattern,\n\t\t\t\toriginalError: err,\n\t\t\t})\n\t\t}\n\n\t\tif (fixedFiles) {\n\t\t\tfor (let i = 0; i < fixedFiles.length; i += 1) {\n\t\t\t\tconst fixedFile = fixedFiles[i]\n\n\t\t\t\tif (fixedFile?.output) {\n\t\t\t\t\tawait fs.writeFile(fixedFile.filePath, fixedFile.output)\n\t\t\t\t\tfixedPaths.push(fixedFile.filePath)\n\t\t\t\t} else if (fixedFile?.messages && fixedFile?.errorCount > 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'LINT_FAILED',\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tfriendlyMessage: `Lint error with '${\n\t\t\t\t\t\t\tfixedFile.filePath\n\t\t\t\t\t\t}':\\n\\n${fixedFile.messages\n\t\t\t\t\t\t\t.map((m: any) => m?.message)\n\t\t\t\t\t\t\t.join('\\n')}`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fixedPaths\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AAFA;IAKqBA,W;EAcpB,qBAAmBC,GAAnB,EAAgCC,qBAAhC,EAA6E;IAAA;;IAAA;IAAA;IAAA;IAAA;MAAA,yFAKhE,iBAAOC,OAAP;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA,IACPA,OADO;kBAAA;kBAAA;gBAAA;;gBAAA,MAEL,IAAIC,mBAAJ,CAAgB;kBACrBC,IAAI,EAAE,oBADe;kBAErBC,UAAU,EAAE,CAAC,SAAD;gBAFS,CAAhB,CAFK;;cAAA;gBAAA,IAQPN,WAAW,CAACO,gBARL;kBAAA;kBAAA;gBAAA;;gBAAA,iCASJ,EATI;;cAAA;gBAYRC,UAZQ,GAYU,EAZV;gBAaNC,UAbM,GAaiB,EAbjB;gBAAA;gBAgBX;gBACA;gBACMC,MAlBK,8HAkBuH,KAAI,CAACT,GAlB5H,yDAkB8KE,OAlB9K;gBAAA;gBAAA,OAoBc,KAAI,CAACQ,UAAL,GAAkBC,OAAlB,CAA0B,MAA1B,EAAkC;kBAC1DC,IAAI,EAAE,CAAC,IAAD,EAAOH,MAAP;gBADoD,CAAlC,CApBd;;cAAA;gBAAA;gBAoBHI,MApBG,yBAoBHA,MApBG;gBAwBXN,UAAU,GAAGO,IAAI,CAACC,KAAL,CAAWF,MAAX,CAAb;gBAxBW;gBAAA;;cAAA;gBAAA;gBAAA;gBAAA,MA0BL,IAAIG,uBAAJ,CAAgB;kBACrBZ,IAAI,EAAE,aADe;kBAErBF,OAAO,EAAPA,OAFqB;kBAGrBe,aAAa;gBAHQ,CAAhB,CA1BK;;cAAA;gBAAA,KAiCRV,UAjCQ;kBAAA;kBAAA;gBAAA;;gBAkCFW,CAlCE,GAkCE,CAlCF;;cAAA;gBAAA,MAkCKA,CAAC,GAAGX,UAAU,CAACY,MAlCpB;kBAAA;kBAAA;gBAAA;;gBAmCJC,SAnCI,GAmCQb,UAAU,CAACW,CAAD,CAnClB;;gBAAA,MAqCNE,SArCM,aAqCNA,SArCM,eAqCNA,SAAS,CAAEC,MArCL;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAsCHC,
|
|
1
|
+
{"version":3,"file":"LintService.js","names":["LintService","cwd","commandServiceFactory","pattern","SchemaError","code","parameters","isLintingEnabled","fixedFiles","fixedPaths","script","getCommand","execute","args","stdout","JSON","parse","SpruceError","originalError","i","length","fixedFile","output","fs","writeFile","filePath","push","messages","errorCount","friendlyMessage","map","m","message","join"],"sources":["../../src/services/LintService.ts"],"sourcesContent":["import { SchemaError } from '@sprucelabs/schema'\n// import { ESLint } from 'eslint'\nimport fs from 'fs-extra'\nimport SpruceError from '../errors/SpruceError'\nimport CommandService from './CommandService'\n\nexport default class LintService {\n\tpublic cwd: string\n\tprivate getCommand: () => CommandService\n\n\tprivate static isLintingEnabled = true\n\n\tpublic static disableLinting() {\n\t\tthis.isLintingEnabled = false\n\t}\n\n\tpublic static enableLinting() {\n\t\tthis.isLintingEnabled = true\n\t}\n\n\tpublic constructor(cwd: string, commandServiceFactory: () => CommandService) {\n\t\tthis.cwd = cwd\n\t\tthis.getCommand = commandServiceFactory\n\t}\n\n\tpublic fix = async (pattern: string): Promise<string[]> => {\n\t\tif (!pattern) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'MISSING_PARAMETERS',\n\t\t\t\tparameters: ['pattern'],\n\t\t\t})\n\t\t}\n\n\t\tif (!LintService.isLintingEnabled) {\n\t\t\treturn []\n\t\t}\n\n\t\tlet fixedFiles: any = {}\n\t\tconst fixedPaths: string[] = []\n\n\t\ttry {\n\t\t\t// const cli = new ESLint({ fix: true, cwd: this.cwd, cache: true })\n\t\t\t// fixedFiles = await cli.lintFiles([pattern])\n\t\t\tconst script = `\"(async function lint() { try { const { ESLint } = require('eslint'); const cli = new ESLint({ fix: true, cwd: '${this.cwd}', }); const result = await cli.lintFiles(['${pattern}']); console.log(JSON.stringify(result)); } catch (err) { console.log(err.toString()); }})()\"`\n\n\t\t\tconst { stdout } = await this.getCommand().execute('node', {\n\t\t\t\targs: ['-e', script],\n\t\t\t})\n\n\t\t\tfixedFiles = JSON.parse(stdout)\n\t\t} catch (err: any) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'LINT_FAILED',\n\t\t\t\tpattern,\n\t\t\t\toriginalError: err,\n\t\t\t})\n\t\t}\n\n\t\tif (fixedFiles) {\n\t\t\tfor (let i = 0; i < fixedFiles.length; i += 1) {\n\t\t\t\tconst fixedFile = fixedFiles[i]\n\n\t\t\t\tif (fixedFile?.output) {\n\t\t\t\t\tawait fs.writeFile(fixedFile.filePath, fixedFile.output)\n\t\t\t\t\tfixedPaths.push(fixedFile.filePath)\n\t\t\t\t} else if (fixedFile?.messages && fixedFile?.errorCount > 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'LINT_FAILED',\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tfriendlyMessage: `Lint error with '${\n\t\t\t\t\t\t\tfixedFile.filePath\n\t\t\t\t\t\t}':\\n\\n${fixedFile.messages\n\t\t\t\t\t\t\t.map((m: any) => m?.message)\n\t\t\t\t\t\t\t.join('\\n')}`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fixedPaths\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkgService.js","names":["PkgService","cwd","commandService","pkg","options","shouldCleanupLockFiles","deleteLockFile","bind","execute","args","totalInstalled","totalSkipped","packages","Array","isArray","toInstall","labsModules","thisPackage","isInstalled","shouldForceInstall","startsWith","push","stripLatest","buildCommandAndArgs","executable","diskUtil","doesDirExist","pathUtil","join","_parsedPkg","undefined","length","install","createRandomTempDir","filter","a","isDev","BasePkgService"],"sources":["../../src/services/PkgService.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tdiskUtil,\n\tPkgService as BasePkgService,\n} from '@sprucelabs/spruce-skill-utils'\nimport isCi from '../utilities/isCi'\nimport CommandService from './CommandService'\n\nexport interface AddOptions {\n\tisDev?: boolean\n\tshouldForceInstall?: boolean\n\tshouldCleanupLockFiles?: boolean\n}\n\nexport default class PkgService extends BasePkgService {\n\tprivate commandService: CommandService\n\n\tpublic constructor(cwd: string, commandService: CommandService) {\n\t\tsuper(cwd)\n\t\tthis.commandService = commandService\n\t}\n\n\tpublic async install(pkg?: string[] | string, options?: AddOptions) {\n\t\tconst shouldCleanupLockFiles = options?.shouldCleanupLockFiles !== false\n\t\tconst deleteLockFile = shouldCleanupLockFiles\n\t\t\t? this.deleteLockFile.bind(this)\n\t\t\t: () => {}\n\n\t\tif (!pkg) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t\tdeleteLockFile()\n\t\t\treturn { totalInstalled: -1, totalSkipped: -1 }\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst toInstall = []\n\t\tconst labsModules: string[] = []\n\n\t\tlet totalInstalled = 0\n\t\tlet totalSkipped = 0\n\n\t\tfor (const thisPackage of packages) {\n\t\t\tconst isInstalled =\n\t\t\t\t!options?.shouldForceInstall && this.isInstalled(thisPackage)\n\t\t\tif (thisPackage.startsWith('@sprucelabs/') || !isInstalled) {\n\t\t\t\ttoInstall.push(this.stripLatest(thisPackage))\n\t\t\t\ttotalInstalled++\n\t\t\t} else {\n\t\t\t\ttotalSkipped++\n\t\t\t}\n\t\t}\n\n\t\tif (totalInstalled > 0) {\n\t\t\tconst { executable, args } = PkgService.buildCommandAndArgs(\n\t\t\t\ttoInstall,\n\t\t\t\toptions\n\t\t\t)\n\n\t\t\tawait this.commandService.execute(executable, {\n\t\t\t\targs,\n\t\t\t})\n\t\t} else if (\n\t\t\t!diskUtil.doesDirExist(pathUtil.join(this.cwd, 'node_modules'))\n\t\t) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tthis._parsedPkg = undefined\n\n\t\treturn { totalInstalled: totalInstalled + labsModules.length, totalSkipped }\n\t}\n\n\tpublic static buildCommandAndArgs(\n\t\ttoInstall: string[],\n\t\toptions: AddOptions | undefined\n\t) {\n\t\tconst args: any[] = [\n\t\t\tisCi() && '--cache-folder',\n\t\t\tisCi() && diskUtil.createRandomTempDir(),\n\t\t\t'add',\n\t\t\t...toInstall,\n\t\t].filter((a) => !!a)\n\n\t\tif (options?.isDev) {\n\t\t\targs.push('-D')\n\t\t}\n\n\t\tconst executable = 'yarn'\n\t\treturn { executable, args }\n\t}\n\n\tpublic async uninstall(pkg: string[] | string) {\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst args: string[] = ['uninstall', ...packages]\n\t\tawait this.commandService.execute('npm', {\n\t\t\targs,\n\t\t})\n\n\t\tthis._parsedPkg = undefined\n\n\t\tawait this.install()\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAIA;;;;;;;;;;;;IASqBA,U;;;;;EAGpB,oBAAmBC,GAAnB,EAAgCC,cAAhC,EAAgE;IAAA;;IAAA;IAC/D,0BAAMD,GAAN;IAD+D;IAE/D,MAAKC,cAAL,GAAsBA,cAAtB;IAF+D;EAG/D;;;;;mGAED,iBAAqBC,GAArB,EAA8CC,OAA9C;QAAA;;QAAA;UAAA;YAAA;cAAA;gBACOC,sBADP,GACgC,CAAAD,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEC,sBAAT,MAAoC,KADpE;gBAEOC,cAFP,GAEwBD,sBAAsB,GAC1C,KAAKC,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CAD0C,GAE1C,YAAM,CAAE,CAJZ;;gBAAA,IAMMJ,GANN;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAOQ,KAAKD,cAAL,CAAoBM,OAApB,CAA4B,MAA5B,EAAoC;kBAAEC,IAAI,EAAE,CAAC,SAAD;gBAAR,CAApC,CAPR;;cAAA;gBAQEH,cAAc;gBARhB,iCASS;kBAAEI,cAAc,EAAE,CAAC,CAAnB;kBAAsBC,YAAY,EAAE,CAAC;gBAArC,CATT;;cAAA;gBAYCL,cAAc;gBAERM,QAdP,GAckBC,KAAK,CAACC,OAAN,CAAcX,GAAd,IAAqBA,GAArB,GAA2B,CAACA,GAAD,CAd7C;gBAeOY,SAfP,GAemB,EAfnB;gBAgBOC,WAhBP,GAgB+B,EAhB/B;gBAkBKN,cAlBL,GAkBsB,CAlBtB;gBAmBKC,YAnBL,GAmBoB,CAnBpB;gBAAA,uCAqB2BC,QArB3B;;gBAAA;kBAqBC,oDAAoC;oBAAzBK,WAAyB;oBAC7BC,WAD6B,GAElC,EAACd,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEe,kBAAV,KAAgC,KAAKD,WAAL,CAAiBD,WAAjB,CAFE;;oBAGnC,IAAIA,WAAW,CAACG,UAAZ,CAAuB,cAAvB,KAA0C,CAACF,WAA/C,EAA4D;sBAC3DH,SAAS,CAACM,IAAV,CAAe,KAAKC,WAAL,CAAiBL,WAAjB,CAAf;sBACAP,cAAc;oBACd,CAHD,MAGO;sBACNC,YAAY;oBACZ;kBACD;gBA9BF;kBAAA;gBAAA;kBAAA;gBAAA;;gBAAA,MAgCKD,cAAc,GAAG,CAhCtB;kBAAA;kBAAA;gBAAA;;gBAAA,wBAiC+BV,UAAU,CAACuB,mBAAX,CAC5BR,SAD4B,EAE5BX,OAF4B,CAjC/B,EAiCUoB,UAjCV,yBAiCUA,UAjCV,EAiCsBf,IAjCtB,yBAiCsBA,IAjCtB;gBAAA;gBAAA,OAsCQ,KAAKP,cAAL,CAAoBM,OAApB,CAA4BgB,UAA5B,EAAwC;kBAC7Cf,IAAI,EAAJA;gBAD6C,CAAxC,CAtCR;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA,IA0CGgB,
|
|
1
|
+
{"version":3,"file":"PkgService.js","names":["PkgService","cwd","commandService","pkg","options","shouldCleanupLockFiles","deleteLockFile","bind","execute","args","totalInstalled","totalSkipped","packages","Array","isArray","toInstall","labsModules","thisPackage","isInstalled","shouldForceInstall","startsWith","push","stripLatest","buildCommandAndArgs","executable","diskUtil","doesDirExist","pathUtil","join","_parsedPkg","undefined","length","install","isCi","createRandomTempDir","filter","a","isDev","BasePkgService"],"sources":["../../src/services/PkgService.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tdiskUtil,\n\tPkgService as BasePkgService,\n} from '@sprucelabs/spruce-skill-utils'\nimport isCi from '../utilities/isCi'\nimport CommandService from './CommandService'\n\nexport interface AddOptions {\n\tisDev?: boolean\n\tshouldForceInstall?: boolean\n\tshouldCleanupLockFiles?: boolean\n}\n\nexport default class PkgService extends BasePkgService {\n\tprivate commandService: CommandService\n\n\tpublic constructor(cwd: string, commandService: CommandService) {\n\t\tsuper(cwd)\n\t\tthis.commandService = commandService\n\t}\n\n\tpublic async install(pkg?: string[] | string, options?: AddOptions) {\n\t\tconst shouldCleanupLockFiles = options?.shouldCleanupLockFiles !== false\n\t\tconst deleteLockFile = shouldCleanupLockFiles\n\t\t\t? this.deleteLockFile.bind(this)\n\t\t\t: () => {}\n\n\t\tif (!pkg) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t\tdeleteLockFile()\n\t\t\treturn { totalInstalled: -1, totalSkipped: -1 }\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst toInstall = []\n\t\tconst labsModules: string[] = []\n\n\t\tlet totalInstalled = 0\n\t\tlet totalSkipped = 0\n\n\t\tfor (const thisPackage of packages) {\n\t\t\tconst isInstalled =\n\t\t\t\t!options?.shouldForceInstall && this.isInstalled(thisPackage)\n\t\t\tif (thisPackage.startsWith('@sprucelabs/') || !isInstalled) {\n\t\t\t\ttoInstall.push(this.stripLatest(thisPackage))\n\t\t\t\ttotalInstalled++\n\t\t\t} else {\n\t\t\t\ttotalSkipped++\n\t\t\t}\n\t\t}\n\n\t\tif (totalInstalled > 0) {\n\t\t\tconst { executable, args } = PkgService.buildCommandAndArgs(\n\t\t\t\ttoInstall,\n\t\t\t\toptions\n\t\t\t)\n\n\t\t\tawait this.commandService.execute(executable, {\n\t\t\t\targs,\n\t\t\t})\n\t\t} else if (\n\t\t\t!diskUtil.doesDirExist(pathUtil.join(this.cwd, 'node_modules'))\n\t\t) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tthis._parsedPkg = undefined\n\n\t\treturn { totalInstalled: totalInstalled + labsModules.length, totalSkipped }\n\t}\n\n\tpublic static buildCommandAndArgs(\n\t\ttoInstall: string[],\n\t\toptions: AddOptions | undefined\n\t) {\n\t\tconst args: any[] = [\n\t\t\tisCi() && '--cache-folder',\n\t\t\tisCi() && diskUtil.createRandomTempDir(),\n\t\t\t'add',\n\t\t\t...toInstall,\n\t\t].filter((a) => !!a)\n\n\t\tif (options?.isDev) {\n\t\t\targs.push('-D')\n\t\t}\n\n\t\tconst executable = 'yarn'\n\t\treturn { executable, args }\n\t}\n\n\tpublic async uninstall(pkg: string[] | string) {\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst args: string[] = ['uninstall', ...packages]\n\t\tawait this.commandService.execute('npm', {\n\t\t\targs,\n\t\t})\n\n\t\tthis._parsedPkg = undefined\n\n\t\tawait this.install()\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceFactory.js","names":["ServiceFactory","cwd","type","AuthService","Auth","PkgService","Service","EnvService","VsCodeService","SchemaService","command","CommandService","LintService","RemoteService","TypeCheckerService","buildImportService","SettingsService","DependencyService","commandService","BuildService","EventSettingsService","Error","ImportService"],"sources":["../../src/services/ServiceFactory.ts"],"sourcesContent":["import {\n\tSettingsService,\n\tEnvService,\n\tAuthService,\n} from '@sprucelabs/spruce-skill-utils'\nimport EventSettingsService from '../features/event/services/EventSettingsService'\nimport RemoteService from '../features/event/services/RemoteService'\nimport { FeatureCode } from '../features/features.types'\nimport SchemaService from '../features/schema/services/SchemaService'\nimport VsCodeService from '../features/vscode/services/VsCodeService'\nimport BuildService from './BuildService'\nimport CommandService from './CommandService'\nimport DependencyService from './DependencyService'\nimport ImportService from './ImportService'\nimport LintService from './LintService'\nimport PkgService from './PkgService'\nimport TypeCheckerService from './TypeCheckerService'\n\nexport interface ServiceMap {\n\tpkg: PkgService\n\tvsCode: VsCodeService\n\tschema: SchemaService\n\tlint: LintService\n\tcommand: CommandService\n\ttypeChecker: TypeCheckerService\n\timport: ImportService\n\tbuild: BuildService\n\tsettings: SettingsService\n\tenv: EnvService\n\tauth: AuthService\n\tremote: RemoteService\n\teventSettings: EventSettingsService\n\tdependency: DependencyService\n}\n\nexport type Service = keyof ServiceMap\n\nexport interface ServiceProvider {\n\tService<S extends Service>(type: S, cwd?: string): ServiceMap[S]\n}\nexport default class ServiceFactory {\n\tpublic Service<S extends Service>(cwd: string, type: S): ServiceMap[S] {\n\t\tswitch (type) {\n\t\t\tcase 'auth':\n\t\t\t\treturn AuthService.Auth(cwd) as ServiceMap[S]\n\t\t\tcase 'pkg':\n\t\t\t\treturn new PkgService(\n\t\t\t\t\tcwd,\n\t\t\t\t\tthis.Service(cwd, 'command')\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'env':\n\t\t\t\treturn new EnvService(cwd) as ServiceMap[S]\n\t\t\tcase 'vsCode':\n\t\t\t\treturn new VsCodeService(cwd) as ServiceMap[S]\n\t\t\tcase 'schema':\n\t\t\t\treturn new SchemaService({\n\t\t\t\t\tcwd,\n\t\t\t\t\tcommand: new CommandService(cwd),\n\t\t\t\t}) as ServiceMap[S]\n\t\t\tcase 'lint':\n\t\t\t\treturn new LintService(cwd, () =>\n\t\t\t\t\tthis.Service(cwd, 'command')\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'command': {\n\t\t\t\treturn new CommandService(cwd) as ServiceMap[S]\n\t\t\t}\n\t\t\tcase 'remote':\n\t\t\t\treturn new RemoteService(new EnvService(cwd)) as ServiceMap[S]\n\t\t\tcase 'typeChecker':\n\t\t\t\treturn new TypeCheckerService(\n\t\t\t\t\tthis.buildImportService(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'settings':\n\t\t\t\treturn new SettingsService<FeatureCode>(cwd) as ServiceMap[S]\n\t\t\tcase 'dependency':\n\t\t\t\treturn new DependencyService(\n\t\t\t\t\tnew SettingsService<FeatureCode>(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'import':\n\t\t\t\treturn this.buildImportService(cwd) as ServiceMap[S]\n\t\t\tcase 'build': {\n\t\t\t\tconst commandService = new CommandService(cwd)\n\t\t\t\treturn new BuildService(\n\t\t\t\t\tcommandService,\n\t\t\t\t\tnew LintService(cwd, () => this.Service(cwd, 'command'))\n\t\t\t\t) as ServiceMap[S]\n\t\t\t}\n\t\t\tcase 'eventSettings':\n\t\t\t\treturn new EventSettingsService(\n\t\t\t\t\tnew SettingsService(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Service \"${type}\" not found`)\n\t\t}\n\t}\n\n\tprivate buildImportService(cwd: string): ImportService {\n\t\treturn new ImportService({\n\t\t\tcwd,\n\t\t\tcommand: new CommandService(cwd),\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAKA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;IAwBqBA,c;;;;;;;;;;;;;;;;;MACpB,UAAkCC,GAAlC,EAA+CC,IAA/C,EAAuE;MAAA;;MACtE,QAAQA,IAAR;QACC,KAAK,MAAL;UACC,OAAOC,
|
|
1
|
+
{"version":3,"file":"ServiceFactory.js","names":["ServiceFactory","cwd","type","AuthService","Auth","PkgService","Service","EnvService","VsCodeService","SchemaService","command","CommandService","LintService","RemoteService","TypeCheckerService","buildImportService","SettingsService","DependencyService","commandService","BuildService","EventSettingsService","Error","ImportService"],"sources":["../../src/services/ServiceFactory.ts"],"sourcesContent":["import {\n\tSettingsService,\n\tEnvService,\n\tAuthService,\n} from '@sprucelabs/spruce-skill-utils'\nimport EventSettingsService from '../features/event/services/EventSettingsService'\nimport RemoteService from '../features/event/services/RemoteService'\nimport { FeatureCode } from '../features/features.types'\nimport SchemaService from '../features/schema/services/SchemaService'\nimport VsCodeService from '../features/vscode/services/VsCodeService'\nimport BuildService from './BuildService'\nimport CommandService from './CommandService'\nimport DependencyService from './DependencyService'\nimport ImportService from './ImportService'\nimport LintService from './LintService'\nimport PkgService from './PkgService'\nimport TypeCheckerService from './TypeCheckerService'\n\nexport interface ServiceMap {\n\tpkg: PkgService\n\tvsCode: VsCodeService\n\tschema: SchemaService\n\tlint: LintService\n\tcommand: CommandService\n\ttypeChecker: TypeCheckerService\n\timport: ImportService\n\tbuild: BuildService\n\tsettings: SettingsService\n\tenv: EnvService\n\tauth: AuthService\n\tremote: RemoteService\n\teventSettings: EventSettingsService\n\tdependency: DependencyService\n}\n\nexport type Service = keyof ServiceMap\n\nexport interface ServiceProvider {\n\tService<S extends Service>(type: S, cwd?: string): ServiceMap[S]\n}\nexport default class ServiceFactory {\n\tpublic Service<S extends Service>(cwd: string, type: S): ServiceMap[S] {\n\t\tswitch (type) {\n\t\t\tcase 'auth':\n\t\t\t\treturn AuthService.Auth(cwd) as ServiceMap[S]\n\t\t\tcase 'pkg':\n\t\t\t\treturn new PkgService(\n\t\t\t\t\tcwd,\n\t\t\t\t\tthis.Service(cwd, 'command')\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'env':\n\t\t\t\treturn new EnvService(cwd) as ServiceMap[S]\n\t\t\tcase 'vsCode':\n\t\t\t\treturn new VsCodeService(cwd) as ServiceMap[S]\n\t\t\tcase 'schema':\n\t\t\t\treturn new SchemaService({\n\t\t\t\t\tcwd,\n\t\t\t\t\tcommand: new CommandService(cwd),\n\t\t\t\t}) as ServiceMap[S]\n\t\t\tcase 'lint':\n\t\t\t\treturn new LintService(cwd, () =>\n\t\t\t\t\tthis.Service(cwd, 'command')\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'command': {\n\t\t\t\treturn new CommandService(cwd) as ServiceMap[S]\n\t\t\t}\n\t\t\tcase 'remote':\n\t\t\t\treturn new RemoteService(new EnvService(cwd)) as ServiceMap[S]\n\t\t\tcase 'typeChecker':\n\t\t\t\treturn new TypeCheckerService(\n\t\t\t\t\tthis.buildImportService(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'settings':\n\t\t\t\treturn new SettingsService<FeatureCode>(cwd) as ServiceMap[S]\n\t\t\tcase 'dependency':\n\t\t\t\treturn new DependencyService(\n\t\t\t\t\tnew SettingsService<FeatureCode>(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'import':\n\t\t\t\treturn this.buildImportService(cwd) as ServiceMap[S]\n\t\t\tcase 'build': {\n\t\t\t\tconst commandService = new CommandService(cwd)\n\t\t\t\treturn new BuildService(\n\t\t\t\t\tcommandService,\n\t\t\t\t\tnew LintService(cwd, () => this.Service(cwd, 'command'))\n\t\t\t\t) as ServiceMap[S]\n\t\t\t}\n\t\t\tcase 'eventSettings':\n\t\t\t\treturn new EventSettingsService(\n\t\t\t\t\tnew SettingsService(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Service \"${type}\" not found`)\n\t\t}\n\t}\n\n\tprivate buildImportService(cwd: string): ImportService {\n\t\treturn new ImportService({\n\t\t\tcwd,\n\t\t\tcommand: new CommandService(cwd),\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAKA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;IAwBqBA,c;;;;;;;;;;;;;;;;;MACpB,UAAkCC,GAAlC,EAA+CC,IAA/C,EAAuE;MAAA;;MACtE,QAAQA,IAAR;QACC,KAAK,MAAL;UACC,OAAOC,6BAAA,CAAYC,IAAZ,CAAiBH,GAAjB,CAAP;;QACD,KAAK,KAAL;UACC,OAAO,IAAII,sBAAJ,CACNJ,GADM,EAEN,KAAKK,OAAL,CAAaL,GAAb,EAAkB,SAAlB,CAFM,CAAP;;QAID,KAAK,KAAL;UACC,OAAO,IAAIM,4BAAJ,CAAeN,GAAf,CAAP;;QACD,KAAK,QAAL;UACC,OAAO,IAAIO,yBAAJ,CAAkBP,GAAlB,CAAP;;QACD,KAAK,QAAL;UACC,OAAO,IAAIQ,yBAAJ,CAAkB;YACxBR,GAAG,EAAHA,GADwB;YAExBS,OAAO,EAAE,IAAIC,0BAAJ,CAAmBV,GAAnB;UAFe,CAAlB,CAAP;;QAID,KAAK,MAAL;UACC,OAAO,IAAIW,uBAAJ,CAAgBX,GAAhB,EAAqB;YAAA,OAC3B,KAAI,CAACK,OAAL,CAAaL,GAAb,EAAkB,SAAlB,CAD2B;UAAA,CAArB,CAAP;;QAGD,KAAK,SAAL;UAAgB;YACf,OAAO,IAAIU,0BAAJ,CAAmBV,GAAnB,CAAP;UACA;;QACD,KAAK,QAAL;UACC,OAAO,IAAIY,yBAAJ,CAAkB,IAAIN,4BAAJ,CAAeN,GAAf,CAAlB,CAAP;;QACD,KAAK,aAAL;UACC,OAAO,IAAIa,8BAAJ,CACN,KAAKC,kBAAL,CAAwBd,GAAxB,CADM,CAAP;;QAGD,KAAK,UAAL;UACC,OAAO,IAAIe,iCAAJ,CAAiCf,GAAjC,CAAP;;QACD,KAAK,YAAL;UACC,OAAO,IAAIgB,6BAAJ,CACN,IAAID,iCAAJ,CAAiCf,GAAjC,CADM,CAAP;;QAGD,KAAK,QAAL;UACC,OAAO,KAAKc,kBAAL,CAAwBd,GAAxB,CAAP;;QACD,KAAK,OAAL;UAAc;YACb,IAAMiB,cAAc,GAAG,IAAIP,0BAAJ,CAAmBV,GAAnB,CAAvB;YACA,OAAO,IAAIkB,wBAAJ,CACND,cADM,EAEN,IAAIN,uBAAJ,CAAgBX,GAAhB,EAAqB;cAAA,OAAM,KAAI,CAACK,OAAL,CAAaL,GAAb,EAAkB,SAAlB,CAAN;YAAA,CAArB,CAFM,CAAP;UAIA;;QACD,KAAK,eAAL;UACC,OAAO,IAAImB,gCAAJ,CACN,IAAIJ,iCAAJ,CAAoBf,GAApB,CADM,CAAP;;QAGD;UACC,MAAM,IAAIoB,KAAJ,qBAAsBnB,IAAtB,kBAAN;MAlDF;IAoDA,C;;;WAED,4BAA2BD,GAA3B,EAAuD;MACtD,OAAO,IAAIqB,yBAAJ,CAAkB;QACxBrB,GAAG,EAAHA,GADwB;QAExBS,OAAO,EAAE,IAAIC,0BAAJ,CAAmBV,GAAnB;MAFe,CAAlB,CAAP;IAIA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventTemplateItemBuilder.js","names":["EventTemplateItemBuilder","options","contracts","localNamespace","eventBuilderFile","eventContractTemplateItems","schemaTemplateItems","contract","buildTemplateItemsForContract","schemaItems","contractItems","push","sort","a","b","nameCamel","fullyQualifiedEventName","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","mapEventSigsToSchemaTemplateItems","signatureTemplateItem","buildEventSigTemplateItem","emitPayloadSchemaTemplateItem","emitPayloadSchema","responsePayloadSchemaTemplateItem","responsePayloadSchema","SchemaError","code","parameters","friendlyMessages","item","buildTemplateItemForEventSignature","eventNamespace","isLocal","namespacePascal","sigToNamespacePascal","namesUtil","toCamel","eventName","namePascal","toPascal","version","namespace","toKebab","MERCURY_API_NAMESPACE","namespaceCamel","imports","filter","i","map","schemaDiskUtil","resolvePath","destination","schema","shouldIncludeFileExtension","importAs","eventSignatures","signature","listenPermissionContract","emitPermissionContract","find","id","schemasByNamespace","mapEventSigsToSchemasByNamepace","schemaTemplateItemBuilder","SchemaTemplateItemBuilder","buildTemplateItems"],"sources":["../../src/templateItemBuilders/EventTemplateItemBuilder.ts"],"sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport { Schema, SchemaError, SchemaTemplateItem } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\tNamedEventSignature,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventSignatureTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport schemaDiskUtil from '../features/schema/utilities/schemaDisk.utility'\nimport SchemaTemplateItemBuilder from './SchemaTemplateItemBuilder'\n\nexport default class EventTemplateItemBuilder {\n\tpublic buildTemplateItems(options: {\n\t\tcontracts: EventContract[]\n\t\tlocalNamespace?: string\n\t\teventBuilderFile?: string\n\t}): {\n\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t} {\n\t\tconst { contracts, localNamespace, eventBuilderFile } = options\n\n\t\tconst eventContractTemplateItems: EventContractTemplateItem[] = []\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] = []\n\n\t\tfor (const contract of contracts) {\n\t\t\tconst {\n\t\t\t\tschemaTemplateItems: schemaItems,\n\t\t\t\teventContractTemplateItems: contractItems,\n\t\t\t} = this.buildTemplateItemsForContract(\n\t\t\t\tcontract,\n\t\t\t\tlocalNamespace,\n\t\t\t\teventBuilderFile\n\t\t\t)\n\n\t\t\teventContractTemplateItems.push(...contractItems)\n\t\t\tschemaTemplateItems.push(...schemaItems)\n\t\t}\n\n\t\teventContractTemplateItems.sort((a, b) => {\n\t\t\tif (a.nameCamel > b.nameCamel) {\n\t\t\t\treturn 1\n\t\t\t} else if (a.nameCamel < b.nameCamel) {\n\t\t\t\treturn -1\n\t\t\t}\n\n\t\t\treturn 0\n\t\t})\n\n\t\treturn { eventContractTemplateItems, schemaTemplateItems }\n\t}\n\n\tpublic buildEventTemplateItemForName(\n\t\tcontracts: EventContract[],\n\t\tfullyQualifiedEventName: string\n\t): {\n\t\tresponsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\temitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t} {\n\t\tfor (const contract of contracts) {\n\t\t\tconst namedSignatures =\n\t\t\t\teventContractUtil.getNamedEventSignatures(contract)\n\n\t\t\tfor (const namedSig of namedSignatures) {\n\t\t\t\tif (namedSig.fullyQualifiedEventName === fullyQualifiedEventName) {\n\t\t\t\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\t\t\t\tthis.mapEventSigsToSchemaTemplateItems(namedSignatures)\n\n\t\t\t\t\tconst signatureTemplateItem: EventSignatureTemplateItem =\n\t\t\t\t\t\tthis.buildEventSigTemplateItem(namedSig, schemaTemplateItems)\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\temitPayloadSchemaTemplateItem:\n\t\t\t\t\t\t\tsignatureTemplateItem.emitPayloadSchema,\n\t\t\t\t\t\tresponsePayloadSchemaTemplateItem:\n\t\t\t\t\t\t\tsignatureTemplateItem.responsePayloadSchema,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new SchemaError({\n\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\tparameters: ['fullyQualifiedEventName'],\n\t\t\tfriendlyMessages: [\n\t\t\t\t`I could not find any events that match ${fullyQualifiedEventName}.`,\n\t\t\t],\n\t\t})\n\t}\n\n\tprivate buildTemplateItemsForContract(\n\t\tcontract: EventContract,\n\t\tlocalNamespace?: string,\n\t\teventBuilderFile?: string\n\t): {\n\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t} {\n\t\tconst namedSignatures = eventContractUtil.getNamedEventSignatures(contract)\n\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\tthis.mapEventSigsToSchemaTemplateItems(namedSignatures)\n\n\t\tconst eventContractTemplateItems: EventContractTemplateItem[] = []\n\n\t\tfor (const namedSig of namedSignatures) {\n\t\t\tconst item: EventContractTemplateItem =\n\t\t\t\tthis.buildTemplateItemForEventSignature(\n\t\t\t\t\tnamedSig,\n\t\t\t\t\tschemaTemplateItems,\n\t\t\t\t\tnamedSig.eventNamespace === localNamespace,\n\t\t\t\t\teventBuilderFile\n\t\t\t\t)\n\n\t\t\teventContractTemplateItems.push(item)\n\t\t}\n\n\t\treturn {\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t}\n\t}\n\n\tprivate buildTemplateItemForEventSignature(\n\t\tnamedSig: NamedEventSignature,\n\t\tschemaTemplateItems: SchemaTemplateItem[],\n\t\tisLocal: boolean,\n\t\teventBuilderFile?: string\n\t) {\n\t\tconst namespacePascal = this.sigToNamespacePascal(namedSig)\n\n\t\tconst signatureTemplateItem: EventSignatureTemplateItem =\n\t\t\tthis.buildEventSigTemplateItem(namedSig, schemaTemplateItems)\n\n\t\tconst item: EventContractTemplateItem = {\n\t\t\tnameCamel: namesUtil.toCamel(namedSig.eventName),\n\t\t\tnamePascal: namesUtil.toPascal(namedSig.eventName),\n\t\t\tversion: namedSig.version ?? '***MISSING***',\n\t\t\tisLocal,\n\t\t\tnamespace: namesUtil.toKebab(\n\t\t\t\tnamedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\t\t\t),\n\t\t\tnamespaceCamel: namesUtil.toCamel(\n\t\t\t\tnamedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\t\t\t),\n\t\t\timports: [\n\t\t\t\tsignatureTemplateItem.emitPayloadSchema as SchemaTemplateItem,\n\t\t\t\tsignatureTemplateItem.responsePayloadSchema as SchemaTemplateItem,\n\t\t\t]\n\t\t\t\t.filter((i) => !!i)\n\t\t\t\t.map((item: SchemaTemplateItem) => ({\n\t\t\t\t\tpackage: schemaDiskUtil.resolvePath({\n\t\t\t\t\t\tdestination: '#spruce/schemas',\n\t\t\t\t\t\tschema: item.schema,\n\t\t\t\t\t\tshouldIncludeFileExtension: false,\n\t\t\t\t\t}),\n\t\t\t\t\timportAs: `${item.nameCamel}Schema`,\n\t\t\t\t})),\n\t\t\tnamespacePascal,\n\t\t\teventSignatures: {\n\t\t\t\t[namedSig.fullyQualifiedEventName]: signatureTemplateItem,\n\t\t\t},\n\t\t}\n\n\t\titem.imports.push({\n\t\t\timportAs: '{ buildEventContract }',\n\t\t\tpackage: eventBuilderFile ?? '@sprucelabs/mercury-types',\n\t\t})\n\n\t\tif (\n\t\t\tnamedSig.signature.listenPermissionContract ||\n\t\t\tnamedSig.signature.emitPermissionContract\n\t\t) {\n\t\t\titem.imports.push({\n\t\t\t\timportAs: '{ buildPermissionContract }',\n\t\t\t\tpackage: eventBuilderFile ?? '@sprucelabs/mercury-types',\n\t\t\t})\n\t\t}\n\n\t\treturn item\n\t}\n\n\tprivate buildEventSigTemplateItem(\n\t\tnamedSig: NamedEventSignature,\n\t\tschemaItems: SchemaTemplateItem[]\n\t) {\n\t\tconst { emitPayloadSchema, responsePayloadSchema, ...signature } =\n\t\t\tnamedSig.signature\n\n\t\tconst signatureTemplateItem: EventSignatureTemplateItem = { ...signature }\n\n\t\tif (emitPayloadSchema) {\n\t\t\tsignatureTemplateItem.emitPayloadSchema = schemaItems.find(\n\t\t\t\t(i) =>\n\t\t\t\t\ti.id === emitPayloadSchema.id &&\n\t\t\t\t\t(!emitPayloadSchema.namespace ||\n\t\t\t\t\t\ti.namespace === emitPayloadSchema.namespace)\n\t\t\t)\n\t\t}\n\n\t\tif (responsePayloadSchema) {\n\t\t\tsignatureTemplateItem.responsePayloadSchema = schemaItems.find(\n\t\t\t\t(i) =>\n\t\t\t\t\ti.id === responsePayloadSchema.id &&\n\t\t\t\t\t(!responsePayloadSchema.namespace ||\n\t\t\t\t\t\ti.namespace === responsePayloadSchema.namespace)\n\t\t\t)\n\t\t}\n\t\treturn signatureTemplateItem\n\t}\n\n\tprivate mapEventSigsToSchemaTemplateItems(\n\t\tnamedSignatures: NamedEventSignature[]\n\t) {\n\t\tconst schemasByNamespace: Record<string, Schema[]> =\n\t\t\tthis.mapEventSigsToSchemasByNamepace(namedSignatures)\n\n\t\tconst schemaTemplateItemBuilder = new SchemaTemplateItemBuilder('Cli')\n\t\tconst schemaItems: SchemaTemplateItem[] =\n\t\t\tschemaTemplateItemBuilder.buildTemplateItems(\n\t\t\t\tschemasByNamespace,\n\t\t\t\t'#spruce/events'\n\t\t\t)\n\n\t\treturn schemaItems\n\t}\n\n\tprivate mapEventSigsToSchemasByNamepace(\n\t\tnamedSignatures: NamedEventSignature[]\n\t) {\n\t\tconst schemasByNamespace: Record<string, Schema[]> = {}\n\n\t\tfor (const namedSig of namedSignatures) {\n\t\t\tconst namespacePascal = this.sigToNamespacePascal(namedSig)\n\t\t\tconst { emitPayloadSchema, responsePayloadSchema } = namedSig.signature\n\n\t\t\tif (!schemasByNamespace[namespacePascal]) {\n\t\t\t\tschemasByNamespace[namespacePascal] = []\n\t\t\t}\n\n\t\t\tif (emitPayloadSchema) {\n\t\t\t\tschemasByNamespace[namespacePascal].push({\n\t\t\t\t\tversion: namedSig.version,\n\t\t\t\t\t...emitPayloadSchema,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (responsePayloadSchema) {\n\t\t\t\tschemasByNamespace[namespacePascal].push({\n\t\t\t\t\tversion: namedSig.version,\n\t\t\t\t\t...responsePayloadSchema,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn schemasByNamespace\n\t}\n\n\tprivate sigToNamespacePascal(namedSig: NamedEventSignature) {\n\t\treturn namesUtil.toPascal(namedSig.eventNamespace ?? MERCURY_API_NAMESPACE)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAIA;;AAQA;;AACA;;;;;;;;;;;;;;IAEqBA,wB;;;;;;;WACpB,4BAA0BC,OAA1B,EAOE;MACD,IAAQC,SAAR,GAAwDD,OAAxD,CAAQC,SAAR;MAAA,IAAmBC,cAAnB,GAAwDF,OAAxD,CAAmBE,cAAnB;MAAA,IAAmCC,gBAAnC,GAAwDH,OAAxD,CAAmCG,gBAAnC;MAEA,IAAMC,0BAAuD,GAAG,EAAhE;MACA,IAAMC,mBAAyC,GAAG,EAAlD;;MAJC,2CAMsBJ,SANtB;MAAA;;MAAA;QAMD,oDAAkC;UAAA,IAAvBK,QAAuB;;UACjC,4BAGI,KAAKC,6BAAL,CACHD,QADG,EAEHJ,cAFG,EAGHC,gBAHG,CAHJ;UAAA,IACsBK,WADtB,yBACCH,mBADD;UAAA,IAE6BI,aAF7B,yBAECL,0BAFD;;UASAA,0BAA0B,CAACM,IAA3B,OAAAN,0BAA0B,sCAASK,aAAT,EAA1B;UACAJ,mBAAmB,CAACK,IAApB,OAAAL,mBAAmB,sCAASG,WAAT,EAAnB;QACA;MAlBA;QAAA;MAAA;QAAA;MAAA;;MAoBDJ,0BAA0B,CAACO,IAA3B,CAAgC,UAACC,CAAD,EAAIC,CAAJ,EAAU;QACzC,IAAID,CAAC,CAACE,SAAF,GAAcD,CAAC,CAACC,SAApB,EAA+B;UAC9B,OAAO,CAAP;QACA,CAFD,MAEO,IAAIF,CAAC,CAACE,SAAF,GAAcD,CAAC,CAACC,SAApB,EAA+B;UACrC,OAAO,CAAC,CAAR;QACA;;QAED,OAAO,CAAP;MACA,CARD;MAUA,OAAO;QAAEV,0BAA0B,EAA1BA,0BAAF;QAA8BC,mBAAmB,EAAnBA;MAA9B,CAAP;IACA;;;WAED,uCACCJ,SADD,EAECc,uBAFD,EAME;MAAA,4CACsBd,SADtB;MAAA;;MAAA;QACD,uDAAkC;UAAA,IAAvBK,QAAuB;;UACjC,IAAMU,eAAe,GACpBC,oCAAkBC,uBAAlB,CAA0CZ,QAA1C,CADD;;UADiC,4CAIVU,eAJU;UAAA;;UAAA;YAIjC,uDAAwC;cAAA,IAA7BG,QAA6B;;cACvC,IAAIA,QAAQ,CAACJ,uBAAT,KAAqCA,uBAAzC,EAAkE;gBACjE,IAAMV,mBAAyC,GAC9C,KAAKe,iCAAL,CAAuCJ,eAAvC,CADD;gBAGA,IAAMK,qBAAiD,GACtD,KAAKC,yBAAL,CAA+BH,QAA/B,EAAyCd,mBAAzC,CADD;gBAGA,OAAO;kBACNkB,6BAA6B,EAC5BF,qBAAqB,CAACG,iBAFjB;kBAGNC,iCAAiC,EAChCJ,qBAAqB,CAACK;gBAJjB,CAAP;cAMA;YACD;UAnBgC;YAAA;UAAA;YAAA;UAAA;QAoBjC;MArBA;QAAA;MAAA;QAAA;MAAA;;MAuBD,MAAM,IAAIC,mBAAJ,CAAgB;QACrBC,IAAI,EAAE,oBADe;QAErBC,UAAU,EAAE,CAAC,yBAAD,CAFS;QAGrBC,gBAAgB,EAAE,kDACyBf,uBADzB;MAHG,CAAhB,CAAN;IAOA;;;WAED,uCACCT,QADD,EAECJ,cAFD,EAGCC,gBAHD,EAOE;MACD,IAAMa,eAAe,GAAGC,oCAAkBC,uBAAlB,CAA0CZ,QAA1C,CAAxB;;MAEA,IAAMD,mBAAyC,GAC9C,KAAKe,iCAAL,CAAuCJ,eAAvC,CADD;MAGA,IAAMZ,0BAAuD,GAAG,EAAhE;;MANC,4CAQsBY,eARtB;MAAA;;MAAA;QAQD,uDAAwC;UAAA,IAA7BG,QAA6B;UACvC,IAAMY,IAA+B,GACpC,KAAKC,kCAAL,CACCb,QADD,EAECd,mBAFD,EAGCc,QAAQ,CAACc,cAAT,KAA4B/B,cAH7B,EAICC,gBAJD,CADD;UAQAC,0BAA0B,CAACM,IAA3B,CAAgCqB,IAAhC;QACA;MAlBA;QAAA;MAAA;QAAA;MAAA;;MAoBD,OAAO;QACN3B,0BAA0B,EAA1BA,0BADM;QAENC,mBAAmB,EAAnBA;MAFM,CAAP;IAIA;;;WAED,4CACCc,QADD,EAECd,mBAFD,EAGC6B,OAHD,EAIC/B,gBAJD,EAKE;MAAA;;MACD,IAAMgC,eAAe,GAAG,KAAKC,oBAAL,CAA0BjB,QAA1B,CAAxB;MAEA,IAAME,qBAAiD,GACtD,KAAKC,yBAAL,CAA+BH,QAA/B,EAAyCd,mBAAzC,CADD;MAGA,IAAM0B,IAA+B,GAAG;QACvCjB,SAAS,EAAEuB,4BAAUC,OAAV,CAAkBnB,QAAQ,CAACoB,SAA3B,CAD4B;QAEvCC,UAAU,EAAEH,4BAAUI,QAAV,CAAmBtB,QAAQ,CAACoB,SAA5B,CAF2B;QAGvCG,OAAO,uBAAEvB,QAAQ,CAACuB,OAAX,iEAAsB,eAHU;QAIvCR,OAAO,EAAPA,OAJuC;QAKvCS,SAAS,EAAEN,4BAAUO,OAAV,0BACVzB,QAAQ,CAACc,cADC,yEACiBY,uCADjB,CAL4B;QAQvCC,cAAc,EAAET,4BAAUC,OAAV,2BACfnB,QAAQ,CAACc,cADM,2EACYY,uCADZ,CARuB;QAWvCE,OAAO,EAAE,CACR1B,qBAAqB,CAACG,iBADd,EAERH,qBAAqB,CAACK,qBAFd,EAIPsB,MAJO,CAIA,UAACC,CAAD;UAAA,OAAO,CAAC,CAACA,CAAT;QAAA,CAJA,EAKPC,GALO,CAKH,UAACnB,IAAD;UAAA,OAA+B;YACnC,WAASoB,uBAAeC,WAAf,CAA2B;cACnCC,WAAW,EAAE,iBADsB;cAEnCC,MAAM,EAAEvB,IAAI,CAACuB,MAFsB;cAGnCC,0BAA0B,EAAE;YAHO,CAA3B,CAD0B;YAMnCC,QAAQ,YAAKzB,IAAI,CAACjB,SAAV;UAN2B,CAA/B;QAAA,CALG,CAX8B;QAwBvCqB,eAAe,EAAfA,eAxBuC;QAyBvCsB,eAAe,uCACbtC,QAAQ,CAACJ,uBADI,EACsBM,qBADtB;MAzBwB,CAAxC;MA8BAU,IAAI,CAACgB,OAAL,CAAarC,IAAb,CAAkB;QACjB8C,QAAQ,EAAE,wBADO;QAEjB,WAASrD,gBAAT,aAASA,gBAAT,cAASA,gBAAT,GAA6B;MAFZ,CAAlB;;MAKA,IACCgB,QAAQ,CAACuC,SAAT,CAAmBC,wBAAnB,IACAxC,QAAQ,CAACuC,SAAT,CAAmBE,sBAFpB,EAGE;QACD7B,IAAI,CAACgB,OAAL,CAAarC,IAAb,CAAkB;UACjB8C,QAAQ,EAAE,6BADO;UAEjB,WAASrD,gBAAT,aAASA,gBAAT,cAASA,gBAAT,GAA6B;QAFZ,CAAlB;MAIA;;MAED,OAAO4B,IAAP;IACA;;;WAED,mCACCZ,QADD,EAECX,WAFD,EAGE;MACD,0BACCW,QAAQ,CAACuC,SADV;MAAA,IAAQlC,iBAAR,uBAAQA,iBAAR;MAAA,IAA2BE,qBAA3B,uBAA2BA,qBAA3B;MAAA,IAAqDgC,SAArD;;MAGA,IAAMrC,qBAAiD,qBAAQqC,SAAR,CAAvD;;MAEA,IAAIlC,iBAAJ,EAAuB;QACtBH,qBAAqB,CAACG,iBAAtB,GAA0ChB,WAAW,CAACqD,IAAZ,CACzC,UAACZ,CAAD;UAAA,OACCA,CAAC,CAACa,EAAF,KAAStC,iBAAiB,CAACsC,EAA3B,KACC,CAACtC,iBAAiB,CAACmB,SAAnB,IACAM,CAAC,CAACN,SAAF,KAAgBnB,iBAAiB,CAACmB,SAFnC,CADD;QAAA,CADyC,CAA1C;MAMA;;MAED,IAAIjB,qBAAJ,EAA2B;QAC1BL,qBAAqB,CAACK,qBAAtB,GAA8ClB,WAAW,CAACqD,IAAZ,CAC7C,UAACZ,CAAD;UAAA,OACCA,CAAC,CAACa,EAAF,KAASpC,qBAAqB,CAACoC,EAA/B,KACC,CAACpC,qBAAqB,CAACiB,SAAvB,IACAM,CAAC,CAACN,SAAF,KAAgBjB,qBAAqB,CAACiB,SAFvC,CADD;QAAA,CAD6C,CAA9C;MAMA;;MACD,OAAOtB,qBAAP;IACA;;;WAED,2CACCL,eADD,EAEE;MACD,IAAM+C,kBAA4C,GACjD,KAAKC,+BAAL,CAAqChD,eAArC,CADD;MAGA,IAAMiD,yBAAyB,GAAG,IAAIC,qCAAJ,CAA8B,KAA9B,CAAlC;MACA,IAAM1D,WAAiC,GACtCyD,yBAAyB,CAACE,kBAA1B,CACCJ,kBADD,EAEC,gBAFD,CADD;MAMA,OAAOvD,WAAP;IACA;;;WAED,yCACCQ,eADD,EAEE;MACD,IAAM+C,kBAA4C,GAAG,EAArD;;MADC,4CAGsB/C,eAHtB;MAAA;;MAAA;QAGD,uDAAwC;UAAA,IAA7BG,QAA6B;UACvC,IAAMgB,eAAe,GAAG,KAAKC,oBAAL,CAA0BjB,QAA1B,CAAxB;UACA,2BAAqDA,QAAQ,CAACuC,SAA9D;UAAA,IAAQlC,iBAAR,wBAAQA,iBAAR;UAAA,IAA2BE,qBAA3B,wBAA2BA,qBAA3B;;UAEA,IAAI,CAACqC,kBAAkB,CAAC5B,eAAD,CAAvB,EAA0C;YACzC4B,kBAAkB,CAAC5B,eAAD,CAAlB,GAAsC,EAAtC;UACA;;UAED,IAAIX,iBAAJ,EAAuB;YACtBuC,kBAAkB,CAAC5B,eAAD,CAAlB,CAAoCzB,IAApC;cACCgC,OAAO,EAAEvB,QAAQ,CAACuB;YADnB,GAEIlB,iBAFJ;UAIA;;UAED,IAAIE,qBAAJ,EAA2B;YAC1BqC,kBAAkB,CAAC5B,eAAD,CAAlB,CAAoCzB,IAApC;cACCgC,OAAO,EAAEvB,QAAQ,CAACuB;YADnB,GAEIhB,qBAFJ;UAIA;QACD;MAxBA;QAAA;MAAA;QAAA;MAAA;;MA0BD,OAAOqC,kBAAP;IACA;;;WAED,8BAA6B5C,QAA7B,EAA4D;MAAA;;MAC3D,OAAOkB,4BAAUI,QAAV,2BAAmBtB,QAAQ,CAACc,cAA5B,2EAA8CY,uCAA9C,CAAP;IACA"}
|
|
1
|
+
{"version":3,"file":"EventTemplateItemBuilder.js","names":["EventTemplateItemBuilder","options","contracts","localNamespace","eventBuilderFile","eventContractTemplateItems","schemaTemplateItems","contract","buildTemplateItemsForContract","schemaItems","contractItems","push","sort","a","b","nameCamel","fullyQualifiedEventName","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","mapEventSigsToSchemaTemplateItems","signatureTemplateItem","buildEventSigTemplateItem","emitPayloadSchemaTemplateItem","emitPayloadSchema","responsePayloadSchemaTemplateItem","responsePayloadSchema","SchemaError","code","parameters","friendlyMessages","item","buildTemplateItemForEventSignature","eventNamespace","isLocal","namespacePascal","sigToNamespacePascal","namesUtil","toCamel","eventName","namePascal","toPascal","version","namespace","toKebab","MERCURY_API_NAMESPACE","namespaceCamel","imports","filter","i","map","schemaDiskUtil","resolvePath","destination","schema","shouldIncludeFileExtension","importAs","eventSignatures","signature","listenPermissionContract","emitPermissionContract","find","id","schemasByNamespace","mapEventSigsToSchemasByNamepace","schemaTemplateItemBuilder","SchemaTemplateItemBuilder","buildTemplateItems"],"sources":["../../src/templateItemBuilders/EventTemplateItemBuilder.ts"],"sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport { Schema, SchemaError, SchemaTemplateItem } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\tNamedEventSignature,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventSignatureTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport schemaDiskUtil from '../features/schema/utilities/schemaDisk.utility'\nimport SchemaTemplateItemBuilder from './SchemaTemplateItemBuilder'\n\nexport default class EventTemplateItemBuilder {\n\tpublic buildTemplateItems(options: {\n\t\tcontracts: EventContract[]\n\t\tlocalNamespace?: string\n\t\teventBuilderFile?: string\n\t}): {\n\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t} {\n\t\tconst { contracts, localNamespace, eventBuilderFile } = options\n\n\t\tconst eventContractTemplateItems: EventContractTemplateItem[] = []\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] = []\n\n\t\tfor (const contract of contracts) {\n\t\t\tconst {\n\t\t\t\tschemaTemplateItems: schemaItems,\n\t\t\t\teventContractTemplateItems: contractItems,\n\t\t\t} = this.buildTemplateItemsForContract(\n\t\t\t\tcontract,\n\t\t\t\tlocalNamespace,\n\t\t\t\teventBuilderFile\n\t\t\t)\n\n\t\t\teventContractTemplateItems.push(...contractItems)\n\t\t\tschemaTemplateItems.push(...schemaItems)\n\t\t}\n\n\t\teventContractTemplateItems.sort((a, b) => {\n\t\t\tif (a.nameCamel > b.nameCamel) {\n\t\t\t\treturn 1\n\t\t\t} else if (a.nameCamel < b.nameCamel) {\n\t\t\t\treturn -1\n\t\t\t}\n\n\t\t\treturn 0\n\t\t})\n\n\t\treturn { eventContractTemplateItems, schemaTemplateItems }\n\t}\n\n\tpublic buildEventTemplateItemForName(\n\t\tcontracts: EventContract[],\n\t\tfullyQualifiedEventName: string\n\t): {\n\t\tresponsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\temitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t} {\n\t\tfor (const contract of contracts) {\n\t\t\tconst namedSignatures =\n\t\t\t\teventContractUtil.getNamedEventSignatures(contract)\n\n\t\t\tfor (const namedSig of namedSignatures) {\n\t\t\t\tif (namedSig.fullyQualifiedEventName === fullyQualifiedEventName) {\n\t\t\t\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\t\t\t\tthis.mapEventSigsToSchemaTemplateItems(namedSignatures)\n\n\t\t\t\t\tconst signatureTemplateItem: EventSignatureTemplateItem =\n\t\t\t\t\t\tthis.buildEventSigTemplateItem(namedSig, schemaTemplateItems)\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\temitPayloadSchemaTemplateItem:\n\t\t\t\t\t\t\tsignatureTemplateItem.emitPayloadSchema,\n\t\t\t\t\t\tresponsePayloadSchemaTemplateItem:\n\t\t\t\t\t\t\tsignatureTemplateItem.responsePayloadSchema,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new SchemaError({\n\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\tparameters: ['fullyQualifiedEventName'],\n\t\t\tfriendlyMessages: [\n\t\t\t\t`I could not find any events that match ${fullyQualifiedEventName}.`,\n\t\t\t],\n\t\t})\n\t}\n\n\tprivate buildTemplateItemsForContract(\n\t\tcontract: EventContract,\n\t\tlocalNamespace?: string,\n\t\teventBuilderFile?: string\n\t): {\n\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t} {\n\t\tconst namedSignatures = eventContractUtil.getNamedEventSignatures(contract)\n\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\tthis.mapEventSigsToSchemaTemplateItems(namedSignatures)\n\n\t\tconst eventContractTemplateItems: EventContractTemplateItem[] = []\n\n\t\tfor (const namedSig of namedSignatures) {\n\t\t\tconst item: EventContractTemplateItem =\n\t\t\t\tthis.buildTemplateItemForEventSignature(\n\t\t\t\t\tnamedSig,\n\t\t\t\t\tschemaTemplateItems,\n\t\t\t\t\tnamedSig.eventNamespace === localNamespace,\n\t\t\t\t\teventBuilderFile\n\t\t\t\t)\n\n\t\t\teventContractTemplateItems.push(item)\n\t\t}\n\n\t\treturn {\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t}\n\t}\n\n\tprivate buildTemplateItemForEventSignature(\n\t\tnamedSig: NamedEventSignature,\n\t\tschemaTemplateItems: SchemaTemplateItem[],\n\t\tisLocal: boolean,\n\t\teventBuilderFile?: string\n\t) {\n\t\tconst namespacePascal = this.sigToNamespacePascal(namedSig)\n\n\t\tconst signatureTemplateItem: EventSignatureTemplateItem =\n\t\t\tthis.buildEventSigTemplateItem(namedSig, schemaTemplateItems)\n\n\t\tconst item: EventContractTemplateItem = {\n\t\t\tnameCamel: namesUtil.toCamel(namedSig.eventName),\n\t\t\tnamePascal: namesUtil.toPascal(namedSig.eventName),\n\t\t\tversion: namedSig.version ?? '***MISSING***',\n\t\t\tisLocal,\n\t\t\tnamespace: namesUtil.toKebab(\n\t\t\t\tnamedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\t\t\t),\n\t\t\tnamespaceCamel: namesUtil.toCamel(\n\t\t\t\tnamedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\t\t\t),\n\t\t\timports: [\n\t\t\t\tsignatureTemplateItem.emitPayloadSchema as SchemaTemplateItem,\n\t\t\t\tsignatureTemplateItem.responsePayloadSchema as SchemaTemplateItem,\n\t\t\t]\n\t\t\t\t.filter((i) => !!i)\n\t\t\t\t.map((item: SchemaTemplateItem) => ({\n\t\t\t\t\tpackage: schemaDiskUtil.resolvePath({\n\t\t\t\t\t\tdestination: '#spruce/schemas',\n\t\t\t\t\t\tschema: item.schema,\n\t\t\t\t\t\tshouldIncludeFileExtension: false,\n\t\t\t\t\t}),\n\t\t\t\t\timportAs: `${item.nameCamel}Schema`,\n\t\t\t\t})),\n\t\t\tnamespacePascal,\n\t\t\teventSignatures: {\n\t\t\t\t[namedSig.fullyQualifiedEventName]: signatureTemplateItem,\n\t\t\t},\n\t\t}\n\n\t\titem.imports.push({\n\t\t\timportAs: '{ buildEventContract }',\n\t\t\tpackage: eventBuilderFile ?? '@sprucelabs/mercury-types',\n\t\t})\n\n\t\tif (\n\t\t\tnamedSig.signature.listenPermissionContract ||\n\t\t\tnamedSig.signature.emitPermissionContract\n\t\t) {\n\t\t\titem.imports.push({\n\t\t\t\timportAs: '{ buildPermissionContract }',\n\t\t\t\tpackage: eventBuilderFile ?? '@sprucelabs/mercury-types',\n\t\t\t})\n\t\t}\n\n\t\treturn item\n\t}\n\n\tprivate buildEventSigTemplateItem(\n\t\tnamedSig: NamedEventSignature,\n\t\tschemaItems: SchemaTemplateItem[]\n\t) {\n\t\tconst { emitPayloadSchema, responsePayloadSchema, ...signature } =\n\t\t\tnamedSig.signature\n\n\t\tconst signatureTemplateItem: EventSignatureTemplateItem = { ...signature }\n\n\t\tif (emitPayloadSchema) {\n\t\t\tsignatureTemplateItem.emitPayloadSchema = schemaItems.find(\n\t\t\t\t(i) =>\n\t\t\t\t\ti.id === emitPayloadSchema.id &&\n\t\t\t\t\t(!emitPayloadSchema.namespace ||\n\t\t\t\t\t\ti.namespace === emitPayloadSchema.namespace)\n\t\t\t)\n\t\t}\n\n\t\tif (responsePayloadSchema) {\n\t\t\tsignatureTemplateItem.responsePayloadSchema = schemaItems.find(\n\t\t\t\t(i) =>\n\t\t\t\t\ti.id === responsePayloadSchema.id &&\n\t\t\t\t\t(!responsePayloadSchema.namespace ||\n\t\t\t\t\t\ti.namespace === responsePayloadSchema.namespace)\n\t\t\t)\n\t\t}\n\t\treturn signatureTemplateItem\n\t}\n\n\tprivate mapEventSigsToSchemaTemplateItems(\n\t\tnamedSignatures: NamedEventSignature[]\n\t) {\n\t\tconst schemasByNamespace: Record<string, Schema[]> =\n\t\t\tthis.mapEventSigsToSchemasByNamepace(namedSignatures)\n\n\t\tconst schemaTemplateItemBuilder = new SchemaTemplateItemBuilder('Cli')\n\t\tconst schemaItems: SchemaTemplateItem[] =\n\t\t\tschemaTemplateItemBuilder.buildTemplateItems(\n\t\t\t\tschemasByNamespace,\n\t\t\t\t'#spruce/events'\n\t\t\t)\n\n\t\treturn schemaItems\n\t}\n\n\tprivate mapEventSigsToSchemasByNamepace(\n\t\tnamedSignatures: NamedEventSignature[]\n\t) {\n\t\tconst schemasByNamespace: Record<string, Schema[]> = {}\n\n\t\tfor (const namedSig of namedSignatures) {\n\t\t\tconst namespacePascal = this.sigToNamespacePascal(namedSig)\n\t\t\tconst { emitPayloadSchema, responsePayloadSchema } = namedSig.signature\n\n\t\t\tif (!schemasByNamespace[namespacePascal]) {\n\t\t\t\tschemasByNamespace[namespacePascal] = []\n\t\t\t}\n\n\t\t\tif (emitPayloadSchema) {\n\t\t\t\tschemasByNamespace[namespacePascal].push({\n\t\t\t\t\tversion: namedSig.version,\n\t\t\t\t\t...emitPayloadSchema,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (responsePayloadSchema) {\n\t\t\t\tschemasByNamespace[namespacePascal].push({\n\t\t\t\t\tversion: namedSig.version,\n\t\t\t\t\t...responsePayloadSchema,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn schemasByNamespace\n\t}\n\n\tprivate sigToNamespacePascal(namedSig: NamedEventSignature) {\n\t\treturn namesUtil.toPascal(namedSig.eventNamespace ?? MERCURY_API_NAMESPACE)\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldTemplateItemBuilder.js","names":["FieldTemplateItemBuilder","fields","templateItems","generatedImportAsCount","field","registration","name","className","pkg","importAs","isLocal","item","namePascal","namesUtil","toPascal","nameCamel","toCamel","nameReadable","pascalType","type","camelType","description","valueTypeMapper","push"],"sources":["../../src/templateItemBuilders/FieldTemplateItemBuilder.ts"],"sourcesContent":["import { FieldTemplateItem } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { FetchedField } from '../features/schema/stores/SchemaStore'\n\nexport default class FieldTemplateItemBuilder {\n\tpublic generateTemplateItems(fields: FetchedField[]) {\n\t\tconst templateItems: FieldTemplateItem[] = []\n\t\tlet generatedImportAsCount = 0\n\n\t\tfor (let field of fields) {\n\t\t\tconst { registration } = field\n\t\t\tconst name = registration.className\n\t\t\tlet pkg = registration.package\n\t\t\tlet importAs = registration.importAs\n\n\t\t\tif (field.isLocal) {\n\t\t\t\tpkg = `#spruce/../fields/${registration.className}`\n\t\t\t\timportAs = `generated_import_${generatedImportAsCount++}`\n\t\t\t}\n\n\t\t\tconst item: FieldTemplateItem = {\n\t\t\t\tnamePascal: namesUtil.toPascal(name),\n\t\t\t\tnameCamel: namesUtil.toCamel(name),\n\t\t\t\tpackage: pkg,\n\t\t\t\tclassName: registration.className,\n\t\t\t\timportAs,\n\t\t\t\tnameReadable: registration.className,\n\t\t\t\tpascalType: namesUtil.toPascal(registration.type),\n\t\t\t\tcamelType: namesUtil.toCamel(registration.type),\n\t\t\t\tisLocal: field.isLocal,\n\t\t\t\tdescription: registration.description,\n\t\t\t\tvalueTypeMapper: registration.valueTypeMapper,\n\t\t\t}\n\n\t\t\tgeneratedImportAsCount++\n\n\t\t\ttemplateItems.push(item)\n\t\t}\n\n\t\treturn templateItems\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;AACA;;;;;;;;IAGqBA,wB;;;;;;;WACpB,+BAA6BC,MAA7B,EAAqD;MACpD,IAAMC,aAAkC,GAAG,EAA3C;MACA,IAAIC,sBAAsB,GAAG,CAA7B;;MAFoD,2CAIlCF,MAJkC;MAAA;;MAAA;QAIpD,oDAA0B;UAAA,IAAjBG,KAAiB;UACzB,IAAQC,YAAR,GAAyBD,KAAzB,CAAQC,YAAR;UACA,IAAMC,IAAI,GAAGD,YAAY,CAACE,SAA1B;UACA,IAAIC,GAAG,GAAGH,YAAY,WAAtB;UACA,IAAII,QAAQ,GAAGJ,YAAY,CAACI,QAA5B;;UAEA,IAAIL,KAAK,CAACM,OAAV,EAAmB;YAClBF,GAAG,+BAAwBH,YAAY,CAACE,SAArC,CAAH;YACAE,QAAQ,8BAAuBN,sBAAsB,EAA7C,CAAR;UACA;;UAED,IAAMQ,IAAuB,GAAG;YAC/BC,UAAU,EAAEC,
|
|
1
|
+
{"version":3,"file":"FieldTemplateItemBuilder.js","names":["FieldTemplateItemBuilder","fields","templateItems","generatedImportAsCount","field","registration","name","className","pkg","importAs","isLocal","item","namePascal","namesUtil","toPascal","nameCamel","toCamel","nameReadable","pascalType","type","camelType","description","valueTypeMapper","push"],"sources":["../../src/templateItemBuilders/FieldTemplateItemBuilder.ts"],"sourcesContent":["import { FieldTemplateItem } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { FetchedField } from '../features/schema/stores/SchemaStore'\n\nexport default class FieldTemplateItemBuilder {\n\tpublic generateTemplateItems(fields: FetchedField[]) {\n\t\tconst templateItems: FieldTemplateItem[] = []\n\t\tlet generatedImportAsCount = 0\n\n\t\tfor (let field of fields) {\n\t\t\tconst { registration } = field\n\t\t\tconst name = registration.className\n\t\t\tlet pkg = registration.package\n\t\t\tlet importAs = registration.importAs\n\n\t\t\tif (field.isLocal) {\n\t\t\t\tpkg = `#spruce/../fields/${registration.className}`\n\t\t\t\timportAs = `generated_import_${generatedImportAsCount++}`\n\t\t\t}\n\n\t\t\tconst item: FieldTemplateItem = {\n\t\t\t\tnamePascal: namesUtil.toPascal(name),\n\t\t\t\tnameCamel: namesUtil.toCamel(name),\n\t\t\t\tpackage: pkg,\n\t\t\t\tclassName: registration.className,\n\t\t\t\timportAs,\n\t\t\t\tnameReadable: registration.className,\n\t\t\t\tpascalType: namesUtil.toPascal(registration.type),\n\t\t\t\tcamelType: namesUtil.toCamel(registration.type),\n\t\t\t\tisLocal: field.isLocal,\n\t\t\t\tdescription: registration.description,\n\t\t\t\tvalueTypeMapper: registration.valueTypeMapper,\n\t\t\t}\n\n\t\t\tgeneratedImportAsCount++\n\n\t\t\ttemplateItems.push(item)\n\t\t}\n\n\t\treturn templateItems\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;AACA;;;;;;;;IAGqBA,wB;;;;;;;WACpB,+BAA6BC,MAA7B,EAAqD;MACpD,IAAMC,aAAkC,GAAG,EAA3C;MACA,IAAIC,sBAAsB,GAAG,CAA7B;;MAFoD,2CAIlCF,MAJkC;MAAA;;MAAA;QAIpD,oDAA0B;UAAA,IAAjBG,KAAiB;UACzB,IAAQC,YAAR,GAAyBD,KAAzB,CAAQC,YAAR;UACA,IAAMC,IAAI,GAAGD,YAAY,CAACE,SAA1B;UACA,IAAIC,GAAG,GAAGH,YAAY,WAAtB;UACA,IAAII,QAAQ,GAAGJ,YAAY,CAACI,QAA5B;;UAEA,IAAIL,KAAK,CAACM,OAAV,EAAmB;YAClBF,GAAG,+BAAwBH,YAAY,CAACE,SAArC,CAAH;YACAE,QAAQ,8BAAuBN,sBAAsB,EAA7C,CAAR;UACA;;UAED,IAAMQ,IAAuB,GAAG;YAC/BC,UAAU,EAAEC,2BAAA,CAAUC,QAAV,CAAmBR,IAAnB,CADmB;YAE/BS,SAAS,EAAEF,2BAAA,CAAUG,OAAV,CAAkBV,IAAlB,CAFoB;YAG/B,WAASE,GAHsB;YAI/BD,SAAS,EAAEF,YAAY,CAACE,SAJO;YAK/BE,QAAQ,EAARA,QAL+B;YAM/BQ,YAAY,EAAEZ,YAAY,CAACE,SANI;YAO/BW,UAAU,EAAEL,2BAAA,CAAUC,QAAV,CAAmBT,YAAY,CAACc,IAAhC,CAPmB;YAQ/BC,SAAS,EAAEP,2BAAA,CAAUG,OAAV,CAAkBX,YAAY,CAACc,IAA/B,CARoB;YAS/BT,OAAO,EAAEN,KAAK,CAACM,OATgB;YAU/BW,WAAW,EAAEhB,YAAY,CAACgB,WAVK;YAW/BC,eAAe,EAAEjB,YAAY,CAACiB;UAXC,CAAhC;UAcAnB,sBAAsB;UAEtBD,aAAa,CAACqB,IAAd,CAAmBZ,IAAnB;QACA;MAhCmD;QAAA;MAAA;QAAA;MAAA;;MAkCpD,OAAOT,aAAP;IACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaTemplateItemBuilder.js","names":["SchemaTemplateItemBuilder","localNamespace","schemasByNamespace","destinationDir","schemas","namespaces","Object","keys","namespace","push","map","s","flattenSchemas","flattened","values","schemasByKey","sorted","sort","a","b","doesADependOnB","reverse","schemaTemplateItems","buildTemplateItem","dependencies","idWithVersion","schema","find","dep","forEach","def","flattenSchema","isNested","localSchema","namedFields","pluckFields","field","name","type","schemasOrIdsWithVersion","SchemaField","mapFieldDefinitionToSchemasOrIdsWithVersion","originalOptions","options","schemaId","schemaIds","schemaOrId","related","version","moduleToImportFromWhenRemote","relatedIdWithVersion","length","SpruceError","code","id","schemaNamespace","fieldName","fieldOptions","key","schemaUtil","generateCacheKey","fields","dynamicFieldSignature","dynamicField","importFrom","getImportFromForSchema","item","generateNamesForSchema","toLowerCase","importsWhenLocal","imports","importsWhenRemote","match","CORE_NAMESPACE","undefined"],"sources":["../../src/templateItemBuilders/SchemaTemplateItemBuilder.ts"],"sourcesContent":["import {\n\tSchema,\n\tSchemaTemplateItem,\n\tSchemaField,\n\tSchemaIdWithVersion,\n\tnormalizeSchemaToIdWithVersion,\n\tisIdWithVersion,\n} from '@sprucelabs/schema'\nimport { CORE_NAMESPACE } from '@sprucelabs/spruce-skill-utils'\nimport cloneDeep from 'lodash/cloneDeep'\nimport isEqual from 'lodash/isEqual'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { SchemasByNamespace } from '../features/schema/stores/SchemaStore'\nimport schemaUtil from '../features/schema/utilities/schema.utility'\n\ninterface SchemaWithDependencies {\n\tschema: Schema\n\tdependencies: SchemaIdWithVersion[]\n\tisNested: boolean\n}\n\nexport default class SchemaTemplateItemBuilder {\n\tprivate schemasByKey: Record<string, SchemaWithDependencies> = {}\n\tprivate localNamespace: string\n\n\tpublic constructor(localNamespace: string) {\n\t\tthis.localNamespace = localNamespace\n\t}\n\n\tpublic buildTemplateItems(\n\t\tschemasByNamespace: SchemasByNamespace,\n\t\tdestinationDir = '#spruce/schemas'\n\t) {\n\t\tconst schemas: Schema[] = []\n\t\tconst namespaces = Object.keys(schemasByNamespace)\n\n\t\tfor (const namespace of namespaces) {\n\t\t\tschemas.push(\n\t\t\t\t...schemasByNamespace[namespace].map((s) => ({ namespace, ...s }))\n\t\t\t)\n\t\t}\n\n\t\tthis.flattenSchemas(schemas)\n\n\t\tconst flattened = Object.values(this.schemasByKey)\n\t\tconst sorted = flattened\n\t\t\t.sort((a, b) => {\n\t\t\t\tif (this.doesADependOnB(a, b)) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (this.doesADependOnB(b, a)) {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn 0\n\t\t\t})\n\t\t\t.reverse()\n\n\t\tconst schemaTemplateItems = sorted.map((s) =>\n\t\t\tthis.buildTemplateItem({\n\t\t\t\t...s,\n\t\t\t\tdestinationDir,\n\t\t\t})\n\t\t)\n\n\t\treturn schemaTemplateItems\n\t}\n\n\tprivate doesADependOnB(a: SchemaWithDependencies, b: SchemaWithDependencies) {\n\t\tconst { dependencies } = a\n\t\tconst idWithVersion = normalizeSchemaToIdWithVersion(b.schema)\n\n\t\tif (dependencies.find((dep) => isEqual(dep, idWithVersion))) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate flattenSchemas(schemas: Schema[]) {\n\t\tschemas.forEach((def) => {\n\t\t\tthis.flattenSchema(def)\n\t\t})\n\t}\n\n\tprivate flattenSchema(schema: Schema, isNested = false) {\n\t\tconst localSchema = cloneDeep(schema)\n\n\t\tconst namedFields = this.pluckFields(localSchema)\n\t\tconst dependencies: SchemaIdWithVersion[] = []\n\n\t\tnamedFields.forEach(({ field, name }) => {\n\t\t\tif (field.type === 'schema') {\n\t\t\t\tconst schemasOrIdsWithVersion =\n\t\t\t\t\tSchemaField.mapFieldDefinitionToSchemasOrIdsWithVersion(field)\n\n\t\t\t\tconst { ...originalOptions } = field.options\n\t\t\t\tdelete field.options.schema\n\t\t\t\tdelete field.options.schemaId\n\t\t\t\tdelete field.options.schemaIds\n\t\t\t\tdelete field.options.schemas\n\t\t\t\tfield.options.schemaIds = []\n\n\t\t\t\tschemasOrIdsWithVersion.forEach((schemaOrId) => {\n\t\t\t\t\tconst related = { ...schemaOrId }\n\n\t\t\t\t\tif (localSchema.version && !related.version) {\n\t\t\t\t\t\trelated.version = localSchema.version\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!related.namespace) {\n\t\t\t\t\t\trelated.namespace = schema.namespace\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tlocalSchema.moduleToImportFromWhenRemote &&\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t!related.moduleToImportFromWhenRemote &&\n\t\t\t\t\t\t!isIdWithVersion(related)\n\t\t\t\t\t) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\trelated.moduleToImportFromWhenRemote =\n\t\t\t\t\t\t\tlocalSchema.moduleToImportFromWhenRemote\n\t\t\t\t\t}\n\n\t\t\t\t\tconst relatedIdWithVersion = normalizeSchemaToIdWithVersion(related)\n\n\t\t\t\t\tfield.options.schemaIds?.push(relatedIdWithVersion)\n\t\t\t\t\tdependencies.push(relatedIdWithVersion)\n\n\t\t\t\t\tthis.flattenSchema(related, true)\n\t\t\t\t})\n\n\t\t\t\tif (field.options.schemaIds.length === 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'SCHEMA_TEMPLATE_ITEM_BUILDING_FAILED',\n\t\t\t\t\t\tschemaId: schema.id,\n\t\t\t\t\t\tschemaNamespace: schema.namespace as string,\n\t\t\t\t\t\tfieldName: name,\n\t\t\t\t\t\tfieldOptions: originalOptions,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tconst key = schemaUtil.generateCacheKey(localSchema)\n\t\tthis.schemasByKey[key] = merge(this.schemasByKey[key] ?? {}, {\n\t\t\tschema: localSchema,\n\t\t\tdependencies,\n\t\t\tisNested: this.schemasByKey[key]?.isNested === false ? false : isNested,\n\t\t})\n\t}\n\n\tprivate pluckFields(localSchema: Schema) {\n\t\tconst fields = localSchema.dynamicFieldSignature\n\t\t\t? { dynamicField: localSchema.dynamicFieldSignature }\n\t\t\t: localSchema.fields ?? {}\n\n\t\tconst namedFields = Object.keys(fields).map((name) => ({\n\t\t\tname,\n\t\t\tfield: fields[name],\n\t\t}))\n\t\treturn namedFields\n\t}\n\n\tprivate buildTemplateItem(options: {\n\t\tschema: Schema\n\t\tisNested: boolean\n\t\tdestinationDir: string\n\t}): SchemaTemplateItem {\n\t\tconst { schema, isNested, destinationDir } = options\n\t\tconst namespace = schema.namespace ?? this.localNamespace\n\n\t\tconst importFrom = this.getImportFromForSchema(schema)\n\t\tconst item: SchemaTemplateItem = {\n\t\t\tid: schema.id,\n\t\t\tnamespace,\n\t\t\tschema,\n\t\t\t...schemaUtil.generateNamesForSchema(schema),\n\t\t\tisNested,\n\t\t\tdestinationDir,\n\t\t}\n\n\t\tif (importFrom) {\n\t\t\titem.importFrom = importFrom\n\t\t}\n\n\t\tif (\n\t\t\tnamespace.toLowerCase() === this.localNamespace.toLowerCase() &&\n\t\t\tschema.importsWhenLocal\n\t\t) {\n\t\t\titem.imports = [...schema.importsWhenLocal]\n\t\t} else if (\n\t\t\tnamespace.toLowerCase() !== this.localNamespace.toLowerCase() &&\n\t\t\tschema.importsWhenRemote\n\t\t) {\n\t\t\titem.imports = [...schema.importsWhenRemote]\n\t\t}\n\n\t\tconst namedFields = this.pluckFields(schema)\n\n\t\tfor (const { field } of namedFields) {\n\t\t\tif (field.type === 'schema') {\n\t\t\t\tfield.options.schemaIds?.forEach((idWithVersion) => {\n\t\t\t\t\tconst key = schemaUtil.generateCacheKey(idWithVersion)\n\t\t\t\t\tconst match = this.schemasByKey[key]\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tmatch.schema.importsWhenRemote &&\n\t\t\t\t\t\tmatch.schema.namespace &&\n\t\t\t\t\t\tmatch.schema.namespace.toLowerCase() !==\n\t\t\t\t\t\t\tthis.localNamespace.toLowerCase()\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (!item.imports) {\n\t\t\t\t\t\t\titem.imports = []\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.imports.push(...match.schema.importsWhenRemote)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn item\n\t}\n\n\tprivate getImportFromForSchema(schema: Schema): string | undefined {\n\t\tif (\n\t\t\tschema.moduleToImportFromWhenRemote &&\n\t\t\tschema.namespace !== this.localNamespace\n\t\t) {\n\t\t\treturn schema.moduleToImportFromWhenRemote\n\t\t}\n\t\tswitch (schema.namespace) {\n\t\t\tcase CORE_NAMESPACE:\n\t\t\t\tif (this.localNamespace !== CORE_NAMESPACE) {\n\t\t\t\t\treturn '@sprucelabs/spruce-core-schemas'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn undefined\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SchemaTemplateItemBuilder.js","names":["SchemaTemplateItemBuilder","localNamespace","schemasByNamespace","destinationDir","schemas","namespaces","Object","keys","namespace","push","map","s","flattenSchemas","flattened","values","schemasByKey","sorted","sort","a","b","doesADependOnB","reverse","schemaTemplateItems","buildTemplateItem","dependencies","idWithVersion","normalizeSchemaToIdWithVersion","schema","find","dep","isEqual","forEach","def","flattenSchema","isNested","localSchema","cloneDeep","namedFields","pluckFields","field","name","type","schemasOrIdsWithVersion","SchemaField","mapFieldDefinitionToSchemasOrIdsWithVersion","originalOptions","options","schemaId","schemaIds","schemaOrId","related","version","moduleToImportFromWhenRemote","isIdWithVersion","relatedIdWithVersion","length","SpruceError","code","id","schemaNamespace","fieldName","fieldOptions","key","schemaUtil","generateCacheKey","merge","fields","dynamicFieldSignature","dynamicField","importFrom","getImportFromForSchema","item","generateNamesForSchema","toLowerCase","importsWhenLocal","imports","importsWhenRemote","match","CORE_NAMESPACE","undefined"],"sources":["../../src/templateItemBuilders/SchemaTemplateItemBuilder.ts"],"sourcesContent":["import {\n\tSchema,\n\tSchemaTemplateItem,\n\tSchemaField,\n\tSchemaIdWithVersion,\n\tnormalizeSchemaToIdWithVersion,\n\tisIdWithVersion,\n} from '@sprucelabs/schema'\nimport { CORE_NAMESPACE } from '@sprucelabs/spruce-skill-utils'\nimport cloneDeep from 'lodash/cloneDeep'\nimport isEqual from 'lodash/isEqual'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { SchemasByNamespace } from '../features/schema/stores/SchemaStore'\nimport schemaUtil from '../features/schema/utilities/schema.utility'\n\ninterface SchemaWithDependencies {\n\tschema: Schema\n\tdependencies: SchemaIdWithVersion[]\n\tisNested: boolean\n}\n\nexport default class SchemaTemplateItemBuilder {\n\tprivate schemasByKey: Record<string, SchemaWithDependencies> = {}\n\tprivate localNamespace: string\n\n\tpublic constructor(localNamespace: string) {\n\t\tthis.localNamespace = localNamespace\n\t}\n\n\tpublic buildTemplateItems(\n\t\tschemasByNamespace: SchemasByNamespace,\n\t\tdestinationDir = '#spruce/schemas'\n\t) {\n\t\tconst schemas: Schema[] = []\n\t\tconst namespaces = Object.keys(schemasByNamespace)\n\n\t\tfor (const namespace of namespaces) {\n\t\t\tschemas.push(\n\t\t\t\t...schemasByNamespace[namespace].map((s) => ({ namespace, ...s }))\n\t\t\t)\n\t\t}\n\n\t\tthis.flattenSchemas(schemas)\n\n\t\tconst flattened = Object.values(this.schemasByKey)\n\t\tconst sorted = flattened\n\t\t\t.sort((a, b) => {\n\t\t\t\tif (this.doesADependOnB(a, b)) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (this.doesADependOnB(b, a)) {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn 0\n\t\t\t})\n\t\t\t.reverse()\n\n\t\tconst schemaTemplateItems = sorted.map((s) =>\n\t\t\tthis.buildTemplateItem({\n\t\t\t\t...s,\n\t\t\t\tdestinationDir,\n\t\t\t})\n\t\t)\n\n\t\treturn schemaTemplateItems\n\t}\n\n\tprivate doesADependOnB(a: SchemaWithDependencies, b: SchemaWithDependencies) {\n\t\tconst { dependencies } = a\n\t\tconst idWithVersion = normalizeSchemaToIdWithVersion(b.schema)\n\n\t\tif (dependencies.find((dep) => isEqual(dep, idWithVersion))) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate flattenSchemas(schemas: Schema[]) {\n\t\tschemas.forEach((def) => {\n\t\t\tthis.flattenSchema(def)\n\t\t})\n\t}\n\n\tprivate flattenSchema(schema: Schema, isNested = false) {\n\t\tconst localSchema = cloneDeep(schema)\n\n\t\tconst namedFields = this.pluckFields(localSchema)\n\t\tconst dependencies: SchemaIdWithVersion[] = []\n\n\t\tnamedFields.forEach(({ field, name }) => {\n\t\t\tif (field.type === 'schema') {\n\t\t\t\tconst schemasOrIdsWithVersion =\n\t\t\t\t\tSchemaField.mapFieldDefinitionToSchemasOrIdsWithVersion(field)\n\n\t\t\t\tconst { ...originalOptions } = field.options\n\t\t\t\tdelete field.options.schema\n\t\t\t\tdelete field.options.schemaId\n\t\t\t\tdelete field.options.schemaIds\n\t\t\t\tdelete field.options.schemas\n\t\t\t\tfield.options.schemaIds = []\n\n\t\t\t\tschemasOrIdsWithVersion.forEach((schemaOrId) => {\n\t\t\t\t\tconst related = { ...schemaOrId }\n\n\t\t\t\t\tif (localSchema.version && !related.version) {\n\t\t\t\t\t\trelated.version = localSchema.version\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!related.namespace) {\n\t\t\t\t\t\trelated.namespace = schema.namespace\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tlocalSchema.moduleToImportFromWhenRemote &&\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t!related.moduleToImportFromWhenRemote &&\n\t\t\t\t\t\t!isIdWithVersion(related)\n\t\t\t\t\t) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\trelated.moduleToImportFromWhenRemote =\n\t\t\t\t\t\t\tlocalSchema.moduleToImportFromWhenRemote\n\t\t\t\t\t}\n\n\t\t\t\t\tconst relatedIdWithVersion = normalizeSchemaToIdWithVersion(related)\n\n\t\t\t\t\tfield.options.schemaIds?.push(relatedIdWithVersion)\n\t\t\t\t\tdependencies.push(relatedIdWithVersion)\n\n\t\t\t\t\tthis.flattenSchema(related, true)\n\t\t\t\t})\n\n\t\t\t\tif (field.options.schemaIds.length === 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'SCHEMA_TEMPLATE_ITEM_BUILDING_FAILED',\n\t\t\t\t\t\tschemaId: schema.id,\n\t\t\t\t\t\tschemaNamespace: schema.namespace as string,\n\t\t\t\t\t\tfieldName: name,\n\t\t\t\t\t\tfieldOptions: originalOptions,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tconst key = schemaUtil.generateCacheKey(localSchema)\n\t\tthis.schemasByKey[key] = merge(this.schemasByKey[key] ?? {}, {\n\t\t\tschema: localSchema,\n\t\t\tdependencies,\n\t\t\tisNested: this.schemasByKey[key]?.isNested === false ? false : isNested,\n\t\t})\n\t}\n\n\tprivate pluckFields(localSchema: Schema) {\n\t\tconst fields = localSchema.dynamicFieldSignature\n\t\t\t? { dynamicField: localSchema.dynamicFieldSignature }\n\t\t\t: localSchema.fields ?? {}\n\n\t\tconst namedFields = Object.keys(fields).map((name) => ({\n\t\t\tname,\n\t\t\tfield: fields[name],\n\t\t}))\n\t\treturn namedFields\n\t}\n\n\tprivate buildTemplateItem(options: {\n\t\tschema: Schema\n\t\tisNested: boolean\n\t\tdestinationDir: string\n\t}): SchemaTemplateItem {\n\t\tconst { schema, isNested, destinationDir } = options\n\t\tconst namespace = schema.namespace ?? this.localNamespace\n\n\t\tconst importFrom = this.getImportFromForSchema(schema)\n\t\tconst item: SchemaTemplateItem = {\n\t\t\tid: schema.id,\n\t\t\tnamespace,\n\t\t\tschema,\n\t\t\t...schemaUtil.generateNamesForSchema(schema),\n\t\t\tisNested,\n\t\t\tdestinationDir,\n\t\t}\n\n\t\tif (importFrom) {\n\t\t\titem.importFrom = importFrom\n\t\t}\n\n\t\tif (\n\t\t\tnamespace.toLowerCase() === this.localNamespace.toLowerCase() &&\n\t\t\tschema.importsWhenLocal\n\t\t) {\n\t\t\titem.imports = [...schema.importsWhenLocal]\n\t\t} else if (\n\t\t\tnamespace.toLowerCase() !== this.localNamespace.toLowerCase() &&\n\t\t\tschema.importsWhenRemote\n\t\t) {\n\t\t\titem.imports = [...schema.importsWhenRemote]\n\t\t}\n\n\t\tconst namedFields = this.pluckFields(schema)\n\n\t\tfor (const { field } of namedFields) {\n\t\t\tif (field.type === 'schema') {\n\t\t\t\tfield.options.schemaIds?.forEach((idWithVersion) => {\n\t\t\t\t\tconst key = schemaUtil.generateCacheKey(idWithVersion)\n\t\t\t\t\tconst match = this.schemasByKey[key]\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tmatch.schema.importsWhenRemote &&\n\t\t\t\t\t\tmatch.schema.namespace &&\n\t\t\t\t\t\tmatch.schema.namespace.toLowerCase() !==\n\t\t\t\t\t\t\tthis.localNamespace.toLowerCase()\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (!item.imports) {\n\t\t\t\t\t\t\titem.imports = []\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.imports.push(...match.schema.importsWhenRemote)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn item\n\t}\n\n\tprivate getImportFromForSchema(schema: Schema): string | undefined {\n\t\tif (\n\t\t\tschema.moduleToImportFromWhenRemote &&\n\t\t\tschema.namespace !== this.localNamespace\n\t\t) {\n\t\t\treturn schema.moduleToImportFromWhenRemote\n\t\t}\n\t\tswitch (schema.namespace) {\n\t\t\tcase CORE_NAMESPACE:\n\t\t\t\tif (this.localNamespace !== CORE_NAMESPACE) {\n\t\t\t\t\treturn '@sprucelabs/spruce-core-schemas'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn undefined\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractCliTest.js","names":["AbstractCliTest","cleanTestDirsAndFiles","LintService","disableLinting","ImportService","setCacheDir","diskUtil","createRandomTempDir","enableCaching","process","env","ENABLE_INSTALL_ENTERTAINMENT","originalEnv","testUtil","startLogTimer","SchemaRegistry","getInstance","forgetAllSchemas","cwd","freshTmpDir","homeDir","emitter","undefined","featureInstaller","OnboardingStore","overrideCwd","ui","reset","invocations","setCursorPosition","x","y","clearFixtures","clearCache","SkillStore","clearCurrentSkill","EventStore","CommandService","clearMockResponses","MercuryClientFactory","setIsTestMode","commandFaker","CommandFaker","organizationFixture","clearAllOrgs","mercuryFixture","disconnectAll","_ui","isWaitingForInput","Error","doesDirExist","shouldClearCache","deleteDir","shouldCleanupTestSkillDirs","FeatureFixture","deleteOldSkillDirs","pattern","resolveTestPath","matches","match","deleteFile","personFixture","skillFixture","viewFixture","tmpDirectory","resolveTestDir","uuid","v4","fs","ensureDirSync","SpyInterface","CliGlobalEmitter","Emitter","pathAfterTestDirsAndFiles","pathUtil","join","cliRoot","options","Cli","fixture","linkLocalPackages","type","sf","ServiceFactory","Service","getEmitter","serviceFactory","apiClientFactory","getMercuryFixture","getApiClientFactory","getFeatureInstaller","MercuryFixture","PersonFixture","writerFactory","WriterFactory","viewWriter","Writer","fileDescriptions","ViewFixture","Action","templates","settings","execute","promise","waitForInput","sendInput","results","OrganizationFixture","people","StoreFactory","SkillFixture","filePath","resolveHashSprucePath","storeFactory","actionExecuter","ActionExecuter","FeatureInstallerFactory","WithAllFeatures","code","Store","isInstalled","assert","isTrue","files","file","checker","check","path","connectToApi","all","dir","wait","timeout","log","featureCode","actionCode","executer","shouldThrowOnListenerError","actionFactory","ActionFactory","optionOverrides","shouldInstallMissingDependencies","featureInstallerFactory","shouldAutoHandleDependencies","label","last","getLastInvocation","doesInclude","choices","find","o","value","AbstractSpruceTest","__dirname"],"sources":["../../src/tests/AbstractCliTest.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SchemaRegistry } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport AbstractSpruceTest, { assert } from '@sprucelabs/test'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport * as uuid from 'uuid'\nimport { CliBootOptions } from '../cli'\nimport AbstractAction from '../features/AbstractAction'\nimport { FeatureOptions } from '../features/AbstractFeature'\nimport ActionExecuter, {\n\tActionExecuterOptions,\n} from '../features/ActionExecuter'\nimport ActionFactory from '../features/ActionFactory'\nimport EventStore from '../features/event/stores/EventStore'\nimport FeatureInstaller from '../features/FeatureInstaller'\nimport FeatureInstallerFactory from '../features/FeatureInstallerFactory'\nimport { FeatureActionResponse, FeatureCode } from '../features/features.types'\nimport OnboardingStore from '../features/onboard/stores/OnboardingStore'\nimport SkillStore from '../features/skill/stores/SkillStore'\nimport CliGlobalEmitter, { GlobalEmitter } from '../GlobalEmitter'\nimport SpyInterface from '../interfaces/SpyInterface'\nimport CommandService from '../services/CommandService'\nimport ImportService from '../services/ImportService'\nimport LintService from '../services/LintService'\nimport ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreFactoryOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport { ApiClientFactoryOptions } from '../types/apiClient.types'\nimport { OptionOverrides } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport CommandFaker from './CommandFaker'\nimport FeatureFixture, {\n\tFeatureFixtureOptions,\n} from './fixtures/FeatureFixture'\nimport MercuryFixture from './fixtures/MercuryFixture'\nimport OrganizationFixture from './fixtures/OrganizationFixture'\nimport PersonFixture from './fixtures/PersonFixture'\nimport SkillFixture from './fixtures/SkillFixture'\nimport ViewFixture from './fixtures/ViewFixture'\nimport testUtil from './utilities/test.utility'\n\ntype ExecuterOptions = Partial<ActionExecuterOptions> & {\n\toptionOverrides?: OptionOverrides\n}\n\nexport default abstract class AbstractCliTest extends AbstractSpruceTest {\n\tprotected static cliRoot = pathUtil.join(__dirname, '..')\n\tprotected static homeDir: string\n\tprotected static commandFaker: CommandFaker\n\n\tprivate static _ui: SpyInterface\n\tprivate static emitter?: GlobalEmitter\n\tprivate static mercuryFixture?: MercuryFixture\n\tprivate static personFixture?: PersonFixture\n\tprivate static organizationFixture?: OrganizationFixture\n\tprivate static skillFixture?: SkillFixture\n\tprivate static featureInstaller?: FeatureInstaller\n\tprivate static viewFixture?: ViewFixture\n\tprivate static originalEnv: { [x: string]: string | undefined }\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tawait this.cleanTestDirsAndFiles()\n\n\t\tLintService.disableLinting()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tImportService.enableCaching()\n\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT = 'false'\n\n\t\tthis.originalEnv = { ...process.env }\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\t//@ts-ignore\n\t\tprocess.env = { ...this.originalEnv }\n\n\t\ttestUtil.startLogTimer()\n\n\t\tSchemaRegistry.getInstance().forgetAllSchemas()\n\n\t\tthis.cwd = this.freshTmpDir()\n\t\tthis.homeDir = this.freshTmpDir()\n\n\t\tthis.emitter = undefined\n\t\tthis.featureInstaller = undefined\n\n\t\tOnboardingStore.overrideCwd(diskUtil.createRandomTempDir())\n\n\t\tthis.ui.reset()\n\t\tthis.ui.invocations = []\n\t\tthis.ui.setCursorPosition({ x: 0, y: 0 })\n\n\t\tthis.clearFixtures()\n\n\t\tImportService.clearCache()\n\t\tSkillStore.clearCurrentSkill()\n\t\tEventStore.clearCache()\n\t\tCommandService.clearMockResponses()\n\t\tMercuryClientFactory.reset()\n\t\tMercuryClientFactory.setIsTestMode(false)\n\n\t\tthis.commandFaker = new CommandFaker()\n\t}\n\n\tprotected static async afterEach() {\n\t\tawait super.afterEach()\n\n\t\tawait this.organizationFixture?.clearAllOrgs()\n\t\tawait this.mercuryFixture?.disconnectAll()\n\n\t\tthis.clearFixtures()\n\n\t\tif (this._ui?.isWaitingForInput()) {\n\t\t\tthrow new Error(\n\t\t\t\t`Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.`\n\t\t\t)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.cwd) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.cwd)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.homeDir) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.homeDir)\n\t\t}\n\t}\n\n\tprotected static async afterAll() {\n\t\tawait super.afterAll()\n\t\tif (testUtil.shouldCleanupTestSkillDirs()) {\n\t\t\tFeatureFixture.deleteOldSkillDirs()\n\t\t}\n\t}\n\n\tprivate static async cleanTestDirsAndFiles() {\n\t\tconst pattern = this.resolveTestPath('**/*.d.ts')\n\t\tconst matches = await globby(pattern)\n\n\t\tfor (const match of matches) {\n\t\t\tdiskUtil.deleteFile(match)\n\t\t}\n\t}\n\n\tprivate static clearFixtures() {\n\t\tthis.emitter = undefined\n\t\tthis.mercuryFixture = undefined\n\t\tthis.organizationFixture = undefined\n\t\tthis.personFixture = undefined\n\t\tthis.skillFixture = undefined\n\t\tthis.viewFixture = undefined\n\t}\n\n\tprotected static freshTmpDir() {\n\t\tconst tmpDirectory = testUtil.resolveTestDir(uuid.v4())\n\t\tfs.ensureDirSync(tmpDirectory)\n\t\treturn tmpDirectory\n\t}\n\n\tprotected static get ui() {\n\t\tif (!this._ui) {\n\t\t\tthis._ui = new SpyInterface()\n\t\t}\n\n\t\treturn this._ui\n\t}\n\n\tprotected static getEmitter() {\n\t\tif (!this.emitter) {\n\t\t\tthis.emitter = CliGlobalEmitter.Emitter()\n\t\t}\n\t\treturn this.emitter\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUtil.join(\n\t\t\tthis.cliRoot,\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n\n\tprotected static async Cli(options?: CliBootOptions) {\n\t\treturn this.FeatureFixture(options).Cli({\n\t\t\tcwd: this.cwd,\n\t\t\thomeDir: this.homeDir,\n\t\t\t...(options ?? {}),\n\t\t})\n\t}\n\n\tprotected static async linkLocalPackages() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tawait fixture.linkLocalPackages()\n\t}\n\n\tprotected static Service<S extends Service>(\n\t\ttype: S,\n\t\tcwd?: string\n\t): ServiceMap[S] {\n\t\tconst sf = this.ServiceFactory()\n\t\treturn sf.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected static ServiceFactory() {\n\t\treturn new ServiceFactory()\n\t}\n\n\tprotected static FeatureFixture(options?: Partial<FeatureFixtureOptions>) {\n\t\tconst emitter = options?.emitter ?? this.getEmitter()\n\n\t\treturn new FeatureFixture({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory: this.ServiceFactory(),\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tfeatureInstaller: this.getFeatureInstaller({ emitter }),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static getMercuryFixture() {\n\t\tif (!this.mercuryFixture) {\n\t\t\tthis.mercuryFixture = new MercuryFixture(this.cwd, this.ServiceFactory())\n\t\t}\n\n\t\treturn this.mercuryFixture\n\t}\n\n\tprotected static get people() {\n\t\tif (!this.personFixture) {\n\t\t\tthis.personFixture = new PersonFixture(\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.personFixture\n\t}\n\n\tprotected static getViewFixture() {\n\t\tif (!this.viewFixture) {\n\t\t\tconst writerFactory = this.WriterFactory()\n\n\t\t\tconst viewWriter = writerFactory.Writer('view', { fileDescriptions: [] })\n\t\t\tthis.viewFixture = new ViewFixture(\n\t\t\t\tthis.cwd,\n\t\t\t\tviewWriter,\n\t\t\t\tthis.Action('view', 'sync')\n\t\t\t)\n\t\t}\n\n\t\treturn this.viewFixture\n\t}\n\n\tprivate static WriterFactory() {\n\t\treturn new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui: this.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t})\n\t}\n\n\tprotected static async skipInstallSkillPrompts<\n\t\tE extends () => Promise<FeatureActionResponse>\n\t>(\n\t\texecute?: E\n\t): Promise<E extends undefined ? undefined : FeatureActionResponse> {\n\t\tconst promise = execute?.()\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('n')\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\treturn results as any\n\t}\n\n\tprotected static getOrganizationFixture() {\n\t\tif (!this.organizationFixture) {\n\t\t\tthis.organizationFixture = new OrganizationFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.organizationFixture\n\t}\n\n\tprotected static getSkillFixture() {\n\t\tif (!this.skillFixture) {\n\t\t\tthis.skillFixture = new SkillFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory(),\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.skillFixture\n\t}\n\n\tprotected static resolveHashSprucePath(...filePath: string[]) {\n\t\treturn diskUtil.resolveHashSprucePath(this.cwd, ...filePath)\n\t}\n\n\tprotected static getFeatureInstaller(options?: Partial<FeatureOptions>) {\n\t\tif (!this.featureInstaller) {\n\t\t\tconst serviceFactory = this.ServiceFactory()\n\t\t\tconst storeFactory = this.StoreFactory(options)\n\t\t\tconst emitter = this.getEmitter()\n\t\t\tconst apiClientFactory = this.getMercuryFixture().getApiClientFactory()\n\n\t\t\tconst actionExecuter = this.ActionExecuter()\n\n\t\t\tthis.featureInstaller = FeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui: this.ui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t\t...options,\n\t\t\t})\n\t\t}\n\n\t\treturn this.featureInstaller\n\t}\n\n\tprotected static StoreFactory(options?: Partial<StoreFactoryOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\n\t\treturn new StoreFactory({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: this.homeDir,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\temitter: this.getEmitter(),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.StoreFactory().Store(code, {\n\t\t\tcwd: this.cwd,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static async waitForInput() {\n\t\treturn this.ui.waitForInput()\n\t}\n\n\tprotected static async assertIsFeatureInstalled(code: FeatureCode) {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\t\tconst isInstalled = await featureInstaller.isInstalled(code)\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\tprotected static async assertValidActionResponseFiles(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tfor (const file of results.files ?? []) {\n\t\t\tconst checker = this.Service('typeChecker')\n\t\t\tawait checker.check(file.path)\n\t\t}\n\n\t\t// await Promise.all(\n\t\t// \t(results.files ?? []).map((file) => {\n\t\t// \t\tconst checker = this.Service('typeChecker')\n\t\t// \t\treturn checker.check(file.path)\n\t\t// \t})\n\t\t// )\n\t}\n\n\tprotected static async connectToApi(options?: ApiClientFactoryOptions) {\n\t\treturn this.getMercuryFixture().connectToApi(options)\n\t}\n\n\tprotected static async openInVsCode(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Action('vscode', 'setup').execute({ all: true })\n\n\t\tawait this.Service('command').execute(\n\t\t\t`code ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static async openInFinder(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Service('command').execute(\n\t\t\t`open ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static log(...args: any[]) {\n\t\ttestUtil.log(...args)\n\t}\n\n\tprotected static Action<\n\t\tAction extends AbstractAction = AbstractAction,\n\t\tF extends FeatureCode = FeatureCode\n\t>(featureCode: F, actionCode: string, options?: ExecuterOptions): Action {\n\t\tconst executer = this.ActionExecuter({\n\t\t\tshouldThrowOnListenerError: true,\n\t\t\t...options,\n\t\t}).Action(featureCode, actionCode)\n\n\t\treturn executer as any\n\t}\n\n\tprotected static ActionExecuter(options?: ExecuterOptions) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\t\tconst writerFactory = this.WriterFactory()\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\twriterFactory,\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory: this.StoreFactory(),\n\t\t\ttemplates,\n\t\t\toptionOverrides: {\n\t\t\t\t'sync.schemas': {\n\t\t\t\t\tshouldInstallMissingDependencies: true,\n\t\t\t\t},\n\t\t\t\t...options?.optionOverrides,\n\t\t\t},\n\t\t})\n\n\t\tconst executer = new ActionExecuter({\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tactionFactory,\n\t\t\tfeatureInstallerFactory: () => {\n\t\t\t\treturn this.getFeatureInstaller()\n\t\t\t},\n\t\t\tshouldAutoHandleDependencies: false,\n\t\t\t...options,\n\t\t})\n\n\t\treturn executer\n\t}\n\n\tprotected static selectOptionBasedOnLabel(label: string) {\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel,\n\t\t})\n\n\t\tconst match = last.options.options.choices.find(\n\t\t\t(o: any) => o.label === label\n\t\t)\n\n\t\tvoid this.ui.sendInput(`${match.value}`)\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AbstractCliTest.js","names":["AbstractCliTest","cleanTestDirsAndFiles","LintService","disableLinting","ImportService","setCacheDir","diskUtil","createRandomTempDir","enableCaching","process","env","ENABLE_INSTALL_ENTERTAINMENT","originalEnv","testUtil","startLogTimer","SchemaRegistry","getInstance","forgetAllSchemas","cwd","freshTmpDir","homeDir","emitter","undefined","featureInstaller","OnboardingStore","overrideCwd","ui","reset","invocations","setCursorPosition","x","y","clearFixtures","clearCache","SkillStore","clearCurrentSkill","EventStore","CommandService","clearMockResponses","MercuryClientFactory","setIsTestMode","commandFaker","CommandFaker","organizationFixture","clearAllOrgs","mercuryFixture","disconnectAll","_ui","isWaitingForInput","Error","doesDirExist","shouldClearCache","deleteDir","shouldCleanupTestSkillDirs","FeatureFixture","deleteOldSkillDirs","pattern","resolveTestPath","globby","matches","match","deleteFile","personFixture","skillFixture","viewFixture","tmpDirectory","resolveTestDir","uuid","v4","fs","ensureDirSync","SpyInterface","CliGlobalEmitter","Emitter","pathAfterTestDirsAndFiles","pathUtil","join","cliRoot","options","Cli","fixture","linkLocalPackages","type","sf","ServiceFactory","Service","getEmitter","serviceFactory","apiClientFactory","getMercuryFixture","getApiClientFactory","getFeatureInstaller","MercuryFixture","PersonFixture","writerFactory","WriterFactory","viewWriter","Writer","fileDescriptions","ViewFixture","Action","templates","settings","execute","promise","waitForInput","sendInput","results","OrganizationFixture","people","StoreFactory","SkillFixture","filePath","resolveHashSprucePath","storeFactory","actionExecuter","ActionExecuter","FeatureInstallerFactory","WithAllFeatures","code","Store","isInstalled","assert","isTrue","files","file","checker","check","path","connectToApi","all","dir","wait","timeout","log","featureCode","actionCode","executer","shouldThrowOnListenerError","actionFactory","ActionFactory","optionOverrides","shouldInstallMissingDependencies","featureInstallerFactory","shouldAutoHandleDependencies","label","last","getLastInvocation","doesInclude","choices","find","o","value","AbstractSpruceTest","__dirname"],"sources":["../../src/tests/AbstractCliTest.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SchemaRegistry } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport AbstractSpruceTest, { assert } from '@sprucelabs/test'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport * as uuid from 'uuid'\nimport { CliBootOptions } from '../cli'\nimport AbstractAction from '../features/AbstractAction'\nimport { FeatureOptions } from '../features/AbstractFeature'\nimport ActionExecuter, {\n\tActionExecuterOptions,\n} from '../features/ActionExecuter'\nimport ActionFactory from '../features/ActionFactory'\nimport EventStore from '../features/event/stores/EventStore'\nimport FeatureInstaller from '../features/FeatureInstaller'\nimport FeatureInstallerFactory from '../features/FeatureInstallerFactory'\nimport { FeatureActionResponse, FeatureCode } from '../features/features.types'\nimport OnboardingStore from '../features/onboard/stores/OnboardingStore'\nimport SkillStore from '../features/skill/stores/SkillStore'\nimport CliGlobalEmitter, { GlobalEmitter } from '../GlobalEmitter'\nimport SpyInterface from '../interfaces/SpyInterface'\nimport CommandService from '../services/CommandService'\nimport ImportService from '../services/ImportService'\nimport LintService from '../services/LintService'\nimport ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreFactoryOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport { ApiClientFactoryOptions } from '../types/apiClient.types'\nimport { OptionOverrides } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport CommandFaker from './CommandFaker'\nimport FeatureFixture, {\n\tFeatureFixtureOptions,\n} from './fixtures/FeatureFixture'\nimport MercuryFixture from './fixtures/MercuryFixture'\nimport OrganizationFixture from './fixtures/OrganizationFixture'\nimport PersonFixture from './fixtures/PersonFixture'\nimport SkillFixture from './fixtures/SkillFixture'\nimport ViewFixture from './fixtures/ViewFixture'\nimport testUtil from './utilities/test.utility'\n\ntype ExecuterOptions = Partial<ActionExecuterOptions> & {\n\toptionOverrides?: OptionOverrides\n}\n\nexport default abstract class AbstractCliTest extends AbstractSpruceTest {\n\tprotected static cliRoot = pathUtil.join(__dirname, '..')\n\tprotected static homeDir: string\n\tprotected static commandFaker: CommandFaker\n\n\tprivate static _ui: SpyInterface\n\tprivate static emitter?: GlobalEmitter\n\tprivate static mercuryFixture?: MercuryFixture\n\tprivate static personFixture?: PersonFixture\n\tprivate static organizationFixture?: OrganizationFixture\n\tprivate static skillFixture?: SkillFixture\n\tprivate static featureInstaller?: FeatureInstaller\n\tprivate static viewFixture?: ViewFixture\n\tprivate static originalEnv: { [x: string]: string | undefined }\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tawait this.cleanTestDirsAndFiles()\n\n\t\tLintService.disableLinting()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tImportService.enableCaching()\n\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT = 'false'\n\n\t\tthis.originalEnv = { ...process.env }\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\t//@ts-ignore\n\t\tprocess.env = { ...this.originalEnv }\n\n\t\ttestUtil.startLogTimer()\n\n\t\tSchemaRegistry.getInstance().forgetAllSchemas()\n\n\t\tthis.cwd = this.freshTmpDir()\n\t\tthis.homeDir = this.freshTmpDir()\n\n\t\tthis.emitter = undefined\n\t\tthis.featureInstaller = undefined\n\n\t\tOnboardingStore.overrideCwd(diskUtil.createRandomTempDir())\n\n\t\tthis.ui.reset()\n\t\tthis.ui.invocations = []\n\t\tthis.ui.setCursorPosition({ x: 0, y: 0 })\n\n\t\tthis.clearFixtures()\n\n\t\tImportService.clearCache()\n\t\tSkillStore.clearCurrentSkill()\n\t\tEventStore.clearCache()\n\t\tCommandService.clearMockResponses()\n\t\tMercuryClientFactory.reset()\n\t\tMercuryClientFactory.setIsTestMode(false)\n\n\t\tthis.commandFaker = new CommandFaker()\n\t}\n\n\tprotected static async afterEach() {\n\t\tawait super.afterEach()\n\n\t\tawait this.organizationFixture?.clearAllOrgs()\n\t\tawait this.mercuryFixture?.disconnectAll()\n\n\t\tthis.clearFixtures()\n\n\t\tif (this._ui?.isWaitingForInput()) {\n\t\t\tthrow new Error(\n\t\t\t\t`Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.`\n\t\t\t)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.cwd) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.cwd)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.homeDir) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.homeDir)\n\t\t}\n\t}\n\n\tprotected static async afterAll() {\n\t\tawait super.afterAll()\n\t\tif (testUtil.shouldCleanupTestSkillDirs()) {\n\t\t\tFeatureFixture.deleteOldSkillDirs()\n\t\t}\n\t}\n\n\tprivate static async cleanTestDirsAndFiles() {\n\t\tconst pattern = this.resolveTestPath('**/*.d.ts')\n\t\tconst matches = await globby(pattern)\n\n\t\tfor (const match of matches) {\n\t\t\tdiskUtil.deleteFile(match)\n\t\t}\n\t}\n\n\tprivate static clearFixtures() {\n\t\tthis.emitter = undefined\n\t\tthis.mercuryFixture = undefined\n\t\tthis.organizationFixture = undefined\n\t\tthis.personFixture = undefined\n\t\tthis.skillFixture = undefined\n\t\tthis.viewFixture = undefined\n\t}\n\n\tprotected static freshTmpDir() {\n\t\tconst tmpDirectory = testUtil.resolveTestDir(uuid.v4())\n\t\tfs.ensureDirSync(tmpDirectory)\n\t\treturn tmpDirectory\n\t}\n\n\tprotected static get ui() {\n\t\tif (!this._ui) {\n\t\t\tthis._ui = new SpyInterface()\n\t\t}\n\n\t\treturn this._ui\n\t}\n\n\tprotected static getEmitter() {\n\t\tif (!this.emitter) {\n\t\t\tthis.emitter = CliGlobalEmitter.Emitter()\n\t\t}\n\t\treturn this.emitter\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUtil.join(\n\t\t\tthis.cliRoot,\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n\n\tprotected static async Cli(options?: CliBootOptions) {\n\t\treturn this.FeatureFixture(options).Cli({\n\t\t\tcwd: this.cwd,\n\t\t\thomeDir: this.homeDir,\n\t\t\t...(options ?? {}),\n\t\t})\n\t}\n\n\tprotected static async linkLocalPackages() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tawait fixture.linkLocalPackages()\n\t}\n\n\tprotected static Service<S extends Service>(\n\t\ttype: S,\n\t\tcwd?: string\n\t): ServiceMap[S] {\n\t\tconst sf = this.ServiceFactory()\n\t\treturn sf.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected static ServiceFactory() {\n\t\treturn new ServiceFactory()\n\t}\n\n\tprotected static FeatureFixture(options?: Partial<FeatureFixtureOptions>) {\n\t\tconst emitter = options?.emitter ?? this.getEmitter()\n\n\t\treturn new FeatureFixture({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory: this.ServiceFactory(),\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tfeatureInstaller: this.getFeatureInstaller({ emitter }),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static getMercuryFixture() {\n\t\tif (!this.mercuryFixture) {\n\t\t\tthis.mercuryFixture = new MercuryFixture(this.cwd, this.ServiceFactory())\n\t\t}\n\n\t\treturn this.mercuryFixture\n\t}\n\n\tprotected static get people() {\n\t\tif (!this.personFixture) {\n\t\t\tthis.personFixture = new PersonFixture(\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.personFixture\n\t}\n\n\tprotected static getViewFixture() {\n\t\tif (!this.viewFixture) {\n\t\t\tconst writerFactory = this.WriterFactory()\n\n\t\t\tconst viewWriter = writerFactory.Writer('view', { fileDescriptions: [] })\n\t\t\tthis.viewFixture = new ViewFixture(\n\t\t\t\tthis.cwd,\n\t\t\t\tviewWriter,\n\t\t\t\tthis.Action('view', 'sync')\n\t\t\t)\n\t\t}\n\n\t\treturn this.viewFixture\n\t}\n\n\tprivate static WriterFactory() {\n\t\treturn new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui: this.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t})\n\t}\n\n\tprotected static async skipInstallSkillPrompts<\n\t\tE extends () => Promise<FeatureActionResponse>\n\t>(\n\t\texecute?: E\n\t): Promise<E extends undefined ? undefined : FeatureActionResponse> {\n\t\tconst promise = execute?.()\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('n')\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\treturn results as any\n\t}\n\n\tprotected static getOrganizationFixture() {\n\t\tif (!this.organizationFixture) {\n\t\t\tthis.organizationFixture = new OrganizationFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.organizationFixture\n\t}\n\n\tprotected static getSkillFixture() {\n\t\tif (!this.skillFixture) {\n\t\t\tthis.skillFixture = new SkillFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory(),\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.skillFixture\n\t}\n\n\tprotected static resolveHashSprucePath(...filePath: string[]) {\n\t\treturn diskUtil.resolveHashSprucePath(this.cwd, ...filePath)\n\t}\n\n\tprotected static getFeatureInstaller(options?: Partial<FeatureOptions>) {\n\t\tif (!this.featureInstaller) {\n\t\t\tconst serviceFactory = this.ServiceFactory()\n\t\t\tconst storeFactory = this.StoreFactory(options)\n\t\t\tconst emitter = this.getEmitter()\n\t\t\tconst apiClientFactory = this.getMercuryFixture().getApiClientFactory()\n\n\t\t\tconst actionExecuter = this.ActionExecuter()\n\n\t\t\tthis.featureInstaller = FeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui: this.ui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t\t...options,\n\t\t\t})\n\t\t}\n\n\t\treturn this.featureInstaller\n\t}\n\n\tprotected static StoreFactory(options?: Partial<StoreFactoryOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\n\t\treturn new StoreFactory({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: this.homeDir,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\temitter: this.getEmitter(),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.StoreFactory().Store(code, {\n\t\t\tcwd: this.cwd,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static async waitForInput() {\n\t\treturn this.ui.waitForInput()\n\t}\n\n\tprotected static async assertIsFeatureInstalled(code: FeatureCode) {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\t\tconst isInstalled = await featureInstaller.isInstalled(code)\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\tprotected static async assertValidActionResponseFiles(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tfor (const file of results.files ?? []) {\n\t\t\tconst checker = this.Service('typeChecker')\n\t\t\tawait checker.check(file.path)\n\t\t}\n\n\t\t// await Promise.all(\n\t\t// \t(results.files ?? []).map((file) => {\n\t\t// \t\tconst checker = this.Service('typeChecker')\n\t\t// \t\treturn checker.check(file.path)\n\t\t// \t})\n\t\t// )\n\t}\n\n\tprotected static async connectToApi(options?: ApiClientFactoryOptions) {\n\t\treturn this.getMercuryFixture().connectToApi(options)\n\t}\n\n\tprotected static async openInVsCode(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Action('vscode', 'setup').execute({ all: true })\n\n\t\tawait this.Service('command').execute(\n\t\t\t`code ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static async openInFinder(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Service('command').execute(\n\t\t\t`open ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static log(...args: any[]) {\n\t\ttestUtil.log(...args)\n\t}\n\n\tprotected static Action<\n\t\tAction extends AbstractAction = AbstractAction,\n\t\tF extends FeatureCode = FeatureCode\n\t>(featureCode: F, actionCode: string, options?: ExecuterOptions): Action {\n\t\tconst executer = this.ActionExecuter({\n\t\t\tshouldThrowOnListenerError: true,\n\t\t\t...options,\n\t\t}).Action(featureCode, actionCode)\n\n\t\treturn executer as any\n\t}\n\n\tprotected static ActionExecuter(options?: ExecuterOptions) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\t\tconst writerFactory = this.WriterFactory()\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\twriterFactory,\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory: this.StoreFactory(),\n\t\t\ttemplates,\n\t\t\toptionOverrides: {\n\t\t\t\t'sync.schemas': {\n\t\t\t\t\tshouldInstallMissingDependencies: true,\n\t\t\t\t},\n\t\t\t\t...options?.optionOverrides,\n\t\t\t},\n\t\t})\n\n\t\tconst executer = new ActionExecuter({\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tactionFactory,\n\t\t\tfeatureInstallerFactory: () => {\n\t\t\t\treturn this.getFeatureInstaller()\n\t\t\t},\n\t\t\tshouldAutoHandleDependencies: false,\n\t\t\t...options,\n\t\t})\n\n\t\treturn executer\n\t}\n\n\tprotected static selectOptionBasedOnLabel(label: string) {\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel,\n\t\t})\n\n\t\tconst match = last.options.options.choices.find(\n\t\t\t(o: any) => o.label === label\n\t\t)\n\n\t\tvoid this.ui.sendInput(`${match.value}`)\n\t}\n}\n"],"mappings":"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"}
|