@sprucelabs/spruce-cli 14.28.5 → 14.29.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 +35 -0
- package/build/__tests__/behavioral/BootingWithBadFiles.test.js +26 -13
- package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js +13 -9
- package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.d.ts +1 -1
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +24 -14
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js +15 -11
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +3 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +2 -0
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +157 -81
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.d.ts +7 -0
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js +171 -0
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +53 -21
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill2.test.d.ts +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill2.test.js +10 -20
- package/build/__tests__/behavioral/skill/UpgradingASkill2.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.d.ts +5 -0
- package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.js +137 -0
- package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.js.map +1 -0
- package/build/__tests__/behavioral/{CreatingADataStore.test.d.ts → stores/CreatingADataStore.test.d.ts} +2 -1
- package/build/__tests__/behavioral/{CreatingADataStore.test.js → stores/CreatingADataStore.test.js} +87 -57
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -0
- package/build/__tests__/behavioral/{KeepingDataStoresInSync.test.d.ts → stores/KeepingDataStoresInSync.test.d.ts} +5 -2
- package/build/__tests__/behavioral/{KeepingDataStoresInSync.test.js → stores/KeepingDataStoresInSync.test.js} +138 -49
- package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -0
- package/build/__tests__/behavioral/tests/CreatingATest.test.js +14 -10
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/views/TestingViewControllers.test.d.ts +1 -0
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js +67 -35
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
- package/build/__tests__/implementation/AuthService.test.d.ts +1 -0
- package/build/__tests__/implementation/AuthService.test.js +8 -0
- package/build/__tests__/implementation/AuthService.test.js.map +1 -1
- package/build/__tests__/implementation/EventStore.test.js +3 -1
- package/build/__tests__/implementation/EventStore.test.js.map +1 -1
- package/build/__tests__/implementation/StoreFeature.test.d.ts +4 -0
- package/build/__tests__/implementation/StoreFeature.test.js +132 -0
- package/build/__tests__/implementation/StoreFeature.test.js.map +1 -0
- package/build/cli.d.ts +1 -1
- package/build/cli.js +1 -1
- package/build/cli.js.map +1 -1
- package/build/features/event/EventFeature.d.ts +2 -2
- package/build/features/event/EventFeature.js +53 -13
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/actions/ListenAction.d.ts +1 -0
- package/build/features/event/actions/ListenAction.js +60 -31
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/actions/SyncListenersAction.d.ts +15 -0
- package/build/features/event/actions/SyncListenersAction.js +115 -0
- package/build/features/event/actions/SyncListenersAction.js.map +1 -0
- package/build/features/event/builders/ListenerTemplateItemBuilder.d.ts +8 -0
- package/build/features/event/builders/ListenerTemplateItemBuilder.js +65 -0
- package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -0
- package/build/features/event/stores/EventStore.js +2 -2
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/event/stores/ListenerStore.d.ts +9 -0
- package/build/features/event/stores/ListenerStore.js +122 -0
- package/build/features/event/stores/ListenerStore.js.map +1 -0
- package/build/features/event/writers/EventWriter.d.ts +4 -1
- package/build/features/event/writers/EventWriter.js +42 -8
- package/build/features/event/writers/EventWriter.js.map +1 -1
- package/build/features/node/NodeFeature.js +6 -11
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/skill/SkillFeature.js +1 -1
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/skill/stores/SkillStore.js +4 -8
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/store/StoreFeature.d.ts +1 -1
- package/build/features/store/StoreFeature.js +6 -6
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/features/store/actions/SyncAction.js +11 -10
- package/build/features/store/actions/SyncAction.js.map +1 -1
- package/build/features/store/writers/StoreWriter.d.ts +6 -0
- package/build/features/store/writers/StoreWriter.js +78 -8
- package/build/features/store/writers/StoreWriter.js.map +1 -1
- package/build/services/AuthService.d.ts +4 -1
- package/build/services/AuthService.js +15 -4
- package/build/services/AuthService.js.map +1 -1
- package/build/services/LintService.d.ts +4 -1
- package/build/services/LintService.js +123 -94
- package/build/services/LintService.js.map +1 -1
- package/build/services/ServiceFactory.js +3 -3
- package/build/services/ServiceFactory.js.map +1 -1
- package/build/stores/StoreFactory.d.ts +2 -0
- package/build/stores/StoreFactory.js +4 -1
- package/build/stores/StoreFactory.js.map +1 -1
- package/build/tests/AbstractCliTest.js +3 -3
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/writers/AbstractWriter.d.ts +0 -3
- package/build/writers/AbstractWriter.js +2 -18
- package/build/writers/AbstractWriter.js.map +1 -1
- package/package.json +30 -28
- package/src/__tests__/behavioral/BootingWithBadFiles.test.ts +8 -3
- package/src/__tests__/behavioral/SettingLogTransportsInASkill.test.ts +2 -0
- package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +10 -5
- package/src/__tests__/behavioral/TestingDataStores.test.ts +2 -0
- package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +1 -0
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +28 -9
- package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +1 -1
- package/src/__tests__/behavioral/events/KeepingListenersInSync.test.ts +47 -0
- package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
- package/src/__tests__/behavioral/skill/UpgradingASkill2.test.ts +1 -10
- package/src/__tests__/behavioral/skill/UpgradingWithListeners.test.ts +59 -0
- package/src/__tests__/behavioral/{CreatingADataStore.test.ts → stores/CreatingADataStore.test.ts} +13 -6
- package/src/__tests__/behavioral/{KeepingDataStoresInSync.test.ts → stores/KeepingDataStoresInSync.test.ts} +37 -8
- package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -0
- package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +6 -0
- package/src/__tests__/implementation/AuthService.test.ts +6 -0
- package/src/__tests__/implementation/EventStore.test.ts +1 -0
- package/src/__tests__/implementation/StoreFeature.test.ts +40 -0
- package/src/cli.ts +2 -2
- package/src/features/event/EventFeature.ts +21 -4
- package/src/features/event/actions/ListenAction.ts +9 -3
- package/src/features/event/actions/SyncListenersAction.ts +38 -0
- package/src/features/event/builders/ListenerTemplateItemBuilder.ts +27 -0
- package/src/features/event/stores/EventStore.ts +1 -1
- package/src/features/event/stores/ListenerStore.ts +32 -0
- package/src/features/event/writers/EventWriter.ts +19 -0
- package/src/features/node/NodeFeature.ts +0 -3
- package/src/features/skill/SkillFeature.ts +1 -1
- package/src/features/skill/stores/SkillStore.ts +4 -3
- package/src/features/store/StoreFeature.ts +3 -3
- package/src/features/store/actions/SyncAction.ts +2 -1
- package/src/features/store/writers/StoreWriter.ts +30 -0
- package/src/services/AuthService.ts +15 -5
- package/src/services/LintService.ts +19 -2
- package/src/services/ServiceFactory.ts +9 -3
- package/src/stores/StoreFactory.ts +3 -0
- package/src/tests/AbstractCliTest.ts +2 -2
- package/src/writers/AbstractWriter.ts +2 -13
- package/build/__tests__/behavioral/CreatingADataStore.test.js.map +0 -1
- package/build/__tests__/behavioral/KeepingDataStoresInSync.test.js.map +0 -1
|
@@ -225,11 +225,14 @@ var AuthServiceTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec
|
|
|
225
225
|
}, {
|
|
226
226
|
key: "getCurrentSkillReturnsNull",
|
|
227
227
|
value: function getCurrentSkillReturnsNull() {
|
|
228
|
+
this.writePackageJson();
|
|
229
|
+
|
|
228
230
|
_test.assert.isNull(this.auth.getCurrentSkill());
|
|
229
231
|
}
|
|
230
232
|
}, {
|
|
231
233
|
key: "canSetCurrentSkill",
|
|
232
234
|
value: function canSetCurrentSkill() {
|
|
235
|
+
this.writePackageJson();
|
|
233
236
|
var skill = {
|
|
234
237
|
id: '123467aaoeuaoeu',
|
|
235
238
|
apiKey: 'taco',
|
|
@@ -240,6 +243,11 @@ var AuthServiceTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec
|
|
|
240
243
|
|
|
241
244
|
_test.assert.isEqualDeep(this.auth.getCurrentSkill(), skill);
|
|
242
245
|
}
|
|
246
|
+
}, {
|
|
247
|
+
key: "writePackageJson",
|
|
248
|
+
value: function writePackageJson() {
|
|
249
|
+
_spruceSkillUtils.diskUtil.writeFile(this.resolvePath('package.json'), '{}');
|
|
250
|
+
}
|
|
243
251
|
}]);
|
|
244
252
|
return AuthServiceTest;
|
|
245
253
|
}(_AbstractCliTest2["default"]), (0, _defineProperty2["default"])(_class2, "auth", void 0), _temp), ((0, _applyDecoratedDescriptor2["default"])(_class, "canInstantiatePersonStore", [_dec], Object.getOwnPropertyDescriptor(_class, "canInstantiatePersonStore"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "hasLoggedInPersonMethod", [_dec2], Object.getOwnPropertyDescriptor(_class, "hasLoggedInPersonMethod"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "loggedInPersonIsNullWhenNotLoggedIn", [_dec3], Object.getOwnPropertyDescriptor(_class, "loggedInPersonIsNullWhenNotLoggedIn"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "cantSaveBadLoggedInPerson", [_dec4], Object.getOwnPropertyDescriptor(_class, "cantSaveBadLoggedInPerson"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canSaveLoggedInPerson", [_dec5], Object.getOwnPropertyDescriptor(_class, "canSaveLoggedInPerson"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canLogOut", [_dec6], Object.getOwnPropertyDescriptor(_class, "canLogOut"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "getCurrentSkillReturnsNull", [_dec7], Object.getOwnPropertyDescriptor(_class, "getCurrentSkillReturnsNull"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canSetCurrentSkill", [_dec8], Object.getOwnPropertyDescriptor(_class, "canSetCurrentSkill"), _class)), _class));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/__tests__/implementation/AuthService.test.ts"],"names":["AuthServiceTest","diskUtil","createDir","resolvePath","HASH_SPRUCE_DIR","auth","Service","assert","isTruthy","isFunction","getLoggedInPerson","isNull","err","doesThrow","setLoggedInPerson","test","errorAssertUtil","assertError","person","id","casualName","token","loggedIn","isEqualDeep","isLoggedIn","logOutPerson","getCurrentSkill","skill","apiKey","name","slug","updateCurrentSkill","AbstractCliTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;;;;;;;;;IAEqBA,e,WAQnB,iB,UAKA,iB,UAKA,iB,UAKA,iB,UAUA,iB,UAgBA,iB,UAeA,iB,
|
|
1
|
+
{"version":3,"sources":["../../../src/__tests__/implementation/AuthService.test.ts"],"names":["AuthServiceTest","diskUtil","createDir","resolvePath","HASH_SPRUCE_DIR","auth","Service","assert","isTruthy","isFunction","getLoggedInPerson","isNull","err","doesThrow","setLoggedInPerson","test","errorAssertUtil","assertError","person","id","casualName","token","loggedIn","isEqualDeep","isLoggedIn","logOutPerson","writePackageJson","getCurrentSkill","skill","apiKey","name","slug","updateCurrentSkill","writeFile","AbstractCliTest"],"mappings":"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","sourcesContent":["import { diskUtil, HASH_SPRUCE_DIR } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AuthService from '../../services/AuthService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class AuthServiceTest extends AbstractCliTest {\n\tprivate static auth: AuthService\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tdiskUtil.createDir(this.resolvePath(HASH_SPRUCE_DIR))\n\t\tthis.auth = this.Service('auth')\n\t}\n\n\t@test()\n\tprotected static async canInstantiatePersonStore() {\n\t\tassert.isTruthy(this.auth)\n\t}\n\n\t@test()\n\tprotected static async hasLoggedInPersonMethod() {\n\t\tassert.isFunction(this.auth.getLoggedInPerson)\n\t}\n\n\t@test()\n\tprotected static async loggedInPersonIsNullWhenNotLoggedIn() {\n\t\tassert.isNull(this.auth.getLoggedInPerson())\n\t}\n\n\t@test()\n\tprotected static async cantSaveBadLoggedInPerson() {\n\t\tconst err = assert.doesThrow(() =>\n\t\t\t//@ts-ignore\n\t\t\tthis.auth.setLoggedInPerson({ test: true })\n\t\t)\n\n\t\terrorAssertUtil.assertError(err, 'MISSING_PARAMETERS')\n\t}\n\n\t@test()\n\tprotected static canSaveLoggedInPerson() {\n\t\tconst auth = this.auth\n\t\tconst person = {\n\t\t\tid: 'test',\n\t\t\tcasualName: 'friend',\n\t\t\ttoken: 'token',\n\t\t}\n\n\t\tauth.setLoggedInPerson(person)\n\n\t\tconst loggedIn = auth.getLoggedInPerson()\n\n\t\tassert.isEqualDeep(loggedIn, { ...person, isLoggedIn: true })\n\t}\n\n\t@test()\n\tprotected static canLogOut() {\n\t\tconst auth = this.auth\n\t\tconst person = {\n\t\t\tid: 'test',\n\t\t\tcasualName: 'friend',\n\t\t\ttoken: 'token',\n\t\t}\n\n\t\tauth.setLoggedInPerson(person)\n\t\tauth.logOutPerson()\n\n\t\tassert.isNull(auth.getLoggedInPerson())\n\t}\n\n\t@test()\n\tprotected static getCurrentSkillReturnsNull() {\n\t\tthis.writePackageJson()\n\t\tassert.isNull(this.auth.getCurrentSkill())\n\t}\n\n\t@test()\n\tprotected static canSetCurrentSkill() {\n\t\tthis.writePackageJson()\n\t\tconst skill = {\n\t\t\tid: '123467aaoeuaoeu',\n\t\t\tapiKey: 'taco',\n\t\t\tname: 'go team',\n\t\t\tslug: 'taco-bravo',\n\t\t}\n\n\t\tthis.auth.updateCurrentSkill(skill)\n\n\t\tassert.isEqualDeep(this.auth.getCurrentSkill(), skill)\n\t}\n\n\tprivate static writePackageJson() {\n\t\tdiskUtil.writeFile(this.resolvePath('package.json'), '{}')\n\t}\n}\n"],"file":"AuthService.test.js"}
|
|
@@ -87,7 +87,9 @@ var EventStoreTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3
|
|
|
87
87
|
case 2:
|
|
88
88
|
this.createAction = this.Action('event', 'create');
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
_spruceSkillUtils.diskUtil.writeFile(this.resolvePath('package.json'), '{}');
|
|
91
|
+
|
|
92
|
+
case 4:
|
|
91
93
|
case "end":
|
|
92
94
|
return _context.stop();
|
|
93
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/__tests__/implementation/EventStore.test.ts"],"names":["EVENT_NAME_READABLE","EVENT_NAME","EVENT_CAMEL","EventStoreTest","versionUtil","generateVersion","createAction","Action","assert","isTruthy","Store","isFunction","fetchEventContracts","localNamespace","results","contracts","errors","isTrue","length","contract","isEqual","organizationFixture","getOrganizationFixture","seedDemoOrg","name","org","seedSkillAndInstallAtOrg","eventStore1","eventStore","skill1","skill","eventStore2","registerEventContract","eventContract","eventSignatures","version","constValue","emitPayloadSchema","eventName","targetSchema","eventTargetSchema","emitPermissionContract","id","permissions","defaults","skillContract","sig","eventContractUtil","getSignatureByName","slug","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","execute","nameReadable","nameKebab","nameCamel","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","diskUtil","writeFile","doesThrowAsync","loadLocalContract","RegExp","err","errorAssertUtil","assertError","copyEventBuildersAndPermissions","namespaces","isLength","eventNameUtil","join","eventNamespace","wasFound","fields","target","payload","responsePayloadSchema","listenPermissionContract","installAndRegisterOneGlobalEvent","fqen","totalMatches","reduce","count","eventsPath","resolvePath","deleteDir","unified","unifyContracts","doesThrow","isGlobal","meta","local","boot","kill","EventStore","clearCache","createResults","seedDemoSkill","installSkillAtOrganization","connectToApi","skillId","apiKey","client","apiClientFactory","AbstractEventTest"],"mappings":"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","sourcesContent":["import {\n\tbuildPermissionContract,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n\teventNameUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport CreateAction from '../../features/event/actions/CreateAction'\nimport EventStore from '../../features/event/stores/EventStore'\nimport AbstractEventTest from '../../tests/AbstractEventTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nconst EVENT_NAME_READABLE = 'my event store amazing event'\nconst EVENT_NAME = 'my-event-store-amazing-event'\nconst EVENT_CAMEL = 'myEventStoreAmazingEvent'\n\nexport default class EventStoreTest extends AbstractEventTest {\n\tprivate static createAction: CreateAction\n\tprotected static get version() {\n\t\treturn versionUtil.generateVersion()\n\t}\n\n\tpublic static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.createAction = this.Action<CreateAction>('event', 'create')\n\t}\n\n\t@test()\n\tprotected static async canInstantiateEventStore() {\n\t\tassert.isTruthy(this.Store('event'))\n\t}\n\n\t@test()\n\tprotected static async hasFetchEventContractsMethod() {\n\t\tassert.isFunction(this.Store('event').fetchEventContracts)\n\t}\n\n\t@test()\n\tprotected static async fetchesCoreEventContracts() {\n\t\tconst results = await this.Store('event').fetchEventContracts({\n\t\t\tlocalNamespace: 'my-skill',\n\t\t})\n\t\tconst { contracts, errors } = results\n\n\t\tassert.isTrue(contracts.length >= 1)\n\n\t\tfor (const contract of contracts) {\n\t\t\tvalidateEventContract(contract)\n\t\t}\n\n\t\tassert.isEqual(errors.length, 0)\n\t}\n\n\t@test()\n\tprotected static async registerEventContract() {\n\t\tconst organizationFixture = this.getOrganizationFixture()\n\t\tconst org = await organizationFixture.seedDemoOrg({\n\t\t\tname: 'my new org',\n\t\t})\n\n\t\tconst { eventStore: eventStore1, skill: skill1 } =\n\t\t\tawait this.seedSkillAndInstallAtOrg(org, 'skill 1')\n\n\t\tconst { eventStore: eventStore2 } = await this.seedSkillAndInstallAtOrg(\n\t\t\torg,\n\t\t\t'skill 2'\n\t\t)\n\n\t\tawait eventStore1.registerEventContract({\n\t\t\teventContract: {\n\t\t\t\teventSignatures: {\n\t\t\t\t\t[`my-fantastic-event::${this.version.constValue}`]: {\n\t\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\t\teventName: `my-fantastic-event::${this.version.constValue}`,\n\t\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\temitPermissionContract: buildPermissionContract({\n\t\t\t\t\t\t\tid: 'my-fantastic-event-contract',\n\t\t\t\t\t\t\tname: 'Fanstastic emit perms',\n\t\t\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'can-emit-perms',\n\t\t\t\t\t\t\t\t\tname: 'can emit perm',\n\t\t\t\t\t\t\t\t\tdefaults: {\n\t\t\t\t\t\t\t\t\t\tskill: false,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst { contracts } = await eventStore2.fetchEventContracts({\n\t\t\tlocalNamespace: 'my-skill',\n\t\t})\n\n\t\tassert.isTrue(contracts.length > 2)\n\n\t\tconst skillContract = contracts[1]\n\n\t\tconst sig = eventContractUtil.getSignatureByName(\n\t\t\tskillContract,\n\t\t\t`${skill1.slug}.my-fantastic-event::${this.version.constValue}`\n\t\t)\n\n\t\tassert.isEqual(\n\t\t\tsig.emitPermissionContract?.id,\n\t\t\t'my-fantastic-event-contract'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async badLocalContractThrowsNiceError() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my new skill',\n\t\t})\n\n\t\tconst results = await this.createAction.execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`emitPayload.builder.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.writeFile(match, 'export default {}')\n\n\t\tconst err = await assert.doesThrowAsync(\n\t\t\t() => this.Store('event').loadLocalContract(skill.slug),\n\t\t\tnew RegExp(\n\t\t\t\t`${skill.slug}.${EVENT_NAME}::${\n\t\t\t\t\tversionUtil.generateVersion().constValue\n\t\t\t\t}`\n\t\t\t)\n\t\t)\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_EVENT_CONTRACT')\n\t}\n\n\t@test()\n\tprotected static async badLocalSignature() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my new skill',\n\t\t})\n\n\t\tconst results = await this.createAction.execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`event.options.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.writeFile(match, 'export default {waka: true}')\n\n\t\tconst err = await assert.doesThrowAsync(\n\t\t\t() => this.Store('event').loadLocalContract(skill.slug),\n\t\t\tnew RegExp(\n\t\t\t\t`${skill.slug}.${EVENT_NAME}::${\n\t\t\t\t\tversionUtil.generateVersion().constValue\n\t\t\t\t}`\n\t\t\t)\n\t\t)\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_EVENT_CONTRACT')\n\t}\n\n\t@test()\n\tprotected static async mixesInLocalContracts() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my new skill',\n\t\t})\n\n\t\tawait this.createAction.execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tawait this.copyEventBuildersAndPermissions(EVENT_NAME)\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts({\n\t\t\tlocalNamespace: skill.slug,\n\t\t\tnamespaces: ['core'],\n\t\t})\n\n\t\tassert.isLength(contracts, 2)\n\n\t\tconst name = eventNameUtil.join({\n\t\t\teventName: EVENT_NAME,\n\t\t\teventNamespace: skill.slug,\n\t\t\tversion: this.version.constValue,\n\t\t})\n\n\t\tlet wasFound = false\n\t\tfor (const contract of contracts) {\n\t\t\tif (contract.eventSignatures[name]?.emitPayloadSchema) {\n\t\t\t\twasFound = true\n\t\t\t\tassert.isEqual(\n\t\t\t\t\tcontract.eventSignatures[name].emitPayloadSchema?.id,\n\t\t\t\t\tEVENT_CAMEL + 'EmitTargetAndPayload'\n\t\t\t\t)\n\t\t\t\tassert.isTruthy(\n\t\t\t\t\tcontract.eventSignatures[name].emitPayloadSchema?.fields?.target\n\t\t\t\t)\n\t\t\t\tassert.isTruthy(\n\t\t\t\t\tcontract.eventSignatures[name].emitPayloadSchema?.fields?.payload\n\t\t\t\t)\n\t\t\t\tassert.isTruthy(contract.eventSignatures[name].responsePayloadSchema)\n\t\t\t\tassert.isTruthy(contract.eventSignatures[name].emitPermissionContract)\n\t\t\t\tassert.isTruthy(contract.eventSignatures[name].listenPermissionContract)\n\n\t\t\t\tvalidateEventContract(contract)\n\t\t\t}\n\t\t}\n\n\t\tassert.isTrue(wasFound)\n\t}\n\n\t@test()\n\tprotected static async mixesInLocalContractWithGlobalEventsAndDoesNotReturnContractTwice() {\n\t\tconst { skill, fqen } = await this.installAndRegisterOneGlobalEvent()\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts({\n\t\t\tlocalNamespace: skill.slug,\n\t\t})\n\n\t\tconst totalMatches = contracts.reduce((count, contract) => {\n\t\t\tif (contract.eventSignatures[fqen]) {\n\t\t\t\tcount++\n\t\t\t}\n\t\t\treturn count\n\t\t}, 0)\n\n\t\tassert.isEqual(totalMatches, 1)\n\t}\n\n\t@test()\n\tprotected static async doesNotLoadGlobalContractsForSelf() {\n\t\tconst { fqen, skill } = await this.installAndRegisterOneGlobalEvent()\n\n\t\tconst eventsPath = this.resolvePath('src', 'events')\n\t\tdiskUtil.deleteDir(eventsPath)\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts({\n\t\t\tlocalNamespace: skill.slug,\n\t\t})\n\n\t\tconst unified = eventContractUtil.unifyContracts(contracts)\n\n\t\tassert.isTruthy(unified)\n\t\tassert.doesThrow(() => eventContractUtil.getSignatureByName(unified, fqen))\n\t}\n\n\tprivate static async installAndRegisterOneGlobalEvent() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'event store test skill',\n\t\t})\n\n\t\tconst results = await this.createAction.execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t\tisGlobal: true,\n\t\t})\n\n\t\tconst { fqen } = results.meta ?? {}\n\n\t\tassert.isTruthy(fqen)\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tboot.meta?.kill()\n\n\t\tEventStore.clearCache()\n\n\t\treturn { boot, skill, fqen, createResults: results }\n\t}\n\n\tprivate static async seedSkillAndInstallAtOrg(org: any, name: string) {\n\t\tconst skill = await this.getSkillFixture().seedDemoSkill({\n\t\t\tname,\n\t\t})\n\n\t\tawait this.getOrganizationFixture().installSkillAtOrganization(\n\t\t\tskill.id,\n\t\t\torg.id\n\t\t)\n\n\t\tconst client = await this.connectToApi({\n\t\t\tskillId: skill.id,\n\t\t\tapiKey: skill.apiKey,\n\t\t})\n\n\t\tconst eventStore = this.Store('event', {\n\t\t\tapiClientFactory: async () => {\n\t\t\t\treturn client\n\t\t\t},\n\t\t})\n\n\t\treturn { eventStore, skill }\n\t}\n}\n"],"file":"EventStore.test.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/__tests__/implementation/EventStore.test.ts"],"names":["EVENT_NAME_READABLE","EVENT_NAME","EVENT_CAMEL","EventStoreTest","versionUtil","generateVersion","createAction","Action","diskUtil","writeFile","resolvePath","assert","isTruthy","Store","isFunction","fetchEventContracts","localNamespace","results","contracts","errors","isTrue","length","contract","isEqual","organizationFixture","getOrganizationFixture","seedDemoOrg","name","org","seedSkillAndInstallAtOrg","eventStore1","eventStore","skill1","skill","eventStore2","registerEventContract","eventContract","eventSignatures","version","constValue","emitPayloadSchema","eventName","targetSchema","eventTargetSchema","emitPermissionContract","id","permissions","defaults","skillContract","sig","eventContractUtil","getSignatureByName","slug","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","execute","nameReadable","nameKebab","nameCamel","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesThrowAsync","loadLocalContract","RegExp","err","errorAssertUtil","assertError","copyEventBuildersAndPermissions","namespaces","isLength","eventNameUtil","join","eventNamespace","wasFound","fields","target","payload","responsePayloadSchema","listenPermissionContract","installAndRegisterOneGlobalEvent","fqen","totalMatches","reduce","count","eventsPath","deleteDir","unified","unifyContracts","doesThrow","isGlobal","meta","local","boot","kill","EventStore","clearCache","createResults","seedDemoSkill","installSkillAtOrganization","connectToApi","skillId","apiKey","client","apiClientFactory","AbstractEventTest"],"mappings":"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","sourcesContent":["import {\n\tbuildPermissionContract,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n\teventNameUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport CreateAction from '../../features/event/actions/CreateAction'\nimport EventStore from '../../features/event/stores/EventStore'\nimport AbstractEventTest from '../../tests/AbstractEventTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nconst EVENT_NAME_READABLE = 'my event store amazing event'\nconst EVENT_NAME = 'my-event-store-amazing-event'\nconst EVENT_CAMEL = 'myEventStoreAmazingEvent'\n\nexport default class EventStoreTest extends AbstractEventTest {\n\tprivate static createAction: CreateAction\n\tprotected static get version() {\n\t\treturn versionUtil.generateVersion()\n\t}\n\n\tpublic static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.createAction = this.Action<CreateAction>('event', 'create')\n\t\tdiskUtil.writeFile(this.resolvePath('package.json'), '{}')\n\t}\n\n\t@test()\n\tprotected static async canInstantiateEventStore() {\n\t\tassert.isTruthy(this.Store('event'))\n\t}\n\n\t@test()\n\tprotected static async hasFetchEventContractsMethod() {\n\t\tassert.isFunction(this.Store('event').fetchEventContracts)\n\t}\n\n\t@test()\n\tprotected static async fetchesCoreEventContracts() {\n\t\tconst results = await this.Store('event').fetchEventContracts({\n\t\t\tlocalNamespace: 'my-skill',\n\t\t})\n\t\tconst { contracts, errors } = results\n\n\t\tassert.isTrue(contracts.length >= 1)\n\n\t\tfor (const contract of contracts) {\n\t\t\tvalidateEventContract(contract)\n\t\t}\n\n\t\tassert.isEqual(errors.length, 0)\n\t}\n\n\t@test()\n\tprotected static async registerEventContract() {\n\t\tconst organizationFixture = this.getOrganizationFixture()\n\t\tconst org = await organizationFixture.seedDemoOrg({\n\t\t\tname: 'my new org',\n\t\t})\n\n\t\tconst { eventStore: eventStore1, skill: skill1 } =\n\t\t\tawait this.seedSkillAndInstallAtOrg(org, 'skill 1')\n\n\t\tconst { eventStore: eventStore2 } = await this.seedSkillAndInstallAtOrg(\n\t\t\torg,\n\t\t\t'skill 2'\n\t\t)\n\n\t\tawait eventStore1.registerEventContract({\n\t\t\teventContract: {\n\t\t\t\teventSignatures: {\n\t\t\t\t\t[`my-fantastic-event::${this.version.constValue}`]: {\n\t\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\t\teventName: `my-fantastic-event::${this.version.constValue}`,\n\t\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\temitPermissionContract: buildPermissionContract({\n\t\t\t\t\t\t\tid: 'my-fantastic-event-contract',\n\t\t\t\t\t\t\tname: 'Fanstastic emit perms',\n\t\t\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'can-emit-perms',\n\t\t\t\t\t\t\t\t\tname: 'can emit perm',\n\t\t\t\t\t\t\t\t\tdefaults: {\n\t\t\t\t\t\t\t\t\t\tskill: false,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst { contracts } = await eventStore2.fetchEventContracts({\n\t\t\tlocalNamespace: 'my-skill',\n\t\t})\n\n\t\tassert.isTrue(contracts.length > 2)\n\n\t\tconst skillContract = contracts[1]\n\n\t\tconst sig = eventContractUtil.getSignatureByName(\n\t\t\tskillContract,\n\t\t\t`${skill1.slug}.my-fantastic-event::${this.version.constValue}`\n\t\t)\n\n\t\tassert.isEqual(\n\t\t\tsig.emitPermissionContract?.id,\n\t\t\t'my-fantastic-event-contract'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async badLocalContractThrowsNiceError() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my new skill',\n\t\t})\n\n\t\tconst results = await this.createAction.execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`emitPayload.builder.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.writeFile(match, 'export default {}')\n\n\t\tconst err = await assert.doesThrowAsync(\n\t\t\t() => this.Store('event').loadLocalContract(skill.slug),\n\t\t\tnew RegExp(\n\t\t\t\t`${skill.slug}.${EVENT_NAME}::${\n\t\t\t\t\tversionUtil.generateVersion().constValue\n\t\t\t\t}`\n\t\t\t)\n\t\t)\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_EVENT_CONTRACT')\n\t}\n\n\t@test()\n\tprotected static async badLocalSignature() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my new skill',\n\t\t})\n\n\t\tconst results = await this.createAction.execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`event.options.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.writeFile(match, 'export default {waka: true}')\n\n\t\tconst err = await assert.doesThrowAsync(\n\t\t\t() => this.Store('event').loadLocalContract(skill.slug),\n\t\t\tnew RegExp(\n\t\t\t\t`${skill.slug}.${EVENT_NAME}::${\n\t\t\t\t\tversionUtil.generateVersion().constValue\n\t\t\t\t}`\n\t\t\t)\n\t\t)\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_EVENT_CONTRACT')\n\t}\n\n\t@test()\n\tprotected static async mixesInLocalContracts() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my new skill',\n\t\t})\n\n\t\tawait this.createAction.execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tawait this.copyEventBuildersAndPermissions(EVENT_NAME)\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts({\n\t\t\tlocalNamespace: skill.slug,\n\t\t\tnamespaces: ['core'],\n\t\t})\n\n\t\tassert.isLength(contracts, 2)\n\n\t\tconst name = eventNameUtil.join({\n\t\t\teventName: EVENT_NAME,\n\t\t\teventNamespace: skill.slug,\n\t\t\tversion: this.version.constValue,\n\t\t})\n\n\t\tlet wasFound = false\n\t\tfor (const contract of contracts) {\n\t\t\tif (contract.eventSignatures[name]?.emitPayloadSchema) {\n\t\t\t\twasFound = true\n\t\t\t\tassert.isEqual(\n\t\t\t\t\tcontract.eventSignatures[name].emitPayloadSchema?.id,\n\t\t\t\t\tEVENT_CAMEL + 'EmitTargetAndPayload'\n\t\t\t\t)\n\t\t\t\tassert.isTruthy(\n\t\t\t\t\tcontract.eventSignatures[name].emitPayloadSchema?.fields?.target\n\t\t\t\t)\n\t\t\t\tassert.isTruthy(\n\t\t\t\t\tcontract.eventSignatures[name].emitPayloadSchema?.fields?.payload\n\t\t\t\t)\n\t\t\t\tassert.isTruthy(contract.eventSignatures[name].responsePayloadSchema)\n\t\t\t\tassert.isTruthy(contract.eventSignatures[name].emitPermissionContract)\n\t\t\t\tassert.isTruthy(contract.eventSignatures[name].listenPermissionContract)\n\n\t\t\t\tvalidateEventContract(contract)\n\t\t\t}\n\t\t}\n\n\t\tassert.isTrue(wasFound)\n\t}\n\n\t@test()\n\tprotected static async mixesInLocalContractWithGlobalEventsAndDoesNotReturnContractTwice() {\n\t\tconst { skill, fqen } = await this.installAndRegisterOneGlobalEvent()\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts({\n\t\t\tlocalNamespace: skill.slug,\n\t\t})\n\n\t\tconst totalMatches = contracts.reduce((count, contract) => {\n\t\t\tif (contract.eventSignatures[fqen]) {\n\t\t\t\tcount++\n\t\t\t}\n\t\t\treturn count\n\t\t}, 0)\n\n\t\tassert.isEqual(totalMatches, 1)\n\t}\n\n\t@test()\n\tprotected static async doesNotLoadGlobalContractsForSelf() {\n\t\tconst { fqen, skill } = await this.installAndRegisterOneGlobalEvent()\n\n\t\tconst eventsPath = this.resolvePath('src', 'events')\n\t\tdiskUtil.deleteDir(eventsPath)\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts({\n\t\t\tlocalNamespace: skill.slug,\n\t\t})\n\n\t\tconst unified = eventContractUtil.unifyContracts(contracts)\n\n\t\tassert.isTruthy(unified)\n\t\tassert.doesThrow(() => eventContractUtil.getSignatureByName(unified, fqen))\n\t}\n\n\tprivate static async installAndRegisterOneGlobalEvent() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'event store test skill',\n\t\t})\n\n\t\tconst results = await this.createAction.execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t\tisGlobal: true,\n\t\t})\n\n\t\tconst { fqen } = results.meta ?? {}\n\n\t\tassert.isTruthy(fqen)\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tboot.meta?.kill()\n\n\t\tEventStore.clearCache()\n\n\t\treturn { boot, skill, fqen, createResults: results }\n\t}\n\n\tprivate static async seedSkillAndInstallAtOrg(org: any, name: string) {\n\t\tconst skill = await this.getSkillFixture().seedDemoSkill({\n\t\t\tname,\n\t\t})\n\n\t\tawait this.getOrganizationFixture().installSkillAtOrganization(\n\t\t\tskill.id,\n\t\t\torg.id\n\t\t)\n\n\t\tconst client = await this.connectToApi({\n\t\t\tskillId: skill.id,\n\t\t\tapiKey: skill.apiKey,\n\t\t})\n\n\t\tconst eventStore = this.Store('event', {\n\t\t\tapiClientFactory: async () => {\n\t\t\t\treturn client\n\t\t\t},\n\t\t})\n\n\t\treturn { eventStore, skill }\n\t}\n}\n"],"file":"EventStore.test.js"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
+
|
|
20
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
+
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
+
|
|
24
|
+
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
|
|
25
|
+
|
|
26
|
+
var _test = require("@sprucelabs/test");
|
|
27
|
+
|
|
28
|
+
var _CommandService = _interopRequireDefault(require("../../services/CommandService"));
|
|
29
|
+
|
|
30
|
+
var _AbstractCliTest2 = _interopRequireDefault(require("../../tests/AbstractCliTest"));
|
|
31
|
+
|
|
32
|
+
var _dec, _class;
|
|
33
|
+
|
|
34
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
35
|
+
|
|
36
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
37
|
+
|
|
38
|
+
var StoreFeatureTest = (_dec = (0, _test.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
|
|
39
|
+
(0, _inherits2["default"])(StoreFeatureTest, _AbstractCliTest);
|
|
40
|
+
|
|
41
|
+
var _super = _createSuper(StoreFeatureTest);
|
|
42
|
+
|
|
43
|
+
function StoreFeatureTest() {
|
|
44
|
+
(0, _classCallCheck2["default"])(this, StoreFeatureTest);
|
|
45
|
+
return _super.apply(this, arguments);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
(0, _createClass2["default"])(StoreFeatureTest, null, [{
|
|
49
|
+
key: "syncsOnWillExecute",
|
|
50
|
+
value: function () {
|
|
51
|
+
var _syncsOnWillExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
52
|
+
var hitCount, emitter;
|
|
53
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
54
|
+
while (1) {
|
|
55
|
+
switch (_context2.prev = _context2.next) {
|
|
56
|
+
case 0:
|
|
57
|
+
_context2.next = 2;
|
|
58
|
+
return this.FeatureFixture().installCachedFeatures('stores');
|
|
59
|
+
|
|
60
|
+
case 2:
|
|
61
|
+
_CommandService["default"].setMockResponse(/yarn/, {
|
|
62
|
+
code: 0
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
hitCount = 0;
|
|
66
|
+
emitter = this.getEmitter();
|
|
67
|
+
_context2.next = 7;
|
|
68
|
+
return emitter.on('feature.will-execute', /*#__PURE__*/function () {
|
|
69
|
+
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
|
|
70
|
+
var featureCode, actionCode;
|
|
71
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
72
|
+
while (1) {
|
|
73
|
+
switch (_context.prev = _context.next) {
|
|
74
|
+
case 0:
|
|
75
|
+
featureCode = _ref.featureCode, actionCode = _ref.actionCode;
|
|
76
|
+
|
|
77
|
+
if (featureCode === 'store' && actionCode === 'sync') {
|
|
78
|
+
hitCount++;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
case 2:
|
|
82
|
+
case "end":
|
|
83
|
+
return _context.stop();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}, _callee);
|
|
87
|
+
}));
|
|
88
|
+
|
|
89
|
+
return function (_x) {
|
|
90
|
+
return _ref2.apply(this, arguments);
|
|
91
|
+
};
|
|
92
|
+
}());
|
|
93
|
+
|
|
94
|
+
case 7:
|
|
95
|
+
_context2.next = 9;
|
|
96
|
+
return emitter.emit('feature.will-execute', {
|
|
97
|
+
featureCode: 'node',
|
|
98
|
+
actionCode: 'upgrade'
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
case 9:
|
|
102
|
+
_test.assert.isEqual(hitCount, 1);
|
|
103
|
+
|
|
104
|
+
_context2.next = 12;
|
|
105
|
+
return emitter.emit('feature.did-execute', {
|
|
106
|
+
featureCode: 'node',
|
|
107
|
+
actionCode: 'upgrade',
|
|
108
|
+
results: {}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
case 12:
|
|
112
|
+
_test.assert.isEqual(hitCount, 1);
|
|
113
|
+
|
|
114
|
+
case 13:
|
|
115
|
+
case "end":
|
|
116
|
+
return _context2.stop();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}, _callee2, this);
|
|
120
|
+
}));
|
|
121
|
+
|
|
122
|
+
function syncsOnWillExecute() {
|
|
123
|
+
return _syncsOnWillExecute.apply(this, arguments);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return syncsOnWillExecute;
|
|
127
|
+
}()
|
|
128
|
+
}]);
|
|
129
|
+
return StoreFeatureTest;
|
|
130
|
+
}(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "syncsOnWillExecute", [_dec], Object.getOwnPropertyDescriptor(_class, "syncsOnWillExecute"), _class)), _class));
|
|
131
|
+
exports["default"] = StoreFeatureTest;
|
|
132
|
+
//# sourceMappingURL=StoreFeature.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/__tests__/implementation/StoreFeature.test.ts"],"names":["StoreFeatureTest","FeatureFixture","installCachedFeatures","CommandService","setMockResponse","code","hitCount","emitter","getEmitter","on","featureCode","actionCode","emit","assert","isEqual","results","AbstractCliTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,gB,WACnB,iB;;;;;;;;;;;;;8GAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAICC,2CAAeC,eAAf,CAA+B,MAA/B,EAAuC;AACtCC,kBAAAA,IAAI,EAAE;AADgC,iBAAvC;;AAIIC,gBAAAA,QARL,GAQgB,CARhB;AASOC,gBAAAA,OATP,GASiB,KAAKC,UAAL,EATjB;AAAA;AAAA,uBAUOD,OAAO,CAACE,EAAR,CACL,sBADK;AAAA,4GAEL;AAAA;AAAA;AAAA;AAAA;AAAA;AAASC,4BAAAA,WAAT,QAASA,WAAT,EAAsBC,UAAtB,QAAsBA,UAAtB;;AACC,gCAAID,WAAW,KAAK,OAAhB,IAA2BC,UAAU,KAAK,MAA9C,EAAsD;AACrDL,8BAAAA,QAAQ;AACR;;AAHF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAFK;;AAAA;AAAA;AAAA;AAAA,oBAVP;;AAAA;AAAA;AAAA,uBAmBOC,OAAO,CAACK,IAAR,CAAa,sBAAb,EAAqC;AAC1CF,kBAAAA,WAAW,EAAE,MAD6B;AAE1CC,kBAAAA,UAAU,EAAE;AAF8B,iBAArC,CAnBP;;AAAA;AAwBCE,6BAAOC,OAAP,CAAeR,QAAf,EAAyB,CAAzB;;AAxBD;AAAA,uBA0BOC,OAAO,CAACK,IAAR,CAAa,qBAAb,EAAoC;AACzCF,kBAAAA,WAAW,EAAE,MAD4B;AAEzCC,kBAAAA,UAAU,EAAE,SAF6B;AAGzCI,kBAAAA,OAAO,EAAE;AAHgC,iBAApC,CA1BP;;AAAA;AAgCCF,6BAAOC,OAAP,CAAeR,QAAf,EAAyB,CAAzB;;AAhCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAD6CU,4B","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport CommandService from '../../services/CommandService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class StoreFeatureTest extends AbstractCliTest {\n\t@test()\n\tprotected static async syncsOnWillExecute() {\n\t\tawait this.FeatureFixture().installCachedFeatures('stores')\n\n\t\tCommandService.setMockResponse(/yarn/, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tlet hitCount = 0\n\t\tconst emitter = this.getEmitter()\n\t\tawait emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tasync ({ featureCode, actionCode }) => {\n\t\t\t\tif (featureCode === 'store' && actionCode === 'sync') {\n\t\t\t\t\thitCount++\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\n\t\tawait emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode: 'node',\n\t\t\tactionCode: 'upgrade',\n\t\t})\n\n\t\tassert.isEqual(hitCount, 1)\n\n\t\tawait emitter.emit('feature.did-execute', {\n\t\t\tfeatureCode: 'node',\n\t\t\tactionCode: 'upgrade',\n\t\t\tresults: {},\n\t\t})\n\n\t\tassert.isEqual(hitCount, 1)\n\t}\n}\n"],"file":"StoreFeature.test.js"}
|
package/build/cli.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import ServiceFactory from './services/ServiceFactory';
|
|
|
12
12
|
import { ApiClientFactory } from './types/apiClient.types';
|
|
13
13
|
import { GraphicsInterface } from './types/cli.types';
|
|
14
14
|
interface HealthOptions {
|
|
15
|
-
|
|
15
|
+
shouldRunOnSourceFiles?: boolean;
|
|
16
16
|
}
|
|
17
17
|
export interface CliInterface extends MercuryEventEmitter<GlobalEventContract> {
|
|
18
18
|
installFeatures: FeatureInstaller['install'];
|
package/build/cli.js
CHANGED
|
@@ -244,7 +244,7 @@ var Cli = /*#__PURE__*/function () {
|
|
|
244
244
|
case 5:
|
|
245
245
|
_context5.prev = 5;
|
|
246
246
|
commandService = this.serviceFactory.Service(this.cwd, 'command');
|
|
247
|
-
command = (options === null || options === void 0 ? void 0 : options.
|
|
247
|
+
command = (options === null || options === void 0 ? void 0 : options.shouldRunOnSourceFiles) === false ? 'yarn health' : 'yarn health.local';
|
|
248
248
|
_context5.next = 10;
|
|
249
249
|
return commandService.execute(command);
|
|
250
250
|
|
package/build/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts"],"names":["Cli","cwd","featureInstaller","serviceFactory","emitter","attacher","actionExecuter","on","off","emit","options","install","code","getFeature","isInstalled","skill","status","errors","SpruceError","commandService","Service","command","isRunningLocally","execute","results","resultParts","stdout","split","HEALTH_DIVIDER","JSON","parse","error","originalError","apiClients","key","disconnect","program","CliGlobalEmitter","Emitter","process","ImportService","enableCaching","ServiceFactory","apiClientFactory","buildApiClientFactory","storeFactory","StoreFactory","homeDir","osUtil","homedir","ui","graphicsInterface","TerminalInterface","writerFactory","WriterFactory","templates","settings","linter","optionOverrides","loadOptionOverrides","blockedCommands","loadCommandBlocks","actionFactory","ActionFactory","ActionExecuter","featureInstallerFactory","FeatureInstallerFactory","WithAllFeatures","FeatureCommandAttacher","codes","featureCodes","feature","attachFeature","commands","sort","a","b","_name","localeCompare","action","_","args","cli","pkg","blocks","doesExist","get","mapped","overrides","Object","keys","forEach","argParserUtil","bootOptions","apiClientUtil","generateClientCacheKey","connectToApi","connect","eventsContracts","require","MercuryClientFactory","Client","contracts","host","DEFAULT_HOST","allowSelfSignedCrt","client","shouldAuthAsCurrentSkill","shouldAuthAsLoggedInPerson","auth","skillId","apiKey","getCurrentSkill","id","person","getLoggedInPerson","token","length","authenticate","run","argv","Command","storeOptionsAsProperties","option","dirIdx","findIndex","v","dir","newCwd","diskUtil","resolvePath","terminal","env","CLI_RENDER_STACK_TRACES","clear","renderHero","CLI_HERO","isAskingForVersion","json","renderHeadline","version","Boot","HOST","setupInFlightEntertainment","parseAsync","_actionResults","getClients","doesSupportColor","ENABLE_INSTALL_INTERTAINMENT","CommandService","__dirname","InFlightEntertainment","setup","FeatureInstaller","startInFlightIntertainmentHandler","didUpdateHandler","start","message","writeStatus","stopInFlightIntertainmentHandler","stop"],"mappings":"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","sourcesContent":["import osUtil from 'os'\nimport {\n\tConnectionOptions,\n\tMercuryClientFactory,\n} from '@sprucelabs/mercury-client'\nimport { MercuryEventEmitter, SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tdiskUtil,\n\tHealthCheckResults,\n\tHEALTH_DIVIDER,\n} from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport { Command, CommanderStatic } from 'commander'\nimport './addons/filePrompt.addon'\nimport { CLI_HERO, DEFAULT_HOST } from './constants'\nimport SpruceError from './errors/SpruceError'\nimport ActionExecuter from './features/ActionExecuter'\nimport ActionFactory from './features/ActionFactory'\nimport FeatureCommandAttacher, {\n\tBlockedCommands,\n\tOptionOverrides,\n} from './features/FeatureCommandAttacher'\nimport FeatureInstaller from './features/FeatureInstaller'\nimport FeatureInstallerFactory from './features/FeatureInstallerFactory'\nimport { FeatureCode, InstallFeatureOptions } from './features/features.types'\nimport CliGlobalEmitter, {\n\tGlobalEmitter,\n\tGlobalEventContract,\n} from './GlobalEmitter'\nimport InFlightEntertainment from './InFlightEntertainment'\nimport TerminalInterface from './interfaces/TerminalInterface'\nimport CommandService from './services/CommandService'\nimport ImportService from './services/ImportService'\nimport PkgService from './services/PkgService'\nimport ServiceFactory from './services/ServiceFactory'\nimport StoreFactory from './stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from './types/apiClient.types'\nimport { GraphicsInterface } from './types/cli.types'\nimport apiClientUtil from './utilities/apiClient.utility'\nimport { argParserUtil } from './utilities/argParser.utility'\nimport WriterFactory from './writers/WriterFactory'\n\ninterface HealthOptions {\n\tisRunningLocally?: boolean\n}\n\nexport interface CliInterface extends MercuryEventEmitter<GlobalEventContract> {\n\tinstallFeatures: FeatureInstaller['install']\n\tgetFeature: FeatureInstaller['getFeature']\n\tcheckHealth(options?: HealthOptions): Promise<HealthCheckResults>\n}\n\nexport interface CliBootOptions {\n\tcwd?: string\n\thomeDir?: string\n\tprogram?: CommanderStatic['program']\n\tgraphicsInterface?: GraphicsInterface\n\temitter?: GlobalEmitter\n\tapiClientFactory?: ApiClientFactory\n\tfeatureInstaller?: FeatureInstaller\n\thost?: string\n}\n\ntype PromiseCache = Record<string, Promise<ApiClient>>\n\nexport default class Cli implements CliInterface {\n\tprivate cwd: string\n\tprivate featureInstaller: FeatureInstaller\n\tprivate serviceFactory: ServiceFactory\n\tpublic readonly emitter: GlobalEmitter\n\tprivate static apiClients: PromiseCache = {}\n\tprivate attacher?: FeatureCommandAttacher\n\tprivate actionExecuter?: ActionExecuter\n\n\tprivate constructor(\n\t\tcwd: string,\n\t\tfeatureInstaller: FeatureInstaller,\n\t\tserviceFactory: ServiceFactory,\n\t\temitter: GlobalEmitter,\n\t\tattacher?: FeatureCommandAttacher,\n\t\tactionExecuter?: ActionExecuter\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.featureInstaller = featureInstaller\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.emitter = emitter\n\t\tthis.attacher = attacher\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic static async resetApiClients() {\n\t\tfor (const key in this.apiClients) {\n\t\t\tawait (await this.apiClients[key]).disconnect()\n\t\t}\n\n\t\tthis.apiClients = {}\n\t}\n\n\tpublic getAttacher() {\n\t\treturn this.attacher\n\t}\n\n\tpublic getActionExecuter() {\n\t\treturn this.actionExecuter\n\t}\n\n\tpublic async on(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.on(...args)\n\t}\n\n\tpublic async off(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.off(...args)\n\t}\n\n\tpublic async emit(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.emit(...args)\n\t}\n\n\tpublic async installFeatures(options: InstallFeatureOptions) {\n\t\treturn this.featureInstaller.install(options)\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async checkHealth(\n\t\toptions?: HealthOptions\n\t): Promise<HealthCheckResults> {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (!isInstalled) {\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tcode: 'SKILL_NOT_INSTALLED',\n\t\t\t\t\t\t}),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst commandService = this.serviceFactory.Service(this.cwd, 'command')\n\t\t\tconst command =\n\t\t\t\toptions?.isRunningLocally === false\n\t\t\t\t\t? 'yarn health'\n\t\t\t\t\t: 'yarn health.local'\n\t\t\tconst results = await commandService.execute(command)\n\t\t\tconst resultParts = results.stdout.split(HEALTH_DIVIDER)\n\n\t\t\treturn JSON.parse(resultParts[1]) as HealthCheckResults\n\t\t} catch (originalError: any) {\n\t\t\tconst error = new SpruceError({\n\t\t\t\tcode: 'BOOT_ERROR',\n\t\t\t\toriginalError,\n\t\t\t})\n\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [error],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static async Boot(options?: CliBootOptions): Promise<CliInterface> {\n\t\tconst program = options?.program\n\t\tconst emitter = options?.emitter ?? CliGlobalEmitter.Emitter()\n\n\t\tlet cwd = options?.cwd ?? process.cwd()\n\n\t\tImportService.enableCaching()\n\n\t\tconst serviceFactory = new ServiceFactory()\n\t\tconst apiClientFactory =\n\t\t\toptions?.apiClientFactory ??\n\t\t\tCli.buildApiClientFactory(cwd, serviceFactory, options)\n\n\t\tconst storeFactory = new StoreFactory({\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: options?.homeDir ?? osUtil.homedir(),\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t})\n\n\t\tconst ui = options?.graphicsInterface ?? new TerminalInterface(cwd)\n\t\tlet featureInstaller: FeatureInstaller | undefined\n\n\t\tconst writerFactory = new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui,\n\t\t\tsettings: serviceFactory.Service(cwd, 'settings'),\n\t\t\tlinter: serviceFactory.Service(cwd, 'lint'),\n\t\t})\n\n\t\tconst optionOverrides = this.loadOptionOverrides(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst blockedCommands = this.loadCommandBlocks(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\tui,\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory,\n\t\t\ttemplates,\n\t\t\twriterFactory,\n\t\t\tblockedCommands,\n\t\t\toptionOverrides,\n\t\t})\n\n\t\tconst actionExecuter = new ActionExecuter({\n\t\t\tactionFactory,\n\t\t\tui,\n\t\t\temitter,\n\t\t\t//@ts-ignore\n\t\t\tfeatureInstallerFactory: () => featureInstaller,\n\t\t})\n\n\t\tfeatureInstaller =\n\t\t\toptions?.featureInstaller ??\n\t\t\tFeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\tlet attacher: FeatureCommandAttacher | undefined\n\n\t\tif (program) {\n\t\t\tattacher = new FeatureCommandAttacher({\n\t\t\t\tprogram,\n\t\t\t\tui,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\t\tconst codes = FeatureInstallerFactory.featureCodes\n\n\t\t\tfor (const code of codes) {\n\t\t\t\tconst feature = featureInstaller.getFeature(code)\n\t\t\t\tawait attacher.attachFeature(feature)\n\t\t\t}\n\n\t\t\tprogram.commands.sort((a: any, b: any) => a._name.localeCompare(b._name))\n\n\t\t\tprogram.action((_, command) => {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'INVALID_COMMAND',\n\t\t\t\t\targs: command.args || [],\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tconst cli = new Cli(\n\t\t\tcwd,\n\t\t\tfeatureInstaller,\n\t\t\tserviceFactory,\n\t\t\temitter,\n\t\t\tattacher,\n\t\t\tactionExecuter\n\t\t)\n\n\t\treturn cli as CliInterface\n\t}\n\n\tprivate static loadCommandBlocks(pkg: PkgService): BlockedCommands {\n\t\tlet blocks: BlockedCommands = {}\n\t\tif (pkg.doesExist()) {\n\t\t\tblocks = pkg.get('skill.blockedCommands') ?? {}\n\t\t}\n\t\treturn blocks\n\t}\n\n\tprivate static loadOptionOverrides(pkg: PkgService): OptionOverrides {\n\t\tconst mapped: OptionOverrides = {}\n\n\t\tif (pkg.doesExist()) {\n\t\t\tconst overrides = pkg.get('skill.commandOverrides')\n\n\t\t\tObject.keys(overrides ?? {}).forEach((command) => {\n\t\t\t\tconst options = argParserUtil.parse(overrides[command])\n\t\t\t\tmapped[command] = options\n\t\t\t})\n\t\t}\n\t\treturn mapped\n\t}\n\n\tpublic static buildApiClientFactory(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): ApiClientFactory {\n\t\tconst apiClientFactory = async (options?: ApiClientFactoryOptions) => {\n\t\t\tconst key = apiClientUtil.generateClientCacheKey(options)\n\n\t\t\tif (!Cli.apiClients[key]) {\n\t\t\t\tCli.apiClients[key] = Cli.connectToApi(\n\t\t\t\t\tcwd,\n\t\t\t\t\tserviceFactory,\n\t\t\t\t\toptions,\n\t\t\t\t\tbootOptions\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn Cli.apiClients[key]\n\t\t}\n\n\t\treturn apiClientFactory\n\t}\n\n\tprivate static async connectToApi(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\toptions?: ApiClientFactoryOptions,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): Promise<ApiClient> {\n\t\tconst connect = bootOptions?.apiClientFactory\n\t\t\t? bootOptions.apiClientFactory\n\t\t\t: async () => {\n\t\t\t\t\tconst eventsContracts =\n\t\t\t\t\t\trequire('#spruce/events/events.contract').default\n\n\t\t\t\t\tconst client: ApiClient = await MercuryClientFactory.Client({\n\t\t\t\t\t\tcontracts: eventsContracts as any,\n\t\t\t\t\t\thost: bootOptions?.host ?? DEFAULT_HOST,\n\t\t\t\t\t\tallowSelfSignedCrt: true,\n\t\t\t\t\t\t...bootOptions,\n\t\t\t\t\t})\n\n\t\t\t\t\treturn client\n\t\t\t }\n\n\t\tconst {\n\t\t\tshouldAuthAsCurrentSkill = false,\n\t\t\tshouldAuthAsLoggedInPerson = true,\n\t\t} = options ?? {}\n\n\t\tconst client = await connect()\n\n\t\tlet auth: SpruceSchemas.Mercury.v2020_12_25.AuthenticateEmitPayload = {}\n\n\t\tif (options?.skillId && options?.apiKey) {\n\t\t\tauth = {\n\t\t\t\tskillId: options.skillId,\n\t\t\t\tapiKey: options.apiKey,\n\t\t\t}\n\t\t} else if (shouldAuthAsCurrentSkill) {\n\t\t\tconst skill = serviceFactory.Service(cwd, 'auth').getCurrentSkill()\n\n\t\t\tif (skill) {\n\t\t\t\tauth = {\n\t\t\t\t\tskillId: skill.id,\n\t\t\t\t\tapiKey: skill.apiKey,\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (shouldAuthAsLoggedInPerson) {\n\t\t\tconst person = serviceFactory.Service(cwd, 'auth').getLoggedInPerson()\n\n\t\t\tif (person) {\n\t\t\t\tauth.token = person.token\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(auth).length > 0) {\n\t\t\tawait client.authenticate({\n\t\t\t\t...(auth as any),\n\t\t\t})\n\n\t\t\t//@ts-ignore\n\t\t\tclient.auth = auth\n\t\t}\n\n\t\treturn client\n\t}\n}\n\nexport async function run(argv: string[] = []): Promise<void> {\n\tconst program = new Command()\n\tlet cwd = process.cwd()\n\n\tprogram.storeOptionsAsProperties(false)\n\tprogram.option('--no-color', 'Disable color output in the console')\n\tprogram.option(\n\t\t'-d, --directory <path>',\n\t\t'The working directory to execute the command'\n\t)\n\tprogram.option('-v, --version', 'The version of the cli')\n\n\tconst dirIdx = process.argv.findIndex(\n\t\t(v) => v === '--directory' || v === '-d'\n\t)\n\n\tif (dirIdx > -1) {\n\t\tconst dir = process.argv[dirIdx + 1]\n\t\tconst newCwd = diskUtil.resolvePath(cwd, dir)\n\t\tcwd = newCwd\n\t}\n\n\tconst terminal = new TerminalInterface(\n\t\tcwd,\n\t\tprocess.env.CLI_RENDER_STACK_TRACES !== 'false'\n\t)\n\tterminal.clear()\n\tterminal.renderHero(CLI_HERO)\n\n\tconst isAskingForVersion =\n\t\tprocess.argv.findIndex((v) => v === '--version' || v === '-v') > -1\n\n\tif (isAskingForVersion) {\n\t\tconst json = require('../package.json')\n\t\tterminal.renderHeadline(`Version ${json.version}`)\n\t\treturn\n\t}\n\n\tawait Cli.Boot({\n\t\tprogram,\n\t\tcwd,\n\t\thost: process.env.HOST,\n\t\tgraphicsInterface: terminal,\n\t})\n\n\tawait setupInFlightEntertainment(terminal)\n\n\tconst command = await program.parseAsync(argv)\n\n\t//@ts-ignore\n\tconst results = await command._actionResults[0]\n\n\tfor (const client of MercuryClientFactory.getClients()) {\n\t\tawait client.disconnect()\n\t}\n\n\treturn results\n}\n\nasync function setupInFlightEntertainment(ui: TerminalInterface) {\n\tif (\n\t\tTerminalInterface.doesSupportColor() &&\n\t\tprocess.env.ENABLE_INSTALL_INTERTAINMENT !== 'false'\n\t) {\n\t\tconst command = new CommandService(diskUtil.resolvePath(__dirname, '../'))\n\t\tInFlightEntertainment.setup({ command, ui })\n\n\t\tFeatureInstaller.startInFlightIntertainmentHandler = (didUpdateHandler) => {\n\t\t\tInFlightEntertainment.start()\n\t\t\tdidUpdateHandler((message) => {\n\t\t\t\tInFlightEntertainment.writeStatus(message)\n\t\t\t})\n\t\t}\n\n\t\tFeatureInstaller.stopInFlightIntertainmentHandler = () => {\n\t\t\tInFlightEntertainment.stop()\n\t\t}\n\t}\n}\n"],"file":"cli.js"}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"names":["Cli","cwd","featureInstaller","serviceFactory","emitter","attacher","actionExecuter","on","off","emit","options","install","code","getFeature","isInstalled","skill","status","errors","SpruceError","commandService","Service","command","shouldRunOnSourceFiles","execute","results","resultParts","stdout","split","HEALTH_DIVIDER","JSON","parse","error","originalError","apiClients","key","disconnect","program","CliGlobalEmitter","Emitter","process","ImportService","enableCaching","ServiceFactory","apiClientFactory","buildApiClientFactory","storeFactory","StoreFactory","homeDir","osUtil","homedir","ui","graphicsInterface","TerminalInterface","writerFactory","WriterFactory","templates","settings","linter","optionOverrides","loadOptionOverrides","blockedCommands","loadCommandBlocks","actionFactory","ActionFactory","ActionExecuter","featureInstallerFactory","FeatureInstallerFactory","WithAllFeatures","FeatureCommandAttacher","codes","featureCodes","feature","attachFeature","commands","sort","a","b","_name","localeCompare","action","_","args","cli","pkg","blocks","doesExist","get","mapped","overrides","Object","keys","forEach","argParserUtil","bootOptions","apiClientUtil","generateClientCacheKey","connectToApi","connect","eventsContracts","require","MercuryClientFactory","Client","contracts","host","DEFAULT_HOST","allowSelfSignedCrt","client","shouldAuthAsCurrentSkill","shouldAuthAsLoggedInPerson","auth","skillId","apiKey","getCurrentSkill","id","person","getLoggedInPerson","token","length","authenticate","run","argv","Command","storeOptionsAsProperties","option","dirIdx","findIndex","v","dir","newCwd","diskUtil","resolvePath","terminal","env","CLI_RENDER_STACK_TRACES","clear","renderHero","CLI_HERO","isAskingForVersion","json","renderHeadline","version","Boot","HOST","setupInFlightEntertainment","parseAsync","_actionResults","getClients","doesSupportColor","ENABLE_INSTALL_INTERTAINMENT","CommandService","__dirname","InFlightEntertainment","setup","FeatureInstaller","startInFlightIntertainmentHandler","didUpdateHandler","start","message","writeStatus","stopInFlightIntertainmentHandler","stop"],"mappings":"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","sourcesContent":["import osUtil from 'os'\nimport {\n\tConnectionOptions,\n\tMercuryClientFactory,\n} from '@sprucelabs/mercury-client'\nimport { MercuryEventEmitter, SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tdiskUtil,\n\tHealthCheckResults,\n\tHEALTH_DIVIDER,\n} from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport { Command, CommanderStatic } from 'commander'\nimport './addons/filePrompt.addon'\nimport { CLI_HERO, DEFAULT_HOST } from './constants'\nimport SpruceError from './errors/SpruceError'\nimport ActionExecuter from './features/ActionExecuter'\nimport ActionFactory from './features/ActionFactory'\nimport FeatureCommandAttacher, {\n\tBlockedCommands,\n\tOptionOverrides,\n} from './features/FeatureCommandAttacher'\nimport FeatureInstaller from './features/FeatureInstaller'\nimport FeatureInstallerFactory from './features/FeatureInstallerFactory'\nimport { FeatureCode, InstallFeatureOptions } from './features/features.types'\nimport CliGlobalEmitter, {\n\tGlobalEmitter,\n\tGlobalEventContract,\n} from './GlobalEmitter'\nimport InFlightEntertainment from './InFlightEntertainment'\nimport TerminalInterface from './interfaces/TerminalInterface'\nimport CommandService from './services/CommandService'\nimport ImportService from './services/ImportService'\nimport PkgService from './services/PkgService'\nimport ServiceFactory from './services/ServiceFactory'\nimport StoreFactory from './stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from './types/apiClient.types'\nimport { GraphicsInterface } from './types/cli.types'\nimport apiClientUtil from './utilities/apiClient.utility'\nimport { argParserUtil } from './utilities/argParser.utility'\nimport WriterFactory from './writers/WriterFactory'\n\ninterface HealthOptions {\n\tshouldRunOnSourceFiles?: boolean\n}\n\nexport interface CliInterface extends MercuryEventEmitter<GlobalEventContract> {\n\tinstallFeatures: FeatureInstaller['install']\n\tgetFeature: FeatureInstaller['getFeature']\n\tcheckHealth(options?: HealthOptions): Promise<HealthCheckResults>\n}\n\nexport interface CliBootOptions {\n\tcwd?: string\n\thomeDir?: string\n\tprogram?: CommanderStatic['program']\n\tgraphicsInterface?: GraphicsInterface\n\temitter?: GlobalEmitter\n\tapiClientFactory?: ApiClientFactory\n\tfeatureInstaller?: FeatureInstaller\n\thost?: string\n}\n\ntype PromiseCache = Record<string, Promise<ApiClient>>\n\nexport default class Cli implements CliInterface {\n\tprivate cwd: string\n\tprivate featureInstaller: FeatureInstaller\n\tprivate serviceFactory: ServiceFactory\n\tpublic readonly emitter: GlobalEmitter\n\tprivate static apiClients: PromiseCache = {}\n\tprivate attacher?: FeatureCommandAttacher\n\tprivate actionExecuter?: ActionExecuter\n\n\tprivate constructor(\n\t\tcwd: string,\n\t\tfeatureInstaller: FeatureInstaller,\n\t\tserviceFactory: ServiceFactory,\n\t\temitter: GlobalEmitter,\n\t\tattacher?: FeatureCommandAttacher,\n\t\tactionExecuter?: ActionExecuter\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.featureInstaller = featureInstaller\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.emitter = emitter\n\t\tthis.attacher = attacher\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic static async resetApiClients() {\n\t\tfor (const key in this.apiClients) {\n\t\t\tawait (await this.apiClients[key]).disconnect()\n\t\t}\n\n\t\tthis.apiClients = {}\n\t}\n\n\tpublic getAttacher() {\n\t\treturn this.attacher\n\t}\n\n\tpublic getActionExecuter() {\n\t\treturn this.actionExecuter\n\t}\n\n\tpublic async on(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.on(...args)\n\t}\n\n\tpublic async off(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.off(...args)\n\t}\n\n\tpublic async emit(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.emit(...args)\n\t}\n\n\tpublic async installFeatures(options: InstallFeatureOptions) {\n\t\treturn this.featureInstaller.install(options)\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async checkHealth(\n\t\toptions?: HealthOptions\n\t): Promise<HealthCheckResults> {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (!isInstalled) {\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tcode: 'SKILL_NOT_INSTALLED',\n\t\t\t\t\t\t}),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst commandService = this.serviceFactory.Service(this.cwd, 'command')\n\t\t\tconst command =\n\t\t\t\toptions?.shouldRunOnSourceFiles === false\n\t\t\t\t\t? 'yarn health'\n\t\t\t\t\t: 'yarn health.local'\n\t\t\tconst results = await commandService.execute(command)\n\t\t\tconst resultParts = results.stdout.split(HEALTH_DIVIDER)\n\n\t\t\treturn JSON.parse(resultParts[1]) as HealthCheckResults\n\t\t} catch (originalError: any) {\n\t\t\tconst error = new SpruceError({\n\t\t\t\tcode: 'BOOT_ERROR',\n\t\t\t\toriginalError,\n\t\t\t})\n\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [error],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static async Boot(options?: CliBootOptions): Promise<CliInterface> {\n\t\tconst program = options?.program\n\t\tconst emitter = options?.emitter ?? CliGlobalEmitter.Emitter()\n\n\t\tlet cwd = options?.cwd ?? process.cwd()\n\n\t\tImportService.enableCaching()\n\n\t\tconst serviceFactory = new ServiceFactory()\n\t\tconst apiClientFactory =\n\t\t\toptions?.apiClientFactory ??\n\t\t\tCli.buildApiClientFactory(cwd, serviceFactory, options)\n\n\t\tconst storeFactory = new StoreFactory({\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: options?.homeDir ?? osUtil.homedir(),\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t})\n\n\t\tconst ui = options?.graphicsInterface ?? new TerminalInterface(cwd)\n\t\tlet featureInstaller: FeatureInstaller | undefined\n\n\t\tconst writerFactory = new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui,\n\t\t\tsettings: serviceFactory.Service(cwd, 'settings'),\n\t\t\tlinter: serviceFactory.Service(cwd, 'lint'),\n\t\t})\n\n\t\tconst optionOverrides = this.loadOptionOverrides(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst blockedCommands = this.loadCommandBlocks(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\tui,\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory,\n\t\t\ttemplates,\n\t\t\twriterFactory,\n\t\t\tblockedCommands,\n\t\t\toptionOverrides,\n\t\t})\n\n\t\tconst actionExecuter = new ActionExecuter({\n\t\t\tactionFactory,\n\t\t\tui,\n\t\t\temitter,\n\t\t\t//@ts-ignore\n\t\t\tfeatureInstallerFactory: () => featureInstaller,\n\t\t})\n\n\t\tfeatureInstaller =\n\t\t\toptions?.featureInstaller ??\n\t\t\tFeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\tlet attacher: FeatureCommandAttacher | undefined\n\n\t\tif (program) {\n\t\t\tattacher = new FeatureCommandAttacher({\n\t\t\t\tprogram,\n\t\t\t\tui,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\t\tconst codes = FeatureInstallerFactory.featureCodes\n\n\t\t\tfor (const code of codes) {\n\t\t\t\tconst feature = featureInstaller.getFeature(code)\n\t\t\t\tawait attacher.attachFeature(feature)\n\t\t\t}\n\n\t\t\tprogram.commands.sort((a: any, b: any) => a._name.localeCompare(b._name))\n\n\t\t\tprogram.action((_, command) => {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'INVALID_COMMAND',\n\t\t\t\t\targs: command.args || [],\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tconst cli = new Cli(\n\t\t\tcwd,\n\t\t\tfeatureInstaller,\n\t\t\tserviceFactory,\n\t\t\temitter,\n\t\t\tattacher,\n\t\t\tactionExecuter\n\t\t)\n\n\t\treturn cli as CliInterface\n\t}\n\n\tprivate static loadCommandBlocks(pkg: PkgService): BlockedCommands {\n\t\tlet blocks: BlockedCommands = {}\n\t\tif (pkg.doesExist()) {\n\t\t\tblocks = pkg.get('skill.blockedCommands') ?? {}\n\t\t}\n\t\treturn blocks\n\t}\n\n\tprivate static loadOptionOverrides(pkg: PkgService): OptionOverrides {\n\t\tconst mapped: OptionOverrides = {}\n\n\t\tif (pkg.doesExist()) {\n\t\t\tconst overrides = pkg.get('skill.commandOverrides')\n\n\t\t\tObject.keys(overrides ?? {}).forEach((command) => {\n\t\t\t\tconst options = argParserUtil.parse(overrides[command])\n\t\t\t\tmapped[command] = options\n\t\t\t})\n\t\t}\n\t\treturn mapped\n\t}\n\n\tpublic static buildApiClientFactory(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): ApiClientFactory {\n\t\tconst apiClientFactory = async (options?: ApiClientFactoryOptions) => {\n\t\t\tconst key = apiClientUtil.generateClientCacheKey(options)\n\n\t\t\tif (!Cli.apiClients[key]) {\n\t\t\t\tCli.apiClients[key] = Cli.connectToApi(\n\t\t\t\t\tcwd,\n\t\t\t\t\tserviceFactory,\n\t\t\t\t\toptions,\n\t\t\t\t\tbootOptions\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn Cli.apiClients[key]\n\t\t}\n\n\t\treturn apiClientFactory\n\t}\n\n\tprivate static async connectToApi(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\toptions?: ApiClientFactoryOptions,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): Promise<ApiClient> {\n\t\tconst connect = bootOptions?.apiClientFactory\n\t\t\t? bootOptions.apiClientFactory\n\t\t\t: async () => {\n\t\t\t\t\tconst eventsContracts =\n\t\t\t\t\t\trequire('#spruce/events/events.contract').default\n\n\t\t\t\t\tconst client: ApiClient = await MercuryClientFactory.Client({\n\t\t\t\t\t\tcontracts: eventsContracts as any,\n\t\t\t\t\t\thost: bootOptions?.host ?? DEFAULT_HOST,\n\t\t\t\t\t\tallowSelfSignedCrt: true,\n\t\t\t\t\t\t...bootOptions,\n\t\t\t\t\t})\n\n\t\t\t\t\treturn client\n\t\t\t }\n\n\t\tconst {\n\t\t\tshouldAuthAsCurrentSkill = false,\n\t\t\tshouldAuthAsLoggedInPerson = true,\n\t\t} = options ?? {}\n\n\t\tconst client = await connect()\n\n\t\tlet auth: SpruceSchemas.Mercury.v2020_12_25.AuthenticateEmitPayload = {}\n\n\t\tif (options?.skillId && options?.apiKey) {\n\t\t\tauth = {\n\t\t\t\tskillId: options.skillId,\n\t\t\t\tapiKey: options.apiKey,\n\t\t\t}\n\t\t} else if (shouldAuthAsCurrentSkill) {\n\t\t\tconst skill = serviceFactory.Service(cwd, 'auth').getCurrentSkill()\n\n\t\t\tif (skill) {\n\t\t\t\tauth = {\n\t\t\t\t\tskillId: skill.id,\n\t\t\t\t\tapiKey: skill.apiKey,\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (shouldAuthAsLoggedInPerson) {\n\t\t\tconst person = serviceFactory.Service(cwd, 'auth').getLoggedInPerson()\n\n\t\t\tif (person) {\n\t\t\t\tauth.token = person.token\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(auth).length > 0) {\n\t\t\tawait client.authenticate({\n\t\t\t\t...(auth as any),\n\t\t\t})\n\n\t\t\t//@ts-ignore\n\t\t\tclient.auth = auth\n\t\t}\n\n\t\treturn client\n\t}\n}\n\nexport async function run(argv: string[] = []): Promise<void> {\n\tconst program = new Command()\n\tlet cwd = process.cwd()\n\n\tprogram.storeOptionsAsProperties(false)\n\tprogram.option('--no-color', 'Disable color output in the console')\n\tprogram.option(\n\t\t'-d, --directory <path>',\n\t\t'The working directory to execute the command'\n\t)\n\tprogram.option('-v, --version', 'The version of the cli')\n\n\tconst dirIdx = process.argv.findIndex(\n\t\t(v) => v === '--directory' || v === '-d'\n\t)\n\n\tif (dirIdx > -1) {\n\t\tconst dir = process.argv[dirIdx + 1]\n\t\tconst newCwd = diskUtil.resolvePath(cwd, dir)\n\t\tcwd = newCwd\n\t}\n\n\tconst terminal = new TerminalInterface(\n\t\tcwd,\n\t\tprocess.env.CLI_RENDER_STACK_TRACES !== 'false'\n\t)\n\tterminal.clear()\n\tterminal.renderHero(CLI_HERO)\n\n\tconst isAskingForVersion =\n\t\tprocess.argv.findIndex((v) => v === '--version' || v === '-v') > -1\n\n\tif (isAskingForVersion) {\n\t\tconst json = require('../package.json')\n\t\tterminal.renderHeadline(`Version ${json.version}`)\n\t\treturn\n\t}\n\n\tawait Cli.Boot({\n\t\tprogram,\n\t\tcwd,\n\t\thost: process.env.HOST,\n\t\tgraphicsInterface: terminal,\n\t})\n\n\tawait setupInFlightEntertainment(terminal)\n\n\tconst command = await program.parseAsync(argv)\n\n\t//@ts-ignore\n\tconst results = await command._actionResults[0]\n\n\tfor (const client of MercuryClientFactory.getClients()) {\n\t\tawait client.disconnect()\n\t}\n\n\treturn results\n}\n\nasync function setupInFlightEntertainment(ui: TerminalInterface) {\n\tif (\n\t\tTerminalInterface.doesSupportColor() &&\n\t\tprocess.env.ENABLE_INSTALL_INTERTAINMENT !== 'false'\n\t) {\n\t\tconst command = new CommandService(diskUtil.resolvePath(__dirname, '../'))\n\t\tInFlightEntertainment.setup({ command, ui })\n\n\t\tFeatureInstaller.startInFlightIntertainmentHandler = (didUpdateHandler) => {\n\t\t\tInFlightEntertainment.start()\n\t\t\tdidUpdateHandler((message) => {\n\t\t\t\tInFlightEntertainment.writeStatus(message)\n\t\t\t})\n\t\t}\n\n\t\tFeatureInstaller.stopInFlightIntertainmentHandler = () => {\n\t\t\tInFlightEntertainment.stop()\n\t\t}\n\t}\n}\n"],"file":"cli.js"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FileDescription } from '../../types/cli.types';
|
|
2
2
|
import AbstractFeature, { FeatureDependency, FeatureOptions } from '../AbstractFeature';
|
|
3
|
-
import { FeatureCode } from '../features.types';
|
|
3
|
+
import { FeatureActionResponse, FeatureCode } from '../features.types';
|
|
4
4
|
import EventContractBuilder from './builders/EventContractBuilder';
|
|
5
5
|
declare module '../../features/features.types' {
|
|
6
6
|
interface FeatureMap {
|
|
@@ -23,7 +23,7 @@ export default class EventFeature extends AbstractFeature {
|
|
|
23
23
|
private contractBuilder?;
|
|
24
24
|
private initiatingAction?;
|
|
25
25
|
constructor(options: FeatureOptions);
|
|
26
|
-
afterPackageInstall(): Promise<
|
|
26
|
+
afterPackageInstall(): Promise<FeatureActionResponse>;
|
|
27
27
|
private handleWillExecute;
|
|
28
28
|
private handleDidExecute;
|
|
29
29
|
private combineCodes;
|
|
@@ -31,6 +31,8 @@ var _syncEventOptions = _interopRequireDefault(require("../../.spruce/schemas/sp
|
|
|
31
31
|
|
|
32
32
|
var _TerminalInterface = _interopRequireDefault(require("../../interfaces/TerminalInterface"));
|
|
33
33
|
|
|
34
|
+
var _action = _interopRequireDefault(require("../../utilities/action.utility"));
|
|
35
|
+
|
|
34
36
|
var _AbstractFeature2 = _interopRequireDefault(require("../AbstractFeature"));
|
|
35
37
|
|
|
36
38
|
var _EventContractBuilder = _interopRequireDefault(require("./builders/EventContractBuilder"));
|
|
@@ -83,15 +85,34 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
83
85
|
key: "afterPackageInstall",
|
|
84
86
|
value: function () {
|
|
85
87
|
var _afterPackageInstall = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
88
|
+
var isSkillInstalled;
|
|
86
89
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
87
90
|
while (1) {
|
|
88
91
|
switch (_context.prev = _context.next) {
|
|
89
92
|
case 0:
|
|
90
93
|
_spruceSkillUtils.diskUtil.createDir(_spruceSkillUtils.diskUtil.resolvePath(this.cwd, 'src', 'events'));
|
|
91
94
|
|
|
95
|
+
_context.next = 3;
|
|
96
|
+
return this.featureInstaller.isInstalled('skill');
|
|
97
|
+
|
|
98
|
+
case 3:
|
|
99
|
+
isSkillInstalled = _context.sent;
|
|
100
|
+
|
|
101
|
+
if (!isSkillInstalled) {
|
|
102
|
+
_context.next = 8;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
_context.next = 7;
|
|
107
|
+
return this.Action('event', 'sync.listeners').execute({});
|
|
108
|
+
|
|
109
|
+
case 7:
|
|
110
|
+
return _context.abrupt("return", _context.sent);
|
|
111
|
+
|
|
112
|
+
case 8:
|
|
92
113
|
return _context.abrupt("return", {});
|
|
93
114
|
|
|
94
|
-
case
|
|
115
|
+
case 9:
|
|
95
116
|
case "end":
|
|
96
117
|
return _context.stop();
|
|
97
118
|
}
|
|
@@ -109,12 +130,13 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
109
130
|
key: "handleWillExecute",
|
|
110
131
|
value: function () {
|
|
111
132
|
var _handleWillExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(payload) {
|
|
112
|
-
var featureCode, actionCode, combined, isInstalled,
|
|
133
|
+
var featureCode, actionCode, results, combined, settings, isInstalled, remoteResults, syncResults;
|
|
113
134
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
114
135
|
while (1) {
|
|
115
136
|
switch (_context2.prev = _context2.next) {
|
|
116
137
|
case 0:
|
|
117
138
|
featureCode = payload.featureCode, actionCode = payload.actionCode;
|
|
139
|
+
results = {};
|
|
118
140
|
|
|
119
141
|
if (!this.initiatingAction) {
|
|
120
142
|
_EventStore["default"].clearCache();
|
|
@@ -123,28 +145,46 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
123
145
|
this.initiatingAction = combined;
|
|
124
146
|
}
|
|
125
147
|
|
|
126
|
-
_context2.next = 4;
|
|
127
|
-
return this.featureInstaller.isInstalled('event');
|
|
128
|
-
|
|
129
|
-
case 4:
|
|
130
|
-
isInstalled = _context2.sent;
|
|
131
|
-
|
|
132
148
|
if (featureCode === 'node' || featureCode === 'upgrade') {
|
|
133
149
|
settings = this.Service('eventSettings');
|
|
134
150
|
settings.clearListenerCache();
|
|
135
151
|
}
|
|
136
152
|
|
|
153
|
+
_context2.next = 6;
|
|
154
|
+
return this.featureInstaller.isInstalled('event');
|
|
155
|
+
|
|
156
|
+
case 6:
|
|
157
|
+
isInstalled = _context2.sent;
|
|
158
|
+
|
|
137
159
|
if (!(isInstalled && (featureCode === 'event' || featureCode === 'eventContract' || actionCode === 'login') && actionCode !== 'setRemote')) {
|
|
138
|
-
_context2.next =
|
|
160
|
+
_context2.next = 12;
|
|
139
161
|
break;
|
|
140
162
|
}
|
|
141
163
|
|
|
142
|
-
|
|
164
|
+
_context2.next = 10;
|
|
165
|
+
return this.appendRemoteToResultsOrPrompt();
|
|
143
166
|
|
|
144
|
-
case
|
|
145
|
-
|
|
167
|
+
case 10:
|
|
168
|
+
remoteResults = _context2.sent;
|
|
169
|
+
results = _action["default"].mergeActionResults(results, remoteResults);
|
|
146
170
|
|
|
147
|
-
case
|
|
171
|
+
case 12:
|
|
172
|
+
if (!(featureCode === 'node' && actionCode === 'upgrade' && isInstalled)) {
|
|
173
|
+
_context2.next = 17;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
_context2.next = 15;
|
|
178
|
+
return this.Action('event', 'sync.listeners').execute({});
|
|
179
|
+
|
|
180
|
+
case 15:
|
|
181
|
+
syncResults = _context2.sent;
|
|
182
|
+
results = _action["default"].mergeActionResults(results, syncResults);
|
|
183
|
+
|
|
184
|
+
case 17:
|
|
185
|
+
return _context2.abrupt("return", results);
|
|
186
|
+
|
|
187
|
+
case 18:
|
|
148
188
|
case "end":
|
|
149
189
|
return _context2.stop();
|
|
150
190
|
}
|