@sprucelabs/spruce-cli 18.2.0 → 18.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/.spruce/events/events.contract.d.ts +159 -0
- package/build/.spruce/events/events.contract.js +5 -1
- package/build/.spruce/events/events.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.d.ts +46 -0
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js +57 -0
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.d.ts +68 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js +78 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.d.ts +40 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js +51 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.d.ts +9 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js +17 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js.map +1 -0
- package/build/.spruce/schemas/schemas.types.d.ts +158 -55
- package/build/.spruce/schemas/schemas.types.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.d.ts +3 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js +70 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js.map +1 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.d.ts +3 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js +35 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js.map +1 -0
- package/build/.spruce/settings.json +2 -1
- package/build/GlobalEmitter.d.ts +13 -38
- package/build/GlobalEmitter.js +3 -6
- package/build/GlobalEmitter.js.map +1 -1
- package/build/__tests__/behavioral/TestingAConversation.test.d.ts +2 -1
- package/build/__tests__/behavioral/TestingAConversation.test.js +74 -84
- package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +38 -13
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +16 -9
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.d.ts +2 -2
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +7 -7
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.d.ts +6 -0
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js +85 -0
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js.map +1 -0
- package/build/__tests__/behavioral/permissions/PermissionStore.test.d.ts +5 -4
- package/build/__tests__/behavioral/permissions/PermissionStore.test.js +96 -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/schemas/GettingSchemasFromHealthCheck.test.d.ts +1 -1
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +46 -46
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/CreatingATest.test.js +2 -2
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +7 -3
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +2 -2
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.d.ts +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +23 -11
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/__tests__/implementation/GlobalEmitter.test.d.ts +1 -0
- package/build/__tests__/implementation/GlobalEmitter.test.js +40 -3
- package/build/__tests__/implementation/GlobalEmitter.test.js.map +1 -1
- package/build/__tests__/implementation/SkillStore.test.js +3 -4
- package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
- package/build/features/AbstractAction.d.ts +1 -1
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/AbstractFeature.d.ts +3 -3
- package/build/features/AbstractFeature.js +8 -8
- package/build/features/AbstractFeature.js.map +1 -1
- package/build/features/ActionExecuter.d.ts +1 -1
- package/build/features/ActionExecuter.js +3 -4
- package/build/features/ActionExecuter.js.map +1 -1
- package/build/features/ActionFactory.d.ts +12 -5
- package/build/features/ActionFactory.js +27 -6
- package/build/features/ActionFactory.js.map +1 -1
- package/build/features/ActionQuestionAsker.d.ts +1 -1
- package/build/features/ActionQuestionAsker.js +6 -6
- package/build/features/ActionQuestionAsker.js.map +1 -1
- package/build/features/conversation/ConversationFeature.js +1 -1
- package/build/features/conversation/ConversationFeature.js.map +1 -1
- package/build/features/dependencies/DependencyFeature.js +1 -1
- package/build/features/dependencies/DependencyFeature.js.map +1 -1
- package/build/features/deploy/actions/HerokuAction.js +31 -33
- package/build/features/deploy/actions/HerokuAction.js.map +1 -1
- package/build/features/error/ErrorFeature.js +4 -4
- package/build/features/error/ErrorFeature.js.map +1 -1
- package/build/features/event/EventFeature.d.ts +8 -8
- package/build/features/event/EventFeature.js +7 -4
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/actions/CreateAction.js.map +1 -1
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/stores/EventStore.d.ts +9 -9
- package/build/features/event/stores/EventStore.js +26 -26
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/eventContract/EventContractFeature.js +4 -1
- package/build/features/eventContract/EventContractFeature.js.map +1 -1
- package/build/features/eventContract/actions/PullAction.js +10 -5
- package/build/features/eventContract/actions/PullAction.js.map +1 -1
- package/build/features/features.types.d.ts +2 -37
- package/build/features/features.types.js +0 -41
- package/build/features/features.types.js.map +1 -1
- package/build/features/log/LogFeature.js +1 -1
- package/build/features/log/LogFeature.js.map +1 -1
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/organization/actions/InstallAction.js.map +1 -1
- package/build/features/permission/PermissionFeature.d.ts +12 -2
- package/build/features/permission/PermissionFeature.js +140 -15
- package/build/features/permission/PermissionFeature.js.map +1 -1
- package/build/features/permission/actions/CreateAction.js +4 -1
- package/build/features/permission/actions/CreateAction.js.map +1 -1
- package/build/features/permission/actions/SyncAction.d.ts +5 -1
- package/build/features/permission/actions/SyncAction.js +28 -10
- package/build/features/permission/actions/SyncAction.js.map +1 -1
- package/build/features/permission/stores/PermissionStore.d.ts +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 +66 -17
- package/build/features/permission/writers/PermissionWriter.js.map +1 -1
- package/build/features/person/PersonFeature.js +1 -1
- package/build/features/person/PersonFeature.js.map +1 -1
- package/build/features/sandbox/SandboxFeature.js +1 -1
- package/build/features/sandbox/SandboxFeature.js.map +1 -1
- package/build/features/schema/SchemaFeature.d.ts +8 -8
- package/build/features/schema/SchemaFeature.js +4 -4
- package/build/features/schema/SchemaFeature.js.map +1 -1
- package/build/features/schema/writers/SchemaWriter.d.ts +12 -12
- package/build/features/schema/writers/SchemaWriter.js.map +1 -1
- package/build/features/skill/SkillFeature.d.ts +11 -11
- package/build/features/skill/SkillFeature.js +2 -2
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/skill/actions/RebuildAction.js.map +1 -1
- package/build/features/skill/actions/RegisterAction.js.map +1 -1
- package/build/features/skill/stores/SkillStore.js +1 -2
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/store/StoreFeature.js +1 -1
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/features/store/actions/SyncAction.d.ts +1 -1
- package/build/features/store/actions/SyncAction.js.map +1 -1
- package/build/features/test/TestFeature.js +1 -1
- package/build/features/test/TestFeature.js.map +1 -1
- package/build/features/view/ViewFeature.js +1 -1
- package/build/features/view/ViewFeature.js.map +1 -1
- package/build/schemas/v2020_07_22/actionResponse.builder.d.ts +85 -0
- package/build/schemas/v2020_07_22/actionResponse.builder.js +70 -0
- package/build/schemas/v2020_07_22/actionResponse.builder.js.map +1 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.d.ts +27 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.js +45 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.js.map +1 -0
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js +4 -40
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
- package/build/services/CommandService.d.ts +2 -2
- package/build/services/CommandService.js +6 -6
- package/build/services/CommandService.js.map +1 -1
- package/build/services/PkgService.d.ts +1 -0
- package/build/services/PkgService.js +5 -0
- package/build/services/PkgService.js.map +1 -1
- package/build/tests/AbstractCliTest.d.ts +7 -3
- package/build/tests/AbstractCliTest.js +81 -45
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/buildTestCache.js +7 -0
- package/build/tests/buildTestCache.js.map +1 -1
- package/build/tests/fixtures/FeatureFixture.js +1 -0
- package/build/tests/fixtures/FeatureFixture.js.map +1 -1
- package/build/tests/utilities/test.utility.d.ts +2 -0
- package/build/tests/utilities/test.utility.js +6 -0
- package/build/tests/utilities/test.utility.js.map +1 -1
- package/node_modules/@typescript-eslint/parser/package.json +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/SkillEmitsBootEvents.test.ts +6 -0
- package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +2 -2
- package/src/__tests__/behavioral/permissions/PermissionPlugin.test.ts +24 -0
- package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +95 -38
- package/src/__tests__/behavioral/permissions/PermissionWriter.test.ts +23 -0
- package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +125 -8
- package/src/__tests__/behavioral/permissions/support/AbstractPermissionsTest.ts +38 -0
- package/src/__tests__/behavioral/permissions/support/generateShortAlphaId.ts +5 -0
- package/src/__tests__/behavioral/permissions/support/renderPermissionTestFile.ts +27 -0
- package/src/__tests__/behavioral/permissions/support/sortPermissionContracts.ts +3 -0
- package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +12 -12
- package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -2
- package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +3 -0
- package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +3 -2
- package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
- package/src/__tests__/implementation/ActionExecuter2.test.ts +13 -6
- package/src/__tests__/implementation/GlobalEmitter.test.ts +22 -1
- package/src/__tests__/implementation/SkillStore.test.ts +1 -2
- package/src/features/AbstractAction.ts +2 -2
- package/src/features/AbstractFeature.ts +8 -8
- package/src/features/ActionExecuter.ts +4 -5
- package/src/features/ActionFactory.ts +44 -20
- package/src/features/ActionQuestionAsker.ts +17 -17
- package/src/features/conversation/ConversationFeature.ts +1 -1
- package/src/features/dependencies/DependencyFeature.ts +1 -1
- package/src/features/deploy/actions/HerokuAction.ts +2 -2
- package/src/features/error/ErrorFeature.ts +4 -4
- package/src/features/event/EventFeature.ts +15 -14
- package/src/features/event/actions/CreateAction.ts +1 -1
- package/src/features/event/actions/ListenAction.ts +1 -1
- package/src/features/event/stores/EventStore.ts +37 -37
- package/src/features/eventContract/EventContractFeature.ts +6 -1
- package/src/features/eventContract/actions/PullAction.ts +7 -3
- package/src/features/features.types.ts +4 -41
- package/src/features/log/LogFeature.ts +1 -1
- package/src/features/node/NodeFeature.ts +1 -1
- package/src/features/organization/actions/InstallAction.ts +1 -1
- package/src/features/permission/PermissionFeature.ts +66 -11
- package/src/features/permission/actions/CreateAction.ts +2 -0
- package/src/features/permission/actions/SyncAction.ts +22 -3
- package/src/features/permission/stores/PermissionStore.ts +27 -8
- package/src/features/permission/writers/PermissionWriter.ts +64 -3
- package/src/features/person/PersonFeature.ts +1 -1
- package/src/features/sandbox/SandboxFeature.ts +1 -3
- package/src/features/schema/SchemaFeature.ts +14 -14
- package/src/features/schema/writers/SchemaWriter.ts +14 -15
- package/src/features/skill/SkillFeature.ts +18 -18
- package/src/features/skill/actions/RebuildAction.ts +1 -1
- package/src/features/skill/actions/RegisterAction.ts +1 -1
- package/src/features/skill/stores/SkillStore.ts +1 -2
- package/src/features/store/StoreFeature.ts +1 -1
- package/src/features/store/actions/SyncAction.ts +1 -1
- package/src/features/test/TestFeature.ts +1 -1
- package/src/features/view/ViewFeature.ts +1 -1
- package/src/schemas/v2020_07_22/actionResponse.builder.ts +62 -0
- package/src/schemas/v2020_07_22/generatedFile.builder.ts +44 -0
- package/src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts +3 -46
- package/src/services/CommandService.ts +5 -5
- package/src/services/PkgService.ts +4 -0
- package/src/tests/AbstractCliTest.ts +31 -13
- package/src/tests/buildTestCache.ts +7 -0
- package/src/tests/fixtures/FeatureFixture.ts +2 -0
- package/src/tests/utilities/test.utility.ts +13 -0
- package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.d.ts +0 -8
- package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.js.map +0 -1
- package/src/__tests__/behavioral/permissions/AbstractPermissionsTest.ts +0 -20
|
@@ -1,24 +1,79 @@
|
|
|
1
|
-
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
2
|
-
import AbstractFeature, {
|
|
1
|
+
import { diskUtil, NpmPackage } from '@sprucelabs/spruce-skill-utils'
|
|
2
|
+
import AbstractFeature, {
|
|
3
|
+
FeatureDependency,
|
|
4
|
+
FeatureOptions,
|
|
5
|
+
InstallResults,
|
|
6
|
+
} from '../AbstractFeature'
|
|
3
7
|
import { FeatureCode } from '../features.types'
|
|
8
|
+
import PermissionWriter from './writers/PermissionWriter'
|
|
4
9
|
|
|
5
10
|
export default class PermissionFeature extends AbstractFeature {
|
|
6
11
|
public code: FeatureCode = 'permission'
|
|
7
12
|
public nameReadable = 'permission'
|
|
8
13
|
public description = 'Manage permissions for your skill'
|
|
9
|
-
public dependencies: FeatureDependency[] = [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
isRequired: true,
|
|
13
|
-
},
|
|
14
|
+
public dependencies: FeatureDependency[] = []
|
|
15
|
+
public actionsDir = diskUtil.resolvePath(__dirname, 'actions')
|
|
16
|
+
public packageDependencies: NpmPackage[] = [
|
|
14
17
|
{
|
|
15
|
-
|
|
16
|
-
isRequired: true,
|
|
18
|
+
name: '@sprucelabs/spruce-permission-plugin@latest',
|
|
17
19
|
},
|
|
18
20
|
]
|
|
19
|
-
|
|
21
|
+
private writer: PermissionWriter
|
|
20
22
|
|
|
21
|
-
public
|
|
23
|
+
public constructor(options: FeatureOptions) {
|
|
24
|
+
super(options)
|
|
25
|
+
this.writer = this.Writer('permission')
|
|
26
|
+
|
|
27
|
+
void this.emitter.on(
|
|
28
|
+
'feature.did-execute',
|
|
29
|
+
this.handleDidExecuteAction.bind(this)
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public async handleDidExecuteAction({
|
|
34
|
+
featureCode,
|
|
35
|
+
actionCode,
|
|
36
|
+
}: {
|
|
37
|
+
featureCode: string
|
|
38
|
+
actionCode: string
|
|
39
|
+
}) {
|
|
40
|
+
const isInstalled = await this.features.isInstalled('permission')
|
|
41
|
+
const isSkillInstalled = await this.features.isInstalled('skill')
|
|
42
|
+
|
|
43
|
+
if (
|
|
44
|
+
isSkillInstalled &&
|
|
45
|
+
isInstalled &&
|
|
46
|
+
featureCode === 'node' &&
|
|
47
|
+
actionCode === 'upgrade'
|
|
48
|
+
) {
|
|
49
|
+
const combinedFile = await this.writePlugin()
|
|
50
|
+
const results = await this.Action('permission', 'sync').execute({})
|
|
51
|
+
|
|
52
|
+
results.files = [...(results.files ?? []), ...combinedFile]
|
|
53
|
+
return results
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return {}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public async afterPackageInstall(): Promise<InstallResults> {
|
|
60
|
+
const files = await this.writePlugin()
|
|
61
|
+
const combinedFile = await this.writeTypesFile()
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
files: [...files, ...combinedFile],
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private async writeTypesFile() {
|
|
69
|
+
return await this.writer.writeTypesFile(this.cwd, {
|
|
70
|
+
contracts: [],
|
|
71
|
+
})
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
private async writePlugin() {
|
|
75
|
+
return this.writer.writePlugin(this.cwd)
|
|
76
|
+
}
|
|
22
77
|
}
|
|
23
78
|
|
|
24
79
|
declare module '../../features/features.types' {
|
|
@@ -1,16 +1,35 @@
|
|
|
1
1
|
import { buildSchema } from '@sprucelabs/schema'
|
|
2
2
|
import AbstractAction from '../../AbstractAction'
|
|
3
|
-
import { FeatureActionResponse } from '../../features.types'
|
|
3
|
+
import { ActionOptions, FeatureActionResponse } from '../../features.types'
|
|
4
|
+
import PermissionStore from '../stores/PermissionStore'
|
|
5
|
+
import PermissionWriter from '../writers/PermissionWriter'
|
|
4
6
|
|
|
5
7
|
export default class SyncAction extends AbstractAction<OptionsSchema> {
|
|
6
8
|
public invocationMessage = 'Syncing permissions... 🛡'
|
|
7
9
|
public optionsSchema = schema
|
|
10
|
+
public readonly commandAliases: string[] = ['sync.permissions']
|
|
11
|
+
|
|
12
|
+
private permissions: PermissionStore
|
|
13
|
+
private writer: PermissionWriter
|
|
14
|
+
|
|
15
|
+
public constructor(options: ActionOptions) {
|
|
16
|
+
super(options)
|
|
17
|
+
this.permissions = this.Store('permission')
|
|
18
|
+
this.writer = this.Writer('permission')
|
|
19
|
+
}
|
|
8
20
|
|
|
9
21
|
public async execute(): Promise<FeatureActionResponse> {
|
|
10
|
-
const
|
|
22
|
+
const map = await this.permissions.fetchContracts()
|
|
23
|
+
const typesFiles = await this.writer.writeTypesFile(this.cwd, map)
|
|
24
|
+
|
|
25
|
+
const local = await this.permissions.loadLocalPermissions()
|
|
26
|
+
const combinedFiles = await this.writer.writeCombinedFile(this.cwd, {
|
|
27
|
+
contracts: local,
|
|
28
|
+
})
|
|
11
29
|
|
|
12
30
|
return {
|
|
13
|
-
files,
|
|
31
|
+
files: [...typesFiles, ...combinedFiles],
|
|
32
|
+
summaryLines: ['Permissions synced'],
|
|
14
33
|
}
|
|
15
34
|
}
|
|
16
35
|
}
|
|
@@ -9,28 +9,43 @@ import AbstractStore from '../../../stores/AbstractStore'
|
|
|
9
9
|
export default class PermissionStore extends AbstractStore {
|
|
10
10
|
public name = 'permission'
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
public async loadLocalPermissions() {
|
|
13
13
|
const matches = await globby('**/*.permissions.ts', {
|
|
14
14
|
cwd: this.cwd,
|
|
15
15
|
})
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const namespace = this.Service('pkg').getSkillNamespace()
|
|
18
|
+
const imported: ImportedPermission[] = []
|
|
18
19
|
|
|
19
20
|
for (const file of matches) {
|
|
21
|
+
const path = diskUtil.resolvePath(this.cwd, file)
|
|
20
22
|
const contract = (await this.Service('import').importDefault(
|
|
21
|
-
|
|
23
|
+
path
|
|
22
24
|
)) as PermissionContract
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
imported.push({
|
|
27
|
+
id: `${namespace}.${contract.id}`,
|
|
28
|
+
permissions: contract.permissions.map((p) => p.id),
|
|
29
|
+
path,
|
|
30
|
+
})
|
|
25
31
|
}
|
|
26
32
|
|
|
27
|
-
return
|
|
33
|
+
return imported
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
public async fetchContracts() {
|
|
31
|
-
const client = await this.connectToApi()
|
|
37
|
+
const client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })
|
|
32
38
|
const deps = this.Service('dependency').get()
|
|
33
39
|
|
|
40
|
+
const local = await this.loadLocalPermissions()
|
|
41
|
+
const map: PermissionContractMap = local.reduce<PermissionContractMap>(
|
|
42
|
+
(map, local) => {
|
|
43
|
+
map[local.id] = local.permissions
|
|
44
|
+
return map
|
|
45
|
+
},
|
|
46
|
+
{}
|
|
47
|
+
)
|
|
48
|
+
|
|
34
49
|
const [{ permissionContracts }] = await client.emitAndFlattenResponses(
|
|
35
50
|
'list-permission-contracts::v2020_12_25',
|
|
36
51
|
{
|
|
@@ -40,8 +55,6 @@ export default class PermissionStore extends AbstractStore {
|
|
|
40
55
|
}
|
|
41
56
|
)
|
|
42
57
|
|
|
43
|
-
const map: PermissionContractMap = await this.loadLocalPermissions()
|
|
44
|
-
|
|
45
58
|
for (const result of permissionContracts) {
|
|
46
59
|
map[result.contract.id] = result.contract.permissions.map((p) => p.id)
|
|
47
60
|
}
|
|
@@ -49,3 +62,9 @@ export default class PermissionStore extends AbstractStore {
|
|
|
49
62
|
return map
|
|
50
63
|
}
|
|
51
64
|
}
|
|
65
|
+
|
|
66
|
+
export interface ImportedPermission {
|
|
67
|
+
id: string
|
|
68
|
+
permissions: string[]
|
|
69
|
+
path: string
|
|
70
|
+
}
|
|
@@ -1,23 +1,66 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PermissionContractMap } from '@sprucelabs/mercury-types'
|
|
2
|
+
import { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'
|
|
2
3
|
import AbstractWriter from '../../../writers/AbstractWriter'
|
|
4
|
+
import { ImportedPermission } from '../stores/PermissionStore'
|
|
3
5
|
|
|
4
6
|
export default class PermissionWriter extends AbstractWriter {
|
|
5
|
-
public async writeTypesFile(
|
|
7
|
+
public async writeTypesFile(
|
|
8
|
+
destinationDir: string,
|
|
9
|
+
map: PermissionContractMap
|
|
10
|
+
) {
|
|
6
11
|
const destination = diskUtil.resolveHashSprucePath(
|
|
7
12
|
destinationDir,
|
|
8
13
|
'permissions',
|
|
9
14
|
'permissions.types.ts'
|
|
10
15
|
)
|
|
11
16
|
|
|
17
|
+
const contents = this.templates.permissionTypes({ contracts: map })
|
|
18
|
+
|
|
12
19
|
const files = await this.writeFileIfChangedMixinResults(
|
|
13
20
|
destination,
|
|
14
|
-
|
|
21
|
+
contents,
|
|
15
22
|
'Types file for any permission contracts you created or depend on.'
|
|
16
23
|
)
|
|
17
24
|
|
|
18
25
|
return files
|
|
19
26
|
}
|
|
20
27
|
|
|
28
|
+
public async writeCombinedFile(
|
|
29
|
+
destinationDir: string,
|
|
30
|
+
options: {
|
|
31
|
+
contracts: ImportedPermission[]
|
|
32
|
+
}
|
|
33
|
+
) {
|
|
34
|
+
const { contracts } = options
|
|
35
|
+
|
|
36
|
+
const destinationPath = diskUtil.resolveHashSprucePath(
|
|
37
|
+
destinationDir,
|
|
38
|
+
'permissions'
|
|
39
|
+
)
|
|
40
|
+
const destinationFile = diskUtil.resolvePath(
|
|
41
|
+
destinationPath,
|
|
42
|
+
'permissions.ts'
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
const local = contracts.map((c) => ({
|
|
46
|
+
nameCamel: namesUtil.toCamel(c.id),
|
|
47
|
+
path: diskUtil.resolveRelativePath(
|
|
48
|
+
destinationPath,
|
|
49
|
+
c.path.replace('.ts', '')
|
|
50
|
+
),
|
|
51
|
+
}))
|
|
52
|
+
|
|
53
|
+
const content = this.templates.permissions({ contracts: local })
|
|
54
|
+
|
|
55
|
+
const files = await this.writeFileIfChangedMixinResults(
|
|
56
|
+
destinationFile,
|
|
57
|
+
content,
|
|
58
|
+
'Import of all permission contracts for loading on boot!'
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
return files
|
|
62
|
+
}
|
|
63
|
+
|
|
21
64
|
public async writeContract(
|
|
22
65
|
destinationDir: string,
|
|
23
66
|
options: {
|
|
@@ -51,4 +94,22 @@ export default class PermissionWriter extends AbstractWriter {
|
|
|
51
94
|
|
|
52
95
|
return files
|
|
53
96
|
}
|
|
97
|
+
|
|
98
|
+
public writePlugin(cwd: string) {
|
|
99
|
+
const destination = diskUtil.resolveHashSprucePath(
|
|
100
|
+
cwd,
|
|
101
|
+
'features',
|
|
102
|
+
'permission.plugin.ts'
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
const pluginContents = this.templates.permissionPlugin()
|
|
106
|
+
|
|
107
|
+
const results = this.writeFileIfChangedMixinResults(
|
|
108
|
+
destination,
|
|
109
|
+
pluginContents,
|
|
110
|
+
'Enable permission support in your skill.'
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
return results
|
|
114
|
+
}
|
|
54
115
|
}
|
|
@@ -17,7 +17,7 @@ export default class PersonFeature extends AbstractFeature {
|
|
|
17
17
|
public actionsDir = diskUtil.resolvePath(__dirname, 'actions')
|
|
18
18
|
|
|
19
19
|
public isInstalled = () => {
|
|
20
|
-
return this.
|
|
20
|
+
return this.features.isInstalled('skill')
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -27,9 +27,7 @@ export default class SandboxFeature extends AbstractFeature {
|
|
|
27
27
|
super(options)
|
|
28
28
|
|
|
29
29
|
void this.emitter.on('feature.will-execute', async (payload) => {
|
|
30
|
-
const isSkillInstalled = await this.
|
|
31
|
-
'sandbox'
|
|
32
|
-
)
|
|
30
|
+
const isSkillInstalled = await this.features.isInstalled('sandbox')
|
|
33
31
|
if (
|
|
34
32
|
isSkillInstalled &&
|
|
35
33
|
payload.featureCode === 'node' &&
|
|
@@ -7,16 +7,6 @@ import AbstractFeature, {
|
|
|
7
7
|
} from '../AbstractFeature'
|
|
8
8
|
import { FeatureCode } from '../features.types'
|
|
9
9
|
|
|
10
|
-
declare module '../../features/features.types' {
|
|
11
|
-
interface FeatureMap {
|
|
12
|
-
schema: SchemaFeature
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
interface FeatureOptionsMap {
|
|
16
|
-
schema: undefined
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
10
|
export default class SchemaFeature extends AbstractFeature {
|
|
21
11
|
public nameReadable = 'Schema'
|
|
22
12
|
public description = 'Define, validate, and normalize everything.'
|
|
@@ -59,8 +49,8 @@ export default class SchemaFeature extends AbstractFeature {
|
|
|
59
49
|
actionCode: string
|
|
60
50
|
featureCode: string
|
|
61
51
|
}) {
|
|
62
|
-
const isInstalled = await this.
|
|
63
|
-
const isSkillInstalled = await this.
|
|
52
|
+
const isInstalled = await this.features.isInstalled('schema')
|
|
53
|
+
const isSkillInstalled = await this.features.isInstalled('skill')
|
|
64
54
|
|
|
65
55
|
if (
|
|
66
56
|
payload.featureCode === 'node' &&
|
|
@@ -79,7 +69,7 @@ export default class SchemaFeature extends AbstractFeature {
|
|
|
79
69
|
actionCode: string
|
|
80
70
|
featureCode: string
|
|
81
71
|
}) {
|
|
82
|
-
const isInstalled = await this.
|
|
72
|
+
const isInstalled = await this.features.isInstalled('schema')
|
|
83
73
|
|
|
84
74
|
if (
|
|
85
75
|
payload.featureCode === 'node' &&
|
|
@@ -98,7 +88,7 @@ export default class SchemaFeature extends AbstractFeature {
|
|
|
98
88
|
}
|
|
99
89
|
|
|
100
90
|
public async afterPackageInstall(): Promise<InstallResults> {
|
|
101
|
-
const isSkillInstalled = await this.
|
|
91
|
+
const isSkillInstalled = await this.features.isInstalled('skill')
|
|
102
92
|
|
|
103
93
|
if (!isSkillInstalled) {
|
|
104
94
|
return {}
|
|
@@ -115,3 +105,13 @@ export default class SchemaFeature extends AbstractFeature {
|
|
|
115
105
|
return this.Writer('schema').writePlugin(this.cwd)
|
|
116
106
|
}
|
|
117
107
|
}
|
|
108
|
+
|
|
109
|
+
declare module '../../features/features.types' {
|
|
110
|
+
interface FeatureMap {
|
|
111
|
+
schema: SchemaFeature
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
interface FeatureOptionsMap {
|
|
115
|
+
schema: undefined
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -15,21 +15,6 @@ import SpruceError from '../../../errors/SpruceError'
|
|
|
15
15
|
import AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter'
|
|
16
16
|
import schemaDiskUtil from '../utilities/schemaDisk.utility'
|
|
17
17
|
|
|
18
|
-
interface WriteFieldTypesOptions {
|
|
19
|
-
fieldTemplateItems: FieldTemplateItem[]
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line no-redeclare
|
|
23
|
-
export interface GenerateSchemaTypesOptions {
|
|
24
|
-
fieldTemplateItems: FieldTemplateItem[]
|
|
25
|
-
schemaTemplateItems: SchemaTemplateItem[]
|
|
26
|
-
valueTypes: ValueTypes
|
|
27
|
-
globalSchemaNamespace?: string
|
|
28
|
-
typesTemplate?: string
|
|
29
|
-
registerBuiltSchemas?: boolean
|
|
30
|
-
shouldImportCoreSchemas: boolean
|
|
31
|
-
}
|
|
32
|
-
|
|
33
18
|
export default class SchemaWriter extends AbstractWriter {
|
|
34
19
|
private readonly fieldTemplates: {
|
|
35
20
|
filename: string
|
|
@@ -289,3 +274,17 @@ export default class SchemaWriter extends AbstractWriter {
|
|
|
289
274
|
return results
|
|
290
275
|
}
|
|
291
276
|
}
|
|
277
|
+
|
|
278
|
+
interface WriteFieldTypesOptions {
|
|
279
|
+
fieldTemplateItems: FieldTemplateItem[]
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
export interface GenerateSchemaTypesOptions {
|
|
283
|
+
fieldTemplateItems: FieldTemplateItem[]
|
|
284
|
+
schemaTemplateItems: SchemaTemplateItem[]
|
|
285
|
+
valueTypes: ValueTypes
|
|
286
|
+
globalSchemaNamespace?: string
|
|
287
|
+
typesTemplate?: string
|
|
288
|
+
registerBuiltSchemas?: boolean
|
|
289
|
+
shouldImportCoreSchemas: boolean
|
|
290
|
+
}
|
|
@@ -11,22 +11,6 @@ import universalFileDescriptions from '../universalFileDescriptions'
|
|
|
11
11
|
import universalScripts from '../universalScripts'
|
|
12
12
|
import Updater from './updaters/Updater'
|
|
13
13
|
|
|
14
|
-
type SkillFeatureOptionsSchema =
|
|
15
|
-
SpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema
|
|
16
|
-
type SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature
|
|
17
|
-
|
|
18
|
-
declare module '../../features/features.types' {
|
|
19
|
-
interface FeatureMap {
|
|
20
|
-
skill: SkillFeature
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
interface FeatureOptionsMap {
|
|
24
|
-
skill: SchemaValues<SkillFeatureOptionsSchema>
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
type UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions
|
|
29
|
-
|
|
30
14
|
export default class SkillFeature<
|
|
31
15
|
S extends SkillFeatureOptionsSchema = SkillFeatureOptionsSchema
|
|
32
16
|
> extends AbstractFeature<S> {
|
|
@@ -120,7 +104,7 @@ export default class SkillFeature<
|
|
|
120
104
|
name: 'AbstractSpruceFixtureTest',
|
|
121
105
|
label: 'AbstractSpruceFixtureTest',
|
|
122
106
|
import: '@sprucelabs/spruce-test-fixtures',
|
|
123
|
-
featureCode: '
|
|
107
|
+
featureCode: 'node',
|
|
124
108
|
},
|
|
125
109
|
],
|
|
126
110
|
}
|
|
@@ -191,7 +175,7 @@ export default class SkillFeature<
|
|
|
191
175
|
options?: UpgradeOptions
|
|
192
176
|
}) {
|
|
193
177
|
const { featureCode, actionCode, options: upgradeOptions } = options
|
|
194
|
-
const isInstalled = await this.
|
|
178
|
+
const isInstalled = await this.features.isInstalled('skill')
|
|
195
179
|
|
|
196
180
|
if (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {
|
|
197
181
|
const updater = new Updater(this, this.emitter)
|
|
@@ -204,3 +188,19 @@ export default class SkillFeature<
|
|
|
204
188
|
return {}
|
|
205
189
|
}
|
|
206
190
|
}
|
|
191
|
+
|
|
192
|
+
type SkillFeatureOptionsSchema =
|
|
193
|
+
SpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema
|
|
194
|
+
type SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature
|
|
195
|
+
|
|
196
|
+
declare module '../../features/features.types' {
|
|
197
|
+
interface FeatureMap {
|
|
198
|
+
skill: SkillFeature
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
interface FeatureOptionsMap {
|
|
202
|
+
skill: SchemaValues<SkillFeatureOptionsSchema>
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
type UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions
|
|
@@ -99,8 +99,7 @@ export default class SkillStore extends AbstractStore {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
private getNamespaceFromPkg() {
|
|
102
|
-
const
|
|
103
|
-
const nameFromPackage = pkg.get('skill.namespace')
|
|
102
|
+
const nameFromPackage = this.Service('pkg').getSkillNamespace()
|
|
104
103
|
if (!nameFromPackage) {
|
|
105
104
|
throw new Error(
|
|
106
105
|
'You need need to set skill.namespace in the package.json'
|
|
@@ -59,7 +59,7 @@ export default class StoreFeature extends AbstractFeature {
|
|
|
59
59
|
featureCode: string
|
|
60
60
|
actionCode: string
|
|
61
61
|
}) {
|
|
62
|
-
const isInstalled = await this.
|
|
62
|
+
const isInstalled = await this.features.isInstalled('store')
|
|
63
63
|
|
|
64
64
|
const isUpgrade =
|
|
65
65
|
isInstalled &&
|
|
@@ -123,7 +123,7 @@ export default class TestFeature extends AbstractFeature {
|
|
|
123
123
|
const a = { ...ac, isDefaultExport: false }
|
|
124
124
|
|
|
125
125
|
if (ac.featureCode) {
|
|
126
|
-
const isInstalled = await this.
|
|
126
|
+
const isInstalled = await this.features.isInstalled(
|
|
127
127
|
ac.featureCode as any
|
|
128
128
|
)
|
|
129
129
|
|
|
@@ -48,7 +48,7 @@ export default class ViewFeature extends AbstractFeature {
|
|
|
48
48
|
|
|
49
49
|
void this.emitter.on('feature.did-execute', async (payload) => {
|
|
50
50
|
const { featureCode, actionCode } = payload
|
|
51
|
-
const isInstalled = await this.
|
|
51
|
+
const isInstalled = await this.features.isInstalled('view')
|
|
52
52
|
|
|
53
53
|
if (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {
|
|
54
54
|
const files = await this.Writer('view').writePlugin(this.cwd)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { buildSchema } from '@sprucelabs/schema'
|
|
2
|
+
import generatedFileBuilder from './generatedFile.builder'
|
|
3
|
+
|
|
4
|
+
export default buildSchema({
|
|
5
|
+
id: 'actionResponse',
|
|
6
|
+
name: 'Action response',
|
|
7
|
+
importsWhenLocal: [`import AbstractSpruceError from '@sprucelabs/error'`],
|
|
8
|
+
fields: {
|
|
9
|
+
files: {
|
|
10
|
+
type: 'schema',
|
|
11
|
+
isArray: true,
|
|
12
|
+
options: {
|
|
13
|
+
schema: generatedFileBuilder,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
headline: {
|
|
17
|
+
type: 'text',
|
|
18
|
+
},
|
|
19
|
+
hints: {
|
|
20
|
+
type: 'text',
|
|
21
|
+
isArray: true,
|
|
22
|
+
},
|
|
23
|
+
summaryLines: {
|
|
24
|
+
type: 'text',
|
|
25
|
+
isArray: true,
|
|
26
|
+
},
|
|
27
|
+
errors: {
|
|
28
|
+
type: 'raw',
|
|
29
|
+
isArray: true,
|
|
30
|
+
options: {
|
|
31
|
+
valueType: 'AbstractSpruceError<any>',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
meta: {
|
|
35
|
+
type: 'raw',
|
|
36
|
+
options: {
|
|
37
|
+
valueType: 'Record<string, any>',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
packagesInstalled: {
|
|
41
|
+
type: 'schema',
|
|
42
|
+
isArray: true,
|
|
43
|
+
options: {
|
|
44
|
+
schema: buildSchema({
|
|
45
|
+
id: 'npmPackage',
|
|
46
|
+
fields: {
|
|
47
|
+
name: {
|
|
48
|
+
type: 'text',
|
|
49
|
+
isRequired: true,
|
|
50
|
+
},
|
|
51
|
+
version: {
|
|
52
|
+
type: 'text',
|
|
53
|
+
},
|
|
54
|
+
isDev: {
|
|
55
|
+
type: 'boolean',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
}),
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
})
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { buildSchema } from '@sprucelabs/schema'
|
|
2
|
+
|
|
3
|
+
const generatedFileBuilder = buildSchema({
|
|
4
|
+
id: 'generatedFile',
|
|
5
|
+
fields: {
|
|
6
|
+
name: {
|
|
7
|
+
type: 'text',
|
|
8
|
+
isRequired: true,
|
|
9
|
+
},
|
|
10
|
+
path: {
|
|
11
|
+
type: 'text',
|
|
12
|
+
isRequired: true,
|
|
13
|
+
},
|
|
14
|
+
description: {
|
|
15
|
+
type: 'text',
|
|
16
|
+
},
|
|
17
|
+
action: {
|
|
18
|
+
type: 'select',
|
|
19
|
+
isRequired: true,
|
|
20
|
+
options: {
|
|
21
|
+
choices: [
|
|
22
|
+
{
|
|
23
|
+
label: 'Skipped',
|
|
24
|
+
value: 'skipped',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: 'Generated',
|
|
28
|
+
value: 'generated',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: 'Updated',
|
|
32
|
+
value: 'updated',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: 'Deleted',
|
|
36
|
+
value: 'deleted',
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
export default generatedFileBuilder
|