@sprucelabs/spruce-cli 14.24.7 → 14.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +1 -1
  3. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  4. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.d.ts +1 -1
  5. package/build/__tests__/behavioral/events/CreatingAListener.test.js +1 -1
  6. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  7. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +1 -1
  8. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
  9. package/build/__tests__/behavioral/skill/UpgradingASkill4.test.d.ts +3 -0
  10. package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js +129 -8
  11. package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js.map +1 -1
  12. package/build/__tests__/behavioral/views/CreatingASkillView.test.d.ts +1 -0
  13. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +33 -3
  14. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  15. package/build/features/node/NodeFeature.js +1 -1
  16. package/build/features/node/NodeFeature.js.map +1 -1
  17. package/build/features/node/actions/UpdateDependenciesAction.js +21 -10
  18. package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
  19. package/build/features/organization/stores/OrganizationStore.d.ts +2 -2
  20. package/build/tests/AbstractEventTest.d.ts +2 -2
  21. package/build/tests/fixtures/OrganizationFixture.d.ts +1 -1
  22. package/package.json +27 -27
  23. package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +2 -5
  24. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +2 -2
  25. package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +1 -1
  26. package/src/__tests__/behavioral/skill/UpgradingASkill4.test.ts +45 -0
  27. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +12 -0
  28. package/src/features/node/NodeFeature.ts +3 -3
  29. package/src/features/node/actions/UpdateDependenciesAction.ts +12 -6
