@sprucelabs/spruce-cli 14.24.8 → 14.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) 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/events/CreatingAListener.test.js +1 -1
  5. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  6. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +1 -1
  7. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
  8. package/build/__tests__/behavioral/skill/UpgradingASkill4.test.d.ts +3 -0
  9. package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js +129 -8
  10. package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js.map +1 -1
  11. package/build/__tests__/behavioral/views/CreatingASkillView.test.d.ts +1 -0
  12. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +33 -3
  13. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  14. package/build/features/node/NodeFeature.js +1 -1
  15. package/build/features/node/NodeFeature.js.map +1 -1
  16. package/build/features/node/actions/UpdateDependenciesAction.js +21 -10
  17. package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
  18. package/package.json +26 -26
  19. package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +2 -5
  20. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +2 -2
  21. package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +1 -1
  22. package/src/__tests__/behavioral/skill/UpgradingASkill4.test.ts +45 -0
  23. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +12 -0
  24. package/src/features/node/NodeFeature.ts +3 -3
  25. package/src/features/node/actions/UpdateDependenciesAction.ts +12 -6
package/CHANGELOG.md CHANGED
@@ -3,6 +3,45 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [14.26.1](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.26.0...v14.26.1) (2021-11-08)
7
+
8
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
9
+
10
+
11
+
12
+
13
+
14
+ # [14.26.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.25.0...v14.26.0) (2021-11-07)
15
+
16
+
17
+ ### Features
18
+
19
+ * update.dependencies has a new alias: upgrade.dependencies ([4fd36d2](https://github.com/sprucelabsai/spruce-cli-workspace/commit/4fd36d2))
20
+ * upgrading a skill will keep dev and prod dependencies in their spot ([42ddd04](https://github.com/sprucelabsai/spruce-cli-workspace/commit/42ddd04))
21
+
22
+
23
+
24
+
25
+
26
+ # [14.25.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.24.9...v14.25.0) (2021-11-05)
27
+
28
+
29
+ ### Features
30
+
31
+ * Gave developers the ability to get code assistance when building custom views in heartwood ([c38fd2d](https://github.com/sprucelabsai/spruce-cli-workspace/commit/c38fd2d))
32
+
33
+
34
+
35
+
36
+
37
+ ## [14.24.9](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.24.8...v14.24.9) (2021-11-05)
38
+
39
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
40
+
41
+
42
+
43
+
44
+
6
45
  ## [14.24.8](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.24.7...v14.24.8) (2021-11-03)
7
46
 
8
47
  **Note:** Version bump only for package @sprucelabs/spruce-cli
@@ -179,7 +179,7 @@ var InstallingASkillAtAnOrgTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.t
179
179
 
180
180
  _test.assert.isTruthy(anonResults.errors);
181
181
 
182
- _spruceEventUtils.eventErrorAssertUtil.assertError(anonResults.errors[0], 'UNAUTHORIZED_ACCESS');
182
+ _spruceEventUtils.eventAssertUtil.assertError(anonResults.errors[0], 'UNAUTHORIZED_ACCESS');
183
183
 
184
184
  case 16:
185
185
  case "end":
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts"],"names":["InstallingASkillAtAnOrgTest","login","getOrganizationFixture","clearAllOrgs","getPersonFixture","loginAsDemoPerson","process","env","DEMO_NUMBER_INSTALL_SKILL","Cli","assert","isFunction","Action","execute","seedDemoOrg","name","org","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","logout","organizationId","id","anonResults","isTruthy","errors","eventErrorAssertUtil","assertError","errorAssertUtil","skill","promise","waitForInput","doesInclude","ui","lastInvocation","command","assertUtil","stringify","sendInput","results","isFalsy","Store","isSkillInstalledAtOrg","isInstalled","org2","options","type","AbstractCliTest"],"mappings":"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","sourcesContent":["import { eventErrorAssertUtil } from '@sprucelabs/spruce-event-utils'\nimport { test, assert, assertUtil } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class InstallingASkillAtAnOrgTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tawait this.login()\n\t\tawait this.getOrganizationFixture().clearAllOrgs()\n\t}\n\n\tprivate static async login() {\n\t\tawait this.getPersonFixture().loginAsDemoPerson(\n\t\t\tprocess.env.DEMO_NUMBER_INSTALL_SKILL\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async hasInstallAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('organization', 'install').execute)\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingLoggedIn() {\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'new org',\n\t\t})\n\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tawait this.getPersonFixture().logout()\n\n\t\tawait this.Cli()\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({\n\t\t\torganizationId: org.id,\n\t\t})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\teventErrorAssertUtil.assertError(\n\t\t\tanonResults.errors[0],\n\t\t\t'UNAUTHORIZED_ACCESS'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutAnyOrgs() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssertUtil.assertError(anonResults.errors[0], 'NO_ORGANIZATIONS_FOUND')\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingRegistered() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssertUtil.assertError(anonResults.errors[0], 'SKILL_NOT_REGISTERED')\n\t}\n\n\t@test()\n\tprotected static async canInstallSkillAtOrg() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(\n\t\t\tthis.ui.lastInvocation().command,\n\t\t\t'confirm',\n\t\t\t`ui didn't get back a confirm, got back \\n\\n${assertUtil.stringify(\n\t\t\t\tthis.ui.lastInvocation()\n\t\t\t)}`\n\t\t)\n\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async asksYouToSelectOrgWithMoreThanOne() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst org2 = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(this.ui.lastInvocation().options, {\n\t\t\ttype: 'select',\n\t\t})\n\n\t\tawait this.ui.sendInput(org2.id)\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg2.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n}\n"],"file":"InstallingASkillAtAnOrg.test.js"}
1
+ {"version":3,"sources":["../../../src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts"],"names":["InstallingASkillAtAnOrgTest","login","getOrganizationFixture","clearAllOrgs","getPersonFixture","loginAsDemoPerson","process","env","DEMO_NUMBER_INSTALL_SKILL","Cli","assert","isFunction","Action","execute","seedDemoOrg","name","org","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","logout","organizationId","id","anonResults","isTruthy","errors","eventAssertUtil","assertError","errorAssertUtil","skill","promise","waitForInput","doesInclude","ui","lastInvocation","command","assertUtil","stringify","sendInput","results","isFalsy","Store","isSkillInstalledAtOrg","isInstalled","org2","options","type","AbstractCliTest"],"mappings":"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","sourcesContent":["import { eventAssertUtil } from '@sprucelabs/spruce-event-utils'\nimport { test, assert, assertUtil } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class InstallingASkillAtAnOrgTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tawait this.login()\n\t\tawait this.getOrganizationFixture().clearAllOrgs()\n\t}\n\n\tprivate static async login() {\n\t\tawait this.getPersonFixture().loginAsDemoPerson(\n\t\t\tprocess.env.DEMO_NUMBER_INSTALL_SKILL\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async hasInstallAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('organization', 'install').execute)\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingLoggedIn() {\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'new org',\n\t\t})\n\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tawait this.getPersonFixture().logout()\n\n\t\tawait this.Cli()\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({\n\t\t\torganizationId: org.id,\n\t\t})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\teventAssertUtil.assertError(anonResults.errors[0], 'UNAUTHORIZED_ACCESS')\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutAnyOrgs() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssertUtil.assertError(anonResults.errors[0], 'NO_ORGANIZATIONS_FOUND')\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingRegistered() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssertUtil.assertError(anonResults.errors[0], 'SKILL_NOT_REGISTERED')\n\t}\n\n\t@test()\n\tprotected static async canInstallSkillAtOrg() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(\n\t\t\tthis.ui.lastInvocation().command,\n\t\t\t'confirm',\n\t\t\t`ui didn't get back a confirm, got back \\n\\n${assertUtil.stringify(\n\t\t\t\tthis.ui.lastInvocation()\n\t\t\t)}`\n\t\t)\n\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async asksYouToSelectOrgWithMoreThanOne() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst org2 = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(this.ui.lastInvocation().options, {\n\t\t\ttype: 'select',\n\t\t})\n\n\t\tawait this.ui.sendInput(org2.id)\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg2.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n}\n"],"file":"InstallingASkillAtAnOrg.test.js"}
@@ -476,7 +476,7 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
476
476
  return _spruceEventUtils.eventResponseUtil.getFirstResponseOrThrow(results);
477
477
  });
478
478
 
479
- _spruceEventUtils.eventErrorAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED');
479
+ _spruceEventUtils.eventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED');
480
480
 
481
481
  responderRef = results.responses[0].responderRef;
482
482
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventErrorAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","add","namespace","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventErrorAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\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\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\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\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventErrorAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"file":"CreatingAListener.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","add","namespace","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\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\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\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\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"file":"CreatingAListener.test.js"}
@@ -500,7 +500,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
500
500
 
501
501
  _test.assert.isEqual(updatedContents, originalContents);
502
502
 
503
- _test.assert.doesInclude((_results$summaryLines = results.summaryLines) !== null && _results$summaryLines !== void 0 ? _results$summaryLines : [], 'Rebuild Complete');
503
+ _test.assert.doesInclude((_results$summaryLines = results.summaryLines) !== null && _results$summaryLines !== void 0 ? _results$summaryLines : [], 'successfully');
504
504
 
505
505
  case 15:
506
506
  case "end":
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill.test.ts"],"names":["BROKEN_SKILL_INDEX_CONTENTS","UpgradingASkillTest","CommandService","setMockResponse","RegExp","code","installAndBreakSkill","cli","files","name","path","forceEverythingAction","forceRequiredSkipRestAction","upgradeMode","file","clearFileIfAboutToBeUpdated","Action","execute","results","checkHealth","passedHealthCheck","assert","isEqualDeep","skill","status","action","doesInclude","JSON","stringify","promise","waitForInput","assertFailedHealthCheck","last","ui","lastInvocation","FILE_ACTION_OVERWRITE","sendInput","isFalsy","errors","health","isEqual","installBreakAndUpgradeSkill","FILE_ACTION_SKIP","assertSkillIsBroken","FILE_ACTION_ALWAYS_SKIP","installSkill","pkgService","Service","set","value","failedHealth","passedHealth","pluginName","cacheKey","shouldMockYarn","FeatureFixture","installCachedFeatures","pluginPath","resolveHashSprucePath","originalContents","diskUtil","readFile","writeFile","testUtil","assertFileByNameInGeneratedFiles","updatedContents","summaryLines","pkg","command","options","choices","get","isNotEqual","match","newContents","resolvePath","indexFile","fixture","installFeatures","description","failedHealthCheck","listeners","doesDirExist","matches","fsUtil","readdirSync","isLength","contents","AbstractCliTest"],"mappings":"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","sourcesContent":["import fsUtil from 'fs'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { CliInterface } from '../../../cli'\nimport {\n\tFILE_ACTION_ALWAYS_SKIP,\n\tFILE_ACTION_OVERWRITE,\n\tFILE_ACTION_SKIP,\n} from '../../../constants'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport { GeneratedFile } from '../../../types/cli.types'\nconst BROKEN_SKILL_INDEX_CONTENTS = \"throw new Error('cheese!')\\n\"\nexport default class UpgradingASkillTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tCommandService.setMockResponse(new RegExp(/yarn rebuild/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async forceEverythingUpgradeOverwritesWhatHasChanged() {\n\t\tconst cli = await this.installAndBreakSkill('skills')\n\n\t\tCommandService.setMockResponse('yarn clean.build', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tCommandService.setMockResponse('yarn build.dev', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst files: {\n\t\t\tname: string\n\t\t\tpath: string\n\t\t\tforceEverythingAction: GeneratedFile['action']\n\t\t\tforceRequiredSkipRestAction: GeneratedFile['action']\n\t\t}[] = [\n\t\t\t{\n\t\t\t\tname: 'index.ts',\n\t\t\t\tpath: 'src/index.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'updated',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: '.eslintrc.js',\n\t\t\t\tpath: '.eslintrc.js',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'updated',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'SpruceError.ts',\n\t\t\t\tpath: 'src/errors/SpruceError.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'skipped',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'options.types.ts',\n\t\t\t\tpath: 'src/.spruce/errors/options.types.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'skipped',\n\t\t\t},\n\t\t]\n\n\t\tfor (const upgradeMode of ['forceRequiredSkipRest', 'forceEverything']) {\n\t\t\tfor (const file of files) {\n\t\t\t\tthis.clearFileIfAboutToBeUpdated(file, upgradeMode)\n\t\t\t}\n\n\t\t\tconst results = await this.Action('node', 'upgrade').execute({\n\t\t\t\tupgradeMode,\n\t\t\t})\n\n\t\t\tif (upgradeMode === 'forceRequiredSkipRest') {\n\t\t\t\tconst passedHealthCheck = await cli.checkHealth()\n\t\t\t\tassert.isEqualDeep(passedHealthCheck, { skill: { status: 'passed' } })\n\t\t\t}\n\n\t\t\tfor (const file of files) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tconst action = file[`${upgradeMode}Action`]\n\t\t\t\tassert.doesInclude(\n\t\t\t\t\tresults.files,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\taction,\n\t\t\t\t\t},\n\t\t\t\t\t`${\n\t\t\t\t\t\tfile.name\n\t\t\t\t\t} was not ${action} when ${upgradeMode} in \\n\\n ${JSON.stringify(\n\t\t\t\t\t\tresults.files ?? [],\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t)}`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tconst passedHealthCheck = await cli.checkHealth()\n\n\t\tassert.doesInclude(passedHealthCheck, {\n\t\t\t'skill.status': 'passed',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async upgradeWillAskIfYouWantToOverwriteFiles() {\n\t\tconst cli = await this.installAndBreakSkill('skills')\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.assertFailedHealthCheck(cli)\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_OVERWRITE,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_OVERWRITE)\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isEqual(health.skill.status, 'passed')\n\t}\n\n\t@test()\n\tprotected static async canSkipFile() {\n\t\tconst { last, promise } = await this.installBreakAndUpgradeSkill()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_SKIP,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_SKIP)\n\n\t\tawait promise\n\n\t\tthis.assertSkillIsBroken()\n\t}\n\n\t@test()\n\tprotected static async canAlwaysSkipFiles() {\n\t\tconst { last, promise } = await this.installBreakAndUpgradeSkill()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_ALWAYS_SKIP,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_ALWAYS_SKIP)\n\n\t\tawait promise\n\n\t\tthis.assertSkillIsBroken()\n\n\t\tconst results = await this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertSkillIsBroken()\n\t}\n\n\t@test()\n\tprotected static async upgradesUpdatesPackageScripts() {\n\t\tconst cli = await this.installSkill('schemas')\n\n\t\tconst pkgService = this.Service('pkg')\n\t\tpkgService.set({ path: 'scripts', value: {} })\n\n\t\tconst failedHealth = await cli.checkHealth()\n\n\t\tassert.doesInclude(failedHealth, {\n\t\t\t'skill.errors[].message': '\"health.local\" not found',\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tconst passedHealth = await cli.checkHealth()\n\t\tassert.isEqual(passedHealth.skill.status, 'passed')\n\t}\n\n\t@test(\n\t\t'Upgrades error.plugin (even if skill is broken)',\n\t\t'error.plugin.ts',\n\t\t'errors'\n\t)\n\t@test(\n\t\t'Upgrades schema.plugin (even if skill is broken)',\n\t\t'schema.plugin.ts',\n\t\t'schemas'\n\t)\n\t@test(\n\t\t'Upgrades conversation.plugin (even if skill is broken)',\n\t\t'conversation.plugin.ts',\n\t\t'conversation',\n\t\tfalse\n\t)\n\t@test(\n\t\t'Upgrades view.plugin (even if skill is broken)',\n\t\t'view.plugin.ts',\n\t\t'views',\n\t\tfalse\n\t)\n\tprotected static async upgradesPlugins(\n\t\tpluginName: string,\n\t\tcacheKey: string,\n\t\tshouldMockYarn = true\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures(cacheKey)\n\n\t\tshouldMockYarn && CommandService.setMockResponse(/yarn/, { code: 0 })\n\n\t\tconst pluginPath = this.resolveHashSprucePath(`features/${pluginName}`)\n\t\tconst originalContents = diskUtil.readFile(pluginPath)\n\n\t\tdiskUtil.writeFile(pluginPath, 'aoeuaoeuaoeuaoeu')\n\n\t\tconst results = await this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(pluginName, results.files)\n\n\t\tconst updatedContents = diskUtil.readFile(pluginPath)\n\n\t\tassert.isEqual(updatedContents, originalContents)\n\n\t\tassert.doesInclude(results.summaryLines ?? [], 'Rebuild Complete')\n\t}\n\n\t@test()\n\tprotected static async canSkipPackageScriptChanges() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\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, { value: 'skip' })\n\t\tassert.doesInclude(last.options.options.choices, { value: 'skipAll' })\n\t\tassert.doesInclude(last.options.options.choices, { value: 'overwrite' })\n\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async asksForEachScriptChange() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\t\tpkg.set({ path: ['scripts', 'watch.build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait this.waitForInput()\n\n\t\tlast = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t\tassert.isEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async canSkipAllScriptChanges() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\t\tpkg.set({ path: ['scripts', 'watch.build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skipAll')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t\tassert.isEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async canOverwriteChangedScript() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('overwrite')\n\n\t\tawait promise\n\n\t\tassert.isNotEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async upgradingSkillWithSandboxUpgradesTheListener() {\n\t\tawait this.FeatureFixture().installCachedFeatures('sandbox')\n\t\tconst results = await this.Action('sandbox', 'setup').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/will-boot/,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst originalContents = diskUtil.readFile(match)\n\t\tdiskUtil.writeFile(match, 'broken')\n\n\t\tCommandService.setMockResponse(/yarn/, { code: 0 })\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tconst newContents = diskUtil.readFile(match)\n\t\tassert.isEqual(originalContents, newContents)\n\t}\n\n\tprivate static clearFileIfAboutToBeUpdated(\n\t\tfile: {\n\t\t\tname: string\n\t\t\tpath: string\n\t\t\tforceEverythingAction: GeneratedFile['action']\n\t\t\tforceRequiredSkipRestAction: GeneratedFile['action']\n\t\t},\n\t\tupgradeMode: string\n\t) {\n\t\t//@ts-ignore\n\t\tif (file[`${upgradeMode}Action`] === 'updated') {\n\t\t\tdiskUtil.writeFile(this.resolvePath(file.path), '')\n\t\t}\n\t}\n\n\tprivate static async installAndBreakSkill(cacheKey: string) {\n\t\tconst cli = await this.installSkill(cacheKey)\n\t\tconst indexFile = this.resolvePath('src/index.ts')\n\t\tdiskUtil.writeFile(indexFile, BROKEN_SKILL_INDEX_CONTENTS)\n\t\tawait this.assertFailedHealthCheck(cli)\n\n\t\treturn cli\n\t}\n\n\tprivate static async installSkill(cacheKey: string) {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installFeatures(\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\tcode: 'skill',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tname: 'testing events',\n\t\t\t\t\t\tdescription: 'this too, is a great test!',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tcacheKey\n\t\t)\n\t\treturn cli\n\t}\n\n\tprivate static async assertFailedHealthCheck(cli: CliInterface) {\n\t\tconst failedHealthCheck = await cli.checkHealth()\n\n\t\tassert.doesInclude(failedHealthCheck, {\n\t\t\t'skill.errors[].message': 'cheese',\n\t\t})\n\t}\n\n\tprotected static assertSandboxListenerNotWritten() {\n\t\tconst listeners = this.resolvePath('src', 'listeners')\n\t\tif (!diskUtil.doesDirExist(listeners)) {\n\t\t\treturn\n\t\t}\n\t\tconst matches = fsUtil.readdirSync(listeners)\n\t\tassert.isLength(\n\t\t\tmatches,\n\t\t\t0,\n\t\t\t'A sandbox listeners was written and it should not have been.'\n\t\t)\n\t}\n\n\tprivate static async installBreakAndUpgradeSkill() {\n\t\tawait this.installAndBreakSkill('skills')\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\t\treturn { last, promise }\n\t}\n\n\tprivate static assertSkillIsBroken() {\n\t\tconst indexFile = this.resolvePath('src/index.ts')\n\t\tconst contents = diskUtil.readFile(indexFile)\n\t\tassert.isEqual(contents, BROKEN_SKILL_INDEX_CONTENTS)\n\t}\n}\n"],"file":"UpgradingASkill.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill.test.ts"],"names":["BROKEN_SKILL_INDEX_CONTENTS","UpgradingASkillTest","CommandService","setMockResponse","RegExp","code","installAndBreakSkill","cli","files","name","path","forceEverythingAction","forceRequiredSkipRestAction","upgradeMode","file","clearFileIfAboutToBeUpdated","Action","execute","results","checkHealth","passedHealthCheck","assert","isEqualDeep","skill","status","action","doesInclude","JSON","stringify","promise","waitForInput","assertFailedHealthCheck","last","ui","lastInvocation","FILE_ACTION_OVERWRITE","sendInput","isFalsy","errors","health","isEqual","installBreakAndUpgradeSkill","FILE_ACTION_SKIP","assertSkillIsBroken","FILE_ACTION_ALWAYS_SKIP","installSkill","pkgService","Service","set","value","failedHealth","passedHealth","pluginName","cacheKey","shouldMockYarn","FeatureFixture","installCachedFeatures","pluginPath","resolveHashSprucePath","originalContents","diskUtil","readFile","writeFile","testUtil","assertFileByNameInGeneratedFiles","updatedContents","summaryLines","pkg","command","options","choices","get","isNotEqual","match","newContents","resolvePath","indexFile","fixture","installFeatures","description","failedHealthCheck","listeners","doesDirExist","matches","fsUtil","readdirSync","isLength","contents","AbstractCliTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AAKA;;AACA;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,2BAA2B,GAAG,8BAApC;IACqBC,mB,WAQnB,iB,UAqFA,iB,UA6BA,iB,UAeA,iB,UAuBA,iB,UAmBA,gBACA,iDADA,EAEA,iBAFA,EAGA,QAHA,C,UAKA,gBACA,kDADA,EAEA,kBAFA,EAGA,SAHA,C,UAKA,gBACA,wDADA,EAEA,wBAFA,EAGA,cAHA,EAIA,KAJA,C,UAMA,gBACA,gDADA,EAEA,gBAFA,EAGA,OAHA,EAIA,KAJA,C,WAiCA,iB,WAyBA,iB,WA8BA,iB,WAuBA,iB,WAqBA,iB;;;;;;;;;;;;;sGAtUD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAECC,2CAAeC,eAAf,CAA+B,IAAIC,MAAJ,CAAW,gBAAX,CAA/B,EAA8D;AAC7DC,kBAAAA,IAAI,EAAE;AADuD,iBAA9D;;AAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;0IAOA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEmB,KAAKC,oBAAL,CAA0B,QAA1B,CAFnB;;AAAA;AAEOC,gBAAAA,GAFP;;AAICL,2CAAeC,eAAf,CAA+B,kBAA/B,EAAmD;AAClDE,kBAAAA,IAAI,EAAE;AAD4C,iBAAnD;;AAIAH,2CAAeC,eAAf,CAA+B,gBAA/B,EAAiD;AAChDE,kBAAAA,IAAI,EAAE;AAD0C,iBAAjD;;AAIMG,gBAAAA,KAZP,GAiBO,CACL;AACCC,kBAAAA,IAAI,EAAE,UADP;AAECC,kBAAAA,IAAI,EAAE,cAFP;AAGCC,kBAAAA,qBAAqB,EAAE,SAHxB;AAICC,kBAAAA,2BAA2B,EAAE;AAJ9B,iBADK,EAOL;AACCH,kBAAAA,IAAI,EAAE,cADP;AAECC,kBAAAA,IAAI,EAAE,cAFP;AAGCC,kBAAAA,qBAAqB,EAAE,SAHxB;AAICC,kBAAAA,2BAA2B,EAAE;AAJ9B,iBAPK,EAaL;AACCH,kBAAAA,IAAI,EAAE,gBADP;AAECC,kBAAAA,IAAI,EAAE,2BAFP;AAGCC,kBAAAA,qBAAqB,EAAE,SAHxB;AAICC,kBAAAA,2BAA2B,EAAE;AAJ9B,iBAbK,EAmBL;AACCH,kBAAAA,IAAI,EAAE,kBADP;AAECC,kBAAAA,IAAI,EAAE,qCAFP;AAGCC,kBAAAA,qBAAqB,EAAE,SAHxB;AAICC,kBAAAA,2BAA2B,EAAE;AAJ9B,iBAnBK,CAjBP;AAAA,+BA4C2B,CAAC,uBAAD,EAA0B,iBAA1B,CA5C3B;;AAAA;AAAA;AAAA;AAAA;AAAA;;AA4CYC,gBAAAA,WA5CZ;AAAA,uDA6CqBL,KA7CrB;;AAAA;AA6CE,sEAA0B;AAAfM,oBAAAA,IAAe;AACzB,yBAAKC,2BAAL,CAAiCD,IAAjC,EAAuCD,WAAvC;AACA;AA/CH;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAiDwB,KAAKG,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC;AAC5DJ,kBAAAA,WAAW,EAAXA;AAD4D,iBAAvC,CAjDxB;;AAAA;AAiDQK,gBAAAA,OAjDR;;AAAA,sBAqDML,WAAW,KAAK,uBArDtB;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAsDmCN,GAAG,CAACY,WAAJ,EAtDnC;;AAAA;AAsDSC,gBAAAA,kBAtDT;;AAuDGC,6BAAOC,WAAP,CAAmBF,kBAAnB,EAAsC;AAAEG,kBAAAA,KAAK,EAAE;AAAEC,oBAAAA,MAAM,EAAE;AAAV;AAAT,iBAAtC;;AAvDH;AAAA,wDA0DqBhB,KA1DrB;;AAAA;AA0DE,yEAA0B;AAAfM,oBAAAA,KAAe;AACzB;AACMW,oBAAAA,MAFmB,GAEVX,KAAI,WAAID,WAAJ,YAFM;;AAGzBQ,iCAAOK,WAAP,CACCR,OAAO,CAACV,KADT,EAEC;AACCC,sBAAAA,IAAI,EAAEK,KAAI,CAACL,IADZ;AAECgB,sBAAAA,MAAM,EAANA;AAFD,qBAFD,YAOEX,KAAI,CAACL,IAPP,sBAQagB,MARb,mBAQ4BZ,WAR5B,sBAQmDc,IAAI,CAACC,SAAL,mBACjDV,OAAO,CAACV,KADyC,2DAChC,EADgC,EAEjD,IAFiD,EAGjD,CAHiD,CARnD;AAcA;AA3EH;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,uBA8EiCD,GAAG,CAACY,WAAJ,EA9EjC;;AAAA;AA8EOC,gBAAAA,iBA9EP;;AAgFCC,6BAAOK,WAAP,CAAmBN,iBAAnB,EAAsC;AACrC,kCAAgB;AADqB,iBAAtC;;AAhFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;mIAqFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEmB,KAAKd,oBAAL,CAA0B,QAA1B,CAFnB;;AAAA;AAEOC,gBAAAA,GAFP;AAIOsB,gBAAAA,OAJP,GAIiB,KAAKb,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC;AACtDJ,kBAAAA,WAAW,EAAE;AADyC,iBAAvC,CAJjB;AAAA;AAAA,uBAQO,KAAKiB,YAAL,EARP;;AAAA;AAAA;AAAA,uBAUO,KAAKC,uBAAL,CAA6BxB,GAA7B,CAVP;;AAAA;AAYOyB,gBAAAA,IAZP,GAYc,KAAKC,EAAL,CAAQC,cAAR,EAZd;;AAcCb,6BAAOK,WAAP,CAAmBM,IAAnB,EAAyB;AACxB,qDAAmCG;AADX,iBAAzB;;AAdD;AAAA,uBAkBO,KAAKF,EAAL,CAAQG,SAAR,CAAkBD,gCAAlB,CAlBP;;AAAA;AAAA;AAAA,uBAoBuBN,OApBvB;;AAAA;AAoBOX,gBAAAA,OApBP;;AAsBCG,6BAAOgB,OAAP,CAAenB,OAAO,CAACoB,MAAvB;;AAtBD;AAAA,uBAwBsB/B,GAAG,CAACY,WAAJ,EAxBtB;;AAAA;AAwBOoB,gBAAAA,MAxBP;;AA0BClB,6BAAOmB,OAAP,CAAeD,MAAM,CAAChB,KAAP,CAAaC,MAA5B,EAAoC,QAApC;;AA1BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;uGA6BA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEiC,KAAKiB,2BAAL,EAFjC;;AAAA;AAAA;AAEST,gBAAAA,IAFT,yBAESA,IAFT;AAEeH,gBAAAA,OAFf,yBAEeA,OAFf;;AAICR,6BAAOK,WAAP,CAAmBM,IAAnB,EAAyB;AACxB,qDAAmCU;AADX,iBAAzB;;AAJD;AAAA,uBAQO,KAAKT,EAAL,CAAQG,SAAR,CAAkBM,2BAAlB,CARP;;AAAA;AAAA;AAAA,uBAUOb,OAVP;;AAAA;AAYC,qBAAKc,mBAAL;;AAZD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;8GAeA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEiC,KAAKF,2BAAL,EAFjC;;AAAA;AAAA;AAEST,gBAAAA,IAFT,0BAESA,IAFT;AAEeH,gBAAAA,OAFf,0BAEeA,OAFf;;AAICR,6BAAOK,WAAP,CAAmBM,IAAnB,EAAyB;AACxB,qDAAmCY;AADX,iBAAzB;;AAJD;AAAA,uBAQO,KAAKX,EAAL,CAAQG,SAAR,CAAkBQ,kCAAlB,CARP;;AAAA;AAAA;AAAA,uBAUOf,OAVP;;AAAA;AAYC,qBAAKc,mBAAL;AAZD;AAAA,uBAcuB,KAAK3B,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC;AAC5DJ,kBAAAA,WAAW,EAAE;AAD+C,iBAAvC,CAdvB;;AAAA;AAcOK,gBAAAA,OAdP;;AAkBCG,6BAAOgB,OAAP,CAAenB,OAAO,CAACoB,MAAvB;;AAEA,qBAAKK,mBAAL;;AApBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;yHAuBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEmB,KAAKE,YAAL,CAAkB,SAAlB,CAFnB;;AAAA;AAEOtC,gBAAAA,GAFP;AAIOuC,gBAAAA,UAJP,GAIoB,KAAKC,OAAL,CAAa,KAAb,CAJpB;AAKCD,gBAAAA,UAAU,CAACE,GAAX,CAAe;AAAEtC,kBAAAA,IAAI,EAAE,SAAR;AAAmBuC,kBAAAA,KAAK,EAAE;AAA1B,iBAAf;AALD;AAAA,uBAO4B1C,GAAG,CAACY,WAAJ,EAP5B;;AAAA;AAOO+B,gBAAAA,YAPP;;AASC7B,6BAAOK,WAAP,CAAmBwB,YAAnB,EAAiC;AAChC,4CAA0B;AADM,iBAAjC;;AATD;AAAA,uBAaO,KAAKlC,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CAbP;;AAAA;AAAA;AAAA,uBAe4BV,GAAG,CAACY,WAAJ,EAf5B;;AAAA;AAeOgC,gBAAAA,YAfP;;AAgBC9B,6BAAOmB,OAAP,CAAeW,YAAY,CAAC5B,KAAb,CAAmBC,MAAlC,EAA0C,QAA1C;;AAhBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;2GAmBA,kBAuBC4B,UAvBD,EAwBCC,QAxBD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBCC,gBAAAA,cAzBD,8DAyBkB,IAzBlB;AAAA;AAAA,uBA2BO,KAAKC,cAAL,GAAsBC,qBAAtB,CAA4CH,QAA5C,CA3BP;;AAAA;AA6BCC,gBAAAA,cAAc,IAAIpD,2BAAeC,eAAf,CAA+B,MAA/B,EAAuC;AAAEE,kBAAAA,IAAI,EAAE;AAAR,iBAAvC,CAAlB;AAEMoD,gBAAAA,UA/BP,GA+BoB,KAAKC,qBAAL,oBAAuCN,UAAvC,EA/BpB;AAgCOO,gBAAAA,gBAhCP,GAgC0BC,2BAASC,QAAT,CAAkBJ,UAAlB,CAhC1B;;AAkCCG,2CAASE,SAAT,CAAmBL,UAAnB,EAA+B,kBAA/B;;AAlCD;AAAA,uBAoCuB,KAAKzC,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CApCvB;;AAAA;AAoCOC,gBAAAA,OApCP;;AAsCCG,6BAAOgB,OAAP,CAAenB,OAAO,CAACoB,MAAvB;;AAEAyB,kCAASC,gCAAT,CAA0CZ,UAA1C,EAAsDlC,OAAO,CAACV,KAA9D;;AAEMyD,gBAAAA,eA1CP,GA0CyBL,2BAASC,QAAT,CAAkBJ,UAAlB,CA1CzB;;AA4CCpC,6BAAOmB,OAAP,CAAeyB,eAAf,EAAgCN,gBAAhC;;AAEAtC,6BAAOK,WAAP,0BAAmBR,OAAO,CAACgD,YAA3B,yEAA2C,EAA3C,EAA+C,cAA/C;;AA9CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;uHAiDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKX,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAIOW,gBAAAA,GAJP,GAIa,KAAKpB,OAAL,CAAa,KAAb,CAJb;AAKCoB,gBAAAA,GAAG,CAACnB,GAAJ,CAAQ;AAAEtC,kBAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,WAAZ,CAAR;AAAkCuC,kBAAAA,KAAK,EAAE;AAAzC,iBAAR;AAEMpB,gBAAAA,OAPP,GAOiB,KAAKb,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CAPjB;AAAA;AAAA,uBASO,KAAKa,YAAL,EATP;;AAAA;AAWOE,gBAAAA,IAXP,GAWc,KAAKC,EAAL,CAAQC,cAAR,EAXd;;AAaCb,6BAAOmB,OAAP,CAAeR,IAAI,CAACoC,OAApB,EAA6B,QAA7B;;AACA/C,6BAAOK,WAAP,CAAmBM,IAAI,CAACqC,OAAL,CAAaA,OAAb,CAAqBC,OAAxC,EAAiD;AAAErB,kBAAAA,KAAK,EAAE;AAAT,iBAAjD;;AACA5B,6BAAOK,WAAP,CAAmBM,IAAI,CAACqC,OAAL,CAAaA,OAAb,CAAqBC,OAAxC,EAAiD;AAAErB,kBAAAA,KAAK,EAAE;AAAT,iBAAjD;;AACA5B,6BAAOK,WAAP,CAAmBM,IAAI,CAACqC,OAAL,CAAaA,OAAb,CAAqBC,OAAxC,EAAiD;AAAErB,kBAAAA,KAAK,EAAE;AAAT,iBAAjD;;AAhBD;AAAA,uBAkBO,KAAKhB,EAAL,CAAQG,SAAR,CAAkB,MAAlB,CAlBP;;AAAA;AAAA;AAAA,uBAoBOP,OApBP;;AAAA;AAsBCR,6BAAOmB,OAAP,CAAe2B,GAAG,CAACI,GAAJ,CAAQ,CAAC,SAAD,EAAY,WAAZ,CAAR,CAAf,EAAkD,MAAlD;;AAtBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;mHAyBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKhB,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAIOW,gBAAAA,GAJP,GAIa,KAAKpB,OAAL,CAAa,KAAb,CAJb;AAKCoB,gBAAAA,GAAG,CAACnB,GAAJ,CAAQ;AAAEtC,kBAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,WAAZ,CAAR;AAAkCuC,kBAAAA,KAAK,EAAE;AAAzC,iBAAR;AACAkB,gBAAAA,GAAG,CAACnB,GAAJ,CAAQ;AAAEtC,kBAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,iBAAZ,CAAR;AAAwCuC,kBAAAA,KAAK,EAAE;AAA/C,iBAAR;AAEMpB,gBAAAA,OARP,GAQiB,KAAKb,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CARjB;AAAA;AAAA,uBAUO,KAAKa,YAAL,EAVP;;AAAA;AAYKE,gBAAAA,IAZL,GAYY,KAAKC,EAAL,CAAQC,cAAR,EAZZ;;AAcCb,6BAAOmB,OAAP,CAAeR,IAAI,CAACoC,OAApB,EAA6B,QAA7B;;AAdD;AAAA,uBAeO,KAAKnC,EAAL,CAAQG,SAAR,CAAkB,MAAlB,CAfP;;AAAA;AAAA;AAAA,uBAiBO,KAAKN,YAAL,EAjBP;;AAAA;AAmBCE,gBAAAA,IAAI,GAAG,KAAKC,EAAL,CAAQC,cAAR,EAAP;;AAEAb,6BAAOmB,OAAP,CAAeR,IAAI,CAACoC,OAApB,EAA6B,QAA7B;;AArBD;AAAA,uBAsBO,KAAKnC,EAAL,CAAQG,SAAR,CAAkB,MAAlB,CAtBP;;AAAA;AAAA;AAAA,uBAwBOP,OAxBP;;AAAA;AA0BCR,6BAAOmB,OAAP,CAAe2B,GAAG,CAACI,GAAJ,CAAQ,CAAC,SAAD,EAAY,WAAZ,CAAR,CAAf,EAAkD,MAAlD;;AACAlD,6BAAOmB,OAAP,CAAe2B,GAAG,CAACI,GAAJ,CAAQ,CAAC,SAAD,EAAY,iBAAZ,CAAR,CAAf,EAAwD,MAAxD;;AA3BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;mHA8BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKhB,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAIOW,gBAAAA,GAJP,GAIa,KAAKpB,OAAL,CAAa,KAAb,CAJb;AAKCoB,gBAAAA,GAAG,CAACnB,GAAJ,CAAQ;AAAEtC,kBAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,WAAZ,CAAR;AAAkCuC,kBAAAA,KAAK,EAAE;AAAzC,iBAAR;AACAkB,gBAAAA,GAAG,CAACnB,GAAJ,CAAQ;AAAEtC,kBAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,iBAAZ,CAAR;AAAwCuC,kBAAAA,KAAK,EAAE;AAA/C,iBAAR;AAEMpB,gBAAAA,OARP,GAQiB,KAAKb,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CARjB;AAAA;AAAA,uBAUO,KAAKa,YAAL,EAVP;;AAAA;AAYKE,gBAAAA,IAZL,GAYY,KAAKC,EAAL,CAAQC,cAAR,EAZZ;;AAcCb,6BAAOmB,OAAP,CAAeR,IAAI,CAACoC,OAApB,EAA6B,QAA7B;;AAdD;AAAA,uBAeO,KAAKnC,EAAL,CAAQG,SAAR,CAAkB,SAAlB,CAfP;;AAAA;AAAA;AAAA,uBAiBOP,OAjBP;;AAAA;AAmBCR,6BAAOmB,OAAP,CAAe2B,GAAG,CAACI,GAAJ,CAAQ,CAAC,SAAD,EAAY,WAAZ,CAAR,CAAf,EAAkD,MAAlD;;AACAlD,6BAAOmB,OAAP,CAAe2B,GAAG,CAACI,GAAJ,CAAQ,CAAC,SAAD,EAAY,iBAAZ,CAAR,CAAf,EAAwD,MAAxD;;AApBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;qHAuBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKhB,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAIOW,gBAAAA,GAJP,GAIa,KAAKpB,OAAL,CAAa,KAAb,CAJb;AAKCoB,gBAAAA,GAAG,CAACnB,GAAJ,CAAQ;AAAEtC,kBAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,WAAZ,CAAR;AAAkCuC,kBAAAA,KAAK,EAAE;AAAzC,iBAAR;AAEMpB,gBAAAA,OAPP,GAOiB,KAAKb,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CAPjB;AAAA;AAAA,uBASO,KAAKa,YAAL,EATP;;AAAA;AAWKE,gBAAAA,IAXL,GAWY,KAAKC,EAAL,CAAQC,cAAR,EAXZ;;AAaCb,6BAAOmB,OAAP,CAAeR,IAAI,CAACoC,OAApB,EAA6B,QAA7B;;AAbD;AAAA,uBAcO,KAAKnC,EAAL,CAAQG,SAAR,CAAkB,WAAlB,CAdP;;AAAA;AAAA;AAAA,uBAgBOP,OAhBP;;AAAA;AAkBCR,6BAAOmD,UAAP,CAAkBL,GAAG,CAACI,GAAJ,CAAQ,CAAC,SAAD,EAAY,WAAZ,CAAR,CAAlB,EAAqD,MAArD;;AAlBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wIAqBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKhB,cAAL,GAAsBC,qBAAtB,CAA4C,SAA5C,CAFP;;AAAA;AAAA;AAAA,uBAGuB,KAAKxC,MAAL,CAAY,SAAZ,EAAuB,OAAvB,EAAgCC,OAAhC,CAAwC,EAAxC,CAHvB;;AAAA;AAGOC,gBAAAA,OAHP;AAKOuD,gBAAAA,KALP,GAKeV,kBAASC,gCAAT,CACb,WADa,EAEb9C,OAAO,CAACV,KAFK,CALf;AAUOmD,gBAAAA,gBAVP,GAU0BC,2BAASC,QAAT,CAAkBY,KAAlB,CAV1B;;AAWCb,2CAASE,SAAT,CAAmBW,KAAnB,EAA0B,QAA1B;;AAEAvE,2CAAeC,eAAf,CAA+B,MAA/B,EAAuC;AAAEE,kBAAAA,IAAI,EAAE;AAAR,iBAAvC;;AAbD;AAAA,uBAeO,KAAKW,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CAfP;;AAAA;AAiBOyD,gBAAAA,WAjBP,GAiBqBd,2BAASC,QAAT,CAAkBY,KAAlB,CAjBrB;;AAkBCpD,6BAAOmB,OAAP,CAAemB,gBAAf,EAAiCe,WAAjC;;AAlBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAqBA,qCACC5D,IADD,EAOCD,WAPD,EAQE;AACD;AACA,UAAIC,IAAI,WAAID,WAAJ,YAAJ,KAAiC,SAArC,EAAgD;AAC/C+C,mCAASE,SAAT,CAAmB,KAAKa,WAAL,CAAiB7D,IAAI,CAACJ,IAAtB,CAAnB,EAAgD,EAAhD;AACA;AACD;;;;gHAED,mBAA0C2C,QAA1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACmB,KAAKR,YAAL,CAAkBQ,QAAlB,CADnB;;AAAA;AACO9C,gBAAAA,GADP;AAEOqE,gBAAAA,SAFP,GAEmB,KAAKD,WAAL,CAAiB,cAAjB,CAFnB;;AAGCf,2CAASE,SAAT,CAAmBc,SAAnB,EAA8B5E,2BAA9B;;AAHD;AAAA,uBAIO,KAAK+B,uBAAL,CAA6BxB,GAA7B,CAJP;;AAAA;AAAA,mDAMQA,GANR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wGASA,mBAAkC8C,QAAlC;AAAA;AAAA;AAAA;AAAA;AAAA;AACOwB,gBAAAA,OADP,GACiB,KAAKtB,cAAL,EADjB;AAAA;AAAA,uBAEmBsB,OAAO,CAACC,eAAR,CACjB,CACC;AACCzE,kBAAAA,IAAI,EAAE,OADP;AAECgE,kBAAAA,OAAO,EAAE;AACR5D,oBAAAA,IAAI,EAAE,gBADE;AAERsE,oBAAAA,WAAW,EAAE;AAFL;AAFV,iBADD,CADiB,EAUjB1B,QAViB,CAFnB;;AAAA;AAEO9C,gBAAAA,GAFP;AAAA,mDAcQA,GAdR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;mHAiBA,mBAA6CA,GAA7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACiCA,GAAG,CAACY,WAAJ,EADjC;;AAAA;AACO6D,gBAAAA,iBADP;;AAGC3D,6BAAOK,WAAP,CAAmBsD,iBAAnB,EAAsC;AACrC,4CAA0B;AADW,iBAAtC;;AAHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAQA,2CAAmD;AAClD,UAAMC,SAAS,GAAG,KAAKN,WAAL,CAAiB,KAAjB,EAAwB,WAAxB,CAAlB;;AACA,UAAI,CAACf,2BAASsB,YAAT,CAAsBD,SAAtB,CAAL,EAAuC;AACtC;AACA;;AACD,UAAME,OAAO,GAAGC,eAAOC,WAAP,CAAmBJ,SAAnB,CAAhB;;AACA5D,mBAAOiE,QAAP,CACCH,OADD,EAEC,CAFD,EAGC,8DAHD;AAKA;;;;uHAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACO,KAAK7E,oBAAL,CAA0B,QAA1B,CADP;;AAAA;AAGOuB,gBAAAA,OAHP,GAGiB,KAAKb,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC;AACtDJ,kBAAAA,WAAW,EAAE;AADyC,iBAAvC,CAHjB;AAAA;AAAA,uBAOO,KAAKiB,YAAL,EAPP;;AAAA;AASOE,gBAAAA,IATP,GASc,KAAKC,EAAL,CAAQC,cAAR,EATd;AAAA,mDAUQ;AAAEF,kBAAAA,IAAI,EAAJA,IAAF;AAAQH,kBAAAA,OAAO,EAAPA;AAAR,iBAVR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAaA,+BAAqC;AACpC,UAAM+C,SAAS,GAAG,KAAKD,WAAL,CAAiB,cAAjB,CAAlB;;AACA,UAAMY,QAAQ,GAAG3B,2BAASC,QAAT,CAAkBe,SAAlB,CAAjB;;AACAvD,mBAAOmB,OAAP,CAAe+C,QAAf,EAAyBvF,2BAAzB;AACA;;;EA3a+CwF,4B","sourcesContent":["import fsUtil from 'fs'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { CliInterface } from '../../../cli'\nimport {\n\tFILE_ACTION_ALWAYS_SKIP,\n\tFILE_ACTION_OVERWRITE,\n\tFILE_ACTION_SKIP,\n} from '../../../constants'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport { GeneratedFile } from '../../../types/cli.types'\nconst BROKEN_SKILL_INDEX_CONTENTS = \"throw new Error('cheese!')\\n\"\nexport default class UpgradingASkillTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tCommandService.setMockResponse(new RegExp(/yarn rebuild/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async forceEverythingUpgradeOverwritesWhatHasChanged() {\n\t\tconst cli = await this.installAndBreakSkill('skills')\n\n\t\tCommandService.setMockResponse('yarn clean.build', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tCommandService.setMockResponse('yarn build.dev', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst files: {\n\t\t\tname: string\n\t\t\tpath: string\n\t\t\tforceEverythingAction: GeneratedFile['action']\n\t\t\tforceRequiredSkipRestAction: GeneratedFile['action']\n\t\t}[] = [\n\t\t\t{\n\t\t\t\tname: 'index.ts',\n\t\t\t\tpath: 'src/index.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'updated',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: '.eslintrc.js',\n\t\t\t\tpath: '.eslintrc.js',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'updated',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'SpruceError.ts',\n\t\t\t\tpath: 'src/errors/SpruceError.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'skipped',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'options.types.ts',\n\t\t\t\tpath: 'src/.spruce/errors/options.types.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'skipped',\n\t\t\t},\n\t\t]\n\n\t\tfor (const upgradeMode of ['forceRequiredSkipRest', 'forceEverything']) {\n\t\t\tfor (const file of files) {\n\t\t\t\tthis.clearFileIfAboutToBeUpdated(file, upgradeMode)\n\t\t\t}\n\n\t\t\tconst results = await this.Action('node', 'upgrade').execute({\n\t\t\t\tupgradeMode,\n\t\t\t})\n\n\t\t\tif (upgradeMode === 'forceRequiredSkipRest') {\n\t\t\t\tconst passedHealthCheck = await cli.checkHealth()\n\t\t\t\tassert.isEqualDeep(passedHealthCheck, { skill: { status: 'passed' } })\n\t\t\t}\n\n\t\t\tfor (const file of files) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tconst action = file[`${upgradeMode}Action`]\n\t\t\t\tassert.doesInclude(\n\t\t\t\t\tresults.files,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\taction,\n\t\t\t\t\t},\n\t\t\t\t\t`${\n\t\t\t\t\t\tfile.name\n\t\t\t\t\t} was not ${action} when ${upgradeMode} in \\n\\n ${JSON.stringify(\n\t\t\t\t\t\tresults.files ?? [],\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t)}`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tconst passedHealthCheck = await cli.checkHealth()\n\n\t\tassert.doesInclude(passedHealthCheck, {\n\t\t\t'skill.status': 'passed',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async upgradeWillAskIfYouWantToOverwriteFiles() {\n\t\tconst cli = await this.installAndBreakSkill('skills')\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.assertFailedHealthCheck(cli)\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_OVERWRITE,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_OVERWRITE)\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isEqual(health.skill.status, 'passed')\n\t}\n\n\t@test()\n\tprotected static async canSkipFile() {\n\t\tconst { last, promise } = await this.installBreakAndUpgradeSkill()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_SKIP,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_SKIP)\n\n\t\tawait promise\n\n\t\tthis.assertSkillIsBroken()\n\t}\n\n\t@test()\n\tprotected static async canAlwaysSkipFiles() {\n\t\tconst { last, promise } = await this.installBreakAndUpgradeSkill()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_ALWAYS_SKIP,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_ALWAYS_SKIP)\n\n\t\tawait promise\n\n\t\tthis.assertSkillIsBroken()\n\n\t\tconst results = await this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertSkillIsBroken()\n\t}\n\n\t@test()\n\tprotected static async upgradesUpdatesPackageScripts() {\n\t\tconst cli = await this.installSkill('schemas')\n\n\t\tconst pkgService = this.Service('pkg')\n\t\tpkgService.set({ path: 'scripts', value: {} })\n\n\t\tconst failedHealth = await cli.checkHealth()\n\n\t\tassert.doesInclude(failedHealth, {\n\t\t\t'skill.errors[].message': '\"health.local\" not found',\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tconst passedHealth = await cli.checkHealth()\n\t\tassert.isEqual(passedHealth.skill.status, 'passed')\n\t}\n\n\t@test(\n\t\t'Upgrades error.plugin (even if skill is broken)',\n\t\t'error.plugin.ts',\n\t\t'errors'\n\t)\n\t@test(\n\t\t'Upgrades schema.plugin (even if skill is broken)',\n\t\t'schema.plugin.ts',\n\t\t'schemas'\n\t)\n\t@test(\n\t\t'Upgrades conversation.plugin (even if skill is broken)',\n\t\t'conversation.plugin.ts',\n\t\t'conversation',\n\t\tfalse\n\t)\n\t@test(\n\t\t'Upgrades view.plugin (even if skill is broken)',\n\t\t'view.plugin.ts',\n\t\t'views',\n\t\tfalse\n\t)\n\tprotected static async upgradesPlugins(\n\t\tpluginName: string,\n\t\tcacheKey: string,\n\t\tshouldMockYarn = true\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures(cacheKey)\n\n\t\tshouldMockYarn && CommandService.setMockResponse(/yarn/, { code: 0 })\n\n\t\tconst pluginPath = this.resolveHashSprucePath(`features/${pluginName}`)\n\t\tconst originalContents = diskUtil.readFile(pluginPath)\n\n\t\tdiskUtil.writeFile(pluginPath, 'aoeuaoeuaoeuaoeu')\n\n\t\tconst results = await this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(pluginName, results.files)\n\n\t\tconst updatedContents = diskUtil.readFile(pluginPath)\n\n\t\tassert.isEqual(updatedContents, originalContents)\n\n\t\tassert.doesInclude(results.summaryLines ?? [], 'successfully')\n\t}\n\n\t@test()\n\tprotected static async canSkipPackageScriptChanges() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\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, { value: 'skip' })\n\t\tassert.doesInclude(last.options.options.choices, { value: 'skipAll' })\n\t\tassert.doesInclude(last.options.options.choices, { value: 'overwrite' })\n\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async asksForEachScriptChange() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\t\tpkg.set({ path: ['scripts', 'watch.build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait this.waitForInput()\n\n\t\tlast = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t\tassert.isEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async canSkipAllScriptChanges() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\t\tpkg.set({ path: ['scripts', 'watch.build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skipAll')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t\tassert.isEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async canOverwriteChangedScript() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('overwrite')\n\n\t\tawait promise\n\n\t\tassert.isNotEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async upgradingSkillWithSandboxUpgradesTheListener() {\n\t\tawait this.FeatureFixture().installCachedFeatures('sandbox')\n\t\tconst results = await this.Action('sandbox', 'setup').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/will-boot/,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst originalContents = diskUtil.readFile(match)\n\t\tdiskUtil.writeFile(match, 'broken')\n\n\t\tCommandService.setMockResponse(/yarn/, { code: 0 })\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tconst newContents = diskUtil.readFile(match)\n\t\tassert.isEqual(originalContents, newContents)\n\t}\n\n\tprivate static clearFileIfAboutToBeUpdated(\n\t\tfile: {\n\t\t\tname: string\n\t\t\tpath: string\n\t\t\tforceEverythingAction: GeneratedFile['action']\n\t\t\tforceRequiredSkipRestAction: GeneratedFile['action']\n\t\t},\n\t\tupgradeMode: string\n\t) {\n\t\t//@ts-ignore\n\t\tif (file[`${upgradeMode}Action`] === 'updated') {\n\t\t\tdiskUtil.writeFile(this.resolvePath(file.path), '')\n\t\t}\n\t}\n\n\tprivate static async installAndBreakSkill(cacheKey: string) {\n\t\tconst cli = await this.installSkill(cacheKey)\n\t\tconst indexFile = this.resolvePath('src/index.ts')\n\t\tdiskUtil.writeFile(indexFile, BROKEN_SKILL_INDEX_CONTENTS)\n\t\tawait this.assertFailedHealthCheck(cli)\n\n\t\treturn cli\n\t}\n\n\tprivate static async installSkill(cacheKey: string) {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installFeatures(\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\tcode: 'skill',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tname: 'testing events',\n\t\t\t\t\t\tdescription: 'this too, is a great test!',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tcacheKey\n\t\t)\n\t\treturn cli\n\t}\n\n\tprivate static async assertFailedHealthCheck(cli: CliInterface) {\n\t\tconst failedHealthCheck = await cli.checkHealth()\n\n\t\tassert.doesInclude(failedHealthCheck, {\n\t\t\t'skill.errors[].message': 'cheese',\n\t\t})\n\t}\n\n\tprotected static assertSandboxListenerNotWritten() {\n\t\tconst listeners = this.resolvePath('src', 'listeners')\n\t\tif (!diskUtil.doesDirExist(listeners)) {\n\t\t\treturn\n\t\t}\n\t\tconst matches = fsUtil.readdirSync(listeners)\n\t\tassert.isLength(\n\t\t\tmatches,\n\t\t\t0,\n\t\t\t'A sandbox listeners was written and it should not have been.'\n\t\t)\n\t}\n\n\tprivate static async installBreakAndUpgradeSkill() {\n\t\tawait this.installAndBreakSkill('skills')\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\t\treturn { last, promise }\n\t}\n\n\tprivate static assertSkillIsBroken() {\n\t\tconst indexFile = this.resolvePath('src/index.ts')\n\t\tconst contents = diskUtil.readFile(indexFile)\n\t\tassert.isEqual(contents, BROKEN_SKILL_INDEX_CONTENTS)\n\t}\n}\n"],"file":"UpgradingASkill.test.js"}
@@ -3,6 +3,9 @@ export default class UpgradingASkill4Test extends AbstractCliTest {
3
3
  protected static upgradeResetsEventCache(): Promise<void>;
4
4
  protected static doesNotResetEventCacheWithOtherAction(): Promise<void>;
5
5
  protected static shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists(shouldCreateSchema: boolean): Promise<void>;
6
+ protected static modulesMovedFromDevToProdDependenciesStayThere(): Promise<void>;
7
+ private static moveDependencyToDev;
8
+ private static moveDependencyToProd;
6
9
  private static installSetListenerCacheAndBlockExecute;
7
10
  private static Settings;
8
11
  }
