@sprucelabs/spruce-cli 14.28.6 → 14.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js +13 -9
- package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.d.ts +1 -1
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +24 -14
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js +15 -11
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +3 -1
- package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +2 -0
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +157 -81
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.d.ts +7 -0
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js +171 -0
- package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +53 -21
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.d.ts +5 -0
- package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.js +137 -0
- package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.js.map +1 -0
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js +4 -1
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
- package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.d.ts +4 -1
- package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js +136 -47
- package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/CreatingATest.test.js +14 -10
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/views/TestingViewControllers.test.d.ts +1 -0
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js +67 -35
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
- package/build/__tests__/implementation/AuthService.test.d.ts +1 -0
- package/build/__tests__/implementation/AuthService.test.js +8 -0
- package/build/__tests__/implementation/AuthService.test.js.map +1 -1
- package/build/__tests__/implementation/EventStore.test.js +3 -1
- package/build/__tests__/implementation/EventStore.test.js.map +1 -1
- package/build/__tests__/implementation/LintService.test.d.ts +5 -0
- package/build/__tests__/implementation/LintService.test.js +130 -0
- package/build/__tests__/implementation/LintService.test.js.map +1 -0
- package/build/__tests__/implementation/StoreFeature.test.d.ts +4 -0
- package/build/__tests__/implementation/StoreFeature.test.js +132 -0
- package/build/__tests__/implementation/StoreFeature.test.js.map +1 -0
- package/build/errors/SpruceError.js +8 -4
- package/build/errors/SpruceError.js.map +1 -1
- package/build/features/event/EventFeature.d.ts +2 -2
- package/build/features/event/EventFeature.js +53 -13
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/actions/ListenAction.d.ts +1 -0
- package/build/features/event/actions/ListenAction.js +60 -31
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/actions/SyncListenersAction.d.ts +15 -0
- package/build/features/event/actions/SyncListenersAction.js +115 -0
- package/build/features/event/actions/SyncListenersAction.js.map +1 -0
- package/build/features/event/builders/ListenerTemplateItemBuilder.d.ts +8 -0
- package/build/features/event/builders/ListenerTemplateItemBuilder.js +65 -0
- package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -0
- package/build/features/event/stores/EventStore.js +2 -2
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/event/stores/ListenerStore.d.ts +9 -0
- package/build/features/event/stores/ListenerStore.js +122 -0
- package/build/features/event/stores/ListenerStore.js.map +1 -0
- package/build/features/event/writers/EventWriter.d.ts +4 -1
- package/build/features/event/writers/EventWriter.js +42 -8
- package/build/features/event/writers/EventWriter.js.map +1 -1
- package/build/features/skill/SkillFeature.js +1 -1
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/skill/stores/SkillStore.js +4 -8
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/store/StoreFeature.d.ts +1 -1
- package/build/features/store/StoreFeature.js +16 -11
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/services/AuthService.d.ts +4 -1
- package/build/services/AuthService.js +15 -4
- package/build/services/AuthService.js.map +1 -1
- package/build/services/GameService.js +14 -10
- package/build/services/GameService.js.map +1 -1
- package/build/services/LintService.d.ts +5 -2
- package/build/services/LintService.js +137 -92
- package/build/services/LintService.js.map +1 -1
- package/build/services/ServiceFactory.js +9 -3
- package/build/services/ServiceFactory.js.map +1 -1
- package/build/stores/StoreFactory.d.ts +2 -0
- package/build/stores/StoreFactory.js +4 -1
- package/build/stores/StoreFactory.js.map +1 -1
- package/build/tests/AbstractCliTest.js +3 -3
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/writers/AbstractWriter.d.ts +0 -3
- package/build/writers/AbstractWriter.js +2 -18
- package/build/writers/AbstractWriter.js.map +1 -1
- package/package.json +30 -28
- package/src/__tests__/behavioral/SettingLogTransportsInASkill.test.ts +2 -0
- package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +10 -5
- package/src/__tests__/behavioral/TestingDataStores.test.ts +2 -0
- package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +1 -0
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +28 -9
- package/src/__tests__/behavioral/events/KeepingListenersInSync.test.ts +47 -0
- package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
- package/src/__tests__/behavioral/skill/UpgradingWithListeners.test.ts +59 -0
- package/src/__tests__/behavioral/stores/CreatingADataStore.test.ts +1 -0
- package/src/__tests__/behavioral/stores/KeepingDataStoresInSync.test.ts +35 -6
- package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -0
- package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +6 -0
- package/src/__tests__/implementation/AuthService.test.ts +6 -0
- package/src/__tests__/implementation/EventStore.test.ts +1 -0
- package/src/__tests__/implementation/LintService.test.ts +34 -0
- package/src/__tests__/implementation/StoreFeature.test.ts +40 -0
- package/src/errors/SpruceError.ts +9 -5
- package/src/features/event/EventFeature.ts +21 -4
- package/src/features/event/actions/ListenAction.ts +9 -3
- package/src/features/event/actions/SyncListenersAction.ts +38 -0
- package/src/features/event/builders/ListenerTemplateItemBuilder.ts +27 -0
- package/src/features/event/stores/EventStore.ts +1 -1
- package/src/features/event/stores/ListenerStore.ts +32 -0
- package/src/features/event/writers/EventWriter.ts +19 -0
- package/src/features/skill/SkillFeature.ts +1 -1
- package/src/features/skill/stores/SkillStore.ts +4 -3
- package/src/features/store/StoreFeature.ts +7 -4
- package/src/services/AuthService.ts +15 -5
- package/src/services/GameService.ts +1 -0
- package/src/services/LintService.ts +34 -5
- package/src/services/ServiceFactory.ts +8 -3
- package/src/stores/StoreFactory.ts +3 -0
- package/src/tests/AbstractCliTest.ts +2 -2
- package/src/writers/AbstractWriter.ts +2 -13
|
@@ -31,6 +31,8 @@ var _syncEventOptions = _interopRequireDefault(require("../../.spruce/schemas/sp
|
|
|
31
31
|
|
|
32
32
|
var _TerminalInterface = _interopRequireDefault(require("../../interfaces/TerminalInterface"));
|
|
33
33
|
|
|
34
|
+
var _action = _interopRequireDefault(require("../../utilities/action.utility"));
|
|
35
|
+
|
|
34
36
|
var _AbstractFeature2 = _interopRequireDefault(require("../AbstractFeature"));
|
|
35
37
|
|
|
36
38
|
var _EventContractBuilder = _interopRequireDefault(require("./builders/EventContractBuilder"));
|
|
@@ -83,15 +85,34 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
83
85
|
key: "afterPackageInstall",
|
|
84
86
|
value: function () {
|
|
85
87
|
var _afterPackageInstall = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
88
|
+
var isSkillInstalled;
|
|
86
89
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
87
90
|
while (1) {
|
|
88
91
|
switch (_context.prev = _context.next) {
|
|
89
92
|
case 0:
|
|
90
93
|
_spruceSkillUtils.diskUtil.createDir(_spruceSkillUtils.diskUtil.resolvePath(this.cwd, 'src', 'events'));
|
|
91
94
|
|
|
95
|
+
_context.next = 3;
|
|
96
|
+
return this.featureInstaller.isInstalled('skill');
|
|
97
|
+
|
|
98
|
+
case 3:
|
|
99
|
+
isSkillInstalled = _context.sent;
|
|
100
|
+
|
|
101
|
+
if (!isSkillInstalled) {
|
|
102
|
+
_context.next = 8;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
_context.next = 7;
|
|
107
|
+
return this.Action('event', 'sync.listeners').execute({});
|
|
108
|
+
|
|
109
|
+
case 7:
|
|
110
|
+
return _context.abrupt("return", _context.sent);
|
|
111
|
+
|
|
112
|
+
case 8:
|
|
92
113
|
return _context.abrupt("return", {});
|
|
93
114
|
|
|
94
|
-
case
|
|
115
|
+
case 9:
|
|
95
116
|
case "end":
|
|
96
117
|
return _context.stop();
|
|
97
118
|
}
|
|
@@ -109,12 +130,13 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
109
130
|
key: "handleWillExecute",
|
|
110
131
|
value: function () {
|
|
111
132
|
var _handleWillExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(payload) {
|
|
112
|
-
var featureCode, actionCode, combined, isInstalled,
|
|
133
|
+
var featureCode, actionCode, results, combined, settings, isInstalled, remoteResults, syncResults;
|
|
113
134
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
114
135
|
while (1) {
|
|
115
136
|
switch (_context2.prev = _context2.next) {
|
|
116
137
|
case 0:
|
|
117
138
|
featureCode = payload.featureCode, actionCode = payload.actionCode;
|
|
139
|
+
results = {};
|
|
118
140
|
|
|
119
141
|
if (!this.initiatingAction) {
|
|
120
142
|
_EventStore["default"].clearCache();
|
|
@@ -123,28 +145,46 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
123
145
|
this.initiatingAction = combined;
|
|
124
146
|
}
|
|
125
147
|
|
|
126
|
-
_context2.next = 4;
|
|
127
|
-
return this.featureInstaller.isInstalled('event');
|
|
128
|
-
|
|
129
|
-
case 4:
|
|
130
|
-
isInstalled = _context2.sent;
|
|
131
|
-
|
|
132
148
|
if (featureCode === 'node' || featureCode === 'upgrade') {
|
|
133
149
|
settings = this.Service('eventSettings');
|
|
134
150
|
settings.clearListenerCache();
|
|
135
151
|
}
|
|
136
152
|
|
|
153
|
+
_context2.next = 6;
|
|
154
|
+
return this.featureInstaller.isInstalled('event');
|
|
155
|
+
|
|
156
|
+
case 6:
|
|
157
|
+
isInstalled = _context2.sent;
|
|
158
|
+
|
|
137
159
|
if (!(isInstalled && (featureCode === 'event' || featureCode === 'eventContract' || actionCode === 'login') && actionCode !== 'setRemote')) {
|
|
138
|
-
_context2.next =
|
|
160
|
+
_context2.next = 12;
|
|
139
161
|
break;
|
|
140
162
|
}
|
|
141
163
|
|
|
142
|
-
|
|
164
|
+
_context2.next = 10;
|
|
165
|
+
return this.appendRemoteToResultsOrPrompt();
|
|
143
166
|
|
|
144
|
-
case
|
|
145
|
-
|
|
167
|
+
case 10:
|
|
168
|
+
remoteResults = _context2.sent;
|
|
169
|
+
results = _action["default"].mergeActionResults(results, remoteResults);
|
|
146
170
|
|
|
147
|
-
case
|
|
171
|
+
case 12:
|
|
172
|
+
if (!(featureCode === 'node' && actionCode === 'upgrade' && isInstalled)) {
|
|
173
|
+
_context2.next = 17;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
_context2.next = 15;
|
|
178
|
+
return this.Action('event', 'sync.listeners').execute({});
|
|
179
|
+
|
|
180
|
+
case 15:
|
|
181
|
+
syncResults = _context2.sent;
|
|
182
|
+
results = _action["default"].mergeActionResults(results, syncResults);
|
|
183
|
+
|
|
184
|
+
case 17:
|
|
185
|
+
return _context2.abrupt("return", results);
|
|
186
|
+
|
|
187
|
+
case 18:
|
|
148
188
|
case "end":
|
|
149
189
|
return _context2.stop();
|
|
150
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/features/event/EventFeature.ts"],"names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","payload","featureCode","actionCode","initiatingAction","EventStore","clearCache","combined","combineCodes","featureInstaller","isInstalled","settings","Service","clearListenerCache","appendRemoteToResultsOrPrompt","results","Action","execute","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"mappings":"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","sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\nimport EventStore from './stores/EventStore'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\tprivate initiatingAction?: string\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tif (!this.initiatingAction) {\n\t\t\tEventStore.clearCache()\n\t\t\tconst combined = this.combineCodes(featureCode, actionCode)\n\t\t\tthis.initiatingAction = combined\n\t\t}\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tif (\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\t\t) {\n\t\t\treturn this.appendRemoteToResultsOrPrompt()\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tlet results = {}\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tresults = this.Action('event', 'sync').execute({})\n\t\t}\n\n\t\tif (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {\n\t\t\tEventStore.clearCache()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate combineCodes(featureCode: string, actionCode: string) {\n\t\treturn `${featureCode}.${actionCode}`\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"file":"EventFeature.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/features/event/EventFeature.ts"],"names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","featureInstaller","isInstalled","isSkillInstalled","Action","execute","payload","featureCode","actionCode","results","initiatingAction","EventStore","clearCache","combined","combineCodes","settings","Service","clearListenerCache","appendRemoteToResultsOrPrompt","remoteResults","actionUtil","mergeActionResults","syncResults","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"mappings":"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","sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport actionUtil from '../../utilities/action.utility'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\nimport EventStore from './stores/EventStore'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\tprivate initiatingAction?: string\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\t\tif (isSkillInstalled) {\n\t\t\treturn await this.Action('event', 'sync.listeners').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tif (!this.initiatingAction) {\n\t\t\tEventStore.clearCache()\n\t\t\tconst combined = this.combineCodes(featureCode, actionCode)\n\t\t\tthis.initiatingAction = combined\n\t\t}\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\t\t) {\n\t\t\tconst remoteResults = await this.appendRemoteToResultsOrPrompt()\n\n\t\t\tresults = actionUtil.mergeActionResults(results, remoteResults)\n\t\t}\n\n\t\tif (featureCode === 'node' && actionCode === 'upgrade' && isInstalled) {\n\t\t\tconst syncResults = await this.Action('event', 'sync.listeners').execute(\n\t\t\t\t{}\n\t\t\t)\n\t\t\tresults = actionUtil.mergeActionResults(results, syncResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tlet results = {}\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tresults = this.Action('event', 'sync').execute({})\n\t\t}\n\n\t\tif (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {\n\t\t\tEventStore.clearCache()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate combineCodes(featureCode: string, actionCode: string) {\n\t\treturn `${featureCode}.${actionCode}`\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"file":"EventFeature.js"}
|
|
@@ -7,6 +7,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
7
7
|
invocationMessage: string;
|
|
8
8
|
commandAliases: string[];
|
|
9
9
|
execute(options: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions): Promise<FeatureActionResponse>;
|
|
10
|
+
private syncListeners;
|
|
10
11
|
private collectEvent;
|
|
11
12
|
private collectNamespace;
|
|
12
13
|
private mapContractsToSelectChoices;
|
|
@@ -84,7 +84,7 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
84
84
|
var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(options) {
|
|
85
85
|
var _this2 = this;
|
|
86
86
|
|
|
87
|
-
var normalizedOptions, response, listenerDestinationDir, versionOptions, eventName, namespace, schemaTypesLookupDir, contractDestinationDir, eventStore, skill, namespacesForFetch, _ref, contracts, _this$mapContractsToS, eventChoicesByNamespace, fqen, _eventNameUtil$split, version, isValidEvent, resolvedDestination, resolvedVersion, resolvedSchemaTypesLookupDir, isSkillEvent, emitPayloadSchemaTemplateItem, responsePayloadSchemaTemplateItem, builder, templateItems,
|
|
87
|
+
var normalizedOptions, response, listenerDestinationDir, versionOptions, eventName, namespace, schemaTypesLookupDir, contractDestinationDir, eventStore, skill, namespacesForFetch, _ref, contracts, _this$mapContractsToS, eventChoicesByNamespace, fqen, _eventNameUtil$split, version, isValidEvent, resolvedDestination, resolvedVersion, resolvedSchemaTypesLookupDir, isSkillEvent, emitPayloadSchemaTemplateItem, responsePayloadSchemaTemplateItem, builder, templateItems, writer, syncResults, syncOptions, _syncResults;
|
|
88
88
|
|
|
89
89
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
90
90
|
while (1) {
|
|
@@ -221,9 +221,9 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
221
221
|
responsePayloadSchemaTemplateItem = templateItems.responsePayloadSchemaTemplateItem;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
|
|
224
|
+
writer = this.Writer('event');
|
|
225
225
|
_context.next = 48;
|
|
226
|
-
return
|
|
226
|
+
return writer.writeListener(resolvedDestination, _objectSpread(_objectSpread({}, normalizedOptions), {}, {
|
|
227
227
|
version: resolvedVersion,
|
|
228
228
|
eventName: eventName,
|
|
229
229
|
eventNamespace: namespace,
|
|
@@ -239,38 +239,43 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
239
239
|
}));
|
|
240
240
|
|
|
241
241
|
case 48:
|
|
242
|
-
|
|
243
|
-
|
|
242
|
+
response.files = _context.sent;
|
|
243
|
+
_context.next = 51;
|
|
244
|
+
return this.syncListeners();
|
|
245
|
+
|
|
246
|
+
case 51:
|
|
247
|
+
syncResults = _context.sent;
|
|
248
|
+
response = _action["default"].mergeActionResults(syncResults, response);
|
|
244
249
|
|
|
245
250
|
if (!isSkillEvent) {
|
|
246
|
-
_context.next =
|
|
251
|
+
_context.next = 59;
|
|
247
252
|
break;
|
|
248
253
|
}
|
|
249
254
|
|
|
250
255
|
syncOptions = (0, _schema.normalizeSchemaValues)(_syncEventOptions["default"], options);
|
|
251
|
-
_context.next =
|
|
256
|
+
_context.next = 57;
|
|
252
257
|
return this.Action('event', 'sync').execute(syncOptions);
|
|
253
258
|
|
|
254
|
-
case
|
|
255
|
-
|
|
256
|
-
response = _action["default"].mergeActionResults(
|
|
259
|
+
case 57:
|
|
260
|
+
_syncResults = _context.sent;
|
|
261
|
+
response = _action["default"].mergeActionResults(_syncResults, response);
|
|
257
262
|
|
|
258
|
-
case
|
|
263
|
+
case 59:
|
|
259
264
|
return _context.abrupt("return", response);
|
|
260
265
|
|
|
261
|
-
case
|
|
262
|
-
_context.prev =
|
|
266
|
+
case 62:
|
|
267
|
+
_context.prev = 62;
|
|
263
268
|
_context.t1 = _context["catch"](1);
|
|
264
269
|
return _context.abrupt("return", {
|
|
265
270
|
errors: [_context.t1]
|
|
266
271
|
});
|
|
267
272
|
|
|
268
|
-
case
|
|
273
|
+
case 65:
|
|
269
274
|
case "end":
|
|
270
275
|
return _context.stop();
|
|
271
276
|
}
|
|
272
277
|
}
|
|
273
|
-
}, _callee, this, [[1,
|
|
278
|
+
}, _callee, this, [[1, 62]]);
|
|
274
279
|
}));
|
|
275
280
|
|
|
276
281
|
function execute(_x) {
|
|
@@ -280,16 +285,40 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
280
285
|
return execute;
|
|
281
286
|
}()
|
|
282
287
|
}, {
|
|
283
|
-
key: "
|
|
288
|
+
key: "syncListeners",
|
|
284
289
|
value: function () {
|
|
285
|
-
var
|
|
286
|
-
var eventChoices, eventName;
|
|
290
|
+
var _syncListeners = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
287
291
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
288
292
|
while (1) {
|
|
289
293
|
switch (_context2.prev = _context2.next) {
|
|
294
|
+
case 0:
|
|
295
|
+
return _context2.abrupt("return", this.Action('event', 'sync.listeners').execute({}));
|
|
296
|
+
|
|
297
|
+
case 1:
|
|
298
|
+
case "end":
|
|
299
|
+
return _context2.stop();
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}, _callee2, this);
|
|
303
|
+
}));
|
|
304
|
+
|
|
305
|
+
function syncListeners() {
|
|
306
|
+
return _syncListeners.apply(this, arguments);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
return syncListeners;
|
|
310
|
+
}()
|
|
311
|
+
}, {
|
|
312
|
+
key: "collectEvent",
|
|
313
|
+
value: function () {
|
|
314
|
+
var _collectEvent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(contracts, namespace) {
|
|
315
|
+
var eventChoices, eventName;
|
|
316
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
317
|
+
while (1) {
|
|
318
|
+
switch (_context3.prev = _context3.next) {
|
|
290
319
|
case 0:
|
|
291
320
|
eventChoices = this.mapContractsToSelectChoices(contracts).eventChoicesByNamespace[namespace];
|
|
292
|
-
|
|
321
|
+
_context3.next = 3;
|
|
293
322
|
return this.ui.prompt({
|
|
294
323
|
type: 'select',
|
|
295
324
|
label: 'Select an event',
|
|
@@ -300,15 +329,15 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
300
329
|
});
|
|
301
330
|
|
|
302
331
|
case 3:
|
|
303
|
-
eventName =
|
|
304
|
-
return
|
|
332
|
+
eventName = _context3.sent;
|
|
333
|
+
return _context3.abrupt("return", eventName);
|
|
305
334
|
|
|
306
335
|
case 5:
|
|
307
336
|
case "end":
|
|
308
|
-
return
|
|
337
|
+
return _context3.stop();
|
|
309
338
|
}
|
|
310
339
|
}
|
|
311
|
-
},
|
|
340
|
+
}, _callee3, this);
|
|
312
341
|
}));
|
|
313
342
|
|
|
314
343
|
function collectEvent(_x2, _x3) {
|
|
@@ -320,15 +349,15 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
320
349
|
}, {
|
|
321
350
|
key: "collectNamespace",
|
|
322
351
|
value: function () {
|
|
323
|
-
var _collectNamespace = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
352
|
+
var _collectNamespace = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(contracts) {
|
|
324
353
|
var _this$mapContractsToS2, namespaceChoices, namespace;
|
|
325
354
|
|
|
326
|
-
return _regenerator["default"].wrap(function
|
|
355
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
327
356
|
while (1) {
|
|
328
|
-
switch (
|
|
357
|
+
switch (_context4.prev = _context4.next) {
|
|
329
358
|
case 0:
|
|
330
359
|
_this$mapContractsToS2 = this.mapContractsToSelectChoices(contracts), namespaceChoices = _this$mapContractsToS2.namespaceChoices;
|
|
331
|
-
|
|
360
|
+
_context4.next = 3;
|
|
332
361
|
return this.ui.prompt({
|
|
333
362
|
type: 'select',
|
|
334
363
|
label: 'Select an event namespace',
|
|
@@ -339,15 +368,15 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
339
368
|
});
|
|
340
369
|
|
|
341
370
|
case 3:
|
|
342
|
-
namespace =
|
|
343
|
-
return
|
|
371
|
+
namespace = _context4.sent;
|
|
372
|
+
return _context4.abrupt("return", namespace);
|
|
344
373
|
|
|
345
374
|
case 5:
|
|
346
375
|
case "end":
|
|
347
|
-
return
|
|
376
|
+
return _context4.stop();
|
|
348
377
|
}
|
|
349
378
|
}
|
|
350
|
-
},
|
|
379
|
+
}, _callee4, this);
|
|
351
380
|
}));
|
|
352
381
|
|
|
353
382
|
function collectNamespace(_x4) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/event/actions/ListenAction.ts"],"names":["SKILL_EVENT_NAMESPACE","ListenAction","eventListenActionSchema","options","normalizedOptions","validateAndNormalizeOptions","response","listenerDestinationDir","versionOptions","version","eventName","namespace","schemaTypesLookupDir","contractDestinationDir","ui","startLoading","eventStore","Store","loadCurrentSkill","skill","namespacesForFetch","undefined","slug","fetchEventContracts","localNamespace","namespaces","didUpdateHandler","msg","contracts","stopLoading","collectNamespace","mapContractsToSelectChoices","eventChoicesByNamespace","SchemaError","code","friendlyMessage","Object","keys","join","parameters","collectEvent","fqen","eventNameUtil","eventNamespace","split","isValidEvent","find","e","value","map","i","resolvedDestination","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","resolvedSchemaTypesLookupDir","isSkillEvent","builder","EventTemplateItemBuilder","templateItems","buildEventTemplateItemForName","emitPayloadSchemaTemplateItem","responsePayloadSchemaTemplateItem","generator","Writer","writeListener","fullyQualifiedEventName","results","files","syncOptions","syncEventActionSchema","Action","execute","syncResults","actionUtil","mergeActionResults","errors","eventChoices","prompt","type","label","isRequired","choices","namespaceChoices","forEach","contract","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","MERCURY_API_NAMESPACE","o","push","namesUtil","toPascal","AbstractAction"],"mappings":"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","sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport {\n\tnormalizeSchemaValues,\n\tSchemaError,\n\tSchemaTemplateItem,\n\tSelectChoice,\n} from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tnamesUtil,\n\tMERCURY_API_NAMESPACE,\n} from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport eventListenActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport EventTemplateItemBuilder from '../../../templateItemBuilders/EventTemplateItemBuilder'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst SKILL_EVENT_NAMESPACE = 'skill'\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptionsSchema\nexport default class ListenAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = eventListenActionSchema\n\tpublic invocationMessage = 'Creating event listener... 🜒'\n\tpublic commandAliases = ['listen.event', 'create.listener']\n\n\tpublic async execute(\n\t\toptions: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions\n\t): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\n\t\ttry {\n\t\t\tlet response: FeatureActionResponse = {}\n\n\t\t\tlet {\n\t\t\t\tlistenerDestinationDir,\n\t\t\t\tversion: versionOptions,\n\t\t\t\teventName,\n\t\t\t\tnamespace,\n\t\t\t\tschemaTypesLookupDir,\n\t\t\t\tcontractDestinationDir,\n\t\t\t} = normalizedOptions\n\n\t\t\tthis.ui.startLoading('Loading event contracts...')\n\n\t\t\tconst eventStore = this.Store('event')\n\n\t\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\t\tconst namespacesForFetch =\n\t\t\t\tnamespace && namespace !== 'skill' ? [namespace] : undefined\n\n\t\t\tconst { contracts } = skill.slug\n\t\t\t\t? await eventStore.fetchEventContracts({\n\t\t\t\t\t\tlocalNamespace: skill.slug,\n\t\t\t\t\t\tnamespaces: namespacesForFetch,\n\t\t\t\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t\t\t })\n\t\t\t\t: await eventStore.fetchEventContracts({\n\t\t\t\t\t\tnamespaces: namespacesForFetch,\n\t\t\t\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t\t\t })\n\n\t\t\tthis.ui.stopLoading()\n\n\t\t\tif (!namespace) {\n\t\t\t\tnamespace = await this.collectNamespace(contracts)\n\t\t\t}\n\n\t\t\tconst { eventChoicesByNamespace } =\n\t\t\t\tthis.mapContractsToSelectChoices(contracts)\n\n\t\t\tif (!eventChoicesByNamespace[namespace]) {\n\t\t\t\tthrow new SchemaError({\n\t\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\t\tfriendlyMessage: `${namespace} is not a valid event namespace. Try: \\n\\n${Object.keys(\n\t\t\t\t\t\teventChoicesByNamespace\n\t\t\t\t\t).join('\\n')}`,\n\t\t\t\t\tparameters: ['namespace'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (!eventName) {\n\t\t\t\teventName = await this.collectEvent(contracts, namespace)\n\t\t\t}\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName,\n\t\t\t\teventNamespace: namespace,\n\t\t\t\tversion: versionOptions,\n\t\t\t})\n\n\t\t\tlet { version } = eventNameUtil.split(fqen)\n\n\t\t\tconst isValidEvent = !!eventChoicesByNamespace[namespace].find(\n\t\t\t\t(e) => e.value === eventName || e.value === fqen\n\t\t\t)\n\n\t\t\tif (!isValidEvent) {\n\t\t\t\tthrow new SchemaError({\n\t\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\t\tfriendlyMessage: `${eventName} is not a valid event . Try: \\n\\n${eventChoicesByNamespace[\n\t\t\t\t\t\tnamespace\n\t\t\t\t\t]\n\t\t\t\t\t\t.map((i) => i.value)\n\t\t\t\t\t\t.join('\\n')}`,\n\t\t\t\t\tparameters: ['eventName'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst resolvedDestination = diskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\tlistenerDestinationDir\n\t\t\t)\n\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tresolvedDestination\n\t\t\t)\n\n\t\t\tconst resolvedSchemaTypesLookupDir = diskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\tschemaTypesLookupDir\n\t\t\t)\n\n\t\t\tconst isSkillEvent = namespace !== SKILL_EVENT_NAMESPACE\n\n\t\t\tlet emitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\t\tlet responsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\n\t\t\tif (isSkillEvent) {\n\t\t\t\tconst builder = new EventTemplateItemBuilder()\n\t\t\t\tconst templateItems = builder.buildEventTemplateItemForName(\n\t\t\t\t\tcontracts,\n\t\t\t\t\teventNameUtil.join({\n\t\t\t\t\t\teventNamespace: namespace,\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion: resolvedVersion,\n\t\t\t\t\t})\n\t\t\t\t)\n\n\t\t\t\temitPayloadSchemaTemplateItem =\n\t\t\t\t\ttemplateItems.emitPayloadSchemaTemplateItem\n\t\t\t\tresponsePayloadSchemaTemplateItem =\n\t\t\t\t\ttemplateItems.responsePayloadSchemaTemplateItem\n\t\t\t}\n\n\t\t\tconst generator = this.Writer('event')\n\t\t\tconst results = await generator.writeListener(resolvedDestination, {\n\t\t\t\t...normalizedOptions,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\teventName,\n\t\t\t\teventNamespace: namespace,\n\t\t\t\tfullyQualifiedEventName: eventNameUtil.join({\n\t\t\t\t\teventName,\n\t\t\t\t\teventNamespace: namespace,\n\t\t\t\t\tversion: resolvedVersion,\n\t\t\t\t}),\n\t\t\t\temitPayloadSchemaTemplateItem,\n\t\t\t\tcontractDestinationDir,\n\t\t\t\tresponsePayloadSchemaTemplateItem,\n\t\t\t\tschemaTypesLookupDir: resolvedSchemaTypesLookupDir,\n\t\t\t})\n\n\t\t\tresponse.files = results\n\n\t\t\tif (isSkillEvent) {\n\t\t\t\tconst syncOptions = normalizeSchemaValues(\n\t\t\t\t\tsyncEventActionSchema,\n\t\t\t\t\toptions\n\t\t\t\t)\n\n\t\t\t\tconst syncResults = await this.Action('event', 'sync').execute(\n\t\t\t\t\tsyncOptions\n\t\t\t\t)\n\n\t\t\t\tresponse = actionUtil.mergeActionResults(syncResults, response)\n\t\t\t}\n\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async collectEvent(\n\t\tcontracts: EventContract[],\n\t\tnamespace: string\n\t): Promise<string> {\n\t\tconst eventChoices: SelectChoice[] =\n\t\t\tthis.mapContractsToSelectChoices(contracts).eventChoicesByNamespace[\n\t\t\t\tnamespace\n\t\t\t]\n\n\t\tconst eventName = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Select an event',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: eventChoices,\n\t\t\t},\n\t\t})\n\n\t\treturn eventName\n\t}\n\n\tprivate async collectNamespace(contracts: EventContract[]): Promise<string> {\n\t\tconst { namespaceChoices } = this.mapContractsToSelectChoices(contracts)\n\n\t\tconst namespace = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Select an event namespace',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: namespaceChoices,\n\t\t\t},\n\t\t})\n\n\t\treturn namespace\n\t}\n\n\tprivate mapContractsToSelectChoices(contracts: EventContract[]) {\n\t\tconst namespaceChoices: SelectChoice[] = [\n\t\t\t{\n\t\t\t\tlabel: 'Skill',\n\t\t\t\tvalue: SKILL_EVENT_NAMESPACE,\n\t\t\t},\n\t\t]\n\n\t\tconst eventChoicesByNamespace: Record<string, SelectChoice[]> = {\n\t\t\tskill: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'will-boot',\n\t\t\t\t\tvalue: 'will-boot',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'did-boot',\n\t\t\t\t\tvalue: 'did-boot',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\n\t\tcontracts.forEach((contract) => {\n\t\t\tconst namedSignatures =\n\t\t\t\teventContractUtil.getNamedEventSignatures(contract)\n\n\t\t\tfor (const namedSig of namedSignatures) {\n\t\t\t\tconst namespace = namedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\n\t\t\t\tif (!namespaceChoices.find((o) => o.value === namespace)) {\n\t\t\t\t\tnamespaceChoices.push({\n\t\t\t\t\t\tlabel: namesUtil.toPascal(namespace),\n\t\t\t\t\t\tvalue: namespace,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (!eventChoicesByNamespace[namespace]) {\n\t\t\t\t\teventChoicesByNamespace[namespace] = []\n\t\t\t\t}\n\n\t\t\t\teventChoicesByNamespace[namespace].push({\n\t\t\t\t\tvalue: namedSig.fullyQualifiedEventName,\n\t\t\t\t\tlabel: namedSig.fullyQualifiedEventName,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\treturn { eventChoicesByNamespace, namespaceChoices }\n\t}\n}\n"],"file":"ListenAction.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/event/actions/ListenAction.ts"],"names":["SKILL_EVENT_NAMESPACE","ListenAction","eventListenActionSchema","options","normalizedOptions","validateAndNormalizeOptions","response","listenerDestinationDir","versionOptions","version","eventName","namespace","schemaTypesLookupDir","contractDestinationDir","ui","startLoading","eventStore","Store","loadCurrentSkill","skill","namespacesForFetch","undefined","slug","fetchEventContracts","localNamespace","namespaces","didUpdateHandler","msg","contracts","stopLoading","collectNamespace","mapContractsToSelectChoices","eventChoicesByNamespace","SchemaError","code","friendlyMessage","Object","keys","join","parameters","collectEvent","fqen","eventNameUtil","eventNamespace","split","isValidEvent","find","e","value","map","i","resolvedDestination","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","resolvedSchemaTypesLookupDir","isSkillEvent","builder","EventTemplateItemBuilder","templateItems","buildEventTemplateItemForName","emitPayloadSchemaTemplateItem","responsePayloadSchemaTemplateItem","writer","Writer","writeListener","fullyQualifiedEventName","files","syncListeners","syncResults","actionUtil","mergeActionResults","syncOptions","syncEventActionSchema","Action","execute","errors","eventChoices","prompt","type","label","isRequired","choices","namespaceChoices","forEach","contract","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","MERCURY_API_NAMESPACE","o","push","namesUtil","toPascal","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAMA;;AAIA;;AAMA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;AAGA,IAAMA,qBAAqB,GAAG,OAA9B;;IAGqBC,Y;;;;;;;;;;;;;;;sGACkBC,8B;0GACX,+B;uGACH,CAAC,cAAD,EAAiB,iBAAjB,C;;;;;;;mGAExB,iBACCC,OADD;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAGOC,gBAAAA,iBAHP,GAG2B,KAAKC,2BAAL,CAAiCF,OAAjC,CAH3B;AAAA;AAMMG,gBAAAA,QANN,GAMwC,EANxC;AASGC,gBAAAA,sBATH,GAeMH,iBAfN,CASGG,sBATH,EAUYC,cAVZ,GAeMJ,iBAfN,CAUGK,OAVH,EAWGC,SAXH,GAeMN,iBAfN,CAWGM,SAXH,EAYGC,SAZH,GAeMP,iBAfN,CAYGO,SAZH,EAaGC,oBAbH,GAeMR,iBAfN,CAaGQ,oBAbH,EAcGC,sBAdH,GAeMT,iBAfN,CAcGS,sBAdH;AAiBE,qBAAKC,EAAL,CAAQC,YAAR,CAAqB,4BAArB;AAEMC,gBAAAA,UAnBR,GAmBqB,KAAKC,KAAL,CAAW,OAAX,CAnBrB;AAAA;AAAA,uBAqBsB,KAAKA,KAAL,CAAW,OAAX,EAAoBC,gBAApB,EArBtB;;AAAA;AAqBQC,gBAAAA,KArBR;AAuBQC,gBAAAA,kBAvBR,GAwBGT,SAAS,IAAIA,SAAS,KAAK,OAA3B,GAAqC,CAACA,SAAD,CAArC,GAAmDU,SAxBtD;;AAAA,qBA0BwBF,KAAK,CAACG,IA1B9B;AAAA;AAAA;AAAA;;AAAA;AAAA,uBA2BWN,UAAU,CAACO,mBAAX,CAA+B;AACrCC,kBAAAA,cAAc,EAAEL,KAAK,CAACG,IADe;AAErCG,kBAAAA,UAAU,EAAEL,kBAFyB;AAGrCM,kBAAAA,gBAAgB,EAAE,0BAACC,GAAD;AAAA,2BAAiB,MAAI,CAACb,EAAL,CAAQC,YAAR,CAAqBY,GAArB,CAAjB;AAAA;AAHmB,iBAA/B,CA3BX;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,uBAgCWX,UAAU,CAACO,mBAAX,CAA+B;AACrCE,kBAAAA,UAAU,EAAEL,kBADyB;AAErCM,kBAAAA,gBAAgB,EAAE,0BAACC,GAAD;AAAA,2BAAiB,MAAI,CAACb,EAAL,CAAQC,YAAR,CAAqBY,GAArB,CAAjB;AAAA;AAFmB,iBAA/B,CAhCX;;AAAA;AAAA;;AAAA;AAAA;AA0BUC,gBAAAA,SA1BV,QA0BUA,SA1BV;AAqCE,qBAAKd,EAAL,CAAQe,WAAR;;AArCF,oBAuCOlB,SAvCP;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAwCqB,KAAKmB,gBAAL,CAAsBF,SAAtB,CAxCrB;;AAAA;AAwCGjB,gBAAAA,SAxCH;;AAAA;AAAA,wCA4CG,KAAKoB,2BAAL,CAAiCH,SAAjC,CA5CH,EA2CUI,uBA3CV,yBA2CUA,uBA3CV;;AAAA,oBA8COA,uBAAuB,CAACrB,SAAD,CA9C9B;AAAA;AAAA;AAAA;;AAAA,sBA+CS,IAAIsB,mBAAJ,CAAgB;AACrBC,kBAAAA,IAAI,EAAE,oBADe;AAErBC,kBAAAA,eAAe,YAAKxB,SAAL,uDAA2DyB,MAAM,CAACC,IAAP,CACzEL,uBADyE,EAExEM,IAFwE,CAEnE,IAFmE,CAA3D,CAFM;AAKrBC,kBAAAA,UAAU,EAAE,CAAC,WAAD;AALS,iBAAhB,CA/CT;;AAAA;AAAA,oBAwDO7B,SAxDP;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAyDqB,KAAK8B,YAAL,CAAkBZ,SAAlB,EAA6BjB,SAA7B,CAzDrB;;AAAA;AAyDGD,gBAAAA,SAzDH;;AAAA;AA4DQ+B,gBAAAA,IA5DR,GA4DeC,gCAAcJ,IAAd,CAAmB;AAC/B5B,kBAAAA,SAAS,EAATA,SAD+B;AAE/BiC,kBAAAA,cAAc,EAAEhC,SAFe;AAG/BF,kBAAAA,OAAO,EAAED;AAHsB,iBAAnB,CA5Df;AAAA,uCAkEoBkC,gCAAcE,KAAd,CAAoBH,IAApB,CAlEpB,EAkEQhC,OAlER,wBAkEQA,OAlER;AAoEQoC,gBAAAA,YApER,GAoEuB,CAAC,CAACb,uBAAuB,CAACrB,SAAD,CAAvB,CAAmCmC,IAAnC,CACtB,UAACC,CAAD;AAAA,yBAAOA,CAAC,CAACC,KAAF,KAAYtC,SAAZ,IAAyBqC,CAAC,CAACC,KAAF,KAAYP,IAA5C;AAAA,iBADsB,CApEzB;;AAAA,oBAwEOI,YAxEP;AAAA;AAAA;AAAA;;AAAA,sBAyES,IAAIZ,mBAAJ,CAAgB;AACrBC,kBAAAA,IAAI,EAAE,oBADe;AAErBC,kBAAAA,eAAe,YAAKzB,SAAL,8CAAkDsB,uBAAuB,CACvFrB,SADuF,CAAvB,CAG/DsC,GAH+D,CAG3D,UAACC,CAAD;AAAA,2BAAOA,CAAC,CAACF,KAAT;AAAA,mBAH2D,EAI/DV,IAJ+D,CAI1D,IAJ0D,CAAlD,CAFM;AAOrBC,kBAAAA,UAAU,EAAE,CAAC,WAAD;AAPS,iBAAhB,CAzET;;AAAA;AAoFQY,gBAAAA,mBApFR,GAoF8BC,2BAASC,WAAT,CAC3B,KAAKC,GADsB,EAE3B/C,sBAF2B,CApF9B;AAAA;AAAA,uBAyFgC,KAAKgD,cAAL,CAC7B9C,OAD6B,EAE7B0C,mBAF6B,CAzFhC;;AAAA;AAyFQK,gBAAAA,eAzFR;AA8FQC,gBAAAA,4BA9FR,GA8FuCL,2BAASC,WAAT,CACpC,KAAKC,GAD+B,EAEpC1C,oBAFoC,CA9FvC;AAmGQ8C,gBAAAA,YAnGR,GAmGuB/C,SAAS,KAAKX,qBAnGrC;;AAwGE,oBAAI0D,YAAJ,EAAkB;AACXC,kBAAAA,OADW,GACD,IAAIC,oCAAJ,EADC;AAEXC,kBAAAA,aAFW,GAEKF,OAAO,CAACG,6BAAR,CACrBlC,SADqB,EAErBc,gCAAcJ,IAAd,CAAmB;AAClBK,oBAAAA,cAAc,EAAEhC,SADE;AAElBD,oBAAAA,SAAS,EAATA,SAFkB;AAGlBD,oBAAAA,OAAO,EAAE+C;AAHS,mBAAnB,CAFqB,CAFL;AAWjBO,kBAAAA,6BAA6B,GAC5BF,aAAa,CAACE,6BADf;AAEAC,kBAAAA,iCAAiC,GAChCH,aAAa,CAACG,iCADf;AAEA;;AAEKC,gBAAAA,MAzHR,GAyHiB,KAAKC,MAAL,CAAY,OAAZ,CAzHjB;AAAA;AAAA,uBA0HyBD,MAAM,CAACE,aAAP,CAAqBhB,mBAArB,kCACnB/C,iBADmB;AAEtBK,kBAAAA,OAAO,EAAE+C,eAFa;AAGtB9C,kBAAAA,SAAS,EAATA,SAHsB;AAItBiC,kBAAAA,cAAc,EAAEhC,SAJM;AAKtByD,kBAAAA,uBAAuB,EAAE1B,gCAAcJ,IAAd,CAAmB;AAC3C5B,oBAAAA,SAAS,EAATA,SAD2C;AAE3CiC,oBAAAA,cAAc,EAAEhC,SAF2B;AAG3CF,oBAAAA,OAAO,EAAE+C;AAHkC,mBAAnB,CALH;AAUtBO,kBAAAA,6BAA6B,EAA7BA,6BAVsB;AAWtBlD,kBAAAA,sBAAsB,EAAtBA,sBAXsB;AAYtBmD,kBAAAA,iCAAiC,EAAjCA,iCAZsB;AAatBpD,kBAAAA,oBAAoB,EAAE6C;AAbA,mBA1HzB;;AAAA;AA0HEnD,gBAAAA,QAAQ,CAAC+D,KA1HX;AAAA;AAAA,uBA0I4B,KAAKC,aAAL,EA1I5B;;AAAA;AA0IQC,gBAAAA,WA1IR;AA4IEjE,gBAAAA,QAAQ,GAAGkE,mBAAWC,kBAAX,CAA8BF,WAA9B,EAA2CjE,QAA3C,CAAX;;AA5IF,qBA8IMoD,YA9IN;AAAA;AAAA;AAAA;;AA+ISgB,gBAAAA,WA/IT,GA+IuB,mCACnBC,4BADmB,EAEnBxE,OAFmB,CA/IvB;AAAA;AAAA,uBAoJ6B,KAAKyE,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CACzBH,WADyB,CApJ7B;;AAAA;AAoJSH,gBAAAA,YApJT;AAwJGjE,gBAAAA,QAAQ,GAAGkE,mBAAWC,kBAAX,CAA8BF,YAA9B,EAA2CjE,QAA3C,CAAX;;AAxJH;AAAA,iDA2JSA,QA3JT;;AAAA;AAAA;AAAA;AAAA,iDA6JS;AACNwE,kBAAAA,MAAM,EAAE;AADF,iBA7JT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;yGAmKA;AAAA;AAAA;AAAA;AAAA;AAAA,kDACQ,KAAKF,MAAL,CAAY,OAAZ,EAAqB,gBAArB,EAAuCC,OAAvC,CAA+C,EAA/C,CADR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wGAIA,kBACCjD,SADD,EAECjB,SAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAIOoE,gBAAAA,YAJP,GAKE,KAAKhD,2BAAL,CAAiCH,SAAjC,EAA4CI,uBAA5C,CACCrB,SADD,CALF;AAAA;AAAA,uBASyB,KAAKG,EAAL,CAAQkE,MAAR,CAAe;AACtCC,kBAAAA,IAAI,EAAE,QADgC;AAEtCC,kBAAAA,KAAK,EAAE,iBAF+B;AAGtCC,kBAAAA,UAAU,EAAE,IAH0B;AAItChF,kBAAAA,OAAO,EAAE;AACRiF,oBAAAA,OAAO,EAAEL;AADD;AAJ6B,iBAAf,CATzB;;AAAA;AASOrE,gBAAAA,SATP;AAAA,kDAkBQA,SAlBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;4GAqBA,kBAA+BkB,SAA/B;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,yCAC8B,KAAKG,2BAAL,CAAiCH,SAAjC,CAD9B,EACSyD,gBADT,0BACSA,gBADT;AAAA;AAAA,uBAGyB,KAAKvE,EAAL,CAAQkE,MAAR,CAAe;AACtCC,kBAAAA,IAAI,EAAE,QADgC;AAEtCC,kBAAAA,KAAK,EAAE,2BAF+B;AAGtCC,kBAAAA,UAAU,EAAE,IAH0B;AAItChF,kBAAAA,OAAO,EAAE;AACRiF,oBAAAA,OAAO,EAAEC;AADD;AAJ6B,iBAAf,CAHzB;;AAAA;AAGO1E,gBAAAA,SAHP;AAAA,kDAYQA,SAZR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAeA,qCAAoCiB,SAApC,EAAgE;AAC/D,UAAMyD,gBAAgC,GAAG,CACxC;AACCH,QAAAA,KAAK,EAAE,OADR;AAEClC,QAAAA,KAAK,EAAEhD;AAFR,OADwC,CAAzC;AAOA,UAAMgC,uBAAuD,GAAG;AAC/Db,QAAAA,KAAK,EAAE,CACN;AACC+D,UAAAA,KAAK,EAAE,WADR;AAEClC,UAAAA,KAAK,EAAE;AAFR,SADM,EAKN;AACCkC,UAAAA,KAAK,EAAE,UADR;AAEClC,UAAAA,KAAK,EAAE;AAFR,SALM;AADwD,OAAhE;AAaApB,MAAAA,SAAS,CAAC0D,OAAV,CAAkB,UAACC,QAAD,EAAc;AAC/B,YAAMC,eAAe,GACpBC,oCAAkBC,uBAAlB,CAA0CH,QAA1C,CADD;;AAD+B,mDAIRC,eAJQ;AAAA;;AAAA;AAAA;AAAA;;AAAA,gBAIpBG,QAJoB;AAK9B,gBAAMhF,SAAS,4BAAGgF,QAAQ,CAAChD,cAAZ,yEAA8BiD,uCAA7C;;AAEA,gBAAI,CAACP,gBAAgB,CAACvC,IAAjB,CAAsB,UAAC+C,CAAD;AAAA,qBAAOA,CAAC,CAAC7C,KAAF,KAAYrC,SAAnB;AAAA,aAAtB,CAAL,EAA0D;AACzD0E,cAAAA,gBAAgB,CAACS,IAAjB,CAAsB;AACrBZ,gBAAAA,KAAK,EAAEa,4BAAUC,QAAV,CAAmBrF,SAAnB,CADc;AAErBqC,gBAAAA,KAAK,EAAErC;AAFc,eAAtB;AAIA;;AAED,gBAAI,CAACqB,uBAAuB,CAACrB,SAAD,CAA5B,EAAyC;AACxCqB,cAAAA,uBAAuB,CAACrB,SAAD,CAAvB,GAAqC,EAArC;AACA;;AAEDqB,YAAAA,uBAAuB,CAACrB,SAAD,CAAvB,CAAmCmF,IAAnC,CAAwC;AACvC9C,cAAAA,KAAK,EAAE2C,QAAQ,CAACvB,uBADuB;AAEvCc,cAAAA,KAAK,EAAES,QAAQ,CAACvB;AAFuB,aAAxC;AAlB8B;;AAI/B,8DAAwC;AAAA;AAkBvC;AAtB8B;AAAA;AAAA;AAAA;AAAA;AAuB/B,OAvBD;AAyBA,aAAO;AAAEpC,QAAAA,uBAAuB,EAAvBA,uBAAF;AAA2BqD,QAAAA,gBAAgB,EAAhBA;AAA3B,OAAP;AACA;;;EA/PwCY,2B","sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport {\n\tnormalizeSchemaValues,\n\tSchemaError,\n\tSchemaTemplateItem,\n\tSelectChoice,\n} from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tnamesUtil,\n\tMERCURY_API_NAMESPACE,\n} from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport eventListenActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport EventTemplateItemBuilder from '../../../templateItemBuilders/EventTemplateItemBuilder'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst SKILL_EVENT_NAMESPACE = 'skill'\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptionsSchema\nexport default class ListenAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = eventListenActionSchema\n\tpublic invocationMessage = 'Creating event listener... 🜒'\n\tpublic commandAliases = ['listen.event', 'create.listener']\n\n\tpublic async execute(\n\t\toptions: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions\n\t): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\n\t\ttry {\n\t\t\tlet response: FeatureActionResponse = {}\n\n\t\t\tlet {\n\t\t\t\tlistenerDestinationDir,\n\t\t\t\tversion: versionOptions,\n\t\t\t\teventName,\n\t\t\t\tnamespace,\n\t\t\t\tschemaTypesLookupDir,\n\t\t\t\tcontractDestinationDir,\n\t\t\t} = normalizedOptions\n\n\t\t\tthis.ui.startLoading('Loading event contracts...')\n\n\t\t\tconst eventStore = this.Store('event')\n\n\t\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\t\tconst namespacesForFetch =\n\t\t\t\tnamespace && namespace !== 'skill' ? [namespace] : undefined\n\n\t\t\tconst { contracts } = skill.slug\n\t\t\t\t? await eventStore.fetchEventContracts({\n\t\t\t\t\t\tlocalNamespace: skill.slug,\n\t\t\t\t\t\tnamespaces: namespacesForFetch,\n\t\t\t\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t\t\t })\n\t\t\t\t: await eventStore.fetchEventContracts({\n\t\t\t\t\t\tnamespaces: namespacesForFetch,\n\t\t\t\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t\t\t })\n\n\t\t\tthis.ui.stopLoading()\n\n\t\t\tif (!namespace) {\n\t\t\t\tnamespace = await this.collectNamespace(contracts)\n\t\t\t}\n\n\t\t\tconst { eventChoicesByNamespace } =\n\t\t\t\tthis.mapContractsToSelectChoices(contracts)\n\n\t\t\tif (!eventChoicesByNamespace[namespace]) {\n\t\t\t\tthrow new SchemaError({\n\t\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\t\tfriendlyMessage: `${namespace} is not a valid event namespace. Try: \\n\\n${Object.keys(\n\t\t\t\t\t\teventChoicesByNamespace\n\t\t\t\t\t).join('\\n')}`,\n\t\t\t\t\tparameters: ['namespace'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (!eventName) {\n\t\t\t\teventName = await this.collectEvent(contracts, namespace)\n\t\t\t}\n\n\t\t\tconst fqen = eventNameUtil.join({\n\t\t\t\teventName,\n\t\t\t\teventNamespace: namespace,\n\t\t\t\tversion: versionOptions,\n\t\t\t})\n\n\t\t\tlet { version } = eventNameUtil.split(fqen)\n\n\t\t\tconst isValidEvent = !!eventChoicesByNamespace[namespace].find(\n\t\t\t\t(e) => e.value === eventName || e.value === fqen\n\t\t\t)\n\n\t\t\tif (!isValidEvent) {\n\t\t\t\tthrow new SchemaError({\n\t\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\t\tfriendlyMessage: `${eventName} is not a valid event . Try: \\n\\n${eventChoicesByNamespace[\n\t\t\t\t\t\tnamespace\n\t\t\t\t\t]\n\t\t\t\t\t\t.map((i) => i.value)\n\t\t\t\t\t\t.join('\\n')}`,\n\t\t\t\t\tparameters: ['eventName'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst resolvedDestination = diskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\tlistenerDestinationDir\n\t\t\t)\n\n\t\t\tconst resolvedVersion = await this.resolveVersion(\n\t\t\t\tversion,\n\t\t\t\tresolvedDestination\n\t\t\t)\n\n\t\t\tconst resolvedSchemaTypesLookupDir = diskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\tschemaTypesLookupDir\n\t\t\t)\n\n\t\t\tconst isSkillEvent = namespace !== SKILL_EVENT_NAMESPACE\n\n\t\t\tlet emitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\t\tlet responsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\n\t\t\tif (isSkillEvent) {\n\t\t\t\tconst builder = new EventTemplateItemBuilder()\n\t\t\t\tconst templateItems = builder.buildEventTemplateItemForName(\n\t\t\t\t\tcontracts,\n\t\t\t\t\teventNameUtil.join({\n\t\t\t\t\t\teventNamespace: namespace,\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion: resolvedVersion,\n\t\t\t\t\t})\n\t\t\t\t)\n\n\t\t\t\temitPayloadSchemaTemplateItem =\n\t\t\t\t\ttemplateItems.emitPayloadSchemaTemplateItem\n\t\t\t\tresponsePayloadSchemaTemplateItem =\n\t\t\t\t\ttemplateItems.responsePayloadSchemaTemplateItem\n\t\t\t}\n\n\t\t\tconst writer = this.Writer('event')\n\t\t\tresponse.files = await writer.writeListener(resolvedDestination, {\n\t\t\t\t...normalizedOptions,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\teventName,\n\t\t\t\teventNamespace: namespace,\n\t\t\t\tfullyQualifiedEventName: eventNameUtil.join({\n\t\t\t\t\teventName,\n\t\t\t\t\teventNamespace: namespace,\n\t\t\t\t\tversion: resolvedVersion,\n\t\t\t\t}),\n\t\t\t\temitPayloadSchemaTemplateItem,\n\t\t\t\tcontractDestinationDir,\n\t\t\t\tresponsePayloadSchemaTemplateItem,\n\t\t\t\tschemaTypesLookupDir: resolvedSchemaTypesLookupDir,\n\t\t\t})\n\n\t\t\tconst syncResults = await this.syncListeners()\n\n\t\t\tresponse = actionUtil.mergeActionResults(syncResults, response)\n\n\t\t\tif (isSkillEvent) {\n\t\t\t\tconst syncOptions = normalizeSchemaValues(\n\t\t\t\t\tsyncEventActionSchema,\n\t\t\t\t\toptions\n\t\t\t\t)\n\n\t\t\t\tconst syncResults = await this.Action('event', 'sync').execute(\n\t\t\t\t\tsyncOptions\n\t\t\t\t)\n\n\t\t\t\tresponse = actionUtil.mergeActionResults(syncResults, response)\n\t\t\t}\n\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async syncListeners() {\n\t\treturn this.Action('event', 'sync.listeners').execute({})\n\t}\n\n\tprivate async collectEvent(\n\t\tcontracts: EventContract[],\n\t\tnamespace: string\n\t): Promise<string> {\n\t\tconst eventChoices: SelectChoice[] =\n\t\t\tthis.mapContractsToSelectChoices(contracts).eventChoicesByNamespace[\n\t\t\t\tnamespace\n\t\t\t]\n\n\t\tconst eventName = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Select an event',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: eventChoices,\n\t\t\t},\n\t\t})\n\n\t\treturn eventName\n\t}\n\n\tprivate async collectNamespace(contracts: EventContract[]): Promise<string> {\n\t\tconst { namespaceChoices } = this.mapContractsToSelectChoices(contracts)\n\n\t\tconst namespace = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Select an event namespace',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: namespaceChoices,\n\t\t\t},\n\t\t})\n\n\t\treturn namespace\n\t}\n\n\tprivate mapContractsToSelectChoices(contracts: EventContract[]) {\n\t\tconst namespaceChoices: SelectChoice[] = [\n\t\t\t{\n\t\t\t\tlabel: 'Skill',\n\t\t\t\tvalue: SKILL_EVENT_NAMESPACE,\n\t\t\t},\n\t\t]\n\n\t\tconst eventChoicesByNamespace: Record<string, SelectChoice[]> = {\n\t\t\tskill: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'will-boot',\n\t\t\t\t\tvalue: 'will-boot',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'did-boot',\n\t\t\t\t\tvalue: 'did-boot',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\n\t\tcontracts.forEach((contract) => {\n\t\t\tconst namedSignatures =\n\t\t\t\teventContractUtil.getNamedEventSignatures(contract)\n\n\t\t\tfor (const namedSig of namedSignatures) {\n\t\t\t\tconst namespace = namedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\n\t\t\t\tif (!namespaceChoices.find((o) => o.value === namespace)) {\n\t\t\t\t\tnamespaceChoices.push({\n\t\t\t\t\t\tlabel: namesUtil.toPascal(namespace),\n\t\t\t\t\t\tvalue: namespace,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (!eventChoicesByNamespace[namespace]) {\n\t\t\t\t\teventChoicesByNamespace[namespace] = []\n\t\t\t\t}\n\n\t\t\t\teventChoicesByNamespace[namespace].push({\n\t\t\t\t\tvalue: namedSig.fullyQualifiedEventName,\n\t\t\t\t\tlabel: namedSig.fullyQualifiedEventName,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\treturn { eventChoicesByNamespace, namespaceChoices }\n\t}\n}\n"],"file":"ListenAction.js"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import AbstractAction from '../../AbstractAction';
|
|
2
|
+
declare const syncListenersOptionScheam: {
|
|
3
|
+
id: string;
|
|
4
|
+
fields: {};
|
|
5
|
+
};
|
|
6
|
+
declare type OptionsSchema = typeof syncListenersOptionScheam;
|
|
7
|
+
export default class SyncListenerAction extends AbstractAction<OptionsSchema> {
|
|
8
|
+
optionsSchema: OptionsSchema;
|
|
9
|
+
invocationMessage: string;
|
|
10
|
+
commandAliases: string[];
|
|
11
|
+
execute(): Promise<{
|
|
12
|
+
files: import("../../../writers/AbstractWriter").WriteResults;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
+
|
|
20
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
+
|
|
22
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
+
|
|
24
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
+
|
|
26
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
+
|
|
28
|
+
var _schema = require("@sprucelabs/schema");
|
|
29
|
+
|
|
30
|
+
var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
31
|
+
|
|
32
|
+
var _AbstractAction2 = _interopRequireDefault(require("../../AbstractAction"));
|
|
33
|
+
|
|
34
|
+
var _ListenerTemplateItemBuilder = _interopRequireDefault(require("../builders/ListenerTemplateItemBuilder"));
|
|
35
|
+
|
|
36
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
37
|
+
|
|
38
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
39
|
+
|
|
40
|
+
var syncListenersOptionScheam = (0, _schema.buildSchema)({
|
|
41
|
+
id: 'syncListenersOptions',
|
|
42
|
+
fields: {}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
var SyncListenerAction = /*#__PURE__*/function (_AbstractAction) {
|
|
46
|
+
(0, _inherits2["default"])(SyncListenerAction, _AbstractAction);
|
|
47
|
+
|
|
48
|
+
var _super = _createSuper(SyncListenerAction);
|
|
49
|
+
|
|
50
|
+
function SyncListenerAction() {
|
|
51
|
+
var _this;
|
|
52
|
+
|
|
53
|
+
(0, _classCallCheck2["default"])(this, SyncListenerAction);
|
|
54
|
+
|
|
55
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
56
|
+
args[_key] = arguments[_key];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
60
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "optionsSchema", syncListenersOptionScheam);
|
|
61
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "invocationMessage", 'Syncing listeners... 🎧');
|
|
62
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "commandAliases", ['sync.listeners']);
|
|
63
|
+
return _this;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
(0, _createClass2["default"])(SyncListenerAction, [{
|
|
67
|
+
key: "execute",
|
|
68
|
+
value: function () {
|
|
69
|
+
var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
70
|
+
var listeners, builder, templateItems, files;
|
|
71
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
72
|
+
while (1) {
|
|
73
|
+
switch (_context.prev = _context.next) {
|
|
74
|
+
case 0:
|
|
75
|
+
_context.next = 2;
|
|
76
|
+
return this.Store('listener').loadListeners();
|
|
77
|
+
|
|
78
|
+
case 2:
|
|
79
|
+
listeners = _context.sent;
|
|
80
|
+
builder = new _ListenerTemplateItemBuilder["default"]();
|
|
81
|
+
templateItems = builder.buildTemplateItems({
|
|
82
|
+
listeners: listeners,
|
|
83
|
+
cwd: this.cwd
|
|
84
|
+
});
|
|
85
|
+
_context.next = 7;
|
|
86
|
+
return this.Writer('event').writeListenerMap(_spruceSkillUtils.diskUtil.resolveHashSprucePath(this.cwd, 'events'), {
|
|
87
|
+
listeners: templateItems
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
case 7:
|
|
91
|
+
files = _context.sent;
|
|
92
|
+
return _context.abrupt("return", {
|
|
93
|
+
files: files
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
case 9:
|
|
97
|
+
case "end":
|
|
98
|
+
return _context.stop();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}, _callee, this);
|
|
102
|
+
}));
|
|
103
|
+
|
|
104
|
+
function execute() {
|
|
105
|
+
return _execute.apply(this, arguments);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return execute;
|
|
109
|
+
}()
|
|
110
|
+
}]);
|
|
111
|
+
return SyncListenerAction;
|
|
112
|
+
}(_AbstractAction2["default"]);
|
|
113
|
+
|
|
114
|
+
exports["default"] = SyncListenerAction;
|
|
115
|
+
//# sourceMappingURL=SyncListenersAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/event/actions/SyncListenersAction.ts"],"names":["syncListenersOptionScheam","id","fields","SyncListenerAction","Store","loadListeners","listeners","builder","ListenerTemplateItemBuilder","templateItems","buildTemplateItems","cwd","Writer","writeListenerMap","diskUtil","resolveHashSprucePath","files","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,yBAAyB,GAAG,yBAAY;AAC7CC,EAAAA,EAAE,EAAE,sBADyC;AAE7CC,EAAAA,MAAM,EAAE;AAFqC,CAAZ,CAAlC;;IAOqBC,kB;;;;;;;;;;;;;;;sGACkBH,yB;0GACX,yB;uGACH,CAAC,gBAAD,C;;;;;;;mGAExB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACyB,KAAKI,KAAL,CAAW,UAAX,EAAuBC,aAAvB,EADzB;;AAAA;AACOC,gBAAAA,SADP;AAEOC,gBAAAA,OAFP,GAEiB,IAAIC,uCAAJ,EAFjB;AAIOC,gBAAAA,aAJP,GAIuBF,OAAO,CAACG,kBAAR,CAA2B;AAChDJ,kBAAAA,SAAS,EAATA,SADgD;AAEhDK,kBAAAA,GAAG,EAAE,KAAKA;AAFsC,iBAA3B,CAJvB;AAAA;AAAA,uBASqB,KAAKC,MAAL,CAAY,OAAZ,EAAqBC,gBAArB,CACnBC,2BAASC,qBAAT,CAA+B,KAAKJ,GAApC,EAAyC,QAAzC,CADmB,EAEnB;AACCL,kBAAAA,SAAS,EAAEG;AADZ,iBAFmB,CATrB;;AAAA;AASOO,gBAAAA,KATP;AAAA,iDAgBQ;AACNA,kBAAAA,KAAK,EAALA;AADM,iBAhBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAL+CC,2B","sourcesContent":["import { buildSchema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractAction from '../../AbstractAction'\nimport ListenerTemplateItemBuilder from '../builders/ListenerTemplateItemBuilder'\n\nconst syncListenersOptionScheam = buildSchema({\n\tid: 'syncListenersOptions',\n\tfields: {},\n})\n\ntype OptionsSchema = typeof syncListenersOptionScheam\n\nexport default class SyncListenerAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = syncListenersOptionScheam\n\tpublic invocationMessage = 'Syncing listeners... 🎧'\n\tpublic commandAliases = ['sync.listeners']\n\n\tpublic async execute() {\n\t\tconst listeners = await this.Store('listener').loadListeners()\n\t\tconst builder = new ListenerTemplateItemBuilder()\n\n\t\tconst templateItems = builder.buildTemplateItems({\n\t\t\tlisteners,\n\t\t\tcwd: this.cwd,\n\t\t})\n\n\t\tconst files = await this.Writer('event').writeListenerMap(\n\t\t\tdiskUtil.resolveHashSprucePath(this.cwd, 'events'),\n\t\t\t{\n\t\t\t\tlisteners: templateItems,\n\t\t\t}\n\t\t)\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n}\n"],"file":"SyncListenersAction.js"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ListenerTemplateItem } from '@sprucelabs/spruce-templates';
|
|
2
|
+
import { Listener } from '../stores/ListenerStore';
|
|
3
|
+
export default class ListenerTemplateItemBuilder {
|
|
4
|
+
buildTemplateItems(options: {
|
|
5
|
+
listeners: Listener[];
|
|
6
|
+
cwd: string;
|
|
7
|
+
}): ListenerTemplateItem[];
|
|
8
|
+
}
|