@sprucelabs/spruce-cli 18.1.8 → 18.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/build/.spruce/events/events.contract.d.ts +159 -0
- package/build/.spruce/events/events.contract.js +5 -1
- package/build/.spruce/events/events.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.d.ts +46 -0
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js +57 -0
- package/build/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.d.ts +68 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js +78 -0
- package/build/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.d.ts +40 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js +51 -0
- package/build/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.js.map +1 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.d.ts +9 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js +17 -0
- package/build/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.js.map +1 -0
- package/build/.spruce/schemas/schemas.types.d.ts +158 -55
- package/build/.spruce/schemas/schemas.types.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.d.ts +3 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js +70 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.js.map +1 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.d.ts +3 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js +35 -0
- package/build/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.js.map +1 -0
- package/build/.spruce/settings.json +2 -1
- package/build/GlobalEmitter.d.ts +13 -38
- package/build/GlobalEmitter.js +3 -6
- package/build/GlobalEmitter.js.map +1 -1
- package/build/__tests__/behavioral/TestingAConversation.test.d.ts +2 -1
- package/build/__tests__/behavioral/TestingAConversation.test.js +74 -84
- package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +38 -13
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +16 -9
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.d.ts +2 -2
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js +7 -7
- package/build/__tests__/behavioral/permissions/CreatingPermissions.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.d.ts +6 -0
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js +85 -0
- package/build/__tests__/behavioral/permissions/PermissionPlugin.test.js.map +1 -0
- package/build/__tests__/behavioral/permissions/PermissionStore.test.d.ts +12 -2
- package/build/__tests__/behavioral/permissions/PermissionStore.test.js +248 -36
- package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/PermissionWriter.test.d.ts +5 -0
- package/build/__tests__/behavioral/permissions/PermissionWriter.test.js +88 -0
- package/build/__tests__/behavioral/permissions/PermissionWriter.test.js.map +1 -0
- package/build/__tests__/behavioral/permissions/SyncingPermissions.test.d.ts +15 -4
- package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js +325 -28
- package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
- package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.d.ts +11 -0
- package/build/__tests__/behavioral/permissions/{AbstractPermissionsTest.js → support/AbstractPermissionsTest.js} +34 -2
- package/build/__tests__/behavioral/permissions/support/AbstractPermissionsTest.js.map +1 -0
- package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.d.ts +1 -0
- package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js +11 -0
- package/build/__tests__/behavioral/permissions/support/generateShortAlphaId.js.map +1 -0
- package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.d.ts +1 -0
- package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js +17 -0
- package/build/__tests__/behavioral/permissions/support/renderPermissionTestFile.js.map +1 -0
- package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.d.ts +5 -0
- package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js +10 -0
- package/build/__tests__/behavioral/permissions/support/sortPermissionContracts.js.map +1 -0
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.d.ts +1 -1
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js +46 -46
- package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/CreatingATest.test.js +2 -2
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +7 -3
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +2 -2
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.d.ts +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +23 -11
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/__tests__/implementation/GlobalEmitter.test.d.ts +1 -0
- package/build/__tests__/implementation/GlobalEmitter.test.js +40 -3
- package/build/__tests__/implementation/GlobalEmitter.test.js.map +1 -1
- package/build/__tests__/implementation/SkillStore.test.js +3 -4
- package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
- package/build/__tests__/support/EventFaker.d.ts +5 -0
- package/build/__tests__/support/EventFaker.js +48 -0
- package/build/__tests__/support/EventFaker.js.map +1 -0
- package/build/features/AbstractAction.d.ts +1 -1
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/AbstractFeature.d.ts +3 -3
- package/build/features/AbstractFeature.js +8 -8
- package/build/features/AbstractFeature.js.map +1 -1
- package/build/features/ActionExecuter.d.ts +1 -1
- package/build/features/ActionExecuter.js +3 -4
- package/build/features/ActionExecuter.js.map +1 -1
- package/build/features/ActionFactory.d.ts +12 -5
- package/build/features/ActionFactory.js +27 -6
- package/build/features/ActionFactory.js.map +1 -1
- package/build/features/ActionQuestionAsker.d.ts +1 -1
- package/build/features/ActionQuestionAsker.js +6 -6
- package/build/features/ActionQuestionAsker.js.map +1 -1
- package/build/features/conversation/ConversationFeature.js +1 -1
- package/build/features/conversation/ConversationFeature.js.map +1 -1
- package/build/features/dependencies/DependencyFeature.js +1 -1
- package/build/features/dependencies/DependencyFeature.js.map +1 -1
- package/build/features/deploy/actions/HerokuAction.js +31 -33
- package/build/features/deploy/actions/HerokuAction.js.map +1 -1
- package/build/features/error/ErrorFeature.js +4 -4
- package/build/features/error/ErrorFeature.js.map +1 -1
- package/build/features/event/EventFeature.d.ts +8 -8
- package/build/features/event/EventFeature.js +7 -4
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/actions/CreateAction.js.map +1 -1
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/stores/EventStore.d.ts +9 -9
- package/build/features/event/stores/EventStore.js +26 -26
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/eventContract/EventContractFeature.js +4 -1
- package/build/features/eventContract/EventContractFeature.js.map +1 -1
- package/build/features/eventContract/actions/PullAction.js +10 -5
- package/build/features/eventContract/actions/PullAction.js.map +1 -1
- package/build/features/features.types.d.ts +2 -37
- package/build/features/features.types.js +0 -41
- package/build/features/features.types.js.map +1 -1
- package/build/features/log/LogFeature.js +1 -1
- package/build/features/log/LogFeature.js.map +1 -1
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/organization/actions/InstallAction.js.map +1 -1
- package/build/features/permission/PermissionFeature.d.ts +12 -2
- package/build/features/permission/PermissionFeature.js +140 -15
- package/build/features/permission/PermissionFeature.js.map +1 -1
- package/build/features/permission/actions/CreateAction.js +4 -1
- package/build/features/permission/actions/CreateAction.js.map +1 -1
- package/build/features/permission/actions/SyncAction.d.ts +5 -1
- package/build/features/permission/actions/SyncAction.js +28 -10
- package/build/features/permission/actions/SyncAction.js.map +1 -1
- package/build/features/permission/stores/PermissionStore.d.ts +7 -1
- package/build/features/permission/stores/PermissionStore.js +92 -23
- package/build/features/permission/stores/PermissionStore.js.map +1 -1
- package/build/features/permission/writers/PermissionWriter.d.ts +7 -1
- package/build/features/permission/writers/PermissionWriter.js +66 -17
- package/build/features/permission/writers/PermissionWriter.js.map +1 -1
- package/build/features/person/PersonFeature.js +1 -1
- package/build/features/person/PersonFeature.js.map +1 -1
- package/build/features/sandbox/SandboxFeature.js +1 -1
- package/build/features/sandbox/SandboxFeature.js.map +1 -1
- package/build/features/schema/SchemaFeature.d.ts +8 -8
- package/build/features/schema/SchemaFeature.js +4 -4
- package/build/features/schema/SchemaFeature.js.map +1 -1
- package/build/features/schema/writers/SchemaWriter.d.ts +12 -12
- package/build/features/schema/writers/SchemaWriter.js.map +1 -1
- package/build/features/skill/SkillFeature.d.ts +11 -11
- package/build/features/skill/SkillFeature.js +2 -2
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/skill/actions/RebuildAction.js.map +1 -1
- package/build/features/skill/actions/RegisterAction.js.map +1 -1
- package/build/features/skill/stores/SkillStore.js +1 -2
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/store/StoreFeature.js +1 -1
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/features/store/actions/SyncAction.d.ts +1 -1
- package/build/features/store/actions/SyncAction.js.map +1 -1
- package/build/features/test/TestFeature.js +1 -1
- package/build/features/test/TestFeature.js.map +1 -1
- package/build/features/view/ViewFeature.js +1 -1
- package/build/features/view/ViewFeature.js.map +1 -1
- package/build/schemas/v2020_07_22/actionResponse.builder.d.ts +85 -0
- package/build/schemas/v2020_07_22/actionResponse.builder.js +70 -0
- package/build/schemas/v2020_07_22/actionResponse.builder.js.map +1 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.d.ts +27 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.js +45 -0
- package/build/schemas/v2020_07_22/generatedFile.builder.js.map +1 -0
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js +4 -40
- package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
- package/build/services/CommandService.d.ts +2 -2
- package/build/services/CommandService.js +6 -6
- package/build/services/CommandService.js.map +1 -1
- package/build/services/PkgService.d.ts +1 -0
- package/build/services/PkgService.js +5 -0
- package/build/services/PkgService.js.map +1 -1
- package/build/tests/AbstractCliTest.d.ts +7 -3
- package/build/tests/AbstractCliTest.js +81 -45
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/buildTestCache.js +7 -0
- package/build/tests/buildTestCache.js.map +1 -1
- package/build/tests/fixtures/FeatureFixture.js +1 -0
- package/build/tests/fixtures/FeatureFixture.js.map +1 -1
- package/build/tests/utilities/test.utility.d.ts +2 -0
- package/build/tests/utilities/test.utility.js +6 -0
- package/build/tests/utilities/test.utility.js.map +1 -1
- package/node_modules/@typescript-eslint/parser/package.json +6 -6
- package/node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js +9 -9
- package/node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.d.ts +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js +1 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js +21 -7
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.d.ts +3 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.d.ts.map +1 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.js +12 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.intl.js.map +1 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.js +2 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2019.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts +1 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js +2 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.js +2 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.iterable.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js +39 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts +4 -2
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js +13 -5
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ExportVisitor.d.ts +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ExportVisitor.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.d.ts +2 -2
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js +9 -9
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.js +17 -17
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts +2 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js +3 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/Scope.d.ts +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/Scope.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.d.ts +1 -1
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/scope-manager/package.json +12 -12
- package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +27 -3
- package/node_modules/@typescript-eslint/types/_ts3.4/dist/lib.d.ts +1 -1
- package/node_modules/@typescript-eslint/types/_ts3.4/dist/parser-options.d.ts +3 -3
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +27 -3
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js +3 -0
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js.map +1 -1
- package/node_modules/@typescript-eslint/types/dist/lib.d.ts +1 -1
- package/node_modules/@typescript-eslint/types/dist/lib.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts +3 -3
- package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/types/package.json +3 -3
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/create-program/shared.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parseSettings/index.d.ts +2 -2
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parser-options.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/parser.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/simple-traverse.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/estree-to-ts-node-types.d.ts +4 -1
- package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/ts-estree/ts-nodes.d.ts +4 -2
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +22 -3
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js +9 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/index.d.ts +2 -2
- package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/index.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parser.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parser.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts +4 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts +4 -2
- package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/package.json +6 -6
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.d.ts.map +1 -1
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js +63 -48
- package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js.map +1 -1
- package/node_modules/@typescript-eslint/visitor-keys/package.json +4 -4
- package/package.json +65 -33
- package/src/.spruce/events/events.contract.ts +24 -0
- package/src/.spruce/events/heartwood/getActiveTheme.v2021_02_11.contract.ts +54 -0
- package/src/.spruce/events/heartwood/registerDashboardCards.v2021_02_11.contract.ts +79 -0
- package/src/.spruce/events/heartwood/upsertTheme.v2021_02_11.contract.ts +48 -0
- package/src/.spruce/events/spruceCli/registerSkillViews.v2021_04_11.contract.ts +13 -0
- package/src/.spruce/schemas/schemas.types.ts +171 -52
- package/src/.spruce/schemas/spruceCli/v2020_07_22/actionResponse.schema.ts +58 -0
- package/src/.spruce/schemas/spruceCli/v2020_07_22/npmPackage.schema.ts +33 -0
- package/src/.spruce/settings.json +2 -1
- package/src/GlobalEmitter.ts +2 -7
- package/src/__tests__/behavioral/TestingAConversation.test.ts +20 -37
- package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +14 -2
- package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
- package/src/__tests__/behavioral/permissions/CreatingPermissions.test.ts +2 -2
- package/src/__tests__/behavioral/permissions/PermissionPlugin.test.ts +24 -0
- package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +204 -23
- package/src/__tests__/behavioral/permissions/PermissionWriter.test.ts +23 -0
- package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +125 -8
- package/src/__tests__/behavioral/permissions/support/AbstractPermissionsTest.ts +38 -0
- package/src/__tests__/behavioral/permissions/support/generateShortAlphaId.ts +5 -0
- package/src/__tests__/behavioral/permissions/support/renderPermissionTestFile.ts +27 -0
- package/src/__tests__/behavioral/permissions/support/sortPermissionContracts.ts +3 -0
- package/src/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.ts +12 -12
- package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -2
- package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +3 -0
- package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +3 -2
- package/src/__tests__/behavioral/upgrading/UpgradingASkill4.test.ts +1 -1
- package/src/__tests__/implementation/ActionExecuter2.test.ts +13 -6
- package/src/__tests__/implementation/GlobalEmitter.test.ts +22 -1
- package/src/__tests__/implementation/SkillStore.test.ts +1 -2
- package/src/__tests__/support/EventFaker.ts +23 -0
- package/src/features/AbstractAction.ts +2 -2
- package/src/features/AbstractFeature.ts +8 -8
- package/src/features/ActionExecuter.ts +4 -5
- package/src/features/ActionFactory.ts +44 -20
- package/src/features/ActionQuestionAsker.ts +17 -17
- package/src/features/conversation/ConversationFeature.ts +1 -1
- package/src/features/dependencies/DependencyFeature.ts +1 -1
- package/src/features/deploy/actions/HerokuAction.ts +2 -2
- package/src/features/error/ErrorFeature.ts +4 -4
- package/src/features/event/EventFeature.ts +15 -14
- package/src/features/event/actions/CreateAction.ts +1 -1
- package/src/features/event/actions/ListenAction.ts +1 -1
- package/src/features/event/stores/EventStore.ts +37 -37
- package/src/features/eventContract/EventContractFeature.ts +6 -1
- package/src/features/eventContract/actions/PullAction.ts +7 -3
- package/src/features/features.types.ts +4 -41
- package/src/features/log/LogFeature.ts +1 -1
- package/src/features/node/NodeFeature.ts +1 -1
- package/src/features/organization/actions/InstallAction.ts +1 -1
- package/src/features/permission/PermissionFeature.ts +66 -11
- package/src/features/permission/actions/CreateAction.ts +2 -0
- package/src/features/permission/actions/SyncAction.ts +22 -3
- package/src/features/permission/stores/PermissionStore.ts +44 -3
- package/src/features/permission/writers/PermissionWriter.ts +64 -3
- package/src/features/person/PersonFeature.ts +1 -1
- package/src/features/sandbox/SandboxFeature.ts +1 -3
- package/src/features/schema/SchemaFeature.ts +14 -14
- package/src/features/schema/writers/SchemaWriter.ts +14 -15
- package/src/features/skill/SkillFeature.ts +18 -18
- package/src/features/skill/actions/RebuildAction.ts +1 -1
- package/src/features/skill/actions/RegisterAction.ts +1 -1
- package/src/features/skill/stores/SkillStore.ts +1 -2
- package/src/features/store/StoreFeature.ts +1 -1
- package/src/features/store/actions/SyncAction.ts +1 -1
- package/src/features/test/TestFeature.ts +1 -1
- package/src/features/view/ViewFeature.ts +1 -1
- package/src/schemas/v2020_07_22/actionResponse.builder.ts +62 -0
- package/src/schemas/v2020_07_22/generatedFile.builder.ts +44 -0
- package/src/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.ts +3 -46
- package/src/services/CommandService.ts +5 -5
- package/src/services/PkgService.ts +4 -0
- package/src/tests/AbstractCliTest.ts +31 -13
- package/src/tests/buildTestCache.ts +7 -0
- package/src/tests/fixtures/FeatureFixture.ts +2 -0
- package/src/tests/utilities/test.utility.ts +13 -0
- package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.d.ts +0 -8
- package/build/__tests__/behavioral/permissions/AbstractPermissionsTest.js.map +0 -1
- package/src/__tests__/behavioral/permissions/AbstractPermissionsTest.ts +0 -20
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -39,7 +40,7 @@ var PermissionStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
39
40
|
key: "loadLocalPermissions",
|
|
40
41
|
value: function () {
|
|
41
42
|
var _loadLocalPermissions = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
42
|
-
var matches,
|
|
43
|
+
var matches, namespace, imported, _iterator, _step, file, path, contract;
|
|
43
44
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
44
45
|
while (1) {
|
|
45
46
|
switch (_context.prev = _context.next) {
|
|
@@ -50,51 +51,119 @@ var PermissionStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
50
51
|
});
|
|
51
52
|
case 2:
|
|
52
53
|
matches = _context.sent;
|
|
53
|
-
|
|
54
|
+
namespace = this.Service('pkg').getSkillNamespace();
|
|
55
|
+
imported = [];
|
|
54
56
|
_iterator = _createForOfIteratorHelper(matches);
|
|
55
|
-
_context.prev =
|
|
57
|
+
_context.prev = 6;
|
|
56
58
|
_iterator.s();
|
|
57
|
-
case
|
|
59
|
+
case 8:
|
|
58
60
|
if ((_step = _iterator.n()).done) {
|
|
59
|
-
_context.next =
|
|
61
|
+
_context.next = 17;
|
|
60
62
|
break;
|
|
61
63
|
}
|
|
62
64
|
file = _step.value;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
path = _spruceSkillUtils.diskUtil.resolvePath(this.cwd, file);
|
|
66
|
+
_context.next = 13;
|
|
67
|
+
return this.Service('import').importDefault(path);
|
|
68
|
+
case 13:
|
|
66
69
|
contract = _context.sent;
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
imported.push({
|
|
71
|
+
id: "".concat(namespace, ".").concat(contract.id),
|
|
72
|
+
permissions: contract.permissions.map(function (p) {
|
|
73
|
+
return p.id;
|
|
74
|
+
}),
|
|
75
|
+
path: path
|
|
69
76
|
});
|
|
70
|
-
case 13:
|
|
71
|
-
_context.next = 7;
|
|
72
|
-
break;
|
|
73
77
|
case 15:
|
|
74
|
-
_context.next =
|
|
78
|
+
_context.next = 8;
|
|
75
79
|
break;
|
|
76
80
|
case 17:
|
|
77
|
-
_context.
|
|
78
|
-
|
|
81
|
+
_context.next = 22;
|
|
82
|
+
break;
|
|
83
|
+
case 19:
|
|
84
|
+
_context.prev = 19;
|
|
85
|
+
_context.t0 = _context["catch"](6);
|
|
79
86
|
_iterator.e(_context.t0);
|
|
80
|
-
case
|
|
81
|
-
_context.prev =
|
|
87
|
+
case 22:
|
|
88
|
+
_context.prev = 22;
|
|
82
89
|
_iterator.f();
|
|
83
|
-
return _context.finish(
|
|
84
|
-
case
|
|
85
|
-
return _context.abrupt("return",
|
|
86
|
-
case
|
|
90
|
+
return _context.finish(22);
|
|
91
|
+
case 25:
|
|
92
|
+
return _context.abrupt("return", imported);
|
|
93
|
+
case 26:
|
|
87
94
|
case "end":
|
|
88
95
|
return _context.stop();
|
|
89
96
|
}
|
|
90
97
|
}
|
|
91
|
-
}, _callee, this, [[
|
|
98
|
+
}, _callee, this, [[6, 19, 22, 25]]);
|
|
92
99
|
}));
|
|
93
100
|
function loadLocalPermissions() {
|
|
94
101
|
return _loadLocalPermissions.apply(this, arguments);
|
|
95
102
|
}
|
|
96
103
|
return loadLocalPermissions;
|
|
97
104
|
}()
|
|
105
|
+
}, {
|
|
106
|
+
key: "fetchContracts",
|
|
107
|
+
value: function () {
|
|
108
|
+
var _fetchContracts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
109
|
+
var client, deps, local, map, _yield$client$emitAnd, _yield$client$emitAnd2, permissionContracts, _iterator2, _step2, result;
|
|
110
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
111
|
+
while (1) {
|
|
112
|
+
switch (_context2.prev = _context2.next) {
|
|
113
|
+
case 0:
|
|
114
|
+
_context2.next = 2;
|
|
115
|
+
return this.connectToApi({
|
|
116
|
+
shouldAuthAsCurrentSkill: true
|
|
117
|
+
});
|
|
118
|
+
case 2:
|
|
119
|
+
client = _context2.sent;
|
|
120
|
+
deps = this.Service('dependency').get();
|
|
121
|
+
_context2.next = 6;
|
|
122
|
+
return this.loadLocalPermissions();
|
|
123
|
+
case 6:
|
|
124
|
+
local = _context2.sent;
|
|
125
|
+
map = local.reduce(function (map, local) {
|
|
126
|
+
map[local.id] = local.permissions;
|
|
127
|
+
return map;
|
|
128
|
+
}, {});
|
|
129
|
+
_context2.next = 10;
|
|
130
|
+
return client.emitAndFlattenResponses('list-permission-contracts::v2020_12_25', {
|
|
131
|
+
target: {
|
|
132
|
+
namespaces: deps.map(function (d) {
|
|
133
|
+
return d.namespace;
|
|
134
|
+
})
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
case 10:
|
|
138
|
+
_yield$client$emitAnd = _context2.sent;
|
|
139
|
+
_yield$client$emitAnd2 = (0, _slicedToArray2["default"])(_yield$client$emitAnd, 1);
|
|
140
|
+
permissionContracts = _yield$client$emitAnd2[0].permissionContracts;
|
|
141
|
+
_iterator2 = _createForOfIteratorHelper(permissionContracts);
|
|
142
|
+
try {
|
|
143
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
144
|
+
result = _step2.value;
|
|
145
|
+
map[result.contract.id] = result.contract.permissions.map(function (p) {
|
|
146
|
+
return p.id;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
} catch (err) {
|
|
150
|
+
_iterator2.e(err);
|
|
151
|
+
} finally {
|
|
152
|
+
_iterator2.f();
|
|
153
|
+
}
|
|
154
|
+
return _context2.abrupt("return", map);
|
|
155
|
+
case 16:
|
|
156
|
+
case "end":
|
|
157
|
+
return _context2.stop();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}, _callee2, this);
|
|
161
|
+
}));
|
|
162
|
+
function fetchContracts() {
|
|
163
|
+
return _fetchContracts.apply(this, arguments);
|
|
164
|
+
}
|
|
165
|
+
return fetchContracts;
|
|
166
|
+
}()
|
|
98
167
|
}]);
|
|
99
168
|
return PermissionStore;
|
|
100
169
|
}(_AbstractStore2["default"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionStore.js","names":["PermissionStore","globby","cwd","matches","
|
|
1
|
+
{"version":3,"file":"PermissionStore.js","names":["PermissionStore","globby","cwd","matches","namespace","Service","getSkillNamespace","imported","file","path","diskUtil","resolvePath","importDefault","contract","push","id","permissions","map","p","connectToApi","shouldAuthAsCurrentSkill","client","deps","get","loadLocalPermissions","local","reduce","emitAndFlattenResponses","target","namespaces","d","permissionContracts","result","AbstractStore"],"sources":["../../../../src/features/permission/stores/PermissionStore.ts"],"sourcesContent":["import {\n\tPermissionContract,\n\tPermissionContractMap,\n} from '@sprucelabs/mercury-types'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport AbstractStore from '../../../stores/AbstractStore'\n\nexport default class PermissionStore extends AbstractStore {\n\tpublic name = 'permission'\n\n\tpublic async loadLocalPermissions() {\n\t\tconst matches = await globby('**/*.permissions.ts', {\n\t\t\tcwd: this.cwd,\n\t\t})\n\n\t\tconst namespace = this.Service('pkg').getSkillNamespace()\n\t\tconst imported: ImportedPermission[] = []\n\n\t\tfor (const file of matches) {\n\t\t\tconst path = diskUtil.resolvePath(this.cwd, file)\n\t\t\tconst contract = (await this.Service('import').importDefault(\n\t\t\t\tpath\n\t\t\t)) as PermissionContract\n\n\t\t\timported.push({\n\t\t\t\tid: `${namespace}.${contract.id}`,\n\t\t\t\tpermissions: contract.permissions.map((p) => p.id),\n\t\t\t\tpath,\n\t\t\t})\n\t\t}\n\n\t\treturn imported\n\t}\n\n\tpublic async fetchContracts() {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\t\tconst deps = this.Service('dependency').get()\n\n\t\tconst local = await this.loadLocalPermissions()\n\t\tconst map: PermissionContractMap = local.reduce<PermissionContractMap>(\n\t\t\t(map, local) => {\n\t\t\t\tmap[local.id] = local.permissions\n\t\t\t\treturn map\n\t\t\t},\n\t\t\t{}\n\t\t)\n\n\t\tconst [{ permissionContracts }] = await client.emitAndFlattenResponses(\n\t\t\t'list-permission-contracts::v2020_12_25',\n\t\t\t{\n\t\t\t\ttarget: {\n\t\t\t\t\tnamespaces: deps.map((d) => d.namespace),\n\t\t\t\t},\n\t\t\t}\n\t\t)\n\n\t\tfor (const result of permissionContracts) {\n\t\t\tmap[result.contract.id] = result.contract.permissions.map((p) => p.id)\n\t\t}\n\n\t\treturn map\n\t}\n}\n\nexport interface ImportedPermission {\n\tid: string\n\tpermissions: string[]\n\tpath: string\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
import { PermissionContractMap } from '@sprucelabs/mercury-types';
|
|
1
2
|
import AbstractWriter from '../../../writers/AbstractWriter';
|
|
3
|
+
import { ImportedPermission } from '../stores/PermissionStore';
|
|
2
4
|
export default class PermissionWriter extends AbstractWriter {
|
|
3
|
-
writeTypesFile(destinationDir: string): Promise<import("../../../writers/AbstractWriter").WriteResults>;
|
|
5
|
+
writeTypesFile(destinationDir: string, map: PermissionContractMap): Promise<import("../../../writers/AbstractWriter").WriteResults>;
|
|
6
|
+
writeCombinedFile(destinationDir: string, options: {
|
|
7
|
+
contracts: ImportedPermission[];
|
|
8
|
+
}): Promise<import("../../../writers/AbstractWriter").WriteResults>;
|
|
4
9
|
writeContract(destinationDir: string, options: {
|
|
5
10
|
nameReadable: string;
|
|
6
11
|
nameKebab: string;
|
|
7
12
|
nameCamel: string;
|
|
8
13
|
description?: string;
|
|
9
14
|
}): Promise<import("../../../writers/AbstractWriter").WriteResults>;
|
|
15
|
+
writePlugin(cwd: string): Promise<import("../../../writers/AbstractWriter").WriteResults>;
|
|
10
16
|
}
|
|
@@ -26,38 +26,79 @@ var PermissionWriter = /*#__PURE__*/function (_AbstractWriter) {
|
|
|
26
26
|
(0, _createClass2["default"])(PermissionWriter, [{
|
|
27
27
|
key: "writeTypesFile",
|
|
28
28
|
value: function () {
|
|
29
|
-
var _writeTypesFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(destinationDir) {
|
|
30
|
-
var destination, files;
|
|
29
|
+
var _writeTypesFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(destinationDir, map) {
|
|
30
|
+
var destination, contents, files;
|
|
31
31
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
32
32
|
while (1) {
|
|
33
33
|
switch (_context.prev = _context.next) {
|
|
34
34
|
case 0:
|
|
35
35
|
destination = _spruceSkillUtils.diskUtil.resolveHashSprucePath(destinationDir, 'permissions', 'permissions.types.ts');
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
contents = this.templates.permissionTypes({
|
|
37
|
+
contracts: map
|
|
38
|
+
});
|
|
39
|
+
_context.next = 4;
|
|
40
|
+
return this.writeFileIfChangedMixinResults(destination, contents, 'Types file for any permission contracts you created or depend on.');
|
|
41
|
+
case 4:
|
|
39
42
|
files = _context.sent;
|
|
40
43
|
return _context.abrupt("return", files);
|
|
41
|
-
case
|
|
44
|
+
case 6:
|
|
42
45
|
case "end":
|
|
43
46
|
return _context.stop();
|
|
44
47
|
}
|
|
45
48
|
}
|
|
46
49
|
}, _callee, this);
|
|
47
50
|
}));
|
|
48
|
-
function writeTypesFile(_x) {
|
|
51
|
+
function writeTypesFile(_x, _x2) {
|
|
49
52
|
return _writeTypesFile.apply(this, arguments);
|
|
50
53
|
}
|
|
51
54
|
return writeTypesFile;
|
|
52
55
|
}()
|
|
53
56
|
}, {
|
|
54
|
-
key: "
|
|
57
|
+
key: "writeCombinedFile",
|
|
55
58
|
value: function () {
|
|
56
|
-
var
|
|
57
|
-
var
|
|
59
|
+
var _writeCombinedFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(destinationDir, options) {
|
|
60
|
+
var contracts, destinationPath, destinationFile, local, content, files;
|
|
58
61
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
59
62
|
while (1) {
|
|
60
63
|
switch (_context2.prev = _context2.next) {
|
|
64
|
+
case 0:
|
|
65
|
+
contracts = options.contracts;
|
|
66
|
+
destinationPath = _spruceSkillUtils.diskUtil.resolveHashSprucePath(destinationDir, 'permissions');
|
|
67
|
+
destinationFile = _spruceSkillUtils.diskUtil.resolvePath(destinationPath, 'permissions.ts');
|
|
68
|
+
local = contracts.map(function (c) {
|
|
69
|
+
return {
|
|
70
|
+
nameCamel: _spruceSkillUtils.namesUtil.toCamel(c.id),
|
|
71
|
+
path: _spruceSkillUtils.diskUtil.resolveRelativePath(destinationPath, c.path.replace('.ts', ''))
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
content = this.templates.permissions({
|
|
75
|
+
contracts: local
|
|
76
|
+
});
|
|
77
|
+
_context2.next = 7;
|
|
78
|
+
return this.writeFileIfChangedMixinResults(destinationFile, content, 'Import of all permission contracts for loading on boot!');
|
|
79
|
+
case 7:
|
|
80
|
+
files = _context2.sent;
|
|
81
|
+
return _context2.abrupt("return", files);
|
|
82
|
+
case 9:
|
|
83
|
+
case "end":
|
|
84
|
+
return _context2.stop();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}, _callee2, this);
|
|
88
|
+
}));
|
|
89
|
+
function writeCombinedFile(_x3, _x4) {
|
|
90
|
+
return _writeCombinedFile.apply(this, arguments);
|
|
91
|
+
}
|
|
92
|
+
return writeCombinedFile;
|
|
93
|
+
}()
|
|
94
|
+
}, {
|
|
95
|
+
key: "writeContract",
|
|
96
|
+
value: function () {
|
|
97
|
+
var _writeContract = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(destinationDir, options) {
|
|
98
|
+
var nameReadable, nameKebab, nameCamel, description, destination, content, files;
|
|
99
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
100
|
+
while (1) {
|
|
101
|
+
switch (_context3.prev = _context3.next) {
|
|
61
102
|
case 0:
|
|
62
103
|
nameReadable = options.nameReadable, nameKebab = options.nameKebab, nameCamel = options.nameCamel, description = options.description;
|
|
63
104
|
destination = _spruceSkillUtils.diskUtil.resolvePath(destinationDir, "".concat(nameKebab, ".permissions.ts"));
|
|
@@ -67,26 +108,34 @@ var PermissionWriter = /*#__PURE__*/function (_AbstractWriter) {
|
|
|
67
108
|
description: description,
|
|
68
109
|
nameReadable: nameReadable
|
|
69
110
|
});
|
|
70
|
-
|
|
111
|
+
_context3.next = 5;
|
|
71
112
|
return this.writeFileIfChangedMixinResults(destination, content, 'Your brand new permissions contract!');
|
|
72
113
|
case 5:
|
|
73
|
-
files =
|
|
74
|
-
|
|
114
|
+
files = _context3.sent;
|
|
115
|
+
_context3.next = 8;
|
|
75
116
|
return this.lint(destination);
|
|
76
117
|
case 8:
|
|
77
|
-
return
|
|
118
|
+
return _context3.abrupt("return", files);
|
|
78
119
|
case 9:
|
|
79
120
|
case "end":
|
|
80
|
-
return
|
|
121
|
+
return _context3.stop();
|
|
81
122
|
}
|
|
82
123
|
}
|
|
83
|
-
},
|
|
124
|
+
}, _callee3, this);
|
|
84
125
|
}));
|
|
85
|
-
function writeContract(
|
|
126
|
+
function writeContract(_x5, _x6) {
|
|
86
127
|
return _writeContract.apply(this, arguments);
|
|
87
128
|
}
|
|
88
129
|
return writeContract;
|
|
89
130
|
}()
|
|
131
|
+
}, {
|
|
132
|
+
key: "writePlugin",
|
|
133
|
+
value: function writePlugin(cwd) {
|
|
134
|
+
var destination = _spruceSkillUtils.diskUtil.resolveHashSprucePath(cwd, 'features', 'permission.plugin.ts');
|
|
135
|
+
var pluginContents = this.templates.permissionPlugin();
|
|
136
|
+
var results = this.writeFileIfChangedMixinResults(destination, pluginContents, 'Enable permission support in your skill.');
|
|
137
|
+
return results;
|
|
138
|
+
}
|
|
90
139
|
}]);
|
|
91
140
|
return PermissionWriter;
|
|
92
141
|
}(_AbstractWriter2["default"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionWriter.js","names":["PermissionWriter","destinationDir","destination","diskUtil","resolveHashSprucePath","writeFileIfChangedMixinResults","files","options","
|
|
1
|
+
{"version":3,"file":"PermissionWriter.js","names":["PermissionWriter","destinationDir","map","destination","diskUtil","resolveHashSprucePath","contents","templates","permissionTypes","contracts","writeFileIfChangedMixinResults","files","options","destinationPath","destinationFile","resolvePath","local","c","nameCamel","namesUtil","toCamel","id","path","resolveRelativePath","replace","content","permissions","nameReadable","nameKebab","description","permissionContractBuilder","lint","cwd","pluginContents","permissionPlugin","results","AbstractWriter"],"sources":["../../../../src/features/permission/writers/PermissionWriter.ts"],"sourcesContent":["import { PermissionContractMap } from '@sprucelabs/mercury-types'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractWriter from '../../../writers/AbstractWriter'\nimport { ImportedPermission } from '../stores/PermissionStore'\n\nexport default class PermissionWriter extends AbstractWriter {\n\tpublic async writeTypesFile(\n\t\tdestinationDir: string,\n\t\tmap: PermissionContractMap\n\t) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tdestinationDir,\n\t\t\t'permissions',\n\t\t\t'permissions.types.ts'\n\t\t)\n\n\t\tconst contents = this.templates.permissionTypes({ contracts: map })\n\n\t\tconst files = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'Types file for any permission contracts you created or depend on.'\n\t\t)\n\n\t\treturn files\n\t}\n\n\tpublic async writeCombinedFile(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tcontracts: ImportedPermission[]\n\t\t}\n\t) {\n\t\tconst { contracts } = options\n\n\t\tconst destinationPath = diskUtil.resolveHashSprucePath(\n\t\t\tdestinationDir,\n\t\t\t'permissions'\n\t\t)\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationPath,\n\t\t\t'permissions.ts'\n\t\t)\n\n\t\tconst local = contracts.map((c) => ({\n\t\t\tnameCamel: namesUtil.toCamel(c.id),\n\t\t\tpath: diskUtil.resolveRelativePath(\n\t\t\t\tdestinationPath,\n\t\t\t\tc.path.replace('.ts', '')\n\t\t\t),\n\t\t}))\n\n\t\tconst content = this.templates.permissions({ contracts: local })\n\n\t\tconst files = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\tcontent,\n\t\t\t'Import of all permission contracts for loading on boot!'\n\t\t)\n\n\t\treturn files\n\t}\n\n\tpublic async writeContract(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tnameReadable: string\n\t\t\tnameKebab: string\n\t\t\tnameCamel: string\n\t\t\tdescription?: string\n\t\t}\n\t) {\n\t\tconst { nameReadable, nameKebab, nameCamel, description } = options\n\n\t\tconst destination = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\t`${nameKebab}.permissions.ts`\n\t\t)\n\n\t\tconst content = this.templates.permissionContractBuilder({\n\t\t\tnameCamel,\n\t\t\tnameKebab,\n\t\t\tdescription,\n\t\t\tnameReadable,\n\t\t})\n\n\t\tconst files = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontent,\n\t\t\t'Your brand new permissions contract!'\n\t\t)\n\n\t\tawait this.lint(destination)\n\n\t\treturn files\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'permission.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.permissionPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Enable permission support in your skill.'\n\t\t)\n\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ var PersonFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
36
36
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "packageDependencies", []);
|
|
37
37
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "actionsDir", _spruceSkillUtils.diskUtil.resolvePath(__dirname, 'actions'));
|
|
38
38
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "isInstalled", function () {
|
|
39
|
-
return _this.
|
|
39
|
+
return _this.features.isInstalled('skill');
|
|
40
40
|
});
|
|
41
41
|
return _this;
|
|
42
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonFeature.js","names":["PersonFeature","code","isRequired","diskUtil","resolvePath","__dirname","
|
|
1
|
+
{"version":3,"file":"PersonFeature.js","names":["PersonFeature","code","isRequired","diskUtil","resolvePath","__dirname","features","isInstalled","AbstractFeature"],"sources":["../../../src/features/person/PersonFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\nexport default class PersonFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'person'\n\tpublic nameReadable = 'Person'\n\tpublic description = 'Log in, log out, etc.'\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 actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic isInstalled = () => {\n\t\treturn this.features.isInstalled('skill')\n\t}\n}\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tperson: PersonFeature\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAAuE;AAAA;AAAA,IAGlDA,aAAa;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,yFACN,QAAQ;IAAA,iGACb,QAAQ;IAAA,gGACT,uBAAuB;IAAA,iGACD,CAC1C;MACCC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA,+FAEXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,gGAEzC,YAAM;MAC1B,OAAO,MAAKC,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC;IAC1C,CAAC;IAAA;EAAA;EAAA;AAAA,EAhByCC,4BAAe;AAAA"}
|
|
@@ -43,7 +43,7 @@ var SandboxFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
43
43
|
switch (_context.prev = _context.next) {
|
|
44
44
|
case 0:
|
|
45
45
|
_context.next = 2;
|
|
46
|
-
return _this.
|
|
46
|
+
return _this.features.isInstalled('sandbox');
|
|
47
47
|
case 2:
|
|
48
48
|
isSkillInstalled = _context.sent;
|
|
49
49
|
if (!(isSkillInstalled && payload.featureCode === 'node' && payload.actionCode === 'upgrade')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxFeature.js","names":["SandboxFeature","options","code","isRequired","diskUtil","resolvePath","__dirname","emitter","on","payload","
|
|
1
|
+
{"version":3,"file":"SandboxFeature.js","names":["SandboxFeature","options","code","isRequired","diskUtil","resolvePath","__dirname","emitter","on","payload","features","isInstalled","isSkillInstalled","featureCode","actionCode","uiUtil","renderMasthead","ui","headline","Action","execute","AbstractFeature"],"sources":["../../../src/features/sandbox/SandboxFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport uiUtil from '../../utilities/ui.utility'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tsandbox: SandboxFeature\n\t}\n}\n\nexport default class SandboxFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'sandbox'\n\tpublic nameReadable = 'Sandbox'\n\tpublic description =\n\t\t'For getting your skill up-and-running on sandbox.mercury.spruce.ai.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'event',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.will-execute', async (payload) => {\n\t\t\tconst isSkillInstalled = await this.features.isInstalled('sandbox')\n\t\t\tif (\n\t\t\t\tisSkillInstalled &&\n\t\t\t\tpayload.featureCode === 'node' &&\n\t\t\t\tpayload.actionCode === 'upgrade'\n\t\t\t) {\n\t\t\t\tuiUtil.renderMasthead({\n\t\t\t\t\tui: this.ui,\n\t\t\t\t\theadline: 'Updating sandbox support...',\n\t\t\t\t})\n\n\t\t\t\treturn this.Action('sandbox', 'setup').execute({})\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAuE;AAAA;AAAA,IASlDA,cAAc;EAAA;EAAA;EAclC,wBAAmBC,OAAsB,EAAE;IAAA;IAAA;IAC1C,0BAAMA,OAAO;IAAC,yFAdY,SAAS;IAAA,iGACd,SAAS;IAAA,gGAE9B,qEAAqE;IAAA,iGAC3B,CAC1C;MACCC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA,+FACXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAK7D,KAAK,MAAKC,OAAO,CAACC,EAAE,CAAC,sBAAsB;MAAA,yFAAE,iBAAOC,OAAO;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAC3B,MAAKC,QAAQ,CAACC,WAAW,CAAC,SAAS,CAAC;cAAA;gBAA7DC,gBAAgB;gBAAA,MAErBA,gBAAgB,IAChBH,OAAO,CAACI,WAAW,KAAK,MAAM,IAC9BJ,OAAO,CAACK,UAAU,KAAK,SAAS;kBAAA;kBAAA;gBAAA;gBAEhCC,cAAM,CAACC,cAAc,CAAC;kBACrBC,EAAE,EAAE,MAAKA,EAAE;kBACXC,QAAQ,EAAE;gBACX,CAAC,CAAC;gBAAA,iCAEK,MAAKC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAA,iCAG5C,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACT;MAAA;QAAA;MAAA;IAAA,IAAC;IAAA;EACH;EAAC;AAAA,EAlC0CC,4BAAe;AAAA"}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import { NpmPackage } from '../../types/cli.types';
|
|
2
2
|
import AbstractFeature, { FeatureDependency, FeatureOptions, InstallResults } from '../AbstractFeature';
|
|
3
3
|
import { FeatureCode } from '../features.types';
|
|
4
|
-
declare module '../../features/features.types' {
|
|
5
|
-
interface FeatureMap {
|
|
6
|
-
schema: SchemaFeature;
|
|
7
|
-
}
|
|
8
|
-
interface FeatureOptionsMap {
|
|
9
|
-
schema: undefined;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
4
|
export default class SchemaFeature extends AbstractFeature {
|
|
13
5
|
nameReadable: string;
|
|
14
6
|
description: string;
|
|
@@ -22,3 +14,11 @@ export default class SchemaFeature extends AbstractFeature {
|
|
|
22
14
|
afterPackageInstall(): Promise<InstallResults>;
|
|
23
15
|
private writePlugin;
|
|
24
16
|
}
|
|
17
|
+
declare module '../../features/features.types' {
|
|
18
|
+
interface FeatureMap {
|
|
19
|
+
schema: SchemaFeature;
|
|
20
|
+
}
|
|
21
|
+
interface FeatureOptionsMap {
|
|
22
|
+
schema: undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -60,11 +60,11 @@ var SchemaFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
60
60
|
switch (_context.prev = _context.next) {
|
|
61
61
|
case 0:
|
|
62
62
|
_context.next = 2;
|
|
63
|
-
return this.
|
|
63
|
+
return this.features.isInstalled('schema');
|
|
64
64
|
case 2:
|
|
65
65
|
isInstalled = _context.sent;
|
|
66
66
|
_context.next = 5;
|
|
67
|
-
return this.
|
|
67
|
+
return this.features.isInstalled('skill');
|
|
68
68
|
case 5:
|
|
69
69
|
isSkillInstalled = _context.sent;
|
|
70
70
|
if (!(payload.featureCode === 'node' && payload.actionCode === 'upgrade' && isInstalled && isSkillInstalled)) {
|
|
@@ -102,7 +102,7 @@ var SchemaFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
102
102
|
switch (_context2.prev = _context2.next) {
|
|
103
103
|
case 0:
|
|
104
104
|
_context2.next = 2;
|
|
105
|
-
return this.
|
|
105
|
+
return this.features.isInstalled('schema');
|
|
106
106
|
case 2:
|
|
107
107
|
isInstalled = _context2.sent;
|
|
108
108
|
if (!(payload.featureCode === 'node' && payload.actionCode === 'upgrade' && isInstalled)) {
|
|
@@ -146,7 +146,7 @@ var SchemaFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
146
146
|
switch (_context3.prev = _context3.next) {
|
|
147
147
|
case 0:
|
|
148
148
|
_context3.next = 2;
|
|
149
|
-
return this.
|
|
149
|
+
return this.features.isInstalled('skill');
|
|
150
150
|
case 2:
|
|
151
151
|
isSkillInstalled = _context3.sent;
|
|
152
152
|
if (isSkillInstalled) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaFeature.js","names":["SchemaFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","handleWillExecute","bind","handleDidExecute","payload","
|
|
1
|
+
{"version":3,"file":"SchemaFeature.js","names":["SchemaFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","handleWillExecute","bind","handleDidExecute","payload","features","isInstalled","isSkillInstalled","featureCode","actionCode","writePlugin","files","Store","hasLocalSchemas","Action","execute","results","Writer","cwd","AbstractFeature"],"sources":["../../../src/features/schema/SchemaFeature.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\nexport default class SchemaFeature extends AbstractFeature {\n\tpublic nameReadable = 'Schema'\n\tpublic description = 'Define, validate, and normalize everything.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'skill', isRequired: false },\n\t\t{ code: 'node', isRequired: true },\n\t]\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/schema@latest',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-core-schemas@latest',\n\t\t},\n\t\t{ name: '@sprucelabs/resolve-path-aliases@latest', isDev: true },\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-skill-utils',\n\t\t},\n\t]\n\n\tpublic code: FeatureCode = 'schema'\n\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\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\tprivate async handleWillExecute(payload: {\n\t\tactionCode: string\n\t\tfeatureCode: string\n\t}) {\n\t\tconst isInstalled = await this.features.isInstalled('schema')\n\t\tconst isSkillInstalled = await this.features.isInstalled('skill')\n\n\t\tif (\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade' &&\n\t\t\tisInstalled &&\n\t\t\tisSkillInstalled\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\tprivate async handleDidExecute(payload: {\n\t\tactionCode: string\n\t\tfeatureCode: string\n\t}) {\n\t\tconst isInstalled = await this.features.isInstalled('schema')\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 hasLocalSchemas = await this.Store('schema').hasLocalSchemas()\n\t\t\tif (hasLocalSchemas) {\n\t\t\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\treturn {}\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 writePlugin() {\n\t\treturn this.Writer('schema').writePlugin(this.cwd)\n\t}\n}\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tschema: SchemaFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tschema: undefined\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,18 +1,6 @@
|
|
|
1
1
|
import { FieldTemplateItem, SchemaTemplateItem } from '@sprucelabs/schema';
|
|
2
2
|
import { SchemaBuilderTemplateItem, ValueTypes } from '@sprucelabs/spruce-templates';
|
|
3
3
|
import AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter';
|
|
4
|
-
interface WriteFieldTypesOptions {
|
|
5
|
-
fieldTemplateItems: FieldTemplateItem[];
|
|
6
|
-
}
|
|
7
|
-
export interface GenerateSchemaTypesOptions {
|
|
8
|
-
fieldTemplateItems: FieldTemplateItem[];
|
|
9
|
-
schemaTemplateItems: SchemaTemplateItem[];
|
|
10
|
-
valueTypes: ValueTypes;
|
|
11
|
-
globalSchemaNamespace?: string;
|
|
12
|
-
typesTemplate?: string;
|
|
13
|
-
registerBuiltSchemas?: boolean;
|
|
14
|
-
shouldImportCoreSchemas: boolean;
|
|
15
|
-
}
|
|
16
4
|
export default class SchemaWriter extends AbstractWriter {
|
|
17
5
|
private readonly fieldTemplates;
|
|
18
6
|
writeBuilder(destinationDir: string, options: SchemaBuilderTemplateItem & {
|
|
@@ -37,4 +25,16 @@ export default class SchemaWriter extends AbstractWriter {
|
|
|
37
25
|
}): Promise<WriteResults>;
|
|
38
26
|
writePlugin(cwd: string): Promise<WriteResults>;
|
|
39
27
|
}
|
|
28
|
+
interface WriteFieldTypesOptions {
|
|
29
|
+
fieldTemplateItems: FieldTemplateItem[];
|
|
30
|
+
}
|
|
31
|
+
export interface GenerateSchemaTypesOptions {
|
|
32
|
+
fieldTemplateItems: FieldTemplateItem[];
|
|
33
|
+
schemaTemplateItems: SchemaTemplateItem[];
|
|
34
|
+
valueTypes: ValueTypes;
|
|
35
|
+
globalSchemaNamespace?: string;
|
|
36
|
+
typesTemplate?: string;
|
|
37
|
+
registerBuiltSchemas?: boolean;
|
|
38
|
+
shouldImportCoreSchemas: boolean;
|
|
39
|
+
}
|
|
40
40
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaWriter.js","names":["SchemaWriter","filename","templateFuncName","description","destinationDir","options","ui","startLoading","nameCamel","resolvedBuilderDestination","shouldEnableVersioning","pathUtil","resolve","versionUtil","resolveNewLatestPath","version","LATEST_HANDLEBARS","diskUtil","doesFileExist","SpruceError","code","schemaId","destination","builderContent","templates","schemaBuilder","writeFileIfChangedMixinResults","results","lint","fieldTemplateItems","fieldTemplates","fileAndFunc","resolvedDestination","path","join","contents","destinationDirOrFilename","schemaTemplateItems","valueTypes","typesTemplate","resolvedTypesDestination","resolveFilenameWithFallback","DEFAULT_SCHEMA_TYPES_FILENAME","localItems","filter","i","importFrom","length","schemaTypesContents","schemasTypes","globalSchemaNamespace","writeAllSchemas","dirname","typesFile","allSchemaResults","push","item","writeSchema","schemaResults","registerBuiltSchemas","schemaDiskUtil","resolvePath","schema","resolveRelativePath","undefined","replace","extname","schemaContents","schemaFile","shouldImportCoreSchemas","id","cwd","resolveHashSprucePath","pluginContents","schemaPlugin","AbstractWriter"],"sources":["../../../../src/features/schema/writers/SchemaWriter.ts"],"sourcesContent":["import path from 'path'\nimport pathUtil from 'path'\nimport { FieldTemplateItem, SchemaTemplateItem } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tLATEST_HANDLEBARS,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tSchemaBuilderTemplateItem,\n\tValueTypes,\n} from '@sprucelabs/spruce-templates'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter'\nimport schemaDiskUtil from '../utilities/schemaDisk.utility'\n\ninterface WriteFieldTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport interface GenerateSchemaTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n\tschemaTemplateItems: SchemaTemplateItem[]\n\tvalueTypes: ValueTypes\n\tglobalSchemaNamespace?: string\n\ttypesTemplate?: string\n\tregisterBuiltSchemas?: boolean\n\tshouldImportCoreSchemas: boolean\n}\n\nexport default class SchemaWriter extends AbstractWriter {\n\tprivate readonly fieldTemplates: {\n\t\tfilename: string\n\t\ttemplateFuncName: 'fieldsTypes' | 'fieldClassMap'\n\t\tdescription: string\n\t}[] = [\n\t\t{\n\t\t\tfilename: 'fields.types.ts',\n\t\t\ttemplateFuncName: 'fieldsTypes',\n\t\t\tdescription:\n\t\t\t\t'All the interfaces generated for every type of schema field (text, number, address, etc).',\n\t\t},\n\t\t{\n\t\t\tfilename: 'fieldClassMap.ts',\n\t\t\ttemplateFuncName: 'fieldClassMap',\n\t\t\tdescription:\n\t\t\t\t'An object that is injected into the FieldFactory and ensures 3rd party fields are integrated.',\n\t\t},\n\t]\n\n\tpublic async writeBuilder(\n\t\tdestinationDir: string,\n\t\toptions: SchemaBuilderTemplateItem & {\n\t\t\tshouldEnableVersioning?: boolean\n\t\t\tversion?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Writing builder...')\n\n\t\tconst filename = `${options.nameCamel}.builder.ts`\n\n\t\tconst resolvedBuilderDestination =\n\t\t\toptions.shouldEnableVersioning === false\n\t\t\t\t? pathUtil.resolve(destinationDir, filename)\n\t\t\t\t: versionUtil.resolveNewLatestPath(\n\t\t\t\t\t\tdestinationDir,\n\t\t\t\t\t\toptions.version ?? LATEST_HANDLEBARS,\n\t\t\t\t\t\tfilename\n\t\t\t\t )\n\n\t\tif (diskUtil.doesFileExist(resolvedBuilderDestination)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SCHEMA_EXISTS',\n\t\t\t\tschemaId: options.nameCamel,\n\t\t\t\tdestination: destinationDir,\n\t\t\t})\n\t\t}\n\n\t\tconst builderContent = this.templates.schemaBuilder(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedBuilderDestination,\n\t\t\tbuilderContent,\n\t\t\t'The source of truth for building your schemas and their types. Run spruce sync.errors when you change this.'\n\t\t)\n\n\t\tawait this.lint(resolvedBuilderDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeFieldTypes(\n\t\tdestinationDir: string,\n\t\toptions: WriteFieldTypesOptions\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Checking schema field types...')\n\n\t\tconst { fieldTemplateItems } = options\n\n\t\tlet results: WriteResults = []\n\n\t\tfor (const fileAndFunc of this.fieldTemplates) {\n\t\t\tconst { filename, templateFuncName, description } = fileAndFunc\n\n\t\t\tconst resolvedDestination = path.join(destinationDir, 'fields', filename)\n\n\t\t\tconst contents = this.templates[templateFuncName]({\n\t\t\t\tfieldTemplateItems,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedDestination,\n\t\t\t\tcontents,\n\t\t\t\tdescription,\n\t\t\t\tresults\n\t\t\t)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchemasAndTypes(\n\t\tdestinationDirOrFilename: string,\n\t\toptions: GenerateSchemaTypesOptions\n\t): Promise<WriteResults> {\n\t\tconst {\n\t\t\tfieldTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesTemplate,\n\t\t} = options\n\n\t\tconst resolvedTypesDestination = this.resolveFilenameWithFallback(\n\t\t\tdestinationDirOrFilename,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet results: WriteResults = []\n\t\tthis.ui.startLoading('Generating schema types...')\n\n\t\tconst localItems = schemaTemplateItems.filter((i) => !i.importFrom)\n\n\t\tif (localItems.length > 0) {\n\t\t\tconst schemaTypesContents = this.templates.schemasTypes({\n\t\t\t\tschemaTemplateItems: localItems,\n\t\t\t\tfieldTemplateItems,\n\t\t\t\tvalueTypes,\n\t\t\t\tglobalSchemaNamespace: options.globalSchemaNamespace,\n\t\t\t\ttypesTemplate,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedTypesDestination,\n\t\t\t\tschemaTypesContents,\n\t\t\t\t'Namespace for accessing all your schemas. Type `SpruceSchemas` in your IDE to get started. ⚡️'\n\t\t\t)\n\n\t\t\tawait this.lint(resolvedTypesDestination)\n\t\t}\n\n\t\tthis.ui.startLoading(\n\t\t\t`Checking ${schemaTemplateItems.length} schemas for changes...`\n\t\t)\n\n\t\tconst allSchemaResults = await this.writeAllSchemas(\n\t\t\tpathUtil.dirname(resolvedTypesDestination),\n\t\t\t{\n\t\t\t\t...options,\n\t\t\t\ttypesFile: resolvedTypesDestination,\n\t\t\t}\n\t\t)\n\n\t\tresults.push(...allSchemaResults)\n\n\t\treturn results\n\t}\n\n\tprivate async writeAllSchemas(\n\t\tdestinationDir: string,\n\t\toptions: GenerateSchemaTypesOptions & { typesFile?: string }\n\t): Promise<WriteResults> {\n\t\tconst results: WriteResults = []\n\n\t\tfor (const item of options.schemaTemplateItems) {\n\t\t\tconst schemaResults = await this.writeSchema(destinationDir, {\n\t\t\t\t...options,\n\t\t\t\t...item,\n\t\t\t})\n\t\t\tresults.push(...schemaResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchema(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tvalueTypes: ValueTypes\n\t\t\ttypesFile?: string\n\t\t\tregisterBuiltSchemas?: boolean\n\t\t\tshouldImportCoreSchemas: boolean\n\t\t} & SchemaTemplateItem\n\t) {\n\t\tconst {\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\tregisterBuiltSchemas = true,\n\t\t\t...item\n\t\t} = options\n\n\t\tconst resolvedDestination = schemaDiskUtil.resolvePath({\n\t\t\tdestination: destinationDir,\n\t\t\tschema: options.schema,\n\t\t})\n\n\t\tlet typesFile = options.typesFile\n\t\t\t? diskUtil.resolveRelativePath(\n\t\t\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\t\t\toptions.typesFile\n\t\t\t )\n\t\t\t: undefined\n\n\t\tif (typesFile) {\n\t\t\ttypesFile = typesFile.replace(pathUtil.extname(typesFile), '')\n\t\t}\n\n\t\tconst schemaContents = this.templates.schema({\n\t\t\t...item,\n\t\t\tregisterBuiltSchemas,\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesFile,\n\t\t\tschemaFile:\n\t\t\t\titem.importFrom && options.shouldImportCoreSchemas\n\t\t\t\t\t? `schema/imported.schema.ts.hbs`\n\t\t\t\t\t: undefined,\n\t\t})\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tschemaContents,\n\t\t\t`${\n\t\t\t\titem.schema.description ? `${item.schema.description} ` : ''\n\t\t\t}This is the schema generated by ${\n\t\t\t\titem.id\n\t\t\t}.builder.ts. AUTOGENERATED. DO NOT EDIT.`\n\t\t)\n\t}\n\n\tpublic async writeValueTypes(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tglobalSchemaNamespace?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tconst contents = this.templates.valueTypes(options)\n\t\tconst destination = pathUtil.join(destinationDir, 'tmp', 'valueType.tmp.ts')\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'For constructing what goes to the right of the : after each property in the interface.'\n\t\t)\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'schema.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.schemaPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Enable schema support in your skill.'\n\t\t)\n\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SchemaWriter.js","names":["SchemaWriter","filename","templateFuncName","description","destinationDir","options","ui","startLoading","nameCamel","resolvedBuilderDestination","shouldEnableVersioning","pathUtil","resolve","versionUtil","resolveNewLatestPath","version","LATEST_HANDLEBARS","diskUtil","doesFileExist","SpruceError","code","schemaId","destination","builderContent","templates","schemaBuilder","writeFileIfChangedMixinResults","results","lint","fieldTemplateItems","fieldTemplates","fileAndFunc","resolvedDestination","path","join","contents","destinationDirOrFilename","schemaTemplateItems","valueTypes","typesTemplate","resolvedTypesDestination","resolveFilenameWithFallback","DEFAULT_SCHEMA_TYPES_FILENAME","localItems","filter","i","importFrom","length","schemaTypesContents","schemasTypes","globalSchemaNamespace","writeAllSchemas","dirname","typesFile","allSchemaResults","push","item","writeSchema","schemaResults","registerBuiltSchemas","schemaDiskUtil","resolvePath","schema","resolveRelativePath","undefined","replace","extname","schemaContents","schemaFile","shouldImportCoreSchemas","id","cwd","resolveHashSprucePath","pluginContents","schemaPlugin","AbstractWriter"],"sources":["../../../../src/features/schema/writers/SchemaWriter.ts"],"sourcesContent":["import path from 'path'\nimport pathUtil from 'path'\nimport { FieldTemplateItem, SchemaTemplateItem } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tLATEST_HANDLEBARS,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tSchemaBuilderTemplateItem,\n\tValueTypes,\n} from '@sprucelabs/spruce-templates'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter'\nimport schemaDiskUtil from '../utilities/schemaDisk.utility'\n\nexport default class SchemaWriter extends AbstractWriter {\n\tprivate readonly fieldTemplates: {\n\t\tfilename: string\n\t\ttemplateFuncName: 'fieldsTypes' | 'fieldClassMap'\n\t\tdescription: string\n\t}[] = [\n\t\t{\n\t\t\tfilename: 'fields.types.ts',\n\t\t\ttemplateFuncName: 'fieldsTypes',\n\t\t\tdescription:\n\t\t\t\t'All the interfaces generated for every type of schema field (text, number, address, etc).',\n\t\t},\n\t\t{\n\t\t\tfilename: 'fieldClassMap.ts',\n\t\t\ttemplateFuncName: 'fieldClassMap',\n\t\t\tdescription:\n\t\t\t\t'An object that is injected into the FieldFactory and ensures 3rd party fields are integrated.',\n\t\t},\n\t]\n\n\tpublic async writeBuilder(\n\t\tdestinationDir: string,\n\t\toptions: SchemaBuilderTemplateItem & {\n\t\t\tshouldEnableVersioning?: boolean\n\t\t\tversion?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Writing builder...')\n\n\t\tconst filename = `${options.nameCamel}.builder.ts`\n\n\t\tconst resolvedBuilderDestination =\n\t\t\toptions.shouldEnableVersioning === false\n\t\t\t\t? pathUtil.resolve(destinationDir, filename)\n\t\t\t\t: versionUtil.resolveNewLatestPath(\n\t\t\t\t\t\tdestinationDir,\n\t\t\t\t\t\toptions.version ?? LATEST_HANDLEBARS,\n\t\t\t\t\t\tfilename\n\t\t\t\t )\n\n\t\tif (diskUtil.doesFileExist(resolvedBuilderDestination)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SCHEMA_EXISTS',\n\t\t\t\tschemaId: options.nameCamel,\n\t\t\t\tdestination: destinationDir,\n\t\t\t})\n\t\t}\n\n\t\tconst builderContent = this.templates.schemaBuilder(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedBuilderDestination,\n\t\t\tbuilderContent,\n\t\t\t'The source of truth for building your schemas and their types. Run spruce sync.errors when you change this.'\n\t\t)\n\n\t\tawait this.lint(resolvedBuilderDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeFieldTypes(\n\t\tdestinationDir: string,\n\t\toptions: WriteFieldTypesOptions\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Checking schema field types...')\n\n\t\tconst { fieldTemplateItems } = options\n\n\t\tlet results: WriteResults = []\n\n\t\tfor (const fileAndFunc of this.fieldTemplates) {\n\t\t\tconst { filename, templateFuncName, description } = fileAndFunc\n\n\t\t\tconst resolvedDestination = path.join(destinationDir, 'fields', filename)\n\n\t\t\tconst contents = this.templates[templateFuncName]({\n\t\t\t\tfieldTemplateItems,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedDestination,\n\t\t\t\tcontents,\n\t\t\t\tdescription,\n\t\t\t\tresults\n\t\t\t)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchemasAndTypes(\n\t\tdestinationDirOrFilename: string,\n\t\toptions: GenerateSchemaTypesOptions\n\t): Promise<WriteResults> {\n\t\tconst {\n\t\t\tfieldTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesTemplate,\n\t\t} = options\n\n\t\tconst resolvedTypesDestination = this.resolveFilenameWithFallback(\n\t\t\tdestinationDirOrFilename,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet results: WriteResults = []\n\t\tthis.ui.startLoading('Generating schema types...')\n\n\t\tconst localItems = schemaTemplateItems.filter((i) => !i.importFrom)\n\n\t\tif (localItems.length > 0) {\n\t\t\tconst schemaTypesContents = this.templates.schemasTypes({\n\t\t\t\tschemaTemplateItems: localItems,\n\t\t\t\tfieldTemplateItems,\n\t\t\t\tvalueTypes,\n\t\t\t\tglobalSchemaNamespace: options.globalSchemaNamespace,\n\t\t\t\ttypesTemplate,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedTypesDestination,\n\t\t\t\tschemaTypesContents,\n\t\t\t\t'Namespace for accessing all your schemas. Type `SpruceSchemas` in your IDE to get started. ⚡️'\n\t\t\t)\n\n\t\t\tawait this.lint(resolvedTypesDestination)\n\t\t}\n\n\t\tthis.ui.startLoading(\n\t\t\t`Checking ${schemaTemplateItems.length} schemas for changes...`\n\t\t)\n\n\t\tconst allSchemaResults = await this.writeAllSchemas(\n\t\t\tpathUtil.dirname(resolvedTypesDestination),\n\t\t\t{\n\t\t\t\t...options,\n\t\t\t\ttypesFile: resolvedTypesDestination,\n\t\t\t}\n\t\t)\n\n\t\tresults.push(...allSchemaResults)\n\n\t\treturn results\n\t}\n\n\tprivate async writeAllSchemas(\n\t\tdestinationDir: string,\n\t\toptions: GenerateSchemaTypesOptions & { typesFile?: string }\n\t): Promise<WriteResults> {\n\t\tconst results: WriteResults = []\n\n\t\tfor (const item of options.schemaTemplateItems) {\n\t\t\tconst schemaResults = await this.writeSchema(destinationDir, {\n\t\t\t\t...options,\n\t\t\t\t...item,\n\t\t\t})\n\t\t\tresults.push(...schemaResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchema(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tvalueTypes: ValueTypes\n\t\t\ttypesFile?: string\n\t\t\tregisterBuiltSchemas?: boolean\n\t\t\tshouldImportCoreSchemas: boolean\n\t\t} & SchemaTemplateItem\n\t) {\n\t\tconst {\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\tregisterBuiltSchemas = true,\n\t\t\t...item\n\t\t} = options\n\n\t\tconst resolvedDestination = schemaDiskUtil.resolvePath({\n\t\t\tdestination: destinationDir,\n\t\t\tschema: options.schema,\n\t\t})\n\n\t\tlet typesFile = options.typesFile\n\t\t\t? diskUtil.resolveRelativePath(\n\t\t\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\t\t\toptions.typesFile\n\t\t\t )\n\t\t\t: undefined\n\n\t\tif (typesFile) {\n\t\t\ttypesFile = typesFile.replace(pathUtil.extname(typesFile), '')\n\t\t}\n\n\t\tconst schemaContents = this.templates.schema({\n\t\t\t...item,\n\t\t\tregisterBuiltSchemas,\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesFile,\n\t\t\tschemaFile:\n\t\t\t\titem.importFrom && options.shouldImportCoreSchemas\n\t\t\t\t\t? `schema/imported.schema.ts.hbs`\n\t\t\t\t\t: undefined,\n\t\t})\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tschemaContents,\n\t\t\t`${\n\t\t\t\titem.schema.description ? `${item.schema.description} ` : ''\n\t\t\t}This is the schema generated by ${\n\t\t\t\titem.id\n\t\t\t}.builder.ts. AUTOGENERATED. DO NOT EDIT.`\n\t\t)\n\t}\n\n\tpublic async writeValueTypes(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tglobalSchemaNamespace?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tconst contents = this.templates.valueTypes(options)\n\t\tconst destination = pathUtil.join(destinationDir, 'tmp', 'valueType.tmp.ts')\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'For constructing what goes to the right of the : after each property in the interface.'\n\t\t)\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'schema.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.schemaPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Enable schema support in your skill.'\n\t\t)\n\n\t\treturn results\n\t}\n}\n\ninterface WriteFieldTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n}\n\nexport interface GenerateSchemaTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n\tschemaTemplateItems: SchemaTemplateItem[]\n\tvalueTypes: ValueTypes\n\tglobalSchemaNamespace?: string\n\ttypesTemplate?: string\n\tregisterBuiltSchemas?: boolean\n\tshouldImportCoreSchemas: boolean\n}\n"],"mappings":"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"}
|