@@ -29,13 +29,13 @@ var _CommandService = _interopRequireDefault(require("../../../services/CommandS
29
29
 
30
30
  var _AbstractCliTest2 = _interopRequireDefault(require("../../../tests/AbstractCliTest"));
31
31
 
32
- var _dec, _dec2, _dec3, _dec4, _class;
32
+ var _dec, _dec2, _dec3, _dec4, _dec5, _class;
33
33
 
34
34
  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); }; }
35
35
 
36
36
  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; } }
37
37
 
38
- var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)('syncs schemas when schemas installed and schemas folder exists', true), _dec4 = (0, _test.test)('does not syncs schemas when schemas installed but schemas folder does not exist', false), (_class = /*#__PURE__*/function (_AbstractCliTest) {
38
+ var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)('syncs schemas when schemas installed and schemas folder exists', true), _dec4 = (0, _test.test)('does not syncs schemas when schemas installed but schemas folder does not exist', false), _dec5 = (0, _test.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
39
39
  (0, _inherits2["default"])(UpgradingASkill4Test, _AbstractCliTest);
40
40
 
41
41
  var _super = _createSuper(UpgradingASkill4Test);
@@ -189,15 +189,136 @@ var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
189
189
  return shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists;
190
190
  }()
191
191
  }, {
192
- key: "installSetListenerCacheAndBlockExecute",
192
+ key: "modulesMovedFromDevToProdDependenciesStayThere",
193
193
  value: function () {
194
- var _installSetListenerCacheAndBlockExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
195
- var settings, emitter;
194
+ var _modulesMovedFromDevToProdDependenciesStayThere = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
195
+ var wasMovedBackToDev, wasMovedBackToProd;
196
196
  return _regenerator["default"].wrap(function _callee4$(_context4) {
197
197
  while (1) {
198
198
  switch (_context4.prev = _context4.next) {
199
199
  case 0:
200
200
  _context4.next = 2;
201
+ return this.FeatureFixture().installCachedFeatures('skills');
202
+
203
+ case 2:
204
+ _context4.next = 4;
205
+ return this.moveDependencyToProd('@sprucelabs/resolve-path-aliases');
206
+
207
+ case 4:
208
+ _context4.next = 6;
209
+ return this.moveDependencyToDev('@sprucelabs/error');
210
+
211
+ case 6:
212
+ wasMovedBackToDev = false;
213
+ wasMovedBackToProd = false;
214
+
215
+ _CommandService["default"].setMockResponse(new RegExp(/yarn/gi), {
216
+ code: 0,
217
+ callback: function callback(_, args) {
218
+ if (args.indexOf('-D') > -1 && args.indexOf('@sprucelabs/resolve-path-aliases') > -1) {
219
+ wasMovedBackToDev = true;
220
+ } else if (args.indexOf('-D') === -1 && args.indexOf('@sprucelabs/error') > -1) {
221
+ wasMovedBackToProd = true;
222
+ }
223
+ }
224
+ });
225
+
226
+ _context4.next = 11;
227
+ return this.Action('node', 'upgrade').execute({});
228
+
229
+ case 11:
230
+ _test.assert.isFalse(wasMovedBackToDev, 'dependency moved back to dev');
231
+
232
+ _test.assert.isFalse(wasMovedBackToProd, 'dependency moved back to prod');
233
+
234
+ case 13:
235
+ case "end":
236
+ return _context4.stop();
237
+ }
238
+ }
239
+ }, _callee4, this);
240
+ }));
241
+
242
+ function modulesMovedFromDevToProdDependenciesStayThere() {
243
+ return _modulesMovedFromDevToProdDependenciesStayThere.apply(this, arguments);
244
+ }
245
+
246
+ return modulesMovedFromDevToProdDependenciesStayThere;
247
+ }()
248
+ }, {
249
+ key: "moveDependencyToDev",
250
+ value: function () {
251
+ var _moveDependencyToDev = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(name) {
252
+ var pkg;
253
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
254
+ while (1) {
255
+ switch (_context5.prev = _context5.next) {
256
+ case 0:
257
+ pkg = this.Service('pkg');
258
+ _context5.next = 3;
259
+ return pkg.uninstall(name);
260
+
261
+ case 3:
262
+ _context5.next = 5;
263
+ return pkg.install(name, {
264
+ isDev: true
265
+ });
266
+
267
+ case 5:
268
+ case "end":
269
+ return _context5.stop();
270
+ }
271
+ }
272
+ }, _callee5, this);
273
+ }));
274
+
275
+ function moveDependencyToDev(_x2) {
276
+ return _moveDependencyToDev.apply(this, arguments);
277
+ }
278
+
279
+ return moveDependencyToDev;
280
+ }()
281
+ }, {
282
+ key: "moveDependencyToProd",
283
+ value: function () {
284
+ var _moveDependencyToProd = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(name) {
285
+ var pkg;
286
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
287
+ while (1) {
288
+ switch (_context6.prev = _context6.next) {
289
+ case 0:
290
+ pkg = this.Service('pkg');
291
+ _context6.next = 3;
292
+ return pkg.uninstall(name);
293
+
294
+ case 3:
295
+ _context6.next = 5;
296
+ return pkg.install(name);
297
+
298
+ case 5:
299
+ case "end":
300
+ return _context6.stop();
301
+ }
302
+ }
303
+ }, _callee6, this);
304
+ }));
305
+
306
+ function moveDependencyToProd(_x3) {
307
+ return _moveDependencyToProd.apply(this, arguments);
308
+ }
309
+
310
+ return moveDependencyToProd;
311
+ }()
312
+ }, {
313
+ key: "installSetListenerCacheAndBlockExecute",
314
+ value: function () {
315
+ var _installSetListenerCacheAndBlockExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
316
+ var settings, emitter;
317
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
318
+ while (1) {
319
+ switch (_context7.prev = _context7.next) {
320
+ case 0:
321
+ _context7.next = 2;
201
322
  return this.FeatureFixture().installCachedFeatures('events');
202
323
 
203
324
  case 2:
@@ -212,10 +333,10 @@ var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
212
333
 
213
334
  case 6:
214
335
  case "end":
215
- return _context4.stop();
336
+ return _context7.stop();
216
337
  }
217
338
  }
218
- }, _callee4, this);
339
+ }, _callee7, this);
219
340
  }));
