@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.
Files changed (39) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/build/__tests__/behavioral/ListeningToCoreEvents.test.d.ts +6 -0
  3. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js +128 -0
  4. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -0
  5. package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.d.ts +10 -0
  6. package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.js +298 -0
  7. package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -0
  8. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js +1 -1
  9. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
  10. package/build/features/event/actions/ListenAction.d.ts +4 -0
  11. package/build/features/event/actions/ListenAction.js +228 -127
  12. package/build/features/event/actions/ListenAction.js.map +1 -1
  13. package/build/features/event/writers/EventWriter.d.ts +1 -3
  14. package/build/features/event/writers/EventWriter.js +20 -14
  15. package/build/features/event/writers/EventWriter.js.map +1 -1
  16. package/build/features/sandbox/SandboxFeature.js +1 -1
  17. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  18. package/build/features/sandbox/actions/SetupAction.js +24 -12
  19. package/build/features/sandbox/actions/SetupAction.js.map +1 -1
  20. package/build/features/skill/SkillFeature.js +2 -1
  21. package/build/features/skill/SkillFeature.js.map +1 -1
  22. package/build/features/view/actions/CreateAction.js +1 -1
  23. package/build/features/view/actions/CreateAction.js.map +1 -1
  24. package/build/interfaces/SpyInterface.js +1 -1
  25. package/build/interfaces/SpyInterface.js.map +1 -1
  26. package/build/templateItemBuilders/EventTemplateItemBuilder.js +2 -1
  27. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  28. package/package.json +28 -28
  29. package/src/__tests__/behavioral/ListeningToCoreEvents.test.ts +26 -0
  30. package/src/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.ts +74 -0
  31. package/src/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.ts +1 -1
  32. package/src/features/event/actions/ListenAction.ts +111 -58
  33. package/src/features/event/writers/EventWriter.ts +21 -35
  34. package/src/features/sandbox/SandboxFeature.ts +1 -1
  35. package/src/features/sandbox/actions/SetupAction.ts +6 -0
  36. package/src/features/skill/SkillFeature.ts +1 -1
  37. package/src/features/view/actions/CreateAction.ts +1 -0
  38. package/src/interfaces/SpyInterface.ts +3 -1
  39. 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 _this2 = this;
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, contractDestinationDir = normalizedOptions.contractDestinationDir;
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
- eventStore = this.Store('event');
99
- _context.next = 8;
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 16:
126
- _context.next = 18;
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 = 26;
105
+ _context.next = 13;
144
106
  break;
145
107
  }
146
108
 
147
- _context.next = 25;
109
+ _context.next = 12;
148
110
  return this.collectNamespace(contracts);
149
111
 
150
- case 25:
112
+ case 12:
151
113
  namespace = _context.sent;
152
114
 
153
- case 26:
115
+ case 13:
154
116
  _this$mapContractsToS = this.mapContractsToSelectChoices(contracts), eventChoicesByNamespace = _this$mapContractsToS.eventChoicesByNamespace;
155
117
 