@@ -37,13 +37,13 @@ var _AbstractSkillTest2 = _interopRequireDefault(require("../../../tests/Abstrac
37
37
 
38
38
  var _test2 = _interopRequireDefault(require("../../../tests/utilities/test.utility"));
39
39
 
40
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _class2, _temp;
40
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _class, _class2, _temp;
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 CreatingASkillViewTest = (_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)(), _dec9 = (0, _test.test)(), _dec10 = (0, _test.test)(), _dec11 = (0, _test.test)(), (_class = (_temp = _class2 = /*#__PURE__*/function (_AbstractSkillTest) {
46
+ var CreatingASkillViewTest = (_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)(), _dec9 = (0, _test.test)(), _dec10 = (0, _test.test)(), _dec11 = (0, _test.test)(), _dec12 = (0, _test.test)(), (_class = (_temp = _class2 = /*#__PURE__*/function (_AbstractSkillTest) {
47
47
  (0, _inherits2["default"])(CreatingASkillViewTest, _AbstractSkillTest);
48
48
 
49
49
  var _super = _createSuper(CreatingASkillViewTest);
@@ -450,6 +450,36 @@ var CreatingASkillViewTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(
450
450
 
451
451
  return nicelyTypesViewController;
452
452
  }()
453
+ }, {
454
+ key: "typesViewControllerOptions",
455
+ value: function () {
456
+ var _typesViewControllerOptions = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
457
+ var viewsFile, viewContents;
458
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
459
+ while (1) {
460
+ switch (_context11.prev = _context11.next) {
461
+ case 0:
462
+ viewsFile = this.resolveHashSprucePath('views', 'views.ts');
463
+ viewContents = _spruceSkillUtils.diskUtil.readFile(viewsFile);
464
+
465
+ _test.assert.doesInclude(viewContents, "interface ViewControllerOptionsMap");
466
+
467
+ _test.assert.doesInclude(viewContents, "'testing-views.appointments-card': ConstructorParameters<typeof AppointmentsCardViewController>[0]");
468
+
469
+ case 4:
470
+ case "end":
471
+ return _context11.stop();
472
+ }
473
+ }
474
+ }, _callee11, this);
475
+ }));
476
+
477
+ function typesViewControllerOptions() {
478
+ return _typesViewControllerOptions.apply(this, arguments);
479
+ }
480
+
481
+ return typesViewControllerOptions;
482
+ }()
453
483
  }, {
454
484
  key: "buildTestfile",
455
485
  value: function buildTestfile(options) {
@@ -459,6 +489,6 @@ var CreatingASkillViewTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(
459
489
  }
460
490
  }]);
461
491
  return CreatingASkillViewTest;
462
- }(_AbstractSkillTest2["default"]), (0, _defineProperty2["default"])(_class2, "skillCacheKey", 'views'), (0, _defineProperty2["default"])(_class2, "action", void 0), (0, _defineProperty2["default"])(_class2, "rootSvc", void 0), (0, _defineProperty2["default"])(_class2, "appointmentsCard", void 0), (0, _defineProperty2["default"])(_class2, "dashboardVc", void 0), _temp), ((0, _applyDecoratedDescriptor2["default"])(_class, "hasCreateAction", [_dec], Object.getOwnPropertyDescriptor(_class, "hasCreateAction"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "asksIfRootSkillViewIfNotYetCreated", [_dec2], Object.getOwnPropertyDescriptor(_class, "asksIfRootSkillViewIfNotYetCreated"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canCreateRootSkillView", [_dec3], Object.getOwnPropertyDescriptor(_class, "canCreateRootSkillView"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "generatesValidRootSkillView", [_dec4], Object.getOwnPropertyDescriptor(_class, "generatesValidRootSkillView"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "rootSkillViewExtendsAbstractSkillViewController", [_dec5], Object.getOwnPropertyDescriptor(_class, "rootSkillViewExtendsAbstractSkillViewController"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "cantCreateTwoRootSvcs", [_dec6], Object.getOwnPropertyDescriptor(_class, "cantCreateTwoRootSvcs"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "asksForNamesIfCreatingSkillViewNotRoot", [_dec7], Object.getOwnPropertyDescriptor(_class, "asksForNamesIfCreatingSkillViewNotRoot"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "asksForViewModelWhenCreatingSkillView", [_dec8], Object.getOwnPropertyDescriptor(_class, "asksForViewModelWhenCreatingSkillView"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "skillViewExtendsAbstractViewControllerWithProperView", [_dec9], Object.getOwnPropertyDescriptor(_class, "skillViewExtendsAbstractViewControllerWithProperView"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "nicelyTypesRootSkillViewController", [_dec10], Object.getOwnPropertyDescriptor(_class, "nicelyTypesRootSkillViewController"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "nicelyTypesViewController", [_dec11], Object.getOwnPropertyDescriptor(_class, "nicelyTypesViewController"), _class)), _class));
492
+ }(_AbstractSkillTest2["default"]), (0, _defineProperty2["default"])(_class2, "skillCacheKey", 'views'), (0, _defineProperty2["default"])(_class2, "action", void 0), (0, _defineProperty2["default"])(_class2, "rootSvc", void 0), (0, _defineProperty2["default"])(_class2, "appointmentsCard", void 0), (0, _defineProperty2["default"])(_class2, "dashboardVc", void 0), _temp), ((0, _applyDecoratedDescriptor2["default"])(_class, "hasCreateAction", [_dec], Object.getOwnPropertyDescriptor(_class, "hasCreateAction"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "asksIfRootSkillViewIfNotYetCreated", [_dec2], Object.getOwnPropertyDescriptor(_class, "asksIfRootSkillViewIfNotYetCreated"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canCreateRootSkillView", [_dec3], Object.getOwnPropertyDescriptor(_class, "canCreateRootSkillView"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "generatesValidRootSkillView", [_dec4], Object.getOwnPropertyDescriptor(_class, "generatesValidRootSkillView"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "rootSkillViewExtendsAbstractSkillViewController", [_dec5], Object.getOwnPropertyDescriptor(_class, "rootSkillViewExtendsAbstractSkillViewController"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "cantCreateTwoRootSvcs", [_dec6], Object.getOwnPropertyDescriptor(_class, "cantCreateTwoRootSvcs"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "asksForNamesIfCreatingSkillViewNotRoot", [_dec7], Object.getOwnPropertyDescriptor(_class, "asksForNamesIfCreatingSkillViewNotRoot"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "asksForViewModelWhenCreatingSkillView", [_dec8], Object.getOwnPropertyDescriptor(_class, "asksForViewModelWhenCreatingSkillView"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "skillViewExtendsAbstractViewControllerWithProperView", [_dec9], Object.getOwnPropertyDescriptor(_class, "skillViewExtendsAbstractViewControllerWithProperView"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "nicelyTypesRootSkillViewController", [_dec10], Object.getOwnPropertyDescriptor(_class, "nicelyTypesRootSkillViewController"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "nicelyTypesViewController", [_dec11], Object.getOwnPropertyDescriptor(_class, "nicelyTypesViewController"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "typesViewControllerOptions", [_dec12], Object.getOwnPropertyDescriptor(_class, "typesViewControllerOptions"), _class)), _class));
463
493
  exports["default"] = CreatingASkillViewTest;
464
494
  //# sourceMappingURL=CreatingASkillView.test.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/views/CreatingASkillView.test.ts"],"names":["CreatingASkillViewTest","action","Action","assert","isFunction","execute","viewType","waitForInput","last","ui","lastInvocation","isEqual","command","reset","isRoot","results","isFalsy","errors","rootSvc","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","contents","diskUtil","readFile","isTruthy","errorAssertUtil","assertError","name","promise","sendInput","dashboardVc","nameReadable","options","choices","value","appointmentsCard","buildTestfile","idInterfaceName","code","testFile","resolvePath","writeFile","importAll","imported","svcModel","svcId","vcModel","vcId","trim","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport CreateAction from '../../../features/view/actions/CreateAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillViewTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: CreateAction\n\tprivate static rootSvc: string\n\tpublic static appointmentsCard: string\n\tprivate static dashboardVc: string\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'create') as CreateAction\n\t}\n\n\t@test()\n\tprotected static hasCreateAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async asksIfRootSkillViewIfNotYetCreated() {\n\t\tvoid this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'confirm')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canCreateRootSkillView() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.rootSvc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Root.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.rootSvc, 'skillViewControllers')\n\t}\n\n\t@test()\n\tprotected static async generatesValidRootSkillView() {\n\t\tawait this.Service('typeChecker').check(this.rootSvc)\n\t}\n\n\t@test()\n\tprotected static async rootSkillViewExtendsAbstractSkillViewController() {\n\t\tconst contents = diskUtil.readFile(this.rootSvc)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class RootSkillViewController extends AbstractSkillViewController'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantCreateTwoRootSvcs() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\n\t\terrorAssertUtil.assertError(results.errors?.[0], 'SKILL_VIEW_EXISTS', {\n\t\t\tname: 'Root',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async asksForNamesIfCreatingSkillViewNotRoot() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\n\t\tawait this.ui.sendInput('Dashboard')\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.dashboardVc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Dashboard.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.dashboardVc, 'skillViewControllers')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async asksForViewModelWhenCreatingSkillView() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'view',\n\t\t\tnameReadable: 'Appointments card',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tvalue: 'Card',\n\t\t})\n\n\t\tawait this.ui.sendInput('Card')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.appointmentsCard = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'AppointmentsCard.vc.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static skillViewExtendsAbstractViewControllerWithProperView() {\n\t\tconst contents = diskUtil.readFile(this.appointmentsCard)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class AppointmentsCardViewController extends AbstractViewController<Card>'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesRootSkillViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'SkillViewControllerId',\n\t\t\tcode: `\nconst root = vcFactory.Controller('testing-views.root', {})\nexport const svcModel = root.render()\nexport const svcId: SkillViewControllerId = 'testing-views.root'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.svcModel)\n\t\tassert.isTruthy(imported.svcId)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'ViewControllerId',\n\t\t\tcode: `\n\t\tconst apptCard = vcFactory.Controller('testing-views.appointments-card', {})\n\t\texport const vcModel = apptCard.render()\n\t\texport const vcId: ViewControllerId = 'testing-views.appointments-card'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.vcModel)\n\t\tassert.isTruthy(imported.vcId)\n\t}\n\n\tprivate static buildTestfile(options: {\n\t\tcode: string\n\t\tidInterfaceName: 'SkillViewControllerId' | 'ViewControllerId'\n\t}) {\n\t\tconst { code, idInterfaceName } = options\n\n\t\treturn (\n\t\t\t`\nimport ` +\n\t\t\t`'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\tMockStorage,\n\t${idInterfaceName},\n} from '@sprucelabs/heartwood-view-controllers'\nimport { vcDiskUtil } from '@sprucelabs/spruce-test-fixtures'\n\nAuthenticatorImpl.setStorage(new MockStorage())\n\nconst vcFactory = ViewControllerFactory.Factory({\n\tcontrollerMap: vcDiskUtil.loadViewControllersAndBuildMap('testing-views', __dirname),\n\tconnectToApi: async () => {\n\t\treturn 'yes' as any\n\t},\n})\n${code}\n\t\t`.trim()\n\t\t)\n\t}\n}\n"],"file":"CreatingASkillView.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/views/CreatingASkillView.test.ts"],"names":["CreatingASkillViewTest","action","Action","assert","isFunction","execute","viewType","waitForInput","last","ui","lastInvocation","isEqual","command","reset","isRoot","results","isFalsy","errors","rootSvc","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","contents","diskUtil","readFile","isTruthy","errorAssertUtil","assertError","name","promise","sendInput","dashboardVc","nameReadable","options","choices","value","appointmentsCard","buildTestfile","idInterfaceName","code","testFile","resolvePath","writeFile","importAll","imported","svcModel","svcId","vcModel","vcId","viewsFile","resolveHashSprucePath","viewContents","trim","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport CreateAction from '../../../features/view/actions/CreateAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillViewTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: CreateAction\n\tprivate static rootSvc: string\n\tpublic static appointmentsCard: string\n\tprivate static dashboardVc: string\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'create') as CreateAction\n\t}\n\n\t@test()\n\tprotected static hasCreateAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async asksIfRootSkillViewIfNotYetCreated() {\n\t\tvoid this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'confirm')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canCreateRootSkillView() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.rootSvc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Root.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.rootSvc, 'skillViewControllers')\n\t}\n\n\t@test()\n\tprotected static async generatesValidRootSkillView() {\n\t\tawait this.Service('typeChecker').check(this.rootSvc)\n\t}\n\n\t@test()\n\tprotected static async rootSkillViewExtendsAbstractSkillViewController() {\n\t\tconst contents = diskUtil.readFile(this.rootSvc)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class RootSkillViewController extends AbstractSkillViewController'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantCreateTwoRootSvcs() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\n\t\terrorAssertUtil.assertError(results.errors?.[0], 'SKILL_VIEW_EXISTS', {\n\t\t\tname: 'Root',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async asksForNamesIfCreatingSkillViewNotRoot() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\n\t\tawait this.ui.sendInput('Dashboard')\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.dashboardVc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Dashboard.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.dashboardVc, 'skillViewControllers')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async asksForViewModelWhenCreatingSkillView() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'view',\n\t\t\tnameReadable: 'Appointments card',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tvalue: 'Card',\n\t\t})\n\n\t\tawait this.ui.sendInput('Card')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.appointmentsCard = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'AppointmentsCard.vc.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static skillViewExtendsAbstractViewControllerWithProperView() {\n\t\tconst contents = diskUtil.readFile(this.appointmentsCard)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class AppointmentsCardViewController extends AbstractViewController<Card>'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesRootSkillViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'SkillViewControllerId',\n\t\t\tcode: `\nconst root = vcFactory.Controller('testing-views.root', {})\nexport const svcModel = root.render()\nexport const svcId: SkillViewControllerId = 'testing-views.root'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.svcModel)\n\t\tassert.isTruthy(imported.svcId)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'ViewControllerId',\n\t\t\tcode: `\n\t\tconst apptCard = vcFactory.Controller('testing-views.appointments-card', {})\n\t\texport const vcModel = apptCard.render()\n\t\texport const vcId: ViewControllerId = 'testing-views.appointments-card'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.vcModel)\n\t\tassert.isTruthy(imported.vcId)\n\t}\n\n\t@test()\n\tprotected static async typesViewControllerOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface ViewControllerOptionsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.appointments-card': ConstructorParameters<typeof AppointmentsCardViewController>[0]`\n\t\t)\n\t}\n\n\tprivate static buildTestfile(options: {\n\t\tcode: string\n\t\tidInterfaceName: 'SkillViewControllerId' | 'ViewControllerId'\n\t}) {\n\t\tconst { code, idInterfaceName } = options\n\n\t\treturn (\n\t\t\t`\nimport ` +\n\t\t\t`'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\tMockStorage,\n\t${idInterfaceName},\n} from '@sprucelabs/heartwood-view-controllers'\nimport { vcDiskUtil } from '@sprucelabs/spruce-test-fixtures'\n\nAuthenticatorImpl.setStorage(new MockStorage())\n\nconst vcFactory = ViewControllerFactory.Factory({\n\tcontrollerMap: vcDiskUtil.loadViewControllersAndBuildMap('testing-views', __dirname),\n\tconnectToApi: async () => {\n\t\treturn 'yes' as any\n\t},\n})\n${code}\n\t\t`.trim()\n\t\t)\n\t}\n}\n"],"file":"CreatingASkillView.test.js"}
@@ -114,7 +114,7 @@ var NodeFeature = /*#__PURE__*/function (_AbstractFeature) {
114
114
 
115
115
  case 11:
116
116
  return _context2.abrupt("return", {
117
- summaryLines: ['Build folder cleared.', 'Lint rules applied.', 'Rebuild Complete']
117
+ summaryLines: ['Build cleared.', 'Lint rules applied to source.', 'Code rebuilt successfully.']
118
118
  });
119
119
 
120
120
  case 14:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/node/NodeFeature.ts"],"names":["NodeFeature","options","nodeFeatureOptionsSchema","universalDevDependencies","universalScripts","universalFileDescriptions","diskUtil","resolvePath","__dirname","doesFileExist","cwd","emitter","on","payload","featureCode","actionCode","ui","startLoading","Service","execute","summaryLines","errors","destination","resolveDestination","doesDirExist","createDir","files","name","path","action","nodeWriter","Writer","writeNodeModule","written","push","installScripts","pkg","set","value","namesUtil","toKebab","description","unset","Store","setCurrentSkillsNamespace","scriptUpdater","ScriptUpdater","FromFeature","update","AbstractFeature"],"mappings":"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","sourcesContent":["import { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { SpruceSchemas } from '@sprucelabs/spruce-core-schemas'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport nodeFeatureOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema'\nimport { FileDescription, GeneratedFile } from '../../types/cli.types'\nimport ScriptUpdater from '../../updaters/ScriptUpdater'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\nimport universalDevDependencies from '../universalDevDependencies'\nimport universalFileDescriptions from '../universalFileDescriptions'\nimport universalScripts from '../universalScripts'\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptions\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tnode: NodeFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tnode: SchemaValues<OptionsSchema>\n\t}\n}\n\nexport default class NodeFeature<\n\tS extends OptionsSchema = OptionsSchema\n> extends AbstractFeature<S> {\n\tpublic code: FeatureCode = 'node'\n\tpublic nameReadable = 'nodejs support'\n\tpublic description = ''\n\tpublic dependencies: FeatureDependency[] = []\n\tpublic optionsSchema = nodeFeatureOptionsSchema as S\n\tpublic packageDependencies = [...universalDevDependencies]\n\n\tpublic scripts = {\n\t\t...universalScripts,\n\t}\n\n\tpublic readonly fileDescriptions: FileDescription[] = [\n\t\t...universalFileDescriptions,\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.did-execute', async (payload) => {\n\t\t\tif (payload.featureCode === 'node' && payload.actionCode === 'upgrade') {\n\t\t\t\ttry {\n\t\t\t\t\tthis.ui.startLoading('Cleaning build...')\n\t\t\t\t\tawait this.Service('command').execute('yarn clean.build')\n\n\t\t\t\t\tthis.ui.startLoading('Applying lint rules to all files...')\n\t\t\t\t\tawait this.Service('command').execute('yarn fix.lint')\n\n\t\t\t\t\tthis.ui.startLoading('Rebuilding...')\n\t\t\t\t\tawait this.Service('command').execute('yarn build.dev')\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsummaryLines: [\n\t\t\t\t\t\t\t'Build folder cleared.',\n\t\t\t\t\t\t\t'Lint rules applied.',\n\t\t\t\t\t\t\t'Rebuild Complete',\n\t\t\t\t\t\t],\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terrors: [err],\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n\n\tpublic async beforePackageInstall(options: Options) {\n\t\tconst destination = this.resolveDestination(options)\n\n\t\tif (!diskUtil.doesDirExist(destination)) {\n\t\t\tdiskUtil.createDir(destination)\n\t\t}\n\n\t\tconst files: GeneratedFile[] = [\n\t\t\t{\n\t\t\t\tname: 'package.json',\n\t\t\t\tpath: diskUtil.resolvePath(destination, 'package.json'),\n\t\t\t\taction: 'generated',\n\t\t\t},\n\t\t]\n\n\t\tawait this.Service('command', destination).execute('yarn init -y')\n\n\t\tconst nodeWriter = this.Writer('node')\n\t\tconst written = await nodeWriter.writeNodeModule(destination)\n\n\t\tfiles.push(...written)\n\n\t\tawait this.installScripts(destination)\n\n\t\treturn { files, cwd: destination }\n\t}\n\n\tprivate resolveDestination(options: Options) {\n\t\treturn diskUtil.resolvePath(this.cwd, options.destination ?? '')\n\t}\n\n\tpublic async afterPackageInstall(\n\t\toptions: S extends Schema ? SchemaValues<S> : undefined\n\t) {\n\t\tconst cwd = this.resolveDestination(options)\n\t\tconst pkg = this.Service('pkg', cwd)\n\n\t\tpkg.set({ path: 'name', value: namesUtil.toKebab(options.name) })\n\t\tpkg.set({ path: 'description', value: options.description })\n\t\tpkg.set({ path: 'version', value: '0.0.1' })\n\n\t\tpkg.unset('main')\n\t\tpkg.unset('license')\n\n\t\tawait this.Store('skill', { cwd }).setCurrentSkillsNamespace(options.name)\n\n\t\treturn {}\n\t}\n\n\tprivate async installScripts(destination = this.cwd) {\n\t\tconst scriptUpdater = ScriptUpdater.FromFeature(this, {\n\t\t\tcwd: destination,\n\t\t})\n\n\t\tawait scriptUpdater.update()\n\t}\n\n\tpublic isInstalled = async (): Promise<boolean> => {\n\t\treturn diskUtil.doesFileExist(\n\t\t\tdiskUtil.resolvePath(this.cwd, 'package.json')\n\t\t)\n\t}\n}\n"],"file":"NodeFeature.js"}
1
+ {"version":3,"sources":["../../../src/features/node/NodeFeature.ts"],"names":["NodeFeature","options","nodeFeatureOptionsSchema","universalDevDependencies","universalScripts","universalFileDescriptions","diskUtil","resolvePath","__dirname","doesFileExist","cwd","emitter","on","payload","featureCode","actionCode","ui","startLoading","Service","execute","summaryLines","errors","destination","resolveDestination","doesDirExist","createDir","files","name","path","action","nodeWriter","Writer","writeNodeModule","written","push","installScripts","pkg","set","value","namesUtil","toKebab","description","unset","Store","setCurrentSkillsNamespace","scriptUpdater","ScriptUpdater","FromFeature","update","AbstractFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;IAgBqBA,W;;;;;AAoBpB,uBAAmBC,OAAnB,EAA2C;AAAA;;AAAA;AAC1C,8BAAMA,OAAN;AAD0C,6FAjBhB,MAiBgB;AAAA,qGAhBrB,gBAgBqB;AAAA,oGAftB,EAesB;AAAA,qGAdA,EAcA;AAAA,sGAbpBC,8BAaoB;AAAA,gJAZVC,oCAYU;AAAA,kHATvCC,4BASuC;AAAA,6IALvCC,qCAKuC;AAAA,mGAFvBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CAEuB;AAAA,+LA0FtB;AAAA;AAAA;AAAA;AAAA;AAAA,+CACbF,2BAASG,aAAT,CACNH,2BAASC,WAAT,CAAqB,MAAKG,GAA1B,EAA+B,cAA/B,CADM,CADa;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KA1FsB;AAG1C,SAAK,MAAKC,OAAL,CAAaC,EAAb,CAAgB,qBAAhB;AAAA,gGAAuC,kBAAOC,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA,sBACvCA,OAAO,CAACC,WAAR,KAAwB,MAAxB,IAAkCD,OAAO,CAACE,UAAR,KAAuB,SADlB;AAAA;AAAA;AAAA;;AAAA;;AAGzC,sBAAKC,EAAL,CAAQC,YAAR,CAAqB,mBAArB;;AAHyC;AAAA,uBAInC,MAAKC,OAAL,CAAa,SAAb,EAAwBC,OAAxB,CAAgC,kBAAhC,CAJmC;;AAAA;AAMzC,sBAAKH,EAAL,CAAQC,YAAR,CAAqB,qCAArB;;AANyC;AAAA,uBAOnC,MAAKC,OAAL,CAAa,SAAb,EAAwBC,OAAxB,CAAgC,eAAhC,CAPmC;;AAAA;AASzC,sBAAKH,EAAL,CAAQC,YAAR,CAAqB,eAArB;;AATyC;AAAA,uBAUnC,MAAKC,OAAL,CAAa,SAAb,EAAwBC,OAAxB,CAAgC,gBAAhC,CAVmC;;AAAA;AAAA,kDAYlC;AACNC,kBAAAA,YAAY,EAAE,CACb,gBADa,EAEb,+BAFa,EAGb,4BAHa;AADR,iBAZkC;;AAAA;AAAA;AAAA;AAAA,kDAoBlC;AACNC,kBAAAA,MAAM,EAAE;AADF,iBApBkC;;AAAA;AAAA,kDA0BpC,EA1BoC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAvC;;AAAA;AAAA;AAAA;AAAA,QAAL;AAH0C;AA+B1C;;;;;gHAED,kBAAkCpB,OAAlC;AAAA;AAAA;AAAA;AAAA;AAAA;AACOqB,gBAAAA,WADP,GACqB,KAAKC,kBAAL,CAAwBtB,OAAxB,CADrB;;AAGC,oBAAI,CAACK,2BAASkB,YAAT,CAAsBF,WAAtB,CAAL,EAAyC;AACxChB,6CAASmB,SAAT,CAAmBH,WAAnB;AACA;;AAEKI,gBAAAA,KAPP,GAOgC,CAC9B;AACCC,kBAAAA,IAAI,EAAE,cADP;AAECC,kBAAAA,IAAI,EAAEtB,2BAASC,WAAT,CAAqBe,WAArB,EAAkC,cAAlC,CAFP;AAGCO,kBAAAA,MAAM,EAAE;AAHT,iBAD8B,CAPhC;AAAA;AAAA,uBAeO,KAAKX,OAAL,CAAa,SAAb,EAAwBI,WAAxB,EAAqCH,OAArC,CAA6C,cAA7C,CAfP;;AAAA;AAiBOW,gBAAAA,UAjBP,GAiBoB,KAAKC,MAAL,CAAY,MAAZ,CAjBpB;AAAA;AAAA,uBAkBuBD,UAAU,CAACE,eAAX,CAA2BV,WAA3B,CAlBvB;;AAAA;AAkBOW,gBAAAA,OAlBP;AAoBCP,gBAAAA,KAAK,CAACQ,IAAN,OAAAR,KAAK,sCAASO,OAAT,EAAL;AApBD;AAAA,uBAsBO,KAAKE,cAAL,CAAoBb,WAApB,CAtBP;;AAAA;AAAA,kDAwBQ;AAAEI,kBAAAA,KAAK,EAALA,KAAF;AAAShB,kBAAAA,GAAG,EAAEY;AAAd,iBAxBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA2BA,4BAA2BrB,OAA3B,EAA6C;AAAA;;AAC5C,aAAOK,2BAASC,WAAT,CAAqB,KAAKG,GAA1B,0BAA+BT,OAAO,CAACqB,WAAvC,uEAAsD,EAAtD,CAAP;AACA;;;;+GAED,kBACCrB,OADD;AAAA;AAAA;AAAA;AAAA;AAAA;AAGOS,gBAAAA,GAHP,GAGa,KAAKa,kBAAL,CAAwBtB,OAAxB,CAHb;AAIOmC,gBAAAA,GAJP,GAIa,KAAKlB,OAAL,CAAa,KAAb,EAAoBR,GAApB,CAJb;AAMC0B,gBAAAA,GAAG,CAACC,GAAJ,CAAQ;AAAET,kBAAAA,IAAI,EAAE,MAAR;AAAgBU,kBAAAA,KAAK,EAAEC,4BAAUC,OAAV,CAAkBvC,OAAO,CAAC0B,IAA1B;AAAvB,iBAAR;AACAS,gBAAAA,GAAG,CAACC,GAAJ,CAAQ;AAAET,kBAAAA,IAAI,EAAE,aAAR;AAAuBU,kBAAAA,KAAK,EAAErC,OAAO,CAACwC;AAAtC,iBAAR;AACAL,gBAAAA,GAAG,CAACC,GAAJ,CAAQ;AAAET,kBAAAA,IAAI,EAAE,SAAR;AAAmBU,kBAAAA,KAAK,EAAE;AAA1B,iBAAR;AAEAF,gBAAAA,GAAG,CAACM,KAAJ,CAAU,MAAV;AACAN,gBAAAA,GAAG,CAACM,KAAJ,CAAU,SAAV;AAXD;AAAA,uBAaO,KAAKC,KAAL,CAAW,OAAX,EAAoB;AAAEjC,kBAAAA,GAAG,EAAHA;AAAF,iBAApB,EAA6BkC,yBAA7B,CAAuD3C,OAAO,CAAC0B,IAA/D,CAbP;;AAAA;AAAA,kDAeQ,EAfR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;0GAkBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA6BL,gBAAAA,WAA7B,8DAA2C,KAAKZ,GAAhD;AACOmC,gBAAAA,aADP,GACuBC,0BAAcC,WAAd,CAA0B,IAA1B,EAAgC;AACrDrC,kBAAAA,GAAG,EAAEY;AADgD,iBAAhC,CADvB;AAAA;AAAA,uBAKOuB,aAAa,CAACG,MAAd,EALP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EApGSC,4B","sourcesContent":["import { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { SpruceSchemas } from '@sprucelabs/spruce-core-schemas'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport nodeFeatureOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema'\nimport { FileDescription, GeneratedFile } from '../../types/cli.types'\nimport ScriptUpdater from '../../updaters/ScriptUpdater'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\nimport universalDevDependencies from '../universalDevDependencies'\nimport universalFileDescriptions from '../universalFileDescriptions'\nimport universalScripts from '../universalScripts'\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptions\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tnode: NodeFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tnode: SchemaValues<OptionsSchema>\n\t}\n}\n\nexport default class NodeFeature<\n\tS extends OptionsSchema = OptionsSchema\n> extends AbstractFeature<S> {\n\tpublic code: FeatureCode = 'node'\n\tpublic nameReadable = 'nodejs support'\n\tpublic description = ''\n\tpublic dependencies: FeatureDependency[] = []\n\tpublic optionsSchema = nodeFeatureOptionsSchema as S\n\tpublic packageDependencies = [...universalDevDependencies]\n\n\tpublic scripts = {\n\t\t...universalScripts,\n\t}\n\n\tpublic readonly fileDescriptions: FileDescription[] = [\n\t\t...universalFileDescriptions,\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.did-execute', async (payload) => {\n\t\t\tif (payload.featureCode === 'node' && payload.actionCode === 'upgrade') {\n\t\t\t\ttry {\n\t\t\t\t\tthis.ui.startLoading('Cleaning build...')\n\t\t\t\t\tawait this.Service('command').execute('yarn clean.build')\n\n\t\t\t\t\tthis.ui.startLoading('Applying lint rules to all files...')\n\t\t\t\t\tawait this.Service('command').execute('yarn fix.lint')\n\n\t\t\t\t\tthis.ui.startLoading('Rebuilding...')\n\t\t\t\t\tawait this.Service('command').execute('yarn build.dev')\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsummaryLines: [\n\t\t\t\t\t\t\t'Build cleared.',\n\t\t\t\t\t\t\t'Lint rules applied to source.',\n\t\t\t\t\t\t\t'Code rebuilt successfully.',\n\t\t\t\t\t\t],\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terrors: [err],\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n\n\tpublic async beforePackageInstall(options: Options) {\n\t\tconst destination = this.resolveDestination(options)\n\n\t\tif (!diskUtil.doesDirExist(destination)) {\n\t\t\tdiskUtil.createDir(destination)\n\t\t}\n\n\t\tconst files: GeneratedFile[] = [\n\t\t\t{\n\t\t\t\tname: 'package.json',\n\t\t\t\tpath: diskUtil.resolvePath(destination, 'package.json'),\n\t\t\t\taction: 'generated',\n\t\t\t},\n\t\t]\n\n\t\tawait this.Service('command', destination).execute('yarn init -y')\n\n\t\tconst nodeWriter = this.Writer('node')\n\t\tconst written = await nodeWriter.writeNodeModule(destination)\n\n\t\tfiles.push(...written)\n\n\t\tawait this.installScripts(destination)\n\n\t\treturn { files, cwd: destination }\n\t}\n\n\tprivate resolveDestination(options: Options) {\n\t\treturn diskUtil.resolvePath(this.cwd, options.destination ?? '')\n\t}\n\n\tpublic async afterPackageInstall(\n\t\toptions: S extends Schema ? SchemaValues<S> : undefined\n\t) {\n\t\tconst cwd = this.resolveDestination(options)\n\t\tconst pkg = this.Service('pkg', cwd)\n\n\t\tpkg.set({ path: 'name', value: namesUtil.toKebab(options.name) })\n\t\tpkg.set({ path: 'description', value: options.description })\n\t\tpkg.set({ path: 'version', value: '0.0.1' })\n\n\t\tpkg.unset('main')\n\t\tpkg.unset('license')\n\n\t\tawait this.Store('skill', { cwd }).setCurrentSkillsNamespace(options.name)\n\n\t\treturn {}\n\t}\n\n\tprivate async installScripts(destination = this.cwd) {\n\t\tconst scriptUpdater = ScriptUpdater.FromFeature(this, {\n\t\t\tcwd: destination,\n\t\t})\n\n\t\tawait scriptUpdater.update()\n\t}\n\n\tpublic isInstalled = async (): Promise<boolean> => {\n\t\treturn diskUtil.doesFileExist(\n\t\t\tdiskUtil.resolvePath(this.cwd, 'package.json')\n\t\t)\n\t}\n}\n"],"file":"NodeFeature.js"}
@@ -68,7 +68,7 @@ var UpdateDependenciesAction = /*#__PURE__*/function (_AbstractAction) {
68
68
  _this = _super.call.apply(_super, [this].concat(args));
69
69
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "code", 'updateDependencies');
70
70
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "optionsSchema", optionsSchema);
71
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "commandAliases", ['update.dependencies']);
71
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "commandAliases", ['update.dependencies', 'upgrade.dependencies']);
72
72
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "invocationMessage", 'Updating dependencies... 💪');
73
73
  return _this;
74
74
  }
@@ -138,7 +138,7 @@ var UpdateDependenciesAction = /*#__PURE__*/function (_AbstractAction) {
138
138
  _pkgContents$devDepen,
139
139
  _this2 = this;
140
140
 
141
- var features, pkg, pkgContents, dependencies, devDependencies, _iterator, _step, feature, _iterator2, _step2, dep;
141
+ var features, pkg, pkgContents, dependencies, devDependencies, _iterator, _step, feature, _iterator2, _step2, _loop;
142
142
 
143
143
  return _regenerator["default"].wrap(function _callee2$(_context2) {
144
144
  while (1) {
@@ -171,20 +171,31 @@ var UpdateDependenciesAction = /*#__PURE__*/function (_AbstractAction) {
171
171
  _iterator2 = _createForOfIteratorHelper(feature.packageDependencies);
172
172
 
173
173
  try {
174
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
175
- dep = _step2.value;
176
-
177
- if (dep.isDev) {
174
+ _loop = function _loop() {
175
+ var dep = _step2.value;
176
+ var stripped = pkg.stripLatest(dep.name);
177
+ var name = pkg.buildPackageName(dep);
178
+ var isDev = (dep.isDev || devDependencies.find(function (d) {
179
+ return d.stripped === stripped;
180
+ })) && !dependencies.find(function (d) {
181
+ return d.stripped === stripped;
182
+ });
183
+
184
+ if (isDev) {
178
185
  devDependencies.unshift({
179
- stripped: pkg.stripLatest(dep.name),
180
- name: pkg.buildPackageName(dep)
186
+ stripped: stripped,
187
+ name: name
181
188
  });
182
189
  } else {
183
190
  dependencies.unshift({
184
- stripped: pkg.stripLatest(dep.name),
185
- name: pkg.buildPackageName(dep)
191
+ stripped: stripped,
192
+ name: name
186
193
  });
187
194
  }
195
+ };
196
+
197
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
198
+ _loop();
188
199
  }
189
200
  } catch (err) {
190
201
  _iterator2.e(err);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/node/actions/UpdateDependenciesAction.ts"],"names":["optionsSchema","id","description","fields","UpdateDependenciesAction","_options","files","file","diskUtil","deleteFile","resolvePath","cwd","InFlightEntertainment","start","installDependencies","totalDependencies","totalDevDependencies","headline","summaryLines","stop","featureInstaller","getInstalledFeatures","features","pkg","Service","pkgContents","readPackage","dependencies","Object","keys","map","d","stripped","name","devDependencies","feature","packageDependencies","dep","isDev","unshift","stripLatest","buildPackageName","filter","isBlockedFromUpgrade","deleteLockFile","length","writeStatus","install","shouldForceInstall","shouldCleanupLockFiles","content","get","push","set","path","value","isBlocked","indexOf","AbstractAction"],"mappings":"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","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { uniqBy } from 'lodash'\nimport InFlightEntertainment from '../../../InFlightEntertainment'\nimport PkgService from '../../../services/PkgService'\nimport { NpmPackage } from '../../../types/cli.types'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'updateDependenciesAction',\n\tdescription:\n\t\t'Clear lock files and node_modules and then reinstalls all modules.',\n\tfields: {},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\nexport default class UpdateDependenciesAction extends AbstractAction<OptionsSchema> {\n\tpublic code = 'updateDependencies'\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['update.dependencies']\n\tpublic invocationMessage = 'Updating dependencies... 💪'\n\n\tpublic async execute(_options: Options): Promise<FeatureActionResponse> {\n\t\tconst files = ['package-lock.json', 'yarn.lock', 'node_modules']\n\n\t\tfor (const file of files) {\n\t\t\tdiskUtil.deleteFile(diskUtil.resolvePath(this.cwd, file))\n\t\t}\n\n\t\ttry {\n\t\t\tInFlightEntertainment.start(['Here we go!', 'Good luck!'])\n\n\t\t\tconst { totalDependencies, totalDevDependencies } =\n\t\t\t\tawait this.installDependencies()\n\n\t\t\treturn {\n\t\t\t\theadline: 'Update Complete!',\n\t\t\t\tsummaryLines: [\n\t\t\t\t\t`${totalDependencies} dependencie${\n\t\t\t\t\t\ttotalDependencies === 1 ? '' : 's'\n\t\t\t\t\t} updated! 💪`,\n\t\t\t\t\t`${totalDevDependencies} dev dependencie${\n\t\t\t\t\t\ttotalDevDependencies === 1 ? '' : 's'\n\t\t\t\t\t} updated! 💪`,\n\t\t\t\t],\n\t\t\t}\n\t\t} finally {\n\t\t\tInFlightEntertainment.stop()\n\t\t}\n\t}\n\n\tprivate async installDependencies() {\n\t\tconst features = await this.featureInstaller.getInstalledFeatures()\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst pkgContents = pkg.readPackage()\n\n\t\tlet dependencies: { stripped: string; name: string }[] =\n\t\t\tObject.keys(pkgContents.dependencies ?? {}).map((d) => ({\n\t\t\t\tstripped: d,\n\t\t\t\tname: d,\n\t\t\t})) ?? []\n\n\t\tlet devDependencies: { stripped: string; name: string }[] =\n\t\t\tObject.keys(pkgContents.devDependencies ?? {}).map((d) => ({\n\t\t\t\tstripped: d,\n\t\t\t\tname: d,\n\t\t\t})) ?? []\n\n\t\tfor (const feature of features) {\n\t\t\tfor (const dep of feature.packageDependencies as NpmPackage[]) {\n\t\t\t\tif (dep.isDev) {\n\t\t\t\t\tdevDependencies.unshift({\n\t\t\t\t\t\tstripped: pkg.stripLatest(dep.name),\n\t\t\t\t\t\tname: pkg.buildPackageName(dep),\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tdependencies.unshift({\n\t\t\t\t\t\tstripped: pkg.stripLatest(dep.name),\n\t\t\t\t\t\tname: pkg.buildPackageName(dep),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdependencies = uniqBy(dependencies, 'stripped').filter(\n\t\t\t(d) => !this.isBlockedFromUpgrade(d.stripped, pkg)\n\t\t)\n\t\tdevDependencies = uniqBy(devDependencies, 'stripped').filter(\n\t\t\t(d) => !this.isBlockedFromUpgrade(d.stripped, pkg)\n\t\t)\n\n\t\tpkg.deleteLockFile()\n\n\t\tif (dependencies.length > 0) {\n\t\t\tInFlightEntertainment.writeStatus(\n\t\t\t\t`Installing ${dependencies.length} dependenc${\n\t\t\t\t\tdependencies.length === 1 ? 'y' : 'ies'\n\t\t\t\t}.`\n\t\t\t)\n\t\t\tawait pkg.install(\n\t\t\t\tdependencies.map((d) => d.name),\n\t\t\t\t{\n\t\t\t\t\tshouldForceInstall: true,\n\t\t\t\t\tshouldCleanupLockFiles: false,\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tif (devDependencies.length > 0) {\n\t\t\tInFlightEntertainment.writeStatus(\n\t\t\t\t`Installing ${devDependencies.length} dev dependenc${\n\t\t\t\t\tdependencies.length === 1 ? 'y' : 'ies'\n\t\t\t\t}.`\n\t\t\t)\n\t\t\tawait pkg.install(\n\t\t\t\tdevDependencies.map((d) => d.name),\n\t\t\t\t{\n\t\t\t\t\tshouldForceInstall: true,\n\t\t\t\t\tisDev: true,\n\t\t\t\t\tshouldCleanupLockFiles: false,\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tpkg.deleteLockFile()\n\n\t\treturn {\n\t\t\ttotalDependencies: dependencies.length,\n\t\t\ttotalDevDependencies: devDependencies.length,\n\t\t}\n\t}\n\n\tpublic blockUpgrade(name: string, pkg: PkgService) {\n\t\tconst content = pkg.get('skill.upgradeIgnoreList') ?? []\n\t\tcontent.push(name)\n\t\tpkg.set({ path: 'skill.upgradeIgnoreList', value: content })\n\t}\n\n\tpublic isBlockedFromUpgrade(name: string, pkg: PkgService) {\n\t\tconst content = pkg.get('skill.upgradeIgnoreList') ?? []\n\t\tconst isBlocked = content.indexOf(name) > -1\n\t\treturn isBlocked\n\t}\n}\n"],"file":"UpdateDependenciesAction.js"}
1
+ {"version":3,"sources":["../../../../src/features/node/actions/UpdateDependenciesAction.ts"],"names":["optionsSchema","id","description","fields","UpdateDependenciesAction","_options","files","file","diskUtil","deleteFile","resolvePath","cwd","InFlightEntertainment","start","installDependencies","totalDependencies","totalDevDependencies","headline","summaryLines","stop","featureInstaller","getInstalledFeatures","features","pkg","Service","pkgContents","readPackage","dependencies","Object","keys","map","d","stripped","name","devDependencies","feature","packageDependencies","dep","stripLatest","buildPackageName","isDev","find","unshift","filter","isBlockedFromUpgrade","deleteLockFile","length","writeStatus","install","shouldForceInstall","shouldCleanupLockFiles","content","get","push","set","path","value","isBlocked","indexOf","AbstractAction"],"mappings":"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","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { uniqBy } from 'lodash'\nimport InFlightEntertainment from '../../../InFlightEntertainment'\nimport PkgService from '../../../services/PkgService'\nimport { NpmPackage } from '../../../types/cli.types'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'updateDependenciesAction',\n\tdescription:\n\t\t'Clear lock files and node_modules and then reinstalls all modules.',\n\tfields: {},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\nexport default class UpdateDependenciesAction extends AbstractAction<OptionsSchema> {\n\tpublic code = 'updateDependencies'\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['update.dependencies', 'upgrade.dependencies']\n\tpublic invocationMessage = 'Updating dependencies... 💪'\n\n\tpublic async execute(_options: Options): Promise<FeatureActionResponse> {\n\t\tconst files = ['package-lock.json', 'yarn.lock', 'node_modules']\n\n\t\tfor (const file of files) {\n\t\t\tdiskUtil.deleteFile(diskUtil.resolvePath(this.cwd, file))\n\t\t}\n\n\t\ttry {\n\t\t\tInFlightEntertainment.start(['Here we go!', 'Good luck!'])\n\n\t\t\tconst { totalDependencies, totalDevDependencies } =\n\t\t\t\tawait this.installDependencies()\n\n\t\t\treturn {\n\t\t\t\theadline: 'Update Complete!',\n\t\t\t\tsummaryLines: [\n\t\t\t\t\t`${totalDependencies} dependencie${\n\t\t\t\t\t\ttotalDependencies === 1 ? '' : 's'\n\t\t\t\t\t} updated! 💪`,\n\t\t\t\t\t`${totalDevDependencies} dev dependencie${\n\t\t\t\t\t\ttotalDevDependencies === 1 ? '' : 's'\n\t\t\t\t\t} updated! 💪`,\n\t\t\t\t],\n\t\t\t}\n\t\t} finally {\n\t\t\tInFlightEntertainment.stop()\n\t\t}\n\t}\n\n\tprivate async installDependencies() {\n\t\tconst features = await this.featureInstaller.getInstalledFeatures()\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst pkgContents = pkg.readPackage()\n\n\t\tlet dependencies: { stripped: string; name: string }[] =\n\t\t\tObject.keys(pkgContents.dependencies ?? {}).map((d) => ({\n\t\t\t\tstripped: d,\n\t\t\t\tname: d,\n\t\t\t})) ?? []\n\n\t\tlet devDependencies: { stripped: string; name: string }[] =\n\t\t\tObject.keys(pkgContents.devDependencies ?? {}).map((d) => ({\n\t\t\t\tstripped: d,\n\t\t\t\tname: d,\n\t\t\t})) ?? []\n\n\t\tfor (const feature of features) {\n\t\t\tfor (const dep of feature.packageDependencies as NpmPackage[]) {\n\t\t\t\tconst stripped = pkg.stripLatest(dep.name)\n\t\t\t\tconst name = pkg.buildPackageName(dep)\n\t\t\t\tconst isDev =\n\t\t\t\t\t(dep.isDev || devDependencies.find((d) => d.stripped === stripped)) &&\n\t\t\t\t\t!dependencies.find((d) => d.stripped === stripped)\n\n\t\t\t\tif (isDev) {\n\t\t\t\t\tdevDependencies.unshift({\n\t\t\t\t\t\tstripped,\n\t\t\t\t\t\tname,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tdependencies.unshift({\n\t\t\t\t\t\tstripped,\n\t\t\t\t\t\tname,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdependencies = uniqBy(dependencies, 'stripped').filter(\n\t\t\t(d) => !this.isBlockedFromUpgrade(d.stripped, pkg)\n\t\t)\n\t\tdevDependencies = uniqBy(devDependencies, 'stripped').filter(\n\t\t\t(d) => !this.isBlockedFromUpgrade(d.stripped, pkg)\n\t\t)\n\n\t\tpkg.deleteLockFile()\n\n\t\tif (dependencies.length > 0) {\n\t\t\tInFlightEntertainment.writeStatus(\n\t\t\t\t`Installing ${dependencies.length} dependenc${\n\t\t\t\t\tdependencies.length === 1 ? 'y' : 'ies'\n\t\t\t\t}.`\n\t\t\t)\n\t\t\tawait pkg.install(\n\t\t\t\tdependencies.map((d) => d.name),\n\t\t\t\t{\n\t\t\t\t\tshouldForceInstall: true,\n\t\t\t\t\tshouldCleanupLockFiles: false,\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tif (devDependencies.length > 0) {\n\t\t\tInFlightEntertainment.writeStatus(\n\t\t\t\t`Installing ${devDependencies.length} dev dependenc${\n\t\t\t\t\tdependencies.length === 1 ? 'y' : 'ies'\n\t\t\t\t}.`\n\t\t\t)\n\t\t\tawait pkg.install(\n\t\t\t\tdevDependencies.map((d) => d.name),\n\t\t\t\t{\n\t\t\t\t\tshouldForceInstall: true,\n\t\t\t\t\tisDev: true,\n\t\t\t\t\tshouldCleanupLockFiles: false,\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tpkg.deleteLockFile()\n\n\t\treturn {\n\t\t\ttotalDependencies: dependencies.length,\n\t\t\ttotalDevDependencies: devDependencies.length,\n\t\t}\n\t}\n\n\tpublic blockUpgrade(name: string, pkg: PkgService) {\n\t\tconst content = pkg.get('skill.upgradeIgnoreList') ?? []\n\t\tcontent.push(name)\n\t\tpkg.set({ path: 'skill.upgradeIgnoreList', value: content })\n\t}\n\n\tpublic isBlockedFromUpgrade(name: string, pkg: PkgService) {\n\t\tconst content = pkg.get('skill.upgradeIgnoreList') ?? []\n\t\tconst isBlocked = content.indexOf(name) > -1\n\t\treturn isBlocked\n\t}\n}\n"],"file":"UpdateDependenciesAction.js"}
@@ -3,10 +3,10 @@ export default class OrganizationStore extends AbstractStore {
3
3
  name: string;
4
4
  isSkillInstalledAtOrg(skillId: string, orgId: string): Promise<boolean>;
5
5
  installSkillAtOrganization(skillId: string, orgId: any): Promise<void>;
6
- fetchMyOrganizations(): Promise<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, "dateDeleted", import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>[]>;
6
+ fetchMyOrganizations(): Promise<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>[]>;
7
7
  create(values: {
8
8
  name: string;
9
9
  slug?: string;
10
- }): Promise<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, "dateDeleted", import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>>;
10
+ }): Promise<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>>;
11
11
  deleteOrganization(orgId: string): Promise<void>;
12
12
  }
@@ -6,14 +6,14 @@ export default abstract class AbstractEventTest extends AbstractCliTest {
6
6
  skillFixture: import("./fixtures/SkillFixture").default;
7
7
  currentSkill: import("../types/cli.types").RegisteredSkill;
8
8
  cli: import("../cli").CliInterface;
9
- org: import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, "dateDeleted", import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>;
9
+ org: import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>;
10
10
  orgFixture: import("./fixtures/OrganizationFixture").default;
11
11
  }>;
12
12
  protected static registerCurrentSkillAndInstallToOrg(cacheKey?: string): Promise<{
13
13
  skillFixture: import("./fixtures/SkillFixture").default;
14
14
  currentSkill: import("../types/cli.types").RegisteredSkill;
15
15
  cli: import("../cli").CliInterface;
16
- org: import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, "dateDeleted", import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>;
16
+ org: import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>;
17
17
  orgFixture: import("./fixtures/OrganizationFixture").default;
18
18
  }>;
19
19
  protected static copyEventBuildersAndPermissions(eventName: string): Promise<void>;
@@ -7,7 +7,7 @@ export default class OrganizationFixture {
7
7
  seedDemoOrg(options: {
8
8
  name: string;
9
9
  slug?: string;
10
- }): Promise<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, "dateDeleted", import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>>;
10
+ }): Promise<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema, false>>>;
11
11
  clearAllOrgs(): Promise<number>;
12
12
  installSkillAtOrganization(skillId: string, orgId: string): Promise<void>;
13
13
  }
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  ]
18
18
  },
19
19
  "license": "MIT",
20
- "version": "14.24.7",
20
+ "version": "14.26.0",
21
21
  "bin": {
22
22
  "spruce": "./build/index.js"
23
23
  },
@@ -75,25 +75,25 @@
75
75
  "@babel/plugin-proposal-decorators": "^7.16.0",
76
76
  "@babel/runtime": "^7.16.0",
77
77
  "@jest/reporters": "^27.3.1",
78
- "@sprucelabs/error": "^5.0.265",
79
- "@sprucelabs/heartwood-view-controllers": "^35.2.0",
80
- "@sprucelabs/jest-json-reporter": "^6.0.227",
81
- "@sprucelabs/mercury-client": "^16.13.231",
82
- "@sprucelabs/mercury-event-emitter": "^16.13.231",
83
- "@sprucelabs/mercury-types": "^26.1.679",
84
- "@sprucelabs/schema": "^25.3.440",
85
- "@sprucelabs/spruce-core-schemas": "^22.5.608",
86
- "@sprucelabs/spruce-event-plugin": "^7.1.4",
87
- "@sprucelabs/spruce-event-utils": "^16.0.710",
88
- "@sprucelabs/spruce-skill-booter": "^7.1.4",
89
- "@sprucelabs/spruce-skill-utils": "^22.0.10",
90
- "@sprucelabs/spruce-templates": "^14.24.7",
78
+ "@sprucelabs/error": "^5.0.272",
79
+ "@sprucelabs/heartwood-view-controllers": "^40.0.0",
80
+ "@sprucelabs/jest-json-reporter": "^6.0.232",
81
+ "@sprucelabs/mercury-client": "^16.13.263",
82
+ "@sprucelabs/mercury-event-emitter": "^16.13.263",
83
+ "@sprucelabs/mercury-types": "^26.1.723",
84
+ "@sprucelabs/schema": "^25.3.461",
85
+ "@sprucelabs/spruce-core-schemas": "^22.6.33",
86
+ "@sprucelabs/spruce-event-plugin": "^8.1.1",
87
+ "@sprucelabs/spruce-event-utils": "^17.0.2",
88
+ "@sprucelabs/spruce-skill-booter": "^8.1.1",
89
+ "@sprucelabs/spruce-skill-utils": "^22.0.33",
90
+ "@sprucelabs/spruce-templates": "^14.26.0",
91
91
  "cfonts": "^2.10.0",
92
92
  "chalk": "^4.1.2",
93
93
  "chokidar": "^3.5.2",
94
94
  "cli-table3": "^0.6.0",
95
95
  "commander": "^7.2.0",
96
- "core-js": "^3.19.0",
96
+ "core-js": "^3.19.1",
97
97
  "emphasize": "^4.2.0",
98
98
  "fs-extra": "^10.0.0",
99
99
  "gifwrap": "SimenB/gifwrap#patch-1",
@@ -116,16 +116,16 @@
116
116
  "uuid": "^8.3.2"
117
117
  },
118
118
  "devDependencies": {
119
- "@sprucelabs/data-stores": "^7.0.5",
120
- "@sprucelabs/jest-sheets-reporter": "^1.2.232",
121
- "@sprucelabs/mercury-core-events": "^1.3.113",
122
- "@sprucelabs/resolve-path-aliases": "^1.0.221",
123
- "@sprucelabs/spruce-conversation-plugin": "^7.1.4",
124
- "@sprucelabs/spruce-deploy-plugin": "^7.1.4",
125
- "@sprucelabs/spruce-store-plugin": "^7.1.4",
126
- "@sprucelabs/spruce-test-fixtures": "^7.1.4",
127
- "@sprucelabs/test": "^7.7.214",
128
- "@sprucelabs/test-utils": "^3.0.240",
119
+ "@sprucelabs/data-stores": "^7.0.12",
120
+ "@sprucelabs/jest-sheets-reporter": "^1.2.236",
121
+ "@sprucelabs/mercury-core-events": "^1.4.30",
122
+ "@sprucelabs/resolve-path-aliases": "^1.0.223",
123
+ "@sprucelabs/spruce-conversation-plugin": "^8.1.1",
124
+ "@sprucelabs/spruce-deploy-plugin": "^8.1.1",
125
+ "@sprucelabs/spruce-store-plugin": "^8.1.1",
126
+ "@sprucelabs/spruce-test-fixtures": "^8.1.1",
127
+ "@sprucelabs/test": "^7.7.218",
128
+ "@sprucelabs/test-utils": "^3.0.248",
129
129
  "@types/blessed": "^0.1.19",
130
130
  "@types/eslint": "^7.28.2",
131
131
  "@types/fs-extra": "^9.0.13",
@@ -149,7 +149,7 @@
149
149
  "concurrently": "^6.3.0",
150
150
  "conventional-changelog-sprucelabs": "^1.1.2",
151
151
  "dotenv": "^10.0.0",
152
- "eslint": "^8.1.0",
152
+ "eslint": "^8.2.0",
153
153
  "eslint-config-spruce": "^10.10.15",
154
154
  "find-process": "^1.4.5",
155
155
  "jest": "^27.3.1",
@@ -593,5 +593,5 @@
593
593
  "ora"
594
594
  ]
595
595
  },
596
- "gitHead": "9097d8884c80a5c8fb6172db6428523c3e4fd2b0"
596
+ "gitHead": "29821f35b5ddf29fe81b98167ef51f21d934b389"
597
597
  }
@@ -1,4 +1,4 @@
1
- import { eventErrorAssertUtil } from '@sprucelabs/spruce-event-utils'
1
+ import { eventAssertUtil } from '@sprucelabs/spruce-event-utils'
2
2
  import { test, assert, assertUtil } from '@sprucelabs/test'
3
3
  import { errorAssertUtil } from '@sprucelabs/test-utils'
4
4
  import AbstractCliTest from '../../tests/AbstractCliTest'
@@ -43,10 +43,7 @@ export default class InstallingASkillAtAnOrgTest extends AbstractCliTest {
43
43
  })
44
44
 
45
45
  assert.isTruthy(anonResults.errors)
46
- eventErrorAssertUtil.assertError(
47
- anonResults.errors[0],
48
- 'UNAUTHORIZED_ACCESS'
49
- )
46
+ eventAssertUtil.assertError(anonResults.errors[0], 'UNAUTHORIZED_ACCESS')
50
47
  }
51
48
 
52
49
  @test()
@@ -2,7 +2,7 @@ import { EventSignature } from '@sprucelabs/mercury-types'
2
2
  import { buildSchema } from '@sprucelabs/schema'
3
3
  import {
4
4
  buildEmitTargetAndPayloadSchema,
5
- eventErrorAssertUtil,
5
+ eventAssertUtil,
6
6
  eventResponseUtil,
7
7
  eventTargetSchema,
8
8
  } from '@sprucelabs/spruce-event-utils'
@@ -252,7 +252,7 @@ export default class CreatingAListenerTest extends AbstractEventTest {
252
252
  eventResponseUtil.getFirstResponseOrThrow(results)
253
253
  )
254
254
 
255
- eventErrorAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')
255
+ eventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')
256
256
 
257
257
  const responderRef = results.responses[0].responderRef
258
258
  assert.isEqual(
@@ -237,7 +237,7 @@ export default class UpgradingASkillTest extends AbstractCliTest {
237
237
 
238
238
  assert.isEqual(updatedContents, originalContents)
239
239
 
240
- assert.doesInclude(results.summaryLines ?? [], 'Rebuild Complete')
240
+ assert.doesInclude(results.summaryLines ?? [], 'successfully')
241
241
  }
242
242
 
243
243
  @test()
@@ -65,6 +65,51 @@ export default class UpgradingASkill4Test extends AbstractCliTest {
65
65
  assert.isTrue(wasHit === shouldCreateSchema)
66
66
  }
67
67
 
68
+ @test()
69
+ protected static async modulesMovedFromDevToProdDependenciesStayThere() {
70
+ await this.FeatureFixture().installCachedFeatures('skills')
71
+
72
+ await this.moveDependencyToProd('@sprucelabs/resolve-path-aliases')
73
+ await this.moveDependencyToDev('@sprucelabs/error')
74
+
75
+ let wasMovedBackToDev = false
76
+ let wasMovedBackToProd = false
77
+
78
+ CommandService.setMockResponse(new RegExp(/yarn/gis), {
79
+ code: 0,
80
+ callback: (_, args) => {
81
+ if (
82
+ args.indexOf('-D') > -1 &&
83
+ args.indexOf('@sprucelabs/resolve-path-aliases') > -1
84
+ ) {
85
+ wasMovedBackToDev = true
86
+ } else if (
87
+ args.indexOf('-D') === -1 &&
88
+ args.indexOf('@sprucelabs/error') > -1
89
+ ) {
90
+ wasMovedBackToProd = true
91
+ }
92
+ },
93
+ })
94
+
95
+ await this.Action('node', 'upgrade').execute({})
96
+
97
+ assert.isFalse(wasMovedBackToDev, 'dependency moved back to dev')
98
+ assert.isFalse(wasMovedBackToProd, 'dependency moved back to prod')
99
+ }
100
+
101
+ private static async moveDependencyToDev(name: string) {
102
+ const pkg = this.Service('pkg')
103
+ await pkg.uninstall(name)
104
+ await pkg.install(name, { isDev: true })
105
+ }
106
+ private static async moveDependencyToProd(name: string) {
107
+ const pkg = this.Service('pkg')
108
+
109
+ await pkg.uninstall(name)
110
+ await pkg.install(name)
111
+ }
112
+
68
113
  private static async installSetListenerCacheAndBlockExecute() {
69
114
  await this.FeatureFixture().installCachedFeatures('events')
70
115
 
@@ -186,6 +186,18 @@ export const svcId: SkillViewControllerId = 'testing-views.root'`,
186
186
  assert.isTruthy(imported.vcId)
187
187
  }
188
188
 
189
+ @test()
190
+ protected static async typesViewControllerOptions() {
191
+ const viewsFile = this.resolveHashSprucePath('views', 'views.ts')
192
+ const viewContents = diskUtil.readFile(viewsFile)
193
+
194
+ assert.doesInclude(viewContents, `interface ViewControllerOptionsMap`)
195
+ assert.doesInclude(
196
+ viewContents,
197
+ `'testing-views.appointments-card': ConstructorParameters<typeof AppointmentsCardViewController>[0]`
198
+ )
199
+ }
200
+
189
201
  private static buildTestfile(options: {
190
202
  code: string
191
203
  idInterfaceName: 'SkillViewControllerId' | 'ViewControllerId'
@@ -61,9 +61,9 @@ export default class NodeFeature<
61
61
 
62
62
  return {
63
63
  summaryLines: [
64
- 'Build folder cleared.',
65
- 'Lint rules applied.',
66
- 'Rebuild Complete',
64
+ 'Build cleared.',
65
+ 'Lint rules applied to source.',
66
+ 'Code rebuilt successfully.',
67
67
  ],
68
68
  }
69
69
  } catch (err) {
@@ -19,7 +19,7 @@ type Options = SchemaValues<OptionsSchema>
19
19
  export default class UpdateDependenciesAction extends AbstractAction<OptionsSchema> {
20
20
  public code = 'updateDependencies'
21
21
  public optionsSchema = optionsSchema
22
- public commandAliases = ['update.dependencies']
22
+ public commandAliases = ['update.dependencies', 'upgrade.dependencies']
23
23
  public invocationMessage = 'Updating dependencies... 💪'
24
24
 
25
25
  public async execute(_options: Options): Promise<FeatureActionResponse> {
@@ -71,15 +71,21 @@ export default class UpdateDependenciesAction extends AbstractAction<OptionsSche
71
71
 
72
72
  for (const feature of features) {
73
73
  for (const dep of feature.packageDependencies as NpmPackage[]) {
74
- if (dep.isDev) {
74
+ const stripped = pkg.stripLatest(dep.name)
75
+ const name = pkg.buildPackageName(dep)
76
+ const isDev =
77
+ (dep.isDev || devDependencies.find((d) => d.stripped === stripped)) &&
78
+ !dependencies.find((d) => d.stripped === stripped)
79
+
80
+ if (isDev) {
75
81
  devDependencies.unshift({
76
- stripped: pkg.stripLatest(dep.name),
77
- name: pkg.buildPackageName(dep),
82
+ stripped,
83
+ name,
78
84
  })
79
85
  } else {
80
86
  dependencies.unshift({
81
- stripped: pkg.stripLatest(dep.name),
82
- name: pkg.buildPackageName(dep),
87
+ stripped,
88
+ name,
83
89
  })
84
90
  }
85
91
  }