220
341
 
221
342
  function installSetListenerCacheAndBlockExecute() {
@@ -231,6 +352,6 @@ var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
231
352
  }
232
353
  }]);
233
354
  return UpgradingASkill4Test;
234
- }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "upgradeResetsEventCache", [_dec], Object.getOwnPropertyDescriptor(_class, "upgradeResetsEventCache"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "doesNotResetEventCacheWithOtherAction", [_dec2], Object.getOwnPropertyDescriptor(_class, "doesNotResetEventCacheWithOtherAction"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists", [_dec3, _dec4], Object.getOwnPropertyDescriptor(_class, "shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists"), _class)), _class));
355
+ }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "upgradeResetsEventCache", [_dec], Object.getOwnPropertyDescriptor(_class, "upgradeResetsEventCache"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "doesNotResetEventCacheWithOtherAction", [_dec2], Object.getOwnPropertyDescriptor(_class, "doesNotResetEventCacheWithOtherAction"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists", [_dec3, _dec4], Object.getOwnPropertyDescriptor(_class, "shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "modulesMovedFromDevToProdDependenciesStayThere", [_dec5], Object.getOwnPropertyDescriptor(_class, "modulesMovedFromDevToProdDependenciesStayThere"), _class)), _class));
235
356
  exports["default"] = UpgradingASkill4Test;
