@sprucelabs/spruce-cli 17.1.53 → 17.1.55
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 +8 -0
- package/build/.spruce/errors/spruceCli/actionCancelled.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/actionCancelled.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/bootError.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/bootError.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/buildFailed.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/buildFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/commandAborted.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/commandAborted.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/commandBlocked.schema.js +0 -5
- package/build/.spruce/errors/spruceCli/commandBlocked.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js +0 -5
- package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js +0 -7
- package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/deployFailed.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/deployFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js +0 -8
- package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/failedToImport.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/failedToImport.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/fileExists.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/fileExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/generic.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/generic.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidCommand.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/invalidCommand.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js +0 -5
- package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/lintFailed.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/lintFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/missingDependencies.schema.js +0 -6
- package/build/.spruce/errors/spruceCli/missingDependencies.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js +0 -5
- package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/notImplemented.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/notImplemented.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/schemaExists.schema.js +0 -5
- package/build/.spruce/errors/spruceCli/schemaExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js +0 -7
- package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/skillNotFound.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/skillNotFound.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/skillViewExists.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/skillViewExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/storeExists.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/storeExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/testFailed.schema.js +0 -6
- package/build/.spruce/errors/spruceCli/testFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/themeExists.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/themeExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js +0 -4
- package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js.map +1 -1
- package/build/.spruce/events/events.contract.js +0 -10
- package/build/.spruce/events/events.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js +0 -4
- 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 +0 -5
- 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 +0 -5
- 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 +0 -4
- 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 +0 -5
- package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/schemas/fields/fieldClassMap.js +0 -2
- package/build/.spruce/schemas/fields/fieldClassMap.js.map +1 -1
- package/build/.spruce/schemas/fields/fields.types.js +0 -1
- package/build/.spruce/schemas/fields/fields.types.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitPayload.schema.js +0 -4
- 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 +0 -4
- 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 +0 -10
- 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 +0 -4
- 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 +0 -4
- 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 +0 -10
- 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 +0 -4
- package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlResponsePayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/getActiveThemeEmitTarget.schema.js +0 -4
- package/build/.spruce/schemas/heartwood/v2021_02_11/getActiveThemeEmitTarget.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/getActiveThemeEmitTargetAndPayload.schema.js +0 -8
- package/build/.spruce/schemas/heartwood/v2021_02_11/getActiveThemeEmitTargetAndPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/getActiveThemeResponsePayload.schema.js +0 -6
- package/build/.spruce/schemas/heartwood/v2021_02_11/getActiveThemeResponsePayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsEmitTargetAndPayload.schema.js +0 -8
- 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 +0 -9
- 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 +0 -4
- 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 +0 -6
- 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 +0 -6
- package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResult.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerDashboardCardsResponsePayload.schema.js +0 -4
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerDashboardCardsResponsePayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitPayload.schema.js +0 -8
- 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 +0 -8
- 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 +0 -4
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsResponsePayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/theme.schema.js +0 -8
- package/build/.spruce/schemas/heartwood/v2021_02_11/theme.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeEmitPayload.schema.js +0 -6
- package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeEmitPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeEmitTarget.schema.js +0 -4
- package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeEmitTarget.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeEmitTargetAndPayload.schema.js +0 -10
- package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeEmitTargetAndPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeResponsePayload.schema.js +0 -6
- package/build/.spruce/schemas/heartwood/v2021_02_11/upsertThemeResponsePayload.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/theme.schema.js +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/theme.schema.js.map +1 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/themeProps.schema.js +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/themeProps.schema.js.map +1 -1
- package/build/.spruce/schemas/schemas.types.js +0 -2
- package/build/.spruce/schemas/schemas.types.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/choice.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/choice.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/link.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/link.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/location.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/location.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/message.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/message.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/messageSource.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/messageSource.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/messageTarget.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/messageTarget.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/organization.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/organization.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/person.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/person.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/personLocation.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/personLocation.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/personOrganization.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/personOrganization.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/role.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/role.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/sendMessage.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/sendMessage.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/skill.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/skill.schema.js.map +1 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/skillCreator.schema.js +0 -1
- package/build/.spruce/schemas/spruce/v2020_07_22/skillCreator.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/bootSkillOptions.schema.js +0 -7
- 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 +0 -5
- 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 +0 -27
- 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 +0 -5
- 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 +0 -29
- 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 +0 -8
- 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 +0 -7
- 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 +0 -7
- 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 +0 -4
- 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 +0 -12
- 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 +0 -14
- 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 +0 -6
- 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 +0 -4
- 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 +0 -5
- 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 +0 -7
- 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 +0 -4
- 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 +0 -5
- 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 +0 -4
- 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 +0 -6
- 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 +0 -22
- 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 +0 -8
- 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 +0 -6
- 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 +0 -21
- 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 +0 -9
- 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 +0 -4
- 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 +0 -7
- package/build/.spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/spruceEventUtils/v2021_09_13/eventSource.schema.js +0 -1
- package/build/.spruce/schemas/spruceEventUtils/v2021_09_13/eventSource.schema.js.map +1 -1
- package/build/.spruce/skill.types.js +0 -3
- package/build/.spruce/skill.types.js.map +1 -1
- package/build/GlobalEmitter.js +0 -22
- package/build/GlobalEmitter.js.map +1 -1
- package/build/InFlightEntertainment.js +0 -13
- package/build/InFlightEntertainment.js.map +1 -1
- package/build/__tests__/behavioral/AddingADependency.test.js +0 -69
- package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
- package/build/__tests__/behavioral/BlockingCommands.test.js +0 -34
- package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
- package/build/__tests__/behavioral/BootingTheCli.test.js +0 -23
- package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
- package/build/__tests__/behavioral/BootingWithBadFiles.test.js +0 -41
- package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
- package/build/__tests__/behavioral/CreatingAConversationTopic.test.js +6 -48
- package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
- package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js +0 -34
- package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +1 -1
- package/build/__tests__/behavioral/DeployingASkill.test.js +0 -215
- package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/DeployingToSandbox.test.js +4 -141
- package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
- package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js +0 -78
- package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
- package/build/__tests__/behavioral/GettingCliVersion.test.js +0 -33
- package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +0 -89
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js +0 -31
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js +0 -84
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/ManagingDependencies.test.js +0 -55
- package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js +0 -32
- package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
- package/build/__tests__/behavioral/RebuildingASkill.test.js +0 -36
- package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js +0 -33
- package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js +0 -47
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js +0 -68
- package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js +0 -58
- package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +0 -42
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js +3 -64
- package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingRemote.test.js +0 -49
- package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js +0 -49
- package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js +6 -142
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpVscode.test.js +0 -40
- package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +0 -54
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js +0 -35
- package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingAConversation.test.js +0 -77
- package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js +0 -51
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
- package/build/__tests__/behavioral/WatchingSkillViews.test.js +1 -120
- package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js +0 -58
- package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js +0 -52
- package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js +16 -97
- package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/SettingUpErrors.test.js +0 -32
- package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +0 -95
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +2 -160
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +0 -135
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js +7 -154
- package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +1 -154
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js +0 -39
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js +0 -41
- package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
- package/build/__tests__/behavioral/events/SettingUpEvents.test.js +0 -25
- package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +0 -43
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/node/CreatingANodeModule.test.js +0 -38
- package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js +0 -55
- package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
- package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js +0 -38
- package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +0 -31
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
- package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js +0 -79
- package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
- package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js +0 -37
- package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
- package/build/__tests__/behavioral/polish/SettingUpPolish.test.js +0 -59
- package/build/__tests__/behavioral/polish/SettingUpPolish.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js +2 -107
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js +0 -37
- package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +0 -43
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js +5 -70
- package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js +0 -32
- package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js +14 -215
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js +0 -40
- package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js +0 -30
- package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js +0 -26
- package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/BootingASkill.test.js +0 -54
- package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/CreatingASkill.test.js +0 -35
- package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/RegisteringASkill.test.js +0 -61
- package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/SettingUpASkill.test.js +0 -89
- package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js +22 -116
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
- package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js +0 -64
- package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/CreatingATest.test.js +6 -115
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/RunningTests.test.js +0 -43
- package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +2 -138
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SettingUpTests.test.js +2 -31
- package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js +0 -48
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js +0 -65
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +0 -53
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js +0 -117
- package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js +5 -101
- package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +2 -117
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +0 -67
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js +0 -65
- package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js +5 -37
- package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js +0 -62
- package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js +1 -111
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingATheme.test.js +0 -55
- package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
- package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js +0 -47
- package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/views/SettingUpViews.test.js +0 -30
- package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js +0 -59
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
- package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js +0 -121
- package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter.test.js +0 -57
- package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +0 -112
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter3.test.js +0 -40
- package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter4.test.js +2 -38
- package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
- package/build/__tests__/implementation/ArgParser.test.js +0 -28
- package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
- package/build/__tests__/implementation/BuildService.test.js +0 -31
- package/build/__tests__/implementation/BuildService.test.js.map +1 -1
- package/build/__tests__/implementation/BulkImporting.test.js +0 -86
- package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
- package/build/__tests__/implementation/CachingImports.test.js +0 -59
- package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
- package/build/__tests__/implementation/CommandOptionBuilder.test.js +0 -29
- package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/CommanderCommandResultMapper.test.js +0 -60
- package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
- package/build/__tests__/implementation/DataStoreStore.test.js +0 -78
- package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
- package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js +2 -34
- package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
- package/build/__tests__/implementation/EventContractCleanerUtil.test.js +0 -43
- package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
- package/build/__tests__/implementation/EventStore.test.js +0 -155
- package/build/__tests__/implementation/EventStore.test.js.map +1 -1
- package/build/__tests__/implementation/EventTemplateItemBuilder.test.js +80 -129
- package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureCommandAttacher.test.js +0 -78
- package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureFixture.test.js +2 -42
- package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureInstaller.test.js +0 -41
- package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
- package/build/__tests__/implementation/FeaturesUtil.test.js +0 -25
- package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
- package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js +0 -30
- package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/GlobalEmitter.js +0 -22
- package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
- package/build/__tests__/implementation/Introspection.test.js +0 -22
- package/build/__tests__/implementation/Introspection.test.js.map +1 -1
- package/build/__tests__/implementation/JestJsonParser.test.js +0 -61
- package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
- package/build/__tests__/implementation/LintService.test.js +0 -33
- package/build/__tests__/implementation/LintService.test.js.map +1 -1
- package/build/__tests__/implementation/ListenerStore.test.js +2 -19
- package/build/__tests__/implementation/ListenerStore.test.js.map +1 -1
- package/build/__tests__/implementation/OnboardingScriptLoader.test.js +0 -43
- package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
- package/build/__tests__/implementation/OnboardingScriptPlayer.test.js +0 -74
- package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
- package/build/__tests__/implementation/OnboardingStore.test.js +0 -39
- package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
- package/build/__tests__/implementation/OrganizationStore.test.js +0 -59
- package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
- package/build/__tests__/implementation/ParentTestFinder.test.js +0 -35
- package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
- package/build/__tests__/implementation/PkgService.test.js +0 -55
- package/build/__tests__/implementation/PkgService.test.js.map +1 -1
- package/build/__tests__/implementation/SchemaStore.test.js +20 -154
- package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
- package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js +0 -37
- package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/SchemaValueTypeWriter.test.js +0 -72
- package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
- package/build/__tests__/implementation/ServiceFactory.test.js +0 -25
- package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
- package/build/__tests__/implementation/SettingUpANodeModule.test.js +0 -35
- package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
- package/build/__tests__/implementation/SkillStore.test.js +0 -93
- package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
- package/build/__tests__/implementation/StoreFeature.test.js +0 -31
- package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
- package/build/__tests__/implementation/TestReporter.test.js +0 -35
- package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
- package/build/__tests__/implementation/TestRunner.test.js +0 -102
- package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
- package/build/__tests__/implementation/ValueTypeMapping.test.js +0 -31
- package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
- package/build/__tests__/implementation/Widgets.test.js +0 -42
- package/build/__tests__/implementation/Widgets.test.js.map +1 -1
- package/build/__tests__/support/onTestFileResult.js +0 -2
- package/build/__tests__/support/onTestFileResult.js.map +1 -1
- package/build/__tests__/support/scripts/first.script.js +0 -7
- package/build/__tests__/support/scripts/first.script.js.map +1 -1
- package/build/__tests__/support/scripts/second.script.js.map +1 -1
- package/build/__tests__/support/scripts/third.test.script.js.map +1 -1
- package/build/addons/filePrompt.addon.js +1 -3
- package/build/addons/filePrompt.addon.js.map +1 -1
- package/build/cli.js +14 -165
- package/build/cli.js.map +1 -1
- package/build/components/AbstractComponent.js +0 -10
- package/build/components/AbstractComponent.js.map +1 -1
- package/build/components/FormComponent.js +36 -113
- package/build/components/FormComponent.js.map +1 -1
- package/build/components/QuizComponent.js +45 -88
- package/build/components/QuizComponent.js.map +1 -1
- package/build/constants.js.map +1 -1
- package/build/errors/SpruceError.js +2 -86
- package/build/errors/SpruceError.js.map +1 -1
- package/build/errors/actionCancelled.builder.js +0 -3
- package/build/errors/actionCancelled.builder.js.map +1 -1
- package/build/errors/bootError.builder.js +0 -3
- package/build/errors/bootError.builder.js.map +1 -1
- package/build/errors/buildFailed.builder.js +0 -3
- package/build/errors/buildFailed.builder.js.map +1 -1
- package/build/errors/cacheNotEnabled.builder.js +0 -3
- package/build/errors/cacheNotEnabled.builder.js.map +1 -1
- package/build/errors/commandAborted.builder.js +0 -3
- package/build/errors/commandAborted.builder.js.map +1 -1
- package/build/errors/commandBlocked.builder.js +0 -3
- package/build/errors/commandBlocked.builder.js.map +1 -1
- package/build/errors/commandNotImplemented.builder.js +0 -3
- package/build/errors/commandNotImplemented.builder.js.map +1 -1
- package/build/errors/createAutoloaderFailed.builder.js +0 -3
- package/build/errors/createAutoloaderFailed.builder.js.map +1 -1
- package/build/errors/dependencyExists.builder.js +0 -3
- package/build/errors/dependencyExists.builder.js.map +1 -1
- package/build/errors/deployFailed.builder.js +0 -3
- package/build/errors/deployFailed.builder.js.map +1 -1
- package/build/errors/directoryEmpty.builder.js +0 -3
- package/build/errors/directoryEmpty.builder.js.map +1 -1
- package/build/errors/directoryNotSkill.builder.js +0 -3
- package/build/errors/directoryNotSkill.builder.js.map +1 -1
- package/build/errors/dockerNotStarted.builder.js +0 -3
- package/build/errors/dockerNotStarted.builder.js.map +1 -1
- package/build/errors/executingCommandFailed.builder.js +0 -3
- package/build/errors/executingCommandFailed.builder.js.map +1 -1
- package/build/errors/failedToImport.builder.js +0 -2
- package/build/errors/failedToImport.builder.js.map +1 -1
- package/build/errors/featureNotInstalled.builder.js +0 -3
- package/build/errors/featureNotInstalled.builder.js.map +1 -1
- package/build/errors/fileExists.builder.js +0 -2
- package/build/errors/fileExists.builder.js.map +1 -1
- package/build/errors/generic.builder.js +0 -2
- package/build/errors/generic.builder.js.map +1 -1
- package/build/errors/invalidCommand.builder.js +0 -2
- package/build/errors/invalidCommand.builder.js.map +1 -1
- package/build/errors/invalidEventContract.builder.js +0 -3
- package/build/errors/invalidEventContract.builder.js.map +1 -1
- package/build/errors/invalidFeatureCode.builder.js +0 -3
- package/build/errors/invalidFeatureCode.builder.js.map +1 -1
- package/build/errors/invalidTestDirectory.builder.js +0 -3
- package/build/errors/invalidTestDirectory.builder.js.map +1 -1
- package/build/errors/lintFailed.builder.js +0 -2
- package/build/errors/lintFailed.builder.js.map +1 -1
- package/build/errors/mercuryResponseError.builder.js +0 -3
- package/build/errors/mercuryResponseError.builder.js.map +1 -1
- package/build/errors/missingDependencies.builder.js +0 -3
- package/build/errors/missingDependencies.builder.js.map +1 -1
- package/build/errors/noOrganizationsFound.builder.js +0 -3
- package/build/errors/noOrganizationsFound.builder.js.map +1 -1
- package/build/errors/noSkillsRegistered.builder.js +0 -3
- package/build/errors/noSkillsRegistered.builder.js.map +1 -1
- package/build/errors/notImplemented.builder.js +0 -2
- package/build/errors/notImplemented.builder.js.map +1 -1
- package/build/errors/notLoggedIn.builder.js +0 -3
- package/build/errors/notLoggedIn.builder.js.map +1 -1
- package/build/errors/schemaExists.builder.js +0 -3
- package/build/errors/schemaExists.builder.js.map +1 -1
- package/build/errors/schemaFailedToImport.builder.js +0 -3
- package/build/errors/schemaFailedToImport.builder.js.map +1 -1
- package/build/errors/schemaTemplateItemBuildingFailed.builder.js +0 -3
- package/build/errors/schemaTemplateItemBuildingFailed.builder.js.map +1 -1
- package/build/errors/skillNotFound.builder.js +0 -3
- package/build/errors/skillNotFound.builder.js.map +1 -1
- package/build/errors/skillNotRegistered.builder.js +0 -3
- package/build/errors/skillNotRegistered.builder.js.map +1 -1
- package/build/errors/skillViewExists.builder.js +0 -3
- package/build/errors/skillViewExists.builder.js.map +1 -1
- package/build/errors/storeExists.builder.js +0 -3
- package/build/errors/storeExists.builder.js.map +1 -1
- package/build/errors/testFailed.builder.js +0 -3
- package/build/errors/testFailed.builder.js.map +1 -1
- package/build/errors/themeExists.builder.js +0 -3
- package/build/errors/themeExists.builder.js.map +1 -1
- package/build/errors/transportAlreadyExists.builder.js +0 -3
- package/build/errors/transportAlreadyExists.builder.js.map +1 -1
- package/build/errors/vscodeNotInstalled.builder.js +0 -3
- package/build/errors/vscodeNotInstalled.builder.js.map +1 -1
- package/build/features/AbstractAction.js +0 -36
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/AbstractFeature.js +0 -40
- package/build/features/AbstractFeature.js.map +1 -1
- package/build/features/ActionExecuter.js +0 -85
- package/build/features/ActionExecuter.js.map +1 -1
- package/build/features/ActionFactory.js +9 -30
- package/build/features/ActionFactory.js.map +1 -1
- package/build/features/ActionQuestionAsker.js +0 -111
- package/build/features/ActionQuestionAsker.js.map +1 -1
- package/build/features/FeatureCommandAttacher.js +16 -64
- package/build/features/FeatureCommandAttacher.js.map +1 -1
- package/build/features/FeatureInstaller.js +5 -157
- package/build/features/FeatureInstaller.js.map +1 -1
- package/build/features/FeatureInstallerFactory.js +5 -37
- package/build/features/FeatureInstallerFactory.js.map +1 -1
- package/build/features/OverrideActionDecorator.js +11 -52
- package/build/features/OverrideActionDecorator.js.map +1 -1
- package/build/features/cache/CacheFeature.js +0 -25
- package/build/features/cache/CacheFeature.js.map +1 -1
- package/build/features/cache/actions/DisableAction.js +0 -34
- package/build/features/cache/actions/DisableAction.js.map +1 -1
- package/build/features/cache/actions/EnableAction.js +0 -35
- package/build/features/cache/actions/EnableAction.js.map +1 -1
- package/build/features/cache/constants.js.map +1 -1
- package/build/features/conversation/ConversationFeature.js +0 -35
- package/build/features/conversation/ConversationFeature.js.map +1 -1
- package/build/features/conversation/actions/CreateAction.js +0 -27
- package/build/features/conversation/actions/CreateAction.js.map +1 -1
- package/build/features/conversation/actions/TestAction.js +2 -48
- package/build/features/conversation/actions/TestAction.js.map +1 -1
- package/build/features/conversation/stores/ConversationStore.js +0 -30
- package/build/features/conversation/stores/ConversationStore.js.map +1 -1
- package/build/features/conversation/writers/ConversationWriter.js +0 -24
- package/build/features/conversation/writers/ConversationWriter.js.map +1 -1
- package/build/features/dependencies/DependencyFeature.js +0 -25
- package/build/features/dependencies/DependencyFeature.js.map +1 -1
- package/build/features/dependencies/actions/AddAction.js +0 -39
- package/build/features/dependencies/actions/AddAction.js.map +1 -1
- package/build/features/dependencies/actions/ManageAction.js +0 -34
- package/build/features/dependencies/actions/ManageAction.js.map +1 -1
- package/build/features/deploy/DeployFeature.js +0 -26
- package/build/features/deploy/DeployFeature.js.map +1 -1
- package/build/features/deploy/actions/HerokuAction.js +0 -139
- package/build/features/deploy/actions/HerokuAction.js.map +1 -1
- package/build/features/deploy/writers/DeployWriter.js +0 -16
- package/build/features/deploy/writers/DeployWriter.js.map +1 -1
- package/build/features/error/ErrorFeature.js +0 -53
- package/build/features/error/ErrorFeature.js.map +1 -1
- package/build/features/error/ParentTestFinder.js +0 -17
- package/build/features/error/ParentTestFinder.js.map +1 -1
- package/build/features/error/actions/CreateAction.js +0 -33
- package/build/features/error/actions/CreateAction.js.map +1 -1
- package/build/features/error/actions/SyncAction.js +0 -51
- package/build/features/error/actions/SyncAction.js.map +1 -1
- package/build/features/error/writers/ErrorWriter.js +0 -72
- package/build/features/error/writers/ErrorWriter.js.map +1 -1
- package/build/features/event/EventFeature.js +0 -80
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/actions/CreateAction.js +0 -43
- package/build/features/event/actions/CreateAction.js.map +1 -1
- package/build/features/event/actions/ListenAction.js +1 -101
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/actions/SetRemoteAction.js +0 -27
- package/build/features/event/actions/SetRemoteAction.js.map +1 -1
- package/build/features/event/actions/SyncAction.js +0 -31
- package/build/features/event/actions/SyncAction.js.map +1 -1
- package/build/features/event/actions/SyncListenersAction.js +0 -30
- package/build/features/event/actions/SyncListenersAction.js.map +1 -1
- package/build/features/event/builders/EventContractBuilder.js +0 -52
- package/build/features/event/builders/EventContractBuilder.js.map +1 -1
- package/build/features/event/builders/ListenerTemplateItemBuilder.js +1 -19
- package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -1
- package/build/features/event/services/EventSettingsService.js +0 -7
- package/build/features/event/services/EventSettingsService.js.map +1 -1
- package/build/features/event/services/RemoteService.js +0 -2
- package/build/features/event/services/RemoteService.js.map +1 -1
- package/build/features/event/stores/EventStore.js +5 -114
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/event/stores/ListenerStore.js +0 -36
- package/build/features/event/stores/ListenerStore.js.map +1 -1
- package/build/features/event/writers/EventWriter.js +2 -69
- package/build/features/event/writers/EventWriter.js.map +1 -1
- package/build/features/eventContract/EventContractFeature.js +0 -23
- package/build/features/eventContract/EventContractFeature.js.map +1 -1
- package/build/features/eventContract/actions/PullAction.js +0 -31
- package/build/features/eventContract/actions/PullAction.js.map +1 -1
- package/build/features/feature.utilities.js +0 -12
- package/build/features/feature.utilities.js.map +1 -1
- package/build/features/features.types.js +0 -4
- package/build/features/features.types.js.map +1 -1
- package/build/features/log/LogFeature.js +0 -20
- package/build/features/log/LogFeature.js.map +1 -1
- package/build/features/log/actions/CreateTransportAction.js +0 -29
- package/build/features/log/actions/CreateTransportAction.js.map +1 -1
- package/build/features/log/writers/LogWriter.js +0 -25
- package/build/features/log/writers/LogWriter.js.map +1 -1
- package/build/features/node/NodeFeature.js +2 -57
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/node/actions/CreateAction.js +0 -26
- package/build/features/node/actions/CreateAction.js.map +1 -1
- package/build/features/node/actions/UpdateDependenciesAction.js +4 -66
- package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
- package/build/features/node/actions/UpgradeAction.js +0 -51
- package/build/features/node/actions/UpgradeAction.js.map +1 -1
- package/build/features/node/writers/NodeWriter.js +0 -31
- package/build/features/node/writers/NodeWriter.js.map +1 -1
- package/build/features/onboard/OnboardFeature.js +1 -52
- package/build/features/onboard/OnboardFeature.js.map +1 -1
- package/build/features/onboard/ScriptLoader.js +0 -21
- package/build/features/onboard/ScriptLoader.js.map +1 -1
- package/build/features/onboard/ScriptPlayer.js +0 -47
- package/build/features/onboard/ScriptPlayer.js.map +1 -1
- package/build/features/onboard/actions/OnboardAction.js +0 -32
- package/build/features/onboard/actions/OnboardAction.js.map +1 -1
- package/build/features/onboard/scripts/onboarding.first.script.js +1 -25
- package/build/features/onboard/scripts/onboarding.first.script.js.map +1 -1
- package/build/features/onboard/scripts/onboarding.immersive.script.js +0 -12
- package/build/features/onboard/scripts/onboarding.immersive.script.js.map +1 -1
- package/build/features/onboard/scripts/onboarding.returning.script.js +0 -13
- package/build/features/onboard/scripts/onboarding.returning.script.js.map +1 -1
- package/build/features/onboard/scripts/onboarding.short.script.js +0 -21
- package/build/features/onboard/scripts/onboarding.short.script.js.map +1 -1
- package/build/features/onboard/scripts/todo/todo.create.skill.script.js +0 -7
- package/build/features/onboard/scripts/todo/todo.create.skill.script.js.map +1 -1
- package/build/features/onboard/scripts/todo/todo.test.script.js +0 -6
- package/build/features/onboard/scripts/todo/todo.test.script.js.map +1 -1
- package/build/features/onboard/scripts/wrongCommand.script.js +0 -12
- package/build/features/onboard/scripts/wrongCommand.script.js.map +1 -1
- package/build/features/onboard/stores/OnboardingStore.js +0 -25
- package/build/features/onboard/stores/OnboardingStore.js.map +1 -1
- package/build/features/organization/OrganizationFeature.js +0 -20
- package/build/features/organization/OrganizationFeature.js.map +1 -1
- package/build/features/organization/actions/CreateAction.js +0 -27
- package/build/features/organization/actions/CreateAction.js.map +1 -1
- package/build/features/organization/actions/InstallAction.js +0 -47
- package/build/features/organization/actions/InstallAction.js.map +1 -1
- package/build/features/organization/stores/OrganizationStore.js +0 -52
- package/build/features/organization/stores/OrganizationStore.js.map +1 -1
- package/build/features/permission/PermissionFeature.js +0 -20
- package/build/features/permission/PermissionFeature.js.map +1 -1
- package/build/features/permission/actions/CreateAction.js +0 -29
- package/build/features/permission/actions/CreateAction.js.map +1 -1
- package/build/features/person/PersonFeature.js +0 -20
- package/build/features/person/PersonFeature.js.map +1 -1
- package/build/features/person/actions/LoginAction.js +0 -41
- package/build/features/person/actions/LoginAction.js.map +1 -1
- package/build/features/person/actions/LogoutAction.js +0 -30
- package/build/features/person/actions/LogoutAction.js.map +1 -1
- package/build/features/person/actions/WhoamiAction.js +0 -32
- package/build/features/person/actions/WhoamiAction.js.map +1 -1
- package/build/features/polish/PolishFeature.js +0 -20
- package/build/features/polish/PolishFeature.js.map +1 -1
- package/build/features/polish/actions/SetupAction.js +0 -31
- package/build/features/polish/actions/SetupAction.js.map +1 -1
- package/build/features/polish/writers/PolishWriter.js +0 -22
- package/build/features/polish/writers/PolishWriter.js.map +1 -1
- package/build/features/sandbox/SandboxFeature.js +0 -28
- package/build/features/sandbox/SandboxFeature.js.map +1 -1
- package/build/features/sandbox/actions/SetupAction.js +0 -38
- package/build/features/sandbox/actions/SetupAction.js.map +1 -1
- package/build/features/sandbox/writers/SandboxWriter.js +0 -22
- package/build/features/sandbox/writers/SandboxWriter.js.map +1 -1
- package/build/features/schema/SchemaFeature.js +0 -51
- package/build/features/schema/SchemaFeature.js.map +1 -1
- package/build/features/schema/ValueTypeBuilder.js +0 -20
- package/build/features/schema/ValueTypeBuilder.js.map +1 -1
- package/build/features/schema/actions/CreateAction.js +0 -44
- package/build/features/schema/actions/CreateAction.js.map +1 -1
- package/build/features/schema/actions/SyncAction.js +0 -91
- package/build/features/schema/actions/SyncAction.js.map +1 -1
- package/build/features/schema/actions/SyncFieldsAction.js +0 -34
- package/build/features/schema/actions/SyncFieldsAction.js.map +1 -1
- package/build/features/schema/services/SchemaService.js +0 -25
- package/build/features/schema/services/SchemaService.js.map +1 -1
- package/build/features/schema/stores/SchemaStore.js +0 -102
- package/build/features/schema/stores/SchemaStore.js.map +1 -1
- package/build/features/schema/utilities/schema.utility.js +0 -4
- package/build/features/schema/utilities/schema.utility.js.map +1 -1
- package/build/features/schema/utilities/schemaDisk.utility.js +5 -25
- package/build/features/schema/utilities/schemaDisk.utility.js.map +1 -1
- package/build/features/schema/utilities/schemaGenerator.utility.js +3 -22
- package/build/features/schema/utilities/schemaGenerator.utility.js.map +1 -1
- package/build/features/schema/writers/SchemaWriter.js +0 -95
- package/build/features/schema/writers/SchemaWriter.js.map +1 -1
- package/build/features/skill/SkillFeature.js +2 -65
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/skill/actions/BootAction.js +0 -46
- package/build/features/skill/actions/BootAction.js.map +1 -1
- package/build/features/skill/actions/CreateAction.js +0 -29
- package/build/features/skill/actions/CreateAction.js.map +1 -1
- package/build/features/skill/actions/DashboardAction.js +0 -26
- package/build/features/skill/actions/DashboardAction.js.map +1 -1
- package/build/features/skill/actions/LoginAction.js +0 -55
- package/build/features/skill/actions/LoginAction.js.map +1 -1
- package/build/features/skill/actions/RebuildAction.js +0 -34
- package/build/features/skill/actions/RebuildAction.js.map +1 -1
- package/build/features/skill/actions/RegisterAction.js +0 -32
- package/build/features/skill/actions/RegisterAction.js.map +1 -1
- package/build/features/skill/stores/SkillStore.js +0 -87
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/skill/updaters/Updater.js +0 -25
- package/build/features/skill/updaters/Updater.js.map +1 -1
- package/build/features/skill/writers/SkillWriter.js +0 -26
- package/build/features/skill/writers/SkillWriter.js.map +1 -1
- package/build/features/store/StoreFeature.js +0 -37
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/features/store/actions/CreateAction.js +0 -35
- package/build/features/store/actions/CreateAction.js.map +1 -1
- package/build/features/store/actions/SyncAction.js +0 -34
- package/build/features/store/actions/SyncAction.js.map +1 -1
- package/build/features/store/stores/StoreStore.js +0 -37
- package/build/features/store/stores/StoreStore.js.map +1 -1
- package/build/features/store/templateItemBuilders/StoreTemplateItemBuilder.js +1 -18
- package/build/features/store/templateItemBuilders/StoreTemplateItemBuilder.js.map +1 -1
- package/build/features/store/writers/StoreWriter.js +0 -43
- package/build/features/store/writers/StoreWriter.js.map +1 -1
- package/build/features/test/TestFeature.js +2 -72
- package/build/features/test/TestFeature.js.map +1 -1
- package/build/features/test/TestLogItemGenerator.js +0 -40
- package/build/features/test/TestLogItemGenerator.js.map +1 -1
- package/build/features/test/TestReporter.js +11 -123
- package/build/features/test/TestReporter.js.map +1 -1
- package/build/features/test/TestRunner.js +2 -58
- package/build/features/test/TestRunner.js.map +1 -1
- package/build/features/test/actions/CreateAction.js +2 -66
- package/build/features/test/actions/CreateAction.js.map +1 -1
- package/build/features/test/actions/SetupAction.js +0 -33
- package/build/features/test/actions/SetupAction.js.map +1 -1
- package/build/features/test/actions/TestAction.js +12 -131
- package/build/features/test/actions/TestAction.js.map +1 -1
- package/build/features/test/writers/TestWriter.js +0 -22
- package/build/features/test/writers/TestWriter.js.map +1 -1
- package/build/features/universalDevDependencies.js.map +1 -1
- package/build/features/universalFileDescriptions.js.map +1 -1
- package/build/features/universalScripts.js.map +1 -1
- package/build/features/validateAndNormalize.utility.js +0 -7
- package/build/features/validateAndNormalize.utility.js.map +1 -1
- package/build/features/view/ViewFeature.js +0 -32
- package/build/features/view/ViewFeature.js.map +1 -1
- package/build/features/view/actions/CreateAction.js +0 -48
- package/build/features/view/actions/CreateAction.js.map +1 -1
- package/build/features/view/actions/CreateThemeAction.js +0 -36
- package/build/features/view/actions/CreateThemeAction.js.map +1 -1
- package/build/features/view/actions/SyncAction.js +3 -48
- package/build/features/view/actions/SyncAction.js.map +1 -1
- package/build/features/view/actions/WatchAction.js +4 -64
- package/build/features/view/actions/WatchAction.js.map +1 -1
- package/build/features/view/stores/ViewStore.js +0 -32
- package/build/features/view/stores/ViewStore.js.map +1 -1
- package/build/features/view/writers/ViewWriter.js +3 -43
- package/build/features/view/writers/ViewWriter.js.map +1 -1
- package/build/features/vscode/VsCodeFeature.js +0 -26
- package/build/features/vscode/VsCodeFeature.js.map +1 -1
- package/build/features/vscode/actions/SetupAction.js +0 -83
- package/build/features/vscode/actions/SetupAction.js.map +1 -1
- package/build/features/vscode/services/VsCodeService.js +3 -43
- package/build/features/vscode/services/VsCodeService.js.map +1 -1
- package/build/features/vscode/writers/VsCodeWriter.js +1 -21
- package/build/features/vscode/writers/VsCodeWriter.js.map +1 -1
- package/build/features/watch/WatchFeature.js +1 -45
- package/build/features/watch/WatchFeature.js.map +1 -1
- package/build/index.js +0 -5
- package/build/index.js.map +1 -1
- package/build/interfaces/SpyInterface.js +4 -81
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/interfaces/TerminalInterface.js +33 -156
- package/build/interfaces/TerminalInterface.js.map +1 -1
- package/build/schemas/v2020_07_22/bootSkillOptions.builder.js +0 -3
- package/build/schemas/v2020_07_22/bootSkillOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createConversationTopicOptions.builder.js +0 -8
- package/build/schemas/v2020_07_22/createConversationTopicOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createErrorOptions.builder.js +0 -9
- package/build/schemas/v2020_07_22/createErrorOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createOrganizationOptions.builder.js +0 -8
- package/build/schemas/v2020_07_22/createOrganizationOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createSchemaOptions.builder.js +0 -9
- package/build/schemas/v2020_07_22/createSchemaOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/createTestOptions.builder.js +0 -5
- package/build/schemas/v2020_07_22/createTestOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/installSkillAtOrganizationOptions.builder.js +0 -3
- package/build/schemas/v2020_07_22/installSkillAtOrganizationOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/listenEventOptions.builder.js +0 -8
- package/build/schemas/v2020_07_22/listenEventOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/namedTemplateItem.builder.js +0 -3
- package/build/schemas/v2020_07_22/namedTemplateItem.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/nodeFeatureOptions.builder.js +0 -3
- package/build/schemas/v2020_07_22/nodeFeatureOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/onboardOptions.builder.js +0 -3
- package/build/schemas/v2020_07_22/onboardOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/onboarding.builder.js +0 -3
- package/build/schemas/v2020_07_22/onboarding.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/personWithToken.builder.js +0 -5
- package/build/schemas/v2020_07_22/personWithToken.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.builder.js +0 -3
- package/build/schemas/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/setupTestsOptions.builder.js +0 -3
- package/build/schemas/v2020_07_22/setupTestsOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/setupVscodeOptions.builder.js +0 -3
- package/build/schemas/v2020_07_22/setupVscodeOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/skillFeature.builder.js +0 -3
- package/build/schemas/v2020_07_22/skillFeature.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/syncErrorOptions.builder.js +0 -8
- package/build/schemas/v2020_07_22/syncErrorOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/syncEventOptions.builder.js +0 -5
- package/build/schemas/v2020_07_22/syncEventOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/syncSchemaFieldsOptions.builder.js +0 -3
- package/build/schemas/v2020_07_22/syncSchemaFieldsOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/syncSchemasOptions.builder.js +0 -9
- package/build/schemas/v2020_07_22/syncSchemasOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/testOptions.builder.js +0 -3
- package/build/schemas/v2020_07_22/testOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/upgradeSkillOptions.builder.js +0 -3
- package/build/schemas/v2020_07_22/upgradeSkillOptions.builder.js.map +1 -1
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js +0 -4
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
- package/build/services/BuildService.js +0 -15
- package/build/services/BuildService.js.map +1 -1
- package/build/services/CommandService.js +0 -51
- package/build/services/CommandService.js.map +1 -1
- package/build/services/DependencyService.js +0 -11
- package/build/services/DependencyService.js.map +1 -1
- package/build/services/GameService.js +3 -32
- package/build/services/GameService.js.map +1 -1
- package/build/services/ImportService.js +4 -104
- package/build/services/ImportService.js.map +1 -1
- package/build/services/LintService.js +0 -33
- package/build/services/LintService.js.map +1 -1
- package/build/services/PkgService.js +0 -47
- package/build/services/PkgService.js.map +1 -1
- package/build/services/ServiceFactory.js +0 -35
- package/build/services/ServiceFactory.js.map +1 -1
- package/build/services/TypeCheckerService.js +0 -10
- package/build/services/TypeCheckerService.js.map +1 -1
- package/build/stores/AbstractLocalStore.js +0 -19
- package/build/stores/AbstractLocalStore.js.map +1 -1
- package/build/stores/AbstractStore.js +0 -14
- package/build/stores/AbstractStore.js.map +1 -1
- package/build/stores/StoreFactory.js +4 -24
- package/build/stores/StoreFactory.js.map +1 -1
- package/build/templateItemBuilders/EventTemplateItemBuilder.js +14 -64
- package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
- package/build/templateItemBuilders/FieldTemplateItemBuilder.js +1 -16
- package/build/templateItemBuilders/FieldTemplateItemBuilder.js.map +1 -1
- package/build/templateItemBuilders/SchemaTemplateItemBuilder.js +11 -68
- package/build/templateItemBuilders/SchemaTemplateItemBuilder.js.map +1 -1
- package/build/tests/AbstractCliTest.js +0 -173
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/AbstractErrorTest.js +0 -20
- package/build/tests/AbstractErrorTest.js.map +1 -1
- package/build/tests/AbstractEventTest.js +13 -55
- package/build/tests/AbstractEventTest.js.map +1 -1
- package/build/tests/AbstractSchemaTest.js +12 -71
- package/build/tests/AbstractSchemaTest.js.map +1 -1
- package/build/tests/AbstractSkillTest.js +1 -34
- package/build/tests/AbstractSkillTest.js.map +1 -1
- package/build/tests/AbstractTestTest.js +3 -26
- package/build/tests/AbstractTestTest.js.map +1 -1
- package/build/tests/CommandFaker.js +0 -8
- package/build/tests/CommandFaker.js.map +1 -1
- package/build/tests/JestJsonParser.js +2 -47
- package/build/tests/JestJsonParser.js.map +1 -1
- package/build/tests/MockProgramFactory.js +0 -17
- package/build/tests/MockProgramFactory.js.map +1 -1
- package/build/tests/buildTestCache.js +0 -82
- package/build/tests/buildTestCache.js.map +1 -1
- package/build/tests/cleanTestCache.js +0 -11
- package/build/tests/cleanTestCache.js.map +1 -1
- package/build/tests/cleanTestData.js +0 -38
- package/build/tests/cleanTestData.js.map +1 -1
- package/build/tests/constants.js +0 -3
- package/build/tests/constants.js.map +1 -1
- package/build/tests/fixtures/FeatureFixture.js +7 -82
- package/build/tests/fixtures/FeatureFixture.js.map +1 -1
- package/build/tests/fixtures/MercuryFixture.js +0 -17
- package/build/tests/fixtures/MercuryFixture.js.map +1 -1
- package/build/tests/fixtures/OrganizationFixture.js +0 -39
- package/build/tests/fixtures/OrganizationFixture.js.map +1 -1
- package/build/tests/fixtures/PersonFixture.js +0 -37
- package/build/tests/fixtures/PersonFixture.js.map +1 -1
- package/build/tests/fixtures/SkillFixture.js +0 -55
- package/build/tests/fixtures/SkillFixture.js.map +1 -1
- package/build/tests/fixtures/ViewFixture.js +0 -14
- package/build/tests/fixtures/ViewFixture.js.map +1 -1
- package/build/tests/utilities/test.utility.js +0 -25
- package/build/tests/utilities/test.utility.js.map +1 -1
- package/build/tests/utilities/uiAssert.utility.js +0 -15
- package/build/tests/utilities/uiAssert.utility.js.map +1 -1
- package/build/types/cli.types.js +0 -1
- package/build/types/cli.types.js.map +1 -1
- package/build/types/graphicsInterface.types.js +0 -1
- package/build/types/graphicsInterface.types.js.map +1 -1
- package/build/updaters/ScriptUpdater.js +0 -28
- package/build/updaters/ScriptUpdater.js.map +1 -1
- package/build/utilities/action.utility.js +0 -11
- package/build/utilities/action.utility.js.map +1 -1
- package/build/utilities/apiClient.utility.js +2 -11
- package/build/utilities/apiClient.utility.js.map +1 -1
- package/build/utilities/argParser.utility.js +1 -11
- package/build/utilities/argParser.utility.js.map +1 -1
- package/build/utilities/commander.utility.js +0 -12
- package/build/utilities/commander.utility.js.map +1 -1
- package/build/utilities/duration.utility.js +3 -8
- package/build/utilities/duration.utility.js.map +1 -1
- package/build/utilities/eventContractCleaner.utility.js +1 -22
- package/build/utilities/eventContractCleaner.utility.js.map +1 -1
- package/build/utilities/form.utility.js +1 -27
- package/build/utilities/form.utility.js.map +1 -1
- package/build/utilities/introspection.utility.js +11 -40
- package/build/utilities/introspection.utility.js.map +1 -1
- package/build/utilities/isCi.js +0 -3
- package/build/utilities/isCi.js.map +1 -1
- package/build/utilities/tsConfig.utility.js +4 -16
- package/build/utilities/tsConfig.utility.js.map +1 -1
- package/build/utilities/ui.utility.js +2 -4
- package/build/utilities/ui.utility.js.map +1 -1
- package/build/widgets/Theme.js +0 -3
- package/build/widgets/Theme.js.map +1 -1
- package/build/widgets/WidgetFactory.js +4 -14
- package/build/widgets/WidgetFactory.js.map +1 -1
- package/build/widgets/keySelectChoices.js.map +1 -1
- package/build/widgets/terminalKit/TKButtonWidget.js +2 -32
- package/build/widgets/terminalKit/TKButtonWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkBaseWidget.js +1 -55
- package/build/widgets/terminalKit/TkBaseWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkInputWidget.js +1 -44
- package/build/widgets/terminalKit/TkInputWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkLayoutCellWidget.js +0 -19
- package/build/widgets/terminalKit/TkLayoutCellWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkLayoutWidget.js +3 -47
- package/build/widgets/terminalKit/TkLayoutWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkMenuBarWidget.js +3 -48
- package/build/widgets/terminalKit/TkMenuBarWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkPopupWidget.js +1 -27
- package/build/widgets/terminalKit/TkPopupWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkProgressBarWidget.js +5 -30
- package/build/widgets/terminalKit/TkProgressBarWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkTextWidget.js +6 -48
- package/build/widgets/terminalKit/TkTextWidget.js.map +1 -1
- package/build/widgets/terminalKit/TkWindowWidget.js +4 -35
- package/build/widgets/terminalKit/TkWindowWidget.js.map +1 -1
- package/build/widgets/terminalKit/termKit.utility.js +2 -40
- package/build/widgets/terminalKit/termKit.utility.js.map +1 -1
- package/build/widgets/types/button.types.js.map +1 -1
- package/build/widgets/types/factory.types.js +0 -16
- package/build/widgets/types/factory.types.js.map +1 -1
- package/build/widgets/types/input.types.js +0 -2
- package/build/widgets/types/input.types.js.map +1 -1
- package/build/widgets/types/menuBar.types.js +1 -2
- package/build/widgets/types/menuBar.types.js.map +1 -1
- package/build/widgets/types/popup.types.js.map +1 -1
- package/build/widgets/types/text.types.js +1 -2
- package/build/widgets/types/text.types.js.map +1 -1
- package/build/widgets/types/window.types.js +0 -2
- package/build/widgets/types/window.types.js.map +1 -1
- package/build/widgets/widget.utilities.js +6 -10
- package/build/widgets/widget.utilities.js.map +1 -1
- package/build/writers/AbstractWriter.js +13 -94
- package/build/writers/AbstractWriter.js.map +1 -1
- package/build/writers/WriterFactory.js +3 -27
- package/build/writers/WriterFactory.js.map +1 -1
- package/docs/images/doors.jpg +0 -0
- package/node_modules/@typescript-eslint/parser/package.json +5 -5
- package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
- package/node_modules/@typescript-eslint/types/package.json +2 -2
- package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
- package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
- package/package.json +22 -22
- package/src/features/onboard/OnboardFeature.ts +1 -1
- package/src/features/onboard/scripts/onboarding.first.script.ts +8 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestReporter.js","names":["TestReporter","options","totalTestFiles","customErrors","cwd","filterPattern","handleRestart","handleStartStop","handleQuit","handleRerunTestFile","handleOpenTestFile","handleFilterChange","handleFilterPatternChange","status","handleToggleDebug","handletoggleStandardWatch","isDebugging","watchMode","handleToggleSmartWatch","errorLogItemGenerator","TestLogItemGenerator","widgetFactory","WidgetFactory","pattern","filterInput","setValue","clearFilterPatternButton","setText","buildPatternButtonText","menu","setTextForItem","durationSec","clearInterval","countDownTimeInterval","undefined","remaining","renderCountdownTime","time","setWatchLabel","setInterval","stopCountdownTimer","setWatchMode","label","isWatching","started","window","Widget","hideCursor","getFrame","width","minWidth","Error","on","handleGlobalKeypress","bind","destroy","handleWindowResize","dropInTopLayout","dropInProgressBar","dropInMenu","dropInBottomLayout","dropInStatusBar","dropInTestLog","dropInFilterControls","updateOrientation","setIsDebugging","setStatus","updateInterval","handleUpdateInterval","frame","height","orientation","parent","left","top","shouldLockWidthWithParent","items","value","handleMenuSelect","updateMenuLabels","closeSelectTestPopup","bottomLayout","updateLayout","setStatusLabel","refreshResults","restartLabel","payload","lastResults","updateLogs","getFocusedWidget","key","process","exit","getChildById","testLog","isScrollEnabled","shouldLockHeightWithParent","handleClickTestLog","testFile","getFileForLine","row","column","dropInSelectTestPopup","selectTestPopup","Math","max","text","open","rerun","cancel","openTestFile","line","getScrollY","testFiles","file","path","c","tests","length","topLayout","bar","progress","buttonWidth","shouldLockRightWithParent","rows","columns","id","statusBar","shouldLockBottomWithParent","backgroundColor","foregroundColor","results","updateProgressBar","percentPassing","generatePercentPassing","percentComplete","generatePercentComplete","setTitle","resultsToLogContents","logContent","errorContent","errorLog","destroyErrorLog","dropInErrorLog","cleanedLog","replace","RegExp","forEach","generateLogItemForFile","generateErrorLogItemForFile","map","err","chalk","red","join","orientationWhenErrorLogWasShown","getRows","addRow","setRowHeight","addColumn","setColumnWidth","rowIdx","columnIdx","cell","shouldAutoScrollWhenAppendingContent","padding","removeColumn","removeRow","totalTestFilesComplete","testsRemaining","generateProgressStats","percent","totalTests","totalPassedTests","totalTime","setLabel","durationUtil","msToFriendly","setProgress","test","duration","floor","isNaN","round","totalPassed","getTotalTestFilesRun","totalSkipped","totalTodo","table","computeCells","draw","resetStartTimes","message","push"],"sources":["../../../src/features/test/TestReporter.ts"],"sourcesContent":["import chalk from 'chalk'\nimport durationUtil from '../../utilities/duration.utility'\nimport { ButtonWidget } from '../../widgets/types/button.types'\nimport { InputWidget } from '../../widgets/types/input.types'\nimport { LayoutWidget } from '../../widgets/types/layout.types'\nimport { MenuBarWidget } from '../../widgets/types/menuBar.types'\nimport { PopupWidget } from '../../widgets/types/popup.types'\nimport { ProgressBarWidget } from '../../widgets/types/progressBar.types'\nimport { TextWidget } from '../../widgets/types/text.types'\nimport { WindowWidget } from '../../widgets/types/window.types'\nimport WidgetFactory from '../../widgets/WidgetFactory'\nimport { SpruceTestResults, TestRunnerStatus } from './test.types'\nimport TestLogItemGenerator from './TestLogItemGenerator'\n\ninterface TestReporterOptions {\n\thandleStartStop?: () => void\n\thandleRestart?: () => void\n\thandleQuit?: () => void\n\tonRequestOpenTestFile?: () => void\n\thandleRerunTestFile?: (fileName: string) => void\n\thandleOpenTestFile?: (fileName: string) => void\n\thandleFilterPatternChange?: (pattern?: string) => void\n\thandleToggleDebug?: () => void\n\thandletoggleStandardWatch?: () => void\n\thandleToggleSmartWatch?: () => void\n\tfilterPattern?: string\n\tisDebugging?: boolean\n\twatchMode?: WatchMode\n\tstatus?: TestRunnerStatus\n\tcwd?: string\n}\n\ntype TestReporterResults = SpruceTestResults & {\n\tcustomErrors: string[]\n}\n\nexport type TestReporterOrientation = 'landscape' | 'portrait'\nexport type WatchMode = 'off' | 'standard' | 'smart'\n\nexport default class TestReporter {\n\tprivate started = false\n\tprivate table?: any\n\tprivate bar!: ProgressBarWidget\n\tprivate bottomLayout!: LayoutWidget\n\tprivate testLog!: TextWidget\n\tprivate errorLog?: TextWidget\n\tprivate errorLogItemGenerator: TestLogItemGenerator\n\tprivate lastResults: TestReporterResults = {\n\t\ttotalTestFiles: 0,\n\t\tcustomErrors: [],\n\t}\n\tprivate updateInterval?: any\n\tprivate menu!: MenuBarWidget\n\tprivate statusBar!: TextWidget\n\tprivate window!: WindowWidget\n\tprivate widgetFactory: WidgetFactory\n\tprivate selectTestPopup?: PopupWidget\n\tprivate topLayout!: LayoutWidget\n\tprivate filterInput!: InputWidget\n\tprivate filterPattern?: string\n\tprivate clearFilterPatternButton!: ButtonWidget\n\tprivate isDebugging = false\n\tprivate watchMode: WatchMode = 'off'\n\tprivate status: TestRunnerStatus = 'ready'\n\tprivate countDownTimeInterval?: any\n\tprivate cwd: string | undefined\n\tprivate orientation: TestReporterOrientation = 'landscape'\n\n\tprivate handleStartStop?: () => void\n\tprivate handleRestart?: () => void\n\tprivate handleQuit?: () => void\n\tprivate handleRerunTestFile?: (fileName: string) => void\n\tprivate handleFilterChange?: (pattern?: string) => void\n\tprivate handleOpenTestFile?: (testFile: string) => void\n\tprivate handleToggleDebug?: () => void\n\tprivate handletoggleStandardWatch?: () => void\n\tprivate handleToggleSmartWatch?: () => any\n\tprivate minWidth = 50\n\tprivate orientationWhenErrorLogWasShown: TestReporterOrientation = 'landscape'\n\n\tpublic constructor(options?: TestReporterOptions) {\n\t\tthis.cwd = options?.cwd\n\t\tthis.filterPattern = options?.filterPattern\n\t\tthis.handleRestart = options?.handleRestart\n\t\tthis.handleStartStop = options?.handleStartStop\n\t\tthis.handleQuit = options?.handleQuit\n\t\tthis.handleRerunTestFile = options?.handleRerunTestFile\n\t\tthis.handleOpenTestFile = options?.handleOpenTestFile\n\t\tthis.handleFilterChange = options?.handleFilterPatternChange\n\t\tthis.status = options?.status ?? 'ready'\n\t\tthis.handleToggleDebug = options?.handleToggleDebug\n\t\tthis.handletoggleStandardWatch = options?.handletoggleStandardWatch\n\t\tthis.isDebugging = options?.isDebugging ?? false\n\t\tthis.watchMode = options?.watchMode ?? 'off'\n\t\tthis.handleToggleSmartWatch = options?.handleToggleSmartWatch\n\n\t\tthis.errorLogItemGenerator = new TestLogItemGenerator()\n\t\tthis.widgetFactory = new WidgetFactory()\n\t}\n\n\tpublic setFilterPattern(pattern: string | undefined) {\n\t\tthis.filterPattern = pattern\n\t\tthis.filterInput.setValue(pattern ?? '')\n\t\tthis.clearFilterPatternButton.setText(buildPatternButtonText(pattern))\n\t}\n\n\tpublic setIsDebugging(isDebugging: boolean) {\n\t\tthis.menu.setTextForItem(\n\t\t\t'toggleDebug',\n\t\t\t`Debug ^${isDebugging ? 'k' : 'w'}^#^${isDebugging ? 'g' : 'r'}${\n\t\t\t\tisDebugging ? ' • ' : ' • '\n\t\t\t}^`\n\t\t)\n\t\tthis.isDebugging = isDebugging\n\t}\n\n\tpublic startCountdownTimer(durationSec: number) {\n\t\tclearInterval(this.countDownTimeInterval)\n\t\tthis.countDownTimeInterval = undefined\n\n\t\tlet remaining = durationSec\n\n\t\tfunction renderCountdownTime(time: number) {\n\t\t\treturn `Starting ${time} `\n\t\t}\n\n\t\tthis.setWatchLabel(renderCountdownTime(remaining))\n\n\t\tthis.countDownTimeInterval = setInterval(() => {\n\t\t\tremaining--\n\n\t\t\tif (remaining < 0) {\n\t\t\t\tthis.stopCountdownTimer()\n\t\t\t} else {\n\t\t\t\tthis.setWatchLabel(renderCountdownTime(remaining))\n\t\t\t}\n\t\t}, 1000) as any\n\t}\n\n\tpublic stopCountdownTimer() {\n\t\tclearInterval(this.countDownTimeInterval)\n\t\tthis.countDownTimeInterval = undefined\n\t\tthis.setWatchMode(this.watchMode)\n\t}\n\n\tpublic setWatchMode(watchMode: WatchMode) {\n\t\tthis.watchMode = watchMode\n\t\tif (!this.countDownTimeInterval) {\n\t\t\tlet label = watchMode === 'smart' ? 'Smart Watch' : 'Standard Watch'\n\t\t\tif (watchMode === 'off') {\n\t\t\t\tlabel = 'Not Watching'\n\t\t\t}\n\t\t\tthis.setWatchLabel(label)\n\t\t}\n\t}\n\n\tprivate setWatchLabel(label: string) {\n\t\tconst isWatching = this.watchMode !== 'off'\n\n\t\tthis.menu.setTextForItem(\n\t\t\t'watchDropdown',\n\t\t\t`${label} ^${isWatching ? 'k' : 'w'}^#^${isWatching ? 'g' : 'r'}${\n\t\t\t\tisWatching ? ' • ' : ' • '\n\t\t\t}^`\n\t\t)\n\n\t\tthis.menu.setTextForItem(\n\t\t\t'toggleStandardWatch',\n\t\t\tthis.watchMode === 'standard' ? '√ Standard' : 'Standard'\n\t\t)\n\n\t\tthis.menu.setTextForItem(\n\t\t\t'toggleSmartWatch',\n\t\t\tthis.watchMode === 'smart' ? '√ Smart' : 'Smart'\n\t\t)\n\t}\n\n\tpublic async start() {\n\t\tthis.started = true\n\n\t\tthis.window = this.widgetFactory.Widget('window', {})\n\t\tthis.window.hideCursor()\n\n\t\tconst { width } = this.window.getFrame()\n\t\tif (width < this.minWidth) {\n\t\t\tthrow new Error(\n\t\t\t\t`Your screen must be at least ${this.minWidth} characters wide.`\n\t\t\t)\n\t\t}\n\n\t\tvoid this.window.on('key', this.handleGlobalKeypress.bind(this))\n\t\tvoid this.window.on('kill', this.destroy.bind(this))\n\t\tvoid this.window.on('resize', this.handleWindowResize.bind(this))\n\n\t\tthis.dropInTopLayout()\n\t\tthis.dropInProgressBar()\n\t\tthis.dropInMenu()\n\t\tthis.dropInBottomLayout()\n\t\tthis.dropInStatusBar()\n\t\tthis.dropInTestLog()\n\t\tthis.dropInFilterControls()\n\n\t\tthis.updateOrientation()\n\n\t\tthis.setIsDebugging(this.isDebugging)\n\t\tthis.setWatchMode(this.watchMode)\n\t\tthis.setStatus(this.status)\n\n\t\tthis.updateInterval = setInterval(\n\t\t\tthis.handleUpdateInterval.bind(this),\n\t\t\t1000\n\t\t)\n\t}\n\n\tprivate handleWindowResize() {\n\t\tthis.updateOrientation()\n\t}\n\n\tprivate updateOrientation() {\n\t\tconst frame = this.window.getFrame()\n\n\t\tif (frame.width * 0.5 > frame.height) {\n\t\t\tthis.orientation = 'landscape'\n\t\t} else {\n\t\t\tthis.orientation = 'portrait'\n\t\t}\n\t}\n\n\tprivate dropInMenu() {\n\t\tthis.menu = this.widgetFactory.Widget('menuBar', {\n\t\t\tparent: this.window,\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Restart ',\n\t\t\t\t\tvalue: 'restart',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Debug ',\n\t\t\t\t\tvalue: 'toggleDebug',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Not Watching ',\n\t\t\t\t\tvalue: 'watchDropdown',\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Watch all',\n\t\t\t\t\t\t\tvalue: 'toggleStandardWatch',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Smart watch',\n\t\t\t\t\t\t\tvalue: 'toggleSmartWatch',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Quit',\n\t\t\t\t\tvalue: 'quit',\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tvoid this.menu.on('select', this.handleMenuSelect.bind(this))\n\t}\n\n\tpublic setStatus(status: TestRunnerStatus) {\n\t\tthis.status = status\n\n\t\tthis.updateMenuLabels()\n\t\tthis.closeSelectTestPopup()\n\t\tthis.bottomLayout.updateLayout()\n\n\t\tif (status === 'ready') {\n\t\t\tthis.setStatusLabel('Starting...')\n\t\t} else if (this.status === 'stopped') {\n\t\t\tthis.refreshResults()\n\t\t\tthis.setStatusLabel('')\n\t\t} else if (this.status === 'running') {\n\t\t\tthis.setStatusLabel('Running tests...')\n\t\t}\n\t}\n\n\tprivate updateMenuLabels() {\n\t\tlet restartLabel = 'Start ^#^r › ^'\n\t\tswitch (this.status) {\n\t\t\tcase 'running':\n\t\t\t\trestartLabel = 'Stop ^k^#^g › ^'\n\t\t\t\tbreak\n\t\t\tcase 'stopped':\n\t\t\t\trestartLabel = `Start ^w^#^r › ^`\n\t\t\t\tbreak\n\t\t\tcase 'ready':\n\t\t\t\trestartLabel = 'Booting ^#^K › ^'\n\t\t\t\tbreak\n\t\t}\n\n\t\tthis.menu.setTextForItem('restart', restartLabel)\n\t}\n\n\tprivate handleMenuSelect(payload: { value: string }) {\n\t\tswitch (payload.value) {\n\t\t\tcase 'quit':\n\t\t\t\tthis.handleQuit?.()\n\t\t\t\tbreak\n\t\t\tcase 'restart':\n\t\t\t\tthis.handleStartStop?.()\n\t\t\t\tbreak\n\t\t\tcase 'toggleDebug':\n\t\t\t\tthis.handleToggleDebug?.()\n\t\t\t\tbreak\n\t\t\tcase 'toggleStandardWatch':\n\t\t\t\tthis.handletoggleStandardWatch?.()\n\t\t\t\tbreak\n\t\t\tcase 'toggleSmartWatch':\n\t\t\t\tthis.handleToggleSmartWatch?.()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate handleUpdateInterval() {\n\t\tif (this.status !== 'stopped') {\n\t\t\tthis.refreshResults()\n\t\t}\n\t}\n\n\tprivate refreshResults() {\n\t\tif (this.lastResults) {\n\t\t\tthis.updateLogs()\n\t\t}\n\t}\n\n\tprivate async handleGlobalKeypress(payload: { key: string }) {\n\t\tif (this.window.getFocusedWidget() === this.filterInput) {\n\t\t\treturn\n\t\t}\n\n\t\tswitch (payload.key) {\n\t\t\tcase 'ENTER':\n\t\t\t\tthis.handleRestart?.()\n\t\t\t\tbreak\n\t\t\tcase 'CTRL_C':\n\t\t\t\tthis.handleQuit?.()\n\t\t\t\tprocess.exit()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate dropInTestLog() {\n\t\tconst parent = this.bottomLayout.getChildById('results')\n\n\t\tif (parent) {\n\t\t\tthis.testLog = this.widgetFactory.Widget('text', {\n\t\t\t\tparent,\n\t\t\t\tisScrollEnabled: true,\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\theight: '100%',\n\t\t\t\twidth: '100%',\n\t\t\t\tshouldLockHeightWithParent: true,\n\t\t\t\tshouldLockWidthWithParent: true,\n\t\t\t})\n\n\t\t\tvoid this.testLog.on('click', this.handleClickTestLog.bind(this))\n\t\t}\n\t}\n\n\tprivate async handleClickTestLog(payload: { row: number; column: number }) {\n\t\tconst testFile = this.getFileForLine(payload.row)\n\t\tconst { row, column } = payload\n\n\t\tthis.closeSelectTestPopup()\n\n\t\tif (testFile) {\n\t\t\tthis.dropInSelectTestPopup({ testFile, column, row })\n\t\t}\n\t}\n\n\tprivate closeSelectTestPopup() {\n\t\tif (this.selectTestPopup) {\n\t\t\tvoid this.selectTestPopup.destroy()\n\t\t\tthis.selectTestPopup = undefined\n\t\t}\n\t}\n\n\tprivate dropInSelectTestPopup(options: {\n\t\ttestFile: string\n\t\tcolumn: number\n\t\trow: number\n\t}) {\n\t\tconst { testFile, row, column } = options\n\n\t\tthis.selectTestPopup = this.widgetFactory.Widget('popup', {\n\t\t\tparent: this.window,\n\t\t\tleft: Math.max(1, column - 25),\n\t\t\ttop: Math.max(4, row - 2),\n\t\t\twidth: 50,\n\t\t\theight: 10,\n\t\t})\n\n\t\tthis.widgetFactory.Widget('text', {\n\t\t\tparent: this.selectTestPopup,\n\t\t\tleft: 1,\n\t\t\ttop: 1,\n\t\t\theight: 4,\n\t\t\twidth: this.selectTestPopup.getFrame().width - 2,\n\t\t\ttext: `What do you wanna do with:\\n\\n${testFile}`,\n\t\t})\n\n\t\tconst open = this.widgetFactory.Widget('button', {\n\t\t\tparent: this.selectTestPopup,\n\t\t\tleft: 1,\n\t\t\ttop: 6,\n\t\t\ttext: 'Open',\n\t\t})\n\n\t\tconst rerun = this.widgetFactory.Widget('button', {\n\t\t\tparent: this.selectTestPopup,\n\t\t\tleft: 20,\n\t\t\ttop: 6,\n\t\t\ttext: 'Test',\n\t\t})\n\n\t\tconst cancel = this.widgetFactory.Widget('button', {\n\t\t\tparent: this.selectTestPopup,\n\t\t\tleft: 37,\n\t\t\ttop: 6,\n\t\t\ttext: 'Nevermind',\n\t\t})\n\n\t\tvoid rerun.on('click', () => {\n\t\t\tthis.handleRerunTestFile?.(testFile)\n\t\t\tthis.closeSelectTestPopup()\n\t\t})\n\t\tvoid cancel.on('click', this.closeSelectTestPopup.bind(this))\n\t\tvoid open.on('click', () => {\n\t\t\tthis.openTestFile(testFile)\n\t\t})\n\t}\n\n\tprivate openTestFile(testFile: string) {\n\t\tthis.handleOpenTestFile?.(testFile)\n\t\tthis.closeSelectTestPopup()\n\t}\n\n\tpublic getFileForLine(row: number): string | undefined {\n\t\tlet line = this.testLog.getScrollY()\n\n\t\tfor (let file of this.lastResults.testFiles ?? []) {\n\t\t\tif (line === row) {\n\t\t\t\treturn file.path\n\t\t\t}\n\n\t\t\tline++\n\n\t\t\tfor (let c = 0; c < (file.tests ?? []).length; c++) {\n\t\t\t\tif (line === row) {\n\t\t\t\t\treturn file.path\n\t\t\t\t}\n\n\t\t\t\tline++\n\t\t\t}\n\t\t}\n\n\t\treturn undefined\n\t}\n\n\tprivate dropInProgressBar() {\n\t\tconst parent = this.topLayout.getChildById('progress') ?? this.window\n\t\tthis.bar = this.widgetFactory.Widget('progressBar', {\n\t\t\tparent,\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\twidth: parent.getFrame().width,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tlabel: 'Ready and waiting...',\n\t\t\tprogress: 0,\n\t\t})\n\t}\n\n\tprivate dropInFilterControls() {\n\t\tconst parent = this.topLayout.getChildById('filter') ?? this.window\n\n\t\tconst buttonWidth = 3\n\t\tthis.filterInput = this.widgetFactory.Widget('input', {\n\t\t\tparent,\n\t\t\tleft: 0,\n\t\t\tlabel: 'Pattern',\n\t\t\twidth: parent.getFrame().width - buttonWidth,\n\t\t\theight: 1,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tvalue: this.filterPattern,\n\t\t})\n\n\t\tvoid this.filterInput.on('cancel', () => {\n\t\t\tthis.filterInput.setValue(this.filterPattern ?? '')\n\t\t})\n\n\t\tvoid this.filterInput.on('submit', (payload) => {\n\t\t\tthis.handleFilterChange?.(payload.value ?? undefined)\n\t\t})\n\n\t\tthis.clearFilterPatternButton = this.widgetFactory.Widget('button', {\n\t\t\tparent,\n\t\t\tleft: this.filterInput.getFrame().width,\n\t\t\twidth: buttonWidth,\n\t\t\ttop: 0,\n\t\t\ttext: buildPatternButtonText(this.filterPattern),\n\t\t\tshouldLockRightWithParent: true,\n\t\t})\n\n\t\tvoid this.clearFilterPatternButton.on('click', () => {\n\t\t\tif (this.filterPattern || this.filterPattern?.length === 0) {\n\t\t\t\tthis.handleFilterChange?.(undefined)\n\t\t\t} else {\n\t\t\t\tthis.filterInput.setValue('')\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate dropInBottomLayout() {\n\t\tthis.bottomLayout = this.widgetFactory.Widget('layout', {\n\t\t\tparent: this.window,\n\t\t\twidth: '100%',\n\t\t\ttop: 4,\n\t\t\theight: this.window.getFrame().height - 5,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tshouldLockHeightWithParent: true,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'results',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t}\n\n\tprivate dropInStatusBar() {\n\t\tthis.statusBar = this.widgetFactory.Widget('text', {\n\t\t\tparent: this.window,\n\t\t\ttop: this.window.getFrame().height - 1,\n\t\t\twidth: '100%',\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tshouldLockBottomWithParent: true,\n\t\t\tbackgroundColor: 'yellow',\n\t\t\tforegroundColor: 'black',\n\t\t\ttext: '...',\n\t\t})\n\t}\n\n\tprivate dropInTopLayout() {\n\t\tthis.topLayout = this.widgetFactory.Widget('layout', {\n\t\t\tparent: this.window,\n\t\t\twidth: '100%',\n\t\t\ttop: 1,\n\t\t\theight: 3,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tshouldLockHeightWithParent: false,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'progress',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'filter',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t}\n\n\tpublic updateResults(results: SpruceTestResults) {\n\t\tif (!this.started) {\n\t\t\tthrow new Error('You must call start() before anything else.')\n\t\t}\n\n\t\tthis.lastResults = {\n\t\t\t...this.lastResults,\n\t\t\t...results,\n\t\t}\n\n\t\tthis.updateProgressBar(results)\n\n\t\tconst percentPassing = this.generatePercentPassing(results)\n\t\tconst percentComplete = this.generatePercentComplete(results)\n\n\t\tthis.window.setTitle(\n\t\t\t`Testing: ${percentComplete}% complete.${\n\t\t\t\tpercentComplete > 0 ? ` ${percentPassing}% passing.` : ''\n\t\t\t}`\n\t\t)\n\n\t\tthis.updateLogs()\n\t}\n\n\tprivate updateLogs() {\n\t\tif (this.selectTestPopup) {\n\t\t\treturn\n\t\t}\n\n\t\tlet { logContent, errorContent } = this.resultsToLogContents(\n\t\t\tthis.lastResults\n\t\t)\n\n\t\tthis.testLog.setText(logContent)\n\n\t\tif (!errorContent) {\n\t\t\tthis.errorLog && this.destroyErrorLog()\n\t\t} else {\n\t\t\t!this.errorLog && this.dropInErrorLog()\n\t\t\tconst cleanedLog = this.cwd\n\t\t\t\t? errorContent.replace(new RegExp(this.cwd + '/', 'gim'), '')\n\t\t\t\t: errorContent\n\n\t\t\tthis.errorLog?.setText(cleanedLog)\n\t\t}\n\t}\n\n\tprivate resultsToLogContents(results: SpruceTestResults) {\n\t\tlet logContent = ''\n\t\tlet errorContent = ''\n\n\t\tresults.testFiles?.forEach((file) => {\n\t\t\tlogContent += this.errorLogItemGenerator.generateLogItemForFile(\n\t\t\t\tfile,\n\t\t\t\tthis.status\n\t\t\t)\n\t\t\terrorContent +=\n\t\t\t\tthis.errorLogItemGenerator.generateErrorLogItemForFile(file)\n\t\t})\n\n\t\tif (this.lastResults.customErrors.length > 0) {\n\t\t\terrorContent =\n\t\t\t\tthis.lastResults.customErrors.map((err) => chalk.red(err)).join(`\\n`) +\n\t\t\t\t`\\n${errorContent}`\n\t\t}\n\n\t\treturn { logContent, errorContent }\n\t}\n\n\tprivate dropInErrorLog() {\n\t\tthis.orientationWhenErrorLogWasShown = this.orientation\n\n\t\tif (this.bottomLayout.getRows().length === 1) {\n\t\t\tif (this.orientation === 'portrait') {\n\t\t\t\tthis.bottomLayout.addRow({\n\t\t\t\t\tid: 'row_2',\n\t\t\t\t\tcolumns: [{ id: 'errors', width: '100%' }],\n\t\t\t\t})\n\n\t\t\t\tthis.bottomLayout.setRowHeight(0, '50%')\n\t\t\t\tthis.bottomLayout.setRowHeight(1, '50%')\n\t\t\t} else {\n\t\t\t\tthis.bottomLayout.addColumn(0, { id: 'errors', width: '50%' })\n\t\t\t\tthis.bottomLayout.setColumnWidth({\n\t\t\t\t\trowIdx: 0,\n\t\t\t\t\tcolumnIdx: 0,\n\t\t\t\t\twidth: '50%',\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.bottomLayout.updateLayout()\n\n\t\t\tconst cell = this.bottomLayout.getChildById('errors')\n\n\t\t\tif (!cell) {\n\t\t\t\tthrow new Error('Pulling child error')\n\t\t\t}\n\n\t\t\tthis.errorLog = this.widgetFactory.Widget('text', {\n\t\t\t\tparent: cell,\n\t\t\t\twidth: '100%',\n\t\t\t\theight: '100%',\n\t\t\t\tisScrollEnabled: true,\n\t\t\t\tshouldAutoScrollWhenAppendingContent: false,\n\t\t\t\tshouldLockHeightWithParent: true,\n\t\t\t\tshouldLockWidthWithParent: true,\n\t\t\t\tpadding: { left: 1 },\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate destroyErrorLog() {\n\t\tif (this.errorLog) {\n\t\t\tvoid this.errorLog?.destroy()\n\t\t\tthis.errorLog = undefined\n\n\t\t\tif (this.orientationWhenErrorLogWasShown === 'landscape') {\n\t\t\t\tthis.bottomLayout.removeColumn(0, 1)\n\t\t\t\tthis.bottomLayout.setColumnWidth({\n\t\t\t\t\trowIdx: 0,\n\t\t\t\t\tcolumnIdx: 0,\n\t\t\t\t\twidth: '100%',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.bottomLayout.removeRow(1)\n\t\t\t\tthis.bottomLayout.setRowHeight(0, '100%')\n\t\t\t}\n\t\t\tthis.bottomLayout.updateLayout()\n\t\t}\n\t}\n\n\tprivate updateProgressBar(results: SpruceTestResults) {\n\t\tif (results.totalTestFilesComplete ?? 0 > 0) {\n\t\t\tconst testsRemaining =\n\t\t\t\tresults.totalTestFiles - (results.totalTestFilesComplete ?? 0)\n\n\t\t\tif (testsRemaining === 0) {\n\t\t\t\tconst { percent, totalTests, totalPassedTests, totalTime } =\n\t\t\t\t\tthis.generateProgressStats(results)\n\n\t\t\t\tthis.bar.setLabel(\n\t\t\t\t\t`Finished! ${totalPassedTests} of ${totalTests} (${percent}%) passed in ${durationUtil.msToFriendly(\n\t\t\t\t\t\ttotalTime\n\t\t\t\t\t)}.${percent < 100 ? ` Don't give up! 💪` : ''}`\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tthis.bar.setLabel(\n\t\t\t\t\t`${results.totalTestFilesComplete} of ${\n\t\t\t\t\t\tresults.totalTestFiles\n\t\t\t\t\t} (${this.generatePercentComplete(\n\t\t\t\t\t\tresults\n\t\t\t\t\t)}%) complete. ${testsRemaining} remaining...`\n\t\t\t\t)\n\t\t\t}\n\t\t} else {\n\t\t\tthis.bar.setLabel('0%')\n\t\t}\n\n\t\tthis.bar.setProgress(this.generatePercentComplete(results) / 100)\n\t}\n\n\tprivate generateProgressStats(results: SpruceTestResults): {\n\t\tpercent: number\n\t\ttotalTests: number\n\t\ttotalPassedTests: number\n\t\ttotalTime: number\n\t} {\n\t\tlet totalTests = 0\n\t\tlet totalPassedTests = 0\n\t\tlet totalTime = 0\n\n\t\tresults.testFiles?.forEach((file) => {\n\t\t\tfile.tests?.forEach((test) => {\n\t\t\t\ttotalTime += test.duration\n\t\t\t\tif (test.status === 'passed') {\n\t\t\t\t\ttotalPassedTests++\n\t\t\t\t}\n\n\t\t\t\tif (test.status === 'passed' || test.status === 'failed') {\n\t\t\t\t\ttotalTests++\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\n\t\tconst percent = Math.floor((totalPassedTests / totalTests) * 100)\n\t\treturn {\n\t\t\tpercent: percent > 0 ? percent : 0,\n\t\t\ttotalTests,\n\t\t\ttotalPassedTests,\n\t\t\ttotalTime,\n\t\t}\n\t}\n\n\tprivate generatePercentComplete(results: SpruceTestResults): number {\n\t\tconst percent =\n\t\t\t(results.totalTestFilesComplete ?? 0) / results.totalTestFiles\n\t\tif (isNaN(percent)) {\n\t\t\treturn 0\n\t\t}\n\t\treturn Math.round(percent * 100)\n\t}\n\n\tprivate generatePercentPassing(results: SpruceTestResults): number {\n\t\tconst percent =\n\t\t\t(results.totalPassed ?? 0) / this.getTotalTestFilesRun(results)\n\n\t\tif (isNaN(percent)) {\n\t\t\treturn 0\n\t\t}\n\n\t\treturn Math.floor(percent * 100)\n\t}\n\n\tprivate getTotalTestFilesRun(results: SpruceTestResults) {\n\t\treturn (\n\t\t\t(results.totalTests ?? 0) -\n\t\t\t(results.totalSkipped ?? 0) -\n\t\t\t(results.totalTodo ?? 0)\n\t\t)\n\t}\n\n\tpublic render() {\n\t\tthis.table?.computeCells()\n\t\tthis.table?.draw()\n\t}\n\n\tpublic async destroy() {\n\t\tclearInterval(this.updateInterval)\n\t\tawait this.window.destroy()\n\t}\n\n\tpublic reset() {\n\t\tthis.testLog.setText('')\n\t\tthis.lastResults = {\n\t\t\ttotalTestFiles: 0,\n\t\t\tcustomErrors: [],\n\t\t}\n\t\tthis.destroyErrorLog()\n\t\tthis.errorLogItemGenerator.resetStartTimes()\n\t}\n\n\tpublic setStatusLabel(text: string) {\n\t\tthis.statusBar.setText(text)\n\t}\n\n\tpublic appendError(message: string) {\n\t\tthis.lastResults.customErrors.push(message)\n\t}\n}\nfunction buildPatternButtonText(pattern: string | undefined): string {\n\treturn pattern ? ' x ' : ' - '\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TestReporter.js","names":["TestReporter","options","totalTestFiles","customErrors","cwd","filterPattern","handleRestart","handleStartStop","handleQuit","handleRerunTestFile","handleOpenTestFile","handleFilterChange","handleFilterPatternChange","status","handleToggleDebug","handletoggleStandardWatch","isDebugging","watchMode","handleToggleSmartWatch","errorLogItemGenerator","TestLogItemGenerator","widgetFactory","WidgetFactory","pattern","filterInput","setValue","clearFilterPatternButton","setText","buildPatternButtonText","menu","setTextForItem","durationSec","clearInterval","countDownTimeInterval","undefined","remaining","renderCountdownTime","time","setWatchLabel","setInterval","stopCountdownTimer","setWatchMode","label","isWatching","started","window","Widget","hideCursor","getFrame","width","minWidth","Error","on","handleGlobalKeypress","bind","destroy","handleWindowResize","dropInTopLayout","dropInProgressBar","dropInMenu","dropInBottomLayout","dropInStatusBar","dropInTestLog","dropInFilterControls","updateOrientation","setIsDebugging","setStatus","updateInterval","handleUpdateInterval","frame","height","orientation","parent","left","top","shouldLockWidthWithParent","items","value","handleMenuSelect","updateMenuLabels","closeSelectTestPopup","bottomLayout","updateLayout","setStatusLabel","refreshResults","restartLabel","payload","lastResults","updateLogs","getFocusedWidget","key","process","exit","getChildById","testLog","isScrollEnabled","shouldLockHeightWithParent","handleClickTestLog","testFile","getFileForLine","row","column","dropInSelectTestPopup","selectTestPopup","Math","max","text","open","rerun","cancel","openTestFile","line","getScrollY","testFiles","file","path","c","tests","length","topLayout","bar","progress","buttonWidth","shouldLockRightWithParent","rows","columns","id","statusBar","shouldLockBottomWithParent","backgroundColor","foregroundColor","results","updateProgressBar","percentPassing","generatePercentPassing","percentComplete","generatePercentComplete","setTitle","resultsToLogContents","logContent","errorContent","errorLog","destroyErrorLog","dropInErrorLog","cleanedLog","replace","RegExp","forEach","generateLogItemForFile","generateErrorLogItemForFile","map","err","chalk","red","join","orientationWhenErrorLogWasShown","getRows","addRow","setRowHeight","addColumn","setColumnWidth","rowIdx","columnIdx","cell","shouldAutoScrollWhenAppendingContent","padding","removeColumn","removeRow","totalTestFilesComplete","testsRemaining","generateProgressStats","percent","totalTests","totalPassedTests","totalTime","setLabel","durationUtil","msToFriendly","setProgress","test","duration","floor","isNaN","round","totalPassed","getTotalTestFilesRun","totalSkipped","totalTodo","table","computeCells","draw","resetStartTimes","message","push"],"sources":["../../../src/features/test/TestReporter.ts"],"sourcesContent":["import chalk from 'chalk'\nimport durationUtil from '../../utilities/duration.utility'\nimport { ButtonWidget } from '../../widgets/types/button.types'\nimport { InputWidget } from '../../widgets/types/input.types'\nimport { LayoutWidget } from '../../widgets/types/layout.types'\nimport { MenuBarWidget } from '../../widgets/types/menuBar.types'\nimport { PopupWidget } from '../../widgets/types/popup.types'\nimport { ProgressBarWidget } from '../../widgets/types/progressBar.types'\nimport { TextWidget } from '../../widgets/types/text.types'\nimport { WindowWidget } from '../../widgets/types/window.types'\nimport WidgetFactory from '../../widgets/WidgetFactory'\nimport { SpruceTestResults, TestRunnerStatus } from './test.types'\nimport TestLogItemGenerator from './TestLogItemGenerator'\n\ninterface TestReporterOptions {\n\thandleStartStop?: () => void\n\thandleRestart?: () => void\n\thandleQuit?: () => void\n\tonRequestOpenTestFile?: () => void\n\thandleRerunTestFile?: (fileName: string) => void\n\thandleOpenTestFile?: (fileName: string) => void\n\thandleFilterPatternChange?: (pattern?: string) => void\n\thandleToggleDebug?: () => void\n\thandletoggleStandardWatch?: () => void\n\thandleToggleSmartWatch?: () => void\n\tfilterPattern?: string\n\tisDebugging?: boolean\n\twatchMode?: WatchMode\n\tstatus?: TestRunnerStatus\n\tcwd?: string\n}\n\ntype TestReporterResults = SpruceTestResults & {\n\tcustomErrors: string[]\n}\n\nexport type TestReporterOrientation = 'landscape' | 'portrait'\nexport type WatchMode = 'off' | 'standard' | 'smart'\n\nexport default class TestReporter {\n\tprivate started = false\n\tprivate table?: any\n\tprivate bar!: ProgressBarWidget\n\tprivate bottomLayout!: LayoutWidget\n\tprivate testLog!: TextWidget\n\tprivate errorLog?: TextWidget\n\tprivate errorLogItemGenerator: TestLogItemGenerator\n\tprivate lastResults: TestReporterResults = {\n\t\ttotalTestFiles: 0,\n\t\tcustomErrors: [],\n\t}\n\tprivate updateInterval?: any\n\tprivate menu!: MenuBarWidget\n\tprivate statusBar!: TextWidget\n\tprivate window!: WindowWidget\n\tprivate widgetFactory: WidgetFactory\n\tprivate selectTestPopup?: PopupWidget\n\tprivate topLayout!: LayoutWidget\n\tprivate filterInput!: InputWidget\n\tprivate filterPattern?: string\n\tprivate clearFilterPatternButton!: ButtonWidget\n\tprivate isDebugging = false\n\tprivate watchMode: WatchMode = 'off'\n\tprivate status: TestRunnerStatus = 'ready'\n\tprivate countDownTimeInterval?: any\n\tprivate cwd: string | undefined\n\tprivate orientation: TestReporterOrientation = 'landscape'\n\n\tprivate handleStartStop?: () => void\n\tprivate handleRestart?: () => void\n\tprivate handleQuit?: () => void\n\tprivate handleRerunTestFile?: (fileName: string) => void\n\tprivate handleFilterChange?: (pattern?: string) => void\n\tprivate handleOpenTestFile?: (testFile: string) => void\n\tprivate handleToggleDebug?: () => void\n\tprivate handletoggleStandardWatch?: () => void\n\tprivate handleToggleSmartWatch?: () => any\n\tprivate minWidth = 50\n\tprivate orientationWhenErrorLogWasShown: TestReporterOrientation = 'landscape'\n\n\tpublic constructor(options?: TestReporterOptions) {\n\t\tthis.cwd = options?.cwd\n\t\tthis.filterPattern = options?.filterPattern\n\t\tthis.handleRestart = options?.handleRestart\n\t\tthis.handleStartStop = options?.handleStartStop\n\t\tthis.handleQuit = options?.handleQuit\n\t\tthis.handleRerunTestFile = options?.handleRerunTestFile\n\t\tthis.handleOpenTestFile = options?.handleOpenTestFile\n\t\tthis.handleFilterChange = options?.handleFilterPatternChange\n\t\tthis.status = options?.status ?? 'ready'\n\t\tthis.handleToggleDebug = options?.handleToggleDebug\n\t\tthis.handletoggleStandardWatch = options?.handletoggleStandardWatch\n\t\tthis.isDebugging = options?.isDebugging ?? false\n\t\tthis.watchMode = options?.watchMode ?? 'off'\n\t\tthis.handleToggleSmartWatch = options?.handleToggleSmartWatch\n\n\t\tthis.errorLogItemGenerator = new TestLogItemGenerator()\n\t\tthis.widgetFactory = new WidgetFactory()\n\t}\n\n\tpublic setFilterPattern(pattern: string | undefined) {\n\t\tthis.filterPattern = pattern\n\t\tthis.filterInput.setValue(pattern ?? '')\n\t\tthis.clearFilterPatternButton.setText(buildPatternButtonText(pattern))\n\t}\n\n\tpublic setIsDebugging(isDebugging: boolean) {\n\t\tthis.menu.setTextForItem(\n\t\t\t'toggleDebug',\n\t\t\t`Debug ^${isDebugging ? 'k' : 'w'}^#^${isDebugging ? 'g' : 'r'}${\n\t\t\t\tisDebugging ? ' • ' : ' • '\n\t\t\t}^`\n\t\t)\n\t\tthis.isDebugging = isDebugging\n\t}\n\n\tpublic startCountdownTimer(durationSec: number) {\n\t\tclearInterval(this.countDownTimeInterval)\n\t\tthis.countDownTimeInterval = undefined\n\n\t\tlet remaining = durationSec\n\n\t\tfunction renderCountdownTime(time: number) {\n\t\t\treturn `Starting ${time} `\n\t\t}\n\n\t\tthis.setWatchLabel(renderCountdownTime(remaining))\n\n\t\tthis.countDownTimeInterval = setInterval(() => {\n\t\t\tremaining--\n\n\t\t\tif (remaining < 0) {\n\t\t\t\tthis.stopCountdownTimer()\n\t\t\t} else {\n\t\t\t\tthis.setWatchLabel(renderCountdownTime(remaining))\n\t\t\t}\n\t\t}, 1000) as any\n\t}\n\n\tpublic stopCountdownTimer() {\n\t\tclearInterval(this.countDownTimeInterval)\n\t\tthis.countDownTimeInterval = undefined\n\t\tthis.setWatchMode(this.watchMode)\n\t}\n\n\tpublic setWatchMode(watchMode: WatchMode) {\n\t\tthis.watchMode = watchMode\n\t\tif (!this.countDownTimeInterval) {\n\t\t\tlet label = watchMode === 'smart' ? 'Smart Watch' : 'Standard Watch'\n\t\t\tif (watchMode === 'off') {\n\t\t\t\tlabel = 'Not Watching'\n\t\t\t}\n\t\t\tthis.setWatchLabel(label)\n\t\t}\n\t}\n\n\tprivate setWatchLabel(label: string) {\n\t\tconst isWatching = this.watchMode !== 'off'\n\n\t\tthis.menu.setTextForItem(\n\t\t\t'watchDropdown',\n\t\t\t`${label} ^${isWatching ? 'k' : 'w'}^#^${isWatching ? 'g' : 'r'}${\n\t\t\t\tisWatching ? ' • ' : ' • '\n\t\t\t}^`\n\t\t)\n\n\t\tthis.menu.setTextForItem(\n\t\t\t'toggleStandardWatch',\n\t\t\tthis.watchMode === 'standard' ? '√ Standard' : 'Standard'\n\t\t)\n\n\t\tthis.menu.setTextForItem(\n\t\t\t'toggleSmartWatch',\n\t\t\tthis.watchMode === 'smart' ? '√ Smart' : 'Smart'\n\t\t)\n\t}\n\n\tpublic async start() {\n\t\tthis.started = true\n\n\t\tthis.window = this.widgetFactory.Widget('window', {})\n\t\tthis.window.hideCursor()\n\n\t\tconst { width } = this.window.getFrame()\n\t\tif (width < this.minWidth) {\n\t\t\tthrow new Error(\n\t\t\t\t`Your screen must be at least ${this.minWidth} characters wide.`\n\t\t\t)\n\t\t}\n\n\t\tvoid this.window.on('key', this.handleGlobalKeypress.bind(this))\n\t\tvoid this.window.on('kill', this.destroy.bind(this))\n\t\tvoid this.window.on('resize', this.handleWindowResize.bind(this))\n\n\t\tthis.dropInTopLayout()\n\t\tthis.dropInProgressBar()\n\t\tthis.dropInMenu()\n\t\tthis.dropInBottomLayout()\n\t\tthis.dropInStatusBar()\n\t\tthis.dropInTestLog()\n\t\tthis.dropInFilterControls()\n\n\t\tthis.updateOrientation()\n\n\t\tthis.setIsDebugging(this.isDebugging)\n\t\tthis.setWatchMode(this.watchMode)\n\t\tthis.setStatus(this.status)\n\n\t\tthis.updateInterval = setInterval(\n\t\t\tthis.handleUpdateInterval.bind(this),\n\t\t\t1000\n\t\t)\n\t}\n\n\tprivate handleWindowResize() {\n\t\tthis.updateOrientation()\n\t}\n\n\tprivate updateOrientation() {\n\t\tconst frame = this.window.getFrame()\n\n\t\tif (frame.width * 0.5 > frame.height) {\n\t\t\tthis.orientation = 'landscape'\n\t\t} else {\n\t\t\tthis.orientation = 'portrait'\n\t\t}\n\t}\n\n\tprivate dropInMenu() {\n\t\tthis.menu = this.widgetFactory.Widget('menuBar', {\n\t\t\tparent: this.window,\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Restart ',\n\t\t\t\t\tvalue: 'restart',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Debug ',\n\t\t\t\t\tvalue: 'toggleDebug',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Not Watching ',\n\t\t\t\t\tvalue: 'watchDropdown',\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Watch all',\n\t\t\t\t\t\t\tvalue: 'toggleStandardWatch',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Smart watch',\n\t\t\t\t\t\t\tvalue: 'toggleSmartWatch',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Quit',\n\t\t\t\t\tvalue: 'quit',\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tvoid this.menu.on('select', this.handleMenuSelect.bind(this))\n\t}\n\n\tpublic setStatus(status: TestRunnerStatus) {\n\t\tthis.status = status\n\n\t\tthis.updateMenuLabels()\n\t\tthis.closeSelectTestPopup()\n\t\tthis.bottomLayout.updateLayout()\n\n\t\tif (status === 'ready') {\n\t\t\tthis.setStatusLabel('Starting...')\n\t\t} else if (this.status === 'stopped') {\n\t\t\tthis.refreshResults()\n\t\t\tthis.setStatusLabel('')\n\t\t} else if (this.status === 'running') {\n\t\t\tthis.setStatusLabel('Running tests...')\n\t\t}\n\t}\n\n\tprivate updateMenuLabels() {\n\t\tlet restartLabel = 'Start ^#^r › ^'\n\t\tswitch (this.status) {\n\t\t\tcase 'running':\n\t\t\t\trestartLabel = 'Stop ^k^#^g › ^'\n\t\t\t\tbreak\n\t\t\tcase 'stopped':\n\t\t\t\trestartLabel = `Start ^w^#^r › ^`\n\t\t\t\tbreak\n\t\t\tcase 'ready':\n\t\t\t\trestartLabel = 'Booting ^#^K › ^'\n\t\t\t\tbreak\n\t\t}\n\n\t\tthis.menu.setTextForItem('restart', restartLabel)\n\t}\n\n\tprivate handleMenuSelect(payload: { value: string }) {\n\t\tswitch (payload.value) {\n\t\t\tcase 'quit':\n\t\t\t\tthis.handleQuit?.()\n\t\t\t\tbreak\n\t\t\tcase 'restart':\n\t\t\t\tthis.handleStartStop?.()\n\t\t\t\tbreak\n\t\t\tcase 'toggleDebug':\n\t\t\t\tthis.handleToggleDebug?.()\n\t\t\t\tbreak\n\t\t\tcase 'toggleStandardWatch':\n\t\t\t\tthis.handletoggleStandardWatch?.()\n\t\t\t\tbreak\n\t\t\tcase 'toggleSmartWatch':\n\t\t\t\tthis.handleToggleSmartWatch?.()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate handleUpdateInterval() {\n\t\tif (this.status !== 'stopped') {\n\t\t\tthis.refreshResults()\n\t\t}\n\t}\n\n\tprivate refreshResults() {\n\t\tif (this.lastResults) {\n\t\t\tthis.updateLogs()\n\t\t}\n\t}\n\n\tprivate async handleGlobalKeypress(payload: { key: string }) {\n\t\tif (this.window.getFocusedWidget() === this.filterInput) {\n\t\t\treturn\n\t\t}\n\n\t\tswitch (payload.key) {\n\t\t\tcase 'ENTER':\n\t\t\t\tthis.handleRestart?.()\n\t\t\t\tbreak\n\t\t\tcase 'CTRL_C':\n\t\t\t\tthis.handleQuit?.()\n\t\t\t\tprocess.exit()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate dropInTestLog() {\n\t\tconst parent = this.bottomLayout.getChildById('results')\n\n\t\tif (parent) {\n\t\t\tthis.testLog = this.widgetFactory.Widget('text', {\n\t\t\t\tparent,\n\t\t\t\tisScrollEnabled: true,\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\theight: '100%',\n\t\t\t\twidth: '100%',\n\t\t\t\tshouldLockHeightWithParent: true,\n\t\t\t\tshouldLockWidthWithParent: true,\n\t\t\t})\n\n\t\t\tvoid this.testLog.on('click', this.handleClickTestLog.bind(this))\n\t\t}\n\t}\n\n\tprivate async handleClickTestLog(payload: { row: number; column: number }) {\n\t\tconst testFile = this.getFileForLine(payload.row)\n\t\tconst { row, column } = payload\n\n\t\tthis.closeSelectTestPopup()\n\n\t\tif (testFile) {\n\t\t\tthis.dropInSelectTestPopup({ testFile, column, row })\n\t\t}\n\t}\n\n\tprivate closeSelectTestPopup() {\n\t\tif (this.selectTestPopup) {\n\t\t\tvoid this.selectTestPopup.destroy()\n\t\t\tthis.selectTestPopup = undefined\n\t\t}\n\t}\n\n\tprivate dropInSelectTestPopup(options: {\n\t\ttestFile: string\n\t\tcolumn: number\n\t\trow: number\n\t}) {\n\t\tconst { testFile, row, column } = options\n\n\t\tthis.selectTestPopup = this.widgetFactory.Widget('popup', {\n\t\t\tparent: this.window,\n\t\t\tleft: Math.max(1, column - 25),\n\t\t\ttop: Math.max(4, row - 2),\n\t\t\twidth: 50,\n\t\t\theight: 10,\n\t\t})\n\n\t\tthis.widgetFactory.Widget('text', {\n\t\t\tparent: this.selectTestPopup,\n\t\t\tleft: 1,\n\t\t\ttop: 1,\n\t\t\theight: 4,\n\t\t\twidth: this.selectTestPopup.getFrame().width - 2,\n\t\t\ttext: `What do you wanna do with:\\n\\n${testFile}`,\n\t\t})\n\n\t\tconst open = this.widgetFactory.Widget('button', {\n\t\t\tparent: this.selectTestPopup,\n\t\t\tleft: 1,\n\t\t\ttop: 6,\n\t\t\ttext: 'Open',\n\t\t})\n\n\t\tconst rerun = this.widgetFactory.Widget('button', {\n\t\t\tparent: this.selectTestPopup,\n\t\t\tleft: 20,\n\t\t\ttop: 6,\n\t\t\ttext: 'Test',\n\t\t})\n\n\t\tconst cancel = this.widgetFactory.Widget('button', {\n\t\t\tparent: this.selectTestPopup,\n\t\t\tleft: 37,\n\t\t\ttop: 6,\n\t\t\ttext: 'Nevermind',\n\t\t})\n\n\t\tvoid rerun.on('click', () => {\n\t\t\tthis.handleRerunTestFile?.(testFile)\n\t\t\tthis.closeSelectTestPopup()\n\t\t})\n\t\tvoid cancel.on('click', this.closeSelectTestPopup.bind(this))\n\t\tvoid open.on('click', () => {\n\t\t\tthis.openTestFile(testFile)\n\t\t})\n\t}\n\n\tprivate openTestFile(testFile: string) {\n\t\tthis.handleOpenTestFile?.(testFile)\n\t\tthis.closeSelectTestPopup()\n\t}\n\n\tpublic getFileForLine(row: number): string | undefined {\n\t\tlet line = this.testLog.getScrollY()\n\n\t\tfor (let file of this.lastResults.testFiles ?? []) {\n\t\t\tif (line === row) {\n\t\t\t\treturn file.path\n\t\t\t}\n\n\t\t\tline++\n\n\t\t\tfor (let c = 0; c < (file.tests ?? []).length; c++) {\n\t\t\t\tif (line === row) {\n\t\t\t\t\treturn file.path\n\t\t\t\t}\n\n\t\t\t\tline++\n\t\t\t}\n\t\t}\n\n\t\treturn undefined\n\t}\n\n\tprivate dropInProgressBar() {\n\t\tconst parent = this.topLayout.getChildById('progress') ?? this.window\n\t\tthis.bar = this.widgetFactory.Widget('progressBar', {\n\t\t\tparent,\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\twidth: parent.getFrame().width,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tlabel: 'Ready and waiting...',\n\t\t\tprogress: 0,\n\t\t})\n\t}\n\n\tprivate dropInFilterControls() {\n\t\tconst parent = this.topLayout.getChildById('filter') ?? this.window\n\n\t\tconst buttonWidth = 3\n\t\tthis.filterInput = this.widgetFactory.Widget('input', {\n\t\t\tparent,\n\t\t\tleft: 0,\n\t\t\tlabel: 'Pattern',\n\t\t\twidth: parent.getFrame().width - buttonWidth,\n\t\t\theight: 1,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tvalue: this.filterPattern,\n\t\t})\n\n\t\tvoid this.filterInput.on('cancel', () => {\n\t\t\tthis.filterInput.setValue(this.filterPattern ?? '')\n\t\t})\n\n\t\tvoid this.filterInput.on('submit', (payload) => {\n\t\t\tthis.handleFilterChange?.(payload.value ?? undefined)\n\t\t})\n\n\t\tthis.clearFilterPatternButton = this.widgetFactory.Widget('button', {\n\t\t\tparent,\n\t\t\tleft: this.filterInput.getFrame().width,\n\t\t\twidth: buttonWidth,\n\t\t\ttop: 0,\n\t\t\ttext: buildPatternButtonText(this.filterPattern),\n\t\t\tshouldLockRightWithParent: true,\n\t\t})\n\n\t\tvoid this.clearFilterPatternButton.on('click', () => {\n\t\t\tif (this.filterPattern || this.filterPattern?.length === 0) {\n\t\t\t\tthis.handleFilterChange?.(undefined)\n\t\t\t} else {\n\t\t\t\tthis.filterInput.setValue('')\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate dropInBottomLayout() {\n\t\tthis.bottomLayout = this.widgetFactory.Widget('layout', {\n\t\t\tparent: this.window,\n\t\t\twidth: '100%',\n\t\t\ttop: 4,\n\t\t\theight: this.window.getFrame().height - 5,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tshouldLockHeightWithParent: true,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'results',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t}\n\n\tprivate dropInStatusBar() {\n\t\tthis.statusBar = this.widgetFactory.Widget('text', {\n\t\t\tparent: this.window,\n\t\t\ttop: this.window.getFrame().height - 1,\n\t\t\twidth: '100%',\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tshouldLockBottomWithParent: true,\n\t\t\tbackgroundColor: 'yellow',\n\t\t\tforegroundColor: 'black',\n\t\t\ttext: '...',\n\t\t})\n\t}\n\n\tprivate dropInTopLayout() {\n\t\tthis.topLayout = this.widgetFactory.Widget('layout', {\n\t\t\tparent: this.window,\n\t\t\twidth: '100%',\n\t\t\ttop: 1,\n\t\t\theight: 3,\n\t\t\tshouldLockWidthWithParent: true,\n\t\t\tshouldLockHeightWithParent: false,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'progress',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'filter',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t}\n\n\tpublic updateResults(results: SpruceTestResults) {\n\t\tif (!this.started) {\n\t\t\tthrow new Error('You must call start() before anything else.')\n\t\t}\n\n\t\tthis.lastResults = {\n\t\t\t...this.lastResults,\n\t\t\t...results,\n\t\t}\n\n\t\tthis.updateProgressBar(results)\n\n\t\tconst percentPassing = this.generatePercentPassing(results)\n\t\tconst percentComplete = this.generatePercentComplete(results)\n\n\t\tthis.window.setTitle(\n\t\t\t`Testing: ${percentComplete}% complete.${\n\t\t\t\tpercentComplete > 0 ? ` ${percentPassing}% passing.` : ''\n\t\t\t}`\n\t\t)\n\n\t\tthis.updateLogs()\n\t}\n\n\tprivate updateLogs() {\n\t\tif (this.selectTestPopup) {\n\t\t\treturn\n\t\t}\n\n\t\tlet { logContent, errorContent } = this.resultsToLogContents(\n\t\t\tthis.lastResults\n\t\t)\n\n\t\tthis.testLog.setText(logContent)\n\n\t\tif (!errorContent) {\n\t\t\tthis.errorLog && this.destroyErrorLog()\n\t\t} else {\n\t\t\t!this.errorLog && this.dropInErrorLog()\n\t\t\tconst cleanedLog = this.cwd\n\t\t\t\t? errorContent.replace(new RegExp(this.cwd + '/', 'gim'), '')\n\t\t\t\t: errorContent\n\n\t\t\tthis.errorLog?.setText(cleanedLog)\n\t\t}\n\t}\n\n\tprivate resultsToLogContents(results: SpruceTestResults) {\n\t\tlet logContent = ''\n\t\tlet errorContent = ''\n\n\t\tresults.testFiles?.forEach((file) => {\n\t\t\tlogContent += this.errorLogItemGenerator.generateLogItemForFile(\n\t\t\t\tfile,\n\t\t\t\tthis.status\n\t\t\t)\n\t\t\terrorContent +=\n\t\t\t\tthis.errorLogItemGenerator.generateErrorLogItemForFile(file)\n\t\t})\n\n\t\tif (this.lastResults.customErrors.length > 0) {\n\t\t\terrorContent =\n\t\t\t\tthis.lastResults.customErrors.map((err) => chalk.red(err)).join(`\\n`) +\n\t\t\t\t`\\n${errorContent}`\n\t\t}\n\n\t\treturn { logContent, errorContent }\n\t}\n\n\tprivate dropInErrorLog() {\n\t\tthis.orientationWhenErrorLogWasShown = this.orientation\n\n\t\tif (this.bottomLayout.getRows().length === 1) {\n\t\t\tif (this.orientation === 'portrait') {\n\t\t\t\tthis.bottomLayout.addRow({\n\t\t\t\t\tid: 'row_2',\n\t\t\t\t\tcolumns: [{ id: 'errors', width: '100%' }],\n\t\t\t\t})\n\n\t\t\t\tthis.bottomLayout.setRowHeight(0, '50%')\n\t\t\t\tthis.bottomLayout.setRowHeight(1, '50%')\n\t\t\t} else {\n\t\t\t\tthis.bottomLayout.addColumn(0, { id: 'errors', width: '50%' })\n\t\t\t\tthis.bottomLayout.setColumnWidth({\n\t\t\t\t\trowIdx: 0,\n\t\t\t\t\tcolumnIdx: 0,\n\t\t\t\t\twidth: '50%',\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.bottomLayout.updateLayout()\n\n\t\t\tconst cell = this.bottomLayout.getChildById('errors')\n\n\t\t\tif (!cell) {\n\t\t\t\tthrow new Error('Pulling child error')\n\t\t\t}\n\n\t\t\tthis.errorLog = this.widgetFactory.Widget('text', {\n\t\t\t\tparent: cell,\n\t\t\t\twidth: '100%',\n\t\t\t\theight: '100%',\n\t\t\t\tisScrollEnabled: true,\n\t\t\t\tshouldAutoScrollWhenAppendingContent: false,\n\t\t\t\tshouldLockHeightWithParent: true,\n\t\t\t\tshouldLockWidthWithParent: true,\n\t\t\t\tpadding: { left: 1 },\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate destroyErrorLog() {\n\t\tif (this.errorLog) {\n\t\t\tvoid this.errorLog?.destroy()\n\t\t\tthis.errorLog = undefined\n\n\t\t\tif (this.orientationWhenErrorLogWasShown === 'landscape') {\n\t\t\t\tthis.bottomLayout.removeColumn(0, 1)\n\t\t\t\tthis.bottomLayout.setColumnWidth({\n\t\t\t\t\trowIdx: 0,\n\t\t\t\t\tcolumnIdx: 0,\n\t\t\t\t\twidth: '100%',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.bottomLayout.removeRow(1)\n\t\t\t\tthis.bottomLayout.setRowHeight(0, '100%')\n\t\t\t}\n\t\t\tthis.bottomLayout.updateLayout()\n\t\t}\n\t}\n\n\tprivate updateProgressBar(results: SpruceTestResults) {\n\t\tif (results.totalTestFilesComplete ?? 0 > 0) {\n\t\t\tconst testsRemaining =\n\t\t\t\tresults.totalTestFiles - (results.totalTestFilesComplete ?? 0)\n\n\t\t\tif (testsRemaining === 0) {\n\t\t\t\tconst { percent, totalTests, totalPassedTests, totalTime } =\n\t\t\t\t\tthis.generateProgressStats(results)\n\n\t\t\t\tthis.bar.setLabel(\n\t\t\t\t\t`Finished! ${totalPassedTests} of ${totalTests} (${percent}%) passed in ${durationUtil.msToFriendly(\n\t\t\t\t\t\ttotalTime\n\t\t\t\t\t)}.${percent < 100 ? ` Don't give up! 💪` : ''}`\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tthis.bar.setLabel(\n\t\t\t\t\t`${results.totalTestFilesComplete} of ${\n\t\t\t\t\t\tresults.totalTestFiles\n\t\t\t\t\t} (${this.generatePercentComplete(\n\t\t\t\t\t\tresults\n\t\t\t\t\t)}%) complete. ${testsRemaining} remaining...`\n\t\t\t\t)\n\t\t\t}\n\t\t} else {\n\t\t\tthis.bar.setLabel('0%')\n\t\t}\n\n\t\tthis.bar.setProgress(this.generatePercentComplete(results) / 100)\n\t}\n\n\tprivate generateProgressStats(results: SpruceTestResults): {\n\t\tpercent: number\n\t\ttotalTests: number\n\t\ttotalPassedTests: number\n\t\ttotalTime: number\n\t} {\n\t\tlet totalTests = 0\n\t\tlet totalPassedTests = 0\n\t\tlet totalTime = 0\n\n\t\tresults.testFiles?.forEach((file) => {\n\t\t\tfile.tests?.forEach((test) => {\n\t\t\t\ttotalTime += test.duration\n\t\t\t\tif (test.status === 'passed') {\n\t\t\t\t\ttotalPassedTests++\n\t\t\t\t}\n\n\t\t\t\tif (test.status === 'passed' || test.status === 'failed') {\n\t\t\t\t\ttotalTests++\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\n\t\tconst percent = Math.floor((totalPassedTests / totalTests) * 100)\n\t\treturn {\n\t\t\tpercent: percent > 0 ? percent : 0,\n\t\t\ttotalTests,\n\t\t\ttotalPassedTests,\n\t\t\ttotalTime,\n\t\t}\n\t}\n\n\tprivate generatePercentComplete(results: SpruceTestResults): number {\n\t\tconst percent =\n\t\t\t(results.totalTestFilesComplete ?? 0) / results.totalTestFiles\n\t\tif (isNaN(percent)) {\n\t\t\treturn 0\n\t\t}\n\t\treturn Math.round(percent * 100)\n\t}\n\n\tprivate generatePercentPassing(results: SpruceTestResults): number {\n\t\tconst percent =\n\t\t\t(results.totalPassed ?? 0) / this.getTotalTestFilesRun(results)\n\n\t\tif (isNaN(percent)) {\n\t\t\treturn 0\n\t\t}\n\n\t\treturn Math.floor(percent * 100)\n\t}\n\n\tprivate getTotalTestFilesRun(results: SpruceTestResults) {\n\t\treturn (\n\t\t\t(results.totalTests ?? 0) -\n\t\t\t(results.totalSkipped ?? 0) -\n\t\t\t(results.totalTodo ?? 0)\n\t\t)\n\t}\n\n\tpublic render() {\n\t\tthis.table?.computeCells()\n\t\tthis.table?.draw()\n\t}\n\n\tpublic async destroy() {\n\t\tclearInterval(this.updateInterval)\n\t\tawait this.window.destroy()\n\t}\n\n\tpublic reset() {\n\t\tthis.testLog.setText('')\n\t\tthis.lastResults = {\n\t\t\ttotalTestFiles: 0,\n\t\t\tcustomErrors: [],\n\t\t}\n\t\tthis.destroyErrorLog()\n\t\tthis.errorLogItemGenerator.resetStartTimes()\n\t}\n\n\tpublic setStatusLabel(text: string) {\n\t\tthis.statusBar.setText(text)\n\t}\n\n\tpublic appendError(message: string) {\n\t\tthis.lastResults.customErrors.push(message)\n\t}\n}\nfunction buildPatternButtonText(pattern: string | undefined): string {\n\treturn pattern ? ' x ' : ' - '\n}\n"],"mappings":"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"}
|
|
@@ -1,54 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = void 0;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
-
|
|
14
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
-
|
|
16
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
|
-
|
|
18
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
-
|
|
20
13
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
21
|
-
|
|
22
14
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
23
|
-
|
|
24
15
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
25
|
-
|
|
26
16
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
27
|
-
|
|
28
17
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
29
|
-
|
|
30
18
|
var _path = _interopRequireDefault(require("path"));
|
|
31
|
-
|
|
32
19
|
var _mercuryEventEmitter = require("@sprucelabs/mercury-event-emitter");
|
|
33
|
-
|
|
34
20
|
var _mercuryTypes = require("@sprucelabs/mercury-types");
|
|
35
|
-
|
|
36
21
|
var _schema = require("@sprucelabs/schema");
|
|
37
|
-
|
|
38
22
|
var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
39
|
-
|
|
40
23
|
var _SpruceError = _interopRequireDefault(require("../../errors/SpruceError"));
|
|
41
|
-
|
|
42
24
|
var _JestJsonParser = _interopRequireDefault(require("../../tests/JestJsonParser"));
|
|
43
|
-
|
|
44
25
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
45
|
-
|
|
46
26
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
47
|
-
|
|
48
27
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
49
|
-
|
|
50
28
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
51
|
-
|
|
52
29
|
var testRunnerContract = (0, _mercuryTypes.buildEventContract)({
|
|
53
30
|
eventSignatures: {
|
|
54
31
|
'did-error': {
|
|
@@ -78,15 +55,11 @@ var testRunnerContract = (0, _mercuryTypes.buildEventContract)({
|
|
|
78
55
|
}
|
|
79
56
|
}
|
|
80
57
|
});
|
|
81
|
-
|
|
82
58
|
var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
83
59
|
(0, _inherits2["default"])(TestRunner, _AbstractEventEmitter);
|
|
84
|
-
|
|
85
60
|
var _super = _createSuper(TestRunner);
|
|
86
|
-
|
|
87
61
|
function TestRunner(options) {
|
|
88
62
|
var _this;
|
|
89
|
-
|
|
90
63
|
(0, _classCallCheck2["default"])(this, TestRunner);
|
|
91
64
|
_this = _super.call(this, testRunnerContract);
|
|
92
65
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "cwd", void 0);
|
|
@@ -99,15 +72,13 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
99
72
|
_this.commandService = options.commandService;
|
|
100
73
|
return _this;
|
|
101
74
|
}
|
|
102
|
-
|
|
103
75
|
(0, _createClass2["default"])(TestRunner, [{
|
|
104
76
|
key: "run",
|
|
105
77
|
value: function () {
|
|
106
78
|
var _run = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(options) {
|
|
107
79
|
var _options$debugPort,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
80
|
+
_options$pattern,
|
|
81
|
+
_this2 = this;
|
|
111
82
|
var jestPath, debugArgs, pattern, escapeShell, command, parser;
|
|
112
83
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
113
84
|
while (1) {
|
|
@@ -117,11 +88,9 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
117
88
|
jestPath = this.resolvePathToJest();
|
|
118
89
|
debugArgs = ((_options$debugPort = options === null || options === void 0 ? void 0 : options.debugPort) !== null && _options$debugPort !== void 0 ? _options$debugPort : 0) > 0 ? "--inspect=".concat(options === null || options === void 0 ? void 0 : options.debugPort) : "";
|
|
119
90
|
pattern = (_options$pattern = options === null || options === void 0 ? void 0 : options.pattern) !== null && _options$pattern !== void 0 ? _options$pattern : '';
|
|
120
|
-
|
|
121
91
|
escapeShell = function escapeShell(cmd) {
|
|
122
92
|
return '--testPathPattern="' + cmd.replace(/(["\s'$`\\])/g, '\\$1') + '"';
|
|
123
93
|
};
|
|
124
|
-
|
|
125
94
|
command = "node --unhandled-rejections=strict ".concat(debugArgs, " ").concat(jestPath, " --reporters=\"@sprucelabs/jest-json-reporter\" --testRunner=\"jest-circus/runner\" --passWithNoTests ").concat(pattern ? escapeShell(pattern) : '');
|
|
126
95
|
parser = new _JestJsonParser["default"]();
|
|
127
96
|
this.testResults = {
|
|
@@ -139,17 +108,14 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
139
108
|
switch (_context.prev = _context.next) {
|
|
140
109
|
case 0:
|
|
141
110
|
isDebugMessaging = _this2.isDebugMessage(data);
|
|
142
|
-
|
|
143
111
|
if (isDebugMessaging) {
|
|
144
112
|
_context.next = 4;
|
|
145
113
|
break;
|
|
146
114
|
}
|
|
147
|
-
|
|
148
115
|
_context.next = 4;
|
|
149
116
|
return _this2.emit('did-error', {
|
|
150
117
|
message: data
|
|
151
118
|
});
|
|
152
|
-
|
|
153
119
|
case 4:
|
|
154
120
|
case "end":
|
|
155
121
|
return _context.stop();
|
|
@@ -157,11 +123,9 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
157
123
|
}
|
|
158
124
|
}, _callee);
|
|
159
125
|
}));
|
|
160
|
-
|
|
161
126
|
function onError(_x2) {
|
|
162
127
|
return _onError.apply(this, arguments);
|
|
163
128
|
}
|
|
164
|
-
|
|
165
129
|
return onError;
|
|
166
130
|
}(),
|
|
167
131
|
onData: function () {
|
|
@@ -176,7 +140,6 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
176
140
|
return _this2.emit('did-update', {
|
|
177
141
|
results: _this2.testResults
|
|
178
142
|
});
|
|
179
|
-
|
|
180
143
|
case 4:
|
|
181
144
|
case "end":
|
|
182
145
|
return _context2.stop();
|
|
@@ -184,35 +147,27 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
184
147
|
}
|
|
185
148
|
}, _callee2);
|
|
186
149
|
}));
|
|
187
|
-
|
|
188
150
|
function onData(_x3) {
|
|
189
151
|
return _onData.apply(this, arguments);
|
|
190
152
|
}
|
|
191
|
-
|
|
192
153
|
return onData;
|
|
193
154
|
}()
|
|
194
155
|
});
|
|
195
|
-
|
|
196
156
|
case 11:
|
|
197
157
|
_context3.next = 17;
|
|
198
158
|
break;
|
|
199
|
-
|
|
200
159
|
case 13:
|
|
201
160
|
_context3.prev = 13;
|
|
202
161
|
_context3.t0 = _context3["catch"](8);
|
|
203
|
-
|
|
204
162
|
if (this.testResults.totalTestFiles) {
|
|
205
163
|
_context3.next = 17;
|
|
206
164
|
break;
|
|
207
165
|
}
|
|
208
|
-
|
|
209
166
|
throw _context3.t0;
|
|
210
|
-
|
|
211
167
|
case 17:
|
|
212
168
|
return _context3.abrupt("return", _objectSpread(_objectSpread({}, this.testResults), {}, {
|
|
213
169
|
wasKilled: this.wasKilled
|
|
214
170
|
}));
|
|
215
|
-
|
|
216
171
|
case 18:
|
|
217
172
|
case "end":
|
|
218
173
|
return _context3.stop();
|
|
@@ -220,11 +175,9 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
220
175
|
}
|
|
221
176
|
}, _callee3, this, [[8, 13]]);
|
|
222
177
|
}));
|
|
223
|
-
|
|
224
178
|
function run(_x) {
|
|
225
179
|
return _run.apply(this, arguments);
|
|
226
180
|
}
|
|
227
|
-
|
|
228
181
|
return run;
|
|
229
182
|
}()
|
|
230
183
|
}, {
|
|
@@ -236,14 +189,12 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
236
189
|
key: "hasFailedTests",
|
|
237
190
|
value: function hasFailedTests() {
|
|
238
191
|
var _this$testResults$tot;
|
|
239
|
-
|
|
240
192
|
return ((_this$testResults$tot = this.testResults.totalFailed) !== null && _this$testResults$tot !== void 0 ? _this$testResults$tot : 0) > 0;
|
|
241
193
|
}
|
|
242
194
|
}, {
|
|
243
195
|
key: "hasSkippedTests",
|
|
244
196
|
value: function hasSkippedTests() {
|
|
245
197
|
var _this$testResults$tot2;
|
|
246
|
-
|
|
247
198
|
return ((_this$testResults$tot2 = this.testResults.totalSkipped) !== null && _this$testResults$tot2 !== void 0 ? _this$testResults$tot2 : 0) > 0;
|
|
248
199
|
}
|
|
249
200
|
}, {
|
|
@@ -256,21 +207,15 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
256
207
|
key: "resolvePathToJest",
|
|
257
208
|
value: function resolvePathToJest() {
|
|
258
209
|
var jestPath = 'node_modules/.bin/jest';
|
|
259
|
-
|
|
260
210
|
var fullPath = _spruceSkillUtils.diskUtil.resolvePath(this.cwd);
|
|
261
|
-
|
|
262
211
|
var pathParts = fullPath.split(_path["default"].sep);
|
|
263
|
-
|
|
264
212
|
while (pathParts.length > 0) {
|
|
265
213
|
var path = _path["default"].sep + _path["default"].join.apply(_path["default"], (0, _toConsumableArray2["default"])(pathParts)) + _path["default"].sep + jestPath;
|
|
266
|
-
|
|
267
214
|
if (_spruceSkillUtils.diskUtil.doesFileExist(path)) {
|
|
268
215
|
return path;
|
|
269
216
|
}
|
|
270
|
-
|
|
271
217
|
pathParts.pop();
|
|
272
218
|
}
|
|
273
|
-
|
|
274
219
|
throw new _SpruceError["default"]({
|
|
275
220
|
code: 'INVALID_TEST_DIRECTORY',
|
|
276
221
|
dir: this.cwd
|
|
@@ -279,6 +224,5 @@ var TestRunner = /*#__PURE__*/function (_AbstractEventEmitter) {
|
|
|
279
224
|
}]);
|
|
280
225
|
return TestRunner;
|
|
281
226
|
}(_mercuryEventEmitter.AbstractEventEmitter);
|
|
282
|
-
|
|
283
227
|
exports["default"] = TestRunner;
|
|
284
228
|
//# sourceMappingURL=TestRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestRunner.js","names":["testRunnerContract","buildEventContract","eventSignatures","emitPayloadSchema","buildSchema","id","fields","message","type","isRequired","results","options","valueType","TestRunner","totalTestFiles","cwd","commandService","wasKilled","jestPath","resolvePathToJest","debugArgs","debugPort","pattern","escapeShell","cmd","replace","command","parser","JestJsonParser","testResults","execute","forceColor","onError","data","isDebugMessaging","isDebugMessage","emit","onData","write","getResults","search","totalFailed","totalSkipped","kill","fullPath","diskUtil","resolvePath","pathParts","split","pathUtil","sep","length","path","join","doesFileExist","pop","SpruceError","code","dir","AbstractEventEmitter"],"sources":["../../../src/features/test/TestRunner.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter'\nimport {\n\tbuildEventContract,\n\tMercuryEventEmitter,\n} from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../errors/SpruceError'\nimport CommandService from '../../services/CommandService'\nimport JestJsonParser from '../../tests/JestJsonParser'\nimport { SpruceTestResults } from './test.types'\n\nconst testRunnerContract = buildEventContract({\n\teventSignatures: {\n\t\t'did-error': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'testRunnerDidErrorEmitPayload',\n\t\t\t\tfields: {\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'did-update': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'testRunnerDidUpdateEmitPayload',\n\t\t\t\tfields: {\n\t\t\t\t\tresults: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'SpruceTestResults',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t},\n})\ntype TestRunnerContract = typeof testRunnerContract\n\nexport default class TestRunner extends AbstractEventEmitter<TestRunnerContract> {\n\tprivate cwd: string\n\tprivate commandService: CommandService\n\tprivate wasKilled = false\n\tprivate testResults: SpruceTestResults = { totalTestFiles: 0 }\n\n\tpublic constructor(options: { cwd: string; commandService: CommandService }) {\n\t\tsuper(testRunnerContract)\n\t\tthis.cwd = options.cwd\n\t\tthis.commandService = options.commandService\n\t}\n\n\tpublic async run(options?: {\n\t\tpattern?: string | null\n\t\tdebugPort?: number | null\n\t}): Promise<SpruceTestResults & { wasKilled: boolean }> {\n\t\tthis.wasKilled = false\n\n\t\tconst jestPath = this.resolvePathToJest()\n\t\tconst debugArgs =\n\t\t\t(options?.debugPort ?? 0) > 0 ? `--inspect=${options?.debugPort}` : ``\n\t\tconst pattern = options?.pattern ?? ''\n\t\tlet escapeShell = function (cmd: string) {\n\t\t\treturn '--testPathPattern=\"' + cmd.replace(/([\"\\s'$`\\\\])/g, '\\\\$1') + '\"'\n\t\t}\n\t\tconst command = `node --unhandled-rejections=strict ${debugArgs} ${jestPath} --reporters=\"@sprucelabs/jest-json-reporter\" --testRunner=\"jest-circus/runner\" --passWithNoTests ${\n\t\t\tpattern ? escapeShell(pattern) : ''\n\t\t}`\n\n\t\tconst parser = new JestJsonParser()\n\n\t\tthis.testResults = {\n\t\t\ttotalTestFiles: 0,\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.commandService.execute(command, {\n\t\t\t\tforceColor: true,\n\t\t\t\tonError: async (data) => {\n\t\t\t\t\tconst isDebugMessaging = this.isDebugMessage(data)\n\n\t\t\t\t\tif (!isDebugMessaging) {\n\t\t\t\t\t\tawait (this as MercuryEventEmitter<TestRunnerContract>).emit(\n\t\t\t\t\t\t\t'did-error',\n\t\t\t\t\t\t\t{ message: data }\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonData: async (data) => {\n\t\t\t\t\tparser.write(data)\n\t\t\t\t\tthis.testResults = parser.getResults()\n\t\t\t\t\tawait (this as MercuryEventEmitter<TestRunnerContract>).emit(\n\t\t\t\t\t\t'did-update',\n\t\t\t\t\t\t{ results: this.testResults }\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tif (!this.testResults.totalTestFiles) {\n\t\t\t\tthrow err\n\t\t\t}\n\t\t}\n\n\t\treturn { ...this.testResults, wasKilled: this.wasKilled }\n\t}\n\n\tprivate isDebugMessage(data: string) {\n\t\treturn (\n\t\t\tdata.search(/^ attached/i) === 0 ||\n\t\t\tdata.search(/^ listening/i) === 0 ||\n\t\t\tdata.search(/^waiting for the /i) === 0\n\t\t)\n\t}\n\n\tpublic hasFailedTests() {\n\t\treturn (this.testResults.totalFailed ?? 0) > 0\n\t}\n\n\tpublic hasSkippedTests() {\n\t\treturn (this.testResults.totalSkipped ?? 0) > 0\n\t}\n\n\tpublic kill() {\n\t\tthis.wasKilled = true\n\t\tthis.commandService.kill()\n\t}\n\n\tprivate resolvePathToJest() {\n\t\tconst jestPath = 'node_modules/.bin/jest'\n\t\tconst fullPath = diskUtil.resolvePath(this.cwd)\n\t\tconst pathParts = fullPath.split(pathUtil.sep)\n\n\t\twhile (pathParts.length > 0) {\n\t\t\tconst path =\n\t\t\t\tpathUtil.sep + pathUtil.join(...pathParts) + pathUtil.sep + jestPath\n\n\t\t\tif (diskUtil.doesFileExist(path)) {\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tpathParts.pop()\n\t\t}\n\n\t\tthrow new SpruceError({ code: 'INVALID_TEST_DIRECTORY', dir: this.cwd })\n\t}\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TestRunner.js","names":["testRunnerContract","buildEventContract","eventSignatures","emitPayloadSchema","buildSchema","id","fields","message","type","isRequired","results","options","valueType","TestRunner","totalTestFiles","cwd","commandService","wasKilled","jestPath","resolvePathToJest","debugArgs","debugPort","pattern","escapeShell","cmd","replace","command","parser","JestJsonParser","testResults","execute","forceColor","onError","data","isDebugMessaging","isDebugMessage","emit","onData","write","getResults","search","totalFailed","totalSkipped","kill","fullPath","diskUtil","resolvePath","pathParts","split","pathUtil","sep","length","path","join","doesFileExist","pop","SpruceError","code","dir","AbstractEventEmitter"],"sources":["../../../src/features/test/TestRunner.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter'\nimport {\n\tbuildEventContract,\n\tMercuryEventEmitter,\n} from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../errors/SpruceError'\nimport CommandService from '../../services/CommandService'\nimport JestJsonParser from '../../tests/JestJsonParser'\nimport { SpruceTestResults } from './test.types'\n\nconst testRunnerContract = buildEventContract({\n\teventSignatures: {\n\t\t'did-error': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'testRunnerDidErrorEmitPayload',\n\t\t\t\tfields: {\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'did-update': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'testRunnerDidUpdateEmitPayload',\n\t\t\t\tfields: {\n\t\t\t\t\tresults: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'SpruceTestResults',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t},\n})\ntype TestRunnerContract = typeof testRunnerContract\n\nexport default class TestRunner extends AbstractEventEmitter<TestRunnerContract> {\n\tprivate cwd: string\n\tprivate commandService: CommandService\n\tprivate wasKilled = false\n\tprivate testResults: SpruceTestResults = { totalTestFiles: 0 }\n\n\tpublic constructor(options: { cwd: string; commandService: CommandService }) {\n\t\tsuper(testRunnerContract)\n\t\tthis.cwd = options.cwd\n\t\tthis.commandService = options.commandService\n\t}\n\n\tpublic async run(options?: {\n\t\tpattern?: string | null\n\t\tdebugPort?: number | null\n\t}): Promise<SpruceTestResults & { wasKilled: boolean }> {\n\t\tthis.wasKilled = false\n\n\t\tconst jestPath = this.resolvePathToJest()\n\t\tconst debugArgs =\n\t\t\t(options?.debugPort ?? 0) > 0 ? `--inspect=${options?.debugPort}` : ``\n\t\tconst pattern = options?.pattern ?? ''\n\t\tlet escapeShell = function (cmd: string) {\n\t\t\treturn '--testPathPattern=\"' + cmd.replace(/([\"\\s'$`\\\\])/g, '\\\\$1') + '\"'\n\t\t}\n\t\tconst command = `node --unhandled-rejections=strict ${debugArgs} ${jestPath} --reporters=\"@sprucelabs/jest-json-reporter\" --testRunner=\"jest-circus/runner\" --passWithNoTests ${\n\t\t\tpattern ? escapeShell(pattern) : ''\n\t\t}`\n\n\t\tconst parser = new JestJsonParser()\n\n\t\tthis.testResults = {\n\t\t\ttotalTestFiles: 0,\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.commandService.execute(command, {\n\t\t\t\tforceColor: true,\n\t\t\t\tonError: async (data) => {\n\t\t\t\t\tconst isDebugMessaging = this.isDebugMessage(data)\n\n\t\t\t\t\tif (!isDebugMessaging) {\n\t\t\t\t\t\tawait (this as MercuryEventEmitter<TestRunnerContract>).emit(\n\t\t\t\t\t\t\t'did-error',\n\t\t\t\t\t\t\t{ message: data }\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonData: async (data) => {\n\t\t\t\t\tparser.write(data)\n\t\t\t\t\tthis.testResults = parser.getResults()\n\t\t\t\t\tawait (this as MercuryEventEmitter<TestRunnerContract>).emit(\n\t\t\t\t\t\t'did-update',\n\t\t\t\t\t\t{ results: this.testResults }\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tif (!this.testResults.totalTestFiles) {\n\t\t\t\tthrow err\n\t\t\t}\n\t\t}\n\n\t\treturn { ...this.testResults, wasKilled: this.wasKilled }\n\t}\n\n\tprivate isDebugMessage(data: string) {\n\t\treturn (\n\t\t\tdata.search(/^ attached/i) === 0 ||\n\t\t\tdata.search(/^ listening/i) === 0 ||\n\t\t\tdata.search(/^waiting for the /i) === 0\n\t\t)\n\t}\n\n\tpublic hasFailedTests() {\n\t\treturn (this.testResults.totalFailed ?? 0) > 0\n\t}\n\n\tpublic hasSkippedTests() {\n\t\treturn (this.testResults.totalSkipped ?? 0) > 0\n\t}\n\n\tpublic kill() {\n\t\tthis.wasKilled = true\n\t\tthis.commandService.kill()\n\t}\n\n\tprivate resolvePathToJest() {\n\t\tconst jestPath = 'node_modules/.bin/jest'\n\t\tconst fullPath = diskUtil.resolvePath(this.cwd)\n\t\tconst pathParts = fullPath.split(pathUtil.sep)\n\n\t\twhile (pathParts.length > 0) {\n\t\t\tconst path =\n\t\t\t\tpathUtil.sep + pathUtil.join(...pathParts) + pathUtil.sep + jestPath\n\n\t\t\tif (diskUtil.doesFileExist(path)) {\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tpathParts.pop()\n\t\t}\n\n\t\tthrow new SpruceError({ code: 'INVALID_TEST_DIRECTORY', dir: this.cwd })\n\t}\n}\n"],"mappings":"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"}
|