@sprucelabs/spruce-cli 14.21.2 → 14.21.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nvmrc +1 -1
- package/CHANGELOG.md +32 -0
- package/build/.spruce/settings.json +26 -3
- package/build/__tests__/behavioral/skill/UpgradingASkill4.test.d.ts +7 -0
- package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js +171 -0
- package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js.map +1 -0
- package/build/errors/SpruceError.js +15 -9
- package/build/errors/SpruceError.js.map +1 -1
- package/build/features/ActionFactory.js +6 -2
- package/build/features/ActionFactory.js.map +1 -1
- package/build/features/event/EventFeature.d.ts +1 -0
- package/build/features/event/EventFeature.js +62 -32
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/services/EventSettingsService.d.ts +3 -0
- package/build/features/event/services/EventSettingsService.js +15 -0
- package/build/features/event/services/EventSettingsService.js.map +1 -1
- package/package.json +63 -72
- package/src/.spruce/settings.json +26 -3
- package/src/__tests__/behavioral/skill/UpgradingASkill4.test.ts +42 -0
- package/src/errors/SpruceError.ts +14 -7
- package/src/features/ActionFactory.ts +5 -1
- package/src/features/event/EventFeature.ts +30 -21
- package/src/features/event/services/EventSettingsService.ts +12 -0
- package/tsconfig.json +3 -3
package/.nvmrc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
16
|
|
1
|
+
16
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,38 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [14.21.6](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.5...v14.21.6) (2021-10-01)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [14.21.5](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.4...v14.21.5) (2021-09-28)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [14.21.4](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.3...v14.21.4) (2021-09-28)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [14.21.3](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.2...v14.21.3) (2021-09-24)
|
|
31
|
+
|
|
32
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
6
38
|
## [14.21.2](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.1...v14.21.2) (2021-09-24)
|
|
7
39
|
|
|
8
40
|
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
@@ -1,15 +1,38 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"skipped": [
|
|
3
3
|
"skill",
|
|
4
|
+
"event"
|
|
5
|
+
],
|
|
6
|
+
"installed": [
|
|
4
7
|
"schema",
|
|
5
8
|
"error",
|
|
6
|
-
"test"
|
|
7
|
-
"event"
|
|
9
|
+
"test"
|
|
8
10
|
],
|
|
9
11
|
"events.lastSync": {
|
|
10
12
|
"contractDestinationDir": "#spruce/events",
|
|
11
13
|
"schemaTypesLookupDir": "#spruce/schemas",
|
|
12
14
|
"skillEventContractTypesFile": "@sprucelabs/mercury-types/build/types/mercury.types",
|
|
13
15
|
"eventBuilderFile": "@sprucelabs/mercury-types"
|
|
16
|
+
},
|
|
17
|
+
"writer": {
|
|
18
|
+
"skipped": [
|
|
19
|
+
"src/index.ts",
|
|
20
|
+
"tsconfig.json"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"scriptUpdater": {
|
|
24
|
+
"skipped": [
|
|
25
|
+
"build.ci",
|
|
26
|
+
"build.dev",
|
|
27
|
+
"clean.all",
|
|
28
|
+
"lint.tsc",
|
|
29
|
+
"rebuild",
|
|
30
|
+
"update.dependencies",
|
|
31
|
+
"test",
|
|
32
|
+
"watch.build.dev",
|
|
33
|
+
"watch.lint",
|
|
34
|
+
"watch.rebuild",
|
|
35
|
+
"watch.tsc"
|
|
36
|
+
]
|
|
14
37
|
}
|
|
15
38
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import AbstractCliTest from '../../../tests/AbstractCliTest';
|
|
2
|
+
export default class UpgradingASkill4Test extends AbstractCliTest {
|
|
3
|
+
protected static upgradeResetsEventCache(): Promise<void>;
|
|
4
|
+
protected static doesNotResetEventCacheWithOtherAction(): Promise<void>;
|
|
5
|
+
private static installSetListenerCacheAndBlockExecute;
|
|
6
|
+
private static Settings;
|
|
7
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
+
|
|
20
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
+
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
+
|
|
24
|
+
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
|
|
25
|
+
|
|
26
|
+
var _test = require("@sprucelabs/test");
|
|
27
|
+
|
|
28
|
+
var _AbstractCliTest2 = _interopRequireDefault(require("../../../tests/AbstractCliTest"));
|
|
29
|
+
|
|
30
|
+
var _dec, _dec2, _class;
|
|
31
|
+
|
|
32
|
+
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); }; }
|
|
33
|
+
|
|
34
|
+
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; } }
|
|
35
|
+
|
|
36
|
+
var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
|
|
37
|
+
(0, _inherits2["default"])(UpgradingASkill4Test, _AbstractCliTest);
|
|
38
|
+
|
|
39
|
+
var _super = _createSuper(UpgradingASkill4Test);
|
|
40
|
+
|
|
41
|
+
function UpgradingASkill4Test() {
|
|
42
|
+
(0, _classCallCheck2["default"])(this, UpgradingASkill4Test);
|
|
43
|
+
return _super.apply(this, arguments);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
(0, _createClass2["default"])(UpgradingASkill4Test, null, [{
|
|
47
|
+
key: "upgradeResetsEventCache",
|
|
48
|
+
value: function () {
|
|
49
|
+
var _upgradeResetsEventCache = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
50
|
+
var _this = this;
|
|
51
|
+
|
|
52
|
+
var value;
|
|
53
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
54
|
+
while (1) {
|
|
55
|
+
switch (_context.prev = _context.next) {
|
|
56
|
+
case 0:
|
|
57
|
+
_context.next = 2;
|
|
58
|
+
return this.installSetListenerCacheAndBlockExecute();
|
|
59
|
+
|
|
60
|
+
case 2:
|
|
61
|
+
_context.next = 4;
|
|
62
|
+
return _test.assert.doesThrowAsync(function () {
|
|
63
|
+
return _this.Action('node', 'upgrade').execute({});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
case 4:
|
|
67
|
+
value = this.Settings().getListenerCache();
|
|
68
|
+
|
|
69
|
+
_test.assert.isFalsy(value);
|
|
70
|
+
|
|
71
|
+
case 6:
|
|
72
|
+
case "end":
|
|
73
|
+
return _context.stop();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, _callee, this);
|
|
77
|
+
}));
|
|
78
|
+
|
|
79
|
+
function upgradeResetsEventCache() {
|
|
80
|
+
return _upgradeResetsEventCache.apply(this, arguments);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return upgradeResetsEventCache;
|
|
84
|
+
}()
|
|
85
|
+
}, {
|
|
86
|
+
key: "doesNotResetEventCacheWithOtherAction",
|
|
87
|
+
value: function () {
|
|
88
|
+
var _doesNotResetEventCacheWithOtherAction = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
89
|
+
var _this2 = this;
|
|
90
|
+
|
|
91
|
+
var value;
|
|
92
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
93
|
+
while (1) {
|
|
94
|
+
switch (_context2.prev = _context2.next) {
|
|
95
|
+
case 0:
|
|
96
|
+
_context2.next = 2;
|
|
97
|
+
return this.installSetListenerCacheAndBlockExecute();
|
|
98
|
+
|
|
99
|
+
case 2:
|
|
100
|
+
_context2.next = 4;
|
|
101
|
+
return _test.assert.doesThrowAsync(function () {
|
|
102
|
+
return _this2.Action('schema', 'sync').execute({});
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
case 4:
|
|
106
|
+
value = this.Settings().getListenerCache();
|
|
107
|
+
|
|
108
|
+
_test.assert.isEqualDeep(value, {
|
|
109
|
+
shouldBeDeleted: true
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
case 6:
|
|
113
|
+
case "end":
|
|
114
|
+
return _context2.stop();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}, _callee2, this);
|
|
118
|
+
}));
|
|
119
|
+
|
|
120
|
+
function doesNotResetEventCacheWithOtherAction() {
|
|
121
|
+
return _doesNotResetEventCacheWithOtherAction.apply(this, arguments);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return doesNotResetEventCacheWithOtherAction;
|
|
125
|
+
}()
|
|
126
|
+
}, {
|
|
127
|
+
key: "installSetListenerCacheAndBlockExecute",
|
|
128
|
+
value: function () {
|
|
129
|
+
var _installSetListenerCacheAndBlockExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
130
|
+
var settings, emitter;
|
|
131
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
132
|
+
while (1) {
|
|
133
|
+
switch (_context3.prev = _context3.next) {
|
|
134
|
+
case 0:
|
|
135
|
+
_context3.next = 2;
|
|
136
|
+
return this.FeatureFixture().installCachedFeatures('events');
|
|
137
|
+
|
|
138
|
+
case 2:
|
|
139
|
+
settings = this.Settings();
|
|
140
|
+
settings.setListenerCache({
|
|
141
|
+
shouldBeDeleted: true
|
|
142
|
+
});
|
|
143
|
+
emitter = this.getEmitter();
|
|
144
|
+
void emitter.on('feature.will-execute', function () {
|
|
145
|
+
throw new Error('Stop!');
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
case 6:
|
|
149
|
+
case "end":
|
|
150
|
+
return _context3.stop();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}, _callee3, this);
|
|
154
|
+
}));
|
|
155
|
+
|
|
156
|
+
function installSetListenerCacheAndBlockExecute() {
|
|
157
|
+
return _installSetListenerCacheAndBlockExecute.apply(this, arguments);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return installSetListenerCacheAndBlockExecute;
|
|
161
|
+
}()
|
|
162
|
+
}, {
|
|
163
|
+
key: "Settings",
|
|
164
|
+
value: function Settings() {
|
|
165
|
+
return this.Service('eventSettings');
|
|
166
|
+
}
|
|
167
|
+
}]);
|
|
168
|
+
return UpgradingASkill4Test;
|
|
169
|
+
}(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "upgradeResetsEventCache", [_dec], Object.getOwnPropertyDescriptor(_class, "upgradeResetsEventCache"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "doesNotResetEventCacheWithOtherAction", [_dec2], Object.getOwnPropertyDescriptor(_class, "doesNotResetEventCacheWithOtherAction"), _class)), _class));
|
|
170
|
+
exports["default"] = UpgradingASkill4Test;
|
|
171
|
+
//# sourceMappingURL=UpgradingASkill4.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill4.test.ts"],"names":["UpgradingASkill4Test","installSetListenerCacheAndBlockExecute","assert","doesThrowAsync","Action","execute","value","Settings","getListenerCache","isFalsy","isEqualDeep","shouldBeDeleted","FeatureFixture","installCachedFeatures","settings","setListenerCache","emitter","getEmitter","on","Error","Service","AbstractCliTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;IAEqBA,oB,WACnB,iB,UAYA,iB;;;;;;;;;;;;;mHAZD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,sCAAL,EAFP;;AAAA;AAAA;AAAA,uBAIOC,aAAOC,cAAP,CAAsB;AAAA,yBAC3B,KAAI,CAACC,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CAD2B;AAAA,iBAAtB,CAJP;;AAAA;AAQOC,gBAAAA,KARP,GAQe,KAAKC,QAAL,GAAgBC,gBAAhB,EARf;;AASCN,6BAAOO,OAAP,CAAeH,KAAf;;AATD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iIAYA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKL,sCAAL,EAFP;;AAAA;AAAA;AAAA,uBAIOC,aAAOC,cAAP,CAAsB;AAAA,yBAAM,MAAI,CAACC,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAAN;AAAA,iBAAtB,CAJP;;AAAA;AAMOC,gBAAAA,KANP,GAMe,KAAKC,QAAL,GAAgBC,gBAAhB,EANf;;AAOCN,6BAAOQ,WAAP,CAAmBJ,KAAnB,EAA0B;AAAEK,kBAAAA,eAAe,EAAE;AAAnB,iBAA1B;;AAPD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;kIAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACO,KAAKC,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CADP;;AAAA;AAGOC,gBAAAA,QAHP,GAGkB,KAAKP,QAAL,EAHlB;AAICO,gBAAAA,QAAQ,CAACC,gBAAT,CAA0B;AAAEJ,kBAAAA,eAAe,EAAE;AAAnB,iBAA1B;AAEMK,gBAAAA,OANP,GAMiB,KAAKC,UAAL,EANjB;AAOC,qBAAKD,OAAO,CAACE,EAAR,CAAW,sBAAX,EAAmC,YAAM;AAC7C,wBAAM,IAAIC,KAAJ,CAAU,OAAV,CAAN;AACA,iBAFI,CAAL;;AAPD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAYA,oBAA0B;AACzB,aAAO,KAAKC,OAAL,CAAa,eAAb,CAAP;AACA;;;EArCgDC,4B","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class UpgradingASkill4Test extends AbstractCliTest {\n\t@test()\n\tprotected static async upgradeResetsEventCache() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() =>\n\t\t\tthis.Action('node', 'upgrade').execute({})\n\t\t)\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isFalsy(value)\n\t}\n\n\t@test()\n\tprotected static async doesNotResetEventCacheWithOtherAction() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() => this.Action('schema', 'sync').execute({}))\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isEqualDeep(value, { shouldBeDeleted: true })\n\t}\n\n\tprivate static async installSetListenerCacheAndBlockExecute() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst settings = this.Settings()\n\t\tsettings.setListenerCache({ shouldBeDeleted: true })\n\n\t\tconst emitter = this.getEmitter()\n\t\tvoid emitter.on('feature.will-execute', () => {\n\t\t\tthrow new Error('Stop!')\n\t\t})\n\t}\n\n\tprivate static Settings() {\n\t\treturn this.Service('eventSettings')\n\t}\n}\n"],"file":"UpgradingASkill4.test.js"}
|
|
@@ -50,7 +50,7 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
|
|
|
50
50
|
value:
|
|
51
51
|
/** An easy to understand version of the errors */
|
|
52
52
|
function friendlyMessage() {
|
|
53
|
-
var _options$
|
|
53
|
+
var _options$friendlyMess, _options$originalErro2, _options$originalErro3, _options$friendlyMess2, _options$originalErro4, _options$originalErro5, _options$originalErro6, _ref, _options$friendlyMess3, _options$originalErro7;
|
|
54
54
|
|
|
55
55
|
var options = this.options;
|
|
56
56
|
var message;
|
|
@@ -67,7 +67,14 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
|
|
|
67
67
|
break;
|
|
68
68
|
|
|
69
69
|
case 'GENERIC':
|
|
70
|
-
message = 'Oh shoot! 🤔';
|
|
70
|
+
message = (_options$friendlyMess = options.friendlyMessage) !== null && _options$friendlyMess !== void 0 ? _options$friendlyMess : 'Oh shoot! 🤔';
|
|
71
|
+
|
|
72
|
+
if (options.originalError) {
|
|
73
|
+
var _options$originalErro;
|
|
74
|
+
|
|
75
|
+
message += "\n\n".concat((_options$originalErro = options.originalError.stack) !== null && _options$originalErro !== void 0 ? _options$originalErro : options.originalError.name);
|
|
76
|
+
}
|
|
77
|
+
|
|
71
78
|
break;
|
|
72
79
|
|
|
73
80
|
case 'NOT_IMPLEMENTED':
|
|
@@ -89,7 +96,7 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
|
|
|
89
96
|
break;
|
|
90
97
|
|
|
91
98
|
case 'SCHEMA_FAILED_TO_IMPORT':
|
|
92
|
-
message = "Error importing \"".concat(options.file, "\". Original error:\n\n").concat((_options$
|
|
99
|
+
message = "Error importing \"".concat(options.file, "\". Original error:\n\n").concat((_options$originalErro2 = (_options$originalErro3 = options.originalError) === null || _options$originalErro3 === void 0 ? void 0 : _options$originalErro3.message) !== null && _options$originalErro2 !== void 0 ? _options$originalErro2 : '**MISSING**');
|
|
93
100
|
break;
|
|
94
101
|
|
|
95
102
|
case 'BUILD_FAILED':
|
|
@@ -97,7 +104,7 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
|
|
|
97
104
|
break;
|
|
98
105
|
|
|
99
106
|
case 'FAILED_TO_IMPORT':
|
|
100
|
-
message = "Failed to import \"".concat(options.file, "\". Original error:\n\n").concat((_options$
|
|
107
|
+
message = (_options$friendlyMess2 = options.friendlyMessage) !== null && _options$friendlyMess2 !== void 0 ? _options$friendlyMess2 : "Failed to import \"".concat(options.file, "\". Original error:\n\n").concat((_options$originalErro4 = (_options$originalErro5 = options.originalError) === null || _options$originalErro5 === void 0 ? void 0 : _options$originalErro5.message) !== null && _options$originalErro4 !== void 0 ? _options$originalErro4 : '**MISSING**');
|
|
101
108
|
break;
|
|
102
109
|
|
|
103
110
|
case 'LINT_FAILED':
|
|
@@ -136,7 +143,7 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
|
|
|
136
143
|
break;
|
|
137
144
|
|
|
138
145
|
case 'FILE_EXISTS':
|
|
139
|
-
message = 'A
|
|
146
|
+
message = 'A fail already exists.';
|
|
140
147
|
break;
|
|
141
148
|
|
|
142
149
|
case 'VSCODE_NOT_INSTALLED':
|
|
@@ -206,11 +213,11 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
|
|
|
206
213
|
break;
|
|
207
214
|
|
|
208
215
|
case 'INVALID_EVENT_CONTRACT':
|
|
209
|
-
message = "The event named `".concat(options.fullyQualifiedEventName, "` is not valid. Check ").concat(options.brokenProperty, ". The original error is:\n\n").concat((_options$
|
|
216
|
+
message = "The event named `".concat(options.fullyQualifiedEventName, "` is not valid. Check ").concat(options.brokenProperty, ". The original error is:\n\n").concat((_options$originalErro6 = options.originalError) === null || _options$originalErro6 === void 0 ? void 0 : _options$originalErro6.message);
|
|
210
217
|
break;
|
|
211
218
|
|
|
212
219
|
case 'BOOT_ERROR':
|
|
213
|
-
message = "Booting your skill failed: ".concat((_ref = (_options$
|
|
220
|
+
message = "Booting your skill failed: ".concat((_ref = (_options$friendlyMess3 = options.friendlyMessage) !== null && _options$friendlyMess3 !== void 0 ? _options$friendlyMess3 : (_options$originalErro7 = options.originalError) === null || _options$originalErro7 === void 0 ? void 0 : _options$originalErro7.message) !== null && _ref !== void 0 ? _ref : 'Not sure why, tho.');
|
|
214
221
|
break;
|
|
215
222
|
|
|
216
223
|
case 'DEPLOY_FAILED':
|
|
@@ -275,8 +282,7 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
|
|
|
275
282
|
message = (0, _get2["default"])((0, _getPrototypeOf2["default"])(SpruceError.prototype), "friendlyMessage", this).call(this);
|
|
276
283
|
}
|
|
277
284
|
|
|
278
|
-
|
|
279
|
-
return fullMessage;
|
|
285
|
+
return message;
|
|
280
286
|
}
|
|
281
287
|
}, {
|
|
282
288
|
key: "cleanStdErr",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/errors/SpruceError.ts"],"names":["SpruceError","options","message","code","args","length","join","friendlyMessage","command","file","originalError","pattern","cmd","cwd","stderr","cleanStdErr","stdout","schemaId","destination","featureCode","fileName","testName","errorMessage","split","map","line","errors","responseErrors","errorMessages","err","push","fullyQualifiedEventName","brokenProperty","dependencies","d","name","hint","namesUtil","toPascal","schemaNamespace","fieldName","JSON","stringify","fieldOptions","fullMessage","replace","trim","AbstractSpruceError"],"mappings":"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","sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport upperFirst from 'lodash/upperFirst'\nimport ErrorOptions from '#spruce/errors/options.types'\n\nexport default class SpruceError extends AbstractSpruceError<ErrorOptions> {\n\t/** An easy to understand version of the errors */\n\tpublic friendlyMessage(): string {\n\t\tconst { options } = this\n\t\tlet message\n\n\t\tswitch (options?.code) {\n\t\t\tcase 'INVALID_COMMAND':\n\t\t\t\tif (!options.args || options.args.length === 0) {\n\t\t\t\t\tmessage = `Hey friend 👋.. I don't support the command you tried.`\n\t\t\t\t} else {\n\t\t\t\t\tmessage = `Hey friend 👋. I don't know the command: ${options.args.join(\n\t\t\t\t\t\t' '\n\t\t\t\t\t)}.`\n\t\t\t\t}\n\t\t\t\tmessage += ' Try running `spruce --help`'\n\t\t\t\tbreak\n\n\t\t\tcase 'GENERIC':\n\t\t\t\tmessage = 'Oh shoot! 🤔'\n\t\t\t\tbreak\n\t\t\tcase 'NOT_IMPLEMENTED':\n\t\t\t\tmessage = ''\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'COMMAND_NOT_IMPLEMENTED':\n\t\t\t\tmessage = `${options.command} has not yet been implemented. ${\n\t\t\t\t\toptions.args ? `Args: ${options.args.join(', ')}` : ''\n\t\t\t\t}`\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_FAILED_TO_IMPORT':\n\t\t\t\tmessage = `Error importing \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BUILD_FAILED':\n\t\t\t\tmessage = `Build${\n\t\t\t\t\toptions.file ? `ing ${options.file}` : ''\n\t\t\t\t} failed. It looks like you're not running 'yarn watch'. Run it and then run 'spruce all:sync'.`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FAILED_TO_IMPORT':\n\t\t\t\tmessage = `Failed to import \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'LINT_FAILED':\n\t\t\t\tmessage = `Lint failed on pattern ${options.pattern}.`\n\t\t\t\tbreak\n\n\t\t\tcase 'EXECUTING_COMMAND_FAILED':\n\t\t\t\tif (this.originalError && this.originalError.message) {\n\t\t\t\t\tmessage = this.originalError.message + '\\n\\n'\n\t\t\t\t} else {\n\t\t\t\t\tmessage = ''\n\t\t\t\t}\n\t\t\t\tmessage += `Executing command failed '${options.cmd}'.\\n\\n`\n\t\t\t\tif (options.cwd) {\n\t\t\t\t\tmessage += `cwd: ${options.cwd}\\n\\n`\n\t\t\t\t}\n\n\t\t\t\tif (options.stderr) {\n\t\t\t\t\tmessage += this.cleanStdErr(options.stderr) + '\\n\\n'\n\t\t\t\t}\n\n\t\t\t\tif (options.stdout) {\n\t\t\t\t\tmessage += options.stdout\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'CREATE_AUTOLOADER_FAILED':\n\t\t\t\tmessage = 'A Could not create an autoloader just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_EMPTY':\n\t\t\t\tmessage = 'A directory empty just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'FILE_EXISTS':\n\t\t\t\tmessage = 'A fileExists just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'VSCODE_NOT_INSTALLED':\n\t\t\t\tmessage =\n\t\t\t\t\t\"vscode's 'code' is not installed.\\n\\nMac instructions: https://code.visualstudio.com/docs/setup/mac\\n\\nLinux instructions: https://code.visualstudio.com/docs/setup/linux\\n\\nWindows instructions: https://code.visualstudio.com/docs/setup/windows\"\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_EXISTS':\n\t\t\t\tmessage = `A schema called ${options.schemaId} already exists at ${options.destination}`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_ABORTED':\n\t\t\t\tmessage = 'Aborted! See ya later! ✌️'\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_FEATURE_CODE':\n\t\t\t\tmessage = `Oh no! I couldn't find a feature with the code '${options.featureCode}'.`\n\t\t\t\tbreak\n\n\t\t\tcase 'TEST_FAILED':\n\t\t\t\tmessage = `${options.fileName}\\n - ${\n\t\t\t\t\toptions.testName\n\t\t\t\t}\\n\\n${options.errorMessage\n\t\t\t\t\t.split('\\n')\n\t\t\t\t\t.map((line) => ` ${line}`)\n\t\t\t\t\t.join('\\n')}`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FEATURE_NOT_INSTALLED':\n\t\t\t\tmessage = `\\`${upperFirst(\n\t\t\t\t\toptions.featureCode\n\t\t\t\t)}\\` feature is not installed. Install it first, then try again.`\n\t\t\t\tbreak\n\n\t\t\tcase 'MERCURY_RESPONSE_ERROR': {\n\t\t\t\tconst errors = options.responseErrors\n\t\t\t\tmessage = `Got ${\n\t\t\t\t\terrors.length === 1 ? 'an error' : `${errors.length} errors`\n\t\t\t\t} from the server:\\n\\n`\n\n\t\t\t\tconst errorMessages: string[] = []\n\t\t\t\tfor (const err of errors) {\n\t\t\t\t\terrorMessages.push(err.message)\n\t\t\t\t}\n\n\t\t\t\tmessage += errorMessages.join('\\n')\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'INVALID_TEST_DIRECTORY':\n\t\t\t\tmessage = `You are missing dependencies I need to run tests. Try \\`spruce test.install\\` to reinstall.`\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_NOT_SKILL':\n\t\t\t\tmessage = 'The directory you are in is not a skill!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_REGISTERED':\n\t\t\t\tmessage = `Dang! I can't continue until you register your skill! Run \\`spruce login\\` and then \\`spruce register.skill\\` to get the ball rolling!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_ORGANIZATIONS_FOUND':\n\t\t\t\tmessage =\n\t\t\t\t\t\"It looks like you don't have any organizations setup yet. Try `spruce create.organization` first.\"\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_EVENT_CONTRACT':\n\t\t\t\tmessage = `The event named \\`${options.fullyQualifiedEventName}\\` is not valid. Check ${options.brokenProperty}. The original error is:\\n\\n${options.originalError?.message}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BOOT_ERROR':\n\t\t\t\tmessage = `Booting your skill failed: ${\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\toptions.originalError?.message ??\n\t\t\t\t\t'Not sure why, tho.'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'DEPLOY_FAILED':\n\t\t\t\tmessage = 'Deploy halted!'\n\t\t\t\tbreak\n\n\t\t\tcase 'MISSING_DEPENDENCIES':\n\t\t\t\tmessage = `Looks like you're missing some dependencies:\\n\\n${options.dependencies\n\t\t\t\t\t.map((d) => `${d.name}: ${d.hint}`)\n\t\t\t\t\t.join('\\n')}`\n\t\t\t\tbreak\n\n\t\t\tcase 'STORE_EXISTS':\n\t\t\t\tmessage = 'A Store exists just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'NOT_LOGGED_IN':\n\t\t\t\tmessage = 'You have to be logged in to do that!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_FOUND':\n\t\t\t\tmessage = `I couldn't find that skill!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_SKILLS_REGISTERED':\n\t\t\t\tmessage = `Whoa! Looks like you haven't registered your skill yet! Try \\`spruce register\\` to get that done!`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_BLOCKED':\n\t\t\t\tmessage = `${options.command} is blocked! ${options.hint}`\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_VIEW_EXISTS':\n\t\t\t\tmessage = `A skill view controller already exists named ${options.name}!`\n\t\t\t\tbreak\n\n\t\t\tcase 'THEME_EXISTS':\n\t\t\t\tmessage = `Yikes! You can't create a new theme. One per skill for now.`\n\t\t\t\tbreak\n\n\t\t\tcase 'CACHE_NOT_ENABLED':\n\t\t\t\tmessage = \"Cache is not enabled, so it can't be disabled!\"\n\t\t\t\tbreak\n\n\t\t\tcase 'DOCKER_NOT_STARTED':\n\t\t\t\tmessage = 'Docker has not been started! Start it and try again!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_TEMPLATE_ITEM_BUILDING_FAILED':\n\t\t\t\tmessage = `Failed to build schema template item for '${namesUtil.toPascal(\n\t\t\t\t\toptions.schemaNamespace\n\t\t\t\t)}.${options.schemaId}'. The field I had an issue on was '${\n\t\t\t\t\toptions.fieldName\n\t\t\t\t}'. It's options are:\\n\\n${JSON.stringify(\n\t\t\t\t\toptions.fieldOptions\n\t\t\t\t)}.\\n\\nChances are you have a circular reference in your schemas. You'll need to extract shared fields to a new file and have your schemas mix those in, vs referencing eath other.`\n\t\t\t\tbreak\n\n\t\t\tcase 'ACTION_CANCELLED':\n\t\t\t\tmessage = 'A Action cancelled just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'TRANSPORT_ALREADY_EXISTS':\n\t\t\t\tmessage = `A transport named '${options.name}' already exists!`\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tmessage = super.friendlyMessage()\n\t\t}\n\n\t\tconst fullMessage = options.friendlyMessage ?? message\n\t\treturn fullMessage\n\t}\n\n\tprivate cleanStdErr(stderr: string) {\n\t\treturn stderr.replace('warning package.json: No license field', '').trim()\n\t}\n}\n"],"file":"SpruceError.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/errors/SpruceError.ts"],"names":["SpruceError","options","message","code","args","length","join","friendlyMessage","originalError","stack","name","command","file","pattern","cmd","cwd","stderr","cleanStdErr","stdout","schemaId","destination","featureCode","fileName","testName","errorMessage","split","map","line","errors","responseErrors","errorMessages","err","push","fullyQualifiedEventName","brokenProperty","dependencies","d","hint","namesUtil","toPascal","schemaNamespace","fieldName","JSON","stringify","fieldOptions","replace","trim","AbstractSpruceError"],"mappings":"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","sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport upperFirst from 'lodash/upperFirst'\nimport ErrorOptions from '#spruce/errors/options.types'\n\nexport default class SpruceError extends AbstractSpruceError<ErrorOptions> {\n\t/** An easy to understand version of the errors */\n\tpublic friendlyMessage(): string {\n\t\tconst { options } = this\n\t\tlet message\n\n\t\tswitch (options?.code) {\n\t\t\tcase 'INVALID_COMMAND':\n\t\t\t\tif (!options.args || options.args.length === 0) {\n\t\t\t\t\tmessage = `Hey friend 👋.. I don't support the command you tried.`\n\t\t\t\t} else {\n\t\t\t\t\tmessage = `Hey friend 👋. I don't know the command: ${options.args.join(\n\t\t\t\t\t\t' '\n\t\t\t\t\t)}.`\n\t\t\t\t}\n\t\t\t\tmessage += ' Try running `spruce --help`'\n\t\t\t\tbreak\n\n\t\t\tcase 'GENERIC':\n\t\t\t\tmessage = options.friendlyMessage ?? 'Oh shoot! 🤔'\n\n\t\t\t\tif (options.originalError) {\n\t\t\t\t\tmessage += `\\n\\n${\n\t\t\t\t\t\toptions.originalError.stack ?? options.originalError.name\n\t\t\t\t\t}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'NOT_IMPLEMENTED':\n\t\t\t\tmessage = ''\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'COMMAND_NOT_IMPLEMENTED':\n\t\t\t\tmessage = `${options.command} has not yet been implemented. ${\n\t\t\t\t\toptions.args ? `Args: ${options.args.join(', ')}` : ''\n\t\t\t\t}`\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_FAILED_TO_IMPORT':\n\t\t\t\tmessage = `Error importing \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BUILD_FAILED':\n\t\t\t\tmessage = `Build${\n\t\t\t\t\toptions.file ? `ing ${options.file}` : ''\n\t\t\t\t} failed. It looks like you're not running 'yarn watch'. Run it and then run 'spruce all:sync'.`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FAILED_TO_IMPORT':\n\t\t\t\tmessage =\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\t`Failed to import \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'LINT_FAILED':\n\t\t\t\tmessage = `Lint failed on pattern ${options.pattern}.`\n\t\t\t\tbreak\n\n\t\t\tcase 'EXECUTING_COMMAND_FAILED':\n\t\t\t\tif (this.originalError && this.originalError.message) {\n\t\t\t\t\tmessage = this.originalError.message + '\\n\\n'\n\t\t\t\t} else {\n\t\t\t\t\tmessage = ''\n\t\t\t\t}\n\t\t\t\tmessage += `Executing command failed '${options.cmd}'.\\n\\n`\n\t\t\t\tif (options.cwd) {\n\t\t\t\t\tmessage += `cwd: ${options.cwd}\\n\\n`\n\t\t\t\t}\n\n\t\t\t\tif (options.stderr) {\n\t\t\t\t\tmessage += this.cleanStdErr(options.stderr) + '\\n\\n'\n\t\t\t\t}\n\n\t\t\t\tif (options.stdout) {\n\t\t\t\t\tmessage += options.stdout\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'CREATE_AUTOLOADER_FAILED':\n\t\t\t\tmessage = 'A Could not create an autoloader just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_EMPTY':\n\t\t\t\tmessage = 'A directory empty just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'FILE_EXISTS':\n\t\t\t\tmessage = 'A fail already exists.'\n\t\t\t\tbreak\n\n\t\t\tcase 'VSCODE_NOT_INSTALLED':\n\t\t\t\tmessage =\n\t\t\t\t\t\"vscode's 'code' is not installed.\\n\\nMac instructions: https://code.visualstudio.com/docs/setup/mac\\n\\nLinux instructions: https://code.visualstudio.com/docs/setup/linux\\n\\nWindows instructions: https://code.visualstudio.com/docs/setup/windows\"\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_EXISTS':\n\t\t\t\tmessage = `A schema called ${options.schemaId} already exists at ${options.destination}`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_ABORTED':\n\t\t\t\tmessage = 'Aborted! See ya later! ✌️'\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_FEATURE_CODE':\n\t\t\t\tmessage = `Oh no! I couldn't find a feature with the code '${options.featureCode}'.`\n\t\t\t\tbreak\n\n\t\t\tcase 'TEST_FAILED':\n\t\t\t\tmessage = `${options.fileName}\\n - ${\n\t\t\t\t\toptions.testName\n\t\t\t\t}\\n\\n${options.errorMessage\n\t\t\t\t\t.split('\\n')\n\t\t\t\t\t.map((line) => ` ${line}`)\n\t\t\t\t\t.join('\\n')}`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FEATURE_NOT_INSTALLED':\n\t\t\t\tmessage = `\\`${upperFirst(\n\t\t\t\t\toptions.featureCode\n\t\t\t\t)}\\` feature is not installed. Install it first, then try again.`\n\t\t\t\tbreak\n\n\t\t\tcase 'MERCURY_RESPONSE_ERROR': {\n\t\t\t\tconst errors = options.responseErrors\n\t\t\t\tmessage = `Got ${\n\t\t\t\t\terrors.length === 1 ? 'an error' : `${errors.length} errors`\n\t\t\t\t} from the server:\\n\\n`\n\n\t\t\t\tconst errorMessages: string[] = []\n\t\t\t\tfor (const err of errors) {\n\t\t\t\t\terrorMessages.push(err.message)\n\t\t\t\t}\n\n\t\t\t\tmessage += errorMessages.join('\\n')\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'INVALID_TEST_DIRECTORY':\n\t\t\t\tmessage = `You are missing dependencies I need to run tests. Try \\`spruce test.install\\` to reinstall.`\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_NOT_SKILL':\n\t\t\t\tmessage = 'The directory you are in is not a skill!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_REGISTERED':\n\t\t\t\tmessage = `Dang! I can't continue until you register your skill! Run \\`spruce login\\` and then \\`spruce register.skill\\` to get the ball rolling!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_ORGANIZATIONS_FOUND':\n\t\t\t\tmessage =\n\t\t\t\t\t\"It looks like you don't have any organizations setup yet. Try `spruce create.organization` first.\"\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_EVENT_CONTRACT':\n\t\t\t\tmessage = `The event named \\`${options.fullyQualifiedEventName}\\` is not valid. Check ${options.brokenProperty}. The original error is:\\n\\n${options.originalError?.message}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BOOT_ERROR':\n\t\t\t\tmessage = `Booting your skill failed: ${\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\toptions.originalError?.message ??\n\t\t\t\t\t'Not sure why, tho.'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'DEPLOY_FAILED':\n\t\t\t\tmessage = 'Deploy halted!'\n\t\t\t\tbreak\n\n\t\t\tcase 'MISSING_DEPENDENCIES':\n\t\t\t\tmessage = `Looks like you're missing some dependencies:\\n\\n${options.dependencies\n\t\t\t\t\t.map((d) => `${d.name}: ${d.hint}`)\n\t\t\t\t\t.join('\\n')}`\n\t\t\t\tbreak\n\n\t\t\tcase 'STORE_EXISTS':\n\t\t\t\tmessage = 'A Store exists just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'NOT_LOGGED_IN':\n\t\t\t\tmessage = 'You have to be logged in to do that!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_FOUND':\n\t\t\t\tmessage = `I couldn't find that skill!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_SKILLS_REGISTERED':\n\t\t\t\tmessage = `Whoa! Looks like you haven't registered your skill yet! Try \\`spruce register\\` to get that done!`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_BLOCKED':\n\t\t\t\tmessage = `${options.command} is blocked! ${options.hint}`\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_VIEW_EXISTS':\n\t\t\t\tmessage = `A skill view controller already exists named ${options.name}!`\n\t\t\t\tbreak\n\n\t\t\tcase 'THEME_EXISTS':\n\t\t\t\tmessage = `Yikes! You can't create a new theme. One per skill for now.`\n\t\t\t\tbreak\n\n\t\t\tcase 'CACHE_NOT_ENABLED':\n\t\t\t\tmessage = \"Cache is not enabled, so it can't be disabled!\"\n\t\t\t\tbreak\n\n\t\t\tcase 'DOCKER_NOT_STARTED':\n\t\t\t\tmessage = 'Docker has not been started! Start it and try again!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_TEMPLATE_ITEM_BUILDING_FAILED':\n\t\t\t\tmessage = `Failed to build schema template item for '${namesUtil.toPascal(\n\t\t\t\t\toptions.schemaNamespace\n\t\t\t\t)}.${options.schemaId}'. The field I had an issue on was '${\n\t\t\t\t\toptions.fieldName\n\t\t\t\t}'. It's options are:\\n\\n${JSON.stringify(\n\t\t\t\t\toptions.fieldOptions\n\t\t\t\t)}.\\n\\nChances are you have a circular reference in your schemas. You'll need to extract shared fields to a new file and have your schemas mix those in, vs referencing eath other.`\n\t\t\t\tbreak\n\n\t\t\tcase 'ACTION_CANCELLED':\n\t\t\t\tmessage = 'A Action cancelled just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'TRANSPORT_ALREADY_EXISTS':\n\t\t\t\tmessage = `A transport named '${options.name}' already exists!`\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tmessage = super.friendlyMessage()\n\t\t}\n\n\t\treturn message\n\t}\n\n\tprivate cleanStdErr(stderr: string) {\n\t\treturn stderr.replace('warning package.json: No license field', '').trim()\n\t}\n}\n"],"file":"SpruceError.js"}
|
|
@@ -57,16 +57,20 @@ var ActionFactory = /*#__PURE__*/function () {
|
|
|
57
57
|
var classPath = _spruceSkillUtils.diskUtil.resolvePath(feature.actionsDir, "".concat(_spruceSkillUtils.namesUtil.toPascal(actionCode), "Action"));
|
|
58
58
|
|
|
59
59
|
var Class;
|
|
60
|
+
var originalError;
|
|
60
61
|
|
|
61
62
|
try {
|
|
62
63
|
Class = require(classPath)["default"]; // eslint-disable-next-line no-empty
|
|
63
|
-
} catch (
|
|
64
|
+
} catch (err) {
|
|
65
|
+
originalError = err;
|
|
66
|
+
} //@ts-ignore
|
|
64
67
|
|
|
65
68
|
|
|
66
69
|
if (!Class) {
|
|
67
70
|
throw new _SpruceError["default"]({
|
|
68
71
|
code: 'GENERIC',
|
|
69
|
-
friendlyMessage: "I could not find any action named '".concat(actionCode, "' for the ").concat(feature.code, " feature. Make sure it's the default export and extends AbstractAction.")
|
|
72
|
+
friendlyMessage: "I could not find any action named '".concat(actionCode, "' for the ").concat(feature.code, " feature. Make sure it's the default export and extends AbstractAction."),
|
|
73
|
+
originalError: originalError
|
|
70
74
|
});
|
|
71
75
|
}
|
|
72
76
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/features/ActionFactory.ts"],"names":["ActionFactory","options","blockedCommands","optionOverrides","actionOptions","featureCode","actionCode","actionExecuter","featureInstaller","feature","getFeature","actionsDir","Error","classPath","diskUtil","resolvePath","namesUtil","toPascal","Class","require","SpruceError","code","friendlyMessage","action","parent","execute","actionDecorator","OverrideActionDecorator","ui"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AAEA;;AAWA;;;;;;;;IAYqBA,a;AAKpB,yBAAmBC,OAAnB,EAAyD;AAAA;AAAA;AAAA;AAAA;AACxD,QAAQC,eAAR,GAA+DD,OAA/D,CAAQC,eAAR;AAAA,QAAyBC,eAAzB,GAA+DF,OAA/D,CAAyBE,eAAzB;AAAA,QAA6CC,aAA7C,6CAA+DH,OAA/D;AACA,SAAKG,aAAL,GAAqBA,aAArB;AACA,SAAKF,eAAL,GAAuBA,eAAvB;AACA,SAAKC,eAAL,GAAuBA,eAAvB;AACA;;;;WAED,gBAAgEF,OAAhE,EAKqB;AACpB,UAAQI,WAAR,GACCJ,OADD,CAAQI,WAAR;AAAA,UAAqBC,UAArB,GACCL,OADD,CAAqBK,UAArB;AAAA,UAAiCC,cAAjC,GACCN,OADD,CAAiCM,cAAjC;AAAA,UAAiDC,gBAAjD,GACCP,OADD,CAAiDO,gBAAjD;AAGA,UAAMC,OAAO,GAAGD,gBAAgB,CAACE,UAAjB,CAA4BL,WAA5B,CAAhB;;AAEA,UAAI,CAACI,OAAO,CAACE,UAAb,EAAyB;AACxB,cAAM,IAAIC,KAAJ,gBACGP,WADH,sFAAN;AAGA;;AAED,UAAMQ,SAAS,GAAGC,2BAASC,WAAT,CACjBN,OAAO,CAACE,UADS,YAEdK,4BAAUC,QAAV,CAAmBX,UAAnB,CAFc,YAAlB;;AAKA,UAAIY,KAAJ;;AAEA,UAAI;
|
|
1
|
+
{"version":3,"sources":["../../src/features/ActionFactory.ts"],"names":["ActionFactory","options","blockedCommands","optionOverrides","actionOptions","featureCode","actionCode","actionExecuter","featureInstaller","feature","getFeature","actionsDir","Error","classPath","diskUtil","resolvePath","namesUtil","toPascal","Class","originalError","require","err","SpruceError","code","friendlyMessage","action","parent","execute","actionDecorator","OverrideActionDecorator","ui"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AAEA;;AAWA;;;;;;;;IAYqBA,a;AAKpB,yBAAmBC,OAAnB,EAAyD;AAAA;AAAA;AAAA;AAAA;AACxD,QAAQC,eAAR,GAA+DD,OAA/D,CAAQC,eAAR;AAAA,QAAyBC,eAAzB,GAA+DF,OAA/D,CAAyBE,eAAzB;AAAA,QAA6CC,aAA7C,6CAA+DH,OAA/D;AACA,SAAKG,aAAL,GAAqBA,aAArB;AACA,SAAKF,eAAL,GAAuBA,eAAvB;AACA,SAAKC,eAAL,GAAuBA,eAAvB;AACA;;;;WAED,gBAAgEF,OAAhE,EAKqB;AACpB,UAAQI,WAAR,GACCJ,OADD,CAAQI,WAAR;AAAA,UAAqBC,UAArB,GACCL,OADD,CAAqBK,UAArB;AAAA,UAAiCC,cAAjC,GACCN,OADD,CAAiCM,cAAjC;AAAA,UAAiDC,gBAAjD,GACCP,OADD,CAAiDO,gBAAjD;AAGA,UAAMC,OAAO,GAAGD,gBAAgB,CAACE,UAAjB,CAA4BL,WAA5B,CAAhB;;AAEA,UAAI,CAACI,OAAO,CAACE,UAAb,EAAyB;AACxB,cAAM,IAAIC,KAAJ,gBACGP,WADH,sFAAN;AAGA;;AAED,UAAMQ,SAAS,GAAGC,2BAASC,WAAT,CACjBN,OAAO,CAACE,UADS,YAEdK,4BAAUC,QAAV,CAAmBX,UAAnB,CAFc,YAAlB;;AAKA,UAAIY,KAAJ;AACA,UAAIC,aAAJ;;AAEA,UAAI;AACHD,QAAAA,KAAK,GAAGE,OAAO,CAACP,SAAD,CAAP,WAAR,CADG,CAEH;AACA,OAHD,CAGE,OAAOQ,GAAP,EAAiB;AAClBF,QAAAA,aAAa,GAAGE,GAAhB;AACA,OAzBmB,CA2BpB;;;AACA,UAAI,CAACH,KAAL,EAAY;AACX,cAAM,IAAII,uBAAJ,CAAgB;AACrBC,UAAAA,IAAI,EAAE,SADe;AAErBC,UAAAA,eAAe,+CAAwClB,UAAxC,uBAA+DG,OAAO,CAACc,IAAvE,4EAFM;AAGrBJ,UAAAA,aAAa,EAAbA;AAHqB,SAAhB,CAAN;AAKA;;AAED,UAAMM,MAAM,GAAG,IAAIP,KAAJ,iCACX,KAAKd,aADM;AAEdG,QAAAA,cAAc,EAAdA,cAFc;AAGdmB,QAAAA,MAAM,EAAEjB,OAHM;AAIdD,QAAAA,gBAAgB,EAAhBA;AAJc,SAAf;;AAOA,UAAI,CAACiB,MAAL,EAAa;AACZ,cAAM,IAAIH,uBAAJ,CAAgB;AACrBC,UAAAA,IAAI,EAAE,SADe;AAErBC,UAAAA,eAAe,oCAA6BlB,UAA7B,wBAAqDG,OAAO,CAACc,IAA7D;AAFM,SAAhB,CAAN;AAIA;;AAED,UAAI,CAACE,MAAM,CAACE,OAAZ,EAAqB;AACpB,cAAM,IAAIL,uBAAJ,CAAgB;AACrBC,UAAAA,IAAI,EAAE,SADe;AAErBC,UAAAA,eAAe,8BAAuBf,OAAO,CAACc,IAA/B,yBAAkDjB,UAAlD;AAFM,SAAhB,CAAN;AAIA;;AAED,UAAMsB,eAAe,GAAG,IAAIC,mCAAJ,CAA4B;AACnDJ,QAAAA,MAAM,EAANA,MADmD;AAEnDhB,QAAAA,OAAO,EAAPA,OAFmD;AAGnDP,QAAAA,eAAe,EAAE,KAAKA,eAH6B;AAInDC,QAAAA,eAAe,EAAE,KAAKA,eAJ6B;AAKnD2B,QAAAA,EAAE,EAAE,KAAK1B,aAAL,CAAmB0B,EAL4B;AAMnDxB,QAAAA,UAAU,EAAVA;AANmD,OAA5B,CAAxB;AASA,aAAOsB,eAAP;AACA","sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../errors/SpruceError'\nimport {\n\tFeatureAction,\n\tActionOptions,\n\tFeatureCode,\n} from '../features/features.types'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport { BlockedCommands, OptionOverrides } from '../types/cli.types'\nimport AbstractAction from './AbstractAction'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport OverrideActionDecorator from './OverrideActionDecorator'\n\nexport interface FeatureActionFactoryOptions\n\textends Omit<\n\t\tActionOptions,\n\t\t'parent' | 'actionExecuter' | 'featureInstaller'\n\t> {\n\temitter: GlobalEmitter\n\tblockedCommands?: BlockedCommands\n\toptionOverrides?: OptionOverrides\n}\n\nexport default class ActionFactory {\n\tprivate actionOptions: FeatureActionFactoryOptions\n\tprivate blockedCommands?: BlockedCommands\n\tprivate optionOverrides?: OptionOverrides\n\n\tpublic constructor(options: FeatureActionFactoryOptions) {\n\t\tconst { blockedCommands, optionOverrides, ...actionOptions } = options\n\t\tthis.actionOptions = actionOptions\n\t\tthis.blockedCommands = blockedCommands\n\t\tthis.optionOverrides = optionOverrides\n\t}\n\n\tpublic Action<F extends FeatureCode, S extends Schema = Schema>(options: {\n\t\tfeatureCode: F\n\t\tactionCode: string\n\t\tactionExecuter: ActionExecuter\n\t\tfeatureInstaller: FeatureInstaller\n\t}): FeatureAction<S> {\n\t\tconst { featureCode, actionCode, actionExecuter, featureInstaller } =\n\t\t\toptions\n\n\t\tconst feature = featureInstaller.getFeature(featureCode)\n\n\t\tif (!feature.actionsDir) {\n\t\t\tthrow new Error(\n\t\t\t\t`Your ${featureCode} features needs \\`public actionsDir = diskUtil.resolvePath(__dirname, 'actions')\\``\n\t\t\t)\n\t\t}\n\n\t\tconst classPath = diskUtil.resolvePath(\n\t\t\tfeature.actionsDir,\n\t\t\t`${namesUtil.toPascal(actionCode)}Action`\n\t\t)\n\n\t\tlet Class: new (options: ActionOptions) => AbstractAction | undefined\n\t\tlet originalError: Error | undefined\n\n\t\ttry {\n\t\t\tClass = require(classPath).default\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch (err: any) {\n\t\t\toriginalError = err\n\t\t}\n\n\t\t//@ts-ignore\n\t\tif (!Class) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not find any action named '${actionCode}' for the ${feature.code} feature. Make sure it's the default export and extends AbstractAction.`,\n\t\t\t\toriginalError,\n\t\t\t})\n\t\t}\n\n\t\tconst action = new Class({\n\t\t\t...this.actionOptions,\n\t\t\tactionExecuter,\n\t\t\tparent: feature,\n\t\t\tfeatureInstaller,\n\t\t})\n\n\t\tif (!action) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `I could not instantiate ${actionCode} action on ${feature.code} feature.`,\n\t\t\t})\n\t\t}\n\n\t\tif (!action.execute) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `It looks like the ${feature.code} feature's '${actionCode}' action does not properly extend AbstractAction.`,\n\t\t\t})\n\t\t}\n\n\t\tconst actionDecorator = new OverrideActionDecorator({\n\t\t\taction,\n\t\t\tfeature,\n\t\t\tblockedCommands: this.blockedCommands,\n\t\t\toptionOverrides: this.optionOverrides,\n\t\t\tui: this.actionOptions.ui,\n\t\t\tactionCode,\n\t\t})\n\n\t\treturn actionDecorator as FeatureAction<S>\n\t}\n}\n"],"file":"ActionFactory.js"}
|
|
@@ -25,6 +25,7 @@ export default class EventFeature extends AbstractFeature {
|
|
|
25
25
|
afterPackageInstall(): Promise<{}>;
|
|
26
26
|
private handleDidExecute;
|
|
27
27
|
private handleWillExecute;
|
|
28
|
+
private appendRemoteToResultsOrPrompt;
|
|
28
29
|
private handleDidFetchSchemas;
|
|
29
30
|
getEventContractBuilder(): EventContractBuilder;
|
|
30
31
|
hasBeenSynced(): boolean;
|
|
@@ -146,7 +146,7 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
146
146
|
key: "handleWillExecute",
|
|
147
147
|
value: function () {
|
|
148
148
|
var _handleWillExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(payload) {
|
|
149
|
-
var featureCode, actionCode, isInstalled,
|
|
149
|
+
var featureCode, actionCode, isInstalled, settings;
|
|
150
150
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
151
151
|
while (1) {
|
|
152
152
|
switch (_context3.prev = _context3.next) {
|
|
@@ -158,101 +158,131 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
158
158
|
case 3:
|
|
159
159
|
isInstalled = _context3.sent;
|
|
160
160
|
|
|
161
|
+
if (featureCode === 'node' || featureCode === 'upgrade') {
|
|
162
|
+
settings = this.Service('eventSettings');
|
|
163
|
+
settings.clearListenerCache();
|
|
164
|
+
}
|
|
165
|
+
|
|
161
166
|
if (!(isInstalled && (featureCode === 'event' || featureCode === 'eventContract') && actionCode !== 'setRemote')) {
|
|
162
|
-
_context3.next =
|
|
167
|
+
_context3.next = 7;
|
|
163
168
|
break;
|
|
164
169
|
}
|
|
165
170
|
|
|
171
|
+
return _context3.abrupt("return", this.appendRemoteToResultsOrPrompt());
|
|
172
|
+
|
|
173
|
+
case 7:
|
|
174
|
+
return _context3.abrupt("return", {});
|
|
175
|
+
|
|
176
|
+
case 8:
|
|
177
|
+
case "end":
|
|
178
|
+
return _context3.stop();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}, _callee3, this);
|
|
182
|
+
}));
|
|
183
|
+
|
|
184
|
+
function handleWillExecute(_x2) {
|
|
185
|
+
return _handleWillExecute.apply(this, arguments);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return handleWillExecute;
|
|
189
|
+
}()
|
|
190
|
+
}, {
|
|
191
|
+
key: "appendRemoteToResultsOrPrompt",
|
|
192
|
+
value: function () {
|
|
193
|
+
var _appendRemoteToResultsOrPrompt = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
194
|
+
var remote, r, results;
|
|
195
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
196
|
+
while (1) {
|
|
197
|
+
switch (_context4.prev = _context4.next) {
|
|
198
|
+
case 0:
|
|
166
199
|
remote = this.Service('remote');
|
|
167
200
|
r = remote.getRemote();
|
|
168
201
|
|
|
169
202
|
if (r) {
|
|
170
|
-
|
|
203
|
+
_context4.next = 13;
|
|
171
204
|
break;
|
|
172
205
|
}
|
|
173
206
|
|
|
174
207
|
if (_TerminalInterface["default"].doesSupportColor()) {
|
|
175
|
-
|
|
208
|
+
_context4.next = 5;
|
|
176
209
|
break;
|
|
177
210
|
}
|
|
178
211
|
|
|
179
212
|
throw new Error("Dang! I couldn't find env.HOST. Once that is set, lets try again!");
|
|
180
213
|
|
|
181
|
-
case
|
|
214
|
+
case 5:
|
|
182
215
|
this.ui.stopLoading();
|
|
183
216
|
this.ui.renderLine("Uh oh! It looks like you haven't configured your remote! We gotta do that.");
|
|
184
|
-
|
|
217
|
+
_context4.next = 9;
|
|
185
218
|
return this.Action('event', 'setRemote').execute({});
|
|
186
219
|
|
|
187
|
-
case
|
|
188
|
-
results =
|
|
189
|
-
return
|
|
220
|
+
case 9:
|
|
221
|
+
results = _context4.sent;
|
|
222
|
+
return _context4.abrupt("return", results);
|
|
190
223
|
|
|
191
|
-
case
|
|
192
|
-
return
|
|
224
|
+
case 13:
|
|
225
|
+
return _context4.abrupt("return", {
|
|
193
226
|
summaryLines: ["Remote: ".concat(r), "Host: ".concat(remote.getHost())]
|
|
194
227
|
});
|
|
195
228
|
|
|
196
|
-
case
|
|
197
|
-
return _context3.abrupt("return", {});
|
|
198
|
-
|
|
199
|
-
case 20:
|
|
229
|
+
case 14:
|
|
200
230
|
case "end":
|
|
201
|
-
return
|
|
231
|
+
return _context4.stop();
|
|
202
232
|
}
|
|
203
233
|
}
|
|
204
|
-
},
|
|
234
|
+
}, _callee4, this);
|
|
205
235
|
}));
|
|
206
236
|
|
|
207
|
-
function
|
|
208
|
-
return
|
|
237
|
+
function appendRemoteToResultsOrPrompt() {
|
|
238
|
+
return _appendRemoteToResultsOrPrompt.apply(this, arguments);
|
|
209
239
|
}
|
|
210
240
|
|
|
211
|
-
return
|
|
241
|
+
return appendRemoteToResultsOrPrompt;
|
|
212
242
|
}()
|
|
213
243
|
}, {
|
|
214
244
|
key: "handleDidFetchSchemas",
|
|
215
245
|
value: function () {
|
|
216
|
-
var _handleDidFetchSchemas = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
246
|
+
var _handleDidFetchSchemas = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(payload) {
|
|
217
247
|
var isInstalled, lastSync, _payload$schemas, _uniqueSchemas$schema, writer, uniqueSchemas;
|
|
218
248
|
|
|
219
|
-
return _regenerator["default"].wrap(function
|
|
249
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
220
250
|
while (1) {
|
|
221
|
-
switch (
|
|
251
|
+
switch (_context5.prev = _context5.next) {
|
|
222
252
|
case 0:
|
|
223
|
-
|
|
253
|
+
_context5.next = 2;
|
|
224
254
|
return this.featureInstaller.isInstalled(this.code);
|
|
225
255
|
|
|
226
256
|
case 2:
|
|
227
|
-
isInstalled =
|
|
257
|
+
isInstalled = _context5.sent;
|
|
228
258
|
lastSync = this.Service('eventSettings').getLastSyncOptions();
|
|
229
259
|
|
|
230
260
|
if (!(lastSync && isInstalled)) {
|
|
231
|
-
|
|
261
|
+
_context5.next = 10;
|
|
232
262
|
break;
|
|
233
263
|
}
|
|
234
264
|
|
|
235
265
|
writer = this.getEventContractBuilder();
|
|
236
|
-
|
|
266
|
+
_context5.next = 8;
|
|
237
267
|
return writer.fetchContractsAndGenerateUniqueSchemas((_payload$schemas = payload.schemas) !== null && _payload$schemas !== void 0 ? _payload$schemas : [], lastSync.shouldSyncOnlyCoreEvents);
|
|
238
268
|
|
|
239
269
|
case 8:
|
|
240
|
-
uniqueSchemas =
|
|
241
|
-
return
|
|
270
|
+
uniqueSchemas = _context5.sent;
|
|
271
|
+
return _context5.abrupt("return", {
|
|
242
272
|
schemas: (_uniqueSchemas$schema = uniqueSchemas.schemas) !== null && _uniqueSchemas$schema !== void 0 ? _uniqueSchemas$schema : []
|
|
243
273
|
});
|
|
244
274
|
|
|
245
275
|
case 10:
|
|
246
|
-
return
|
|
276
|
+
return _context5.abrupt("return", {
|
|
247
277
|
schemas: []
|
|
248
278
|
});
|
|
249
279
|
|
|
250
280
|
case 11:
|
|
251
281
|
case "end":
|
|
252
|
-
return
|
|
282
|
+
return _context5.stop();
|
|
253
283
|
}
|
|
254
284
|
}
|
|
255
|
-
},
|
|
285
|
+
}, _callee5, this);
|
|
256
286
|
}));
|
|
257
287
|
|
|
258
288
|
function handleDidFetchSchemas(_x3) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/features/event/EventFeature.ts"],"names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","payload","featureCode","actionCode","featureInstaller","isInstalled","Action","execute","
|
|
1
|
+
{"version":3,"sources":["../../../src/features/event/EventFeature.ts"],"names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","payload","featureCode","actionCode","featureInstaller","isInstalled","Action","execute","settings","Service","clearListenerCache","appendRemoteToResultsOrPrompt","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","results","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"mappings":"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","sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\treturn {}\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\treturn this.Action('event', 'sync').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tif (\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' || featureCode === 'eventContract') &&\n\t\t\tactionCode !== 'setRemote'\n\t\t) {\n\t\t\treturn this.appendRemoteToResultsOrPrompt()\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"file":"EventFeature.js"}
|
|
@@ -30,6 +30,21 @@ var EventSettingsService = /*#__PURE__*/function () {
|
|
|
30
30
|
value: function setLastSyncOptions(options) {
|
|
31
31
|
this.settings.set('events.lastSync', options);
|
|
32
32
|
}
|
|
33
|
+
}, {
|
|
34
|
+
key: "setListenerCache",
|
|
35
|
+
value: function setListenerCache(value) {
|
|
36
|
+
this.settings.set('events.listenerCacheKeys', value);
|
|
37
|
+
}
|
|
38
|
+
}, {
|
|
39
|
+
key: "clearListenerCache",
|
|
40
|
+
value: function clearListenerCache() {
|
|
41
|
+
this.settings.unset('events.listenerCacheKeys');
|
|
42
|
+
}
|
|
43
|
+
}, {
|
|
44
|
+
key: "getListenerCache",
|
|
45
|
+
value: function getListenerCache() {
|
|
46
|
+
return this.settings.get('events.listenerCacheKeys');
|
|
47
|
+
}
|
|
33
48
|
}]);
|
|
34
49
|
return EventSettingsService;
|
|
35
50
|
}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/event/services/EventSettingsService.ts"],"names":["EventSettingsService","settings","get","options","set"],"mappings":";;;;;;;;;;;;;;;IAEqBA,oB;AAEpB,gCAAmBC,QAAnB,EAA8C;AAAA;AAAA;AAC7C,SAAKA,QAAL,GAAgBA,QAAhB;AACA;;;;WAED,8BAA4B;AAC3B,aAAO,KAAKA,QAAL,CAAcC,GAAd,CAAkB,iBAAlB,CAAP;AACA;;;WAED,4BAA0BC,OAA1B,EAEG;AACF,WAAKF,QAAL,CAAcG,GAAd,CAAkB,iBAAlB,EAAqCD,OAArC;AACA","sourcesContent":["import { SettingsService } from '@sprucelabs/spruce-skill-utils'\n\nexport default class EventSettingsService {\n\tprivate settings: SettingsService<string>\n\tpublic constructor(settings: SettingsService) {\n\t\tthis.settings = settings\n\t}\n\n\tpublic getLastSyncOptions() {\n\t\treturn this.settings.get('events.lastSync')\n\t}\n\n\tpublic setLastSyncOptions(options: {\n\t\tshouldSyncOnlyCoreEvents?: boolean | null\n\t}) {\n\t\tthis.settings.set('events.lastSync', options)\n\t}\n}\n"],"file":"EventSettingsService.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/event/services/EventSettingsService.ts"],"names":["EventSettingsService","settings","get","options","set","value","unset"],"mappings":";;;;;;;;;;;;;;;IAEqBA,oB;AAEpB,gCAAmBC,QAAnB,EAA8C;AAAA;AAAA;AAC7C,SAAKA,QAAL,GAAgBA,QAAhB;AACA;;;;WAED,8BAA4B;AAC3B,aAAO,KAAKA,QAAL,CAAcC,GAAd,CAAkB,iBAAlB,CAAP;AACA;;;WAED,4BAA0BC,OAA1B,EAEG;AACF,WAAKF,QAAL,CAAcG,GAAd,CAAkB,iBAAlB,EAAqCD,OAArC;AACA;;;WAED,0BAAwBE,KAAxB,EAAoD;AACnD,WAAKJ,QAAL,CAAcG,GAAd,CAAkB,0BAAlB,EAA8CC,KAA9C;AACA;;;WAED,8BAA4B;AAC3B,WAAKJ,QAAL,CAAcK,KAAd,CAAoB,0BAApB;AACA;;;WAED,4BAA0B;AACzB,aAAO,KAAKL,QAAL,CAAcC,GAAd,CAAkB,0BAAlB,CAAP;AACA","sourcesContent":["import { SettingsService } from '@sprucelabs/spruce-skill-utils'\n\nexport default class EventSettingsService {\n\tprivate settings: SettingsService<string>\n\tpublic constructor(settings: SettingsService) {\n\t\tthis.settings = settings\n\t}\n\n\tpublic getLastSyncOptions() {\n\t\treturn this.settings.get('events.lastSync')\n\t}\n\n\tpublic setLastSyncOptions(options: {\n\t\tshouldSyncOnlyCoreEvents?: boolean | null\n\t}) {\n\t\tthis.settings.set('events.lastSync', options)\n\t}\n\n\tpublic setListenerCache(value: Record<string, any>) {\n\t\tthis.settings.set('events.listenerCacheKeys', value)\n\t}\n\n\tpublic clearListenerCache() {\n\t\tthis.settings.unset('events.listenerCacheKeys')\n\t}\n\n\tpublic getListenerCache() {\n\t\treturn this.settings.get('events.listenerCacheKeys')\n\t}\n}\n"],"file":"EventSettingsService.js"}
|
package/package.json
CHANGED
|
@@ -5,10 +5,19 @@
|
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
7
|
"skill": {
|
|
8
|
-
"namespace": "spruce-cli"
|
|
8
|
+
"namespace": "spruce-cli",
|
|
9
|
+
"upgradeIgnoreList": [
|
|
10
|
+
"emphasize",
|
|
11
|
+
"gifwrap",
|
|
12
|
+
"globby",
|
|
13
|
+
"terminal-kit",
|
|
14
|
+
"terminal-image",
|
|
15
|
+
"commander",
|
|
16
|
+
"ora"
|
|
17
|
+
]
|
|
9
18
|
},
|
|
10
19
|
"license": "MIT",
|
|
11
|
-
"version": "14.21.
|
|
20
|
+
"version": "14.21.6",
|
|
12
21
|
"bin": {
|
|
13
22
|
"spruce": "./build/index.js"
|
|
14
23
|
},
|
|
@@ -62,33 +71,35 @@
|
|
|
62
71
|
"watch.tsc": "tsc -w --sourceMap"
|
|
63
72
|
},
|
|
64
73
|
"dependencies": {
|
|
65
|
-
"@babel/
|
|
66
|
-
"@
|
|
67
|
-
"@
|
|
68
|
-
"@
|
|
69
|
-
"@sprucelabs/
|
|
70
|
-
"@sprucelabs/
|
|
71
|
-
"@sprucelabs/
|
|
72
|
-
"@sprucelabs/mercury-
|
|
73
|
-
"@sprucelabs/
|
|
74
|
-
"@sprucelabs/
|
|
75
|
-
"@sprucelabs/
|
|
76
|
-
"@sprucelabs/spruce-
|
|
77
|
-
"@sprucelabs/spruce-
|
|
78
|
-
"@sprucelabs/spruce-
|
|
79
|
-
"@sprucelabs/spruce-
|
|
80
|
-
"
|
|
74
|
+
"@babel/cli": "^7.15.7",
|
|
75
|
+
"@babel/plugin-proposal-decorators": "^7.15.4",
|
|
76
|
+
"@babel/runtime": "^7.15.4",
|
|
77
|
+
"@jest/reporters": "^27.2.4",
|
|
78
|
+
"@sprucelabs/error": "^5.0.142",
|
|
79
|
+
"@sprucelabs/heartwood-view-controllers": "^33.0.412",
|
|
80
|
+
"@sprucelabs/jest-json-reporter": "^6.0.122",
|
|
81
|
+
"@sprucelabs/mercury-client": "^16.10.143",
|
|
82
|
+
"@sprucelabs/mercury-event-emitter": "^16.10.143",
|
|
83
|
+
"@sprucelabs/mercury-types": "^26.1.247",
|
|
84
|
+
"@sprucelabs/schema": "^25.3.189",
|
|
85
|
+
"@sprucelabs/spruce-core-schemas": "^22.5.256",
|
|
86
|
+
"@sprucelabs/spruce-event-plugin": "^5.4.117",
|
|
87
|
+
"@sprucelabs/spruce-event-utils": "^16.0.282",
|
|
88
|
+
"@sprucelabs/spruce-skill-booter": "^5.4.117",
|
|
89
|
+
"@sprucelabs/spruce-skill-utils": "^20.6.124",
|
|
90
|
+
"@sprucelabs/spruce-templates": "^14.21.6",
|
|
91
|
+
"cfonts": "^2.10.0",
|
|
81
92
|
"chalk": "^4.1.2",
|
|
82
93
|
"chokidar": "^3.5.2",
|
|
83
94
|
"cli-table3": "^0.6.0",
|
|
84
95
|
"commander": "^7.2.0",
|
|
85
|
-
"core-js": "^3.
|
|
96
|
+
"core-js": "^3.18.1",
|
|
86
97
|
"emphasize": "^4.2.0",
|
|
87
98
|
"fs-extra": "^10.0.0",
|
|
88
99
|
"gifwrap": "SimenB/gifwrap#patch-1",
|
|
89
100
|
"globby": "^11.0.4",
|
|
90
101
|
"inflection": "^1.13.1",
|
|
91
|
-
"inquirer": "^8.1.
|
|
102
|
+
"inquirer": "^8.1.5",
|
|
92
103
|
"inquirer-file-tree-selection-prompt": "^1.0.12",
|
|
93
104
|
"js-tetris-cli": "^0.0.3",
|
|
94
105
|
"jsonwebtoken": "^8.5.1",
|
|
@@ -102,56 +113,57 @@
|
|
|
102
113
|
"terminal-kit": "sprucelabsai/terminal-kit",
|
|
103
114
|
"tree-kill": "^1.2.2",
|
|
104
115
|
"tsutils": "^3.21.0",
|
|
105
|
-
"typescript": "^4.4.2",
|
|
106
116
|
"uuid": "^8.3.2"
|
|
107
117
|
},
|
|
108
118
|
"devDependencies": {
|
|
109
|
-
"@sprucelabs/data-stores": "
|
|
110
|
-
"@sprucelabs/jest-sheets-reporter": "
|
|
111
|
-
"@sprucelabs/mercury-core-events": "
|
|
112
|
-
"@sprucelabs/resolve-path-aliases": "
|
|
113
|
-
"@sprucelabs/spruce-conversation-plugin": "
|
|
114
|
-
"@sprucelabs/spruce-deploy-plugin": "
|
|
115
|
-
"@sprucelabs/spruce-store-plugin": "
|
|
116
|
-
"@sprucelabs/spruce-test-fixtures": "
|
|
117
|
-
"@sprucelabs/test": "
|
|
118
|
-
"@sprucelabs/test-utils": "
|
|
119
|
+
"@sprucelabs/data-stores": "^6.1.164",
|
|
120
|
+
"@sprucelabs/jest-sheets-reporter": "^1.2.141",
|
|
121
|
+
"@sprucelabs/mercury-core-events": "^1.2.289",
|
|
122
|
+
"@sprucelabs/resolve-path-aliases": "^1.0.146",
|
|
123
|
+
"@sprucelabs/spruce-conversation-plugin": "^5.4.117",
|
|
124
|
+
"@sprucelabs/spruce-deploy-plugin": "^5.4.117",
|
|
125
|
+
"@sprucelabs/spruce-store-plugin": "^5.4.117",
|
|
126
|
+
"@sprucelabs/spruce-test-fixtures": "^5.4.117",
|
|
127
|
+
"@sprucelabs/test": "^7.7.124",
|
|
128
|
+
"@sprucelabs/test-utils": "^3.0.108",
|
|
119
129
|
"@types/blessed": "^0.1.19",
|
|
120
130
|
"@types/eslint": "^7.28.0",
|
|
121
|
-
"@types/fs-extra": "^9.0.
|
|
122
|
-
"@types/inflection": "^1.
|
|
123
|
-
"@types/inquirer": "^
|
|
124
|
-
"@types/jsonwebtoken": "^8.5.
|
|
125
|
-
"@types/lodash": "^4.14.
|
|
131
|
+
"@types/fs-extra": "^9.0.13",
|
|
132
|
+
"@types/inflection": "^1.13.0",
|
|
133
|
+
"@types/inquirer": "^8.1.3",
|
|
134
|
+
"@types/jsonwebtoken": "^8.5.5",
|
|
135
|
+
"@types/lodash": "^4.14.175",
|
|
126
136
|
"@types/md5": "^2.3.1",
|
|
127
137
|
"@types/mkdirp": "^1.0.2",
|
|
128
|
-
"@types/node": "^16.
|
|
138
|
+
"@types/node": "^16.10.2",
|
|
129
139
|
"@types/promise.allsettled": "^1.0.3",
|
|
130
140
|
"@types/ps-node": "^0.1.1",
|
|
131
|
-
"@types/rimraf": "^3.0.
|
|
141
|
+
"@types/rimraf": "^3.0.2",
|
|
132
142
|
"@types/semver": "^7.3.8",
|
|
133
143
|
"@types/sha1": "^1.1.3",
|
|
134
144
|
"@types/slug": "^5.0.2",
|
|
135
|
-
"@types/superagent": "^4.1.
|
|
145
|
+
"@types/superagent": "^4.1.13",
|
|
136
146
|
"@types/terminal-kit": "^1.28.4",
|
|
137
147
|
"@types/uuid": "^8.3.1",
|
|
138
148
|
"chokidar-cli": "^3.0.0",
|
|
139
|
-
"concurrently": "^6.2.
|
|
149
|
+
"concurrently": "^6.2.2",
|
|
140
150
|
"conventional-changelog-sprucelabs": "^1.1.2",
|
|
141
151
|
"dotenv": "^10.0.0",
|
|
142
152
|
"eslint": "^7.32.0",
|
|
143
|
-
"eslint-config-spruce": "^10.10.
|
|
144
|
-
"find-process": "^1.4.
|
|
145
|
-
"jest": "^27.
|
|
146
|
-
"jest-circus": "^27.
|
|
147
|
-
"jest-junit": "^12.
|
|
153
|
+
"eslint-config-spruce": "^10.10.13",
|
|
154
|
+
"find-process": "^1.4.5",
|
|
155
|
+
"jest": "^27.2.4",
|
|
156
|
+
"jest-circus": "^27.2.4",
|
|
157
|
+
"jest-junit": "^12.3.0",
|
|
148
158
|
"jest-reporters": "^0.0.2",
|
|
149
|
-
"prettier": "^2.
|
|
159
|
+
"prettier": "^2.4.1",
|
|
150
160
|
"ps-node": "^0.1.6",
|
|
151
161
|
"rimraf": "^3.0.2",
|
|
152
|
-
"ts-jest": "^27.0.
|
|
153
|
-
"ts-node": "^10.2.
|
|
154
|
-
"
|
|
162
|
+
"ts-jest": "^27.0.5",
|
|
163
|
+
"ts-node": "^10.2.1",
|
|
164
|
+
"tsc-watch": "^4.5.0",
|
|
165
|
+
"tsconfig-paths": "^3.11.0",
|
|
166
|
+
"typescript": "^4.4.3"
|
|
155
167
|
},
|
|
156
168
|
"testSkillCache": {
|
|
157
169
|
"everything": [
|
|
@@ -569,35 +581,14 @@
|
|
|
569
581
|
},
|
|
570
582
|
"yarn-upgrade-all": {
|
|
571
583
|
"ignore": [
|
|
572
|
-
"socket.io",
|
|
573
|
-
"socket.io-client",
|
|
574
|
-
"@sprucelabs/resolve-path-aliases",
|
|
575
|
-
"@sprucelabs/error",
|
|
576
|
-
"@sprucelabs/jest-sheets-reporter",
|
|
577
|
-
"@sprucelabs/mercury",
|
|
578
|
-
"@sprucelabs/mercury-client",
|
|
579
|
-
"@sprucelabs/mercury-event-emitter",
|
|
580
|
-
"@sprucelabs/mercury-types",
|
|
581
|
-
"@sprucelabs/schema",
|
|
582
|
-
"@sprucelabs/semantic-release",
|
|
583
|
-
"@sprucelabs/spruce-core-schemas",
|
|
584
|
-
"@sprucelabs/spruce-skill-utils",
|
|
585
|
-
"@sprucelabs/spruce-event-utils",
|
|
586
|
-
"@sprucelabs/test",
|
|
587
|
-
"@sprucelabs/test-utils",
|
|
588
|
-
"@sprucelabs/spruce-conversation-plugin",
|
|
589
|
-
"@sprucelabs/spruce-deploy-plugin",
|
|
590
|
-
"@sprucelabs/jest-json-reporter",
|
|
591
|
-
"@sprucelabs/data-stores",
|
|
592
|
-
"@sprucelabs/spruce-store-plugin",
|
|
593
584
|
"emphasize",
|
|
594
585
|
"gifwrap",
|
|
595
586
|
"globby",
|
|
596
587
|
"terminal-kit",
|
|
597
588
|
"terminal-image",
|
|
598
589
|
"commander",
|
|
599
|
-
"
|
|
590
|
+
"ora"
|
|
600
591
|
]
|
|
601
592
|
},
|
|
602
|
-
"gitHead": "
|
|
593
|
+
"gitHead": "7830f62c3a185916c42cca8ef130a4114efc6373"
|
|
603
594
|
}
|
|
@@ -1,15 +1,38 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"skipped": [
|
|
3
3
|
"skill",
|
|
4
|
+
"event"
|
|
5
|
+
],
|
|
6
|
+
"installed": [
|
|
4
7
|
"schema",
|
|
5
8
|
"error",
|
|
6
|
-
"test"
|
|
7
|
-
"event"
|
|
9
|
+
"test"
|
|
8
10
|
],
|
|
9
11
|
"events.lastSync": {
|
|
10
12
|
"contractDestinationDir": "#spruce/events",
|
|
11
13
|
"schemaTypesLookupDir": "#spruce/schemas",
|
|
12
14
|
"skillEventContractTypesFile": "@sprucelabs/mercury-types/build/types/mercury.types",
|
|
13
15
|
"eventBuilderFile": "@sprucelabs/mercury-types"
|
|
16
|
+
},
|
|
17
|
+
"writer": {
|
|
18
|
+
"skipped": [
|
|
19
|
+
"src/index.ts",
|
|
20
|
+
"tsconfig.json"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"scriptUpdater": {
|
|
24
|
+
"skipped": [
|
|
25
|
+
"build.ci",
|
|
26
|
+
"build.dev",
|
|
27
|
+
"clean.all",
|
|
28
|
+
"lint.tsc",
|
|
29
|
+
"rebuild",
|
|
30
|
+
"update.dependencies",
|
|
31
|
+
"test",
|
|
32
|
+
"watch.build.dev",
|
|
33
|
+
"watch.lint",
|
|
34
|
+
"watch.rebuild",
|
|
35
|
+
"watch.tsc"
|
|
36
|
+
]
|
|
14
37
|
}
|
|
15
38
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { test, assert } from '@sprucelabs/test'
|
|
2
|
+
import AbstractCliTest from '../../../tests/AbstractCliTest'
|
|
3
|
+
|
|
4
|
+
export default class UpgradingASkill4Test extends AbstractCliTest {
|
|
5
|
+
@test()
|
|
6
|
+
protected static async upgradeResetsEventCache() {
|
|
7
|
+
await this.installSetListenerCacheAndBlockExecute()
|
|
8
|
+
|
|
9
|
+
await assert.doesThrowAsync(() =>
|
|
10
|
+
this.Action('node', 'upgrade').execute({})
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
const value = this.Settings().getListenerCache()
|
|
14
|
+
assert.isFalsy(value)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@test()
|
|
18
|
+
protected static async doesNotResetEventCacheWithOtherAction() {
|
|
19
|
+
await this.installSetListenerCacheAndBlockExecute()
|
|
20
|
+
|
|
21
|
+
await assert.doesThrowAsync(() => this.Action('schema', 'sync').execute({}))
|
|
22
|
+
|
|
23
|
+
const value = this.Settings().getListenerCache()
|
|
24
|
+
assert.isEqualDeep(value, { shouldBeDeleted: true })
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
private static async installSetListenerCacheAndBlockExecute() {
|
|
28
|
+
await this.FeatureFixture().installCachedFeatures('events')
|
|
29
|
+
|
|
30
|
+
const settings = this.Settings()
|
|
31
|
+
settings.setListenerCache({ shouldBeDeleted: true })
|
|
32
|
+
|
|
33
|
+
const emitter = this.getEmitter()
|
|
34
|
+
void emitter.on('feature.will-execute', () => {
|
|
35
|
+
throw new Error('Stop!')
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private static Settings() {
|
|
40
|
+
return this.Service('eventSettings')
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -22,7 +22,13 @@ export default class SpruceError extends AbstractSpruceError<ErrorOptions> {
|
|
|
22
22
|
break
|
|
23
23
|
|
|
24
24
|
case 'GENERIC':
|
|
25
|
-
message = 'Oh shoot! 🤔'
|
|
25
|
+
message = options.friendlyMessage ?? 'Oh shoot! 🤔'
|
|
26
|
+
|
|
27
|
+
if (options.originalError) {
|
|
28
|
+
message += `\n\n${
|
|
29
|
+
options.originalError.stack ?? options.originalError.name
|
|
30
|
+
}`
|
|
31
|
+
}
|
|
26
32
|
break
|
|
27
33
|
case 'NOT_IMPLEMENTED':
|
|
28
34
|
message = ''
|
|
@@ -54,9 +60,11 @@ export default class SpruceError extends AbstractSpruceError<ErrorOptions> {
|
|
|
54
60
|
break
|
|
55
61
|
|
|
56
62
|
case 'FAILED_TO_IMPORT':
|
|
57
|
-
message =
|
|
58
|
-
options.
|
|
59
|
-
|
|
63
|
+
message =
|
|
64
|
+
options.friendlyMessage ??
|
|
65
|
+
`Failed to import "${options.file}". Original error:\n\n${
|
|
66
|
+
options.originalError?.message ?? '**MISSING**'
|
|
67
|
+
}`
|
|
60
68
|
break
|
|
61
69
|
|
|
62
70
|
case 'LINT_FAILED':
|
|
@@ -93,7 +101,7 @@ export default class SpruceError extends AbstractSpruceError<ErrorOptions> {
|
|
|
93
101
|
break
|
|
94
102
|
|
|
95
103
|
case 'FILE_EXISTS':
|
|
96
|
-
message = 'A
|
|
104
|
+
message = 'A fail already exists.'
|
|
97
105
|
break
|
|
98
106
|
|
|
99
107
|
case 'VSCODE_NOT_INSTALLED':
|
|
@@ -241,8 +249,7 @@ export default class SpruceError extends AbstractSpruceError<ErrorOptions> {
|
|
|
241
249
|
message = super.friendlyMessage()
|
|
242
250
|
}
|
|
243
251
|
|
|
244
|
-
|
|
245
|
-
return fullMessage
|
|
252
|
+
return message
|
|
246
253
|
}
|
|
247
254
|
|
|
248
255
|
private cleanStdErr(stderr: string) {
|
|
@@ -59,17 +59,21 @@ export default class ActionFactory {
|
|
|
59
59
|
)
|
|
60
60
|
|
|
61
61
|
let Class: new (options: ActionOptions) => AbstractAction | undefined
|
|
62
|
+
let originalError: Error | undefined
|
|
62
63
|
|
|
63
64
|
try {
|
|
64
65
|
Class = require(classPath).default
|
|
65
66
|
// eslint-disable-next-line no-empty
|
|
66
|
-
} catch {
|
|
67
|
+
} catch (err: any) {
|
|
68
|
+
originalError = err
|
|
69
|
+
}
|
|
67
70
|
|
|
68
71
|
//@ts-ignore
|
|
69
72
|
if (!Class) {
|
|
70
73
|
throw new SpruceError({
|
|
71
74
|
code: 'GENERIC',
|
|
72
75
|
friendlyMessage: `I could not find any action named '${actionCode}' for the ${feature.code} feature. Make sure it's the default export and extends AbstractAction.`,
|
|
76
|
+
originalError,
|
|
73
77
|
})
|
|
74
78
|
}
|
|
75
79
|
|
|
@@ -96,37 +96,46 @@ export default class EventFeature extends AbstractFeature {
|
|
|
96
96
|
|
|
97
97
|
const isInstalled = await this.featureInstaller.isInstalled('event')
|
|
98
98
|
|
|
99
|
+
if (featureCode === 'node' || featureCode === 'upgrade') {
|
|
100
|
+
const settings = this.Service('eventSettings')
|
|
101
|
+
settings.clearListenerCache()
|
|
102
|
+
}
|
|
103
|
+
|
|
99
104
|
if (
|
|
100
105
|
isInstalled &&
|
|
101
106
|
(featureCode === 'event' || featureCode === 'eventContract') &&
|
|
102
107
|
actionCode !== 'setRemote'
|
|
103
108
|
) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
109
|
+
return this.appendRemoteToResultsOrPrompt()
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return {}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {
|
|
116
|
+
const remote = this.Service('remote')
|
|
117
|
+
const r = remote.getRemote()
|
|
118
|
+
|
|
119
|
+
if (!r) {
|
|
120
|
+
if (!TerminalInterface.doesSupportColor()) {
|
|
121
|
+
throw new Error(
|
|
122
|
+
`Dang! I couldn't find env.HOST. Once that is set, lets try again!`
|
|
117
123
|
)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
this.ui.stopLoading()
|
|
127
|
+
this.ui.renderLine(
|
|
128
|
+
`Uh oh! It looks like you haven't configured your remote! We gotta do that.`
|
|
129
|
+
)
|
|
118
130
|
|
|
119
|
-
|
|
131
|
+
const results = await this.Action('event', 'setRemote').execute({})
|
|
120
132
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
133
|
+
return results
|
|
134
|
+
} else {
|
|
135
|
+
return {
|
|
136
|
+
summaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],
|
|
126
137
|
}
|
|
127
138
|
}
|
|
128
|
-
|
|
129
|
-
return {}
|
|
130
139
|
}
|
|
131
140
|
|
|
132
141
|
private async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {
|
|
@@ -15,4 +15,16 @@ export default class EventSettingsService {
|
|
|
15
15
|
}) {
|
|
16
16
|
this.settings.set('events.lastSync', options)
|
|
17
17
|
}
|
|
18
|
+
|
|
19
|
+
public setListenerCache(value: Record<string, any>) {
|
|
20
|
+
this.settings.set('events.listenerCacheKeys', value)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public clearListenerCache() {
|
|
24
|
+
this.settings.unset('events.listenerCacheKeys')
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public getListenerCache() {
|
|
28
|
+
return this.settings.get('events.listenerCacheKeys')
|
|
29
|
+
}
|
|
18
30
|
}
|
package/tsconfig.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"noUnusedLocals": true,
|
|
18
18
|
"resolveJsonModule": true,
|
|
19
19
|
"moduleResolution": "node",
|
|
20
|
-
"sourceMap":
|
|
20
|
+
"sourceMap": false,
|
|
21
21
|
"outDir": "build",
|
|
22
22
|
"baseUrl": "src",
|
|
23
23
|
"experimentalDecorators": true,
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"include": [
|
|
33
|
-
"
|
|
34
|
-
"
|
|
33
|
+
"./src/*.ts",
|
|
34
|
+
"./src/**/*.ts",
|
|
35
35
|
"./src/.spruce/**/*"
|
|
36
36
|
],
|
|
37
37
|
"exclude": [
|