@sprucelabs/spruce-cli 18.0.0 → 18.1.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 (158) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js +1 -1
  3. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  4. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +1 -1
  5. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  6. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js +4 -4
  7. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  8. package/build/__tests__/behavioral/WatchingSkillViews.test.js +3 -3
  9. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  10. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js +1 -1
  11. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  12. package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +2 -0
  13. package/build/__tests__/behavioral/events/CreatingAListener.test.js +118 -59
  14. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  15. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.d.ts +17 -0
  16. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js +137 -0
  17. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js.map +1 -0
  18. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js +46 -45
  19. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  20. package/build/__tests__/behavioral/tests/CreatingATest.test.js +1 -1
  21. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  22. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +4 -4
  23. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  24. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js +2 -2
  25. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  26. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +2 -2
  27. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  28. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js +2 -2
  29. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  30. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js +2 -2
  31. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  32. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +1 -1
  33. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  34. package/build/__tests__/behavioral/views/CreatingATheme.test.js +1 -1
  35. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  36. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.d.ts +3 -3
  37. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js +153 -156
  38. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  39. package/build/__tests__/implementation/ActionExecuter.test.js +2 -2
  40. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  41. package/build/__tests__/implementation/ActionExecuter2.test.js +1 -1
  42. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  43. package/build/__tests__/implementation/ActionExecuter4.test.js +1 -1
  44. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  45. package/build/__tests__/implementation/FeatureInstaller.test.js +8 -4
  46. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  47. package/build/__tests__/implementation/GlobalEmitter.d.ts +1 -1
  48. package/build/__tests__/implementation/GlobalEmitter.js +9 -10
  49. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  50. package/build/__tests__/implementation/SettingUpANodeModule.test.js +1 -1
  51. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  52. package/build/__tests__/implementation/SkillStore.test.d.ts +3 -1
  53. package/build/__tests__/implementation/SkillStore.test.js +67 -50
  54. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  55. package/build/__tests__/implementation/StoreFeature.test.js +1 -1
  56. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  57. package/build/cli.js +3 -3
  58. package/build/cli.js.map +1 -1
  59. package/build/features/AbstractAction.d.ts +2 -2
  60. package/build/features/AbstractAction.js.map +1 -1
  61. package/build/features/AbstractFeature.d.ts +22 -22
  62. package/build/features/AbstractFeature.js.map +1 -1
  63. package/build/features/ActionExecuter.d.ts +8 -8
  64. package/build/features/ActionExecuter.js.map +1 -1
  65. package/build/features/FeatureInstaller.d.ts +15 -2
  66. package/build/features/FeatureInstaller.js +36 -36
  67. package/build/features/FeatureInstaller.js.map +1 -1
  68. package/build/features/FeatureInstallerFactory.d.ts +12 -10
  69. package/build/features/FeatureInstallerFactory.js +2 -2
  70. package/build/features/FeatureInstallerFactory.js.map +1 -1
  71. package/build/features/OverrideActionDecorator.js +4 -5
  72. package/build/features/OverrideActionDecorator.js.map +1 -1
  73. package/build/features/event/actions/ListenAction.js.map +1 -1
  74. package/build/features/event/actions/SetRemoteAction.d.ts +1 -0
  75. package/build/features/event/actions/SetRemoteAction.js +2 -1
  76. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  77. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  78. package/build/features/node/NodeFeature.js.map +1 -1
  79. package/build/features/skill/SkillFeature.js.map +1 -1
  80. package/build/features/skill/stores/SkillStore.d.ts +4 -1
  81. package/build/features/skill/stores/SkillStore.js +127 -100
  82. package/build/features/skill/stores/SkillStore.js.map +1 -1
  83. package/build/features/watch/WatchFeature.js +1 -1
  84. package/build/features/watch/WatchFeature.js.map +1 -1
  85. package/build/interfaces/SpyInterface.d.ts +2 -0
  86. package/build/interfaces/SpyInterface.js +16 -4
  87. package/build/interfaces/SpyInterface.js.map +1 -1
  88. package/build/stores/AbstractStore.d.ts +9 -7
  89. package/build/stores/AbstractStore.js.map +1 -1
  90. package/build/stores/StoreFactory.d.ts +19 -13
  91. package/build/stores/StoreFactory.js +15 -13
  92. package/build/stores/StoreFactory.js.map +1 -1
  93. package/build/tests/AbstractCliTest.d.ts +9 -6
  94. package/build/tests/AbstractCliTest.js +53 -45
  95. package/build/tests/AbstractCliTest.js.map +1 -1
  96. package/build/tests/AbstractSchemaTest.js +18 -20
  97. package/build/tests/AbstractSchemaTest.js.map +1 -1
  98. package/build/utilities/action.utility.js +3 -1
  99. package/build/utilities/action.utility.js.map +1 -1
  100. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  101. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  102. package/node_modules/@typescript-eslint/types/package.json +2 -2
  103. package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
  104. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  105. package/package.json +32 -90
  106. package/src/__tests__/behavioral/EnablingAndDisablingCache.test.ts +1 -1
  107. package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
  108. package/src/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.ts +4 -4
  109. package/src/__tests__/behavioral/WatchingSkillViews.test.ts +3 -3
  110. package/src/__tests__/behavioral/errors/SettingUpErrors.test.ts +1 -1
  111. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +41 -14
  112. package/src/__tests__/behavioral/events/EverythingInstalledInstaller.ts +46 -0
  113. package/src/__tests__/behavioral/onboard/StartingOnboarding.test.ts +10 -5
  114. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +1 -1
  115. package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +4 -4
  116. package/src/__tests__/behavioral/upgrading/UpdatingDependencies2.test.ts +2 -2
  117. package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +2 -2
  118. package/src/__tests__/behavioral/upgrading/UpgradingASkill5.test.ts +2 -2
  119. package/src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts +2 -2
  120. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +1 -1
  121. package/src/__tests__/behavioral/views/CreatingATheme.test.ts +1 -1
  122. package/src/__tests__/behavioral/watchers/WatchingForChanges.test.ts +35 -35
  123. package/src/__tests__/implementation/ActionExecuter.test.ts +2 -2
  124. package/src/__tests__/implementation/ActionExecuter2.test.ts +1 -1
  125. package/src/__tests__/implementation/ActionExecuter4.test.ts +1 -1
  126. package/src/__tests__/implementation/FeatureInstaller.test.ts +8 -1
  127. package/src/__tests__/implementation/GlobalEmitter.ts +2 -4
  128. package/src/__tests__/implementation/SettingUpANodeModule.test.ts +1 -1
  129. package/src/__tests__/implementation/SkillStore.test.ts +23 -24
  130. package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
  131. package/src/cli.ts +7 -3
  132. package/src/features/AbstractAction.ts +3 -3
  133. package/src/features/AbstractFeature.ts +26 -26
  134. package/src/features/ActionExecuter.ts +9 -9
  135. package/src/features/FeatureInstaller.ts +32 -12
  136. package/src/features/FeatureInstallerFactory.ts +17 -13
  137. package/src/features/OverrideActionDecorator.ts +2 -5
  138. package/src/features/event/actions/ListenAction.ts +1 -0
  139. package/src/features/event/actions/SetRemoteAction.ts +2 -1
  140. package/src/features/event/actions/SyncListenersAction.ts +0 -1
  141. package/src/features/node/NodeFeature.ts +3 -1
  142. package/src/features/skill/SkillFeature.ts +3 -3
  143. package/src/features/skill/stores/SkillStore.ts +18 -11
  144. package/src/features/watch/WatchFeature.ts +1 -1
  145. package/src/interfaces/SpyInterface.ts +10 -0
  146. package/src/stores/AbstractStore.ts +14 -8
  147. package/src/stores/StoreFactory.ts +56 -44
  148. package/src/tests/AbstractCliTest.ts +53 -45
  149. package/src/tests/AbstractSchemaTest.ts +1 -3
  150. package/src/utilities/action.utility.ts +3 -1
  151. package/.DS_Store +0 -0
  152. package/.env +0 -25
  153. package/.eslintcache +0 -1
  154. package/build/.spruce/tmp/cached-skills.json +0 -3
  155. package/junit.xml +0 -7
  156. package/src/.DS_Store +0 -0
  157. package/src/.spruce/tmp/cached-skills.json +0 -3
  158. package/yarn-error.log +0 -12174
@@ -9,16 +9,18 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
12
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
14
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
14
15
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
17
  var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
16
18
  var _testUtils = require("@sprucelabs/test-utils");
17
19
  var _AbstractCliTest2 = _interopRequireDefault(require("../../tests/AbstractCliTest"));
18
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class;
20
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2;
19
21
  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); }; }
20
22
  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; } }
