@sprucelabs/spruce-cli 14.29.30 → 14.30.2
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/ListeningToCoreEvents.test.d.ts +6 -0
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js +128 -0
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -0
- package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.d.ts +10 -0
- package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.js +298 -0
- package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -0
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js +1 -1
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
- package/build/features/event/actions/ListenAction.d.ts +4 -0
- package/build/features/event/actions/ListenAction.js +228 -127
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/writers/EventWriter.d.ts +1 -3
- package/build/features/event/writers/EventWriter.js +20 -14
- package/build/features/event/writers/EventWriter.js.map +1 -1
- package/build/features/sandbox/SandboxFeature.js +1 -1
- package/build/features/sandbox/SandboxFeature.js.map +1 -1
- package/build/features/sandbox/actions/SetupAction.js +24 -12
- package/build/features/sandbox/actions/SetupAction.js.map +1 -1
- package/build/features/skill/SkillFeature.js +2 -1
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/view/actions/CreateAction.js +1 -1
- package/build/features/view/actions/CreateAction.js.map +1 -1
- package/build/interfaces/SpyInterface.js +1 -1
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/templateItemBuilders/EventTemplateItemBuilder.js +2 -1
- package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
- package/package.json +28 -28
- package/src/__tests__/behavioral/ListeningToCoreEvents.test.ts +26 -0
- package/src/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.ts +74 -0
- package/src/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.ts +1 -1
- package/src/features/event/actions/ListenAction.ts +111 -58
- package/src/features/event/writers/EventWriter.ts +21 -35
- package/src/features/sandbox/SandboxFeature.ts +1 -1
- package/src/features/sandbox/actions/SetupAction.ts +6 -0
- package/src/features/skill/SkillFeature.ts +1 -1
- package/src/features/view/actions/CreateAction.ts +1 -0
- package/src/interfaces/SpyInterface.ts +3 -1
- package/src/templateItemBuilders/EventTemplateItemBuilder.ts +3 -0
|
@@ -56,6 +56,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
56
56
|
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; } }
|
|
57
57
|
|
|
58
58
|
var SKILL_EVENT_NAMESPACE = 'skill';
|
|
59
|
+
var CORE_EVENT_NAMESPACE = 'mercury';
|
|
59
60
|
|
|
60
61
|
var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
61
62
|
(0, _inherits2["default"])(ListenAction, _AbstractAction);
|
|
@@ -82,9 +83,7 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
82
83
|
key: "execute",
|
|
83
84
|
value: function () {
|
|
84
85
|
var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(options) {
|
|
85
|
-
var
|
|
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, writer, syncResults, syncOptions, _syncResults;
|
|
86
|
+
var normalizedOptions, _namespace, response, listenerDestinationDir, versionOptions, eventName, namespace, schemaTypesLookupDir, contracts, _this$mapContractsToS, eventChoicesByNamespace, isCoreEvent, fqen, _eventNameUtil$split, version, resolvedDestination, resolvedVersion, isSkillEvent, emitPayloadSchemaTemplateItem, responsePayloadSchemaTemplateItem, builder, templateItems, syncResults, _syncResults;
|
|
88
87
|
|
|
89
88
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
90
89
|
while (1) {
|
|
@@ -93,68 +92,31 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
93
92
|
normalizedOptions = this.validateAndNormalizeOptions(options);
|
|
94
93
|
_context.prev = 1;
|
|
95
94
|
response = {};
|
|
96
|
-
listenerDestinationDir = normalizedOptions.listenerDestinationDir, versionOptions = normalizedOptions.version, eventName = normalizedOptions.eventName, namespace = normalizedOptions.namespace, schemaTypesLookupDir = normalizedOptions.schemaTypesLookupDir
|
|
95
|
+
listenerDestinationDir = normalizedOptions.listenerDestinationDir, versionOptions = normalizedOptions.version, eventName = normalizedOptions.eventName, namespace = normalizedOptions.namespace, schemaTypesLookupDir = normalizedOptions.schemaTypesLookupDir;
|
|
97
96
|
this.ui.startLoading('Loading event contracts...');
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
return this.Store('skill').loadCurrentSkill();
|
|
101
|
-
|
|
102
|
-
case 8:
|
|
103
|
-
skill = _context.sent;
|
|
104
|
-
namespacesForFetch = namespace && namespace !== 'skill' ? [namespace] : undefined;
|
|
105
|
-
|
|
106
|
-
if (!skill.slug) {
|
|
107
|
-
_context.next = 16;
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
_context.next = 13;
|
|
112
|
-
return eventStore.fetchEventContracts({
|
|
113
|
-
localNamespace: skill.slug,
|
|
114
|
-
namespaces: namespacesForFetch,
|
|
115
|
-
didUpdateHandler: function didUpdateHandler(msg) {
|
|
116
|
-
return _this2.ui.startLoading(msg);
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
case 13:
|
|
121
|
-
_context.t0 = _context.sent;
|
|
122
|
-
_context.next = 19;
|
|
123
|
-
break;
|
|
97
|
+
_context.next = 7;
|
|
98
|
+
return this.fetchEventContracts(namespace);
|
|
124
99
|
|
|
125
|
-
case
|
|
126
|
-
|
|
127
|
-
return eventStore.fetchEventContracts({
|
|
128
|
-
namespaces: namespacesForFetch,
|
|
129
|
-
didUpdateHandler: function didUpdateHandler(msg) {
|
|
130
|
-
return _this2.ui.startLoading(msg);
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
case 18:
|
|
135
|
-
_context.t0 = _context.sent;
|
|
136
|
-
|
|
137
|
-
case 19:
|
|
138
|
-
_ref = _context.t0;
|
|
139
|
-
contracts = _ref.contracts;
|
|
100
|
+
case 7:
|
|
101
|
+
contracts = _context.sent;
|
|
140
102
|
this.ui.stopLoading();
|
|
141
103
|
|
|
142
104
|
if (namespace) {
|
|
143
|
-
_context.next =
|
|
105
|
+
_context.next = 13;
|
|
144
106
|
break;
|
|
145
107
|
}
|
|
146
108
|
|
|
147
|
-
_context.next =
|
|
109
|
+
_context.next = 12;
|
|
148
110
|
return this.collectNamespace(contracts);
|
|
149
111
|
|
|
150
|
-
case
|
|
112
|
+
case 12:
|
|
151
113
|
namespace = _context.sent;
|
|
152
114
|
|
|
153
|
-
case
|
|
115
|
+
case 13:
|
|
154
116
|
_this$mapContractsToS = this.mapContractsToSelectChoices(contracts), eventChoicesByNamespace = _this$mapContractsToS.eventChoicesByNamespace;
|
|
155
117
|
|
|
156
118
|
if (eventChoicesByNamespace[namespace]) {
|
|
157
|
-
_context.next =
|
|
119
|
+
_context.next = 16;
|
|
158
120
|
break;
|
|
159
121
|
}
|
|
160
122
|
|
|
@@ -164,56 +126,44 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
164
126
|
parameters: ['namespace']
|
|
165
127
|
});
|
|
166
128
|
|
|
167
|
-
case
|
|
129
|
+
case 16:
|
|
168
130
|
if (eventName) {
|
|
169
|
-
_context.next =
|
|
131
|
+
_context.next = 20;
|
|
170
132
|
break;
|
|
171
133
|
}
|
|
172
134
|
|
|
173
|
-
_context.next =
|
|
135
|
+
_context.next = 19;
|
|
174
136
|
return this.collectEvent(contracts, namespace);
|
|
175
137
|
|
|
176
|
-
case
|
|
138
|
+
case 19:
|
|
177
139
|
eventName = _context.sent;
|
|
178
140
|
|
|
179
|
-
case
|
|
141
|
+
case 20:
|
|
142
|
+
isCoreEvent = namespace === CORE_EVENT_NAMESPACE;
|
|
143
|
+
|
|
144
|
+
if (isCoreEvent) {
|
|
145
|
+
namespace = undefined;
|
|
146
|
+
}
|
|
147
|
+
|
|
180
148
|
fqen = _spruceEventUtils.eventNameUtil.join({
|
|
181
149
|
eventName: eventName,
|
|
182
150
|
eventNamespace: namespace,
|
|
183
151
|
version: versionOptions
|
|
184
152
|
});
|
|
185
153
|
_eventNameUtil$split = _spruceEventUtils.eventNameUtil.split(fqen), version = _eventNameUtil$split.version;
|
|
186
|
-
|
|
187
|
-
return e.value === eventName || e.value === fqen;
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
if (isValidEvent) {
|
|
191
|
-
_context.next = 38;
|
|
192
|
-
break;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
throw new _schema.SchemaError({
|
|
196
|
-
code: 'INVALID_PARAMETERS',
|
|
197
|
-
friendlyMessage: "".concat(eventName, " is not a valid event . Try: \n\n").concat(eventChoicesByNamespace[namespace].map(function (i) {
|
|
198
|
-
return i.value;
|
|
199
|
-
}).join('\n')),
|
|
200
|
-
parameters: ['eventName']
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
case 38:
|
|
154
|
+
this.assertIsValidChoice(eventChoicesByNamespace, (_namespace = namespace) !== null && _namespace !== void 0 ? _namespace : 'mercury', eventName, fqen);
|
|
204
155
|
resolvedDestination = _spruceSkillUtils.diskUtil.resolvePath(this.cwd, listenerDestinationDir);
|
|
205
|
-
_context.next =
|
|
156
|
+
_context.next = 28;
|
|
206
157
|
return this.resolveVersion(version, resolvedDestination);
|
|
207
158
|
|
|
208
|
-
case
|
|
159
|
+
case 28:
|
|
209
160
|
resolvedVersion = _context.sent;
|
|
210
|
-
resolvedSchemaTypesLookupDir = _spruceSkillUtils.diskUtil.resolvePath(this.cwd, schemaTypesLookupDir);
|
|
211
161
|
isSkillEvent = namespace !== SKILL_EVENT_NAMESPACE;
|
|
212
162
|
|
|
213
163
|
if (isSkillEvent) {
|
|
214
164
|
builder = new _EventTemplateItemBuilder["default"]();
|
|
215
165
|
templateItems = builder.buildEventTemplateItemForName(contracts, _spruceEventUtils.eventNameUtil.join({
|
|
216
|
-
eventNamespace: namespace,
|
|
166
|
+
eventNamespace: !isCoreEvent ? namespace : undefined,
|
|
217
167
|
eventName: eventName,
|
|
218
168
|
version: resolvedVersion
|
|
219
169
|
}));
|
|
@@ -221,61 +171,54 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
221
171
|
responsePayloadSchemaTemplateItem = templateItems.responsePayloadSchemaTemplateItem;
|
|
222
172
|
}
|
|
223
173
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
174
|
+
_context.next = 33;
|
|
175
|
+
return this.writeListener({
|
|
176
|
+
schemaTypesLookupDir: schemaTypesLookupDir,
|
|
177
|
+
resolvedDestination: resolvedDestination,
|
|
227
178
|
version: resolvedVersion,
|
|
228
179
|
eventName: eventName,
|
|
229
|
-
|
|
230
|
-
fullyQualifiedEventName: _spruceEventUtils.eventNameUtil.join({
|
|
231
|
-
eventName: eventName,
|
|
232
|
-
eventNamespace: namespace,
|
|
233
|
-
version: resolvedVersion
|
|
234
|
-
}),
|
|
180
|
+
namespace: namespace,
|
|
235
181
|
emitPayloadSchemaTemplateItem: emitPayloadSchemaTemplateItem,
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
schemaTypesLookupDir: resolvedSchemaTypesLookupDir
|
|
239
|
-
}));
|
|
182
|
+
responsePayloadSchemaTemplateItem: responsePayloadSchemaTemplateItem
|
|
183
|
+
});
|
|
240
184
|
|
|
241
|
-
case
|
|
185
|
+
case 33:
|
|
242
186
|
response.files = _context.sent;
|
|
243
|
-
_context.next =
|
|
187
|
+
_context.next = 36;
|
|
244
188
|
return this.syncListeners();
|
|
245
189
|
|
|
246
|
-
case
|
|
190
|
+
case 36:
|
|
247
191
|
syncResults = _context.sent;
|
|
248
192
|
response = _action["default"].mergeActionResults(syncResults, response);
|
|
249
193
|
|
|
250
194
|
if (!isSkillEvent) {
|
|
251
|
-
_context.next =
|
|
195
|
+
_context.next = 43;
|
|
252
196
|
break;
|
|
253
197
|
}
|
|
254
198
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
return this.Action('event', 'sync').execute(syncOptions);
|
|
199
|
+
_context.next = 41;
|
|
200
|
+
return this.syncEvents(options);
|
|
258
201
|
|
|
259
|
-
case
|
|
202
|
+
case 41:
|
|
260
203
|
_syncResults = _context.sent;
|
|
261
204
|
response = _action["default"].mergeActionResults(_syncResults, response);
|
|
262
205
|
|
|
263
|
-
case
|
|
206
|
+
case 43:
|
|
264
207
|
return _context.abrupt("return", response);
|
|
265
208
|
|
|
266
|
-
case
|
|
267
|
-
_context.prev =
|
|
268
|
-
_context.
|
|
209
|
+
case 46:
|
|
210
|
+
_context.prev = 46;
|
|
211
|
+
_context.t0 = _context["catch"](1);
|
|
269
212
|
return _context.abrupt("return", {
|
|
270
|
-
errors: [_context.
|
|
213
|
+
errors: [_context.t0]
|
|
271
214
|
});
|
|
272
215
|
|
|
273
|
-
case
|
|
216
|
+
case 49:
|
|
274
217
|
case "end":
|
|
275
218
|
return _context.stop();
|
|
276
219
|
}
|
|
277
220
|
}
|
|
278
|
-
}, _callee, this, [[1,
|
|
221
|
+
}, _callee, this, [[1, 46]]);
|
|
279
222
|
}));
|
|
280
223
|
|
|
281
224
|
function execute(_x) {
|
|
@@ -285,16 +228,62 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
285
228
|
return execute;
|
|
286
229
|
}()
|
|
287
230
|
}, {
|
|
288
|
-
key: "
|
|
231
|
+
key: "fetchEventContracts",
|
|
289
232
|
value: function () {
|
|
290
|
-
var
|
|
233
|
+
var _fetchEventContracts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(namespace) {
|
|
234
|
+
var _this2 = this;
|
|
235
|
+
|
|
236
|
+
var eventStore, skill, namespacesForFetch, _ref, contracts;
|
|
237
|
+
|
|
291
238
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
292
239
|
while (1) {
|
|
293
240
|
switch (_context2.prev = _context2.next) {
|
|
294
241
|
case 0:
|
|
295
|
-
|
|
242
|
+
eventStore = this.Store('event');
|
|
243
|
+
_context2.next = 3;
|
|
244
|
+
return this.Store('skill').loadCurrentSkill();
|
|
296
245
|
|
|
297
|
-
case
|
|
246
|
+
case 3:
|
|
247
|
+
skill = _context2.sent;
|
|
248
|
+
namespacesForFetch = namespace && namespace !== SKILL_EVENT_NAMESPACE && namespace !== CORE_EVENT_NAMESPACE ? [namespace] : undefined;
|
|
249
|
+
|
|
250
|
+
if (!skill.slug) {
|
|
251
|
+
_context2.next = 11;
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
_context2.next = 8;
|
|
256
|
+
return eventStore.fetchEventContracts({
|
|
257
|
+
localNamespace: skill.slug,
|
|
258
|
+
namespaces: namespacesForFetch,
|
|
259
|
+
didUpdateHandler: function didUpdateHandler(msg) {
|
|
260
|
+
return _this2.ui.startLoading(msg);
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
case 8:
|
|
265
|
+
_context2.t0 = _context2.sent;
|
|
266
|
+
_context2.next = 14;
|
|
267
|
+
break;
|
|
268
|
+
|
|
269
|
+
case 11:
|
|
270
|
+
_context2.next = 13;
|
|
271
|
+
return eventStore.fetchEventContracts({
|
|
272
|
+
namespaces: namespacesForFetch,
|
|
273
|
+
didUpdateHandler: function didUpdateHandler(msg) {
|
|
274
|
+
return _this2.ui.startLoading(msg);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
case 13:
|
|
279
|
+
_context2.t0 = _context2.sent;
|
|
280
|
+
|
|
281
|
+
case 14:
|
|
282
|
+
_ref = _context2.t0;
|
|
283
|
+
contracts = _ref.contracts;
|
|
284
|
+
return _context2.abrupt("return", contracts);
|
|
285
|
+
|
|
286
|
+
case 17:
|
|
298
287
|
case "end":
|
|
299
288
|
return _context2.stop();
|
|
300
289
|
}
|
|
@@ -302,6 +291,118 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
302
291
|
}, _callee2, this);
|
|
303
292
|
}));
|
|
304
293
|
|
|
294
|
+
function fetchEventContracts(_x2) {
|
|
295
|
+
return _fetchEventContracts.apply(this, arguments);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return fetchEventContracts;
|
|
299
|
+
}()
|
|
300
|
+
}, {
|
|
301
|
+
key: "syncEvents",
|
|
302
|
+
value: function () {
|
|
303
|
+
var _syncEvents = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(options) {
|
|
304
|
+
var syncOptions, syncResults;
|
|
305
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
306
|
+
while (1) {
|
|
307
|
+
switch (_context3.prev = _context3.next) {
|
|
308
|
+
case 0:
|
|
309
|
+
syncOptions = (0, _schema.normalizeSchemaValues)(_syncEventOptions["default"], options);
|
|
310
|
+
_context3.next = 3;
|
|
311
|
+
return this.Action('event', 'sync').execute(syncOptions);
|
|
312
|
+
|
|
313
|
+
case 3:
|
|
314
|
+
syncResults = _context3.sent;
|
|
315
|
+
return _context3.abrupt("return", syncResults);
|
|
316
|
+
|
|
317
|
+
case 5:
|
|
318
|
+
case "end":
|
|
319
|
+
return _context3.stop();
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}, _callee3, this);
|
|
323
|
+
}));
|
|
324
|
+
|
|
325
|
+
function syncEvents(_x3) {
|
|
326
|
+
return _syncEvents.apply(this, arguments);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
return syncEvents;
|
|
330
|
+
}()
|
|
331
|
+
}, {
|
|
332
|
+
key: "writeListener",
|
|
333
|
+
value: function () {
|
|
334
|
+
var _writeListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(options) {
|
|
335
|
+
var resolvedDestination, schemaTypesLookupDir, namespace, eventName, version, resolvedSchemaTypesLookupDir, writer, files;
|
|
336
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
337
|
+
while (1) {
|
|
338
|
+
switch (_context4.prev = _context4.next) {
|
|
339
|
+
case 0:
|
|
340
|
+
resolvedDestination = options.resolvedDestination, schemaTypesLookupDir = options.schemaTypesLookupDir, namespace = options.namespace, eventName = options.eventName, version = options.version;
|
|
341
|
+
resolvedSchemaTypesLookupDir = _spruceSkillUtils.diskUtil.resolvePath(this.cwd, schemaTypesLookupDir);
|
|
342
|
+
writer = this.Writer('event');
|
|
343
|
+
_context4.next = 5;
|
|
344
|
+
return writer.writeListener(resolvedDestination, _objectSpread(_objectSpread({}, options), {}, {
|
|
345
|
+
fullyQualifiedEventName: _spruceEventUtils.eventNameUtil.join({
|
|
346
|
+
eventName: eventName,
|
|
347
|
+
eventNamespace: namespace,
|
|
348
|
+
version: version
|
|
349
|
+
}),
|
|
350
|
+
schemaTypesLookupDir: resolvedSchemaTypesLookupDir
|
|
351
|
+
}));
|
|
352
|
+
|
|
353
|
+
case 5:
|
|
354
|
+
files = _context4.sent;
|
|
355
|
+
return _context4.abrupt("return", files);
|
|
356
|
+
|
|
357
|
+
case 7:
|
|
358
|
+
case "end":
|
|
359
|
+
return _context4.stop();
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}, _callee4, this);
|
|
363
|
+
}));
|
|
364
|
+
|
|
365
|
+
function writeListener(_x4) {
|
|
366
|
+
return _writeListener.apply(this, arguments);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
return writeListener;
|
|
370
|
+
}()
|
|
371
|
+
}, {
|
|
372
|
+
key: "assertIsValidChoice",
|
|
373
|
+
value: function assertIsValidChoice(eventChoicesByNamespace, namespace, eventName, fqen) {
|
|
374
|
+
var isValidEvent = !!eventChoicesByNamespace[namespace].find(function (e) {
|
|
375
|
+
return e.value === eventName || e.value === fqen;
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
if (!isValidEvent) {
|
|
379
|
+
throw new _schema.SchemaError({
|
|
380
|
+
code: 'INVALID_PARAMETERS',
|
|
381
|
+
friendlyMessage: "".concat(eventName, " is not a valid event . Try: \n\n").concat(eventChoicesByNamespace[namespace].map(function (i) {
|
|
382
|
+
return i.value;
|
|
383
|
+
}).join('\n')),
|
|
384
|
+
parameters: ['eventName']
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}, {
|
|
389
|
+
key: "syncListeners",
|
|
390
|
+
value: function () {
|
|
391
|
+
var _syncListeners = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
392
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
393
|
+
while (1) {
|
|
394
|
+
switch (_context5.prev = _context5.next) {
|
|
395
|
+
case 0:
|
|
396
|
+
return _context5.abrupt("return", this.Action('event', 'sync.listeners').execute({}));
|
|
397
|
+
|
|
398
|
+
case 1:
|
|
399
|
+
case "end":
|
|
400
|
+
return _context5.stop();
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}, _callee5, this);
|
|
404
|
+
}));
|
|
405
|
+
|
|
305
406
|
function syncListeners() {
|
|
306
407
|
return _syncListeners.apply(this, arguments);
|
|
307
408
|
}
|
|
@@ -311,14 +412,14 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
311
412
|
}, {
|
|
312
413
|
key: "collectEvent",
|
|
313
414
|
value: function () {
|
|
314
|
-
var _collectEvent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
415
|
+
var _collectEvent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(contracts, namespace) {
|
|
315
416
|
var eventChoices, eventName;
|
|
316
|
-
return _regenerator["default"].wrap(function
|
|
417
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
317
418
|
while (1) {
|
|
318
|
-
switch (
|
|
419
|
+
switch (_context6.prev = _context6.next) {
|
|
319
420
|
case 0:
|
|
320
421
|
eventChoices = this.mapContractsToSelectChoices(contracts).eventChoicesByNamespace[namespace];
|
|
321
|
-
|
|
422
|
+
_context6.next = 3;
|
|
322
423
|
return this.ui.prompt({
|
|
323
424
|
type: 'select',
|
|
324
425
|
label: 'Select an event',
|
|
@@ -329,18 +430,18 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
329
430
|
});
|
|
330
431
|
|
|
331
432
|
case 3:
|
|
332
|
-
eventName =
|
|
333
|
-
return
|
|
433
|
+
eventName = _context6.sent;
|
|
434
|
+
return _context6.abrupt("return", eventName);
|
|
334
435
|
|
|
335
436
|
case 5:
|
|
336
437
|
case "end":
|
|
337
|
-
return
|
|
438
|
+
return _context6.stop();
|
|
338
439
|
}
|
|
339
440
|
}
|
|
340
|
-
},
|
|
441
|
+
}, _callee6, this);
|
|
341
442
|
}));
|
|
342
443
|
|
|
343
|
-
function collectEvent(
|
|
444
|
+
function collectEvent(_x5, _x6) {
|
|
344
445
|
return _collectEvent.apply(this, arguments);
|
|
345
446
|
}
|
|
346
447
|
|
|
@@ -349,15 +450,15 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
349
450
|
}, {
|
|
350
451
|
key: "collectNamespace",
|
|
351
452
|
value: function () {
|
|
352
|
-
var _collectNamespace = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
453
|
+
var _collectNamespace = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(contracts) {
|
|
353
454
|
var _this$mapContractsToS2, namespaceChoices, namespace;
|
|
354
455
|
|
|
355
|
-
return _regenerator["default"].wrap(function
|
|
456
|
+
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
|
356
457
|
while (1) {
|
|
357
|
-
switch (
|
|
458
|
+
switch (_context7.prev = _context7.next) {
|
|
358
459
|
case 0:
|
|
359
460
|
_this$mapContractsToS2 = this.mapContractsToSelectChoices(contracts), namespaceChoices = _this$mapContractsToS2.namespaceChoices;
|
|
360
|
-
|
|
461
|
+
_context7.next = 3;
|
|
361
462
|
return this.ui.prompt({
|
|
362
463
|
type: 'select',
|
|
363
464
|
label: 'Select an event namespace',
|
|
@@ -368,18 +469,18 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
368
469
|
});
|
|
369
470
|
|
|
370
471
|
case 3:
|
|
371
|
-
namespace =
|
|
372
|
-
return
|
|
472
|
+
namespace = _context7.sent;
|
|
473
|
+
return _context7.abrupt("return", namespace);
|
|
373
474
|
|
|
374
475
|
case 5:
|
|
375
476
|
case "end":
|
|
376
|
-
return
|
|
477
|
+
return _context7.stop();
|
|
377
478
|
}
|
|
378
479
|
}
|
|
379
|
-
},
|
|
480
|
+
}, _callee7, this);
|
|
380
481
|
}));
|
|
381
482
|
|
|
382
|
-
function collectNamespace(
|
|
483
|
+
function collectNamespace(_x7) {
|
|
383
484
|
return _collectNamespace.apply(this, arguments);
|
|
384
485
|
}
|
|
385
486
|
|
|
@@ -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","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":"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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 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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/event/actions/ListenAction.ts"],"names":["SKILL_EVENT_NAMESPACE","CORE_EVENT_NAMESPACE","ListenAction","eventListenActionSchema","options","normalizedOptions","validateAndNormalizeOptions","response","listenerDestinationDir","versionOptions","version","eventName","namespace","schemaTypesLookupDir","ui","startLoading","fetchEventContracts","contracts","stopLoading","collectNamespace","mapContractsToSelectChoices","eventChoicesByNamespace","SchemaError","code","friendlyMessage","Object","keys","join","parameters","collectEvent","isCoreEvent","undefined","fqen","eventNameUtil","eventNamespace","split","assertIsValidChoice","resolvedDestination","diskUtil","resolvePath","cwd","resolveVersion","resolvedVersion","isSkillEvent","builder","EventTemplateItemBuilder","templateItems","buildEventTemplateItemForName","emitPayloadSchemaTemplateItem","responsePayloadSchemaTemplateItem","writeListener","files","syncListeners","syncResults","actionUtil","mergeActionResults","syncEvents","errors","eventStore","Store","loadCurrentSkill","skill","namespacesForFetch","slug","localNamespace","namespaces","didUpdateHandler","msg","syncOptions","syncEventActionSchema","Action","execute","resolvedSchemaTypesLookupDir","writer","Writer","fullyQualifiedEventName","isValidEvent","find","e","value","map","i","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;AACA,IAAMC,oBAAoB,GAAG,SAA7B;;IAIqBC,Y;;;;;;;;;;;;;;;sGACkBC,8B;0GACX,+B;uGACH,CAAC,cAAD,EAAiB,iBAAjB,C;;;;;;;mGAExB,iBACCC,OADD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAGOC,gBAAAA,iBAHP,GAG2B,KAAKC,2BAAL,CAAiCF,OAAjC,CAH3B;AAAA;AAMMG,gBAAAA,QANN,GAMwC,EANxC;AASGC,gBAAAA,sBATH,GAcMH,iBAdN,CASGG,sBATH,EAUYC,cAVZ,GAcMJ,iBAdN,CAUGK,OAVH,EAWGC,SAXH,GAcMN,iBAdN,CAWGM,SAXH,EAYGC,SAZH,GAcMP,iBAdN,CAYGO,SAZH,EAaGC,oBAbH,GAcMR,iBAdN,CAaGQ,oBAbH;AAgBE,qBAAKC,EAAL,CAAQC,YAAR,CAAqB,4BAArB;AAhBF;AAAA,uBAkB0B,KAAKC,mBAAL,CAAyBJ,SAAzB,CAlB1B;;AAAA;AAkBQK,gBAAAA,SAlBR;AAoBE,qBAAKH,EAAL,CAAQI,WAAR;;AApBF,oBAsBON,SAtBP;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAuBqB,KAAKO,gBAAL,CAAsBF,SAAtB,CAvBrB;;AAAA;AAuBGL,gBAAAA,SAvBH;;AAAA;AAAA,wCA2BG,KAAKQ,2BAAL,CAAiCH,SAAjC,CA3BH,EA0BUI,uBA1BV,yBA0BUA,uBA1BV;;AAAA,oBA6BOA,uBAAuB,CAACT,SAAD,CA7B9B;AAAA;AAAA;AAAA;;AAAA,sBA8BS,IAAIU,mBAAJ,CAAgB;AACrBC,kBAAAA,IAAI,EAAE,oBADe;AAErBC,kBAAAA,eAAe,YAAKZ,SAAL,uDAA2Da,MAAM,CAACC,IAAP,CACzEL,uBADyE,EAExEM,IAFwE,CAEnE,IAFmE,CAA3D,CAFM;AAKrBC,kBAAAA,UAAU,EAAE,CAAC,WAAD;AALS,iBAAhB,CA9BT;;AAAA;AAAA,oBAuCOjB,SAvCP;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAwCqB,KAAKkB,YAAL,CAAkBZ,SAAlB,EAA6BL,SAA7B,CAxCrB;;AAAA;AAwCGD,gBAAAA,SAxCH;;AAAA;AA2CQmB,gBAAAA,WA3CR,GA2CsBlB,SAAS,KAAKX,oBA3CpC;;AA4CE,oBAAI6B,WAAJ,EAAiB;AAChBlB,kBAAAA,SAAS,GAAGmB,SAAZ;AACA;;AAEKC,gBAAAA,IAhDR,GAgDeC,gCAAcN,IAAd,CAAmB;AAC/BhB,kBAAAA,SAAS,EAATA,SAD+B;AAE/BuB,kBAAAA,cAAc,EAAEtB,SAFe;AAG/BF,kBAAAA,OAAO,EAAED;AAHsB,iBAAnB,CAhDf;AAAA,uCAsDoBwB,gCAAcE,KAAd,CAAoBH,IAApB,CAtDpB,EAsDQtB,OAtDR,wBAsDQA,OAtDR;AAwDE,qBAAK0B,mBAAL,CACCf,uBADD,gBAECT,SAFD,mDAEc,SAFd,EAGCD,SAHD,EAICqB,IAJD;AAOMK,gBAAAA,mBA/DR,GA+D8BC,2BAASC,WAAT,CAC3B,KAAKC,GADsB,EAE3BhC,sBAF2B,CA/D9B;AAAA;AAAA,uBAoEgC,KAAKiC,cAAL,CAC7B/B,OAD6B,EAE7B2B,mBAF6B,CApEhC;;AAAA;AAoEQK,gBAAAA,eApER;AAyEQC,gBAAAA,YAzER,GAyEuB/B,SAAS,KAAKZ,qBAzErC;;AA8EE,oBAAI2C,YAAJ,EAAkB;AACXC,kBAAAA,OADW,GACD,IAAIC,oCAAJ,EADC;AAEXC,kBAAAA,aAFW,GAEKF,OAAO,CAACG,6BAAR,CACrB9B,SADqB,EAErBgB,gCAAcN,IAAd,CAAmB;AAClBO,oBAAAA,cAAc,EAAE,CAACJ,WAAD,GAAelB,SAAf,GAA2BmB,SADzB;AAElBpB,oBAAAA,SAAS,EAATA,SAFkB;AAGlBD,oBAAAA,OAAO,EAAEgC;AAHS,mBAAnB,CAFqB,CAFL;AAWjBM,kBAAAA,6BAA6B,GAC5BF,aAAa,CAACE,6BADf;AAEAC,kBAAAA,iCAAiC,GAChCH,aAAa,CAACG,iCADf;AAEA;;AA7FH;AAAA,uBA+FyB,KAAKC,aAAL,CAAmB;AACzCrC,kBAAAA,oBAAoB,EAApBA,oBADyC;AAEzCwB,kBAAAA,mBAAmB,EAAnBA,mBAFyC;AAGzC3B,kBAAAA,OAAO,EAAEgC,eAHgC;AAIzC/B,kBAAAA,SAAS,EAATA,SAJyC;AAKzCC,kBAAAA,SAAS,EAATA,SALyC;AAMzCoC,kBAAAA,6BAA6B,EAA7BA,6BANyC;AAOzCC,kBAAAA,iCAAiC,EAAjCA;AAPyC,iBAAnB,CA/FzB;;AAAA;AA+FE1C,gBAAAA,QAAQ,CAAC4C,KA/FX;AAAA;AAAA,uBAyG4B,KAAKC,aAAL,EAzG5B;;AAAA;AAyGQC,gBAAAA,WAzGR;AA2GE9C,gBAAAA,QAAQ,GAAG+C,mBAAWC,kBAAX,CAA8BF,WAA9B,EAA2C9C,QAA3C,CAAX;;AA3GF,qBA6GMoC,YA7GN;AAAA;AAAA;AAAA;;AAAA;AAAA,uBA8G6B,KAAKa,UAAL,CAAgBpD,OAAhB,CA9G7B;;AAAA;AA8GSiD,gBAAAA,YA9GT;AA+GG9C,gBAAAA,QAAQ,GAAG+C,mBAAWC,kBAAX,CAA8BF,YAA9B,EAA2C9C,QAA3C,CAAX;;AA/GH;AAAA,iDAkHSA,QAlHT;;AAAA;AAAA;AAAA;AAAA,iDAoHS;AACNkD,kBAAAA,MAAM,EAAE;AADF,iBApHT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+GA0HA,kBAAkC7C,SAAlC;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AACO8C,gBAAAA,UADP,GACoB,KAAKC,KAAL,CAAW,OAAX,CADpB;AAAA;AAAA,uBAEqB,KAAKA,KAAL,CAAW,OAAX,EAAoBC,gBAApB,EAFrB;;AAAA;AAEOC,gBAAAA,KAFP;AAIOC,gBAAAA,kBAJP,GAKElD,SAAS,IACTA,SAAS,KAAKZ,qBADd,IAEAY,SAAS,KAAKX,oBAFd,GAGG,CAACW,SAAD,CAHH,GAIGmB,SATL;;AAAA,qBAWuB8B,KAAK,CAACE,IAX7B;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAYUL,UAAU,CAAC1C,mBAAX,CAA+B;AACrCgD,kBAAAA,cAAc,EAAEH,KAAK,CAACE,IADe;AAErCE,kBAAAA,UAAU,EAAEH,kBAFyB;AAGrCI,kBAAAA,gBAAgB,EAAE,0BAACC,GAAD;AAAA,2BAAiB,MAAI,CAACrD,EAAL,CAAQC,YAAR,CAAqBoD,GAArB,CAAjB;AAAA;AAHmB,iBAA/B,CAZV;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,uBAiBUT,UAAU,CAAC1C,mBAAX,CAA+B;AACrCiD,kBAAAA,UAAU,EAAEH,kBADyB;AAErCI,kBAAAA,gBAAgB,EAAE,0BAACC,GAAD;AAAA,2BAAiB,MAAI,CAACrD,EAAL,CAAQC,YAAR,CAAqBoD,GAArB,CAAjB;AAAA;AAFmB,iBAA/B,CAjBV;;AAAA;AAAA;;AAAA;AAAA;AAWSlD,gBAAAA,SAXT,QAWSA,SAXT;AAAA,kDAsBQA,SAtBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;sGAyBA,kBACCb,OADD;AAAA;AAAA;AAAA;AAAA;AAAA;AAGOgE,gBAAAA,WAHP,GAGqB,mCAAsBC,4BAAtB,EAA6CjE,OAA7C,CAHrB;AAAA;AAAA,uBAK2B,KAAKkE,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqCH,WAArC,CAL3B;;AAAA;AAKOf,gBAAAA,WALP;AAAA,kDAMQA,WANR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;yGASA,kBAA4BjD,OAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAUEiC,gBAAAA,mBAVF,GAeKjC,OAfL,CAUEiC,mBAVF,EAWExB,oBAXF,GAeKT,OAfL,CAWES,oBAXF,EAYED,SAZF,GAeKR,OAfL,CAYEQ,SAZF,EAaED,SAbF,GAeKP,OAfL,CAaEO,SAbF,EAcED,OAdF,GAeKN,OAfL,CAcEM,OAdF;AAiBO8D,gBAAAA,4BAjBP,GAiBsClC,2BAASC,WAAT,CACpC,KAAKC,GAD+B,EAEpC3B,oBAFoC,CAjBtC;AAqBO4D,gBAAAA,MArBP,GAqBgB,KAAKC,MAAL,CAAY,OAAZ,CArBhB;AAAA;AAAA,uBAsBqBD,MAAM,CAACvB,aAAP,CAAqBb,mBAArB,kCAChBjC,OADgB;AAEnBuE,kBAAAA,uBAAuB,EAAE1C,gCAAcN,IAAd,CAAmB;AAC3ChB,oBAAAA,SAAS,EAATA,SAD2C;AAE3CuB,oBAAAA,cAAc,EAAEtB,SAF2B;AAG3CF,oBAAAA,OAAO,EAAPA;AAH2C,mBAAnB,CAFN;AAOnBG,kBAAAA,oBAAoB,EAAE2D;AAPH,mBAtBrB;;AAAA;AAsBOrB,gBAAAA,KAtBP;AAAA,kDAgCQA,KAhCR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAmCA,6BACC9B,uBADD,EAECT,SAFD,EAGCD,SAHD,EAICqB,IAJD,EAKE;AACD,UAAM4C,YAAY,GAAG,CAAC,CAACvD,uBAAuB,CAACT,SAAD,CAAvB,CAAmCiE,IAAnC,CACtB,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,KAAF,KAAYpE,SAAZ,IAAyBmE,CAAC,CAACC,KAAF,KAAY/C,IAA5C;AAAA,OADsB,CAAvB;;AAIA,UAAI,CAAC4C,YAAL,EAAmB;AAClB,cAAM,IAAItD,mBAAJ,CAAgB;AACrBC,UAAAA,IAAI,EAAE,oBADe;AAErBC,UAAAA,eAAe,YAAKb,SAAL,8CAAkDU,uBAAuB,CACvFT,SADuF,CAAvB,CAG/DoE,GAH+D,CAG3D,UAACC,CAAD;AAAA,mBAAOA,CAAC,CAACF,KAAT;AAAA,WAH2D,EAI/DpD,IAJ+D,CAI1D,IAJ0D,CAAlD,CAFM;AAOrBC,UAAAA,UAAU,EAAE,CAAC,WAAD;AAPS,SAAhB,CAAN;AASA;AACD;;;;yGAED;AAAA;AAAA;AAAA;AAAA;AAAA,kDACQ,KAAK0C,MAAL,CAAY,OAAZ,EAAqB,gBAArB,EAAuCC,OAAvC,CAA+C,EAA/C,CADR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wGAIA,kBACCtD,SADD,EAECL,SAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAIOsE,gBAAAA,YAJP,GAKE,KAAK9D,2BAAL,CAAiCH,SAAjC,EAA4CI,uBAA5C,CACCT,SADD,CALF;AAAA;AAAA,uBASyB,KAAKE,EAAL,CAAQqE,MAAR,CAAe;AACtCC,kBAAAA,IAAI,EAAE,QADgC;AAEtCC,kBAAAA,KAAK,EAAE,iBAF+B;AAGtCC,kBAAAA,UAAU,EAAE,IAH0B;AAItClF,kBAAAA,OAAO,EAAE;AACRmF,oBAAAA,OAAO,EAAEL;AADD;AAJ6B,iBAAf,CATzB;;AAAA;AASOvE,gBAAAA,SATP;AAAA,kDAkBQA,SAlBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;4GAqBA,kBAA+BM,SAA/B;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,yCAC8B,KAAKG,2BAAL,CAAiCH,SAAjC,CAD9B,EACSuE,gBADT,0BACSA,gBADT;AAAA;AAAA,uBAGyB,KAAK1E,EAAL,CAAQqE,MAAR,CAAe;AACtCC,kBAAAA,IAAI,EAAE,QADgC;AAEtCC,kBAAAA,KAAK,EAAE,2BAF+B;AAGtCC,kBAAAA,UAAU,EAAE,IAH0B;AAItClF,kBAAAA,OAAO,EAAE;AACRmF,oBAAAA,OAAO,EAAEC;AADD;AAJ6B,iBAAf,CAHzB;;AAAA;AAGO5E,gBAAAA,SAHP;AAAA,kDAYQA,SAZR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAeA,qCAAoCK,SAApC,EAAgE;AAC/D,UAAMuE,gBAAgC,GAAG,CACxC;AACCH,QAAAA,KAAK,EAAE,OADR;AAECN,QAAAA,KAAK,EAAE/E;AAFR,OADwC,CAAzC;AAOA,UAAMqB,uBAAuD,GAAG;AAC/DwC,QAAAA,KAAK,EAAE,CACN;AACCwB,UAAAA,KAAK,EAAE,WADR;AAECN,UAAAA,KAAK,EAAE;AAFR,SADM,EAKN;AACCM,UAAAA,KAAK,EAAE,UADR;AAECN,UAAAA,KAAK,EAAE;AAFR,SALM;AADwD,OAAhE;AAaA9D,MAAAA,SAAS,CAACwE,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,gBAAMlF,SAAS,4BAAGkF,QAAQ,CAAC5D,cAAZ,yEAA8B6D,uCAA7C;;AAEA,gBAAI,CAACP,gBAAgB,CAACX,IAAjB,CAAsB,UAACmB,CAAD;AAAA,qBAAOA,CAAC,CAACjB,KAAF,KAAYnE,SAAnB;AAAA,aAAtB,CAAL,EAA0D;AACzD4E,cAAAA,gBAAgB,CAACS,IAAjB,CAAsB;AACrBZ,gBAAAA,KAAK,EAAEa,4BAAUC,QAAV,CAAmBvF,SAAnB,CADc;AAErBmE,gBAAAA,KAAK,EAAEnE;AAFc,eAAtB;AAIA;;AAED,gBAAI,CAACS,uBAAuB,CAACT,SAAD,CAA5B,EAAyC;AACxCS,cAAAA,uBAAuB,CAACT,SAAD,CAAvB,GAAqC,EAArC;AACA;;AAEDS,YAAAA,uBAAuB,CAACT,SAAD,CAAvB,CAAmCqF,IAAnC,CAAwC;AACvClB,cAAAA,KAAK,EAAEe,QAAQ,CAACnB,uBADuB;AAEvCU,cAAAA,KAAK,EAAES,QAAQ,CAACnB;AAFuB,aAAxC;AAlB8B;;AAI/B,8DAAwC;AAAA;AAkBvC;AAtB8B;AAAA;AAAA;AAAA;AAAA;AAuB/B,OAvBD;AAyBA,aAAO;AAAEtD,QAAAA,uBAAuB,EAAvBA,uBAAF;AAA2BmE,QAAAA,gBAAgB,EAAhBA;AAA3B,OAAP;AACA;;;EAlTwCY,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'\nconst CORE_EVENT_NAMESPACE = 'mercury'\n\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} = normalizedOptions\n\n\t\t\tthis.ui.startLoading('Loading event contracts...')\n\n\t\t\tconst contracts = await this.fetchEventContracts(namespace)\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 isCoreEvent = namespace === CORE_EVENT_NAMESPACE\n\t\t\tif (isCoreEvent) {\n\t\t\t\tnamespace = undefined\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\tthis.assertIsValidChoice(\n\t\t\t\teventChoicesByNamespace,\n\t\t\t\tnamespace ?? 'mercury',\n\t\t\t\teventName,\n\t\t\t\tfqen\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 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: !isCoreEvent ? namespace : undefined,\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\tresponse.files = await this.writeListener({\n\t\t\t\tschemaTypesLookupDir,\n\t\t\t\tresolvedDestination,\n\t\t\t\tversion: resolvedVersion,\n\t\t\t\teventName,\n\t\t\t\tnamespace,\n\t\t\t\temitPayloadSchemaTemplateItem,\n\t\t\t\tresponsePayloadSchemaTemplateItem,\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 syncResults = await this.syncEvents(options)\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 fetchEventContracts(namespace?: string) {\n\t\tconst eventStore = this.Store('event')\n\t\tconst skill = await this.Store('skill').loadCurrentSkill()\n\n\t\tconst namespacesForFetch =\n\t\t\tnamespace &&\n\t\t\tnamespace !== SKILL_EVENT_NAMESPACE &&\n\t\t\tnamespace !== CORE_EVENT_NAMESPACE\n\t\t\t\t? [namespace]\n\t\t\t\t: undefined\n\n\t\tconst { contracts } = skill.slug\n\t\t\t? await eventStore.fetchEventContracts({\n\t\t\t\t\tlocalNamespace: skill.slug,\n\t\t\t\t\tnamespaces: namespacesForFetch,\n\t\t\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t\t })\n\t\t\t: await eventStore.fetchEventContracts({\n\t\t\t\t\tnamespaces: namespacesForFetch,\n\t\t\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t\t })\n\n\t\treturn contracts\n\t}\n\n\tprivate async syncEvents(\n\t\toptions: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions\n\t) {\n\t\tconst syncOptions = normalizeSchemaValues(syncEventActionSchema, options)\n\n\t\tconst syncResults = await this.Action('event', 'sync').execute(syncOptions)\n\t\treturn syncResults\n\t}\n\n\tprivate async writeListener(options: {\n\t\tresolvedDestination: string\n\t\tschemaTypesLookupDir: string\n\t\tnamespace?: string | undefined\n\t\teventName: string\n\t\temitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\tversion: string\n\t\tresponsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t}) {\n\t\tconst {\n\t\t\tresolvedDestination,\n\t\t\tschemaTypesLookupDir,\n\t\t\tnamespace,\n\t\t\teventName,\n\t\t\tversion,\n\t\t} = options\n\n\t\tconst resolvedSchemaTypesLookupDir = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\tschemaTypesLookupDir\n\t\t)\n\t\tconst writer = this.Writer('event')\n\t\tconst files = await writer.writeListener(resolvedDestination, {\n\t\t\t...options,\n\t\t\tfullyQualifiedEventName: eventNameUtil.join({\n\t\t\t\teventName,\n\t\t\t\teventNamespace: namespace,\n\t\t\t\tversion,\n\t\t\t}),\n\t\t\tschemaTypesLookupDir: resolvedSchemaTypesLookupDir,\n\t\t})\n\n\t\treturn files\n\t}\n\n\tprivate assertIsValidChoice(\n\t\teventChoicesByNamespace: Record<string, SelectChoice[]>,\n\t\tnamespace: string,\n\t\teventName: string | undefined,\n\t\tfqen: string\n\t) {\n\t\tconst isValidEvent = !!eventChoicesByNamespace[namespace].find(\n\t\t\t(e) => e.value === eventName || e.value === fqen\n\t\t)\n\n\t\tif (!isValidEvent) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\tfriendlyMessage: `${eventName} is not a valid event . Try: \\n\\n${eventChoicesByNamespace[\n\t\t\t\t\tnamespace\n\t\t\t\t]\n\t\t\t\t\t.map((i) => i.value)\n\t\t\t\t\t.join('\\n')}`,\n\t\t\t\tparameters: ['eventName'],\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"}
|
|
@@ -12,10 +12,8 @@ export default class EventWriter extends AbstractWriter {
|
|
|
12
12
|
private writeContract;
|
|
13
13
|
hasCombinedContractBeenWritten(cwd: string): boolean;
|
|
14
14
|
private writeCombinedEvents;
|
|
15
|
-
writeListener(destinationDir: string, options: Omit<EventListenerOptions, '
|
|
16
|
-
version: string;
|
|
15
|
+
writeListener(destinationDir: string, options: Omit<EventListenerOptions, 'schemaTypesFile'> & {
|
|
17
16
|
schemaTypesLookupDir: string;
|
|
18
|
-
contractDestinationDir: string;
|
|
19
17
|
}): Promise<import("../../../writers/AbstractWriter").WriteResults>;
|
|
20
18
|
writeListenerMap(destinationDir: string, options: {
|
|
21
19
|
listeners: ListenerTemplateItem[];
|