236
357
  //# sourceMappingURL=UpgradingASkill4.test.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill4.test.ts"],"names":["UpgradingASkill4Test","installSetListenerCacheAndBlockExecute","assert","doesThrowAsync","Action","execute","value","Settings","getListenerCache","isFalsy","isEqualDeep","shouldBeDeleted","shouldCreateSchema","FeatureFixture","installCachedFeatures","CommandService","setMockResponse","RegExp","code","nameReadable","namePascal","nameCamel","description","emitter","getEmitter","wasHit","on","payload","featureCode","actionCode","isTrue","settings","setListenerCache","Error","Service","AbstractCliTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,oB,WACnB,iB,UAYA,iB,UAUA,gBAAK,gEAAL,EAAuE,IAAvE,C,UACA,gBACA,iFADA,EAEA,KAFA,C;;;;;;;;;;;;;mHAvBD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,sCAAL,EAFP;;AAAA;AAAA;AAAA,uBAIOC,aAAOC,cAAP,CAAsB;AAAA,yBAC3B,KAAI,CAACC,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CAD2B;AAAA,iBAAtB,CAJP;;AAAA;AAQOC,gBAAAA,KARP,GAQe,KAAKC,QAAL,GAAgBC,gBAAhB,EARf;;AASCN,6BAAOO,OAAP,CAAeH,KAAf;;AATD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iIAYA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKL,sCAAL,EAFP;;AAAA;AAAA;AAAA,uBAIOC,aAAOC,cAAP,CAAsB;AAAA,yBAAM,MAAI,CAACC,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAAN;AAAA,iBAAtB,CAJP;;AAAA;AAMOC,gBAAAA,KANP,GAMe,KAAKC,QAAL,GAAgBC,gBAAhB,EANf;;AAOCN,6BAAOQ,WAAP,CAAmBJ,KAAnB,EAA0B;AAAEK,kBAAAA,eAAe,EAAE;AAAnB,iBAA1B;;AAPD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;sJAUA,kBAMCC,kBAND;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAQO,KAAKC,cAAL,GAAsBC,qBAAtB,CAA4C,SAA5C,CARP;;AAAA;AAUCC,2CAAeC,eAAf,CAA+B,IAAIC,MAAJ,CAAW,QAAX,CAA/B,EAAsD;AACrDC,kBAAAA,IAAI,EAAE;AAD+C,iBAAtD;;AAVD,qBAcKN,kBAdL;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAeQ,KAAKR,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgCC,OAAhC,CAAwC;AAC7Cc,kBAAAA,YAAY,EAAE,cAD+B;AAE7CC,kBAAAA,UAAU,EAAE,aAFiC;AAG7CC,kBAAAA,SAAS,EAAE,aAHkC;AAI7CC,kBAAAA,WAAW,EAAE;AAJgC,iBAAxC,CAfR;;AAAA;AAuBOC,gBAAAA,OAvBP,GAuBiB,KAAKC,UAAL,EAvBjB;AAyBKC,gBAAAA,MAzBL,GAyBc,KAzBd;AAAA;AAAA,uBA2BOF,OAAO,CAACG,EAAR,CAAW,sBAAX,EAAmC,UAACC,OAAD,EAAa;AACrD,sBAAIA,OAAO,CAACC,WAAR,KAAwB,QAAxB,IAAoCD,OAAO,CAACE,UAAR,KAAuB,MAA/D,EAAuE;AACtEJ,oBAAAA,MAAM,GAAG,IAAT;AACA;;AAED,yBAAO,EAAP;AACA,iBANK,CA3BP;;AAAA;AAAA;AAAA,uBAmCO,KAAKrB,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CAnCP;;AAAA;AAqCCH,6BAAO4B,MAAP,CAAcL,MAAM,KAAKb,kBAAzB;;AArCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;kIAwCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACO,KAAKC,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CADP;;AAAA;AAGOiB,gBAAAA,QAHP,GAGkB,KAAKxB,QAAL,EAHlB;AAICwB,gBAAAA,QAAQ,CAACC,gBAAT,CAA0B;AAAErB,kBAAAA,eAAe,EAAE;AAAnB,iBAA1B;AAEMY,gBAAAA,OANP,GAMiB,KAAKC,UAAL,EANjB;AAOC,qBAAKD,OAAO,CAACG,EAAR,CAAW,sBAAX,EAAmC,YAAM;AAC7C,wBAAM,IAAIO,KAAJ,CAAU,OAAV,CAAN;AACA,iBAFI,CAAL;;AAPD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAYA,oBAA0B;AACzB,aAAO,KAAKC,OAAL,CAAa,eAAb,CAAP;AACA;;;EA7EgDC,4B","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class UpgradingASkill4Test extends AbstractCliTest {\n\t@test()\n\tprotected static async upgradeResetsEventCache() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() =>\n\t\t\tthis.Action('node', 'upgrade').execute({})\n\t\t)\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isFalsy(value)\n\t}\n\n\t@test()\n\tprotected static async doesNotResetEventCacheWithOtherAction() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() => this.Action('schema', 'sync').execute({}))\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isEqualDeep(value, { shouldBeDeleted: true })\n\t}\n\n\t@test('syncs schemas when schemas installed and schemas folder exists', true)\n\t@test(\n\t\t'does not syncs schemas when schemas installed but schemas folder does not exist',\n\t\tfalse\n\t)\n\tprotected static async shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists(\n\t\tshouldCreateSchema: boolean\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tCommandService.setMockResponse(new RegExp(/yarn/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tif (shouldCreateSchema) {\n\t\t\tawait this.Action('schema', 'create').execute({\n\t\t\t\tnameReadable: 'Test schema!',\n\t\t\t\tnamePascal: 'AnotherTest',\n\t\t\t\tnameCamel: 'anotherTest',\n\t\t\t\tdescription: 'this is so great!',\n\t\t\t})\n\t\t}\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tlet wasHit = false\n\n\t\tawait emitter.on('feature.will-execute', (payload) => {\n\t\t\tif (payload.featureCode === 'schema' && payload.actionCode === 'sync') {\n\t\t\t\twasHit = true\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isTrue(wasHit === shouldCreateSchema)\n\t}\n\n\tprivate static async installSetListenerCacheAndBlockExecute() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst settings = this.Settings()\n\t\tsettings.setListenerCache({ shouldBeDeleted: true })\n\n\t\tconst emitter = this.getEmitter()\n\t\tvoid emitter.on('feature.will-execute', () => {\n\t\t\tthrow new Error('Stop!')\n\t\t})\n\t}\n\n\tprivate static Settings() {\n\t\treturn this.Service('eventSettings')\n\t}\n}\n"],"file":"UpgradingASkill4.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill4.test.ts"],"names":["UpgradingASkill4Test","installSetListenerCacheAndBlockExecute","assert","doesThrowAsync","Action","execute","value","Settings","getListenerCache","isFalsy","isEqualDeep","shouldBeDeleted","shouldCreateSchema","FeatureFixture","installCachedFeatures","CommandService","setMockResponse","RegExp","code","nameReadable","namePascal","nameCamel","description","emitter","getEmitter","wasHit","on","payload","featureCode","actionCode","isTrue","moveDependencyToProd","moveDependencyToDev","wasMovedBackToDev","wasMovedBackToProd","callback","_","args","indexOf","isFalse","name","pkg","Service","uninstall","install","isDev","settings","setListenerCache","Error","AbstractCliTest"],"mappings":"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","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class UpgradingASkill4Test extends AbstractCliTest {\n\t@test()\n\tprotected static async upgradeResetsEventCache() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() =>\n\t\t\tthis.Action('node', 'upgrade').execute({})\n\t\t)\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isFalsy(value)\n\t}\n\n\t@test()\n\tprotected static async doesNotResetEventCacheWithOtherAction() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() => this.Action('schema', 'sync').execute({}))\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isEqualDeep(value, { shouldBeDeleted: true })\n\t}\n\n\t@test('syncs schemas when schemas installed and schemas folder exists', true)\n\t@test(\n\t\t'does not syncs schemas when schemas installed but schemas folder does not exist',\n\t\tfalse\n\t)\n\tprotected static async shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists(\n\t\tshouldCreateSchema: boolean\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tCommandService.setMockResponse(new RegExp(/yarn/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tif (shouldCreateSchema) {\n\t\t\tawait this.Action('schema', 'create').execute({\n\t\t\t\tnameReadable: 'Test schema!',\n\t\t\t\tnamePascal: 'AnotherTest',\n\t\t\t\tnameCamel: 'anotherTest',\n\t\t\t\tdescription: 'this is so great!',\n\t\t\t})\n\t\t}\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tlet wasHit = false\n\n\t\tawait emitter.on('feature.will-execute', (payload) => {\n\t\t\tif (payload.featureCode === 'schema' && payload.actionCode === 'sync') {\n\t\t\t\twasHit = true\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isTrue(wasHit === shouldCreateSchema)\n\t}\n\n\t@test()\n\tprotected static async modulesMovedFromDevToProdDependenciesStayThere() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tawait this.moveDependencyToProd('@sprucelabs/resolve-path-aliases')\n\t\tawait this.moveDependencyToDev('@sprucelabs/error')\n\n\t\tlet wasMovedBackToDev = false\n\t\tlet wasMovedBackToProd = false\n\n\t\tCommandService.setMockResponse(new RegExp(/yarn/gis), {\n\t\t\tcode: 0,\n\t\t\tcallback: (_, args) => {\n\t\t\t\tif (\n\t\t\t\t\targs.indexOf('-D') > -1 &&\n\t\t\t\t\targs.indexOf('@sprucelabs/resolve-path-aliases') > -1\n\t\t\t\t) {\n\t\t\t\t\twasMovedBackToDev = true\n\t\t\t\t} else if (\n\t\t\t\t\targs.indexOf('-D') === -1 &&\n\t\t\t\t\targs.indexOf('@sprucelabs/error') > -1\n\t\t\t\t) {\n\t\t\t\t\twasMovedBackToProd = true\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isFalse(wasMovedBackToDev, 'dependency moved back to dev')\n\t\tassert.isFalse(wasMovedBackToProd, 'dependency moved back to prod')\n\t}\n\n\tprivate static async moveDependencyToDev(name: string) {\n\t\tconst pkg = this.Service('pkg')\n\t\tawait pkg.uninstall(name)\n\t\tawait pkg.install(name, { isDev: true })\n\t}\n\tprivate static async moveDependencyToProd(name: string) {\n\t\tconst pkg = this.Service('pkg')\n\n\t\tawait pkg.uninstall(name)\n\t\tawait pkg.install(name)\n\t}\n\n\tprivate static async installSetListenerCacheAndBlockExecute() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst settings = this.Settings()\n\t\tsettings.setListenerCache({ shouldBeDeleted: true })\n\n\t\tconst emitter = this.getEmitter()\n\t\tvoid emitter.on('feature.will-execute', () => {\n\t\t\tthrow new Error('Stop!')\n\t\t})\n\t}\n\n\tprivate static Settings() {\n\t\treturn this.Service('eventSettings')\n\t}\n}\n"],"file":"UpgradingASkill4.test.js"}
