@sprucelabs/spruce-cli 18.2.0 → 18.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/build/.spruce/events/events.contract.d.ts +159 -0
- package/build/.spruce/events/events.contract.js +5 -1
- package/build/.spruce/events/events.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.d.ts +46 -0
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js +57 -0
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.d.ts +68 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js +78 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.d.ts +40 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js +51 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.d.ts +9 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js +17 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js.map +1 -0
- package/build/.spruce/schemas/schemas.types.d.ts +158 -55
- package/build/.spruce/schemas/schemas.types.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.d.ts +3 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js +70 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js.map +1 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.d.ts +3 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js +35 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js.map +1 -0
- package/build/.spruce/settings.json +2 -1
- package/build/GlobalEmitter.d.ts +13 -38
- package/build/GlobalEmitter.js +3 -6
- package/build/GlobalEmitter.js.map +1 -1
- package/build/__tests__/behavioral/TestingAConversation.test.d.ts +2 -1
- package/build/__tests__/behavioral/TestingAConversation.test.js +74 -84
- package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +38 -13
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
- package/build/__tests__/behavioral/events/EventWriter.test.d.ts +4 -0
- package/build/__tests__/behavioral/events/EventWriter.test.js +116 -0
- package/build/__tests__/behavioral/events/EventWriter.test.js.map +1 -0
- package/build/__tests__/behavioral/{ListeningToCoreEvents.test.d.ts → events/ListeningToCoreEvents.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{ListeningToCoreEvents.test.js → events/ListeningToCoreEvents.test.js} +1 -1
- package/build/__tests__/behavioral/events/ListeningToCoreEvents.test.js.map +1 -0
- package/build/__tests__/behavioral/{RegisteringEventsOnBoot.test.d.ts → events/RegisteringEventsOnBoot.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{RegisteringEventsOnBoot.test.js → events/RegisteringEventsOnBoot.test.js} +2 -2
- package/build/__tests__/behavioral/events/RegisteringEventsOnBoot.test.js.map +1 -0
- package/build/__tests__/behavioral/{RegisteringGlobalEvents.test.d.ts → events/RegisteringGlobalEvents.test.d.ts} +2 -3
- package/build/__tests__/behavioral/{RegisteringGlobalEvents.test.js → events/RegisteringGlobalEvents.test.js} +45 -70
- package/build/__tests__/behavioral/events/RegisteringGlobalEvents.test.js.map +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +16 -9
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.d.ts → events/SyncingEventsOnlyFromDependencies.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.js → events/SyncingEventsOnlyFromDependencies.test.js} +1 -1
- package/build/__tests__/behavioral/events/SyncingEventsOnlyFromDependencies.test.js.map +1 -0
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.d.ts +2 -2
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +7 -7
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.d.ts +6 -0
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js +85 -0
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js.map +1 -0
- package/build/__tests__/behavioral/permissions/PermissionStore.test.d.ts +5 -4
- package/build/__tests__/behavioral/permissions/PermissionStore.test.js +97 -63
- package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/PermissionWriter.test.d.ts +5 -0
- package/build/__tests__/behavioral/permissions/PermissionWriter.test.js +88 -0
- package/build/__tests__/behavioral/permissions/PermissionWriter.test.js.map +1 -0
- package/build/__tests__/behavioral/permissions/SyncingPermissions.test.d.ts +15 -4
- package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js +325 -28
- package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.d.ts +11 -0
- package/build/__tests__/behavioral/permissions/{AbstractPermissionsTest.js → support/AbstractPermissionsTest.js} +34 -2
- package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.js.map +1 -0
- package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.d.ts +1 -0
- package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js +11 -0
- package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js.map +1 -0
- package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.d.ts +1 -0
- package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js +17 -0
- package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js.map +1 -0
- package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.d.ts +5 -0
- package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js +10 -0
- package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js.map +1 -0
- package/build/__tests__/behavioral/{CreatingSchemasWithGenerics.test.d.ts → schemas/CreatingSchemasWithGenerics.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{CreatingSchemasWithGenerics.test.js → schemas/CreatingSchemasWithGenerics.test.js} +2 -2
- package/build/__tests__/behavioral/schemas/CreatingSchemasWithGenerics.test.js.map +1 -0
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.d.ts +1 -1
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +46 -46
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
- package/build/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.d.ts → schemas/SettingUpSchemasForModuleDistribution.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.js → schemas/SettingUpSchemasForModuleDistribution.test.js} +3 -3
- package/build/__tests__/behavioral/schemas/SettingUpSchemasForModuleDistribution.test.js.map +1 -0
- package/build/__tests__/behavioral/{InstallingASkillAtAnOrg.test.d.ts → skill/InstallingASkillAtAnOrg.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{InstallingASkillAtAnOrg.test.js → skill/InstallingASkillAtAnOrg.test.js} +2 -2
- package/build/__tests__/behavioral/skill/InstallingASkillAtAnOrg.test.js.map +1 -0
- package/build/__tests__/behavioral/{LoggingInAsASkill.test.d.ts → skill/LoggingInAsASkill.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{LoggingInAsASkill.test.js → skill/LoggingInAsASkill.test.js} +2 -2
- package/build/__tests__/behavioral/skill/LoggingInAsASkill.test.js.map +1 -0
- package/build/__tests__/behavioral/{RebuildingASkill.test.d.ts → skill/RebuildingASkill.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{RebuildingASkill.test.js → skill/RebuildingASkill.test.js} +2 -2
- package/build/__tests__/behavioral/skill/RebuildingASkill.test.js.map +1 -0
- package/build/__tests__/behavioral/tests/CreatingATest.test.js +2 -2
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/{SettingUpASkillForTesting.test.d.ts → tests/SettingUpASkillForTesting.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{SettingUpASkillForTesting.test.js → tests/SettingUpASkillForTesting.test.js} +2 -2
- package/build/__tests__/behavioral/tests/SettingUpASkillForTesting.test.js.map +1 -0
- package/build/__tests__/behavioral/{TestReporterSettingsRemembered.test.d.ts → tests/TestReporterSettingsRemembered.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{TestReporterSettingsRemembered.test.js → tests/TestReporterSettingsRemembered.test.js} +1 -1
- package/build/__tests__/behavioral/tests/TestReporterSettingsRemembered.test.js.map +1 -0
- package/build/__tests__/behavioral/{TestingDataStores.test.d.ts → tests/TestingDataStores.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{TestingDataStores.test.js → tests/TestingDataStores.test.js} +3 -3
- package/build/__tests__/behavioral/tests/TestingDataStores.test.js.map +1 -0
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +7 -3
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +2 -2
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
- package/build/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.d.ts → views/RegisteringSkillViewOnBoot.test.d.ts} +4 -4
- package/build/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.js → views/RegisteringSkillViewOnBoot.test.js} +2 -2
- package/build/__tests__/behavioral/views/RegisteringSkillViewOnBoot.test.js.map +1 -0
- package/build/__tests__/behavioral/{WatchingSkillViews.test.d.ts → views/WatchingSkillViews.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{WatchingSkillViews.test.js → views/WatchingSkillViews.test.js} +2 -2
- package/build/__tests__/behavioral/views/WatchingSkillViews.test.js.map +1 -0
- package/build/__tests__/implementation/ActionExecuter2.test.d.ts +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +23 -11
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/__tests__/implementation/GlobalEmitter.test.d.ts +1 -0
- package/build/__tests__/implementation/GlobalEmitter.test.js +40 -3
- package/build/__tests__/implementation/GlobalEmitter.test.js.map +1 -1
- package/build/__tests__/implementation/SkillStore.test.js +3 -4
- package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
- package/build/features/AbstractAction.d.ts +1 -1
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/AbstractFeature.d.ts +3 -3
- package/build/features/AbstractFeature.js +8 -8
- package/build/features/AbstractFeature.js.map +1 -1
- package/build/features/ActionExecuter.d.ts +1 -1
- package/build/features/ActionExecuter.js +3 -4
- package/build/features/ActionExecuter.js.map +1 -1
- package/build/features/ActionFactory.d.ts +12 -5
- package/build/features/ActionFactory.js +27 -6
- package/build/features/ActionFactory.js.map +1 -1
- package/build/features/ActionQuestionAsker.d.ts +1 -1
- package/build/features/ActionQuestionAsker.js +6 -6
- package/build/features/ActionQuestionAsker.js.map +1 -1
- package/build/features/conversation/ConversationFeature.js +1 -1
- package/build/features/conversation/ConversationFeature.js.map +1 -1
- package/build/features/dependencies/DependencyFeature.js +1 -1
- package/build/features/dependencies/DependencyFeature.js.map +1 -1
- package/build/features/deploy/actions/HerokuAction.js +31 -33
- package/build/features/deploy/actions/HerokuAction.js.map +1 -1
- package/build/features/error/ErrorFeature.js +4 -4
- package/build/features/error/ErrorFeature.js.map +1 -1
- package/build/features/event/EventFeature.d.ts +8 -8
- package/build/features/event/EventFeature.js +7 -4
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/actions/CreateAction.js.map +1 -1
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/stores/EventStore.d.ts +9 -9
- package/build/features/event/stores/EventStore.js +26 -26
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/eventContract/EventContractFeature.js +4 -1
- package/build/features/eventContract/EventContractFeature.js.map +1 -1
- package/build/features/eventContract/actions/PullAction.js +10 -5
- package/build/features/eventContract/actions/PullAction.js.map +1 -1
- package/build/features/features.types.d.ts +2 -37
- package/build/features/features.types.js +0 -41
- package/build/features/features.types.js.map +1 -1
- package/build/features/log/LogFeature.js +1 -1
- package/build/features/log/LogFeature.js.map +1 -1
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/organization/actions/InstallAction.js.map +1 -1
- package/build/features/permission/PermissionFeature.d.ts +12 -2
- package/build/features/permission/PermissionFeature.js +138 -15
- package/build/features/permission/PermissionFeature.js.map +1 -1
- package/build/features/permission/actions/CreateAction.js +4 -1
- package/build/features/permission/actions/CreateAction.js.map +1 -1
- package/build/features/permission/actions/SyncAction.d.ts +5 -1
- package/build/features/permission/actions/SyncAction.js +28 -10
- package/build/features/permission/actions/SyncAction.js.map +1 -1
- package/build/features/permission/stores/PermissionStore.d.ts +6 -1
- package/build/features/permission/stores/PermissionStore.js +43 -31
- package/build/features/permission/stores/PermissionStore.js.map +1 -1
- package/build/features/permission/writers/PermissionWriter.d.ts +7 -1
- package/build/features/permission/writers/PermissionWriter.js +67 -18
- package/build/features/permission/writers/PermissionWriter.js.map +1 -1
- package/build/features/person/PersonFeature.js +1 -1
- package/build/features/person/PersonFeature.js.map +1 -1
- package/build/features/sandbox/SandboxFeature.js +1 -1
- package/build/features/sandbox/SandboxFeature.js.map +1 -1
- package/build/features/schema/SchemaFeature.d.ts +8 -8
- package/build/features/schema/SchemaFeature.js +4 -4
- package/build/features/schema/SchemaFeature.js.map +1 -1
- package/build/features/schema/writers/SchemaWriter.d.ts +12 -12
- package/build/features/schema/writers/SchemaWriter.js.map +1 -1
- package/build/features/skill/SkillFeature.d.ts +11 -11
- package/build/features/skill/SkillFeature.js +2 -2
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/skill/actions/RebuildAction.js.map +1 -1
- package/build/features/skill/actions/RegisterAction.js.map +1 -1
- package/build/features/skill/stores/SkillStore.js +1 -2
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/store/StoreFeature.js +1 -1
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/features/store/actions/SyncAction.d.ts +1 -1
- package/build/features/store/actions/SyncAction.js.map +1 -1
- package/build/features/test/TestFeature.js +1 -1
- package/build/features/test/TestFeature.js.map +1 -1
- package/build/features/view/ViewFeature.js +1 -1
- package/build/features/view/ViewFeature.js.map +1 -1
- package/build/schemas/v2020_07_22/actionResponse.builder.d.ts +85 -0
- package/build/schemas/v2020_07_22/actionResponse.builder.js +70 -0
- package/build/schemas/v2020_07_22/actionResponse.builder.js.map +1 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.d.ts +27 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.js +45 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.js.map +1 -0
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js +4 -40
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
- package/build/services/CommandService.d.ts +2 -2
- package/build/services/CommandService.js +6 -6
- package/build/services/CommandService.js.map +1 -1
- package/build/services/PkgService.d.ts +1 -0
- package/build/services/PkgService.js +5 -0
- package/build/services/PkgService.js.map +1 -1
- package/build/tests/AbstractCliTest.d.ts +7 -3
- package/build/tests/AbstractCliTest.js +81 -45
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/buildTestCache.js +7 -0
- package/build/tests/buildTestCache.js.map +1 -1
- package/build/tests/fixtures/FeatureFixture.js +1 -0
- package/build/tests/fixtures/FeatureFixture.js.map +1 -1
- package/build/tests/utilities/test.utility.d.ts +2 -0
- package/build/tests/utilities/test.utility.js +6 -0
- package/build/tests/utilities/test.utility.js.map +1 -1
- package/node_modules/@typescript-eslint/parser/package.json +5 -5
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts +4 -2
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js +13 -5
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts +2 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js +3 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
- package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +20 -2
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +20 -2
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js +2 -0
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js.map +1 -1
- package/node_modules/@typescript-eslint/types/package.json +2 -2
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/estree-to-ts-node-types.d.ts +2 -0
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/ts-nodes.d.ts +2 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +15 -3
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts +2 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts +2 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js +63 -49
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js.map +1 -1
- package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
- package/package.json +65 -33
- package/src/.spruce/events/events.contract.ts +24 -0
- package/src/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.ts +54 -0
- package/src/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.ts +79 -0
- package/src/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.ts +48 -0
- package/src/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.ts +13 -0
- package/src/.spruce/schemas/schemas.types.ts +171 -52
- package/src/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.ts +58 -0
- package/src/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.ts +33 -0
- package/src/.spruce/settings.json +2 -1
- package/src/GlobalEmitter.ts +2 -7
- package/src/__tests__/behavioral/TestingAConversation.test.ts +20 -37
- package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +14 -2
- package/src/__tests__/behavioral/events/EventWriter.test.ts +75 -0
- package/src/__tests__/behavioral/{ListeningToCoreEvents.test.ts → events/ListeningToCoreEvents.test.ts} +1 -1
- package/src/__tests__/behavioral/{RegisteringEventsOnBoot.test.ts → events/RegisteringEventsOnBoot.test.ts} +2 -2
- package/src/__tests__/behavioral/{RegisteringGlobalEvents.test.ts → events/RegisteringGlobalEvents.test.ts} +4 -12
- package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
- package/src/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.ts → events/SyncingEventsOnlyFromDependencies.test.ts} +2 -2
- package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +2 -2
- package/src/__tests__/behavioral/permissions/PermissionPlugin.test.ts +24 -0
- package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +96 -38
- package/src/__tests__/behavioral/permissions/PermissionWriter.test.ts +24 -0
- package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +125 -8
- package/src/__tests__/behavioral/permissions/support/AbstractPermissionsTest.ts +38 -0
- package/src/__tests__/behavioral/permissions/support/generateShortAlphaId.ts +5 -0
- package/src/__tests__/behavioral/permissions/support/renderPermissionTestFile.ts +27 -0
- package/src/__tests__/behavioral/permissions/support/sortPermissionContracts.ts +3 -0
- package/src/__tests__/behavioral/{CreatingSchemasWithGenerics.test.ts → schemas/CreatingSchemasWithGenerics.test.ts} +2 -2
- package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +12 -12
- package/src/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.ts → schemas/SettingUpSchemasForModuleDistribution.test.ts} +4 -4
- package/src/__tests__/behavioral/{InstallingASkillAtAnOrg.test.ts → skill/InstallingASkillAtAnOrg.test.ts} +2 -2
- package/src/__tests__/behavioral/{LoggingInAsASkill.test.ts → skill/LoggingInAsASkill.test.ts} +3 -3
- package/src/__tests__/behavioral/{RebuildingASkill.test.ts → skill/RebuildingASkill.test.ts} +2 -2
- package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -2
- package/src/__tests__/behavioral/{SettingUpASkillForTesting.test.ts → tests/SettingUpASkillForTesting.test.ts} +2 -2
- package/src/__tests__/behavioral/{TestReporterSettingsRemembered.test.ts → tests/TestReporterSettingsRemembered.test.ts} +2 -2
- package/src/__tests__/behavioral/{TestingDataStores.test.ts → tests/TestingDataStores.test.ts} +3 -3
- package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +3 -0
- package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +3 -2
- package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
- package/src/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.ts → views/RegisteringSkillViewOnBoot.test.ts} +2 -2
- package/src/__tests__/behavioral/{WatchingSkillViews.test.ts → views/WatchingSkillViews.test.ts} +3 -3
- package/src/__tests__/implementation/ActionExecuter2.test.ts +13 -6
- package/src/__tests__/implementation/GlobalEmitter.test.ts +22 -1
- package/src/__tests__/implementation/SkillStore.test.ts +1 -2
- package/src/features/AbstractAction.ts +2 -2
- package/src/features/AbstractFeature.ts +8 -8
- package/src/features/ActionExecuter.ts +4 -5
- package/src/features/ActionFactory.ts +44 -20
- package/src/features/ActionQuestionAsker.ts +17 -17
- package/src/features/conversation/ConversationFeature.ts +1 -1
- package/src/features/dependencies/DependencyFeature.ts +1 -1
- package/src/features/deploy/actions/HerokuAction.ts +2 -2
- package/src/features/error/ErrorFeature.ts +4 -4
- package/src/features/event/EventFeature.ts +15 -14
- package/src/features/event/actions/CreateAction.ts +1 -1
- package/src/features/event/actions/ListenAction.ts +1 -1
- package/src/features/event/stores/EventStore.ts +37 -37
- package/src/features/eventContract/EventContractFeature.ts +6 -1
- package/src/features/eventContract/actions/PullAction.ts +7 -3
- package/src/features/features.types.ts +4 -41
- package/src/features/log/LogFeature.ts +1 -1
- package/src/features/node/NodeFeature.ts +1 -1
- package/src/features/organization/actions/InstallAction.ts +1 -1
- package/src/features/permission/PermissionFeature.ts +68 -11
- package/src/features/permission/actions/CreateAction.ts +2 -0
- package/src/features/permission/actions/SyncAction.ts +22 -3
- package/src/features/permission/stores/PermissionStore.ts +27 -8
- package/src/features/permission/writers/PermissionWriter.ts +62 -4
- package/src/features/person/PersonFeature.ts +1 -1
- package/src/features/sandbox/SandboxFeature.ts +1 -3
- package/src/features/schema/SchemaFeature.ts +14 -14
- package/src/features/schema/writers/SchemaWriter.ts +14 -15
- package/src/features/skill/SkillFeature.ts +18 -18
- package/src/features/skill/actions/RebuildAction.ts +1 -1
- package/src/features/skill/actions/RegisterAction.ts +1 -1
- package/src/features/skill/stores/SkillStore.ts +1 -2
- package/src/features/store/StoreFeature.ts +1 -1
- package/src/features/store/actions/SyncAction.ts +1 -1
- package/src/features/test/TestFeature.ts +1 -1
- package/src/features/view/ViewFeature.ts +1 -1
- package/src/schemas/v2020_07_22/actionResponse.builder.ts +62 -0
- package/src/schemas/v2020_07_22/generatedFile.builder.ts +44 -0
- package/src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts +3 -46
- package/src/services/CommandService.ts +5 -5
- package/src/services/PkgService.ts +4 -0
- package/src/tests/AbstractCliTest.ts +31 -13
- package/src/tests/buildTestCache.ts +7 -0
- package/src/tests/fixtures/FeatureFixture.ts +2 -0
- package/src/tests/utilities/test.utility.ts +13 -0
- package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +0 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +0 -1
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +0 -1
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +0 -1
- package/build/__tests__/behavioral/RebuildingASkill.test.js.map +0 -1
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +0 -1
- package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +0 -1
- package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +0 -1
- package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +0 -1
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +0 -1
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +0 -1
- package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +0 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +0 -1
- package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +0 -1
- package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.d.ts +0 -8
- package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.js.map +0 -1
- package/src/__tests__/behavioral/permissions/AbstractPermissionsTest.ts +0 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandService.js","names":["process","setMaxListeners","CommandService","cwd","activeChildProcess","pid","ignoreCloseErrors","treeKill","cmd","options","args","stringArgv","executable","shift","boundKill","kill","bind","Error","getMockResponse","mockResponse","mockKey","commandsRunCapturedByMockResponses","push","callback","code","SpruceError","join","stdout","stderr","on","Promise","resolve","reject","spawnOptions","shouldStream","stdio","env","PATH","IS_CLI","FORCE_COLOR","forceColor","shell","child","spawn","outStream","pipe","addListener","data","onData","toString","onError","closeHandler","off","undefined","setTimeout","removeAllListeners","ignoreErrors","search","escapeRegExp","ERROR_DIVIDER","stderrParts","split","err","AbstractSpruceError","parse","trim","commands","mockResponses","match","find","r","command","RegExp","replace","response","unshift"],"sources":["../../src/services/CommandService.ts"],"sourcesContent":["import { spawn, SpawnOptions, ChildProcess } from 'child_process'\nimport { Writable } from 'stream'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport { ERROR_DIVIDER } from '@sprucelabs/spruce-skill-utils'\nimport escapeRegExp from 'lodash/escapeRegExp'\nimport stringArgv from 'string-argv'\nimport treeKill from 'tree-kill'\nimport SpruceError from '../errors/SpruceError'\n\nprocess.setMaxListeners(100)\n\nexport default class CommandService {\n\tpublic cwd: string\n\tprivate activeChildProcess: ChildProcess | undefined\n\tprivate ignoreCloseErrors = false\n\tprivate static mockResponses: {\n\t\tcommand: string | RegExp\n\t\tresponse: MockResponse\n\t}[] = []\n\tprivate static commandsRunCapturedByMockResponses: string[] = []\n\n\tpublic constructor(cwd: string) {\n\t\tthis.cwd = cwd\n\t}\n\n\tpublic async execute(\n\t\tcmd: string,\n\t\toptions?: {\n\t\t\tignoreErrors?: boolean\n\t\t\targs?: string[]\n\t\t\tshouldStream?: boolean\n\t\t\toutStream?: Writable\n\t\t\tonError?: (error: string) => void\n\t\t\tonData?: (data: string) => void\n\t\t\tspawnOptions?: SpawnOptions\n\t\t\tforceColor?: boolean\n\t\t\tenv?: Record<string, any>\n\t\t}\n\t): Promise<{\n\t\tstdout: string\n\t}> {\n\t\tconst cwd = this.cwd\n\t\tconst args = options?.args || stringArgv(cmd)\n\t\tconst executable = options?.args ? cmd : args.shift()\n\t\tconst boundKill = this.kill.bind(this)\n\n\t\tif (!executable) {\n\t\t\tthrow new Error('Bad params sent to command service')\n\t\t}\n\n\t\tconst { mockResponse, mockKey } = this.getMockResponse(executable, args)\n\n\t\tif (mockResponse) {\n\t\t\tCommandService.commandsRunCapturedByMockResponses.push(mockKey)\n\t\t\tmockResponse.callback?.(executable, args)\n\n\t\t\tif (mockResponse.code !== 0) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\tcwd,\n\t\t\t\t\tstdout: mockResponse.stdout,\n\t\t\t\t\tstderr: mockResponse.stderr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn { stdout: mockResponse.stdout ?? '' }\n\t\t}\n\n\t\tprocess.on('exit', boundKill)\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet stdout = ''\n\t\t\tlet stderr = ''\n\t\t\tconst spawnOptions: SpawnOptions = options?.shouldStream\n\t\t\t\t? {\n\t\t\t\t\t\tstdio: 'inherit',\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshell: true,\n\t\t\t\t\t\t...options?.spawnOptions,\n\t\t\t\t }\n\n\t\t\tconst child = spawn(executable, args, spawnOptions)\n\t\t\tthis.activeChildProcess = child\n\n\t\t\tif (options?.outStream) {\n\t\t\t\tchild.stdout?.pipe(options.outStream)\n\t\t\t}\n\n\t\t\tchild.stdout?.addListener('data', (data) => {\n\t\t\t\toptions?.onData?.(data.toString())\n\t\t\t\tstdout += data\n\t\t\t})\n\n\t\t\tchild.stderr?.addListener('data', (data) => {\n\t\t\t\toptions?.onError?.(data.toString())\n\t\t\t\tstderr += data\n\t\t\t})\n\n\t\t\tconst closeHandler = (code: number) => {\n\t\t\t\tprocess.off('exit', boundKill)\n\n\t\t\t\tif (!this.activeChildProcess) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.activeChildProcess = undefined\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchild.stdout?.removeAllListeners()\n\t\t\t\t\tchild.stderr?.removeAllListeners()\n\t\t\t\t\tchild.removeAllListeners()\n\n\t\t\t\t\tif (code === 0 || this.ignoreCloseErrors || options?.ignoreErrors) {\n\t\t\t\t\t\tresolve({ stdout })\n\t\t\t\t\t\tthis.ignoreCloseErrors = false\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (stderr.search(escapeRegExp(ERROR_DIVIDER)) > -1) {\n\t\t\t\t\t\t\tconst stderrParts = stderr.split(ERROR_DIVIDER)\n\t\t\t\t\t\t\tconst err = AbstractSpruceError.parse(stderrParts[1], SpruceError)\n\t\t\t\t\t\t\treject(err)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treject(\n\t\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\tstdout,\n\t\t\t\t\t\t\t\tstderr,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}, 0)\n\t\t\t}\n\n\t\t\tchild.addListener('close', closeHandler)\n\t\t\tchild.addListener('exit', closeHandler)\n\t\t})\n\t}\n\n\tpublic kill = () => {\n\t\tif (this.activeChildProcess?.pid) {\n\t\t\tthis.ignoreCloseErrors = true\n\t\t\ttreeKill(this.activeChildProcess.pid, 'SIGTERM')\n\t\t}\n\t}\n\n\tpublic pid = () => {\n\t\treturn this.activeChildProcess?.pid\n\t}\n\n\tprivate getMockResponse(executable: string, args: string[]) {\n\t\tconst mockKey = `${executable} ${args.join(' ')}`.trim()\n\t\tconst commands = CommandService.mockResponses\n\t\tconst match = commands.find((r) =>\n\t\t\tr.command instanceof RegExp\n\t\t\t\t? mockKey.search(r.command) > -1\n\t\t\t\t: r.command.replace(/ +/gis, '') === mockKey.replace(/ +/gis, '')\n\t\t)\n\n\t\treturn { mockResponse: match?.response, mockKey }\n\t}\n\n\tpublic static fakeCommand(command: string | RegExp, response: MockResponse) {\n\t\tthis.mockResponses.unshift({\n\t\t\tcommand,\n\t\t\tresponse,\n\t\t})\n\t}\n\n\tpublic static clearMockResponses() {\n\t\tthis.mockResponses = []\n\t}\n}\n\ninterface MockResponse {\n\tcode: number\n\tstdout?: string\n\tstderr?: string\n\tcallback?: (executable: string, args: any[]) => void\n}\n"],"mappings":";;;;;;;;;;;;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAA+C;AAAA;AAE/CA,OAAO,CAACC,eAAe,CAAC,GAAG,CAAC;AAAA,IAEPC,cAAc;EAUlC,wBAAmBC,GAAW,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA,4DAPJ,KAAK;IAAA,+CA8InB,YAAM;MAAA;MACnB,6BAAI,KAAI,CAACC,kBAAkB,kDAAvB,sBAAyBC,GAAG,EAAE;QACjC,KAAI,CAACC,iBAAiB,GAAG,IAAI;QAC7B,IAAAC,oBAAQ,EAAC,KAAI,CAACH,kBAAkB,CAACC,GAAG,EAAE,SAAS,CAAC;MACjD;IACD,CAAC;IAAA,8CAEY,YAAM;MAAA;MAClB,iCAAO,KAAI,CAACD,kBAAkB,2DAAvB,uBAAyBC,GAAG;IACpC,CAAC;IA/IA,IAAI,CAACF,GAAG,GAAGA,GAAG;EACf;EAAC;IAAA;IAAA;MAAA,6FAED,iBACCK,GAAW,EACXC,OAUC;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAIKN,GAAG,GAAG,IAAI,CAACA,GAAG;gBACdO,IAAI,GAAG,CAAAD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,IAAI,KAAI,IAAAC,sBAAU,EAACH,GAAG,CAAC;gBACvCI,UAAU,GAAGH,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,IAAI,GAAGF,GAAG,GAAGE,IAAI,CAACG,KAAK,EAAE;gBAC/CC,SAAS,GAAG,IAAI,CAACC,IAAI,CAACC,IAAI,CAAC,IAAI,CAAC;gBAAA,IAEjCJ,UAAU;kBAAA;kBAAA;gBAAA;gBAAA,MACR,IAAIK,KAAK,CAAC,oCAAoC,CAAC;cAAA;gBAAA,wBAGpB,IAAI,CAACC,eAAe,CAACN,UAAU,EAAEF,IAAI,CAAC,EAAhES,YAAY,yBAAZA,YAAY,EAAEC,OAAO,yBAAPA,OAAO;gBAAA,KAEzBD,YAAY;kBAAA;kBAAA;gBAAA;gBACfjB,cAAc,CAACmB,kCAAkC,CAACC,IAAI,CAACF,OAAO,CAAC;gBAC/D,yBAAAD,YAAY,CAACI,QAAQ,0DAArB,2BAAAJ,YAAY,EAAYP,UAAU,EAAEF,IAAI,CAAC;gBAAA,MAErCS,YAAY,CAACK,IAAI,KAAK,CAAC;kBAAA;kBAAA;gBAAA;gBAAA,MACpB,IAAIC,uBAAW,CAAC;kBACrBD,IAAI,EAAE,0BAA0B;kBAChChB,GAAG,YAAKI,UAAU,cAAIF,IAAI,CAACgB,IAAI,CAAC,GAAG,CAAC,CAAE;kBACtCvB,GAAG,EAAHA,GAAG;kBACHwB,MAAM,EAAER,YAAY,CAACQ,MAAM;kBAC3BC,MAAM,EAAET,YAAY,CAACS;gBACtB,CAAC,CAAC;cAAA;gBAAA,iCAGI;kBAAED,MAAM,0BAAER,YAAY,CAACQ,MAAM,uEAAI;gBAAG,CAAC;cAAA;gBAG7C3B,OAAO,CAAC6B,EAAE,CAAC,MAAM,EAAEf,SAAS,CAAC;gBAAA,iCAEtB,IAAIgB,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;kBAAA;kBACvC,IAAIL,MAAM,GAAG,EAAE;kBACf,IAAIC,MAAM,GAAG,EAAE;kBACf,IAAMK,YAA0B,GAAGxB,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEyB,YAAY,GACrD;oBACAC,KAAK,EAAE,SAAS;oBAChBhC,GAAG,EAAHA,GAAG;oBACHiC,GAAG;sBACFC,IAAI,EAAErC,OAAO,CAACoC,GAAG,CAACC,IAAI;sBACtBC,MAAM,EAAE,MAAM;sBACdC,WAAW,EAAE9B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE+B,UAAU,GAAG,GAAG,GAAG;oBAAG,GACzC/B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE2B,GAAG;kBAEhB,CAAC;oBAEDjC,GAAG,EAAHA,GAAG;oBACHiC,GAAG;sBACFC,IAAI,EAAErC,OAAO,CAACoC,GAAG,CAACC,IAAI;sBACtBC,MAAM,EAAE,MAAM;sBACdC,WAAW,EAAE9B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE+B,UAAU,GAAG,GAAG,GAAG;oBAAG,GACzC/B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE2B,GAAG,CACf;oBACDK,KAAK,EAAE;kBAAI,GACRhC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEwB,YAAY,CACvB;kBAEJ,IAAMS,KAAK,GAAG,IAAAC,oBAAK,EAAC/B,UAAU,EAAEF,IAAI,EAAEuB,YAAY,CAAC;kBACnD,MAAI,CAAC7B,kBAAkB,GAAGsC,KAAK;kBAE/B,IAAIjC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEmC,SAAS,EAAE;oBAAA;oBACvB,iBAAAF,KAAK,CAACf,MAAM,kDAAZ,cAAckB,IAAI,CAACpC,OAAO,CAACmC,SAAS,CAAC;kBACtC;kBAEA,kBAAAF,KAAK,CAACf,MAAM,mDAAZ,eAAcmB,WAAW,CAAC,MAAM,EAAE,UAACC,IAAI,EAAK;oBAAA;oBAC3CtC,OAAO,aAAPA,OAAO,0CAAPA,OAAO,CAAEuC,MAAM,oDAAf,qBAAAvC,OAAO,EAAWsC,IAAI,CAACE,QAAQ,EAAE,CAAC;oBAClCtB,MAAM,IAAIoB,IAAI;kBACf,CAAC,CAAC;kBAEF,iBAAAL,KAAK,CAACd,MAAM,kDAAZ,cAAckB,WAAW,CAAC,MAAM,EAAE,UAACC,IAAI,EAAK;oBAAA;oBAC3CtC,OAAO,aAAPA,OAAO,2CAAPA,OAAO,CAAEyC,OAAO,qDAAhB,sBAAAzC,OAAO,EAAYsC,IAAI,CAACE,QAAQ,EAAE,CAAC;oBACnCrB,MAAM,IAAImB,IAAI;kBACf,CAAC,CAAC;kBAEF,IAAMI,YAAY,GAAG,SAAfA,YAAY,CAAI3B,IAAY,EAAK;oBACtCxB,OAAO,CAACoD,GAAG,CAAC,MAAM,EAAEtC,SAAS,CAAC;oBAE9B,IAAI,CAAC,MAAI,CAACV,kBAAkB,EAAE;sBAC7B;oBACD;oBACA,MAAI,CAACA,kBAAkB,GAAGiD,SAAS;oBAEnCC,UAAU,CAAC,YAAM;sBAAA;sBAChB,kBAAAZ,KAAK,CAACf,MAAM,mDAAZ,eAAc4B,kBAAkB,EAAE;sBAClC,kBAAAb,KAAK,CAACd,MAAM,mDAAZ,eAAc2B,kBAAkB,EAAE;sBAClCb,KAAK,CAACa,kBAAkB,EAAE;sBAE1B,IAAI/B,IAAI,KAAK,CAAC,IAAI,MAAI,CAAClB,iBAAiB,IAAIG,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE+C,YAAY,EAAE;wBAClEzB,OAAO,CAAC;0BAAEJ,MAAM,EAANA;wBAAO,CAAC,CAAC;wBACnB,MAAI,CAACrB,iBAAiB,GAAG,KAAK;sBAC/B,CAAC,MAAM;wBACN,IAAIsB,MAAM,CAAC6B,MAAM,CAAC,IAAAC,wBAAY,EAACC,+BAAa,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;0BACpD,IAAMC,WAAW,GAAGhC,MAAM,CAACiC,KAAK,CAACF,+BAAa,CAAC;0BAC/C,IAAMG,GAAG,GAAGC,iBAAmB,CAACC,KAAK,CAACJ,WAAW,CAAC,CAAC,CAAC,EAAEnC,uBAAW,CAAC;0BAClEO,MAAM,CAAC8B,GAAG,CAAC;0BACX;wBACD;wBAEA9B,MAAM,CACL,IAAIP,uBAAW,CAAC;0BACfD,IAAI,EAAE,0BAA0B;0BAChChB,GAAG,YAAKI,UAAU,cAAIF,IAAI,CAACgB,IAAI,CAAC,GAAG,CAAC,CAAE;0BACtCvB,GAAG,EAAHA,GAAG;0BACHwB,MAAM,EAANA,MAAM;0BACNC,MAAM,EAANA;wBACD,CAAC,CAAC,CACF;sBACF;oBACD,CAAC,EAAE,CAAC,CAAC;kBACN,CAAC;kBAEDc,KAAK,CAACI,WAAW,CAAC,OAAO,EAAEK,YAAY,CAAC;kBACxCT,KAAK,CAACI,WAAW,CAAC,MAAM,EAAEK,YAAY,CAAC;gBACxC,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAaD,yBAAwBvC,UAAkB,EAAEF,IAAc,EAAE;MAC3D,IAAMU,OAAO,GAAG,UAAGR,UAAU,cAAIF,IAAI,CAACgB,IAAI,CAAC,GAAG,CAAC,EAAGuC,IAAI,EAAE;MACxD,IAAMC,QAAQ,GAAGhE,cAAc,CAACiE,aAAa;MAC7C,IAAMC,KAAK,GAAGF,QAAQ,CAACG,IAAI,CAAC,UAACC,CAAC;QAAA,OAC7BA,CAAC,CAACC,OAAO,YAAYC,MAAM,GACxBpD,OAAO,CAACqC,MAAM,CAACa,CAAC,CAACC,OAAO,CAAC,GAAG,CAAC,CAAC,GAC9BD,CAAC,CAACC,OAAO,CAACE,OAAO,CAAC,MAAO,EAAE,EAAE,CAAC,KAAKrD,OAAO,CAACqD,OAAO,CAAC,MAAO,EAAE,EAAE,CAAC;MAAA,EAClE;MAED,OAAO;QAAEtD,YAAY,EAAEiD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,QAAQ;QAAEtD,OAAO,EAAPA;MAAQ,CAAC;IAClD;EAAC;IAAA;IAAA,OAED,qBAA0BmD,OAAwB,EAAEG,QAAsB,EAAE;MAC3E,IAAI,CAACP,aAAa,CAACQ,OAAO,CAAC;QAC1BJ,OAAO,EAAPA,OAAO;QACPG,QAAQ,EAARA;MACD,CAAC,CAAC;IACH;EAAC;IAAA;IAAA,OAED,8BAAmC;MAClC,IAAI,CAACP,aAAa,GAAG,EAAE;IACxB;EAAC;EAAA;AAAA;AAAA;AAAA,iCAjLmBjE,cAAc,mBAO5B,EAAE;AAAA,iCAPYA,cAAc,wCAQ4B,EAAE"}
|
|
1
|
+
{"version":3,"file":"CommandService.js","names":["process","setMaxListeners","CommandService","cwd","activeChildProcess","pid","ignoreCloseErrors","treeKill","cmd","options","args","stringArgv","executable","shift","boundKill","kill","bind","Error","getMockResponse","mockResponse","mockKey","commandsRunCapturedByMockResponses","push","callback","code","SpruceError","join","stdout","stderr","on","Promise","resolve","reject","spawnOptions","shouldStream","stdio","env","PATH","IS_CLI","FORCE_COLOR","forceColor","shell","child","spawn","outStream","pipe","addListener","data","onData","toString","onError","closeHandler","off","undefined","setTimeout","removeAllListeners","ignoreErrors","search","escapeRegExp","ERROR_DIVIDER","stderrParts","split","err","AbstractSpruceError","parse","trim","commands","fakeResponses","match","find","r","command","RegExp","replace","response","unshift"],"sources":["../../src/services/CommandService.ts"],"sourcesContent":["import { spawn, SpawnOptions, ChildProcess } from 'child_process'\nimport { Writable } from 'stream'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport { ERROR_DIVIDER } from '@sprucelabs/spruce-skill-utils'\nimport escapeRegExp from 'lodash/escapeRegExp'\nimport stringArgv from 'string-argv'\nimport treeKill from 'tree-kill'\nimport SpruceError from '../errors/SpruceError'\n\nprocess.setMaxListeners(100)\n\nexport default class CommandService {\n\tpublic cwd: string\n\tprivate activeChildProcess: ChildProcess | undefined\n\tprivate ignoreCloseErrors = false\n\tprivate static fakeResponses: {\n\t\tcommand: string | RegExp\n\t\tresponse: MockResponse\n\t}[] = []\n\tprivate static commandsRunCapturedByMockResponses: string[] = []\n\n\tpublic constructor(cwd: string) {\n\t\tthis.cwd = cwd\n\t}\n\n\tpublic async execute(\n\t\tcmd: string,\n\t\toptions?: {\n\t\t\tignoreErrors?: boolean\n\t\t\targs?: string[]\n\t\t\tshouldStream?: boolean\n\t\t\toutStream?: Writable\n\t\t\tonError?: (error: string) => void\n\t\t\tonData?: (data: string) => void\n\t\t\tspawnOptions?: SpawnOptions\n\t\t\tforceColor?: boolean\n\t\t\tenv?: Record<string, any>\n\t\t}\n\t): Promise<{\n\t\tstdout: string\n\t}> {\n\t\tconst cwd = this.cwd\n\t\tconst args = options?.args || stringArgv(cmd)\n\t\tconst executable = options?.args ? cmd : args.shift()\n\t\tconst boundKill = this.kill.bind(this)\n\n\t\tif (!executable) {\n\t\t\tthrow new Error('Bad params sent to command service')\n\t\t}\n\n\t\tconst { mockResponse, mockKey } = this.getMockResponse(executable, args)\n\n\t\tif (mockResponse) {\n\t\t\tCommandService.commandsRunCapturedByMockResponses.push(mockKey)\n\t\t\tmockResponse.callback?.(executable, args)\n\n\t\t\tif (mockResponse.code !== 0) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\tcwd,\n\t\t\t\t\tstdout: mockResponse.stdout,\n\t\t\t\t\tstderr: mockResponse.stderr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn { stdout: mockResponse.stdout ?? '' }\n\t\t}\n\n\t\tprocess.on('exit', boundKill)\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet stdout = ''\n\t\t\tlet stderr = ''\n\t\t\tconst spawnOptions: SpawnOptions = options?.shouldStream\n\t\t\t\t? {\n\t\t\t\t\t\tstdio: 'inherit',\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tenv: {\n\t\t\t\t\t\t\tPATH: process.env.PATH,\n\t\t\t\t\t\t\tIS_CLI: 'true',\n\t\t\t\t\t\t\tFORCE_COLOR: options?.forceColor ? '1' : '0',\n\t\t\t\t\t\t\t...options?.env,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshell: true,\n\t\t\t\t\t\t...options?.spawnOptions,\n\t\t\t\t }\n\n\t\t\tconst child = spawn(executable, args, spawnOptions)\n\t\t\tthis.activeChildProcess = child\n\n\t\t\tif (options?.outStream) {\n\t\t\t\tchild.stdout?.pipe(options.outStream)\n\t\t\t}\n\n\t\t\tchild.stdout?.addListener('data', (data) => {\n\t\t\t\toptions?.onData?.(data.toString())\n\t\t\t\tstdout += data\n\t\t\t})\n\n\t\t\tchild.stderr?.addListener('data', (data) => {\n\t\t\t\toptions?.onError?.(data.toString())\n\t\t\t\tstderr += data\n\t\t\t})\n\n\t\t\tconst closeHandler = (code: number) => {\n\t\t\t\tprocess.off('exit', boundKill)\n\n\t\t\t\tif (!this.activeChildProcess) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.activeChildProcess = undefined\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchild.stdout?.removeAllListeners()\n\t\t\t\t\tchild.stderr?.removeAllListeners()\n\t\t\t\t\tchild.removeAllListeners()\n\n\t\t\t\t\tif (code === 0 || this.ignoreCloseErrors || options?.ignoreErrors) {\n\t\t\t\t\t\tresolve({ stdout })\n\t\t\t\t\t\tthis.ignoreCloseErrors = false\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (stderr.search(escapeRegExp(ERROR_DIVIDER)) > -1) {\n\t\t\t\t\t\t\tconst stderrParts = stderr.split(ERROR_DIVIDER)\n\t\t\t\t\t\t\tconst err = AbstractSpruceError.parse(stderrParts[1], SpruceError)\n\t\t\t\t\t\t\treject(err)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treject(\n\t\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t\tcode: 'EXECUTING_COMMAND_FAILED',\n\t\t\t\t\t\t\t\tcmd: `${executable} ${args.join(' ')}`,\n\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\tstdout,\n\t\t\t\t\t\t\t\tstderr,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}, 0)\n\t\t\t}\n\n\t\t\tchild.addListener('close', closeHandler)\n\t\t\tchild.addListener('exit', closeHandler)\n\t\t})\n\t}\n\n\tpublic kill = () => {\n\t\tif (this.activeChildProcess?.pid) {\n\t\t\tthis.ignoreCloseErrors = true\n\t\t\ttreeKill(this.activeChildProcess.pid, 'SIGTERM')\n\t\t}\n\t}\n\n\tpublic pid = () => {\n\t\treturn this.activeChildProcess?.pid\n\t}\n\n\tprivate getMockResponse(executable: string, args: string[]) {\n\t\tconst mockKey = `${executable} ${args.join(' ')}`.trim()\n\t\tconst commands = CommandService.fakeResponses\n\t\tconst match = commands.find((r) =>\n\t\t\tr.command instanceof RegExp\n\t\t\t\t? mockKey.search(r.command) > -1\n\t\t\t\t: r.command.replace(/ +/gis, '') === mockKey.replace(/ +/gis, '')\n\t\t)\n\n\t\treturn { mockResponse: match?.response, mockKey }\n\t}\n\n\tpublic static fakeCommand(command: string | RegExp, response: MockResponse) {\n\t\tthis.fakeResponses.unshift({\n\t\t\tcommand,\n\t\t\tresponse,\n\t\t})\n\t}\n\n\tpublic static clearFakedResponses() {\n\t\tthis.fakeResponses = []\n\t}\n}\n\ninterface MockResponse {\n\tcode: number\n\tstdout?: string\n\tstderr?: string\n\tcallback?: (executable: string, args: any[]) => void\n}\n"],"mappings":"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"}
|
|
@@ -123,6 +123,11 @@ var PkgService = /*#__PURE__*/function (_BasePkgService) {
|
|
|
123
123
|
}
|
|
124
124
|
return install;
|
|
125
125
|
}()
|
|
126
|
+
}, {
|
|
127
|
+
key: "getSkillNamespace",
|
|
128
|
+
value: function getSkillNamespace() {
|
|
129
|
+
return this.get('skill.namespace');
|
|
130
|
+
}
|
|
126
131
|
}, {
|
|
127
132
|
key: "uninstall",
|
|
128
133
|
value: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkgService.js","names":["PkgService","cwd","commandService","pkg","options","shouldCleanupLockFiles","deleteLockFile","bind","execute","args","totalInstalled","totalSkipped","packages","Array","isArray","toInstall","labsModules","thisPackage","isInstalled","shouldForceInstall","startsWith","push","stripLatest","buildCommandAndArgs","executable","diskUtil","doesDirExist","pathUtil","join","_parsedPkg","undefined","length","install","isCi","createRandomTempDir","filter","a","isDev","BasePkgService"],"sources":["../../src/services/PkgService.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tdiskUtil,\n\tPkgService as BasePkgService,\n} from '@sprucelabs/spruce-skill-utils'\nimport isCi from '../utilities/isCi'\nimport CommandService from './CommandService'\n\nexport interface AddOptions {\n\tisDev?: boolean\n\tshouldForceInstall?: boolean\n\tshouldCleanupLockFiles?: boolean\n}\n\nexport default class PkgService extends BasePkgService {\n\tprivate commandService: CommandService\n\n\tpublic constructor(cwd: string, commandService: CommandService) {\n\t\tsuper(cwd)\n\t\tthis.commandService = commandService\n\t}\n\n\tpublic async install(pkg?: string[] | string, options?: AddOptions) {\n\t\tconst shouldCleanupLockFiles = options?.shouldCleanupLockFiles !== false\n\t\tconst deleteLockFile = shouldCleanupLockFiles\n\t\t\t? this.deleteLockFile.bind(this)\n\t\t\t: () => {}\n\n\t\tif (!pkg) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t\tdeleteLockFile()\n\t\t\treturn { totalInstalled: -1, totalSkipped: -1 }\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst toInstall = []\n\t\tconst labsModules: string[] = []\n\n\t\tlet totalInstalled = 0\n\t\tlet totalSkipped = 0\n\n\t\tfor (const thisPackage of packages) {\n\t\t\tconst isInstalled =\n\t\t\t\t!options?.shouldForceInstall && this.isInstalled(thisPackage)\n\t\t\tif (thisPackage.startsWith('@sprucelabs/') || !isInstalled) {\n\t\t\t\ttoInstall.push(this.stripLatest(thisPackage))\n\t\t\t\ttotalInstalled++\n\t\t\t} else {\n\t\t\t\ttotalSkipped++\n\t\t\t}\n\t\t}\n\n\t\tif (totalInstalled > 0) {\n\t\t\tconst { executable, args } = PkgService.buildCommandAndArgs(\n\t\t\t\ttoInstall,\n\t\t\t\toptions\n\t\t\t)\n\n\t\t\tawait this.commandService.execute(executable, {\n\t\t\t\targs,\n\t\t\t})\n\t\t} else if (\n\t\t\t!diskUtil.doesDirExist(pathUtil.join(this.cwd, 'node_modules'))\n\t\t) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tthis._parsedPkg = undefined\n\n\t\treturn { totalInstalled: totalInstalled + labsModules.length, totalSkipped }\n\t}\n\n\tpublic static buildCommandAndArgs(\n\t\ttoInstall: string[],\n\t\toptions: AddOptions | undefined\n\t) {\n\t\tconst args: any[] = [\n\t\t\tisCi() && '--cache-folder',\n\t\t\tisCi() && diskUtil.createRandomTempDir(),\n\t\t\t'add',\n\t\t\t...toInstall,\n\t\t].filter((a) => !!a)\n\n\t\tif (options?.isDev) {\n\t\t\targs.push('-D')\n\t\t}\n\n\t\tconst executable = 'yarn'\n\t\treturn { executable, args }\n\t}\n\n\tpublic async uninstall(pkg: string[] | string) {\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst args: string[] = ['uninstall', ...packages]\n\t\tawait this.commandService.execute('npm', {\n\t\t\targs,\n\t\t})\n\n\t\tthis._parsedPkg = undefined\n\n\t\tawait this.install()\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AAIA;AAAoC;AAAA;AAAA;AAAA;AAAA;AAAA,IASfA,UAAU;EAAA;EAAA;EAG9B,oBAAmBC,GAAW,EAAEC,cAA8B,EAAE;IAAA;IAAA;IAC/D,0BAAMD,GAAG;IAAC;IACV,MAAKC,cAAc,GAAGA,cAAc;IAAA;EACrC;EAAC;IAAA;IAAA;MAAA,6FAED,iBAAqBC,GAAuB,EAAEC,OAAoB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAC3DC,sBAAsB,GAAG,CAAAD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,sBAAsB,MAAK,KAAK;gBAClEC,cAAc,GAAGD,sBAAsB,GAC1C,IAAI,CAACC,cAAc,CAACC,IAAI,CAAC,IAAI,CAAC,GAC9B,YAAM,CAAC,CAAC;gBAAA,IAENJ,GAAG;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACD,IAAI,CAACD,cAAc,CAACM,OAAO,CAAC,MAAM,EAAE;kBAAEC,IAAI,EAAE,CAAC,SAAS;gBAAE,CAAC,CAAC;cAAA;gBAChEH,cAAc,EAAE;gBAAA,iCACT;kBAAEI,cAAc,EAAE,CAAC,CAAC;kBAAEC,YAAY,EAAE,CAAC;gBAAE,CAAC;cAAA;gBAGhDL,cAAc,EAAE;gBAEVM,QAAQ,GAAGC,KAAK,CAACC,OAAO,CAACX,GAAG,CAAC,GAAGA,GAAG,GAAG,CAACA,GAAG,CAAC;gBAC3CY,SAAS,GAAG,EAAE;gBACdC,WAAqB,GAAG,EAAE;gBAE5BN,cAAc,GAAG,CAAC;gBAClBC,YAAY,GAAG,CAAC;gBAAA,uCAEMC,QAAQ;gBAAA;kBAAlC,oDAAoC;oBAAzBK,WAAW;oBACfC,WAAW,GAChB,EAACd,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEe,kBAAkB,KAAI,IAAI,CAACD,WAAW,CAACD,WAAW,CAAC;oBAC9D,IAAIA,WAAW,CAACG,UAAU,CAAC,cAAc,CAAC,IAAI,CAACF,WAAW,EAAE;sBAC3DH,SAAS,CAACM,IAAI,CAAC,IAAI,CAACC,WAAW,CAACL,WAAW,CAAC,CAAC;sBAC7CP,cAAc,EAAE;oBACjB,CAAC,MAAM;sBACNC,YAAY,EAAE;oBACf;kBACD;gBAAC;kBAAA;gBAAA;kBAAA;gBAAA;gBAAA,MAEGD,cAAc,GAAG,CAAC;kBAAA;kBAAA;gBAAA;gBAAA,wBACQV,UAAU,CAACuB,mBAAmB,CAC1DR,SAAS,EACTX,OAAO,CACP,EAHOoB,UAAU,yBAAVA,UAAU,EAAEf,IAAI,yBAAJA,IAAI;gBAAA;gBAAA,OAKlB,IAAI,CAACP,cAAc,CAACM,OAAO,CAACgB,UAAU,EAAE;kBAC7Cf,IAAI,EAAJA;gBACD,CAAC,CAAC;cAAA;gBAAA;gBAAA;cAAA;gBAAA,IAEDgB,0BAAQ,CAACC,YAAY,CAACC,gBAAQ,CAACC,IAAI,CAAC,IAAI,CAAC3B,GAAG,EAAE,cAAc,CAAC,CAAC;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OAEzD,IAAI,CAACC,cAAc,CAACM,OAAO,CAAC,MAAM,EAAE;kBAAEC,IAAI,EAAE,CAAC,SAAS;gBAAE,CAAC,CAAC;cAAA;gBAGjEH,cAAc,EAAE;gBAEhB,IAAI,CAACuB,UAAU,GAAGC,SAAS;gBAAA,iCAEpB;kBAAEpB,cAAc,EAAEA,cAAc,GAAGM,WAAW,CAACe,MAAM;kBAAEpB,YAAY,EAAZA;gBAAa,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC5E;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+
|
|
1
|
+
{"version":3,"file":"PkgService.js","names":["PkgService","cwd","commandService","pkg","options","shouldCleanupLockFiles","deleteLockFile","bind","execute","args","totalInstalled","totalSkipped","packages","Array","isArray","toInstall","labsModules","thisPackage","isInstalled","shouldForceInstall","startsWith","push","stripLatest","buildCommandAndArgs","executable","diskUtil","doesDirExist","pathUtil","join","_parsedPkg","undefined","length","get","install","isCi","createRandomTempDir","filter","a","isDev","BasePkgService"],"sources":["../../src/services/PkgService.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tdiskUtil,\n\tPkgService as BasePkgService,\n} from '@sprucelabs/spruce-skill-utils'\nimport isCi from '../utilities/isCi'\nimport CommandService from './CommandService'\n\nexport interface AddOptions {\n\tisDev?: boolean\n\tshouldForceInstall?: boolean\n\tshouldCleanupLockFiles?: boolean\n}\n\nexport default class PkgService extends BasePkgService {\n\tprivate commandService: CommandService\n\n\tpublic constructor(cwd: string, commandService: CommandService) {\n\t\tsuper(cwd)\n\t\tthis.commandService = commandService\n\t}\n\n\tpublic async install(pkg?: string[] | string, options?: AddOptions) {\n\t\tconst shouldCleanupLockFiles = options?.shouldCleanupLockFiles !== false\n\t\tconst deleteLockFile = shouldCleanupLockFiles\n\t\t\t? this.deleteLockFile.bind(this)\n\t\t\t: () => {}\n\n\t\tif (!pkg) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t\tdeleteLockFile()\n\t\t\treturn { totalInstalled: -1, totalSkipped: -1 }\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst toInstall = []\n\t\tconst labsModules: string[] = []\n\n\t\tlet totalInstalled = 0\n\t\tlet totalSkipped = 0\n\n\t\tfor (const thisPackage of packages) {\n\t\t\tconst isInstalled =\n\t\t\t\t!options?.shouldForceInstall && this.isInstalled(thisPackage)\n\t\t\tif (thisPackage.startsWith('@sprucelabs/') || !isInstalled) {\n\t\t\t\ttoInstall.push(this.stripLatest(thisPackage))\n\t\t\t\ttotalInstalled++\n\t\t\t} else {\n\t\t\t\ttotalSkipped++\n\t\t\t}\n\t\t}\n\n\t\tif (totalInstalled > 0) {\n\t\t\tconst { executable, args } = PkgService.buildCommandAndArgs(\n\t\t\t\ttoInstall,\n\t\t\t\toptions\n\t\t\t)\n\n\t\t\tawait this.commandService.execute(executable, {\n\t\t\t\targs,\n\t\t\t})\n\t\t} else if (\n\t\t\t!diskUtil.doesDirExist(pathUtil.join(this.cwd, 'node_modules'))\n\t\t) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tthis._parsedPkg = undefined\n\n\t\treturn { totalInstalled: totalInstalled + labsModules.length, totalSkipped }\n\t}\n\n\tpublic static buildCommandAndArgs(\n\t\ttoInstall: string[],\n\t\toptions: AddOptions | undefined\n\t) {\n\t\tconst args: any[] = [\n\t\t\tisCi() && '--cache-folder',\n\t\t\tisCi() && diskUtil.createRandomTempDir(),\n\t\t\t'add',\n\t\t\t...toInstall,\n\t\t].filter((a) => !!a)\n\n\t\tif (options?.isDev) {\n\t\t\targs.push('-D')\n\t\t}\n\n\t\tconst executable = 'yarn'\n\t\treturn { executable, args }\n\t}\n\n\tpublic getSkillNamespace() {\n\t\treturn this.get('skill.namespace')\n\t}\n\n\tpublic async uninstall(pkg: string[] | string) {\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst args: string[] = ['uninstall', ...packages]\n\t\tawait this.commandService.execute('npm', {\n\t\t\targs,\n\t\t})\n\n\t\tthis._parsedPkg = undefined\n\n\t\tawait this.install()\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ import ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'
|
|
|
11
11
|
import StoreFactory, { StoreCode, CreateStoreOptions, StoreFactoryOptions, StoreMap } from '../stores/StoreFactory';
|
|
12
12
|
import { ApiClientFactoryOptions } from '../types/apiClient.types';
|
|
13
13
|
import { OptionOverrides } from '../types/cli.types';
|
|
14
|
+
import WriterFactory from '../writers/WriterFactory';
|
|
14
15
|
import CommandFaker from './CommandFaker';
|
|
15
16
|
import FeatureFixture, { FeatureFixtureOptions } from './fixtures/FeatureFixture';
|
|
16
17
|
import MercuryFixture from './fixtures/MercuryFixture';
|
|
@@ -18,9 +19,6 @@ import OrganizationFixture from './fixtures/OrganizationFixture';
|
|
|
18
19
|
import PersonFixture from './fixtures/PersonFixture';
|
|
19
20
|
import SkillFixture from './fixtures/SkillFixture';
|
|
20
21
|
import ViewFixture from './fixtures/ViewFixture';
|
|
21
|
-
declare type ExecuterOptions = Partial<ActionExecuterOptions> & {
|
|
22
|
-
optionOverrides?: OptionOverrides;
|
|
23
|
-
};
|
|
24
22
|
export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
25
23
|
protected static cliRoot: string;
|
|
26
24
|
protected static homeDir: string;
|
|
@@ -34,6 +32,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
34
32
|
private static _featureInstaller?;
|
|
35
33
|
private static viewFixture?;
|
|
36
34
|
private static originalEnv;
|
|
35
|
+
private static _writers?;
|
|
37
36
|
protected static beforeAll(): Promise<void>;
|
|
38
37
|
protected static beforeEach(): Promise<void>;
|
|
39
38
|
protected static afterEach(): Promise<void>;
|
|
@@ -53,6 +52,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
53
52
|
protected static getMercuryFixture(): MercuryFixture;
|
|
54
53
|
protected static get people(): PersonFixture;
|
|
55
54
|
protected static getViewFixture(): ViewFixture;
|
|
55
|
+
protected static get writers(): WriterFactory;
|
|
56
56
|
private static WriterFactory;
|
|
57
57
|
protected static skipInstallSkillPrompts<E extends () => Promise<FeatureActionResponse>>(execute?: E): Promise<E extends undefined ? undefined : FeatureActionResponse>;
|
|
58
58
|
protected static getOrganizationFixture(): OrganizationFixture;
|
|
@@ -66,6 +66,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
66
66
|
protected static waitForInput(): Promise<void>;
|
|
67
67
|
protected static assertIsFeatureInstalled(code: FeatureCode): Promise<void>;
|
|
68
68
|
protected static assertValidActionResponseFiles(results: FeatureActionResponse): Promise<void>;
|
|
69
|
+
protected static assertFilePassesTypeChecks(file: string): Promise<void>;
|
|
69
70
|
protected static connectToApi(options?: ApiClientFactoryOptions): Promise<import("../types/apiClient.types").ApiClient>;
|
|
70
71
|
protected static openInVsCode(options?: {
|
|
71
72
|
file?: string;
|
|
@@ -82,4 +83,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
82
83
|
protected static ActionExecuter(options?: ExecuterOptions): ActionExecuter;
|
|
83
84
|
protected static selectOptionBasedOnLabel(label: string): void;
|
|
84
85
|
}
|
|
86
|
+
declare type ExecuterOptions = Partial<ActionExecuterOptions> & {
|
|
87
|
+
optionOverrides?: OptionOverrides;
|
|
88
|
+
};
|
|
85
89
|
export {};
|
|
@@ -104,6 +104,9 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
104
104
|
_context2.next = 2;
|
|
105
105
|
return (0, _get2["default"])((0, _getPrototypeOf2["default"])(AbstractCliTest), "beforeEach", this).call(this);
|
|
106
106
|
case 2:
|
|
107
|
+
delete this._writers;
|
|
108
|
+
_ActionFactory["default"].clearActionOverrides();
|
|
109
|
+
|
|
107
110
|
//@ts-ignore
|
|
108
111
|
process.env = _objectSpread({}, this.originalEnv);
|
|
109
112
|
_test["default"].startLogTimer();
|
|
@@ -123,11 +126,11 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
123
126
|
_ImportService["default"].clearCache();
|
|
124
127
|
_SkillStore["default"].clearCurrentSkill();
|
|
125
128
|
_EventStore["default"].clearCache();
|
|
126
|
-
_CommandService["default"].
|
|
129
|
+
_CommandService["default"].clearFakedResponses();
|
|
127
130
|
_mercuryClient.MercuryClientFactory.reset();
|
|
128
131
|
_mercuryClient.MercuryClientFactory.setIsTestMode(false);
|
|
129
132
|
this.commandFaker = new _CommandFaker["default"]();
|
|
130
|
-
case
|
|
133
|
+
case 23:
|
|
131
134
|
case "end":
|
|
132
135
|
return _context2.stop();
|
|
133
136
|
}
|
|
@@ -170,7 +173,10 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
170
173
|
if (_spruceSkillUtils.diskUtil.doesDirExist(this.homeDir) && _test["default"].shouldClearCache()) {
|
|
171
174
|
_spruceSkillUtils.diskUtil.deleteDir(this.homeDir);
|
|
172
175
|
}
|
|
173
|
-
|
|
176
|
+
if (_test["default"].shouldCleanupAfterEach()) {
|
|
177
|
+
_FeatureFixture2["default"].deleteOldSkillDirs();
|
|
178
|
+
}
|
|
179
|
+
case 12:
|
|
174
180
|
case "end":
|
|
175
181
|
return _context3.stop();
|
|
176
182
|
}
|
|
@@ -193,7 +199,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
193
199
|
_context4.next = 2;
|
|
194
200
|
return (0, _get2["default"])((0, _getPrototypeOf2["default"])(AbstractCliTest), "afterAll", this).call(this);
|
|
195
201
|
case 2:
|
|
196
|
-
if (_test["default"].
|
|
202
|
+
if (_test["default"].shouldCleanupAfterAll()) {
|
|
197
203
|
_FeatureFixture2["default"].deleteOldSkillDirs();
|
|
198
204
|
}
|
|
199
205
|
case 3:
|
|
@@ -388,14 +394,21 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
388
394
|
key: "getViewFixture",
|
|
389
395
|
value: function getViewFixture() {
|
|
390
396
|
if (!this.viewFixture) {
|
|
391
|
-
var
|
|
392
|
-
var viewWriter = writerFactory.Writer('view', {
|
|
397
|
+
var viewWriter = this.writers.Writer('view', {
|
|
393
398
|
fileDescriptions: []
|
|
394
399
|
});
|
|
395
400
|
this.viewFixture = new _ViewFixture["default"](this.cwd, viewWriter, this.Action('view', 'sync'));
|
|
396
401
|
}
|
|
397
402
|
return this.viewFixture;
|
|
398
403
|
}
|
|
404
|
+
}, {
|
|
405
|
+
key: "writers",
|
|
406
|
+
get: function get() {
|
|
407
|
+
if (!this._writers) {
|
|
408
|
+
this._writers = this.WriterFactory();
|
|
409
|
+
}
|
|
410
|
+
return this._writers;
|
|
411
|
+
}
|
|
399
412
|
}, {
|
|
400
413
|
key: "WriterFactory",
|
|
401
414
|
value: function WriterFactory() {
|
|
@@ -571,7 +584,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
571
584
|
value: function () {
|
|
572
585
|
var _assertValidActionResponseFiles = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11(results) {
|
|
573
586
|
var _results$files;
|
|
574
|
-
var _iterator2, _step2, file
|
|
587
|
+
var _iterator2, _step2, file;
|
|
575
588
|
return _regenerator["default"].wrap(function _callee11$(_context11) {
|
|
576
589
|
while (1) {
|
|
577
590
|
switch (_context11.prev = _context11.next) {
|
|
@@ -581,33 +594,32 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
581
594
|
_iterator2.s();
|
|
582
595
|
case 3:
|
|
583
596
|
if ((_step2 = _iterator2.n()).done) {
|
|
584
|
-
_context11.next =
|
|
597
|
+
_context11.next = 9;
|
|
585
598
|
break;
|
|
586
599
|
}
|
|
587
600
|
file = _step2.value;
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
case 8:
|
|
601
|
+
_context11.next = 7;
|
|
602
|
+
return this.assertFilePassesTypeChecks(file.path);
|
|
603
|
+
case 7:
|
|
592
604
|
_context11.next = 3;
|
|
593
605
|
break;
|
|
594
|
-
case
|
|
595
|
-
_context11.next =
|
|
606
|
+
case 9:
|
|
607
|
+
_context11.next = 14;
|
|
596
608
|
break;
|
|
597
|
-
case
|
|
598
|
-
_context11.prev =
|
|
609
|
+
case 11:
|
|
610
|
+
_context11.prev = 11;
|
|
599
611
|
_context11.t0 = _context11["catch"](1);
|
|
600
612
|
_iterator2.e(_context11.t0);
|
|
601
|
-
case
|
|
602
|
-
_context11.prev =
|
|
613
|
+
case 14:
|
|
614
|
+
_context11.prev = 14;
|
|
603
615
|
_iterator2.f();
|
|
604
|
-
return _context11.finish(
|
|
605
|
-
case
|
|
616
|
+
return _context11.finish(14);
|
|
617
|
+
case 17:
|
|
606
618
|
case "end":
|
|
607
619
|
return _context11.stop();
|
|
608
620
|
}
|
|
609
621
|
}
|
|
610
|
-
}, _callee11, this, [[1,
|
|
622
|
+
}, _callee11, this, [[1, 11, 14, 17]]);
|
|
611
623
|
}));
|
|
612
624
|
function assertValidActionResponseFiles(_x9) {
|
|
613
625
|
return _assertValidActionResponseFiles.apply(this, arguments);
|
|
@@ -615,22 +627,46 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
615
627
|
return assertValidActionResponseFiles;
|
|
616
628
|
}()
|
|
617
629
|
}, {
|
|
618
|
-
key: "
|
|
630
|
+
key: "assertFilePassesTypeChecks",
|
|
619
631
|
value: function () {
|
|
620
|
-
var
|
|
632
|
+
var _assertFilePassesTypeChecks = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(file) {
|
|
633
|
+
var checker;
|
|
621
634
|
return _regenerator["default"].wrap(function _callee12$(_context12) {
|
|
622
635
|
while (1) {
|
|
623
636
|
switch (_context12.prev = _context12.next) {
|
|
624
637
|
case 0:
|
|
625
|
-
|
|
626
|
-
|
|
638
|
+
checker = this.Service('typeChecker');
|
|
639
|
+
_context12.next = 3;
|
|
640
|
+
return checker.check(file);
|
|
641
|
+
case 3:
|
|
627
642
|
case "end":
|
|
628
643
|
return _context12.stop();
|
|
629
644
|
}
|
|
630
645
|
}
|
|
631
646
|
}, _callee12, this);
|
|
632
647
|
}));
|
|
633
|
-
function
|
|
648
|
+
function assertFilePassesTypeChecks(_x10) {
|
|
649
|
+
return _assertFilePassesTypeChecks.apply(this, arguments);
|
|
650
|
+
}
|
|
651
|
+
return assertFilePassesTypeChecks;
|
|
652
|
+
}()
|
|
653
|
+
}, {
|
|
654
|
+
key: "connectToApi",
|
|
655
|
+
value: function () {
|
|
656
|
+
var _connectToApi = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13(options) {
|
|
657
|
+
return _regenerator["default"].wrap(function _callee13$(_context13) {
|
|
658
|
+
while (1) {
|
|
659
|
+
switch (_context13.prev = _context13.next) {
|
|
660
|
+
case 0:
|
|
661
|
+
return _context13.abrupt("return", this.getMercuryFixture().connectToApi(options));
|
|
662
|
+
case 1:
|
|
663
|
+
case "end":
|
|
664
|
+
return _context13.stop();
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
}, _callee13, this);
|
|
668
|
+
}));
|
|
669
|
+
function connectToApi(_x11) {
|
|
634
670
|
return _connectToApi.apply(this, arguments);
|
|
635
671
|
}
|
|
636
672
|
return connectToApi;
|
|
@@ -638,30 +674,30 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
638
674
|
}, {
|
|
639
675
|
key: "openInVsCode",
|
|
640
676
|
value: function () {
|
|
641
|
-
var _openInVsCode = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
677
|
+
var _openInVsCode = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14(options) {
|
|
642
678
|
var _ref, _options$file, _options$timeout;
|
|
643
|
-
return _regenerator["default"].wrap(function
|
|
679
|
+
return _regenerator["default"].wrap(function _callee14$(_context14) {
|
|
644
680
|
while (1) {
|
|
645
|
-
switch (
|
|
681
|
+
switch (_context14.prev = _context14.next) {
|
|
646
682
|
case 0:
|
|
647
|
-
|
|
683
|
+
_context14.next = 2;
|
|
648
684
|
return this.Action('vscode', 'setup').execute({
|
|
649
685
|
all: true
|
|
650
686
|
});
|
|
651
687
|
case 2:
|
|
652
|
-
|
|
688
|
+
_context14.next = 4;
|
|
653
689
|
return this.Service('command').execute("code ".concat((_ref = (_options$file = options === null || options === void 0 ? void 0 : options.file) !== null && _options$file !== void 0 ? _options$file : options === null || options === void 0 ? void 0 : options.dir) !== null && _ref !== void 0 ? _ref : this.cwd));
|
|
654
690
|
case 4:
|
|
655
|
-
|
|
691
|
+
_context14.next = 6;
|
|
656
692
|
return this.wait((_options$timeout = options === null || options === void 0 ? void 0 : options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : 99999999);
|
|
657
693
|
case 6:
|
|
658
694
|
case "end":
|
|
659
|
-
return
|
|
695
|
+
return _context14.stop();
|
|
660
696
|
}
|
|
661
697
|
}
|
|
662
|
-
},
|
|
698
|
+
}, _callee14, this);
|
|
663
699
|
}));
|
|
664
|
-
function openInVsCode(
|
|
700
|
+
function openInVsCode(_x12) {
|
|
665
701
|
return _openInVsCode.apply(this, arguments);
|
|
666
702
|
}
|
|
667
703
|
return openInVsCode;
|
|
@@ -669,25 +705,25 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
669
705
|
}, {
|
|
670
706
|
key: "openInFinder",
|
|
671
707
|
value: function () {
|
|
672
|
-
var _openInFinder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
708
|
+
var _openInFinder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15(options) {
|
|
673
709
|
var _ref2, _options$file2, _options$timeout2;
|
|
674
|
-
return _regenerator["default"].wrap(function
|
|
710
|
+
return _regenerator["default"].wrap(function _callee15$(_context15) {
|
|
675
711
|
while (1) {
|
|
676
|
-
switch (
|
|
712
|
+
switch (_context15.prev = _context15.next) {
|
|
677
713
|
case 0:
|
|
678
|
-
|
|
714
|
+
_context15.next = 2;
|
|
679
715
|
return this.Service('command').execute("open ".concat((_ref2 = (_options$file2 = options === null || options === void 0 ? void 0 : options.file) !== null && _options$file2 !== void 0 ? _options$file2 : options === null || options === void 0 ? void 0 : options.dir) !== null && _ref2 !== void 0 ? _ref2 : this.cwd));
|
|
680
716
|
case 2:
|
|
681
|
-
|
|
717
|
+
_context15.next = 4;
|
|
682
718
|
return this.wait((_options$timeout2 = options === null || options === void 0 ? void 0 : options.timeout) !== null && _options$timeout2 !== void 0 ? _options$timeout2 : 99999999);
|
|
683
719
|
case 4:
|
|
684
720
|
case "end":
|
|
685
|
-
return
|
|
721
|
+
return _context15.stop();
|
|
686
722
|
}
|
|
687
723
|
}
|
|
688
|
-
},
|
|
724
|
+
}, _callee15, this);
|
|
689
725
|
}));
|
|
690
|
-
function openInFinder(
|
|
726
|
+
function openInFinder(_x13) {
|
|
691
727
|
return _openInFinder.apply(this, arguments);
|
|
692
728
|
}
|
|
693
729
|
return openInFinder;
|
|
@@ -718,9 +754,8 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
718
754
|
value: function ActionExecuter(options) {
|
|
719
755
|
var _this = this;
|
|
720
756
|
var serviceFactory = this.ServiceFactory();
|
|
721
|
-
var writerFactory = this.WriterFactory();
|
|
722
757
|
var actionFactory = new _ActionFactory["default"]({
|
|
723
|
-
writerFactory:
|
|
758
|
+
writerFactory: this.writers,
|
|
724
759
|
ui: this.ui,
|
|
725
760
|
emitter: this.emitter,
|
|
726
761
|
apiClientFactory: this.getMercuryFixture().getApiClientFactory(),
|
|
@@ -773,4 +808,5 @@ exports["default"] = AbstractCliTest;
|
|
|
773
808
|
(0, _defineProperty2["default"])(AbstractCliTest, "_featureInstaller", void 0);
|
|
774
809
|
(0, _defineProperty2["default"])(AbstractCliTest, "viewFixture", void 0);
|
|
775
810
|
(0, _defineProperty2["default"])(AbstractCliTest, "originalEnv", void 0);
|
|
811
|
+
(0, _defineProperty2["default"])(AbstractCliTest, "_writers", void 0);
|
|
776
812
|
//# sourceMappingURL=AbstractCliTest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractCliTest.js","names":["AbstractCliTest","cleanTestDirsAndFiles","LintService","disableLinting","ImportService","setCacheDir","diskUtil","createRandomTempDir","enableCaching","process","env","ENABLE_INSTALL_ENTERTAINMENT","originalEnv","testUtil","startLogTimer","SchemaRegistry","getInstance","forgetAllSchemas","cwd","freshTmpDir","homeDir","_emitter","undefined","_featureInstaller","OnboardingStore","overrideCwd","ui","reset","invocations","setCursorPosition","x","y","clearFixtures","clearCache","SkillStore","clearCurrentSkill","EventStore","CommandService","clearMockResponses","MercuryClientFactory","setIsTestMode","commandFaker","CommandFaker","organizationFixture","clearAllOrgs","mercuryFixture","disconnectAll","_ui","isWaitingForInput","Error","doesDirExist","shouldClearCache","deleteDir","shouldCleanupTestSkillDirs","FeatureFixture","deleteOldSkillDirs","pattern","resolveTestPath","globby","matches","match","deleteFile","personFixture","skillFixture","viewFixture","tmpDirectory","resolveTestDir","uuid","v4","fs","ensureDirSync","SpyInterface","CliGlobalEmitter","Emitter","emitter","pathAfterTestDirsAndFiles","pathUtil","join","cliRoot","options","Cli","fixture","linkLocalPackages","type","sf","ServiceFactory","Service","serviceFactory","apiClientFactory","getMercuryFixture","getApiClientFactory","featureInstaller","MercuryFixture","PersonFixture","writerFactory","WriterFactory","viewWriter","Writer","fileDescriptions","ViewFixture","Action","templates","settings","execute","promise","waitForInput","sendInput","results","OrganizationFixture","people","StoreFactory","SkillFixture","filePath","resolveHashSprucePath","installer","FeatureInstaller","storeFactory","actionExecuter","ActionExecuter","FeatureInstallerFactory","WithAllFeatures","code","Store","isInstalled","assert","isTrue","files","file","checker","check","path","connectToApi","all","dir","wait","timeout","log","featureCode","actionCode","executer","shouldThrowOnListenerError","actionFactory","ActionFactory","optionOverrides","shouldInstallMissingDependencies","featureInstallerFactory","shouldAutoHandleDependencies","label","last","getLastInvocation","doesInclude","choices","find","o","value","AbstractSpruceTest","__dirname"],"sources":["../../src/tests/AbstractCliTest.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SchemaRegistry } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport AbstractSpruceTest, { assert } from '@sprucelabs/test-utils'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport * as uuid from 'uuid'\nimport { CliBootOptions } from '../cli'\nimport AbstractAction from '../features/AbstractAction'\nimport { FeatureOptions } from '../features/AbstractFeature'\nimport ActionExecuter, {\n\tActionExecuterOptions,\n} from '../features/ActionExecuter'\nimport ActionFactory from '../features/ActionFactory'\nimport EventStore from '../features/event/stores/EventStore'\nimport FeatureInstaller from '../features/FeatureInstaller'\nimport FeatureInstallerFactory from '../features/FeatureInstallerFactory'\nimport { FeatureActionResponse, FeatureCode } from '../features/features.types'\nimport OnboardingStore from '../features/onboard/stores/OnboardingStore'\nimport SkillStore from '../features/skill/stores/SkillStore'\nimport CliGlobalEmitter, { GlobalEmitter } from '../GlobalEmitter'\nimport SpyInterface from '../interfaces/SpyInterface'\nimport CommandService from '../services/CommandService'\nimport ImportService from '../services/ImportService'\nimport LintService from '../services/LintService'\nimport ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreFactoryOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport { ApiClientFactoryOptions } from '../types/apiClient.types'\nimport { OptionOverrides } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport CommandFaker from './CommandFaker'\nimport FeatureFixture, {\n\tFeatureFixtureOptions,\n} from './fixtures/FeatureFixture'\nimport MercuryFixture from './fixtures/MercuryFixture'\nimport OrganizationFixture from './fixtures/OrganizationFixture'\nimport PersonFixture from './fixtures/PersonFixture'\nimport SkillFixture from './fixtures/SkillFixture'\nimport ViewFixture from './fixtures/ViewFixture'\nimport testUtil from './utilities/test.utility'\n\ntype ExecuterOptions = Partial<ActionExecuterOptions> & {\n\toptionOverrides?: OptionOverrides\n}\n\nexport default abstract class AbstractCliTest extends AbstractSpruceTest {\n\tprotected static cliRoot = pathUtil.join(__dirname, '..')\n\tprotected static homeDir: string\n\tprotected static commandFaker: CommandFaker\n\n\tprivate static _ui: SpyInterface\n\tprivate static _emitter?: GlobalEmitter\n\tprivate static mercuryFixture?: MercuryFixture\n\tprivate static personFixture?: PersonFixture\n\tprivate static organizationFixture?: OrganizationFixture\n\tprivate static skillFixture?: SkillFixture\n\tprivate static _featureInstaller?: FeatureInstaller\n\tprivate static viewFixture?: ViewFixture\n\tprivate static originalEnv: { [x: string]: string | undefined }\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tawait this.cleanTestDirsAndFiles()\n\n\t\tLintService.disableLinting()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tImportService.enableCaching()\n\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT = 'false'\n\n\t\tthis.originalEnv = { ...process.env }\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\t//@ts-ignore\n\t\tprocess.env = { ...this.originalEnv }\n\n\t\ttestUtil.startLogTimer()\n\n\t\tSchemaRegistry.getInstance().forgetAllSchemas()\n\n\t\tthis.cwd = this.freshTmpDir()\n\t\tthis.homeDir = this.freshTmpDir()\n\n\t\tthis._emitter = undefined\n\t\tthis._featureInstaller = undefined\n\n\t\tOnboardingStore.overrideCwd(diskUtil.createRandomTempDir())\n\n\t\tthis.ui.reset()\n\t\tthis.ui.invocations = []\n\t\tthis.ui.setCursorPosition({ x: 0, y: 0 })\n\n\t\tthis.clearFixtures()\n\n\t\tImportService.clearCache()\n\t\tSkillStore.clearCurrentSkill()\n\t\tEventStore.clearCache()\n\t\tCommandService.clearMockResponses()\n\t\tMercuryClientFactory.reset()\n\t\tMercuryClientFactory.setIsTestMode(false)\n\n\t\tthis.commandFaker = new CommandFaker()\n\t}\n\n\tprotected static async afterEach() {\n\t\tawait super.afterEach()\n\n\t\tawait this.organizationFixture?.clearAllOrgs()\n\t\tawait this.mercuryFixture?.disconnectAll()\n\n\t\tthis.clearFixtures()\n\n\t\tif (this._ui?.isWaitingForInput()) {\n\t\t\tthrow new Error(\n\t\t\t\t`Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.`\n\t\t\t)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.cwd) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.cwd)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.homeDir) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.homeDir)\n\t\t}\n\t}\n\n\tprotected static async afterAll() {\n\t\tawait super.afterAll()\n\t\tif (testUtil.shouldCleanupTestSkillDirs()) {\n\t\t\tFeatureFixture.deleteOldSkillDirs()\n\t\t}\n\t}\n\n\tprivate static async cleanTestDirsAndFiles() {\n\t\tconst pattern = this.resolveTestPath('**/*.d.ts')\n\t\tconst matches = await globby(pattern)\n\n\t\tfor (const match of matches) {\n\t\t\tdiskUtil.deleteFile(match)\n\t\t}\n\t}\n\n\tprivate static clearFixtures() {\n\t\tthis._emitter = undefined\n\t\tthis.mercuryFixture = undefined\n\t\tthis.organizationFixture = undefined\n\t\tthis.personFixture = undefined\n\t\tthis.skillFixture = undefined\n\t\tthis.viewFixture = undefined\n\t}\n\n\tprotected static freshTmpDir() {\n\t\tconst tmpDirectory = testUtil.resolveTestDir(uuid.v4())\n\t\tfs.ensureDirSync(tmpDirectory)\n\t\treturn tmpDirectory\n\t}\n\n\tprotected static get ui() {\n\t\tif (!this._ui) {\n\t\t\tthis._ui = new SpyInterface()\n\t\t}\n\n\t\treturn this._ui\n\t}\n\n\tprotected static get emitter() {\n\t\tif (!this._emitter) {\n\t\t\tthis._emitter = CliGlobalEmitter.Emitter()\n\t\t}\n\t\treturn this._emitter\n\t}\n\n\tprotected static set emitter(emitter: GlobalEmitter) {\n\t\tthis._emitter = emitter\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUtil.join(\n\t\t\tthis.cliRoot,\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n\n\tprotected static async Cli(options?: CliBootOptions) {\n\t\treturn this.FeatureFixture(options).Cli({\n\t\t\tcwd: this.cwd,\n\t\t\thomeDir: this.homeDir,\n\t\t\t...(options ?? {}),\n\t\t})\n\t}\n\n\tprotected static async linkLocalPackages() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tawait fixture.linkLocalPackages()\n\t}\n\n\tprotected static Service<S extends Service>(\n\t\ttype: S,\n\t\tcwd?: string\n\t): ServiceMap[S] {\n\t\tconst sf = this.ServiceFactory()\n\t\treturn sf.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected static ServiceFactory() {\n\t\treturn new ServiceFactory()\n\t}\n\n\tprotected static FeatureFixture(options?: Partial<FeatureFixtureOptions>) {\n\t\treturn new FeatureFixture({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory: this.ServiceFactory(),\n\t\t\tui: this.ui,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tfeatureInstaller: this.featureInstaller,\n\t\t\temitter: this.emitter,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static getMercuryFixture() {\n\t\tif (!this.mercuryFixture) {\n\t\t\tthis.mercuryFixture = new MercuryFixture(this.cwd, this.ServiceFactory())\n\t\t}\n\n\t\treturn this.mercuryFixture\n\t}\n\n\tprotected static get people() {\n\t\tif (!this.personFixture) {\n\t\t\tthis.personFixture = new PersonFixture(\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.personFixture\n\t}\n\n\tprotected static getViewFixture() {\n\t\tif (!this.viewFixture) {\n\t\t\tconst writerFactory = this.WriterFactory()\n\n\t\t\tconst viewWriter = writerFactory.Writer('view', { fileDescriptions: [] })\n\t\t\tthis.viewFixture = new ViewFixture(\n\t\t\t\tthis.cwd,\n\t\t\t\tviewWriter,\n\t\t\t\tthis.Action('view', 'sync')\n\t\t\t)\n\t\t}\n\n\t\treturn this.viewFixture\n\t}\n\n\tprivate static WriterFactory() {\n\t\treturn new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui: this.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t})\n\t}\n\n\tprotected static async skipInstallSkillPrompts<\n\t\tE extends () => Promise<FeatureActionResponse>\n\t>(\n\t\texecute?: E\n\t): Promise<E extends undefined ? undefined : FeatureActionResponse> {\n\t\tconst promise = execute?.()\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('n')\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\treturn results as any\n\t}\n\n\tprotected static getOrganizationFixture() {\n\t\tif (!this.organizationFixture) {\n\t\t\tthis.organizationFixture = new OrganizationFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.organizationFixture\n\t}\n\n\tprotected static getSkillFixture() {\n\t\tif (!this.skillFixture) {\n\t\t\tthis.skillFixture = new SkillFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory(),\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.skillFixture\n\t}\n\n\tprotected static resolveHashSprucePath(...filePath: string[]) {\n\t\treturn diskUtil.resolveHashSprucePath(this.cwd, ...filePath)\n\t}\n\n\tprotected static get featureInstaller() {\n\t\tif (!this._featureInstaller) {\n\t\t\tconst installer = this.FeatureInstaller()\n\t\t\tthis._featureInstaller = installer\n\t\t}\n\n\t\treturn this._featureInstaller\n\t}\n\n\tprotected static set featureInstaller(installer: FeatureInstaller) {\n\t\tthis._featureInstaller = installer\n\t}\n\n\tprotected static FeatureInstaller(options?: Partial<FeatureOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\t\tconst storeFactory = this.StoreFactory(options)\n\t\tconst emitter = options?.emitter ?? this.emitter\n\t\tconst apiClientFactory = this.getMercuryFixture().getApiClientFactory()\n\n\t\tconst actionExecuter = this.ActionExecuter()\n\n\t\tconst installer = FeatureInstallerFactory.WithAllFeatures({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory,\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t\tactionExecuter,\n\t\t\t...options,\n\t\t})\n\t\treturn installer\n\t}\n\n\tprotected static StoreFactory(options?: Partial<StoreFactoryOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\n\t\treturn new StoreFactory({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: this.homeDir,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\temitter: this.emitter,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.StoreFactory().Store(code, {\n\t\t\tcwd: this.cwd,\n\t\t\t...(options as any),\n\t\t})\n\t}\n\n\tprotected static async waitForInput() {\n\t\treturn this.ui.waitForInput()\n\t}\n\n\tprotected static async assertIsFeatureInstalled(code: FeatureCode) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(code)\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\tprotected static async assertValidActionResponseFiles(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tfor (const file of results.files ?? []) {\n\t\t\tconst checker = this.Service('typeChecker')\n\t\t\tawait checker.check(file.path)\n\t\t}\n\n\t\t// await Promise.all(\n\t\t// \t(results.files ?? []).map((file) => {\n\t\t// \t\tconst checker = this.Service('typeChecker')\n\t\t// \t\treturn checker.check(file.path)\n\t\t// \t})\n\t\t// )\n\t}\n\n\tprotected static async connectToApi(options?: ApiClientFactoryOptions) {\n\t\treturn this.getMercuryFixture().connectToApi(options)\n\t}\n\n\tprotected static async openInVsCode(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Action('vscode', 'setup').execute({ all: true })\n\n\t\tawait this.Service('command').execute(\n\t\t\t`code ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static async openInFinder(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Service('command').execute(\n\t\t\t`open ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static log(...args: any[]) {\n\t\ttestUtil.log(...args)\n\t}\n\n\tprotected static Action<\n\t\tAction extends AbstractAction = AbstractAction,\n\t\tF extends FeatureCode = FeatureCode\n\t>(featureCode: F, actionCode: string, options?: ExecuterOptions): Action {\n\t\tconst executer = this.ActionExecuter({\n\t\t\tshouldThrowOnListenerError: true,\n\t\t\t...options,\n\t\t}).Action(featureCode, actionCode)\n\n\t\treturn executer as any\n\t}\n\n\tprotected static ActionExecuter(options?: ExecuterOptions) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\t\tconst writerFactory = this.WriterFactory()\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\twriterFactory,\n\t\t\tui: this.ui,\n\t\t\temitter: this.emitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory: this.StoreFactory(),\n\t\t\ttemplates,\n\t\t\toptionOverrides: {\n\t\t\t\t'sync.schemas': {\n\t\t\t\t\tshouldInstallMissingDependencies: true,\n\t\t\t\t},\n\t\t\t\t...options?.optionOverrides,\n\t\t\t},\n\t\t})\n\n\t\tconst executer = new ActionExecuter({\n\t\t\tui: this.ui,\n\t\t\temitter: this.emitter,\n\t\t\tactionFactory,\n\t\t\tfeatureInstallerFactory: () => {\n\t\t\t\treturn this.featureInstaller\n\t\t\t},\n\t\t\tshouldAutoHandleDependencies: false,\n\t\t\t...options,\n\t\t})\n\n\t\treturn executer\n\t}\n\n\tprotected static selectOptionBasedOnLabel(label: string) {\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel,\n\t\t})\n\n\t\tconst match = last.options.options.choices.find(\n\t\t\t(o: any) => o.label === label\n\t\t)\n\n\t\tvoid this.ui.sendInput(`${match.value}`)\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AbstractCliTest.js","names":["AbstractCliTest","cleanTestDirsAndFiles","LintService","disableLinting","ImportService","setCacheDir","diskUtil","createRandomTempDir","enableCaching","process","env","ENABLE_INSTALL_ENTERTAINMENT","originalEnv","_writers","ActionFactory","clearActionOverrides","testUtil","startLogTimer","SchemaRegistry","getInstance","forgetAllSchemas","cwd","freshTmpDir","homeDir","_emitter","undefined","_featureInstaller","OnboardingStore","overrideCwd","ui","reset","invocations","setCursorPosition","x","y","clearFixtures","clearCache","SkillStore","clearCurrentSkill","EventStore","CommandService","clearFakedResponses","MercuryClientFactory","setIsTestMode","commandFaker","CommandFaker","organizationFixture","clearAllOrgs","mercuryFixture","disconnectAll","_ui","isWaitingForInput","Error","doesDirExist","shouldClearCache","deleteDir","shouldCleanupAfterEach","FeatureFixture","deleteOldSkillDirs","shouldCleanupAfterAll","pattern","resolveTestPath","globby","matches","match","deleteFile","personFixture","skillFixture","viewFixture","tmpDirectory","resolveTestDir","uuid","v4","fs","ensureDirSync","SpyInterface","CliGlobalEmitter","Emitter","emitter","pathAfterTestDirsAndFiles","pathUtil","join","cliRoot","options","Cli","fixture","linkLocalPackages","type","sf","ServiceFactory","Service","serviceFactory","apiClientFactory","getMercuryFixture","getApiClientFactory","featureInstaller","MercuryFixture","PersonFixture","viewWriter","writers","Writer","fileDescriptions","ViewFixture","Action","WriterFactory","templates","settings","execute","promise","waitForInput","sendInput","results","OrganizationFixture","people","StoreFactory","SkillFixture","filePath","resolveHashSprucePath","installer","FeatureInstaller","storeFactory","actionExecuter","ActionExecuter","FeatureInstallerFactory","WithAllFeatures","code","Store","isInstalled","assert","isTrue","files","file","assertFilePassesTypeChecks","path","checker","check","connectToApi","all","dir","wait","timeout","log","featureCode","actionCode","executer","shouldThrowOnListenerError","actionFactory","writerFactory","optionOverrides","shouldInstallMissingDependencies","featureInstallerFactory","shouldAutoHandleDependencies","label","last","getLastInvocation","doesInclude","choices","find","o","value","AbstractSpruceTest","__dirname"],"sources":["../../src/tests/AbstractCliTest.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SchemaRegistry } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport AbstractSpruceTest, { assert } from '@sprucelabs/test-utils'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport * as uuid from 'uuid'\nimport { CliBootOptions } from '../cli'\nimport AbstractAction from '../features/AbstractAction'\nimport { FeatureOptions } from '../features/AbstractFeature'\nimport ActionExecuter, {\n\tActionExecuterOptions,\n} from '../features/ActionExecuter'\nimport ActionFactory from '../features/ActionFactory'\nimport EventStore from '../features/event/stores/EventStore'\nimport FeatureInstaller from '../features/FeatureInstaller'\nimport FeatureInstallerFactory from '../features/FeatureInstallerFactory'\nimport { FeatureActionResponse, FeatureCode } from '../features/features.types'\nimport OnboardingStore from '../features/onboard/stores/OnboardingStore'\nimport SkillStore from '../features/skill/stores/SkillStore'\nimport CliGlobalEmitter, { GlobalEmitter } from '../GlobalEmitter'\nimport SpyInterface from '../interfaces/SpyInterface'\nimport CommandService from '../services/CommandService'\nimport ImportService from '../services/ImportService'\nimport LintService from '../services/LintService'\nimport ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreFactoryOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport { ApiClientFactoryOptions } from '../types/apiClient.types'\nimport { OptionOverrides } from '../types/cli.types'\nimport WriterFactory from '../writers/WriterFactory'\nimport CommandFaker from './CommandFaker'\nimport FeatureFixture, {\n\tFeatureFixtureOptions,\n} from './fixtures/FeatureFixture'\nimport MercuryFixture from './fixtures/MercuryFixture'\nimport OrganizationFixture from './fixtures/OrganizationFixture'\nimport PersonFixture from './fixtures/PersonFixture'\nimport SkillFixture from './fixtures/SkillFixture'\nimport ViewFixture from './fixtures/ViewFixture'\nimport testUtil from './utilities/test.utility'\n\nexport default abstract class AbstractCliTest extends AbstractSpruceTest {\n\tprotected static cliRoot = pathUtil.join(__dirname, '..')\n\tprotected static homeDir: string\n\tprotected static commandFaker: CommandFaker\n\n\tprivate static _ui: SpyInterface\n\tprivate static _emitter?: GlobalEmitter\n\tprivate static mercuryFixture?: MercuryFixture\n\tprivate static personFixture?: PersonFixture\n\tprivate static organizationFixture?: OrganizationFixture\n\tprivate static skillFixture?: SkillFixture\n\tprivate static _featureInstaller?: FeatureInstaller\n\tprivate static viewFixture?: ViewFixture\n\tprivate static originalEnv: { [x: string]: string | undefined }\n\tprivate static _writers?: WriterFactory\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tawait this.cleanTestDirsAndFiles()\n\n\t\tLintService.disableLinting()\n\n\t\tImportService.setCacheDir(diskUtil.createRandomTempDir())\n\t\tImportService.enableCaching()\n\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT = 'false'\n\n\t\tthis.originalEnv = { ...process.env }\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\tdelete this._writers\n\n\t\tActionFactory.clearActionOverrides()\n\n\t\t//@ts-ignore\n\t\tprocess.env = { ...this.originalEnv }\n\n\t\ttestUtil.startLogTimer()\n\n\t\tSchemaRegistry.getInstance().forgetAllSchemas()\n\n\t\tthis.cwd = this.freshTmpDir()\n\t\tthis.homeDir = this.freshTmpDir()\n\n\t\tthis._emitter = undefined\n\t\tthis._featureInstaller = undefined\n\n\t\tOnboardingStore.overrideCwd(diskUtil.createRandomTempDir())\n\n\t\tthis.ui.reset()\n\t\tthis.ui.invocations = []\n\t\tthis.ui.setCursorPosition({ x: 0, y: 0 })\n\n\t\tthis.clearFixtures()\n\n\t\tImportService.clearCache()\n\t\tSkillStore.clearCurrentSkill()\n\t\tEventStore.clearCache()\n\t\tCommandService.clearFakedResponses()\n\t\tMercuryClientFactory.reset()\n\t\tMercuryClientFactory.setIsTestMode(false)\n\n\t\tthis.commandFaker = new CommandFaker()\n\t}\n\n\tprotected static async afterEach() {\n\t\tawait super.afterEach()\n\n\t\tawait this.organizationFixture?.clearAllOrgs()\n\t\tawait this.mercuryFixture?.disconnectAll()\n\n\t\tthis.clearFixtures()\n\n\t\tif (this._ui?.isWaitingForInput()) {\n\t\t\tthrow new Error(\n\t\t\t\t`Terminal interface is waiting for input. Make sure you are invoking this.term.sendInput() as many times as needed.`\n\t\t\t)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.cwd) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.cwd)\n\t\t}\n\n\t\tif (diskUtil.doesDirExist(this.homeDir) && testUtil.shouldClearCache()) {\n\t\t\tdiskUtil.deleteDir(this.homeDir)\n\t\t}\n\n\t\tif (testUtil.shouldCleanupAfterEach()) {\n\t\t\tFeatureFixture.deleteOldSkillDirs()\n\t\t}\n\t}\n\n\tprotected static async afterAll() {\n\t\tawait super.afterAll()\n\t\tif (testUtil.shouldCleanupAfterAll()) {\n\t\t\tFeatureFixture.deleteOldSkillDirs()\n\t\t}\n\t}\n\n\tprivate static async cleanTestDirsAndFiles() {\n\t\tconst pattern = this.resolveTestPath('**/*.d.ts')\n\t\tconst matches = await globby(pattern)\n\n\t\tfor (const match of matches) {\n\t\t\tdiskUtil.deleteFile(match)\n\t\t}\n\t}\n\n\tprivate static clearFixtures() {\n\t\tthis._emitter = undefined\n\t\tthis.mercuryFixture = undefined\n\t\tthis.organizationFixture = undefined\n\t\tthis.personFixture = undefined\n\t\tthis.skillFixture = undefined\n\t\tthis.viewFixture = undefined\n\t}\n\n\tprotected static freshTmpDir() {\n\t\tconst tmpDirectory = testUtil.resolveTestDir(uuid.v4())\n\t\tfs.ensureDirSync(tmpDirectory)\n\t\treturn tmpDirectory\n\t}\n\n\tprotected static get ui() {\n\t\tif (!this._ui) {\n\t\t\tthis._ui = new SpyInterface()\n\t\t}\n\n\t\treturn this._ui\n\t}\n\n\tprotected static get emitter() {\n\t\tif (!this._emitter) {\n\t\t\tthis._emitter = CliGlobalEmitter.Emitter()\n\t\t}\n\t\treturn this._emitter\n\t}\n\n\tprotected static set emitter(emitter: GlobalEmitter) {\n\t\tthis._emitter = emitter\n\t}\n\n\tprotected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]) {\n\t\treturn pathUtil.join(\n\t\t\tthis.cliRoot,\n\t\t\t'__tests__',\n\t\t\t'testDirsAndFiles',\n\t\t\t...pathAfterTestDirsAndFiles\n\t\t)\n\t}\n\n\tprotected static async Cli(options?: CliBootOptions) {\n\t\treturn this.FeatureFixture(options).Cli({\n\t\t\tcwd: this.cwd,\n\t\t\thomeDir: this.homeDir,\n\t\t\t...(options ?? {}),\n\t\t})\n\t}\n\n\tprotected static async linkLocalPackages() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tawait fixture.linkLocalPackages()\n\t}\n\n\tprotected static Service<S extends Service>(\n\t\ttype: S,\n\t\tcwd?: string\n\t): ServiceMap[S] {\n\t\tconst sf = this.ServiceFactory()\n\t\treturn sf.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected static ServiceFactory() {\n\t\treturn new ServiceFactory()\n\t}\n\n\tprotected static FeatureFixture(options?: Partial<FeatureFixtureOptions>) {\n\t\treturn new FeatureFixture({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory: this.ServiceFactory(),\n\t\t\tui: this.ui,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tfeatureInstaller: this.featureInstaller,\n\t\t\temitter: this.emitter,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static getMercuryFixture() {\n\t\tif (!this.mercuryFixture) {\n\t\t\tthis.mercuryFixture = new MercuryFixture(this.cwd, this.ServiceFactory())\n\t\t}\n\n\t\treturn this.mercuryFixture\n\t}\n\n\tprotected static get people() {\n\t\tif (!this.personFixture) {\n\t\t\tthis.personFixture = new PersonFixture(\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.personFixture\n\t}\n\n\tprotected static getViewFixture() {\n\t\tif (!this.viewFixture) {\n\t\t\tconst viewWriter = this.writers.Writer('view', { fileDescriptions: [] })\n\t\t\tthis.viewFixture = new ViewFixture(\n\t\t\t\tthis.cwd,\n\t\t\t\tviewWriter,\n\t\t\t\tthis.Action('view', 'sync')\n\t\t\t)\n\t\t}\n\n\t\treturn this.viewFixture\n\t}\n\n\tprotected static get writers() {\n\t\tif (!this._writers) {\n\t\t\tthis._writers = this.WriterFactory()\n\t\t}\n\n\t\treturn this._writers\n\t}\n\n\tprivate static WriterFactory() {\n\t\treturn new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui: this.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t})\n\t}\n\n\tprotected static async skipInstallSkillPrompts<\n\t\tE extends () => Promise<FeatureActionResponse>\n\t>(\n\t\texecute?: E\n\t): Promise<E extends undefined ? undefined : FeatureActionResponse> {\n\t\tconst promise = execute?.()\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('n')\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\treturn results as any\n\t}\n\n\tprotected static getOrganizationFixture() {\n\t\tif (!this.organizationFixture) {\n\t\t\tthis.organizationFixture = new OrganizationFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.organizationFixture\n\t}\n\n\tprotected static getSkillFixture() {\n\t\tif (!this.skillFixture) {\n\t\t\tthis.skillFixture = new SkillFixture(\n\t\t\t\tthis.people,\n\t\t\t\tthis.StoreFactory(),\n\t\t\t\tthis.getMercuryFixture().getApiClientFactory()\n\t\t\t)\n\t\t}\n\n\t\treturn this.skillFixture\n\t}\n\n\tprotected static resolveHashSprucePath(...filePath: string[]) {\n\t\treturn diskUtil.resolveHashSprucePath(this.cwd, ...filePath)\n\t}\n\n\tprotected static get featureInstaller() {\n\t\tif (!this._featureInstaller) {\n\t\t\tconst installer = this.FeatureInstaller()\n\t\t\tthis._featureInstaller = installer\n\t\t}\n\n\t\treturn this._featureInstaller\n\t}\n\n\tprotected static set featureInstaller(installer: FeatureInstaller) {\n\t\tthis._featureInstaller = installer\n\t}\n\n\tprotected static FeatureInstaller(options?: Partial<FeatureOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\t\tconst storeFactory = this.StoreFactory(options)\n\t\tconst emitter = options?.emitter ?? this.emitter\n\t\tconst apiClientFactory = this.getMercuryFixture().getApiClientFactory()\n\n\t\tconst actionExecuter = this.ActionExecuter()\n\n\t\tconst installer = FeatureInstallerFactory.WithAllFeatures({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory,\n\t\t\tui: this.ui,\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t\tactionExecuter,\n\t\t\t...options,\n\t\t})\n\t\treturn installer\n\t}\n\n\tprotected static StoreFactory(options?: Partial<StoreFactoryOptions>) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\n\t\treturn new StoreFactory({\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: this.homeDir,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\temitter: this.emitter,\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected static Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.StoreFactory().Store(code, {\n\t\t\tcwd: this.cwd,\n\t\t\t...(options as any),\n\t\t})\n\t}\n\n\tprotected static async waitForInput() {\n\t\treturn this.ui.waitForInput()\n\t}\n\n\tprotected static async assertIsFeatureInstalled(code: FeatureCode) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(code)\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\tprotected static async assertValidActionResponseFiles(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tfor (const file of results.files ?? []) {\n\t\t\tawait this.assertFilePassesTypeChecks(file.path)\n\t\t}\n\n\t\t// await Promise.all(\n\t\t// \t(results.files ?? []).map((file) => {\n\t\t// \t\tconst checker = this.Service('typeChecker')\n\t\t// \t\treturn checker.check(file.path)\n\t\t// \t})\n\t\t// )\n\t}\n\n\tprotected static async assertFilePassesTypeChecks(file: string) {\n\t\tconst checker = this.Service('typeChecker')\n\t\tawait checker.check(file)\n\t}\n\n\tprotected static async connectToApi(options?: ApiClientFactoryOptions) {\n\t\treturn this.getMercuryFixture().connectToApi(options)\n\t}\n\n\tprotected static async openInVsCode(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Action('vscode', 'setup').execute({ all: true })\n\n\t\tawait this.Service('command').execute(\n\t\t\t`code ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static async openInFinder(options?: {\n\t\tfile?: string\n\t\tdir?: string\n\t\ttimeout?: number\n\t}) {\n\t\tawait this.Service('command').execute(\n\t\t\t`open ${options?.file ?? options?.dir ?? this.cwd}`\n\t\t)\n\t\tawait this.wait(options?.timeout ?? 99999999)\n\t}\n\n\tprotected static log(...args: any[]) {\n\t\ttestUtil.log(...args)\n\t}\n\n\tprotected static Action<\n\t\tAction extends AbstractAction = AbstractAction,\n\t\tF extends FeatureCode = FeatureCode\n\t>(featureCode: F, actionCode: string, options?: ExecuterOptions): Action {\n\t\tconst executer = this.ActionExecuter({\n\t\t\tshouldThrowOnListenerError: true,\n\t\t\t...options,\n\t\t}).Action(featureCode, actionCode)\n\n\t\treturn executer as any\n\t}\n\n\tprotected static ActionExecuter(options?: ExecuterOptions) {\n\t\tconst serviceFactory = this.ServiceFactory()\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\twriterFactory: this.writers,\n\t\t\tui: this.ui,\n\t\t\temitter: this.emitter,\n\t\t\tapiClientFactory: this.getMercuryFixture().getApiClientFactory(),\n\t\t\tcwd: this.cwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory: this.StoreFactory(),\n\t\t\ttemplates,\n\t\t\toptionOverrides: {\n\t\t\t\t'sync.schemas': {\n\t\t\t\t\tshouldInstallMissingDependencies: true,\n\t\t\t\t},\n\t\t\t\t...options?.optionOverrides,\n\t\t\t},\n\t\t})\n\n\t\tconst executer = new ActionExecuter({\n\t\t\tui: this.ui,\n\t\t\temitter: this.emitter,\n\t\t\tactionFactory,\n\t\t\tfeatureInstallerFactory: () => {\n\t\t\t\treturn this.featureInstaller\n\t\t\t},\n\t\t\tshouldAutoHandleDependencies: false,\n\t\t\t...options,\n\t\t})\n\n\t\treturn executer\n\t}\n\n\tprotected static selectOptionBasedOnLabel(label: string) {\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel,\n\t\t})\n\n\t\tconst match = last.options.options.choices.find(\n\t\t\t(o: any) => o.label === label\n\t\t)\n\n\t\tvoid this.ui.sendInput(`${match.value}`)\n\t}\n}\n\ntype ExecuterOptions = Partial<ActionExecuterOptions> & {\n\toptionOverrides?: OptionOverrides\n}\n"],"mappings":"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"}
|
|
@@ -173,6 +173,13 @@ function _run() {
|
|
|
173
173
|
term.clear();
|
|
174
174
|
if (process.env.WILL_BUILD_CACHE_SCRIPT) {
|
|
175
175
|
term.renderLine('Running pre build cache script');
|
|
176
|
+
if (process.env.CLEAN_CACHE_SCRIPT) {
|
|
177
|
+
try {
|
|
178
|
+
(0, _child_process.execSync)(process.env.CLEAN_CACHE_SCRIPT);
|
|
179
|
+
} catch (_unused) {
|
|
180
|
+
/* Empty */
|
|
181
|
+
}
|
|
182
|
+
}
|
|
176
183
|
(0, _child_process.execSync)(process.env.WILL_BUILD_CACHE_SCRIPT);
|
|
177
184
|
}
|
|
178
185
|
term.renderHeadline("Found ".concat(testKeys.length, " skills to cache."));
|