@sprucelabs/spruce-cli 14.22.8 → 14.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.d.ts +10 -0
  3. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js +24 -0
  4. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js.map +1 -0
  5. package/build/.spruce/events/events.contract.d.ts +346 -36
  6. package/build/.spruce/events/events.contract.js +9 -1
  7. package/build/.spruce/events/events.contract.js.map +1 -1
  8. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.d.ts +20 -2
  9. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js +23 -5
  10. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js.map +1 -1
  11. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.d.ts +20 -2
  12. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js +23 -5
  13. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js.map +1 -1
  14. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.d.ts +20 -2
  15. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js +23 -5
  16. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js.map +1 -1
  17. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.d.ts +20 -2
  18. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js +23 -5
  19. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js.map +1 -1
  20. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.d.ts +15 -0
  21. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js +17 -2
  22. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js.map +1 -1
  23. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.d.ts +20 -3
  24. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js +23 -6
  25. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js.map +1 -1
  26. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.d.ts +38 -4
  27. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js +45 -11
  28. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js.map +1 -1
  29. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.d.ts +15 -0
  30. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js +17 -2
  31. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
  32. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.d.ts +21 -4
  33. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js +24 -7
  34. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
  35. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.d.ts +21 -1
  36. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js +26 -6
  37. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
  38. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
  39. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js +48 -0
  40. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js.map +1 -0
  41. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
  42. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js +48 -0
  43. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js.map +1 -0
  44. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
  45. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js +48 -0
  46. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js.map +1 -0
  47. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.d.ts +3 -0
  48. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js +28 -0
  49. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js.map +1 -0
  50. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.d.ts +3 -0
  51. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js +36 -0
  52. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js.map +1 -0
  53. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.d.ts +3 -0
  54. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js +28 -0
  55. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js.map +1 -0
  56. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.d.ts +3 -0
  57. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js +56 -0
  58. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js.map +1 -0
  59. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js +0 -10
  60. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  61. package/build/.spruce/schemas/schemas.types.d.ts +678 -604
  62. package/build/.spruce/schemas/schemas.types.js.map +1 -1
  63. package/build/__tests__/behavioral/AddingADependency.test.d.ts +9 -0
  64. package/build/__tests__/behavioral/AddingADependency.test.js +273 -0
  65. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -0
  66. package/build/__tests__/behavioral/CreatingADataStore.test.js.map +1 -1
  67. package/build/__tests__/behavioral/ManagingDependencies.test.d.ts +9 -0
  68. package/build/__tests__/behavioral/ManagingDependencies.test.js +279 -0
  69. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -0
  70. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.d.ts +8 -0
  71. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +209 -0
  72. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -0
  73. package/build/__tests__/behavioral/events/CreatingAListener.test.js +9 -5
  74. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  75. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js +14 -7
  76. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  77. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +43 -12
  78. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  79. package/build/__tests__/behavioral/views/CreatingATheme.test.js +8 -2
  80. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  81. package/build/__tests__/behavioral/views/SettingUpViews.test.d.ts +1 -0
  82. package/build/__tests__/behavioral/views/SettingUpViews.test.js +48 -3
  83. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  84. package/build/__tests__/implementation/EventStore.test.js +4 -3
  85. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  86. package/build/__tests__/implementation/EventTemplateItemBuilder.test.d.ts +1 -0
  87. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js +21 -3
  88. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  89. package/build/errors/SpruceError.js +2 -2
  90. package/build/errors/SpruceError.js.map +1 -1
  91. package/build/features/FeatureInstaller.d.ts +1 -1
  92. package/build/features/FeatureInstallerFactory.js +4 -2
  93. package/build/features/FeatureInstallerFactory.js.map +1 -1
  94. package/build/features/dependencies/DependencyFeature.d.ts +16 -0
  95. package/build/features/dependencies/DependencyFeature.js +92 -0
  96. package/build/features/dependencies/DependencyFeature.js.map +1 -0
  97. package/build/features/dependencies/actions/AddAction.d.ts +33 -0
  98. package/build/features/dependencies/actions/AddAction.js +154 -0
  99. package/build/features/dependencies/actions/AddAction.js.map +1 -0
  100. package/build/features/dependencies/actions/ManageAction.d.ts +19 -0
  101. package/build/features/dependencies/actions/ManageAction.js +161 -0
  102. package/build/features/dependencies/actions/ManageAction.js.map +1 -0
  103. package/build/features/event/EventFeature.js +2 -1
  104. package/build/features/event/EventFeature.js.map +1 -1
  105. package/build/features/event/builders/EventContractBuilder.d.ts +3 -0
  106. package/build/features/event/builders/EventContractBuilder.js +12 -8
  107. package/build/features/event/builders/EventContractBuilder.js.map +1 -1
  108. package/build/features/event/stores/EventStore.d.ts +2 -1
  109. package/build/features/event/stores/EventStore.js +33 -25
  110. package/build/features/event/stores/EventStore.js.map +1 -1
  111. package/build/features/schema/actions/SyncAction.js +4 -2
  112. package/build/features/schema/actions/SyncAction.js.map +1 -1
  113. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  114. package/build/features/skill/stores/SkillStore.d.ts +4 -0
  115. package/build/features/skill/stores/SkillStore.js +39 -15
  116. package/build/features/skill/stores/SkillStore.js.map +1 -1
  117. package/build/features/view/ViewFeature.js +5 -1
  118. package/build/features/view/ViewFeature.js.map +1 -1
  119. package/build/interfaces/SpyInterface.d.ts +2 -1
  120. package/build/interfaces/SpyInterface.js +67 -7
  121. package/build/interfaces/SpyInterface.js.map +1 -1
  122. package/build/services/DependencyService.d.ts +13 -0
  123. package/build/services/DependencyService.js +49 -0
  124. package/build/services/DependencyService.js.map +1 -0
  125. package/build/services/ServiceFactory.d.ts +2 -0
  126. package/build/services/ServiceFactory.js +5 -0
  127. package/build/services/ServiceFactory.js.map +1 -1
  128. package/build/templateItemBuilders/EventTemplateItemBuilder.js +9 -0
  129. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  130. package/build/tests/AbstractCliTest.js +2 -36
  131. package/build/tests/AbstractCliTest.js.map +1 -1
  132. package/build/tests/fixtures/SkillFixture.d.ts +2 -0
  133. package/build/tests/fixtures/SkillFixture.js +8 -8
  134. package/build/tests/fixtures/SkillFixture.js.map +1 -1
  135. package/build/utilities/action.utility.js +1 -5
  136. package/build/utilities/action.utility.js.map +1 -1
  137. package/package.json +27 -27
  138. package/src/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.ts +15 -0
  139. package/src/.spruce/events/events.contract.ts +32 -8
  140. package/src/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.ts +20 -2
  141. package/src/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.ts +20 -2
  142. package/src/.spruce/events/forms/createForm.v2021_07_02.contract.ts +20 -2
  143. package/src/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.ts +20 -2
  144. package/src/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.ts +15 -0
  145. package/src/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.ts +20 -3
  146. package/src/.spruce/events/forms/listForms.v2021_07_02.contract.ts +38 -4
  147. package/src/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.ts +15 -0
  148. package/src/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.ts +21 -4
  149. package/src/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.ts +21 -1
  150. package/src/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.ts +45 -0
  151. package/src/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.ts +45 -0
  152. package/src/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.ts +45 -0
  153. package/src/.spruce/schemas/appointments/v2021_06_23/appointments.schema.ts +22 -0
  154. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.ts +24 -0
  155. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.ts +22 -0
  156. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.ts +36 -0
  157. package/src/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.ts +0 -6
  158. package/src/.spruce/schemas/schemas.types.ts +815 -720
  159. package/src/__tests__/behavioral/AddingADependency.test.ts +98 -0
  160. package/src/__tests__/behavioral/CreatingADataStore.test.ts +2 -0
  161. package/src/__tests__/behavioral/ManagingDependencies.test.ts +115 -0
  162. package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +70 -0
  163. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +5 -0
  164. package/src/__tests__/behavioral/events/KeepingEventsInSync.test.ts +6 -0
  165. package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +27 -0
  166. package/src/__tests__/behavioral/views/CreatingATheme.test.ts +4 -0
  167. package/src/__tests__/behavioral/views/SettingUpViews.test.ts +23 -0
  168. package/src/__tests__/implementation/EventStore.test.ts +5 -2
  169. package/src/__tests__/implementation/EventTemplateItemBuilder.test.ts +20 -1
  170. package/src/errors/SpruceError.ts +1 -1
  171. package/src/features/FeatureInstallerFactory.ts +3 -0
  172. package/src/features/dependencies/DependencyFeature.ts +27 -0
  173. package/src/features/dependencies/actions/AddAction.ts +63 -0
  174. package/src/features/dependencies/actions/ManageAction.ts +84 -0
  175. package/src/features/event/EventFeature.ts +1 -0
  176. package/src/features/event/builders/EventContractBuilder.ts +9 -2
  177. package/src/features/event/stores/EventStore.ts +20 -11
  178. package/src/features/schema/actions/SyncAction.ts +6 -3
  179. package/src/features/skill/actions/RebuildAction.ts +2 -0
  180. package/src/features/skill/stores/SkillStore.ts +8 -1
  181. package/src/features/view/ViewFeature.ts +5 -0
  182. package/src/interfaces/SpyInterface.ts +29 -2
  183. package/src/services/DependencyService.ts +27 -0
  184. package/src/services/ServiceFactory.ts +6 -0
  185. package/src/templateItemBuilders/EventTemplateItemBuilder.ts +10 -0
  186. package/src/tests/AbstractCliTest.ts +1 -21
  187. package/src/tests/fixtures/SkillFixture.ts +6 -2
  188. package/src/utilities/action.utility.ts +1 -6
  189. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.d.ts +0 -3
  190. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.js +0 -28
  191. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.js.map +0 -1
  192. package/src/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.ts +0 -22
