@sprucelabs/spruce-cli 14.22.4 → 14.22.8
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 +32 -0
- package/build/__tests__/implementation/EventStore.test.js +1 -1
- package/build/__tests__/implementation/EventStore.test.js.map +1 -1
- package/build/cli.js +43 -2
- package/build/cli.js.map +1 -1
- package/build/features/event/builders/EventContractBuilder.js +6 -1
- package/build/features/event/builders/EventContractBuilder.js.map +1 -1
- package/build/features/event/stores/EventStore.js +82 -53
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/skill/actions/RebuildAction.js +1 -1
- package/build/features/skill/actions/RebuildAction.js.map +1 -1
- package/build/services/ImportService.js +1 -1
- package/build/services/ImportService.js.map +1 -1
- package/package.json +29 -29
- package/src/__tests__/implementation/EventStore.test.ts +1 -1
- package/src/cli.ts +5 -0
- package/src/features/event/builders/EventContractBuilder.ts +3 -0
- package/src/features/event/stores/EventStore.ts +51 -21
- package/src/features/skill/actions/RebuildAction.ts +4 -1
- package/src/services/ImportService.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,38 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [14.22.8](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.22.7...v14.22.8) (2021-10-23)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [14.22.7](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.22.6...v14.22.7) (2021-10-22)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [14.22.6](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.22.5...v14.22.6) (2021-10-22)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [14.22.5](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.22.4...v14.22.5) (2021-10-21)
|
|
31
|
+
|
|
32
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
6
38
|
## [14.22.4](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.22.3...v14.22.4) (2021-10-21)
|
|
7
39
|
|
|
8
40
|
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
@@ -322,7 +322,7 @@ var EventStoreTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3
|
|
|
322
322
|
|
|
323
323
|
match = _test2["default"].assertFileByNameInGeneratedFiles("emitPayload.builder.ts", results.files);
|
|
324
324
|
|
|
325
|
-
_spruceSkillUtils.diskUtil.writeFile(match, '');
|
|
325
|
+
_spruceSkillUtils.diskUtil.writeFile(match, 'export default {}');
|
|
326
326
|
|
|
327
327
|
_context6.next = 13;
|
|
328
328
|
return _test.assert.doesThrowAsync(function () {
|
|
@@ -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","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\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, '')\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})\n\n\t\tassert.isTrue(contracts.length >= 2)\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","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","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAIA;;AAMA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,mBAAmB,GAAG,8BAA5B;AACA,IAAMC,UAAU,GAAG,8BAAnB;AACA,IAAMC,WAAW,GAAG,0BAApB;IAEqBC,c,WAWnB,iB,UAKA,iB,UAKA,iB,UAgBA,iB,UA2DA,iB,UAmCA,iB,UAmCA,iB,UAsDA,iB,UAkBA,iB;;;;;;;;;;;;SA5OD,eAA+B;AAC9B,aAAOC,8BAAYC,eAAZ,EAAP;AACA;;;;sGAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAEC,qBAAKC,YAAL,GAAoB,KAAKC,MAAL,CAA0B,OAA1B,EAAmC,QAAnC,CAApB;;AAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oHAKA;AAAA;AAAA;AAAA;AAAA;AAECC,6BAAOC,QAAP,CAAgB,KAAKC,KAAL,CAAW,OAAX,CAAhB;;AAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wHAKA;AAAA;AAAA;AAAA;AAAA;AAECF,6BAAOG,UAAP,CAAkB,KAAKD,KAAL,CAAW,OAAX,EAAoBE,mBAAtC;;AAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;qHAKA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEuB,KAAKF,KAAL,CAAW,OAAX,EAAoBE,mBAApB,CAAwC;AAC7DC,kBAAAA,cAAc,EAAE;AAD6C,iBAAxC,CAFvB;;AAAA;AAEOC,gBAAAA,OAFP;AAKSC,gBAAAA,SALT,GAK+BD,OAL/B,CAKSC,SALT,EAKoBC,MALpB,GAK+BF,OAL/B,CAKoBE,MALpB;;AAOCR,6BAAOS,MAAP,CAAcF,SAAS,CAACG,MAAV,IAAoB,CAAlC;;AAPD,uDASwBH,SATxB;;AAAA;AASC,sEAAkC;AAAvBI,oBAAAA,QAAuB;AACjC,6DAAsBA,QAAtB;AACA;AAXF;AAAA;AAAA;AAAA;AAAA;;AAaCX,6BAAOY,OAAP,CAAeJ,MAAM,CAACE,MAAtB,EAA8B,CAA9B;;AAbD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iHAgBA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAEOG,gBAAAA,mBAFP,GAE6B,KAAKC,sBAAL,EAF7B;AAAA;AAAA,uBAGmBD,mBAAmB,CAACE,WAApB,CAAgC;AACjDC,kBAAAA,IAAI,EAAE;AAD2C,iBAAhC,CAHnB;;AAAA;AAGOC,gBAAAA,GAHP;AAAA;AAAA,uBAQQ,KAAKC,wBAAL,CAA8BD,GAA9B,EAAmC,SAAnC,CARR;;AAAA;AAAA;AAOqBE,gBAAAA,WAPrB,yBAOSC,UAPT;AAOyCC,gBAAAA,MAPzC,yBAOkCC,KAPlC;AAAA;AAAA,uBAU2C,KAAKJ,wBAAL,CACzCD,GADyC,EAEzC,SAFyC,CAV3C;;AAAA;AAAA;AAUqBM,gBAAAA,WAVrB,0BAUSH,UAVT;AAAA;AAAA,uBAeOD,WAAW,CAACK,qBAAZ,CAAkC;AACvCC,kBAAAA,aAAa,EAAE;AACdC,oBAAAA,eAAe,qEACU,KAAKC,OAAL,CAAaC,UADvB,GACsC;AACnDC,sBAAAA,iBAAiB,EAAE,uDAAgC;AAClDC,wBAAAA,SAAS,gCAAyB,KAAKH,OAAL,CAAaC,UAAtC,CADyC;AAElDG,wBAAAA,YAAY,EAAEC;AAFoC,uBAAhC,CADgC;AAKnDC,sBAAAA,sBAAsB,EAAE,2CAAwB;AAC/CC,wBAAAA,EAAE,EAAE,6BAD2C;AAE/ClB,wBAAAA,IAAI,EAAE,uBAFyC;AAG/CmB,wBAAAA,WAAW,EAAE,CACZ;AACCD,0BAAAA,EAAE,EAAE,gBADL;AAEClB,0BAAAA,IAAI,EAAE,eAFP;AAGCoB,0BAAAA,QAAQ,EAAE;AACTd,4BAAAA,KAAK,EAAE;AADE;AAHX,yBADY;AAHkC,uBAAxB;AAL2B,qBADtC;AADD;AADwB,iBAAlC,CAfP;;AAAA;AAAA;AAAA,uBAyC6BC,WAAW,CAACnB,mBAAZ,CAAgC;AAC3DC,kBAAAA,cAAc,EAAE;AAD2C,iBAAhC,CAzC7B;;AAAA;AAAA;AAyCSE,gBAAAA,SAzCT,yBAyCSA,SAzCT;;AA6CCP,6BAAOS,MAAP,CAAcF,SAAS,CAACG,MAAV,IAAoB,CAAlC;;AACM2B,gBAAAA,aA9CP,GA8CuB9B,SAAS,CAAC,CAAD,CA9ChC;AAgDO+B,gBAAAA,GAhDP,GAgDaC,oCAAkBC,kBAAlB,CACXH,aADW,YAERhB,MAAM,CAACoB,IAFC,kCAE2B,KAAKd,OAAL,CAAaC,UAFxC,EAhDb;;AAqDC5B,6BAAOY,OAAP,0BACC0B,GAAG,CAACL,sBADL,0DACC,sBAA4BC,EAD7B,EAEC,6BAFD;;AArDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;2HA2DA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKQ,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAAA;AAAA,uBAIqB,KAAKC,eAAL,GAAuBC,oBAAvB,CAA4C;AAC/D7B,kBAAAA,IAAI,EAAE;AADyD,iBAA5C,CAJrB;;AAAA;AAIOM,gBAAAA,KAJP;AAAA;AAAA,uBAQuB,KAAKxB,YAAL,CAAkBgD,OAAlB,CAA0B;AAC/CC,kBAAAA,YAAY,EAAEvD,mBADiC;AAE/CwD,kBAAAA,SAAS,EAAEvD,UAFoC;AAG/CwD,kBAAAA,SAAS,EAAEvD;AAHoC,iBAA1B,CARvB;;AAAA;AAQOY,gBAAAA,OARP;;AAcCN,6BAAOkD,OAAP,CAAe5C,OAAO,CAACE,MAAvB;;AAEM2C,gBAAAA,KAhBP,GAgBeC,kBAASC,gCAAT,2BAEb/C,OAAO,CAACgD,KAFK,CAhBf;;AAqBCC,2CAASC,SAAT,CAAmBL,KAAnB,EAA0B,mBAA1B;;AArBD;AAAA,uBAuBmBnD,aAAOyD,cAAP,CACjB;AAAA,yBAAM,KAAI,CAACvD,KAAL,CAAW,OAAX,EAAoBwD,iBAApB,CAAsCpC,KAAK,CAACmB,IAA5C,CAAN;AAAA,iBADiB,EAEjB,IAAIkB,MAAJ,WACIrC,KAAK,CAACmB,IADV,cACkBhD,UADlB,eAEEG,8BAAYC,eAAZ,GAA8B+B,UAFhC,EAFiB,CAvBnB;;AAAA;AAuBOgC,gBAAAA,GAvBP;;AAgCCC,2CAAgBC,WAAhB,CAA4BF,GAA5B,EAAiC,wBAAjC;;AAhCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;6GAmCA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKlB,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAAA;AAAA,uBAIqB,KAAKC,eAAL,GAAuBC,oBAAvB,CAA4C;AAC/D7B,kBAAAA,IAAI,EAAE;AADyD,iBAA5C,CAJrB;;AAAA;AAIOM,gBAAAA,KAJP;AAAA;AAAA,uBAQuB,KAAKxB,YAAL,CAAkBgD,OAAlB,CAA0B;AAC/CC,kBAAAA,YAAY,EAAEvD,mBADiC;AAE/CwD,kBAAAA,SAAS,EAAEvD,UAFoC;AAG/CwD,kBAAAA,SAAS,EAAEvD;AAHoC,iBAA1B,CARvB;;AAAA;AAQOY,gBAAAA,OARP;;AAcCN,6BAAOkD,OAAP,CAAe5C,OAAO,CAACE,MAAvB;;AAEM2C,gBAAAA,KAhBP,GAgBeC,kBAASC,gCAAT,qBAEb/C,OAAO,CAACgD,KAFK,CAhBf;;AAqBCC,2CAASC,SAAT,CAAmBL,KAAnB,EAA0B,6BAA1B;;AArBD;AAAA,uBAuBmBnD,aAAOyD,cAAP,CACjB;AAAA,yBAAM,MAAI,CAACvD,KAAL,CAAW,OAAX,EAAoBwD,iBAApB,CAAsCpC,KAAK,CAACmB,IAA5C,CAAN;AAAA,iBADiB,EAEjB,IAAIkB,MAAJ,WACIrC,KAAK,CAACmB,IADV,cACkBhD,UADlB,eAEEG,8BAAYC,eAAZ,GAA8B+B,UAFhC,EAFiB,CAvBnB;;AAAA;AAuBOgC,gBAAAA,GAvBP;;AAgCCC,2CAAgBC,WAAhB,CAA4BF,GAA5B,EAAiC,wBAAjC;;AAhCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iHAmCA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKlB,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAAA;AAAA,uBAIqB,KAAKC,eAAL,GAAuBC,oBAAvB,CAA4C;AAC/D7B,kBAAAA,IAAI,EAAE;AADyD,iBAA5C,CAJrB;;AAAA;AAIOM,gBAAAA,KAJP;AAAA;AAAA,uBAQO,KAAKxB,YAAL,CAAkBgD,OAAlB,CAA0B;AAC/BC,kBAAAA,YAAY,EAAEvD,mBADiB;AAE/BwD,kBAAAA,SAAS,EAAEvD,UAFoB;AAG/BwD,kBAAAA,SAAS,EAAEvD;AAHoB,iBAA1B,CARP;;AAAA;AAAA;AAAA,uBAcO,KAAKqE,+BAAL,CAAqCtE,UAArC,CAdP;;AAAA;AAAA;AAAA,uBAgBO,KAAKM,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6B+C,OAA7B,CAAqC,EAArC,CAhBP;;AAAA;AAAA;AAAA,uBAkB6B,KAAK5C,KAAL,CAAW,OAAX,EAAoBE,mBAApB,CAAwC;AACnEC,kBAAAA,cAAc,EAAEiB,KAAK,CAACmB;AAD6C,iBAAxC,CAlB7B;;AAAA;AAAA;AAkBSlC,gBAAAA,SAlBT,yBAkBSA,SAlBT;;AAsBCP,6BAAOS,MAAP,CAAcF,SAAS,CAACG,MAAV,IAAoB,CAAlC;;AACMM,gBAAAA,IAvBP,GAuBcgD,gCAAcC,IAAd,CAAmB;AAC/BnC,kBAAAA,SAAS,EAAErC,UADoB;AAE/ByE,kBAAAA,cAAc,EAAE5C,KAAK,CAACmB,IAFS;AAG/Bd,kBAAAA,OAAO,EAAE,KAAKA,OAAL,CAAaC;AAHS,iBAAnB,CAvBd;AA6BKuC,gBAAAA,QA7BL,GA6BgB,KA7BhB;AAAA,wDA8BwB5D,SA9BxB;;AAAA;AA8BC,yEAAkC;AAAvBI,oBAAAA,QAAuB;;AACjC,iDAAIA,QAAQ,CAACe,eAAT,CAAyBV,IAAzB,CAAJ,kDAAI,sBAAgCa,iBAApC,EAAuD;AACtDsC,sBAAAA,QAAQ,GAAG,IAAX;;AACAnE,mCAAOY,OAAP,2BACCD,QAAQ,CAACe,eAAT,CAAyBV,IAAzB,EAA+Ba,iBADhC,2DACC,uBAAkDK,EADnD,EAECxC,WAAW,GAAG,sBAFf;;AAIAM,mCAAOC,QAAP,2BACCU,QAAQ,CAACe,eAAT,CAAyBV,IAAzB,EAA+Ba,iBADhC,qFACC,uBAAkDuC,MADnD,2DACC,uBAA0DC,MAD3D;;AAGArE,mCAAOC,QAAP,2BACCU,QAAQ,CAACe,eAAT,CAAyBV,IAAzB,EAA+Ba,iBADhC,qFACC,uBAAkDuC,MADnD,2DACC,uBAA0DE,OAD3D;;AAGAtE,mCAAOC,QAAP,CAAgBU,QAAQ,CAACe,eAAT,CAAyBV,IAAzB,EAA+BuD,qBAA/C;;AACAvE,mCAAOC,QAAP,CAAgBU,QAAQ,CAACe,eAAT,CAAyBV,IAAzB,EAA+BiB,sBAA/C;;AACAjC,mCAAOC,QAAP,CAAgBU,QAAQ,CAACe,eAAT,CAAyBV,IAAzB,EAA+BwD,wBAA/C;;AAEA,+DAAsB7D,QAAtB;AACA;AACD;AAjDF;AAAA;AAAA;AAAA;AAAA;;AAmDCX,6BAAOS,MAAP,CAAc0D,QAAd;;AAnDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;6JAsDA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAE+B,KAAKM,gCAAL,EAF/B;;AAAA;AAAA;AAESnD,gBAAAA,KAFT,yBAESA,KAFT;AAEgBoD,gBAAAA,IAFhB,yBAEgBA,IAFhB;AAAA;AAAA,uBAI6B,KAAKxE,KAAL,CAAW,OAAX,EAAoBE,mBAApB,CAAwC;AACnEC,kBAAAA,cAAc,EAAEiB,KAAK,CAACmB;AAD6C,iBAAxC,CAJ7B;;AAAA;AAAA;AAISlC,gBAAAA,SAJT,0BAISA,SAJT;AAQOoE,gBAAAA,YARP,GAQsBpE,SAAS,CAACqE,MAAV,CAAiB,UAACC,KAAD,EAAQlE,QAAR,EAAqB;AAC1D,sBAAIA,QAAQ,CAACe,eAAT,CAAyBgD,IAAzB,CAAJ,EAAoC;AACnCG,oBAAAA,KAAK;AACL;;AACD,yBAAOA,KAAP;AACA,iBALoB,EAKlB,CALkB,CARtB;;AAeC7E,6BAAOY,OAAP,CAAe+D,YAAf,EAA6B,CAA7B;;AAfD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;6HAkBA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAE+B,KAAKF,gCAAL,EAF/B;;AAAA;AAAA;AAESC,gBAAAA,IAFT,0BAESA,IAFT;AAEepD,gBAAAA,KAFf,0BAEeA,KAFf;AAIOwD,gBAAAA,UAJP,GAIoB,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,QAAxB,CAJpB;;AAKCxB,2CAASyB,SAAT,CAAmBF,UAAnB;;AALD;AAAA,uBAO6B,KAAK5E,KAAL,CAAW,OAAX,EAAoBE,mBAApB,CAAwC;AACnEC,kBAAAA,cAAc,EAAEiB,KAAK,CAACmB;AAD6C,iBAAxC,CAP7B;;AAAA;AAAA;AAOSlC,gBAAAA,SAPT,0BAOSA,SAPT;AAWO0E,gBAAAA,OAXP,GAWiB1C,oCAAkB2C,cAAlB,CAAiC3E,SAAjC,CAXjB;;AAaCP,6BAAOC,QAAP,CAAgBgF,OAAhB;;AACAjF,6BAAOmF,SAAP,CAAiB;AAAA,yBAAM5C,oCAAkBC,kBAAlB,CAAqCyC,OAArC,EAA8CP,IAA9C,CAAN;AAAA,iBAAjB;;AAdD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;4HAiBA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACO,KAAKhC,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CADP;;AAAA;AAAA;AAAA,uBAGqB,KAAKC,eAAL,GAAuBC,oBAAvB,CAA4C;AAC/D7B,kBAAAA,IAAI,EAAE;AADyD,iBAA5C,CAHrB;;AAAA;AAGOM,gBAAAA,KAHP;AAAA;AAAA,uBAOuB,KAAKxB,YAAL,CAAkBgD,OAAlB,CAA0B;AAC/CC,kBAAAA,YAAY,EAAEvD,mBADiC;AAE/CwD,kBAAAA,SAAS,EAAEvD,UAFoC;AAG/CwD,kBAAAA,SAAS,EAAEvD,WAHoC;AAI/C0F,kBAAAA,QAAQ,EAAE;AAJqC,iBAA1B,CAPvB;;AAAA;AAOO9E,gBAAAA,OAPP;AAAA,wCAckBA,OAAO,CAAC+E,IAd1B,yDAckC,EAdlC,EAcSX,IAdT,QAcSA,IAdT;;AAgBC1E,6BAAOC,QAAP,CAAgByE,IAAhB;;AAhBD;AAAA,uBAkBoB,KAAK3E,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6B+C,OAA7B,CAAqC;AAAEwC,kBAAAA,KAAK,EAAE;AAAT,iBAArC,CAlBpB;;AAAA;AAkBOC,gBAAAA,IAlBP;AAoBC,8BAAAA,IAAI,CAACF,IAAL,0DAAWG,IAAX;;AAEAC,uCAAWC,UAAX;;AAtBD,mDAwBQ;AAAEH,kBAAAA,IAAI,EAAJA,IAAF;AAAQjE,kBAAAA,KAAK,EAALA,KAAR;AAAeoD,kBAAAA,IAAI,EAAJA,IAAf;AAAqBiB,kBAAAA,aAAa,EAAErF;AAApC,iBAxBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oHA2BA,mBAA8CW,GAA9C,EAAwDD,IAAxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACqB,KAAK4B,eAAL,GAAuBgD,aAAvB,CAAqC;AACxD5E,kBAAAA,IAAI,EAAJA;AADwD,iBAArC,CADrB;;AAAA;AACOM,gBAAAA,KADP;AAAA;AAAA,uBAKO,KAAKR,sBAAL,GAA8B+E,0BAA9B,CACLvE,KAAK,CAACY,EADD,EAELjB,GAAG,CAACiB,EAFC,CALP;;AAAA;AAAA;AAAA,uBAUsB,KAAK4D,YAAL,CAAkB;AACtCC,kBAAAA,OAAO,EAAEzE,KAAK,CAACY,EADuB;AAEtC8D,kBAAAA,MAAM,EAAE1E,KAAK,CAAC0E;AAFwB,iBAAlB,CAVtB;;AAAA;AAUOC,gBAAAA,MAVP;AAeO7E,gBAAAA,UAfP,GAeoB,KAAKlB,KAAL,CAAW,OAAX,EAAoB;AACtCgG,kBAAAA,gBAAgB;AAAA,0HAAE;AAAA;AAAA;AAAA;AAAA;AAAA,iEACVD,MADU;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA;AADsB,iBAApB,CAfpB;AAAA,mDAqBQ;AAAE7E,kBAAAA,UAAU,EAAVA,UAAF;AAAcE,kBAAAA,KAAK,EAALA;AAAd,iBArBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EA1R2C6E,8B","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\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})\n\n\t\tassert.isTrue(contracts.length >= 2)\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"}
|
package/build/cli.js
CHANGED
|
@@ -653,7 +653,11 @@ function _run() {
|
|
|
653
653
|
json,
|
|
654
654
|
command,
|
|
655
655
|
results,
|
|
656
|
+
_iterator2,
|
|
657
|
+
_step2,
|
|
658
|
+
client,
|
|
656
659
|
_args11 = arguments;
|
|
660
|
+
|
|
657
661
|
return _regenerator["default"].wrap(function _callee11$(_context11) {
|
|
658
662
|
while (1) {
|
|
659
663
|
switch (_context11.prev = _context11.next) {
|
|
@@ -715,14 +719,51 @@ function _run() {
|
|
|
715
719
|
|
|
716
720
|
case 26:
|
|
717
721
|
results = _context11.sent;
|
|
722
|
+
_iterator2 = _createForOfIteratorHelper(_mercuryClient.MercuryClientFactory.getClients());
|
|
723
|
+
_context11.prev = 28;
|
|
724
|
+
|
|
725
|
+
_iterator2.s();
|
|
726
|
+
|
|
727
|
+
case 30:
|
|
728
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
729
|
+
_context11.next = 36;
|
|
730
|
+
break;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
client = _step2.value;
|
|
734
|
+
_context11.next = 34;
|
|
735
|
+
return client.disconnect();
|
|
736
|
+
|
|
737
|
+
case 34:
|
|
738
|
+
_context11.next = 30;
|
|
739
|
+
break;
|
|
740
|
+
|
|
741
|
+
case 36:
|
|
742
|
+
_context11.next = 41;
|
|
743
|
+
break;
|
|
744
|
+
|
|
745
|
+
case 38:
|
|
746
|
+
_context11.prev = 38;
|
|
747
|
+
_context11.t0 = _context11["catch"](28);
|
|
748
|
+
|
|
749
|
+
_iterator2.e(_context11.t0);
|
|
750
|
+
|
|
751
|
+
case 41:
|
|
752
|
+
_context11.prev = 41;
|
|
753
|
+
|
|
754
|
+
_iterator2.f();
|
|
755
|
+
|
|
756
|
+
return _context11.finish(41);
|
|
757
|
+
|
|
758
|
+
case 44:
|
|
718
759
|
return _context11.abrupt("return", results);
|
|
719
760
|
|
|
720
|
-
case
|
|
761
|
+
case 45:
|
|
721
762
|
case "end":
|
|
722
763
|
return _context11.stop();
|
|
723
764
|
}
|
|
724
765
|
}
|
|
725
|
-
}, _callee11);
|
|
766
|
+
}, _callee11, null, [[28, 38, 41, 44]]);
|
|
726
767
|
}));
|
|
727
768
|
return _run.apply(this, arguments);
|
|
728
769
|
}
|
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","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\t//@ts-ignore\n\tconst results = await command._actionResults[0]\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","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":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAKA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AAEA;;AAIA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAOA;;AACA;;AACA;;;;;;;;;;;;IAyBqBA,G;AASpB,eACCC,GADD,EAECC,gBAFD,EAGCC,cAHD,EAICC,OAJD,EAKCC,QALD,EAMCC,cAND,EAOE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD,SAAKL,GAAL,GAAWA,GAAX;AACA,SAAKC,gBAAL,GAAwBA,gBAAxB;AACA,SAAKC,cAAL,GAAsBA,cAAtB;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,cAAL,GAAsBA,cAAtB;AACA;;;;WAUD,uBAAqB;AACpB,aAAO,KAAKD,QAAZ;AACA;;;WAED,6BAA2B;AAC1B,aAAO,KAAKC,cAAZ;AACA;;;;8FAED;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iDAEQ,sBAAKF,OAAL,EAAaG,EAAb,4BAFR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+FAKA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAEQ,uBAAKH,OAAL,EAAaI,GAAb,8BAFR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gGAKA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAEQ,uBAAKJ,OAAL,EAAaK,IAAb,8BAFR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;2GAKA,kBAA6BC,OAA7B;AAAA;AAAA;AAAA;AAAA;AAAA,kDACQ,KAAKR,gBAAL,CAAsBS,OAAtB,CAA8BD,OAA9B,CADR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAIA,oBAAyCE,IAAzC,EAAkD;AACjD,aAAO,KAAKV,gBAAL,CAAsBW,UAAtB,CAAiCD,IAAjC,CAAP;AACA;;;;uGAED,kBACCF,OADD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAG2B,KAAKR,gBAAL,CAAsBY,WAAtB,CAAkC,OAAlC,CAH3B;;AAAA;AAGOA,gBAAAA,WAHP;;AAAA,oBAKMA,WALN;AAAA;AAAA;AAAA;;AAAA,kDAMS;AACNC,kBAAAA,KAAK,EAAE;AACNC,oBAAAA,MAAM,EAAE,QADF;AAENC,oBAAAA,MAAM,EAAE,CACP,IAAIC,uBAAJ,CAAgB;AACf;AACAN,sBAAAA,IAAI,EAAE;AAFS,qBAAhB,CADO;AAFF;AADD,iBANT;;AAAA;AAAA;AAoBQO,gBAAAA,cApBR,GAoByB,KAAKhB,cAAL,CAAoBiB,OAApB,CAA4B,KAAKnB,GAAjC,EAAsC,SAAtC,CApBzB;AAqBQoB,gBAAAA,OArBR,GAsBG,CAAAX,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEY,gBAAT,MAA8B,KAA9B,GACG,aADH,GAEG,mBAxBN;AAAA;AAAA,uBAyBwBH,cAAc,CAACI,OAAf,CAAuBF,OAAvB,CAzBxB;;AAAA;AAyBQG,gBAAAA,OAzBR;AA0BQC,gBAAAA,WA1BR,GA0BsBD,OAAO,CAACE,MAAR,CAAeC,KAAf,CAAqBC,gCAArB,CA1BtB;AAAA,kDA4BSC,IAAI,CAACC,KAAL,CAAWL,WAAW,CAAC,CAAD,CAAtB,CA5BT;;AAAA;AAAA;AAAA;AA8BQM,gBAAAA,KA9BR,GA8BgB,IAAIb,uBAAJ,CAAgB;AAC7BN,kBAAAA,IAAI,EAAE,YADuB;AAE7BoB,kBAAAA,aAAa;AAFgB,iBAAhB,CA9BhB;AAAA,kDAmCS;AACNjB,kBAAAA,KAAK,EAAE;AACNC,oBAAAA,MAAM,EAAE,QADF;AAENC,oBAAAA,MAAM,EAAE,CAACc,KAAD;AAFF;AADD,iBAnCT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;2GAvCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4DACmB,KAAKE,UADxB;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACYC,gBAAAA,GADZ;AAAA;AAAA,uBAEe,KAAKD,UAAL,CAAgBC,GAAhB,CAFf;;AAAA;AAAA;AAAA,sCAEqCC,UAFrC;;AAAA;AAAA;AAAA;;AAAA;AAKC,qBAAKF,UAAL,GAAkB,EAAlB;;AALD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gGAmFA,kBAAyBvB,OAAzB;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AACO0B,gBAAAA,OADP,GACiB1B,OADjB,aACiBA,OADjB,uBACiBA,OAAO,CAAE0B,OAD1B;AAEOhC,gBAAAA,OAFP,uBAEiBM,OAFjB,aAEiBA,OAFjB,uBAEiBA,OAAO,CAAEN,OAF1B,+DAEqCiC,0BAAiBC,OAAjB,EAFrC;AAIKrC,gBAAAA,GAJL,mBAIWS,OAJX,aAIWA,OAJX,uBAIWA,OAAO,CAAET,GAJpB,uDAI2BsC,OAAO,CAACtC,GAAR,EAJ3B;;AAMCuC,0CAAcC,aAAd;;AAEMtC,gBAAAA,cARP,GAQwB,IAAIuC,0BAAJ,EARxB;AASOC,gBAAAA,gBATP,4BAUEjC,OAVF,aAUEA,OAVF,uBAUEA,OAAO,CAAEiC,gBAVX,yEAWE3C,GAAG,CAAC4C,qBAAJ,CAA0B3C,GAA1B,EAA+BE,cAA/B,EAA+CO,OAA/C,CAXF;AAaOmC,gBAAAA,YAbP,GAasB,IAAIC,wBAAJ,CAAiB;AACrC7C,kBAAAA,GAAG,EAAHA,GADqC;AAErCE,kBAAAA,cAAc,EAAdA,cAFqC;AAGrC4C,kBAAAA,OAAO,sBAAErC,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAEqC,OAAX,+DAAsBC,eAAOC,OAAP,EAHQ;AAIrC7C,kBAAAA,OAAO,EAAPA,OAJqC;AAKrCuC,kBAAAA,gBAAgB,EAAhBA;AALqC,iBAAjB,CAbtB;AAqBOO,gBAAAA,EArBP,4BAqBYxC,OArBZ,aAqBYA,OArBZ,uBAqBYA,OAAO,CAAEyC,iBArBrB,yEAqB0C,IAAIC,6BAAJ,CAAsBnD,GAAtB,CArB1C;AAwBOoD,gBAAAA,aAxBP,GAwBuB,IAAIC,yBAAJ,CAAkB;AACvCC,kBAAAA,SAAS,EAATA,0BADuC;AAEvCL,kBAAAA,EAAE,EAAFA,EAFuC;AAGvCM,kBAAAA,QAAQ,EAAErD,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,UAA5B,CAH6B;AAIvCwD,kBAAAA,MAAM,EAAEtD,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,MAA5B;AAJ+B,iBAAlB,CAxBvB;AA+BOyD,gBAAAA,eA/BP,GA+ByB,KAAKC,mBAAL,CACvBxD,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,KAA5B,CADuB,CA/BzB;AAmCO2D,gBAAAA,eAnCP,GAmCyB,KAAKC,iBAAL,CACvB1D,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,KAA5B,CADuB,CAnCzB;AAuCO6D,gBAAAA,aAvCP,GAuCuB,IAAIC,yBAAJ,CAAkB;AACvCb,kBAAAA,EAAE,EAAFA,EADuC;AAEvC9C,kBAAAA,OAAO,EAAPA,OAFuC;AAGvCuC,kBAAAA,gBAAgB,EAAhBA,gBAHuC;AAIvC1C,kBAAAA,GAAG,EAAHA,GAJuC;AAKvCE,kBAAAA,cAAc,EAAdA,cALuC;AAMvC0C,kBAAAA,YAAY,EAAZA,YANuC;AAOvCU,kBAAAA,SAAS,EAATA,0BAPuC;AAQvCF,kBAAAA,aAAa,EAAbA,aARuC;AASvCO,kBAAAA,eAAe,EAAfA,eATuC;AAUvCF,kBAAAA,eAAe,EAAfA;AAVuC,iBAAlB,CAvCvB;AAoDOpD,gBAAAA,cApDP,GAoDwB,IAAI0D,0BAAJ,CAAmB;AACzCF,kBAAAA,aAAa,EAAbA,aADyC;AAEzCZ,kBAAAA,EAAE,EAAFA,EAFyC;AAGzC9C,kBAAAA,OAAO,EAAPA,OAHyC;AAIzC;AACA6D,kBAAAA,uBAAuB,EAAE;AAAA,2BAAM/D,gBAAN;AAAA;AALgB,iBAAnB,CApDxB;AA4DCA,gBAAAA,gBAAgB,4BACfQ,OADe,aACfA,OADe,uBACfA,OAAO,CAAER,gBADM,yEAEfgE,oCAAwBC,eAAxB,CAAwC;AACvClE,kBAAAA,GAAG,EAAHA,GADuC;AAEvCE,kBAAAA,cAAc,EAAdA,cAFuC;AAGvC0C,kBAAAA,YAAY,EAAZA,YAHuC;AAIvCK,kBAAAA,EAAE,EAAFA,EAJuC;AAKvC9C,kBAAAA,OAAO,EAAPA,OALuC;AAMvCuC,kBAAAA,gBAAgB,EAAhBA,gBANuC;AAOvCrC,kBAAAA,cAAc,EAAdA;AAPuC,iBAAxC,CAFD;;AA5DD,qBA0EK8B,OA1EL;AAAA;AAAA;AAAA;;AA2EE/B,gBAAAA,QAAQ,GAAG,IAAI+D,kCAAJ,CAA2B;AACrChC,kBAAAA,OAAO,EAAPA,OADqC;AAErCc,kBAAAA,EAAE,EAAFA,EAFqC;AAGrC5C,kBAAAA,cAAc,EAAdA;AAHqC,iBAA3B,CAAX;AAMM+D,gBAAAA,KAjFR,GAiFgBH,oCAAwBI,YAjFxC;AAAA,uDAmFqBD,KAnFrB;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAmFazD,gBAAAA,IAnFb;AAoFS2D,gBAAAA,OApFT,GAoFmBrE,gBAAgB,CAACW,UAAjB,CAA4BD,IAA5B,CApFnB;AAAA;AAAA,uBAqFSP,QAAQ,CAACmE,aAAT,CAAuBD,OAAvB,CArFT;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAwFEnC,gBAAAA,OAAO,CAACqC,QAAR,CAAiBC,IAAjB,CAAsB,UAACC,CAAD,EAASC,CAAT;AAAA,yBAAoBD,CAAC,CAACE,KAAF,CAAQC,aAAR,CAAsBF,CAAC,CAACC,KAAxB,CAApB;AAAA,iBAAtB;AAEAzC,gBAAAA,OAAO,CAAC2C,MAAR,CAAe,UAACC,CAAD,EAAI3D,OAAJ,EAAgB;AAC9B,wBAAM,IAAIH,uBAAJ,CAAgB;AACrBN,oBAAAA,IAAI,EAAE,iBADe;AAErBqE,oBAAAA,IAAI,EAAE5D,OAAO,CAAC4D,IAAR,IAAgB;AAFD,mBAAhB,CAAN;AAIA,iBALD;;AA1FF;AAkGOC,gBAAAA,GAlGP,GAkGa,IAAIlF,GAAJ,CACXC,GADW,EAEXC,gBAFW,EAGXC,cAHW,EAIXC,OAJW,EAKXC,QALW,EAMXC,cANW,CAlGb;AAAA,kDA2GQ4E,GA3GR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA8GA,2BAAiCC,GAAjC,EAAmE;AAClE,UAAIC,MAAuB,GAAG,EAA9B;;AACA,UAAID,GAAG,CAACE,SAAJ,EAAJ,EAAqB;AAAA;;AACpBD,QAAAA,MAAM,eAAGD,GAAG,CAACG,GAAJ,CAAQ,uBAAR,CAAH,+CAAuC,EAA7C;AACA;;AACD,aAAOF,MAAP;AACA;;;WAED,6BAAmCD,GAAnC,EAAqE;AACpE,UAAMI,MAAuB,GAAG,EAAhC;;AAEA,UAAIJ,GAAG,CAACE,SAAJ,EAAJ,EAAqB;AACpB,YAAMG,SAAS,GAAGL,GAAG,CAACG,GAAJ,CAAQ,wBAAR,CAAlB;AAEAG,QAAAA,MAAM,CAACC,IAAP,CAAYF,SAAZ,aAAYA,SAAZ,cAAYA,SAAZ,GAAyB,EAAzB,EAA6BG,OAA7B,CAAqC,UAACtE,OAAD,EAAa;AACjD,cAAMX,OAAO,GAAGkF,yBAAc9D,KAAd,CAAoB0D,SAAS,CAACnE,OAAD,CAA7B,CAAhB;;AACAkE,UAAAA,MAAM,CAAClE,OAAD,CAAN,GAAkBX,OAAlB;AACA,SAHD;AAIA;;AACD,aAAO6E,MAAP;AACA;;;WAED,+BACCtF,GADD,EAECE,cAFD,EAGC0F,WAHD,EAIoB;AACnB,UAAMlD,gBAAgB;AAAA,iGAAG,kBAAOjC,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAClBwB,kBAAAA,GADkB,GACZ4D,sBAAcC,sBAAd,CAAqCrF,OAArC,CADY;;AAGxB,sBAAI,CAACV,GAAG,CAACiC,UAAJ,CAAeC,GAAf,CAAL,EAA0B;AACzBlC,oBAAAA,GAAG,CAACiC,UAAJ,CAAeC,GAAf,IAAsBlC,GAAG,CAACgG,YAAJ,CACrB/F,GADqB,EAErBE,cAFqB,EAGrBO,OAHqB,EAIrBmF,WAJqB,CAAtB;AAMA;;AAVuB,oDAYjB7F,GAAG,CAACiC,UAAJ,CAAeC,GAAf,CAZiB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAH;;AAAA,wBAAhBS,gBAAgB;AAAA;AAAA;AAAA,SAAtB;;AAeA,aAAOA,gBAAP;AACA;;;;wGAED,mBACC1C,GADD,EAECE,cAFD,EAGCO,OAHD,EAICmF,WAJD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAMOI,gBAAAA,OANP,GAMiBJ,WAAW,SAAX,IAAAA,WAAW,WAAX,IAAAA,WAAW,CAAElD,gBAAb,GACbkD,WAAW,CAAClD,gBADC,8FAEb;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AACMuD,0BAAAA,eADN,GAECC,OAAO,oCAAP,WAFD;AAAA;AAAA,iCAIgCC,oCAAqBC,MAArB;AAC/BC,4BAAAA,SAAS,EAAEJ,eADoB;AAE/BK,4BAAAA,IAAI,uBAAEV,WAAF,aAAEA,WAAF,uBAAEA,WAAW,CAAEU,IAAf,iEAAuBC,uBAFI;AAG/BC,4BAAAA,kBAAkB,EAAE;AAHW,6BAI5BZ,WAJ4B,EAJhC;;AAAA;AAIMa,0BAAAA,MAJN;AAAA,4DAWOA,MAXP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAFa,EANjB;AAAA,wBAyBKhG,OAzBL,aAyBKA,OAzBL,cAyBKA,OAzBL,GAyBgB,EAzBhB,gCAuBEiG,wBAvBF,EAuBEA,wBAvBF,sCAuB6B,KAvB7B,wDAwBEC,0BAxBF,EAwBEA,0BAxBF,sCAwB+B,IAxB/B;AAAA;AAAA,uBA2BsBX,OAAO,EA3B7B;;AAAA;AA2BOS,gBAAAA,MA3BP;AA6BKG,gBAAAA,IA7BL,GA6BuE,EA7BvE;;AA+BC,oBAAInG,OAAO,SAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAEoG,OAAT,IAAoBpG,OAApB,aAAoBA,OAApB,eAAoBA,OAAO,CAAEqG,MAAjC,EAAyC;AACxCF,kBAAAA,IAAI,GAAG;AACNC,oBAAAA,OAAO,EAAEpG,OAAO,CAACoG,OADX;AAENC,oBAAAA,MAAM,EAAErG,OAAO,CAACqG;AAFV,mBAAP;AAIA,iBALD,MAKO,IAAIJ,wBAAJ,EAA8B;AAC9B5F,kBAAAA,KAD8B,GACtBZ,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,MAA5B,EAAoC+G,eAApC,EADsB;;AAGpC,sBAAIjG,KAAJ,EAAW;AACV8F,oBAAAA,IAAI,GAAG;AACNC,sBAAAA,OAAO,EAAE/F,KAAK,CAACkG,EADT;AAENF,sBAAAA,MAAM,EAAEhG,KAAK,CAACgG;AAFR,qBAAP;AAIA;AACD,iBATM,MASA,IAAIH,0BAAJ,EAAgC;AAChCM,kBAAAA,MADgC,GACvB/G,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,MAA5B,EAAoCkH,iBAApC,EADuB;;AAGtC,sBAAID,MAAJ,EAAY;AACXL,oBAAAA,IAAI,CAACO,KAAL,GAAaF,MAAM,CAACE,KAApB;AACA;AACD;;AAnDF,sBAqDK3B,MAAM,CAACC,IAAP,CAAYmB,IAAZ,EAAkBQ,MAAlB,GAA2B,CArDhC;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAsDQX,MAAM,CAACY,YAAP,mBACDT,IADC,EAtDR;;AAAA;AA0DE;AACAH,gBAAAA,MAAM,CAACG,IAAP,GAAcA,IAAd;;AA3DF;AAAA,mDA8DQH,MA9DR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;;;iCAvQoB1G,G,gBAKsB,E;;SAoUrBuH,G;;;;;uFAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAmBC,YAAAA,IAAnB,iEAAoC,EAApC;AACApF,YAAAA,OADA,GACU,IAAIqF,kBAAJ,EADV;AAEFxH,YAAAA,GAFE,GAEIsC,OAAO,CAACtC,GAAR,EAFJ;AAINmC,YAAAA,OAAO,CAACsF,wBAAR,CAAiC,KAAjC;AACAtF,YAAAA,OAAO,CAACuF,MAAR,CAAe,YAAf,EAA6B,qCAA7B;AACAvF,YAAAA,OAAO,CAACuF,MAAR,CACC,wBADD,EAEC,8CAFD;AAIAvF,YAAAA,OAAO,CAACuF,MAAR,CAAe,eAAf,EAAgC,wBAAhC;AAEMC,YAAAA,MAZA,GAYSrF,OAAO,CAACiF,IAAR,CAAaK,SAAb,CACd,UAACC,CAAD;AAAA,qBAAOA,CAAC,KAAK,aAAN,IAAuBA,CAAC,KAAK,IAApC;AAAA,aADc,CAZT;;AAgBN,gBAAIF,MAAM,GAAG,CAAC,CAAd,EAAiB;AACVG,cAAAA,GADU,GACJxF,OAAO,CAACiF,IAAR,CAAaI,MAAM,GAAG,CAAtB,CADI;AAEVI,cAAAA,MAFU,GAEDC,2BAASC,WAAT,CAAqBjI,GAArB,EAA0B8H,GAA1B,CAFC;AAGhB9H,cAAAA,GAAG,GAAG+H,MAAN;AACA;;AAEKG,YAAAA,QAtBA,GAsBW,IAAI/E,6BAAJ,CAChBnD,GADgB,EAEhBsC,OAAO,CAAC6F,GAAR,CAAYC,uBAAZ,KAAwC,OAFxB,CAtBX;AA0BNF,YAAAA,QAAQ,CAACG,KAAT;AACAH,YAAAA,QAAQ,CAACI,UAAT,CAAoBC,mBAApB;AAEMC,YAAAA,kBA7BA,GA8BLlG,OAAO,CAACiF,IAAR,CAAaK,SAAb,CAAuB,UAACC,CAAD;AAAA,qBAAOA,CAAC,KAAK,WAAN,IAAqBA,CAAC,KAAK,IAAlC;AAAA,aAAvB,IAAiE,CAAC,CA9B7D;;AAAA,iBAgCFW,kBAhCE;AAAA;AAAA;AAAA;;AAiCCC,YAAAA,IAjCD,GAiCQvC,OAAO,mBAjCf;AAkCLgC,YAAAA,QAAQ,CAACQ,cAAT,mBAAmCD,IAAI,CAACE,OAAxC;AAlCK;;AAAA;AAAA;AAAA,mBAsCA5I,GAAG,CAAC6I,IAAJ,CAAS;AACdzG,cAAAA,OAAO,EAAPA,OADc;AAEdnC,cAAAA,GAAG,EAAHA,GAFc;AAGdsG,cAAAA,IAAI,EAAEhE,OAAO,CAAC6F,GAAR,CAAYU,IAHJ;AAId3F,cAAAA,iBAAiB,EAAEgF;AAJL,aAAT,CAtCA;;AAAA;AAAA;AAAA,mBA6CAY,0BAA0B,CAACZ,QAAD,CA7C1B;;AAAA;AAAA;AAAA,mBA+CgB/F,OAAO,CAAC4G,UAAR,CAAmBxB,IAAnB,CA/ChB;;AAAA;AA+CAnG,YAAAA,OA/CA;AAAA;AAAA,mBAkDgBA,OAAO,CAAC4H,cAAR,CAAuB,CAAvB,CAlDhB;;AAAA;AAkDAzH,YAAAA,OAlDA;AAAA,oDAoDe4E,oCAAqB8C,UAArB,EApDf;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAoDKxC,YAAAA,MApDL;AAAA;AAAA,mBAqDCA,MAAM,CAACvE,UAAP,EArDD;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA,+CAwDCX,OAxDD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA2DQuH,0B;;;;;8GAAf,mBAA0C7F,EAA1C;AAAA;AAAA;AAAA;AAAA;AAAA;AACC,gBACCE,8BAAkB+F,gBAAlB,MACA5G,OAAO,CAAC6F,GAAR,CAAYgB,4BAAZ,KAA6C,OAF9C,EAGE;AACK/H,cAAAA,OADL,GACe,IAAIgI,0BAAJ,CAAmBpB,2BAASC,WAAT,CAAqBoB,SAArB,EAAgC,KAAhC,CAAnB,CADf;;AAEDC,gDAAsBC,KAAtB,CAA4B;AAAEnI,gBAAAA,OAAO,EAAPA,OAAF;AAAW6B,gBAAAA,EAAE,EAAFA;AAAX,eAA5B;;AAEAuG,2CAAiBC,iCAAjB,GAAqD,UAACC,gBAAD,EAAsB;AAC1EJ,kDAAsBK,KAAtB;;AACAD,gBAAAA,gBAAgB,CAAC,UAACE,OAAD,EAAa;AAC7BN,oDAAsBO,WAAtB,CAAkCD,OAAlC;AACA,iBAFe,CAAhB;AAGA,eALD;;AAOAJ,2CAAiBM,gCAAjB,GAAoD,YAAM;AACzDR,kDAAsBS,IAAtB;AACA,eAFD;AAGA;;AAlBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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"}
|
|
@@ -225,6 +225,8 @@ var EventContractBuilder = /*#__PURE__*/function () {
|
|
|
225
225
|
key: "fetchAndBuildTemplateItems",
|
|
226
226
|
value: function () {
|
|
227
227
|
var _fetchAndBuildTemplateItems = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(options) {
|
|
228
|
+
var _this = this;
|
|
229
|
+
|
|
228
230
|
var shouldSyncOnlyCoreEvents, eventBuilderFile, namespace, contractResults, itemBuilder, _itemBuilder$buildTem, eventContractTemplateItems, schemaTemplateItems;
|
|
229
231
|
|
|
230
232
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
@@ -241,7 +243,10 @@ var EventContractBuilder = /*#__PURE__*/function () {
|
|
|
241
243
|
this.ui.startLoading('Fetching event contracts...');
|
|
242
244
|
_context4.next = 8;
|
|
243
245
|
return this.eventStore.fetchEventContracts({
|
|
244
|
-
localNamespace: namespace
|
|
246
|
+
localNamespace: namespace,
|
|
247
|
+
didUpdateHandler: function didUpdateHandler(msg) {
|
|
248
|
+
_this.ui.startLoading(msg);
|
|
249
|
+
}
|
|
245
250
|
});
|
|
246
251
|
|
|
247
252
|
case 8:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/event/builders/EventContractBuilder.ts"],"names":["EventContractBuilder","options","optionsSchema","ui","eventWriter","eventGenerator","cwd","eventStore","skillStore","normalizedOptions","validateAndNormalizeUtil","validateAndNormalize","contractDestinationDir","resolvedDestination","diskUtil","resolvePath","fetchAndBuildTemplateItems","shouldSyncOnlyCoreEvents","eventBuilderFile","errors","schemaTemplateItems","eventContractTemplateItems","length","startLoading","writeContracts","shouldImportCoreEvents","files","deleteOrphanedEventContracts","map","a","path","lookupDir","existingContracts","matches","diff","filter","m","includes","forEach","f","deleteFile","deleteEmptyDirs","existingSchemas","filteredSchemas","filterSchemasBasedOnCallbackPayload","schemas","i","schema","idWithVersion","find","s","loadCurrentSkillsNamespace","namespace","fetchEventContracts","localNamespace","contractResults","contracts","undefined","shift","namesUtil","toKebab","itemBuilder","EventTemplateItemBuilder","buildTemplateItems"],"mappings":"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","sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tnormalizeSchemaToIdWithVersion,\n\tSchema,\n\tSchemaTemplateItem,\n} from '@sprucelabs/schema'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { isEqual } from 'lodash'\nimport EventTemplateItemBuilder from '../../../templateItemBuilders/EventTemplateItemBuilder'\nimport { GraphicsInterface } from '../../../types/cli.types'\nimport { FeatureActionResponse } from '../../features.types'\nimport SkillStore from '../../skill/stores/SkillStore'\nimport validateAndNormalizeUtil from '../../validateAndNormalize.utility'\nimport EventStore from '../stores/EventStore'\nimport EventWriter from '../writers/EventWriter'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptions\n\nexport default class EventContractBuilder {\n\tprivate optionsSchema: OptionsSchema\n\tprivate ui: GraphicsInterface\n\tprivate eventWriter: EventWriter\n\tprivate cwd: string\n\tprivate eventStore: EventStore\n\tprivate skillStore: SkillStore\n\n\tpublic constructor(options: {\n\t\toptionsSchema: OptionsSchema\n\t\tui: GraphicsInterface\n\t\teventGenerator: EventWriter\n\t\tcwd: string\n\t\teventStore: EventStore\n\t\tskillStore: SkillStore\n\t}) {\n\t\tthis.optionsSchema = options.optionsSchema\n\t\tthis.ui = options.ui\n\t\tthis.eventWriter = options.eventGenerator\n\t\tthis.cwd = options.cwd\n\t\tthis.eventStore = options.eventStore\n\t\tthis.skillStore = options.skillStore\n\t}\n\n\tpublic async fetchAndWriteContracts(\n\t\toptions: Options\n\t): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = validateAndNormalizeUtil.validateAndNormalize(\n\t\t\tthis.optionsSchema,\n\t\t\toptions\n\t\t)\n\n\t\tconst { contractDestinationDir } = normalizedOptions\n\n\t\tconst resolvedDestination = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\tcontractDestinationDir\n\t\t)\n\n\t\tconst { errors, schemaTemplateItems, eventContractTemplateItems } =\n\t\t\tawait this.fetchAndBuildTemplateItems({\n\t\t\t\tshouldSyncOnlyCoreEvents: options.shouldSyncOnlyCoreEvents ?? false,\n\t\t\t\teventBuilderFile: normalizedOptions.eventBuilderFile,\n\t\t\t})\n\n\t\tif (errors && errors?.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors,\n\t\t\t}\n\t\t}\n\n\t\tthis.ui.startLoading('Generating contracts...')\n\n\t\tconst files = await this.eventWriter.writeContracts(resolvedDestination, {\n\t\t\t...normalizedOptions,\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tshouldImportCoreEvents: !options.shouldSyncOnlyCoreEvents,\n\t\t})\n\n\t\tawait this.deleteOrphanedEventContracts(\n\t\t\tresolvedDestination,\n\t\t\tfiles.map((a) => a.path)\n\t\t)\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async deleteOrphanedEventContracts(\n\t\tlookupDir: string,\n\t\texistingContracts: string[]\n\t) {\n\t\tconst matches = await globby(lookupDir + '/**/*.contract.ts')\n\t\tconst diff = matches.filter((m) => !existingContracts.includes(m))\n\n\t\tdiff.forEach((f) => diskUtil.deleteFile(f))\n\n\t\tdiskUtil.deleteEmptyDirs(lookupDir)\n\t}\n\n\tpublic async fetchContractsAndGenerateUniqueSchemas(\n\t\texistingSchemas: Schema[],\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t): Promise<FeatureActionResponse & { schemas?: Schema[] }> {\n\t\tconst { errors, schemaTemplateItems } =\n\t\t\tawait this.fetchAndBuildTemplateItems({ shouldSyncOnlyCoreEvents })\n\n\t\tif (errors && errors?.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors,\n\t\t\t}\n\t\t}\n\n\t\tconst filteredSchemas = this.filterSchemasBasedOnCallbackPayload(\n\t\t\texistingSchemas,\n\t\t\tschemaTemplateItems\n\t\t)\n\n\t\treturn {\n\t\t\tschemas: filteredSchemas,\n\t\t}\n\t}\n\n\tprivate filterSchemasBasedOnCallbackPayload(\n\t\texistingSchemas: Schema[],\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t) {\n\t\tconst schemas = schemaTemplateItems.map((i) => i.schema)\n\t\tconst filteredSchemas = schemas.filter((schema) => {\n\t\t\tconst idWithVersion = normalizeSchemaToIdWithVersion(schema)\n\t\t\treturn !existingSchemas.find((s) =>\n\t\t\t\tisEqual(normalizeSchemaToIdWithVersion(s), idWithVersion)\n\t\t\t)\n\t\t})\n\n\t\treturn filteredSchemas\n\t}\n\n\tprivate async fetchAndBuildTemplateItems(options: {\n\t\tshouldSyncOnlyCoreEvents?: boolean\n\t\teventBuilderFile?: string\n\t}) {\n\t\tconst { shouldSyncOnlyCoreEvents, eventBuilderFile } = options\n\n\t\tthis.ui.startLoading('Loading skill details...')\n\n\t\tlet namespace: string | undefined =\n\t\t\tawait this.skillStore.loadCurrentSkillsNamespace()\n\n\t\tthis.ui.startLoading('Fetching event contracts...')\n\n\t\tconst contractResults = await this.eventStore.fetchEventContracts({\n\t\t\tlocalNamespace: namespace,\n\t\t})\n\n\t\tif (contractResults.errors.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors: contractResults.errors,\n\t\t\t\teventContractTemplateItems: [],\n\t\t\t\tschemaTemplateItems: [],\n\t\t\t}\n\t\t}\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tcontractResults.contracts = [contractResults.contracts[0]]\n\t\t\tnamespace = undefined\n\t\t} else {\n\t\t\tcontractResults.contracts.shift()\n\t\t\tnamespace = namesUtil.toKebab(namespace)\n\t\t}\n\n\t\tthis.ui.startLoading('Building contracts...')\n\n\t\tconst itemBuilder = new EventTemplateItemBuilder()\n\t\tconst { eventContractTemplateItems, schemaTemplateItems } =\n\t\t\titemBuilder.buildTemplateItems({\n\t\t\t\tcontracts: contractResults.contracts,\n\t\t\t\tlocalNamespace: namespace,\n\t\t\t\teventBuilderFile,\n\t\t\t})\n\n\t\treturn {\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\terrors: [],\n\t\t}\n\t}\n}\n"],"file":"EventContractBuilder.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/event/builders/EventContractBuilder.ts"],"names":["EventContractBuilder","options","optionsSchema","ui","eventWriter","eventGenerator","cwd","eventStore","skillStore","normalizedOptions","validateAndNormalizeUtil","validateAndNormalize","contractDestinationDir","resolvedDestination","diskUtil","resolvePath","fetchAndBuildTemplateItems","shouldSyncOnlyCoreEvents","eventBuilderFile","errors","schemaTemplateItems","eventContractTemplateItems","length","startLoading","writeContracts","shouldImportCoreEvents","files","deleteOrphanedEventContracts","map","a","path","lookupDir","existingContracts","matches","diff","filter","m","includes","forEach","f","deleteFile","deleteEmptyDirs","existingSchemas","filteredSchemas","filterSchemasBasedOnCallbackPayload","schemas","i","schema","idWithVersion","find","s","loadCurrentSkillsNamespace","namespace","fetchEventContracts","localNamespace","didUpdateHandler","msg","contractResults","contracts","undefined","shift","namesUtil","toKebab","itemBuilder","EventTemplateItemBuilder","buildTemplateItems"],"mappings":"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","sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tnormalizeSchemaToIdWithVersion,\n\tSchema,\n\tSchemaTemplateItem,\n} from '@sprucelabs/schema'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { isEqual } from 'lodash'\nimport EventTemplateItemBuilder from '../../../templateItemBuilders/EventTemplateItemBuilder'\nimport { GraphicsInterface } from '../../../types/cli.types'\nimport { FeatureActionResponse } from '../../features.types'\nimport SkillStore from '../../skill/stores/SkillStore'\nimport validateAndNormalizeUtil from '../../validateAndNormalize.utility'\nimport EventStore from '../stores/EventStore'\nimport EventWriter from '../writers/EventWriter'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptions\n\nexport default class EventContractBuilder {\n\tprivate optionsSchema: OptionsSchema\n\tprivate ui: GraphicsInterface\n\tprivate eventWriter: EventWriter\n\tprivate cwd: string\n\tprivate eventStore: EventStore\n\tprivate skillStore: SkillStore\n\n\tpublic constructor(options: {\n\t\toptionsSchema: OptionsSchema\n\t\tui: GraphicsInterface\n\t\teventGenerator: EventWriter\n\t\tcwd: string\n\t\teventStore: EventStore\n\t\tskillStore: SkillStore\n\t}) {\n\t\tthis.optionsSchema = options.optionsSchema\n\t\tthis.ui = options.ui\n\t\tthis.eventWriter = options.eventGenerator\n\t\tthis.cwd = options.cwd\n\t\tthis.eventStore = options.eventStore\n\t\tthis.skillStore = options.skillStore\n\t}\n\n\tpublic async fetchAndWriteContracts(\n\t\toptions: Options\n\t): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = validateAndNormalizeUtil.validateAndNormalize(\n\t\t\tthis.optionsSchema,\n\t\t\toptions\n\t\t)\n\n\t\tconst { contractDestinationDir } = normalizedOptions\n\n\t\tconst resolvedDestination = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\tcontractDestinationDir\n\t\t)\n\n\t\tconst { errors, schemaTemplateItems, eventContractTemplateItems } =\n\t\t\tawait this.fetchAndBuildTemplateItems({\n\t\t\t\tshouldSyncOnlyCoreEvents: options.shouldSyncOnlyCoreEvents ?? false,\n\t\t\t\teventBuilderFile: normalizedOptions.eventBuilderFile,\n\t\t\t})\n\n\t\tif (errors && errors?.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors,\n\t\t\t}\n\t\t}\n\n\t\tthis.ui.startLoading('Generating contracts...')\n\n\t\tconst files = await this.eventWriter.writeContracts(resolvedDestination, {\n\t\t\t...normalizedOptions,\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tshouldImportCoreEvents: !options.shouldSyncOnlyCoreEvents,\n\t\t})\n\n\t\tawait this.deleteOrphanedEventContracts(\n\t\t\tresolvedDestination,\n\t\t\tfiles.map((a) => a.path)\n\t\t)\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async deleteOrphanedEventContracts(\n\t\tlookupDir: string,\n\t\texistingContracts: string[]\n\t) {\n\t\tconst matches = await globby(lookupDir + '/**/*.contract.ts')\n\t\tconst diff = matches.filter((m) => !existingContracts.includes(m))\n\n\t\tdiff.forEach((f) => diskUtil.deleteFile(f))\n\n\t\tdiskUtil.deleteEmptyDirs(lookupDir)\n\t}\n\n\tpublic async fetchContractsAndGenerateUniqueSchemas(\n\t\texistingSchemas: Schema[],\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t): Promise<FeatureActionResponse & { schemas?: Schema[] }> {\n\t\tconst { errors, schemaTemplateItems } =\n\t\t\tawait this.fetchAndBuildTemplateItems({ shouldSyncOnlyCoreEvents })\n\n\t\tif (errors && errors?.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors,\n\t\t\t}\n\t\t}\n\n\t\tconst filteredSchemas = this.filterSchemasBasedOnCallbackPayload(\n\t\t\texistingSchemas,\n\t\t\tschemaTemplateItems\n\t\t)\n\n\t\treturn {\n\t\t\tschemas: filteredSchemas,\n\t\t}\n\t}\n\n\tprivate filterSchemasBasedOnCallbackPayload(\n\t\texistingSchemas: Schema[],\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t) {\n\t\tconst schemas = schemaTemplateItems.map((i) => i.schema)\n\t\tconst filteredSchemas = schemas.filter((schema) => {\n\t\t\tconst idWithVersion = normalizeSchemaToIdWithVersion(schema)\n\t\t\treturn !existingSchemas.find((s) =>\n\t\t\t\tisEqual(normalizeSchemaToIdWithVersion(s), idWithVersion)\n\t\t\t)\n\t\t})\n\n\t\treturn filteredSchemas\n\t}\n\n\tprivate async fetchAndBuildTemplateItems(options: {\n\t\tshouldSyncOnlyCoreEvents?: boolean\n\t\teventBuilderFile?: string\n\t}) {\n\t\tconst { shouldSyncOnlyCoreEvents, eventBuilderFile } = options\n\n\t\tthis.ui.startLoading('Loading skill details...')\n\n\t\tlet namespace: string | undefined =\n\t\t\tawait this.skillStore.loadCurrentSkillsNamespace()\n\n\t\tthis.ui.startLoading('Fetching event contracts...')\n\n\t\tconst contractResults = await this.eventStore.fetchEventContracts({\n\t\t\tlocalNamespace: namespace,\n\t\t\tdidUpdateHandler: (msg) => {\n\t\t\t\tthis.ui.startLoading(msg)\n\t\t\t},\n\t\t})\n\n\t\tif (contractResults.errors.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors: contractResults.errors,\n\t\t\t\teventContractTemplateItems: [],\n\t\t\t\tschemaTemplateItems: [],\n\t\t\t}\n\t\t}\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tcontractResults.contracts = [contractResults.contracts[0]]\n\t\t\tnamespace = undefined\n\t\t} else {\n\t\t\tcontractResults.contracts.shift()\n\t\t\tnamespace = namesUtil.toKebab(namespace)\n\t\t}\n\n\t\tthis.ui.startLoading('Building contracts...')\n\n\t\tconst itemBuilder = new EventTemplateItemBuilder()\n\t\tconst { eventContractTemplateItems, schemaTemplateItems } =\n\t\t\titemBuilder.buildTemplateItems({\n\t\t\t\tcontracts: contractResults.contracts,\n\t\t\t\tlocalNamespace: namespace,\n\t\t\t\teventBuilderFile,\n\t\t\t})\n\n\t\treturn {\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\terrors: [],\n\t\t}\n\t}\n}\n"],"file":"EventContractBuilder.js"}
|
|
@@ -29,6 +29,8 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
29
29
|
|
|
30
30
|
var _mercuryTypes = require("@sprucelabs/mercury-types");
|
|
31
31
|
|
|
32
|
+
var _schema = require("@sprucelabs/schema");
|
|
33
|
+
|
|
32
34
|
var _spruceEventUtils = require("@sprucelabs/spruce-event-utils");
|
|
33
35
|
|
|
34
36
|
var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
@@ -114,12 +116,12 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
114
116
|
switch (_context.prev = _context.next) {
|
|
115
117
|
case 0:
|
|
116
118
|
_ref = options !== null && options !== void 0 ? options : {}, localNamespace = _ref.localNamespace, didUpdateHandler = _ref.didUpdateHandler;
|
|
117
|
-
|
|
119
|
+
didUpdateHandler === null || didUpdateHandler === void 0 ? void 0 : didUpdateHandler('Pulling remote contracts...');
|
|
120
|
+
_context.next = 4;
|
|
118
121
|
return this.fetchRemoteContracts();
|
|
119
122
|
|
|
120
|
-
case
|
|
123
|
+
case 4:
|
|
121
124
|
contracts = _context.sent;
|
|
122
|
-
didUpdateHandler === null || didUpdateHandler === void 0 ? void 0 : didUpdateHandler('Pulling remote contracts...');
|
|
123
125
|
_context.t0 = localNamespace;
|
|
124
126
|
|
|
125
127
|
if (!_context.t0) {
|
|
@@ -251,9 +253,8 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
251
253
|
key: "loadLocalContract",
|
|
252
254
|
value: function () {
|
|
253
255
|
var _loadLocalContract = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(localNamespace, didUpdateHandler) {
|
|
254
|
-
var
|
|
256
|
+
var localMatches, ns, eventSignatures, filesByFqenAndEventKey, matches, importsInOrder, importsByName, idx, imported, _filesByFqenAndEventK, fqen, eventKey, isSchema, cleaned;
|
|
255
257
|
|
|
256
|
-
var localMatches, ns, eventSignatures, importsByName, cleaned;
|
|
257
258
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
258
259
|
while (1) {
|
|
259
260
|
switch (_context4.prev = _context4.next) {
|
|
@@ -265,12 +266,12 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
265
266
|
localMatches = _context4.sent;
|
|
266
267
|
ns = _spruceSkillUtils.namesUtil.toKebab(localNamespace);
|
|
267
268
|
eventSignatures = {};
|
|
268
|
-
|
|
269
|
-
didUpdateHandler === null || didUpdateHandler === void 0 ? void 0 : didUpdateHandler("Importing
|
|
269
|
+
filesByFqenAndEventKey = [];
|
|
270
|
+
didUpdateHandler === null || didUpdateHandler === void 0 ? void 0 : didUpdateHandler("Importing ".concat(localMatches.length, " local event signature files..."));
|
|
270
271
|
_context4.next = 9;
|
|
271
272
|
return Promise.all(localMatches.map( /*#__PURE__*/function () {
|
|
272
273
|
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(match) {
|
|
273
|
-
var fqen,
|
|
274
|
+
var fqen, eventKey, _eventDiskUtil$splitP, eventName, version, filename, map, _fqen, _eventKey;
|
|
274
275
|
|
|
275
276
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
276
277
|
while (1) {
|
|
@@ -286,62 +287,36 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
286
287
|
filename = _path["default"].basename(match);
|
|
287
288
|
map = eventFileNamesImportKeyMap[filename];
|
|
288
289
|
|
|
289
|
-
if (
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
importsByName[fqen] = {};
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
if (!map.isSchema) {
|
|
302
|
-
_context3.next = 15;
|
|
303
|
-
break;
|
|
290
|
+
if (map) {
|
|
291
|
+
//@ts-ignore
|
|
292
|
+
eventKey = map.key;
|
|
293
|
+
filesByFqenAndEventKey.push({
|
|
294
|
+
fqen: fqen,
|
|
295
|
+
isSchema: map.isSchema,
|
|
296
|
+
match: match,
|
|
297
|
+
eventKey: eventKey
|
|
298
|
+
});
|
|
304
299
|
}
|
|
305
300
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
_context3.next = 12;
|
|
309
|
-
return importer.importSchema(match);
|
|
310
|
-
|
|
311
|
-
case 12:
|
|
312
|
-
importsByName[fqen][map.key] = _context3.sent;
|
|
313
|
-
_context3.next = 19;
|
|
301
|
+
_context3.next = 11;
|
|
314
302
|
break;
|
|
315
303
|
|
|
316
|
-
case
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
_context3.next = 18;
|
|
320
|
-
return _importer.importDefault(match);
|
|
321
|
-
|
|
322
|
-
case 18:
|
|
323
|
-
importsByName[fqen][map.key] = _context3.sent;
|
|
324
|
-
|
|
325
|
-
case 19:
|
|
326
|
-
_context3.next = 24;
|
|
327
|
-
break;
|
|
328
|
-
|
|
329
|
-
case 21:
|
|
330
|
-
_context3.prev = 21;
|
|
304
|
+
case 8:
|
|
305
|
+
_context3.prev = 8;
|
|
331
306
|
_context3.t0 = _context3["catch"](0);
|
|
332
307
|
throw new _SpruceError["default"]({
|
|
333
308
|
code: 'INVALID_EVENT_CONTRACT',
|
|
334
309
|
fullyQualifiedEventName: (_fqen = fqen) !== null && _fqen !== void 0 ? _fqen : 'Bad event name',
|
|
335
|
-
brokenProperty: (
|
|
310
|
+
brokenProperty: (_eventKey = eventKey) !== null && _eventKey !== void 0 ? _eventKey : '*** major failure ***',
|
|
336
311
|
originalError: _context3.t0
|
|
337
312
|
});
|
|
338
313
|
|
|
339
|
-
case
|
|
314
|
+
case 11:
|
|
340
315
|
case "end":
|
|
341
316
|
return _context3.stop();
|
|
342
317
|
}
|
|
343
318
|
}
|
|
344
|
-
}, _callee3, null, [[0,
|
|
319
|
+
}, _callee3, null, [[0, 8]]);
|
|
345
320
|
}));
|
|
346
321
|
|
|
347
322
|
return function (_x4) {
|
|
@@ -350,6 +325,60 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
350
325
|
}()));
|
|
351
326
|
|
|
352
327
|
case 9:
|
|
328
|
+
matches = filesByFqenAndEventKey.map(function (o) {
|
|
329
|
+
return o.match;
|
|
330
|
+
});
|
|
331
|
+
_context4.next = 12;
|
|
332
|
+
return this.Service('import').bulkImport(matches);
|
|
333
|
+
|
|
334
|
+
case 12:
|
|
335
|
+
importsInOrder = _context4.sent;
|
|
336
|
+
importsByName = {};
|
|
337
|
+
idx = 0;
|
|
338
|
+
|
|
339
|
+
case 15:
|
|
340
|
+
if (!(idx < filesByFqenAndEventKey.length)) {
|
|
341
|
+
_context4.next = 31;
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
imported = importsInOrder[idx];
|
|
346
|
+
_filesByFqenAndEventK = filesByFqenAndEventKey[idx], fqen = _filesByFqenAndEventK.fqen, eventKey = _filesByFqenAndEventK.eventKey, isSchema = _filesByFqenAndEventK.isSchema;
|
|
347
|
+
|
|
348
|
+
if (!isSchema) {
|
|
349
|
+
_context4.next = 26;
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
_context4.prev = 19;
|
|
354
|
+
(0, _schema.validateSchema)(imported);
|
|
355
|
+
_context4.next = 26;
|
|
356
|
+
break;
|
|
357
|
+
|
|
358
|
+
case 23:
|
|
359
|
+
_context4.prev = 23;
|
|
360
|
+
_context4.t0 = _context4["catch"](19);
|
|
361
|
+
throw new _SpruceError["default"]({
|
|
362
|
+
code: 'INVALID_EVENT_CONTRACT',
|
|
363
|
+
fullyQualifiedEventName: fqen,
|
|
364
|
+
brokenProperty: eventKey,
|
|
365
|
+
originalError: _context4.t0
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
case 26:
|
|
369
|
+
if (!importsByName[fqen]) {
|
|
370
|
+
importsByName[fqen] = {};
|
|
371
|
+
} //@ts-ignore
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
importsByName[fqen][eventKey] = imported;
|
|
375
|
+
|
|
376
|
+
case 28:
|
|
377
|
+
idx++;
|
|
378
|
+
_context4.next = 15;
|
|
379
|
+
break;
|
|
380
|
+
|
|
381
|
+
case 31:
|
|
353
382
|
Object.keys(importsByName).forEach(function (fqen) {
|
|
354
383
|
var imported = importsByName[fqen];
|
|
355
384
|
|
|
@@ -370,7 +399,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
370
399
|
didUpdateHandler === null || didUpdateHandler === void 0 ? void 0 : didUpdateHandler("Loaded ".concat(Object.keys(eventSignatures).length, " local event signatures..."));
|
|
371
400
|
|
|
372
401
|
if (!(Object.keys(eventSignatures).length > 0)) {
|
|
373
|
-
_context4.next =
|
|
402
|
+
_context4.next = 37;
|
|
374
403
|
break;
|
|
375
404
|
}
|
|
376
405
|
|
|
@@ -380,15 +409,15 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
380
409
|
(0, _mercuryTypes.validateEventContract)(cleaned);
|
|
381
410
|
return _context4.abrupt("return", cleaned);
|
|
382
411
|
|
|
383
|
-
case
|
|
412
|
+
case 37:
|
|
384
413
|
return _context4.abrupt("return", null);
|
|
385
414
|
|
|
386
|
-
case
|
|
415
|
+
case 38:
|
|
387
416
|
case "end":
|
|
388
417
|
return _context4.stop();
|
|
389
418
|
}
|
|
390
419
|
}
|
|
391
|
-
}, _callee4, this);
|
|
420
|
+
}, _callee4, this, [[19, 23]]);
|
|
392
421
|
}));
|
|
393
422
|
|
|
394
423
|
function loadLocalContract(_x2, _x3) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/event/stores/EventStore.ts"],"names":["eventFileNamesImportKeyMap","key","isSchema","EventStore","options","localNamespace","didUpdateHandler","fetchRemoteContracts","contracts","loadLocalContract","localContract","filterOutLocalEventsFromRemoteContractsMutating","push","errors","contractCache","connectToApi","shouldAuthAsCurrentSkill","client","emit","results","eventResponseUtil","getFirstResponseOrThrow","remoteContracts","ns","namesUtil","toKebab","contract","sigs","eventContractUtil","getNamedEventSignatures","sig","eventNamespace","eventSignatures","fullyQualifiedEventName","diskUtil","resolvePath","cwd","localMatches","importsByName","length","Promise","all","map","match","eventDiskUtil","splitPathToEvent","eventName","version","fqen","eventNameUtil","join","filename","pathUtil","basename","importer","Service","importSchema","importDefault","SpruceError","code","brokenProperty","originalError","Object","keys","forEach","imported","split","emitPayloadSchema","payloadSchema","emitPayload","targetSchema","emitTarget","responsePayloadSchema","responsePayload","emitPermissionContract","emitPermissions","listenPermissionContract","listenPermissions","cleaned","eventContractCleanerUtil","cleanPayloadsAndPermissions","payload","eventContract","AbstractStore"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport {\n\tEventContract,\n\tEventSignature,\n\tPermissionContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { Schema } from '@sprucelabs/schema'\nimport {\n\teventResponseUtil,\n\teventDiskUtil,\n\teventNameUtil,\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { cloneDeep } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\nimport { eventContractCleanerUtil } from '../../../utilities/eventContractCleaner.utility'\n\nexport interface EventStoreFetchEventContractsResponse {\n\terrors: SpruceError[]\n\tcontracts: EventContract[]\n}\n\ntype Options = Omit<\n\tEventSignature,\n\t| 'responsePayloadSchema'\n\t| 'emitPayloadSchema'\n\t| 'listenPermissionContract'\n\t| 'emitPermissionContract'\n>\n\ninterface EventImport {\n\toptions?: Options\n\temitPayload?: Schema\n\temitTarget?: Schema\n\tresponsePayload?: Schema\n\temitPermissions?: PermissionContract\n\tlistenPermissions?: PermissionContract\n}\n\nconst eventFileNamesImportKeyMap = {\n\t'event.options.ts': { key: 'options', isSchema: false },\n\t'emitPayload.builder.ts': { key: 'emitPayload', isSchema: true },\n\t'emitTarget.builder.ts': { key: 'emitTarget', isSchema: true },\n\t'responsePayload.builder.ts': { key: 'responsePayload', isSchema: true },\n\t'emitPermissions.builder.ts': { key: 'emitPermissions', isSchema: false },\n\t'listenPermissions.builder.ts': { key: 'listenPermissions', isSchema: false },\n}\n\nexport default class EventStore extends AbstractStore {\n\tpublic name = 'event'\n\tprotected static contractCache: any\n\n\tpublic async fetchEventContracts(options?: {\n\t\tlocalNamespace?: string\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t}): Promise<EventStoreFetchEventContractsResponse> {\n\t\tconst { localNamespace, didUpdateHandler } = options ?? {}\n\n\t\tconst contracts = await this.fetchRemoteContracts()\n\n\t\tdidUpdateHandler?.('Pulling remote contracts...')\n\n\t\tconst localContract =\n\t\t\tlocalNamespace &&\n\t\t\t(await this.loadLocalContract(localNamespace, didUpdateHandler))\n\n\t\tif (localNamespace) {\n\t\t\tthis.filterOutLocalEventsFromRemoteContractsMutating(\n\t\t\t\tcontracts,\n\t\t\t\tlocalNamespace\n\t\t\t)\n\t\t}\n\n\t\tif (localContract) {\n\t\t\tcontracts.push(localContract)\n\t\t}\n\n\t\treturn {\n\t\t\tcontracts,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static clearCache() {\n\t\tEventStore.contractCache = null\n\t}\n\n\tprivate async fetchRemoteContracts() {\n\t\tif (!EventStore.contractCache) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\t\t\tconst results = await client.emit('get-event-contracts::v2020_12_25')\n\t\t\tconst { contracts } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\tEventStore.contractCache = contracts\n\t\t}\n\n\t\treturn cloneDeep(EventStore.contractCache)\n\t}\n\n\tprivate filterOutLocalEventsFromRemoteContractsMutating(\n\t\tremoteContracts: EventContract[],\n\t\tlocalNamespace: string\n\t) {\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\n\t\tfor (const contract of remoteContracts) {\n\t\t\tconst sigs = eventContractUtil.getNamedEventSignatures(contract)\n\t\t\tfor (const sig of sigs) {\n\t\t\t\tif (sig.eventNamespace === ns) {\n\t\t\t\t\tdelete contract.eventSignatures[sig.fullyQualifiedEventName]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async loadLocalContract(\n\t\tlocalNamespace: string,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<EventContract | null> {\n\t\tconst localMatches = await globby(\n\t\t\tdiskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\t'src',\n\t\t\t\t'events',\n\t\t\t\t'**/*.(builder|options).ts'\n\t\t\t)\n\t\t)\n\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\t\tconst eventSignatures: Record<string, EventSignature> = {}\n\t\tconst importsByName: Record<string, EventImport> = {}\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Importing of ${localMatches.length} local event signature files...`\n\t\t)\n\n\t\tawait Promise.all(\n\t\t\tlocalMatches.map(async (match) => {\n\t\t\t\tlet fqen: string | undefined\n\t\t\t\tlet key: keyof EventImport | undefined\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { eventName, version } = eventDiskUtil.splitPathToEvent(match)\n\t\t\t\t\tfqen = eventNameUtil.join({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t\teventNamespace: ns,\n\t\t\t\t\t})\n\n\t\t\t\t\tconst filename = pathUtil.basename(\n\t\t\t\t\t\tmatch\n\t\t\t\t\t) as keyof typeof eventFileNamesImportKeyMap\n\n\t\t\t\t\tconst map = eventFileNamesImportKeyMap[filename]\n\n\t\t\t\t\tif (map) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\tkey = map.key\n\t\t\t\t\t\tif (!importsByName[fqen]) {\n\t\t\t\t\t\t\timportsByName[fqen] = {}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (map.isSchema) {\n\t\t\t\t\t\t\tconst importer = this.Service('schema')\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\timportsByName[fqen][map.key] = await importer.importSchema(match)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst importer = this.Service('import')\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\timportsByName[fqen][map.key] = await importer.importDefault(match)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen ?? 'Bad event name',\n\t\t\t\t\t\tbrokenProperty: key ?? '*** major failure ***',\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\n\t\tObject.keys(importsByName).forEach((fqen) => {\n\t\t\tconst imported = importsByName[fqen]\n\t\t\tconst { eventName } = eventNameUtil.split(fqen)\n\t\t\teventSignatures[fqen] = {\n\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\teventName,\n\t\t\t\t\tpayloadSchema: imported.emitPayload,\n\t\t\t\t\ttargetSchema: imported.emitTarget,\n\t\t\t\t}),\n\t\t\t\tresponsePayloadSchema: imported.responsePayload,\n\t\t\t\temitPermissionContract: imported.emitPermissions,\n\t\t\t\tlistenPermissionContract: imported.listenPermissions,\n\t\t\t\t...imported.options,\n\t\t\t}\n\t\t})\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Loaded ${Object.keys(eventSignatures).length} local event signatures...`\n\t\t)\n\n\t\tif (Object.keys(eventSignatures).length > 0) {\n\t\t\tconst cleaned = eventContractCleanerUtil.cleanPayloadsAndPermissions({\n\t\t\t\teventSignatures,\n\t\t\t})\n\n\t\t\tvalidateEventContract(cleaned)\n\n\t\t\treturn cleaned\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic async registerEventContract(options: {\n\t\teventContract: EventContract\n\t}) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('register-events::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tcontract: options.eventContract,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = null\n\n\t\treturn results\n\t}\n\n\tpublic async unRegisterEvents(\n\t\toptions: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload\n\t) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('unregister-events::v2020_12_25', {\n\t\t\tpayload: options,\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = null\n\t}\n}\n"],"file":"EventStore.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/event/stores/EventStore.ts"],"names":["eventFileNamesImportKeyMap","key","isSchema","EventStore","options","localNamespace","didUpdateHandler","fetchRemoteContracts","contracts","loadLocalContract","localContract","filterOutLocalEventsFromRemoteContractsMutating","push","errors","contractCache","connectToApi","shouldAuthAsCurrentSkill","client","emit","results","eventResponseUtil","getFirstResponseOrThrow","remoteContracts","ns","namesUtil","toKebab","contract","sigs","eventContractUtil","getNamedEventSignatures","sig","eventNamespace","eventSignatures","fullyQualifiedEventName","diskUtil","resolvePath","cwd","localMatches","filesByFqenAndEventKey","length","Promise","all","map","match","eventDiskUtil","splitPathToEvent","eventName","version","fqen","eventNameUtil","join","filename","pathUtil","basename","eventKey","SpruceError","code","brokenProperty","originalError","matches","o","Service","bulkImport","importsInOrder","importsByName","idx","imported","Object","keys","forEach","split","emitPayloadSchema","payloadSchema","emitPayload","targetSchema","emitTarget","responsePayloadSchema","responsePayload","emitPermissionContract","emitPermissions","listenPermissionContract","listenPermissions","cleaned","eventContractCleanerUtil","cleanPayloadsAndPermissions","payload","eventContract","AbstractStore"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAOA;;AACA;;AAOA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;AAwBA,IAAMA,0BAA0B,GAAG;AAClC,sBAAoB;AAAEC,IAAAA,GAAG,EAAE,SAAP;AAAkBC,IAAAA,QAAQ,EAAE;AAA5B,GADc;AAElC,4BAA0B;AAAED,IAAAA,GAAG,EAAE,aAAP;AAAsBC,IAAAA,QAAQ,EAAE;AAAhC,GAFQ;AAGlC,2BAAyB;AAAED,IAAAA,GAAG,EAAE,YAAP;AAAqBC,IAAAA,QAAQ,EAAE;AAA/B,GAHS;AAIlC,gCAA8B;AAAED,IAAAA,GAAG,EAAE,iBAAP;AAA0BC,IAAAA,QAAQ,EAAE;AAApC,GAJI;AAKlC,gCAA8B;AAAED,IAAAA,GAAG,EAAE,iBAAP;AAA0BC,IAAAA,QAAQ,EAAE;AAApC,GALI;AAMlC,kCAAgC;AAAED,IAAAA,GAAG,EAAE,mBAAP;AAA4BC,IAAAA,QAAQ,EAAE;AAAtC;AANE,CAAnC;;IASqBC,U;;;;;;;;;;;;;;;6FACN,O;;;;;;;+GAGd,iBAAiCC,OAAjC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,uBAI8CA,OAJ9C,aAI8CA,OAJ9C,cAI8CA,OAJ9C,GAIyD,EAJzD,EAISC,cAJT,QAISA,cAJT,EAIyBC,gBAJzB,QAIyBA,gBAJzB;AAMCA,gBAAAA,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAG,6BAAH,CAAhB;AAND;AAAA,uBAQyB,KAAKC,oBAAL,EARzB;;AAAA;AAQOC,gBAAAA,SARP;AAAA,8BAWEH,cAXF;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAYS,KAAKI,iBAAL,CAAuBJ,cAAvB,EAAuCC,gBAAvC,CAZT;;AAAA;AAAA;;AAAA;AAUOI,gBAAAA,aAVP;;AAcC,oBAAIL,cAAJ,EAAoB;AACnB,uBAAKM,+CAAL,CACCH,SADD,EAECH,cAFD;AAIA;;AAED,oBAAIK,aAAJ,EAAmB;AAClBF,kBAAAA,SAAS,CAACI,IAAV,CAAeF,aAAf;AACA;;AAvBF,iDAyBQ;AACNF,kBAAAA,SAAS,EAATA,SADM;AAENK,kBAAAA,MAAM,EAAE;AAFF,iBAzBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gHAmCA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oBACMV,UAAU,CAACW,aADjB;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAEuB,KAAKC,YAAL,CAAkB;AAAEC,kBAAAA,wBAAwB,EAAE;AAA5B,iBAAlB,CAFvB;;AAAA;AAEQC,gBAAAA,MAFR;AAAA;AAAA,uBAGwBA,MAAM,CAACC,IAAP,CAAY,kCAAZ,CAHxB;;AAAA;AAGQC,gBAAAA,OAHR;AAAA,wCAIwBC,oCAAkBC,uBAAlB,CAA0CF,OAA1C,CAJxB,EAIUX,SAJV,yBAIUA,SAJV;AAMEL,gBAAAA,UAAU,CAACW,aAAX,GAA2BN,SAA3B;;AANF;AAAA,kDASQ,uBAAUL,UAAU,CAACW,aAArB,CATR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAYA,yDACCQ,eADD,EAECjB,cAFD,EAGE;AACD,UAAMkB,EAAE,GAAGC,4BAAUC,OAAV,CAAkBpB,cAAlB,CAAX;;AADC,iDAGsBiB,eAHtB;AAAA;;AAAA;AAGD,4DAAwC;AAAA,cAA7BI,QAA6B;;AACvC,cAAMC,IAAI,GAAGC,oCAAkBC,uBAAlB,CAA0CH,QAA1C,CAAb;;AADuC,sDAErBC,IAFqB;AAAA;;AAAA;AAEvC,mEAAwB;AAAA,kBAAbG,GAAa;;AACvB,kBAAIA,GAAG,CAACC,cAAJ,KAAuBR,EAA3B,EAA+B;AAC9B,uBAAOG,QAAQ,CAACM,eAAT,CAAyBF,GAAG,CAACG,uBAA7B,CAAP;AACA;AACD;AANsC;AAAA;AAAA;AAAA;AAAA;AAOvC;AAVA;AAAA;AAAA;AAAA;AAAA;AAWD;;;;6GAED,kBACC5B,cADD,EAECC,gBAFD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAI4B,wBAC1B4B,2BAASC,WAAT,CACC,KAAKC,GADN,EAEC,KAFD,EAGC,QAHD,EAIC,2BAJD,CAD0B,CAJ5B;;AAAA;AAIOC,gBAAAA,YAJP;AAaOd,gBAAAA,EAbP,GAaYC,4BAAUC,OAAV,CAAkBpB,cAAlB,CAbZ;AAcO2B,gBAAAA,eAdP,GAcyD,EAdzD;AAeOM,gBAAAA,sBAfP,GAoBO,EApBP;AAsBChC,gBAAAA,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,qBACF+B,YAAY,CAACE,MADX,qCAAhB;AAtBD;AAAA,uBA0BOC,OAAO,CAACC,GAAR,CACLJ,YAAY,CAACK,GAAb;AAAA,4GAAiB,kBAAOC,KAAP;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oDAKgBC,gCAAcC,gBAAd,CAA+BF,KAA/B,CALhB,EAKPG,SALO,yBAKPA,SALO,EAKIC,OALJ,yBAKIA,OALJ;AAMfC,4BAAAA,IAAI,GAAGC,gCAAcC,IAAd,CAAmB;AACzBJ,8BAAAA,SAAS,EAATA,SADyB;AAEzBC,8BAAAA,OAAO,EAAPA,OAFyB;AAGzBhB,8BAAAA,cAAc,EAAER;AAHS,6BAAnB,CAAP;AAMM4B,4BAAAA,QAZS,GAYEC,iBAASC,QAAT,CAChBV,KADgB,CAZF;AAgBTD,4BAAAA,GAhBS,GAgBH1C,0BAA0B,CAACmD,QAAD,CAhBvB;;AAkBf,gCAAIT,GAAJ,EAAS;AACR;AACAY,8BAAAA,QAAQ,GAAGZ,GAAG,CAACzC,GAAf;AAEAqC,8BAAAA,sBAAsB,CAAC1B,IAAvB,CAA4B;AAC3BoC,gCAAAA,IAAI,EAAJA,IAD2B;AAE3B9C,gCAAAA,QAAQ,EAAEwC,GAAG,CAACxC,QAFa;AAG3ByC,gCAAAA,KAAK,EAALA,KAH2B;AAI3BW,gCAAAA,QAAQ,EAAEA;AAJiB,+BAA5B;AAMA;;AA5Bc;AAAA;;AAAA;AAAA;AAAA;AAAA,kCA8BT,IAAIC,uBAAJ,CAAgB;AACrBC,8BAAAA,IAAI,EAAE,wBADe;AAErBvB,8BAAAA,uBAAuB,WAAEe,IAAF,yCAAU,gBAFZ;AAGrBS,8BAAAA,cAAc,eAAEH,QAAF,iDAAc,uBAHP;AAIrBI,8BAAAA,aAAa;AAJQ,6BAAhB,CA9BS;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAjB;;AAAA;AAAA;AAAA;AAAA,oBADK,CA1BP;;AAAA;AAmEOC,gBAAAA,OAnEP,GAmEiBrB,sBAAsB,CAACI,GAAvB,CAA2B,UAACkB,CAAD;AAAA,yBAAOA,CAAC,CAACjB,KAAT;AAAA,iBAA3B,CAnEjB;AAAA;AAAA,uBAoE+B,KAAKkB,OAAL,CAAa,QAAb,EAAuBC,UAAvB,CAC7BH,OAD6B,CApE/B;;AAAA;AAoEOI,gBAAAA,cApEP;AAuEOC,gBAAAA,aAvEP,GAuEoD,EAvEpD;AAyEUC,gBAAAA,GAzEV,GAyEgB,CAzEhB;;AAAA;AAAA,sBAyEmBA,GAAG,GAAG3B,sBAAsB,CAACC,MAzEhD;AAAA;AAAA;AAAA;;AA0EQ2B,gBAAAA,QA1ER,GA0EmBH,cAAc,CAACE,GAAD,CA1EjC;AAAA,wCA2EuC3B,sBAAsB,CAAC2B,GAAD,CA3E7D,EA2EUjB,IA3EV,yBA2EUA,IA3EV,EA2EgBM,QA3EhB,yBA2EgBA,QA3EhB,EA2E0BpD,QA3E1B,yBA2E0BA,QA3E1B;;AAAA,qBA6EMA,QA7EN;AAAA;AAAA;AAAA;;AAAA;AA+EI,4CAAegE,QAAf;AA/EJ;AAAA;;AAAA;AAAA;AAAA;AAAA,sBAiFU,IAAIX,uBAAJ,CAAgB;AACrBC,kBAAAA,IAAI,EAAE,wBADe;AAErBvB,kBAAAA,uBAAuB,EAAEe,IAFJ;AAGrBS,kBAAAA,cAAc,EAAEH,QAHK;AAIrBI,kBAAAA,aAAa;AAJQ,iBAAhB,CAjFV;;AAAA;AA0FE,oBAAI,CAACM,aAAa,CAAChB,IAAD,CAAlB,EAA0B;AACzBgB,kBAAAA,aAAa,CAAChB,IAAD,CAAb,GAAsB,EAAtB;AACA,iBA5FH,CA8FE;;;AACAgB,gBAAAA,aAAa,CAAChB,IAAD,CAAb,CAAoBM,QAApB,IAAgCY,QAAhC;;AA/FF;AAyEwDD,gBAAAA,GAAG,EAzE3D;AAAA;AAAA;;AAAA;AAkGCE,gBAAAA,MAAM,CAACC,IAAP,CAAYJ,aAAZ,EAA2BK,OAA3B,CAAmC,UAACrB,IAAD,EAAU;AAC5C,sBAAMkB,QAAQ,GAAGF,aAAa,CAAChB,IAAD,CAA9B;;AACA,6CAAsBC,gCAAcqB,KAAd,CAAoBtB,IAApB,CAAtB;AAAA,sBAAQF,SAAR,wBAAQA,SAAR;;AACAd,kBAAAA,eAAe,CAACgB,IAAD,CAAf;AACCuB,oBAAAA,iBAAiB,EAAE,uDAAgC;AAClDzB,sBAAAA,SAAS,EAATA,SADkD;AAElD0B,sBAAAA,aAAa,EAAEN,QAAQ,CAACO,WAF0B;AAGlDC,sBAAAA,YAAY,EAAER,QAAQ,CAACS;AAH2B,qBAAhC,CADpB;AAMCC,oBAAAA,qBAAqB,EAAEV,QAAQ,CAACW,eANjC;AAOCC,oBAAAA,sBAAsB,EAAEZ,QAAQ,CAACa,eAPlC;AAQCC,oBAAAA,wBAAwB,EAAEd,QAAQ,CAACe;AARpC,qBASIf,QAAQ,CAAC9D,OATb;AAWA,iBAdD;AAgBAE,gBAAAA,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,kBACL6D,MAAM,CAACC,IAAP,CAAYpC,eAAZ,EAA6BO,MADxB,gCAAhB;;AAlHD,sBAsHK4B,MAAM,CAACC,IAAP,CAAYpC,eAAZ,EAA6BO,MAA7B,GAAsC,CAtH3C;AAAA;AAAA;AAAA;;AAuHQ2C,gBAAAA,OAvHR,GAuHkBC,+CAAyBC,2BAAzB,CAAqD;AACpEpD,kBAAAA,eAAe,EAAfA;AADoE,iBAArD,CAvHlB;AA2HE,yDAAsBkD,OAAtB;AA3HF,kDA6HSA,OA7HT;;AAAA;AAAA,kDAgIQ,IAhIR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iHAmIA,kBAAmC9E,OAAnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAGsB,KAAKW,YAAL,CAAkB;AAAEC,kBAAAA,wBAAwB,EAAE;AAA5B,iBAAlB,CAHtB;;AAAA;AAGOC,gBAAAA,MAHP;AAAA;AAAA,uBAKuBA,MAAM,CAACC,IAAP,CAAY,8BAAZ,EAA4C;AACjEmE,kBAAAA,OAAO,EAAE;AACR3D,oBAAAA,QAAQ,EAAEtB,OAAO,CAACkF;AADV;AADwD,iBAA5C,CALvB;;AAAA;AAKOnE,gBAAAA,OALP;;AAWCC,oDAAkBC,uBAAlB,CAA0CF,OAA1C;;AAEAhB,gBAAAA,UAAU,CAACW,aAAX,GAA2B,IAA3B;AAbD,kDAeQK,OAfR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;4GAkBA,kBACCf,OADD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAGsB,KAAKW,YAAL,CAAkB;AAAEC,kBAAAA,wBAAwB,EAAE;AAA5B,iBAAlB,CAHtB;;AAAA;AAGOC,gBAAAA,MAHP;AAAA;AAAA,uBAKuBA,MAAM,CAACC,IAAP,CAAY,gCAAZ,EAA8C;AACnEmE,kBAAAA,OAAO,EAAEjF;AAD0D,iBAA9C,CALvB;;AAAA;AAKOe,gBAAAA,OALP;;AASCC,oDAAkBC,uBAAlB,CAA0CF,OAA1C;;AAEAhB,gBAAAA,UAAU,CAACW,aAAX,GAA2B,IAA3B;;AAXD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WArLA,sBAA2B;AAC1BX,MAAAA,UAAU,CAACW,aAAX,GAA2B,IAA3B;AACA;;;EArCsCyE,0B;;;iCAAnBpF,U","sourcesContent":["import pathUtil from 'path'\nimport {\n\tEventContract,\n\tEventSignature,\n\tPermissionContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { Schema, validateSchema } from '@sprucelabs/schema'\nimport {\n\teventResponseUtil,\n\teventDiskUtil,\n\teventNameUtil,\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { cloneDeep } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\nimport { eventContractCleanerUtil } from '../../../utilities/eventContractCleaner.utility'\n\nexport interface EventStoreFetchEventContractsResponse {\n\terrors: SpruceError[]\n\tcontracts: EventContract[]\n}\n\ntype Options = Omit<\n\tEventSignature,\n\t| 'responsePayloadSchema'\n\t| 'emitPayloadSchema'\n\t| 'listenPermissionContract'\n\t| 'emitPermissionContract'\n>\n\ninterface EventImport {\n\toptions?: Options\n\temitPayload?: Schema\n\temitTarget?: Schema\n\tresponsePayload?: Schema\n\temitPermissions?: PermissionContract\n\tlistenPermissions?: PermissionContract\n}\n\nconst eventFileNamesImportKeyMap = {\n\t'event.options.ts': { key: 'options', isSchema: false },\n\t'emitPayload.builder.ts': { key: 'emitPayload', isSchema: true },\n\t'emitTarget.builder.ts': { key: 'emitTarget', isSchema: true },\n\t'responsePayload.builder.ts': { key: 'responsePayload', isSchema: true },\n\t'emitPermissions.builder.ts': { key: 'emitPermissions', isSchema: false },\n\t'listenPermissions.builder.ts': { key: 'listenPermissions', isSchema: false },\n}\n\nexport default class EventStore extends AbstractStore {\n\tpublic name = 'event'\n\tprotected static contractCache: any\n\n\tpublic async fetchEventContracts(options?: {\n\t\tlocalNamespace?: string\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t}): Promise<EventStoreFetchEventContractsResponse> {\n\t\tconst { localNamespace, didUpdateHandler } = options ?? {}\n\n\t\tdidUpdateHandler?.('Pulling remote contracts...')\n\n\t\tconst contracts = await this.fetchRemoteContracts()\n\n\t\tconst localContract =\n\t\t\tlocalNamespace &&\n\t\t\t(await this.loadLocalContract(localNamespace, didUpdateHandler))\n\n\t\tif (localNamespace) {\n\t\t\tthis.filterOutLocalEventsFromRemoteContractsMutating(\n\t\t\t\tcontracts,\n\t\t\t\tlocalNamespace\n\t\t\t)\n\t\t}\n\n\t\tif (localContract) {\n\t\t\tcontracts.push(localContract)\n\t\t}\n\n\t\treturn {\n\t\t\tcontracts,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static clearCache() {\n\t\tEventStore.contractCache = null\n\t}\n\n\tprivate async fetchRemoteContracts() {\n\t\tif (!EventStore.contractCache) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\t\t\tconst results = await client.emit('get-event-contracts::v2020_12_25')\n\t\t\tconst { contracts } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\tEventStore.contractCache = contracts\n\t\t}\n\n\t\treturn cloneDeep(EventStore.contractCache)\n\t}\n\n\tprivate filterOutLocalEventsFromRemoteContractsMutating(\n\t\tremoteContracts: EventContract[],\n\t\tlocalNamespace: string\n\t) {\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\n\t\tfor (const contract of remoteContracts) {\n\t\t\tconst sigs = eventContractUtil.getNamedEventSignatures(contract)\n\t\t\tfor (const sig of sigs) {\n\t\t\t\tif (sig.eventNamespace === ns) {\n\t\t\t\t\tdelete contract.eventSignatures[sig.fullyQualifiedEventName]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async loadLocalContract(\n\t\tlocalNamespace: string,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<EventContract | null> {\n\t\tconst localMatches = await globby(\n\t\t\tdiskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\t'src',\n\t\t\t\t'events',\n\t\t\t\t'**/*.(builder|options).ts'\n\t\t\t)\n\t\t)\n\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\t\tconst eventSignatures: Record<string, EventSignature> = {}\n\t\tconst filesByFqenAndEventKey: {\n\t\t\tfqen: string\n\t\t\tisSchema: boolean\n\t\t\tmatch: string\n\t\t\teventKey: string\n\t\t}[] = []\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Importing ${localMatches.length} local event signature files...`\n\t\t)\n\n\t\tawait Promise.all(\n\t\t\tlocalMatches.map(async (match) => {\n\t\t\t\tlet fqen: string | undefined\n\t\t\t\tlet eventKey: keyof EventImport | undefined\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { eventName, version } = eventDiskUtil.splitPathToEvent(match)\n\t\t\t\t\tfqen = eventNameUtil.join({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t\teventNamespace: ns,\n\t\t\t\t\t})\n\n\t\t\t\t\tconst filename = pathUtil.basename(\n\t\t\t\t\t\tmatch\n\t\t\t\t\t) as keyof typeof eventFileNamesImportKeyMap\n\n\t\t\t\t\tconst map = eventFileNamesImportKeyMap[filename]\n\n\t\t\t\t\tif (map) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\teventKey = map.key\n\n\t\t\t\t\t\tfilesByFqenAndEventKey.push({\n\t\t\t\t\t\t\tfqen,\n\t\t\t\t\t\t\tisSchema: map.isSchema,\n\t\t\t\t\t\t\tmatch,\n\t\t\t\t\t\t\teventKey: eventKey as string,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen ?? 'Bad event name',\n\t\t\t\t\t\tbrokenProperty: eventKey ?? '*** major failure ***',\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\n\t\tconst matches = filesByFqenAndEventKey.map((o) => o.match)\n\t\tconst importsInOrder = (await this.Service('import').bulkImport(\n\t\t\tmatches\n\t\t)) as Record<string, any>[]\n\t\tconst importsByName: Record<string, EventImport> = {}\n\n\t\tfor (let idx = 0; idx < filesByFqenAndEventKey.length; idx++) {\n\t\t\tconst imported = importsInOrder[idx]\n\t\t\tconst { fqen, eventKey, isSchema } = filesByFqenAndEventKey[idx]\n\n\t\t\tif (isSchema) {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateSchema(imported)\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen,\n\t\t\t\t\t\tbrokenProperty: eventKey,\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!importsByName[fqen]) {\n\t\t\t\timportsByName[fqen] = {}\n\t\t\t}\n\n\t\t\t//@ts-ignore\n\t\t\timportsByName[fqen][eventKey] = imported\n\t\t}\n\n\t\tObject.keys(importsByName).forEach((fqen) => {\n\t\t\tconst imported = importsByName[fqen]\n\t\t\tconst { eventName } = eventNameUtil.split(fqen)\n\t\t\teventSignatures[fqen] = {\n\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\teventName,\n\t\t\t\t\tpayloadSchema: imported.emitPayload,\n\t\t\t\t\ttargetSchema: imported.emitTarget,\n\t\t\t\t}),\n\t\t\t\tresponsePayloadSchema: imported.responsePayload,\n\t\t\t\temitPermissionContract: imported.emitPermissions,\n\t\t\t\tlistenPermissionContract: imported.listenPermissions,\n\t\t\t\t...imported.options,\n\t\t\t}\n\t\t})\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Loaded ${Object.keys(eventSignatures).length} local event signatures...`\n\t\t)\n\n\t\tif (Object.keys(eventSignatures).length > 0) {\n\t\t\tconst cleaned = eventContractCleanerUtil.cleanPayloadsAndPermissions({\n\t\t\t\teventSignatures,\n\t\t\t})\n\n\t\t\tvalidateEventContract(cleaned)\n\n\t\t\treturn cleaned\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic async registerEventContract(options: {\n\t\teventContract: EventContract\n\t}) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('register-events::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tcontract: options.eventContract,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = null\n\n\t\treturn results\n\t}\n\n\tpublic async unRegisterEvents(\n\t\toptions: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload\n\t) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('unregister-events::v2020_12_25', {\n\t\t\tpayload: options,\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = null\n\t}\n}\n"],"file":"EventStore.js"}
|
|
@@ -83,7 +83,7 @@ var RebuildAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
83
83
|
_context.prev = 2;
|
|
84
84
|
|
|
85
85
|
if (shouldPlayGames) {
|
|
86
|
-
_InFlightEntertainment["default"].start();
|
|
86
|
+
_InFlightEntertainment["default"].start(['Rebuild sequence initialized...', 'The only option is setting a new high score!']);
|
|
87
87
|
} else {
|
|
88
88
|
this.ui.startLoading('Rebuilding....');
|
|
89
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/skill/actions/RebuildAction.ts"],"names":["optionsSchema","id","description","fields","shouldPlayGames","type","label","defaultValue","RebuildAction","options","validateAndNormalizeOptions","command","Service","InFlightEntertainment","start","ui","startLoading","execute","onData","data","writeStatus","resetUi","errors","summaryLines","stop","stopLoading","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAGA,IAAMA,aAAa,GAAG,yBAAY;AACjCC,EAAAA,EAAE,EAAE,gBAD6B;AAEjCC,EAAAA,WAAW,EACV,iEAHgC;AAIjCC,EAAAA,MAAM,EAAE;AACPC,IAAAA,eAAe,EAAE;AAChBC,MAAAA,IAAI,EAAE,SADU;AAEhBC,MAAAA,KAAK,EAAE,YAFS;AAGhBC,MAAAA,YAAY,EAAE;AAHE;AADV;AAJyB,CAAZ,CAAtB;;IAgBqBC,a;;;;;;;;;;;;;;;sGACkBR,a;uGACd,CAAC,SAAD,C;0GACG,6B;;;;;;;mGAE3B,iBAAqBS,OAArB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,wCAC6B,KAAKC,2BAAL,CAAiCD,OAAjC,CAD7B,EACSL,eADT,yBACSA,eADT;AAEOO,gBAAAA,OAFP,GAEiB,KAAKC,OAAL,CAAa,SAAb,CAFjB;AAAA;;AAKE,oBAAIR,eAAJ,EAAqB;AACpBS,oDAAsBC,KAAtB;
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/skill/actions/RebuildAction.ts"],"names":["optionsSchema","id","description","fields","shouldPlayGames","type","label","defaultValue","RebuildAction","options","validateAndNormalizeOptions","command","Service","InFlightEntertainment","start","ui","startLoading","execute","onData","data","writeStatus","resetUi","errors","summaryLines","stop","stopLoading","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAGA,IAAMA,aAAa,GAAG,yBAAY;AACjCC,EAAAA,EAAE,EAAE,gBAD6B;AAEjCC,EAAAA,WAAW,EACV,iEAHgC;AAIjCC,EAAAA,MAAM,EAAE;AACPC,IAAAA,eAAe,EAAE;AAChBC,MAAAA,IAAI,EAAE,SADU;AAEhBC,MAAAA,KAAK,EAAE,YAFS;AAGhBC,MAAAA,YAAY,EAAE;AAHE;AADV;AAJyB,CAAZ,CAAtB;;IAgBqBC,a;;;;;;;;;;;;;;;sGACkBR,a;uGACd,CAAC,SAAD,C;0GACG,6B;;;;;;;mGAE3B,iBAAqBS,OAArB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,wCAC6B,KAAKC,2BAAL,CAAiCD,OAAjC,CAD7B,EACSL,eADT,yBACSA,eADT;AAEOO,gBAAAA,OAFP,GAEiB,KAAKC,OAAL,CAAa,SAAb,CAFjB;AAAA;;AAKE,oBAAIR,eAAJ,EAAqB;AACpBS,oDAAsBC,KAAtB,CAA4B,CAC3B,iCAD2B,EAE3B,8CAF2B,CAA5B;AAIA,iBALD,MAKO;AACN,uBAAKC,EAAL,CAAQC,YAAR,CAAqB,gBAArB;AACA;;AAZH;AAAA,uBAaQL,OAAO,CAACM,OAAR,CAAgB,cAAhB,EAAgC;AACrCC,kBAAAA,MAAM,EAAE,gBAACC,IAAD,EAAkB;AACzBN,4JAAuBO,WAAvB,CAAmCD,IAAnC;AACA;AAHoC,iBAAhC,CAbR;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAmBE,qBAAKE,OAAL;AAnBF,iDAoBS;AACNC,kBAAAA,MAAM,EAAE;AADF,iBApBT;;AAAA;AAyBC,qBAAKD,OAAL;AAzBD,iDA2BQ;AACNE,kBAAAA,YAAY,EAAE,CACb,0BADa,EAEb,4BAFa,EAGb,0BAHa,EAIb,oBAJa;AADR,iBA3BR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAqCA,mBAAkB;AACjBV,wCAAsBW,IAAtB;;AACA,WAAKT,EAAL,CAAQU,WAAR;AACA;;;EA7CyCC,2B","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport InFlightEntertainment from '../../../InFlightEntertainment'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'rebuildOptions',\n\tdescription:\n\t\t'Clear the build and node_modules folder and start from the top.',\n\tfields: {\n\t\tshouldPlayGames: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Play games',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class RebuildAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['rebuild']\n\tpublic invocationMessage = 'Rebuilding your skill... ⚡️'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst { shouldPlayGames } = this.validateAndNormalizeOptions(options)\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tif (shouldPlayGames) {\n\t\t\t\tInFlightEntertainment.start([\n\t\t\t\t\t'Rebuild sequence initialized...',\n\t\t\t\t\t'The only option is setting a new high score!',\n\t\t\t\t])\n\t\t\t} else {\n\t\t\t\tthis.ui.startLoading('Rebuilding....')\n\t\t\t}\n\t\t\tawait command.execute('yarn rebuild', {\n\t\t\t\tonData: (data: string) => {\n\t\t\t\t\tInFlightEntertainment?.writeStatus(data)\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tthis.resetUi()\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tthis.resetUi()\n\n\t\treturn {\n\t\t\tsummaryLines: [\n\t\t\t\t'☑️ node_modules cleared.',\n\t\t\t\t'☑️ node_modules installed.',\n\t\t\t\t'☑️ Build folder cleared.',\n\t\t\t\t'☑️ Build complete.',\n\t\t\t],\n\t\t}\n\t}\n\n\tprivate resetUi() {\n\t\tInFlightEntertainment.stop()\n\t\tthis.ui.stopLoading()\n\t}\n}\n"],"file":"RebuildAction.js"}
|
|
@@ -387,7 +387,7 @@ var ImportService = /*#__PURE__*/function () {
|
|
|
387
387
|
throw new _SpruceError["default"]({
|
|
388
388
|
code: 'FAILED_TO_IMPORT',
|
|
389
389
|
file: file,
|
|
390
|
-
friendlyMessage: "Looks like
|
|
390
|
+
friendlyMessage: "Looks like ".concat(file, " does not export default.")
|
|
391
391
|
});
|
|
392
392
|
|
|
393
393
|
case 32:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/ImportService.ts"],"names":["ImportService","options","file","isCachingEnabled","importAllUncached","pullHashAndContents","hash","fileContents","hasFileChanged","isDirty","haveImportsChanged","cachedImports","importAllCached","response","writeCacheFile","fs","existsSync","SpruceError","code","friendlyMessage","args","divider","errorDivider","search","command","execute","stdout","successParts","split","errParts","length","proxyError","buildErrorFromExecuteResponse","defaultImported","JSON","parse","originalError","importAll","imported","cwd","originalFilepath","contents","changed","importMatches","regex","exec","match","dir","pathUtil","dirname","nodeResolved","require","resolve","join","destination","resolveCacheFile","diskUtil","writeFile","stringify","cacheFile","readFile","err","Error","stack","files","filepath","resolvePath","filename","Date","getTime","imports","exports","idx","relative","replace","extname","fullPath","importDefault","results","deleteDir","resolvedFilePath","doesFileExist","cacheDir","importCacheDir","createTempDir"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport fs from 'fs-extra'\nimport md5 from 'md5'\nimport SpruceError from '../errors/SpruceError'\nimport CommandService from './CommandService'\n\nexport default class ImportService {\n\tpublic cwd: string\n\n\tprivate divider = '## SPRUCE-CLI DIVIDER ##'\n\tprivate errorDivider = '## SPRUCE-CLI ERROR DIVIDER ##'\n\n\tprivate static cachedImports: Record<string, Record<string, any>> = {}\n\tprivate static importCacheDir: string =\n\t\tdiskUtil.createTempDir('import-service')\n\tprivate command: CommandService\n\tprivate static isCachingEnabled: boolean\n\n\tpublic constructor(options: { cwd: string; command: CommandService }) {\n\t\tthis.cwd = options.cwd\n\t\tthis.command = options.command\n\t}\n\n\tpublic importAll = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tif (!ImportService.isCachingEnabled) {\n\t\t\treturn this.importAllUncached(file)\n\t\t}\n\n\t\tconst { hash, fileContents } = this.pullHashAndContents(file)\n\n\t\tif (!this.hasFileChanged(hash)) {\n\t\t\tconst isDirty = this.haveImportsChanged(file, fileContents)\n\n\t\t\tif (!isDirty && ImportService.cachedImports[hash]) {\n\t\t\t\treturn ImportService.cachedImports[hash] as T\n\t\t\t} else if (!isDirty) {\n\t\t\t\tImportService.cachedImports[hash] = this.importAllCached(file)\n\t\t\t\treturn ImportService.cachedImports[hash] as T\n\t\t\t}\n\t\t}\n\n\t\tImportService.cachedImports[hash] = this.importAllUncached(file)\n\t\tconst response = (await ImportService.cachedImports[hash]) as T\n\t\tthis.writeCacheFile(hash, response)\n\n\t\treturn response\n\t}\n\n\tprivate haveImportsChanged(\n\t\toriginalFilepath: string,\n\t\tcontents: string\n\t): boolean {\n\t\tlet changed = false\n\t\tlet importMatches\n\n\t\t// only check files that start with dot because they are local and we can actually only check local files\n\t\tconst regex =\n\t\t\toriginalFilepath.search(/\\.js$/i) > -1\n\t\t\t\t? /require\\(['\"](\\..*?)['\"]\\)/gis\n\t\t\t\t: /import.*[\"'](\\..*?)[\"']/gis\n\n\t\twhile ((importMatches = regex.exec(contents)) !== null) {\n\t\t\ttry {\n\t\t\t\tconst match = importMatches[1]\n\t\t\t\tconst dir = pathUtil.dirname(originalFilepath)\n\t\t\t\tconst nodeResolved = require.resolve(pathUtil.join(dir, match))\n\t\t\t\tconst { hash } = this.pullHashAndContents(nodeResolved)\n\n\t\t\t\tif (this.hasFileChanged(hash)) {\n\t\t\t\t\tchanged = true\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tchanged = true\n\t\t\t}\n\t\t}\n\n\t\treturn changed\n\t}\n\n\tprivate writeCacheFile(hash: string, contents: Record<string, any>) {\n\t\tconst destination = this.resolveCacheFile(hash)\n\t\tdiskUtil.writeFile(destination, JSON.stringify(contents))\n\t}\n\n\tprivate importAllCached(file: string) {\n\t\tconst { hash } = this.pullHashAndContents(file)\n\n\t\tconst cacheFile = this.resolveCacheFile(hash)\n\t\tconst contents = diskUtil.readFile(cacheFile)\n\n\t\treturn JSON.parse(contents)\n\t}\n\n\tprivate importAllUncached = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tlet defaultImported: T | undefined\n\n\t\tif (!fs.existsSync(file)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\tfile,\n\t\t\t\tfriendlyMessage: `I couldn't import ${file} because I couldn't find it!`,\n\t\t\t})\n\t\t}\n\n\t\tlet args = [\n\t\t\t'-e',\n\t\t\t`\"try { const imported = require('${file}');console.log('${this.divider}');console.log(JSON.stringify(imported)); } catch(err) { console.log('${this.errorDivider}');console.log(err.options ? err.toString() : err.stack); }\"`,\n\t\t]\n\n\t\tif (file.search(/\\.ts$/i) > -1) {\n\t\t\targs = [\n\t\t\t\t'-r',\n\t\t\t\t'ts-node/register',\n\t\t\t\t'-r',\n\t\t\t\t'tsconfig-paths/register',\n\t\t\t\t...args,\n\t\t\t]\n\t\t}\n\n\t\ttry {\n\t\t\tconst { stdout } = await this.command.execute('node', {\n\t\t\t\targs,\n\t\t\t})\n\n\t\t\tconst successParts = stdout.split(this.divider)\n\t\t\tconst errParts = stdout.split(this.errorDivider)\n\n\t\t\tif (errParts.length > 1) {\n\t\t\t\tconst proxyError = this.buildErrorFromExecuteResponse(\n\t\t\t\t\terrParts,\n\t\t\t\t\tfile,\n\t\t\t\t\tstdout\n\t\t\t\t)\n\n\t\t\t\tthrow proxyError\n\t\t\t} else {\n\t\t\t\tdefaultImported = JSON.parse(successParts[1])\n\t\t\t}\n\t\t} catch (err: any) {\n\t\t\tif (err instanceof SpruceError) {\n\t\t\t\tthrow err\n\t\t\t} else {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\tfile,\n\t\t\t\t\toriginalError: err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn defaultImported as T\n\t}\n\n\tpublic importDefault = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tconst imported: any = await this.importAll(file)\n\t\treturn imported.default as T\n\t}\n\n\tprivate buildErrorFromExecuteResponse(\n\t\terrParts: string[],\n\t\tfile: string,\n\t\tstdout: string\n\t) {\n\t\tlet err: Record<string, any> = {}\n\t\ttry {\n\t\t\terr = JSON.parse(errParts[1])\n\t\t\tif (!err.options) {\n\t\t\t\tthrow Error('Capture and reported below')\n\t\t\t}\n\t\t} catch {\n\t\t\terr = {\n\t\t\t\toptions: {\n\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\tfile,\n\t\t\t\t\tfriendlyMessage: `Unknown error from import, output was: \\n\\n\"${\n\t\t\t\t\t\terrParts[1] ?? stdout\n\t\t\t\t\t}\"`,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst proxyError = new SpruceError(err.options)\n\n\t\tif (err.stack) {\n\t\t\tproxyError.stack = err.stack\n\t\t}\n\t\treturn proxyError\n\t}\n\n\tpublic async bulkImport(files: string[]): Promise<any[]> {\n\t\tif (files.length === 0) {\n\t\t\treturn []\n\t\t}\n\t\tconst filepath = diskUtil.resolvePath(this.cwd, '.tmp')\n\t\tconst filename = 'bulk-import-' + new Date().getTime() + '.ts'\n\n\t\tlet imports = ``\n\t\tlet exports = `export default [\\n`\n\n\t\tlet idx = 0\n\t\tfor (const file of files) {\n\t\t\tconst relative = pathUtil\n\t\t\t\t.relative(filepath, file)\n\t\t\t\t.replace(pathUtil.extname(file), '')\n\n\t\t\timports += `import { default as import${idx}} from '${relative}'\\n`\n\t\t\texports += `import${idx},\\n`\n\t\t\tidx++\n\t\t}\n\n\t\texports += ']'\n\n\t\tconst contents = imports + `\\n\\n` + exports\n\t\tconst fullPath = pathUtil.join(filepath, filename)\n\t\tdiskUtil.writeFile(fullPath, contents)\n\n\t\ttry {\n\t\t\tconst results = (await this.importDefault(fullPath)) as any[]\n\n\t\t\treturn results as any\n\t\t} catch (err) {\n\t\t\t// if something failed, lets load one at a time until we find the one that failes\n\t\t\tfor (const file of files) {\n\t\t\t\tconst imported = await this.importDefault(file)\n\t\t\t\tif (!imported) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\tfriendlyMessage: `Looks like this file does not export default.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthrow err\n\t\t} finally {\n\t\t\tdiskUtil.deleteDir(filepath)\n\t\t}\n\t}\n\n\tpublic static clearCache() {\n\t\tImportService.cachedImports = {}\n\t\tdiskUtil.deleteDir(this.cacheDir())\n\t}\n\n\tpublic static setCacheDir(cacheDir: string) {\n\t\tthis.importCacheDir = cacheDir\n\t}\n\n\tpublic static disableCache() {\n\t\tthis.isCachingEnabled = false\n\t}\n\n\tpublic static enableCaching() {\n\t\tthis.isCachingEnabled = true\n\t}\n\n\tprivate hasFileChanged(hash: string) {\n\t\tconst resolvedFilePath = this.resolveCacheFile(hash)\n\t\treturn !diskUtil.doesFileExist(resolvedFilePath)\n\t}\n\n\tprivate resolveCacheFile(hash: string) {\n\t\treturn diskUtil.resolvePath(ImportService.cacheDir(), hash + '.json')\n\t}\n\n\tprivate static cacheDir(): string {\n\t\treturn this.importCacheDir\n\t}\n\n\tprivate pullHashAndContents(file: string) {\n\t\tconst fileContents = diskUtil.readFile(file)\n\t\tconst hash = md5(fileContents)\n\t\treturn { hash, fileContents }\n\t}\n}\n"],"file":"ImportService.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/services/ImportService.ts"],"names":["ImportService","options","file","isCachingEnabled","importAllUncached","pullHashAndContents","hash","fileContents","hasFileChanged","isDirty","haveImportsChanged","cachedImports","importAllCached","response","writeCacheFile","fs","existsSync","SpruceError","code","friendlyMessage","args","divider","errorDivider","search","command","execute","stdout","successParts","split","errParts","length","proxyError","buildErrorFromExecuteResponse","defaultImported","JSON","parse","originalError","importAll","imported","cwd","originalFilepath","contents","changed","importMatches","regex","exec","match","dir","pathUtil","dirname","nodeResolved","require","resolve","join","destination","resolveCacheFile","diskUtil","writeFile","stringify","cacheFile","readFile","err","Error","stack","files","filepath","resolvePath","filename","Date","getTime","imports","exports","idx","relative","replace","extname","fullPath","importDefault","results","deleteDir","resolvedFilePath","doesFileExist","cacheDir","importCacheDir","createTempDir"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport fs from 'fs-extra'\nimport md5 from 'md5'\nimport SpruceError from '../errors/SpruceError'\nimport CommandService from './CommandService'\n\nexport default class ImportService {\n\tpublic cwd: string\n\n\tprivate divider = '## SPRUCE-CLI DIVIDER ##'\n\tprivate errorDivider = '## SPRUCE-CLI ERROR DIVIDER ##'\n\n\tprivate static cachedImports: Record<string, Record<string, any>> = {}\n\tprivate static importCacheDir: string =\n\t\tdiskUtil.createTempDir('import-service')\n\tprivate command: CommandService\n\tprivate static isCachingEnabled: boolean\n\n\tpublic constructor(options: { cwd: string; command: CommandService }) {\n\t\tthis.cwd = options.cwd\n\t\tthis.command = options.command\n\t}\n\n\tpublic importAll = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tif (!ImportService.isCachingEnabled) {\n\t\t\treturn this.importAllUncached(file)\n\t\t}\n\n\t\tconst { hash, fileContents } = this.pullHashAndContents(file)\n\n\t\tif (!this.hasFileChanged(hash)) {\n\t\t\tconst isDirty = this.haveImportsChanged(file, fileContents)\n\n\t\t\tif (!isDirty && ImportService.cachedImports[hash]) {\n\t\t\t\treturn ImportService.cachedImports[hash] as T\n\t\t\t} else if (!isDirty) {\n\t\t\t\tImportService.cachedImports[hash] = this.importAllCached(file)\n\t\t\t\treturn ImportService.cachedImports[hash] as T\n\t\t\t}\n\t\t}\n\n\t\tImportService.cachedImports[hash] = this.importAllUncached(file)\n\t\tconst response = (await ImportService.cachedImports[hash]) as T\n\t\tthis.writeCacheFile(hash, response)\n\n\t\treturn response\n\t}\n\n\tprivate haveImportsChanged(\n\t\toriginalFilepath: string,\n\t\tcontents: string\n\t): boolean {\n\t\tlet changed = false\n\t\tlet importMatches\n\n\t\t// only check files that start with dot because they are local and we can actually only check local files\n\t\tconst regex =\n\t\t\toriginalFilepath.search(/\\.js$/i) > -1\n\t\t\t\t? /require\\(['\"](\\..*?)['\"]\\)/gis\n\t\t\t\t: /import.*[\"'](\\..*?)[\"']/gis\n\n\t\twhile ((importMatches = regex.exec(contents)) !== null) {\n\t\t\ttry {\n\t\t\t\tconst match = importMatches[1]\n\t\t\t\tconst dir = pathUtil.dirname(originalFilepath)\n\t\t\t\tconst nodeResolved = require.resolve(pathUtil.join(dir, match))\n\t\t\t\tconst { hash } = this.pullHashAndContents(nodeResolved)\n\n\t\t\t\tif (this.hasFileChanged(hash)) {\n\t\t\t\t\tchanged = true\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tchanged = true\n\t\t\t}\n\t\t}\n\n\t\treturn changed\n\t}\n\n\tprivate writeCacheFile(hash: string, contents: Record<string, any>) {\n\t\tconst destination = this.resolveCacheFile(hash)\n\t\tdiskUtil.writeFile(destination, JSON.stringify(contents))\n\t}\n\n\tprivate importAllCached(file: string) {\n\t\tconst { hash } = this.pullHashAndContents(file)\n\n\t\tconst cacheFile = this.resolveCacheFile(hash)\n\t\tconst contents = diskUtil.readFile(cacheFile)\n\n\t\treturn JSON.parse(contents)\n\t}\n\n\tprivate importAllUncached = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tlet defaultImported: T | undefined\n\n\t\tif (!fs.existsSync(file)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\tfile,\n\t\t\t\tfriendlyMessage: `I couldn't import ${file} because I couldn't find it!`,\n\t\t\t})\n\t\t}\n\n\t\tlet args = [\n\t\t\t'-e',\n\t\t\t`\"try { const imported = require('${file}');console.log('${this.divider}');console.log(JSON.stringify(imported)); } catch(err) { console.log('${this.errorDivider}');console.log(err.options ? err.toString() : err.stack); }\"`,\n\t\t]\n\n\t\tif (file.search(/\\.ts$/i) > -1) {\n\t\t\targs = [\n\t\t\t\t'-r',\n\t\t\t\t'ts-node/register',\n\t\t\t\t'-r',\n\t\t\t\t'tsconfig-paths/register',\n\t\t\t\t...args,\n\t\t\t]\n\t\t}\n\n\t\ttry {\n\t\t\tconst { stdout } = await this.command.execute('node', {\n\t\t\t\targs,\n\t\t\t})\n\n\t\t\tconst successParts = stdout.split(this.divider)\n\t\t\tconst errParts = stdout.split(this.errorDivider)\n\n\t\t\tif (errParts.length > 1) {\n\t\t\t\tconst proxyError = this.buildErrorFromExecuteResponse(\n\t\t\t\t\terrParts,\n\t\t\t\t\tfile,\n\t\t\t\t\tstdout\n\t\t\t\t)\n\n\t\t\t\tthrow proxyError\n\t\t\t} else {\n\t\t\t\tdefaultImported = JSON.parse(successParts[1])\n\t\t\t}\n\t\t} catch (err: any) {\n\t\t\tif (err instanceof SpruceError) {\n\t\t\t\tthrow err\n\t\t\t} else {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\tfile,\n\t\t\t\t\toriginalError: err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn defaultImported as T\n\t}\n\n\tpublic importDefault = async <T extends Record<string, any>>(\n\t\tfile: string\n\t): Promise<T> => {\n\t\tconst imported: any = await this.importAll(file)\n\t\treturn imported.default as T\n\t}\n\n\tprivate buildErrorFromExecuteResponse(\n\t\terrParts: string[],\n\t\tfile: string,\n\t\tstdout: string\n\t) {\n\t\tlet err: Record<string, any> = {}\n\t\ttry {\n\t\t\terr = JSON.parse(errParts[1])\n\t\t\tif (!err.options) {\n\t\t\t\tthrow Error('Capture and reported below')\n\t\t\t}\n\t\t} catch {\n\t\t\terr = {\n\t\t\t\toptions: {\n\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\tfile,\n\t\t\t\t\tfriendlyMessage: `Unknown error from import, output was: \\n\\n\"${\n\t\t\t\t\t\terrParts[1] ?? stdout\n\t\t\t\t\t}\"`,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst proxyError = new SpruceError(err.options)\n\n\t\tif (err.stack) {\n\t\t\tproxyError.stack = err.stack\n\t\t}\n\t\treturn proxyError\n\t}\n\n\tpublic async bulkImport(files: string[]): Promise<any[]> {\n\t\tif (files.length === 0) {\n\t\t\treturn []\n\t\t}\n\t\tconst filepath = diskUtil.resolvePath(this.cwd, '.tmp')\n\t\tconst filename = 'bulk-import-' + new Date().getTime() + '.ts'\n\n\t\tlet imports = ``\n\t\tlet exports = `export default [\\n`\n\n\t\tlet idx = 0\n\t\tfor (const file of files) {\n\t\t\tconst relative = pathUtil\n\t\t\t\t.relative(filepath, file)\n\t\t\t\t.replace(pathUtil.extname(file), '')\n\n\t\t\timports += `import { default as import${idx}} from '${relative}'\\n`\n\t\t\texports += `import${idx},\\n`\n\t\t\tidx++\n\t\t}\n\n\t\texports += ']'\n\n\t\tconst contents = imports + `\\n\\n` + exports\n\t\tconst fullPath = pathUtil.join(filepath, filename)\n\t\tdiskUtil.writeFile(fullPath, contents)\n\n\t\ttry {\n\t\t\tconst results = (await this.importDefault(fullPath)) as any[]\n\n\t\t\treturn results as any\n\t\t} catch (err) {\n\t\t\t// if something failed, lets load one at a time until we find the one that failes\n\t\t\tfor (const file of files) {\n\t\t\t\tconst imported = await this.importDefault(file)\n\t\t\t\tif (!imported) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\tfriendlyMessage: `Looks like ${file} does not export default.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthrow err\n\t\t} finally {\n\t\t\tdiskUtil.deleteDir(filepath)\n\t\t}\n\t}\n\n\tpublic static clearCache() {\n\t\tImportService.cachedImports = {}\n\t\tdiskUtil.deleteDir(this.cacheDir())\n\t}\n\n\tpublic static setCacheDir(cacheDir: string) {\n\t\tthis.importCacheDir = cacheDir\n\t}\n\n\tpublic static disableCache() {\n\t\tthis.isCachingEnabled = false\n\t}\n\n\tpublic static enableCaching() {\n\t\tthis.isCachingEnabled = true\n\t}\n\n\tprivate hasFileChanged(hash: string) {\n\t\tconst resolvedFilePath = this.resolveCacheFile(hash)\n\t\treturn !diskUtil.doesFileExist(resolvedFilePath)\n\t}\n\n\tprivate resolveCacheFile(hash: string) {\n\t\treturn diskUtil.resolvePath(ImportService.cacheDir(), hash + '.json')\n\t}\n\n\tprivate static cacheDir(): string {\n\t\treturn this.importCacheDir\n\t}\n\n\tprivate pullHashAndContents(file: string) {\n\t\tconst fileContents = diskUtil.readFile(file)\n\t\tconst hash = md5(fileContents)\n\t\treturn { hash, fileContents }\n\t}\n}\n"],"file":"ImportService.js"}
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
]
|
|
18
18
|
},
|
|
19
19
|
"license": "MIT",
|
|
20
|
-
"version": "14.22.
|
|
20
|
+
"version": "14.22.8",
|
|
21
21
|
"bin": {
|
|
22
22
|
"spruce": "./build/index.js"
|
|
23
23
|
},
|
|
@@ -75,19 +75,19 @@
|
|
|
75
75
|
"@babel/plugin-proposal-decorators": "^7.15.8",
|
|
76
76
|
"@babel/runtime": "^7.15.4",
|
|
77
77
|
"@jest/reporters": "^27.3.1",
|
|
78
|
-
"@sprucelabs/error": "^5.0.
|
|
79
|
-
"@sprucelabs/heartwood-view-controllers": "^
|
|
80
|
-
"@sprucelabs/jest-json-reporter": "^6.0.
|
|
81
|
-
"@sprucelabs/mercury-client": "^16.13.
|
|
82
|
-
"@sprucelabs/mercury-event-emitter": "^16.13.
|
|
83
|
-
"@sprucelabs/mercury-types": "^26.1.
|
|
84
|
-
"@sprucelabs/schema": "^25.3.
|
|
85
|
-
"@sprucelabs/spruce-core-schemas": "^22.5.
|
|
86
|
-
"@sprucelabs/spruce-event-plugin": "^5.5.
|
|
87
|
-
"@sprucelabs/spruce-event-utils": "^16.0.
|
|
88
|
-
"@sprucelabs/spruce-skill-booter": "^5.5.
|
|
89
|
-
"@sprucelabs/spruce-skill-utils": "^20.6.
|
|
90
|
-
"@sprucelabs/spruce-templates": "^14.22.
|
|
78
|
+
"@sprucelabs/error": "^5.0.258",
|
|
79
|
+
"@sprucelabs/heartwood-view-controllers": "^34.3.4",
|
|
80
|
+
"@sprucelabs/jest-json-reporter": "^6.0.222",
|
|
81
|
+
"@sprucelabs/mercury-client": "^16.13.132",
|
|
82
|
+
"@sprucelabs/mercury-event-emitter": "^16.13.132",
|
|
83
|
+
"@sprucelabs/mercury-types": "^26.1.544",
|
|
84
|
+
"@sprucelabs/schema": "^25.3.382",
|
|
85
|
+
"@sprucelabs/spruce-core-schemas": "^22.5.503",
|
|
86
|
+
"@sprucelabs/spruce-event-plugin": "^5.5.26",
|
|
87
|
+
"@sprucelabs/spruce-event-utils": "^16.0.555",
|
|
88
|
+
"@sprucelabs/spruce-skill-booter": "^5.5.26",
|
|
89
|
+
"@sprucelabs/spruce-skill-utils": "^20.6.331",
|
|
90
|
+
"@sprucelabs/spruce-templates": "^14.22.8",
|
|
91
91
|
"cfonts": "^2.10.0",
|
|
92
92
|
"chalk": "^4.1.2",
|
|
93
93
|
"chokidar": "^3.5.2",
|
|
@@ -116,18 +116,18 @@
|
|
|
116
116
|
"uuid": "^8.3.2"
|
|
117
117
|
},
|
|
118
118
|
"devDependencies": {
|
|
119
|
-
"@sprucelabs/data-stores": "^6.1.
|
|
120
|
-
"@sprucelabs/jest-sheets-reporter": "^1.2.
|
|
121
|
-
"@sprucelabs/mercury-core-events": "^1.2.
|
|
122
|
-
"@sprucelabs/resolve-path-aliases": "^1.0.
|
|
123
|
-
"@sprucelabs/spruce-conversation-plugin": "^5.5.
|
|
124
|
-
"@sprucelabs/spruce-deploy-plugin": "^5.5.
|
|
125
|
-
"@sprucelabs/spruce-store-plugin": "^5.5.
|
|
126
|
-
"@sprucelabs/spruce-test-fixtures": "^5.5.
|
|
127
|
-
"@sprucelabs/test": "^7.7.
|
|
128
|
-
"@sprucelabs/test-utils": "^3.0.
|
|
119
|
+
"@sprucelabs/data-stores": "^6.1.399",
|
|
120
|
+
"@sprucelabs/jest-sheets-reporter": "^1.2.227",
|
|
121
|
+
"@sprucelabs/mercury-core-events": "^1.2.632",
|
|
122
|
+
"@sprucelabs/resolve-path-aliases": "^1.0.220",
|
|
123
|
+
"@sprucelabs/spruce-conversation-plugin": "^5.5.26",
|
|
124
|
+
"@sprucelabs/spruce-deploy-plugin": "^5.5.26",
|
|
125
|
+
"@sprucelabs/spruce-store-plugin": "^5.5.26",
|
|
126
|
+
"@sprucelabs/spruce-test-fixtures": "^5.5.26",
|
|
127
|
+
"@sprucelabs/test": "^7.7.210",
|
|
128
|
+
"@sprucelabs/test-utils": "^3.0.232",
|
|
129
129
|
"@types/blessed": "^0.1.19",
|
|
130
|
-
"@types/eslint": "^7.28.
|
|
130
|
+
"@types/eslint": "^7.28.2",
|
|
131
131
|
"@types/fs-extra": "^9.0.13",
|
|
132
132
|
"@types/inflection": "^1.13.0",
|
|
133
133
|
"@types/inquirer": "^8.1.3",
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
"@types/lodash": "^4.14.176",
|
|
136
136
|
"@types/md5": "^2.3.1",
|
|
137
137
|
"@types/mkdirp": "^1.0.2",
|
|
138
|
-
"@types/node": "^16.11.
|
|
138
|
+
"@types/node": "^16.11.4",
|
|
139
139
|
"@types/promise.allsettled": "^1.0.3",
|
|
140
140
|
"@types/ps-node": "^0.1.1",
|
|
141
141
|
"@types/rimraf": "^3.0.2",
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
"concurrently": "^6.3.0",
|
|
150
150
|
"conventional-changelog-sprucelabs": "^1.1.2",
|
|
151
151
|
"dotenv": "^10.0.0",
|
|
152
|
-
"eslint": "^8.0
|
|
152
|
+
"eslint": "^8.1.0",
|
|
153
153
|
"eslint-config-spruce": "^10.10.15",
|
|
154
154
|
"find-process": "^1.4.5",
|
|
155
155
|
"jest": "^27.3.1",
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
"ps-node": "^0.1.6",
|
|
161
161
|
"rimraf": "^3.0.2",
|
|
162
162
|
"ts-jest": "^27.0.7",
|
|
163
|
-
"ts-node": "^10.
|
|
163
|
+
"ts-node": "^10.4.0",
|
|
164
164
|
"tsc-watch": "^4.5.0",
|
|
165
165
|
"tsconfig-paths": "^3.11.0",
|
|
166
166
|
"typescript": "^4.4.4"
|
|
@@ -592,5 +592,5 @@
|
|
|
592
592
|
"ora"
|
|
593
593
|
]
|
|
594
594
|
},
|
|
595
|
-
"gitHead": "
|
|
595
|
+
"gitHead": "822f64bc19d0f5421ba3a5f95032730c35ebdee3"
|
|
596
596
|
}
|
|
@@ -137,7 +137,7 @@ export default class EventStoreTest extends AbstractEventTest {
|
|
|
137
137
|
results.files
|
|
138
138
|
)
|
|
139
139
|
|
|
140
|
-
diskUtil.writeFile(match, '')
|
|
140
|
+
diskUtil.writeFile(match, 'export default {}')
|
|
141
141
|
|
|
142
142
|
const err = await assert.doesThrowAsync(
|
|
143
143
|
() => this.Store('event').loadLocalContract(skill.slug),
|
package/src/cli.ts
CHANGED
|
@@ -444,9 +444,14 @@ export async function run(argv: string[] = []): Promise<void> {
|
|
|
444
444
|
await setupInFlightEntertainment(terminal)
|
|
445
445
|
|
|
446
446
|
const command = await program.parseAsync(argv)
|
|
447
|
+
|
|
447
448
|
//@ts-ignore
|
|
448
449
|
const results = await command._actionResults[0]
|
|
449
450
|
|
|
451
|
+
for (const client of MercuryClientFactory.getClients()) {
|
|
452
|
+
await client.disconnect()
|
|
453
|
+
}
|
|
454
|
+
|
|
450
455
|
return results
|
|
451
456
|
}
|
|
452
457
|
|
|
@@ -153,6 +153,9 @@ export default class EventContractBuilder {
|
|
|
153
153
|
|
|
154
154
|
const contractResults = await this.eventStore.fetchEventContracts({
|
|
155
155
|
localNamespace: namespace,
|
|
156
|
+
didUpdateHandler: (msg) => {
|
|
157
|
+
this.ui.startLoading(msg)
|
|
158
|
+
},
|
|
156
159
|
})
|
|
157
160
|
|
|
158
161
|
if (contractResults.errors.length > 0) {
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
SpruceSchemas,
|
|
7
7
|
validateEventContract,
|
|
8
8
|
} from '@sprucelabs/mercury-types'
|
|
9
|
-
import { Schema } from '@sprucelabs/schema'
|
|
9
|
+
import { Schema, validateSchema } from '@sprucelabs/schema'
|
|
10
10
|
import {
|
|
11
11
|
eventResponseUtil,
|
|
12
12
|
eventDiskUtil,
|
|
@@ -63,10 +63,10 @@ export default class EventStore extends AbstractStore {
|
|
|
63
63
|
}): Promise<EventStoreFetchEventContractsResponse> {
|
|
64
64
|
const { localNamespace, didUpdateHandler } = options ?? {}
|
|
65
65
|
|
|
66
|
-
const contracts = await this.fetchRemoteContracts()
|
|
67
|
-
|
|
68
66
|
didUpdateHandler?.('Pulling remote contracts...')
|
|
69
67
|
|
|
68
|
+
const contracts = await this.fetchRemoteContracts()
|
|
69
|
+
|
|
70
70
|
const localContract =
|
|
71
71
|
localNamespace &&
|
|
72
72
|
(await this.loadLocalContract(localNamespace, didUpdateHandler))
|
|
@@ -135,16 +135,21 @@ export default class EventStore extends AbstractStore {
|
|
|
135
135
|
|
|
136
136
|
const ns = namesUtil.toKebab(localNamespace)
|
|
137
137
|
const eventSignatures: Record<string, EventSignature> = {}
|
|
138
|
-
const
|
|
138
|
+
const filesByFqenAndEventKey: {
|
|
139
|
+
fqen: string
|
|
140
|
+
isSchema: boolean
|
|
141
|
+
match: string
|
|
142
|
+
eventKey: string
|
|
143
|
+
}[] = []
|
|
139
144
|
|
|
140
145
|
didUpdateHandler?.(
|
|
141
|
-
`Importing
|
|
146
|
+
`Importing ${localMatches.length} local event signature files...`
|
|
142
147
|
)
|
|
143
148
|
|
|
144
149
|
await Promise.all(
|
|
145
150
|
localMatches.map(async (match) => {
|
|
146
151
|
let fqen: string | undefined
|
|
147
|
-
let
|
|
152
|
+
let eventKey: keyof EventImport | undefined
|
|
148
153
|
|
|
149
154
|
try {
|
|
150
155
|
const { eventName, version } = eventDiskUtil.splitPathToEvent(match)
|
|
@@ -162,32 +167,57 @@ export default class EventStore extends AbstractStore {
|
|
|
162
167
|
|
|
163
168
|
if (map) {
|
|
164
169
|
//@ts-ignore
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
importsByName[fqen][map.key] = await importer.importSchema(match)
|
|
174
|
-
} else {
|
|
175
|
-
const importer = this.Service('import')
|
|
176
|
-
//@ts-ignore
|
|
177
|
-
importsByName[fqen][map.key] = await importer.importDefault(match)
|
|
178
|
-
}
|
|
170
|
+
eventKey = map.key
|
|
171
|
+
|
|
172
|
+
filesByFqenAndEventKey.push({
|
|
173
|
+
fqen,
|
|
174
|
+
isSchema: map.isSchema,
|
|
175
|
+
match,
|
|
176
|
+
eventKey: eventKey as string,
|
|
177
|
+
})
|
|
179
178
|
}
|
|
180
179
|
} catch (err: any) {
|
|
181
180
|
throw new SpruceError({
|
|
182
181
|
code: 'INVALID_EVENT_CONTRACT',
|
|
183
182
|
fullyQualifiedEventName: fqen ?? 'Bad event name',
|
|
184
|
-
brokenProperty:
|
|
183
|
+
brokenProperty: eventKey ?? '*** major failure ***',
|
|
185
184
|
originalError: err,
|
|
186
185
|
})
|
|
187
186
|
}
|
|
188
187
|
})
|
|
189
188
|
)
|
|
190
189
|
|
|
190
|
+
const matches = filesByFqenAndEventKey.map((o) => o.match)
|
|
191
|
+
const importsInOrder = (await this.Service('import').bulkImport(
|
|
192
|
+
matches
|
|
193
|
+
)) as Record<string, any>[]
|
|
194
|
+
const importsByName: Record<string, EventImport> = {}
|
|
195
|
+
|
|
196
|
+
for (let idx = 0; idx < filesByFqenAndEventKey.length; idx++) {
|
|
197
|
+
const imported = importsInOrder[idx]
|
|
198
|
+
const { fqen, eventKey, isSchema } = filesByFqenAndEventKey[idx]
|
|
199
|
+
|
|
200
|
+
if (isSchema) {
|
|
201
|
+
try {
|
|
202
|
+
validateSchema(imported)
|
|
203
|
+
} catch (err: any) {
|
|
204
|
+
throw new SpruceError({
|
|
205
|
+
code: 'INVALID_EVENT_CONTRACT',
|
|
206
|
+
fullyQualifiedEventName: fqen,
|
|
207
|
+
brokenProperty: eventKey,
|
|
208
|
+
originalError: err,
|
|
209
|
+
})
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (!importsByName[fqen]) {
|
|
214
|
+
importsByName[fqen] = {}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
//@ts-ignore
|
|
218
|
+
importsByName[fqen][eventKey] = imported
|
|
219
|
+
}
|
|
220
|
+
|
|
191
221
|
Object.keys(importsByName).forEach((fqen) => {
|
|
192
222
|
const imported = importsByName[fqen]
|
|
193
223
|
const { eventName } = eventNameUtil.split(fqen)
|
|
@@ -30,7 +30,10 @@ export default class RebuildAction extends AbstractAction<OptionsSchema> {
|
|
|
30
30
|
|
|
31
31
|
try {
|
|
32
32
|
if (shouldPlayGames) {
|
|
33
|
-
InFlightEntertainment.start(
|
|
33
|
+
InFlightEntertainment.start([
|
|
34
|
+
'Rebuild sequence initialized...',
|
|
35
|
+
'The only option is setting a new high score!',
|
|
36
|
+
])
|
|
34
37
|
} else {
|
|
35
38
|
this.ui.startLoading('Rebuilding....')
|
|
36
39
|
}
|
|
@@ -233,7 +233,7 @@ export default class ImportService {
|
|
|
233
233
|
throw new SpruceError({
|
|
234
234
|
code: 'FAILED_TO_IMPORT',
|
|
235
235
|
file,
|
|
236
|
-
friendlyMessage: `Looks like
|
|
236
|
+
friendlyMessage: `Looks like ${file} does not export default.`,
|
|
237
237
|
})
|
|
238
238
|
}
|
|
239
239
|
}
|