@sprucelabs/spruce-cli 15.3.0 → 15.4.2
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 +27 -0
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.d.ts +1 -0
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +20 -14
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
- package/build/__tests__/implementation/DataStoreStore.test.d.ts +1 -0
- package/build/__tests__/implementation/DataStoreStore.test.js +30 -3
- package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
- package/build/features/event/writers/EventWriter.js +1 -1
- package/build/features/event/writers/EventWriter.js.map +1 -1
- package/build/features/schema/writers/SchemaWriter.js +1 -1
- package/build/features/schema/writers/SchemaWriter.js.map +1 -1
- package/build/features/store/stores/StoreStore.d.ts +1 -0
- package/build/features/store/stores/StoreStore.js +6 -1
- package/build/features/store/stores/StoreStore.js.map +1 -1
- package/build/features/test/actions/CreateAction.js +1 -1
- package/build/features/test/actions/CreateAction.js.map +1 -1
- package/build/features/view/writers/ViewWriter.js +1 -3
- package/build/features/view/writers/ViewWriter.js.map +1 -1
- package/build/tests/CommandFaker.d.ts +2 -1
- package/build/tests/CommandFaker.js +13 -7
- package/build/tests/CommandFaker.js.map +1 -1
- package/package.json +36 -36
- package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +21 -7
- package/src/__tests__/implementation/DataStoreStore.test.ts +8 -0
- package/src/features/event/writers/EventWriter.ts +1 -1
- package/src/features/schema/writers/SchemaWriter.ts +1 -1
- package/src/features/store/stores/StoreStore.ts +5 -1
- package/src/features/test/actions/CreateAction.ts +1 -1
- package/src/features/view/writers/ViewWriter.ts +3 -2
- package/src/tests/CommandFaker.ts +9 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [15.4.2](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v15.4.1...v15.4.2) (2022-05-03)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [15.4.1](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v15.4.0...v15.4.1) (2022-05-02)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# [15.4.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v15.3.0...v15.4.0) (2022-05-02)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* data stores can be anyowhere in a skill now! ([eda09e7](https://github.com/sprucelabsai/spruce-cli-workspace/commit/eda09e7))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
6
33
|
# [15.3.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v15.2.24...v15.3.0) (2022-04-30)
|
|
7
34
|
|
|
8
35
|
|
|
@@ -5,6 +5,7 @@ export default class SelectingAnAbstractTestClassTest extends AbstractTestTest {
|
|
|
5
5
|
protected static canSelectAbstractTestBasedOnEventEmitter(): Promise<void>;
|
|
6
6
|
protected static installingAFeatureRemovesLabelFromName(): Promise<void>;
|
|
7
7
|
protected static selectingUninstalledTestInstallsTheFeature(): Promise<void>;
|
|
8
|
+
protected static relativePathsAddDotSlash(): void;
|
|
8
9
|
private static buildAndAssertTestFailsAsExpected;
|
|
9
10
|
private static installCopyTestFilesSelectLocalAbstractTest;
|
|
10
11
|
private static installAndCopyTestFiles;
|
|
@@ -27,13 +27,11 @@ var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
|
27
27
|
|
|
28
28
|
var _test = require("@sprucelabs/test");
|
|
29
29
|
|
|
30
|
-
var _CommandService = _interopRequireDefault(require("../../../services/CommandService"));
|
|
31
|
-
|
|
32
30
|
var _AbstractTestTest2 = _interopRequireDefault(require("../../../tests/AbstractTestTest"));
|
|
33
31
|
|
|
34
32
|
var _test2 = _interopRequireDefault(require("../../../tests/utilities/test.utility"));
|
|
35
33
|
|
|
36
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _class;
|
|
34
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class;
|
|
37
35
|
|
|
38
36
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
39
37
|
|
|
@@ -53,7 +51,7 @@ var featuresWithRegisteredTests = [{
|
|
|
53
51
|
featureCode: 'view',
|
|
54
52
|
className: 'AbstractViewControllerTest'
|
|
55
53
|
}];
|
|
56
|
-
var SelectingAnAbstractTestClassTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)(), _dec4 = (0, _test.test)(), _dec5 = (0, _test.test)(), (_class = /*#__PURE__*/function (_AbstractTestTest) {
|
|
54
|
+
var SelectingAnAbstractTestClassTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)(), _dec4 = (0, _test.test)(), _dec5 = (0, _test.test)(), _dec6 = (0, _test.test)(), (_class = /*#__PURE__*/function (_AbstractTestTest) {
|
|
57
55
|
(0, _inherits2["default"])(SelectingAnAbstractTestClassTest, _AbstractTestTest);
|
|
58
56
|
|
|
59
57
|
var _super = _createSuper(SelectingAnAbstractTestClassTest);
|
|
@@ -255,10 +253,7 @@ var SelectingAnAbstractTestClassTest = (_dec = (0, _test.test)(), _dec2 = (0, _t
|
|
|
255
253
|
while (1) {
|
|
256
254
|
switch (_context6.prev = _context6.next) {
|
|
257
255
|
case 0:
|
|
258
|
-
|
|
259
|
-
code: 0
|
|
260
|
-
});
|
|
261
|
-
|
|
256
|
+
this.commandFaker.fakeInstall();
|
|
262
257
|
_context6.next = 3;
|
|
263
258
|
return this.installTests();
|
|
264
259
|
|
|
@@ -358,10 +353,7 @@ var SelectingAnAbstractTestClassTest = (_dec = (0, _test.test)(), _dec2 = (0, _t
|
|
|
358
353
|
while (1) {
|
|
359
354
|
switch (_context8.prev = _context8.next) {
|
|
360
355
|
case 0:
|
|
361
|
-
|
|
362
|
-
code: 0
|
|
363
|
-
});
|
|
364
|
-
|
|
356
|
+
this.commandFaker.fakeInstall();
|
|
365
357
|
_iterator2 = _createForOfIteratorHelper(featuresWithRegisteredTests);
|
|
366
358
|
_context8.prev = 2;
|
|
367
359
|
_loop2 = /*#__PURE__*/_regenerator["default"].mark(function _loop2() {
|
|
@@ -458,7 +450,7 @@ var SelectingAnAbstractTestClassTest = (_dec = (0, _test.test)(), _dec2 = (0, _t
|
|
|
458
450
|
return _context8.stop();
|
|
459
451
|
}
|
|
460
452
|
}
|
|
461
|
-
}, _callee6,
|
|
453
|
+
}, _callee6, this, [[2, 11, 14, 17]]);
|
|
462
454
|
}));
|
|
463
455
|
|
|
464
456
|
function selectingUninstalledTestInstallsTheFeature() {
|
|
@@ -467,6 +459,20 @@ var SelectingAnAbstractTestClassTest = (_dec = (0, _test.test)(), _dec2 = (0, _t
|
|
|
467
459
|
|
|
468
460
|
return selectingUninstalledTestInstallsTheFeature;
|
|
469
461
|
}()
|
|
462
|
+
}, {
|
|
463
|
+
key: "relativePathsAddDotSlash",
|
|
464
|
+
value: function relativePathsAddDotSlash() {
|
|
465
|
+
var action = this.Action('test', 'create'); //@ts-ignore
|
|
466
|
+
|
|
467
|
+
var actual = action.buildParentClassFromCandidate({
|
|
468
|
+
label: 'test',
|
|
469
|
+
name: 'AbstractTest',
|
|
470
|
+
path: this.resolvePath('test/AbstractTest'),
|
|
471
|
+
isDefaultExport: false
|
|
472
|
+
}, this.resolvePath('test'));
|
|
473
|
+
|
|
474
|
+
_test.assert.isEqual(actual.importPath, './AbstractTest');
|
|
475
|
+
}
|
|
470
476
|
}, {
|
|
471
477
|
key: "buildAndAssertTestFailsAsExpected",
|
|
472
478
|
value: function () {
|
|
@@ -690,6 +696,6 @@ var SelectingAnAbstractTestClassTest = (_dec = (0, _test.test)(), _dec2 = (0, _t
|
|
|
690
696
|
}()
|
|
691
697
|
}]);
|
|
692
698
|
return SelectingAnAbstractTestClassTest;
|
|
693
|
-
}(_AbstractTestTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "asksForYouToSelectABaseClass", [_dec], Object.getOwnPropertyDescriptor(_class, "asksForYouToSelectABaseClass"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canSelectAbstractClassWhileSelectingSubDir", [_dec2], Object.getOwnPropertyDescriptor(_class, "canSelectAbstractClassWhileSelectingSubDir"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canSelectAbstractTestBasedOnEventEmitter", [_dec3], Object.getOwnPropertyDescriptor(_class, "canSelectAbstractTestBasedOnEventEmitter"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "installingAFeatureRemovesLabelFromName", [_dec4], Object.getOwnPropertyDescriptor(_class, "installingAFeatureRemovesLabelFromName"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "selectingUninstalledTestInstallsTheFeature", [_dec5], Object.getOwnPropertyDescriptor(_class, "selectingUninstalledTestInstallsTheFeature"), _class)), _class));
|
|
699
|
+
}(_AbstractTestTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "asksForYouToSelectABaseClass", [_dec], Object.getOwnPropertyDescriptor(_class, "asksForYouToSelectABaseClass"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canSelectAbstractClassWhileSelectingSubDir", [_dec2], Object.getOwnPropertyDescriptor(_class, "canSelectAbstractClassWhileSelectingSubDir"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canSelectAbstractTestBasedOnEventEmitter", [_dec3], Object.getOwnPropertyDescriptor(_class, "canSelectAbstractTestBasedOnEventEmitter"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "installingAFeatureRemovesLabelFromName", [_dec4], Object.getOwnPropertyDescriptor(_class, "installingAFeatureRemovesLabelFromName"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "selectingUninstalledTestInstallsTheFeature", [_dec5], Object.getOwnPropertyDescriptor(_class, "selectingUninstalledTestInstallsTheFeature"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "relativePathsAddDotSlash", [_dec6], Object.getOwnPropertyDescriptor(_class, "relativePathsAddDotSlash"), _class)), _class));
|
|
694
700
|
exports["default"] = SelectingAnAbstractTestClassTest;
|
|
695
701
|
//# sourceMappingURL=SelectingAnAbstractTestClass.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectingAnAbstractTestClass.test.js","names":["expectedAbstractTests","featuresWithRegisteredTests","featureCode","className","SelectingAnAbstractTestClassTest","installCopyTestFilesSelectLocalAbstractTest","promise","results","testUtil","assertFileByNameInGeneratedFiles","files","buildAndAssertTestFailsAsExpected","testDir","resolvePath","diskUtil","createDir","installAndCopyTestFiles","invokeCreateActionAndWaitForInput","ui","sendInput","waitForInput","selectOptionBasedOnLabel","installTests","cli","on","abstractClasses","name","label","executeCreateUntilAbstractClassSelection","choices","assert","doesInclude","isFalsy","errors","match","contents","readFile","CommandService","fakeCommand","RegExp","code","testFeature","getFeatureInstaller","getFeature","feat","install","features","buildParentClassCandidates","candidates","isTruthy","find","cwd","createRandomTempDir","c","includes","isInstalled","isFalse","value","isTrue","Service","build","doesThrowAsync","execute","expected","copyTestFiles","source","resolveTestPath","destination","copyDir","last","getLastInvocation","options","Action","type","nameReadable","nameCamel","AbstractTestTest"],"sources":["../../../../src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts"],"sourcesContent":["import { SelectChoice } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureCode } from '../../../features/features.types'\nimport CommandService from '../../../services/CommandService'\nimport AbstractTestTest from '../../../tests/AbstractTestTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nconst expectedAbstractTests = [\n\t'AbstractSpruceTest (default)',\n\t'AbstractStoreTest (requires install)',\n\t'AbstractViewControllerTest (requires install)',\n\t'AbstractSpruceFixtureTest',\n\t'AbstractTest',\n\t'AbstractTest2',\n\t'AbstractBananaTestDifferentThanFileName',\n]\n\nconst featuresWithRegisteredTests: {\n\tfeatureCode: FeatureCode\n\tclassName: string\n}[] = [\n\t{ featureCode: 'store', className: 'AbstractStoreTest' },\n\t{ featureCode: 'view', className: 'AbstractViewControllerTest' },\n]\n\nexport default class SelectingAnAbstractTestClassTest extends AbstractTestTest {\n\t@test()\n\tprotected static async asksForYouToSelectABaseClass() {\n\t\tconst { promise } = await this.installCopyTestFilesSelectLocalAbstractTest()\n\n\t\tconst results = await promise\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.buildAndAssertTestFailsAsExpected()\n\t}\n\n\t@test()\n\tprotected static async canSelectAbstractClassWhileSelectingSubDir() {\n\t\tconst testDir = this.resolvePath('src', '__tests__', 'behavioral', 'taco')\n\t\tdiskUtil.createDir(testDir)\n\n\t\tawait this.installAndCopyTestFiles()\n\n\t\tconst { promise } = await this.invokeCreateActionAndWaitForInput()\n\n\t\tawait this.ui.sendInput('taco')\n\n\t\tawait this.waitForInput()\n\n\t\tthis.selectOptionBasedOnLabel('AbstractBananaTestDifferentThanFileName')\n\n\t\tawait promise\n\n\t\tawait this.buildAndAssertTestFailsAsExpected()\n\t}\n\n\t@test()\n\tprotected static async canSelectAbstractTestBasedOnEventEmitter() {\n\t\tconst cli = await this.installTests()\n\t\tvoid cli.on('test.register-abstract-test-classes', async () => {\n\t\t\treturn {\n\t\t\t\tabstractClasses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'TestClass',\n\t\t\t\t\t\tlabel: 'TestClass',\n\t\t\t\t\t\timport: '@sprucelabs/another-lib',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'TestClass2',\n\t\t\t\t\t\tlabel: 'TestClass2',\n\t\t\t\t\t\timport: '@sprucelabs/another-lib',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\n\t\tconst { choices, promise } =\n\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\tassert.doesInclude(choices, {\n\t\t\tlabel: 'TestClass',\n\t\t})\n\n\t\tassert.doesInclude(choices, {\n\t\t\tlabel: 'TestClass2',\n\t\t})\n\n\t\tthis.selectOptionBasedOnLabel('TestClass2')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { TestClass2 } from '@sprucelabs/another-lib'\"\n\t\t)\n\n\t\tassert.doesInclude(contents, 'extends TestClass2')\n\t}\n\n\t@test()\n\tprotected static async installingAFeatureRemovesLabelFromName() {\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tawait this.installTests()\n\n\t\tconst testFeature = this.getFeatureInstaller().getFeature('test')\n\n\t\tfor (const feat of featuresWithRegisteredTests) {\n\t\t\tawait this.getFeatureInstaller().install({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\tcode: feat.featureCode,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\n\t\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\t\tassert.isTruthy(\n\t\t\t\tcandidates.find(({ name }) => {\n\t\t\t\t\treturn name === feat.className\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async selectingUninstalledTestInstallsTheFeature() {\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tfor (const feat of featuresWithRegisteredTests) {\n\t\t\tthis.cwd = diskUtil.createRandomTempDir()\n\t\t\tawait this.installTests()\n\n\t\t\tconst { choices, promise } =\n\t\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\t\tconst match = choices.find((c: any) => c.label.includes(feat.className))\n\n\t\t\tassert.isTruthy(match)\n\n\t\t\tlet isInstalled = await this.getFeatureInstaller().isInstalled(\n\t\t\t\tfeat.featureCode as any\n\t\t\t)\n\t\t\tassert.isFalse(isInstalled)\n\n\t\t\tawait this.ui.sendInput(match?.value)\n\n\t\t\tawait promise\n\n\t\t\tisInstalled = await this.getFeatureInstaller().isInstalled(\n\t\t\t\tfeat.featureCode as any\n\t\t\t)\n\t\t\tassert.isTrue(isInstalled)\n\t\t}\n\t}\n\n\tprivate static async buildAndAssertTestFailsAsExpected() {\n\t\tawait this.Service('build').build()\n\n\t\tawait assert.doesThrowAsync(\n\t\t\t() => this.Service('command').execute('yarn test'),\n\t\t\t/false.*?does not equal.*?true/gis\n\t\t)\n\t}\n\n\tprivate static async installCopyTestFilesSelectLocalAbstractTest() {\n\t\tawait this.installAndCopyTestFiles()\n\n\t\tconst { choices, promise } =\n\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\tfor (const expected of expectedAbstractTests) {\n\t\t\tassert.doesInclude(choices, { label: expected })\n\t\t}\n\n\t\tthis.selectOptionBasedOnLabel('AbstractBananaTestDifferentThanFileName')\n\n\t\treturn { promise }\n\t}\n\n\tprivate static async installAndCopyTestFiles() {\n\t\tawait this.installTests()\n\t\tawait this.copyTestFiles()\n\t}\n\n\tprivate static async copyTestFiles() {\n\t\tconst source = this.resolveTestPath('abstract_tests')\n\t\tconst destination = this.resolvePath('src')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\t}\n\n\tprivate static async executeCreateUntilAbstractClassSelection() {\n\t\tconst { promise } = await this.invokeCreateActionAndWaitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\t\tconst { choices } = last.options.options ?? {}\n\n\t\treturn { promise, choices } as {\n\t\t\tpromise: Promise<any>\n\t\t\tchoices: SelectChoice[]\n\t\t}\n\t}\n\n\tprivate static async invokeCreateActionAndWaitForInput() {\n\t\tconst promise = this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Can book appointment',\n\t\t\tnameCamel: 'canBookAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\t\treturn { promise }\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectingAnAbstractTestClass.test.js","names":["expectedAbstractTests","featuresWithRegisteredTests","featureCode","className","SelectingAnAbstractTestClassTest","installCopyTestFilesSelectLocalAbstractTest","promise","results","testUtil","assertFileByNameInGeneratedFiles","files","buildAndAssertTestFailsAsExpected","testDir","resolvePath","diskUtil","createDir","installAndCopyTestFiles","invokeCreateActionAndWaitForInput","ui","sendInput","waitForInput","selectOptionBasedOnLabel","installTests","cli","on","abstractClasses","name","label","executeCreateUntilAbstractClassSelection","choices","assert","doesInclude","isFalsy","errors","match","contents","readFile","commandFaker","fakeInstall","testFeature","getFeatureInstaller","getFeature","feat","install","features","code","buildParentClassCandidates","candidates","isTruthy","find","cwd","createRandomTempDir","c","includes","isInstalled","isFalse","value","isTrue","action","Action","actual","buildParentClassFromCandidate","path","isDefaultExport","isEqual","importPath","Service","build","doesThrowAsync","execute","expected","copyTestFiles","source","resolveTestPath","destination","copyDir","last","getLastInvocation","options","type","nameReadable","nameCamel","AbstractTestTest"],"sources":["../../../../src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts"],"sourcesContent":["import { SelectChoice } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureCode } from '../../../features/features.types'\nimport CreateAction from '../../../features/test/actions/CreateAction'\nimport AbstractTestTest from '../../../tests/AbstractTestTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nconst expectedAbstractTests = [\n\t'AbstractSpruceTest (default)',\n\t'AbstractStoreTest (requires install)',\n\t'AbstractViewControllerTest (requires install)',\n\t'AbstractSpruceFixtureTest',\n\t'AbstractTest',\n\t'AbstractTest2',\n\t'AbstractBananaTestDifferentThanFileName',\n]\n\nconst featuresWithRegisteredTests: {\n\tfeatureCode: FeatureCode\n\tclassName: string\n}[] = [\n\t{ featureCode: 'store', className: 'AbstractStoreTest' },\n\t{ featureCode: 'view', className: 'AbstractViewControllerTest' },\n]\n\nexport default class SelectingAnAbstractTestClassTest extends AbstractTestTest {\n\t@test()\n\tprotected static async asksForYouToSelectABaseClass() {\n\t\tconst { promise } = await this.installCopyTestFilesSelectLocalAbstractTest()\n\n\t\tconst results = await promise\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.buildAndAssertTestFailsAsExpected()\n\t}\n\n\t@test()\n\tprotected static async canSelectAbstractClassWhileSelectingSubDir() {\n\t\tconst testDir = this.resolvePath('src', '__tests__', 'behavioral', 'taco')\n\t\tdiskUtil.createDir(testDir)\n\n\t\tawait this.installAndCopyTestFiles()\n\n\t\tconst { promise } = await this.invokeCreateActionAndWaitForInput()\n\n\t\tawait this.ui.sendInput('taco')\n\n\t\tawait this.waitForInput()\n\n\t\tthis.selectOptionBasedOnLabel('AbstractBananaTestDifferentThanFileName')\n\n\t\tawait promise\n\n\t\tawait this.buildAndAssertTestFailsAsExpected()\n\t}\n\n\t@test()\n\tprotected static async canSelectAbstractTestBasedOnEventEmitter() {\n\t\tconst cli = await this.installTests()\n\t\tvoid cli.on('test.register-abstract-test-classes', async () => {\n\t\t\treturn {\n\t\t\t\tabstractClasses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'TestClass',\n\t\t\t\t\t\tlabel: 'TestClass',\n\t\t\t\t\t\timport: '@sprucelabs/another-lib',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'TestClass2',\n\t\t\t\t\t\tlabel: 'TestClass2',\n\t\t\t\t\t\timport: '@sprucelabs/another-lib',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\n\t\tconst { choices, promise } =\n\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\tassert.doesInclude(choices, {\n\t\t\tlabel: 'TestClass',\n\t\t})\n\n\t\tassert.doesInclude(choices, {\n\t\t\tlabel: 'TestClass2',\n\t\t})\n\n\t\tthis.selectOptionBasedOnLabel('TestClass2')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { TestClass2 } from '@sprucelabs/another-lib'\"\n\t\t)\n\n\t\tassert.doesInclude(contents, 'extends TestClass2')\n\t}\n\n\t@test()\n\tprotected static async installingAFeatureRemovesLabelFromName() {\n\t\tthis.commandFaker.fakeInstall()\n\n\t\tawait this.installTests()\n\n\t\tconst testFeature = this.getFeatureInstaller().getFeature('test')\n\n\t\tfor (const feat of featuresWithRegisteredTests) {\n\t\t\tawait this.getFeatureInstaller().install({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\tcode: feat.featureCode,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\n\t\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\t\tassert.isTruthy(\n\t\t\t\tcandidates.find(({ name }) => {\n\t\t\t\t\treturn name === feat.className\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async selectingUninstalledTestInstallsTheFeature() {\n\t\tthis.commandFaker.fakeInstall()\n\n\t\tfor (const feat of featuresWithRegisteredTests) {\n\t\t\tthis.cwd = diskUtil.createRandomTempDir()\n\t\t\tawait this.installTests()\n\n\t\t\tconst { choices, promise } =\n\t\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\t\tconst match = choices.find((c: any) => c.label.includes(feat.className))\n\n\t\t\tassert.isTruthy(match)\n\n\t\t\tlet isInstalled = await this.getFeatureInstaller().isInstalled(\n\t\t\t\tfeat.featureCode as any\n\t\t\t)\n\t\t\tassert.isFalse(isInstalled)\n\n\t\t\tawait this.ui.sendInput(match?.value)\n\n\t\t\tawait promise\n\n\t\t\tisInstalled = await this.getFeatureInstaller().isInstalled(\n\t\t\t\tfeat.featureCode as any\n\t\t\t)\n\t\t\tassert.isTrue(isInstalled)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static relativePathsAddDotSlash() {\n\t\tconst action = this.Action('test', 'create') as CreateAction\n\n\t\t//@ts-ignore\n\t\tconst actual = action.buildParentClassFromCandidate(\n\t\t\t{\n\t\t\t\tlabel: 'test',\n\t\t\t\tname: 'AbstractTest',\n\t\t\t\tpath: this.resolvePath('test/AbstractTest'),\n\t\t\t\tisDefaultExport: false,\n\t\t\t},\n\t\t\tthis.resolvePath('test')\n\t\t)\n\n\t\tassert.isEqual(actual.importPath, './AbstractTest')\n\t}\n\n\tprivate static async buildAndAssertTestFailsAsExpected() {\n\t\tawait this.Service('build').build()\n\n\t\tawait assert.doesThrowAsync(\n\t\t\t() => this.Service('command').execute('yarn test'),\n\t\t\t/false.*?does not equal.*?true/gis\n\t\t)\n\t}\n\n\tprivate static async installCopyTestFilesSelectLocalAbstractTest() {\n\t\tawait this.installAndCopyTestFiles()\n\n\t\tconst { choices, promise } =\n\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\tfor (const expected of expectedAbstractTests) {\n\t\t\tassert.doesInclude(choices, { label: expected })\n\t\t}\n\n\t\tthis.selectOptionBasedOnLabel('AbstractBananaTestDifferentThanFileName')\n\n\t\treturn { promise }\n\t}\n\n\tprivate static async installAndCopyTestFiles() {\n\t\tawait this.installTests()\n\t\tawait this.copyTestFiles()\n\t}\n\n\tprivate static async copyTestFiles() {\n\t\tconst source = this.resolveTestPath('abstract_tests')\n\t\tconst destination = this.resolvePath('src')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\t}\n\n\tprivate static async executeCreateUntilAbstractClassSelection() {\n\t\tconst { promise } = await this.invokeCreateActionAndWaitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\t\tconst { choices } = last.options.options ?? {}\n\n\t\treturn { promise, choices } as {\n\t\t\tpromise: Promise<any>\n\t\t\tchoices: SelectChoice[]\n\t\t}\n\t}\n\n\tprivate static async invokeCreateActionAndWaitForInput() {\n\t\tconst promise = this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Can book appointment',\n\t\t\tnameCamel: 'canBookAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\t\treturn { promise }\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -12,4 +12,5 @@ export default class DataStoreStoreTest extends AbstractSkillTest {
|
|
|
12
12
|
protected static canImportAGoodStore(): Promise<void>;
|
|
13
13
|
protected static canImportTwoGoodStores(): Promise<void>;
|
|
14
14
|
protected static accuratelyReportsBadStoreAfterGoodStoresAreCreated(): Promise<void>;
|
|
15
|
+
protected static globbyPatternLooksEverywhere(): Promise<void>;
|
|
15
16
|
}
|
|
@@ -37,13 +37,13 @@ var _AbstractSkillTest2 = _interopRequireDefault(require("../../tests/AbstractSk
|
|
|
37
37
|
|
|
38
38
|
var _test2 = _interopRequireDefault(require("../../tests/utilities/test.utility"));
|
|
39
39
|
|
|
40
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2;
|
|
40
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2;
|
|
41
41
|
|
|
42
42
|
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); }; }
|
|
43
43
|
|
|
44
44
|
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; } }
|
|
45
45
|
|
|
46
|
-
var DataStoreStoreTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)(), _dec4 = (0, _test.test)(), _dec5 = (0, _test.test)(), _dec6 = (0, _test.test)(), _dec7 = (0, _test.test)(), (_class = (_class2 = /*#__PURE__*/function (_AbstractSkillTest) {
|
|
46
|
+
var DataStoreStoreTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)(), _dec4 = (0, _test.test)(), _dec5 = (0, _test.test)(), _dec6 = (0, _test.test)(), _dec7 = (0, _test.test)(), _dec8 = (0, _test.test)(), (_class = (_class2 = /*#__PURE__*/function (_AbstractSkillTest) {
|
|
47
47
|
(0, _inherits2["default"])(DataStoreStoreTest, _AbstractSkillTest);
|
|
48
48
|
|
|
49
49
|
var _super = _createSuper(DataStoreStoreTest);
|
|
@@ -367,8 +367,35 @@ var DataStoreStoreTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _
|
|
|
367
367
|
|
|
368
368
|
return accuratelyReportsBadStoreAfterGoodStoresAreCreated;
|
|
369
369
|
}()
|
|
370
|
+
}, {
|
|
371
|
+
key: "globbyPatternLooksEverywhere",
|
|
372
|
+
value: function () {
|
|
373
|
+
var _globbyPatternLooksEverywhere = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
|
|
374
|
+
var expected;
|
|
375
|
+
return _regenerator["default"].wrap(function _callee10$(_context10) {
|
|
376
|
+
while (1) {
|
|
377
|
+
switch (_context10.prev = _context10.next) {
|
|
378
|
+
case 0:
|
|
379
|
+
expected = this.resolvePath('src', '**', '*.store.ts'); //@ts-ignore
|
|
380
|
+
|
|
381
|
+
_test.assert.isEqual(this.store.generateGlobbyPattern(), expected);
|
|
382
|
+
|
|
383
|
+
case 2:
|
|
384
|
+
case "end":
|
|
385
|
+
return _context10.stop();
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}, _callee10, this);
|
|
389
|
+
}));
|
|
390
|
+
|
|
391
|
+
function globbyPatternLooksEverywhere() {
|
|
392
|
+
return _globbyPatternLooksEverywhere.apply(this, arguments);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
return globbyPatternLooksEverywhere;
|
|
396
|
+
}()
|
|
370
397
|
}]);
|
|
371
398
|
return DataStoreStoreTest;
|
|
372
|
-
}(_AbstractSkillTest2["default"]), (0, _defineProperty2["default"])(_class2, "store", void 0), (0, _defineProperty2["default"])(_class2, "badStoreDest", void 0), (0, _defineProperty2["default"])(_class2, "skillCacheKey", 'stores'), _class2), ((0, _applyDecoratedDescriptor2["default"])(_class, "canInstantiateDataStore", [_dec], Object.getOwnPropertyDescriptor(_class, "canInstantiateDataStore"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "hasFetchStores", [_dec2], Object.getOwnPropertyDescriptor(_class, "hasFetchStores"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "fetchesNoStoresToStart", [_dec3], Object.getOwnPropertyDescriptor(_class, "fetchesNoStoresToStart"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "throwsWhenStoreIsNotValid", [_dec4], Object.getOwnPropertyDescriptor(_class, "throwsWhenStoreIsNotValid"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canImportAGoodStore", [_dec5], Object.getOwnPropertyDescriptor(_class, "canImportAGoodStore"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canImportTwoGoodStores", [_dec6], Object.getOwnPropertyDescriptor(_class, "canImportTwoGoodStores"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "accuratelyReportsBadStoreAfterGoodStoresAreCreated", [_dec7], Object.getOwnPropertyDescriptor(_class, "accuratelyReportsBadStoreAfterGoodStoresAreCreated"), _class)), _class));
|
|
399
|
+
}(_AbstractSkillTest2["default"]), (0, _defineProperty2["default"])(_class2, "store", void 0), (0, _defineProperty2["default"])(_class2, "badStoreDest", void 0), (0, _defineProperty2["default"])(_class2, "skillCacheKey", 'stores'), _class2), ((0, _applyDecoratedDescriptor2["default"])(_class, "canInstantiateDataStore", [_dec], Object.getOwnPropertyDescriptor(_class, "canInstantiateDataStore"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "hasFetchStores", [_dec2], Object.getOwnPropertyDescriptor(_class, "hasFetchStores"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "fetchesNoStoresToStart", [_dec3], Object.getOwnPropertyDescriptor(_class, "fetchesNoStoresToStart"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "throwsWhenStoreIsNotValid", [_dec4], Object.getOwnPropertyDescriptor(_class, "throwsWhenStoreIsNotValid"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canImportAGoodStore", [_dec5], Object.getOwnPropertyDescriptor(_class, "canImportAGoodStore"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canImportTwoGoodStores", [_dec6], Object.getOwnPropertyDescriptor(_class, "canImportTwoGoodStores"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "accuratelyReportsBadStoreAfterGoodStoresAreCreated", [_dec7], Object.getOwnPropertyDescriptor(_class, "accuratelyReportsBadStoreAfterGoodStoresAreCreated"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "globbyPatternLooksEverywhere", [_dec8], Object.getOwnPropertyDescriptor(_class, "globbyPatternLooksEverywhere"), _class)), _class));
|
|
373
400
|
exports["default"] = DataStoreStoreTest;
|
|
374
401
|
//# sourceMappingURL=DataStoreStore.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataStoreStore.test.js","names":["DataStoreStoreTest","badStoreDest","resolvePath","diskUtil","deleteFile","store","Store","assert","isTruthy","fetchStores","cwd","freshTmpDir","results","isLength","writeFile","doesThrowAsync","err","errorAssert","assertError","file","Action","execute","nameReadable","nameReadablePlural","namePascal","isFalsy","errors","storeFilepath","testUtil","assertFileByNameInGeneratedFiles","files","stores","doesInclude","className","path","AbstractSkillTest"],"sources":["../../../src/__tests__/implementation/DataStoreStore.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport StoreStore from '../../features/store/stores/StoreStore'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class DataStoreStoreTest extends AbstractSkillTest {\n\tprivate static store: StoreStore\n\tprivate static badStoreDest: string\n\tprotected static skillCacheKey = 'stores'\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tthis.badStoreDest = this.resolvePath('src/stores/Bad.store.ts')\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tdiskUtil.deleteFile(this.badStoreDest)\n\n\t\tthis.store = this.Store('store')\n\t}\n\n\t@test()\n\tprotected static async canInstantiateDataStore() {\n\t\tassert.isTruthy(this.Store('store'))\n\t}\n\n\t@test()\n\tprotected static async hasFetchStores() {\n\t\tassert.isTruthy(this.Store('store').fetchStores)\n\t}\n\n\t@test()\n\tprotected static async fetchesNoStoresToStart() {\n\t\tthis.cwd = this.freshTmpDir()\n\n\t\tconst results = await this.store.fetchStores()\n\t\tassert.isLength(results, 0)\n\t}\n\n\t@test()\n\tprotected static async throwsWhenStoreIsNotValid() {\n\t\tdiskUtil.writeFile(this.badStoreDest, 'throw new Error(\"Cheese!\")')\n\n\t\tconst err = await assert.doesThrowAsync(() => this.store.fetchStores())\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT', {\n\t\t\tfile: 'Bad.store.ts',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canImportAGoodStore() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Good',\n\t\t\tnameReadablePlural: 'Good',\n\t\t\tnamePascal: 'Good',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst storeFilepath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Good.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst stores = await this.store.fetchStores()\n\t\tassert.isLength(stores, 1)\n\n\t\tassert.doesInclude(stores, {\n\t\t\tclassName: 'GoodStore',\n\t\t\tpath: storeFilepath,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canImportTwoGoodStores() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Apple',\n\t\t\tnameReadablePlural: 'Apples',\n\t\t\tnamePascal: 'Apple',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst storeFilepath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Apples.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst stores = await this.store.fetchStores()\n\t\tassert.isLength(stores, 2)\n\n\t\tassert.doesInclude(stores, {\n\t\t\tclassName: 'ApplesStore',\n\t\t\tpath: storeFilepath,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async accuratelyReportsBadStoreAfterGoodStoresAreCreated() {\n\t\tdiskUtil.writeFile(this.badStoreDest, 'throw new Error(\"Cheese!\")')\n\n\t\tconst err = await assert.doesThrowAsync(() => this.store.fetchStores())\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT', {\n\t\t\tfile: 'Bad.store.ts',\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;IAEqBA,kB,WAiBnB,iB,UAKA,iB,UAKA,iB,UAQA,iB,UAWA,iB,UAwBA,iB,UAwBA,iB;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"DataStoreStore.test.js","names":["DataStoreStoreTest","badStoreDest","resolvePath","diskUtil","deleteFile","store","Store","assert","isTruthy","fetchStores","cwd","freshTmpDir","results","isLength","writeFile","doesThrowAsync","err","errorAssert","assertError","file","Action","execute","nameReadable","nameReadablePlural","namePascal","isFalsy","errors","storeFilepath","testUtil","assertFileByNameInGeneratedFiles","files","stores","doesInclude","className","path","expected","isEqual","generateGlobbyPattern","AbstractSkillTest"],"sources":["../../../src/__tests__/implementation/DataStoreStore.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport StoreStore from '../../features/store/stores/StoreStore'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class DataStoreStoreTest extends AbstractSkillTest {\n\tprivate static store: StoreStore\n\tprivate static badStoreDest: string\n\tprotected static skillCacheKey = 'stores'\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tthis.badStoreDest = this.resolvePath('src/stores/Bad.store.ts')\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tdiskUtil.deleteFile(this.badStoreDest)\n\n\t\tthis.store = this.Store('store')\n\t}\n\n\t@test()\n\tprotected static async canInstantiateDataStore() {\n\t\tassert.isTruthy(this.Store('store'))\n\t}\n\n\t@test()\n\tprotected static async hasFetchStores() {\n\t\tassert.isTruthy(this.Store('store').fetchStores)\n\t}\n\n\t@test()\n\tprotected static async fetchesNoStoresToStart() {\n\t\tthis.cwd = this.freshTmpDir()\n\n\t\tconst results = await this.store.fetchStores()\n\t\tassert.isLength(results, 0)\n\t}\n\n\t@test()\n\tprotected static async throwsWhenStoreIsNotValid() {\n\t\tdiskUtil.writeFile(this.badStoreDest, 'throw new Error(\"Cheese!\")')\n\n\t\tconst err = await assert.doesThrowAsync(() => this.store.fetchStores())\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT', {\n\t\t\tfile: 'Bad.store.ts',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canImportAGoodStore() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Good',\n\t\t\tnameReadablePlural: 'Good',\n\t\t\tnamePascal: 'Good',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst storeFilepath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Good.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst stores = await this.store.fetchStores()\n\t\tassert.isLength(stores, 1)\n\n\t\tassert.doesInclude(stores, {\n\t\t\tclassName: 'GoodStore',\n\t\t\tpath: storeFilepath,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canImportTwoGoodStores() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Apple',\n\t\t\tnameReadablePlural: 'Apples',\n\t\t\tnamePascal: 'Apple',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst storeFilepath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Apples.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst stores = await this.store.fetchStores()\n\t\tassert.isLength(stores, 2)\n\n\t\tassert.doesInclude(stores, {\n\t\t\tclassName: 'ApplesStore',\n\t\t\tpath: storeFilepath,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async accuratelyReportsBadStoreAfterGoodStoresAreCreated() {\n\t\tdiskUtil.writeFile(this.badStoreDest, 'throw new Error(\"Cheese!\")')\n\n\t\tconst err = await assert.doesThrowAsync(() => this.store.fetchStores())\n\n\t\terrorAssert.assertError(err, 'FAILED_TO_IMPORT', {\n\t\t\tfile: 'Bad.store.ts',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async globbyPatternLooksEverywhere() {\n\t\tconst expected = this.resolvePath('src', '**', '*.store.ts')\n\n\t\t//@ts-ignore\n\t\tassert.isEqual(this.store.generateGlobbyPattern(), expected)\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -380,7 +380,7 @@ var EventWriter = /*#__PURE__*/function (_AbstractWriter) {
|
|
|
380
380
|
|
|
381
381
|
var schemaTypesFile = _path["default"].join(schemaTypesLookupDir, _spruceSkillUtils.DEFAULT_SCHEMA_TYPES_FILENAME);
|
|
382
382
|
|
|
383
|
-
var relativeTypesFile =
|
|
383
|
+
var relativeTypesFile = _spruceSkillUtils.diskUtil.resolveRelativePath(_path["default"].dirname(resolvedDestination), schemaTypesFile);
|
|
384
384
|
|
|
385
385
|
relativeTypesFile = relativeTypesFile.replace(_path["default"].extname(relativeTypesFile), '');
|
|
386
386
|
return relativeTypesFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventWriter.js","names":["CONTRACT_FILE_NAME","EventWriter","destinationDir","options","eventContractTemplateItems","shouldImportCoreEvents","generated","item","push","writeContract","eventContractTemplateItem","writeCombinedEvents","templateItems","Promise","all","lint","schemaTemplateItems","destinationFile","diskUtil","resolvePath","namespaceCamel","generateEventContractFileName","eventsContractContents","templates","eventContract","writeFileIfChangedMixinResults","Object","keys","eventSignatures","results","cwd","doesHashSprucePathExist","path","resolveHashSprucePath","doesFileExist","contents","combinedEventsContract","schemaTypesLookupDir","fullyQualifiedEventName","event","eventNameUtil","split","resolvedDestination","eventDiskUtil","resolveListenerPath","relativeTypesFile","resolveSchemaTypesFile","namespace","eventNamespace","listenerContents","listener","schemaTypesFile","destination","listeners","version","nameKebab","nameCamel","nameReadable","isGlobal","templateMethod","name","action","description","context","files","file","resolveEventPath","fileName","eventName","writeFile","pathUtil","join","DEFAULT_SCHEMA_TYPES_FILENAME","relative","dirname","replace","extname","AbstractWriter"],"sources":["../../../../src/features/event/writers/EventWriter.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { SchemaTemplateItem } from '@sprucelabs/schema'\nimport { eventDiskUtil, eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventListenerOptions,\n\tListenerTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport { GeneratedFile } from '../../../types/cli.types'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nconst CONTRACT_FILE_NAME = `events.contract.ts`\nexport default class EventWriter extends AbstractWriter {\n\tpublic async writeContracts(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tshouldImportCoreEvents?: boolean\n\t\t\tskillEventContractTypesFile: string\n\t\t\teventBuilderFile: string\n\t\t}\n\t) {\n\t\tconst { eventContractTemplateItems, shouldImportCoreEvents = true } =\n\t\t\toptions\n\n\t\tconst generated: Promise<GeneratedFile>[] = []\n\n\t\tfor (const item of eventContractTemplateItems) {\n\t\t\tgenerated.push(\n\t\t\t\tthis.writeContract({\n\t\t\t\t\t...options,\n\t\t\t\t\tdestinationDir,\n\t\t\t\t\teventContractTemplateItem: item,\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\n\t\tgenerated.push(\n\t\t\tthis.writeCombinedEvents({\n\t\t\t\t...options,\n\t\t\t\tshouldImportCoreEvents,\n\t\t\t\tdestinationDir,\n\t\t\t\ttemplateItems: eventContractTemplateItems,\n\t\t\t})\n\t\t)\n\n\t\tconst all = await Promise.all(generated)\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn all\n\t}\n\n\tprivate async writeContract(options: {\n\t\tdestinationDir: string\n\t\teventContractTemplateItem: EventContractTemplateItem\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\teventBuilderFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir, eventContractTemplateItem, schemaTemplateItems } =\n\t\t\toptions\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\teventContractTemplateItem.namespaceCamel,\n\t\t\tgenerateEventContractFileName(eventContractTemplateItem)\n\t\t)\n\n\t\tconst eventsContractContents = this.templates.eventContract({\n\t\t\t...options,\n\t\t\t...eventContractTemplateItem,\n\t\t\tschemaTemplateItems,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\teventsContractContents,\n\t\t\t`The event contract for ${\n\t\t\t\tObject.keys(eventContractTemplateItem.eventSignatures)[0]\n\t\t\t}`\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic hasCombinedContractBeenWritten(cwd: string) {\n\t\tif (diskUtil.doesHashSprucePathExist(cwd)) {\n\t\t\tconst path = diskUtil.resolveHashSprucePath(\n\t\t\t\tcwd,\n\t\t\t\t'events',\n\t\t\t\tCONTRACT_FILE_NAME\n\t\t\t)\n\n\t\t\treturn diskUtil.doesFileExist(path)\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate async writeCombinedEvents(options: {\n\t\tdestinationDir: string\n\t\ttemplateItems: EventContractTemplateItem[]\n\t\tshouldImportCoreEvents?: boolean\n\t\tskillEventContractTypesFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir } = options\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\tCONTRACT_FILE_NAME\n\t\t)\n\n\t\tconst contents = this.templates.combinedEventsContract(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\tcontents,\n\t\t\t'All event contracts combined to a single export.'\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic async writeListener(\n\t\tdestinationDir: string,\n\t\toptions: Omit<EventListenerOptions, 'schemaTypesFile'> & {\n\t\t\tschemaTypesLookupDir: string\n\t\t}\n\t) {\n\t\tconst { schemaTypesLookupDir, fullyQualifiedEventName } = options\n\n\t\tconst event = eventNameUtil.split(fullyQualifiedEventName)\n\t\tconst resolvedDestination = eventDiskUtil.resolveListenerPath(\n\t\t\tdestinationDir,\n\t\t\tevent as any\n\t\t)\n\n\t\tconst relativeTypesFile = this.resolveSchemaTypesFile({\n\t\t\tnamespace: event.eventNamespace,\n\t\t\tschemaTypesLookupDir,\n\t\t\tresolvedDestination,\n\t\t})\n\n\t\tconst listenerContents = this.templates.listener({\n\t\t\t...options,\n\t\t\tschemaTypesFile: relativeTypesFile,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tlistenerContents,\n\t\t\t`Listener for ${fullyQualifiedEventName}.`\n\t\t)\n\n\t\tawait this.lint(resolvedDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeListenerMap(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tlisteners: ListenerTemplateItem[]\n\t\t}\n\t) {\n\t\tconst destination = diskUtil.resolvePath(destinationDir, 'listeners.ts')\n\t\tconst contents = this.templates.listeners({ listeners: options.listeners })\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'All your listeners imported to one place for your skill to use when booting!'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tpublic async writeEvent(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tnameCamel: string\n\t\t\tnameKebab: string\n\t\t\tversion: string\n\t\t\tnameReadable: string\n\t\t\tisGlobal?: boolean\n\t\t}\n\t) {\n\t\tconst {\n\t\t\tversion,\n\t\t\tnameKebab,\n\t\t\tnameCamel,\n\t\t\tnameReadable,\n\t\t\tisGlobal = false,\n\t\t} = options\n\n\t\tconst templates: ({\n\t\t\tcontext?: any\n\t\t\ttemplateMethod:\n\t\t\t\t| 'eventEmitPayload'\n\t\t\t\t| 'eventEmitTarget'\n\t\t\t\t| 'eventResponsePayload'\n\t\t\t\t| 'permissionContractBuilder'\n\t\t\t\t| 'eventOptions'\n\t\t} & Omit<GeneratedFile, 'path'>)[] = [\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitPayload',\n\t\t\t\tname: 'emitPayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The payload that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitTarget',\n\t\t\t\tname: 'emitTarget.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The target that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventResponsePayload',\n\t\t\t\tname: 'responsePayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'The payload that every listener will need to respond with. Delete this file for events that are fire and forget.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'emitPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Permissions someone else will need to emit your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Emit',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'listenPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'Permissions someone else will need to listen to your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Listen',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventOptions',\n\t\t\t\tname: 'event.options.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Extra options that can be set for your event',\n\t\t\t\tcontext: {\n\t\t\t\t\tisGlobal,\n\t\t\t\t},\n\t\t\t},\n\t\t]\n\n\t\tconst files: GeneratedFile[] = []\n\n\t\tfor (const file of templates) {\n\t\t\tconst destination = eventDiskUtil.resolveEventPath(destinationDir, {\n\t\t\t\tfileName: file.name as any,\n\t\t\t\teventName: nameKebab,\n\t\t\t\tversion,\n\t\t\t})\n\n\t\t\tconst contents = this.templates[file.templateMethod]({\n\t\t\t\tnameCamel,\n\t\t\t\tnameReadable,\n\t\t\t\tversion,\n\t\t\t\t...file.context,\n\t\t\t})\n\n\t\t\tdiskUtil.writeFile(destination, contents)\n\n\t\t\tfiles.push({\n\t\t\t\t...file,\n\t\t\t\tpath: destination,\n\t\t\t})\n\t\t}\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn files\n\t}\n\n\tprivate resolveSchemaTypesFile(options: {\n\t\tnamespace?: string\n\t\tschemaTypesLookupDir: string\n\t\tresolvedDestination: string\n\t}) {\n\t\tconst { schemaTypesLookupDir, resolvedDestination, namespace } = options\n\n\t\tif (!namespace) {\n\t\t\treturn '@sprucelabs/mercury-types'\n\t\t}\n\n\t\tconst schemaTypesFile = pathUtil.join(\n\t\t\tschemaTypesLookupDir,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet relativeTypesFile = pathUtil.relative(\n\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\tschemaTypesFile\n\t\t)\n\n\t\trelativeTypesFile = relativeTypesFile.replace(\n\t\t\tpathUtil.extname(relativeTypesFile),\n\t\t\t''\n\t\t)\n\n\t\treturn relativeTypesFile\n\t}\n}\n\nexport function generateEventContractFileName(options: {\n\tnameCamel: string\n\tversion: string\n}): string {\n\treturn `${options.nameCamel}.${options.version}.contract.ts`\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EventWriter.js","names":["CONTRACT_FILE_NAME","EventWriter","destinationDir","options","eventContractTemplateItems","shouldImportCoreEvents","generated","item","push","writeContract","eventContractTemplateItem","writeCombinedEvents","templateItems","Promise","all","lint","schemaTemplateItems","destinationFile","diskUtil","resolvePath","namespaceCamel","generateEventContractFileName","eventsContractContents","templates","eventContract","writeFileIfChangedMixinResults","Object","keys","eventSignatures","results","cwd","doesHashSprucePathExist","path","resolveHashSprucePath","doesFileExist","contents","combinedEventsContract","schemaTypesLookupDir","fullyQualifiedEventName","event","eventNameUtil","split","resolvedDestination","eventDiskUtil","resolveListenerPath","relativeTypesFile","resolveSchemaTypesFile","namespace","eventNamespace","listenerContents","listener","schemaTypesFile","destination","listeners","version","nameKebab","nameCamel","nameReadable","isGlobal","templateMethod","name","action","description","context","files","file","resolveEventPath","fileName","eventName","writeFile","pathUtil","join","DEFAULT_SCHEMA_TYPES_FILENAME","resolveRelativePath","dirname","replace","extname","AbstractWriter"],"sources":["../../../../src/features/event/writers/EventWriter.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { SchemaTemplateItem } from '@sprucelabs/schema'\nimport { eventDiskUtil, eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventListenerOptions,\n\tListenerTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport { GeneratedFile } from '../../../types/cli.types'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nconst CONTRACT_FILE_NAME = `events.contract.ts`\nexport default class EventWriter extends AbstractWriter {\n\tpublic async writeContracts(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tshouldImportCoreEvents?: boolean\n\t\t\tskillEventContractTypesFile: string\n\t\t\teventBuilderFile: string\n\t\t}\n\t) {\n\t\tconst { eventContractTemplateItems, shouldImportCoreEvents = true } =\n\t\t\toptions\n\n\t\tconst generated: Promise<GeneratedFile>[] = []\n\n\t\tfor (const item of eventContractTemplateItems) {\n\t\t\tgenerated.push(\n\t\t\t\tthis.writeContract({\n\t\t\t\t\t...options,\n\t\t\t\t\tdestinationDir,\n\t\t\t\t\teventContractTemplateItem: item,\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\n\t\tgenerated.push(\n\t\t\tthis.writeCombinedEvents({\n\t\t\t\t...options,\n\t\t\t\tshouldImportCoreEvents,\n\t\t\t\tdestinationDir,\n\t\t\t\ttemplateItems: eventContractTemplateItems,\n\t\t\t})\n\t\t)\n\n\t\tconst all = await Promise.all(generated)\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn all\n\t}\n\n\tprivate async writeContract(options: {\n\t\tdestinationDir: string\n\t\teventContractTemplateItem: EventContractTemplateItem\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\teventBuilderFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir, eventContractTemplateItem, schemaTemplateItems } =\n\t\t\toptions\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\teventContractTemplateItem.namespaceCamel,\n\t\t\tgenerateEventContractFileName(eventContractTemplateItem)\n\t\t)\n\n\t\tconst eventsContractContents = this.templates.eventContract({\n\t\t\t...options,\n\t\t\t...eventContractTemplateItem,\n\t\t\tschemaTemplateItems,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\teventsContractContents,\n\t\t\t`The event contract for ${\n\t\t\t\tObject.keys(eventContractTemplateItem.eventSignatures)[0]\n\t\t\t}`\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic hasCombinedContractBeenWritten(cwd: string) {\n\t\tif (diskUtil.doesHashSprucePathExist(cwd)) {\n\t\t\tconst path = diskUtil.resolveHashSprucePath(\n\t\t\t\tcwd,\n\t\t\t\t'events',\n\t\t\t\tCONTRACT_FILE_NAME\n\t\t\t)\n\n\t\t\treturn diskUtil.doesFileExist(path)\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate async writeCombinedEvents(options: {\n\t\tdestinationDir: string\n\t\ttemplateItems: EventContractTemplateItem[]\n\t\tshouldImportCoreEvents?: boolean\n\t\tskillEventContractTypesFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir } = options\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\tCONTRACT_FILE_NAME\n\t\t)\n\n\t\tconst contents = this.templates.combinedEventsContract(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\tcontents,\n\t\t\t'All event contracts combined to a single export.'\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic async writeListener(\n\t\tdestinationDir: string,\n\t\toptions: Omit<EventListenerOptions, 'schemaTypesFile'> & {\n\t\t\tschemaTypesLookupDir: string\n\t\t}\n\t) {\n\t\tconst { schemaTypesLookupDir, fullyQualifiedEventName } = options\n\n\t\tconst event = eventNameUtil.split(fullyQualifiedEventName)\n\t\tconst resolvedDestination = eventDiskUtil.resolveListenerPath(\n\t\t\tdestinationDir,\n\t\t\tevent as any\n\t\t)\n\n\t\tconst relativeTypesFile = this.resolveSchemaTypesFile({\n\t\t\tnamespace: event.eventNamespace,\n\t\t\tschemaTypesLookupDir,\n\t\t\tresolvedDestination,\n\t\t})\n\n\t\tconst listenerContents = this.templates.listener({\n\t\t\t...options,\n\t\t\tschemaTypesFile: relativeTypesFile,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tlistenerContents,\n\t\t\t`Listener for ${fullyQualifiedEventName}.`\n\t\t)\n\n\t\tawait this.lint(resolvedDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeListenerMap(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tlisteners: ListenerTemplateItem[]\n\t\t}\n\t) {\n\t\tconst destination = diskUtil.resolvePath(destinationDir, 'listeners.ts')\n\t\tconst contents = this.templates.listeners({ listeners: options.listeners })\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'All your listeners imported to one place for your skill to use when booting!'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tpublic async writeEvent(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tnameCamel: string\n\t\t\tnameKebab: string\n\t\t\tversion: string\n\t\t\tnameReadable: string\n\t\t\tisGlobal?: boolean\n\t\t}\n\t) {\n\t\tconst {\n\t\t\tversion,\n\t\t\tnameKebab,\n\t\t\tnameCamel,\n\t\t\tnameReadable,\n\t\t\tisGlobal = false,\n\t\t} = options\n\n\t\tconst templates: ({\n\t\t\tcontext?: any\n\t\t\ttemplateMethod:\n\t\t\t\t| 'eventEmitPayload'\n\t\t\t\t| 'eventEmitTarget'\n\t\t\t\t| 'eventResponsePayload'\n\t\t\t\t| 'permissionContractBuilder'\n\t\t\t\t| 'eventOptions'\n\t\t} & Omit<GeneratedFile, 'path'>)[] = [\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitPayload',\n\t\t\t\tname: 'emitPayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The payload that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitTarget',\n\t\t\t\tname: 'emitTarget.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The target that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventResponsePayload',\n\t\t\t\tname: 'responsePayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'The payload that every listener will need to respond with. Delete this file for events that are fire and forget.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'emitPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Permissions someone else will need to emit your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Emit',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'listenPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'Permissions someone else will need to listen to your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Listen',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventOptions',\n\t\t\t\tname: 'event.options.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Extra options that can be set for your event',\n\t\t\t\tcontext: {\n\t\t\t\t\tisGlobal,\n\t\t\t\t},\n\t\t\t},\n\t\t]\n\n\t\tconst files: GeneratedFile[] = []\n\n\t\tfor (const file of templates) {\n\t\t\tconst destination = eventDiskUtil.resolveEventPath(destinationDir, {\n\t\t\t\tfileName: file.name as any,\n\t\t\t\teventName: nameKebab,\n\t\t\t\tversion,\n\t\t\t})\n\n\t\t\tconst contents = this.templates[file.templateMethod]({\n\t\t\t\tnameCamel,\n\t\t\t\tnameReadable,\n\t\t\t\tversion,\n\t\t\t\t...file.context,\n\t\t\t})\n\n\t\t\tdiskUtil.writeFile(destination, contents)\n\n\t\t\tfiles.push({\n\t\t\t\t...file,\n\t\t\t\tpath: destination,\n\t\t\t})\n\t\t}\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn files\n\t}\n\n\tprivate resolveSchemaTypesFile(options: {\n\t\tnamespace?: string\n\t\tschemaTypesLookupDir: string\n\t\tresolvedDestination: string\n\t}) {\n\t\tconst { schemaTypesLookupDir, resolvedDestination, namespace } = options\n\n\t\tif (!namespace) {\n\t\t\treturn '@sprucelabs/mercury-types'\n\t\t}\n\n\t\tconst schemaTypesFile = pathUtil.join(\n\t\t\tschemaTypesLookupDir,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet relativeTypesFile = diskUtil.resolveRelativePath(\n\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\tschemaTypesFile\n\t\t)\n\n\t\trelativeTypesFile = relativeTypesFile.replace(\n\t\t\tpathUtil.extname(relativeTypesFile),\n\t\t\t''\n\t\t)\n\n\t\treturn relativeTypesFile\n\t}\n}\n\nexport function generateEventContractFileName(options: {\n\tnameCamel: string\n\tversion: string\n}): string {\n\treturn `${options.nameCamel}.${options.version}.contract.ts`\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AAUA;;;;;;;;;;;;;;;;AAEA,IAAMA,kBAAkB,uBAAxB;;IACqBC,W;;;;;;;;;;;;;0GACpB,iBACCC,cADD,EAECC,OAFD;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAUSC,0BAVT,GAWED,OAXF,CAUSC,0BAVT,0BAWED,OAXF,CAUqCE,sBAVrC,EAUqCA,sBAVrC,sCAU8D,IAV9D;gBAaOC,SAbP,GAa6C,EAb7C;gBAAA,uCAeoBF,0BAfpB;;gBAAA;kBAeC,oDAA+C;oBAApCG,IAAoC;oBAC9CD,SAAS,CAACE,IAAV,CACC,KAAKC,aAAL,iCACIN,OADJ;sBAECD,cAAc,EAAdA,cAFD;sBAGCQ,yBAAyB,EAAEH;oBAH5B,GADD;kBAOA;gBAvBF;kBAAA;gBAAA;kBAAA;gBAAA;;gBAyBCD,SAAS,CAACE,IAAV,CACC,KAAKG,mBAAL,iCACIR,OADJ;kBAECE,sBAAsB,EAAtBA,sBAFD;kBAGCH,cAAc,EAAdA,cAHD;kBAICU,aAAa,EAAER;gBAJhB,GADD;gBAzBD;gBAAA,OAkCmBS,OAAO,CAACC,GAAR,CAAYR,SAAZ,CAlCnB;;cAAA;gBAkCOQ,GAlCP;gBAAA;gBAAA,OAoCO,KAAKC,IAAL,CAAUb,cAAV,CApCP;;cAAA;gBAAA,iCAsCQY,GAtCR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yGAyCA,kBAA4BX,OAA5B;QAAA;QAAA;UAAA;YAAA;cAAA;gBAMSD,cANT,GAOEC,OAPF,CAMSD,cANT,EAMyBQ,yBANzB,GAOEP,OAPF,CAMyBO,yBANzB,EAMoDM,mBANpD,GAOEb,OAPF,CAMoDa,mBANpD;gBASOC,eATP,GASyBC,2BAASC,WAAT,CACvBjB,cADuB,EAEvBQ,yBAAyB,CAACU,cAFH,EAGvBC,6BAA6B,CAACX,yBAAD,CAHN,CATzB;gBAeOY,sBAfP,GAegC,KAAKC,SAAL,CAAeC,aAAf,+CAC3BrB,OAD2B,GAE3BO,yBAF2B;kBAG9BM,mBAAmB,EAAnBA;gBAH8B,GAfhC;gBAAA;gBAAA,OAqBuB,KAAKS,8BAAL,CACrBR,eADqB,EAErBK,sBAFqB,mCAIpBI,MAAM,CAACC,IAAP,CAAYjB,yBAAyB,CAACkB,eAAtC,EAAuD,CAAvD,CAJoB,EArBvB;;cAAA;gBAqBOC,OArBP;gBAAA,kCA6BQA,OAAO,CAAC,CAAD,CA7Bf;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAgCA,wCAAsCC,GAAtC,EAAmD;MAClD,IAAIZ,2BAASa,uBAAT,CAAiCD,GAAjC,CAAJ,EAA2C;QAC1C,IAAME,IAAI,GAAGd,2BAASe,qBAAT,CACZH,GADY,EAEZ,QAFY,EAGZ9B,kBAHY,CAAb;;QAMA,OAAOkB,2BAASgB,aAAT,CAAuBF,IAAvB,CAAP;MACA;;MAED,OAAO,KAAP;IACA;;;;+GAED,kBAAkC7B,OAAlC;QAAA;QAAA;UAAA;YAAA;cAAA;gBAMSD,cANT,GAM4BC,OAN5B,CAMSD,cANT;gBAQOe,eARP,GAQyBC,2BAASC,WAAT,CACvBjB,cADuB,EAEvBF,kBAFuB,CARzB;gBAaOmC,QAbP,GAakB,KAAKZ,SAAL,CAAea,sBAAf,CAAsCjC,OAAtC,CAblB;gBAAA;gBAAA,OAeuB,KAAKsB,8BAAL,CACrBR,eADqB,EAErBkB,QAFqB,EAGrB,kDAHqB,CAfvB;;cAAA;gBAeON,OAfP;gBAAA,kCAqBQA,OAAO,CAAC,CAAD,CArBf;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yGAwBA,kBACC3B,cADD,EAECC,OAFD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAMSkC,oBANT,GAM2DlC,OAN3D,CAMSkC,oBANT,EAM+BC,uBAN/B,GAM2DnC,OAN3D,CAM+BmC,uBAN/B;gBAQOC,KARP,GAQeC,gCAAcC,KAAd,CAAoBH,uBAApB,CARf;gBASOI,mBATP,GAS6BC,gCAAcC,mBAAd,CAC3B1C,cAD2B,EAE3BqC,KAF2B,CAT7B;gBAcOM,iBAdP,GAc2B,KAAKC,sBAAL,CAA4B;kBACrDC,SAAS,EAAER,KAAK,CAACS,cADoC;kBAErDX,oBAAoB,EAApBA,oBAFqD;kBAGrDK,mBAAmB,EAAnBA;gBAHqD,CAA5B,CAd3B;gBAoBOO,gBApBP,GAoB0B,KAAK1B,SAAL,CAAe2B,QAAf,iCACrB/C,OADqB;kBAExBgD,eAAe,EAAEN;gBAFO,GApB1B;gBAAA;gBAAA,OAyBuB,KAAKpB,8BAAL,CACrBiB,mBADqB,EAErBO,gBAFqB,yBAGLX,uBAHK,OAzBvB;;cAAA;gBAyBOT,OAzBP;gBAAA;gBAAA,OA+BO,KAAKd,IAAL,CAAU2B,mBAAV,CA/BP;;cAAA;gBAAA,kCAiCQb,OAjCR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4GAoCA,kBACC3B,cADD,EAECC,OAFD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAMOiD,WANP,GAMqBlC,2BAASC,WAAT,CAAqBjB,cAArB,EAAqC,cAArC,CANrB;gBAOOiC,QAPP,GAOkB,KAAKZ,SAAL,CAAe8B,SAAf,CAAyB;kBAAEA,SAAS,EAAElD,OAAO,CAACkD;gBAArB,CAAzB,CAPlB;gBAAA;gBAAA,OASuB,KAAK5B,8BAAL,CACrB2B,WADqB,EAErBjB,QAFqB,EAGrB,8EAHqB,CATvB;;cAAA;gBASON,OATP;gBAAA,kCAeQA,OAfR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;sGAkBA,kBACC3B,cADD,EAECC,OAFD;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAWEmD,OAXF,GAgBKnD,OAhBL,CAWEmD,OAXF,EAYEC,SAZF,GAgBKpD,OAhBL,CAYEoD,SAZF,EAaEC,SAbF,GAgBKrD,OAhBL,CAaEqD,SAbF,EAcEC,YAdF,GAgBKtD,OAhBL,CAcEsD,YAdF,sBAgBKtD,OAhBL,CAeEuD,QAfF,EAeEA,QAfF,kCAea,KAfb;gBAkBOnC,SAlBP,GA0BsC,CACpC;kBACCoC,cAAc,EAAE,kBADjB;kBAECC,IAAI,EAAE,wBAFP;kBAGCC,MAAM,EAAE,WAHT;kBAICC,WAAW,EAAE;gBAJd,CADoC,EAOpC;kBACCH,cAAc,EAAE,iBADjB;kBAECC,IAAI,EAAE,uBAFP;kBAGCC,MAAM,EAAE,WAHT;kBAICC,WAAW,EAAE;gBAJd,CAPoC,EAapC;kBACCH,cAAc,EAAE,sBADjB;kBAECC,IAAI,EAAE,4BAFP;kBAGCC,MAAM,EAAE,WAHT;kBAICC,WAAW,EACV;gBALF,CAboC,EAoBpC;kBACCH,cAAc,EAAE,2BADjB;kBAECC,IAAI,EAAE,4BAFP;kBAGCC,MAAM,EAAE,WAHT;kBAICC,WAAW,EAAE,wDAJd;kBAKCC,OAAO,EAAE;oBACRP,SAAS,EAAEA,SAAS,GAAG;kBADf;gBALV,CApBoC,EA6BpC;kBACCG,cAAc,EAAE,2BADjB;kBAECC,IAAI,EAAE,8BAFP;kBAGCC,MAAM,EAAE,WAHT;kBAICC,WAAW,EACV,6DALF;kBAMCC,OAAO,EAAE;oBACRP,SAAS,EAAEA,SAAS,GAAG;kBADf;gBANV,CA7BoC,EAuCpC;kBACCG,cAAc,EAAE,cADjB;kBAECC,IAAI,EAAE,kBAFP;kBAGCC,MAAM,EAAE,WAHT;kBAICC,WAAW,EAAE,8CAJd;kBAKCC,OAAO,EAAE;oBACRL,QAAQ,EAARA;kBADQ;gBALV,CAvCoC,CA1BtC;gBA4EOM,KA5EP,GA4EgC,EA5EhC;;gBA8EC,0BAAmBzC,SAAnB,gCAA8B;kBAAnB0C,IAAmB;kBACvBb,WADuB,GACTT,gCAAcuB,gBAAd,CAA+BhE,cAA/B,EAA+C;oBAClEiE,QAAQ,EAAEF,IAAI,CAACL,IADmD;oBAElEQ,SAAS,EAAEb,SAFuD;oBAGlED,OAAO,EAAPA;kBAHkE,CAA/C,CADS;kBAOvBnB,QAPuB,GAOZ,KAAKZ,SAAL,CAAe0C,IAAI,CAACN,cAApB;oBAChBH,SAAS,EAATA,SADgB;oBAEhBC,YAAY,EAAZA,YAFgB;oBAGhBH,OAAO,EAAPA;kBAHgB,GAIbW,IAAI,CAACF,OAJQ,EAPY;;kBAc7B7C,2BAASmD,SAAT,CAAmBjB,WAAnB,EAAgCjB,QAAhC;;kBAEA6B,KAAK,CAACxD,IAAN,iCACIyD,IADJ;oBAECjC,IAAI,EAAEoB;kBAFP;gBAIA;;gBAlGF;gBAAA,OAoGO,KAAKrC,IAAL,CAAUb,cAAV,CApGP;;cAAA;gBAAA,kCAsGQ8D,KAtGR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAyGA,gCAA+B7D,OAA/B,EAIG;MACF,IAAQkC,oBAAR,GAAiElC,OAAjE,CAAQkC,oBAAR;MAAA,IAA8BK,mBAA9B,GAAiEvC,OAAjE,CAA8BuC,mBAA9B;MAAA,IAAmDK,SAAnD,GAAiE5C,OAAjE,CAAmD4C,SAAnD;;MAEA,IAAI,CAACA,SAAL,EAAgB;QACf,OAAO,2BAAP;MACA;;MAED,IAAMI,eAAe,GAAGmB,iBAASC,IAAT,CACvBlC,oBADuB,EAEvBmC,+CAFuB,CAAxB;;MAKA,IAAI3B,iBAAiB,GAAG3B,2BAASuD,mBAAT,CACvBH,iBAASI,OAAT,CAAiBhC,mBAAjB,CADuB,EAEvBS,eAFuB,CAAxB;;MAKAN,iBAAiB,GAAGA,iBAAiB,CAAC8B,OAAlB,CACnBL,iBAASM,OAAT,CAAiB/B,iBAAjB,CADmB,EAEnB,EAFmB,CAApB;MAKA,OAAOA,iBAAP;IACA;;;EA1SuCgC,2B;;;;AA6SlC,SAASxD,6BAAT,CAAuClB,OAAvC,EAGI;EACV,iBAAUA,OAAO,CAACqD,SAAlB,cAA+BrD,OAAO,CAACmD,OAAvC;AACA"}
|
|
@@ -359,7 +359,7 @@ var SchemaWriter = /*#__PURE__*/function (_AbstractWriter) {
|
|
|
359
359
|
destination: destinationDir,
|
|
360
360
|
schema: options.schema
|
|
361
361
|
});
|
|
362
|
-
typesFile = options.typesFile ?
|
|
362
|
+
typesFile = options.typesFile ? _spruceSkillUtils.diskUtil.resolveRelativePath(_path["default"].dirname(resolvedDestination), options.typesFile) : undefined;
|
|
363
363
|
|
|
364
364
|
if (typesFile) {
|
|
365
365
|
typesFile = typesFile.replace(_path["default"].extname(typesFile), '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaWriter.js","names":["SchemaWriter","filename","templateFuncName","description","destinationDir","options","ui","startLoading","nameCamel","resolvedBuilderDestination","shouldEnableVersioning","pathUtil","resolve","versionUtil","resolveNewLatestPath","version","LATEST_HANDLEBARS","diskUtil","doesFileExist","SpruceError","code","schemaId","destination","builderContent","templates","schemaBuilder","writeFileIfChangedMixinResults","results","lint","fieldTemplateItems","fieldTemplates","fileAndFunc","resolvedDestination","path","join","contents","destinationDirOrFilename","schemaTemplateItems","valueTypes","typesTemplate","resolvedTypesDestination","resolveFilenameWithFallback","DEFAULT_SCHEMA_TYPES_FILENAME","localItems","filter","i","importFrom","length","schemaTypesContents","schemasTypes","globalSchemaNamespace","writeAllSchemas","dirname","typesFile","allSchemaResults","push","item","writeSchema","schemaResults","registerBuiltSchemas","schemaDiskUtil","resolvePath","schema","relative","undefined","replace","extname","schemaContents","schemaFile","shouldImportCoreSchemas","id","cwd","resolveHashSprucePath","pluginContents","schemaPlugin","AbstractWriter"],"sources":["../../../../src/features/schema/writers/SchemaWriter.ts"],"sourcesContent":["import path from 'path'\nimport pathUtil from 'path'\nimport { FieldTemplateItem, SchemaTemplateItem } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tLATEST_HANDLEBARS,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tSchemaBuilderTemplateItem,\n\tValueTypes,\n} from '@sprucelabs/spruce-templates'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter'\nimport schemaDiskUtil from '../utilities/schemaDisk.utility'\n\ninterface WriteFieldTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport interface GenerateSchemaTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n\tschemaTemplateItems: SchemaTemplateItem[]\n\tvalueTypes: ValueTypes\n\tglobalSchemaNamespace?: string\n\ttypesTemplate?: string\n\tregisterBuiltSchemas?: boolean\n\tshouldImportCoreSchemas: boolean\n}\n\nexport default class SchemaWriter extends AbstractWriter {\n\tprivate readonly fieldTemplates: {\n\t\tfilename: string\n\t\ttemplateFuncName: 'fieldsTypes' | 'fieldClassMap'\n\t\tdescription: string\n\t}[] = [\n\t\t{\n\t\t\tfilename: 'fields.types.ts',\n\t\t\ttemplateFuncName: 'fieldsTypes',\n\t\t\tdescription:\n\t\t\t\t'All the interfaces generated for every type of schema field (text, number, address, etc).',\n\t\t},\n\t\t{\n\t\t\tfilename: 'fieldClassMap.ts',\n\t\t\ttemplateFuncName: 'fieldClassMap',\n\t\t\tdescription:\n\t\t\t\t'An object that is injected into the FieldFactory and ensures 3rd party fields are integrated.',\n\t\t},\n\t]\n\n\tpublic async writeBuilder(\n\t\tdestinationDir: string,\n\t\toptions: SchemaBuilderTemplateItem & {\n\t\t\tshouldEnableVersioning?: boolean\n\t\t\tversion?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Writing builder...')\n\n\t\tconst filename = `${options.nameCamel}.builder.ts`\n\n\t\tconst resolvedBuilderDestination =\n\t\t\toptions.shouldEnableVersioning === false\n\t\t\t\t? pathUtil.resolve(destinationDir, filename)\n\t\t\t\t: versionUtil.resolveNewLatestPath(\n\t\t\t\t\t\tdestinationDir,\n\t\t\t\t\t\toptions.version ?? LATEST_HANDLEBARS,\n\t\t\t\t\t\tfilename\n\t\t\t\t )\n\n\t\tif (diskUtil.doesFileExist(resolvedBuilderDestination)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SCHEMA_EXISTS',\n\t\t\t\tschemaId: options.nameCamel,\n\t\t\t\tdestination: destinationDir,\n\t\t\t})\n\t\t}\n\n\t\tconst builderContent = this.templates.schemaBuilder(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedBuilderDestination,\n\t\t\tbuilderContent,\n\t\t\t'The source of truth for building your schemas and their types. Run spruce sync.errors when you change this.'\n\t\t)\n\n\t\tawait this.lint(resolvedBuilderDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeFieldTypes(\n\t\tdestinationDir: string,\n\t\toptions: WriteFieldTypesOptions\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Checking schema field types...')\n\n\t\tconst { fieldTemplateItems } = options\n\n\t\tlet results: WriteResults = []\n\n\t\tfor (const fileAndFunc of this.fieldTemplates) {\n\t\t\tconst { filename, templateFuncName, description } = fileAndFunc\n\n\t\t\tconst resolvedDestination = path.join(destinationDir, 'fields', filename)\n\n\t\t\tconst contents = this.templates[templateFuncName]({\n\t\t\t\tfieldTemplateItems,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedDestination,\n\t\t\t\tcontents,\n\t\t\t\tdescription,\n\t\t\t\tresults\n\t\t\t)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchemasAndTypes(\n\t\tdestinationDirOrFilename: string,\n\t\toptions: GenerateSchemaTypesOptions\n\t): Promise<WriteResults> {\n\t\tconst {\n\t\t\tfieldTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesTemplate,\n\t\t} = options\n\n\t\tconst resolvedTypesDestination = this.resolveFilenameWithFallback(\n\t\t\tdestinationDirOrFilename,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet results: WriteResults = []\n\t\tthis.ui.startLoading('Generating schema types...')\n\n\t\tconst localItems = schemaTemplateItems.filter((i) => !i.importFrom)\n\n\t\tif (localItems.length > 0) {\n\t\t\tconst schemaTypesContents = this.templates.schemasTypes({\n\t\t\t\tschemaTemplateItems: localItems,\n\t\t\t\tfieldTemplateItems,\n\t\t\t\tvalueTypes,\n\t\t\t\tglobalSchemaNamespace: options.globalSchemaNamespace,\n\t\t\t\ttypesTemplate,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedTypesDestination,\n\t\t\t\tschemaTypesContents,\n\t\t\t\t'Namespace for accessing all your schemas. Type `SpruceSchemas` in your IDE to get started. ⚡️'\n\t\t\t)\n\n\t\t\tawait this.lint(resolvedTypesDestination)\n\t\t}\n\n\t\tthis.ui.startLoading(\n\t\t\t`Checking ${schemaTemplateItems.length} schemas for changes...`\n\t\t)\n\n\t\tconst allSchemaResults = await this.writeAllSchemas(\n\t\t\tpathUtil.dirname(resolvedTypesDestination),\n\t\t\t{\n\t\t\t\t...options,\n\t\t\t\ttypesFile: resolvedTypesDestination,\n\t\t\t}\n\t\t)\n\n\t\tresults.push(...allSchemaResults)\n\n\t\treturn results\n\t}\n\n\tprivate async writeAllSchemas(\n\t\tdestinationDir: string,\n\t\toptions: GenerateSchemaTypesOptions & { typesFile?: string }\n\t): Promise<WriteResults> {\n\t\tconst results: WriteResults = []\n\n\t\tfor (const item of options.schemaTemplateItems) {\n\t\t\tconst schemaResults = await this.writeSchema(destinationDir, {\n\t\t\t\t...options,\n\t\t\t\t...item,\n\t\t\t})\n\t\t\tresults.push(...schemaResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchema(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tvalueTypes: ValueTypes\n\t\t\ttypesFile?: string\n\t\t\tregisterBuiltSchemas?: boolean\n\t\t\tshouldImportCoreSchemas: boolean\n\t\t} & SchemaTemplateItem\n\t) {\n\t\tconst {\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\tregisterBuiltSchemas = true,\n\t\t\t...item\n\t\t} = options\n\n\t\tconst resolvedDestination = schemaDiskUtil.resolvePath({\n\t\t\tdestination: destinationDir,\n\t\t\tschema: options.schema,\n\t\t})\n\n\t\tlet typesFile = options.typesFile\n\t\t\t? pathUtil.relative(\n\t\t\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\t\t\toptions.typesFile\n\t\t\t )\n\t\t\t: undefined\n\n\t\tif (typesFile) {\n\t\t\ttypesFile = typesFile.replace(pathUtil.extname(typesFile), '')\n\t\t}\n\n\t\tconst schemaContents = this.templates.schema({\n\t\t\t...item,\n\t\t\tregisterBuiltSchemas,\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesFile,\n\t\t\tschemaFile:\n\t\t\t\titem.importFrom && options.shouldImportCoreSchemas\n\t\t\t\t\t? `schema/imported.schema.ts.hbs`\n\t\t\t\t\t: undefined,\n\t\t})\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tschemaContents,\n\t\t\t`${\n\t\t\t\titem.schema.description ? `${item.schema.description} ` : ''\n\t\t\t}This is the schema generated by ${\n\t\t\t\titem.id\n\t\t\t}.builder.ts. AUTOGENERATED. DO NOT EDIT.`\n\t\t)\n\t}\n\n\tpublic async writeValueTypes(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tglobalSchemaNamespace?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tconst contents = this.templates.valueTypes(options)\n\t\tconst destination = pathUtil.join(destinationDir, 'tmp', 'valueType.tmp.ts')\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'For constructing what goes to the right of the : after each property in the interface.'\n\t\t)\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'schema.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.schemaPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Enable schema support in your skill.'\n\t\t)\n\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SchemaWriter.js","names":["SchemaWriter","filename","templateFuncName","description","destinationDir","options","ui","startLoading","nameCamel","resolvedBuilderDestination","shouldEnableVersioning","pathUtil","resolve","versionUtil","resolveNewLatestPath","version","LATEST_HANDLEBARS","diskUtil","doesFileExist","SpruceError","code","schemaId","destination","builderContent","templates","schemaBuilder","writeFileIfChangedMixinResults","results","lint","fieldTemplateItems","fieldTemplates","fileAndFunc","resolvedDestination","path","join","contents","destinationDirOrFilename","schemaTemplateItems","valueTypes","typesTemplate","resolvedTypesDestination","resolveFilenameWithFallback","DEFAULT_SCHEMA_TYPES_FILENAME","localItems","filter","i","importFrom","length","schemaTypesContents","schemasTypes","globalSchemaNamespace","writeAllSchemas","dirname","typesFile","allSchemaResults","push","item","writeSchema","schemaResults","registerBuiltSchemas","schemaDiskUtil","resolvePath","schema","resolveRelativePath","undefined","replace","extname","schemaContents","schemaFile","shouldImportCoreSchemas","id","cwd","resolveHashSprucePath","pluginContents","schemaPlugin","AbstractWriter"],"sources":["../../../../src/features/schema/writers/SchemaWriter.ts"],"sourcesContent":["import path from 'path'\nimport pathUtil from 'path'\nimport { FieldTemplateItem, SchemaTemplateItem } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tLATEST_HANDLEBARS,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tSchemaBuilderTemplateItem,\n\tValueTypes,\n} from '@sprucelabs/spruce-templates'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter'\nimport schemaDiskUtil from '../utilities/schemaDisk.utility'\n\ninterface WriteFieldTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport interface GenerateSchemaTypesOptions {\n\tfieldTemplateItems: FieldTemplateItem[]\n\tschemaTemplateItems: SchemaTemplateItem[]\n\tvalueTypes: ValueTypes\n\tglobalSchemaNamespace?: string\n\ttypesTemplate?: string\n\tregisterBuiltSchemas?: boolean\n\tshouldImportCoreSchemas: boolean\n}\n\nexport default class SchemaWriter extends AbstractWriter {\n\tprivate readonly fieldTemplates: {\n\t\tfilename: string\n\t\ttemplateFuncName: 'fieldsTypes' | 'fieldClassMap'\n\t\tdescription: string\n\t}[] = [\n\t\t{\n\t\t\tfilename: 'fields.types.ts',\n\t\t\ttemplateFuncName: 'fieldsTypes',\n\t\t\tdescription:\n\t\t\t\t'All the interfaces generated for every type of schema field (text, number, address, etc).',\n\t\t},\n\t\t{\n\t\t\tfilename: 'fieldClassMap.ts',\n\t\t\ttemplateFuncName: 'fieldClassMap',\n\t\t\tdescription:\n\t\t\t\t'An object that is injected into the FieldFactory and ensures 3rd party fields are integrated.',\n\t\t},\n\t]\n\n\tpublic async writeBuilder(\n\t\tdestinationDir: string,\n\t\toptions: SchemaBuilderTemplateItem & {\n\t\t\tshouldEnableVersioning?: boolean\n\t\t\tversion?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Writing builder...')\n\n\t\tconst filename = `${options.nameCamel}.builder.ts`\n\n\t\tconst resolvedBuilderDestination =\n\t\t\toptions.shouldEnableVersioning === false\n\t\t\t\t? pathUtil.resolve(destinationDir, filename)\n\t\t\t\t: versionUtil.resolveNewLatestPath(\n\t\t\t\t\t\tdestinationDir,\n\t\t\t\t\t\toptions.version ?? LATEST_HANDLEBARS,\n\t\t\t\t\t\tfilename\n\t\t\t\t )\n\n\t\tif (diskUtil.doesFileExist(resolvedBuilderDestination)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SCHEMA_EXISTS',\n\t\t\t\tschemaId: options.nameCamel,\n\t\t\t\tdestination: destinationDir,\n\t\t\t})\n\t\t}\n\n\t\tconst builderContent = this.templates.schemaBuilder(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedBuilderDestination,\n\t\t\tbuilderContent,\n\t\t\t'The source of truth for building your schemas and their types. Run spruce sync.errors when you change this.'\n\t\t)\n\n\t\tawait this.lint(resolvedBuilderDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeFieldTypes(\n\t\tdestinationDir: string,\n\t\toptions: WriteFieldTypesOptions\n\t): Promise<WriteResults> {\n\t\tthis.ui.startLoading('Checking schema field types...')\n\n\t\tconst { fieldTemplateItems } = options\n\n\t\tlet results: WriteResults = []\n\n\t\tfor (const fileAndFunc of this.fieldTemplates) {\n\t\t\tconst { filename, templateFuncName, description } = fileAndFunc\n\n\t\t\tconst resolvedDestination = path.join(destinationDir, 'fields', filename)\n\n\t\t\tconst contents = this.templates[templateFuncName]({\n\t\t\t\tfieldTemplateItems,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedDestination,\n\t\t\t\tcontents,\n\t\t\t\tdescription,\n\t\t\t\tresults\n\t\t\t)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchemasAndTypes(\n\t\tdestinationDirOrFilename: string,\n\t\toptions: GenerateSchemaTypesOptions\n\t): Promise<WriteResults> {\n\t\tconst {\n\t\t\tfieldTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesTemplate,\n\t\t} = options\n\n\t\tconst resolvedTypesDestination = this.resolveFilenameWithFallback(\n\t\t\tdestinationDirOrFilename,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet results: WriteResults = []\n\t\tthis.ui.startLoading('Generating schema types...')\n\n\t\tconst localItems = schemaTemplateItems.filter((i) => !i.importFrom)\n\n\t\tif (localItems.length > 0) {\n\t\t\tconst schemaTypesContents = this.templates.schemasTypes({\n\t\t\t\tschemaTemplateItems: localItems,\n\t\t\t\tfieldTemplateItems,\n\t\t\t\tvalueTypes,\n\t\t\t\tglobalSchemaNamespace: options.globalSchemaNamespace,\n\t\t\t\ttypesTemplate,\n\t\t\t})\n\n\t\t\tresults = await this.writeFileIfChangedMixinResults(\n\t\t\t\tresolvedTypesDestination,\n\t\t\t\tschemaTypesContents,\n\t\t\t\t'Namespace for accessing all your schemas. Type `SpruceSchemas` in your IDE to get started. ⚡️'\n\t\t\t)\n\n\t\t\tawait this.lint(resolvedTypesDestination)\n\t\t}\n\n\t\tthis.ui.startLoading(\n\t\t\t`Checking ${schemaTemplateItems.length} schemas for changes...`\n\t\t)\n\n\t\tconst allSchemaResults = await this.writeAllSchemas(\n\t\t\tpathUtil.dirname(resolvedTypesDestination),\n\t\t\t{\n\t\t\t\t...options,\n\t\t\t\ttypesFile: resolvedTypesDestination,\n\t\t\t}\n\t\t)\n\n\t\tresults.push(...allSchemaResults)\n\n\t\treturn results\n\t}\n\n\tprivate async writeAllSchemas(\n\t\tdestinationDir: string,\n\t\toptions: GenerateSchemaTypesOptions & { typesFile?: string }\n\t): Promise<WriteResults> {\n\t\tconst results: WriteResults = []\n\n\t\tfor (const item of options.schemaTemplateItems) {\n\t\t\tconst schemaResults = await this.writeSchema(destinationDir, {\n\t\t\t\t...options,\n\t\t\t\t...item,\n\t\t\t})\n\t\t\tresults.push(...schemaResults)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tpublic async writeSchema(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tvalueTypes: ValueTypes\n\t\t\ttypesFile?: string\n\t\t\tregisterBuiltSchemas?: boolean\n\t\t\tshouldImportCoreSchemas: boolean\n\t\t} & SchemaTemplateItem\n\t) {\n\t\tconst {\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\tregisterBuiltSchemas = true,\n\t\t\t...item\n\t\t} = options\n\n\t\tconst resolvedDestination = schemaDiskUtil.resolvePath({\n\t\t\tdestination: destinationDir,\n\t\t\tschema: options.schema,\n\t\t})\n\n\t\tlet typesFile = options.typesFile\n\t\t\t? diskUtil.resolveRelativePath(\n\t\t\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\t\t\toptions.typesFile\n\t\t\t )\n\t\t\t: undefined\n\n\t\tif (typesFile) {\n\t\t\ttypesFile = typesFile.replace(pathUtil.extname(typesFile), '')\n\t\t}\n\n\t\tconst schemaContents = this.templates.schema({\n\t\t\t...item,\n\t\t\tregisterBuiltSchemas,\n\t\t\tschemaTemplateItems,\n\t\t\tfieldTemplateItems,\n\t\t\tvalueTypes,\n\t\t\ttypesFile,\n\t\t\tschemaFile:\n\t\t\t\titem.importFrom && options.shouldImportCoreSchemas\n\t\t\t\t\t? `schema/imported.schema.ts.hbs`\n\t\t\t\t\t: undefined,\n\t\t})\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tschemaContents,\n\t\t\t`${\n\t\t\t\titem.schema.description ? `${item.schema.description} ` : ''\n\t\t\t}This is the schema generated by ${\n\t\t\t\titem.id\n\t\t\t}.builder.ts. AUTOGENERATED. DO NOT EDIT.`\n\t\t)\n\t}\n\n\tpublic async writeValueTypes(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\t\tglobalSchemaNamespace?: string\n\t\t}\n\t): Promise<WriteResults> {\n\t\tconst contents = this.templates.valueTypes(options)\n\t\tconst destination = pathUtil.join(destinationDir, 'tmp', 'valueType.tmp.ts')\n\n\t\treturn this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'For constructing what goes to the right of the : after each property in the interface.'\n\t\t)\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'schema.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.schemaPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Enable schema support in your skill.'\n\t\t)\n\n\t\treturn results\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ var StoreStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
68
68
|
while (1) {
|
|
69
69
|
switch (_context.prev = _context.next) {
|
|
70
70
|
case 0:
|
|
71
|
-
search =
|
|
71
|
+
search = this.generateGlobbyPattern();
|
|
72
72
|
_context.next = 3;
|
|
73
73
|
return (0, _globby["default"])(search);
|
|
74
74
|
|
|
@@ -125,6 +125,11 @@ var StoreStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
125
125
|
|
|
126
126
|
return fetchStores;
|
|
127
127
|
}()
|
|
128
|
+
}, {
|
|
129
|
+
key: "generateGlobbyPattern",
|
|
130
|
+
value: function generateGlobbyPattern() {
|
|
131
|
+
return _spruceSkillUtils.diskUtil.resolvePath(this.cwd, 'src', '**', '*.store.ts');
|
|
132
|
+
}
|
|
128
133
|
}]);
|
|
129
134
|
return StoreStore;
|
|
130
135
|
}(_AbstractStore2["default"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreStore.js","names":["StoreStore","search","
|
|
1
|
+
{"version":3,"file":"StoreStore.js","names":["StoreStore","search","generateGlobbyPattern","matches","results","introspectionUtil","introspect","stores","i","length","className","classes","SpruceError","code","file","push","path","diskUtil","resolvePath","cwd","AbstractStore"],"sources":["../../../../src/features/store/stores/StoreStore.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport introspectionUtil from '../../../utilities/introspection.utility'\n\nexport interface LoadedStore {\n\tclassName: string\n\tpath: string\n}\n\nexport default class StoreStore extends AbstractStore {\n\tpublic name = 'store'\n\n\tpublic async fetchStores() {\n\t\tconst search = this.generateGlobbyPattern()\n\t\tconst matches = await globby(search)\n\n\t\tconst results = introspectionUtil.introspect(matches)\n\n\t\tconst stores: LoadedStore[] = []\n\n\t\tfor (let i = 0; i < results.length; i++) {\n\t\t\tconst introspect = results[i]\n\t\t\tconst className = introspect.classes[0]?.className\n\t\t\tif (!className) {\n\t\t\t\tthrow new SpruceError({ code: 'FAILED_TO_IMPORT', file: matches[i] })\n\t\t\t}\n\n\t\t\tstores.push({ className, path: matches[i] })\n\t\t}\n\n\t\treturn stores\n\t}\n\n\tprivate generateGlobbyPattern() {\n\t\treturn diskUtil.resolvePath(this.cwd, 'src', '**', '*.store.ts')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAOqBA,U;;;;;;;;;;;;;;;6FACN,O;;;;;;;uGAEd;QAAA;;QAAA;UAAA;YAAA;cAAA;gBACOC,MADP,GACgB,KAAKC,qBAAL,EADhB;gBAAA;gBAAA,OAEuB,wBAAOD,MAAP,CAFvB;;cAAA;gBAEOE,OAFP;gBAIOC,OAJP,GAIiBC,0BAAkBC,UAAlB,CAA6BH,OAA7B,CAJjB;gBAMOI,MANP,GAM+B,EAN/B;gBAQUC,CARV,GAQc,CARd;;cAAA;gBAAA,MAQiBA,CAAC,GAAGJ,OAAO,CAACK,MAR7B;kBAAA;kBAAA;gBAAA;;gBASQH,UATR,GASqBF,OAAO,CAACI,CAAD,CAT5B;gBAUQE,SAVR,2BAUoBJ,UAAU,CAACK,OAAX,CAAmB,CAAnB,CAVpB,yDAUoB,qBAAuBD,SAV3C;;gBAAA,IAWOA,SAXP;kBAAA;kBAAA;gBAAA;;gBAAA,MAYS,IAAIE,uBAAJ,CAAgB;kBAAEC,IAAI,EAAE,kBAAR;kBAA4BC,IAAI,EAAEX,OAAO,CAACK,CAAD;gBAAzC,CAAhB,CAZT;;cAAA;gBAeED,MAAM,CAACQ,IAAP,CAAY;kBAAEL,SAAS,EAATA,SAAF;kBAAaM,IAAI,EAAEb,OAAO,CAACK,CAAD;gBAA1B,CAAZ;;cAfF;gBAQqCA,CAAC,EARtC;gBAAA;gBAAA;;cAAA;gBAAA,iCAkBQD,MAlBR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAqBA,iCAAgC;MAC/B,OAAOU,2BAASC,WAAT,CAAqB,KAAKC,GAA1B,EAA+B,KAA/B,EAAsC,IAAtC,EAA4C,YAA5C,CAAP;IACA;;;EA1BsCC,0B"}
|
|
@@ -320,7 +320,7 @@ var CreateAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
320
320
|
name: match.name,
|
|
321
321
|
label: match.label,
|
|
322
322
|
isDefaultExport: match.isDefaultExport,
|
|
323
|
-
importPath: (_match$import = match["import"]) !== null && _match$import !== void 0 ? _match$import :
|
|
323
|
+
importPath: (_match$import = match["import"]) !== null && _match$import !== void 0 ? _match$import : _spruceSkillUtils.diskUtil.resolveRelativePath(resolvedDestination, //@ts-ignore
|
|
324
324
|
match.path.replace(_path["default"].extname(match.path), ''))
|
|
325
325
|
};
|
|
326
326
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateAction.js","names":["CreateAction","createTestActionSchema","options","normalizedOptions","validateAndNormalizeOptions","testDestinationDir","namePascal","nameCamel","type","resolvedDestination","diskUtil","resolvePath","cwd","ui","startLoading","testFeature","parent","stopLoading","buildParentClassCandidates","candidates","doesDirExist","promptForSubDir","length","promptForParentTestClassAndOptionallyInstallDependencies","parentTestClass","writer","Writer","generateTest","namesUtil","toPascal","results","files","hints","subdirs","readDir","filter","d","isDir","prompt","label","isRequired","choices","value","map","dir","match","candidate","idx","optionallyInstallFeatureBasedOnSelection","buildParentClassFromCandidate","featureCode","featureInstaller","isInstalled","name","install","features","code","isDefaultExport","importPath","pathUtil","relative","path","replace","extname","AbstractAction"],"sources":["../../../../src/features/test/actions/CreateAction.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport createTestActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport TestFeature, { ParentClassCandidate } from '../TestFeature'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.CreateTestOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.CreateTestOptions\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = createTestActionSchema\n\tpublic invocationMessage = 'Creating a test... 🛡'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\t\tconst { testDestinationDir, namePascal, nameCamel, type } =\n\t\t\tnormalizedOptions\n\n\t\tlet resolvedDestination = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\ttestDestinationDir,\n\t\t\ttype\n\t\t)\n\n\t\tthis.ui.startLoading('Checking potential parent test classes')\n\n\t\tconst testFeature = this.parent as TestFeature\n\n\t\tthis.ui.stopLoading()\n\n\t\tlet parentTestClass:\n\t\t\t| undefined\n\t\t\t| { name: string; importPath: string; isDefaultExport: boolean }\n\n\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\tif (diskUtil.doesDirExist(resolvedDestination)) {\n\t\t\tresolvedDestination = await this.promptForSubDir(\n\t\t\t\tresolvedDestination,\n\t\t\t\ttype\n\t\t\t)\n\t\t}\n\n\t\tif (candidates.length > 0) {\n\t\t\tparentTestClass =\n\t\t\t\tawait this.promptForParentTestClassAndOptionallyInstallDependencies(\n\t\t\t\t\tcandidates,\n\t\t\t\t\tparentTestClass,\n\t\t\t\t\tresolvedDestination\n\t\t\t\t)\n\t\t}\n\n\t\tthis.ui.startLoading('Generating test file...')\n\n\t\tconst writer = this.Writer('test')\n\n\t\tconst results = await writer.generateTest(resolvedDestination, {\n\t\t\t...normalizedOptions,\n\t\t\ttype,\n\t\t\tnameCamel,\n\t\t\tparentTestClass,\n\t\t\tnamePascal: namePascal ?? namesUtil.toPascal(nameCamel),\n\t\t})\n\n\t\treturn {\n\t\t\tfiles: results,\n\t\t\thints: [\"run `spruce test` in your skill when you're ready!\"],\n\t\t}\n\t}\n\tprivate async promptForSubDir(resolvedDestination: string, type: string) {\n\t\tconst subdirs = diskUtil\n\t\t\t.readDir(resolvedDestination)\n\t\t\t.filter((d) =>\n\t\t\t\tdiskUtil.isDir(diskUtil.resolvePath(resolvedDestination, d))\n\t\t\t)\n\n\t\tif (subdirs.length > 0) {\n\t\t\tconst match = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Where should I write this test?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: '.',\n\t\t\t\t\t\t\tlabel: `${type}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...subdirs.map((dir) => ({\n\t\t\t\t\t\t\tvalue: `${dir}`,\n\t\t\t\t\t\t\tlabel: `${type}/${dir}`,\n\t\t\t\t\t\t})),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tresolvedDestination = diskUtil.resolvePath(resolvedDestination, match)\n\t\t}\n\t\treturn resolvedDestination\n\t}\n\n\tprivate async promptForParentTestClassAndOptionallyInstallDependencies(\n\t\tcandidates: ParentClassCandidate[],\n\t\tparentTestClass:\n\t\t\t| { name: string; importPath: string; isDefaultExport: boolean }\n\t\t\t| undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tconst idx = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\tlabel: 'Which abstract test class do you want to extend?',\n\t\t\toptions: {\n\t\t\t\tchoices: [\n\t\t\t\t\t{ value: '', label: 'AbstractSpruceTest (default)' },\n\t\t\t\t\t...candidates.map((candidate, idx) => ({\n\t\t\t\t\t\tvalue: `${idx}`,\n\t\t\t\t\t\tlabel: candidate.label,\n\t\t\t\t\t})),\n\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tif (idx !== '' && candidates[+idx]) {\n\t\t\tconst match = candidates[+idx]\n\n\t\t\tif (match) {\n\t\t\t\tawait this.optionallyInstallFeatureBasedOnSelection(match)\n\n\t\t\t\tparentTestClass = this.buildParentClassFromCandidate(\n\t\t\t\t\tmatch,\n\t\t\t\t\tresolvedDestination\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\treturn parentTestClass\n\t}\n\n\tprivate async optionallyInstallFeatureBasedOnSelection(\n\t\tmatch: ParentClassCandidate\n\t) {\n\t\tif (match.featureCode) {\n\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\tmatch.featureCode\n\t\t\t)\n\n\t\t\tif (!isInstalled) {\n\t\t\t\tthis.ui.startLoading(`Installing ${match.name}...`)\n\t\t\t\tawait this.featureInstaller.install({\n\t\t\t\t\tfeatures: [{ code: match.featureCode as any }],\n\t\t\t\t})\n\t\t\t\tthis.ui.stopLoading()\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate buildParentClassFromCandidate(\n\t\tmatch: ParentClassCandidate,\n\t\tresolvedDestination: string\n\t): {\n\t\tname: string\n\t\tlabel: string\n\t\timportPath: string\n\t\tisDefaultExport: boolean\n\t} {\n\t\treturn {\n\t\t\tname: match.name,\n\t\t\tlabel: match.label,\n\t\t\tisDefaultExport: match.isDefaultExport,\n\t\t\timportPath:\n\t\t\t\tmatch.import ??\n\t\t\t\tpathUtil.relative(\n\t\t\t\t\tresolvedDestination,\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tmatch.path.replace(pathUtil.extname(match.path), '')\n\t\t\t\t),\n\t\t}\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreateAction.js","names":["CreateAction","createTestActionSchema","options","normalizedOptions","validateAndNormalizeOptions","testDestinationDir","namePascal","nameCamel","type","resolvedDestination","diskUtil","resolvePath","cwd","ui","startLoading","testFeature","parent","stopLoading","buildParentClassCandidates","candidates","doesDirExist","promptForSubDir","length","promptForParentTestClassAndOptionallyInstallDependencies","parentTestClass","writer","Writer","generateTest","namesUtil","toPascal","results","files","hints","subdirs","readDir","filter","d","isDir","prompt","label","isRequired","choices","value","map","dir","match","candidate","idx","optionallyInstallFeatureBasedOnSelection","buildParentClassFromCandidate","featureCode","featureInstaller","isInstalled","name","install","features","code","isDefaultExport","importPath","resolveRelativePath","path","replace","pathUtil","extname","AbstractAction"],"sources":["../../../../src/features/test/actions/CreateAction.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport createTestActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport TestFeature, { ParentClassCandidate } from '../TestFeature'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.CreateTestOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.CreateTestOptions\n\nexport default class CreateAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = createTestActionSchema\n\tpublic invocationMessage = 'Creating a test... 🛡'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\t\tconst { testDestinationDir, namePascal, nameCamel, type } =\n\t\t\tnormalizedOptions\n\n\t\tlet resolvedDestination = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\ttestDestinationDir,\n\t\t\ttype\n\t\t)\n\n\t\tthis.ui.startLoading('Checking potential parent test classes')\n\n\t\tconst testFeature = this.parent as TestFeature\n\n\t\tthis.ui.stopLoading()\n\n\t\tlet parentTestClass:\n\t\t\t| undefined\n\t\t\t| { name: string; importPath: string; isDefaultExport: boolean }\n\n\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\tif (diskUtil.doesDirExist(resolvedDestination)) {\n\t\t\tresolvedDestination = await this.promptForSubDir(\n\t\t\t\tresolvedDestination,\n\t\t\t\ttype\n\t\t\t)\n\t\t}\n\n\t\tif (candidates.length > 0) {\n\t\t\tparentTestClass =\n\t\t\t\tawait this.promptForParentTestClassAndOptionallyInstallDependencies(\n\t\t\t\t\tcandidates,\n\t\t\t\t\tparentTestClass,\n\t\t\t\t\tresolvedDestination\n\t\t\t\t)\n\t\t}\n\n\t\tthis.ui.startLoading('Generating test file...')\n\n\t\tconst writer = this.Writer('test')\n\n\t\tconst results = await writer.generateTest(resolvedDestination, {\n\t\t\t...normalizedOptions,\n\t\t\ttype,\n\t\t\tnameCamel,\n\t\t\tparentTestClass,\n\t\t\tnamePascal: namePascal ?? namesUtil.toPascal(nameCamel),\n\t\t})\n\n\t\treturn {\n\t\t\tfiles: results,\n\t\t\thints: [\"run `spruce test` in your skill when you're ready!\"],\n\t\t}\n\t}\n\tprivate async promptForSubDir(resolvedDestination: string, type: string) {\n\t\tconst subdirs = diskUtil\n\t\t\t.readDir(resolvedDestination)\n\t\t\t.filter((d) =>\n\t\t\t\tdiskUtil.isDir(diskUtil.resolvePath(resolvedDestination, d))\n\t\t\t)\n\n\t\tif (subdirs.length > 0) {\n\t\t\tconst match = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Where should I write this test?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: '.',\n\t\t\t\t\t\t\tlabel: `${type}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...subdirs.map((dir) => ({\n\t\t\t\t\t\t\tvalue: `${dir}`,\n\t\t\t\t\t\t\tlabel: `${type}/${dir}`,\n\t\t\t\t\t\t})),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tresolvedDestination = diskUtil.resolvePath(resolvedDestination, match)\n\t\t}\n\t\treturn resolvedDestination\n\t}\n\n\tprivate async promptForParentTestClassAndOptionallyInstallDependencies(\n\t\tcandidates: ParentClassCandidate[],\n\t\tparentTestClass:\n\t\t\t| { name: string; importPath: string; isDefaultExport: boolean }\n\t\t\t| undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tconst idx = await this.ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\tlabel: 'Which abstract test class do you want to extend?',\n\t\t\toptions: {\n\t\t\t\tchoices: [\n\t\t\t\t\t{ value: '', label: 'AbstractSpruceTest (default)' },\n\t\t\t\t\t...candidates.map((candidate, idx) => ({\n\t\t\t\t\t\tvalue: `${idx}`,\n\t\t\t\t\t\tlabel: candidate.label,\n\t\t\t\t\t})),\n\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tif (idx !== '' && candidates[+idx]) {\n\t\t\tconst match = candidates[+idx]\n\n\t\t\tif (match) {\n\t\t\t\tawait this.optionallyInstallFeatureBasedOnSelection(match)\n\n\t\t\t\tparentTestClass = this.buildParentClassFromCandidate(\n\t\t\t\t\tmatch,\n\t\t\t\t\tresolvedDestination\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\treturn parentTestClass\n\t}\n\n\tprivate async optionallyInstallFeatureBasedOnSelection(\n\t\tmatch: ParentClassCandidate\n\t) {\n\t\tif (match.featureCode) {\n\t\t\tconst isInstalled = await this.featureInstaller.isInstalled(\n\t\t\t\tmatch.featureCode\n\t\t\t)\n\n\t\t\tif (!isInstalled) {\n\t\t\t\tthis.ui.startLoading(`Installing ${match.name}...`)\n\t\t\t\tawait this.featureInstaller.install({\n\t\t\t\t\tfeatures: [{ code: match.featureCode as any }],\n\t\t\t\t})\n\t\t\t\tthis.ui.stopLoading()\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate buildParentClassFromCandidate(\n\t\tmatch: ParentClassCandidate,\n\t\tresolvedDestination: string\n\t): {\n\t\tname: string\n\t\tlabel: string\n\t\timportPath: string\n\t\tisDefaultExport: boolean\n\t} {\n\t\treturn {\n\t\t\tname: match.name,\n\t\t\tlabel: match.label,\n\t\t\tisDefaultExport: match.isDefaultExport,\n\t\t\timportPath:\n\t\t\t\tmatch.import ??\n\t\t\t\tdiskUtil.resolveRelativePath(\n\t\t\t\t\tresolvedDestination,\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tmatch.path.replace(pathUtil.extname(match.path), '')\n\t\t\t\t),\n\t\t}\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -25,8 +25,6 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
|
|
|
25
25
|
|
|
26
26
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
27
27
|
|
|
28
|
-
var _path = _interopRequireDefault(require("path"));
|
|
29
|
-
|
|
30
28
|
var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
31
29
|
|
|
32
30
|
var _SpruceError = _interopRequireDefault(require("../../../errors/SpruceError"));
|
|
@@ -107,7 +105,7 @@ var ViewWriter = /*#__PURE__*/function (_AbstractWriter) {
|
|
|
107
105
|
value: function removeFileExtensionsFromTemplateItems(vcTemplateItems, destinationDir) {
|
|
108
106
|
return vcTemplateItems.map(function (i) {
|
|
109
107
|
return _objectSpread(_objectSpread({}, i), {}, {
|
|
110
|
-
path:
|
|
108
|
+
path: _spruceSkillUtils.diskUtil.resolveRelativePath(destinationDir, i.path).replace('.ts', '')
|
|
111
109
|
});
|
|
112
110
|
});
|
|
113
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewWriter.js","names":["ViewWriter","cwd","options","buildViewControllerPath","namePascal","path","writeController","viewType","vcTemplateItems","svcTemplateItems","rest","destinationDir","diskUtil","resolveHashSprucePath","destination","resolvePath","removeFileExtensionsFromTemplateItems","contents","templates","views","writeFileIfChangedMixinResults","results","map","i","
|
|
1
|
+
{"version":3,"file":"ViewWriter.js","names":["ViewWriter","cwd","options","buildViewControllerPath","namePascal","path","writeController","viewType","vcTemplateItems","svcTemplateItems","rest","destinationDir","diskUtil","resolveHashSprucePath","destination","resolvePath","removeFileExtensionsFromTemplateItems","contents","templates","views","writeFileIfChangedMixinResults","results","map","i","resolveRelativePath","replace","viewModel","nameKebab","doesFileExist","SpruceError","code","name","skillViewController","viewController","lint","pluginContents","viewPlugin","buildThemePath","theme","ext","filename","AbstractWriter"],"sources":["../../../../src/features/view/writers/ViewWriter.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tVcTemplateItem,\n\tViewsOptions,\n} from '../../../../../spruce-templates/build'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nexport default class ViewWriter extends AbstractWriter {\n\tpublic writeSkillViewController(\n\t\tcwd: string,\n\t\toptions: {\n\t\t\tnamePascal: string\n\t\t\tnameKebab: string\n\t\t}\n\t) {\n\t\tconst { path } = this.buildViewControllerPath(\n\t\t\tcwd,\n\t\t\t'skillView',\n\t\t\toptions.namePascal\n\t\t)\n\n\t\treturn this.writeController(path, { ...options, viewType: 'skillView' })\n\t}\n\n\tpublic async writeCombinedViewsFile(cwd: string, options: ViewsOptions) {\n\t\tlet { vcTemplateItems, svcTemplateItems, ...rest } = options\n\n\t\tconst destinationDir = diskUtil.resolveHashSprucePath(cwd, 'views')\n\t\tconst destination = diskUtil.resolvePath(destinationDir, 'views.ts')\n\n\t\tvcTemplateItems = this.removeFileExtensionsFromTemplateItems(\n\t\t\tvcTemplateItems,\n\t\t\tdestinationDir\n\t\t)\n\n\t\tsvcTemplateItems = this.removeFileExtensionsFromTemplateItems(\n\t\t\tsvcTemplateItems,\n\t\t\tdestinationDir\n\t\t)\n\n\t\tconst contents = this.templates.views({\n\t\t\tvcTemplateItems,\n\t\t\tsvcTemplateItems,\n\t\t\t...rest,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'Used to export your controllers to Heartwood.'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tprivate removeFileExtensionsFromTemplateItems(\n\t\tvcTemplateItems: VcTemplateItem[],\n\t\tdestinationDir: string\n\t): VcTemplateItem[] {\n\t\treturn vcTemplateItems.map((i) => ({\n\t\t\t...i,\n\t\t\tpath: diskUtil\n\t\t\t\t.resolveRelativePath(destinationDir, i.path)\n\t\t\t\t.replace('.ts', ''),\n\t\t}))\n\t}\n\n\tpublic writeViewController(\n\t\tcwd: string,\n\t\toptions: {\n\t\t\tviewType: string\n\t\t\tnamePascal: string\n\t\t\tviewModel: string\n\t\t\tnameKebab: string\n\t\t}\n\t) {\n\t\tconst { path } = this.buildViewControllerPath(\n\t\t\tcwd,\n\t\t\t'view',\n\t\t\toptions.namePascal\n\t\t)\n\n\t\treturn this.writeController(path, options)\n\t}\n\n\tprivate async writeController(path: string, options: any) {\n\t\tconst { namePascal, viewModel, viewType, nameKebab } = options\n\n\t\tif (diskUtil.doesFileExist(path)) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'SKILL_VIEW_EXISTS',\n\t\t\t\tname: namePascal,\n\t\t\t})\n\t\t}\n\n\t\tconst contents =\n\t\t\tviewType === 'skillView'\n\t\t\t\t? this.templates.skillViewController({ namePascal, nameKebab })\n\t\t\t\t: this.templates.viewController({ namePascal, viewModel, nameKebab })\n\n\t\tconst results = this.writeFileIfChangedMixinResults(path, contents, 'Test')\n\n\t\tawait this.lint(path)\n\n\t\treturn results\n\t}\n\n\tpublic doesRootControllerExist(cwd: string) {\n\t\tconst { path } = this.buildViewControllerPath(cwd, 'skillView', 'Root')\n\t\treturn diskUtil.doesFileExist(path)\n\t}\n\n\tpublic writePlugin(cwd: string) {\n\t\tconst destination = diskUtil.resolveHashSprucePath(\n\t\t\tcwd,\n\t\t\t'features',\n\t\t\t'view.plugin.ts'\n\t\t)\n\n\t\tconst pluginContents = this.templates.viewPlugin()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tpluginContents,\n\t\t\t'Supports your skill with rendering views.'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tpublic writeTheme(cwd: string) {\n\t\tconst destination = this.buildThemePath(cwd)\n\n\t\tconst contents = this.templates.theme()\n\n\t\tconst results = this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'Your brand new theme file!'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tprivate buildThemePath(cwd: string) {\n\t\treturn diskUtil.resolvePath(cwd, 'src', 'themes', 'skill.theme.ts')\n\t}\n\n\tpublic doesThemeFileExist(cwd: string) {\n\t\tconst destination = this.buildThemePath(cwd)\n\t\treturn diskUtil.doesFileExist(destination)\n\t}\n\n\tprivate buildViewControllerPath(\n\t\tcwd: string,\n\t\tviewType: 'skillView' | 'view',\n\t\tnamePascal: string\n\t) {\n\t\tconst ext = viewType === 'skillView' ? '.svc.ts' : '.vc.ts'\n\t\tconst filename = namePascal + ext\n\t\tconst path = diskUtil.resolvePath(\n\t\t\tcwd,\n\t\t\t'src',\n\t\t\tviewType + 'Controllers',\n\t\t\tfilename\n\t\t)\n\t\treturn { path, filename }\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
declare type Command = RegExp | string;
|
|
2
2
|
export default class CommandFaker {
|
|
3
|
-
fakeRebuild(code?: number): void;
|
|
4
3
|
fakeCommand(command: Command, code?: number): void;
|
|
4
|
+
fakeRebuild(code?: number): void;
|
|
5
5
|
fakeCleanBuild(code?: number): void;
|
|
6
6
|
fakeBuild(code?: number): void;
|
|
7
|
+
fakeInstall(code?: number): void;
|
|
7
8
|
}
|
|
8
9
|
export {};
|
|
@@ -19,13 +19,6 @@ var CommandFaker = /*#__PURE__*/function () {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
(0, _createClass2["default"])(CommandFaker, [{
|
|
22
|
-
key: "fakeRebuild",
|
|
23
|
-
value: function fakeRebuild() {
|
|
24
|
-
var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
25
|
-
var command = new RegExp(/yarn rebuild/gi);
|
|
26
|
-
this.fakeCommand(command, code);
|
|
27
|
-
}
|
|
28
|
-
}, {
|
|
29
22
|
key: "fakeCommand",
|
|
30
23
|
value: function fakeCommand(command) {
|
|
31
24
|
var code = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
@@ -34,6 +27,13 @@ var CommandFaker = /*#__PURE__*/function () {
|
|
|
34
27
|
code: code
|
|
35
28
|
});
|
|
36
29
|
}
|
|
30
|
+
}, {
|
|
31
|
+
key: "fakeRebuild",
|
|
32
|
+
value: function fakeRebuild() {
|
|
33
|
+
var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
34
|
+
var command = new RegExp(/yarn rebuild/gi);
|
|
35
|
+
this.fakeCommand(command, code);
|
|
36
|
+
}
|
|
37
37
|
}, {
|
|
38
38
|
key: "fakeCleanBuild",
|
|
39
39
|
value: function fakeCleanBuild() {
|
|
@@ -46,6 +46,12 @@ var CommandFaker = /*#__PURE__*/function () {
|
|
|
46
46
|
var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
47
47
|
this.fakeCommand('yarn build.dev', code);
|
|
48
48
|
}
|
|
49
|
+
}, {
|
|
50
|
+
key: "fakeInstall",
|
|
51
|
+
value: function fakeInstall() {
|
|
52
|
+
var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
53
|
+
this.fakeCommand(/[\s\S]*?install/gi, code);
|
|
54
|
+
}
|
|
49
55
|
}]);
|
|
50
56
|
return CommandFaker;
|
|
51
57
|
}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandFaker.js","names":["CommandFaker","
|
|
1
|
+
{"version":3,"file":"CommandFaker.js","names":["CommandFaker","command","code","CommandService","fakeCommand","RegExp"],"sources":["../../src/tests/CommandFaker.ts"],"sourcesContent":["import CommandService from '../services/CommandService'\n\ntype Command = RegExp | string\n\nexport default class CommandFaker {\n\tpublic fakeCommand(command: Command, code = 0) {\n\t\tCommandService.fakeCommand(command, {\n\t\t\tcode,\n\t\t})\n\t}\n\n\tpublic fakeRebuild(code = 0) {\n\t\tconst command = new RegExp(/yarn rebuild/gis)\n\t\tthis.fakeCommand(command, code)\n\t}\n\n\tpublic fakeCleanBuild(code = 0) {\n\t\tthis.fakeCommand('yarn clean.build', code)\n\t}\n\n\tpublic fakeBuild(code = 0) {\n\t\tthis.fakeCommand('yarn build.dev', code)\n\t}\n\n\tpublic fakeInstall(code = 0) {\n\t\tthis.fakeCommand(/.*?install/gis, code)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;;IAIqBA,Y;;;;;;;WACpB,qBAAmBC,OAAnB,EAA+C;MAAA,IAAVC,IAAU,uEAAH,CAAG;;MAC9CC,2BAAeC,WAAf,CAA2BH,OAA3B,EAAoC;QACnCC,IAAI,EAAJA;MADmC,CAApC;IAGA;;;WAED,uBAA6B;MAAA,IAAVA,IAAU,uEAAH,CAAG;MAC5B,IAAMD,OAAO,GAAG,IAAII,MAAJ,CAAW,gBAAX,CAAhB;MACA,KAAKD,WAAL,CAAiBH,OAAjB,EAA0BC,IAA1B;IACA;;;WAED,0BAAgC;MAAA,IAAVA,IAAU,uEAAH,CAAG;MAC/B,KAAKE,WAAL,CAAiB,kBAAjB,EAAqCF,IAArC;IACA;;;WAED,qBAA2B;MAAA,IAAVA,IAAU,uEAAH,CAAG;MAC1B,KAAKE,WAAL,CAAiB,gBAAjB,EAAmCF,IAAnC;IACA;;;WAED,uBAA6B;MAAA,IAAVA,IAAU,uEAAH,CAAG;MAC5B,KAAKE,WAAL,CAAiB,mBAAjB,EAAkCF,IAAlC;IACA"}
|
package/package.json
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
]
|
|
19
19
|
},
|
|
20
20
|
"license": "MIT",
|
|
21
|
-
"version": "15.
|
|
21
|
+
"version": "15.4.2",
|
|
22
22
|
"bin": {
|
|
23
23
|
"spruce": "./build/index.js"
|
|
24
24
|
},
|
|
@@ -72,23 +72,23 @@
|
|
|
72
72
|
"watch.tsc": "tsc -w --sourceMap"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@babel/cli": "^7.17.
|
|
75
|
+
"@babel/cli": "^7.17.10",
|
|
76
76
|
"@babel/plugin-proposal-decorators": "^7.17.9",
|
|
77
77
|
"@babel/runtime": "^7.17.9",
|
|
78
|
-
"@jest/reporters": "^
|
|
79
|
-
"@sprucelabs/error": "^5.0.
|
|
80
|
-
"@sprucelabs/heartwood-view-controllers": "^70.
|
|
81
|
-
"@sprucelabs/jest-json-reporter": "^6.0.
|
|
82
|
-
"@sprucelabs/mercury-client": "^22.2.
|
|
83
|
-
"@sprucelabs/mercury-event-emitter": "^22.2.
|
|
84
|
-
"@sprucelabs/mercury-types": "^27.0.
|
|
85
|
-
"@sprucelabs/schema": "^27.1.
|
|
86
|
-
"@sprucelabs/spruce-core-schemas": "^25.0.
|
|
87
|
-
"@sprucelabs/spruce-event-plugin": "^30.4.
|
|
88
|
-
"@sprucelabs/spruce-event-utils": "^19.1.
|
|
89
|
-
"@sprucelabs/spruce-skill-booter": "^30.4.
|
|
90
|
-
"@sprucelabs/spruce-skill-utils": "^25.
|
|
91
|
-
"@sprucelabs/spruce-templates": "^15.
|
|
78
|
+
"@jest/reporters": "^28.0.3",
|
|
79
|
+
"@sprucelabs/error": "^5.0.450",
|
|
80
|
+
"@sprucelabs/heartwood-view-controllers": "^70.15.43",
|
|
81
|
+
"@sprucelabs/jest-json-reporter": "^6.0.373",
|
|
82
|
+
"@sprucelabs/mercury-client": "^22.2.89",
|
|
83
|
+
"@sprucelabs/mercury-event-emitter": "^22.2.89",
|
|
84
|
+
"@sprucelabs/mercury-types": "^27.0.255",
|
|
85
|
+
"@sprucelabs/schema": "^27.1.69",
|
|
86
|
+
"@sprucelabs/spruce-core-schemas": "^25.0.110",
|
|
87
|
+
"@sprucelabs/spruce-event-plugin": "^30.4.42",
|
|
88
|
+
"@sprucelabs/spruce-event-utils": "^19.1.116",
|
|
89
|
+
"@sprucelabs/spruce-skill-booter": "^30.4.42",
|
|
90
|
+
"@sprucelabs/spruce-skill-utils": "^25.1.3",
|
|
91
|
+
"@sprucelabs/spruce-templates": "^15.4.2",
|
|
92
92
|
"@typescript-eslint/eslint-plugin": "^5.17.0",
|
|
93
93
|
"@typescript-eslint/parser": "^5.17.0",
|
|
94
94
|
"cfonts": "^2.10.1",
|
|
@@ -96,13 +96,13 @@
|
|
|
96
96
|
"chokidar": "^3.5.3",
|
|
97
97
|
"cli-table3": "^0.6.2",
|
|
98
98
|
"commander": "7.2.0",
|
|
99
|
-
"core-js": "^3.22.
|
|
99
|
+
"core-js": "^3.22.4",
|
|
100
100
|
"emphasize": "4.2.0",
|
|
101
101
|
"fs-extra": "^10.1.0",
|
|
102
102
|
"gifwrap": "^0.10.1",
|
|
103
103
|
"globby": "11.0.4",
|
|
104
104
|
"inflection": "^1.13.2",
|
|
105
|
-
"inquirer": "^8.2.
|
|
105
|
+
"inquirer": "^8.2.4",
|
|
106
106
|
"inquirer-file-tree-selection-prompt": "1.0.18",
|
|
107
107
|
"js-tetris-cli": "^0.0.3",
|
|
108
108
|
"jsonwebtoken": "^8.5.1",
|
|
@@ -119,16 +119,16 @@
|
|
|
119
119
|
"uuid": "^8.3.2"
|
|
120
120
|
},
|
|
121
121
|
"devDependencies": {
|
|
122
|
-
"@sprucelabs/data-stores": "^9.0.
|
|
123
|
-
"@sprucelabs/jest-sheets-reporter": "^1.3.
|
|
124
|
-
"@sprucelabs/mercury-core-events": "^3.2.
|
|
125
|
-
"@sprucelabs/resolve-path-aliases": "^1.1.
|
|
126
|
-
"@sprucelabs/spruce-conversation-plugin": "^30.4.
|
|
127
|
-
"@sprucelabs/spruce-deploy-plugin": "^30.4.
|
|
128
|
-
"@sprucelabs/spruce-store-plugin": "^30.4.
|
|
129
|
-
"@sprucelabs/spruce-test-fixtures": "^30.4.
|
|
130
|
-
"@sprucelabs/test": "^7.7.
|
|
131
|
-
"@sprucelabs/test-utils": "^3.0.
|
|
122
|
+
"@sprucelabs/data-stores": "^9.0.124",
|
|
123
|
+
"@sprucelabs/jest-sheets-reporter": "^1.3.43",
|
|
124
|
+
"@sprucelabs/mercury-core-events": "^3.2.39",
|
|
125
|
+
"@sprucelabs/resolve-path-aliases": "^1.1.37",
|
|
126
|
+
"@sprucelabs/spruce-conversation-plugin": "^30.4.42",
|
|
127
|
+
"@sprucelabs/spruce-deploy-plugin": "^30.4.42",
|
|
128
|
+
"@sprucelabs/spruce-store-plugin": "^30.4.42",
|
|
129
|
+
"@sprucelabs/spruce-test-fixtures": "^30.4.42",
|
|
130
|
+
"@sprucelabs/test": "^7.7.311",
|
|
131
|
+
"@sprucelabs/test-utils": "^3.0.538",
|
|
132
132
|
"@types/blessed": "^0.1.19",
|
|
133
133
|
"@types/eslint": "^8.4.1",
|
|
134
134
|
"@types/fs-extra": "^9.0.13",
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
"@types/lodash": "^4.14.182",
|
|
139
139
|
"@types/md5": "^2.3.2",
|
|
140
140
|
"@types/mkdirp": "^1.0.2",
|
|
141
|
-
"@types/node": "^17.0.
|
|
141
|
+
"@types/node": "^17.0.31",
|
|
142
142
|
"@types/promise.allsettled": "^1.0.3",
|
|
143
143
|
"@types/ps-node": "^0.1.1",
|
|
144
144
|
"@types/rimraf": "^3.0.2",
|
|
@@ -152,12 +152,12 @@
|
|
|
152
152
|
"concurrently": "^7.1.0",
|
|
153
153
|
"conventional-changelog-sprucelabs": "^1.1.2",
|
|
154
154
|
"dotenv": "^16.0.0",
|
|
155
|
-
"eslint": "^8.
|
|
155
|
+
"eslint": "^8.14.0",
|
|
156
156
|
"eslint-config-spruce": "^10.11.2",
|
|
157
157
|
"find-process": "^1.4.7",
|
|
158
|
-
"jest": "^
|
|
159
|
-
"jest-circus": "^
|
|
160
|
-
"jest-junit": "^13.
|
|
158
|
+
"jest": "^28.0.3",
|
|
159
|
+
"jest-circus": "^28.0.3",
|
|
160
|
+
"jest-junit": "^13.2.0",
|
|
161
161
|
"jest-reporters": "^0.0.2",
|
|
162
162
|
"prettier": "^2.6.2",
|
|
163
163
|
"ps-node": "^0.1.6",
|
|
@@ -165,8 +165,8 @@
|
|
|
165
165
|
"ts-jest": "^27.1.4",
|
|
166
166
|
"ts-node": "^10.7.0",
|
|
167
167
|
"tsc-watch": "^5.0.3",
|
|
168
|
-
"tsconfig-paths": "^
|
|
169
|
-
"typescript": "^4.6.
|
|
168
|
+
"tsconfig-paths": "^4.0.0",
|
|
169
|
+
"typescript": "^4.6.4"
|
|
170
170
|
},
|
|
171
171
|
"testSkillCache": {
|
|
172
172
|
"everything": [
|
|
@@ -597,5 +597,5 @@
|
|
|
597
597
|
"terminal-kit"
|
|
598
598
|
]
|
|
599
599
|
},
|
|
600
|
-
"gitHead": "
|
|
600
|
+
"gitHead": "2c1d012bfa0b49f404373964fbe9449358a59878"
|
|
601
601
|
}
|
|
@@ -2,7 +2,7 @@ import { SelectChoice } from '@sprucelabs/schema'
|
|
|
2
2
|
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
3
3
|
import { test, assert } from '@sprucelabs/test'
|
|
4
4
|
import { FeatureCode } from '../../../features/features.types'
|
|
5
|
-
import
|
|
5
|
+
import CreateAction from '../../../features/test/actions/CreateAction'
|
|
6
6
|
import AbstractTestTest from '../../../tests/AbstractTestTest'
|
|
7
7
|
import testUtil from '../../../tests/utilities/test.utility'
|
|
8
8
|
|
|
@@ -113,9 +113,7 @@ export default class SelectingAnAbstractTestClassTest extends AbstractTestTest {
|
|
|
113
113
|
|
|
114
114
|
@test()
|
|
115
115
|
protected static async installingAFeatureRemovesLabelFromName() {
|
|
116
|
-
|
|
117
|
-
code: 0,
|
|
118
|
-
})
|
|
116
|
+
this.commandFaker.fakeInstall()
|
|
119
117
|
|
|
120
118
|
await this.installTests()
|
|
121
119
|
|
|
@@ -143,9 +141,7 @@ export default class SelectingAnAbstractTestClassTest extends AbstractTestTest {
|
|
|
143
141
|
|
|
144
142
|
@test()
|
|
145
143
|
protected static async selectingUninstalledTestInstallsTheFeature() {
|
|
146
|
-
|
|
147
|
-
code: 0,
|
|
148
|
-
})
|
|
144
|
+
this.commandFaker.fakeInstall()
|
|
149
145
|
|
|
150
146
|
for (const feat of featuresWithRegisteredTests) {
|
|
151
147
|
this.cwd = diskUtil.createRandomTempDir()
|
|
@@ -174,6 +170,24 @@ export default class SelectingAnAbstractTestClassTest extends AbstractTestTest {
|
|
|
174
170
|
}
|
|
175
171
|
}
|
|
176
172
|
|
|
173
|
+
@test()
|
|
174
|
+
protected static relativePathsAddDotSlash() {
|
|
175
|
+
const action = this.Action('test', 'create') as CreateAction
|
|
176
|
+
|
|
177
|
+
//@ts-ignore
|
|
178
|
+
const actual = action.buildParentClassFromCandidate(
|
|
179
|
+
{
|
|
180
|
+
label: 'test',
|
|
181
|
+
name: 'AbstractTest',
|
|
182
|
+
path: this.resolvePath('test/AbstractTest'),
|
|
183
|
+
isDefaultExport: false,
|
|
184
|
+
},
|
|
185
|
+
this.resolvePath('test')
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
assert.isEqual(actual.importPath, './AbstractTest')
|
|
189
|
+
}
|
|
190
|
+
|
|
177
191
|
private static async buildAndAssertTestFailsAsExpected() {
|
|
178
192
|
await this.Service('build').build()
|
|
179
193
|
|
|
@@ -109,4 +109,12 @@ export default class DataStoreStoreTest extends AbstractSkillTest {
|
|
|
109
109
|
file: 'Bad.store.ts',
|
|
110
110
|
})
|
|
111
111
|
}
|
|
112
|
+
|
|
113
|
+
@test()
|
|
114
|
+
protected static async globbyPatternLooksEverywhere() {
|
|
115
|
+
const expected = this.resolvePath('src', '**', '*.store.ts')
|
|
116
|
+
|
|
117
|
+
//@ts-ignore
|
|
118
|
+
assert.isEqual(this.store.generateGlobbyPattern(), expected)
|
|
119
|
+
}
|
|
112
120
|
}
|
|
@@ -301,7 +301,7 @@ export default class EventWriter extends AbstractWriter {
|
|
|
301
301
|
DEFAULT_SCHEMA_TYPES_FILENAME
|
|
302
302
|
)
|
|
303
303
|
|
|
304
|
-
let relativeTypesFile =
|
|
304
|
+
let relativeTypesFile = diskUtil.resolveRelativePath(
|
|
305
305
|
pathUtil.dirname(resolvedDestination),
|
|
306
306
|
schemaTypesFile
|
|
307
307
|
)
|
|
@@ -13,7 +13,7 @@ export default class StoreStore extends AbstractStore {
|
|
|
13
13
|
public name = 'store'
|
|
14
14
|
|
|
15
15
|
public async fetchStores() {
|
|
16
|
-
const search =
|
|
16
|
+
const search = this.generateGlobbyPattern()
|
|
17
17
|
const matches = await globby(search)
|
|
18
18
|
|
|
19
19
|
const results = introspectionUtil.introspect(matches)
|
|
@@ -32,4 +32,8 @@ export default class StoreStore extends AbstractStore {
|
|
|
32
32
|
|
|
33
33
|
return stores
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
private generateGlobbyPattern() {
|
|
37
|
+
return diskUtil.resolvePath(this.cwd, 'src', '**', '*.store.ts')
|
|
38
|
+
}
|
|
35
39
|
}
|
|
@@ -171,7 +171,7 @@ export default class CreateAction extends AbstractAction<OptionsSchema> {
|
|
|
171
171
|
isDefaultExport: match.isDefaultExport,
|
|
172
172
|
importPath:
|
|
173
173
|
match.import ??
|
|
174
|
-
|
|
174
|
+
diskUtil.resolveRelativePath(
|
|
175
175
|
resolvedDestination,
|
|
176
176
|
//@ts-ignore
|
|
177
177
|
match.path.replace(pathUtil.extname(match.path), '')
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import pathUtil from 'path'
|
|
2
1
|
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
3
2
|
import {
|
|
4
3
|
VcTemplateItem,
|
|
@@ -61,7 +60,9 @@ export default class ViewWriter extends AbstractWriter {
|
|
|
61
60
|
): VcTemplateItem[] {
|
|
62
61
|
return vcTemplateItems.map((i) => ({
|
|
63
62
|
...i,
|
|
64
|
-
path:
|
|
63
|
+
path: diskUtil
|
|
64
|
+
.resolveRelativePath(destinationDir, i.path)
|
|
65
|
+
.replace('.ts', ''),
|
|
65
66
|
}))
|
|
66
67
|
}
|
|
67
68
|
|
|
@@ -3,17 +3,17 @@ import CommandService from '../services/CommandService'
|
|
|
3
3
|
type Command = RegExp | string
|
|
4
4
|
|
|
5
5
|
export default class CommandFaker {
|
|
6
|
-
public fakeRebuild(code = 0) {
|
|
7
|
-
const command = new RegExp(/yarn rebuild/gis)
|
|
8
|
-
this.fakeCommand(command, code)
|
|
9
|
-
}
|
|
10
|
-
|
|
11
6
|
public fakeCommand(command: Command, code = 0) {
|
|
12
7
|
CommandService.fakeCommand(command, {
|
|
13
8
|
code,
|
|
14
9
|
})
|
|
15
10
|
}
|
|
16
11
|
|
|
12
|
+
public fakeRebuild(code = 0) {
|
|
13
|
+
const command = new RegExp(/yarn rebuild/gis)
|
|
14
|
+
this.fakeCommand(command, code)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
17
|
public fakeCleanBuild(code = 0) {
|
|
18
18
|
this.fakeCommand('yarn clean.build', code)
|
|
19
19
|
}
|
|
@@ -21,4 +21,8 @@ export default class CommandFaker {
|
|
|
21
21
|
public fakeBuild(code = 0) {
|
|
22
22
|
this.fakeCommand('yarn build.dev', code)
|
|
23
23
|
}
|
|
24
|
+
|
|
25
|
+
public fakeInstall(code = 0) {
|
|
26
|
+
this.fakeCommand(/.*?install/gis, code)
|
|
27
|
+
}
|
|
24
28
|
}
|