@@ -0,0 +1,8 @@
1
+ import AbstractSkillTest from '../../tests/AbstractSkillTest';
2
+ export default class SyncingEventsOnlyFromDependenciesTest extends AbstractSkillTest {
3
+ protected static skillCacheKey: string;
4
+ protected static doesntSyncAnythingToStart(): Promise<void>;
5
+ protected static syncsEventsForSkillsWeveAddedAsDependencies(): Promise<void>;
6
+ private static registerGlobalEvent;
7
+ private static resolveEventFolder;
8
+ }
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
27
+
28
+ var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
29
+
30
+ var _test = require("@sprucelabs/test");
31
+
32
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
33
+
34
+ var _AbstractSkillTest2 = _interopRequireDefault(require("../../tests/AbstractSkillTest"));
35
+
36
+ var _dec, _dec2, _class, _class2, _temp;
37
+
38
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
39
+
40
+ 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; } }
41
+
42
+ var SyncingEventsOnlyFromDependenciesTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), (_class = (_temp = _class2 = /*#__PURE__*/function (_AbstractSkillTest) {
43
+ (0, _inherits2["default"])(SyncingEventsOnlyFromDependenciesTest, _AbstractSkillTest);
44
+
45
+ var _super = _createSuper(SyncingEventsOnlyFromDependenciesTest);
46
+
47
+ function SyncingEventsOnlyFromDependenciesTest() {
48
+ (0, _classCallCheck2["default"])(this, SyncingEventsOnlyFromDependenciesTest);
49
+ return _super.apply(this, arguments);
50
+ }
51
+
52
+ (0, _createClass2["default"])(SyncingEventsOnlyFromDependenciesTest, null, [{
53
+ key: "doesntSyncAnythingToStart",
54
+ value: function () {
55
+ var _doesntSyncAnythingToStart = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
56
+ var skills, _yield$this$registerG, skill, results, eventFolder, contents;
57
+
58
+ return _regenerator["default"].wrap(function _callee$(_context) {
59
+ while (1) {
60
+ switch (_context.prev = _context.next) {
61
+ case 0:
62
+ skills = this.getSkillFixture();
63
+ _context.next = 3;
64
+ return skills.registerCurrentSkill({
65
+ name: 'events in sync skill'
66
+ });
67
+
68
+ case 3:
69
+ _context.next = 5;
70
+ return this.registerGlobalEvent();
71
+
72
+ case 5:
73
+ _yield$this$registerG = _context.sent;
74
+ skill = _yield$this$registerG.skill;
75
+ _context.next = 9;
76
+ return this.Action('event', 'sync', {}).execute({});
77
+
78
+ case 9:
79
+ results = _context.sent;
80
+
81
+ _test.assert.isFalsy(results.errors);
82
+
83
+ eventFolder = this.resolveEventFolder(skill);
84
+
85
+ _test.assert.isFalse(_spruceSkillUtils.diskUtil.doesDirExist(eventFolder));
86
+
87
+ contents = _fsExtra["default"].readdirSync(this.resolveHashSprucePath('events'));
88
+
89
+ _test.assert.isLength(contents, 1);
90
+
91
+ case 15:
92
+ case "end":
93
+ return _context.stop();
94
+ }
95
+ }
96
+ }, _callee, this);
97
+ }));
98
+
99
+ function doesntSyncAnythingToStart() {
100
+ return _doesntSyncAnythingToStart.apply(this, arguments);
101
+ }
102
+
103
+ return doesntSyncAnythingToStart;
104
+ }()
105
+ }, {
106
+ key: "syncsEventsForSkillsWeveAddedAsDependencies",
107
+ value: function () {
108
+ var _syncsEventsForSkillsWeveAddedAsDependencies = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
109
+ var _yield$this$registerG2, skill, results, eventFolder, contents;
110
+
111
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
112
+ while (1) {
113
+ switch (_context2.prev = _context2.next) {
114
+ case 0:
115
+ _context2.next = 2;
116
+ return this.registerGlobalEvent();
117
+
118
+ case 2:
119
+ _yield$this$registerG2 = _context2.sent;
120
+ skill = _yield$this$registerG2.skill;
121
+ this.Service('dependency').add({
122
+ id: skill.id,
123
+ namespace: skill.slug
124
+ });
125
+ _context2.next = 7;
126
+ return this.Action('event', 'sync', {}).execute({});
127
+
128
+ case 7:
129
+ results = _context2.sent;
130
+
131
+ _test.assert.isFalsy(results.errors);
132
+
133
+ eventFolder = this.resolveEventFolder(skill);
134
+
135
+ _test.assert.isTrue(_spruceSkillUtils.diskUtil.doesDirExist(eventFolder));
136
+
137
+ contents = _fsExtra["default"].readdirSync(this.resolveHashSprucePath('events'));
138
+
139
+ _test.assert.isLength(contents, 2);
140
+
141
+ case 13:
142
+ case "end":
143
+ return _context2.stop();
144
+ }
145
+ }
146
+ }, _callee2, this);
147
+ }));
148
+
149
+ function syncsEventsForSkillsWeveAddedAsDependencies() {
150
+ return _syncsEventsForSkillsWeveAddedAsDependencies.apply(this, arguments);
151
+ }
152
+
153
+ return syncsEventsForSkillsWeveAddedAsDependencies;
154
+ }()
155
+ }, {
156
+ key: "registerGlobalEvent",
157
+ value: function () {
158
+ var _registerGlobalEvent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
159
+ var skills, skill;
160
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
161
+ while (1) {
162
+ switch (_context3.prev = _context3.next) {
163
+ case 0:
164
+ skills = this.getSkillFixture();
165
+ _context3.next = 3;
166
+ return skills.seedDemoSkill({
167
+ name: 'a temp skill'
168
+ });
169
+
170
+ case 3:
171
+ skill = _context3.sent;
172
+ _context3.next = 6;
173
+ return skills.registerEventContract(skill, {
174
+ eventSignatures: {
175
+ 'test-sync::v2021_01_01': {
176
+ isGlobal: true
177
+ }
178
+ }
179
+ });
180
+
181
+ case 6:
182
+ return _context3.abrupt("return", {
183
+ skill: skill
184
+ });
185
+
186
+ case 7:
187
+ case "end":
188
+ return _context3.stop();
189
+ }
190
+ }
191
+ }, _callee3, this);
192
+ }));
193
+
194
+ function registerGlobalEvent() {
195
+ return _registerGlobalEvent.apply(this, arguments);
196
+ }
197
+
198
+ return registerGlobalEvent;
199
+ }()
200
+ }, {
201
+ key: "resolveEventFolder",
202
+ value: function resolveEventFolder(skill) {
203
+ return this.resolveHashSprucePath('events', _spruceSkillUtils.namesUtil.toCamel(skill.slug));
204
+ }
205
+ }]);
206
+ return SyncingEventsOnlyFromDependenciesTest;
207
+ }(_AbstractSkillTest2["default"]), (0, _defineProperty2["default"])(_class2, "skillCacheKey", 'events'), _temp), ((0, _applyDecoratedDescriptor2["default"])(_class, "doesntSyncAnythingToStart", [_dec], Object.getOwnPropertyDescriptor(_class, "doesntSyncAnythingToStart"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "syncsEventsForSkillsWeveAddedAsDependencies", [_dec2], Object.getOwnPropertyDescriptor(_class, "syncsEventsForSkillsWeveAddedAsDependencies"), _class)), _class));
208
+ exports["default"] = SyncingEventsOnlyFromDependenciesTest;
209
+ //# sourceMappingURL=SyncingEventsOnlyFromDependencies.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts"],"names":["SyncingEventsOnlyFromDependenciesTest","skills","getSkillFixture","registerCurrentSkill","name","registerGlobalEvent","skill","Action","execute","results","assert","isFalsy","errors","eventFolder","resolveEventFolder","isFalse","diskUtil","doesDirExist","contents","fsUtil","readdirSync","resolveHashSprucePath","isLength","Service","add","id","namespace","slug","isTrue","seedDemoSkill","registerEventContract","eventSignatures","isGlobal","namesUtil","toCamel","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport fsUtil from 'fs-extra'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\nimport { RegisteredSkill } from '../../types/cli.types'\n\nexport default class SyncingEventsOnlyFromDependenciesTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'events'\n\n\t@test()\n\tprotected static async doesntSyncAnythingToStart() {\n\t\tconst skills = this.getSkillFixture()\n\t\tawait skills.registerCurrentSkill({\n\t\t\tname: 'events in sync skill',\n\t\t})\n\t\tconst { skill } = await this.registerGlobalEvent()\n\n\t\tconst results = await this.Action('event', 'sync', {}).execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst eventFolder = this.resolveEventFolder(skill)\n\n\t\tassert.isFalse(diskUtil.doesDirExist(eventFolder))\n\n\t\tconst contents = fsUtil.readdirSync(this.resolveHashSprucePath('events'))\n\n\t\tassert.isLength(contents, 1)\n\t}\n\n\t@test()\n\tprotected static async syncsEventsForSkillsWeveAddedAsDependencies() {\n\t\tconst { skill } = await this.registerGlobalEvent()\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill.id,\n\t\t\tnamespace: skill.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync', {}).execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst eventFolder = this.resolveEventFolder(skill)\n\n\t\tassert.isTrue(diskUtil.doesDirExist(eventFolder))\n\n\t\tconst contents = fsUtil.readdirSync(this.resolveHashSprucePath('events'))\n\n\t\tassert.isLength(contents, 2)\n\t}\n\n\tprivate static async registerGlobalEvent() {\n\t\tconst skills = this.getSkillFixture()\n\n\t\tconst skill = await skills.seedDemoSkill({ name: 'a temp skill' })\n\n\t\tawait skills.registerEventContract(skill, {\n\t\t\teventSignatures: {\n\t\t\t\t'test-sync::v2021_01_01': {\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\treturn { skill }\n\t}\n\n\tprivate static resolveEventFolder(skill: RegisteredSkill) {\n\t\treturn this.resolveHashSprucePath('events', namesUtil.toCamel(skill.slug))\n\t}\n}\n"],"file":"SyncingEventsOnlyFromDependencies.test.js"}
@@ -524,23 +524,27 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
524
524
  return skillFixture.registerEventContract(skill2, eventContract);
