@sprucelabs/spruce-cli 18.1.8 → 18.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -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/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/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 +12 -2
- package/build/__tests__/behavioral/permissions/PermissionStore.test.js +248 -36
- 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/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/tests/CreatingATest.test.js +2 -2
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- 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__/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/__tests__/support/EventFaker.d.ts +5 -0
- package/build/__tests__/support/EventFaker.js +48 -0
- package/build/__tests__/support/EventFaker.js.map +1 -0
- 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 +140 -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 +7 -1
- package/build/features/permission/stores/PermissionStore.js +92 -23
- 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 +66 -17
- 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 +6 -6
- package/node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js +9 -9
- package/node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.d.ts +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js +1 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js +21 -7
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.d.ts +3 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.d.ts.map +1 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.js +12 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.js.map +1 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.js +2 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts +1 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js +2 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.js +2 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js +39 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js.map +1 -1
- 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/ExportVisitor.d.ts +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ExportVisitor.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.d.ts +2 -2
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js +9 -9
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.js +17 -17
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.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/dist/scope/Scope.d.ts +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/Scope.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.d.ts +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/package.json +12 -12
- package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +27 -3
- package/node_modules/@typescript-eslint/types/_ts3.4/dist/lib.d.ts +1 -1
- package/node_modules/@typescript-eslint/types/_ts3.4/dist/parser-options.d.ts +3 -3
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +27 -3
- 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 +3 -0
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js.map +1 -1
- package/node_modules/@typescript-eslint/types/dist/lib.d.ts +1 -1
- package/node_modules/@typescript-eslint/types/dist/lib.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts +3 -3
- package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/types/package.json +3 -3
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/create-program/shared.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parseSettings/index.d.ts +2 -2
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parser-options.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parser.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/simple-traverse.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/estree-to-ts-node-types.d.ts +4 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/ts-nodes.d.ts +4 -2
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +22 -3
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js +9 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/index.d.ts +2 -2
- package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/index.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parser.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parser.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts +4 -1
- 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 +4 -2
- 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 +6 -6
- 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 -48
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js.map +1 -1
- package/node_modules/@typescript-eslint/visitor-keys/package.json +4 -4
- 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/SkillEmitsBootEvents.test.ts +6 -0
- 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 +204 -23
- package/src/__tests__/behavioral/permissions/PermissionWriter.test.ts +23 -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/schemas/GettingSchemasFromHealthCheck.test.ts +12 -12
- package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -2
- 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__/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/__tests__/support/EventFaker.ts +23 -0
- 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 +66 -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 +44 -3
- package/src/features/permission/writers/PermissionWriter.ts +64 -3
- 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/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":"ActionExecuter2.test.js","names":["FeatureCommandExecuterContTest","test","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","setupMockCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","getLastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","fakeCommand","RegExp","code","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.emitter\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.setupMockCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static setupMockCommands() {\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AAKA;AACA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,8BAA8B,WACjD,IAAAC,eAAI,GAAE,UAmBN,IAAAA,eAAI,GAAE,UAgEN,IAAAA,eAAI,GAAE,UAkCN,IAAAA,eAAI,GAAE,UAmBN,IAAAA,eAAI,GAAE,UAqBN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,iHA7JP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAGQ,IAAI,CAACC,8CAA8C,CAAC,MAAM,CAAC;cAAA;gBAAA;gBADjDC,aAAa,yBAAtBC,OAAO;gBAAA;gBAAA,OAGO,IAAI,CAACC,gCAAgC,CAACF,aAAa,CAAC;cAAA;gBAApEG,OAAO;gBAEbC,iBAAM,CAACC,QAAQ,CAACF,OAAO,CAACG,KAAK,CAAC;gBAC9BF,iBAAM,CAACG,OAAO,CAACJ,OAAO,CAACK,MAAM,CAAC;gBAExBC,UAAU,GAAG,IAAI,CAACC,qBAAqB,CAAC,UAAU,CAAC;gBACzDN,iBAAM,CAACO,OAAO,CAACC,0BAAQ,CAACC,YAAY,CAACJ,UAAU,CAAC,CAAC;gBAEjDK,gBAAQ,CAACC,gCAAgC,CACxC,sBAAsB,EACtBZ,OAAO,CAACG,KAAK,CACb;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+GAED;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEC,IAAI,CAACU,iBAAiB,EAAE;gBAElBC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBAEEC,gBAAgB,GAAG,KAAK;gBACxBC,gBAAgB,GAAG,EAAE;gBACrBC,eAAe,GAAG,KAAK;gBACvBC,eAAe,GAAG,EAAE;gBACpBC,mBAAmB,GAAG,CAAC;gBACvBC,kBAAkB,GAAG,CAAC;gBAEpBC,OAAO,GAAG,IAAI,CAACA,OAAO;gBAE5B,KAAKA,OAAO,CAACC,EAAE,CAAC,sBAAsB,EAAE,UAACC,OAAO,EAAK;kBACpDR,gBAAgB,GAAG,IAAI;kBACvBI,mBAAmB,EAAE;kBAErBH,gBAAgB,GAAGQ,mBAAY,CAACC,eAAe,CAC9CF,OAAO,CAACG,WAAW,EACnBH,OAAO,CAACI,UAAU,CAClB;kBACD,OAAO,CAAC,CAAC;gBACV,CAAC,CAAC;gBAEF,KAAKN,OAAO,CAACC,EAAE,CAAC,qBAAqB,EAAE,UAACC,OAAO,EAAK;kBACnDN,eAAe,GAAG,IAAI;kBACtBG,kBAAkB,EAAE;kBACpBF,eAAe,GAAGM,mBAAY,CAACC,eAAe,CAC7CF,OAAO,CAACG,WAAW,EACnBH,OAAO,CAACI,UAAU,CAClB;kBAED,OAAO;oBACNC,IAAI,EAAE;sBACLC,IAAI,EAAE;oBACP;kBACD,CAAC;gBACF,CAAC,CAAC;gBAEF9B,iBAAM,CAACO,OAAO,CAACS,gBAAgB,CAAC;gBAChChB,iBAAM,CAACO,OAAO,CAACW,eAAe,CAAC;gBAC/BlB,iBAAM,CAAC+B,OAAO,CAACX,mBAAmB,EAAE,CAAC,CAAC;gBACtCpB,iBAAM,CAAC+B,OAAO,CAACV,kBAAkB,EAAE,CAAC,CAAC;gBAE/BxB,OAAO,GAAGgB,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE9B,IAAI,CAACC,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,cAAc,CAAC;cAAA;gBAAA;gBAAA,OACjC,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,WAAW,CAAC;cAAA;gBAAA;gBAAA,OAEdtC,OAAO;cAAA;gBAAvBE,OAAO;gBAEbC,iBAAM,CAAC+B,OAAO,kBAAChC,OAAO,CAAC8B,IAAI,kDAAZ,cAAcC,IAAI,EAAE,MAAM,CAAC;gBAC1C9B,iBAAM,CAAC+B,OAAO,CAACd,gBAAgB,EAAE,cAAc,CAAC;gBAChDjB,iBAAM,CAAC+B,OAAO,CAACZ,eAAe,EAAE,cAAc,CAAC;gBAC/CnB,iBAAM,CAAC+B,OAAO,CAACX,mBAAmB,EAAE,CAAC,CAAC;gBACtCpB,iBAAM,CAAC+B,OAAO,CAACV,kBAAkB,EAAE,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACrC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,4HAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAGQ,IAAI,CAAC1B,8CAA8C,CAAC,YAAY,CAAC;cAAA;gBAAA;gBADvDC,aAAa,0BAAtBC,OAAO;gBAAA;gBAAA,OAGT,IAAI,CAACC,gCAAgC,CAACF,aAAa,CAAC;cAAA;gBAEpDiB,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBACIlB,OAAO,GAAGgB,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE9B,IAAI,CAACC,YAAY,EAAE;cAAA;gBAEzBjC,iBAAM,CAACoC,cAAc,CAAC,IAAI,CAACF,EAAE,CAACG,iBAAiB,EAAE,EAAE;kBAClDC,OAAO,EAAE,QAAQ;kBACjBC,OAAO,EAAE;oBACRC,IAAI,EAAE;kBACP;gBACD,CAAC,CAAC;gBAAA;gBAAA,OAEI,IAAI,CAACN,EAAE,CAACC,SAAS,CAAC,iBAAiB,CAAC;cAAA;gBAAA;gBAAA,OACpC,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAEKtC,OAAO;cAAA;gBAAjC4C,iBAAiB;gBAEvBzC,iBAAM,CAACC,QAAQ,CAACwC,iBAAiB,CAACvC,KAAK,CAAC;gBAExCQ,gBAAQ,CAACC,gCAAgC,CACxC,sBAAsB,EACtB8B,iBAAiB,CAACvC,KAAK,CACvB;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEC,IAAI,CAACU,iBAAiB,EAAE;gBAElBC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBAAA;gBAAA,OACoBF,QAAQ,CAACmB,OAAO,CAAC;kBACtCU,IAAI,EAAE,4BAA4B;kBAClCC,WAAW,EAAE;gBACd,CAAC,CAAC;cAAA;gBAHI5C,OAAO;gBAKbC,iBAAM,CAACC,QAAQ,CAACF,OAAO,CAACG,KAAK,CAAC;gBAC9BF,iBAAM,CAACC,QAAQ,CAACF,OAAO,CAAC6C,iBAAiB,CAAC;gBAE1C5C,iBAAM,CAAC6C,OAAO,CAAC9C,OAAO,CAACG,KAAK,CAAC4C,MAAM,EAAE,CAAC,CAAC;gBACvC9C,iBAAM,CAAC6C,OAAO,CAAC9C,OAAO,CAAC6C,iBAAiB,CAACE,MAAM,EAAE,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACnD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,uHAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEC,IAAI,CAAClC,iBAAiB,EAAE;gBAElBC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE;kBAChDC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBACF,KAAKF,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAEnB,IAAI,CAACC,YAAY,EAAE;cAAA;gBAEzB,IAAI,CAACC,EAAE,CAACa,KAAK,EAAE;gBACTC,YAAY,GAAG,IAAI,CAACd,EAAE,CAACG,iBAAiB,EAAE;gBAEhDrC,iBAAM,CAAC+B,OAAO,CAACiB,YAAY,CAACV,OAAO,EAAE,QAAQ,CAAC;gBAC9CtC,iBAAM,CAACiD,WAAW,CACjBD,YAAY,CAACT,OAAO,CAACW,KAAK,EAC1B,6BAA6B,CAC7B;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,6HAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEC,IAAI,CAACtC,iBAAiB,EAAE;gBAAA;gBAAA,OAElB,IAAI,CAACuC,cAAc,EAAE,CAACC,qBAAqB,CAAC,SAAS,CAAC;cAAA;gBAEtDvC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBACIlB,OAAO,GAAGgB,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE9B,IAAI,CAACC,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,OAAO,CAAC;cAAA;gBAAA;gBAAA,OAC1B,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,WAAW,CAAC;cAAA;gBAAA;gBAAA,OAEdtC,OAAO;cAAA;gBAAvBE,OAAO;gBAEPsD,OAAO,GAAGC,6BAAW,CAACC,eAAe,EAAE,CAACC,QAAQ;gBACtD9C,gBAAQ,CAACC,gCAAgC,qBAC3B0C,OAAO,mBACpBtD,OAAO,CAACG,KAAK,CACb;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,sHAED,kBACCN,aAAsE;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEhE,IAAI,CAACsC,EAAE,CAACC,SAAS,CAAC,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAErB,IAAI,CAACF,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAErB,IAAI,CAACF,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,cAAc,CAAC;cAAA;gBAAA;gBAAA,OACjC,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAELvC,aAAa;cAAA;gBAA7BG,OAAO;gBAAA,kCACNA,OAAO;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACd;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,oIAED,kBACC0D,kBAAiD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAE3C5C,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBACIlB,OAAO,GAAGgB,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE9B,IAAI,CAACC,YAAY,EAAE;cAAA;gBAEnByB,OAAO,GACZ,IAAI,CAACxB,EAAE,CAACyB,WAAW,CAAC,IAAI,CAACzB,EAAE,CAACyB,WAAW,CAACb,MAAM,GAAG,CAAC,CAAC,CAACP,OAAO,CAACmB,OAAO;gBACpE1D,iBAAM,CAACC,QAAQ,CAACyD,OAAO,CAAC;gBAExB1D,iBAAM,CAACiD,WAAW,CAACS,OAAO,EAAE,cAAc,CAAC;gBAC3C1D,iBAAM,CAACiD,WAAW,CAACS,OAAO,EAAE,cAAc,CAAC;gBAE3C1D,iBAAM,CAACiD,WAAW,CAAC,IAAI,CAACf,EAAE,CAACG,iBAAiB,EAAE,EAAE;kBAC/CC,OAAO,EAAE,QAAQ;kBACjBC,OAAO,EAAE;oBACRC,IAAI,EAAE,QAAQ;oBACdD,OAAO,EAAE;sBACRqB,OAAO,EAAE,CACR;wBACCC,KAAK,EAAE,KAAK;wBACZX,KAAK,EAAE;sBACR,CAAC,EACD;wBACCW,KAAK,EAAE,MAAM;wBACbX,KAAK,EAAE;sBACR,CAAC,EACD;wBACCW,KAAK,EAAE,YAAY;wBACnBX,KAAK,EAAE;sBACR,CAAC;oBAEH;kBACD;gBACD,CAAC,CAAC;gBAAA;gBAAA,OAEI,IAAI,CAAChB,EAAE,CAACC,SAAS,CAACsB,kBAAkB,CAAC;cAAA;gBAAA;gBAAA,OAErC,IAAI,CAACvB,EAAE,CAACC,SAAS,CAAC,GAAG,CAAC;cAAA;gBAAA;gBAAA,OAEtB,IAAI,CAACF,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,eAAe,CAAC;cAAA;gBAAA;gBAAA,OAClC,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,mBAAmB,CAAC;cAAA;gBAAA;gBAAA,OAEtC,IAAI,CAACF,YAAY,EAAE;cAAA;gBAAA,kCAElB;kBAAEpC,OAAO,EAAPA;gBAAQ,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAClB;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,6BAAmC;MAClCiE,0BAAc,CAACC,WAAW,CAAC,IAAIC,MAAM,CAAC,+BAAsB,CAAC,EAAE;QAC9DC,IAAI,EAAE;MACP,CAAC,CAAC;IACH;EAAC;EAAA;AAAA,EAnQ0DC,+BAAkB;AAAA"}
|
|
1
|
+
{"version":3,"file":"ActionExecuter2.test.js","names":["FeatureCommandExecuterContTest","test","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","fakeInstallCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","getLastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","fakeCommand","RegExp","code","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.fakeInstallCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.emitter\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.fakeInstallCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.fakeInstallCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.fakeInstallCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('Y')\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static fakeInstallCommands() {\n\t\tCommandService.fakeCommand(new RegExp(/yarn|npm/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -15,10 +15,10 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
15
15
|
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
|
|
16
16
|
var _testUtils = require("@sprucelabs/test-utils");
|
|
17
17
|
var _AbstractCliTest2 = _interopRequireDefault(require("../../tests/AbstractCliTest"));
|
|
18
|
-
var _dec, _class;
|
|
18
|
+
var _dec, _dec2, _class;
|
|
19
19
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
20
20
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
21
|
-
var GlobalEmitterTest = (_dec = (0, _testUtils.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
|
|
21
|
+
var GlobalEmitterTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
|
|
22
22
|
(0, _inherits2["default"])(GlobalEmitterTest, _AbstractCliTest);
|
|
23
23
|
var _super = _createSuper(GlobalEmitterTest);
|
|
24
24
|
function GlobalEmitterTest() {
|
|
@@ -47,8 +47,45 @@ var GlobalEmitterTest = (_dec = (0, _testUtils.test)(), (_class = /*#__PURE__*/f
|
|
|
47
47
|
}
|
|
48
48
|
return globalEmitterEmitsEquentally;
|
|
49
49
|
}()
|
|
50
|
+
}, {
|
|
51
|
+
key: "didExecuteAcceptsInstalledPackages",
|
|
52
|
+
value: function () {
|
|
53
|
+
var _didExecuteAcceptsInstalledPackages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
54
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
55
|
+
while (1) {
|
|
56
|
+
switch (_context2.prev = _context2.next) {
|
|
57
|
+
case 0:
|
|
58
|
+
_context2.next = 2;
|
|
59
|
+
return this.emitter.on('feature.did-execute', function () {
|
|
60
|
+
return {
|
|
61
|
+
packagesInstalled: [{
|
|
62
|
+
isDev: true,
|
|
63
|
+
name: (0, _testUtils.generateId)(),
|
|
64
|
+
version: (0, _testUtils.generateId)()
|
|
65
|
+
}]
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
case 2:
|
|
69
|
+
_context2.next = 4;
|
|
70
|
+
return this.emitter.emitAndFlattenResponses('feature.did-execute', {
|
|
71
|
+
actionCode: (0, _testUtils.generateId)(),
|
|
72
|
+
featureCode: 'permission',
|
|
73
|
+
results: {}
|
|
74
|
+
});
|
|
75
|
+
case 4:
|
|
76
|
+
case "end":
|
|
77
|
+
return _context2.stop();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}, _callee2, this);
|
|
81
|
+
}));
|
|
82
|
+
function didExecuteAcceptsInstalledPackages() {
|
|
83
|
+
return _didExecuteAcceptsInstalledPackages.apply(this, arguments);
|
|
84
|
+
}
|
|
85
|
+
return didExecuteAcceptsInstalledPackages;
|
|
86
|
+
}()
|
|
50
87
|
}]);
|
|
51
88
|
return GlobalEmitterTest;
|
|
52
|
-
}(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "globalEmitterEmitsEquentally", [_dec], Object.getOwnPropertyDescriptor(_class, "globalEmitterEmitsEquentally"), _class)), _class));
|
|
89
|
+
}(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "globalEmitterEmitsEquentally", [_dec], Object.getOwnPropertyDescriptor(_class, "globalEmitterEmitsEquentally"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "didExecuteAcceptsInstalledPackages", [_dec2], Object.getOwnPropertyDescriptor(_class, "didExecuteAcceptsInstalledPackages"), _class)), _class));
|
|
53
90
|
exports["default"] = GlobalEmitterTest;
|
|
54
91
|
//# sourceMappingURL=GlobalEmitter.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalEmitter.test.js","names":["GlobalEmitterTest","test","assert","isTrue","emitter","shouldEmitSequentally","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/GlobalEmitter.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class GlobalEmitterTest extends AbstractCliTest {\n\t@test()\n\tprotected static async globalEmitterEmitsEquentally() {\n\t\t//@ts-ignore\n\t\tassert.isTrue(this.emitter.shouldEmitSequentally)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,iBAAiB,WACpC,IAAAC,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,
|
|
1
|
+
{"version":3,"file":"GlobalEmitter.test.js","names":["GlobalEmitterTest","test","assert","isTrue","emitter","shouldEmitSequentally","on","packagesInstalled","isDev","name","generateId","version","emitAndFlattenResponses","actionCode","featureCode","results","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/GlobalEmitter.test.ts"],"sourcesContent":["import { test, assert, generateId } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class GlobalEmitterTest extends AbstractCliTest {\n\t@test()\n\tprotected static async globalEmitterEmitsEquentally() {\n\t\t//@ts-ignore\n\t\tassert.isTrue(this.emitter.shouldEmitSequentally)\n\t}\n\n\t@test()\n\tprotected static async didExecuteAcceptsInstalledPackages() {\n\t\tawait this.emitter.on('feature.did-execute', () => {\n\t\t\treturn {\n\t\t\t\tpackagesInstalled: [\n\t\t\t\t\t{\n\t\t\t\t\t\tisDev: true,\n\t\t\t\t\t\tname: generateId(),\n\t\t\t\t\t\tversion: generateId(),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\n\t\tawait this.emitter.emitAndFlattenResponses('feature.did-execute', {\n\t\t\tactionCode: generateId(),\n\t\t\tfeatureCode: 'permission',\n\t\t\tresults: {},\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,iBAAiB,WACpC,IAAAC,eAAI,GAAE,UAMN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,kHANP;QAAA;UAAA;YAAA;cAAA;gBAEC;gBACAC,iBAAM,CAACC,MAAM,CAAC,IAAI,CAACC,OAAO,CAACC,qBAAqB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,wHAED;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACD,OAAO,CAACE,EAAE,CAAC,qBAAqB,EAAE,YAAM;kBAClD,OAAO;oBACNC,iBAAiB,EAAE,CAClB;sBACCC,KAAK,EAAE,IAAI;sBACXC,IAAI,EAAE,IAAAC,qBAAU,GAAE;sBAClBC,OAAO,EAAE,IAAAD,qBAAU;oBACpB,CAAC;kBAEH,CAAC;gBACF,CAAC,CAAC;cAAA;gBAAA;gBAAA,OAEI,IAAI,CAACN,OAAO,CAACQ,uBAAuB,CAAC,qBAAqB,EAAE;kBACjEC,UAAU,EAAE,IAAAH,qBAAU,GAAE;kBACxBI,WAAW,EAAE,YAAY;kBACzBC,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA1B6CC,4BAAe;AAAA"}
|
|
@@ -233,7 +233,7 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
|
|
|
233
233
|
var _canRegister = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
|
|
234
234
|
var _results$skill,
|
|
235
235
|
_this4 = this;
|
|
236
|
-
var slug, isRegistered, skill, client, results, currentSkill, env, err,
|
|
236
|
+
var slug, isRegistered, skill, client, results, currentSkill, env, err, namespace;
|
|
237
237
|
return _regenerator["default"].wrap(function _callee8$(_context8) {
|
|
238
238
|
while (1) {
|
|
239
239
|
switch (_context8.prev = _context8.next) {
|
|
@@ -298,10 +298,9 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
|
|
|
298
298
|
case 41:
|
|
299
299
|
err = _context8.sent;
|
|
300
300
|
_testUtils.errorAssert.assertError(err, 'GENERIC');
|
|
301
|
-
|
|
302
|
-
namespace = pkg.get('skill.namespace');
|
|
301
|
+
namespace = this.Service('pkg').getSkillNamespace();
|
|
303
302
|
_testUtils.assert.isEqual(namespace, slug);
|
|
304
|
-
case
|
|
303
|
+
case 45:
|
|
305
304
|
case "end":
|
|
306
305
|
return _context8.stop();
|
|
307
306
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillStore.test.js","names":["SkillStoreTest","test","store","SkillStore","assert","isFunction","register","doesThrowAsync","name","slug","err","errorAssert","assertError","loadCurrentSkill","isCurrentSkillRegistered","FeatureFixture","installCachedFeatures","loadCurrentSkillsNamespace","namespace","isEqual","setCurrentSkillsNamespace","Date","getTime","people","loginAsDemoPerson","isRegistered","isFalse","skill","isTruthy","isString","apiKey","id","connectToApi","client","authenticate","skillId","results","isTrue","currentSkill","env","Service","get","
|
|
1
|
+
{"version":3,"file":"SkillStore.test.js","names":["SkillStoreTest","test","store","SkillStore","assert","isFunction","register","doesThrowAsync","name","slug","err","errorAssert","assertError","loadCurrentSkill","isCurrentSkillRegistered","FeatureFixture","installCachedFeatures","loadCurrentSkillsNamespace","namespace","isEqual","setCurrentSkillsNamespace","Date","getTime","people","loginAsDemoPerson","isRegistered","isFalse","skill","isTruthy","isString","apiKey","id","connectToApi","client","authenticate","skillId","results","isTrue","currentSkill","env","Service","get","getSkillNamespace","Store","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/SkillStore.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport SkillStore from '../../features/skill/stores/SkillStore'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class SkillStoreTest extends AbstractCliTest {\n\tprivate static store: SkillStore\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.store = this.SkillStore()\n\t}\n\n\t@test()\n\tprotected static async hasRegisterMethod() {\n\t\tassert.isFunction(this.store.register)\n\t}\n\n\t@test()\n\tprotected static async cantRegisterIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.register({\n\t\t\t\tname: 'awesome skill',\n\t\t\t\tslug: 'awesome-skill',\n\t\t\t})\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantLoadcurrentSkillIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() => this.store.loadCurrentSkill())\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantCheckIfSkillIsRegisteredNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.isCurrentSkillRegistered()\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async canGetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\t\tconst namespace = await this.store.loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'TestSkill')\n\t}\n\n\t@test()\n\tprotected static async canSetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tlet namespace = await this.store.loadCurrentSkillsNamespace()\n\t\tawait this.store.setCurrentSkillsNamespace('new-namespace')\n\t\tnamespace = await this.store.loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'NewNamespace')\n\t}\n\n\t@test()\n\tprotected static async canRegister() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst slug = `awesome-skill-${new Date().getTime()}`\n\t\tawait this.people.loginAsDemoPerson()\n\n\t\tlet isRegistered = await this.store.isCurrentSkillRegistered()\n\t\tassert.isFalse(isRegistered)\n\n\t\tconst skill = await this.store.register({\n\t\t\tname: 'awesome skill',\n\t\t\tslug,\n\t\t})\n\n\t\tassert.isTruthy(skill)\n\t\tassert.isEqual(skill.name, 'awesome skill')\n\t\tassert.isEqual(skill.slug, slug)\n\t\tassert.isString(skill.apiKey)\n\t\tassert.isString(skill.id)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst results = await client.authenticate({\n\t\t\tskillId: skill.id,\n\t\t\tapiKey: skill.apiKey,\n\t\t})\n\n\t\tassert.isEqual(results.skill?.id, skill.id)\n\n\t\tisRegistered = await this.store.isCurrentSkillRegistered()\n\t\tassert.isTrue(isRegistered)\n\n\t\tconst currentSkill = await this.store.loadCurrentSkill()\n\n\t\tassert.isEqual(currentSkill.id, skill.id)\n\t\tassert.isTrue(currentSkill.isRegistered)\n\t\tassert.isEqual(currentSkill.name, 'awesome skill')\n\t\tassert.isEqual(currentSkill.slug, slug)\n\t\tassert.isEqual(currentSkill.apiKey, skill.apiKey)\n\n\t\tconst env = this.Service('env')\n\n\t\tassert.isEqual(env.get('SKILL_ID'), skill.id)\n\t\tassert.isEqual(env.get('SKILL_API_KEY'), skill.apiKey)\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.setCurrentSkillsNamespace('test')\n\t\t)\n\n\t\terrorAssert.assertError(err, 'GENERIC')\n\n\t\tconst namespace = this.Service('pkg').getSkillNamespace()\n\t\tassert.isEqual(namespace, slug)\n\t}\n\n\tprivate static SkillStore(): SkillStore {\n\t\treturn this.Store('skill', {})\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SpruceSchemas } from '@sprucelabs/mercury-types';
|
|
2
|
+
export declare type ListPermContractsTargetAndPayload = SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsEmitTargetAndPayload;
|
|
3
|
+
export default class EventFaker {
|
|
4
|
+
fakeListPermissionContracts(cb?: (targetAndPayload: ListPermContractsTargetAndPayload) => void | SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsResponsePayload['permissionContracts']): Promise<void>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _spruceTestFixtures = require("@sprucelabs/spruce-test-fixtures");
|
|
13
|
+
var EventFaker = /*#__PURE__*/function () {
|
|
14
|
+
function EventFaker() {
|
|
15
|
+
(0, _classCallCheck2["default"])(this, EventFaker);
|
|
16
|
+
}
|
|
17
|
+
(0, _createClass2["default"])(EventFaker, [{
|
|
18
|
+
key: "fakeListPermissionContracts",
|
|
19
|
+
value: function () {
|
|
20
|
+
var _fakeListPermissionContracts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(cb) {
|
|
21
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
22
|
+
while (1) {
|
|
23
|
+
switch (_context.prev = _context.next) {
|
|
24
|
+
case 0:
|
|
25
|
+
_context.next = 2;
|
|
26
|
+
return _spruceTestFixtures.eventFaker.on('list-permission-contracts::v2020_12_25', function (targetAndPayload) {
|
|
27
|
+
var _cb;
|
|
28
|
+
return {
|
|
29
|
+
permissionContracts: (_cb = cb === null || cb === void 0 ? void 0 : cb(targetAndPayload)) !== null && _cb !== void 0 ? _cb : []
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
case 2:
|
|
33
|
+
case "end":
|
|
34
|
+
return _context.stop();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}, _callee);
|
|
38
|
+
}));
|
|
39
|
+
function fakeListPermissionContracts(_x) {
|
|
40
|
+
return _fakeListPermissionContracts.apply(this, arguments);
|
|
41
|
+
}
|
|
42
|
+
return fakeListPermissionContracts;
|
|
43
|
+
}()
|
|
44
|
+
}]);
|
|
45
|
+
return EventFaker;
|
|
46
|
+
}();
|
|
47
|
+
exports["default"] = EventFaker;
|
|
48
|
+
//# sourceMappingURL=EventFaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventFaker.js","names":["EventFaker","cb","eventFaker","on","targetAndPayload","permissionContracts"],"sources":["../../../src/__tests__/support/EventFaker.ts"],"sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { eventFaker } from '@sprucelabs/spruce-test-fixtures'\n\nexport type ListPermContractsTargetAndPayload =\n\tSpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsEmitTargetAndPayload\nexport default class EventFaker {\n\tpublic async fakeListPermissionContracts(\n\t\tcb?: (\n\t\t\ttargetAndPayload: ListPermContractsTargetAndPayload\n\t\t) =>\n\t\t\t| void\n\t\t\t| SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsResponsePayload['permissionContracts']\n\t) {\n\t\tawait eventFaker.on(\n\t\t\t'list-permission-contracts::v2020_12_25',\n\t\t\t(targetAndPayload) => {\n\t\t\t\treturn {\n\t\t\t\t\tpermissionContracts: cb?.(targetAndPayload) ?? [],\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t}\n}\n"],"mappings":";;;;;;;;;;;AACA;AAA6D,IAIxCA,UAAU;EAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,iHAC9B,iBACCC,EAIkG;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAE5FC,8BAAU,CAACC,EAAE,CAClB,wCAAwC,EACxC,UAACC,gBAAgB,EAAK;kBAAA;kBACrB,OAAO;oBACNC,mBAAmB,SAAEJ,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAGG,gBAAgB,CAAC,qCAAI;kBAChD,CAAC;gBACF,CAAC,CACD;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA"}
|
|
@@ -27,7 +27,7 @@ export default abstract class AbstractAction<S extends Schema = Schema> implemen
|
|
|
27
27
|
private actionExecuter;
|
|
28
28
|
constructor(options: ActionOptions);
|
|
29
29
|
abstract execute(options: SchemaValues<S>): Promise<FeatureActionResponse>;
|
|
30
|
-
protected Action(featureCode:
|
|
30
|
+
protected Action(featureCode: FeatureCode, actionCode: string): FeatureAction<Schema>;
|
|
31
31
|
Service<S extends Service>(type: S, cwd?: string): ServiceMap[S];
|
|
32
32
|
protected Store<C extends StoreCode>(code: C, options?: CreateStoreOptions<C>): StoreMap[C];
|
|
33
33
|
protected Writer<C extends WriterCode>(code: C, options?: Partial<WriterOptions>): WriterMap[C];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","features","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected features: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.features = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode:
|
|
1
|
+
{"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","features","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected features: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.features = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: FeatureCode, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.features.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.features.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizer.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -25,14 +25,14 @@ export default abstract class AbstractFeature<S extends Schema | undefined = Sch
|
|
|
25
25
|
cwd: string;
|
|
26
26
|
scripts: Record<string, any>;
|
|
27
27
|
actionsDir: string | undefined;
|
|
28
|
-
protected
|
|
28
|
+
protected actions?: ActionFactory;
|
|
29
29
|
protected templates: Templates;
|
|
30
30
|
protected emitter: GlobalEmitter;
|
|
31
|
-
protected
|
|
31
|
+
protected features: FeatureInstaller;
|
|
32
32
|
protected ui: GraphicsInterface;
|
|
33
33
|
private serviceFactory;
|
|
34
34
|
private storeFactory;
|
|
35
|
-
private
|
|
35
|
+
private writers;
|
|
36
36
|
private apiClientFactory;
|
|
37
37
|
private actionExecuter;
|
|
38
38
|
private actionCodes?;
|
|
@@ -33,30 +33,30 @@ var AbstractFeature = /*#__PURE__*/function () {
|
|
|
33
33
|
(0, _defineProperty2["default"])(this, "cwd", void 0);
|
|
34
34
|
(0, _defineProperty2["default"])(this, "scripts", {});
|
|
35
35
|
(0, _defineProperty2["default"])(this, "actionsDir", void 0);
|
|
36
|
-
(0, _defineProperty2["default"])(this, "
|
|
36
|
+
(0, _defineProperty2["default"])(this, "actions", void 0);
|
|
37
37
|
(0, _defineProperty2["default"])(this, "templates", void 0);
|
|
38
38
|
(0, _defineProperty2["default"])(this, "emitter", void 0);
|
|
39
|
-
(0, _defineProperty2["default"])(this, "
|
|
39
|
+
(0, _defineProperty2["default"])(this, "features", void 0);
|
|
40
40
|
(0, _defineProperty2["default"])(this, "ui", void 0);
|
|
41
41
|
(0, _defineProperty2["default"])(this, "serviceFactory", void 0);
|
|
42
42
|
(0, _defineProperty2["default"])(this, "storeFactory", void 0);
|
|
43
|
-
(0, _defineProperty2["default"])(this, "
|
|
43
|
+
(0, _defineProperty2["default"])(this, "writers", void 0);
|
|
44
44
|
(0, _defineProperty2["default"])(this, "apiClientFactory", void 0);
|
|
45
45
|
(0, _defineProperty2["default"])(this, "actionExecuter", void 0);
|
|
46
46
|
(0, _defineProperty2["default"])(this, "actionCodes", void 0);
|
|
47
47
|
this.cwd = options.cwd;
|
|
48
48
|
this.serviceFactory = options.serviceFactory;
|
|
49
49
|
this.templates = options.templates;
|
|
50
|
-
this.
|
|
50
|
+
this.actions = options.actionFactory;
|
|
51
51
|
this.storeFactory = options.storeFactory;
|
|
52
|
-
this.
|
|
52
|
+
this.writers = new _WriterFactory["default"]({
|
|
53
53
|
templates: this.templates,
|
|
54
54
|
ui: options.ui,
|
|
55
55
|
settings: this.Service('settings'),
|
|
56
56
|
linter: this.Service('lint')
|
|
57
57
|
});
|
|
58
58
|
this.emitter = options.emitter;
|
|
59
|
-
this.
|
|
59
|
+
this.features = options.featureInstaller;
|
|
60
60
|
this.ui = options.ui;
|
|
61
61
|
this.apiClientFactory = options.apiClientFactory;
|
|
62
62
|
this.actionExecuter = options.actionExecuter;
|
|
@@ -124,7 +124,7 @@ var AbstractFeature = /*#__PURE__*/function () {
|
|
|
124
124
|
}, {
|
|
125
125
|
key: "Writer",
|
|
126
126
|
value: function Writer(code, options) {
|
|
127
|
-
return this.
|
|
127
|
+
return this.writers.Writer(code, _objectSpread({
|
|
128
128
|
fileDescriptions: this.fileDescriptions,
|
|
129
129
|
linter: this.Service('lint')
|
|
130
130
|
}, options));
|
|
@@ -132,7 +132,7 @@ var AbstractFeature = /*#__PURE__*/function () {
|
|
|
132
132
|
}, {
|
|
133
133
|
key: "getFeature",
|
|
134
134
|
value: function getFeature(code) {
|
|
135
|
-
return this.
|
|
135
|
+
return this.features.getFeature(code);
|
|
136
136
|
}
|
|
137
137
|
}, {
|
|
138
138
|
key: "getAvailableActionCodes",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractFeature.js","names":["AbstractFeature","options","cwd","serviceFactory","templates","actionFactory","storeFactory","
|
|
1
|
+
{"version":3,"file":"AbstractFeature.js","names":["AbstractFeature","options","cwd","serviceFactory","templates","actions","actionFactory","storeFactory","writers","WriterFactory","ui","settings","Service","linter","emitter","features","featureInstaller","apiClientFactory","actionExecuter","featureCode","actionCode","Action","_options","type","code","Writer","fileDescriptions","getFeature","actionsDir","actionCodes","globby","pathUtil","join","matches","codes","match","generatedCode","featuresUtil","filePathToActionCode","push","Store"],"sources":["../../src/features/AbstractFeature.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport globby from 'globby'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tService,\n\tServiceProvider,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { NpmPackage, GeneratedFile, FileDescription } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport ActionExecuter from './ActionExecuter'\nimport ActionFactory from './ActionFactory'\nimport featuresUtil from './feature.utilities'\nimport FeatureInstaller from './FeatureInstaller'\nimport { FeatureCode } from './features.types'\n\nexport default abstract class AbstractFeature<\n\tS extends Schema | undefined = Schema | undefined\n> implements ServiceProvider\n{\n\tpublic abstract description: string\n\tpublic readonly dependencies: FeatureDependency[] = []\n\tpublic readonly packageDependencies: NpmPackage[] = []\n\tpublic readonly optionsSchema?: S\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled?(): Promise<boolean>\n\n\tpublic abstract readonly code: FeatureCode\n\tpublic abstract readonly nameReadable: string\n\tpublic readonly installOrderWeight: number = 0\n\n\tpublic cwd: string\n\tpublic scripts: Record<string, any> = {}\n\tpublic actionsDir: string | undefined\n\tprotected actions?: ActionFactory\n\tprotected templates: Templates\n\tprotected emitter: GlobalEmitter\n\tprotected features: FeatureInstaller\n\tprotected ui: GraphicsInterface\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writers: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\tprivate actionCodes?: string[]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.templates = options.templates\n\t\tthis.actions = options.actionFactory\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.writers = new WriterFactory({\n\t\t\ttemplates: this.templates,\n\t\t\tui: options.ui,\n\t\t\tsettings: this.Service('settings'),\n\t\t\tlinter: this.Service('lint'),\n\t\t})\n\t\tthis.emitter = options.emitter\n\t\tthis.features = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic async beforePackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(\n\t\t_options: S extends Schema ? SchemaValues<S> : undefined\n\t): Promise<InstallResults> {\n\t\treturn {}\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tpublic Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writers.Writer(code, {\n\t\t\tfileDescriptions: this.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tpublic getFeature<Code extends FeatureCode>(code: Code) {\n\t\treturn this.features.getFeature(code)\n\t}\n\n\tpublic async getAvailableActionCodes(): Promise<string[]> {\n\t\tif (!this.actionsDir) {\n\t\t\treturn []\n\t\t}\n\n\t\tif (!this.actionCodes) {\n\t\t\tconst matches: string[] = await globby(\n\t\t\t\tpathUtil.join(this.actionsDir, '**/*Action.js')\n\t\t\t)\n\n\t\t\tconst codes: string[] = []\n\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst generatedCode = featuresUtil.filePathToActionCode(match)\n\t\t\t\tcodes.push(generatedCode)\n\t\t\t}\n\n\t\t\tthis.actionCodes = codes\n\t\t}\n\n\t\treturn this.actionCodes\n\t}\n\n\tpublic Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n\nexport interface InstallResults {\n\tfiles?: GeneratedFile[]\n\tcwd?: string\n}\n\nexport interface FeatureDependency {\n\tisRequired: boolean\n\tcode: FeatureCode\n}\n\nexport interface FeatureOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\ttemplates: Templates\n\tstoreFactory: StoreFactory\n\tactionFactory?: ActionFactory\n\tfeatureInstaller: FeatureInstaller\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tapiClientFactory: ApiClientFactory\n\tactionExecuter: ActionExecuter\n}\n"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { FeatureCode, FeatureAction } from './features.types';
|
|
|
6
6
|
export default class ActionExecuter {
|
|
7
7
|
private emitter;
|
|
8
8
|
private ui;
|
|
9
|
-
private
|
|
9
|
+
private actions;
|
|
10
10
|
private featureInstallerFactory;
|
|
11
11
|
private shouldAutoHandleDependencies;
|
|
12
12
|
private shouldThrowOnListenerError;
|
|
@@ -24,14 +24,14 @@ var ActionExecuter = /*#__PURE__*/function () {
|
|
|
24
24
|
(0, _classCallCheck2["default"])(this, ActionExecuter);
|
|
25
25
|
(0, _defineProperty2["default"])(this, "emitter", void 0);
|
|
26
26
|
(0, _defineProperty2["default"])(this, "ui", void 0);
|
|
27
|
-
(0, _defineProperty2["default"])(this, "
|
|
27
|
+
(0, _defineProperty2["default"])(this, "actions", void 0);
|
|
28
28
|
(0, _defineProperty2["default"])(this, "featureInstallerFactory", void 0);
|
|
29
29
|
(0, _defineProperty2["default"])(this, "shouldAutoHandleDependencies", void 0);
|
|
30
30
|
(0, _defineProperty2["default"])(this, "shouldThrowOnListenerError", void 0);
|
|
31
31
|
this.featureInstallerFactory = options.featureInstallerFactory;
|
|
32
32
|
this.emitter = options.emitter;
|
|
33
33
|
this.ui = options.ui;
|
|
34
|
-
this.
|
|
34
|
+
this.actions = options.actionFactory;
|
|
35
35
|
this.shouldAutoHandleDependencies = (_options$shouldAutoHa = options.shouldAutoHandleDependencies) !== null && _options$shouldAutoHa !== void 0 ? _options$shouldAutoHa : true;
|
|
36
36
|
this.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError;
|
|
37
37
|
}
|
|
@@ -263,8 +263,7 @@ var ActionExecuter = /*#__PURE__*/function () {
|
|
|
263
263
|
value: function Action(featureCode, actionCode) {
|
|
264
264
|
var _this = this;
|
|
265
265
|
var featureInstaller = this.getFeatureInstaller();
|
|
266
|
-
var
|
|
267
|
-
var action = actionFactory.Action({
|
|
266
|
+
var action = this.actions.Action({
|
|
268
267
|
featureCode: featureCode,
|
|
269
268
|
actionCode: actionCode,
|
|
270
269
|
actionExecuter: this,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionExecuter.js","names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","merge","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"sources":["../../src/features/ActionExecuter.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actionFactory: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actionFactory = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst actionFactory = this.actionFactory\n\t\tconst action = actionFactory.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionExecuter.js","names":["ActionExecuter","options","featureInstallerFactory","emitter","ui","actions","actionFactory","shouldAutoHandleDependencies","shouldThrowOnListenerError","featureCode","actionCode","action","originalExecute","actionOptions","installer","getFeatureInstaller","isInstalled","SpruceError","code","friendlyMessage","emit","willExecuteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","willExecutePayloads","payloads","errors","length","actionUtil","assertNoErrorsInResponse","feature","getFeature","asker","ActionOptionAsker","featureInstaller","installOrMarkAsSkippedMissingDependencies","response","askAboutMissingFeatureOptionsIfFeatureIsNotInstalled","installOptions","askAboutMissingActionOptions","answers","installOurFeature","ourFeatureResults","merge","executeResults","results","didExecuteResults","didExecuteErrors","mergeActionResults","Action","actionExecuter","execute","bind"],"sources":["../../src/features/ActionExecuter.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport merge from 'lodash/merge'\nimport SpruceError from '../errors/SpruceError'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { GraphicsInterface } from '../types/cli.types'\nimport actionUtil from '../utilities/action.utility'\nimport ActionFactory from './ActionFactory'\nimport ActionOptionAsker from './ActionQuestionAsker'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureCode,\n\tFeatureInstallResponse,\n\tFeatureAction,\n\tFeatureActionResponse,\n} from './features.types'\n\nexport default class ActionExecuter {\n\tprivate emitter: GlobalEmitter\n\tprivate ui: GraphicsInterface\n\tprivate actions: ActionFactory\n\tprivate featureInstallerFactory: () => FeatureInstaller\n\tprivate shouldAutoHandleDependencies: boolean\n\tprivate shouldThrowOnListenerError: boolean\n\n\tpublic constructor(options: ActionExecuterOptions) {\n\t\tthis.featureInstallerFactory = options.featureInstallerFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.ui = options.ui\n\t\tthis.actions = options.actionFactory\n\t\tthis.shouldAutoHandleDependencies =\n\t\t\toptions.shouldAutoHandleDependencies ?? true\n\n\t\tthis.shouldThrowOnListenerError = !!options.shouldThrowOnListenerError\n\t}\n\n\tprivate getFeatureInstaller() {\n\t\treturn this.featureInstallerFactory()\n\t}\n\n\tprivate async execute(options: {\n\t\tfeatureCode: FeatureCode\n\t\tactionCode: string\n\t\taction: any\n\t\toriginalExecute: any\n\t\toptions?: Record<string, any>\n\t}): Promise<FeatureInstallResponse & FeatureActionResponse> {\n\t\tconst {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\taction,\n\t\t\toriginalExecute,\n\t\t\toptions: actionOptions,\n\t\t} = options\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled(featureCode)\n\n\t\tif (!isInstalled && !this.shouldAutoHandleDependencies) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FEATURE_NOT_INSTALLED',\n\t\t\t\tfeatureCode,\n\t\t\t\tfriendlyMessage: `You need to install the \\`${featureCode}\\` feature.`,\n\t\t\t})\n\t\t}\n\n\t\tconst willExecuteResults = await this.emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\toptions: actionOptions,\n\t\t})\n\n\t\tconst { payloads: willExecutePayloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\twillExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors?.length ?? 0 > 0) {\n\t\t\tif (this.shouldThrowOnListenerError) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tthrow errors[0]\n\t\t\t}\n\t\t\treturn { errors }\n\t\t}\n\n\t\tactionUtil.assertNoErrorsInResponse(willExecuteResults)\n\n\t\tconst feature = installer.getFeature(featureCode)\n\n\t\tconst asker = new ActionOptionAsker({\n\t\t\tfeatureInstaller: installer,\n\t\t\tfeature,\n\t\t\tactionCode,\n\t\t\tshouldAutoHandleDependencies: this.shouldAutoHandleDependencies,\n\t\t\tui: this.ui,\n\t\t})\n\n\t\tlet response =\n\t\t\t(await asker.installOrMarkAsSkippedMissingDependencies()) ?? {}\n\n\t\tconst installOptions =\n\t\t\t(await asker.askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(\n\t\t\t\tisInstalled,\n\t\t\t\tactionOptions\n\t\t\t)) ??\n\t\t\tactionOptions ??\n\t\t\t{}\n\n\t\tlet answers =\n\t\t\t(await asker.askAboutMissingActionOptions(action, installOptions)) ??\n\t\t\tinstallOptions\n\n\t\tif (!isInstalled) {\n\t\t\tconst ourFeatureResults =\n\t\t\t\t(await asker.installOurFeature(installOptions)) ?? {}\n\t\t\tresponse = merge(response, ourFeatureResults)\n\t\t}\n\n\t\tlet executeResults: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\texecuteResults = await originalExecute({\n\t\t\t\t...answers,\n\t\t\t})\n\t\t} catch (err: any) {\n\t\t\texecuteResults.errors = [err]\n\t\t}\n\n\t\tresponse = merge(response, executeResults)\n\n\t\tconst didExecuteResults = await this.emitter.emit('feature.did-execute', {\n\t\t\tresults: response,\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t})\n\n\t\tconst { payloads, errors: didExecuteErrors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tdidExecuteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (\n\t\t\t(this.shouldThrowOnListenerError && didExecuteErrors?.length) ??\n\t\t\t0 > 0\n\t\t) {\n\t\t\t//@ts-ignore\n\t\t\tthrow didExecuteErrors[0]\n\t\t}\n\n\t\tresponse = actionUtil.mergeActionResults(\n\t\t\tresponse,\n\t\t\t...willExecutePayloads,\n\t\t\t...payloads\n\t\t)\n\n\t\tif (didExecuteErrors) {\n\t\t\tresponse = actionUtil.mergeActionResults(response, {\n\t\t\t\terrors: didExecuteErrors,\n\t\t\t})\n\t\t}\n\n\t\treturn response\n\t}\n\n\tpublic Action<F extends FeatureCode>(\n\t\tfeatureCode: F,\n\t\tactionCode: string\n\t): FeatureAction {\n\t\tconst featureInstaller = this.getFeatureInstaller()\n\n\t\tconst action = this.actions.Action({\n\t\t\tfeatureCode,\n\t\t\tactionCode,\n\t\t\tactionExecuter: this,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tconst originalExecute = action.execute.bind(action)\n\n\t\taction.execute = async (options: any) => {\n\t\t\treturn this.execute({\n\t\t\t\tfeatureCode,\n\t\t\t\tactionCode,\n\t\t\t\taction,\n\t\t\t\toriginalExecute,\n\t\t\t\toptions,\n\t\t\t})\n\t\t}\n\n\t\treturn action as any\n\t}\n}\n\nexport interface ActionExecuterOptions {\n\tui: GraphicsInterface\n\temitter: GlobalEmitter\n\tactionFactory: ActionFactory\n\tfeatureInstallerFactory: () => FeatureInstaller\n\tshouldAutoHandleDependencies?: boolean\n\tshouldThrowOnListenerError?: boolean\n}\n"],"mappings":"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"}
|