@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
|
@@ -558,7 +558,7 @@ var CreatingASkillViewTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(
|
|
|
558
558
|
value: function buildTestfile(options) {
|
|
559
559
|
var code = options.code,
|
|
560
560
|
idInterfaceName = options.idInterfaceName;
|
|
561
|
-
return "\nimport " + "'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\
|
|
561
|
+
return "\nimport " + "'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\tStubStorage,\n\t".concat(idInterfaceName, ",\n} from '@sprucelabs/heartwood-view-controllers'\nimport { vcDiskUtil } from '@sprucelabs/spruce-test-fixtures'\n\nAuthenticatorImpl.setStorage(new StubStorage())\n\nconst vcFactory = ViewControllerFactory.Factory({\n\tcontrollerMap: vcDiskUtil.loadViewControllersAndBuildMap('testing-views', __dirname),\n\tdevice: {} as any,\n\tconnectToApi: async () => {\n\t\treturn 'yes' as any\n\t},\n})\n").concat(code, "\n\t\t").trim();
|
|
562
562
|
}
|
|
563
563
|
}]);
|
|
564
564
|
return CreatingASkillViewTest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreatingASkillView.test.js","names":["CreatingASkillViewTest","action","Action","assert","isFunction","execute","getFeatureInstaller","features","view","getFeature","isEqualDeep","dependencies","code","isRequired","viewType","waitForInput","last","ui","getLastInvocation","isEqual","command","reset","isRoot","results","isFalsy","errors","rootSvc","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","contents","diskUtil","readFile","isTruthy","errorAssert","assertError","name","promise","sendInput","dashboardVc","nameReadable","options","choices","value","appointmentsCard","buildTestfile","idInterfaceName","testFile","resolvePath","writeFile","importAll","imported","svcModel","svcId","vcModel","vcId","viewsFile","resolveHashSprucePath","viewContents","trim","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/CreatingASkillView.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport CreateAction from '../../../features/view/actions/CreateAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillViewTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: CreateAction\n\tprivate static rootSvc: string\n\tpublic static appointmentsCard: string\n\tprivate static dashboardVc: string\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'create') as CreateAction\n\t}\n\n\t@test()\n\tprotected static hasCreateAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async viewFieatureHasExpectedDependencies() {\n\t\tconst features = await this.getFeatureInstaller()\n\t\tconst view = features.getFeature('view')\n\t\tassert.isEqualDeep(view.dependencies, [\n\t\t\t{\n\t\t\t\tcode: 'node',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'schema',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'event',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async asksIfRootSkillViewIfNotYetCreated() {\n\t\tvoid this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'confirm')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canCreateRootSkillView() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.rootSvc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Root.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.rootSvc, 'skillViewControllers')\n\t}\n\n\t@test()\n\tprotected static async generatesValidRootSkillView() {\n\t\tawait this.Service('typeChecker').check(this.rootSvc)\n\t}\n\n\t@test()\n\tprotected static async rootSkillViewExtendsAbstractSkillViewController() {\n\t\tconst contents = diskUtil.readFile(this.rootSvc)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class RootSkillViewController extends AbstractSkillViewController'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantCreateTwoRootSvcs() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\n\t\terrorAssert.assertError(results.errors?.[0], 'SKILL_VIEW_EXISTS', {\n\t\t\tname: 'Root',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async asksForNamesIfCreatingSkillViewNotRoot() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\n\t\tawait this.ui.sendInput('Dashboard')\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.dashboardVc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Dashboard.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.dashboardVc, 'skillViewControllers')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async asksForViewModelWhenCreatingSkillView() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'view',\n\t\t\tnameReadable: 'Appointments card',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tvalue: 'Card',\n\t\t})\n\n\t\tawait this.ui.sendInput('Card')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.appointmentsCard = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'AppointmentsCard.vc.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static skillViewExtendsAbstractViewControllerWithProperView() {\n\t\tconst contents = diskUtil.readFile(this.appointmentsCard)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class AppointmentsCardViewController extends AbstractViewController<Card>'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesRootSkillViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'SkillViewControllerId',\n\t\t\tcode: `\nconst root = vcFactory.Controller('testing-views.root', {})\nexport const svcModel = root.render()\nexport const svcId: SkillViewControllerId = 'testing-views.root'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.svcModel)\n\t\tassert.isTruthy(imported.svcId)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'ViewControllerId',\n\t\t\tcode: `\n\t\tconst apptCard = vcFactory.Controller('testing-views.appointments-card', {})\n\t\texport const vcModel = apptCard.render()\n\t\texport const vcId: ViewControllerId = 'testing-views.appointments-card'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.vcModel)\n\t\tassert.isTruthy(imported.vcId)\n\t}\n\n\t@test()\n\tprotected static async typesViewControllerOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface ViewControllerOptionsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.appointments-card': ConstructorParameters<typeof AppointmentsCardViewController>[0]`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async typesSkillViewControllerLoadOptionsOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface SkillViewControllerArgsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`type LoadOptions<Args extends Record<string,any>[]> = Args[0]['args'] extends Record<string, any> ? Args[0]['args'] : Record<never, any>`\n\t\t)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.root': LoadOptions<Parameters<RootSkillViewController['load']>>`\n\t\t)\n\t}\n\n\tprivate static buildTestfile(options: {\n\t\tcode: string\n\t\tidInterfaceName: 'SkillViewControllerId' | 'ViewControllerId'\n\t}) {\n\t\tconst { code, idInterfaceName } = options\n\n\t\treturn (\n\t\t\t`\nimport ` +\n\t\t\t`'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\tMockStorage,\n\t${idInterfaceName},\n} from '@sprucelabs/heartwood-view-controllers'\nimport { vcDiskUtil } from '@sprucelabs/spruce-test-fixtures'\n\nAuthenticatorImpl.setStorage(new MockStorage())\n\nconst vcFactory = ViewControllerFactory.Factory({\n\tcontrollerMap: vcDiskUtil.loadViewControllersAndBuildMap('testing-views', __dirname),\n\tconnectToApi: async () => {\n\t\treturn 'yes' as any\n\t},\n})\n${code}\n\t\t`.trim()\n\t\t)\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreatingASkillView.test.js","names":["CreatingASkillViewTest","test","action","Action","assert","isFunction","execute","getFeatureInstaller","features","view","getFeature","isEqualDeep","dependencies","code","isRequired","viewType","waitForInput","last","ui","getLastInvocation","isEqual","command","reset","isRoot","results","isFalsy","errors","rootSvc","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","contents","diskUtil","readFile","isTruthy","errorAssert","assertError","name","promise","sendInput","dashboardVc","nameReadable","options","choices","value","appointmentsCard","buildTestfile","idInterfaceName","testFile","resolvePath","writeFile","importAll","imported","svcModel","svcId","vcModel","vcId","viewsFile","resolveHashSprucePath","viewContents","trim","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/CreatingASkillView.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport CreateAction from '../../../features/view/actions/CreateAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillViewTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: CreateAction\n\tprivate static rootSvc: string\n\tpublic static appointmentsCard: string\n\tprivate static dashboardVc: string\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'create') as CreateAction\n\t}\n\n\t@test()\n\tprotected static hasCreateAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async viewFieatureHasExpectedDependencies() {\n\t\tconst features = await this.getFeatureInstaller()\n\t\tconst view = features.getFeature('view')\n\t\tassert.isEqualDeep(view.dependencies, [\n\t\t\t{\n\t\t\t\tcode: 'node',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'schema',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'event',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async asksIfRootSkillViewIfNotYetCreated() {\n\t\tvoid this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'confirm')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canCreateRootSkillView() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.rootSvc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Root.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.rootSvc, 'skillViewControllers')\n\t}\n\n\t@test()\n\tprotected static async generatesValidRootSkillView() {\n\t\tawait this.Service('typeChecker').check(this.rootSvc)\n\t}\n\n\t@test()\n\tprotected static async rootSkillViewExtendsAbstractSkillViewController() {\n\t\tconst contents = diskUtil.readFile(this.rootSvc)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class RootSkillViewController extends AbstractSkillViewController'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantCreateTwoRootSvcs() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\n\t\terrorAssert.assertError(results.errors?.[0], 'SKILL_VIEW_EXISTS', {\n\t\t\tname: 'Root',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async asksForNamesIfCreatingSkillViewNotRoot() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\n\t\tawait this.ui.sendInput('Dashboard')\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.dashboardVc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Dashboard.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.dashboardVc, 'skillViewControllers')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async asksForViewModelWhenCreatingSkillView() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'view',\n\t\t\tnameReadable: 'Appointments card',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tvalue: 'Card',\n\t\t})\n\n\t\tawait this.ui.sendInput('Card')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.appointmentsCard = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'AppointmentsCard.vc.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static skillViewExtendsAbstractViewControllerWithProperView() {\n\t\tconst contents = diskUtil.readFile(this.appointmentsCard)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class AppointmentsCardViewController extends AbstractViewController<Card>'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesRootSkillViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'SkillViewControllerId',\n\t\t\tcode: `\nconst root = vcFactory.Controller('testing-views.root', {})\nexport const svcModel = root.render()\nexport const svcId: SkillViewControllerId = 'testing-views.root'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.svcModel)\n\t\tassert.isTruthy(imported.svcId)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'ViewControllerId',\n\t\t\tcode: `\n\t\tconst apptCard = vcFactory.Controller('testing-views.appointments-card', {})\n\t\texport const vcModel = apptCard.render()\n\t\texport const vcId: ViewControllerId = 'testing-views.appointments-card'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.vcModel)\n\t\tassert.isTruthy(imported.vcId)\n\t}\n\n\t@test()\n\tprotected static async typesViewControllerOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface ViewControllerOptionsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.appointments-card': ConstructorParameters<typeof AppointmentsCardViewController>[0]`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async typesSkillViewControllerLoadOptionsOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface SkillViewControllerArgsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`type LoadOptions<Args extends Record<string,any>[]> = Args[0]['args'] extends Record<string, any> ? Args[0]['args'] : Record<never, any>`\n\t\t)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.root': LoadOptions<Parameters<RootSkillViewController['load']>>`\n\t\t)\n\t}\n\n\tprivate static buildTestfile(options: {\n\t\tcode: string\n\t\tidInterfaceName: 'SkillViewControllerId' | 'ViewControllerId'\n\t}) {\n\t\tconst { code, idInterfaceName } = options\n\n\t\treturn (\n\t\t\t`\nimport ` +\n\t\t\t`'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\tStubStorage,\n\t${idInterfaceName},\n} from '@sprucelabs/heartwood-view-controllers'\nimport { vcDiskUtil } from '@sprucelabs/spruce-test-fixtures'\n\nAuthenticatorImpl.setStorage(new StubStorage())\n\nconst vcFactory = ViewControllerFactory.Factory({\n\tcontrollerMap: vcDiskUtil.loadViewControllersAndBuildMap('testing-views', __dirname),\n\tdevice: {} as any,\n\tconnectToApi: async () => {\n\t\treturn 'yes' as any\n\t},\n})\n${code}\n\t\t`.trim()\n\t\t)\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreatingATheme.test.js","names":["CreatingAThemeTest","assert","isFunction","Action","execute","getSkillFixture","registerCurrentSkill","name","results","isFalsy","errors","isTrue","diskUtil","doesFileExist","resolveHashSprucePath","getThemePath","Service","importDefault","imported","isTruthy","errorAssert","assertError","emitter","getEmitter","hitCount","deleteFile","on","payload","featureCode","actionCode","isEqual","resolvePath","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/CreatingATheme.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\n\nexport default class CreatingAThemeTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\n\t@test()\n\tprotected static async hasCreateThemeAction() {\n\t\tassert.isFunction(this.Action('view', 'createTheme').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsEventsFirst() {\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'current skill in creating a theme',\n\t\t})\n\n\t\tconst results = await this.Action('view', 'createTheme').execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(\n\t\t\t\tthis.resolveHashSprucePath('events/events.contract.ts')\n\t\t\t)\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async makesThemeFile() {\n\t\tassert.isTrue(diskUtil.doesFileExist(this.getThemePath()))\n\t}\n\n\t@test()\n\tprotected static async makesValidThemeFile() {\n\t\tconst imported = await this.Service('import').importDefault(\n\t\t\tthis.getThemePath()\n\t\t)\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isTrue('color1' in imported)\n\t}\n\n\t@test()\n\tprotected static async cantRunTwice() {\n\t\tconst results = await this.Action('view', 'createTheme').execute({})\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'THEME_EXISTS')\n\t}\n\n\t@test()\n\tprotected static async doesNotSyncEventsIfAlreadySynced() {\n\t\tconst emitter = this.getEmitter()\n\t\tlet hitCount = 0\n\n\t\tdiskUtil.deleteFile(this.getThemePath())\n\n\t\tawait emitter.on('feature.will-execute', async (payload) => {\n\t\t\tconst { featureCode, actionCode } = payload\n\n\t\t\tif (featureCode === 'event' && actionCode === 'sync') {\n\t\t\t\thitCount++\n\t\t\t}\n\t\t})\n\n\t\tawait this.Action('view', 'createTheme').execute({})\n\n\t\tassert.isEqual(hitCount, 0)\n\t}\n\n\tprivate static getThemePath(): string {\n\t\treturn this.resolvePath('src', 'themes', 'skill.theme.ts')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,kB,WAGnB,
|
|
1
|
+
{"version":3,"file":"CreatingATheme.test.js","names":["CreatingAThemeTest","test","assert","isFunction","Action","execute","getSkillFixture","registerCurrentSkill","name","results","isFalsy","errors","isTrue","diskUtil","doesFileExist","resolveHashSprucePath","getThemePath","Service","importDefault","imported","isTruthy","errorAssert","assertError","emitter","getEmitter","hitCount","deleteFile","on","payload","featureCode","actionCode","isEqual","resolvePath","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/CreatingATheme.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\n\nexport default class CreatingAThemeTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\n\t@test()\n\tprotected static async hasCreateThemeAction() {\n\t\tassert.isFunction(this.Action('view', 'createTheme').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsEventsFirst() {\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'current skill in creating a theme',\n\t\t})\n\n\t\tconst results = await this.Action('view', 'createTheme').execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(\n\t\t\t\tthis.resolveHashSprucePath('events/events.contract.ts')\n\t\t\t)\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async makesThemeFile() {\n\t\tassert.isTrue(diskUtil.doesFileExist(this.getThemePath()))\n\t}\n\n\t@test()\n\tprotected static async makesValidThemeFile() {\n\t\tconst imported = await this.Service('import').importDefault(\n\t\t\tthis.getThemePath()\n\t\t)\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isTrue('color1' in imported)\n\t}\n\n\t@test()\n\tprotected static async cantRunTwice() {\n\t\tconst results = await this.Action('view', 'createTheme').execute({})\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'THEME_EXISTS')\n\t}\n\n\t@test()\n\tprotected static async doesNotSyncEventsIfAlreadySynced() {\n\t\tconst emitter = this.getEmitter()\n\t\tlet hitCount = 0\n\n\t\tdiskUtil.deleteFile(this.getThemePath())\n\n\t\tawait emitter.on('feature.will-execute', async (payload) => {\n\t\t\tconst { featureCode, actionCode } = payload\n\n\t\t\tif (featureCode === 'event' && actionCode === 'sync') {\n\t\t\t\thitCount++\n\t\t\t}\n\t\t})\n\n\t\tawait this.Action('view', 'createTheme').execute({})\n\n\t\tassert.isEqual(hitCount, 0)\n\t}\n\n\tprivate static getThemePath(): string {\n\t\treturn this.resolvePath('src', 'themes', 'skill.theme.ts')\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeepingViewsInSync.test.js","names":["KeepingViewsInSyncTest","action","Action","assert","isFunction","execute","results","isFalsy","errors","files","viewType","isRoot","match","testUtil","assertFileByPathInGeneratedFiles","Service","check","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/KeepingViewsInSync.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport SyncAction from '../../../features/view/actions/SyncAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class KeepingViewsInSyncTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: SyncAction\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'sync')\n\t}\n\n\t@test()\n\tprotected static async hasSyncAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async syncingWithNoViewsGeneratesNothing() {\n\t\tconst results = await this.action.execute({})\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isFalsy(results.files)\n\t}\n\n\t@test()\n\tprotected static async createsValidCombinedEventsFileWhenCreatingANewSvc() {\n\t\tconst results = await this.Action('view', 'create').execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tconst match = testUtil.assertFileByPathInGeneratedFiles(\n\t\t\t`views/views.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(match)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;;;;;IAEqBA,sB,WASnB,
|
|
1
|
+
{"version":3,"file":"KeepingViewsInSync.test.js","names":["KeepingViewsInSyncTest","test","action","Action","assert","isFunction","execute","results","isFalsy","errors","files","viewType","isRoot","match","testUtil","assertFileByPathInGeneratedFiles","Service","check","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/KeepingViewsInSync.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport SyncAction from '../../../features/view/actions/SyncAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class KeepingViewsInSyncTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: SyncAction\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'sync')\n\t}\n\n\t@test()\n\tprotected static async hasSyncAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async syncingWithNoViewsGeneratesNothing() {\n\t\tconst results = await this.action.execute({})\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isFalsy(results.files)\n\t}\n\n\t@test()\n\tprotected static async createsValidCombinedEventsFileWhenCreatingANewSvc() {\n\t\tconst results = await this.Action('view', 'create').execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tconst match = testUtil.assertFileByPathInGeneratedFiles(\n\t\t\t`views/views.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(match)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;;;;;IAEqBA,sB,WASnB,IAAAC,UAAA,G,UAKA,IAAAA,UAAA,G,UAOA,IAAAA,UAAA,G;;;;;;;;;;;;;sGAjBD;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAEC,KAAKC,MAAL,GAAc,KAAKC,MAAL,CAAY,MAAZ,EAAoB,MAApB,CAAd;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yGAKA;QAAA;UAAA;YAAA;cAAA;gBAECC,YAAA,CAAOC,UAAP,CAAkB,KAAKH,MAAL,CAAYI,OAA9B;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;8HAKA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEuB,KAAKJ,MAAL,CAAYI,OAAZ,CAAoB,EAApB,CAFvB;;cAAA;gBAEOC,OAFP;;gBAGCH,YAAA,CAAOI,OAAP,CAAeD,OAAO,CAACE,MAAvB;;gBACAL,YAAA,CAAOI,OAAP,CAAeD,OAAO,CAACG,KAAvB;;cAJD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;6IAOA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEuB,KAAKP,MAAL,CAAY,MAAZ,EAAoB,QAApB,EAA8BG,OAA9B,CAAsC;kBAC3DK,QAAQ,EAAE,WADiD;kBAE3DC,MAAM,EAAE;gBAFmD,CAAtC,CAFvB;;cAAA;gBAEOL,OAFP;gBAOOM,KAPP,GAOeC,iBAAA,CAASC,gCAAT,mBAEbR,OAAO,CAACG,KAFK,CAPf;gBAAA;gBAAA,OAYO,KAAKM,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCJ,KAAlC,CAZP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EArBmDK,8B,8DAClB,O"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingUpViews.test.js","names":["SettingUpViewsTest","Cli","cli","feature","getFeature","assert","isTruthy","FeatureFixture","installFeatures","code","options","name","description","people","loginAsDemoPerson","dependencies","Service","get","isLength","isEqual","namespace","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/views/SettingUpViews.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class SettingUpViewsTest extends AbstractCliTest {\n\t@test()\n\tprotected static async canGetViewFeature() {\n\t\tconst cli = await this.Cli()\n\t\tconst feature = cli.getFeature('view')\n\t\tassert.isTruthy(feature)\n\t}\n\n\t@test()\n\tprotected static async installingViewsAddsHeartwoodAsDependency() {\n\t\tawait this.FeatureFixture().installFeatures([\n\t\t\t{\n\t\t\t\tcode: 'skill',\n\t\t\t\toptions: {\n\t\t\t\t\tname: 'testing views',\n\t\t\t\t\tdescription: 'this too, is a great test!',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'view',\n\t\t\t},\n\t\t])\n\n\t\tawait this.people.loginAsDemoPerson()\n\n\t\tconst dependencies = this.Service('dependency').get()\n\t\tassert.isLength(dependencies, 1)\n\n\t\tassert.isEqual(dependencies[0].namespace, 'heartwood')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;IAEqBA,kB,WACnB,
|
|
1
|
+
{"version":3,"file":"SettingUpViews.test.js","names":["SettingUpViewsTest","test","Cli","cli","feature","getFeature","assert","isTruthy","FeatureFixture","installFeatures","code","options","name","description","people","loginAsDemoPerson","dependencies","Service","get","isLength","isEqual","namespace","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/views/SettingUpViews.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class SettingUpViewsTest extends AbstractCliTest {\n\t@test()\n\tprotected static async canGetViewFeature() {\n\t\tconst cli = await this.Cli()\n\t\tconst feature = cli.getFeature('view')\n\t\tassert.isTruthy(feature)\n\t}\n\n\t@test()\n\tprotected static async installingViewsAddsHeartwoodAsDependency() {\n\t\tawait this.FeatureFixture().installFeatures([\n\t\t\t{\n\t\t\t\tcode: 'skill',\n\t\t\t\toptions: {\n\t\t\t\t\tname: 'testing views',\n\t\t\t\t\tdescription: 'this too, is a great test!',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'view',\n\t\t\t},\n\t\t])\n\n\t\tawait this.people.loginAsDemoPerson()\n\n\t\tconst dependencies = this.Service('dependency').get()\n\t\tassert.isLength(dependencies, 1)\n\n\t\tassert.isEqual(dependencies[0].namespace, 'heartwood')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;IAEqBA,kB,WACnB,IAAAC,UAAA,G,UAOA,IAAAA,UAAA,G;;;;;;;;;;;;;6GAPD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKC,GAAL,EAFnB;;cAAA;gBAEOC,GAFP;gBAGOC,OAHP,GAGiBD,GAAG,CAACE,UAAJ,CAAe,MAAf,CAHjB;;gBAICC,YAAA,CAAOC,QAAP,CAAgBH,OAAhB;;cAJD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;oIAOA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKI,cAAL,GAAsBC,eAAtB,CAAsC,CAC3C;kBACCC,IAAI,EAAE,OADP;kBAECC,OAAO,EAAE;oBACRC,IAAI,EAAE,eADE;oBAERC,WAAW,EAAE;kBAFL;gBAFV,CAD2C,EAQ3C;kBACCH,IAAI,EAAE;gBADP,CAR2C,CAAtC,CAFP;;cAAA;gBAAA;gBAAA,OAeO,KAAKI,MAAL,CAAYC,iBAAZ,EAfP;;cAAA;gBAiBOC,YAjBP,GAiBsB,KAAKC,OAAL,CAAa,YAAb,EAA2BC,GAA3B,EAjBtB;;gBAkBCZ,YAAA,CAAOa,QAAP,CAAgBH,YAAhB,EAA8B,CAA9B;;gBAEAV,YAAA,CAAOc,OAAP,CAAeJ,YAAY,CAAC,CAAD,CAAZ,CAAgBK,SAA/B,EAA0C,WAA1C;;cApBD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAR+CC,4B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestingViewControllers.test.js","names":["TestingViewControllersTest","LintService","enableLinting","viewFeature","cli","getFeature","isInstalled","executeCreate","waitForInput","last","ui","getLastInvocation","assert","doesInclude","options","choices","label","reset","promise","selectOptionBasedOnLabel","results","isFalsy","errors","match","testUtil","assertFileByNameInGeneratedFiles","files","contents","diskUtil","readFile","Service","build","Action","execute","shouldReportWhileRunning","testResults","isArray","isLength","meta","testFiles","path","status","type","nameReadable","nameCamel","namePascal","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/TestingViewControllers.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport LintService from '../../../services/LintService'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class TestingViewControllersTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'viewsWithTests'\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tLintService.enableLinting()\n\t}\n\n\t@test()\n\tprotected static async showsNotInstalled() {\n\t\tconst viewFeature = this.cli.getFeature('view')\n\t\tviewFeature.isInstalled = async () => false\n\n\t\tvoid this.executeCreate()\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel: 'AbstractViewControllerTest (requires install)',\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canSelectAbstractTest() {\n\t\tvoid this.executeCreate()\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel: 'AbstractViewControllerTest',\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async testsRun() {\n\t\tconst promise = this.executeCreate()\n\n\t\tawait this.waitForInput()\n\n\t\tthis.selectOptionBasedOnLabel('AbstractViewControllerTest')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'RenderingRootViewController.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'RenderingRootViewControllerTest extends AbstractViewControllerTest'\n\t\t)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { AbstractViewControllerTest } from '@sprucelabs/spruce-view-plugin'\"\n\t\t)\n\n\t\tawait this.Service('build').build()\n\n\t\tconst testResults = await this.Action('test', 'test').execute({\n\t\t\tshouldReportWhileRunning: false,\n\t\t})\n\n\t\tassert.isArray(testResults.errors)\n\t\tassert.isLength(testResults.errors, 1)\n\n\t\tassert.doesInclude(testResults.meta?.testResults.testFiles, {\n\t\t\tpath: 'behavioral/RenderingRootViewController.test.ts',\n\t\t\tstatus: 'failed',\n\t\t})\n\t}\n\n\tprivate static async executeCreate() {\n\t\treturn this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Rendering root view controller',\n\t\t\tnameCamel: 'renderingRootViewController',\n\t\t\tnamePascal: 'RenderingRootViewController',\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,0B,WAQnB,
|
|
1
|
+
{"version":3,"file":"TestingViewControllers.test.js","names":["TestingViewControllersTest","test","LintService","enableLinting","viewFeature","cli","getFeature","isInstalled","executeCreate","waitForInput","last","ui","getLastInvocation","assert","doesInclude","options","choices","label","reset","promise","selectOptionBasedOnLabel","results","isFalsy","errors","match","testUtil","assertFileByNameInGeneratedFiles","files","contents","diskUtil","readFile","Service","build","Action","execute","shouldReportWhileRunning","testResults","isArray","isLength","meta","testFiles","path","status","type","nameReadable","nameCamel","namePascal","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/TestingViewControllers.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport LintService from '../../../services/LintService'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class TestingViewControllersTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'viewsWithTests'\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tLintService.enableLinting()\n\t}\n\n\t@test()\n\tprotected static async showsNotInstalled() {\n\t\tconst viewFeature = this.cli.getFeature('view')\n\t\tviewFeature.isInstalled = async () => false\n\n\t\tvoid this.executeCreate()\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel: 'AbstractViewControllerTest (requires install)',\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canSelectAbstractTest() {\n\t\tvoid this.executeCreate()\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel: 'AbstractViewControllerTest',\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async testsRun() {\n\t\tconst promise = this.executeCreate()\n\n\t\tawait this.waitForInput()\n\n\t\tthis.selectOptionBasedOnLabel('AbstractViewControllerTest')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'RenderingRootViewController.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'RenderingRootViewControllerTest extends AbstractViewControllerTest'\n\t\t)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { AbstractViewControllerTest } from '@sprucelabs/spruce-view-plugin'\"\n\t\t)\n\n\t\tawait this.Service('build').build()\n\n\t\tconst testResults = await this.Action('test', 'test').execute({\n\t\t\tshouldReportWhileRunning: false,\n\t\t})\n\n\t\tassert.isArray(testResults.errors)\n\t\tassert.isLength(testResults.errors, 1)\n\n\t\tassert.doesInclude(testResults.meta?.testResults.testFiles, {\n\t\t\tpath: 'behavioral/RenderingRootViewController.test.ts',\n\t\t\tstatus: 'failed',\n\t\t})\n\t}\n\n\tprivate static async executeCreate() {\n\t\treturn this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Rendering root view controller',\n\t\t\tnameCamel: 'renderingRootViewController',\n\t\t\tnamePascal: 'RenderingRootViewController',\n\t\t})\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WatchingForChanges.test.js","names":["WatchingForChangesTest","installWatch","assertIsFeatureInstalled","cli","getFeature","isWatching","assert","isFalse","feature","startWatching","isTrue","stopWatching","path","shouldFire","fireCount","on","diskUtil","writeFile","resolvePath","isEqual","changeCount","payloadChanges","payload","changes","createDir","cwd","expectedChanges","idx","filename","push","schemaId","version","CORE_SCHEMA_VERSION","constValue","values","action","name","length","expected","doesInclude","wait","delay","sourceDir","runner","e","watchRunStop","newDirDest","deleteDir","newFile","deleteFile","fixture","FeatureFixture","installFeatures","code","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/watchers/WatchingForChanges.test.ts"],"sourcesContent":["import { CORE_SCHEMA_VERSION, diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport WatchFeature from '../../../features/watch/WatchFeature'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport { GeneratedFileOrDir } from '../../../types/cli.types'\n\nexport default class WatchingForChangesTest extends AbstractCliTest {\n\t@test()\n\tprotected static async installsWatchers() {\n\t\tawait this.installWatch()\n\t\tawait this.assertIsFeatureInstalled('watch')\n\t}\n\n\t@test()\n\tprotected static async notWatchingAtTheStart() {\n\t\tconst cli = await this.installWatch()\n\t\tconst isWatching = await cli.getFeature('watch').isWatching()\n\t\tassert.isFalse(isWatching)\n\t}\n\n\t@test()\n\tprotected static async canStartAndStopWatch() {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tvoid feature.startWatching()\n\n\t\tlet isWatching = await feature.isWatching()\n\t\tassert.isTrue(isWatching)\n\n\t\tawait feature.stopWatching()\n\n\t\tisWatching = await feature.isWatching()\n\t\tassert.isFalse(isWatching)\n\t}\n\n\t@test('does not watch src', 'src', false)\n\t@test('does watch build', 'build', true)\n\tprotected static async watchesInCorrectDir(\n\t\tpath: string,\n\t\tshouldFire: boolean\n\t) {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tawait this.startWatching(feature)\n\n\t\tlet fireCount = 0\n\n\t\tvoid cli.on('watcher.did-detect-change', () => {\n\t\t\tfireCount++\n\t\t})\n\n\t\tdiskUtil.writeFile(\n\t\t\tthis.resolvePath(path, 'test.ts'),\n\t\t\t'console.log(\"hello world\")'\n\t\t)\n\n\t\tawait this.stopWatching(feature)\n\n\t\tassert.isEqual(fireCount, shouldFire ? 1 : 0)\n\t}\n\n\t@test('fires once with one change', 1)\n\t@test('fires once with two changes', 2)\n\t@test('fires once with three changes', 3)\n\tprotected static async watcherFiresEventWhenASrcFileChanges(\n\t\tchangeCount: number\n\t) {\n\t\tlet fireCount = 0\n\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\t\tlet payloadChanges: any = {}\n\n\t\tvoid cli.on('watcher.did-detect-change', (payload) => {\n\t\t\tfireCount++\n\t\t\tpayloadChanges = payload.changes\n\t\t})\n\n\t\tdiskUtil.createDir(this.cwd)\n\n\t\tawait this.startWatching(feature)\n\n\t\tconst expectedChanges: any[] = []\n\t\tfor (let idx = 0; idx < changeCount; idx++) {\n\t\t\tconst filename = `index-${idx}.js`\n\t\t\tdiskUtil.writeFile(\n\t\t\t\tthis.resolvePath('build', filename),\n\t\t\t\t'console.log(\"hello world\")'\n\t\t\t)\n\t\t\texpectedChanges.push({\n\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\tversion: CORE_SCHEMA_VERSION.constValue,\n\t\t\t\tvalues: {\n\t\t\t\t\taction: 'generated',\n\t\t\t\t\tpath: this.resolvePath('build', filename),\n\t\t\t\t\tname: filename,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\n\t\tawait this.stopWatching(feature)\n\n\t\tassert.isEqual(fireCount, 1)\n\t\tassert.isTrue(payloadChanges.length >= changeCount)\n\n\t\tfor (const expected of expectedChanges) {\n\t\t\tassert.doesInclude(payloadChanges, expected)\n\t\t}\n\t}\n\n\tprivate static async stopWatching(feature: WatchFeature) {\n\t\tawait this.wait(3000)\n\t\tawait feature.stopWatching()\n\t\tawait this.wait(500)\n\t}\n\n\tprivate static async startWatching(feature: WatchFeature) {\n\t\tvoid feature.startWatching({ delay: 2000, sourceDir: '.' })\n\t\tawait this.wait(500)\n\t}\n\n\tprotected static async watchRunStop(\n\t\trunner: () => Promise<GeneratedFileOrDir[]>\n\t) {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tlet payloadChanges: any = {}\n\t\tvoid cli.on('watcher.did-detect-change', (payload) => {\n\t\t\tpayloadChanges = payload.changes\n\t\t})\n\n\t\tawait this.startWatching(feature)\n\n\t\tconst expected: GeneratedFileOrDir[] = await runner()\n\n\t\tawait this.stopWatching(feature)\n\n\t\tfor (const e of expected) {\n\t\t\tassert.doesInclude(payloadChanges, e)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async canTrackAddingDir() {\n\t\tawait this.watchRunStop(async () => {\n\t\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\t\tdiskUtil.createDir(newDirDest)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedDir',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'generated',\n\t\t\t\t\t\tname: 'new_dir',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingDir() {\n\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\tdiskUtil.createDir(newDirDest)\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteDir(newDirDest)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedDir',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'new_dir',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingFile() {\n\t\tconst newFile = this.resolvePath('build', 'test.js')\n\t\tdiskUtil.writeFile(newFile, 'test')\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteFile(newFile)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'test.js',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'test.js'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingFileInDirectory() {\n\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\tdiskUtil.createDir(newDirDest)\n\n\t\tconst newFile = this.resolvePath('build', 'new_dir', 'test.js')\n\t\tdiskUtil.writeFile(newFile, 'test')\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteFile(newFile)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'test.js',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir', 'test.js'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\n\t\t\treturn expected\n\t\t})\n\t}\n\n\tprivate static async installWatch() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installFeatures([{ code: 'watch' }])\n\t\treturn cli\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WatchingForChanges.test.js","names":["WatchingForChangesTest","test","installWatch","assertIsFeatureInstalled","cli","getFeature","isWatching","assert","isFalse","feature","startWatching","isTrue","stopWatching","path","shouldFire","fireCount","on","diskUtil","writeFile","resolvePath","isEqual","changeCount","payloadChanges","payload","changes","createDir","cwd","expectedChanges","idx","filename","push","schemaId","version","CORE_SCHEMA_VERSION","constValue","values","action","name","length","expected","doesInclude","wait","delay","sourceDir","runner","e","watchRunStop","newDirDest","deleteDir","newFile","deleteFile","fixture","FeatureFixture","installFeatures","code","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/watchers/WatchingForChanges.test.ts"],"sourcesContent":["import { CORE_SCHEMA_VERSION, diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport WatchFeature from '../../../features/watch/WatchFeature'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport { GeneratedFileOrDir } from '../../../types/cli.types'\n\nexport default class WatchingForChangesTest extends AbstractCliTest {\n\t@test()\n\tprotected static async installsWatchers() {\n\t\tawait this.installWatch()\n\t\tawait this.assertIsFeatureInstalled('watch')\n\t}\n\n\t@test()\n\tprotected static async notWatchingAtTheStart() {\n\t\tconst cli = await this.installWatch()\n\t\tconst isWatching = await cli.getFeature('watch').isWatching()\n\t\tassert.isFalse(isWatching)\n\t}\n\n\t@test()\n\tprotected static async canStartAndStopWatch() {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tvoid feature.startWatching()\n\n\t\tlet isWatching = await feature.isWatching()\n\t\tassert.isTrue(isWatching)\n\n\t\tawait feature.stopWatching()\n\n\t\tisWatching = await feature.isWatching()\n\t\tassert.isFalse(isWatching)\n\t}\n\n\t@test('does not watch src', 'src', false)\n\t@test('does watch build', 'build', true)\n\tprotected static async watchesInCorrectDir(\n\t\tpath: string,\n\t\tshouldFire: boolean\n\t) {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tawait this.startWatching(feature)\n\n\t\tlet fireCount = 0\n\n\t\tvoid cli.on('watcher.did-detect-change', () => {\n\t\t\tfireCount++\n\t\t})\n\n\t\tdiskUtil.writeFile(\n\t\t\tthis.resolvePath(path, 'test.ts'),\n\t\t\t'console.log(\"hello world\")'\n\t\t)\n\n\t\tawait this.stopWatching(feature)\n\n\t\tassert.isEqual(fireCount, shouldFire ? 1 : 0)\n\t}\n\n\t@test('fires once with one change', 1)\n\t@test('fires once with two changes', 2)\n\t@test('fires once with three changes', 3)\n\tprotected static async watcherFiresEventWhenASrcFileChanges(\n\t\tchangeCount: number\n\t) {\n\t\tlet fireCount = 0\n\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\t\tlet payloadChanges: any = {}\n\n\t\tvoid cli.on('watcher.did-detect-change', (payload) => {\n\t\t\tfireCount++\n\t\t\tpayloadChanges = payload.changes\n\t\t})\n\n\t\tdiskUtil.createDir(this.cwd)\n\n\t\tawait this.startWatching(feature)\n\n\t\tconst expectedChanges: any[] = []\n\t\tfor (let idx = 0; idx < changeCount; idx++) {\n\t\t\tconst filename = `index-${idx}.js`\n\t\t\tdiskUtil.writeFile(\n\t\t\t\tthis.resolvePath('build', filename),\n\t\t\t\t'console.log(\"hello world\")'\n\t\t\t)\n\t\t\texpectedChanges.push({\n\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\tversion: CORE_SCHEMA_VERSION.constValue,\n\t\t\t\tvalues: {\n\t\t\t\t\taction: 'generated',\n\t\t\t\t\tpath: this.resolvePath('build', filename),\n\t\t\t\t\tname: filename,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\n\t\tawait this.stopWatching(feature)\n\n\t\tassert.isEqual(fireCount, 1)\n\t\tassert.isTrue(payloadChanges.length >= changeCount)\n\n\t\tfor (const expected of expectedChanges) {\n\t\t\tassert.doesInclude(payloadChanges, expected)\n\t\t}\n\t}\n\n\tprivate static async stopWatching(feature: WatchFeature) {\n\t\tawait this.wait(3000)\n\t\tawait feature.stopWatching()\n\t\tawait this.wait(500)\n\t}\n\n\tprivate static async startWatching(feature: WatchFeature) {\n\t\tvoid feature.startWatching({ delay: 2000, sourceDir: '.' })\n\t\tawait this.wait(500)\n\t}\n\n\tprotected static async watchRunStop(\n\t\trunner: () => Promise<GeneratedFileOrDir[]>\n\t) {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tlet payloadChanges: any = {}\n\t\tvoid cli.on('watcher.did-detect-change', (payload) => {\n\t\t\tpayloadChanges = payload.changes\n\t\t})\n\n\t\tawait this.startWatching(feature)\n\n\t\tconst expected: GeneratedFileOrDir[] = await runner()\n\n\t\tawait this.stopWatching(feature)\n\n\t\tfor (const e of expected) {\n\t\t\tassert.doesInclude(payloadChanges, e)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async canTrackAddingDir() {\n\t\tawait this.watchRunStop(async () => {\n\t\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\t\tdiskUtil.createDir(newDirDest)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedDir',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'generated',\n\t\t\t\t\t\tname: 'new_dir',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingDir() {\n\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\tdiskUtil.createDir(newDirDest)\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteDir(newDirDest)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedDir',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'new_dir',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingFile() {\n\t\tconst newFile = this.resolvePath('build', 'test.js')\n\t\tdiskUtil.writeFile(newFile, 'test')\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteFile(newFile)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'test.js',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'test.js'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingFileInDirectory() {\n\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\tdiskUtil.createDir(newDirDest)\n\n\t\tconst newFile = this.resolvePath('build', 'new_dir', 'test.js')\n\t\tdiskUtil.writeFile(newFile, 'test')\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteFile(newFile)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'test.js',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir', 'test.js'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\n\t\t\treturn expected\n\t\t})\n\t}\n\n\tprivate static async installWatch() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installFeatures([{ code: 'watch' }])\n\t\treturn cli\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionExecuter.test.js","names":["FeatureCommandExecuterTest","executer","Action","shouldAutoHandleDependencies","promise","execute","waitForInput","ui","sendInput","wait","installer","getFeatureInstaller","isInstalled","assert","isFalse","assertHealthySkillNamed","skill","status","schema","schemas","generateExpectedHealthSchemas","Object","values","coreSchemas","id","name","namespace","version","versionUtil","generateVersion","constValue","isTrue","error","errorSchemas","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter.test.ts"],"sourcesContent":["import { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { coreSchemas } from '../../features/schema/stores/SchemaStore'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\n\nexport default class FeatureCommandExecuterTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async shouldInstallDependentFeatures() {\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('yes')\n\n\t\tawait this.ui.sendInput('Skill with 1 dependency')\n\n\t\tawait this.ui.sendInput('A skill that is so good')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.ui.sendInput('Restaurant')\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.wait(100)\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tlet isInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isFalse(isInstalled)\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('skill-with-1-dependency', {\n\t\t\tskill: { status: 'passed' },\n\t\t\tschema: {\n\t\t\t\tstatus: 'passed',\n\t\t\t\tschemas: this.generateExpectedHealthSchemas([\n\t\t\t\t\t...Object.values(coreSchemas),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'restaurant',\n\t\t\t\t\t\tname: 'Restaurant',\n\t\t\t\t\t\tnamespace: 'SkillWith1Dependency',\n\t\t\t\t\t\tversion: versionUtil.generateVersion().constValue,\n\t\t\t\t\t},\n\t\t\t\t]),\n\t\t\t},\n\t\t})\n\n\t\tisInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async shouldInstallTwoDependentFeatures() {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('yes')\n\n\t\tawait this.ui.sendInput('My skill with 2 dependent features')\n\n\t\tawait this.ui.sendInput('A skill that is so good')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.ui.sendInput('Test error')\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('my-skill-with-2-dependent-features', {\n\t\t\tskill: { status: 'passed' },\n\t\t\tschema: {\n\t\t\t\tstatus: 'passed',\n\t\t\t\tschemas: [],\n\t\t\t},\n\t\t\terror: {\n\t\t\t\terrorSchemas: [{ name: 'Test error', id: 'testError' }],\n\t\t\t\tstatus: 'passed',\n\t\t\t},\n\t\t})\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isTrue(isInstalled)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,0B,WACnB,
|
|
1
|
+
{"version":3,"file":"ActionExecuter.test.js","names":["FeatureCommandExecuterTest","test","executer","Action","shouldAutoHandleDependencies","promise","execute","waitForInput","ui","sendInput","wait","installer","getFeatureInstaller","isInstalled","assert","isFalse","assertHealthySkillNamed","skill","status","schema","schemas","generateExpectedHealthSchemas","Object","values","coreSchemas","id","name","namespace","version","versionUtil","generateVersion","constValue","isTrue","error","errorSchemas","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter.test.ts"],"sourcesContent":["import { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { coreSchemas } from '../../features/schema/stores/SchemaStore'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\n\nexport default class FeatureCommandExecuterTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async shouldInstallDependentFeatures() {\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('yes')\n\n\t\tawait this.ui.sendInput('Skill with 1 dependency')\n\n\t\tawait this.ui.sendInput('A skill that is so good')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.ui.sendInput('Restaurant')\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.wait(100)\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tlet isInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isFalse(isInstalled)\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('skill-with-1-dependency', {\n\t\t\tskill: { status: 'passed' },\n\t\t\tschema: {\n\t\t\t\tstatus: 'passed',\n\t\t\t\tschemas: this.generateExpectedHealthSchemas([\n\t\t\t\t\t...Object.values(coreSchemas),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'restaurant',\n\t\t\t\t\t\tname: 'Restaurant',\n\t\t\t\t\t\tnamespace: 'SkillWith1Dependency',\n\t\t\t\t\t\tversion: versionUtil.generateVersion().constValue,\n\t\t\t\t\t},\n\t\t\t\t]),\n\t\t\t},\n\t\t})\n\n\t\tisInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async shouldInstallTwoDependentFeatures() {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('yes')\n\n\t\tawait this.ui.sendInput('My skill with 2 dependent features')\n\n\t\tawait this.ui.sendInput('A skill that is so good')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.ui.sendInput('Test error')\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('my-skill-with-2-dependent-features', {\n\t\t\tskill: { status: 'passed' },\n\t\t\tschema: {\n\t\t\t\tstatus: 'passed',\n\t\t\t\tschemas: [],\n\t\t\t},\n\t\t\terror: {\n\t\t\t\terrorSchemas: [{ name: 'Test error', id: 'testError' }],\n\t\t\t\tstatus: 'passed',\n\t\t\t},\n\t\t})\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isTrue(isInstalled)\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionExecuter2.test.js","names":["FeatureCommandExecuterContTest","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","setupMockCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","getEmitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","getLastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","fakeCommand","RegExp","code","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.setupMockCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static setupMockCommands() {\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionExecuter2.test.js","names":["FeatureCommandExecuterContTest","test","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","setupMockCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","getEmitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","getLastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","fakeCommand","RegExp","code","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.setupMockCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static setupMockCommands() {\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionExecuter3.test.js","names":["FeatureCommandExecuterTest","executer","Action","shouldAutoHandleDependencies","assert","isTruthy","doesThrowAsync","execute","err","errorAssert","assertError","promise","waitForInput","ui","sendInput","assertHealthySkillNamed","description","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter3.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\n\nexport default class FeatureCommandExecuterTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canInstantiateExecuter() {\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tassert.isTruthy(executer)\n\t}\n\n\t@test()\n\tprotected static async throwWhenExecutingWhenMissingDependencies() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('skill', 'create').execute({})\n\t\t)\n\t\terrorAssert.assertError(err, 'FEATURE_NOT_INSTALLED')\n\t}\n\n\t@test()\n\tprotected static async shouldAskAllQuestionsOfFeature() {\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('my-new-skill')\n\t}\n\n\t@test()\n\tprotected static async shouldNotAskAlreadyAnsweredQuestions() {\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({ description: 'go team!' })\n\n\t\tawait this.waitForInput()\n\n\t\tvoid this.ui.sendInput('Already answered skill')\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('already-answered-skill')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,0B,WACnB,
|
|
1
|
+
{"version":3,"file":"ActionExecuter3.test.js","names":["FeatureCommandExecuterTest","test","executer","Action","shouldAutoHandleDependencies","assert","isTruthy","doesThrowAsync","execute","err","errorAssert","assertError","promise","waitForInput","ui","sendInput","assertHealthySkillNamed","description","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter3.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\n\nexport default class FeatureCommandExecuterTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canInstantiateExecuter() {\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tassert.isTruthy(executer)\n\t}\n\n\t@test()\n\tprotected static async throwWhenExecutingWhenMissingDependencies() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('skill', 'create').execute({})\n\t\t)\n\t\terrorAssert.assertError(err, 'FEATURE_NOT_INSTALLED')\n\t}\n\n\t@test()\n\tprotected static async shouldAskAllQuestionsOfFeature() {\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('my-new-skill')\n\t}\n\n\t@test()\n\tprotected static async shouldNotAskAlreadyAnsweredQuestions() {\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({ description: 'go team!' })\n\n\t\tawait this.waitForInput()\n\n\t\tvoid this.ui.sendInput('Already answered skill')\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('already-answered-skill')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,0B,WACnB,IAAAC,UAAA,G,UAQA,IAAAA,UAAA,G,UAQA,IAAAA,UAAA,G,UAiBA,IAAAA,UAAA,G;;;;;;;;;;;;;kHAjCD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,QAFP,GAEkB,KAAKC,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgC;kBAChDC,4BAA4B,EAAE;gBADkB,CAAhC,CAFlB;;gBAKCC,YAAA,CAAOC,QAAP,CAAgBJ,QAAhB;;cALD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;qIAQA;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmBG,YAAA,CAAOE,cAAP,CAAsB;kBAAA,OACvC,KAAI,CAACJ,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BK,OAA/B,CAAuC,EAAvC,CADuC;gBAAA,CAAtB,CAFnB;;cAAA;gBAEOC,GAFP;;gBAKCC,sBAAA,CAAYC,WAAZ,CAAwBF,GAAxB,EAA6B,uBAA7B;;cALD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;0HAQA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOP,QAFP,GAEkB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+B;kBAC/CC,4BAA4B,EAAE;gBADiB,CAA/B,CAFlB;gBAKOQ,OALP,GAKiBV,QAAQ,CAACM,OAAT,CAAiB,EAAjB,CALjB;gBAAA;gBAAA,OAOO,KAAKK,YAAL,EAPP;;cAAA;gBAAA;gBAAA,OASO,KAAKC,EAAL,CAAQC,SAAR,CAAkB,cAAlB,CATP;;cAAA;gBAAA;gBAAA,OAUO,KAAKD,EAAL,CAAQC,SAAR,CAAkB,WAAlB,CAVP;;cAAA;gBAAA;gBAAA,OAYOH,OAZP;;cAAA;gBAAA;gBAAA,OAcO,KAAKI,uBAAL,CAA6B,cAA7B,CAdP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;gIAiBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOd,QAFP,GAEkB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+B;kBAC/CC,4BAA4B,EAAE;gBADiB,CAA/B,CAFlB;gBAKOQ,OALP,GAKiBV,QAAQ,CAACM,OAAT,CAAiB;kBAAES,WAAW,EAAE;gBAAf,CAAjB,CALjB;gBAAA;gBAAA,OAOO,KAAKJ,YAAL,EAPP;;cAAA;gBASC,KAAK,KAAKC,EAAL,CAAQC,SAAR,CAAkB,wBAAlB,CAAL;gBATD;gBAAA,OAWOH,OAXP;;cAAA;gBAAA;gBAAA,OAaO,KAAKI,uBAAL,CAA6B,wBAA7B,CAbP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAlCuDE,+B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionExecuter4.test.js","names":["ActionExecuter4Test","CommandService","fakeCommand","code","ENABLE_NPM_CACHE_COMMAND","msg","willDid","getEmitter","on","Error","assert","doesThrowAsync","Action","execute","err","errorAssert","assertError","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter4.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport { ENABLE_NPM_CACHE_COMMAND } from '../../features/cache/constants'\nimport CommandService from '../../services/CommandService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class ActionExecuter4Test extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\tCommandService.fakeCommand(/which docker/gis, {\n\t\t\tcode: 0,\n\t\t})\n\t\tCommandService.fakeCommand(ENABLE_NPM_CACHE_COMMAND, {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test('throws by default with will-execute listener error 1', 'test')\n\t@test('throws by default with will-execute listener error 2', 'test2')\n\t@test('throws by default with did-execute listener error 1', 'test2', 'did')\n\tprotected static async canBeConfiguredToThrowWhenExecuteListenersReturnErrors(\n\t\tmsg: string,\n\t\twillDid: 'will' | 'did' = 'will'\n\t) {\n\t\tawait this.getEmitter().on(`feature.${willDid}-execute`, () => {\n\t\t\tthrow new Error(msg)\n\t\t})\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('cache', 'enable').execute({})\n\t\t)\n\n\t\terrorAssert.assertError(err, 'LISTENER_ERROR', {\n\t\t\t'originalError.message': msg,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async stillReturnsIfNoErrorThrows() {\n\t\tawait this.Action('cache', 'enable').execute({})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,mB,WAYnB,
|
|
1
|
+
{"version":3,"file":"ActionExecuter4.test.js","names":["ActionExecuter4Test","test","CommandService","fakeCommand","code","ENABLE_NPM_CACHE_COMMAND","msg","willDid","getEmitter","on","Error","assert","doesThrowAsync","Action","execute","err","errorAssert","assertError","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter4.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport { ENABLE_NPM_CACHE_COMMAND } from '../../features/cache/constants'\nimport CommandService from '../../services/CommandService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class ActionExecuter4Test extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\tCommandService.fakeCommand(/which docker/gis, {\n\t\t\tcode: 0,\n\t\t})\n\t\tCommandService.fakeCommand(ENABLE_NPM_CACHE_COMMAND, {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test('throws by default with will-execute listener error 1', 'test')\n\t@test('throws by default with will-execute listener error 2', 'test2')\n\t@test('throws by default with did-execute listener error 1', 'test2', 'did')\n\tprotected static async canBeConfiguredToThrowWhenExecuteListenersReturnErrors(\n\t\tmsg: string,\n\t\twillDid: 'will' | 'did' = 'will'\n\t) {\n\t\tawait this.getEmitter().on(`feature.${willDid}-execute`, () => {\n\t\t\tthrow new Error(msg)\n\t\t})\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('cache', 'enable').execute({})\n\t\t)\n\n\t\terrorAssert.assertError(err, 'LISTENER_ERROR', {\n\t\t\t'originalError.message': msg,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async stillReturnsIfNoErrorThrows() {\n\t\tawait this.Action('cache', 'enable').execute({})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,mB,WAYnB,IAAAC,UAAA,EAAK,sDAAL,EAA6D,MAA7D,C,UACA,IAAAA,UAAA,EAAK,sDAAL,EAA6D,OAA7D,C,UACA,IAAAA,UAAA,EAAK,qDAAL,EAA4D,OAA5D,EAAqE,KAArE,C,UAkBA,IAAAA,UAAA,G;;;;;;;;;;;;;sGA/BD;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAGCC,0BAAA,CAAeC,WAAf,CAA2B,gBAA3B,EAA8C;kBAC7CC,IAAI,EAAE;gBADuC,CAA9C;;gBAGAF,0BAAA,CAAeC,WAAf,CAA2BE,mCAA3B,EAAqD;kBACpDD,IAAI,EAAE;gBAD8C,CAArD;;cAND;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;kJAWA,kBAICE,GAJD;QAAA;;QAAA;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAKCC,OALD,8DAK2B,MAL3B;gBAAA;gBAAA,OAOO,KAAKC,UAAL,GAAkBC,EAAlB,mBAAgCF,OAAhC,eAAmD,YAAM;kBAC9D,MAAM,IAAIG,KAAJ,CAAUJ,GAAV,CAAN;gBACA,CAFK,CAPP;;cAAA;gBAAA;gBAAA,OAWmBK,YAAA,CAAOC,cAAP,CAAsB;kBAAA,OACvC,KAAI,CAACC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC,EAAvC,CADuC;gBAAA,CAAtB,CAXnB;;cAAA;gBAWOC,GAXP;;gBAeCC,sBAAA,CAAYC,WAAZ,CAAwBF,GAAxB,EAA6B,gBAA7B,EAA+C;kBAC9C,yBAAyBT;gBADqB,CAA/C;;cAfD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;uHAoBA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKO,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC,EAAvC,CAFP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAhCgDI,4B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgParser.test.js","names":["ArgParserTest","
|
|
1
|
+
{"version":3,"file":"ArgParser.test.js","names":["ArgParserTest","test","d","assert","isTruthy","argParserUtil","args","expected","results","parse","isEqualDeep","AbstractSpruceTest"],"sources":["../../../src/__tests__/implementation/ArgParser.test.ts"],"sourcesContent":["import AbstractSpruceTest, { test, assert } from '@sprucelabs/test'\nimport { argParserUtil } from '../../utilities/argParser.utility'\n\nexport default class ArgParserTest extends AbstractSpruceTest {\n\t@test()\n\tprotected static async canGetArgParser() {\n\t\tassert.isTruthy(argParserUtil)\n\t}\n\n\t@test('Parses empty string as empty array obj', '', {})\n\t@test('Parses `-d` as { d: \"true\" } ', '-d', { d: 'true' })\n\t@test('Parses `-d false` as { d: \"false\" }', '-d false', { d: 'false' })\n\t@test(\n\t\t'Parses `-d false --test true` as { d: \"false\":, test: \"true\" }',\n\t\t'-d false --test true',\n\t\t{ d: 'false', test: 'true' }\n\t)\n\tprotected static async parse(args: string, expected: Record<string, string>) {\n\t\tconst results = argParserUtil.parse(args)\n\t\tassert.isEqualDeep(results, expected)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;;;IAEqBA,a,WACnB,IAAAC,UAAA,G,UAKA,IAAAA,UAAA,EAAK,wCAAL,EAA+C,EAA/C,EAAmD,EAAnD,C,UACA,IAAAA,UAAA,EAAK,+BAAL,EAAsC,IAAtC,EAA4C;EAAEC,CAAC,EAAE;AAAL,CAA5C,C,UACA,IAAAD,UAAA,EAAK,qCAAL,EAA4C,UAA5C,EAAwD;EAAEC,CAAC,EAAE;AAAL,CAAxD,C,UACA,IAAAD,UAAA,EACA,gEADA,EAEA,sBAFA,EAGA;EAAEC,CAAC,EAAE,OAAL;EAAcD,IAAI,EAAE;AAApB,CAHA,C;;;;;;;;;;;;;2GARD;QAAA;UAAA;YAAA;cAAA;gBAECE,YAAA,CAAOC,QAAP,CAAgBC,wBAAhB;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;iGAKA,kBAQ6BC,IAR7B,EAQ2CC,QAR3C;QAAA;QAAA;UAAA;YAAA;cAAA;gBASOC,OATP,GASiBH,wBAAA,CAAcI,KAAd,CAAoBH,IAApB,CATjB;;gBAUCH,YAAA,CAAOO,WAAP,CAAmBF,OAAnB,EAA4BD,QAA5B;;cAVD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAN0CI,gB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildService.test.js","names":["BuildServiceTest","service","Service","assert","isTruthy","installSkill","testFile","destination","resolvePath","diskUtil","writeFile","build","builtFilePath","contents","readFile","isEqual","cacheKey","FeatureFixture","installCachedFeatures","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/BuildService.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class BuildServiceTest extends AbstractCliTest {\n\t@test()\n\tprotected static buildServiceExists() {\n\t\tconst service = this.Service('build')\n\t\tassert.isTruthy(service)\n\t}\n\n\t@test()\n\tprotected static async canBuildSkill() {\n\t\tawait this.installSkill('skills')\n\n\t\tconst testFile = \"const testVar = 'hello world'\\nconsole.log(testVar)\\n\"\n\t\tconst destination = this.resolvePath('src/test.ts')\n\t\tdiskUtil.writeFile(destination, testFile)\n\n\t\tconst service = this.Service('build')\n\t\tawait service.build()\n\n\t\tconst builtFilePath = this.resolvePath('build/test.js')\n\t\tconst contents = diskUtil.readFile(builtFilePath)\n\n\t\tassert.isEqual(\n\t\t\tcontents,\n\t\t\t`\"use strict\";\nconst testVar = 'hello world';\nconsole.log(testVar);\n//# sourceMappingURL=test.js.map`\n\t\t)\n\t}\n\n\tprivate static async installSkill(cacheKey?: string) {\n\t\tawait this.FeatureFixture().installCachedFeatures(cacheKey ?? 'skills')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,gB,WACnB,
|
|
1
|
+
{"version":3,"file":"BuildService.test.js","names":["BuildServiceTest","test","service","Service","assert","isTruthy","installSkill","testFile","destination","resolvePath","diskUtil","writeFile","build","builtFilePath","contents","readFile","isEqual","cacheKey","FeatureFixture","installCachedFeatures","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/BuildService.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class BuildServiceTest extends AbstractCliTest {\n\t@test()\n\tprotected static buildServiceExists() {\n\t\tconst service = this.Service('build')\n\t\tassert.isTruthy(service)\n\t}\n\n\t@test()\n\tprotected static async canBuildSkill() {\n\t\tawait this.installSkill('skills')\n\n\t\tconst testFile = \"const testVar = 'hello world'\\nconsole.log(testVar)\\n\"\n\t\tconst destination = this.resolvePath('src/test.ts')\n\t\tdiskUtil.writeFile(destination, testFile)\n\n\t\tconst service = this.Service('build')\n\t\tawait service.build()\n\n\t\tconst builtFilePath = this.resolvePath('build/test.js')\n\t\tconst contents = diskUtil.readFile(builtFilePath)\n\n\t\tassert.isEqual(\n\t\t\tcontents,\n\t\t\t`\"use strict\";\nconst testVar = 'hello world';\nconsole.log(testVar);\n//# sourceMappingURL=test.js.map`\n\t\t)\n\t}\n\n\tprivate static async installSkill(cacheKey?: string) {\n\t\tawait this.FeatureFixture().installCachedFeatures(cacheKey ?? 'skills')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,gB,WACnB,IAAAC,UAAA,G,UAMA,IAAAA,UAAA,G;;;;;;;;;;;;WAND,8BACsC;MACrC,IAAMC,OAAO,GAAG,KAAKC,OAAL,CAAa,OAAb,CAAhB;;MACAC,YAAA,CAAOC,QAAP,CAAgBH,OAAhB;IACA;;;;yGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKI,YAAL,CAAkB,QAAlB,CAFP;;cAAA;gBAIOC,QAJP,GAIkB,uDAJlB;gBAKOC,WALP,GAKqB,KAAKC,WAAL,CAAiB,aAAjB,CALrB;;gBAMCC,0BAAA,CAASC,SAAT,CAAmBH,WAAnB,EAAgCD,QAAhC;;gBAEML,OARP,GAQiB,KAAKC,OAAL,CAAa,OAAb,CARjB;gBAAA;gBAAA,OASOD,OAAO,CAACU,KAAR,EATP;;cAAA;gBAWOC,aAXP,GAWuB,KAAKJ,WAAL,CAAiB,eAAjB,CAXvB;gBAYOK,QAZP,GAYkBJ,0BAAA,CAASK,QAAT,CAAkBF,aAAlB,CAZlB;;gBAcCT,YAAA,CAAOY,OAAP,CACCF,QADD;;cAdD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wGAuBA,kBAAkCG,QAAlC;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACO,KAAKC,cAAL,GAAsBC,qBAAtB,CAA4CF,QAA5C,aAA4CA,QAA5C,cAA4CA,QAA5C,GAAwD,QAAxD,CADP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EA9B6CG,4B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkImporting.test.js","names":["BulkImportingTest","factory","ServiceFactory","importer","Service","cwd","tmpDir","resolvePath","diskUtil","deleteDir","assert","isFunction","bulkImport","resolveTestPath","schemaOne","isTruthy","id","isEqual","results","isLength","schemaTwo","isFalse","doesDirExist","doesThrowAsync","err","errorAssert","assertError","doesInclude","options","file","pathAfterTestDirsAndFiles","pathUil","join","AbstractSpruceTest"],"sources":["../../../src/__tests__/implementation/BulkImporting.test.ts"],"sourcesContent":["import pathUil from 'path'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractSpruceTest, { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport ImportService from '../../services/ImportService'\nimport ServiceFactory from '../../services/ServiceFactory'\n\nexport default class BulkImportingTest extends AbstractSpruceTest {\n\tprivate static importer: ImportService\n\n\tprotected static async beforeEach() {\n\t\t// await super.beforeEach()\n\t\tconst factory = new ServiceFactory()\n\t\tthis.importer = factory.Service(this.cwd, 'import')\n\n\t\tconst tmpDir = this.resolvePath('.tmp')\n\t\tdiskUtil.deleteDir(tmpDir)\n\t}\n\n\t@test()\n\tprotected static async importerHasBulkImportMethod() {\n\t\tassert.isFunction(this.importer.bulkImport)\n\t}\n\n\t@test()\n\tprotected static async canImportSingleFile() {\n\t\tconst [schemaOne] = await this.importer.bulkImport([\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t])\n\n\t\tassert.isTruthy(schemaOne)\n\t\tassert.isTruthy(schemaOne.id)\n\t\tassert.isEqual(schemaOne.id, 'schemaOne')\n\t}\n\n\t@test()\n\tprotected static async importingNothingGoesFast() {\n\t\tconst results = await this.importer.bulkImport([])\n\t\tassert.isLength(results, 0)\n\t}\n\n\t@test()\n\tprotected static async canImportTwoFiles() {\n\t\tconst [schemaOne, schemaTwo] = await this.importer.bulkImport([\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaTwo.builder.ts'),\n\t\t])\n\n\t\tassert.isTruthy(schemaOne)\n\t\tassert.isTruthy(schemaTwo)\n\t\tassert.isTruthy(schemaTwo.id, 'schemaTwo')\n\t}\n\n\t@test()\n\tprotected static async shouldCleanupTmpDir() {\n\t\tawait this.importer.bulkImport([\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaTwo.builder.ts'),\n\t\t])\n\n\t\tconst tmpDir = this.resolvePath('.tmp')\n\t\tassert.isFalse(diskUtil.doesDirExist(tmpDir))\n\t}\n\n\t@test()\n\tprotected static async cleansUpOnError() {\n\t\tawait assert.doesThrowAsync(() =>\n\t\t\tthis.importer.bulkImport([\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_one_bad/v2020_06_23/badSchema.builder.ts'\n\t\t\t\t),\n\t\t\t])\n\t\t)\n\n\t\tconst tmpDir = this.resolvePath('.tmp')\n\t\tassert.isFalse(diskUtil.doesDirExist(tmpDir))\n\t}\n\n\t@test()\n\tprotected static async throwsOnTheActualFileWithAnError() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.importer.bulkImport([\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_one_bad/v2020_06_23/badSchema.builder.ts'\n\t\t\t\t),\n\t\t\t])\n\t\t)\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT')\n\t\tassert.doesInclude((err as any).options.file, 'badSchema.builder.ts')\n\t}\n\n\t@test()\n\tprotected static async throwsOnTheFirstActualFileWithAnErrorWithManyFiles() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.importer.bulkImport([\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_two_bad/v2020_06_23/anotherBad.builder.ts'\n\t\t\t\t),\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_two_bad/v2020_06_23/badSchema.builder.ts'\n\t\t\t\t),\n\n\t\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaTwo.builder.ts'),\n\t\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t\t])\n\t\t)\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT')\n\t\tassert.doesInclude((err as any).options.file, 'anotherBad.builder.ts')\n\t}\n\n\t@test()\n\tprotected static async helpfulErrorWhenImportNotExportedAsDefault() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.importer.bulkImport([\n\t\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaTwo.builder.ts'),\n\t\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_two_bad/v2020_06_23/notDefault.builder.ts'\n\t\t\t\t),\n\t\t\t])\n\t\t)\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT')\n\t\tassert.doesInclude((err as any).options.file, 'notDefault.builder.ts')\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUil.join(\n\t\t\tthis.cwd,\n\t\t\t'build',\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;IAEqBA,iB,WAYnB,
|
|
1
|
+
{"version":3,"file":"BulkImporting.test.js","names":["BulkImportingTest","test","factory","ServiceFactory","importer","Service","cwd","tmpDir","resolvePath","diskUtil","deleteDir","assert","isFunction","bulkImport","resolveTestPath","schemaOne","isTruthy","id","isEqual","results","isLength","schemaTwo","isFalse","doesDirExist","doesThrowAsync","err","errorAssert","assertError","doesInclude","options","file","pathAfterTestDirsAndFiles","pathUil","join","AbstractSpruceTest"],"sources":["../../../src/__tests__/implementation/BulkImporting.test.ts"],"sourcesContent":["import pathUil from 'path'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractSpruceTest, { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport ImportService from '../../services/ImportService'\nimport ServiceFactory from '../../services/ServiceFactory'\n\nexport default class BulkImportingTest extends AbstractSpruceTest {\n\tprivate static importer: ImportService\n\n\tprotected static async beforeEach() {\n\t\t// await super.beforeEach()\n\t\tconst factory = new ServiceFactory()\n\t\tthis.importer = factory.Service(this.cwd, 'import')\n\n\t\tconst tmpDir = this.resolvePath('.tmp')\n\t\tdiskUtil.deleteDir(tmpDir)\n\t}\n\n\t@test()\n\tprotected static async importerHasBulkImportMethod() {\n\t\tassert.isFunction(this.importer.bulkImport)\n\t}\n\n\t@test()\n\tprotected static async canImportSingleFile() {\n\t\tconst [schemaOne] = await this.importer.bulkImport([\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t])\n\n\t\tassert.isTruthy(schemaOne)\n\t\tassert.isTruthy(schemaOne.id)\n\t\tassert.isEqual(schemaOne.id, 'schemaOne')\n\t}\n\n\t@test()\n\tprotected static async importingNothingGoesFast() {\n\t\tconst results = await this.importer.bulkImport([])\n\t\tassert.isLength(results, 0)\n\t}\n\n\t@test()\n\tprotected static async canImportTwoFiles() {\n\t\tconst [schemaOne, schemaTwo] = await this.importer.bulkImport([\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaTwo.builder.ts'),\n\t\t])\n\n\t\tassert.isTruthy(schemaOne)\n\t\tassert.isTruthy(schemaTwo)\n\t\tassert.isTruthy(schemaTwo.id, 'schemaTwo')\n\t}\n\n\t@test()\n\tprotected static async shouldCleanupTmpDir() {\n\t\tawait this.importer.bulkImport([\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaTwo.builder.ts'),\n\t\t])\n\n\t\tconst tmpDir = this.resolvePath('.tmp')\n\t\tassert.isFalse(diskUtil.doesDirExist(tmpDir))\n\t}\n\n\t@test()\n\tprotected static async cleansUpOnError() {\n\t\tawait assert.doesThrowAsync(() =>\n\t\t\tthis.importer.bulkImport([\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_one_bad/v2020_06_23/badSchema.builder.ts'\n\t\t\t\t),\n\t\t\t])\n\t\t)\n\n\t\tconst tmpDir = this.resolvePath('.tmp')\n\t\tassert.isFalse(diskUtil.doesDirExist(tmpDir))\n\t}\n\n\t@test()\n\tprotected static async throwsOnTheActualFileWithAnError() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.importer.bulkImport([\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_one_bad/v2020_06_23/badSchema.builder.ts'\n\t\t\t\t),\n\t\t\t])\n\t\t)\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT')\n\t\tassert.doesInclude((err as any).options.file, 'badSchema.builder.ts')\n\t}\n\n\t@test()\n\tprotected static async throwsOnTheFirstActualFileWithAnErrorWithManyFiles() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.importer.bulkImport([\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_two_bad/v2020_06_23/anotherBad.builder.ts'\n\t\t\t\t),\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_two_bad/v2020_06_23/badSchema.builder.ts'\n\t\t\t\t),\n\n\t\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaTwo.builder.ts'),\n\t\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t\t])\n\t\t)\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT')\n\t\tassert.doesInclude((err as any).options.file, 'anotherBad.builder.ts')\n\t}\n\n\t@test()\n\tprotected static async helpfulErrorWhenImportNotExportedAsDefault() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.importer.bulkImport([\n\t\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaTwo.builder.ts'),\n\t\t\t\tthis.resolveTestPath('test_builders/v2020_06_23/schemaOne.builder.ts'),\n\t\t\t\tthis.resolveTestPath(\n\t\t\t\t\t'test_builders_two_bad/v2020_06_23/notDefault.builder.ts'\n\t\t\t\t),\n\t\t\t])\n\t\t)\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT')\n\t\tassert.doesInclude((err as any).options.file, 'notDefault.builder.ts')\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUil.join(\n\t\t\tthis.cwd,\n\t\t\t'build',\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CachingImports.test.js","names":["CachingImportsTest","ImportService","setCacheDir","diskUtil","createRandomTempDir","importService","Service","enableCaching","test1Path","resolvePath","writeFile","assertImportedCorrectly","hello","foo","expected","importAll","contents","assert","isEqualDeep","test2Path","FeatureFixture","installFeatures","code","options","name","description","wrapper","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/CachingImports.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport ImportService from '../../services/ImportService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class CachingImportsTest extends AbstractCliTest {\n\tprivate static importService: ImportService\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tthis.importService = this.Service('import')\n\n\t\tImportService.enableCaching()\n\t}\n\n\t@test()\n\tprotected static async canTellIfFileChanged() {\n\t\tconst test1Path = this.resolvePath('test1.js')\n\t\tdiskUtil.writeFile(test1Path, 'module.exports = { hello: \"world\"}')\n\n\t\tawait this.assertImportedCorrectly(test1Path, { hello: 'world' })\n\n\t\tdiskUtil.writeFile(test1Path, 'module.exports = { foo: \"bar\"}')\n\n\t\tawait this.assertImportedCorrectly(test1Path, { foo: 'bar' })\n\t}\n\n\tprivate static async assertImportedCorrectly(\n\t\ttest1Path: string,\n\t\texpected: Record<string, any>\n\t) {\n\t\tconst contents = await this.importService.importAll(test1Path)\n\t\tassert.isEqualDeep(contents, expected)\n\t}\n\n\t@test()\n\tprotected static async canTellIfRelatedFileChanges() {\n\t\tconst test1Path = this.resolvePath('test1.js')\n\t\tdiskUtil.writeFile(\n\t\t\ttest1Path,\n\t\t\t'const value = require(\"./test2\"); module.exports = { hello: value }'\n\t\t)\n\n\t\tconst test2Path = this.resolvePath('test2.js')\n\t\tdiskUtil.writeFile(test2Path, 'module.exports = \"world\"')\n\n\t\tawait this.assertImportedCorrectly(test1Path, { hello: 'world' })\n\n\t\tdiskUtil.writeFile(test2Path, 'module.exports = \"bar\"')\n\t\tawait this.assertImportedCorrectly(test1Path, { hello: 'bar' })\n\t}\n\n\t@test()\n\tprotected static async canTellIfFilesChangedInASkill() {\n\t\tawait this.FeatureFixture().installFeatures(\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\tcode: 'skill',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tname: 'file-change-skill',\n\t\t\t\t\t\tdescription: 'It should be good',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\t'skills'\n\t\t)\n\n\t\tconst test1Path = this.resolvePath('src/test1.ts')\n\t\tdiskUtil.writeFile(\n\t\t\ttest1Path,\n\t\t\t\"import { value } from './test2'\\nexport const wrapper = { hello: value }\"\n\t\t)\n\n\t\tconst test2Path = this.resolvePath('src/test2.ts')\n\t\tdiskUtil.writeFile(test2Path, 'export const value = \"world\"')\n\n\t\tawait this.assertImportedCorrectly(test1Path, {\n\t\t\twrapper: { hello: 'world' },\n\t\t})\n\n\t\tdiskUtil.writeFile(test2Path, 'export const value = \"bar\"')\n\t\tawait this.assertImportedCorrectly(test1Path, { wrapper: { hello: 'bar' } })\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,kB,WAYnB,
|
|
1
|
+
{"version":3,"file":"CachingImports.test.js","names":["CachingImportsTest","test","ImportService","setCacheDir","diskUtil","createRandomTempDir","importService","Service","enableCaching","test1Path","resolvePath","writeFile","assertImportedCorrectly","hello","foo","expected","importAll","contents","assert","isEqualDeep","test2Path","FeatureFixture","installFeatures","code","options","name","description","wrapper","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/CachingImports.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport ImportService from '../../services/ImportService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class CachingImportsTest extends AbstractCliTest {\n\tprivate static importService: ImportService\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tthis.importService = this.Service('import')\n\n\t\tImportService.enableCaching()\n\t}\n\n\t@test()\n\tprotected static async canTellIfFileChanged() {\n\t\tconst test1Path = this.resolvePath('test1.js')\n\t\tdiskUtil.writeFile(test1Path, 'module.exports = { hello: \"world\"}')\n\n\t\tawait this.assertImportedCorrectly(test1Path, { hello: 'world' })\n\n\t\tdiskUtil.writeFile(test1Path, 'module.exports = { foo: \"bar\"}')\n\n\t\tawait this.assertImportedCorrectly(test1Path, { foo: 'bar' })\n\t}\n\n\tprivate static async assertImportedCorrectly(\n\t\ttest1Path: string,\n\t\texpected: Record<string, any>\n\t) {\n\t\tconst contents = await this.importService.importAll(test1Path)\n\t\tassert.isEqualDeep(contents, expected)\n\t}\n\n\t@test()\n\tprotected static async canTellIfRelatedFileChanges() {\n\t\tconst test1Path = this.resolvePath('test1.js')\n\t\tdiskUtil.writeFile(\n\t\t\ttest1Path,\n\t\t\t'const value = require(\"./test2\"); module.exports = { hello: value }'\n\t\t)\n\n\t\tconst test2Path = this.resolvePath('test2.js')\n\t\tdiskUtil.writeFile(test2Path, 'module.exports = \"world\"')\n\n\t\tawait this.assertImportedCorrectly(test1Path, { hello: 'world' })\n\n\t\tdiskUtil.writeFile(test2Path, 'module.exports = \"bar\"')\n\t\tawait this.assertImportedCorrectly(test1Path, { hello: 'bar' })\n\t}\n\n\t@test()\n\tprotected static async canTellIfFilesChangedInASkill() {\n\t\tawait this.FeatureFixture().installFeatures(\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\tcode: 'skill',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tname: 'file-change-skill',\n\t\t\t\t\t\tdescription: 'It should be good',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\t'skills'\n\t\t)\n\n\t\tconst test1Path = this.resolvePath('src/test1.ts')\n\t\tdiskUtil.writeFile(\n\t\t\ttest1Path,\n\t\t\t\"import { value } from './test2'\\nexport const wrapper = { hello: value }\"\n\t\t)\n\n\t\tconst test2Path = this.resolvePath('src/test2.ts')\n\t\tdiskUtil.writeFile(test2Path, 'export const value = \"world\"')\n\n\t\tawait this.assertImportedCorrectly(test1Path, {\n\t\t\twrapper: { hello: 'world' },\n\t\t})\n\n\t\tdiskUtil.writeFile(test2Path, 'export const value = \"bar\"')\n\t\tawait this.assertImportedCorrectly(test1Path, { wrapper: { hello: 'bar' } })\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandOptionBuilder.test.js","names":["CommandGeneratorTest","assert","isFunction","featuresUtil","generateOptionAliases","person","id","name","fields","firstName","type","aliases","isLength","Object","keys","doesInclude","lastName","isRequired","defaultTrue","defaultValue","defaultFalse","boolNoDefault","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/CommandOptionBuilder.test.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { test, assert } from '@sprucelabs/test'\nimport featuresUtil from '../../features/feature.utilities'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class CommandGeneratorTest extends AbstractCliTest {\n\t@test()\n\tprotected static hasAliasGenerated() {\n\t\tassert.isFunction(featuresUtil.generateOptionAliases)\n\t}\n\n\t@test()\n\tprotected static canAliasOneOptionalField() {\n\t\tconst person: Schema = {\n\t\t\tid: 'alias-person',\n\t\t\tname: 'person alias',\n\t\t\tfields: {\n\t\t\t\tfirstName: {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tconst aliases = featuresUtil.generateOptionAliases(person)\n\n\t\tassert.isLength(Object.keys(aliases), 1)\n\t\tassert.doesInclude(aliases, {\n\t\t\tfirstName: '--firstName <firstName>',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static canAliasTwoFieldsOneRequired() {\n\t\tconst person: Schema = {\n\t\t\tid: 'alias-person',\n\t\t\tname: 'person alias',\n\t\t\tfields: {\n\t\t\t\tfirstName: {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t},\n\t\t\t\tlastName: {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tconst aliases = featuresUtil.generateOptionAliases(person)\n\n\t\tassert.isLength(Object.keys(aliases), 2)\n\t\tassert.doesInclude(aliases, {\n\t\t\tfirstName: '--firstName <firstName>',\n\t\t})\n\t\tassert.doesInclude(aliases, {\n\t\t\tlastName: '--lastName <lastName>',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static properlyHandlesBooleans() {\n\t\tconst person: Schema = {\n\t\t\tid: 'alias-person',\n\t\t\tname: 'person alias',\n\t\t\tfields: {\n\t\t\t\tdefaultTrue: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t\tdefaultFalse: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefaultValue: false,\n\t\t\t\t},\n\t\t\t\tboolNoDefault: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tconst aliases = featuresUtil.generateOptionAliases(person)\n\n\t\tassert.isLength(Object.keys(aliases), 3)\n\t\tassert.doesInclude(aliases, {\n\t\t\tdefaultTrue: '--defaultTrue [true|false]',\n\t\t})\n\t\tassert.doesInclude(aliases, {\n\t\t\tdefaultFalse: '--defaultFalse [true|false]',\n\t\t})\n\n\t\tassert.doesInclude(aliases, {\n\t\t\tboolNoDefault: '--boolNoDefault [true|false]',\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,oB,WACnB,
|
|
1
|
+
{"version":3,"file":"CommandOptionBuilder.test.js","names":["CommandGeneratorTest","test","assert","isFunction","featuresUtil","generateOptionAliases","person","id","name","fields","firstName","type","aliases","isLength","Object","keys","doesInclude","lastName","isRequired","defaultTrue","defaultValue","defaultFalse","boolNoDefault","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/CommandOptionBuilder.test.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { test, assert } from '@sprucelabs/test'\nimport featuresUtil from '../../features/feature.utilities'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class CommandGeneratorTest extends AbstractCliTest {\n\t@test()\n\tprotected static hasAliasGenerated() {\n\t\tassert.isFunction(featuresUtil.generateOptionAliases)\n\t}\n\n\t@test()\n\tprotected static canAliasOneOptionalField() {\n\t\tconst person: Schema = {\n\t\t\tid: 'alias-person',\n\t\t\tname: 'person alias',\n\t\t\tfields: {\n\t\t\t\tfirstName: {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tconst aliases = featuresUtil.generateOptionAliases(person)\n\n\t\tassert.isLength(Object.keys(aliases), 1)\n\t\tassert.doesInclude(aliases, {\n\t\t\tfirstName: '--firstName <firstName>',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static canAliasTwoFieldsOneRequired() {\n\t\tconst person: Schema = {\n\t\t\tid: 'alias-person',\n\t\t\tname: 'person alias',\n\t\t\tfields: {\n\t\t\t\tfirstName: {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t},\n\t\t\t\tlastName: {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tconst aliases = featuresUtil.generateOptionAliases(person)\n\n\t\tassert.isLength(Object.keys(aliases), 2)\n\t\tassert.doesInclude(aliases, {\n\t\t\tfirstName: '--firstName <firstName>',\n\t\t})\n\t\tassert.doesInclude(aliases, {\n\t\t\tlastName: '--lastName <lastName>',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static properlyHandlesBooleans() {\n\t\tconst person: Schema = {\n\t\t\tid: 'alias-person',\n\t\t\tname: 'person alias',\n\t\t\tfields: {\n\t\t\t\tdefaultTrue: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t\tdefaultFalse: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefaultValue: false,\n\t\t\t\t},\n\t\t\t\tboolNoDefault: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tconst aliases = featuresUtil.generateOptionAliases(person)\n\n\t\tassert.isLength(Object.keys(aliases), 3)\n\t\tassert.doesInclude(aliases, {\n\t\t\tdefaultTrue: '--defaultTrue [true|false]',\n\t\t})\n\t\tassert.doesInclude(aliases, {\n\t\t\tdefaultFalse: '--defaultFalse [true|false]',\n\t\t})\n\n\t\tassert.doesInclude(aliases, {\n\t\t\tboolNoDefault: '--boolNoDefault [true|false]',\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,oB,WACnB,IAAAC,UAAA,G,UAKA,IAAAA,UAAA,G,UAoBA,IAAAA,UAAA,G,UA2BA,IAAAA,UAAA,G;;;;;;;;;;;;WApDD,6BACqC;MACpCC,YAAA,CAAOC,UAAP,CAAkBC,mBAAA,CAAaC,qBAA/B;IACA;;;WAED,oCAC4C;MAC3C,IAAMC,MAAc,GAAG;QACtBC,EAAE,EAAE,cADkB;QAEtBC,IAAI,EAAE,cAFgB;QAGtBC,MAAM,EAAE;UACPC,SAAS,EAAE;YACVC,IAAI,EAAE;UADI;QADJ;MAHc,CAAvB;;MAUA,IAAMC,OAAO,GAAGR,mBAAA,CAAaC,qBAAb,CAAmCC,MAAnC,CAAhB;;MAEAJ,YAAA,CAAOW,QAAP,CAAgBC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAAhB,EAAsC,CAAtC;;MACAV,YAAA,CAAOc,WAAP,CAAmBJ,OAAnB,EAA4B;QAC3BF,SAAS,EAAE;MADgB,CAA5B;IAGA;;;WAED,wCACgD;MAC/C,IAAMJ,MAAc,GAAG;QACtBC,EAAE,EAAE,cADkB;QAEtBC,IAAI,EAAE,cAFgB;QAGtBC,MAAM,EAAE;UACPC,SAAS,EAAE;YACVC,IAAI,EAAE;UADI,CADJ;UAIPM,QAAQ,EAAE;YACTN,IAAI,EAAE,MADG;YAETO,UAAU,EAAE;UAFH;QAJH;MAHc,CAAvB;;MAcA,IAAMN,OAAO,GAAGR,mBAAA,CAAaC,qBAAb,CAAmCC,MAAnC,CAAhB;;MAEAJ,YAAA,CAAOW,QAAP,CAAgBC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAAhB,EAAsC,CAAtC;;MACAV,YAAA,CAAOc,WAAP,CAAmBJ,OAAnB,EAA4B;QAC3BF,SAAS,EAAE;MADgB,CAA5B;;MAGAR,YAAA,CAAOc,WAAP,CAAmBJ,OAAnB,EAA4B;QAC3BK,QAAQ,EAAE;MADiB,CAA5B;IAGA;;;WAED,mCAC2C;MAC1C,IAAMX,MAAc,GAAG;QACtBC,EAAE,EAAE,cADkB;QAEtBC,IAAI,EAAE,cAFgB;QAGtBC,MAAM,EAAE;UACPU,WAAW,EAAE;YACZR,IAAI,EAAE,SADM;YAEZS,YAAY,EAAE;UAFF,CADN;UAKPC,YAAY,EAAE;YACbV,IAAI,EAAE,SADO;YAEbS,YAAY,EAAE;UAFD,CALP;UASPE,aAAa,EAAE;YACdX,IAAI,EAAE;UADQ;QATR;MAHc,CAAvB;;MAkBA,IAAMC,OAAO,GAAGR,mBAAA,CAAaC,qBAAb,CAAmCC,MAAnC,CAAhB;;MAEAJ,YAAA,CAAOW,QAAP,CAAgBC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAAhB,EAAsC,CAAtC;;MACAV,YAAA,CAAOc,WAAP,CAAmBJ,OAAnB,EAA4B;QAC3BO,WAAW,EAAE;MADc,CAA5B;;MAGAjB,YAAA,CAAOc,WAAP,CAAmBJ,OAAnB,EAA4B;QAC3BS,YAAY,EAAE;MADa,CAA5B;;MAIAnB,YAAA,CAAOc,WAAP,CAAmBJ,OAAnB,EAA4B;QAC3BU,aAAa,EAAE;MADY,CAA5B;IAGA;;;EAtFgDC,4B"}
|