@sprucelabs/spruce-cli 15.4.3 → 15.4.6

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 CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [15.4.6](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v15.4.5...v15.4.6) (2022-05-07)
7
+
8
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
9
+
10
+
11
+
12
+
13
+
14
+ ## [15.4.5](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v15.4.4...v15.4.5) (2022-05-05)
15
+
16
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
17
+
18
+
19
+
20
+
21
+
22
+ ## [15.4.4](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v15.4.3...v15.4.4) (2022-05-04)
23
+
24
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
25
+
26
+
27
+
28
+
29
+
6
30
  ## [15.4.3](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v15.4.2...v15.4.3) (2022-05-04)
7
31
 
8
32
  **Note:** Version bump only for package @sprucelabs/spruce-cli
@@ -8,13 +8,15 @@ export default class CreatingAListenerTest extends AbstractEventTest {
8
8
  protected static generatesMapFile(): Promise<void>;
9
9
  protected static createsValidListener(): Promise<void>;
10
10
  protected static creatingANewListenerAsksWhichEventToListenTo(): Promise<void>;
11
- private static executeAndWaitForInput;
12
11
  protected static loadsContractsFilteringByDependencies(): Promise<void>;
13
- private static addDependency;
12
+ private static fakeGetEventContracts;
14
13
  protected static generatesTypedListenerWithoutPayloads(): Promise<void>;
15
14
  protected static generatesTypedListenerWithEmitPayload(): Promise<void>;
16
15
  protected static emittingEventTriggersListenerAndCrashesWithListenerNotImplemented(): Promise<void>;
17
16
  protected static listeningToAnEventWithNoEmitTargetOrPayloadGeneratesValidListener(): Promise<void>;
17
+ private static installAddDependencyExecuteAndWaitForInput;
18
+ private static executeAndWaitForInput;
19
+ private static addDependency;
18
20
  private static installEventsAndCreateListener;
19
21
  private static setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener;
20
22
  }
@@ -45,6 +45,8 @@ var _test = require("@sprucelabs/test");
45
45
 
46
46
  var _testUtils = require("@sprucelabs/test-utils");
47
47
 
48
+ var _ListenAction = require("../../../features/event/actions/ListenAction");
49
+
48
50
  var _AbstractEventTest2 = _interopRequireDefault(require("../../../tests/AbstractEventTest"));
49
51
 
50
52
  var _test2 = _interopRequireDefault(require("../../../tests/utilities/test.utility"));
@@ -328,18 +330,32 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
328
330
  return creatingANewListenerAsksWhichEventToListenTo;
329
331
  }()
330
332
  }, {
331
- key: "executeAndWaitForInput",
333
+ key: "loadsContractsFilteringByDependencies",
332
334
  value: function () {
333
- var _executeAndWaitForInput = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
335
+ var _loadsContractsFilteringByDependencies = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
336
+ var passedTarget, namespace;
334
337
  return _regenerator["default"].wrap(function _callee7$(_context7) {
335
338
  while (1) {
336
339
  switch (_context7.prev = _context7.next) {
337
340
  case 0:
338
- void this.listen.execute({});
339
- _context7.next = 3;
340
- return this.waitForInput();
341
+ _context7.next = 2;
342
+ return this.fakeGetEventContracts(function (target) {
343
+ passedTarget = target;
344
+ });
341
345
 
342
- case 3:
346
+ case 2:
347
+ namespace = 'waka';
348
+ _context7.next = 5;
349
+ return this.installAddDependencyExecuteAndWaitForInput(namespace);
350
+
351
+ case 5:
352
+ _test.assert.isEqualDeep(passedTarget, {
353
+ namespaces: [namespace, _ListenAction.CORE_EVENT_NAMESPACE]
354
+ });
355
+
356
+ this.ui.reset();
357
+
358
+ case 7:
343
359
  case "end":
344
360
  return _context7.stop();
345
361
  }
@@ -347,72 +363,43 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
347
363
  }, _callee7, this);
348
364
  }));
349
365
 
350
- function executeAndWaitForInput() {
351
- return _executeAndWaitForInput.apply(this, arguments);
366
+ function loadsContractsFilteringByDependencies() {
367
+ return _loadsContractsFilteringByDependencies.apply(this, arguments);
352
368
  }
353
369
 
354
- return executeAndWaitForInput;
370
+ return loadsContractsFilteringByDependencies;
355
371
  }()
356
372
  }, {
357
- key: "loadsContractsFilteringByDependencies",
373
+ key: "fakeGetEventContracts",
358
374
  value: function () {
359
- var _loadsContractsFilteringByDependencies = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
360
- var passedTarget, namespace;
375
+ var _fakeGetEventContracts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(cb, results) {
361
376
  return _regenerator["default"].wrap(function _callee8$(_context8) {
362
377
  while (1) {
363
378
  switch (_context8.prev = _context8.next) {
364
379
  case 0:
365
380
  _context8.next = 2;
366
- return this.installEventFeature('events');
367
-
368
- case 2:
369
- _mercuryClient.MercuryClientFactory.setIsTestMode(true);
370
-
371
- _context8.next = 5;
372
381
  return _spruceTestFixtures.eventFaker.on('get-event-contracts::v2020_12_25', function (_ref) {
373
382
  var target = _ref.target;
374
- passedTarget = target;
383
+ cb === null || cb === void 0 ? void 0 : cb(target);
375
384
  return {
376
- contracts: (0, _toConsumableArray2["default"])(_mercuryCoreEvents.coreEventContracts)
385
+ contracts: results !== null && results !== void 0 ? results : (0, _toConsumableArray2["default"])(_mercuryCoreEvents.coreEventContracts)
377
386
  };
378
387
  });
379
388
 
380
- case 5:
381
- namespace = 'waka';
382
- this.addDependency(namespace);
383
- _context8.next = 9;
384
- return this.executeAndWaitForInput();
385
-
386
- case 9:
387
- _test.assert.isEqualDeep(passedTarget, {
388
- namespaces: [namespace]
389
- });
390
-
391
- this.ui.reset();
392
-
393
- case 11:
389
+ case 2:
394
390
  case "end":
395
391
  return _context8.stop();
396
392
  }
397
393
  }
398
- }, _callee8, this);
394
+ }, _callee8);
399
395
  }));
400
396
 
401
- function loadsContractsFilteringByDependencies() {
402
- return _loadsContractsFilteringByDependencies.apply(this, arguments);
397
+ function fakeGetEventContracts(_x, _x2) {
398
+ return _fakeGetEventContracts.apply(this, arguments);
403
399
  }
404
400
 
405
- return loadsContractsFilteringByDependencies;
401
+ return fakeGetEventContracts;
406
402
  }()
