@sprucelabs/spruce-cli 18.2.0 → 18.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/build/.spruce/events/events.contract.d.ts +159 -0
- package/build/.spruce/events/events.contract.js +5 -1
- package/build/.spruce/events/events.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.d.ts +46 -0
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js +57 -0
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.d.ts +68 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js +78 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.d.ts +40 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js +51 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.d.ts +9 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js +17 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js.map +1 -0
- package/build/.spruce/schemas/schemas.types.d.ts +158 -55
- package/build/.spruce/schemas/schemas.types.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.d.ts +3 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js +70 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js.map +1 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.d.ts +3 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js +35 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js.map +1 -0
- package/build/.spruce/settings.json +2 -1
- package/build/GlobalEmitter.d.ts +13 -38
- package/build/GlobalEmitter.js +3 -6
- package/build/GlobalEmitter.js.map +1 -1
- package/build/__tests__/behavioral/TestingAConversation.test.d.ts +2 -1
- package/build/__tests__/behavioral/TestingAConversation.test.js +74 -84
- package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +38 -13
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
- package/build/__tests__/behavioral/events/EventWriter.test.d.ts +4 -0
- package/build/__tests__/behavioral/events/EventWriter.test.js +116 -0
- package/build/__tests__/behavioral/events/EventWriter.test.js.map +1 -0
- package/build/__tests__/behavioral/{ListeningToCoreEvents.test.d.ts → events/ListeningToCoreEvents.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{ListeningToCoreEvents.test.js → events/ListeningToCoreEvents.test.js} +1 -1
- package/build/__tests__/behavioral/events/ListeningToCoreEvents.test.js.map +1 -0
- package/build/__tests__/behavioral/{RegisteringEventsOnBoot.test.d.ts → events/RegisteringEventsOnBoot.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{RegisteringEventsOnBoot.test.js → events/RegisteringEventsOnBoot.test.js} +2 -2
- package/build/__tests__/behavioral/events/RegisteringEventsOnBoot.test.js.map +1 -0
- package/build/__tests__/behavioral/{RegisteringGlobalEvents.test.d.ts → events/RegisteringGlobalEvents.test.d.ts} +2 -3
- package/build/__tests__/behavioral/{RegisteringGlobalEvents.test.js → events/RegisteringGlobalEvents.test.js} +45 -70
- package/build/__tests__/behavioral/events/RegisteringGlobalEvents.test.js.map +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +16 -9
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.d.ts → events/SyncingEventsOnlyFromDependencies.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.js → events/SyncingEventsOnlyFromDependencies.test.js} +1 -1
- package/build/__tests__/behavioral/events/SyncingEventsOnlyFromDependencies.test.js.map +1 -0
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.d.ts +2 -2
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +7 -7
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.d.ts +6 -0
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js +85 -0
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js.map +1 -0
- package/build/__tests__/behavioral/permissions/PermissionStore.test.d.ts +5 -4
- package/build/__tests__/behavioral/permissions/PermissionStore.test.js +97 -63
- package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/PermissionWriter.test.d.ts +5 -0
- package/build/__tests__/behavioral/permissions/PermissionWriter.test.js +88 -0
- package/build/__tests__/behavioral/permissions/PermissionWriter.test.js.map +1 -0
- package/build/__tests__/behavioral/permissions/SyncingPermissions.test.d.ts +15 -4
- package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js +325 -28
- package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.d.ts +11 -0
- package/build/__tests__/behavioral/permissions/{AbstractPermissionsTest.js → support/AbstractPermissionsTest.js} +34 -2
- package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.js.map +1 -0
- package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.d.ts +1 -0
- package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js +11 -0
- package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js.map +1 -0
- package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.d.ts +1 -0
- package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js +17 -0
- package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js.map +1 -0
- package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.d.ts +5 -0
- package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js +10 -0
- package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js.map +1 -0
- package/build/__tests__/behavioral/{CreatingSchemasWithGenerics.test.d.ts → schemas/CreatingSchemasWithGenerics.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{CreatingSchemasWithGenerics.test.js → schemas/CreatingSchemasWithGenerics.test.js} +2 -2
- package/build/__tests__/behavioral/schemas/CreatingSchemasWithGenerics.test.js.map +1 -0
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.d.ts +1 -1
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +46 -46
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
- package/build/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.d.ts → schemas/SettingUpSchemasForModuleDistribution.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.js → schemas/SettingUpSchemasForModuleDistribution.test.js} +3 -3
- package/build/__tests__/behavioral/schemas/SettingUpSchemasForModuleDistribution.test.js.map +1 -0
- package/build/__tests__/behavioral/{InstallingASkillAtAnOrg.test.d.ts → skill/InstallingASkillAtAnOrg.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{InstallingASkillAtAnOrg.test.js → skill/InstallingASkillAtAnOrg.test.js} +2 -2
- package/build/__tests__/behavioral/skill/InstallingASkillAtAnOrg.test.js.map +1 -0
- package/build/__tests__/behavioral/{LoggingInAsASkill.test.d.ts → skill/LoggingInAsASkill.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{LoggingInAsASkill.test.js → skill/LoggingInAsASkill.test.js} +2 -2
- package/build/__tests__/behavioral/skill/LoggingInAsASkill.test.js.map +1 -0
- package/build/__tests__/behavioral/{RebuildingASkill.test.d.ts → skill/RebuildingASkill.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{RebuildingASkill.test.js → skill/RebuildingASkill.test.js} +2 -2
- package/build/__tests__/behavioral/skill/RebuildingASkill.test.js.map +1 -0
- package/build/__tests__/behavioral/tests/CreatingATest.test.js +2 -2
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/{SettingUpASkillForTesting.test.d.ts → tests/SettingUpASkillForTesting.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{SettingUpASkillForTesting.test.js → tests/SettingUpASkillForTesting.test.js} +2 -2
- package/build/__tests__/behavioral/tests/SettingUpASkillForTesting.test.js.map +1 -0
- package/build/__tests__/behavioral/{TestReporterSettingsRemembered.test.d.ts → tests/TestReporterSettingsRemembered.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{TestReporterSettingsRemembered.test.js → tests/TestReporterSettingsRemembered.test.js} +1 -1
- package/build/__tests__/behavioral/tests/TestReporterSettingsRemembered.test.js.map +1 -0
- package/build/__tests__/behavioral/{TestingDataStores.test.d.ts → tests/TestingDataStores.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{TestingDataStores.test.js → tests/TestingDataStores.test.js} +3 -3
- package/build/__tests__/behavioral/tests/TestingDataStores.test.js.map +1 -0
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +7 -3
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +2 -2
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
- package/build/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.d.ts → views/RegisteringSkillViewOnBoot.test.d.ts} +4 -4
- package/build/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.js → views/RegisteringSkillViewOnBoot.test.js} +2 -2
- package/build/__tests__/behavioral/views/RegisteringSkillViewOnBoot.test.js.map +1 -0
- package/build/__tests__/behavioral/{WatchingSkillViews.test.d.ts → views/WatchingSkillViews.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{WatchingSkillViews.test.js → views/WatchingSkillViews.test.js} +2 -2
- package/build/__tests__/behavioral/views/WatchingSkillViews.test.js.map +1 -0
- package/build/__tests__/implementation/ActionExecuter2.test.d.ts +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +23 -11
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/__tests__/implementation/GlobalEmitter.test.d.ts +1 -0
- package/build/__tests__/implementation/GlobalEmitter.test.js +40 -3
- package/build/__tests__/implementation/GlobalEmitter.test.js.map +1 -1
- package/build/__tests__/implementation/SkillStore.test.js +3 -4
- package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
- package/build/features/AbstractAction.d.ts +1 -1
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/AbstractFeature.d.ts +3 -3
- package/build/features/AbstractFeature.js +8 -8
- package/build/features/AbstractFeature.js.map +1 -1
- package/build/features/ActionExecuter.d.ts +1 -1
- package/build/features/ActionExecuter.js +3 -4
- package/build/features/ActionExecuter.js.map +1 -1
- package/build/features/ActionFactory.d.ts +12 -5
- package/build/features/ActionFactory.js +27 -6
- package/build/features/ActionFactory.js.map +1 -1
- package/build/features/ActionQuestionAsker.d.ts +1 -1
- package/build/features/ActionQuestionAsker.js +6 -6
- package/build/features/ActionQuestionAsker.js.map +1 -1
- package/build/features/conversation/ConversationFeature.js +1 -1
- package/build/features/conversation/ConversationFeature.js.map +1 -1
- package/build/features/dependencies/DependencyFeature.js +1 -1
- package/build/features/dependencies/DependencyFeature.js.map +1 -1
- package/build/features/deploy/actions/HerokuAction.js +31 -33
- package/build/features/deploy/actions/HerokuAction.js.map +1 -1
- package/build/features/error/ErrorFeature.js +4 -4
- package/build/features/error/ErrorFeature.js.map +1 -1
- package/build/features/event/EventFeature.d.ts +8 -8
- package/build/features/event/EventFeature.js +7 -4
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/actions/CreateAction.js.map +1 -1
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/stores/EventStore.d.ts +9 -9
- package/build/features/event/stores/EventStore.js +26 -26
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/eventContract/EventContractFeature.js +4 -1
- package/build/features/eventContract/EventContractFeature.js.map +1 -1
- package/build/features/eventContract/actions/PullAction.js +10 -5
- package/build/features/eventContract/actions/PullAction.js.map +1 -1
- package/build/features/features.types.d.ts +2 -37
- package/build/features/features.types.js +0 -41
- package/build/features/features.types.js.map +1 -1
- package/build/features/log/LogFeature.js +1 -1
- package/build/features/log/LogFeature.js.map +1 -1
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/organization/actions/InstallAction.js.map +1 -1
- package/build/features/permission/PermissionFeature.d.ts +12 -2
- package/build/features/permission/PermissionFeature.js +138 -15
- package/build/features/permission/PermissionFeature.js.map +1 -1
- package/build/features/permission/actions/CreateAction.js +4 -1
- package/build/features/permission/actions/CreateAction.js.map +1 -1
- package/build/features/permission/actions/SyncAction.d.ts +5 -1
- package/build/features/permission/actions/SyncAction.js +28 -10
- package/build/features/permission/actions/SyncAction.js.map +1 -1
- package/build/features/permission/stores/PermissionStore.d.ts +6 -1
- package/build/features/permission/stores/PermissionStore.js +43 -31
- package/build/features/permission/stores/PermissionStore.js.map +1 -1
- package/build/features/permission/writers/PermissionWriter.d.ts +7 -1
- package/build/features/permission/writers/PermissionWriter.js +67 -18
- package/build/features/permission/writers/PermissionWriter.js.map +1 -1
- package/build/features/person/PersonFeature.js +1 -1
- package/build/features/person/PersonFeature.js.map +1 -1
- package/build/features/sandbox/SandboxFeature.js +1 -1
- package/build/features/sandbox/SandboxFeature.js.map +1 -1
- package/build/features/schema/SchemaFeature.d.ts +8 -8
- package/build/features/schema/SchemaFeature.js +4 -4
- package/build/features/schema/SchemaFeature.js.map +1 -1
- package/build/features/schema/writers/SchemaWriter.d.ts +12 -12
- package/build/features/schema/writers/SchemaWriter.js.map +1 -1
- package/build/features/skill/SkillFeature.d.ts +11 -11
- package/build/features/skill/SkillFeature.js +2 -2
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/skill/actions/RebuildAction.js.map +1 -1
- package/build/features/skill/actions/RegisterAction.js.map +1 -1
- package/build/features/skill/stores/SkillStore.js +1 -2
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/store/StoreFeature.js +1 -1
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/features/store/actions/SyncAction.d.ts +1 -1
- package/build/features/store/actions/SyncAction.js.map +1 -1
- package/build/features/test/TestFeature.js +1 -1
- package/build/features/test/TestFeature.js.map +1 -1
- package/build/features/view/ViewFeature.js +1 -1
- package/build/features/view/ViewFeature.js.map +1 -1
- package/build/schemas/v2020_07_22/actionResponse.builder.d.ts +85 -0
- package/build/schemas/v2020_07_22/actionResponse.builder.js +70 -0
- package/build/schemas/v2020_07_22/actionResponse.builder.js.map +1 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.d.ts +27 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.js +45 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.js.map +1 -0
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js +4 -40
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
- package/build/services/CommandService.d.ts +2 -2
- package/build/services/CommandService.js +6 -6
- package/build/services/CommandService.js.map +1 -1
- package/build/services/PkgService.d.ts +1 -0
- package/build/services/PkgService.js +5 -0
- package/build/services/PkgService.js.map +1 -1
- package/build/tests/AbstractCliTest.d.ts +7 -3
- package/build/tests/AbstractCliTest.js +81 -45
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/buildTestCache.js +7 -0
- package/build/tests/buildTestCache.js.map +1 -1
- package/build/tests/fixtures/FeatureFixture.js +1 -0
- package/build/tests/fixtures/FeatureFixture.js.map +1 -1
- package/build/tests/utilities/test.utility.d.ts +2 -0
- package/build/tests/utilities/test.utility.js +6 -0
- package/build/tests/utilities/test.utility.js.map +1 -1
- package/node_modules/@typescript-eslint/parser/package.json +5 -5
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts +4 -2
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js +13 -5
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts +2 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js +3 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
- package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +20 -2
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +20 -2
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js +2 -0
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js.map +1 -1
- package/node_modules/@typescript-eslint/types/package.json +2 -2
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/estree-to-ts-node-types.d.ts +2 -0
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/ts-nodes.d.ts +2 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +15 -3
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts +2 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts +2 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js +63 -49
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js.map +1 -1
- package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
- package/package.json +65 -33
- package/src/.spruce/events/events.contract.ts +24 -0
- package/src/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.ts +54 -0
- package/src/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.ts +79 -0
- package/src/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.ts +48 -0
- package/src/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.ts +13 -0
- package/src/.spruce/schemas/schemas.types.ts +171 -52
- package/src/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.ts +58 -0
- package/src/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.ts +33 -0
- package/src/.spruce/settings.json +2 -1
- package/src/GlobalEmitter.ts +2 -7
- package/src/__tests__/behavioral/TestingAConversation.test.ts +20 -37
- package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +14 -2
- package/src/__tests__/behavioral/events/EventWriter.test.ts +75 -0
- package/src/__tests__/behavioral/{ListeningToCoreEvents.test.ts → events/ListeningToCoreEvents.test.ts} +1 -1
- package/src/__tests__/behavioral/{RegisteringEventsOnBoot.test.ts → events/RegisteringEventsOnBoot.test.ts} +2 -2
- package/src/__tests__/behavioral/{RegisteringGlobalEvents.test.ts → events/RegisteringGlobalEvents.test.ts} +4 -12
- package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
- package/src/__tests__/behavioral/{SyncingEventsOnlyFromDependencies.test.ts → events/SyncingEventsOnlyFromDependencies.test.ts} +2 -2
- package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +2 -2
- package/src/__tests__/behavioral/permissions/PermissionPlugin.test.ts +24 -0
- package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +96 -38
- package/src/__tests__/behavioral/permissions/PermissionWriter.test.ts +24 -0
- package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +125 -8
- package/src/__tests__/behavioral/permissions/support/AbstractPermissionsTest.ts +38 -0
- package/src/__tests__/behavioral/permissions/support/generateShortAlphaId.ts +5 -0
- package/src/__tests__/behavioral/permissions/support/renderPermissionTestFile.ts +27 -0
- package/src/__tests__/behavioral/permissions/support/sortPermissionContracts.ts +3 -0
- package/src/__tests__/behavioral/{CreatingSchemasWithGenerics.test.ts → schemas/CreatingSchemasWithGenerics.test.ts} +2 -2
- package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +12 -12
- package/src/__tests__/behavioral/{SettingUpSchemasForModuleDistribution.test.ts → schemas/SettingUpSchemasForModuleDistribution.test.ts} +4 -4
- package/src/__tests__/behavioral/{InstallingASkillAtAnOrg.test.ts → skill/InstallingASkillAtAnOrg.test.ts} +2 -2
- package/src/__tests__/behavioral/{LoggingInAsASkill.test.ts → skill/LoggingInAsASkill.test.ts} +3 -3
- package/src/__tests__/behavioral/{RebuildingASkill.test.ts → skill/RebuildingASkill.test.ts} +2 -2
- package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -2
- package/src/__tests__/behavioral/{SettingUpASkillForTesting.test.ts → tests/SettingUpASkillForTesting.test.ts} +2 -2
- package/src/__tests__/behavioral/{TestReporterSettingsRemembered.test.ts → tests/TestReporterSettingsRemembered.test.ts} +2 -2
- package/src/__tests__/behavioral/{TestingDataStores.test.ts → tests/TestingDataStores.test.ts} +3 -3
- package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +3 -0
- package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +3 -2
- package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
- package/src/__tests__/behavioral/{RegisteringSkillViewOnBoot.test.ts → views/RegisteringSkillViewOnBoot.test.ts} +2 -2
- package/src/__tests__/behavioral/{WatchingSkillViews.test.ts → views/WatchingSkillViews.test.ts} +3 -3
- package/src/__tests__/implementation/ActionExecuter2.test.ts +13 -6
- package/src/__tests__/implementation/GlobalEmitter.test.ts +22 -1
- package/src/__tests__/implementation/SkillStore.test.ts +1 -2
- package/src/features/AbstractAction.ts +2 -2
- package/src/features/AbstractFeature.ts +8 -8
- package/src/features/ActionExecuter.ts +4 -5
- package/src/features/ActionFactory.ts +44 -20
- package/src/features/ActionQuestionAsker.ts +17 -17
- package/src/features/conversation/ConversationFeature.ts +1 -1
- package/src/features/dependencies/DependencyFeature.ts +1 -1
- package/src/features/deploy/actions/HerokuAction.ts +2 -2
- package/src/features/error/ErrorFeature.ts +4 -4
- package/src/features/event/EventFeature.ts +15 -14
- package/src/features/event/actions/CreateAction.ts +1 -1
- package/src/features/event/actions/ListenAction.ts +1 -1
- package/src/features/event/stores/EventStore.ts +37 -37
- package/src/features/eventContract/EventContractFeature.ts +6 -1
- package/src/features/eventContract/actions/PullAction.ts +7 -3
- package/src/features/features.types.ts +4 -41
- package/src/features/log/LogFeature.ts +1 -1
- package/src/features/node/NodeFeature.ts +1 -1
- package/src/features/organization/actions/InstallAction.ts +1 -1
- package/src/features/permission/PermissionFeature.ts +68 -11
- package/src/features/permission/actions/CreateAction.ts +2 -0
- package/src/features/permission/actions/SyncAction.ts +22 -3
- package/src/features/permission/stores/PermissionStore.ts +27 -8
- package/src/features/permission/writers/PermissionWriter.ts +62 -4
- package/src/features/person/PersonFeature.ts +1 -1
- package/src/features/sandbox/SandboxFeature.ts +1 -3
- package/src/features/schema/SchemaFeature.ts +14 -14
- package/src/features/schema/writers/SchemaWriter.ts +14 -15
- package/src/features/skill/SkillFeature.ts +18 -18
- package/src/features/skill/actions/RebuildAction.ts +1 -1
- package/src/features/skill/actions/RegisterAction.ts +1 -1
- package/src/features/skill/stores/SkillStore.ts +1 -2
- package/src/features/store/StoreFeature.ts +1 -1
- package/src/features/store/actions/SyncAction.ts +1 -1
- package/src/features/test/TestFeature.ts +1 -1
- package/src/features/view/ViewFeature.ts +1 -1
- package/src/schemas/v2020_07_22/actionResponse.builder.ts +62 -0
- package/src/schemas/v2020_07_22/generatedFile.builder.ts +44 -0
- package/src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts +3 -46
- package/src/services/CommandService.ts +5 -5
- package/src/services/PkgService.ts +4 -0
- package/src/tests/AbstractCliTest.ts +31 -13
- package/src/tests/buildTestCache.ts +7 -0
- package/src/tests/fixtures/FeatureFixture.ts +2 -0
- package/src/tests/utilities/test.utility.ts +13 -0
- package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +0 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +0 -1
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +0 -1
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +0 -1
- package/build/__tests__/behavioral/RebuildingASkill.test.js.map +0 -1
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +0 -1
- package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +0 -1
- package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +0 -1
- package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +0 -1
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +0 -1
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +0 -1
- package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +0 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +0 -1
- package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +0 -1
- package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.d.ts +0 -8
- package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.js.map +0 -1
- package/src/__tests__/behavioral/permissions/AbstractPermissionsTest.ts +0 -20
|
@@ -50,7 +50,7 @@ var ConversationFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
50
50
|
switch (_context.prev = _context.next) {
|
|
51
51
|
case 0:
|
|
52
52
|
_context.next = 2;
|
|
53
|
-
return this.
|
|
53
|
+
return this.features.isInstalled('conversation');
|
|
54
54
|
case 2:
|
|
55
55
|
isInstalled = _context.sent;
|
|
56
56
|
if (!(payload.featureCode === 'node' && payload.actionCode === 'upgrade' && isInstalled)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationFeature.js","names":["ConversationFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","handleWillExecute","bind","payload","
|
|
1
|
+
{"version":3,"file":"ConversationFeature.js","names":["ConversationFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","handleWillExecute","bind","payload","features","isInstalled","featureCode","actionCode","writePlugin","files","Writer","cwd","AbstractFeature"],"sources":["../../../src/features/conversation/ConversationFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n\tInstallResults,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tconversation: ConversationFeature\n\t}\n}\n\nexport default class ConversationFeature extends AbstractFeature {\n\tpublic nameReadable = 'Conversation'\n\tpublic code: FeatureCode = 'conversation'\n\tpublic description = 'Computers like to talk, too.'\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'event', isRequired: true },\n\t]\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-conversation-plugin@latest',\n\t\t\tisDev: false,\n\t\t},\n\t]\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tactionCode: string\n\t\tfeatureCode: string\n\t}) {\n\t\tconst isInstalled = await this.features.isInstalled('conversation')\n\n\t\tif (\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade' &&\n\t\t\tisInstalled\n\t\t) {\n\t\t\tconst files = await this.writePlugin()\n\t\t\treturn { files }\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall(): Promise<InstallResults> {\n\t\tconst files = await this.writePlugin()\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async writePlugin() {\n\t\treturn this.Writer('conversation').writePlugin(this.cwd)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AAI2B;AAAA;AAAA,IASNA,mBAAmB;EAAA;EAAA;EAgBvC,6BAAmBC,OAAuB,EAAE;IAAA;IAAA;IAC3C,0BAAMA,OAAO;IAAC,iGAhBO,cAAc;IAAA,yFACT,cAAc;IAAA,gGACpB,8BAA8B;IAAA,iGAER,CAC1C;MAAEC,IAAI,EAAE,OAAO;MAAEC,UAAU,EAAE;IAAK,CAAC,CACnC;IAAA,wGAC0C,CAC1C;MACCC,IAAI,EAAE,+CAA+C;MACrDC,KAAK,EAAE;IACR,CAAC,CACD;IAAA,+FACmBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAK7D,KAAK,MAAKC,OAAO,CAACC,EAAE,CACnB,sBAAsB,EACtB,MAAKC,iBAAiB,CAACC,IAAI,gDAAM,CACjC;IAAA;EACF;EAAC;IAAA;IAAA;MAAA,uGAED,iBAAgCC,OAG/B;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC0B,IAAI,CAACC,QAAQ,CAACC,WAAW,CAAC,cAAc,CAAC;cAAA;gBAA7DA,WAAW;gBAAA,MAGhBF,OAAO,CAACG,WAAW,KAAK,MAAM,IAC9BH,OAAO,CAACI,UAAU,KAAK,SAAS,IAChCF,WAAW;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OAES,IAAI,CAACG,WAAW,EAAE;cAAA;gBAAhCC,KAAK;gBAAA,iCACJ;kBAAEA,KAAK,EAALA;gBAAM,CAAC;cAAA;gBAAA,iCAGV,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACT;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,yGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACqB,IAAI,CAACD,WAAW,EAAE;cAAA;gBAAhCC,KAAK;gBAAA,kCAEJ;kBACNA,KAAK,EAALA;gBACD,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,iGAED;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACQ,IAAI,CAACC,MAAM,CAAC,cAAc,CAAC,CAACF,WAAW,CAAC,IAAI,CAACG,GAAG,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACxD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EArD+CC,4BAAe;AAAA"}
|
|
@@ -47,7 +47,7 @@ var DependencyFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
47
47
|
while (1) {
|
|
48
48
|
switch (_context.prev = _context.next) {
|
|
49
49
|
case 0:
|
|
50
|
-
return _context.abrupt("return", this.
|
|
50
|
+
return _context.abrupt("return", this.features.isInstalled('skill'));
|
|
51
51
|
case 1:
|
|
52
52
|
case "end":
|
|
53
53
|
return _context.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyFeature.js","names":["DependencyFeature","diskUtil","resolvePath","__dirname","code","isRequired","
|
|
1
|
+
{"version":3,"file":"DependencyFeature.js","names":["DependencyFeature","diskUtil","resolvePath","__dirname","code","isRequired","features","isInstalled","AbstractFeature"],"sources":["../../../src/features/dependencies/DependencyFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tdependency: DependencyFeature\n\t}\n}\n\nexport default class DependencyFeature extends AbstractFeature {\n\tpublic description = 'Tell me which skills you depend on.'\n\tpublic code: FeatureCode = 'dependency'\n\tpublic nameReadable = 'Dependencies'\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\n\tpublic async isInstalled() {\n\t\treturn this.features.isInstalled('skill')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AAAuE;AAAA;AAAA,IASlDA,iBAAiB;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,gGAChB,qCAAqC;IAAA,yFAC/B,YAAY;IAAA,iGACjB,cAAc;IAAA,+FAChBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,iGACnB,CAC1C;MACCC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,iGAE/B;QAAA;UAAA;YAAA;cAAA;gBAAA,iCACQ,IAAI,CAACC,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACzC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAf6CC,4BAAe;AAAA"}
|
|
@@ -70,80 +70,78 @@ var DeployAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
70
70
|
case 0:
|
|
71
71
|
results = {};
|
|
72
72
|
_context.prev = 1;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
case 4:
|
|
76
|
-
_context.next = 6;
|
|
73
|
+
this.assertRegisteredSkill();
|
|
74
|
+
_context.next = 5;
|
|
77
75
|
return this.assertDependencies();
|
|
78
|
-
case
|
|
79
|
-
_context.next =
|
|
76
|
+
case 5:
|
|
77
|
+
_context.next = 7;
|
|
80
78
|
return this.assertLoggedInToHeroku();
|
|
81
|
-
case
|
|
82
|
-
_context.next =
|
|
79
|
+
case 7:
|
|
80
|
+
_context.next = 9;
|
|
83
81
|
return this.setupGitRepo();
|
|
84
|
-
case
|
|
85
|
-
_context.next =
|
|
82
|
+
case 9:
|
|
83
|
+
_context.next = 11;
|
|
86
84
|
return this.setupGitRemote();
|
|
87
|
-
case
|
|
88
|
-
_context.next =
|
|
85
|
+
case 11:
|
|
86
|
+
_context.next = 13;
|
|
89
87
|
return this.setupProcFile();
|
|
90
|
-
case
|
|
88
|
+
case 13:
|
|
91
89
|
procResults = _context.sent;
|
|
92
90
|
results = _action["default"].mergeActionResults(results, procResults);
|
|
93
|
-
_context.next =
|
|
91
|
+
_context.next = 17;
|
|
94
92
|
return this.assertNoPendingGitChanges();
|
|
95
|
-
case
|
|
96
|
-
_context.next =
|
|
93
|
+
case 17:
|
|
94
|
+
_context.next = 22;
|
|
97
95
|
break;
|
|
98
|
-
case
|
|
99
|
-
_context.prev =
|
|
96
|
+
case 19:
|
|
97
|
+
_context.prev = 19;
|
|
100
98
|
_context.t0 = _context["catch"](1);
|
|
101
99
|
return _context.abrupt("return", {
|
|
102
100
|
errors: [_context.t0]
|
|
103
101
|
});
|
|
104
|
-
case
|
|
102
|
+
case 22:
|
|
105
103
|
_this$validateAndNorm = this.validateAndNormalizeOptions(options), shouldBuildAndLint = _this$validateAndNorm.shouldBuildAndLint, shouldRunTests = _this$validateAndNorm.shouldRunTests;
|
|
106
104
|
if (!shouldBuildAndLint) {
|
|
107
|
-
_context.next =
|
|
105
|
+
_context.next = 29;
|
|
108
106
|
break;
|
|
109
107
|
}
|
|
110
|
-
_context.next =
|
|
108
|
+
_context.next = 26;
|
|
111
109
|
return this.buildAndLint();
|
|
112
|
-
case
|
|
110
|
+
case 26:
|
|
113
111
|
results = _context.sent;
|
|
114
112
|
if (!results.errors) {
|
|
115
|
-
_context.next =
|
|
113
|
+
_context.next = 29;
|
|
116
114
|
break;
|
|
117
115
|
}
|
|
118
116
|
return _context.abrupt("return", results);
|
|
119
|
-
case
|
|
117
|
+
case 29:
|
|
120
118
|
if (!shouldRunTests) {
|
|
121
|
-
_context.next =
|
|
119
|
+
_context.next = 35;
|
|
122
120
|
break;
|
|
123
121
|
}
|
|
124
|
-
_context.next =
|
|
122
|
+
_context.next = 32;
|
|
125
123
|
return this.runTests();
|
|
126
|
-
case
|
|
124
|
+
case 32:
|
|
127
125
|
results = _context.sent;
|
|
128
126
|
if (!results.errors) {
|
|
129
|
-
_context.next =
|
|
127
|
+
_context.next = 35;
|
|
130
128
|
break;
|
|
131
129
|
}
|
|
132
130
|
return _context.abrupt("return", results);
|
|
133
|
-
case
|
|
134
|
-
_context.next =
|
|
131
|
+
case 35:
|
|
132
|
+
_context.next = 37;
|
|
135
133
|
return this.deploy();
|
|
136
|
-
case
|
|
134
|
+
case 37:
|
|
137
135
|
this.ui.clear();
|
|
138
136
|
skill = this.Service('auth').getCurrentSkill();
|
|
139
137
|
results.summaryLines = ["You are good to go!", "You gotta make sure that your ENV's are set on Heroku to the following:\n", "SKILL_NAME=".concat(skill.name), "SKILL_SLUG=".concat(skill.slug), "SKILL_ID=".concat(skill.id), "SKILL_API_KEY=".concat(skill.apiKey)];
|
|
140
138
|
return _context.abrupt("return", results);
|
|
141
|
-
case
|
|
139
|
+
case 41:
|
|
142
140
|
case "end":
|
|
143
141
|
return _context.stop();
|
|
144
142
|
}
|
|
145
143
|
}
|
|
146
|
-
}, _callee, this, [[1,
|
|
144
|
+
}, _callee, this, [[1, 19]]);
|
|
147
145
|
}));
|
|
148
146
|
function execute(_x) {
|
|
149
147
|
return _execute.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HerokuAction.js","names":["optionsSchema","buildSchema","id","description","fields","teamName","type","label","isRequired","shouldRunSilently","isPrivate","shouldBuildAndLint","defaultValue","shouldRunTests","DeployAction","options","results","assertRegisteredSkill","assertDependencies","assertLoggedInToHeroku","setupGitRepo","setupGitRemote","setupProcFile","procResults","actionUtil","mergeActionResults","assertNoPendingGitChanges","errors","validateAndNormalizeOptions","buildAndLint","runTests","deploy","ui","clear","skill","Service","getCurrentSkill","summaryLines","name","slug","apiKey","SpruceError","code","stage","friendlyMessage","execute","failed","stdout","toLowerCase","search","command","confirm","pass","pkg","skillName","get","prompt","namesUtil","toKebab","args","env","HOME","process","procFile","diskUtil","resolvePath","cwd","files","doesFileExist","writeFile","push","action","path","inRepo","missing","hint","length","dependencies","features","isInstalled","isTestInstalled","startLoading","Action","watchMode","shouldReportWhileRunning","testResults","isSkillInstalled","build","shouldFixLintFirst","buildResults","AbstractAction"],"sources":["../../../../src/features/deploy/actions/HerokuAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil, namesUtil, SkillAuth } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'deployHeroku',\n\tdescription: 'Deploy your skill to Heroku.',\n\tfields: {\n\t\tteamName: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'team name',\n\t\t\tisRequired: false,\n\t\t},\n\t\tshouldRunSilently: {\n\t\t\ttype: 'boolean',\n\t\t\tisPrivate: true,\n\t\t},\n\t\tshouldBuildAndLint: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t\tshouldRunTests: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class DeployAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['deploy.heroku']\n\tpublic invocationMessage = 'Deploying to Heroku... 🚀'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\tawait this.assertRegisteredSkill()\n\t\t\tawait this.assertDependencies()\n\t\t\tawait this.assertLoggedInToHeroku()\n\t\t\tawait this.setupGitRepo()\n\t\t\tawait this.setupGitRemote()\n\n\t\t\tconst procResults = await this.setupProcFile()\n\t\t\tresults = actionUtil.mergeActionResults(results, procResults)\n\n\t\t\tawait this.assertNoPendingGitChanges()\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tconst { shouldBuildAndLint, shouldRunTests } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tif (shouldBuildAndLint) {\n\t\t\tresults = await this.buildAndLint()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tif (shouldRunTests) {\n\t\t\tresults = await this.runTests()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tawait this.deploy()\n\n\t\tthis.ui.clear()\n\n\t\tconst skill = this.Service('auth').getCurrentSkill() as SkillAuth\n\n\t\tresults.summaryLines = [\n\t\t\t`You are good to go!`,\n\t\t\t\"You gotta make sure that your ENV's are set on Heroku to the following:\\n\",\n\t\t\t`SKILL_NAME=${skill.name}`,\n\t\t\t`SKILL_SLUG=${skill.slug}`,\n\t\t\t`SKILL_ID=${skill.id}`,\n\t\t\t`SKILL_API_KEY=${skill.apiKey}`,\n\t\t]\n\n\t\treturn results\n\t}\n\n\tprivate assertRegisteredSkill() {\n\t\tconst skill = this.Service('auth').getCurrentSkill()\n\t\tif (!skill) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'skill',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You have to register your skill. Try `spruce login && spruce register` to get going!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async deploy() {\n\t\tawait this.Service('command').execute(\n\t\t\t'git push --set-upstream heroku master'\n\t\t)\n\t}\n\n\tprivate async assertNoPendingGitChanges() {\n\t\tconst results = await this.Service('command').execute('git status')\n\n\t\tconst failed =\n\t\t\t(results.stdout ?? '').toLowerCase().search('not staged') > -1 ||\n\t\t\t(results.stdout ?? '').toLowerCase().search('no commits') > -1\n\n\t\tif (failed) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You have pending changes. Commit them and try again!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async setupGitRemote() {\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tawait command.execute('git ls-remote heroku')\n\n\t\t\treturn\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch {}\n\n\t\tconst confirm = await this.ui.confirm(\n\t\t\t`I didn't find a a remote named \"heroku\", want me to create one?`\n\t\t)\n\n\t\tif (!confirm) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'remote',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You need to setup a remote named \"heroku\" that Heroku will pull from.',\n\t\t\t})\n\t\t}\n\n\t\tlet pass = false\n\t\tlet label =\n\t\t\t'What name do you wanna give your app on heroku (using-kebab-case)?'\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst skillName = pkg.get('name')\n\n\t\tdo {\n\t\t\tlet name = await this.ui.prompt({\n\t\t\t\ttype: 'text',\n\t\t\t\tlabel,\n\t\t\t\tdefaultValue: skillName,\n\t\t\t\tisRequired: true,\n\t\t\t})\n\n\t\t\tname = namesUtil.toKebab(name)\n\n\t\t\ttry {\n\t\t\t\tawait command.execute('heroku create', {\n\t\t\t\t\targs: [name],\n\t\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t\t})\n\n\t\t\t\tpass = true\n\t\t\t} catch {\n\t\t\t\tlabel = `Uh oh, \"${name}\" is taken, try again!`\n\t\t\t}\n\t\t} while (!pass)\n\n\t\ttry {\n\t\t\tawait command.execute('heroku buildpacks:set heroku/nodejs', {\n\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t})\n\t\t} catch {\n\t\t\tthrow new SpruceError({ code: 'DEPLOY_FAILED', stage: 'remote' })\n\t\t}\n\t}\n\n\tprivate async setupProcFile(): Promise<FeatureActionResponse> {\n\t\tconst procFile = diskUtil.resolvePath(this.cwd, 'Procfile')\n\t\tconst results: FeatureActionResponse = {\n\t\t\tfiles: [],\n\t\t}\n\t\tif (!diskUtil.doesFileExist(procFile)) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`I don't see a Procfile, which Heroku needs to know how to run your skill. Want me to create one?`\n\t\t\t)\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\t\tstage: 'procfile',\n\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t'You are gonna need to create a Procfile in your project root so heroku knows how to run your skill.',\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdiskUtil.writeFile(procFile, 'worker: npm run boot')\n\t\t\tresults.files?.push({\n\t\t\t\tname: 'Procfile',\n\t\t\t\taction: 'generated',\n\t\t\t\tpath: procFile,\n\t\t\t\tdescription: 'Used by Heroku to know how to run your skill.',\n\t\t\t})\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async setupGitRepo() {\n\t\tconst command = this.Service('command')\n\n\t\tlet inRepo = true\n\t\ttry {\n\t\t\tawait command.execute('git status')\n\t\t} catch {\n\t\t\tinRepo = false\n\t\t}\n\n\t\tif (!inRepo) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t'You are not in a git repo. Would you like to initialize one now?'\n\t\t\t)\n\n\t\t\ttry {\n\t\t\t\tif (confirm) {\n\t\t\t\t\tawait command.execute('git init')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t} catch {}\n\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You must be in a git repo to deploy!',\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async assertLoggedInToHeroku() {\n\t\ttry {\n\t\t\tawait this.Service('command').execute('grep api.heroku.com ~/.netrc')\n\t\t} catch {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'heroku',\n\t\t\t\tfriendlyMessage: `You gotta be logged in using \\`heroku login\\` before you can deploy.!`,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async assertDependencies() {\n\t\tconst command = this.Service('command')\n\t\tconst missing: { name: string; hint: string }[] = []\n\n\t\ttry {\n\t\t\tawait command.execute('which heroku')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'heroku',\n\t\t\t\thint: 'Follow install instructions @ https://devcenter.heroku.com/articles/heroku-cli#download-and-install',\n\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tawait command.execute('which git')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'git',\n\t\t\t\thint: 'Follow install instructions @ https://git-scm.com/downloads',\n\t\t\t})\n\t\t}\n\n\t\tif (missing.length > 0) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'MISSING_DEPENDENCIES',\n\t\t\t\tdependencies: missing,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async runTests() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isTestInstalled = await this.features.isInstalled('test')\n\n\t\tif (isTestInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Testing your skill. Hold onto your pants. 👖')\n\n\t\t\t\tconst testResults = await this.Action('test', 'test').execute({\n\t\t\t\t\twatchMode: 'off',\n\t\t\t\t\tshouldReportWhileRunning: false,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, testResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'testing' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n\n\tprivate async buildAndLint() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (isSkillInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Building your skill. This may take a minute...')\n\n\t\t\t\tconst buildResults = await this.Service('build').build({\n\t\t\t\t\tshouldFixLintFirst: true,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, buildResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'building' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HerokuAction.js","names":["optionsSchema","buildSchema","id","description","fields","teamName","type","label","isRequired","shouldRunSilently","isPrivate","shouldBuildAndLint","defaultValue","shouldRunTests","DeployAction","options","results","assertRegisteredSkill","assertDependencies","assertLoggedInToHeroku","setupGitRepo","setupGitRemote","setupProcFile","procResults","actionUtil","mergeActionResults","assertNoPendingGitChanges","errors","validateAndNormalizeOptions","buildAndLint","runTests","deploy","ui","clear","skill","Service","getCurrentSkill","summaryLines","name","slug","apiKey","SpruceError","code","stage","friendlyMessage","execute","failed","stdout","toLowerCase","search","command","confirm","pass","pkg","skillName","get","prompt","namesUtil","toKebab","args","env","HOME","process","procFile","diskUtil","resolvePath","cwd","files","doesFileExist","writeFile","push","action","path","inRepo","missing","hint","length","dependencies","features","isInstalled","isTestInstalled","startLoading","Action","watchMode","shouldReportWhileRunning","testResults","isSkillInstalled","build","shouldFixLintFirst","buildResults","AbstractAction"],"sources":["../../../../src/features/deploy/actions/HerokuAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil, namesUtil, SkillAuth } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'deployHeroku',\n\tdescription: 'Deploy your skill to Heroku.',\n\tfields: {\n\t\tteamName: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'team name',\n\t\t\tisRequired: false,\n\t\t},\n\t\tshouldRunSilently: {\n\t\t\ttype: 'boolean',\n\t\t\tisPrivate: true,\n\t\t},\n\t\tshouldBuildAndLint: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t\tshouldRunTests: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class DeployAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['deploy.heroku']\n\tpublic invocationMessage = 'Deploying to Heroku... 🚀'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\tthis.assertRegisteredSkill()\n\t\t\tawait this.assertDependencies()\n\t\t\tawait this.assertLoggedInToHeroku()\n\t\t\tawait this.setupGitRepo()\n\t\t\tawait this.setupGitRemote()\n\n\t\t\tconst procResults = await this.setupProcFile()\n\t\t\tresults = actionUtil.mergeActionResults(results, procResults)\n\n\t\t\tawait this.assertNoPendingGitChanges()\n\t\t} catch (err: any) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tconst { shouldBuildAndLint, shouldRunTests } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tif (shouldBuildAndLint) {\n\t\t\tresults = await this.buildAndLint()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tif (shouldRunTests) {\n\t\t\tresults = await this.runTests()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tawait this.deploy()\n\n\t\tthis.ui.clear()\n\n\t\tconst skill = this.Service('auth').getCurrentSkill() as SkillAuth\n\n\t\tresults.summaryLines = [\n\t\t\t`You are good to go!`,\n\t\t\t\"You gotta make sure that your ENV's are set on Heroku to the following:\\n\",\n\t\t\t`SKILL_NAME=${skill.name}`,\n\t\t\t`SKILL_SLUG=${skill.slug}`,\n\t\t\t`SKILL_ID=${skill.id}`,\n\t\t\t`SKILL_API_KEY=${skill.apiKey}`,\n\t\t]\n\n\t\treturn results\n\t}\n\n\tprivate assertRegisteredSkill() {\n\t\tconst skill = this.Service('auth').getCurrentSkill()\n\t\tif (!skill) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'skill',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You have to register your skill. Try `spruce login && spruce register` to get going!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async deploy() {\n\t\tawait this.Service('command').execute(\n\t\t\t'git push --set-upstream heroku master'\n\t\t)\n\t}\n\n\tprivate async assertNoPendingGitChanges() {\n\t\tconst results = await this.Service('command').execute('git status')\n\n\t\tconst failed =\n\t\t\t(results.stdout ?? '').toLowerCase().search('not staged') > -1 ||\n\t\t\t(results.stdout ?? '').toLowerCase().search('no commits') > -1\n\n\t\tif (failed) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You have pending changes. Commit them and try again!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async setupGitRemote() {\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tawait command.execute('git ls-remote heroku')\n\n\t\t\treturn\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch {}\n\n\t\tconst confirm = await this.ui.confirm(\n\t\t\t`I didn't find a a remote named \"heroku\", want me to create one?`\n\t\t)\n\n\t\tif (!confirm) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'remote',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You need to setup a remote named \"heroku\" that Heroku will pull from.',\n\t\t\t})\n\t\t}\n\n\t\tlet pass = false\n\t\tlet label =\n\t\t\t'What name do you wanna give your app on heroku (using-kebab-case)?'\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst skillName = pkg.get('name')\n\n\t\tdo {\n\t\t\tlet name = await this.ui.prompt({\n\t\t\t\ttype: 'text',\n\t\t\t\tlabel,\n\t\t\t\tdefaultValue: skillName,\n\t\t\t\tisRequired: true,\n\t\t\t})\n\n\t\t\tname = namesUtil.toKebab(name)\n\n\t\t\ttry {\n\t\t\t\tawait command.execute('heroku create', {\n\t\t\t\t\targs: [name],\n\t\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t\t})\n\n\t\t\t\tpass = true\n\t\t\t} catch {\n\t\t\t\tlabel = `Uh oh, \"${name}\" is taken, try again!`\n\t\t\t}\n\t\t} while (!pass)\n\n\t\ttry {\n\t\t\tawait command.execute('heroku buildpacks:set heroku/nodejs', {\n\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t})\n\t\t} catch {\n\t\t\tthrow new SpruceError({ code: 'DEPLOY_FAILED', stage: 'remote' })\n\t\t}\n\t}\n\n\tprivate async setupProcFile(): Promise<FeatureActionResponse> {\n\t\tconst procFile = diskUtil.resolvePath(this.cwd, 'Procfile')\n\t\tconst results: FeatureActionResponse = {\n\t\t\tfiles: [],\n\t\t}\n\t\tif (!diskUtil.doesFileExist(procFile)) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`I don't see a Procfile, which Heroku needs to know how to run your skill. Want me to create one?`\n\t\t\t)\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\t\tstage: 'procfile',\n\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t'You are gonna need to create a Procfile in your project root so heroku knows how to run your skill.',\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdiskUtil.writeFile(procFile, 'worker: npm run boot')\n\t\t\tresults.files?.push({\n\t\t\t\tname: 'Procfile',\n\t\t\t\taction: 'generated',\n\t\t\t\tpath: procFile,\n\t\t\t\tdescription: 'Used by Heroku to know how to run your skill.',\n\t\t\t})\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async setupGitRepo() {\n\t\tconst command = this.Service('command')\n\n\t\tlet inRepo = true\n\t\ttry {\n\t\t\tawait command.execute('git status')\n\t\t} catch {\n\t\t\tinRepo = false\n\t\t}\n\n\t\tif (!inRepo) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t'You are not in a git repo. Would you like to initialize one now?'\n\t\t\t)\n\n\t\t\ttry {\n\t\t\t\tif (confirm) {\n\t\t\t\t\tawait command.execute('git init')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t} catch {}\n\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You must be in a git repo to deploy!',\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async assertLoggedInToHeroku() {\n\t\ttry {\n\t\t\tawait this.Service('command').execute('grep api.heroku.com ~/.netrc')\n\t\t} catch {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'heroku',\n\t\t\t\tfriendlyMessage: `You gotta be logged in using \\`heroku login\\` before you can deploy.!`,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async assertDependencies() {\n\t\tconst command = this.Service('command')\n\t\tconst missing: { name: string; hint: string }[] = []\n\n\t\ttry {\n\t\t\tawait command.execute('which heroku')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'heroku',\n\t\t\t\thint: 'Follow install instructions @ https://devcenter.heroku.com/articles/heroku-cli#download-and-install',\n\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tawait command.execute('which git')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'git',\n\t\t\t\thint: 'Follow install instructions @ https://git-scm.com/downloads',\n\t\t\t})\n\t\t}\n\n\t\tif (missing.length > 0) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'MISSING_DEPENDENCIES',\n\t\t\t\tdependencies: missing,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async runTests() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isTestInstalled = await this.features.isInstalled('test')\n\n\t\tif (isTestInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Testing your skill. Hold onto your pants. 👖')\n\n\t\t\t\tconst testResults = await this.Action('test', 'test').execute({\n\t\t\t\t\twatchMode: 'off',\n\t\t\t\t\tshouldReportWhileRunning: false,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, testResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'testing' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n\n\tprivate async buildAndLint() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (isSkillInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Building your skill. This may take a minute...')\n\n\t\t\t\tconst buildResults = await this.Service('build').build({\n\t\t\t\t\tshouldFixLintFirst: true,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, buildResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'building' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ var ErrorFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
48
48
|
switch (_context.prev = _context.next) {
|
|
49
49
|
case 0:
|
|
50
50
|
_context.next = 2;
|
|
51
|
-
return _this.
|
|
51
|
+
return _this.features.isInstalled('error');
|
|
52
52
|
case 2:
|
|
53
53
|
isInstalled = _context.sent;
|
|
54
54
|
if (!isInstalled) {
|
|
@@ -79,7 +79,7 @@ var ErrorFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
79
79
|
switch (_context2.prev = _context2.next) {
|
|
80
80
|
case 0:
|
|
81
81
|
_context2.next = 2;
|
|
82
|
-
return this.
|
|
82
|
+
return this.features.isInstalled('skill');
|
|
83
83
|
case 2:
|
|
84
84
|
isSkillInstalled = _context2.sent;
|
|
85
85
|
if (isSkillInstalled) {
|
|
@@ -118,11 +118,11 @@ var ErrorFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
118
118
|
case 0:
|
|
119
119
|
featureCode = payload.featureCode, actionCode = payload.actionCode;
|
|
120
120
|
_context3.next = 3;
|
|
121
|
-
return this.
|
|
121
|
+
return this.features.isInstalled('error');
|
|
122
122
|
case 3:
|
|
123
123
|
isInstalled = _context3.sent;
|
|
124
124
|
_context3.next = 6;
|
|
125
|
-
return this.
|
|
125
|
+
return this.features.isInstalled('skill');
|
|
126
126
|
case 6:
|
|
127
127
|
isSkillInstalled = _context3.sent;
|
|
128
128
|
if (!(isInstalled && featureCode === 'node' && actionCode === 'upgrade')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorFeature.js","names":["ErrorFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidExecuteCommand","bind","
|
|
1
|
+
{"version":3,"file":"ErrorFeature.js","names":["ErrorFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidExecuteCommand","bind","features","isInstalled","filesToSkip","isSkillInstalled","writePlugin","files","payload","featureCode","actionCode","Action","execute","results","plugin","push","Writer","cwd","AbstractFeature"],"sources":["../../../src/features/error/ErrorFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n\tInstallResults,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\terror: ErrorFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\terror: undefined\n\t}\n}\n\nexport default class ErrorFeature extends AbstractFeature {\n\tpublic nameReadable = 'error handling'\n\tpublic description =\n\t\t'Errors: Use schemas to define your errors and get great type checking!'\n\tpublic code: FeatureCode = 'error'\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t\t{ code: 'node', isRequired: true },\n\t]\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/error@latest',\n\t\t},\n\t]\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecuteCommand.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on('skill.will-write-directory-template', async () => {\n\t\t\tconst isInstalled = await this.features.isInstalled('error')\n\t\t\tif (isInstalled) {\n\t\t\t\treturn {\n\t\t\t\t\tfilesToSkip: ['options.types.ts'],\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n\n\tpublic async afterPackageInstall(): Promise<InstallResults> {\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (!isSkillInstalled) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst files = await this.writePlugin()\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async handleDidExecuteCommand(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tconst isInstalled = await this.features.isInstalled('error')\n\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tconst results = await this.Action('error', 'sync').execute({})\n\n\t\t\tif (isSkillInstalled) {\n\t\t\t\tif (!results.files) {\n\t\t\t\t\tresults.files = []\n\t\t\t\t}\n\n\t\t\t\tconst plugin = await this.writePlugin()\n\t\t\t\tresults.files.push(...plugin)\n\t\t\t}\n\n\t\t\treturn results\n\t\t}\n\n\t\treturn {}\n\t}\n\tprivate async writePlugin() {\n\t\treturn this.Writer('error').writePlugin(this.cwd)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAEA;AAI2B;AAAA;AAAA,IAaNA,YAAY;EAAA;EAAA;EAiBhC,sBAAmBC,OAAuB,EAAE;IAAA;IAAA;IAC3C,0BAAMA,OAAO;IAAC,iGAjBO,gBAAgB;IAAA,gGAErC,wEAAwE;IAAA,yFAC9C,OAAO;IAAA,iGAES,CAC1C;MAAEC,IAAI,EAAE,QAAQ;MAAEC,UAAU,EAAE;IAAK,CAAC,EACpC;MAAED,IAAI,EAAE,MAAM;MAAEC,UAAU,EAAE;IAAK,CAAC,CAClC;IAAA,wGAC0C,CAC1C;MACCC,IAAI,EAAE;IACP,CAAC,CACD;IAAA,+FACmBC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAK7D,KAAK,MAAKC,OAAO,CAACC,EAAE,CACnB,qBAAqB,EACrB,MAAKC,uBAAuB,CAACC,IAAI,gDAAM,CACvC;IAED,KAAK,MAAKH,OAAO,CAACC,EAAE,CAAC,qCAAqC,6FAAE;MAAA;MAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OACjC,MAAKG,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;YAAA;cAAtDA,WAAW;cAAA,KACbA,WAAW;gBAAA;gBAAA;cAAA;cAAA,iCACP;gBACNC,WAAW,EAAE,CAAC,kBAAkB;cACjC,CAAC;YAAA;cAAA,iCAGK,CAAC,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CACT,GAAC;IAAA;EACH;EAAC;IAAA;IAAA;MAAA,yGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACgC,IAAI,CAACF,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;cAAA;gBAA3DE,gBAAgB;gBAAA,IAEjBA,gBAAgB;kBAAA;kBAAA;gBAAA;gBAAA,kCACb,CAAC,CAAC;cAAA;gBAAA;gBAAA,OAGU,IAAI,CAACC,WAAW,EAAE;cAAA;gBAAhCC,KAAK;gBAAA,kCAEJ;kBACNA,KAAK,EAALA;gBACD,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,6GAED,kBAAsCC,OAGrC;QAAA;QAAA;UAAA;YAAA;cAAA;gBACQC,WAAW,GAAiBD,OAAO,CAAnCC,WAAW,EAAEC,UAAU,GAAKF,OAAO,CAAtBE,UAAU;gBAAA;gBAAA,OAEL,IAAI,CAACR,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;cAAA;gBAAtDA,WAAW;gBAAA;gBAAA,OAEc,IAAI,CAACD,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;cAAA;gBAA3DE,gBAAgB;gBAAA,MAElBF,WAAW,IAAIM,WAAW,KAAK,MAAM,IAAIC,UAAU,KAAK,SAAS;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OAC9C,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAxDC,OAAO;gBAAA,KAETR,gBAAgB;kBAAA;kBAAA;gBAAA;gBACnB,IAAI,CAACQ,OAAO,CAACN,KAAK,EAAE;kBACnBM,OAAO,CAACN,KAAK,GAAG,EAAE;gBACnB;gBAAC;gBAAA,OAEoB,IAAI,CAACD,WAAW,EAAE;cAAA;gBAAjCQ,MAAM;gBACZ,kBAAAD,OAAO,CAACN,KAAK,EAACQ,IAAI,2DAAID,MAAM,EAAC;cAAA;gBAAA,kCAGvBD,OAAO;cAAA;gBAAA,kCAGR,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACT;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,iGACD;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACQ,IAAI,CAACG,MAAM,CAAC,OAAO,CAAC,CAACV,WAAW,CAAC,IAAI,CAACW,GAAG,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAhFwCC,4BAAe;AAAA"}
|
|
@@ -2,14 +2,6 @@ import { FileDescription } from '../../types/cli.types';
|
|
|
2
2
|
import AbstractFeature, { FeatureDependency, FeatureOptions } from '../AbstractFeature';
|
|
3
3
|
import { FeatureActionResponse, FeatureCode } from '../features.types';
|
|
4
4
|
import EventContractBuilder from './builders/EventContractBuilder';
|
|
5
|
-
declare module '../../features/features.types' {
|
|
6
|
-
interface FeatureMap {
|
|
7
|
-
event: EventFeature;
|
|
8
|
-
}
|
|
9
|
-
interface FeatureOptionsMap {
|
|
10
|
-
event: undefined;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
5
|
export default class EventFeature extends AbstractFeature {
|
|
14
6
|
code: FeatureCode;
|
|
15
7
|
nameReadable: string;
|
|
@@ -33,3 +25,11 @@ export default class EventFeature extends AbstractFeature {
|
|
|
33
25
|
getEventContractBuilder(): EventContractBuilder;
|
|
34
26
|
hasBeenSynced(): boolean;
|
|
35
27
|
}
|
|
28
|
+
declare module '../../features/features.types' {
|
|
29
|
+
interface FeatureMap {
|
|
30
|
+
event: EventFeature;
|
|
31
|
+
}
|
|
32
|
+
interface FeatureOptionsMap {
|
|
33
|
+
event: undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -36,6 +36,9 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
36
36
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dependencies", [{
|
|
37
37
|
code: 'schema',
|
|
38
38
|
isRequired: true
|
|
39
|
+
}, {
|
|
40
|
+
code: 'permission',
|
|
41
|
+
isRequired: true
|
|
39
42
|
}]);
|
|
40
43
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "packageDependencies", [{
|
|
41
44
|
name: '@sprucelabs/mercury-client'
|
|
@@ -68,7 +71,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
68
71
|
case 0:
|
|
69
72
|
_spruceSkillUtils.diskUtil.createDir(_spruceSkillUtils.diskUtil.resolvePath(this.cwd, 'src', 'events'));
|
|
70
73
|
_context.next = 3;
|
|
71
|
-
return this.
|
|
74
|
+
return this.features.isInstalled('skill');
|
|
72
75
|
case 3:
|
|
73
76
|
isSkillInstalled = _context.sent;
|
|
74
77
|
if (!isSkillInstalled) {
|
|
@@ -114,7 +117,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
114
117
|
settings.clearListenerCache();
|
|
115
118
|
}
|
|
116
119
|
_context2.next = 6;
|
|
117
|
-
return this.
|
|
120
|
+
return this.features.isInstalled('event');
|
|
118
121
|
case 6:
|
|
119
122
|
isInstalled = _context2.sent;
|
|
120
123
|
isRemoteRelevant = isInstalled && (featureCode === 'event' || featureCode === 'eventContract' || actionCode === 'login') && actionCode !== 'setRemote';
|
|
@@ -179,7 +182,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
179
182
|
case 0:
|
|
180
183
|
featureCode = payload.featureCode, actionCode = payload.actionCode;
|
|
181
184
|
_context4.next = 3;
|
|
182
|
-
return this.
|
|
185
|
+
return this.features.isInstalled('event');
|
|
183
186
|
case 3:
|
|
184
187
|
isInstalled = _context4.sent;
|
|
185
188
|
results = {};
|
|
@@ -272,7 +275,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
272
275
|
switch (_context6.prev = _context6.next) {
|
|
273
276
|
case 0:
|
|
274
277
|
_context6.next = 2;
|
|
275
|
-
return this.
|
|
278
|
+
return this.features.isInstalled(this.code);
|
|
276
279
|
case 2:
|
|
277
280
|
isInstalled = _context6.sent;
|
|
278
281
|
lastSync = this.Service('eventSettings').getLastSyncOptions();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventFeature.js","names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","featureInstaller","isInstalled","isSkillInstalled","Action","execute","payload","featureCode","actionCode","results","initiatingAction","EventStore","clearCache","combined","combineCodes","settings","Service","clearListenerCache","isRemoteRelevant","appendRemoteToResultsOrPrompt","remoteResults","actionUtil","mergeActionResults","syncResults","isUpgrade","syncListenersAndMixinResults","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"sources":["../../../src/features/event/EventFeature.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport actionUtil from '../../utilities/action.utility'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\nimport EventStore from './stores/EventStore'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\tprivate initiatingAction?: string\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\t\tif (isSkillInstalled) {\n\t\t\treturn await this.Action('event', 'sync.listeners').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tif (!this.initiatingAction) {\n\t\t\tEventStore.clearCache()\n\t\t\tconst combined = this.combineCodes(featureCode, actionCode)\n\t\t\tthis.initiatingAction = combined\n\t\t}\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\t\tconst isRemoteRelevant =\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\n\t\tif (isRemoteRelevant) {\n\t\t\tconst remoteResults = await this.appendRemoteToResultsOrPrompt()\n\t\t\tresults = actionUtil.mergeActionResults(results, remoteResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async syncListenersAndMixinResults(results: FeatureActionResponse) {\n\t\tconst syncResults = await this.Action('event', 'sync.listeners').execute({})\n\t\tresults = actionUtil.mergeActionResults(results, syncResults)\n\t\treturn results\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tlet results = {}\n\n\t\tconst isUpgrade =\n\t\t\tisInstalled && featureCode === 'node' && actionCode === 'upgrade'\n\n\t\tif (isUpgrade) {\n\t\t\tresults = await this.Action('event', 'sync').execute({})\n\t\t\tresults = await this.syncListenersAndMixinResults(results)\n\t\t}\n\n\t\tif (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {\n\t\t\tEventStore.clearCache()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate combineCodes(featureCode: string, actionCode: string) {\n\t\treturn `${featureCode}.${actionCode}`\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EventFeature.js","names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","features","isInstalled","isSkillInstalled","Action","execute","payload","featureCode","actionCode","results","initiatingAction","EventStore","clearCache","combined","combineCodes","settings","Service","clearListenerCache","isRemoteRelevant","appendRemoteToResultsOrPrompt","remoteResults","actionUtil","mergeActionResults","syncResults","isUpgrade","syncListenersAndMixinResults","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"sources":["../../../src/features/event/EventFeature.ts"],"sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport actionUtil from '../../utilities/action.utility'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\nimport EventStore from './stores/EventStore'\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t\t{ code: 'permission', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\tprivate initiatingAction?: string\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\t\tif (isSkillInstalled) {\n\t\t\treturn await this.Action('event', 'sync.listeners').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tif (!this.initiatingAction) {\n\t\t\tEventStore.clearCache()\n\t\t\tconst combined = this.combineCodes(featureCode, actionCode)\n\t\t\tthis.initiatingAction = combined\n\t\t}\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tconst isInstalled = await this.features.isInstalled('event')\n\t\tconst isRemoteRelevant =\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\n\t\tif (isRemoteRelevant) {\n\t\t\tconst remoteResults = await this.appendRemoteToResultsOrPrompt()\n\t\t\tresults = actionUtil.mergeActionResults(results, remoteResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async syncListenersAndMixinResults(results: FeatureActionResponse) {\n\t\tconst syncResults = await this.Action('event', 'sync.listeners').execute({})\n\t\tresults = actionUtil.mergeActionResults(results, syncResults)\n\t\treturn results\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.features.isInstalled('event')\n\n\t\tlet results = {}\n\n\t\tconst isUpgrade =\n\t\t\tisInstalled && featureCode === 'node' && actionCode === 'upgrade'\n\n\t\tif (isUpgrade) {\n\t\t\tresults = await this.Action('event', 'sync').execute({})\n\t\t\tresults = await this.syncListenersAndMixinResults(results)\n\t\t}\n\n\t\tif (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {\n\t\t\tEventStore.clearCache()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate combineCodes(featureCode: string, actionCode: string) {\n\t\treturn `${featureCode}.${actionCode}`\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.features.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateAction.js","names":["optionsSchema","buildSchema","id","description","fields","nameReadable","namedTemplateItemSchema","isRequired","nameKebab","label","hint","nameCamel","isGlobal","type","version","isPrivate","syncEventActionSchema","CreateAction","options","validateAndNormalizeOptions","Store","loadCurrentSkill","skill","slug","errors","SpruceError","code","destinationDir","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","Writer","writeEvent","files","syncOptions","normalizeSchemaValues","shouldIncludePrivateFields","Action","execute","syncResponse","fqen","eventNameUtil","join","eventName","eventNamespace","actionUtil","mergeActionResults","meta","AbstractAction"],"sources":["../../../../src/features/event/actions/CreateAction.ts"],"sourcesContent":["import {\n\tbuildSchema,\n\tnormalizeSchemaValues,\n\tSchemaValues,\n} from '@sprucelabs/schema'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport namedTemplateItemSchema from '#spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'createEventAction',\n\tdescription:\n\t\t\"Create a new event and I'll register it with Mercury when you boot the skill!\",\n\tfields: {\n\t\tnameReadable: {\n\t\t\t...namedTemplateItemSchema.fields.nameReadable,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameKebab: {\n\t\t\t...namedTemplateItemSchema.fields.nameKebab,\n\t\t\tlabel: 'Event name',\n\t\t\thint: `kebab-case`,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameCamel: {\n\t\t\t...namedTemplateItemSchema.fields.nameCamel,\n\t\t\tisRequired: true,\n\t\t},\n\t\tisGlobal: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Is this a global event?',\n\t\t\thint: \"This will allow skills to listen without being installed at the same organization. You'll need permission to make this happen.\",\n\t\t},\n\t\tversion: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Version',\n\t\t\tisPrivate: true,\n\t\t},\n\t\t...syncEventActionSchema.fields,\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic invocationMessage = 'Creating a new event signature... 🜒'\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tlet { nameKebab, nameReadable, nameCamel, version, isGlobal } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tif (!skill.id || !skill.slug) {\n\t\t\treturn {\n\t\t\t\terrors: [new SpruceError({ code: 'SKILL_NOT_REGISTERED' })],\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst destinationDir = diskUtil.resolvePath(this.cwd, 'src', 'events')\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tdiskUtil.resolvePath(destinationDir, '**', '*')\n\t\t\t)\n\n\t\t\tconst files = await this.Writer('event').writeEvent(destinationDir, {\n\t\t\t\tnameKebab,\n\t\t\t\tnameCamel,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\tnameReadable,\n\t\t\t\tisGlobal,\n\t\t\t})\n\n\t\t\tconst syncOptions = normalizeSchemaValues(\n\t\t\t\tsyncEventActionSchema,\n\t\t\t\toptions,\n\t\t\t\t{\n\t\t\t\t\tshouldIncludePrivateFields: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tconst syncResponse = await this.Action('event', 'sync').execute(\n\t\t\t\tsyncOptions\n\t\t\t)\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName: nameKebab,\n\t\t\t\teventNamespace: skill.slug,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t})\n\n\t\t\treturn actionUtil.mergeActionResults(\n\t\t\t\t{ files, meta: { fqen } },\n\t\t\t\tsyncResponse\n\t\t\t)\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreateAction.js","names":["optionsSchema","buildSchema","id","description","fields","nameReadable","namedTemplateItemSchema","isRequired","nameKebab","label","hint","nameCamel","isGlobal","type","version","isPrivate","syncEventActionSchema","CreateAction","options","validateAndNormalizeOptions","Store","loadCurrentSkill","skill","slug","errors","SpruceError","code","destinationDir","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","Writer","writeEvent","files","syncOptions","normalizeSchemaValues","shouldIncludePrivateFields","Action","execute","syncResponse","fqen","eventNameUtil","join","eventName","eventNamespace","actionUtil","mergeActionResults","meta","AbstractAction"],"sources":["../../../../src/features/event/actions/CreateAction.ts"],"sourcesContent":["import {\n\tbuildSchema,\n\tnormalizeSchemaValues,\n\tSchemaValues,\n} from '@sprucelabs/schema'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport namedTemplateItemSchema from '#spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'createEventAction',\n\tdescription:\n\t\t\"Create a new event and I'll register it with Mercury when you boot the skill!\",\n\tfields: {\n\t\tnameReadable: {\n\t\t\t...namedTemplateItemSchema.fields.nameReadable,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameKebab: {\n\t\t\t...namedTemplateItemSchema.fields.nameKebab,\n\t\t\tlabel: 'Event name',\n\t\t\thint: `kebab-case`,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameCamel: {\n\t\t\t...namedTemplateItemSchema.fields.nameCamel,\n\t\t\tisRequired: true,\n\t\t},\n\t\tisGlobal: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Is this a global event?',\n\t\t\thint: \"This will allow skills to listen without being installed at the same organization. You'll need permission to make this happen.\",\n\t\t},\n\t\tversion: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Version',\n\t\t\tisPrivate: true,\n\t\t},\n\t\t...syncEventActionSchema.fields,\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic invocationMessage = 'Creating a new event signature... 🜒'\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tlet { nameKebab, nameReadable, nameCamel, version, isGlobal } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tif (!skill.id || !skill.slug) {\n\t\t\treturn {\n\t\t\t\terrors: [new SpruceError({ code: 'SKILL_NOT_REGISTERED' })],\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst destinationDir = diskUtil.resolvePath(this.cwd, 'src', 'events')\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tdiskUtil.resolvePath(destinationDir, '**', '*')\n\t\t\t)\n\n\t\t\tconst files = await this.Writer('event').writeEvent(destinationDir, {\n\t\t\t\tnameKebab,\n\t\t\t\tnameCamel,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\tnameReadable,\n\t\t\t\tisGlobal,\n\t\t\t})\n\n\t\t\tconst syncOptions = normalizeSchemaValues(\n\t\t\t\tsyncEventActionSchema,\n\t\t\t\toptions,\n\t\t\t\t{\n\t\t\t\t\tshouldIncludePrivateFields: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tconst syncResponse = await this.Action('event', 'sync').execute(\n\t\t\t\tsyncOptions\n\t\t\t)\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName: nameKebab,\n\t\t\t\teventNamespace: skill.slug,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t})\n\n\t\t\treturn actionUtil.mergeActionResults(\n\t\t\t\t{ files, meta: { fqen } },\n\t\t\t\tsyncResponse\n\t\t\t)\n\t\t} catch (err: any) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"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"}
|