525
525
 
526
526
  case 12:
527
- _context8.next = 14;
527
+ this.Service('dependency').add({
528
+ id: skill2.id,
529
+ namespace: skill2.slug
530
+ });
531
+ _context8.next = 15;
528
532
  return this.Action('event', 'listen').execute({
529
533
  eventNamespace: skill2.slug,
530
534
  eventName: "my-new-event",
531
535
  version: expectedVersion
532
536
  });
533
537
 
534
- case 14:
538
+ case 15:
535
539
  results = _context8.sent;
536
540
 
537
541
  _test.assert.isFalsy(results.errors);
538
542
 
539
543
  listener = _test2["default"].assertFileByNameInGeneratedFiles("my-new-event.".concat(expectedVersion, ".listener.ts"), results.files);
540
- _context8.next = 19;
544
+ _context8.next = 20;
541
545
  return this.Service('typeChecker').check(listener);
542
546
 
543
- case 19:
547
+ case 20:
544
548
  contents = _spruceSkillUtils.diskUtil.readFile(listener);
545
549
  return _context8.abrupt("return", {
546
550
  contents: contents,
@@ -552,7 +556,7 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
552
556
  currentSkill: currentSkill
553
557
  });
554
558
 
555
- case 21:
559
+ case 22:
556
560
  case "end":