@@ -17,5 +17,6 @@ export default class CreatingASkillViewTest extends AbstractSkillTest {
17
17
  protected static skillViewExtendsAbstractViewControllerWithProperView(): void;
18
18
  protected static nicelyTypesRootSkillViewController(): Promise<void>;
19
19
  protected static nicelyTypesViewController(): Promise<void>;
20
+ protected static typesViewControllerOptions(): Promise<void>;
20
21
  private static buildTestfile;
21
22
  }
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;IAEqBA,sB,WAYnB,iB,UAKA,iB,UAeA,iB,UAiBA,iB,UAKA,iB,UASA,iB,UAcA,iB,UA6BA,iB,UA4BA,iB,WASA,iB,WAmBA,iB;;;;;;;;;;;;;sGA3JD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAEC,qBAAKC,MAAL,GAAc,KAAKC,MAAL,CAAY,MAAZ,EAAoB,QAApB,CAAd;;AAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAKA,2BACmC;AAClCC,mBAAOC,UAAP,CAAkB,KAAKH,MAAL,CAAYI,OAA9B;AACA;;;;8HAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAEC,qBAAK,KAAKJ,MAAL,CAAYI,OAAZ,CAAoB;AACxBC,kBAAAA,QAAQ,EAAE;AADc,iBAApB,CAAL;AAFD;AAAA,uBAMO,KAAKC,YAAL,EANP;;AAAA;AAQOC,gBAAAA,IARP,GAQc,KAAKC,EAAL,CAAQC,cAAR,EARd;;AAUCP,6BAAOQ,OAAP,CAAeH,IAAI,CAACI,OAApB,EAA6B,SAA7B;;AAEA,qBAAKH,EAAL,CAAQI,KAAR;;AAZD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;kHAeA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEuB,KAAKZ,MAAL,CAAYI,OAAZ,CAAoB;AACzCC,kBAAAA,QAAQ,EAAE,WAD+B;AAEzCQ,kBAAAA,MAAM,EAAE;AAFiC,iBAApB,CAFvB;;AAAA;AAEOC,gBAAAA,OAFP;;AAOCZ,6BAAOa,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AAEA,qBAAKC,OAAL,GAAeC,kBAASC,gCAAT,CACd,aADc,EAEdL,OAAO,CAACM,KAFM,CAAf;;AAKAlB,6BAAOmB,WAAP,CAAmB,KAAKJ,OAAxB,EAAiC,sBAAjC;;AAdD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;uHAiBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKK,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkC,KAAKN,OAAvC,CAFP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;2IAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEOO,gBAAAA,QAFP,GAEkBC,2BAASC,QAAT,CAAkB,KAAKT,OAAvB,CAFlB;;AAGCf,6BAAOmB,WAAP,CACCG,QADD,EAEC,kFAFD;;AAHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iHASA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEuB,KAAKxB,MAAL,CAAYI,OAAZ,CAAoB;AACzCC,kBAAAA,QAAQ,EAAE,WAD+B;AAEzCQ,kBAAAA,MAAM,EAAE;AAFiC,iBAApB,CAFvB;;AAAA;AAEOC,gBAAAA,OAFP;;AAOCZ,6BAAOyB,QAAP,CAAgBb,OAAO,CAACE,MAAxB;;AAEAY,2CAAgBC,WAAhB,oBAA4Bf,OAAO,CAACE,MAApC,oDAA4B,gBAAiB,CAAjB,CAA5B,EAAiD,mBAAjD,EAAsE;AACrEc,kBAAAA,IAAI,EAAE;AAD+D,iBAAtE;;AATD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;kIAcA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEOC,gBAAAA,OAFP,GAEiB,KAAK/B,MAAL,CAAYI,OAAZ,CAAoB;AACnCC,kBAAAA,QAAQ,EAAE;AADyB,iBAApB,CAFjB;AAAA;AAAA,uBAMO,KAAKC,YAAL,EANP;;AAAA;AAQKC,gBAAAA,IARL,GAQY,KAAKC,EAAL,CAAQC,cAAR,EARZ;;AAUCP,6BAAOQ,OAAP,CAAeH,IAAI,CAACI,OAApB,EAA6B,QAA7B;;AAVD;AAAA,uBAYO,KAAKH,EAAL,CAAQwB,SAAR,CAAkB,WAAlB,CAZP;;AAAA;AAAA;AAAA,uBAaO,KAAKxB,EAAL,CAAQwB,SAAR,CAAkB,IAAlB,CAbP;;AAAA;AAAA;AAAA,uBAeuBD,OAfvB;;AAAA;AAeOjB,gBAAAA,OAfP;;AAiBCZ,6BAAOa,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AAEA,qBAAKiB,WAAL,GAAmBf,kBAASC,gCAAT,CAClB,kBADkB,EAElBL,OAAO,CAACM,KAFU,CAAnB;;AAKAlB,6BAAOmB,WAAP,CAAmB,KAAKY,WAAxB,EAAqC,sBAArC;;AAEA,qBAAKzB,EAAL,CAAQI,KAAR;;AA1BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iIA6BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEOmB,gBAAAA,OAFP,GAEiB,KAAK/B,MAAL,CAAYI,OAAZ,CAAoB;AACnCC,kBAAAA,QAAQ,EAAE,MADyB;AAEnC6B,kBAAAA,YAAY,EAAE;AAFqB,iBAApB,CAFjB;AAAA;AAAA,uBAOO,KAAK5B,YAAL,EAPP;;AAAA;AASOC,gBAAAA,IATP,GASc,KAAKC,EAAL,CAAQC,cAAR,EATd;;AAWCP,6BAAOQ,OAAP,CAAeH,IAAI,CAACI,OAApB,EAA6B,QAA7B;;AACAT,6BAAOmB,WAAP,CAAmBd,IAAI,CAAC4B,OAAL,CAAaA,OAAb,CAAqBC,OAAxC,EAAiD;AAChDC,kBAAAA,KAAK,EAAE;AADyC,iBAAjD;;AAZD;AAAA,uBAgBO,KAAK7B,EAAL,CAAQwB,SAAR,CAAkB,MAAlB,CAhBP;;AAAA;AAAA;AAAA,uBAkBuBD,OAlBvB;;AAAA;AAkBOjB,gBAAAA,OAlBP;;AAoBCZ,6BAAOa,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AAEA,qBAAKsB,gBAAL,GAAwBpB,kBAASC,gCAAT,CACvB,wBADuB,EAEvBL,OAAO,CAACM,KAFe,CAAxB;;AAtBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA4BA,gEACwE;AACvE,UAAMI,QAAQ,GAAGC,2BAASC,QAAT,CAAkB,KAAKY,gBAAvB,CAAjB;;AACApC,mBAAOmB,WAAP,CACCG,QADD,EAEC,0FAFD;AAIA;;;;8HAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAEOA,gBAAAA,QAFP,GAEkB,KAAKe,aAAL,CAAmB;AACnCC,kBAAAA,eAAe,EAAE,uBADkB;AAEnCC,kBAAAA,IAAI;AAF+B,iBAAnB,CAFlB;AAUOC,gBAAAA,QAVP,GAUkB,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,SAAxB,CAVlB;;AAWClB,2CAASmB,SAAT,CAAmBF,QAAnB,EAA6BlB,QAA7B;;AAXD;AAAA,uBAawB,KAAKF,OAAL,CAAa,QAAb,EAAuBuB,SAAvB,CAAiCH,QAAjC,CAbxB;;AAAA;AAaOI,gBAAAA,QAbP;;AAeC5C,6BAAOyB,QAAP,CAAgBmB,QAAQ,CAACC,QAAzB;;AACA7C,6BAAOyB,QAAP,CAAgBmB,QAAQ,CAACE,KAAzB;;AAhBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;qHAmBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEOxB,gBAAAA,QAFP,GAEkB,KAAKe,aAAL,CAAmB;AACnCC,kBAAAA,eAAe,EAAE,kBADkB;AAEnCC,kBAAAA,IAAI;AAF+B,iBAAnB,CAFlB;AAUOC,gBAAAA,QAVP,GAUkB,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,SAAxB,CAVlB;;AAWClB,2CAASmB,SAAT,CAAmBF,QAAnB,EAA6BlB,QAA7B;;AAXD;AAAA,uBAawB,KAAKF,OAAL,CAAa,QAAb,EAAuBuB,SAAvB,CAAiCH,QAAjC,CAbxB;;AAAA;AAaOI,gBAAAA,QAbP;;AAeC5C,6BAAOyB,QAAP,CAAgBmB,QAAQ,CAACG,OAAzB;;AACA/C,6BAAOyB,QAAP,CAAgBmB,QAAQ,CAACI,IAAzB;;AAhBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAmBA,uBAA6Bf,OAA7B,EAGG;AACF,UAAQM,IAAR,GAAkCN,OAAlC,CAAQM,IAAR;AAAA,UAAcD,eAAd,GAAkCL,OAAlC,CAAcK,eAAd;AAEA,aACC,cAEA,6GAKAA,eALA,mYAiBDC,IAjBC,YAkBCU,IAlBD,EAHD;AAuBA;;;EAlNkDC,8B,8DAClB,O","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":"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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 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"}
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  ]
18
18
  },
