@sprucelabs/spruce-cli 14.29.31 → 14.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.d.ts +10 -0
- package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.js +298 -0
- package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -0
- package/build/features/sandbox/SandboxFeature.js +1 -1
- package/build/features/sandbox/SandboxFeature.js.map +1 -1
- package/build/features/sandbox/actions/SetupAction.js +24 -12
- package/build/features/sandbox/actions/SetupAction.js.map +1 -1
- package/build/features/view/actions/CreateAction.js +1 -1
- package/build/features/view/actions/CreateAction.js.map +1 -1
- package/package.json +19 -19
- package/src/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.ts +74 -0
- package/src/features/sandbox/SandboxFeature.ts +1 -1
- package/src/features/sandbox/actions/SetupAction.ts +6 -0
- package/src/features/view/actions/CreateAction.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
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.30.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.29.31...v14.30.0) (2022-01-14)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* calendar can now be selected when creating a view ([b47a375](https://github.com/sprucelabsai/spruce-cli-workspace/commit/b47a375))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [14.29.31](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.29.30...v14.29.31) (2022-01-13)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import AbstractCliTest from '../../tests/AbstractCliTest';
|
|
2
|
+
export default class UpgradingWithSandboxFeatureInstalledTest extends AbstractCliTest {
|
|
3
|
+
protected static beforeEach(): Promise<void>;
|
|
4
|
+
protected static doesNotAskForVersionWhenSettingUpSandboxWithCoreListener(): Promise<void>;
|
|
5
|
+
protected static usesTodaysVersionEvenWithCoreListene(): Promise<void>;
|
|
6
|
+
protected static overwritesExistingWillBoot(): Promise<void>;
|
|
7
|
+
private static setupAndGetListenerPath;
|
|
8
|
+
private static setup;
|
|
9
|
+
private static listenToDidInstallInthePast;
|
|
10
|
+
}
|
|
@@ -0,0 +1,298 @@
|
|
|
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 _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
19
|
+
|
|
20
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
+
|
|
22
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
+
|
|
24
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
+
|
|
26
|
+
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
|
|
27
|
+
|
|
28
|
+
var _path = _interopRequireDefault(require("path"));
|
|
29
|
+
|
|
30
|
+
var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
31
|
+
|
|
32
|
+
var _test = require("@sprucelabs/test");
|
|
33
|
+
|
|
34
|
+
var _AbstractCliTest2 = _interopRequireDefault(require("../../tests/AbstractCliTest"));
|
|
35
|
+
|
|
36
|
+
var _test2 = _interopRequireDefault(require("../../tests/utilities/test.utility"));
|
|
37
|
+
|
|
38
|
+
var _dec, _dec2, _dec3, _class;
|
|
39
|
+
|
|
40
|
+
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); }; }
|
|
41
|
+
|
|
42
|
+
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; } }
|
|
43
|
+
|
|
44
|
+
var UpgradingWithSandboxFeatureInstalledTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
|
|
45
|
+
(0, _inherits2["default"])(UpgradingWithSandboxFeatureInstalledTest, _AbstractCliTest);
|
|
46
|
+
|
|
47
|
+
var _super = _createSuper(UpgradingWithSandboxFeatureInstalledTest);
|
|
48
|
+
|
|
49
|
+
function UpgradingWithSandboxFeatureInstalledTest() {
|
|
50
|
+
(0, _classCallCheck2["default"])(this, UpgradingWithSandboxFeatureInstalledTest);
|
|
51
|
+
return _super.apply(this, arguments);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
(0, _createClass2["default"])(UpgradingWithSandboxFeatureInstalledTest, null, [{
|
|
55
|
+
key: "beforeEach",
|
|
56
|
+
value: function () {
|
|
57
|
+
var _beforeEach = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
58
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
59
|
+
while (1) {
|
|
60
|
+
switch (_context.prev = _context.next) {
|
|
61
|
+
case 0:
|
|
62
|
+
_context.next = 2;
|
|
63
|
+
return (0, _get2["default"])((0, _getPrototypeOf2["default"])(UpgradingWithSandboxFeatureInstalledTest), "beforeEach", this).call(this);
|
|
64
|
+
|
|
65
|
+
case 2:
|
|
66
|
+
_context.next = 4;
|
|
67
|
+
return this.FeatureFixture().installCachedFeatures('sandbox');
|
|
68
|
+
|
|
69
|
+
case 4:
|
|
70
|
+
_context.next = 6;
|
|
71
|
+
return this.listenToDidInstallInthePast();
|
|
72
|
+
|
|
73
|
+
case 6:
|
|
74
|
+
case "end":
|
|
75
|
+
return _context.stop();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}, _callee, this);
|
|
79
|
+
}));
|
|
80
|
+
|
|
81
|
+
function beforeEach() {
|
|
82
|
+
return _beforeEach.apply(this, arguments);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return beforeEach;
|
|
86
|
+
}()
|
|
87
|
+
}, {
|
|
88
|
+
key: "doesNotAskForVersionWhenSettingUpSandboxWithCoreListener",
|
|
89
|
+
value: function () {
|
|
90
|
+
var _doesNotAskForVersionWhenSettingUpSandboxWithCoreListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
91
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
92
|
+
while (1) {
|
|
93
|
+
switch (_context2.prev = _context2.next) {
|
|
94
|
+
case 0:
|
|
95
|
+
_context2.next = 2;
|
|
96
|
+
return this.setup();
|
|
97
|
+
|
|
98
|
+
case 2:
|
|
99
|
+
case "end":
|
|
100
|
+
return _context2.stop();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}, _callee2, this);
|
|
104
|
+
}));
|
|
105
|
+
|
|
106
|
+
function doesNotAskForVersionWhenSettingUpSandboxWithCoreListener() {
|
|
107
|
+
return _doesNotAskForVersionWhenSettingUpSandboxWithCoreListener.apply(this, arguments);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return doesNotAskForVersionWhenSettingUpSandboxWithCoreListener;
|
|
111
|
+
}()
|
|
112
|
+
}, {
|
|
113
|
+
key: "usesTodaysVersionEvenWithCoreListene",
|
|
114
|
+
value: function () {
|
|
115
|
+
var _usesTodaysVersionEvenWithCoreListene = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
116
|
+
var match, fileName, expected;
|
|
117
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
118
|
+
while (1) {
|
|
119
|
+
switch (_context3.prev = _context3.next) {
|
|
120
|
+
case 0:
|
|
121
|
+
_context3.next = 2;
|
|
122
|
+
return this.setupAndGetListenerPath();
|
|
123
|
+
|
|
124
|
+
case 2:
|
|
125
|
+
match = _context3.sent;
|
|
126
|
+
fileName = _path["default"].basename(match);
|
|
127
|
+
expected = "will-boot.".concat(_spruceSkillUtils.versionUtil.generateVersion().dirValue, ".listener.ts");
|
|
128
|
+
|
|
129
|
+
_test.assert.isEqual(fileName, expected);
|
|
130
|
+
|
|
131
|
+
case 6:
|
|
132
|
+
case "end":
|
|
133
|
+
return _context3.stop();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}, _callee3, this);
|
|
137
|
+
}));
|
|
138
|
+
|
|
139
|
+
function usesTodaysVersionEvenWithCoreListene() {
|
|
140
|
+
return _usesTodaysVersionEvenWithCoreListene.apply(this, arguments);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return usesTodaysVersionEvenWithCoreListene;
|
|
144
|
+
}()
|
|
145
|
+
}, {
|
|
146
|
+
key: "overwritesExistingWillBoot",
|
|
147
|
+
value: function () {
|
|
148
|
+
var _overwritesExistingWillBoot = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
149
|
+
var expected, match, syncResults, secondMatch, name;
|
|
150
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
151
|
+
while (1) {
|
|
152
|
+
switch (_context4.prev = _context4.next) {
|
|
153
|
+
case 0:
|
|
154
|
+
expected = "will-boot.v2010_01_10.listener.ts";
|
|
155
|
+
_context4.next = 3;
|
|
156
|
+
return this.setupAndGetListenerPath();
|
|
157
|
+
|
|
158
|
+
case 3:
|
|
159
|
+
match = _context4.sent;
|
|
160
|
+
|
|
161
|
+
_spruceSkillUtils.diskUtil.deleteFile(match);
|
|
162
|
+
|
|
163
|
+
_spruceSkillUtils.diskUtil.writeFile(this.resolvePath(_path["default"].dirname(match), expected), 'export default async () => {}');
|
|
164
|
+
|
|
165
|
+
_context4.next = 8;
|
|
166
|
+
return this.Action('event', 'syncListeners').execute({});
|
|
167
|
+
|
|
168
|
+
case 8:
|
|
169
|
+
syncResults = _context4.sent;
|
|
170
|
+
|
|
171
|
+
_test.assert.isFalsy(syncResults.errors);
|
|
172
|
+
|
|
173
|
+
_context4.next = 12;
|
|
174
|
+
return this.setupAndGetListenerPath();
|
|
175
|
+
|
|
176
|
+
case 12:
|
|
177
|
+
secondMatch = _context4.sent;
|
|
178
|
+
name = _path["default"].basename(secondMatch);
|
|
179
|
+
|
|
180
|
+
_test.assert.isEqual(name, expected);
|
|
181
|
+
|
|
182
|
+
case 15:
|
|
183
|
+
case "end":
|
|
184
|
+
return _context4.stop();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}, _callee4, this);
|
|
188
|
+
}));
|
|
189
|
+
|
|
190
|
+
function overwritesExistingWillBoot() {
|
|
191
|
+
return _overwritesExistingWillBoot.apply(this, arguments);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return overwritesExistingWillBoot;
|
|
195
|
+
}()
|
|
196
|
+
}, {
|
|
197
|
+
key: "setupAndGetListenerPath",
|
|
198
|
+
value: function () {
|
|
199
|
+
var _setupAndGetListenerPath = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
200
|
+
var results, match;
|
|
201
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
202
|
+
while (1) {
|
|
203
|
+
switch (_context5.prev = _context5.next) {
|
|
204
|
+
case 0:
|
|
205
|
+
_context5.next = 2;
|
|
206
|
+
return this.setup();
|
|
207
|
+
|
|
208
|
+
case 2:
|
|
209
|
+
results = _context5.sent;
|
|
210
|
+
match = _test2["default"].assertFileByNameInGeneratedFiles(/will-boot/gi, results.files);
|
|
211
|
+
return _context5.abrupt("return", match);
|
|
212
|
+
|
|
213
|
+
case 5:
|
|
214
|
+
case "end":
|
|
215
|
+
return _context5.stop();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}, _callee5, this);
|
|
219
|
+
}));
|
|
220
|
+
|
|
221
|
+
function setupAndGetListenerPath() {
|
|
222
|
+
return _setupAndGetListenerPath.apply(this, arguments);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return setupAndGetListenerPath;
|
|
226
|
+
}()
|
|
227
|
+
}, {
|
|
228
|
+
key: "setup",
|
|
229
|
+
value: function () {
|
|
230
|
+
var _setup = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
231
|
+
var results;
|
|
232
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
233
|
+
while (1) {
|
|
234
|
+
switch (_context6.prev = _context6.next) {
|
|
235
|
+
case 0:
|
|
236
|
+
_context6.next = 2;
|
|
237
|
+
return this.Action('sandbox', 'setup').execute({});
|
|
238
|
+
|
|
239
|
+
case 2:
|
|
240
|
+
results = _context6.sent;
|
|
241
|
+
|
|
242
|
+
_test.assert.isFalsy(results.errors);
|
|
243
|
+
|
|
244
|
+
return _context6.abrupt("return", results);
|
|
245
|
+
|
|
246
|
+
case 5:
|
|
247
|
+
case "end":
|
|
248
|
+
return _context6.stop();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}, _callee6, this);
|
|
252
|
+
}));
|
|
253
|
+
|
|
254
|
+
function setup() {
|
|
255
|
+
return _setup.apply(this, arguments);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return setup;
|
|
259
|
+
}()
|
|
260
|
+
}, {
|
|
261
|
+
key: "listenToDidInstallInthePast",
|
|
262
|
+
value: function () {
|
|
263
|
+
var _listenToDidInstallInthePast = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
|
264
|
+
var results;
|
|
265
|
+
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
|
266
|
+
while (1) {
|
|
267
|
+
switch (_context7.prev = _context7.next) {
|
|
268
|
+
case 0:
|
|
269
|
+
_context7.next = 2;
|
|
270
|
+
return this.Action('event', 'listen').execute({
|
|
271
|
+
namespace: 'mercury',
|
|
272
|
+
eventName: 'did-install::v2020_12_25'
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
case 2:
|
|
276
|
+
results = _context7.sent;
|
|
277
|
+
|
|
278
|
+
_test.assert.isFalsy(results.errors);
|
|
279
|
+
|
|
280
|
+
case 4:
|
|
281
|
+
case "end":
|
|
282
|
+
return _context7.stop();
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}, _callee7, this);
|
|
286
|
+
}));
|
|
287
|
+
|
|
288
|
+
function listenToDidInstallInthePast() {
|
|
289
|
+
return _listenToDidInstallInthePast.apply(this, arguments);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
return listenToDidInstallInthePast;
|
|
293
|
+
}()
|
|
294
|
+
}]);
|
|
295
|
+
return UpgradingWithSandboxFeatureInstalledTest;
|
|
296
|
+
}(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "doesNotAskForVersionWhenSettingUpSandboxWithCoreListener", [_dec], Object.getOwnPropertyDescriptor(_class, "doesNotAskForVersionWhenSettingUpSandboxWithCoreListener"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "usesTodaysVersionEvenWithCoreListene", [_dec2], Object.getOwnPropertyDescriptor(_class, "usesTodaysVersionEvenWithCoreListene"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "overwritesExistingWillBoot", [_dec3], Object.getOwnPropertyDescriptor(_class, "overwritesExistingWillBoot"), _class)), _class));
|
|
297
|
+
exports["default"] = UpgradingWithSandboxFeatureInstalledTest;
|
|
298
|
+
//# sourceMappingURL=UpgradingWithSandboxFeatureInstalled.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.ts"],"names":["UpgradingWithSandboxFeatureInstalledTest","FeatureFixture","installCachedFeatures","listenToDidInstallInthePast","setup","setupAndGetListenerPath","match","fileName","pathUtil","basename","expected","versionUtil","generateVersion","dirValue","assert","isEqual","diskUtil","deleteFile","writeFile","resolvePath","dirname","Action","execute","syncResults","isFalsy","errors","secondMatch","name","results","testUtil","assertFileByNameInGeneratedFiles","files","namespace","eventName","AbstractCliTest"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class UpgradingWithSandboxFeatureInstalledTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tawait this.FeatureFixture().installCachedFeatures('sandbox')\n\t\tawait this.listenToDidInstallInthePast()\n\t}\n\n\t@test()\n\tprotected static async doesNotAskForVersionWhenSettingUpSandboxWithCoreListener() {\n\t\tawait this.setup()\n\t}\n\n\t@test()\n\tprotected static async usesTodaysVersionEvenWithCoreListene() {\n\t\tconst match = await this.setupAndGetListenerPath()\n\n\t\tconst fileName = pathUtil.basename(match)\n\t\tconst expected = `will-boot.${\n\t\t\tversionUtil.generateVersion().dirValue\n\t\t}.listener.ts`\n\t\tassert.isEqual(fileName, expected)\n\t}\n\n\t@test()\n\tprotected static async overwritesExistingWillBoot() {\n\t\tconst expected = `will-boot.v2010_01_10.listener.ts`\n\n\t\tconst match = await this.setupAndGetListenerPath()\n\n\t\tdiskUtil.deleteFile(match)\n\t\tdiskUtil.writeFile(\n\t\t\tthis.resolvePath(pathUtil.dirname(match), expected),\n\t\t\t'export default async () => {}'\n\t\t)\n\n\t\tconst syncResults = await this.Action('event', 'syncListeners').execute({})\n\t\tassert.isFalsy(syncResults.errors)\n\n\t\tconst secondMatch = await this.setupAndGetListenerPath()\n\t\tconst name = pathUtil.basename(secondMatch)\n\n\t\tassert.isEqual(name, expected)\n\t}\n\n\tprivate static async setupAndGetListenerPath() {\n\t\tconst results = await this.setup()\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/will-boot/gi,\n\t\t\tresults.files\n\t\t)\n\t\treturn match\n\t}\n\n\tprivate static async setup() {\n\t\tconst results = await this.Action('sandbox', 'setup').execute({})\n\t\tassert.isFalsy(results.errors)\n\t\treturn results\n\t}\n\n\tprivate static async listenToDidInstallInthePast() {\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'mercury',\n\t\t\teventName: 'did-install::v2020_12_25',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t}\n}\n"],"file":"UpgradingWithSandboxFeatureInstalled.test.js"}
|
|
@@ -54,7 +54,7 @@ var SandboxFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
54
54
|
}]);
|
|
55
55
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "packageDependencies", []);
|
|
56
56
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "actionsDir", _spruceSkillUtils.diskUtil.resolvePath(__dirname, 'actions'));
|
|
57
|
-
void _this.emitter.on('feature.
|
|
57
|
+
void _this.emitter.on('feature.will-execute', /*#__PURE__*/function () {
|
|
58
58
|
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(payload) {
|
|
59
59
|
var isSkillInstalled;
|
|
60
60
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/features/sandbox/SandboxFeature.ts"],"names":["SandboxFeature","options","code","isRequired","diskUtil","resolvePath","__dirname","emitter","on","payload","featureInstaller","isInstalled","isSkillInstalled","featureCode","actionCode","uiUtil","renderMasthead","ui","headline","Action","execute","AbstractFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;IASqBA,c;;;;;AAcpB,0BAAmBC,OAAnB,EAA2C;AAAA;;AAAA;AAC1C,8BAAMA,OAAN;AAD0C,6FAbhB,SAagB;AAAA,qGAZrB,SAYqB;AAAA,oGAV1C,qEAU0C;AAAA,qGATA,CAC1C;AACCC,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAD0C,CASA;AAAA,4GAHd,EAGc;AAAA,mGAFvBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CAEuB;AAG1C,SAAK,MAAKC,OAAL,CAAaC,EAAb,CAAgB,
|
|
1
|
+
{"version":3,"sources":["../../../src/features/sandbox/SandboxFeature.ts"],"names":["SandboxFeature","options","code","isRequired","diskUtil","resolvePath","__dirname","emitter","on","payload","featureInstaller","isInstalled","isSkillInstalled","featureCode","actionCode","uiUtil","renderMasthead","ui","headline","Action","execute","AbstractFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;IASqBA,c;;;;;AAcpB,0BAAmBC,OAAnB,EAA2C;AAAA;;AAAA;AAC1C,8BAAMA,OAAN;AAD0C,6FAbhB,SAagB;AAAA,qGAZrB,SAYqB;AAAA,oGAV1C,qEAU0C;AAAA,qGATA,CAC1C;AACCC,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAD0C,CASA;AAAA,4GAHd,EAGc;AAAA,mGAFvBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CAEuB;AAG1C,SAAK,MAAKC,OAAL,CAAaC,EAAb,CAAgB,sBAAhB;AAAA,+FAAwC,iBAAOC,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACb,MAAKC,gBAAL,CAAsBC,WAAtB,CAC9B,SAD8B,CADa;;AAAA;AACtCC,gBAAAA,gBADsC;;AAAA,sBAK3CA,gBAAgB,IAChBH,OAAO,CAACI,WAAR,KAAwB,MADxB,IAEAJ,OAAO,CAACK,UAAR,KAAuB,SAPoB;AAAA;AAAA;AAAA;;AAS3CC,+BAAOC,cAAP,CAAsB;AACrBC,kBAAAA,EAAE,EAAE,MAAKA,EADY;AAErBC,kBAAAA,QAAQ,EAAE;AAFW,iBAAtB;;AAT2C,iDAcpC,MAAKC,MAAL,CAAY,SAAZ,EAAuB,OAAvB,EAAgCC,OAAhC,CAAwC,EAAxC,CAdoC;;AAAA;AAAA,iDAiBrC,EAjBqC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAxC;;AAAA;AAAA;AAAA;AAAA,QAAL;AAH0C;AAsB1C;;;EApC0CC,4B","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport uiUtil from '../../utilities/ui.utility'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tsandbox: SandboxFeature\n\t}\n}\n\nexport default class SandboxFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'sandbox'\n\tpublic nameReadable = 'Sandbox'\n\tpublic description =\n\t\t'For getting your skill up-and-running on sandbox.mercury.spruce.ai.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'event',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.will-execute', async (payload) => {\n\t\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\t'sandbox'\n\t\t\t)\n\t\t\tif (\n\t\t\t\tisSkillInstalled &&\n\t\t\t\tpayload.featureCode === 'node' &&\n\t\t\t\tpayload.actionCode === 'upgrade'\n\t\t\t) {\n\t\t\t\tuiUtil.renderMasthead({\n\t\t\t\t\tui: this.ui,\n\t\t\t\t\theadline: 'Updating sandbox support...',\n\t\t\t\t})\n\n\t\t\t\treturn this.Action('sandbox', 'setup').execute({})\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n}\n"],"file":"SandboxFeature.js"}
|
|
@@ -27,6 +27,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
27
27
|
|
|
28
28
|
var _schema = require("@sprucelabs/schema");
|
|
29
29
|
|
|
30
|
+
var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
31
|
+
|
|
30
32
|
var _setupVscodeOptions = _interopRequireDefault(require("../../../.spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema"));
|
|
31
33
|
|
|
32
34
|
var _AbstractAction2 = _interopRequireDefault(require("../../AbstractAction"));
|
|
@@ -65,51 +67,61 @@ var SetupAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
65
67
|
key: "execute",
|
|
66
68
|
value: function () {
|
|
67
69
|
var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
68
|
-
var _results$files;
|
|
70
|
+
var _existing$find, _results$files;
|
|
69
71
|
|
|
70
|
-
var createListenerAction, results, match;
|
|
72
|
+
var listeners, existing, version, createListenerAction, results, match;
|
|
71
73
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
72
74
|
while (1) {
|
|
73
75
|
switch (_context.prev = _context.next) {
|
|
74
76
|
case 0:
|
|
75
|
-
|
|
77
|
+
listeners = this.Store('listener');
|
|
76
78
|
_context.next = 3;
|
|
79
|
+
return listeners.loadListeners();
|
|
80
|
+
|
|
81
|
+
case 3:
|
|
82
|
+
existing = _context.sent;
|
|
83
|
+
version = (_existing$find = existing.find(function (e) {
|
|
84
|
+
return e.eventNamespace === 'skill';
|
|
85
|
+
})) === null || _existing$find === void 0 ? void 0 : _existing$find.version;
|
|
86
|
+
createListenerAction = this.Action('event', 'listen');
|
|
87
|
+
_context.next = 8;
|
|
77
88
|
return createListenerAction.execute({
|
|
78
89
|
namespace: 'skill',
|
|
79
|
-
eventName: 'will-boot'
|
|
90
|
+
eventName: 'will-boot',
|
|
91
|
+
version: version !== null && version !== void 0 ? version : _spruceSkillUtils.versionUtil.generateVersion().dirValue
|
|
80
92
|
});
|
|
81
93
|
|
|
82
|
-
case
|
|
94
|
+
case 8:
|
|
83
95
|
results = _context.sent;
|
|
84
96
|
|
|
85
97
|
if (!results.errors) {
|
|
86
|
-
_context.next =
|
|
98
|
+
_context.next = 11;
|
|
87
99
|
break;
|
|
88
100
|
}
|
|
89
101
|
|
|
90
102
|
return _context.abrupt("return", results);
|
|
91
103
|
|
|
92
|
-
case
|
|
104
|
+
case 11:
|
|
93
105
|
match = ((_results$files = results.files) !== null && _results$files !== void 0 ? _results$files : []).find(function (file) {
|
|
94
106
|
return file.name.search('will-boot') === 0;
|
|
95
107
|
});
|
|
96
108
|
|
|
97
109
|
if (match) {
|
|
98
|
-
_context.next =
|
|
110
|
+
_context.next = 14;
|
|
99
111
|
break;
|
|
100
112
|
}
|
|
101
113
|
|
|
102
114
|
throw new Error('file was not generated');
|
|
103
115
|
|
|
104
|
-
case
|
|
116
|
+
case 14:
|
|
105
117
|
match.description = 'Used for recovering from a sandbox reset.';
|
|
106
|
-
_context.next =
|
|
118
|
+
_context.next = 17;
|
|
107
119
|
return this.Writer('sandbox').writeDidBootListener(match.path);
|
|
108
120
|
|
|
109
|
-
case
|
|
121
|
+
case 17:
|
|
110
122
|
return _context.abrupt("return", results);
|
|
111
123
|
|
|
112
|
-
case
|
|
124
|
+
case 18:
|
|
113
125
|
case "end":
|
|
114
126
|
return _context.stop();
|
|
115
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/sandbox/actions/SetupAction.ts"],"names":["optionsSchema","id","name","fields","SetupAction","setupVscodeSchema","createListenerAction","Action","execute","namespace","eventName","results","errors","match","files","
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/sandbox/actions/SetupAction.ts"],"names":["optionsSchema","id","name","fields","SetupAction","setupVscodeSchema","listeners","Store","loadListeners","existing","version","find","e","eventNamespace","createListenerAction","Action","execute","namespace","eventName","versionUtil","generateVersion","dirValue","results","errors","match","files","file","search","Error","description","Writer","writeDidBootListener","path","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAGA,IAAMA,aAAa,GAAG,yBAAY;AACjCC,EAAAA,EAAE,EAAE,qBAD6B;AAEjCC,EAAAA,IAAI,EAAE,uBAF2B;AAGjCC,EAAAA,MAAM,EAAE;AAHyB,CAAZ,CAAtB;;IAQqBC,W;;;;;;;;;;;;;;;sGACGC,8B;0GACI,kC;;;;;;;mGAE3B;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AACOC,gBAAAA,SADP,GACmB,KAAKC,KAAL,CAAW,UAAX,CADnB;AAAA;AAAA,uBAEwBD,SAAS,CAACE,aAAV,EAFxB;;AAAA;AAEOC,gBAAAA,QAFP;AAGOC,gBAAAA,OAHP,qBAGiBD,QAAQ,CAACE,IAAT,CAAc,UAACC,CAAD;AAAA,yBAAOA,CAAC,CAACC,cAAF,KAAqB,OAA5B;AAAA,iBAAd,CAHjB,mDAGiB,eAAoDH,OAHrE;AAKOI,gBAAAA,oBALP,GAK8B,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,CAL9B;AAAA;AAAA,uBAMuBD,oBAAoB,CAACE,OAArB,CAA6B;AAClDC,kBAAAA,SAAS,EAAE,OADuC;AAElDC,kBAAAA,SAAS,EAAE,WAFuC;AAGlDR,kBAAAA,OAAO,EAAEA,OAAF,aAAEA,OAAF,cAAEA,OAAF,GAAaS,8BAAYC,eAAZ,GAA8BC;AAHA,iBAA7B,CANvB;;AAAA;AAMOC,gBAAAA,OANP;;AAAA,qBAYKA,OAAO,CAACC,MAZb;AAAA;AAAA;AAAA;;AAAA,iDAaSD,OAbT;;AAAA;AAgBOE,gBAAAA,KAhBP,GAgBe,mBAACF,OAAO,CAACG,KAAT,2DAAkB,EAAlB,EAAsBd,IAAtB,CACb,UAACe,IAAD;AAAA,yBAAUA,IAAI,CAACxB,IAAL,CAAUyB,MAAV,CAAiB,WAAjB,MAAkC,CAA5C;AAAA,iBADa,CAhBf;;AAAA,oBAoBMH,KApBN;AAAA;AAAA;AAAA;;AAAA,sBAqBQ,IAAII,KAAJ,CAAU,wBAAV,CArBR;;AAAA;AAwBCJ,gBAAAA,KAAK,CAACK,WAAN,GAAoB,2CAApB;AAxBD;AAAA,uBA0BO,KAAKC,MAAL,CAAY,SAAZ,EAAuBC,oBAAvB,CAA4CP,KAAK,CAACQ,IAAlD,CA1BP;;AAAA;AAAA,iDA4BQV,OA5BR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAJwCW,2B","sourcesContent":["import { buildSchema } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport setupVscodeSchema from '#spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'setupSandboxOptions',\n\tname: 'Setup sandbox options',\n\tfields: {},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class SetupAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = setupVscodeSchema\n\tpublic invocationMessage = 'Setting up sandbox support... 🏝'\n\n\tpublic async execute(): Promise<FeatureActionResponse> {\n\t\tconst listeners = this.Store('listener')\n\t\tconst existing = await listeners.loadListeners()\n\t\tconst version = existing.find((e) => e.eventNamespace === 'skill')?.version\n\n\t\tconst createListenerAction = this.Action('event', 'listen')\n\t\tconst results = await createListenerAction.execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion: version ?? versionUtil.generateVersion().dirValue,\n\t\t})\n\n\t\tif (results.errors) {\n\t\t\treturn results\n\t\t}\n\n\t\tconst match = (results.files ?? []).find(\n\t\t\t(file) => file.name.search('will-boot') === 0\n\t\t)\n\n\t\tif (!match) {\n\t\t\tthrow new Error('file was not generated')\n\t\t}\n\n\t\tmatch.description = 'Used for recovering from a sandbox reset.'\n\n\t\tawait this.Writer('sandbox').writeDidBootListener(match.path)\n\n\t\treturn results\n\t}\n}\n"],"file":"SetupAction.js"}
|
|
@@ -54,7 +54,7 @@ var viewTypeChoices = [{
|
|
|
54
54
|
value: 'view',
|
|
55
55
|
label: 'View Controller'
|
|
56
56
|
}];
|
|
57
|
-
var viewModels = ['BigForm', 'Button', 'Card', 'CardBody', 'CardHeader', 'Dialog', 'Form', 'List'].sort();
|
|
57
|
+
var viewModels = ['BigForm', 'Button', 'Calendar', 'Card', 'CardBody', 'CardHeader', 'Dialog', 'Form', 'List'].sort();
|
|
58
58
|
var optionsSchema = (0, _schema.buildSchema)({
|
|
59
59
|
id: 'createViewOptions',
|
|
60
60
|
description: 'Create a new Heartwood view to render on web enabled and mobile devices.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/view/actions/CreateAction.ts"],"names":["viewTypeChoices","value","label","viewModels","sort","optionsSchema","id","description","fields","viewType","type","isRequired","options","choices","isRoot","nameReadable","namedTemplateItemBuilder","namePascal","viewModel","hint","map","model","followUpSchema","CreateAction","validateAndNormalizeOptions","writer","Writer","doesRootControllerExist","cwd","ui","confirm","form","FormComponent","schema","onWillAskQuestion","formUtil","onWillAskQuestionHandler","present","answers","prompt","namesUtil","toPascal","nameKebab","toKebab","files","Action","execute","syncResults","merged","actionUtil","mergeActionResults","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAGA,IAAMA,eAAe,GAAG,CACvB;AACCC,EAAAA,KAAK,EAAE,WADR;AAECC,EAAAA,KAAK,EAAE;AAFR,CADuB,EAKvB;AACCD,EAAAA,KAAK,EAAE,MADR;AAECC,EAAAA,KAAK,EAAE;AAFR,CALuB,CAAxB;AAWA,IAAMC,UAAU,GAAG,CAClB,SADkB,EAElB,QAFkB,EAGlB,
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/view/actions/CreateAction.ts"],"names":["viewTypeChoices","value","label","viewModels","sort","optionsSchema","id","description","fields","viewType","type","isRequired","options","choices","isRoot","nameReadable","namedTemplateItemBuilder","namePascal","viewModel","hint","map","model","followUpSchema","CreateAction","validateAndNormalizeOptions","writer","Writer","doesRootControllerExist","cwd","ui","confirm","form","FormComponent","schema","onWillAskQuestion","formUtil","onWillAskQuestionHandler","present","answers","prompt","namesUtil","toPascal","nameKebab","toKebab","files","Action","execute","syncResults","merged","actionUtil","mergeActionResults","AbstractAction"],"mappings":"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","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport FormComponent from '../../../components/FormComponent'\nimport namedTemplateItemBuilder from '../../../schemas/v2020_07_22/namedTemplateItem.builder'\nimport actionUtil from '../../../utilities/action.utility'\nimport formUtil from '../../../utilities/form.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst viewTypeChoices = [\n\t{\n\t\tvalue: 'skillView',\n\t\tlabel: 'Skill View Controller',\n\t},\n\t{\n\t\tvalue: 'view',\n\t\tlabel: 'View Controller',\n\t},\n]\n\nconst viewModels = [\n\t'BigForm',\n\t'Button',\n\t'Calendar',\n\t'Card',\n\t'CardBody',\n\t'CardHeader',\n\t'Dialog',\n\t'Form',\n\t'List',\n].sort()\n\nconst optionsSchema = buildSchema({\n\tid: 'createViewOptions',\n\tdescription:\n\t\t'Create a new Heartwood view to render on web enabled and mobile devices.',\n\tfields: {\n\t\tviewType: {\n\t\t\ttype: 'select',\n\t\t\tlabel: 'Which are you creating?',\n\t\t\tisRequired: true,\n\t\t\toptions: {\n\t\t\t\tchoices: viewTypeChoices,\n\t\t\t},\n\t\t},\n\t\tisRoot: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Make this the Root View Controller?',\n\t\t},\n\t\tnameReadable: {\n\t\t\t...namedTemplateItemBuilder.fields.nameReadable,\n\t\t\tlabel: 'Controller name',\n\t\t\tisRequired: false,\n\t\t},\n\t\tnamePascal: {\n\t\t\t...namedTemplateItemBuilder.fields.namePascal,\n\t\t\tisRequired: false,\n\t\t},\n\t\tviewModel: {\n\t\t\ttype: 'select',\n\t\t\tlabel: 'View model',\n\t\t\thint: 'Which type of view will your controller render?',\n\t\t\toptions: {\n\t\t\t\tchoices: viewModels.map((model) => ({ value: model, label: model })),\n\t\t\t},\n\t\t},\n\t},\n})\n\nconst followUpSchema = buildSchema({\n\tid: 'creatViewFollowup',\n\tfields: {\n\t\tnameReadable: {\n\t\t\t...optionsSchema.fields.nameReadable,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnamePascal: {\n\t\t\t...optionsSchema.fields.namePascal,\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['create.view']\n\tpublic invocationMessage = 'Creating your new view controller... 🌲'\n\n\tpublic async execute(\n\t\toptions: SchemaValues<OptionsSchema>\n\t): Promise<FeatureActionResponse> {\n\t\tlet { viewType, isRoot, nameReadable, namePascal, viewModel } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst writer = this.Writer('view')\n\n\t\tif (\n\t\t\tviewType === 'skillView' &&\n\t\t\t!isRoot &&\n\t\t\t!writer.doesRootControllerExist(this.cwd)\n\t\t) {\n\t\t\tisRoot = await this.ui.confirm(\n\t\t\t\t'Do you want to create a root view controller?'\n\t\t\t)\n\t\t}\n\n\t\tif (!isRoot && !nameReadable) {\n\t\t\tconst form = new FormComponent({\n\t\t\t\tui: this.ui,\n\t\t\t\tschema: followUpSchema,\n\t\t\t\tonWillAskQuestion: formUtil.onWillAskQuestionHandler,\n\t\t\t})\n\t\t\tconst answers = await form.present()\n\n\t\t\tnamePascal = answers.namePascal\n\t\t\tnameReadable = answers.nameReadable\n\t\t}\n\n\t\tif (isRoot) {\n\t\t\tnameReadable = 'Root'\n\t\t}\n\n\t\tif (!viewModel && viewType === 'view') {\n\t\t\tviewModel = await this.ui.prompt({\n\t\t\t\t...optionsSchema.fields.viewModel,\n\t\t\t\tisRequired: true,\n\t\t\t})\n\t\t}\n\n\t\tnamePascal = namePascal ?? namesUtil.toPascal(nameReadable as string)\n\n\t\tconst files = await writer[\n\t\t\tviewType === 'skillView'\n\t\t\t\t? 'writeSkillViewController'\n\t\t\t\t: 'writeViewController'\n\t\t](this.cwd, {\n\t\t\tviewType,\n\t\t\tnamePascal,\n\t\t\tviewModel: viewModel as string,\n\t\t\tnameKebab: namesUtil.toKebab(namePascal),\n\t\t})\n\n\t\tconst syncResults = await this.Action('view', 'sync').execute({})\n\n\t\tconst merged = actionUtil.mergeActionResults(\n\t\t\t{\n\t\t\t\tfiles,\n\t\t\t},\n\t\t\tsyncResults\n\t\t)\n\n\t\treturn merged\n\t}\n}\n"],"file":"CreateAction.js"}
|
package/package.json
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
]
|
|
19
19
|
},
|
|
20
20
|
"license": "MIT",
|
|
21
|
-
"version": "14.
|
|
21
|
+
"version": "14.30.0",
|
|
22
22
|
"bin": {
|
|
23
23
|
"spruce": "./build/index.js"
|
|
24
24
|
},
|
|
@@ -77,18 +77,18 @@
|
|
|
77
77
|
"@babel/runtime": "^7.16.7",
|
|
78
78
|
"@jest/reporters": "^27.4.6",
|
|
79
79
|
"@sprucelabs/error": "^5.0.370",
|
|
80
|
-
"@sprucelabs/heartwood-view-controllers": "^
|
|
80
|
+
"@sprucelabs/heartwood-view-controllers": "^56.2.3",
|
|
81
81
|
"@sprucelabs/jest-json-reporter": "^6.0.305",
|
|
82
|
-
"@sprucelabs/mercury-client": "^19.3.
|
|
83
|
-
"@sprucelabs/mercury-event-emitter": "^19.3.
|
|
84
|
-
"@sprucelabs/mercury-types": "^26.2.
|
|
85
|
-
"@sprucelabs/schema": "^25.6.
|
|
86
|
-
"@sprucelabs/spruce-core-schemas": "^22.8.
|
|
87
|
-
"@sprucelabs/spruce-event-plugin": "^22.0.
|
|
88
|
-
"@sprucelabs/spruce-event-utils": "^17.1.
|
|
89
|
-
"@sprucelabs/spruce-skill-booter": "^22.0.
|
|
90
|
-
"@sprucelabs/spruce-skill-utils": "^22.2.
|
|
91
|
-
"@sprucelabs/spruce-templates": "^14.
|
|
82
|
+
"@sprucelabs/mercury-client": "^19.3.31",
|
|
83
|
+
"@sprucelabs/mercury-event-emitter": "^19.3.31",
|
|
84
|
+
"@sprucelabs/mercury-types": "^26.2.50",
|
|
85
|
+
"@sprucelabs/schema": "^25.6.51",
|
|
86
|
+
"@sprucelabs/spruce-core-schemas": "^22.8.16",
|
|
87
|
+
"@sprucelabs/spruce-event-plugin": "^22.0.25",
|
|
88
|
+
"@sprucelabs/spruce-event-utils": "^17.1.520",
|
|
89
|
+
"@sprucelabs/spruce-skill-booter": "^22.0.25",
|
|
90
|
+
"@sprucelabs/spruce-skill-utils": "^22.2.176",
|
|
91
|
+
"@sprucelabs/spruce-templates": "^14.30.0",
|
|
92
92
|
"@typescript-eslint/eslint-plugin": "^5.9.1",
|
|
93
93
|
"@typescript-eslint/parser": "^5.9.1",
|
|
94
94
|
"cfonts": "^2.10.0",
|
|
@@ -119,14 +119,14 @@
|
|
|
119
119
|
"uuid": "^8.3.2"
|
|
120
120
|
},
|
|
121
121
|
"devDependencies": {
|
|
122
|
-
"@sprucelabs/data-stores": "^7.2.
|
|
122
|
+
"@sprucelabs/data-stores": "^7.2.181",
|
|
123
123
|
"@sprucelabs/jest-sheets-reporter": "^1.2.302",
|
|
124
|
-
"@sprucelabs/mercury-core-events": "^1.7.
|
|
124
|
+
"@sprucelabs/mercury-core-events": "^1.7.107",
|
|
125
125
|
"@sprucelabs/resolve-path-aliases": "^1.0.251",
|
|
126
|
-
"@sprucelabs/spruce-conversation-plugin": "^22.0.
|
|
127
|
-
"@sprucelabs/spruce-deploy-plugin": "^22.0.
|
|
128
|
-
"@sprucelabs/spruce-store-plugin": "^22.0.
|
|
129
|
-
"@sprucelabs/spruce-test-fixtures": "^22.0.
|
|
126
|
+
"@sprucelabs/spruce-conversation-plugin": "^22.0.25",
|
|
127
|
+
"@sprucelabs/spruce-deploy-plugin": "^22.0.25",
|
|
128
|
+
"@sprucelabs/spruce-store-plugin": "^22.0.25",
|
|
129
|
+
"@sprucelabs/spruce-test-fixtures": "^22.0.25",
|
|
130
130
|
"@sprucelabs/test": "^7.7.271",
|
|
131
131
|
"@sprucelabs/test-utils": "^3.0.372",
|
|
132
132
|
"@types/blessed": "^0.1.19",
|
|
@@ -597,5 +597,5 @@
|
|
|
597
597
|
"ora"
|
|
598
598
|
]
|
|
599
599
|
},
|
|
600
|
-
"gitHead": "
|
|
600
|
+
"gitHead": "4787822e335c8c38a0f8020841aaff4693021264"
|
|
601
601
|
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import pathUtil from 'path'
|
|
2
|
+
import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'
|
|
3
|
+
import { test, assert } from '@sprucelabs/test'
|
|
4
|
+
import AbstractCliTest from '../../tests/AbstractCliTest'
|
|
5
|
+
import testUtil from '../../tests/utilities/test.utility'
|
|
6
|
+
|
|
7
|
+
export default class UpgradingWithSandboxFeatureInstalledTest extends AbstractCliTest {
|
|
8
|
+
protected static async beforeEach() {
|
|
9
|
+
await super.beforeEach()
|
|
10
|
+
await this.FeatureFixture().installCachedFeatures('sandbox')
|
|
11
|
+
await this.listenToDidInstallInthePast()
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@test()
|
|
15
|
+
protected static async doesNotAskForVersionWhenSettingUpSandboxWithCoreListener() {
|
|
16
|
+
await this.setup()
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@test()
|
|
20
|
+
protected static async usesTodaysVersionEvenWithCoreListene() {
|
|
21
|
+
const match = await this.setupAndGetListenerPath()
|
|
22
|
+
|
|
23
|
+
const fileName = pathUtil.basename(match)
|
|
24
|
+
const expected = `will-boot.${
|
|
25
|
+
versionUtil.generateVersion().dirValue
|
|
26
|
+
}.listener.ts`
|
|
27
|
+
assert.isEqual(fileName, expected)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@test()
|
|
31
|
+
protected static async overwritesExistingWillBoot() {
|
|
32
|
+
const expected = `will-boot.v2010_01_10.listener.ts`
|
|
33
|
+
|
|
34
|
+
const match = await this.setupAndGetListenerPath()
|
|
35
|
+
|
|
36
|
+
diskUtil.deleteFile(match)
|
|
37
|
+
diskUtil.writeFile(
|
|
38
|
+
this.resolvePath(pathUtil.dirname(match), expected),
|
|
39
|
+
'export default async () => {}'
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
const syncResults = await this.Action('event', 'syncListeners').execute({})
|
|
43
|
+
assert.isFalsy(syncResults.errors)
|
|
44
|
+
|
|
45
|
+
const secondMatch = await this.setupAndGetListenerPath()
|
|
46
|
+
const name = pathUtil.basename(secondMatch)
|
|
47
|
+
|
|
48
|
+
assert.isEqual(name, expected)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
private static async setupAndGetListenerPath() {
|
|
52
|
+
const results = await this.setup()
|
|
53
|
+
const match = testUtil.assertFileByNameInGeneratedFiles(
|
|
54
|
+
/will-boot/gi,
|
|
55
|
+
results.files
|
|
56
|
+
)
|
|
57
|
+
return match
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private static async setup() {
|
|
61
|
+
const results = await this.Action('sandbox', 'setup').execute({})
|
|
62
|
+
assert.isFalsy(results.errors)
|
|
63
|
+
return results
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private static async listenToDidInstallInthePast() {
|
|
67
|
+
const results = await this.Action('event', 'listen').execute({
|
|
68
|
+
namespace: 'mercury',
|
|
69
|
+
eventName: 'did-install::v2020_12_25',
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
assert.isFalsy(results.errors)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -26,7 +26,7 @@ export default class SandboxFeature extends AbstractFeature {
|
|
|
26
26
|
public constructor(options: ActionOptions) {
|
|
27
27
|
super(options)
|
|
28
28
|
|
|
29
|
-
void this.emitter.on('feature.
|
|
29
|
+
void this.emitter.on('feature.will-execute', async (payload) => {
|
|
30
30
|
const isSkillInstalled = await this.featureInstaller.isInstalled(
|
|
31
31
|
'sandbox'
|
|
32
32
|
)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { buildSchema } from '@sprucelabs/schema'
|
|
2
|
+
import { versionUtil } from '@sprucelabs/spruce-skill-utils'
|
|
2
3
|
import setupVscodeSchema from '#spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema'
|
|
3
4
|
import AbstractAction from '../../AbstractAction'
|
|
4
5
|
import { FeatureActionResponse } from '../../features.types'
|
|
@@ -16,10 +17,15 @@ export default class SetupAction extends AbstractAction<OptionsSchema> {
|
|
|
16
17
|
public invocationMessage = 'Setting up sandbox support... 🏝'
|
|
17
18
|
|
|
18
19
|
public async execute(): Promise<FeatureActionResponse> {
|
|
20
|
+
const listeners = this.Store('listener')
|
|
21
|
+
const existing = await listeners.loadListeners()
|
|
22
|
+
const version = existing.find((e) => e.eventNamespace === 'skill')?.version
|
|
23
|
+
|
|
19
24
|
const createListenerAction = this.Action('event', 'listen')
|
|
20
25
|
const results = await createListenerAction.execute({
|
|
21
26
|
namespace: 'skill',
|
|
22
27
|
eventName: 'will-boot',
|
|
28
|
+
version: version ?? versionUtil.generateVersion().dirValue,
|
|
23
29
|
})
|
|
24
30
|
|
|
25
31
|
if (results.errors) {
|