21
- var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test)(), _dec3 = (0, _testUtils.test)(), _dec4 = (0, _testUtils.test)(), _dec5 = (0, _testUtils.test)(), _dec6 = (0, _testUtils.test)(), _dec7 = (0, _testUtils.test)(), _dec8 = (0, _testUtils.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
23
+ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test)(), _dec3 = (0, _testUtils.test)(), _dec4 = (0, _testUtils.test)(), _dec5 = (0, _testUtils.test)(), _dec6 = (0, _testUtils.test)(), _dec7 = (0, _testUtils.test)(), (_class = (_class2 = /*#__PURE__*/function (_AbstractCliTest) {
22
24
  (0, _inherits2["default"])(SkillStoreTest, _AbstractCliTest);
23
25
  var _super = _createSuper(SkillStoreTest);
24
26
  function SkillStoreTest() {
@@ -26,25 +28,28 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
26
28
  return _super.apply(this, arguments);
27
29
  }
28
30
  (0, _createClass2["default"])(SkillStoreTest, null, [{
29
- key: "canInstantiateSkillStore",
31
+ key: "beforeEach",
30
32
  value: function () {
31
- var _canInstantiateSkillStore = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
33
+ var _beforeEach = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
32
34
  return _regenerator["default"].wrap(function _callee$(_context) {
33
35
  while (1) {
34
36
  switch (_context.prev = _context.next) {
35
37
  case 0:
36
- _testUtils.assert.isTruthy(this.Store('skill'));
37
- case 1:
38
+ _context.next = 2;
39
+ return (0, _get2["default"])((0, _getPrototypeOf2["default"])(SkillStoreTest), "beforeEach", this).call(this);
40
+ case 2:
41
+ this.store = this.SkillStore();
42
+ case 3:
38
43
  case "end":
39
44
  return _context.stop();
40
45
  }
41
46
  }
42
47
  }, _callee, this);
43
48
  }));
44
- function canInstantiateSkillStore() {
45
- return _canInstantiateSkillStore.apply(this, arguments);
49
+ function beforeEach() {
50
+ return _beforeEach.apply(this, arguments);
46
51
  }
47
- return canInstantiateSkillStore;
52
+ return beforeEach;
48
53
  }()
49
54
  }, {
50
55
  key: "hasRegisterMethod",
@@ -54,7 +59,7 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
54
59
  while (1) {
55
60
  switch (_context2.prev = _context2.next) {
56
61
  case 0:
57
- _testUtils.assert.isFunction(this.Store('skill').register);
62
+ _testUtils.assert.isFunction(this.store.register);
58
63
  case 1:
59
64
  case "end":
60
65
  return _context2.stop();
@@ -79,7 +84,7 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
79
84
  case 0:
80
85
  _context3.next = 2;
81
86
  return _testUtils.assert.doesThrowAsync(function () {
82
- return _this.Store('skill').register({
87
+ return _this.store.register({
83
88
  name: 'awesome skill',
84
89
  slug: 'awesome-skill'
85
90
  });
@@ -111,7 +116,7 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
111
116
  case 0:
112
117
  _context4.next = 2;
113
118
  return _testUtils.assert.doesThrowAsync(function () {
114
- return _this2.Store('skill').loadCurrentSkill();
119
+ return _this2.store.loadCurrentSkill();
115
120
  });
116
121
  case 2:
117
122
  err = _context4.sent;
@@ -140,7 +145,7 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
140
145
  case 0:
141
146
  _context5.next = 2;
142
147
  return _testUtils.assert.doesThrowAsync(function () {
143
- return _this3.Store('skill').isCurrentSkillRegistered();
148
+ return _this3.store.isCurrentSkillRegistered();
144
149
  });
145
150
  case 2:
146
151
  err = _context5.sent;
@@ -170,7 +175,7 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
170
175
  return this.FeatureFixture().installCachedFeatures('skills');
171
176
  case 2:
172
177
  _context6.next = 4;
173
- return this.Store('skill').loadCurrentSkillsNamespace();
178
+ return this.store.loadCurrentSkillsNamespace();
174
179
  case 4:
175
180
  namespace = _context6.sent;
176
181
  _testUtils.assert.isEqual(namespace, 'TestSkill');
@@ -190,7 +195,7 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
190
195
  key: "canSetNamespace",
191
196
  value: function () {
192
197
  var _canSetNamespace = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
193
- var store, namespace;
198
+ var namespace;
194
199
  return _regenerator["default"].wrap(function _callee7$(_context7) {
195
200
  while (1) {
196
201
  switch (_context7.prev = _context7.next) {
@@ -198,20 +203,19 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
198
203
  _context7.next = 2;
199
204
  return this.FeatureFixture().installCachedFeatures('skills');
200
205
  case 2:
201
- store = this.Store('skill');
202
- _context7.next = 5;
203
- return store.loadCurrentSkillsNamespace();
204
- case 5:
206
+ _context7.next = 4;
207
+ return this.store.loadCurrentSkillsNamespace();
208
+ case 4:
205
209
  namespace = _context7.sent;
206
- _context7.next = 8;
207
- return this.Store('skill').setCurrentSkillsNamespace('new-namespace');
208
- case 8:
209
- _context7.next = 10;
210
- return store.loadCurrentSkillsNamespace();
211
- case 10:
210
+ _context7.next = 7;
211
+ return this.store.setCurrentSkillsNamespace('new-namespace');
212
+ case 7:
213
+ _context7.next = 9;
214
+ return this.store.loadCurrentSkillsNamespace();
215
+ case 9:
212
216
  namespace = _context7.sent;
213
217
  _testUtils.assert.isEqual(namespace, 'NewNamespace');
214
- case 12:
218
+ case 11:
215
219
  case "end":
216
220
  return _context7.stop();
217
221
  }
@@ -227,8 +231,9 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
227
231
  key: "canRegister",
228
232
  value: function () {
229
233
  var _canRegister = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
230
- var _results$skill;
231
- var slug, skillStore, isRegistered, skill, client, results, currentSkill, env, err, pkg, namespace;
234
+ var _results$skill,
235
+ _this4 = this;
236
+ var slug, isRegistered, skill, client, results, currentSkill, env, err, pkg, namespace;
232
237
  return _regenerator["default"].wrap(function _callee8$(_context8) {
233
238
  while (1) {
234
239
  switch (_context8.prev = _context8.next) {
@@ -240,44 +245,43 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
240
245
  _context8.next = 5;
241
246
  return this.people.loginAsDemoPerson();
242
247
  case 5:
243
- skillStore = this.Store('skill');
244
- _context8.next = 8;
245
- return skillStore.isCurrentSkillRegistered();
246
- case 8:
248
+ _context8.next = 7;
249
+ return this.store.isCurrentSkillRegistered();
250
+ case 7:
247
251
  isRegistered = _context8.sent;
248
252
  _testUtils.assert.isFalse(isRegistered);
249
- _context8.next = 12;
250
- return skillStore.register({
253
+ _context8.next = 11;
254
+ return this.store.register({
251
255
  name: 'awesome skill',
252
256
  slug: slug
253
257
  });
254
- case 12:
258
+ case 11:
255
259
  skill = _context8.sent;
256
260
  _testUtils.assert.isTruthy(skill);
257
261
  _testUtils.assert.isEqual(skill.name, 'awesome skill');
258
262
  _testUtils.assert.isEqual(skill.slug, slug);
259
263
  _testUtils.assert.isString(skill.apiKey);
260
264
  _testUtils.assert.isString(skill.id);
261
- _context8.next = 20;
265
+ _context8.next = 19;
262
266
  return this.connectToApi();
263
- case 20:
267
+ case 19:
264
268
  client = _context8.sent;
265
- _context8.next = 23;
269
+ _context8.next = 22;
266
270
  return client.authenticate({
267
271
  skillId: skill.id,
268
272
  apiKey: skill.apiKey
269
273
  });
270
- case 23:
274
+ case 22:
271
275
  results = _context8.sent;
272
276
  _testUtils.assert.isEqual((_results$skill = results.skill) === null || _results$skill === void 0 ? void 0 : _results$skill.id, skill.id);
273
- _context8.next = 27;
274
- return skillStore.isCurrentSkillRegistered();
275
- case 27:
277
+ _context8.next = 26;
278
+ return this.store.isCurrentSkillRegistered();
279
+ case 26:
276
280
  isRegistered = _context8.sent;
277
281
  _testUtils.assert.isTrue(isRegistered);
278
- _context8.next = 31;
279
- return skillStore.loadCurrentSkill();
280
- case 31:
282
+ _context8.next = 30;
283
+ return this.store.loadCurrentSkill();
284
+ case 30:
281
285
  currentSkill = _context8.sent;
282
286
  _testUtils.assert.isEqual(currentSkill.id, skill.id);
283
287
  _testUtils.assert.isTrue(currentSkill.isRegistered);
@@ -287,17 +291,17 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
287
291
  env = this.Service('env');
288
292
  _testUtils.assert.isEqual(env.get('SKILL_ID'), skill.id);
289
293
  _testUtils.assert.isEqual(env.get('SKILL_API_KEY'), skill.apiKey);
290
- _context8.next = 42;
294
+ _context8.next = 41;
291
295
  return _testUtils.assert.doesThrowAsync(function () {
292
- return skillStore.setCurrentSkillsNamespace('test');
296
+ return _this4.store.setCurrentSkillsNamespace('test');
293
297
  });
294
- case 42:
298
+ case 41:
295
299
  err = _context8.sent;
296
300
  _testUtils.errorAssert.assertError(err, 'GENERIC');
297
301
  pkg = this.Service('pkg');
298
302
  namespace = pkg.get('skill.namespace');
299
303
  _testUtils.assert.isEqual(namespace, slug);
300
- case 47:
304
+ case 46:
301
305
  case "end":
302
306
  return _context8.stop();
303
307
  }
@@ -309,8 +313,21 @@ var SkillStoreTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test
309
313
  }
310
314
  return canRegister;
311
315
  }()
316
+ }, {
317
+ key: "SkillStore",
318
+ value: function (_SkillStore) {
319
+ function SkillStore() {
320
+ return _SkillStore.apply(this, arguments);
321
+ }
322
+ SkillStore.toString = function () {
323
+ return _SkillStore.toString();
324
+ };
325
+ return SkillStore;
326
+ }(function () {
327
+ return this.Store('skill', {});
328
+ })
312
329
  }]);
313
330
  return SkillStoreTest;
314
- }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "canInstantiateSkillStore", [_dec], Object.getOwnPropertyDescriptor(_class, "canInstantiateSkillStore"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "hasRegisterMethod", [_dec2], Object.getOwnPropertyDescriptor(_class, "hasRegisterMethod"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "cantRegisterIfNotInSkill", [_dec3], Object.getOwnPropertyDescriptor(_class, "cantRegisterIfNotInSkill"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "cantLoadcurrentSkillIfNotInSkill", [_dec4], Object.getOwnPropertyDescriptor(_class, "cantLoadcurrentSkillIfNotInSkill"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "cantCheckIfSkillIsRegisteredNotInSkill", [_dec5], Object.getOwnPropertyDescriptor(_class, "cantCheckIfSkillIsRegisteredNotInSkill"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canGetNamespace", [_dec6], Object.getOwnPropertyDescriptor(_class, "canGetNamespace"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canSetNamespace", [_dec7], Object.getOwnPropertyDescriptor(_class, "canSetNamespace"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canRegister", [_dec8], Object.getOwnPropertyDescriptor(_class, "canRegister"), _class)), _class));
331
+ }(_AbstractCliTest2["default"]), (0, _defineProperty2["default"])(_class2, "store", void 0), _class2), ((0, _applyDecoratedDescriptor2["default"])(_class, "hasRegisterMethod", [_dec], Object.getOwnPropertyDescriptor(_class, "hasRegisterMethod"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "cantRegisterIfNotInSkill", [_dec2], Object.getOwnPropertyDescriptor(_class, "cantRegisterIfNotInSkill"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "cantLoadcurrentSkillIfNotInSkill", [_dec3], Object.getOwnPropertyDescriptor(_class, "cantLoadcurrentSkillIfNotInSkill"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "cantCheckIfSkillIsRegisteredNotInSkill", [_dec4], Object.getOwnPropertyDescriptor(_class, "cantCheckIfSkillIsRegisteredNotInSkill"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canGetNamespace", [_dec5], Object.getOwnPropertyDescriptor(_class, "canGetNamespace"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canSetNamespace", [_dec6], Object.getOwnPropertyDescriptor(_class, "canSetNamespace"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canRegister", [_dec7], Object.getOwnPropertyDescriptor(_class, "canRegister"), _class)), _class));
315
332
  exports["default"] = SkillStoreTest;
316
333
  //# sourceMappingURL=SkillStore.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkillStore.test.js","names":["SkillStoreTest","test","assert","isTruthy","Store","isFunction","register","doesThrowAsync","name","slug","err","errorAssert","assertError","loadCurrentSkill","isCurrentSkillRegistered","FeatureFixture","installCachedFeatures","loadCurrentSkillsNamespace","namespace","isEqual","store","setCurrentSkillsNamespace","Date","getTime","people","loginAsDemoPerson","skillStore","isRegistered","isFalse","skill","isString","apiKey","id","connectToApi","client","authenticate","skillId","results","isTrue","currentSkill","env","Service","get","pkg","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/SkillStore.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class SkillStoreTest extends AbstractCliTest {\n\t@test()\n\tprotected static async canInstantiateSkillStore() {\n\t\tassert.isTruthy(this.Store('skill'))\n\t}\n\n\t@test()\n\tprotected static async hasRegisterMethod() {\n\t\tassert.isFunction(this.Store('skill').register)\n\t}\n\n\t@test()\n\tprotected static async cantRegisterIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Store('skill').register({\n\t\t\t\tname: 'awesome skill',\n\t\t\t\tslug: 'awesome-skill',\n\t\t\t})\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantLoadcurrentSkillIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Store('skill').loadCurrentSkill()\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantCheckIfSkillIsRegisteredNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Store('skill').isCurrentSkillRegistered()\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async canGetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst namespace = await this.Store('skill').loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'TestSkill')\n\t}\n\n\t@test()\n\tprotected static async canSetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst store = this.Store('skill')\n\t\tlet namespace = await store.loadCurrentSkillsNamespace()\n\n\t\tawait this.Store('skill').setCurrentSkillsNamespace('new-namespace')\n\n\t\tnamespace = await store.loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'NewNamespace')\n\t}\n\n\t@test()\n\tprotected static async canRegister() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst slug = `awesome-skill-${new Date().getTime()}`\n\t\tawait this.people.loginAsDemoPerson()\n\n\t\tconst skillStore = this.Store('skill')\n\n\t\tlet isRegistered = await skillStore.isCurrentSkillRegistered()\n\t\tassert.isFalse(isRegistered)\n\n\t\tconst skill = await skillStore.register({\n\t\t\tname: 'awesome skill',\n\t\t\tslug,\n\t\t})\n\n\t\tassert.isTruthy(skill)\n\t\tassert.isEqual(skill.name, 'awesome skill')\n\t\tassert.isEqual(skill.slug, slug)\n\t\tassert.isString(skill.apiKey)\n\t\tassert.isString(skill.id)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst results = await client.authenticate({\n\t\t\tskillId: skill.id,\n\t\t\tapiKey: skill.apiKey,\n\t\t})\n\n\t\tassert.isEqual(results.skill?.id, skill.id)\n\n\t\tisRegistered = await skillStore.isCurrentSkillRegistered()\n\t\tassert.isTrue(isRegistered)\n\n\t\tconst currentSkill = await skillStore.loadCurrentSkill()\n\n\t\tassert.isEqual(currentSkill.id, skill.id)\n\t\tassert.isTrue(currentSkill.isRegistered)\n\t\tassert.isEqual(currentSkill.name, 'awesome skill')\n\t\tassert.isEqual(currentSkill.slug, slug)\n\t\tassert.isEqual(currentSkill.apiKey, skill.apiKey)\n\n\t\tconst env = this.Service('env')\n\n\t\tassert.isEqual(env.get('SKILL_ID'), skill.id)\n\t\tassert.isEqual(env.get('SKILL_API_KEY'), skill.apiKey)\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tskillStore.setCurrentSkillsNamespace('test')\n\t\t)\n\n\t\terrorAssert.assertError(err, 'GENERIC')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst namespace = pkg.get('skill.namespace')\n\t\tassert.isEqual(namespace, slug)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SkillStore.test.js","names":["SkillStoreTest","test","store","SkillStore","assert","isFunction","register","doesThrowAsync","name","slug","err","errorAssert","assertError","loadCurrentSkill","isCurrentSkillRegistered","FeatureFixture","installCachedFeatures","loadCurrentSkillsNamespace","namespace","isEqual","setCurrentSkillsNamespace","Date","getTime","people","loginAsDemoPerson","isRegistered","isFalse","skill","isTruthy","isString","apiKey","id","connectToApi","client","authenticate","skillId","results","isTrue","currentSkill","env","Service","get","pkg","Store","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/SkillStore.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport SkillStore from '../../features/skill/stores/SkillStore'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class SkillStoreTest extends AbstractCliTest {\n\tprivate static store: SkillStore\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.store = this.SkillStore()\n\t}\n\n\t@test()\n\tprotected static async hasRegisterMethod() {\n\t\tassert.isFunction(this.store.register)\n\t}\n\n\t@test()\n\tprotected static async cantRegisterIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.register({\n\t\t\t\tname: 'awesome skill',\n\t\t\t\tslug: 'awesome-skill',\n\t\t\t})\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantLoadcurrentSkillIfNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() => this.store.loadCurrentSkill())\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async cantCheckIfSkillIsRegisteredNotInSkill() {\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.isCurrentSkillRegistered()\n\t\t)\n\t\terrorAssert.assertError(err, 'DIRECTORY_NOT_SKILL')\n\t}\n\n\t@test()\n\tprotected static async canGetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\t\tconst namespace = await this.store.loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'TestSkill')\n\t}\n\n\t@test()\n\tprotected static async canSetNamespace() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tlet namespace = await this.store.loadCurrentSkillsNamespace()\n\t\tawait this.store.setCurrentSkillsNamespace('new-namespace')\n\t\tnamespace = await this.store.loadCurrentSkillsNamespace()\n\t\tassert.isEqual(namespace, 'NewNamespace')\n\t}\n\n\t@test()\n\tprotected static async canRegister() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst slug = `awesome-skill-${new Date().getTime()}`\n\t\tawait this.people.loginAsDemoPerson()\n\n\t\tlet isRegistered = await this.store.isCurrentSkillRegistered()\n\t\tassert.isFalse(isRegistered)\n\n\t\tconst skill = await this.store.register({\n\t\t\tname: 'awesome skill',\n\t\t\tslug,\n\t\t})\n\n\t\tassert.isTruthy(skill)\n\t\tassert.isEqual(skill.name, 'awesome skill')\n\t\tassert.isEqual(skill.slug, slug)\n\t\tassert.isString(skill.apiKey)\n\t\tassert.isString(skill.id)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst results = await client.authenticate({\n\t\t\tskillId: skill.id,\n\t\t\tapiKey: skill.apiKey,\n\t\t})\n\n\t\tassert.isEqual(results.skill?.id, skill.id)\n\n\t\tisRegistered = await this.store.isCurrentSkillRegistered()\n\t\tassert.isTrue(isRegistered)\n\n\t\tconst currentSkill = await this.store.loadCurrentSkill()\n\n\t\tassert.isEqual(currentSkill.id, skill.id)\n\t\tassert.isTrue(currentSkill.isRegistered)\n\t\tassert.isEqual(currentSkill.name, 'awesome skill')\n\t\tassert.isEqual(currentSkill.slug, slug)\n\t\tassert.isEqual(currentSkill.apiKey, skill.apiKey)\n\n\t\tconst env = this.Service('env')\n\n\t\tassert.isEqual(env.get('SKILL_ID'), skill.id)\n\t\tassert.isEqual(env.get('SKILL_API_KEY'), skill.apiKey)\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.store.setCurrentSkillsNamespace('test')\n\t\t)\n\n\t\terrorAssert.assertError(err, 'GENERIC')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst namespace = pkg.get('skill.namespace')\n\t\tassert.isEqual(namespace, slug)\n\t}\n\n\tprivate static SkillStore(): SkillStore {\n\t\treturn this.Store('skill', {})\n\t}\n}\n"],"mappings":"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"}
@@ -42,7 +42,7 @@ var StoreFeatureTest = (_dec = (0, _testUtils.test)(), (_class = /*#__PURE__*/fu
42
42
  code: 0
43
43
  });
44
44
  hitCount = 0;
45
- emitter = this.getEmitter();
45
+ emitter = this.emitter;
46
46
  _context2.next = 7;
47
47
  return emitter.on('feature.will-execute', /*#__PURE__*/function () {
48
48
  var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"StoreFeature.test.js","names":["StoreFeatureTest","test","FeatureFixture","installCachedFeatures","CommandService","fakeCommand","code","hitCount","emitter","getEmitter","on","featureCode","actionCode","emit","assert","isEqual","results","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/StoreFeature.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport CommandService from '../../services/CommandService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class StoreFeatureTest extends AbstractCliTest {\n\t@test()\n\tprotected static async syncsOnWillExecute() {\n\t\tawait this.FeatureFixture().installCachedFeatures('stores')\n\n\t\tCommandService.fakeCommand(/yarn/, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tlet hitCount = 0\n\t\tconst emitter = this.getEmitter()\n\t\tawait emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tasync ({ featureCode, actionCode }) => {\n\t\t\t\tif (featureCode === 'store' && actionCode === 'sync') {\n\t\t\t\t\thitCount++\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\n\t\tawait emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode: 'node',\n\t\t\tactionCode: 'upgrade',\n\t\t})\n\n\t\tassert.isEqual(hitCount, 0)\n\n\t\tawait emitter.emit('feature.did-execute', {\n\t\t\tfeatureCode: 'node',\n\t\t\tactionCode: 'upgrade',\n\t\t\tresults: {},\n\t\t})\n\n\t\tassert.isEqual(hitCount, 1)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,gBAAgB,WACnC,IAAAC,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,wGAAP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACC,cAAc,EAAE,CAACC,qBAAqB,CAAC,QAAQ,CAAC;cAAA;gBAE3DC,0BAAc,CAACC,WAAW,CAAC,MAAM,EAAE;kBAClCC,IAAI,EAAE;gBACP,CAAC,CAAC;gBAEEC,QAAQ,GAAG,CAAC;gBACVC,OAAO,GAAG,IAAI,CAACC,UAAU,EAAE;gBAAA;gBAAA,OAC3BD,OAAO,CAACE,EAAE,CACf,sBAAsB;kBAAA,0FACtB;oBAAA;oBAAA;sBAAA;wBAAA;0BAAA;4BAASC,WAAW,QAAXA,WAAW,EAAEC,UAAU,QAAVA,UAAU;4BAC/B,IAAID,WAAW,KAAK,OAAO,IAAIC,UAAU,KAAK,MAAM,EAAE;8BACrDL,QAAQ,EAAE;4BACX;0BAAC;0BAAA;4BAAA;wBAAA;sBAAA;oBAAA;kBAAA,CACD;kBAAA;oBAAA;kBAAA;gBAAA,IACD;cAAA;gBAAA;gBAAA,OAEKC,OAAO,CAACK,IAAI,CAAC,sBAAsB,EAAE;kBAC1CF,WAAW,EAAE,MAAM;kBACnBC,UAAU,EAAE;gBACb,CAAC,CAAC;cAAA;gBAEFE,iBAAM,CAACC,OAAO,CAACR,QAAQ,EAAE,CAAC,CAAC;gBAAA;gBAAA,OAErBC,OAAO,CAACK,IAAI,CAAC,qBAAqB,EAAE;kBACzCF,WAAW,EAAE,MAAM;kBACnBC,UAAU,EAAE,SAAS;kBACrBI,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC;cAAA;gBAEFF,iBAAM,CAACC,OAAO,CAACR,QAAQ,EAAE,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAlC4CU,4BAAe;AAAA"}
1
+ {"version":3,"file":"StoreFeature.test.js","names":["StoreFeatureTest","test","FeatureFixture","installCachedFeatures","CommandService","fakeCommand","code","hitCount","emitter","on","featureCode","actionCode","emit","assert","isEqual","results","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/StoreFeature.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport CommandService from '../../services/CommandService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class StoreFeatureTest extends AbstractCliTest {\n\t@test()\n\tprotected static async syncsOnWillExecute() {\n\t\tawait this.FeatureFixture().installCachedFeatures('stores')\n\n\t\tCommandService.fakeCommand(/yarn/, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tlet hitCount = 0\n\t\tconst emitter = this.emitter\n\t\tawait emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tasync ({ featureCode, actionCode }) => {\n\t\t\t\tif (featureCode === 'store' && actionCode === 'sync') {\n\t\t\t\t\thitCount++\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\n\t\tawait emitter.emit('feature.will-execute', {\n\t\t\tfeatureCode: 'node',\n\t\t\tactionCode: 'upgrade',\n\t\t})\n\n\t\tassert.isEqual(hitCount, 0)\n\n\t\tawait emitter.emit('feature.did-execute', {\n\t\t\tfeatureCode: 'node',\n\t\t\tactionCode: 'upgrade',\n\t\t\tresults: {},\n\t\t})\n\n\t\tassert.isEqual(hitCount, 1)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,gBAAgB,WACnC,IAAAC,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,wGAAP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACC,cAAc,EAAE,CAACC,qBAAqB,CAAC,QAAQ,CAAC;cAAA;gBAE3DC,0BAAc,CAACC,WAAW,CAAC,MAAM,EAAE;kBAClCC,IAAI,EAAE;gBACP,CAAC,CAAC;gBAEEC,QAAQ,GAAG,CAAC;gBACVC,OAAO,GAAG,IAAI,CAACA,OAAO;gBAAA;gBAAA,OACtBA,OAAO,CAACC,EAAE,CACf,sBAAsB;kBAAA,0FACtB;oBAAA;oBAAA;sBAAA;wBAAA;0BAAA;4BAASC,WAAW,QAAXA,WAAW,EAAEC,UAAU,QAAVA,UAAU;4BAC/B,IAAID,WAAW,KAAK,OAAO,IAAIC,UAAU,KAAK,MAAM,EAAE;8BACrDJ,QAAQ,EAAE;4BACX;0BAAC;0BAAA;4BAAA;wBAAA;sBAAA;oBAAA;kBAAA,CACD;kBAAA;oBAAA;kBAAA;gBAAA,IACD;cAAA;gBAAA;gBAAA,OAEKC,OAAO,CAACI,IAAI,CAAC,sBAAsB,EAAE;kBAC1CF,WAAW,EAAE,MAAM;kBACnBC,UAAU,EAAE;gBACb,CAAC,CAAC;cAAA;gBAEFE,iBAAM,CAACC,OAAO,CAACP,QAAQ,EAAE,CAAC,CAAC;gBAAA;gBAAA,OAErBC,OAAO,CAACI,IAAI,CAAC,qBAAqB,EAAE;kBACzCF,WAAW,EAAE,MAAM;kBACnBC,UAAU,EAAE,SAAS;kBACrBI,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC;cAAA;gBAEFF,iBAAM,CAACC,OAAO,CAACP,QAAQ,EAAE,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAlC4CS,4BAAe;AAAA"}
package/build/cli.js CHANGED
@@ -22,7 +22,7 @@ var _SpruceError = _interopRequireDefault(require("./errors/SpruceError"));
22
22
  var _ActionExecuter = _interopRequireDefault(require("./features/ActionExecuter"));
23
23
  var _ActionFactory = _interopRequireDefault(require("./features/ActionFactory"));
24
24
  var _FeatureCommandAttacher = _interopRequireDefault(require("./features/FeatureCommandAttacher"));
25
- var _FeatureInstaller = _interopRequireDefault(require("./features/FeatureInstaller"));
25
+ var _FeatureInstaller = require("./features/FeatureInstaller");
26
26
  var _FeatureInstallerFactory = _interopRequireDefault(require("./features/FeatureInstallerFactory"));
27
27
  var _GlobalEmitter = _interopRequireDefault(require("./GlobalEmitter"));
28
28
  var _InFlightEntertainment = _interopRequireDefault(require("./InFlightEntertainment"));
@@ -668,13 +668,13 @@ function _setupInFlightEntertainment() {
668
668
  command: command,
669
669
  ui: ui
670
670
  });
671
- _FeatureInstaller["default"].startInFlightIntertainmentHandler = function (didUpdateHandler) {
671
+ _FeatureInstaller.FeatureInstallerImpl.startInFlightIntertainmentHandler = function (didUpdateHandler) {
672
672
  _InFlightEntertainment["default"].start();
673
673
  didUpdateHandler(function (message) {
674
674
  _InFlightEntertainment["default"].writeStatus(message);
675
675
  });
676
676
  };
677
- _FeatureInstaller["default"].stopInFlightIntertainmentHandler = function () {
677
+ _FeatureInstaller.FeatureInstallerImpl.stopInFlightIntertainmentHandler = function () {
678
678
  _InFlightEntertainment["default"].stop();
679
679
  };
680
680
  }
package/build/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","names":["Cli","cwd","featureInstaller","serviceFactory","emitter","attacher","actionExecuter","on","off","emit","emitAndFlattenResponses","options","install","code","getFeature","isInstalled","skill","status","errors","SpruceError","commandService","Service","command","shouldRunOnSourceFiles","execute","results","resultParts","stdout","split","HEALTH_DIVIDER","JSON","parse","error","originalError","apiClients","key","disconnect","program","CliGlobalEmitter","Emitter","process","ImportService","enableCaching","ServiceFactory","apiClientFactory","buildApiClientFactory","storeFactory","StoreFactory","homeDir","osUtil","homedir","ui","graphicsInterface","TerminalInterface","writerFactory","WriterFactory","templates","settings","linter","optionOverrides","loadOptionOverrides","blockedCommands","loadCommandBlocks","actionFactory","ActionFactory","ActionExecuter","featureInstallerFactory","FeatureInstallerFactory","WithAllFeatures","FeatureCommandAttacher","codes","featureCodes","feature","attachFeature","commands","sort","a","b","_name","localeCompare","action","_","args","cli","pkg","blocks","doesExist","get","mapped","overrides","Object","keys","forEach","argParserUtil","bootOptions","apiClientUtil","generateClientCacheKey","connectToApi","connect","eventsContracts","require","MercuryClientFactory","Client","contracts","host","DEFAULT_HOST","allowSelfSignedCrt","client","shouldAuthAsCurrentSkill","shouldAuthAsLoggedInPerson","auth","doesPkgExist","skillId","apiKey","getCurrentSkill","id","person","getLoggedInPerson","token","length","authenticate","run","argv","Command","storeOptionsAsProperties","option","dirIdx","findIndex","v","dir","newCwd","diskUtil","resolvePath","terminal","env","CLI_RENDER_STACK_TRACES","clear","renderHero","CLI_HERO","isAskingForVersion","json","renderHeadline","version","Boot","HOST","setupInFlightEntertainment","parseAsync","_actionResults","getClients","doesSupportColor","ENABLE_INSTALL_ENTERTAINMENT","CommandService","__dirname","InFlightEntertainment","setup","FeatureInstaller","startInFlightIntertainmentHandler","didUpdateHandler","start","message","writeStatus","stopInFlightIntertainmentHandler","stop"],"sources":["../src/cli.ts"],"sourcesContent":["import osUtil from 'os'\nimport {\n\tConnectionOptions,\n\tMercuryClientFactory,\n} from '@sprucelabs/mercury-client'\nimport { MercuryEventEmitter, SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tdiskUtil,\n\tHealthCheckResults,\n\tHEALTH_DIVIDER,\n} from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport { Command, CommanderStatic } from 'commander'\nimport './addons/filePrompt.addon'\nimport { CLI_HERO, DEFAULT_HOST } from './constants'\nimport SpruceError from './errors/SpruceError'\nimport ActionExecuter from './features/ActionExecuter'\nimport ActionFactory from './features/ActionFactory'\nimport FeatureCommandAttacher, {\n\tBlockedCommands,\n\tOptionOverrides,\n} from './features/FeatureCommandAttacher'\nimport FeatureInstaller from './features/FeatureInstaller'\nimport FeatureInstallerFactory from './features/FeatureInstallerFactory'\nimport { FeatureCode, InstallFeatureOptions } from './features/features.types'\nimport CliGlobalEmitter, {\n\tGlobalEmitter,\n\tGlobalEventContract,\n} from './GlobalEmitter'\nimport InFlightEntertainment from './InFlightEntertainment'\nimport TerminalInterface from './interfaces/TerminalInterface'\nimport CommandService from './services/CommandService'\nimport ImportService from './services/ImportService'\nimport PkgService from './services/PkgService'\nimport ServiceFactory from './services/ServiceFactory'\nimport StoreFactory from './stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from './types/apiClient.types'\nimport { GraphicsInterface } from './types/cli.types'\nimport apiClientUtil from './utilities/apiClient.utility'\nimport { argParserUtil } from './utilities/argParser.utility'\nimport WriterFactory from './writers/WriterFactory'\n\ninterface HealthOptions {\n\tshouldRunOnSourceFiles?: boolean\n}\n\nexport interface CliInterface extends MercuryEventEmitter<GlobalEventContract> {\n\tinstallFeatures: FeatureInstaller['install']\n\tgetFeature: FeatureInstaller['getFeature']\n\tcheckHealth(options?: HealthOptions): Promise<HealthCheckResults>\n}\n\nexport interface CliBootOptions {\n\tcwd?: string\n\thomeDir?: string\n\tprogram?: CommanderStatic['program']\n\tgraphicsInterface?: GraphicsInterface\n\temitter?: GlobalEmitter\n\tapiClientFactory?: ApiClientFactory\n\tfeatureInstaller?: FeatureInstaller\n\thost?: string\n}\n\ntype PromiseCache = Record<string, Promise<ApiClient>>\n\nexport default class Cli implements CliInterface {\n\tprivate cwd: string\n\tprivate featureInstaller: FeatureInstaller\n\tprivate serviceFactory: ServiceFactory\n\tpublic readonly emitter: GlobalEmitter\n\tprivate static apiClients: PromiseCache = {}\n\tprivate attacher?: FeatureCommandAttacher\n\tprivate actionExecuter?: ActionExecuter\n\n\tprivate constructor(\n\t\tcwd: string,\n\t\tfeatureInstaller: FeatureInstaller,\n\t\tserviceFactory: ServiceFactory,\n\t\temitter: GlobalEmitter,\n\t\tattacher?: FeatureCommandAttacher,\n\t\tactionExecuter?: ActionExecuter\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.featureInstaller = featureInstaller\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.emitter = emitter\n\t\tthis.attacher = attacher\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic static async resetApiClients() {\n\t\tfor (const key in this.apiClients) {\n\t\t\tawait (await this.apiClients[key]).disconnect()\n\t\t}\n\n\t\tthis.apiClients = {}\n\t}\n\n\tpublic getAttacher() {\n\t\treturn this.attacher\n\t}\n\n\tpublic getActionExecuter() {\n\t\treturn this.actionExecuter\n\t}\n\n\tpublic async on(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.on(...args)\n\t}\n\n\tpublic async off(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.off(...args)\n\t}\n\n\tpublic async emit(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.emit(...args)\n\t}\n\n\tpublic async emitAndFlattenResponses(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.emitAndFlattenResponses(...args)\n\t}\n\n\tpublic async installFeatures(options: InstallFeatureOptions) {\n\t\treturn this.featureInstaller.install(options)\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async checkHealth(\n\t\toptions?: HealthOptions\n\t): Promise<HealthCheckResults> {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (!isInstalled) {\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tcode: 'SKILL_NOT_INSTALLED',\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}\n\n\t\ttry {\n\t\t\tconst commandService = this.serviceFactory.Service(this.cwd, 'command')\n\t\t\tconst command =\n\t\t\t\toptions?.shouldRunOnSourceFiles === false\n\t\t\t\t\t? 'yarn health'\n\t\t\t\t\t: 'yarn health.local'\n\t\t\tconst results = await commandService.execute(command)\n\t\t\tconst resultParts = results.stdout.split(HEALTH_DIVIDER)\n\n\t\t\treturn JSON.parse(resultParts[1]) as HealthCheckResults\n\t\t} catch (originalError: any) {\n\t\t\tconst error = new SpruceError({\n\t\t\t\tcode: 'BOOT_ERROR',\n\t\t\t\toriginalError,\n\t\t\t})\n\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [error],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static async Boot(options?: CliBootOptions): Promise<CliInterface> {\n\t\tconst program = options?.program\n\t\tconst emitter = options?.emitter ?? CliGlobalEmitter.Emitter()\n\n\t\tlet cwd = options?.cwd ?? process.cwd()\n\n\t\tImportService.enableCaching()\n\n\t\tconst serviceFactory = new ServiceFactory()\n\t\tconst apiClientFactory =\n\t\t\toptions?.apiClientFactory ??\n\t\t\tCli.buildApiClientFactory(cwd, serviceFactory, options)\n\n\t\tconst storeFactory = new StoreFactory({\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: options?.homeDir ?? osUtil.homedir(),\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t})\n\n\t\tconst ui = options?.graphicsInterface ?? new TerminalInterface(cwd)\n\t\tlet featureInstaller: FeatureInstaller | undefined\n\n\t\tconst writerFactory = new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui,\n\t\t\tsettings: serviceFactory.Service(cwd, 'settings'),\n\t\t\tlinter: serviceFactory.Service(cwd, 'lint'),\n\t\t})\n\n\t\tconst optionOverrides = this.loadOptionOverrides(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst blockedCommands = this.loadCommandBlocks(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\tui,\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory,\n\t\t\ttemplates,\n\t\t\twriterFactory,\n\t\t\tblockedCommands,\n\t\t\toptionOverrides,\n\t\t})\n\n\t\tconst actionExecuter = new ActionExecuter({\n\t\t\tactionFactory,\n\t\t\tui,\n\t\t\temitter,\n\t\t\t//@ts-ignore\n\t\t\tfeatureInstallerFactory: () => featureInstaller,\n\t\t})\n\n\t\tfeatureInstaller =\n\t\t\toptions?.featureInstaller ??\n\t\t\tFeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\tlet attacher: FeatureCommandAttacher | undefined\n\n\t\tif (program) {\n\t\t\tattacher = new FeatureCommandAttacher({\n\t\t\t\tprogram,\n\t\t\t\tui,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\t\tconst codes = FeatureInstallerFactory.featureCodes\n\n\t\t\tfor (const code of codes) {\n\t\t\t\tconst feature = featureInstaller.getFeature(code)\n\t\t\t\tawait attacher.attachFeature(feature)\n\t\t\t}\n\n\t\t\tprogram.commands.sort((a: any, b: any) => a._name.localeCompare(b._name))\n\n\t\t\tprogram.action((_, command) => {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'INVALID_COMMAND',\n\t\t\t\t\targs: command.args || [],\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tconst cli = new Cli(\n\t\t\tcwd,\n\t\t\tfeatureInstaller,\n\t\t\tserviceFactory,\n\t\t\temitter,\n\t\t\tattacher,\n\t\t\tactionExecuter\n\t\t)\n\n\t\treturn cli as CliInterface\n\t}\n\n\tprivate static loadCommandBlocks(pkg: PkgService): BlockedCommands {\n\t\tlet blocks: BlockedCommands = {}\n\t\tif (pkg.doesExist()) {\n\t\t\tblocks = pkg.get('skill.blockedCommands') ?? {}\n\t\t}\n\t\treturn blocks\n\t}\n\n\tprivate static loadOptionOverrides(pkg: PkgService): OptionOverrides {\n\t\tconst mapped: OptionOverrides = {}\n\n\t\tif (pkg.doesExist()) {\n\t\t\tconst overrides = pkg.get('skill.commandOverrides')\n\n\t\t\tObject.keys(overrides ?? {}).forEach((command) => {\n\t\t\t\tconst options = argParserUtil.parse(overrides[command])\n\t\t\t\tmapped[command] = options\n\t\t\t})\n\t\t}\n\t\treturn mapped\n\t}\n\n\tpublic static buildApiClientFactory(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): ApiClientFactory {\n\t\tconst apiClientFactory = async (options?: ApiClientFactoryOptions) => {\n\t\t\tconst key = apiClientUtil.generateClientCacheKey(options)\n\n\t\t\tif (!Cli.apiClients[key]) {\n\t\t\t\tCli.apiClients[key] = Cli.connectToApi(\n\t\t\t\t\tcwd,\n\t\t\t\t\tserviceFactory,\n\t\t\t\t\toptions,\n\t\t\t\t\tbootOptions\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn Cli.apiClients[key]\n\t\t}\n\n\t\treturn apiClientFactory\n\t}\n\n\tprivate static async connectToApi(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\toptions?: ApiClientFactoryOptions,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): Promise<ApiClient> {\n\t\tconst connect = bootOptions?.apiClientFactory\n\t\t\t? bootOptions.apiClientFactory\n\t\t\t: async () => {\n\t\t\t\t\tconst eventsContracts =\n\t\t\t\t\t\trequire('#spruce/events/events.contract').default\n\n\t\t\t\t\tconst client: ApiClient = await MercuryClientFactory.Client({\n\t\t\t\t\t\tcontracts: eventsContracts as any,\n\t\t\t\t\t\thost: bootOptions?.host ?? DEFAULT_HOST,\n\t\t\t\t\t\tallowSelfSignedCrt: true,\n\t\t\t\t\t\t...bootOptions,\n\t\t\t\t\t})\n\n\t\t\t\t\treturn client\n\t\t\t }\n\n\t\tconst {\n\t\t\tshouldAuthAsCurrentSkill = false,\n\t\t\tshouldAuthAsLoggedInPerson = true,\n\t\t} = options ?? {}\n\n\t\tconst client = await connect()\n\n\t\tlet auth: SpruceSchemas.Mercury.v2020_12_25.AuthenticateEmitPayload = {}\n\n\t\tconst pkg = serviceFactory.Service(cwd, 'pkg')\n\t\tconst doesPkgExist = pkg.doesExist()\n\n\t\tif (options?.skillId && options?.apiKey) {\n\t\t\tauth = {\n\t\t\t\tskillId: options.skillId,\n\t\t\t\tapiKey: options.apiKey,\n\t\t\t}\n\t\t} else if (shouldAuthAsCurrentSkill) {\n\t\t\tconst skill = serviceFactory.Service(cwd, 'auth').getCurrentSkill()\n\n\t\t\tif (skill) {\n\t\t\t\tauth = {\n\t\t\t\t\tskillId: skill.id,\n\t\t\t\t\tapiKey: skill.apiKey,\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (doesPkgExist && shouldAuthAsLoggedInPerson) {\n\t\t\tconst person = serviceFactory.Service(cwd, 'auth').getLoggedInPerson()\n\n\t\t\tif (person) {\n\t\t\t\tauth.token = person.token\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(auth).length > 0) {\n\t\t\tawait client.authenticate({\n\t\t\t\t...(auth as any),\n\t\t\t})\n\n\t\t\t//@ts-ignore\n\t\t\tclient.auth = auth\n\t\t}\n\n\t\treturn client\n\t}\n}\n\nexport async function run(argv: string[] = []): Promise<void> {\n\tconst program = new Command()\n\tlet cwd = process.cwd()\n\n\tprogram.storeOptionsAsProperties(false)\n\tprogram.option('--no-color', 'Disable color output in the console')\n\tprogram.option(\n\t\t'-d, --directory <path>',\n\t\t'The working directory to execute the command'\n\t)\n\tprogram.option('-v, --version', 'The version of the cli')\n\n\tconst dirIdx = process.argv.findIndex(\n\t\t(v) => v === '--directory' || v === '-d'\n\t)\n\n\tif (dirIdx > -1) {\n\t\tconst dir = process.argv[dirIdx + 1]\n\t\tconst newCwd = diskUtil.resolvePath(cwd, dir)\n\t\tcwd = newCwd\n\t}\n\n\tconst terminal = new TerminalInterface(\n\t\tcwd,\n\t\tprocess.env.CLI_RENDER_STACK_TRACES !== 'false'\n\t)\n\tterminal.clear()\n\tterminal.renderHero(CLI_HERO)\n\n\tconst isAskingForVersion =\n\t\tprocess.argv.findIndex((v) => v === '--version' || v === '-v') > -1\n\n\tif (isAskingForVersion) {\n\t\tconst json = require('../package.json')\n\t\tterminal.renderHeadline(`Version ${json.version}`)\n\t\treturn\n\t}\n\n\tawait Cli.Boot({\n\t\tprogram,\n\t\tcwd,\n\t\thost: process.env.HOST,\n\t\tgraphicsInterface: terminal,\n\t})\n\n\tawait setupInFlightEntertainment(terminal)\n\n\tconst command = await program.parseAsync(argv)\n\n\t//@ts-ignore\n\tconst results = await command._actionResults[0]\n\n\tfor (const client of MercuryClientFactory.getClients()) {\n\t\tawait client.disconnect()\n\t}\n\n\treturn results\n}\n\nasync function setupInFlightEntertainment(ui: TerminalInterface) {\n\tif (\n\t\tTerminalInterface.doesSupportColor() &&\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT !== 'false'\n\t) {\n\t\tconst command = new CommandService(diskUtil.resolvePath(__dirname, '../'))\n\t\tInFlightEntertainment.setup({ command, ui })\n\n\t\tFeatureInstaller.startInFlightIntertainmentHandler = (didUpdateHandler) => {\n\t\t\tInFlightEntertainment.start()\n\t\t\tdidUpdateHandler((message) => {\n\t\t\t\tInFlightEntertainment.writeStatus(message)\n\t\t\t})\n\t\t}\n\n\t\tFeatureInstaller.stopInFlightIntertainmentHandler = () => {\n\t\t\tInFlightEntertainment.stop()\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AAKA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AAIA;AACA;AACA;AACA;AAEA;AACA;AAOA;AACA;AACA;AAAmD;AAAA;AAAA;AAAA;AAAA;AAAA,IAyB9BA,GAAG;EASvB,aACCC,GAAW,EACXC,gBAAkC,EAClCC,cAA8B,EAC9BC,OAAsB,EACtBC,QAAiC,EACjCC,cAA+B,EAC9B;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IACD,IAAI,CAACL,GAAG,GAAGA,GAAG;IACd,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACC,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,cAAc,GAAGA,cAAc;EACrC;EAAC;IAAA;IAAA,OAUD,uBAAqB;MACpB,OAAO,IAAI,CAACD,QAAQ;IACrB;EAAC;IAAA;IAAA,OAED,6BAA2B;MAC1B,OAAO,IAAI,CAACC,cAAc;IAC3B;EAAC;IAAA;IAAA;MAAA,wFAED;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,iCAEQ,qBAAI,CAACF,OAAO,EAACG,EAAE,4BAAS;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC/B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,yFAED;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,kCAEQ,sBAAI,CAACH,OAAO,EAACI,GAAG,8BAAS;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAChC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,0FAED;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,kCAEQ,sBAAI,CAACJ,OAAO,EAACK,IAAI,8BAAS;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,6GAED;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,kCAEQ,sBAAI,CAACL,OAAO,EAACM,uBAAuB,8BAAS;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACpD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,qGAED,kBAA6BC,OAA8B;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACnD,IAAI,CAACT,gBAAgB,CAACU,OAAO,CAACD,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC7C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,oBAAyCE,IAAO,EAAE;MACjD,OAAO,IAAI,CAACX,gBAAgB,CAACY,UAAU,CAACD,IAAI,CAAC;IAC9C;EAAC;IAAA;IAAA;MAAA,iGAED,kBACCF,OAAuB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEG,IAAI,CAACT,gBAAgB,CAACa,WAAW,CAAC,OAAO,CAAC;cAAA;gBAA9DA,WAAW;gBAAA,IAEZA,WAAW;kBAAA;kBAAA;gBAAA;gBAAA,kCACR;kBACNC,KAAK,EAAE;oBACNC,MAAM,EAAE,QAAQ;oBAChBC,MAAM,EAAE,CACP,IAAIC,uBAAW,CAAC;sBACf;sBACAN,IAAI,EAAE;oBACP,CAAC,CAAC;kBAEJ;gBACD,CAAC;cAAA;gBAAA;gBAIKO,cAAc,GAAG,IAAI,CAACjB,cAAc,CAACkB,OAAO,CAAC,IAAI,CAACpB,GAAG,EAAE,SAAS,CAAC;gBACjEqB,OAAO,GACZ,CAAAX,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEY,sBAAsB,MAAK,KAAK,GACtC,aAAa,GACb,mBAAmB;gBAAA;gBAAA,OACDH,cAAc,CAACI,OAAO,CAACF,OAAO,CAAC;cAAA;gBAA/CG,OAAO;gBACPC,WAAW,GAAGD,OAAO,CAACE,MAAM,CAACC,KAAK,CAACC,gCAAc,CAAC;gBAAA,kCAEjDC,IAAI,CAACC,KAAK,CAACL,WAAW,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAA;gBAAA;gBAE3BM,KAAK,GAAG,IAAIb,uBAAW,CAAC;kBAC7BN,IAAI,EAAE,YAAY;kBAClBoB,aAAa;gBACd,CAAC,CAAC;gBAAA,kCAEK;kBACNjB,KAAK,EAAE;oBACNC,MAAM,EAAE,QAAQ;oBAChBC,MAAM,EAAE,CAACc,KAAK;kBACf;gBACD,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,qGAtFD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,4CACmB,IAAI,CAACE,UAAU;cAAA;gBAAA;kBAAA;kBAAA;gBAAA;gBAAtBC,GAAG;gBAAA;gBAAA,OACA,IAAI,CAACD,UAAU,CAACC,GAAG,CAAC;cAAA;gBAAA;gBAAA,sBAAEC,UAAU;cAAA;gBAAA;gBAAA;cAAA;gBAG9C,IAAI,CAACF,UAAU,GAAG,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACpB;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,0FAkFD,kBAAyBvB,OAAwB;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAC1C0B,OAAO,GAAG1B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE0B,OAAO;gBAC1BjC,OAAO,uBAAGO,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEP,OAAO,+DAAIkC,yBAAgB,CAACC,OAAO,EAAE;gBAE1DtC,GAAG,mBAAGU,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEV,GAAG,uDAAIuC,OAAO,CAACvC,GAAG,EAAE;gBAEvCwC,yBAAa,CAACC,aAAa,EAAE;gBAEvBvC,cAAc,GAAG,IAAIwC,0BAAc,EAAE;gBACrCC,gBAAgB,4BACrBjC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEiC,gBAAgB,yEACzB5C,GAAG,CAAC6C,qBAAqB,CAAC5C,GAAG,EAAEE,cAAc,EAAEQ,OAAO,CAAC;gBAElDmC,YAAY,GAAG,IAAIC,wBAAY,CAAC;kBACrC9C,GAAG,EAAHA,GAAG;kBACHE,cAAc,EAAdA,cAAc;kBACd6C,OAAO,sBAAErC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqC,OAAO,+DAAIC,cAAM,CAACC,OAAO,EAAE;kBAC7C9C,OAAO,EAAPA,OAAO;kBACPwC,gBAAgB,EAAhBA;gBACD,CAAC,CAAC;gBAEIO,EAAE,4BAAGxC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEyC,iBAAiB,yEAAI,IAAIC,6BAAiB,CAACpD,GAAG,CAAC;gBAG7DqD,aAAa,GAAG,IAAIC,yBAAa,CAAC;kBACvCC,SAAS,EAATA,0BAAS;kBACTL,EAAE,EAAFA,EAAE;kBACFM,QAAQ,EAAEtD,cAAc,CAACkB,OAAO,CAACpB,GAAG,EAAE,UAAU,CAAC;kBACjDyD,MAAM,EAAEvD,cAAc,CAACkB,OAAO,CAACpB,GAAG,EAAE,MAAM;gBAC3C,CAAC,CAAC;gBAEI0D,eAAe,GAAG,IAAI,CAACC,mBAAmB,CAC/CzD,cAAc,CAACkB,OAAO,CAACpB,GAAG,EAAE,KAAK,CAAC,CAClC;gBAEK4D,eAAe,GAAG,IAAI,CAACC,iBAAiB,CAC7C3D,cAAc,CAACkB,OAAO,CAACpB,GAAG,EAAE,KAAK,CAAC,CAClC;gBAEK8D,aAAa,GAAG,IAAIC,yBAAa,CAAC;kBACvCb,EAAE,EAAFA,EAAE;kBACF/C,OAAO,EAAPA,OAAO;kBACPwC,gBAAgB,EAAhBA,gBAAgB;kBAChB3C,GAAG,EAAHA,GAAG;kBACHE,cAAc,EAAdA,cAAc;kBACd2C,YAAY,EAAZA,YAAY;kBACZU,SAAS,EAATA,0BAAS;kBACTF,aAAa,EAAbA,aAAa;kBACbO,eAAe,EAAfA,eAAe;kBACfF,eAAe,EAAfA;gBACD,CAAC,CAAC;gBAEIrD,cAAc,GAAG,IAAI2D,0BAAc,CAAC;kBACzCF,aAAa,EAAbA,aAAa;kBACbZ,EAAE,EAAFA,EAAE;kBACF/C,OAAO,EAAPA,OAAO;kBACP;kBACA8D,uBAAuB,EAAE;oBAAA,OAAMhE,gBAAgB;kBAAA;gBAChD,CAAC,CAAC;gBAEFA,gBAAgB,4BACfS,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAET,gBAAgB,yEACzBiE,mCAAuB,CAACC,eAAe,CAAC;kBACvCnE,GAAG,EAAHA,GAAG;kBACHE,cAAc,EAAdA,cAAc;kBACd2C,YAAY,EAAZA,YAAY;kBACZK,EAAE,EAAFA,EAAE;kBACF/C,OAAO,EAAPA,OAAO;kBACPwC,gBAAgB,EAAhBA,gBAAgB;kBAChBtC,cAAc,EAAdA;gBACD,CAAC,CAAC;gBAAA,KAIC+B,OAAO;kBAAA;kBAAA;gBAAA;gBACVhC,QAAQ,GAAG,IAAIgE,kCAAsB,CAAC;kBACrChC,OAAO,EAAPA,OAAO;kBACPc,EAAE,EAAFA,EAAE;kBACF7C,cAAc,EAAdA;gBACD,CAAC,CAAC;gBAEIgE,KAAK,GAAGH,mCAAuB,CAACI,YAAY;gBAAA,uCAE/BD,KAAK;gBAAA;gBAAA;cAAA;gBAAA;kBAAA;kBAAA;gBAAA;gBAAbzD,IAAI;gBACR2D,OAAO,GAAGtE,gBAAgB,CAACY,UAAU,CAACD,IAAI,CAAC;gBAAA;gBAAA,OAC3CR,QAAQ,CAACoE,aAAa,CAACD,OAAO,CAAC;cAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAAA;cAAA;gBAGtCnC,OAAO,CAACqC,QAAQ,CAACC,IAAI,CAAC,UAACC,CAAM,EAAEC,CAAM;kBAAA,OAAKD,CAAC,CAACE,KAAK,CAACC,aAAa,CAACF,CAAC,CAACC,KAAK,CAAC;gBAAA,EAAC;gBAEzEzC,OAAO,CAAC2C,MAAM,CAAC,UAACC,CAAC,EAAE3D,OAAO,EAAK;kBAC9B,MAAM,IAAIH,uBAAW,CAAC;oBACrBN,IAAI,EAAE,iBAAiB;oBACvBqE,IAAI,EAAE5D,OAAO,CAAC4D,IAAI,IAAI;kBACvB,CAAC,CAAC;gBACH,CAAC,CAAC;cAAA;gBAGGC,GAAG,GAAG,IAAInF,GAAG,CAClBC,GAAG,EACHC,gBAAgB,EAChBC,cAAc,EACdC,OAAO,EACPC,QAAQ,EACRC,cAAc,CACd;gBAAA,kCAEM6E,GAAG;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACV;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,2BAAiCC,GAAe,EAAmB;MAClE,IAAIC,MAAuB,GAAG,CAAC,CAAC;MAChC,IAAID,GAAG,CAACE,SAAS,EAAE,EAAE;QAAA;QACpBD,MAAM,eAAGD,GAAG,CAACG,GAAG,CAAC,uBAAuB,CAAC,+CAAI,CAAC,CAAC;MAChD;MACA,OAAOF,MAAM;IACd;EAAC;IAAA;IAAA,OAED,6BAAmCD,GAAe,EAAmB;MACpE,IAAMI,MAAuB,GAAG,CAAC,CAAC;MAElC,IAAIJ,GAAG,CAACE,SAAS,EAAE,EAAE;QACpB,IAAMG,SAAS,GAAGL,GAAG,CAACG,GAAG,CAAC,wBAAwB,CAAC;QAEnDG,MAAM,CAACC,IAAI,CAACF,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,CAAC,CAAC,CAAC,CAACG,OAAO,CAAC,UAACtE,OAAO,EAAK;UACjD,IAAMX,OAAO,GAAGkF,wBAAa,CAAC9D,KAAK,CAAC0D,SAAS,CAACnE,OAAO,CAAC,CAAC;UACvDkE,MAAM,CAAClE,OAAO,CAAC,GAAGX,OAAO;QAC1B,CAAC,CAAC;MACH;MACA,OAAO6E,MAAM;IACd;EAAC;IAAA;IAAA,OAED,+BACCvF,GAAW,EACXE,cAA8B,EAC9B2F,WAAgD,EAC7B;MACnB,IAAMlD,gBAAgB;QAAA,yFAAG,kBAAOjC,OAAiC;UAAA;UAAA;YAAA;cAAA;gBAAA;kBAC1DwB,GAAG,GAAG4D,qBAAa,CAACC,sBAAsB,CAACrF,OAAO,CAAC;kBAEzD,IAAI,CAACX,GAAG,CAACkC,UAAU,CAACC,GAAG,CAAC,EAAE;oBACzBnC,GAAG,CAACkC,UAAU,CAACC,GAAG,CAAC,GAAGnC,GAAG,CAACiG,YAAY,CACrChG,GAAG,EACHE,cAAc,EACdQ,OAAO,EACPmF,WAAW,CACX;kBACF;kBAAC,kCAEM9F,GAAG,CAACkC,UAAU,CAACC,GAAG,CAAC;gBAAA;gBAAA;kBAAA;cAAA;YAAA;UAAA;QAAA,CAC1B;QAAA,gBAbKS,gBAAgB;UAAA;QAAA;MAAA,GAarB;MAED,OAAOA,gBAAgB;IACxB;EAAC;IAAA;IAAA;MAAA,kGAED,mBACC3C,GAAW,EACXE,cAA8B,EAC9BQ,OAAiC,EACjCmF,WAAgD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAE1CI,OAAO,GAAGJ,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAElD,gBAAgB,GAC1CkD,WAAW,CAAClD,gBAAgB,8FAC5B;kBAAA;kBAAA;kBAAA;oBAAA;sBAAA;wBAAA;0BACMuD,eAAe,GACpBC,OAAO,oCAAkC,WAAQ;0BAAA;0BAAA,OAElBC,mCAAoB,CAACC,MAAM;4BAC1DC,SAAS,EAAEJ,eAAsB;4BACjCK,IAAI,uBAAEV,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEU,IAAI,iEAAIC,uBAAY;4BACvCC,kBAAkB,EAAE;0BAAI,GACrBZ,WAAW,EACb;wBAAA;0BALIa,MAAiB;0BAAA,mCAOhBA,MAAM;wBAAA;wBAAA;0BAAA;sBAAA;oBAAA;kBAAA;gBAAA,CACZ;gBAAA,QAKAhG,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC,gCAFhBiG,wBAAwB,EAAxBA,wBAAwB,sCAAG,KAAK,wDAChCC,0BAA0B,EAA1BA,0BAA0B,sCAAG,IAAI;gBAAA;gBAAA,OAGbX,OAAO,EAAE;cAAA;gBAAxBS,MAAM;gBAERG,IAA+D,GAAG,CAAC,CAAC;gBAElE1B,GAAG,GAAGjF,cAAc,CAACkB,OAAO,CAACpB,GAAG,EAAE,KAAK,CAAC;gBACxC8G,YAAY,GAAG3B,GAAG,CAACE,SAAS,EAAE;gBAEpC,IAAI3E,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEqG,OAAO,IAAIrG,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEsG,MAAM,EAAE;kBACxCH,IAAI,GAAG;oBACNE,OAAO,EAAErG,OAAO,CAACqG,OAAO;oBACxBC,MAAM,EAAEtG,OAAO,CAACsG;kBACjB,CAAC;gBACF,CAAC,MAAM,IAAIL,wBAAwB,EAAE;kBAC9B5F,KAAK,GAAGb,cAAc,CAACkB,OAAO,CAACpB,GAAG,EAAE,MAAM,CAAC,CAACiH,eAAe,EAAE;kBAEnE,IAAIlG,KAAK,EAAE;oBACV8F,IAAI,GAAG;sBACNE,OAAO,EAAEhG,KAAK,CAACmG,EAAE;sBACjBF,MAAM,EAAEjG,KAAK,CAACiG;oBACf,CAAC;kBACF;gBACD,CAAC,MAAM,IAAIF,YAAY,IAAIF,0BAA0B,EAAE;kBAChDO,MAAM,GAAGjH,cAAc,CAACkB,OAAO,CAACpB,GAAG,EAAE,MAAM,CAAC,CAACoH,iBAAiB,EAAE;kBAEtE,IAAID,MAAM,EAAE;oBACXN,IAAI,CAACQ,KAAK,GAAGF,MAAM,CAACE,KAAK;kBAC1B;gBACD;gBAAC,MAEG5B,MAAM,CAACC,IAAI,CAACmB,IAAI,CAAC,CAACS,MAAM,GAAG,CAAC;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA,OACzBZ,MAAM,CAACa,YAAY,mBACpBV,IAAI,EACP;cAAA;gBAEF;gBACAH,MAAM,CAACG,IAAI,GAAGA,IAAI;cAAA;gBAAA,mCAGZH,MAAM;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACb;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA;AAAA,iCA9UmB3G,GAAG,gBAKmB,CAAC,CAAC;AAAA,SA4UvByH,GAAG;EAAA;AAAA;AAAA;EAAA,qFAAlB;IAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAAmBC,IAAc,iEAAG,EAAE;YACtCrF,OAAO,GAAG,IAAIsF,kBAAO,EAAE;YACzB1H,GAAG,GAAGuC,OAAO,CAACvC,GAAG,EAAE;YAEvBoC,OAAO,CAACuF,wBAAwB,CAAC,KAAK,CAAC;YACvCvF,OAAO,CAACwF,MAAM,CAAC,YAAY,EAAE,qCAAqC,CAAC;YACnExF,OAAO,CAACwF,MAAM,CACb,wBAAwB,EACxB,8CAA8C,CAC9C;YACDxF,OAAO,CAACwF,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;YAEnDC,MAAM,GAAGtF,OAAO,CAACkF,IAAI,CAACK,SAAS,CACpC,UAACC,CAAC;cAAA,OAAKA,CAAC,KAAK,aAAa,IAAIA,CAAC,KAAK,IAAI;YAAA,EACxC;YAED,IAAIF,MAAM,GAAG,CAAC,CAAC,EAAE;cACVG,GAAG,GAAGzF,OAAO,CAACkF,IAAI,CAACI,MAAM,GAAG,CAAC,CAAC;cAC9BI,MAAM,GAAGC,0BAAQ,CAACC,WAAW,CAACnI,GAAG,EAAEgI,GAAG,CAAC;cAC7ChI,GAAG,GAAGiI,MAAM;YACb;YAEMG,QAAQ,GAAG,IAAIhF,6BAAiB,CACrCpD,GAAG,EACHuC,OAAO,CAAC8F,GAAG,CAACC,uBAAuB,KAAK,OAAO,CAC/C;YACDF,QAAQ,CAACG,KAAK,EAAE;YAChBH,QAAQ,CAACI,UAAU,CAACC,mBAAQ,CAAC;YAEvBC,kBAAkB,GACvBnG,OAAO,CAACkF,IAAI,CAACK,SAAS,CAAC,UAACC,CAAC;cAAA,OAAKA,CAAC,KAAK,WAAW,IAAIA,CAAC,KAAK,IAAI;YAAA,EAAC,GAAG,CAAC,CAAC;YAAA,KAEhEW,kBAAkB;cAAA;cAAA;YAAA;YACfC,IAAI,GAAGxC,OAAO,mBAAmB;YACvCiC,QAAQ,CAACQ,cAAc,mBAAYD,IAAI,CAACE,OAAO,EAAG;YAAA;UAAA;YAAA;YAAA,OAI7C9I,GAAG,CAAC+I,IAAI,CAAC;cACd1G,OAAO,EAAPA,OAAO;cACPpC,GAAG,EAAHA,GAAG;cACHuG,IAAI,EAAEhE,OAAO,CAAC8F,GAAG,CAACU,IAAI;cACtB5F,iBAAiB,EAAEiF;YACpB,CAAC,CAAC;UAAA;YAAA;YAAA,OAEIY,0BAA0B,CAACZ,QAAQ,CAAC;UAAA;YAAA;YAAA,OAEpBhG,OAAO,CAAC6G,UAAU,CAACxB,IAAI,CAAC;UAAA;YAAxCpG,OAAO;YAAA;YAAA,OAGSA,OAAO,CAAC6H,cAAc,CAAC,CAAC,CAAC;UAAA;YAAzC1H,OAAO;YAAA,wCAEQ4E,mCAAoB,CAAC+C,UAAU,EAAE;YAAA;YAAA;UAAA;YAAA;cAAA;cAAA;YAAA;YAA3CzC,MAAM;YAAA;YAAA,OACVA,MAAM,CAACvE,UAAU,EAAE;UAAA;YAAA;YAAA;UAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;UAAA;YAAA,mCAGnBX,OAAO;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACd;EAAA;AAAA;AAAA,SAEcwH,0BAA0B;EAAA;AAAA;AAAA;EAAA,4GAAzC,mBAA0C9F,EAAqB;IAAA;IAAA;MAAA;QAAA;UAAA;YAC9D,IACCE,6BAAiB,CAACgG,gBAAgB,EAAE,IACpC7G,OAAO,CAAC8F,GAAG,CAACgB,4BAA4B,KAAK,OAAO,EACnD;cACKhI,OAAO,GAAG,IAAIiI,0BAAc,CAACpB,0BAAQ,CAACC,WAAW,CAACoB,SAAS,EAAE,KAAK,CAAC,CAAC;cAC1EC,iCAAqB,CAACC,KAAK,CAAC;gBAAEpI,OAAO,EAAPA,OAAO;gBAAE6B,EAAE,EAAFA;cAAG,CAAC,CAAC;cAE5CwG,4BAAgB,CAACC,iCAAiC,GAAG,UAACC,gBAAgB,EAAK;gBAC1EJ,iCAAqB,CAACK,KAAK,EAAE;gBAC7BD,gBAAgB,CAAC,UAACE,OAAO,EAAK;kBAC7BN,iCAAqB,CAACO,WAAW,CAACD,OAAO,CAAC;gBAC3C,CAAC,CAAC;cACH,CAAC;cAEDJ,4BAAgB,CAACM,gCAAgC,GAAG,YAAM;gBACzDR,iCAAqB,CAACS,IAAI,EAAE;cAC7B,CAAC;YACF;UAAC;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACD;EAAA;AAAA"}
1
+ {"version":3,"file":"cli.js","names":["Cli","cwd","featureInstaller","serviceFactory","emitter","attacher","actionExecuter","on","off","emit","emitAndFlattenResponses","options","install","code","getFeature","isInstalled","skill","status","errors","SpruceError","commandService","Service","command","shouldRunOnSourceFiles","execute","results","resultParts","stdout","split","HEALTH_DIVIDER","JSON","parse","error","originalError","apiClients","key","disconnect","program","CliGlobalEmitter","Emitter","process","ImportService","enableCaching","ServiceFactory","apiClientFactory","buildApiClientFactory","storeFactory","StoreFactory","homeDir","osUtil","homedir","ui","graphicsInterface","TerminalInterface","writerFactory","WriterFactory","templates","settings","linter","optionOverrides","loadOptionOverrides","blockedCommands","loadCommandBlocks","actionFactory","ActionFactory","ActionExecuter","featureInstallerFactory","FeatureInstallerFactory","WithAllFeatures","FeatureCommandAttacher","codes","featureCodes","feature","attachFeature","commands","sort","a","b","_name","localeCompare","action","_","args","cli","pkg","blocks","doesExist","get","mapped","overrides","Object","keys","forEach","argParserUtil","bootOptions","apiClientUtil","generateClientCacheKey","connectToApi","connect","eventsContracts","require","MercuryClientFactory","Client","contracts","host","DEFAULT_HOST","allowSelfSignedCrt","client","shouldAuthAsCurrentSkill","shouldAuthAsLoggedInPerson","auth","doesPkgExist","skillId","apiKey","getCurrentSkill","id","person","getLoggedInPerson","token","length","authenticate","run","argv","Command","storeOptionsAsProperties","option","dirIdx","findIndex","v","dir","newCwd","diskUtil","resolvePath","terminal","env","CLI_RENDER_STACK_TRACES","clear","renderHero","CLI_HERO","isAskingForVersion","json","renderHeadline","version","Boot","HOST","setupInFlightEntertainment","parseAsync","_actionResults","getClients","doesSupportColor","ENABLE_INSTALL_ENTERTAINMENT","CommandService","__dirname","InFlightEntertainment","setup","FeatureInstallerImpl","startInFlightIntertainmentHandler","didUpdateHandler","start","message","writeStatus","stopInFlightIntertainmentHandler","stop"],"sources":["../src/cli.ts"],"sourcesContent":["import osUtil from 'os'\nimport {\n\tConnectionOptions,\n\tMercuryClientFactory,\n} from '@sprucelabs/mercury-client'\nimport { MercuryEventEmitter, SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tdiskUtil,\n\tHealthCheckResults,\n\tHEALTH_DIVIDER,\n} from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport { Command, CommanderStatic } from 'commander'\nimport './addons/filePrompt.addon'\nimport { CLI_HERO, DEFAULT_HOST } from './constants'\nimport SpruceError from './errors/SpruceError'\nimport ActionExecuter from './features/ActionExecuter'\nimport ActionFactory from './features/ActionFactory'\nimport FeatureCommandAttacher, {\n\tBlockedCommands,\n\tOptionOverrides,\n} from './features/FeatureCommandAttacher'\nimport FeatureInstaller, {\n\tFeatureInstallerImpl,\n} from './features/FeatureInstaller'\nimport FeatureInstallerFactory from './features/FeatureInstallerFactory'\nimport { FeatureCode, InstallFeatureOptions } from './features/features.types'\nimport CliGlobalEmitter, {\n\tGlobalEmitter,\n\tGlobalEventContract,\n} from './GlobalEmitter'\nimport InFlightEntertainment from './InFlightEntertainment'\nimport TerminalInterface from './interfaces/TerminalInterface'\nimport CommandService from './services/CommandService'\nimport ImportService from './services/ImportService'\nimport PkgService from './services/PkgService'\nimport ServiceFactory from './services/ServiceFactory'\nimport StoreFactory from './stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from './types/apiClient.types'\nimport { GraphicsInterface } from './types/cli.types'\nimport apiClientUtil from './utilities/apiClient.utility'\nimport { argParserUtil } from './utilities/argParser.utility'\nimport WriterFactory from './writers/WriterFactory'\n\ninterface HealthOptions {\n\tshouldRunOnSourceFiles?: boolean\n}\n\nexport interface CliInterface extends MercuryEventEmitter<GlobalEventContract> {\n\tinstallFeatures: FeatureInstaller['install']\n\tgetFeature: FeatureInstaller['getFeature']\n\tcheckHealth(options?: HealthOptions): Promise<HealthCheckResults>\n}\n\nexport interface CliBootOptions {\n\tcwd?: string\n\thomeDir?: string\n\tprogram?: CommanderStatic['program']\n\tgraphicsInterface?: GraphicsInterface\n\temitter?: GlobalEmitter\n\tapiClientFactory?: ApiClientFactory\n\tfeatureInstaller?: FeatureInstaller\n\thost?: string\n}\n\ntype PromiseCache = Record<string, Promise<ApiClient>>\n\nexport default class Cli implements CliInterface {\n\tprivate cwd: string\n\tprivate featureInstaller: FeatureInstaller\n\tprivate serviceFactory: ServiceFactory\n\tpublic readonly emitter: GlobalEmitter\n\tprivate static apiClients: PromiseCache = {}\n\tprivate attacher?: FeatureCommandAttacher\n\tprivate actionExecuter?: ActionExecuter\n\n\tprivate constructor(\n\t\tcwd: string,\n\t\tfeatureInstaller: FeatureInstaller,\n\t\tserviceFactory: ServiceFactory,\n\t\temitter: GlobalEmitter,\n\t\tattacher?: FeatureCommandAttacher,\n\t\tactionExecuter?: ActionExecuter\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.featureInstaller = featureInstaller\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.emitter = emitter\n\t\tthis.attacher = attacher\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic static async resetApiClients() {\n\t\tfor (const key in this.apiClients) {\n\t\t\tawait (await this.apiClients[key]).disconnect()\n\t\t}\n\n\t\tthis.apiClients = {}\n\t}\n\n\tpublic getAttacher() {\n\t\treturn this.attacher\n\t}\n\n\tpublic getActionExecuter() {\n\t\treturn this.actionExecuter\n\t}\n\n\tpublic async on(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.on(...args)\n\t}\n\n\tpublic async off(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.off(...args)\n\t}\n\n\tpublic async emit(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.emit(...args)\n\t}\n\n\tpublic async emitAndFlattenResponses(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.emitAndFlattenResponses(...args)\n\t}\n\n\tpublic async installFeatures(options: InstallFeatureOptions) {\n\t\treturn this.featureInstaller.install(options)\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async checkHealth(\n\t\toptions?: HealthOptions\n\t): Promise<HealthCheckResults> {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (!isInstalled) {\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tcode: 'SKILL_NOT_INSTALLED',\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}\n\n\t\ttry {\n\t\t\tconst commandService = this.serviceFactory.Service(this.cwd, 'command')\n\t\t\tconst command =\n\t\t\t\toptions?.shouldRunOnSourceFiles === false\n\t\t\t\t\t? 'yarn health'\n\t\t\t\t\t: 'yarn health.local'\n\t\t\tconst results = await commandService.execute(command)\n\t\t\tconst resultParts = results.stdout.split(HEALTH_DIVIDER)\n\n\t\t\treturn JSON.parse(resultParts[1]) as HealthCheckResults\n\t\t} catch (originalError: any) {\n\t\t\tconst error = new SpruceError({\n\t\t\t\tcode: 'BOOT_ERROR',\n\t\t\t\toriginalError,\n\t\t\t})\n\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [error],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static async Boot(options?: CliBootOptions): Promise<CliInterface> {\n\t\tconst program = options?.program\n\t\tconst emitter = options?.emitter ?? CliGlobalEmitter.Emitter()\n\n\t\tlet cwd = options?.cwd ?? process.cwd()\n\n\t\tImportService.enableCaching()\n\n\t\tconst serviceFactory = new ServiceFactory()\n\t\tconst apiClientFactory =\n\t\t\toptions?.apiClientFactory ??\n\t\t\tCli.buildApiClientFactory(cwd, serviceFactory, options)\n\n\t\tconst storeFactory = new StoreFactory({\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: options?.homeDir ?? osUtil.homedir(),\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t})\n\n\t\tconst ui = options?.graphicsInterface ?? new TerminalInterface(cwd)\n\t\tlet featureInstaller: FeatureInstaller | undefined\n\n\t\tconst writerFactory = new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui,\n\t\t\tsettings: serviceFactory.Service(cwd, 'settings'),\n\t\t\tlinter: serviceFactory.Service(cwd, 'lint'),\n\t\t})\n\n\t\tconst optionOverrides = this.loadOptionOverrides(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst blockedCommands = this.loadCommandBlocks(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\tui,\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory,\n\t\t\ttemplates,\n\t\t\twriterFactory,\n\t\t\tblockedCommands,\n\t\t\toptionOverrides,\n\t\t})\n\n\t\tconst actionExecuter = new ActionExecuter({\n\t\t\tactionFactory,\n\t\t\tui,\n\t\t\temitter,\n\t\t\t//@ts-ignore\n\t\t\tfeatureInstallerFactory: () => featureInstaller,\n\t\t})\n\n\t\tfeatureInstaller =\n\t\t\toptions?.featureInstaller ??\n\t\t\tFeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\tlet attacher: FeatureCommandAttacher | undefined\n\n\t\tif (program) {\n\t\t\tattacher = new FeatureCommandAttacher({\n\t\t\t\tprogram,\n\t\t\t\tui,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\t\tconst codes = FeatureInstallerFactory.featureCodes\n\n\t\t\tfor (const code of codes) {\n\t\t\t\tconst feature = featureInstaller.getFeature(code)\n\t\t\t\tawait attacher.attachFeature(feature)\n\t\t\t}\n\n\t\t\tprogram.commands.sort((a: any, b: any) => a._name.localeCompare(b._name))\n\n\t\t\tprogram.action((_, command) => {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'INVALID_COMMAND',\n\t\t\t\t\targs: command.args || [],\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tconst cli = new Cli(\n\t\t\tcwd,\n\t\t\tfeatureInstaller,\n\t\t\tserviceFactory,\n\t\t\temitter,\n\t\t\tattacher,\n\t\t\tactionExecuter\n\t\t)\n\n\t\treturn cli as CliInterface\n\t}\n\n\tprivate static loadCommandBlocks(pkg: PkgService): BlockedCommands {\n\t\tlet blocks: BlockedCommands = {}\n\t\tif (pkg.doesExist()) {\n\t\t\tblocks = pkg.get('skill.blockedCommands') ?? {}\n\t\t}\n\t\treturn blocks\n\t}\n\n\tprivate static loadOptionOverrides(pkg: PkgService): OptionOverrides {\n\t\tconst mapped: OptionOverrides = {}\n\n\t\tif (pkg.doesExist()) {\n\t\t\tconst overrides = pkg.get('skill.commandOverrides')\n\n\t\t\tObject.keys(overrides ?? {}).forEach((command) => {\n\t\t\t\tconst options = argParserUtil.parse(overrides[command])\n\t\t\t\tmapped[command] = options\n\t\t\t})\n\t\t}\n\t\treturn mapped\n\t}\n\n\tpublic static buildApiClientFactory(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): ApiClientFactory {\n\t\tconst apiClientFactory = async (options?: ApiClientFactoryOptions) => {\n\t\t\tconst key = apiClientUtil.generateClientCacheKey(options)\n\n\t\t\tif (!Cli.apiClients[key]) {\n\t\t\t\tCli.apiClients[key] = Cli.connectToApi(\n\t\t\t\t\tcwd,\n\t\t\t\t\tserviceFactory,\n\t\t\t\t\toptions,\n\t\t\t\t\tbootOptions\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn Cli.apiClients[key]\n\t\t}\n\n\t\treturn apiClientFactory\n\t}\n\n\tprivate static async connectToApi(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\toptions?: ApiClientFactoryOptions,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): Promise<ApiClient> {\n\t\tconst connect = bootOptions?.apiClientFactory\n\t\t\t? bootOptions.apiClientFactory\n\t\t\t: async () => {\n\t\t\t\t\tconst eventsContracts =\n\t\t\t\t\t\trequire('#spruce/events/events.contract').default\n\n\t\t\t\t\tconst client: ApiClient = await MercuryClientFactory.Client({\n\t\t\t\t\t\tcontracts: eventsContracts as any,\n\t\t\t\t\t\thost: bootOptions?.host ?? DEFAULT_HOST,\n\t\t\t\t\t\tallowSelfSignedCrt: true,\n\t\t\t\t\t\t...bootOptions,\n\t\t\t\t\t})\n\n\t\t\t\t\treturn client\n\t\t\t }\n\n\t\tconst {\n\t\t\tshouldAuthAsCurrentSkill = false,\n\t\t\tshouldAuthAsLoggedInPerson = true,\n\t\t} = options ?? {}\n\n\t\tconst client = await connect()\n\n\t\tlet auth: SpruceSchemas.Mercury.v2020_12_25.AuthenticateEmitPayload = {}\n\n\t\tconst pkg = serviceFactory.Service(cwd, 'pkg')\n\t\tconst doesPkgExist = pkg.doesExist()\n\n\t\tif (options?.skillId && options?.apiKey) {\n\t\t\tauth = {\n\t\t\t\tskillId: options.skillId,\n\t\t\t\tapiKey: options.apiKey,\n\t\t\t}\n\t\t} else if (shouldAuthAsCurrentSkill) {\n\t\t\tconst skill = serviceFactory.Service(cwd, 'auth').getCurrentSkill()\n\n\t\t\tif (skill) {\n\t\t\t\tauth = {\n\t\t\t\t\tskillId: skill.id,\n\t\t\t\t\tapiKey: skill.apiKey,\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (doesPkgExist && shouldAuthAsLoggedInPerson) {\n\t\t\tconst person = serviceFactory.Service(cwd, 'auth').getLoggedInPerson()\n\n\t\t\tif (person) {\n\t\t\t\tauth.token = person.token\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(auth).length > 0) {\n\t\t\tawait client.authenticate({\n\t\t\t\t...(auth as any),\n\t\t\t})\n\n\t\t\t//@ts-ignore\n\t\t\tclient.auth = auth\n\t\t}\n\n\t\treturn client\n\t}\n}\n\nexport async function run(argv: string[] = []): Promise<void> {\n\tconst program = new Command()\n\tlet cwd = process.cwd()\n\n\tprogram.storeOptionsAsProperties(false)\n\tprogram.option('--no-color', 'Disable color output in the console')\n\tprogram.option(\n\t\t'-d, --directory <path>',\n\t\t'The working directory to execute the command'\n\t)\n\tprogram.option('-v, --version', 'The version of the cli')\n\n\tconst dirIdx = process.argv.findIndex(\n\t\t(v) => v === '--directory' || v === '-d'\n\t)\n\n\tif (dirIdx > -1) {\n\t\tconst dir = process.argv[dirIdx + 1]\n\t\tconst newCwd = diskUtil.resolvePath(cwd, dir)\n\t\tcwd = newCwd\n\t}\n\n\tconst terminal = new TerminalInterface(\n\t\tcwd,\n\t\tprocess.env.CLI_RENDER_STACK_TRACES !== 'false'\n\t)\n\tterminal.clear()\n\tterminal.renderHero(CLI_HERO)\n\n\tconst isAskingForVersion =\n\t\tprocess.argv.findIndex((v) => v === '--version' || v === '-v') > -1\n\n\tif (isAskingForVersion) {\n\t\tconst json = require('../package.json')\n\t\tterminal.renderHeadline(`Version ${json.version}`)\n\t\treturn\n\t}\n\n\tawait Cli.Boot({\n\t\tprogram,\n\t\tcwd,\n\t\thost: process.env.HOST,\n\t\tgraphicsInterface: terminal,\n\t})\n\n\tawait setupInFlightEntertainment(terminal)\n\n\tconst command = await program.parseAsync(argv)\n\n\t//@ts-ignore\n\tconst results = await command._actionResults[0]\n\n\tfor (const client of MercuryClientFactory.getClients()) {\n\t\tawait client.disconnect()\n\t}\n\n\treturn results\n}\n\nasync function setupInFlightEntertainment(ui: TerminalInterface) {\n\tif (\n\t\tTerminalInterface.doesSupportColor() &&\n\t\tprocess.env.ENABLE_INSTALL_ENTERTAINMENT !== 'false'\n\t) {\n\t\tconst command = new CommandService(diskUtil.resolvePath(__dirname, '../'))\n\t\tInFlightEntertainment.setup({ command, ui })\n\n\t\tFeatureInstallerImpl.startInFlightIntertainmentHandler = (\n\t\t\tdidUpdateHandler\n\t\t) => {\n\t\t\tInFlightEntertainment.start()\n\t\t\tdidUpdateHandler((message) => {\n\t\t\t\tInFlightEntertainment.writeStatus(message)\n\t\t\t})\n\t\t}\n\n\t\tFeatureInstallerImpl.stopInFlightIntertainmentHandler = () => {\n\t\t\tInFlightEntertainment.stop()\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema';
2
2
  import { Templates } from '@sprucelabs/spruce-templates';
3
3
  import { GlobalEmitter } from '../GlobalEmitter';
4
4
  import { ServiceProvider, Service, ServiceMap } from '../services/ServiceFactory';
5
- import { StoreCode, StoreFactoryMethodOptions, StoreMap } from '../stores/StoreFactory';
5
+ import { StoreCode, CreateStoreOptions, StoreMap } from '../stores/StoreFactory';
6
6
  import { ApiClient, ApiClientFactoryOptions } from '../types/apiClient.types';
7
7
  import { GraphicsInterface } from '../types/cli.types';
8
8
  import { WriterOptions } from '../writers/AbstractWriter';
@@ -29,7 +29,7 @@ export default abstract class AbstractAction<S extends Schema = Schema> implemen
29
29
  abstract execute(options: SchemaValues<S>): Promise<FeatureActionResponse>;
30
30
  protected Action(featureCode: string, actionCode: string): FeatureAction<Schema>;
31
31
  Service<S extends Service>(type: S, cwd?: string): ServiceMap[S];
32
- protected Store<C extends StoreCode>(code: C, options?: StoreFactoryMethodOptions): StoreMap[C];
32
+ protected Store<C extends StoreCode>(code: C, options?: CreateStoreOptions<C>): StoreMap[C];
33
33
  protected Writer<C extends WriterCode>(code: C, options?: Partial<WriterOptions>): WriterMap[C];
34
34
  protected getFeature<C extends FeatureCode>(code: C): import("./features.types").FeatureMap[C];
35
35
  protected getFeatureCodes(): FeatureCode[];
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected featureInstaller: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.featureInstaller.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizer.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AbstractAction.js","names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizer","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"sources":["../../src/features/AbstractAction.ts"],"sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tCreateStoreOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizer from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected featureInstaller: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...(options as any) })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.featureInstaller.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizer.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"mappings":"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"}