19
19
  "license": "MIT",
20
- "version": "14.24.8",
20
+ "version": "14.26.1",
21
21
  "bin": {
22
22
  "spruce": "./build/index.js"
23
23
  },
@@ -75,19 +75,19 @@
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.3.2",
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.680",
84
- "@sprucelabs/schema": "^25.3.440",
85
- "@sprucelabs/spruce-core-schemas": "^22.6.0",
86
- "@sprucelabs/spruce-event-plugin": "^7.1.4",
87
- "@sprucelabs/spruce-event-utils": "^16.0.712",
88
- "@sprucelabs/spruce-skill-booter": "^7.1.4",
89
- "@sprucelabs/spruce-skill-utils": "^22.0.10",
90
- "@sprucelabs/spruce-templates": "^14.24.8",
78
+ "@sprucelabs/error": "^5.0.272",
79
+ "@sprucelabs/heartwood-view-controllers": "^41.2.6",
80
+ "@sprucelabs/jest-json-reporter": "^6.0.232",
81
+ "@sprucelabs/mercury-client": "^16.13.273",
82
+ "@sprucelabs/mercury-event-emitter": "^16.13.273",
83
+ "@sprucelabs/mercury-types": "^26.1.736",
84
+ "@sprucelabs/schema": "^25.3.467",
85
+ "@sprucelabs/spruce-core-schemas": "^22.6.42",
86
+ "@sprucelabs/spruce-event-plugin": "^9.0.1",
87
+ "@sprucelabs/spruce-event-utils": "^17.0.16",
88
+ "@sprucelabs/spruce-skill-booter": "^9.0.1",
89
+ "@sprucelabs/spruce-skill-utils": "^22.0.39",
90
+ "@sprucelabs/spruce-templates": "^14.26.1",
91
91
  "cfonts": "^2.10.0",
92
92
  "chalk": "^4.1.2",
93
93
  "chokidar": "^3.5.2",
@@ -116,16 +116,16 @@
116
116
  "uuid": "^8.3.2"
117
117
  },
118
118
  "devDependencies": {
119
- "@sprucelabs/data-stores": "^7.0.6",
120
- "@sprucelabs/jest-sheets-reporter": "^1.2.232",
121
- "@sprucelabs/mercury-core-events": "^1.3.117",
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.237",
121
+ "@sprucelabs/mercury-core-events": "^1.4.46",
122
+ "@sprucelabs/resolve-path-aliases": "^1.0.223",
123
+ "@sprucelabs/spruce-conversation-plugin": "^9.0.1",
124
+ "@sprucelabs/spruce-deploy-plugin": "^9.0.1",
125
+ "@sprucelabs/spruce-store-plugin": "^9.0.1",
126
+ "@sprucelabs/spruce-test-fixtures": "^9.0.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": "ba4c86682279a8134779db08f402216ae5883959"
596
+ "gitHead": "d3463f5aa06ee324617c009cf485f68ea5ae4f10"
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
  }