156
118
  if (eventChoicesByNamespace[namespace]) {
157
- _context.next = 29;
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 29:
129
+ case 16:
168
130
  if (eventName) {
169
- _context.next = 33;
131
+ _context.next = 20;
170
132
  break;
171
133
  }
172
134
 
173
- _context.next = 32;
135
+ _context.next = 19;
174
136
  return this.collectEvent(contracts, namespace);
175
137
 
176
- case 32:
138
+ case 19:
177
139
  eventName = _context.sent;
178
140
 
179
- case 33:
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
- isValidEvent = !!eventChoicesByNamespace[namespace].find(function (e) {
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 = 41;
156
+ _context.next = 28;
206
157
  return this.resolveVersion(version, resolvedDestination);
207
158
 
208
- case 41:
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
- writer = this.Writer('event');
225
- _context.next = 48;
226
- return writer.writeListener(resolvedDestination, _objectSpread(_objectSpread({}, normalizedOptions), {}, {
174
+ _context.next = 33;
175
+ return this.writeListener({
176
+ schemaTypesLookupDir: schemaTypesLookupDir,
177
+ resolvedDestination: resolvedDestination,
227
178
  version: resolvedVersion,
228
179
  eventName: eventName,
229
- eventNamespace: namespace,
230
- fullyQualifiedEventName: _spruceEventUtils.eventNameUtil.join({
231
- eventName: eventName,
232
- eventNamespace: namespace,
233
- version: resolvedVersion
234
- }),
180
+ namespace: namespace,
235
181
  emitPayloadSchemaTemplateItem: emitPayloadSchemaTemplateItem,
236
- contractDestinationDir: contractDestinationDir,
237
- responsePayloadSchemaTemplateItem: responsePayloadSchemaTemplateItem,
238
- schemaTypesLookupDir: resolvedSchemaTypesLookupDir
239
- }));
182
+ responsePayloadSchemaTemplateItem: responsePayloadSchemaTemplateItem
183
+ });
240
184
 
241
- case 48:
185
+ case 33:
242
186
  response.files = _context.sent;
243
- _context.next = 51;
187
+ _context.next = 36;
244
188
  return this.syncListeners();
245
189
 
246
- case 51:
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 = 59;
195
+ _context.next = 43;
252
196
  break;
253
197
  }
254
198
 
255
- syncOptions = (0, _schema.normalizeSchemaValues)(_syncEventOptions["default"], options);
256
- _context.next = 57;
257
- return this.Action('event', 'sync').execute(syncOptions);
199
+ _context.next = 41;
200
+ return this.syncEvents(options);
258
201
 
259
- case 57:
202
+ case 41:
260
203
  _syncResults = _context.sent;
261
204
  response = _action["default"].mergeActionResults(_syncResults, response);
262
205
 
263
- case 59:
206
+ case 43:
264
207
  return _context.abrupt("return", response);
265
208
 
266
- case 62:
267
- _context.prev = 62;
268
- _context.t1 = _context["catch"](1);
209
+ case 46:
210
+ _context.prev = 46;
211
+ _context.t0 = _context["catch"](1);
269
212
  return _context.abrupt("return", {
270
- errors: [_context.t1]
213
+ errors: [_context.t0]
271
214
  });
272
215
 
273
- case 65:
216
+ case 49:
274
217
  case "end":
275
218
  return _context.stop();
276
219
  }
277
220
  }
278
- }, _callee, this, [[1, 62]]);
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: "syncListeners",
231
+ key: "fetchEventContracts",
289
232
  value: function () {
290
- var _syncListeners = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
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
- return _context2.abrupt("return", this.Action('event', 'sync.listeners').execute({}));
242
+ eventStore = this.Store('event');
243
+ _context2.next = 3;
244
+ return this.Store('skill').loadCurrentSkill();
296
245
 
297
- case 1:
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 _callee3(contracts, namespace) {
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 _callee3$(_context3) {
417
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
317
418
  while (1) {
318
- switch (_context3.prev = _context3.next) {
419
+ switch (_context6.prev = _context6.next) {
319
420
  case 0:
320
421
  eventChoices = this.mapContractsToSelectChoices(contracts).eventChoicesByNamespace[namespace];
321
- _context3.next = 3;
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 = _context3.sent;
333
- return _context3.abrupt("return", eventName);
433
+ eventName = _context6.sent;
434
+ return _context6.abrupt("return", eventName);
334
435
 
335
436
  case 5:
336
437
  case "end":
337
- return _context3.stop();
438
+ return _context6.stop();
338
439
  }
339
440
  }
340
- }, _callee3, this);
441
+ }, _callee6, this);
341
442
  }));
342
443
 
343
- function collectEvent(_x2, _x3) {
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 _callee4(contracts) {
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 _callee4$(_context4) {
456
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
356
457
  while (1) {
357
- switch (_context4.prev = _context4.next) {
458
+ switch (_context7.prev = _context7.next) {
358
459
  case 0:
359
460
  _this$mapContractsToS2 = this.mapContractsToSelectChoices(contracts), namespaceChoices = _this$mapContractsToS2.namespaceChoices;
360
- _context4.next = 3;
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 = _context4.sent;
372
- return _context4.abrupt("return", namespace);
472
+ namespace = _context7.sent;
473
+ return _context7.abrupt("return", namespace);
373
474
 
374
475
  case 5:
375
476
  case "end":
376
- return _context4.stop();
477
+ return _context7.stop();
377
478
  }
378
479
  }
379
- }, _callee4, this);
480
+ }, _callee7, this);
380
481
  }));
381
482
 
382
- function collectNamespace(_x4) {
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":"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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'\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, 'nameConst' | 'schemaTypesFile' | 'contractsFile'> & {
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[];