557
561
  return _context8.stop();
558
562
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","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","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventErrorAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventErrorAssertUtil,\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 { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\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\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\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.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\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\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\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.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\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\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.lastInvocation()\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 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\teventErrorAssertUtil.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\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\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 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"],"file":"CreatingAListener.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","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","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventErrorAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","add","namespace","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventErrorAssertUtil,\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 { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\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\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\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.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\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\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\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.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\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\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.lastInvocation()\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 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\teventErrorAssertUtil.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\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.Action('event', 'listen').execute({\n\t\t\teventNamespace: 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"],"file":"CreatingAListener.test.js"}
@@ -163,6 +163,13 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
163
163
  case 7:
164
164
  skill2 = _context3.sent;
165
165
  _context3.next = 10;
166
+ return this.Service('dependency').add({
167
+ id: skill2.id,
168
+ namespace: skill2.slug
169
+ });
170
+
171
+ case 10:
172
+ _context3.next = 12;
166
173
  return skills.registerEventContract(skill2, {
167
174
  eventSignatures: {
168
175
  'test-sync::v2021_01_01': {
@@ -171,25 +178,25 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
171
178
  }
172
179
  });
173
180
 
174
- case 10:
175
- _context3.next = 12;
181
+ case 12:
182
+ _context3.next = 14;
176
183
  return this.Action('event', 'sync').execute({});
177
184
 
178
- case 12:
185
+ case 14:
179
186
  results = _context3.sent;
180
- _context3.next = 15;
187
+ _context3.next = 17;
181
188
  return this.assertValidSyncEventsResults(results);
182
189
 
183
- case 15:
190
+ case 17:
184
191
  fqen = _spruceEventUtils.eventNameUtil.join({
185
192
  eventName: 'test-sync',
186
193
  version: 'v2021_01_01',
187
194
  eventNamespace: skill2.slug
188
195
  });
189
- _context3.next = 18;
196
+ _context3.next = 20;
190
197
  return this.assertGlobalEventsAreTyped(fqen);
191
198
 
192
- case 18:
199
+ case 20:
193
200
  case "end":
194
201
  return _context3.stop();
195
202
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/events/KeepingEventsInSync.test.ts"],"names":["coreContract","eventContractUtil","unifyContracts","coreEventContracts","KeepingEventsInSyncTest","resolveHashSprucePath","Cli","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","skipInstallSkillPrompts","results","assertValidSyncEventsResults","skills","getSkillFixture","registerCurrentSkill","name","seedDemoSkill","skill2","registerEventContract","eventSignatures","isGlobal","fqen","eventNameUtil","join","eventName","version","eventNamespace","slug","assertGlobalEventsAreTyped","skillEventContractTypesFile","contents","diskUtil","readFile","eventContractPath","doesInclude","promise","syncCoreEventsPretendingToBeMercuryTypes","cli","event","getFeature","wasHit","getEventContractBuilder","assertCoreEventContractsSavedToDisk","assertCorePayloadSchemasAreCreated","isFalse","doesFileExist","oldGetter","bind","isTrue","assertValidSyncSchemasResults","shouldSyncOnlyCoreEvents","eventBuilderFile","builder","writeFile","resolvePath","Service","uninstall","isFalsy","errors","assertEventsHavePayloads","assertCombinedContractContents","coreContractContents","search","doesNotInclude","importCombinedContractsFile","imported","isTruthy","isArray","localContract","sigs","getNamedEventSignatures","sig","getSignatureByName","fullyQualifiedEventName","eventContractsFile","doesDirExist","importDefault","contract","signature","emitPayloadSchema","responsePayloadSchema","shouldHaveWritten","filesToCheck","path","pathUtil","sep","MERCURY_API_NAMESPACE","assertFilesWereGenerated","file","expected","doesExist","namesUtil","toCamel","AbstractEventTest"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport {\n\tEventContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { validateSchema } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\n\nconst coreContract = eventContractUtil.unifyContracts(\n\tcoreEventContracts as any\n) as SpruceSchemas.Mercury.v2020_12_25.EventContract\n\nexport default class KeepingEventsInSyncTest extends AbstractEventTest {\n\tprivate static get eventContractPath() {\n\t\treturn this.resolveHashSprucePath('events', 'events.contract.ts')\n\t}\n\n\t@test()\n\tprotected static async hasSyncEventsAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('event', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsWithoutSavingCoreEventsByDefault() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst results = await this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({})\n\t\t)\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\t}\n\n\t@test()\n\tprotected static async mergesGlobalEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skills = this.getSkillFixture()\n\t\tawait skills.registerCurrentSkill({\n\t\t\tname: 'events in sync skill',\n\t\t})\n\n\t\tconst skill2 = await skills.seedDemoSkill({ name: 'a temp skill' })\n\n\t\tawait skills.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t'test-sync::v2021_01_01': {\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-sync',\n\t\t\tversion: 'v2021_01_01',\n\t\t\teventNamespace: skill2.slug,\n\t\t})\n\t\tawait this.assertGlobalEventsAreTyped(fqen)\n\t}\n\n\t@test()\n\tprotected static async canSetSkillEventContractTypesFile() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tawait this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({\n\t\t\t\tskillEventContractTypesFile: 'testy test',\n\t\t\t})\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\t\tassert.doesInclude(contents, `declare module 'testy test'`)\n\t}\n\n\t@test()\n\tprotected static async canSyncOnlyCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst promise = this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tawait this.skipInstallSkillPrompts()\n\n\t\tconst results = await promise\n\n\t\tawait this.assertValidSyncEventsResults(results, true)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasDoesNotSyncEventSchemasIfEventsHaveNeverBeenSynced() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tthis.assertCoreEventContractsSavedToDisk(false)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, false)\n\n\t\tassert.isFalse(wasHit)\n\t\tassert.isFalse(diskUtil.doesFileExist(this.eventContractPath))\n\t}\n\n\t@test()\n\tprotected static async syncingSchemaAfterSyncEventsSyncsSchemasAndDoesNotWriteCoreEvents() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\tconst oldGetter = event.getEventContractBuilder.bind(event)\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t\treturn oldGetter()\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTrue(wasHit)\n\n\t\tawait this.assertValidSyncSchemasResults(results, false)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasAfterSyncingCoreEventsSavesCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\t\tawait this.assertValidSyncSchemasResults(results, true)\n\t}\n\n\tprivate static async syncCoreEventsPretendingToBeMercuryTypes() {\n\t\tconst results = await this.Action('event', 'sync').execute({\n\t\t\tshouldSyncOnlyCoreEvents: true,\n\t\t\teventBuilderFile: '../../../builder',\n\t\t\tskillEventContractTypesFile: '../../builder',\n\t\t})\n\n\t\tconst builder = `\nexport function buildEventContract(..._: any[]):any { return _[0] }\nexport function buildPermissionContract(..._: any[]):any { return _[0] }\n`\n\n\t\tdiskUtil.writeFile(this.resolvePath('src', 'builder.ts'), builder)\n\t\tawait this.Service('pkg').uninstall([\n\t\t\t'@sprucelabs/mercury-types',\n\t\t\t'@sprucelabs/mercury-client',\n\t\t\t'@sprucelabs/spruce-event-plugin',\n\t\t])\n\t\treturn results\n\t}\n\n\tprivate static async assertValidSyncEventsResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents = false\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.assertValidSyncSchemasResults(results, shouldSyncOnlyCoreEvents)\n\t}\n\n\tprivate static async assertGlobalEventsAreTyped(eventName: string) {\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\n\t\tassert.doesInclude(contents, `'${eventName}':`)\n\t}\n\n\tprivate static async assertValidSyncSchemasResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertCoreEventContractsSavedToDisk(shouldSyncOnlyCoreEvents)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, shouldSyncOnlyCoreEvents)\n\n\t\tawait this.assertEventsHavePayloads(results)\n\t\tawait this.assertCombinedContractContents()\n\n\t\tconst coreContractContents = diskUtil.readFile(this.eventContractPath)\n\t\tconst search = `did-message::v2020_12_25': MercuryDidMessageEventContract_v2020_12_25['eventSignatures']['did-message::v2020_12_25']`\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tassert.doesInclude(coreContractContents, search)\n\t\t} else {\n\t\t\tassert.doesNotInclude(coreContractContents, search)\n\t\t}\n\t}\n\n\tprivate static async assertCombinedContractContents() {\n\t\tconst imported = await this.importCombinedContractsFile()\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isArray(imported)\n\n\t\tconst localContract = eventContractUtil.unifyContracts(imported)\n\t\tassert.isTruthy(localContract)\n\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\teventContractUtil.getSignatureByName(\n\t\t\t\tlocalContract,\n\t\t\t\tsig.fullyQualifiedEventName\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate static async importCombinedContractsFile(): Promise<EventContract[]> {\n\t\tconst eventContractsFile = this.eventContractPath\n\n\t\t// hack import to bring types in when importing contract file\n\t\tif (\n\t\t\tdiskUtil.doesDirExist(\n\t\t\t\tthis.resolvePath('node_modules/@sprucelabs/mercury-types')\n\t\t\t)\n\t\t) {\n\t\t\tconst contents = diskUtil.readFile(eventContractsFile)\n\t\t\tdiskUtil.writeFile(\n\t\t\t\teventContractsFile,\n\t\t\t\t`import '@sprucelabs/mercury-types'\\n${contents}`\n\t\t\t)\n\t\t}\n\n\t\tconst imported: EventContract[] = await this.Service(\n\t\t\t'import'\n\t\t).importDefault(eventContractsFile)\n\n\t\treturn imported\n\t}\n\n\tprivate static async assertEventsHavePayloads(\n\t\tresults: FeatureActionResponse,\n\t\teventName = 'authenticate'\n\t) {\n\t\tconst imported = await this.importCombinedContractsFile()\n\t\tconst contract = eventContractUtil.unifyContracts(imported)\n\n\t\tassert.isTruthy(contract)\n\n\t\tvalidateEventContract(contract)\n\n\t\tconst signature = eventContractUtil.getSignatureByName(contract, eventName)\n\n\t\tassert.isTruthy(signature.emitPayloadSchema)\n\t\tvalidateSchema(signature.emitPayloadSchema)\n\n\t\tassert.isTruthy(signature.responsePayloadSchema)\n\t\tvalidateSchema(signature.responsePayloadSchema)\n\t}\n\n\tprivate static assertCorePayloadSchemasAreCreated(\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tconst filesToCheck = [\n\t\t\t{\n\t\t\t\tname: `unregisterListenersEmitTargetAndPayload.schema.ts`,\n\t\t\t\tpath: `schemas${pathUtil.sep}${MERCURY_API_NAMESPACE}`,\n\t\t\t},\n\t\t]\n\n\t\tthis.assertFilesWereGenerated(filesToCheck, results, shouldHaveWritten)\n\t}\n\n\tprivate static assertFilesWereGenerated(\n\t\tfilesToCheck: { name: string; path: string }[],\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tfor (const file of filesToCheck) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t'schemas/mercury/v2020_12_25',\n\t\t\t\tfile.name\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to find ${file} on the filesystem.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(doesExist, `Should not have written ${file}.`)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static assertCoreEventContractsSavedToDisk(shouldHaveWritten = true) {\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t`events/mercury/${namesUtil.toCamel(\n\t\t\t\t\tsig.eventName\n\t\t\t\t)}.v2020_12_25.contract.ts`\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to write a file ${expected}.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(\n\t\t\t\t\tdoesExist,\n\t\t\t\t\t`Generated contract for ${sig.fullyQualifiedEventName} and it should not have because it's a core contract.`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"file":"KeepingEventsInSync.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/KeepingEventsInSync.test.ts"],"names":["coreContract","eventContractUtil","unifyContracts","coreEventContracts","KeepingEventsInSyncTest","resolveHashSprucePath","Cli","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","skipInstallSkillPrompts","results","assertValidSyncEventsResults","skills","getSkillFixture","registerCurrentSkill","name","seedDemoSkill","skill2","Service","add","id","namespace","slug","registerEventContract","eventSignatures","isGlobal","fqen","eventNameUtil","join","eventName","version","eventNamespace","assertGlobalEventsAreTyped","skillEventContractTypesFile","contents","diskUtil","readFile","eventContractPath","doesInclude","promise","syncCoreEventsPretendingToBeMercuryTypes","cli","event","getFeature","wasHit","getEventContractBuilder","assertCoreEventContractsSavedToDisk","assertCorePayloadSchemasAreCreated","isFalse","doesFileExist","oldGetter","bind","isTrue","assertValidSyncSchemasResults","shouldSyncOnlyCoreEvents","eventBuilderFile","builder","writeFile","resolvePath","uninstall","isFalsy","errors","assertEventsHavePayloads","assertCombinedContractContents","coreContractContents","search","doesNotInclude","importCombinedContractsFile","imported","isTruthy","isArray","localContract","sigs","getNamedEventSignatures","sig","getSignatureByName","fullyQualifiedEventName","eventContractsFile","doesDirExist","importDefault","contract","signature","emitPayloadSchema","responsePayloadSchema","shouldHaveWritten","filesToCheck","path","pathUtil","sep","MERCURY_API_NAMESPACE","assertFilesWereGenerated","file","expected","doesExist","namesUtil","toCamel","AbstractEventTest"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport {\n\tEventContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { validateSchema } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\n\nconst coreContract = eventContractUtil.unifyContracts(\n\tcoreEventContracts as any\n) as SpruceSchemas.Mercury.v2020_12_25.EventContract\n\nexport default class KeepingEventsInSyncTest extends AbstractEventTest {\n\tprivate static get eventContractPath() {\n\t\treturn this.resolveHashSprucePath('events', 'events.contract.ts')\n\t}\n\n\t@test()\n\tprotected static async hasSyncEventsAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('event', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsWithoutSavingCoreEventsByDefault() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst results = await this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({})\n\t\t)\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\t}\n\n\t@test()\n\tprotected static async mergesGlobalEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skills = this.getSkillFixture()\n\t\tawait skills.registerCurrentSkill({\n\t\t\tname: 'events in sync skill',\n\t\t})\n\n\t\tconst skill2 = await skills.seedDemoSkill({ name: 'a temp skill' })\n\n\t\tawait this.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tawait skills.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t'test-sync::v2021_01_01': {\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-sync',\n\t\t\tversion: 'v2021_01_01',\n\t\t\teventNamespace: skill2.slug,\n\t\t})\n\t\tawait this.assertGlobalEventsAreTyped(fqen)\n\t}\n\n\t@test()\n\tprotected static async canSetSkillEventContractTypesFile() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tawait this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({\n\t\t\t\tskillEventContractTypesFile: 'testy test',\n\t\t\t})\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\t\tassert.doesInclude(contents, `declare module 'testy test'`)\n\t}\n\n\t@test()\n\tprotected static async canSyncOnlyCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst promise = this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tawait this.skipInstallSkillPrompts()\n\n\t\tconst results = await promise\n\n\t\tawait this.assertValidSyncEventsResults(results, true)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasDoesNotSyncEventSchemasIfEventsHaveNeverBeenSynced() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tthis.assertCoreEventContractsSavedToDisk(false)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, false)\n\n\t\tassert.isFalse(wasHit)\n\t\tassert.isFalse(diskUtil.doesFileExist(this.eventContractPath))\n\t}\n\n\t@test()\n\tprotected static async syncingSchemaAfterSyncEventsSyncsSchemasAndDoesNotWriteCoreEvents() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\tconst oldGetter = event.getEventContractBuilder.bind(event)\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t\treturn oldGetter()\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTrue(wasHit)\n\n\t\tawait this.assertValidSyncSchemasResults(results, false)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasAfterSyncingCoreEventsSavesCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tawait this.assertValidSyncSchemasResults(results, true)\n\t}\n\n\tprivate static async syncCoreEventsPretendingToBeMercuryTypes() {\n\t\tconst results = await this.Action('event', 'sync').execute({\n\t\t\tshouldSyncOnlyCoreEvents: true,\n\t\t\teventBuilderFile: '../../../builder',\n\t\t\tskillEventContractTypesFile: '../../builder',\n\t\t})\n\n\t\tconst builder = `\nexport function buildEventContract(..._: any[]):any { return _[0] }\nexport function buildPermissionContract(..._: any[]):any { return _[0] }\n`\n\n\t\tdiskUtil.writeFile(this.resolvePath('src', 'builder.ts'), builder)\n\t\tawait this.Service('pkg').uninstall([\n\t\t\t'@sprucelabs/mercury-types',\n\t\t\t'@sprucelabs/mercury-client',\n\t\t\t'@sprucelabs/spruce-event-plugin',\n\t\t])\n\t\treturn results\n\t}\n\n\tprivate static async assertValidSyncEventsResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents = false\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.assertValidSyncSchemasResults(results, shouldSyncOnlyCoreEvents)\n\t}\n\n\tprivate static async assertGlobalEventsAreTyped(eventName: string) {\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\n\t\tassert.doesInclude(contents, `'${eventName}':`)\n\t}\n\n\tprivate static async assertValidSyncSchemasResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertCoreEventContractsSavedToDisk(shouldSyncOnlyCoreEvents)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, shouldSyncOnlyCoreEvents)\n\n\t\tawait this.assertEventsHavePayloads(results)\n\t\tawait this.assertCombinedContractContents()\n\n\t\tconst coreContractContents = diskUtil.readFile(this.eventContractPath)\n\t\tconst search = `did-message::v2020_12_25': MercuryDidMessageEventContract_v2020_12_25['eventSignatures']['did-message::v2020_12_25']`\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tassert.doesInclude(coreContractContents, search)\n\t\t} else {\n\t\t\tassert.doesNotInclude(coreContractContents, search)\n\t\t}\n\t}\n\n\tprivate static async assertCombinedContractContents() {\n\t\tconst imported = await this.importCombinedContractsFile()\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isArray(imported)\n\n\t\tconst localContract = eventContractUtil.unifyContracts(imported)\n\t\tassert.isTruthy(localContract)\n\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\teventContractUtil.getSignatureByName(\n\t\t\t\tlocalContract,\n\t\t\t\tsig.fullyQualifiedEventName\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate static async importCombinedContractsFile(): Promise<EventContract[]> {\n\t\tconst eventContractsFile = this.eventContractPath\n\n\t\t// hack import to bring types in when importing contract file\n\t\tif (\n\t\t\tdiskUtil.doesDirExist(\n\t\t\t\tthis.resolvePath('node_modules/@sprucelabs/mercury-types')\n\t\t\t)\n\t\t) {\n\t\t\tconst contents = diskUtil.readFile(eventContractsFile)\n\t\t\tdiskUtil.writeFile(\n\t\t\t\teventContractsFile,\n\t\t\t\t`import '@sprucelabs/mercury-types'\\n${contents}`\n\t\t\t)\n\t\t}\n\n\t\tconst imported: EventContract[] = await this.Service(\n\t\t\t'import'\n\t\t).importDefault(eventContractsFile)\n\n\t\treturn imported\n\t}\n\n\tprivate static async assertEventsHavePayloads(\n\t\tresults: FeatureActionResponse,\n\t\teventName = 'authenticate'\n\t) {\n\t\tconst imported = await this.importCombinedContractsFile()\n\t\tconst contract = eventContractUtil.unifyContracts(imported)\n\n\t\tassert.isTruthy(contract)\n\n\t\tvalidateEventContract(contract)\n\n\t\tconst signature = eventContractUtil.getSignatureByName(contract, eventName)\n\n\t\tassert.isTruthy(signature.emitPayloadSchema)\n\t\tvalidateSchema(signature.emitPayloadSchema)\n\n\t\tassert.isTruthy(signature.responsePayloadSchema)\n\t\tvalidateSchema(signature.responsePayloadSchema)\n\t}\n\n\tprivate static assertCorePayloadSchemasAreCreated(\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tconst filesToCheck = [\n\t\t\t{\n\t\t\t\tname: `unregisterListenersEmitTargetAndPayload.schema.ts`,\n\t\t\t\tpath: `schemas${pathUtil.sep}${MERCURY_API_NAMESPACE}`,\n\t\t\t},\n\t\t]\n\n\t\tthis.assertFilesWereGenerated(filesToCheck, results, shouldHaveWritten)\n\t}\n\n\tprivate static assertFilesWereGenerated(\n\t\tfilesToCheck: { name: string; path: string }[],\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tfor (const file of filesToCheck) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t'schemas/mercury/v2020_12_25',\n\t\t\t\tfile.name\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to find ${file} on the filesystem.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(doesExist, `Should not have written ${file}.`)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static assertCoreEventContractsSavedToDisk(shouldHaveWritten = true) {\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t`events/mercury/${namesUtil.toCamel(\n\t\t\t\t\tsig.eventName\n\t\t\t\t)}.v2020_12_25.contract.ts`\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to write a file ${expected}.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(\n\t\t\t\t\tdoesExist,\n\t\t\t\t\t`Generated contract for ${sig.fullyQualifiedEventName} and it should not have because it's a core contract.`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"file":"KeepingEventsInSync.test.js"}
@@ -310,18 +310,25 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
310
310
 
311
311
  case 9:
312
312
  _context4.next = 11;
313
- return this.Action('event', 'sync').execute({});
313
+ return this.Service('dependency').add({
314
+ id: skill2.id,
315
+ namespace: skill2.slug
316
+ });
314
317
 
315
318
  case 11:
319
+ _context4.next = 13;
320
+ return this.Action('event', 'sync').execute({});
321
+
322
+ case 13:
316
323
  results = _context4.sent;
317
324
  match = _test2["default"].assertFileByNameInGeneratedFiles("myNewEvent.".concat(this.todaysVersion.dirValue, ".contract.ts"), results.files);
318
325
 
319
326
  _test.assert.doesInclude(match, "".concat(_spruceSkillUtils.namesUtil.toCamel(skill2.slug)).concat(_path["default"].sep, "myNewEvent.").concat(this.todaysVersion.dirValue, ".contract.ts"));
320
327
 
321
- _context4.next = 16;
328
+ _context4.next = 18;
322
329
  return this.Service('import').importDefault(match);
323
330
 
324
- case 16:
331
+ case 18:
325
332
  contract = _context4.sent;
326
333
  sig = _spruceEventUtils.eventContractUtil.getSignatureByName(contract, fqen);
327
334
 
@@ -344,7 +351,7 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
344
351
 
345
352
  _test.assert.isEqual(sig.listenPermissionContract.permissions[0].id, 'can-listen');
346
353
 
347
- case 27:
354
+ case 29:
348
355
  case "end":
349
356
  return _context4.stop();
350
357
  }
@@ -412,15 +419,25 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
412
419
 
413
420
  case 17:
414
421
  _context5.next = 19;
415
- return this.Action('event', 'sync').execute({});
422
+ return this.Service('dependency').set([{
423
+ id: skill2.id,
424
+ namespace: skill2.slug
425
+ }, {
426
+ id: skill3.id,
427
+ namespace: skill3.slug
428
+ }]);
416
429
 
417
430
  case 19:
431
+ _context5.next = 21;
432
+ return this.Action('event', 'sync').execute({});
433
+
434
+ case 21:
418
435
  results = _context5.sent;
419
436
  contract = _test2["default"].assertFileByNameInGeneratedFiles('events.contract.ts', results.files);
420
- _context5.next = 23;
437
+ _context5.next = 25;
421
438
  return this.Service('typeChecker').check(contract);
422
439
 
423
- case 23:
440
+ case 25:
424
441
  case "end":
425
442
  return _context5.stop();
426
443
  }
@@ -472,15 +489,22 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
472
489
 
473
490
  case 9:
474
491
  _context6.next = 11;
475
- return this.Action('event', 'sync').execute({});
492
+ return this.Service('dependency').add({
493
+ id: skill2.id,
494
+ namespace: skill2.slug
495
+ });
476
496
 
477
497
  case 11:
498
+ _context6.next = 13;
499
+ return this.Action('event', 'sync').execute({});
500
+
501
+ case 13:
478
502
  results = _context6.sent;
479
503
  contract = _test2["default"].assertFileByNameInGeneratedFiles('events.contract.ts', results.files);
480
- _context6.next = 15;
504
+ _context6.next = 17;
481
505
  return this.Service('typeChecker').check(contract);
482
506
 
483
- case 15:
507
+ case 17:
484
508
  case "end":
485
509
  return _context6.stop();
486
510
  }
@@ -730,16 +754,23 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
730
754
 
731
755
  case 6:
732
756
  _context11.next = 8;
733
- return this.Action('event', 'sync').execute({});
757
+ return this.Service('dependency').add({
758
+ id: skill.id,
759
+ namespace: skill.slug
760
+ });
734
761
 
735
762
  case 8:
763
+ _context11.next = 10;
764
+ return this.Action('event', 'sync').execute({});
765
+
766
+ case 10:
736
767
  results = _context11.sent;
737
768
  return _context11.abrupt("return", {
738
769
  results: results,
739
770
  filename: filename
740
771
  });
741
772
 
742
- case 10:
773
+ case 12:
743
774
  case "end":
744
775
  return _context11.stop();
745
776
  }