407
- }, {
408
- key: "addDependency",
409
- value: function addDependency(namespace) {
410
- var dependencies = this.Service('dependency');
411
- dependencies.add({
412
- id: namespace,
413
- namespace: 'waka'
414
- });
415
- }
416
403
  }, {
417
404
  key: "generatesTypedListenerWithoutPayloads",
418
405
  value: function () {
@@ -692,10 +679,9 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
692
679
  return listeningToAnEventWithNoEmitTargetOrPayloadGeneratesValidListener;
693
680
  }()
694
681
  }, {
695
- key: "installEventsAndCreateListener",
682
+ key: "installAddDependencyExecuteAndWaitForInput",
696
683
  value: function () {
697
- var _installEventsAndCreateListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13() {
698
- var cli, version, results;
684
+ var _installAddDependencyExecuteAndWaitForInput = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13(namespace) {
699
685
  return _regenerator["default"].wrap(function _callee13$(_context13) {
700
686
  while (1) {
701
687
  switch (_context13.prev = _context13.next) {
@@ -704,9 +690,80 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
704
690
  return this.installEventFeature('events');
705
691
 
706
692
  case 2:
707
- cli = _context13.sent;
708
- version = 'v2020_01_01';
693
+ _mercuryClient.MercuryClientFactory.setIsTestMode(true);
694
+
695
+ this.addDependency(namespace);
709
696
  _context13.next = 6;
697
+ return this.executeAndWaitForInput();
698
+
699
+ case 6:
700
+ return _context13.abrupt("return", this.ui.getLastInvocation());
701
+
702
+ case 7:
703
+ case "end":
704
+ return _context13.stop();
705
+ }
706
+ }
707
+ }, _callee13, this);
708
+ }));
709
+
710
+ function installAddDependencyExecuteAndWaitForInput(_x3) {
711
+ return _installAddDependencyExecuteAndWaitForInput.apply(this, arguments);
712
+ }
713
+
714
+ return installAddDependencyExecuteAndWaitForInput;
715
+ }()
716
+ }, {
717
+ key: "executeAndWaitForInput",
718
+ value: function () {
719
+ var _executeAndWaitForInput = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14() {
720
+ return _regenerator["default"].wrap(function _callee14$(_context14) {
721
+ while (1) {
722
+ switch (_context14.prev = _context14.next) {
723
+ case 0:
724
+ void this.listen.execute({});
725
+ _context14.next = 3;
726
+ return this.waitForInput();
727
+
728
+ case 3:
729
+ case "end":
730
+ return _context14.stop();
731
+ }
732
+ }
733
+ }, _callee14, this);
734
+ }));
735
+
736
+ function executeAndWaitForInput() {
737
+ return _executeAndWaitForInput.apply(this, arguments);
738
+ }
739
+
740
+ return executeAndWaitForInput;
741
+ }()
742
+ }, {
743
+ key: "addDependency",
744
+ value: function addDependency(namespace) {
745
+ var dependencies = this.Service('dependency');
746
+ dependencies.add({
747
+ id: namespace,
748
+ namespace: 'waka'
749
+ });
750
+ }
751
+ }, {
752
+ key: "installEventsAndCreateListener",
753
+ value: function () {
754
+ var _installEventsAndCreateListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15() {
755
+ var cli, version, results;
756
+ return _regenerator["default"].wrap(function _callee15$(_context15) {
757
+ while (1) {
758
+ switch (_context15.prev = _context15.next) {
759
+ case 0:
760
+ _context15.next = 2;
761
+ return this.installEventFeature('events');
762
+
763
+ case 2:
764
+ cli = _context15.sent;
765
+ version = 'v2020_01_01';
766
+ _context15.next = 6;
710
767
  return this.listen.execute({
711
768
  namespace: 'skill',
712
769
  eventName: 'will-boot',
@@ -714,11 +771,11 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
714
771
  });
715
772
 
716
773
  case 6:
717
- results = _context13.sent;
774
+ results = _context15.sent;
718
775
 
719
776
  _test.assert.isFalsy(results.errors);
720
777
 
721
- return _context13.abrupt("return", {
778
+ return _context15.abrupt("return", {
722
779
  version: version,
723
780
  results: results,
724
781
  cli: cli
@@ -726,10 +783,10 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
726
783
 
727
784
  case 9:
728
785
  case "end":
729
- return _context13.stop();
786
+ return _context15.stop();
730
787
  }
731
788
  }
732
- }, _callee13, this);
789
+ }, _callee15, this);
733
790
  }));
734
791
 
735
792
  function installEventsAndCreateListener() {
@@ -741,28 +798,28 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
741
798
  }, {
742
799
  key: "setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener",
743
800
  value: function () {
744
- var _setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14(eventSignature) {
801
+ var _setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee16(eventSignature) {
745
802
  var expectedVersion, eventContract, _yield$this$seedDummy, skillFixture, skill2, currentSkill, cli, org, results, listener, contents;
746
803
 
747
- return _regenerator["default"].wrap(function _callee14$(_context14) {
804
+ return _regenerator["default"].wrap(function _callee16$(_context16) {
748
805
  while (1) {
749
- switch (_context14.prev = _context14.next) {
806
+ switch (_context16.prev = _context16.next) {
750
807
  case 0:
751
808
  expectedVersion = this.expectedVersion;
752
809
  eventContract = {
753
810
  eventSignatures: (0, _defineProperty2["default"])({}, "my-new-event::".concat(expectedVersion), eventSignature)
754
811
  };
755
- _context14.next = 4;
812
+ _context16.next = 4;
756
813
  return this.seedDummySkillRegisterCurrentSkillAndInstallToOrg();
757
814
 
758
815
  case 4:
759
- _yield$this$seedDummy = _context14.sent;
816
+ _yield$this$seedDummy = _context16.sent;
760
817
  skillFixture = _yield$this$seedDummy.skillFixture;
761
818
  skill2 = _yield$this$seedDummy.skill2;
762
819
  currentSkill = _yield$this$seedDummy.currentSkill;
763
820
  cli = _yield$this$seedDummy.cli;
764
821
  org = _yield$this$seedDummy.org;
765
- _context14.next = 12;
822
+ _context16.next = 12;
766
823
  return skillFixture.registerEventContract(skill2, eventContract);
767
824
 
768
825
  case 12:
@@ -770,7 +827,7 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
770
827
  id: skill2.id,
771
828
  namespace: skill2.slug
772
829
  });
773
- _context14.next = 15;
830
+ _context16.next = 15;
774
831
  return this.listen.execute({
775
832
  namespace: skill2.slug,
776
833
  eventName: "my-new-event",
@@ -778,17 +835,17 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
778
835
  });
779
836
 
780
837
  case 15:
781
- results = _context14.sent;
838
+ results = _context16.sent;
782
839
 
783
840
  _test.assert.isFalsy(results.errors);
784
841
 
785
842
  listener = _test2["default"].assertFileByNameInGeneratedFiles("my-new-event.".concat(expectedVersion, ".listener.ts"), results.files);
786
- _context14.next = 20;
843
+ _context16.next = 20;
787
844
  return this.Service('typeChecker').check(listener);
788
845
 
789
846
  case 20:
790
847
  contents = _spruceSkillUtils.diskUtil.readFile(listener);
791
- return _context14.abrupt("return", {
848
+ return _context16.abrupt("return", {
792
849
  contents: contents,
793
850
  skill2: skill2,
794
851
  listenerPath: listener,
@@ -800,13 +857,13 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
800
857
 
801
858
  case 22:
802
859
  case "end":
803
- return _context14.stop();
860
+ return _context16.stop();
804
861
  }
805
862
  }
806
- }, _callee14, this);
863
+ }, _callee16, this);
807
864
  }));
808
865
 
809
- function setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(_x) {
866
+ function setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(_x4) {
810
867
  return _setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener.apply(this, arguments);
811
868
  }
812
869
 
@@ -1 +1 @@
1
- {"version":3,"file":"CreatingAListener.test.js","names":["CreatingAListenerTest","listen","Action","installEventFeature","execute","namespace","results","assert","isTruthy","errors","err","errorAssert","assertError","namespaces","eventName","parameters","installEventsAndCreateListener","match","testUtil","assertFileByNameInGeneratedFiles","files","Service","check","version","cli","doesInclude","checkHealth","health","isFalsy","event","skill","isUndefined","listeners","eventNamespace","executeAndWaitForInput","lastInvocation","ui","getLastInvocation","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","waitForInput","reset","MercuryClientFactory","setIsTestMode","eventFaker","on","target","passedTarget","contracts","coreEventContracts","addDependency","isEqualDeep","dependencies","add","id","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventAssertUtil","responderRef","responses","listenerPath","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","listener","diskUtil","readFile","AbstractEventTest","versionUtil","generateVersion","constValue"],"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { eventFaker } from '@sprucelabs/spruce-test-fixtures'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport ListenAction from '../../../features/event/actions/ListenAction'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\tprivate static listen: ListenAction\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.listen = this.Action('event', 'listen')\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssert.assertError(err, 'INVALID_NAMESPACES', {\n\t\t\tnamespaces: ['taco-bell'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'heartwood',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssert.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesMapFile() {\n\t\tconst { results } = await this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`listeners.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(match)\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst { version, results, cli } =\n\t\t\tawait this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isFalsy(health?.event?.errors)\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\n\t\tawait this.executeAndWaitForInput()\n\n\t\tlet lastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\tprivate static async executeAndWaitForInput() {\n\t\tvoid this.listen.execute({})\n\t\tawait this.waitForInput()\n\t}\n\n\t@test()\n\tprotected static async loadsContractsFilteringByDependencies() {\n\t\tawait this.installEventFeature('events')\n\t\tMercuryClientFactory.setIsTestMode(true)\n\n\t\tlet passedTarget: any\n\t\tawait eventFaker.on('get-event-contracts::v2020_12_25', ({ target }) => {\n\t\t\tpassedTarget = target\n\t\t\treturn {\n\t\t\t\tcontracts: [...(coreEventContracts as any)],\n\t\t\t}\n\t\t})\n\n\t\tconst namespace = 'waka'\n\t\tthis.addDependency(namespace)\n\n\t\tawait this.executeAndWaitForInput()\n\n\t\tassert.isEqualDeep(passedTarget, {\n\t\t\tnamespaces: [namespace],\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\tprivate static addDependency(namespace: string) {\n\t\tconst dependencies = this.Service('dependency')\n\t\tdependencies.add({\n\t\t\tid: namespace,\n\t\t\tnamespace: 'waka',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async listeningToAnEventWithNoEmitTargetOrPayloadGeneratesValidListener() {\n\t\tconst { listenerPath } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t\tresponsePayloadSchema: {\n\t\t\t\t\t\tid: 'test',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\n\t\tawait this.Service('typeChecker').check(listenerPath)\n\t}\n\n\tprivate static async installEventsAndCreateListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t\treturn { version, results, cli }\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreatingAListener.test.js","names":["CreatingAListenerTest","listen","Action","installEventFeature","execute","namespace","results","assert","isTruthy","errors","err","errorAssert","assertError","namespaces","eventName","parameters","installEventsAndCreateListener","match","testUtil","assertFileByNameInGeneratedFiles","files","Service","check","version","cli","doesInclude","checkHealth","health","isFalsy","event","skill","isUndefined","listeners","eventNamespace","executeAndWaitForInput","lastInvocation","ui","getLastInvocation","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","waitForInput","reset","fakeGetEventContracts","target","passedTarget","installAddDependencyExecuteAndWaitForInput","isEqualDeep","CORE_EVENT_NAMESPACE","cb","eventFaker","on","contracts","coreEventContracts","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventAssertUtil","responderRef","responses","listenerPath","MercuryClientFactory","setIsTestMode","addDependency","dependencies","add","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","listener","diskUtil","readFile","AbstractEventTest","versionUtil","generateVersion","constValue"],"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport { EventSignature, SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { eventFaker } from '@sprucelabs/spruce-test-fixtures'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport ListenAction, {\n\tCORE_EVENT_NAMESPACE,\n} from '../../../features/event/actions/ListenAction'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\tprivate static listen: ListenAction\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.listen = this.Action('event', 'listen')\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssert.assertError(err, 'INVALID_NAMESPACES', {\n\t\t\tnamespaces: ['taco-bell'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'heartwood',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssert.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesMapFile() {\n\t\tconst { results } = await this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`listeners.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(match)\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst { version, results, cli } =\n\t\t\tawait this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isFalsy(health?.event?.errors)\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\t\tawait this.executeAndWaitForInput()\n\n\t\tlet lastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async loadsContractsFilteringByDependencies() {\n\t\tlet passedTarget: any\n\t\tawait this.fakeGetEventContracts((target) => {\n\t\t\tpassedTarget = target\n\t\t})\n\n\t\tconst namespace = 'waka'\n\t\tawait this.installAddDependencyExecuteAndWaitForInput(namespace)\n\n\t\tassert.isEqualDeep(passedTarget, {\n\t\t\tnamespaces: [namespace, CORE_EVENT_NAMESPACE],\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\tprivate static async fakeGetEventContracts(\n\t\tcb?: (\n\t\t\ttarget?: SpruceSchemas.Mercury.v2020_12_25.GetEventContractsTarget | null\n\t\t) => void,\n\t\tresults?: SpruceSchemas.Mercury.v2020_12_25.GetEventContractsResponsePayload['contracts']\n\t) {\n\t\tawait eventFaker.on('get-event-contracts::v2020_12_25', ({ target }) => {\n\t\t\tcb?.(target)\n\t\t\treturn {\n\t\t\t\tcontracts: results ?? [...(coreEventContracts as any)],\n\t\t\t}\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async listeningToAnEventWithNoEmitTargetOrPayloadGeneratesValidListener() {\n\t\tconst { listenerPath } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t\tresponsePayloadSchema: {\n\t\t\t\t\t\tid: 'test',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\n\t\tawait this.Service('typeChecker').check(listenerPath)\n\t}\n\n\tprivate static async installAddDependencyExecuteAndWaitForInput(\n\t\tnamespace: string\n\t) {\n\t\tawait this.installEventFeature('events')\n\t\tMercuryClientFactory.setIsTestMode(true)\n\t\tthis.addDependency(namespace)\n\t\tawait this.executeAndWaitForInput()\n\t\treturn this.ui.getLastInvocation()\n\t}\n\n\tprivate static async executeAndWaitForInput() {\n\t\tvoid this.listen.execute({})\n\t\tawait this.waitForInput()\n\t}\n\n\tprivate static addDependency(namespace: string) {\n\t\tconst dependencies = this.Service('dependency')\n\t\tdependencies.add({\n\t\t\tid: namespace,\n\t\t\tnamespace: 'waka',\n\t\t})\n\t}\n\n\tprivate static async installEventsAndCreateListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t\treturn { version, results, cli }\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { SpruceSchemas } from "./../../../.spruce/schemas/schemas.types";
2
2
  import AbstractAction from '../../AbstractAction';
3
3
  import { FeatureActionResponse } from '../../features.types';
4
+ export declare const CORE_EVENT_NAMESPACE = "mercury";
4
5
  declare type OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptionsSchema;
5
6
  export default class ListenAction extends AbstractAction<OptionsSchema> {
6
7
  optionsSchema: OptionsSchema;
@@ -5,10 +5,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = void 0;
8
+ exports["default"] = exports.CORE_EVENT_NAMESPACE = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
12
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
15
 
14
16
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -56,7 +58,8 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
56
58
  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
59
 
58
60
  var SKILL_EVENT_NAMESPACE = 'skill';
59
- var CORE_EVENT_NAMESPACE = 'mercury';
61
+ var CORE_EVENT_NAMESPACE = _spruceSkillUtils.MERCURY_API_NAMESPACE;
62
+ exports.CORE_EVENT_NAMESPACE = CORE_EVENT_NAMESPACE;
60
63
 
61
64
  var ListenAction = /*#__PURE__*/function (_AbstractAction) {
62
65
  (0, _inherits2["default"])(ListenAction, _AbstractAction);
@@ -245,7 +248,7 @@ var ListenAction = /*#__PURE__*/function (_AbstractAction) {
245
248
 
246
249
  case 3:
247
250
  skill = _context2.sent;
248
- namespacesForFetch = namespace && namespace !== SKILL_EVENT_NAMESPACE && namespace !== CORE_EVENT_NAMESPACE ? [namespace] : this.getDependencyNamespaces();
251
+ namespacesForFetch = namespace && namespace !== SKILL_EVENT_NAMESPACE && namespace !== CORE_EVENT_NAMESPACE ? [namespace] : [].concat((0, _toConsumableArray2["default"])(this.getDependencyNamespaces()), ['mercury']);
249
252
  options = {
250
253
  didUpdateHandler: function didUpdateHandler(msg) {
251
254
  return _this2.ui.startLoading(msg);
@@ -1 +1 @@
1
- {"version":3,"file":"ListenAction.js","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","getDependencyNamespaces","didUpdateHandler","msg","slug","localNamespace","length","namespaces","Service","get","map","d","syncOptions","syncEventActionSchema","Action","execute","resolvedSchemaTypesLookupDir","writer","Writer","fullyQualifiedEventName","isValidEvent","find","e","value","i","eventChoices","prompt","type","label","isRequired","choices","namespaceChoices","forEach","contract","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","MERCURY_API_NAMESPACE","o","push","namesUtil","toPascal","AbstractAction"],"sources":["../../../../src/features/event/actions/ListenAction.ts"],"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'\nimport { FetchContractsOptions } from '../stores/EventStore'\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: this.getDependencyNamespaces()\n\n\t\tconst options: FetchContractsOptions = {\n\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t}\n\n\t\tif (skill.slug) {\n\t\t\toptions.localNamespace = skill.slug\n\t\t}\n\n\t\tif (namespacesForFetch.length > 0) {\n\t\t\toptions.namespaces = namespacesForFetch\n\t\t}\n\n\t\tconst { contracts } = await eventStore.fetchEventContracts(options)\n\n\t\treturn contracts\n\t}\n\n\tprivate getDependencyNamespaces() {\n\t\treturn this.Service('dependency')\n\t\t\t.get()\n\t\t\t.map((d) => d.namespace)\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAMA;;AAIA;;AAMA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;AAIA,IAAMA,qBAAqB,GAAG,OAA9B;AACA,IAAMC,oBAAoB,GAAG,SAA7B;;IAIqBC,Y;;;;;;;;;;;;;;;sGACkBC,8B;0GACX,+B;uGACH,CAAC,cAAD,EAAiB,iBAAjB,C;;;;;;;mGAExB,iBACCC,OADD;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAGOC,iBAHP,GAG2B,KAAKC,2BAAL,CAAiCF,OAAjC,CAH3B;gBAAA;gBAMMG,QANN,GAMwC,EANxC;gBASGC,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;gBAgBE,KAAKC,EAAL,CAAQC,YAAR,CAAqB,4BAArB;gBAhBF;gBAAA,OAkB0B,KAAKC,mBAAL,CAAyBJ,SAAzB,CAlB1B;;cAAA;gBAkBQK,SAlBR;gBAoBE,KAAKH,EAAL,CAAQI,WAAR;;gBApBF,IAsBON,SAtBP;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAuBqB,KAAKO,gBAAL,CAAsBF,SAAtB,CAvBrB;;cAAA;gBAuBGL,SAvBH;;cAAA;gBAAA,wBA2BG,KAAKQ,2BAAL,CAAiCH,SAAjC,CA3BH,EA0BUI,uBA1BV,yBA0BUA,uBA1BV;;gBAAA,IA6BOA,uBAAuB,CAACT,SAAD,CA7B9B;kBAAA;kBAAA;gBAAA;;gBAAA,MA8BS,IAAIU,mBAAJ,CAAgB;kBACrBC,IAAI,EAAE,oBADe;kBAErBC,eAAe,YAAKZ,SAAL,uDAA2Da,MAAM,CAACC,IAAP,CACzEL,uBADyE,EAExEM,IAFwE,CAEnE,IAFmE,CAA3D,CAFM;kBAKrBC,UAAU,EAAE,CAAC,WAAD;gBALS,CAAhB,CA9BT;;cAAA;gBAAA,IAuCOjB,SAvCP;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAwCqB,KAAKkB,YAAL,CAAkBZ,SAAlB,EAA6BL,SAA7B,CAxCrB;;cAAA;gBAwCGD,SAxCH;;cAAA;gBA2CQmB,WA3CR,GA2CsBlB,SAAS,KAAKX,oBA3CpC;;gBA4CE,IAAI6B,WAAJ,EAAiB;kBAChBlB,SAAS,GAAGmB,SAAZ;gBACA;;gBAEKC,IAhDR,GAgDeC,gCAAcN,IAAd,CAAmB;kBAC/BhB,SAAS,EAATA,SAD+B;kBAE/BuB,cAAc,EAAEtB,SAFe;kBAG/BF,OAAO,EAAED;gBAHsB,CAAnB,CAhDf;gBAAA,uBAsDoBwB,gCAAcE,KAAd,CAAoBH,IAApB,CAtDpB,EAsDQtB,OAtDR,wBAsDQA,OAtDR;gBAwDE,KAAK0B,mBAAL,CACCf,uBADD,gBAECT,SAFD,mDAEc,SAFd,EAGCD,SAHD,EAICqB,IAJD;gBAOMK,mBA/DR,GA+D8BC,2BAASC,WAAT,CAC3B,KAAKC,GADsB,EAE3BhC,sBAF2B,CA/D9B;gBAAA;gBAAA,OAoEgC,KAAKiC,cAAL,CAC7B/B,OAD6B,EAE7B2B,mBAF6B,CApEhC;;cAAA;gBAoEQK,eApER;gBAyEQC,YAzER,GAyEuB/B,SAAS,KAAKZ,qBAzErC;;gBA8EE,IAAI2C,YAAJ,EAAkB;kBACXC,OADW,GACD,IAAIC,oCAAJ,EADC;kBAEXC,aAFW,GAEKF,OAAO,CAACG,6BAAR,CACrB9B,SADqB,EAErBgB,gCAAcN,IAAd,CAAmB;oBAClBO,cAAc,EAAE,CAACJ,WAAD,GAAelB,SAAf,GAA2BmB,SADzB;oBAElBpB,SAAS,EAATA,SAFkB;oBAGlBD,OAAO,EAAEgC;kBAHS,CAAnB,CAFqB,CAFL;kBAWjBM,6BAA6B,GAC5BF,aAAa,CAACE,6BADf;kBAEAC,iCAAiC,GAChCH,aAAa,CAACG,iCADf;gBAEA;;gBA7FH;gBAAA,OA+FyB,KAAKC,aAAL,CAAmB;kBACzCrC,oBAAoB,EAApBA,oBADyC;kBAEzCwB,mBAAmB,EAAnBA,mBAFyC;kBAGzC3B,OAAO,EAAEgC,eAHgC;kBAIzC/B,SAAS,EAATA,SAJyC;kBAKzCC,SAAS,EAATA,SALyC;kBAMzCoC,6BAA6B,EAA7BA,6BANyC;kBAOzCC,iCAAiC,EAAjCA;gBAPyC,CAAnB,CA/FzB;;cAAA;gBA+FE1C,QAAQ,CAAC4C,KA/FX;gBAAA;gBAAA,OAyG4B,KAAKC,aAAL,EAzG5B;;cAAA;gBAyGQC,WAzGR;gBA2GE9C,QAAQ,GAAG+C,mBAAWC,kBAAX,CAA8BF,WAA9B,EAA2C9C,QAA3C,CAAX;;gBA3GF,KA6GMoC,YA7GN;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OA8G6B,KAAKa,UAAL,CAAgBpD,OAAhB,CA9G7B;;cAAA;gBA8GSiD,YA9GT;gBA+GG9C,QAAQ,GAAG+C,mBAAWC,kBAAX,CAA8BF,YAA9B,EAA2C9C,QAA3C,CAAX;;cA/GH;gBAAA,iCAkHSA,QAlHT;;cAAA;gBAAA;gBAAA;gBAAA,iCAoHS;kBACNkD,MAAM,EAAE;gBADF,CApHT;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GA0HA,kBAAkC7C,SAAlC;QAAA;;QAAA;;QAAA;UAAA;YAAA;cAAA;gBACO8C,UADP,GACoB,KAAKC,KAAL,CAAW,OAAX,CADpB;gBAAA;gBAAA,OAEqB,KAAKA,KAAL,CAAW,OAAX,EAAoBC,gBAApB,EAFrB;;cAAA;gBAEOC,KAFP;gBAIOC,kBAJP,GAKElD,SAAS,IACTA,SAAS,KAAKZ,qBADd,IAEAY,SAAS,KAAKX,oBAFd,GAGG,CAACW,SAAD,CAHH,GAIG,KAAKmD,uBAAL,EATL;gBAWO3D,OAXP,GAWwC;kBACtC4D,gBAAgB,EAAE,0BAACC,GAAD;oBAAA,OAAiB,MAAI,CAACnD,EAAL,CAAQC,YAAR,CAAqBkD,GAArB,CAAjB;kBAAA;gBADoB,CAXxC;;gBAeC,IAAIJ,KAAK,CAACK,IAAV,EAAgB;kBACf9D,OAAO,CAAC+D,cAAR,GAAyBN,KAAK,CAACK,IAA/B;gBACA;;gBAED,IAAIJ,kBAAkB,CAACM,MAAnB,GAA4B,CAAhC,EAAmC;kBAClChE,OAAO,CAACiE,UAAR,GAAqBP,kBAArB;gBACA;;gBArBF;gBAAA,OAuB6BJ,UAAU,CAAC1C,mBAAX,CAA+BZ,OAA/B,CAvB7B;;cAAA;gBAAA;gBAuBSa,SAvBT,yBAuBSA,SAvBT;gBAAA,kCAyBQA,SAzBR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WA4BA,mCAAkC;MACjC,OAAO,KAAKqD,OAAL,CAAa,YAAb,EACLC,GADK,GAELC,GAFK,CAED,UAACC,CAAD;QAAA,OAAOA,CAAC,CAAC7D,SAAT;MAAA,CAFC,CAAP;IAGA;;;;sGAED,kBACCR,OADD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAGOsE,WAHP,GAGqB,mCAAsBC,4BAAtB,EAA6CvE,OAA7C,CAHrB;gBAAA;gBAAA,OAK2B,KAAKwE,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqCH,WAArC,CAL3B;;cAAA;gBAKOrB,WALP;gBAAA,kCAMQA,WANR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yGASA,kBAA4BjD,OAA5B;QAAA;QAAA;UAAA;YAAA;cAAA;gBAUEiC,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;gBAiBOoE,4BAjBP,GAiBsCxC,2BAASC,WAAT,CACpC,KAAKC,GAD+B,EAEpC3B,oBAFoC,CAjBtC;gBAqBOkE,MArBP,GAqBgB,KAAKC,MAAL,CAAY,OAAZ,CArBhB;gBAAA;gBAAA,OAsBqBD,MAAM,CAAC7B,aAAP,CAAqBb,mBAArB,kCAChBjC,OADgB;kBAEnB6E,uBAAuB,EAAEhD,gCAAcN,IAAd,CAAmB;oBAC3ChB,SAAS,EAATA,SAD2C;oBAE3CuB,cAAc,EAAEtB,SAF2B;oBAG3CF,OAAO,EAAPA;kBAH2C,CAAnB,CAFN;kBAOnBG,oBAAoB,EAAEiE;gBAPH,GAtBrB;;cAAA;gBAsBO3B,KAtBP;gBAAA,kCAgCQA,KAhCR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAmCA,6BACC9B,uBADD,EAECT,SAFD,EAGCD,SAHD,EAICqB,IAJD,EAKE;MACD,IAAMkD,YAAY,GAAG,CAAC,CAAC7D,uBAAuB,CAACT,SAAD,CAAvB,CAAmCuE,IAAnC,CACtB,UAACC,CAAD;QAAA,OAAOA,CAAC,CAACC,KAAF,KAAY1E,SAAZ,IAAyByE,CAAC,CAACC,KAAF,KAAYrD,IAA5C;MAAA,CADsB,CAAvB;;MAIA,IAAI,CAACkD,YAAL,EAAmB;QAClB,MAAM,IAAI5D,mBAAJ,CAAgB;UACrBC,IAAI,EAAE,oBADe;UAErBC,eAAe,YAAKb,SAAL,8CAAkDU,uBAAuB,CACvFT,SADuF,CAAvB,CAG/D4D,GAH+D,CAG3D,UAACc,CAAD;YAAA,OAAOA,CAAC,CAACD,KAAT;UAAA,CAH2D,EAI/D1D,IAJ+D,CAI1D,IAJ0D,CAAlD,CAFM;UAOrBC,UAAU,EAAE,CAAC,WAAD;QAPS,CAAhB,CAAN;MASA;IACD;;;;yGAED;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACQ,KAAKgD,MAAL,CAAY,OAAZ,EAAqB,gBAArB,EAAuCC,OAAvC,CAA+C,EAA/C,CADR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wGAIA,kBACC5D,SADD,EAECL,SAFD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAIO2E,YAJP,GAKE,KAAKnE,2BAAL,CAAiCH,SAAjC,EAA4CI,uBAA5C,CACCT,SADD,CALF;gBAAA;gBAAA,OASyB,KAAKE,EAAL,CAAQ0E,MAAR,CAAe;kBACtCC,IAAI,EAAE,QADgC;kBAEtCC,KAAK,EAAE,iBAF+B;kBAGtCC,UAAU,EAAE,IAH0B;kBAItCvF,OAAO,EAAE;oBACRwF,OAAO,EAAEL;kBADD;gBAJ6B,CAAf,CATzB;;cAAA;gBASO5E,SATP;gBAAA,kCAkBQA,SAlBR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4GAqBA,kBAA+BM,SAA/B;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA,yBAC8B,KAAKG,2BAAL,CAAiCH,SAAjC,CAD9B,EACS4E,gBADT,0BACSA,gBADT;gBAAA;gBAAA,OAGyB,KAAK/E,EAAL,CAAQ0E,MAAR,CAAe;kBACtCC,IAAI,EAAE,QADgC;kBAEtCC,KAAK,EAAE,2BAF+B;kBAGtCC,UAAU,EAAE,IAH0B;kBAItCvF,OAAO,EAAE;oBACRwF,OAAO,EAAEC;kBADD;gBAJ6B,CAAf,CAHzB;;cAAA;gBAGOjF,SAHP;gBAAA,kCAYQA,SAZR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAeA,qCAAoCK,SAApC,EAAgE;MAC/D,IAAM4E,gBAAgC,GAAG,CACxC;QACCH,KAAK,EAAE,OADR;QAECL,KAAK,EAAErF;MAFR,CADwC,CAAzC;MAOA,IAAMqB,uBAAuD,GAAG;QAC/DwC,KAAK,EAAE,CACN;UACC6B,KAAK,EAAE,WADR;UAECL,KAAK,EAAE;QAFR,CADM,EAKN;UACCK,KAAK,EAAE,UADR;UAECL,KAAK,EAAE;QAFR,CALM;MADwD,CAAhE;MAaApE,SAAS,CAAC6E,OAAV,CAAkB,UAACC,QAAD,EAAc;QAC/B,IAAMC,eAAe,GACpBC,oCAAkBC,uBAAlB,CAA0CH,QAA1C,CADD;;QAD+B,2CAIRC,eAJQ;QAAA;;QAAA;UAAA;YAAA;;YAAA,IAIpBG,QAJoB;YAK9B,IAAMvF,SAAS,4BAAGuF,QAAQ,CAACjE,cAAZ,yEAA8BkE,uCAA7C;;YAEA,IAAI,CAACP,gBAAgB,CAACV,IAAjB,CAAsB,UAACkB,CAAD;cAAA,OAAOA,CAAC,CAAChB,KAAF,KAAYzE,SAAnB;YAAA,CAAtB,CAAL,EAA0D;cACzDiF,gBAAgB,CAACS,IAAjB,CAAsB;gBACrBZ,KAAK,EAAEa,4BAAUC,QAAV,CAAmB5F,SAAnB,CADc;gBAErByE,KAAK,EAAEzE;cAFc,CAAtB;YAIA;;YAED,IAAI,CAACS,uBAAuB,CAACT,SAAD,CAA5B,EAAyC;cACxCS,uBAAuB,CAACT,SAAD,CAAvB,GAAqC,EAArC;YACA;;YAEDS,uBAAuB,CAACT,SAAD,CAAvB,CAAmC0F,IAAnC,CAAwC;cACvCjB,KAAK,EAAEc,QAAQ,CAAClB,uBADuB;cAEvCS,KAAK,EAAES,QAAQ,CAAClB;YAFuB,CAAxC;UAlB8B;;UAI/B,oDAAwC;YAAA;UAkBvC;QAtB8B;UAAA;QAAA;UAAA;QAAA;MAuB/B,CAvBD;MAyBA,OAAO;QAAE5D,uBAAuB,EAAvBA,uBAAF;QAA2BwE,gBAAgB,EAAhBA;MAA3B,CAAP;IACA;;;EA3TwCY,2B"}
1
+ {"version":3,"file":"ListenAction.js","names":["SKILL_EVENT_NAMESPACE","CORE_EVENT_NAMESPACE","MERCURY_API_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","getDependencyNamespaces","didUpdateHandler","msg","slug","localNamespace","length","namespaces","Service","get","map","d","syncOptions","syncEventActionSchema","Action","execute","resolvedSchemaTypesLookupDir","writer","Writer","fullyQualifiedEventName","isValidEvent","find","e","value","i","eventChoices","prompt","type","label","isRequired","choices","namespaceChoices","forEach","contract","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","o","push","namesUtil","toPascal","AbstractAction"],"sources":["../../../../src/features/event/actions/ListenAction.ts"],"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'\nimport { FetchContractsOptions } from '../stores/EventStore'\n\nconst SKILL_EVENT_NAMESPACE = 'skill'\nexport const CORE_EVENT_NAMESPACE = MERCURY_API_NAMESPACE\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: [...this.getDependencyNamespaces(), 'mercury']\n\n\t\tconst options: FetchContractsOptions = {\n\t\t\tdidUpdateHandler: (msg: string) => this.ui.startLoading(msg),\n\t\t}\n\n\t\tif (skill.slug) {\n\t\t\toptions.localNamespace = skill.slug\n\t\t}\n\n\t\tif (namespacesForFetch.length > 0) {\n\t\t\toptions.namespaces = namespacesForFetch\n\t\t}\n\n\t\tconst { contracts } = await eventStore.fetchEventContracts(options)\n\n\t\treturn contracts\n\t}\n\n\tprivate getDependencyNamespaces() {\n\t\treturn this.Service('dependency')\n\t\t\t.get()\n\t\t\t.map((d) => d.namespace)\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAMA;;AAIA;;AAMA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;AAIA,IAAMA,qBAAqB,GAAG,OAA9B;AACO,IAAMC,oBAAoB,GAAGC,uCAA7B;;;IAIcC,Y;;;;;;;;;;;;;;;sGACkBC,8B;0GACX,+B;uGACH,CAAC,cAAD,EAAiB,iBAAjB,C;;;;;;;mGAExB,iBACCC,OADD;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAGOC,iBAHP,GAG2B,KAAKC,2BAAL,CAAiCF,OAAjC,CAH3B;gBAAA;gBAMMG,QANN,GAMwC,EANxC;gBASGC,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;gBAgBE,KAAKC,EAAL,CAAQC,YAAR,CAAqB,4BAArB;gBAhBF;gBAAA,OAkB0B,KAAKC,mBAAL,CAAyBJ,SAAzB,CAlB1B;;cAAA;gBAkBQK,SAlBR;gBAoBE,KAAKH,EAAL,CAAQI,WAAR;;gBApBF,IAsBON,SAtBP;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAuBqB,KAAKO,gBAAL,CAAsBF,SAAtB,CAvBrB;;cAAA;gBAuBGL,SAvBH;;cAAA;gBAAA,wBA2BG,KAAKQ,2BAAL,CAAiCH,SAAjC,CA3BH,EA0BUI,uBA1BV,yBA0BUA,uBA1BV;;gBAAA,IA6BOA,uBAAuB,CAACT,SAAD,CA7B9B;kBAAA;kBAAA;gBAAA;;gBAAA,MA8BS,IAAIU,mBAAJ,CAAgB;kBACrBC,IAAI,EAAE,oBADe;kBAErBC,eAAe,YAAKZ,SAAL,uDAA2Da,MAAM,CAACC,IAAP,CACzEL,uBADyE,EAExEM,IAFwE,CAEnE,IAFmE,CAA3D,CAFM;kBAKrBC,UAAU,EAAE,CAAC,WAAD;gBALS,CAAhB,CA9BT;;cAAA;gBAAA,IAuCOjB,SAvCP;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OAwCqB,KAAKkB,YAAL,CAAkBZ,SAAlB,EAA6BL,SAA7B,CAxCrB;;cAAA;gBAwCGD,SAxCH;;cAAA;gBA2CQmB,WA3CR,GA2CsBlB,SAAS,KAAKZ,oBA3CpC;;gBA4CE,IAAI8B,WAAJ,EAAiB;kBAChBlB,SAAS,GAAGmB,SAAZ;gBACA;;gBAEKC,IAhDR,GAgDeC,gCAAcN,IAAd,CAAmB;kBAC/BhB,SAAS,EAATA,SAD+B;kBAE/BuB,cAAc,EAAEtB,SAFe;kBAG/BF,OAAO,EAAED;gBAHsB,CAAnB,CAhDf;gBAAA,uBAsDoBwB,gCAAcE,KAAd,CAAoBH,IAApB,CAtDpB,EAsDQtB,OAtDR,wBAsDQA,OAtDR;gBAwDE,KAAK0B,mBAAL,CACCf,uBADD,gBAECT,SAFD,mDAEc,SAFd,EAGCD,SAHD,EAICqB,IAJD;gBAOMK,mBA/DR,GA+D8BC,2BAASC,WAAT,CAC3B,KAAKC,GADsB,EAE3BhC,sBAF2B,CA/D9B;gBAAA;gBAAA,OAoEgC,KAAKiC,cAAL,CAC7B/B,OAD6B,EAE7B2B,mBAF6B,CApEhC;;cAAA;gBAoEQK,eApER;gBAyEQC,YAzER,GAyEuB/B,SAAS,KAAKb,qBAzErC;;gBA8EE,IAAI4C,YAAJ,EAAkB;kBACXC,OADW,GACD,IAAIC,oCAAJ,EADC;kBAEXC,aAFW,GAEKF,OAAO,CAACG,6BAAR,CACrB9B,SADqB,EAErBgB,gCAAcN,IAAd,CAAmB;oBAClBO,cAAc,EAAE,CAACJ,WAAD,GAAelB,SAAf,GAA2BmB,SADzB;oBAElBpB,SAAS,EAATA,SAFkB;oBAGlBD,OAAO,EAAEgC;kBAHS,CAAnB,CAFqB,CAFL;kBAWjBM,6BAA6B,GAC5BF,aAAa,CAACE,6BADf;kBAEAC,iCAAiC,GAChCH,aAAa,CAACG,iCADf;gBAEA;;gBA7FH;gBAAA,OA+FyB,KAAKC,aAAL,CAAmB;kBACzCrC,oBAAoB,EAApBA,oBADyC;kBAEzCwB,mBAAmB,EAAnBA,mBAFyC;kBAGzC3B,OAAO,EAAEgC,eAHgC;kBAIzC/B,SAAS,EAATA,SAJyC;kBAKzCC,SAAS,EAATA,SALyC;kBAMzCoC,6BAA6B,EAA7BA,6BANyC;kBAOzCC,iCAAiC,EAAjCA;gBAPyC,CAAnB,CA/FzB;;cAAA;gBA+FE1C,QAAQ,CAAC4C,KA/FX;gBAAA;gBAAA,OAyG4B,KAAKC,aAAL,EAzG5B;;cAAA;gBAyGQC,WAzGR;gBA2GE9C,QAAQ,GAAG+C,mBAAWC,kBAAX,CAA8BF,WAA9B,EAA2C9C,QAA3C,CAAX;;gBA3GF,KA6GMoC,YA7GN;kBAAA;kBAAA;gBAAA;;gBAAA;gBAAA,OA8G6B,KAAKa,UAAL,CAAgBpD,OAAhB,CA9G7B;;cAAA;gBA8GSiD,YA9GT;gBA+GG9C,QAAQ,GAAG+C,mBAAWC,kBAAX,CAA8BF,YAA9B,EAA2C9C,QAA3C,CAAX;;cA/GH;gBAAA,iCAkHSA,QAlHT;;cAAA;gBAAA;gBAAA;gBAAA,iCAoHS;kBACNkD,MAAM,EAAE;gBADF,CApHT;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GA0HA,kBAAkC7C,SAAlC;QAAA;;QAAA;;QAAA;UAAA;YAAA;cAAA;gBACO8C,UADP,GACoB,KAAKC,KAAL,CAAW,OAAX,CADpB;gBAAA;gBAAA,OAEqB,KAAKA,KAAL,CAAW,OAAX,EAAoBC,gBAApB,EAFrB;;cAAA;gBAEOC,KAFP;gBAIOC,kBAJP,GAKElD,SAAS,IACTA,SAAS,KAAKb,qBADd,IAEAa,SAAS,KAAKZ,oBAFd,GAGG,CAACY,SAAD,CAHH,iDAIO,KAAKmD,uBAAL,EAJP,IAIuC,SAJvC,EALF;gBAWO3D,OAXP,GAWwC;kBACtC4D,gBAAgB,EAAE,0BAACC,GAAD;oBAAA,OAAiB,MAAI,CAACnD,EAAL,CAAQC,YAAR,CAAqBkD,GAArB,CAAjB;kBAAA;gBADoB,CAXxC;;gBAeC,IAAIJ,KAAK,CAACK,IAAV,EAAgB;kBACf9D,OAAO,CAAC+D,cAAR,GAAyBN,KAAK,CAACK,IAA/B;gBACA;;gBAED,IAAIJ,kBAAkB,CAACM,MAAnB,GAA4B,CAAhC,EAAmC;kBAClChE,OAAO,CAACiE,UAAR,GAAqBP,kBAArB;gBACA;;gBArBF;gBAAA,OAuB6BJ,UAAU,CAAC1C,mBAAX,CAA+BZ,OAA/B,CAvB7B;;cAAA;gBAAA;gBAuBSa,SAvBT,yBAuBSA,SAvBT;gBAAA,kCAyBQA,SAzBR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WA4BA,mCAAkC;MACjC,OAAO,KAAKqD,OAAL,CAAa,YAAb,EACLC,GADK,GAELC,GAFK,CAED,UAACC,CAAD;QAAA,OAAOA,CAAC,CAAC7D,SAAT;MAAA,CAFC,CAAP;IAGA;;;;sGAED,kBACCR,OADD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAGOsE,WAHP,GAGqB,mCAAsBC,4BAAtB,EAA6CvE,OAA7C,CAHrB;gBAAA;gBAAA,OAK2B,KAAKwE,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqCH,WAArC,CAL3B;;cAAA;gBAKOrB,WALP;gBAAA,kCAMQA,WANR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yGASA,kBAA4BjD,OAA5B;QAAA;QAAA;UAAA;YAAA;cAAA;gBAUEiC,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;gBAiBOoE,4BAjBP,GAiBsCxC,2BAASC,WAAT,CACpC,KAAKC,GAD+B,EAEpC3B,oBAFoC,CAjBtC;gBAqBOkE,MArBP,GAqBgB,KAAKC,MAAL,CAAY,OAAZ,CArBhB;gBAAA;gBAAA,OAsBqBD,MAAM,CAAC7B,aAAP,CAAqBb,mBAArB,kCAChBjC,OADgB;kBAEnB6E,uBAAuB,EAAEhD,gCAAcN,IAAd,CAAmB;oBAC3ChB,SAAS,EAATA,SAD2C;oBAE3CuB,cAAc,EAAEtB,SAF2B;oBAG3CF,OAAO,EAAPA;kBAH2C,CAAnB,CAFN;kBAOnBG,oBAAoB,EAAEiE;gBAPH,GAtBrB;;cAAA;gBAsBO3B,KAtBP;gBAAA,kCAgCQA,KAhCR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAmCA,6BACC9B,uBADD,EAECT,SAFD,EAGCD,SAHD,EAICqB,IAJD,EAKE;MACD,IAAMkD,YAAY,GAAG,CAAC,CAAC7D,uBAAuB,CAACT,SAAD,CAAvB,CAAmCuE,IAAnC,CACtB,UAACC,CAAD;QAAA,OAAOA,CAAC,CAACC,KAAF,KAAY1E,SAAZ,IAAyByE,CAAC,CAACC,KAAF,KAAYrD,IAA5C;MAAA,CADsB,CAAvB;;MAIA,IAAI,CAACkD,YAAL,EAAmB;QAClB,MAAM,IAAI5D,mBAAJ,CAAgB;UACrBC,IAAI,EAAE,oBADe;UAErBC,eAAe,YAAKb,SAAL,8CAAkDU,uBAAuB,CACvFT,SADuF,CAAvB,CAG/D4D,GAH+D,CAG3D,UAACc,CAAD;YAAA,OAAOA,CAAC,CAACD,KAAT;UAAA,CAH2D,EAI/D1D,IAJ+D,CAI1D,IAJ0D,CAAlD,CAFM;UAOrBC,UAAU,EAAE,CAAC,WAAD;QAPS,CAAhB,CAAN;MASA;IACD;;;;yGAED;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACQ,KAAKgD,MAAL,CAAY,OAAZ,EAAqB,gBAArB,EAAuCC,OAAvC,CAA+C,EAA/C,CADR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wGAIA,kBACC5D,SADD,EAECL,SAFD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAIO2E,YAJP,GAKE,KAAKnE,2BAAL,CAAiCH,SAAjC,EAA4CI,uBAA5C,CACCT,SADD,CALF;gBAAA;gBAAA,OASyB,KAAKE,EAAL,CAAQ0E,MAAR,CAAe;kBACtCC,IAAI,EAAE,QADgC;kBAEtCC,KAAK,EAAE,iBAF+B;kBAGtCC,UAAU,EAAE,IAH0B;kBAItCvF,OAAO,EAAE;oBACRwF,OAAO,EAAEL;kBADD;gBAJ6B,CAAf,CATzB;;cAAA;gBASO5E,SATP;gBAAA,kCAkBQA,SAlBR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4GAqBA,kBAA+BM,SAA/B;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA,yBAC8B,KAAKG,2BAAL,CAAiCH,SAAjC,CAD9B,EACS4E,gBADT,0BACSA,gBADT;gBAAA;gBAAA,OAGyB,KAAK/E,EAAL,CAAQ0E,MAAR,CAAe;kBACtCC,IAAI,EAAE,QADgC;kBAEtCC,KAAK,EAAE,2BAF+B;kBAGtCC,UAAU,EAAE,IAH0B;kBAItCvF,OAAO,EAAE;oBACRwF,OAAO,EAAEC;kBADD;gBAJ6B,CAAf,CAHzB;;cAAA;gBAGOjF,SAHP;gBAAA,kCAYQA,SAZR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAeA,qCAAoCK,SAApC,EAAgE;MAC/D,IAAM4E,gBAAgC,GAAG,CACxC;QACCH,KAAK,EAAE,OADR;QAECL,KAAK,EAAEtF;MAFR,CADwC,CAAzC;MAOA,IAAMsB,uBAAuD,GAAG;QAC/DwC,KAAK,EAAE,CACN;UACC6B,KAAK,EAAE,WADR;UAECL,KAAK,EAAE;QAFR,CADM,EAKN;UACCK,KAAK,EAAE,UADR;UAECL,KAAK,EAAE;QAFR,CALM;MADwD,CAAhE;MAaApE,SAAS,CAAC6E,OAAV,CAAkB,UAACC,QAAD,EAAc;QAC/B,IAAMC,eAAe,GACpBC,oCAAkBC,uBAAlB,CAA0CH,QAA1C,CADD;;QAD+B,2CAIRC,eAJQ;QAAA;;QAAA;UAAA;YAAA;;YAAA,IAIpBG,QAJoB;YAK9B,IAAMvF,SAAS,4BAAGuF,QAAQ,CAACjE,cAAZ,yEAA8BjC,uCAA7C;;YAEA,IAAI,CAAC4F,gBAAgB,CAACV,IAAjB,CAAsB,UAACiB,CAAD;cAAA,OAAOA,CAAC,CAACf,KAAF,KAAYzE,SAAnB;YAAA,CAAtB,CAAL,EAA0D;cACzDiF,gBAAgB,CAACQ,IAAjB,CAAsB;gBACrBX,KAAK,EAAEY,4BAAUC,QAAV,CAAmB3F,SAAnB,CADc;gBAErByE,KAAK,EAAEzE;cAFc,CAAtB;YAIA;;YAED,IAAI,CAACS,uBAAuB,CAACT,SAAD,CAA5B,EAAyC;cACxCS,uBAAuB,CAACT,SAAD,CAAvB,GAAqC,EAArC;YACA;;YAEDS,uBAAuB,CAACT,SAAD,CAAvB,CAAmCyF,IAAnC,CAAwC;cACvChB,KAAK,EAAEc,QAAQ,CAAClB,uBADuB;cAEvCS,KAAK,EAAES,QAAQ,CAAClB;YAFuB,CAAxC;UAlB8B;;UAI/B,oDAAwC;YAAA;UAkBvC;QAtB8B;UAAA;QAAA;UAAA;QAAA;MAuB/B,CAvBD;MAyBA,OAAO;QAAE5D,uBAAuB,EAAvBA,uBAAF;QAA2BwE,gBAAgB,EAAhBA;MAA3B,CAAP;IACA;;;EA3TwCW,2B"}
@@ -4,7 +4,6 @@ import AbstractStore from '../../../stores/AbstractStore';
4
4
  import { InternalUpdateHandler } from '../../../types/cli.types';
5
5
  export declare const coreSchemas: {
6
6
  personSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.PersonSchema;
7
- profileImageSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.ProfileImageSchema;
8
7
  skillSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.SkillSchema;
9
8
  skillCreatorSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.SkillCreatorSchema;
10
9
  locationSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.LocationSchema;
@@ -55,7 +55,6 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
55
55
 
56
56
  var coreSchemas = {
57
57
  personSchema: _spruceCoreSchemas.personSchema,
58
- profileImageSchema: _spruceCoreSchemas.profileImageSchema,
59
58
  skillSchema: _spruceCoreSchemas.skillSchema,
60
59
  skillCreatorSchema: _spruceCoreSchemas.skillCreatorSchema,
61
60
  locationSchema: _spruceCoreSchemas.locationSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaStore.js","names":["coreSchemas","personSchema","profileImageSchema","skillSchema","skillCreatorSchema","locationSchema","organizationSchema","personOrganizationSchema","personLocationSchema","roleSchema","messageSchema","messageSourceSchema","messageTargetSchema","sendMessageSchema","fullMessageChoicesSchema","DEFAULT_LOCAL_SCHEMA_DIR","SchemaStore","options","localSchemaLookupDir","localSchemaDir","shouldFetchLocalSchemas","shouldFetchRemoteSchemas","shouldEnableVersioning","localNamespace","shouldFetchCoreSchemas","didUpdateHandler","moduleToImportFromWhenRemote","results","errors","schemasByNamespace","CORE_NAMESPACE","Object","values","map","schema","namespace","loadLocalSchemas","locals","schemas","forEach","local","push","emitDidFetchSchemasAndMixinResults","emitter","emit","remoteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","SpruceError","payloads","length","payload","mixinSchemaOrThrowIfExists","idWithVersion","match","find","s","globbyLocalBuilders","matches","localLookupDir","localMatches","importer","Service","bulkImport","imported","c","version","resolveLocalVersion","prepareLocalSchema","err","code","file","originalError","diskUtil","resolvePath","cwd","undefined","versionUtil","extractVersion","constValue","friendlyMessage","generateVersion","dirValue","SchemaError","schemaId","id","localAddonsDir","coreAddons","fieldRegistrations","registration","isLocal","localErrors","Promise","pathUtil","join","importService","importDefault","path","all","localAddons","allFields","filter","addon","fields","AbstractStore"],"sources":["../../../../src/features/schema/stores/SchemaStore.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tSchema,\n\tFieldRegistration,\n\tfieldRegistrations,\n\tnormalizeSchemaToIdWithVersion,\n\tSchemaError,\n} from '@sprucelabs/schema'\nimport {\n\tpersonSchema,\n\tprofileImageSchema,\n\tskillSchema,\n\tskillCreatorSchema,\n\tlocationSchema,\n\torganizationSchema,\n\tpersonOrganizationSchema,\n\tpersonLocationSchema,\n\troleSchema,\n\tmessageSchema,\n\tmessageSourceSchema,\n\tmessageTargetSchema,\n\tsendMessageSchema,\n\tfullMessageChoicesSchema,\n} from '@sprucelabs/spruce-core-schemas'\nimport { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { CORE_NAMESPACE } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { isEqual, uniqBy } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\n\nexport const coreSchemas = {\n\tpersonSchema,\n\tprofileImageSchema,\n\tskillSchema,\n\tskillCreatorSchema,\n\tlocationSchema,\n\torganizationSchema,\n\tpersonOrganizationSchema,\n\tpersonLocationSchema,\n\troleSchema,\n\tmessageSchema,\n\tmessageSourceSchema,\n\tmessageTargetSchema,\n\tsendMessageSchema,\n\tfullMessageChoicesSchema,\n}\n\ninterface AddonItem {\n\tpath: string\n\tregistration: FieldRegistration\n\tisLocal: boolean\n}\n\nexport interface SchemasByNamespace {\n\t[namespace: string]: Schema[]\n}\n\ninterface FetchSchemasResults {\n\tschemasByNamespace: SchemasByNamespace\n\terrors: SpruceError[]\n}\nexport interface FetchedField {\n\tpath?: string\n\tregistration: FieldRegistration\n\tisLocal: boolean\n}\n\ninterface FetchFieldsResults {\n\terrors: SpruceError[]\n\tfields: FetchedField[]\n}\n\nconst DEFAULT_LOCAL_SCHEMA_DIR = 'src/schemas'\n\nexport default class SchemaStore extends AbstractStore {\n\tpublic readonly name = 'schema'\n\n\tpublic async fetchSchemas(options: {\n\t\tlocalSchemaLookupDir?: string\n\t\tshouldFetchRemoteSchemas?: boolean\n\t\tshouldEnableVersioning?: boolean\n\t\tlocalNamespace: string\n\t\tshouldFetchCoreSchemas?: boolean\n\t\tmoduleToImportFromWhenRemote?: string\n\t\tshouldFetchLocalSchemas?: boolean\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t}): Promise<FetchSchemasResults> {\n\t\tconst {\n\t\t\tlocalSchemaLookupDir: localSchemaDir = DEFAULT_LOCAL_SCHEMA_DIR,\n\t\t\tshouldFetchLocalSchemas = true,\n\t\t\tshouldFetchRemoteSchemas = true,\n\t\t\tshouldEnableVersioning = true,\n\t\t\tlocalNamespace,\n\t\t\tshouldFetchCoreSchemas = true,\n\t\t\tdidUpdateHandler,\n\t\t\tmoduleToImportFromWhenRemote,\n\t\t} = options || {}\n\n\t\tconst results: FetchSchemasResults = {\n\t\t\terrors: [],\n\t\t\tschemasByNamespace: {},\n\t\t}\n\n\t\tif (shouldFetchCoreSchemas) {\n\t\t\tresults.schemasByNamespace[CORE_NAMESPACE] = Object.values(\n\t\t\t\tcoreSchemas\n\t\t\t).map((schema) => ({\n\t\t\t\t...schema,\n\t\t\t\tnamespace: CORE_NAMESPACE,\n\t\t\t}))\n\t\t}\n\n\t\tif (shouldFetchLocalSchemas) {\n\t\t\tconst locals = await this.loadLocalSchemas(\n\t\t\t\tlocalSchemaDir,\n\t\t\t\tlocalNamespace,\n\t\t\t\tshouldEnableVersioning,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\n\t\t\tif (moduleToImportFromWhenRemote) {\n\t\t\t\tlocals.schemas.forEach((local) => {\n\t\t\t\t\tlocal.moduleToImportFromWhenRemote = moduleToImportFromWhenRemote\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tresults.schemasByNamespace[localNamespace] = locals.schemas\n\t\t\tresults.errors.push(...locals.errors)\n\t\t}\n\n\t\tif (shouldFetchRemoteSchemas) {\n\t\t\tawait this.emitDidFetchSchemasAndMixinResults(localNamespace, results)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async emitDidFetchSchemasAndMixinResults(\n\t\tlocalNamespace: string,\n\t\tresults: FetchSchemasResults\n\t) {\n\t\tconst schemas: Schema[] = []\n\t\tfor (const namespace in results.schemasByNamespace) {\n\t\t\tschemas.push(...results.schemasByNamespace[namespace])\n\t\t}\n\n\t\tconst remoteResults = await this.emitter.emit('schema.did-fetch-schemas', {\n\t\t\tschemas,\n\t\t})\n\n\t\tconst { payloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tremoteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors && errors.length > 0) {\n\t\t\tresults.errors.push(...errors)\n\t\t} else {\n\t\t\tpayloads.forEach((payload) => {\n\t\t\t\tpayload?.schemas?.forEach((schema: Schema) => {\n\t\t\t\t\tthis.mixinSchemaOrThrowIfExists(schema, localNamespace, results)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate mixinSchemaOrThrowIfExists(\n\t\tschema: Schema,\n\t\tlocalNamespace: string,\n\t\tresults: FetchSchemasResults\n\t) {\n\t\tconst namespace = schema.namespace ?? localNamespace\n\n\t\tif (!results.schemasByNamespace[namespace]) {\n\t\t\tresults.schemasByNamespace[namespace] = []\n\t\t}\n\n\t\tconst idWithVersion = normalizeSchemaToIdWithVersion(schema)\n\t\tconst match = results.schemasByNamespace[namespace].find((s) =>\n\t\t\tisEqual(normalizeSchemaToIdWithVersion(s), idWithVersion)\n\t\t)\n\n\t\tif (!match) {\n\t\t\tresults.schemasByNamespace[namespace].push(schema)\n\t\t}\n\t}\n\n\tpublic async hasLocalSchemas() {\n\t\tconst matches = await this.globbyLocalBuilders(DEFAULT_LOCAL_SCHEMA_DIR)\n\t\treturn matches.length > 0\n\t}\n\n\tprivate async loadLocalSchemas(\n\t\tlocalLookupDir: string,\n\t\tlocalNamespace: string,\n\t\tshouldEnableVersioning?: boolean,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tconst localMatches = await this.globbyLocalBuilders(localLookupDir)\n\n\t\tconst errors: SpruceError[] = []\n\t\tconst schemas: Schema[] = []\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Starting import of ${localMatches.length} schema builders...`\n\t\t)\n\n\t\ttry {\n\t\t\tconst importer = this.Service('import')\n\t\t\tconst imported = await importer.bulkImport(localMatches)\n\n\t\t\tfor (let c = 0; c < localMatches.length; c++) {\n\t\t\t\ttry {\n\t\t\t\t\tconst local = localMatches[c]\n\t\t\t\t\tlet schema = imported[c]\n\n\t\t\t\t\tlet version: undefined | string = this.resolveLocalVersion(\n\t\t\t\t\t\tshouldEnableVersioning,\n\t\t\t\t\t\tlocal,\n\t\t\t\t\t\terrors\n\t\t\t\t\t)\n\t\t\t\t\tif (version || shouldEnableVersioning === false) {\n\t\t\t\t\t\tschema = this.prepareLocalSchema(\n\t\t\t\t\t\t\tschema,\n\t\t\t\t\t\t\tlocalNamespace,\n\t\t\t\t\t\t\tversion,\n\t\t\t\t\t\t\tdidUpdateHandler\n\t\t\t\t\t\t)\n\t\t\t\t\t\tschemas.push(schema)\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\terrors.push(\n\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\tcode: 'SCHEMA_FAILED_TO_IMPORT',\n\t\t\t\t\t\t\tfile: err?.options?.file ?? '**UNKNOWN**',\n\t\t\t\t\t\t\toriginalError: err?.originalError ?? err,\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err: any) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SCHEMA_FAILED_TO_IMPORT',\n\t\t\t\tfile: err?.options?.file ?? '**UNKNOWN**',\n\t\t\t\toriginalError: err?.originalError ?? err,\n\t\t\t})\n\t\t}\n\n\t\treturn {\n\t\t\tschemas,\n\t\t\terrors,\n\t\t}\n\t}\n\n\tprivate async globbyLocalBuilders(localLookupDir: string) {\n\t\treturn await globby(\n\t\t\tdiskUtil.resolvePath(this.cwd, localLookupDir, '**/*.builder.[t|j]s')\n\t\t)\n\t}\n\n\tprivate resolveLocalVersion(\n\t\tshouldEnableVersioning: boolean | undefined,\n\t\tlocal: string,\n\t\terrors: SpruceError[]\n\t) {\n\t\tlet version: undefined | string\n\n\t\ttry {\n\t\t\tversion =\n\t\t\t\tshouldEnableVersioning === false\n\t\t\t\t\t? undefined\n\t\t\t\t\t: versionUtil.extractVersion(this.cwd, local).constValue\n\t\t} catch (err) {\n\t\t\terrors.push(\n\t\t\t\tnew SpruceError({\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tcode: 'VERSION_MISSING',\n\t\t\t\t\tfriendlyMessage: `It looks like your schema's are not versioned. Make sure schemas are in a directory like src/schemas/${\n\t\t\t\t\t\tversionUtil.generateVersion().dirValue\n\t\t\t\t\t}/*.ts`,\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\t\treturn version\n\t}\n\n\tprivate prepareLocalSchema(\n\t\tschema: Schema,\n\t\tlocalNamespace: string,\n\t\tversion: string | undefined,\n\t\tdidUpdateHandler: InternalUpdateHandler | undefined\n\t) {\n\t\tlet errors: string[] = []\n\n\t\tif (schema.version) {\n\t\t\terrors.push('version_should_not_be_set')\n\t\t}\n\n\t\tif (schema.namespace) {\n\t\t\terrors.push('namespace_should_not_be_set')\n\t\t}\n\n\t\tschema.namespace = localNamespace\n\n\t\tif (errors.length > 0) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'INVALID_SCHEMA',\n\t\t\t\tschemaId: schema.id,\n\t\t\t\terrors,\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You should not set a namespace nor version in your schema builder.',\n\t\t\t})\n\t\t}\n\n\t\tschema.version = version\n\n\t\tdidUpdateHandler?.(`Imported ${schema.id} builder.`)\n\n\t\treturn schema\n\t}\n\n\tpublic async fetchFields(options?: {\n\t\tlocalAddonsDir?: string\n\t}): Promise<FetchFieldsResults> {\n\t\tconst { localAddonsDir } = options || {}\n\n\t\tconst coreAddons = fieldRegistrations.map((registration) => {\n\t\t\treturn {\n\t\t\t\tregistration,\n\t\t\t\tisLocal: false,\n\t\t\t}\n\t\t})\n\n\t\tconst localErrors: SpruceError[] = []\n\n\t\tconst localAddons = !localAddonsDir\n\t\t\t? []\n\t\t\t: await Promise.all(\n\t\t\t\t\t(\n\t\t\t\t\t\tawait globby([\n\t\t\t\t\t\t\tpathUtil.join(localAddonsDir, '/*Field.addon.[t|j]s'),\n\t\t\t\t\t\t])\n\t\t\t\t\t).map(async (file: string) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst importService = this.Service('import')\n\t\t\t\t\t\t\tconst registration =\n\t\t\t\t\t\t\t\tawait importService.importDefault<FieldRegistration>(file)\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath: file,\n\t\t\t\t\t\t\t\tregistration,\n\t\t\t\t\t\t\t\tisLocal: true,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\t\tlocalErrors.push(\n\t\t\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t )\n\n\t\tconst allFields = uniqBy(\n\t\t\t[\n\t\t\t\t...coreAddons,\n\t\t\t\t...(localAddons.filter((addon) => !!addon) as AddonItem[]),\n\t\t\t],\n\t\t\t'registration.type'\n\t\t)\n\n\t\treturn {\n\t\t\tfields: allFields,\n\t\t\terrors: localErrors,\n\t\t}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaStore.js","names":["coreSchemas","personSchema","skillSchema","skillCreatorSchema","locationSchema","organizationSchema","personOrganizationSchema","personLocationSchema","roleSchema","messageSchema","messageSourceSchema","messageTargetSchema","sendMessageSchema","fullMessageChoicesSchema","DEFAULT_LOCAL_SCHEMA_DIR","SchemaStore","options","localSchemaLookupDir","localSchemaDir","shouldFetchLocalSchemas","shouldFetchRemoteSchemas","shouldEnableVersioning","localNamespace","shouldFetchCoreSchemas","didUpdateHandler","moduleToImportFromWhenRemote","results","errors","schemasByNamespace","CORE_NAMESPACE","Object","values","map","schema","namespace","loadLocalSchemas","locals","schemas","forEach","local","push","emitDidFetchSchemasAndMixinResults","emitter","emit","remoteResults","eventResponseUtil","getAllResponsePayloadsAndErrors","SpruceError","payloads","length","payload","mixinSchemaOrThrowIfExists","idWithVersion","match","find","s","globbyLocalBuilders","matches","localLookupDir","localMatches","importer","Service","bulkImport","imported","c","version","resolveLocalVersion","prepareLocalSchema","err","code","file","originalError","diskUtil","resolvePath","cwd","undefined","versionUtil","extractVersion","constValue","friendlyMessage","generateVersion","dirValue","SchemaError","schemaId","id","localAddonsDir","coreAddons","fieldRegistrations","registration","isLocal","localErrors","Promise","pathUtil","join","importService","importDefault","path","all","localAddons","allFields","filter","addon","fields","AbstractStore"],"sources":["../../../../src/features/schema/stores/SchemaStore.ts"],"sourcesContent":["import pathUtil from 'path'\nimport {\n\tSchema,\n\tFieldRegistration,\n\tfieldRegistrations,\n\tnormalizeSchemaToIdWithVersion,\n\tSchemaError,\n} from '@sprucelabs/schema'\nimport {\n\tpersonSchema,\n\tskillSchema,\n\tskillCreatorSchema,\n\tlocationSchema,\n\torganizationSchema,\n\tpersonOrganizationSchema,\n\tpersonLocationSchema,\n\troleSchema,\n\tmessageSchema,\n\tmessageSourceSchema,\n\tmessageTargetSchema,\n\tsendMessageSchema,\n\tfullMessageChoicesSchema,\n} from '@sprucelabs/spruce-core-schemas'\nimport { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { CORE_NAMESPACE } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { isEqual, uniqBy } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\n\nexport const coreSchemas = {\n\tpersonSchema,\n\tskillSchema,\n\tskillCreatorSchema,\n\tlocationSchema,\n\torganizationSchema,\n\tpersonOrganizationSchema,\n\tpersonLocationSchema,\n\troleSchema,\n\tmessageSchema,\n\tmessageSourceSchema,\n\tmessageTargetSchema,\n\tsendMessageSchema,\n\tfullMessageChoicesSchema,\n}\n\ninterface AddonItem {\n\tpath: string\n\tregistration: FieldRegistration\n\tisLocal: boolean\n}\n\nexport interface SchemasByNamespace {\n\t[namespace: string]: Schema[]\n}\n\ninterface FetchSchemasResults {\n\tschemasByNamespace: SchemasByNamespace\n\terrors: SpruceError[]\n}\nexport interface FetchedField {\n\tpath?: string\n\tregistration: FieldRegistration\n\tisLocal: boolean\n}\n\ninterface FetchFieldsResults {\n\terrors: SpruceError[]\n\tfields: FetchedField[]\n}\n\nconst DEFAULT_LOCAL_SCHEMA_DIR = 'src/schemas'\n\nexport default class SchemaStore extends AbstractStore {\n\tpublic readonly name = 'schema'\n\n\tpublic async fetchSchemas(options: {\n\t\tlocalSchemaLookupDir?: string\n\t\tshouldFetchRemoteSchemas?: boolean\n\t\tshouldEnableVersioning?: boolean\n\t\tlocalNamespace: string\n\t\tshouldFetchCoreSchemas?: boolean\n\t\tmoduleToImportFromWhenRemote?: string\n\t\tshouldFetchLocalSchemas?: boolean\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t}): Promise<FetchSchemasResults> {\n\t\tconst {\n\t\t\tlocalSchemaLookupDir: localSchemaDir = DEFAULT_LOCAL_SCHEMA_DIR,\n\t\t\tshouldFetchLocalSchemas = true,\n\t\t\tshouldFetchRemoteSchemas = true,\n\t\t\tshouldEnableVersioning = true,\n\t\t\tlocalNamespace,\n\t\t\tshouldFetchCoreSchemas = true,\n\t\t\tdidUpdateHandler,\n\t\t\tmoduleToImportFromWhenRemote,\n\t\t} = options || {}\n\n\t\tconst results: FetchSchemasResults = {\n\t\t\terrors: [],\n\t\t\tschemasByNamespace: {},\n\t\t}\n\n\t\tif (shouldFetchCoreSchemas) {\n\t\t\tresults.schemasByNamespace[CORE_NAMESPACE] = Object.values(\n\t\t\t\tcoreSchemas\n\t\t\t).map((schema) => ({\n\t\t\t\t...schema,\n\t\t\t\tnamespace: CORE_NAMESPACE,\n\t\t\t}))\n\t\t}\n\n\t\tif (shouldFetchLocalSchemas) {\n\t\t\tconst locals = await this.loadLocalSchemas(\n\t\t\t\tlocalSchemaDir,\n\t\t\t\tlocalNamespace,\n\t\t\t\tshouldEnableVersioning,\n\t\t\t\tdidUpdateHandler\n\t\t\t)\n\n\t\t\tif (moduleToImportFromWhenRemote) {\n\t\t\t\tlocals.schemas.forEach((local) => {\n\t\t\t\t\tlocal.moduleToImportFromWhenRemote = moduleToImportFromWhenRemote\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tresults.schemasByNamespace[localNamespace] = locals.schemas\n\t\t\tresults.errors.push(...locals.errors)\n\t\t}\n\n\t\tif (shouldFetchRemoteSchemas) {\n\t\t\tawait this.emitDidFetchSchemasAndMixinResults(localNamespace, results)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async emitDidFetchSchemasAndMixinResults(\n\t\tlocalNamespace: string,\n\t\tresults: FetchSchemasResults\n\t) {\n\t\tconst schemas: Schema[] = []\n\t\tfor (const namespace in results.schemasByNamespace) {\n\t\t\tschemas.push(...results.schemasByNamespace[namespace])\n\t\t}\n\n\t\tconst remoteResults = await this.emitter.emit('schema.did-fetch-schemas', {\n\t\t\tschemas,\n\t\t})\n\n\t\tconst { payloads, errors } =\n\t\t\teventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\t\tremoteResults,\n\t\t\t\tSpruceError\n\t\t\t)\n\n\t\tif (errors && errors.length > 0) {\n\t\t\tresults.errors.push(...errors)\n\t\t} else {\n\t\t\tpayloads.forEach((payload) => {\n\t\t\t\tpayload?.schemas?.forEach((schema: Schema) => {\n\t\t\t\t\tthis.mixinSchemaOrThrowIfExists(schema, localNamespace, results)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate mixinSchemaOrThrowIfExists(\n\t\tschema: Schema,\n\t\tlocalNamespace: string,\n\t\tresults: FetchSchemasResults\n\t) {\n\t\tconst namespace = schema.namespace ?? localNamespace\n\n\t\tif (!results.schemasByNamespace[namespace]) {\n\t\t\tresults.schemasByNamespace[namespace] = []\n\t\t}\n\n\t\tconst idWithVersion = normalizeSchemaToIdWithVersion(schema)\n\t\tconst match = results.schemasByNamespace[namespace].find((s) =>\n\t\t\tisEqual(normalizeSchemaToIdWithVersion(s), idWithVersion)\n\t\t)\n\n\t\tif (!match) {\n\t\t\tresults.schemasByNamespace[namespace].push(schema)\n\t\t}\n\t}\n\n\tpublic async hasLocalSchemas() {\n\t\tconst matches = await this.globbyLocalBuilders(DEFAULT_LOCAL_SCHEMA_DIR)\n\t\treturn matches.length > 0\n\t}\n\n\tprivate async loadLocalSchemas(\n\t\tlocalLookupDir: string,\n\t\tlocalNamespace: string,\n\t\tshouldEnableVersioning?: boolean,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t) {\n\t\tconst localMatches = await this.globbyLocalBuilders(localLookupDir)\n\n\t\tconst errors: SpruceError[] = []\n\t\tconst schemas: Schema[] = []\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Starting import of ${localMatches.length} schema builders...`\n\t\t)\n\n\t\ttry {\n\t\t\tconst importer = this.Service('import')\n\t\t\tconst imported = await importer.bulkImport(localMatches)\n\n\t\t\tfor (let c = 0; c < localMatches.length; c++) {\n\t\t\t\ttry {\n\t\t\t\t\tconst local = localMatches[c]\n\t\t\t\t\tlet schema = imported[c]\n\n\t\t\t\t\tlet version: undefined | string = this.resolveLocalVersion(\n\t\t\t\t\t\tshouldEnableVersioning,\n\t\t\t\t\t\tlocal,\n\t\t\t\t\t\terrors\n\t\t\t\t\t)\n\t\t\t\t\tif (version || shouldEnableVersioning === false) {\n\t\t\t\t\t\tschema = this.prepareLocalSchema(\n\t\t\t\t\t\t\tschema,\n\t\t\t\t\t\t\tlocalNamespace,\n\t\t\t\t\t\t\tversion,\n\t\t\t\t\t\t\tdidUpdateHandler\n\t\t\t\t\t\t)\n\t\t\t\t\t\tschemas.push(schema)\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\terrors.push(\n\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\tcode: 'SCHEMA_FAILED_TO_IMPORT',\n\t\t\t\t\t\t\tfile: err?.options?.file ?? '**UNKNOWN**',\n\t\t\t\t\t\t\toriginalError: err?.originalError ?? err,\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err: any) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SCHEMA_FAILED_TO_IMPORT',\n\t\t\t\tfile: err?.options?.file ?? '**UNKNOWN**',\n\t\t\t\toriginalError: err?.originalError ?? err,\n\t\t\t})\n\t\t}\n\n\t\treturn {\n\t\t\tschemas,\n\t\t\terrors,\n\t\t}\n\t}\n\n\tprivate async globbyLocalBuilders(localLookupDir: string) {\n\t\treturn await globby(\n\t\t\tdiskUtil.resolvePath(this.cwd, localLookupDir, '**/*.builder.[t|j]s')\n\t\t)\n\t}\n\n\tprivate resolveLocalVersion(\n\t\tshouldEnableVersioning: boolean | undefined,\n\t\tlocal: string,\n\t\terrors: SpruceError[]\n\t) {\n\t\tlet version: undefined | string\n\n\t\ttry {\n\t\t\tversion =\n\t\t\t\tshouldEnableVersioning === false\n\t\t\t\t\t? undefined\n\t\t\t\t\t: versionUtil.extractVersion(this.cwd, local).constValue\n\t\t} catch (err) {\n\t\t\terrors.push(\n\t\t\t\tnew SpruceError({\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tcode: 'VERSION_MISSING',\n\t\t\t\t\tfriendlyMessage: `It looks like your schema's are not versioned. Make sure schemas are in a directory like src/schemas/${\n\t\t\t\t\t\tversionUtil.generateVersion().dirValue\n\t\t\t\t\t}/*.ts`,\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\t\treturn version\n\t}\n\n\tprivate prepareLocalSchema(\n\t\tschema: Schema,\n\t\tlocalNamespace: string,\n\t\tversion: string | undefined,\n\t\tdidUpdateHandler: InternalUpdateHandler | undefined\n\t) {\n\t\tlet errors: string[] = []\n\n\t\tif (schema.version) {\n\t\t\terrors.push('version_should_not_be_set')\n\t\t}\n\n\t\tif (schema.namespace) {\n\t\t\terrors.push('namespace_should_not_be_set')\n\t\t}\n\n\t\tschema.namespace = localNamespace\n\n\t\tif (errors.length > 0) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'INVALID_SCHEMA',\n\t\t\t\tschemaId: schema.id,\n\t\t\t\terrors,\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You should not set a namespace nor version in your schema builder.',\n\t\t\t})\n\t\t}\n\n\t\tschema.version = version\n\n\t\tdidUpdateHandler?.(`Imported ${schema.id} builder.`)\n\n\t\treturn schema\n\t}\n\n\tpublic async fetchFields(options?: {\n\t\tlocalAddonsDir?: string\n\t}): Promise<FetchFieldsResults> {\n\t\tconst { localAddonsDir } = options || {}\n\n\t\tconst coreAddons = fieldRegistrations.map((registration) => {\n\t\t\treturn {\n\t\t\t\tregistration,\n\t\t\t\tisLocal: false,\n\t\t\t}\n\t\t})\n\n\t\tconst localErrors: SpruceError[] = []\n\n\t\tconst localAddons = !localAddonsDir\n\t\t\t? []\n\t\t\t: await Promise.all(\n\t\t\t\t\t(\n\t\t\t\t\t\tawait globby([\n\t\t\t\t\t\t\tpathUtil.join(localAddonsDir, '/*Field.addon.[t|j]s'),\n\t\t\t\t\t\t])\n\t\t\t\t\t).map(async (file: string) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst importService = this.Service('import')\n\t\t\t\t\t\t\tconst registration =\n\t\t\t\t\t\t\t\tawait importService.importDefault<FieldRegistration>(file)\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath: file,\n\t\t\t\t\t\t\t\tregistration,\n\t\t\t\t\t\t\t\tisLocal: true,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\t\tlocalErrors.push(\n\t\t\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t )\n\n\t\tconst allFields = uniqBy(\n\t\t\t[\n\t\t\t\t...coreAddons,\n\t\t\t\t...(localAddons.filter((addon) => !!addon) as AddonItem[]),\n\t\t\t],\n\t\t\t'registration.type'\n\t\t)\n\n\t\treturn {\n\t\t\tfields: allFields,\n\t\t\terrors: localErrors,\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -596,7 +596,7 @@ var TerminalInterface = /*#__PURE__*/function () {
596
596
  });
597
597
 
598
598
  case 27:
599
- _dirPath = _path["default"].join((_fieldDefinition$defa3 = (_fieldDefinition$defa4 = fieldDefinition.defaultValue) === null || _fieldDefinition$defa4 === void 0 ? void 0 : _fieldDefinition$defa4.path) !== null && _fieldDefinition$defa3 !== void 0 ? _fieldDefinition$defa3 : this.cwd, '/'); // Check if directory is empty.
599
+ _dirPath = _path["default"].join((_fieldDefinition$defa3 = (_fieldDefinition$defa4 = fieldDefinition.defaultValue) === null || _fieldDefinition$defa4 === void 0 ? void 0 : _fieldDefinition$defa4.uri) !== null && _fieldDefinition$defa3 !== void 0 ? _fieldDefinition$defa3 : this.cwd, '/'); // Check if directory is empty.
600
600
 
601
601
  _context6.next = 30;
602
602
  return (0, _globby["default"])("".concat(_dirPath, "**/*"));
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalInterface.js","names":["terminalImage","require","fieldCount","generateInquirerFieldName","filterEffectsForCFonts","effects","effect","GraphicsTextEffect","SpruceHeader","Reset","Bold","Dim","Italic","Underline","Inverse","Hidden","Strikethrough","Visible","indexOf","TerminalInterface","cwd","renderStackTraces","log","console","bind","Error","lines","forEach","line","renderLine","object","Green","renderDivider","Object","keys","key","chalk","bold","JSON","stringify","options","headline","dividerEffects","headlineEffects","Blue","bodyEffects","renderHeadline","renderLines","renderObject","bar","results","generatedFiles","files","filter","f","action","updatedFiles","skippedFiles","errors","packagesInstalled","renderHero","summaryLines","length","push","renderSection","featuresUtil","generateCommand","featureCode","actionCode","table","Table","head","colWidths","wordWrap","colAligns","sort","one","two","name","pkg","isDev","toString","file","description","namesUtil","toPascal","hints","err","renderError","totalTime","durationUtil","msToFriendly","message","isSpruce","fonts","say","font","align","space","colors","shouldStripVowels","process","stdout","columns","stripped","replace","gradient","Red","undefined","write","eraseBeforeRender","terminal","eraseLine","Yellow","stopLoading","loader","text","start","stop","question","inquirer","prompt","type","confirmResult","answer","label","bgGreenBright","black","clear","code","colored","emphasize","highlight","value","renderWarning","definition","isPromptActive","fieldDefinition","defaultValue","promptOptions","generatePromptLabel","field","FieldFactory","Field","transformer","toValueType","validate","id","fields","isArray","choices","map","choice","checked","_","includes","SpruceError","friendlyMessage","dirPath","path","join","root","onlyShowDir","fs","existsSync","lstatSync","isDirectory","cleanedPath","directory","extname","response","result","hint","italic","dim","stackLines","cleanStack","splice","stack","AbstractSpruceError","original","originalError","split","removeProgressBar","progressBar","percent","showPercent","eta","showEta","items","totalItems","inline","renderInline","update","image","Promise","resolve","requestCursorLocation","getCursorLocation","x","y","saveCursor","restoreCursor","moveTo","eraseDisplayBelow","_doesSupportColor","isTTy","isTTY"],"sources":["../../src/interfaces/TerminalInterface.ts"],"sourcesContent":["import path from 'path'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport {\n\tFieldFactory,\n\tFieldDefinitionValueType,\n\tareSchemaValuesValid,\n} from '@sprucelabs/schema'\nimport { IField } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\n// @ts-ignore\nimport fonts from 'cfonts'\nimport chalk from 'chalk'\n// @ts-ignore No definition available\nimport Table from 'cli-table3'\n// @ts-ignore No definition available\nimport emphasize from 'emphasize'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport inquirer from 'inquirer'\nimport _ from 'lodash'\nimport { filter } from 'lodash'\nimport ora from 'ora'\nimport { terminal } from 'terminal-kit'\nimport { ProgressBarController } from 'terminal-kit/Terminal'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport SpruceError from '../errors/SpruceError'\nimport featuresUtil from '../features/feature.utilities'\nimport { ExecutionResults, GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tImageDimensions,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport isCi from '../utilities/isCi'\nconst terminalImage = require('terminal-image')\n\nlet fieldCount = 0\nfunction generateInquirerFieldName() {\n\tfieldCount++\n\treturn `field-${fieldCount}`\n}\n\n/** Remove effects cfonts does not support */\nfunction filterEffectsForCFonts(effects: GraphicsTextEffect[]) {\n\treturn filter(\n\t\teffects,\n\t\t(effect) =>\n\t\t\t[\n\t\t\t\tGraphicsTextEffect.SpruceHeader,\n\t\t\t\tGraphicsTextEffect.Reset,\n\t\t\t\tGraphicsTextEffect.Bold,\n\t\t\t\tGraphicsTextEffect.Dim,\n\t\t\t\tGraphicsTextEffect.Italic,\n\t\t\t\tGraphicsTextEffect.Underline,\n\t\t\t\tGraphicsTextEffect.Inverse,\n\t\t\t\tGraphicsTextEffect.Hidden,\n\t\t\t\tGraphicsTextEffect.Strikethrough,\n\t\t\t\tGraphicsTextEffect.Visible,\n\t\t\t].indexOf(effect) === -1\n\t)\n}\n\ntype TerminalSpecificOptions = {\n\teraseBeforeRender?: boolean\n}\n\nexport default class TerminalInterface implements GraphicsInterface {\n\tpublic isPromptActive = false\n\tpublic cwd: string\n\tprivate renderStackTraces = false\n\tprivate static loader?: ora.Ora | null\n\tprivate progressBar: ProgressBarController | null = null\n\tprivate static _doesSupportColor = process?.stdout?.isTTY && !isCi()\n\tprivate log: (...args: any[]) => void\n\n\tpublic constructor(\n\t\tcwd: string,\n\t\trenderStackTraces = false,\n\t\tlog = console.log.bind(console)\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.renderStackTraces = renderStackTraces\n\t\tthis.log = log\n\t}\n\n\tpublic static doesSupportColor() {\n\t\treturn this._doesSupportColor\n\t}\n\n\tpublic static setDoesSupportColor(isTTy: boolean) {\n\t\tthis._doesSupportColor = isTTy\n\t}\n\n\tpublic async sendInput(): Promise<void> {\n\t\tthrow new Error('sendInput not supported on the TerminalInterface!')\n\t}\n\n\tpublic renderLines(lines: any[], effects?: GraphicsTextEffect[]) {\n\t\tlines.forEach((line) => {\n\t\t\tthis.renderLine(line, effects)\n\t\t})\n\t}\n\n\tpublic renderObject(\n\t\tobject: Record<string, any>,\n\t\teffects: GraphicsTextEffect[] = [GraphicsTextEffect.Green]\n\t) {\n\t\tthis.renderLine('')\n\t\tthis.renderDivider()\n\t\tthis.renderLine('')\n\t\tObject.keys(object).forEach((key) => {\n\t\t\tthis.renderLine(\n\t\t\t\t`${chalk.bold(key)}: ${\n\t\t\t\t\ttypeof object[key] === 'string'\n\t\t\t\t\t\t? object[key]\n\t\t\t\t\t\t: JSON.stringify(object[key])\n\t\t\t\t}`,\n\t\t\t\teffects\n\t\t\t)\n\t\t})\n\t\tthis.renderLine('')\n\t\tthis.renderDivider()\n\t\tthis.renderLine('')\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline?: string\n\t\tlines?: string[]\n\t\tobject?: Record<string, any>\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t}) {\n\t\tconst {\n\t\t\theadline,\n\t\t\tlines,\n\t\t\tobject,\n\t\t\tdividerEffects = [],\n\t\t\theadlineEffects = [GraphicsTextEffect.Blue, GraphicsTextEffect.Bold],\n\t\t\tbodyEffects = [GraphicsTextEffect.Green],\n\t\t} = options\n\n\t\tif (headline) {\n\t\t\tthis.renderHeadline(`${headline} 🌲🤖`, headlineEffects, dividerEffects)\n\t\t}\n\n\t\tif (lines) {\n\t\t\tthis.renderLines(lines, bodyEffects)\n\n\t\t\tthis.renderLine('')\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t}\n\n\t\tif (object) {\n\t\t\tthis.renderObject(object, bodyEffects)\n\t\t}\n\n\t\tthis.renderLine('')\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[]) {\n\t\tconst bar = '=================================================='\n\t\tthis.renderLine(bar, effects)\n\t}\n\n\tpublic renderActionSummary(\n\t\tresults: ExecutionResults & { totalTime?: number }\n\t) {\n\t\tconst generatedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'generated') ?? []\n\t\tconst updatedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'updated') ?? []\n\t\tconst skippedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'skipped') ?? []\n\n\t\tconst errors = results.errors ?? []\n\t\tconst packagesInstalled = results.packagesInstalled ?? []\n\n\t\tthis.renderHero(`${results.headline}`)\n\n\t\tlet summaryLines: string[] = [\n\t\t\terrors.length > 0 ? `Errors: ${errors.length}` : null,\n\t\t\tgeneratedFiles.length > 0\n\t\t\t\t? `Generated files: ${generatedFiles.length}`\n\t\t\t\t: null,\n\t\t\tupdatedFiles.length > 0 ? `Updated files: ${updatedFiles.length}` : null,\n\t\t\tskippedFiles.length > 0 ? `Skipped files: ${skippedFiles.length}` : null,\n\t\t\tpackagesInstalled.length > 0\n\t\t\t\t? `NPM packages installed: ${packagesInstalled.length}`\n\t\t\t\t: null,\n\t\t\t...(results.summaryLines ?? []),\n\t\t].filter((line) => !!line) as string[]\n\n\t\tif (summaryLines.length === 0) {\n\t\t\tsummaryLines.push('Nothing to report!')\n\t\t}\n\t\tthis.renderSection({\n\t\t\theadline: `${featuresUtil.generateCommand(\n\t\t\t\tresults.featureCode,\n\t\t\t\tresults.actionCode\n\t\t\t)} summary`,\n\t\t\tlines: summaryLines,\n\t\t})\n\n\t\tif (packagesInstalled.length > 0) {\n\t\t\tconst table = new Table({\n\t\t\t\thead: ['Name', 'Dev'],\n\t\t\t\tcolWidths: [40, 5],\n\t\t\t\twordWrap: true,\n\t\t\t\tcolAligns: ['left', 'center'],\n\t\t\t})\n\t\t\tpackagesInstalled\n\t\t\t\t.sort((one, two) => (one.name > two.name ? 1 : -1))\n\t\t\t\t.forEach((pkg) => {\n\t\t\t\t\ttable.push([pkg.name, pkg.isDev ? '√' : ''])\n\t\t\t\t})\n\n\t\t\tthis.renderSection({\n\t\t\t\theadline: `NPM packages summary`,\n\t\t\t\tlines: [table.toString()],\n\t\t\t})\n\t\t}\n\n\t\tfor (let files of [generatedFiles, updatedFiles]) {\n\t\t\tif (files.length > 0) {\n\t\t\t\tconst table = new Table({\n\t\t\t\t\thead: ['File', 'Description'],\n\t\t\t\t\twordWrap: true,\n\t\t\t\t})\n\n\t\t\t\tfiles = files.sort()\n\n\t\t\t\tfor (const file of files) {\n\t\t\t\t\ttable.push([file.name, file.description ?? ''])\n\t\t\t\t}\n\n\t\t\t\tthis.renderSection({\n\t\t\t\t\theadline: `${namesUtil.toPascal(files[0].action)} file summary`,\n\t\t\t\t\tlines: [table.toString()],\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tif (results.hints) {\n\t\t\tthis.renderSection({\n\t\t\t\theadline: 'Read below 👇',\n\t\t\t\tlines: results.hints,\n\t\t\t})\n\t\t}\n\n\t\tif (errors.length > 0) {\n\t\t\tthis.renderHeadline('Errors')\n\t\t\terrors.forEach((err) => this.renderError(err))\n\t\t}\n\n\t\tif (results.totalTime) {\n\t\t\tthis.renderLine(\n\t\t\t\t`Total time: ${durationUtil.msToFriendly(results.totalTime)}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[] = [\n\t\t\tGraphicsTextEffect.Blue,\n\t\t\tGraphicsTextEffect.Bold,\n\t\t],\n\t\tdividerEffects: GraphicsTextEffect[] = []\n\t) {\n\t\tconst isSpruce = effects.indexOf(GraphicsTextEffect.SpruceHeader) > -1\n\n\t\tif (isSpruce) {\n\t\t\tfonts.say(message, {\n\t\t\t\tfont: GraphicsTextEffect.SpruceHeader,\n\t\t\t\talign: 'left',\n\t\t\t\tspace: false,\n\t\t\t\tcolors: filterEffectsForCFonts(effects),\n\t\t\t})\n\t\t} else {\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t\tthis.renderLine(message, effects)\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t\tthis.renderLine('')\n\t\t}\n\t}\n\n\tpublic renderHero(message: string, effects?: GraphicsTextEffect[]) {\n\t\tconst shouldStripVowels = process.stdout.columns < 80\n\n\t\tconst stripped = shouldStripVowels\n\t\t\t? message.replace(/[aeiou]/gi, '')\n\t\t\t: message\n\n\t\tfonts.say(stripped, {\n\t\t\t// Font: 'tiny',\n\t\t\talign: 'left',\n\t\t\tgradient: [GraphicsTextEffect.Red, GraphicsTextEffect.Blue],\n\t\t\tcolors: effects ? filterEffectsForCFonts(effects) : undefined,\n\t\t})\n\t}\n\n\tpublic renderHint(message: string) {\n\t\treturn this.renderLine(`👨‍🏫 ${message}`)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: any,\n\t\teffects: GraphicsTextEffect[] = [],\n\t\toptions?: TerminalSpecificOptions\n\t) {\n\t\tlet write: any = chalk\n\t\teffects.forEach((effect) => {\n\t\t\twrite = write[effect]\n\t\t})\n\n\t\tif (options?.eraseBeforeRender) {\n\t\t\tterminal.eraseLine()\n\t\t}\n\n\t\tthis.log(effects.length > 0 ? write(message) : message)\n\t}\n\n\tpublic renderWarning(message: string) {\n\t\tthis.renderLine(`⚠️ ${message}`, [\n\t\t\tGraphicsTextEffect.Bold,\n\t\t\tGraphicsTextEffect.Yellow,\n\t\t])\n\t}\n\n\tpublic async startLoading(message?: string) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.stopLoading()\n\t\tTerminalInterface.loader = ora({\n\t\t\ttext: message,\n\t\t}).start()\n\t}\n\n\tpublic async stopLoading() {\n\t\tTerminalInterface.loader?.stop()\n\t\tTerminalInterface.loader = null\n\t}\n\n\tpublic async confirm(question: string): Promise<boolean> {\n\t\tconst confirmResult = await inquirer.prompt({\n\t\t\ttype: 'confirm',\n\t\t\tname: 'answer',\n\t\t\tmessage: question,\n\t\t})\n\n\t\treturn !!confirmResult.answer\n\t}\n\n\tpublic async waitForEnter(message?: string) {\n\t\tawait this.prompt({\n\t\t\ttype: 'text',\n\t\t\tlabel: `${message ? message + ' ' : ''}${chalk.bgGreenBright.black(\n\t\t\t\t'hit enter'\n\t\t\t)}`,\n\t\t})\n\t\tthis.renderLine('')\n\t\treturn\n\t}\n\n\tpublic clear() {\n\t\tvoid this.stopLoading()\n\t\tconsole.clear()\n\t}\n\n\tpublic renderCodeSample(code: string) {\n\t\ttry {\n\t\t\tconst colored = emphasize.highlight('js', code).value\n\t\t\tthis.renderLine(colored)\n\t\t} catch (err: any) {\n\t\t\tthis.renderWarning(err)\n\t\t}\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(\n\t\tdefinition: T\n\t): Promise<FieldDefinitionValueType<T>> {\n\t\tthis.isPromptActive = true\n\t\tconst name = generateInquirerFieldName()\n\t\tconst fieldDefinition: FieldDefinitions = definition\n\t\tconst { defaultValue } = fieldDefinition\n\n\t\tconst promptOptions: Record<string, any> = {\n\t\t\tdefault: defaultValue,\n\t\t\tname,\n\t\t\tmessage: this.generatePromptLabel(fieldDefinition),\n\t\t}\n\n\t\tconst field = FieldFactory.Field('prompt', fieldDefinition)\n\n\t\tpromptOptions.transformer = (value: string) => {\n\t\t\treturn (field as IField<any>).toValueType(value)\n\t\t}\n\n\t\tpromptOptions.validate = (value: string) => {\n\t\t\treturn areSchemaValuesValid(\n\t\t\t\t{\n\t\t\t\t\tid: 'promptvalidateschema',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tprompt: fieldDefinition,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ prompt: value }\n\t\t\t)\n\t\t\t// return field.validate(value, {}).length === 0\n\t\t}\n\n\t\tswitch (fieldDefinition.type) {\n\t\t\t// Map select options to prompt list choices\n\t\t\tcase 'boolean':\n\t\t\t\tpromptOptions.type = 'confirm'\n\t\t\t\tbreak\n\n\t\t\tcase 'select':\n\t\t\t\tpromptOptions.type = fieldDefinition.isArray ? 'checkbox' : 'list'\n\n\t\t\t\tpromptOptions.choices = fieldDefinition.options.choices.map(\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t(choice) => ({\n\t\t\t\t\t\tname: choice.label,\n\t\t\t\t\t\tvalue: choice.value,\n\t\t\t\t\t\tchecked: _.includes(fieldDefinition.defaultValue, choice.value),\n\t\t\t\t\t})\n\t\t\t\t)\n\n\t\t\t\tbreak\n\t\t\t// Directory select\n\t\t\t// File select\n\t\t\tcase 'directory': {\n\t\t\t\tif (fieldDefinition.isArray) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t\t'isArray file field not supported, prompt needs to be rewritten with isArray support',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst dirPath = path.join(\n\t\t\t\t\tfieldDefinition.defaultValue?.path ?? this.cwd,\n\t\t\t\t\t'/'\n\t\t\t\t)\n\n\t\t\t\tpromptOptions.type = 'file'\n\t\t\t\tpromptOptions.root = dirPath\n\t\t\t\tpromptOptions.onlyShowDir = true\n\n\t\t\t\t// Only let people select an actual file\n\t\t\t\tpromptOptions.validate = (value: string) => {\n\t\t\t\t\treturn fs.existsSync(value) && fs.lstatSync(value).isDirectory()\n\t\t\t\t}\n\t\t\t\t// Strip out cwd from the paths while selecting\n\t\t\t\tpromptOptions.transformer = (path: string) => {\n\t\t\t\t\tconst cleanedPath = path.replace(promptOptions.root, '')\n\t\t\t\t\treturn cleanedPath.length === 0 ? promptOptions.root : cleanedPath\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'file': {\n\t\t\t\tif (fieldDefinition.isArray) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t\t'isArray file field not supported, prompt needs to be rewritten with isArray support',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tconst dirPath = path.join(\n\t\t\t\t\tfieldDefinition.defaultValue?.path ?? this.cwd,\n\t\t\t\t\t'/'\n\t\t\t\t)\n\n\t\t\t\t// Check if directory is empty.\n\t\t\t\tconst files = await globby(`${dirPath}**/*`)\n\n\t\t\t\tif (files.length === 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'DIRECTORY_EMPTY',\n\t\t\t\t\t\tdirectory: dirPath,\n\t\t\t\t\t\tfriendlyMessage: `I wanted to help you select a file, but none exist in ${dirPath}.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tpromptOptions.type = 'file'\n\t\t\t\tpromptOptions.root = dirPath\n\n\t\t\t\t// Only let people select an actual file\n\t\t\t\tpromptOptions.validate = (value: string) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tfs.existsSync(value) &&\n\t\t\t\t\t\t!fs.lstatSync(value).isDirectory() &&\n\t\t\t\t\t\tpath.extname(value) === '.ts'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\t// Strip out cwd from the paths while selecting\n\t\t\t\tpromptOptions.transformer = (path: string) => {\n\t\t\t\t\tconst cleanedPath = path.replace(promptOptions.root, '')\n\t\t\t\t\treturn cleanedPath.length === 0 ? promptOptions.root : cleanedPath\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Defaults to input\n\t\t\tdefault:\n\t\t\t\tpromptOptions.type = 'input'\n\t\t}\n\n\t\tconst response = (await inquirer.prompt(promptOptions)) as any\n\n\t\tthis.isPromptActive = false\n\n\t\tconst result =\n\t\t\ttypeof response[name] !== 'undefined'\n\t\t\t\t? (field as IField<any>).toValueType(response[name])\n\t\t\t\t: response[name]\n\n\t\treturn result\n\t}\n\tprivate generatePromptLabel(fieldDefinition: FieldDefinitions): any {\n\t\tlet label = fieldDefinition.label\n\n\t\tif (fieldDefinition.hint) {\n\t\t\tlabel = `${label} ${chalk.italic.dim(`(${fieldDefinition.hint})`)}`\n\t\t}\n\n\t\tlabel = label + ': '\n\n\t\treturn label\n\t}\n\n\tpublic renderError(err: Error) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.stopLoading()\n\n\t\tconst message = err.message\n\t\t// Remove message from stack so the message is not doubled up\n\t\tconst stackLines = this.cleanStack(err)\n\t\tthis.renderSection({\n\t\t\theadline: message,\n\t\t\tlines: this.renderStackTraces ? stackLines.splice(0, 100) : undefined,\n\t\t\theadlineEffects: [GraphicsTextEffect.Bold, GraphicsTextEffect.Red],\n\t\t\tdividerEffects: [GraphicsTextEffect.Red],\n\t\t\tbodyEffects: [GraphicsTextEffect.Red],\n\t\t})\n\t}\n\n\tprivate cleanStack(err: Error) {\n\t\tconst message = err.message\n\t\tlet stack = err.stack ? err.stack.replace(message, '') : ''\n\n\t\tif (err instanceof AbstractSpruceError) {\n\t\t\tlet original = err.originalError\n\t\t\twhile (original) {\n\t\t\t\tstack = stack.replace('Error: ' + original.message, '')\n\t\t\t\toriginal = (original as AbstractSpruceError).originalError\n\t\t\t}\n\t\t}\n\n\t\tconst stackLines = stack.split('\\n')\n\n\t\treturn stackLines\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.removeProgressBar()\n\t\tthis.progressBar = terminal.progressBar({\n\t\t\t...options,\n\t\t\tpercent: options.showPercent,\n\t\t\teta: options.showEta,\n\t\t\titems: options.totalItems,\n\t\t\tinline: options.renderInline,\n\t\t})\n\t}\n\n\tpublic removeProgressBar() {\n\t\tif (this.progressBar) {\n\t\t\tthis.progressBar.stop()\n\t\t\tthis.progressBar = null\n\t\t}\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tif (this.progressBar) {\n\t\t\tthis.progressBar.update({\n\t\t\t\t...options,\n\t\t\t\titems: options.totalItems,\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tconst image = await terminalImage.file(path, options)\n\t\tthis.renderLine(image)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\treturn new Promise((resolve) => {\n\t\t\tterminal.requestCursorLocation()\n\t\t\tterminal.getCursorLocation((err, x, y) => {\n\t\t\t\tresolve(err ? null : { x: x ?? 0, y: y ?? 0 })\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic saveCursor() {\n\t\tterminal.saveCursor()\n\t}\n\n\tpublic restoreCursor() {\n\t\tterminal.restoreCursor()\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tterminal.moveTo(x, y)\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tterminal.eraseDisplayBelow()\n\t}\n\n\tpublic eraseLine() {\n\t\tterminal.eraseLine()\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TerminalInterface.js","names":["terminalImage","require","fieldCount","generateInquirerFieldName","filterEffectsForCFonts","effects","effect","GraphicsTextEffect","SpruceHeader","Reset","Bold","Dim","Italic","Underline","Inverse","Hidden","Strikethrough","Visible","indexOf","TerminalInterface","cwd","renderStackTraces","log","console","bind","Error","lines","forEach","line","renderLine","object","Green","renderDivider","Object","keys","key","chalk","bold","JSON","stringify","options","headline","dividerEffects","headlineEffects","Blue","bodyEffects","renderHeadline","renderLines","renderObject","bar","results","generatedFiles","files","filter","f","action","updatedFiles","skippedFiles","errors","packagesInstalled","renderHero","summaryLines","length","push","renderSection","featuresUtil","generateCommand","featureCode","actionCode","table","Table","head","colWidths","wordWrap","colAligns","sort","one","two","name","pkg","isDev","toString","file","description","namesUtil","toPascal","hints","err","renderError","totalTime","durationUtil","msToFriendly","message","isSpruce","fonts","say","font","align","space","colors","shouldStripVowels","process","stdout","columns","stripped","replace","gradient","Red","undefined","write","eraseBeforeRender","terminal","eraseLine","Yellow","stopLoading","loader","text","start","stop","question","inquirer","prompt","type","confirmResult","answer","label","bgGreenBright","black","clear","code","colored","emphasize","highlight","value","renderWarning","definition","isPromptActive","fieldDefinition","defaultValue","promptOptions","generatePromptLabel","field","FieldFactory","Field","transformer","toValueType","validate","id","fields","isArray","choices","map","choice","checked","_","includes","SpruceError","friendlyMessage","dirPath","path","join","root","onlyShowDir","fs","existsSync","lstatSync","isDirectory","cleanedPath","uri","directory","extname","response","result","hint","italic","dim","stackLines","cleanStack","splice","stack","AbstractSpruceError","original","originalError","split","removeProgressBar","progressBar","percent","showPercent","eta","showEta","items","totalItems","inline","renderInline","update","image","Promise","resolve","requestCursorLocation","getCursorLocation","x","y","saveCursor","restoreCursor","moveTo","eraseDisplayBelow","_doesSupportColor","isTTy","isTTY"],"sources":["../../src/interfaces/TerminalInterface.ts"],"sourcesContent":["import path from 'path'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport {\n\tFieldFactory,\n\tFieldDefinitionValueType,\n\tareSchemaValuesValid,\n} from '@sprucelabs/schema'\nimport { IField } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\n// @ts-ignore\nimport fonts from 'cfonts'\nimport chalk from 'chalk'\n// @ts-ignore No definition available\nimport Table from 'cli-table3'\n// @ts-ignore No definition available\nimport emphasize from 'emphasize'\nimport fs from 'fs-extra'\nimport globby from 'globby'\nimport inquirer from 'inquirer'\nimport _ from 'lodash'\nimport { filter } from 'lodash'\nimport ora from 'ora'\nimport { terminal } from 'terminal-kit'\nimport { ProgressBarController } from 'terminal-kit/Terminal'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport SpruceError from '../errors/SpruceError'\nimport featuresUtil from '../features/feature.utilities'\nimport { ExecutionResults, GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tImageDimensions,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport isCi from '../utilities/isCi'\nconst terminalImage = require('terminal-image')\n\nlet fieldCount = 0\nfunction generateInquirerFieldName() {\n\tfieldCount++\n\treturn `field-${fieldCount}`\n}\n\n/** Remove effects cfonts does not support */\nfunction filterEffectsForCFonts(effects: GraphicsTextEffect[]) {\n\treturn filter(\n\t\teffects,\n\t\t(effect) =>\n\t\t\t[\n\t\t\t\tGraphicsTextEffect.SpruceHeader,\n\t\t\t\tGraphicsTextEffect.Reset,\n\t\t\t\tGraphicsTextEffect.Bold,\n\t\t\t\tGraphicsTextEffect.Dim,\n\t\t\t\tGraphicsTextEffect.Italic,\n\t\t\t\tGraphicsTextEffect.Underline,\n\t\t\t\tGraphicsTextEffect.Inverse,\n\t\t\t\tGraphicsTextEffect.Hidden,\n\t\t\t\tGraphicsTextEffect.Strikethrough,\n\t\t\t\tGraphicsTextEffect.Visible,\n\t\t\t].indexOf(effect) === -1\n\t)\n}\n\ntype TerminalSpecificOptions = {\n\teraseBeforeRender?: boolean\n}\n\nexport default class TerminalInterface implements GraphicsInterface {\n\tpublic isPromptActive = false\n\tpublic cwd: string\n\tprivate renderStackTraces = false\n\tprivate static loader?: ora.Ora | null\n\tprivate progressBar: ProgressBarController | null = null\n\tprivate static _doesSupportColor = process?.stdout?.isTTY && !isCi()\n\tprivate log: (...args: any[]) => void\n\n\tpublic constructor(\n\t\tcwd: string,\n\t\trenderStackTraces = false,\n\t\tlog = console.log.bind(console)\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.renderStackTraces = renderStackTraces\n\t\tthis.log = log\n\t}\n\n\tpublic static doesSupportColor() {\n\t\treturn this._doesSupportColor\n\t}\n\n\tpublic static setDoesSupportColor(isTTy: boolean) {\n\t\tthis._doesSupportColor = isTTy\n\t}\n\n\tpublic async sendInput(): Promise<void> {\n\t\tthrow new Error('sendInput not supported on the TerminalInterface!')\n\t}\n\n\tpublic renderLines(lines: any[], effects?: GraphicsTextEffect[]) {\n\t\tlines.forEach((line) => {\n\t\t\tthis.renderLine(line, effects)\n\t\t})\n\t}\n\n\tpublic renderObject(\n\t\tobject: Record<string, any>,\n\t\teffects: GraphicsTextEffect[] = [GraphicsTextEffect.Green]\n\t) {\n\t\tthis.renderLine('')\n\t\tthis.renderDivider()\n\t\tthis.renderLine('')\n\t\tObject.keys(object).forEach((key) => {\n\t\t\tthis.renderLine(\n\t\t\t\t`${chalk.bold(key)}: ${\n\t\t\t\t\ttypeof object[key] === 'string'\n\t\t\t\t\t\t? object[key]\n\t\t\t\t\t\t: JSON.stringify(object[key])\n\t\t\t\t}`,\n\t\t\t\teffects\n\t\t\t)\n\t\t})\n\t\tthis.renderLine('')\n\t\tthis.renderDivider()\n\t\tthis.renderLine('')\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline?: string\n\t\tlines?: string[]\n\t\tobject?: Record<string, any>\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t}) {\n\t\tconst {\n\t\t\theadline,\n\t\t\tlines,\n\t\t\tobject,\n\t\t\tdividerEffects = [],\n\t\t\theadlineEffects = [GraphicsTextEffect.Blue, GraphicsTextEffect.Bold],\n\t\t\tbodyEffects = [GraphicsTextEffect.Green],\n\t\t} = options\n\n\t\tif (headline) {\n\t\t\tthis.renderHeadline(`${headline} 🌲🤖`, headlineEffects, dividerEffects)\n\t\t}\n\n\t\tif (lines) {\n\t\t\tthis.renderLines(lines, bodyEffects)\n\n\t\t\tthis.renderLine('')\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t}\n\n\t\tif (object) {\n\t\t\tthis.renderObject(object, bodyEffects)\n\t\t}\n\n\t\tthis.renderLine('')\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[]) {\n\t\tconst bar = '=================================================='\n\t\tthis.renderLine(bar, effects)\n\t}\n\n\tpublic renderActionSummary(\n\t\tresults: ExecutionResults & { totalTime?: number }\n\t) {\n\t\tconst generatedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'generated') ?? []\n\t\tconst updatedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'updated') ?? []\n\t\tconst skippedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'skipped') ?? []\n\n\t\tconst errors = results.errors ?? []\n\t\tconst packagesInstalled = results.packagesInstalled ?? []\n\n\t\tthis.renderHero(`${results.headline}`)\n\n\t\tlet summaryLines: string[] = [\n\t\t\terrors.length > 0 ? `Errors: ${errors.length}` : null,\n\t\t\tgeneratedFiles.length > 0\n\t\t\t\t? `Generated files: ${generatedFiles.length}`\n\t\t\t\t: null,\n\t\t\tupdatedFiles.length > 0 ? `Updated files: ${updatedFiles.length}` : null,\n\t\t\tskippedFiles.length > 0 ? `Skipped files: ${skippedFiles.length}` : null,\n\t\t\tpackagesInstalled.length > 0\n\t\t\t\t? `NPM packages installed: ${packagesInstalled.length}`\n\t\t\t\t: null,\n\t\t\t...(results.summaryLines ?? []),\n\t\t].filter((line) => !!line) as string[]\n\n\t\tif (summaryLines.length === 0) {\n\t\t\tsummaryLines.push('Nothing to report!')\n\t\t}\n\t\tthis.renderSection({\n\t\t\theadline: `${featuresUtil.generateCommand(\n\t\t\t\tresults.featureCode,\n\t\t\t\tresults.actionCode\n\t\t\t)} summary`,\n\t\t\tlines: summaryLines,\n\t\t})\n\n\t\tif (packagesInstalled.length > 0) {\n\t\t\tconst table = new Table({\n\t\t\t\thead: ['Name', 'Dev'],\n\t\t\t\tcolWidths: [40, 5],\n\t\t\t\twordWrap: true,\n\t\t\t\tcolAligns: ['left', 'center'],\n\t\t\t})\n\t\t\tpackagesInstalled\n\t\t\t\t.sort((one, two) => (one.name > two.name ? 1 : -1))\n\t\t\t\t.forEach((pkg) => {\n\t\t\t\t\ttable.push([pkg.name, pkg.isDev ? '√' : ''])\n\t\t\t\t})\n\n\t\t\tthis.renderSection({\n\t\t\t\theadline: `NPM packages summary`,\n\t\t\t\tlines: [table.toString()],\n\t\t\t})\n\t\t}\n\n\t\tfor (let files of [generatedFiles, updatedFiles]) {\n\t\t\tif (files.length > 0) {\n\t\t\t\tconst table = new Table({\n\t\t\t\t\thead: ['File', 'Description'],\n\t\t\t\t\twordWrap: true,\n\t\t\t\t})\n\n\t\t\t\tfiles = files.sort()\n\n\t\t\t\tfor (const file of files) {\n\t\t\t\t\ttable.push([file.name, file.description ?? ''])\n\t\t\t\t}\n\n\t\t\t\tthis.renderSection({\n\t\t\t\t\theadline: `${namesUtil.toPascal(files[0].action)} file summary`,\n\t\t\t\t\tlines: [table.toString()],\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tif (results.hints) {\n\t\t\tthis.renderSection({\n\t\t\t\theadline: 'Read below 👇',\n\t\t\t\tlines: results.hints,\n\t\t\t})\n\t\t}\n\n\t\tif (errors.length > 0) {\n\t\t\tthis.renderHeadline('Errors')\n\t\t\terrors.forEach((err) => this.renderError(err))\n\t\t}\n\n\t\tif (results.totalTime) {\n\t\t\tthis.renderLine(\n\t\t\t\t`Total time: ${durationUtil.msToFriendly(results.totalTime)}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[] = [\n\t\t\tGraphicsTextEffect.Blue,\n\t\t\tGraphicsTextEffect.Bold,\n\t\t],\n\t\tdividerEffects: GraphicsTextEffect[] = []\n\t) {\n\t\tconst isSpruce = effects.indexOf(GraphicsTextEffect.SpruceHeader) > -1\n\n\t\tif (isSpruce) {\n\t\t\tfonts.say(message, {\n\t\t\t\tfont: GraphicsTextEffect.SpruceHeader,\n\t\t\t\talign: 'left',\n\t\t\t\tspace: false,\n\t\t\t\tcolors: filterEffectsForCFonts(effects),\n\t\t\t})\n\t\t} else {\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t\tthis.renderLine(message, effects)\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t\tthis.renderLine('')\n\t\t}\n\t}\n\n\tpublic renderHero(message: string, effects?: GraphicsTextEffect[]) {\n\t\tconst shouldStripVowels = process.stdout.columns < 80\n\n\t\tconst stripped = shouldStripVowels\n\t\t\t? message.replace(/[aeiou]/gi, '')\n\t\t\t: message\n\n\t\tfonts.say(stripped, {\n\t\t\t// Font: 'tiny',\n\t\t\talign: 'left',\n\t\t\tgradient: [GraphicsTextEffect.Red, GraphicsTextEffect.Blue],\n\t\t\tcolors: effects ? filterEffectsForCFonts(effects) : undefined,\n\t\t})\n\t}\n\n\tpublic renderHint(message: string) {\n\t\treturn this.renderLine(`👨‍🏫 ${message}`)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: any,\n\t\teffects: GraphicsTextEffect[] = [],\n\t\toptions?: TerminalSpecificOptions\n\t) {\n\t\tlet write: any = chalk\n\t\teffects.forEach((effect) => {\n\t\t\twrite = write[effect]\n\t\t})\n\n\t\tif (options?.eraseBeforeRender) {\n\t\t\tterminal.eraseLine()\n\t\t}\n\n\t\tthis.log(effects.length > 0 ? write(message) : message)\n\t}\n\n\tpublic renderWarning(message: string) {\n\t\tthis.renderLine(`⚠️ ${message}`, [\n\t\t\tGraphicsTextEffect.Bold,\n\t\t\tGraphicsTextEffect.Yellow,\n\t\t])\n\t}\n\n\tpublic async startLoading(message?: string) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.stopLoading()\n\t\tTerminalInterface.loader = ora({\n\t\t\ttext: message,\n\t\t}).start()\n\t}\n\n\tpublic async stopLoading() {\n\t\tTerminalInterface.loader?.stop()\n\t\tTerminalInterface.loader = null\n\t}\n\n\tpublic async confirm(question: string): Promise<boolean> {\n\t\tconst confirmResult = await inquirer.prompt({\n\t\t\ttype: 'confirm',\n\t\t\tname: 'answer',\n\t\t\tmessage: question,\n\t\t})\n\n\t\treturn !!confirmResult.answer\n\t}\n\n\tpublic async waitForEnter(message?: string) {\n\t\tawait this.prompt({\n\t\t\ttype: 'text',\n\t\t\tlabel: `${message ? message + ' ' : ''}${chalk.bgGreenBright.black(\n\t\t\t\t'hit enter'\n\t\t\t)}`,\n\t\t})\n\t\tthis.renderLine('')\n\t\treturn\n\t}\n\n\tpublic clear() {\n\t\tvoid this.stopLoading()\n\t\tconsole.clear()\n\t}\n\n\tpublic renderCodeSample(code: string) {\n\t\ttry {\n\t\t\tconst colored = emphasize.highlight('js', code).value\n\t\t\tthis.renderLine(colored)\n\t\t} catch (err: any) {\n\t\t\tthis.renderWarning(err)\n\t\t}\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(\n\t\tdefinition: T\n\t): Promise<FieldDefinitionValueType<T>> {\n\t\tthis.isPromptActive = true\n\t\tconst name = generateInquirerFieldName()\n\t\tconst fieldDefinition: FieldDefinitions = definition\n\t\tconst { defaultValue } = fieldDefinition\n\n\t\tconst promptOptions: Record<string, any> = {\n\t\t\tdefault: defaultValue,\n\t\t\tname,\n\t\t\tmessage: this.generatePromptLabel(fieldDefinition),\n\t\t}\n\n\t\tconst field = FieldFactory.Field('prompt', fieldDefinition)\n\n\t\tpromptOptions.transformer = (value: string) => {\n\t\t\treturn (field as IField<any>).toValueType(value)\n\t\t}\n\n\t\tpromptOptions.validate = (value: string) => {\n\t\t\treturn areSchemaValuesValid(\n\t\t\t\t{\n\t\t\t\t\tid: 'promptvalidateschema',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tprompt: fieldDefinition,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ prompt: value }\n\t\t\t)\n\t\t\t// return field.validate(value, {}).length === 0\n\t\t}\n\n\t\tswitch (fieldDefinition.type) {\n\t\t\t// Map select options to prompt list choices\n\t\t\tcase 'boolean':\n\t\t\t\tpromptOptions.type = 'confirm'\n\t\t\t\tbreak\n\n\t\t\tcase 'select':\n\t\t\t\tpromptOptions.type = fieldDefinition.isArray ? 'checkbox' : 'list'\n\n\t\t\t\tpromptOptions.choices = fieldDefinition.options.choices.map(\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t(choice) => ({\n\t\t\t\t\t\tname: choice.label,\n\t\t\t\t\t\tvalue: choice.value,\n\t\t\t\t\t\tchecked: _.includes(fieldDefinition.defaultValue, choice.value),\n\t\t\t\t\t})\n\t\t\t\t)\n\n\t\t\t\tbreak\n\t\t\t// Directory select\n\t\t\t// File select\n\t\t\tcase 'directory': {\n\t\t\t\tif (fieldDefinition.isArray) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t\t'isArray file field not supported, prompt needs to be rewritten with isArray support',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst dirPath = path.join(\n\t\t\t\t\tfieldDefinition.defaultValue?.path ?? this.cwd,\n\t\t\t\t\t'/'\n\t\t\t\t)\n\n\t\t\t\tpromptOptions.type = 'file'\n\t\t\t\tpromptOptions.root = dirPath\n\t\t\t\tpromptOptions.onlyShowDir = true\n\n\t\t\t\t// Only let people select an actual file\n\t\t\t\tpromptOptions.validate = (value: string) => {\n\t\t\t\t\treturn fs.existsSync(value) && fs.lstatSync(value).isDirectory()\n\t\t\t\t}\n\t\t\t\t// Strip out cwd from the paths while selecting\n\t\t\t\tpromptOptions.transformer = (path: string) => {\n\t\t\t\t\tconst cleanedPath = path.replace(promptOptions.root, '')\n\t\t\t\t\treturn cleanedPath.length === 0 ? promptOptions.root : cleanedPath\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'file': {\n\t\t\t\tif (fieldDefinition.isArray) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t\t'isArray file field not supported, prompt needs to be rewritten with isArray support',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tconst dirPath = path.join(\n\t\t\t\t\tfieldDefinition.defaultValue?.uri ?? this.cwd,\n\t\t\t\t\t'/'\n\t\t\t\t)\n\n\t\t\t\t// Check if directory is empty.\n\t\t\t\tconst files = await globby(`${dirPath}**/*`)\n\n\t\t\t\tif (files.length === 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'DIRECTORY_EMPTY',\n\t\t\t\t\t\tdirectory: dirPath,\n\t\t\t\t\t\tfriendlyMessage: `I wanted to help you select a file, but none exist in ${dirPath}.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tpromptOptions.type = 'file'\n\t\t\t\tpromptOptions.root = dirPath\n\n\t\t\t\t// Only let people select an actual file\n\t\t\t\tpromptOptions.validate = (value: string) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tfs.existsSync(value) &&\n\t\t\t\t\t\t!fs.lstatSync(value).isDirectory() &&\n\t\t\t\t\t\tpath.extname(value) === '.ts'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\t// Strip out cwd from the paths while selecting\n\t\t\t\tpromptOptions.transformer = (path: string) => {\n\t\t\t\t\tconst cleanedPath = path.replace(promptOptions.root, '')\n\t\t\t\t\treturn cleanedPath.length === 0 ? promptOptions.root : cleanedPath\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Defaults to input\n\t\t\tdefault:\n\t\t\t\tpromptOptions.type = 'input'\n\t\t}\n\n\t\tconst response = (await inquirer.prompt(promptOptions)) as any\n\n\t\tthis.isPromptActive = false\n\n\t\tconst result =\n\t\t\ttypeof response[name] !== 'undefined'\n\t\t\t\t? (field as IField<any>).toValueType(response[name])\n\t\t\t\t: response[name]\n\n\t\treturn result\n\t}\n\tprivate generatePromptLabel(fieldDefinition: FieldDefinitions): any {\n\t\tlet label = fieldDefinition.label\n\n\t\tif (fieldDefinition.hint) {\n\t\t\tlabel = `${label} ${chalk.italic.dim(`(${fieldDefinition.hint})`)}`\n\t\t}\n\n\t\tlabel = label + ': '\n\n\t\treturn label\n\t}\n\n\tpublic renderError(err: Error) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.stopLoading()\n\n\t\tconst message = err.message\n\t\t// Remove message from stack so the message is not doubled up\n\t\tconst stackLines = this.cleanStack(err)\n\t\tthis.renderSection({\n\t\t\theadline: message,\n\t\t\tlines: this.renderStackTraces ? stackLines.splice(0, 100) : undefined,\n\t\t\theadlineEffects: [GraphicsTextEffect.Bold, GraphicsTextEffect.Red],\n\t\t\tdividerEffects: [GraphicsTextEffect.Red],\n\t\t\tbodyEffects: [GraphicsTextEffect.Red],\n\t\t})\n\t}\n\n\tprivate cleanStack(err: Error) {\n\t\tconst message = err.message\n\t\tlet stack = err.stack ? err.stack.replace(message, '') : ''\n\n\t\tif (err instanceof AbstractSpruceError) {\n\t\t\tlet original = err.originalError\n\t\t\twhile (original) {\n\t\t\t\tstack = stack.replace('Error: ' + original.message, '')\n\t\t\t\toriginal = (original as AbstractSpruceError).originalError\n\t\t\t}\n\t\t}\n\n\t\tconst stackLines = stack.split('\\n')\n\n\t\treturn stackLines\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.removeProgressBar()\n\t\tthis.progressBar = terminal.progressBar({\n\t\t\t...options,\n\t\t\tpercent: options.showPercent,\n\t\t\teta: options.showEta,\n\t\t\titems: options.totalItems,\n\t\t\tinline: options.renderInline,\n\t\t})\n\t}\n\n\tpublic removeProgressBar() {\n\t\tif (this.progressBar) {\n\t\t\tthis.progressBar.stop()\n\t\t\tthis.progressBar = null\n\t\t}\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tif (this.progressBar) {\n\t\t\tthis.progressBar.update({\n\t\t\t\t...options,\n\t\t\t\titems: options.totalItems,\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tconst image = await terminalImage.file(path, options)\n\t\tthis.renderLine(image)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\treturn new Promise((resolve) => {\n\t\t\tterminal.requestCursorLocation()\n\t\t\tterminal.getCursorLocation((err, x, y) => {\n\t\t\t\tresolve(err ? null : { x: x ?? 0, y: y ?? 0 })\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic saveCursor() {\n\t\tterminal.saveCursor()\n\t}\n\n\tpublic restoreCursor() {\n\t\tterminal.restoreCursor()\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tterminal.moveTo(x, y)\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tterminal.eraseDisplayBelow()\n\t}\n\n\tpublic eraseLine() {\n\t\tterminal.eraseLine()\n\t}\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  ]
19
19
  },
20
20
  "license": "MIT",
21
- "version": "15.4.3",
21
+ "version": "15.4.6",
22
22
  "bin": {
23
23
  "spruce": "./build/index.js"
24
24
  },
@@ -75,20 +75,20 @@
75
75
  "@babel/cli": "^7.17.10",
76
76
  "@babel/plugin-proposal-decorators": "^7.17.9",
77
77
  "@babel/runtime": "^7.17.9",
78
- "@jest/reporters": "^28.0.3",
79
- "@sprucelabs/error": "^5.0.450",
80
- "@sprucelabs/heartwood-view-controllers": "^70.15.45",
81
- "@sprucelabs/jest-json-reporter": "^6.0.373",
82
- "@sprucelabs/mercury-client": "^22.2.90",
83
- "@sprucelabs/mercury-event-emitter": "^22.2.90",
84
- "@sprucelabs/mercury-types": "^27.0.255",
85
- "@sprucelabs/schema": "^27.1.69",
86
- "@sprucelabs/spruce-core-schemas": "^25.0.110",
87
- "@sprucelabs/spruce-event-plugin": "^30.4.42",
88
- "@sprucelabs/spruce-event-utils": "^19.1.117",
89
- "@sprucelabs/spruce-skill-booter": "^30.4.42",
90
- "@sprucelabs/spruce-skill-utils": "^25.1.4",
91
- "@sprucelabs/spruce-templates": "^15.4.3",
78
+ "@jest/reporters": "^28.1.0",
79
+ "@sprucelabs/error": "^5.0.452",
80
+ "@sprucelabs/heartwood-view-controllers": "^71.0.7",
81
+ "@sprucelabs/jest-json-reporter": "^6.0.376",
82
+ "@sprucelabs/mercury-client": "^24.0.2",
83
+ "@sprucelabs/mercury-event-emitter": "^24.0.2",
84
+ "@sprucelabs/mercury-types": "^28.0.5",
85
+ "@sprucelabs/schema": "^28.0.5",
86
+ "@sprucelabs/spruce-core-schemas": "^27.0.0",
87
+ "@sprucelabs/spruce-event-plugin": "^31.0.5",
88
+ "@sprucelabs/spruce-event-utils": "^20.1.4",
89
+ "@sprucelabs/spruce-skill-booter": "^31.0.5",
90
+ "@sprucelabs/spruce-skill-utils": "^26.0.3",
91
+ "@sprucelabs/spruce-templates": "^15.4.6",
92
92
  "@typescript-eslint/eslint-plugin": "^5.17.0",
93
93
  "@typescript-eslint/parser": "^5.17.0",
94
94
  "cfonts": "^2.10.1",
@@ -119,16 +119,16 @@
119
119
  "uuid": "^8.3.2"
120
120
  },
121
121
  "devDependencies": {
122
- "@sprucelabs/data-stores": "^9.0.125",
122
+ "@sprucelabs/data-stores": "^11.0.0",
123
123
  "@sprucelabs/jest-sheets-reporter": "^1.3.43",
124
- "@sprucelabs/mercury-core-events": "^3.2.40",
125
- "@sprucelabs/resolve-path-aliases": "^1.1.37",
126
- "@sprucelabs/spruce-conversation-plugin": "^30.4.42",
127
- "@sprucelabs/spruce-deploy-plugin": "^30.4.42",
128
- "@sprucelabs/spruce-store-plugin": "^30.4.42",
129
- "@sprucelabs/spruce-test-fixtures": "^30.4.42",
130
- "@sprucelabs/test": "^7.7.311",
131
- "@sprucelabs/test-utils": "^3.0.538",
124
+ "@sprucelabs/mercury-core-events": "^4.0.2",
125
+ "@sprucelabs/resolve-path-aliases": "^1.1.40",
126
+ "@sprucelabs/spruce-conversation-plugin": "^31.0.5",
127
+ "@sprucelabs/spruce-deploy-plugin": "^31.0.5",
128
+ "@sprucelabs/spruce-store-plugin": "^31.0.5",
129
+ "@sprucelabs/spruce-test-fixtures": "^31.0.5",
130
+ "@sprucelabs/test": "^7.7.313",
131
+ "@sprucelabs/test-utils": "^3.0.541",
132
132
  "@types/blessed": "^0.1.19",
133
133
  "@types/eslint": "^8.4.2",
134
134
  "@types/fs-extra": "^9.0.13",
@@ -152,11 +152,11 @@
152
152
  "concurrently": "^7.1.0",
153
153
  "conventional-changelog-sprucelabs": "^1.1.2",
154
154
  "dotenv": "^16.0.0",
155
- "eslint": "^8.14.0",
155
+ "eslint": "^8.15.0",
156
156
  "eslint-config-spruce": "^10.11.2",
157
157
  "find-process": "^1.4.7",
158
- "jest": "^28.0.3",
159
- "jest-circus": "^28.0.3",
158
+ "jest": "^28.1.0",
159
+ "jest-circus": "^28.1.0",
160
160
  "jest-junit": "^13.2.0",
161
161
  "jest-reporters": "^0.0.2",
162
162
  "prettier": "^2.6.2",
@@ -597,5 +597,5 @@
597
597
  "terminal-kit"
598
598
  ]
599
599
  },
600
- "gitHead": "ea23c09e170951e338f9723e94734264a4649444"
600
+ "gitHead": "8776a4a6d6584e198b096310165210ebd5ff9eb6"
601
601
  }
@@ -1,6 +1,6 @@
1
1
  import { MercuryClientFactory } from '@sprucelabs/mercury-client'
2
2
  import { coreEventContracts } from '@sprucelabs/mercury-core-events'
3
- import { EventSignature } from '@sprucelabs/mercury-types'
3
+ import { EventSignature, SpruceSchemas } from '@sprucelabs/mercury-types'
4
4
  import { buildSchema } from '@sprucelabs/schema'
5
5
  import {
6
6
  buildEmitTargetAndPayloadSchema,
@@ -16,7 +16,9 @@ import {
16
16
  import { eventFaker } from '@sprucelabs/spruce-test-fixtures'
17
17
  import { test, assert } from '@sprucelabs/test'
18
18
  import { errorAssert } from '@sprucelabs/test-utils'
19
- import ListenAction from '../../../features/event/actions/ListenAction'
19
+ import ListenAction, {
20
+ CORE_EVENT_NAMESPACE,
21
+ } from '../../../features/event/actions/ListenAction'
20
22
  import AbstractEventTest from '../../../tests/AbstractEventTest'
21
23
  import testUtil from '../../../tests/utilities/test.utility'
22
24
 
@@ -106,7 +108,6 @@ export default class CreatingAListenerTest extends AbstractEventTest {
106
108
  @test()
107
109
  protected static async creatingANewListenerAsksWhichEventToListenTo() {
108
110
  await this.installEventFeature('events')
109
-
110
111
  await this.executeAndWaitForInput()
111
112
 
112
113
  let lastInvocation = this.ui.getLastInvocation()
@@ -125,41 +126,34 @@ export default class CreatingAListenerTest extends AbstractEventTest {
125
126
  this.ui.reset()
126
127
  }
127
128
 
128
- private static async executeAndWaitForInput() {
129
- void this.listen.execute({})
130
- await this.waitForInput()
131
- }
132
-
133
129
  @test()
134
130
  protected static async loadsContractsFilteringByDependencies() {
135
- await this.installEventFeature('events')
136
- MercuryClientFactory.setIsTestMode(true)
137
-
138
131
  let passedTarget: any
139
- await eventFaker.on('get-event-contracts::v2020_12_25', ({ target }) => {
132
+ await this.fakeGetEventContracts((target) => {
140
133
  passedTarget = target
141
- return {
142
- contracts: [...(coreEventContracts as any)],
143
- }
144
134
  })
145
135
 
146
136
  const namespace = 'waka'
147
- this.addDependency(namespace)
148
-
149
- await this.executeAndWaitForInput()
137
+ await this.installAddDependencyExecuteAndWaitForInput(namespace)
150
138
 
151
139
  assert.isEqualDeep(passedTarget, {
152
- namespaces: [namespace],
140
+ namespaces: [namespace, CORE_EVENT_NAMESPACE],
153
141
  })
154
142
 
155
143
  this.ui.reset()
156
144
  }
157
145
 
158
- private static addDependency(namespace: string) {
159
- const dependencies = this.Service('dependency')
160
- dependencies.add({
161
- id: namespace,
162
- namespace: 'waka',
146
+ private static async fakeGetEventContracts(
147
+ cb?: (
148
+ target?: SpruceSchemas.Mercury.v2020_12_25.GetEventContractsTarget | null
149
+ ) => void,
150
+ results?: SpruceSchemas.Mercury.v2020_12_25.GetEventContractsResponsePayload['contracts']
151
+ ) {
152
+ await eventFaker.on('get-event-contracts::v2020_12_25', ({ target }) => {
153
+ cb?.(target)
154
+ return {
155
+ contracts: results ?? [...(coreEventContracts as any)],
156
+ }
163
157
  })
164
158
  }
165
159
 
@@ -332,6 +326,29 @@ export default class CreatingAListenerTest extends AbstractEventTest {
332
326
  await this.Service('typeChecker').check(listenerPath)
333
327
  }
334
328
 
329
+ private static async installAddDependencyExecuteAndWaitForInput(
330
+ namespace: string
331
+ ) {
332
+ await this.installEventFeature('events')
333
+ MercuryClientFactory.setIsTestMode(true)
334
+ this.addDependency(namespace)
335
+ await this.executeAndWaitForInput()
336
+ return this.ui.getLastInvocation()
337
+ }
338
+
339
+ private static async executeAndWaitForInput() {
340
+ void this.listen.execute({})
341
+ await this.waitForInput()
342
+ }
343
+
344
+ private static addDependency(namespace: string) {
345
+ const dependencies = this.Service('dependency')
346
+ dependencies.add({
347
+ id: namespace,
348
+ namespace: 'waka',
349
+ })
350
+ }
351
+
335
352
  private static async installEventsAndCreateListener() {
336
353
  const cli = await this.installEventFeature('events')
337
354
 
@@ -24,7 +24,7 @@ import { FeatureActionResponse } from '../../features.types'
24
24
  import { FetchContractsOptions } from '../stores/EventStore'
25
25
 
26
26
  const SKILL_EVENT_NAMESPACE = 'skill'
27
- const CORE_EVENT_NAMESPACE = 'mercury'
27
+ export const CORE_EVENT_NAMESPACE = MERCURY_API_NAMESPACE
28
28
 
29
29
  type OptionsSchema =
30
30
  SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptionsSchema
@@ -164,7 +164,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
164
164
  namespace !== SKILL_EVENT_NAMESPACE &&
165
165
  namespace !== CORE_EVENT_NAMESPACE
166
166
  ? [namespace]
167
- : this.getDependencyNamespaces()
167
+ : [...this.getDependencyNamespaces(), 'mercury']
168
168
 
169
169
  const options: FetchContractsOptions = {
170
170
  didUpdateHandler: (msg: string) => this.ui.startLoading(msg),
@@ -8,7 +8,6 @@ import {
8
8
  } from '@sprucelabs/schema'
9
9
  import {
10
10
  personSchema,
11
- profileImageSchema,
12
11
  skillSchema,
13
12
  skillCreatorSchema,
14
13
  locationSchema,
@@ -34,7 +33,6 @@ import { InternalUpdateHandler } from '../../../types/cli.types'
34
33
 
35
34
  export const coreSchemas = {
36
35
  personSchema,
37
- profileImageSchema,
38
36
  skillSchema,
39
37
  skillCreatorSchema,
40
38
  locationSchema,
@@ -470,7 +470,7 @@ export default class TerminalInterface implements GraphicsInterface {
470
470
  })
471
471
  }
472
472
  const dirPath = path.join(
473
- fieldDefinition.defaultValue?.path ?? this.cwd,
473
+ fieldDefinition.defaultValue?.uri ?? this.cwd,
474
474
  '/'
475
475
  )
476
476
 
@@ -1 +0,0 @@
1
- export { profileImageSchema as default } from '@sprucelabs/spruce-core-schemas';
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function get() {
9
- return _spruceCoreSchemas.profileImageSchema;
10
- }
11
- });
12
-
13
- var _spruceCoreSchemas = require("@sprucelabs/spruce-core-schemas");
14
- //# sourceMappingURL=profileImage.schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profileImage.schema.js","names":[],"sources":["../../../../../src/.spruce/schemas/spruce/v2020_07_22/profileImage.schema.ts"],"sourcesContent":["export { profileImageSchema as default } from '@sprucelabs/spruce-core-schemas'\n"],"mappings":";;;;;;;;;;;;AAAA"}
@@ -1 +0,0 @@
1
- export { profileImageSchema as default } from '@sprucelabs/spruce-core-schemas'