@sprucelabs/spruce-cli 14.25.0 → 14.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +1 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill4.test.d.ts +3 -0
- package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js +129 -8
- package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js.map +1 -1
- package/build/features/node/NodeFeature.js +1 -1
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/node/actions/UpdateDependenciesAction.js +21 -10
- package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
- package/package.json +26 -26
- package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +2 -5
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +2 -2
- package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +1 -1
- package/src/__tests__/behavioral/skill/UpgradingASkill4.test.ts +45 -0
- package/src/features/node/NodeFeature.ts +3 -3
- package/src/features/node/actions/UpdateDependenciesAction.ts +12 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
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.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.25.0...v14.26.0) (2021-11-07)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* update.dependencies has a new alias: upgrade.dependencies ([4fd36d2](https://github.com/sprucelabsai/spruce-cli-workspace/commit/4fd36d2))
|
|
12
|
+
* upgrading a skill will keep dev and prod dependencies in their spot ([42ddd04](https://github.com/sprucelabsai/spruce-cli-workspace/commit/42ddd04))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
6
18
|
# [14.25.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.24.9...v14.25.0) (2021-11-05)
|
|
7
19
|
|
|
8
20
|
|
|
@@ -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.
|
|
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","
|
|
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.
|
|
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 : [], '
|
|
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":"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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 ?? [], '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: "
|
|
192
|
+
key: "modulesMovedFromDevToProdDependenciesStayThere",
|
|
193
193
|
value: function () {
|
|
194
|
-
var
|
|
195
|
-
var
|
|
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
|
|
336
|
+
return _context7.stop();
|
|
216
337
|
}
|
|
217
338
|
}
|
|
218
|
-
},
|
|
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","
|
|
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"}
|
|
@@ -114,7 +114,7 @@ var NodeFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
114
114
|
|
|
115
115
|
case 11:
|
|
116
116
|
return _context2.abrupt("return", {
|
|
117
|
-
summaryLines: ['Build
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;IAgBqBA,W;;;;;AAoBpB,uBAAmBC,OAAnB,EAA2C;AAAA;;AAAA;AAC1C,8BAAMA,OAAN;AAD0C,6FAjBhB,MAiBgB;AAAA,qGAhBrB,gBAgBqB;AAAA,oGAftB,EAesB;AAAA,qGAdA,EAcA;AAAA,sGAbpBC,8BAaoB;AAAA,gJAZVC,oCAYU;AAAA,kHATvCC,4BASuC;AAAA,6IALvCC,qCAKuC;AAAA,mGAFvBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CAEuB;AAAA,+LA0FtB;AAAA;AAAA;AAAA;AAAA;AAAA,+CACbF,2BAASG,aAAT,CACNH,2BAASC,WAAT,CAAqB,MAAKG,GAA1B,EAA+B,cAA/B,CADM,CADa;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KA1FsB;AAG1C,SAAK,MAAKC,OAAL,CAAaC,EAAb,CAAgB,qBAAhB;AAAA,gGAAuC,kBAAOC,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA,sBACvCA,OAAO,CAACC,WAAR,KAAwB,MAAxB,IAAkCD,OAAO,CAACE,UAAR,KAAuB,SADlB;AAAA;AAAA;AAAA;;AAAA;;AAGzC,sBAAKC,EAAL,CAAQC,YAAR,CAAqB,mBAArB;;AAHyC;AAAA,uBAInC,MAAKC,OAAL,CAAa,SAAb,EAAwBC,OAAxB,CAAgC,kBAAhC,CAJmC;;AAAA;AAMzC,sBAAKH,EAAL,CAAQC,YAAR,CAAqB,qCAArB;;AANyC;AAAA,uBAOnC,MAAKC,OAAL,CAAa,SAAb,EAAwBC,OAAxB,CAAgC,eAAhC,CAPmC;;AAAA;AASzC,sBAAKH,EAAL,CAAQC,YAAR,CAAqB,eAArB;;AATyC;AAAA,uBAUnC,MAAKC,OAAL,CAAa,SAAb,EAAwBC,OAAxB,CAAgC,gBAAhC,CAVmC;;AAAA;AAAA,kDAYlC;AACNC,kBAAAA,YAAY,EAAE,CACb,
|
|
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,
|
|
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
|
-
|
|
175
|
-
dep = _step2.value;
|
|
176
|
-
|
|
177
|
-
|
|
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:
|
|
180
|
-
name:
|
|
186
|
+
stripped: stripped,
|
|
187
|
+
name: name
|
|
181
188
|
});
|
|
182
189
|
} else {
|
|
183
190
|
dependencies.unshift({
|
|
184
|
-
stripped:
|
|
185
|
-
name:
|
|
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.
|
|
20
|
+
"version": "14.26.0",
|
|
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.
|
|
79
|
-
"@sprucelabs/heartwood-view-controllers": "^
|
|
80
|
-
"@sprucelabs/jest-json-reporter": "^6.0.
|
|
81
|
-
"@sprucelabs/mercury-client": "^16.13.
|
|
82
|
-
"@sprucelabs/mercury-event-emitter": "^16.13.
|
|
83
|
-
"@sprucelabs/mercury-types": "^26.1.
|
|
84
|
-
"@sprucelabs/schema": "^25.3.
|
|
85
|
-
"@sprucelabs/spruce-core-schemas": "^22.6.
|
|
86
|
-
"@sprucelabs/spruce-event-plugin": "^
|
|
87
|
-
"@sprucelabs/spruce-event-utils": "^
|
|
88
|
-
"@sprucelabs/spruce-skill-booter": "^
|
|
89
|
-
"@sprucelabs/spruce-skill-utils": "^22.0.
|
|
90
|
-
"@sprucelabs/spruce-templates": "^14.
|
|
78
|
+
"@sprucelabs/error": "^5.0.272",
|
|
79
|
+
"@sprucelabs/heartwood-view-controllers": "^40.0.0",
|
|
80
|
+
"@sprucelabs/jest-json-reporter": "^6.0.232",
|
|
81
|
+
"@sprucelabs/mercury-client": "^16.13.263",
|
|
82
|
+
"@sprucelabs/mercury-event-emitter": "^16.13.263",
|
|
83
|
+
"@sprucelabs/mercury-types": "^26.1.723",
|
|
84
|
+
"@sprucelabs/schema": "^25.3.461",
|
|
85
|
+
"@sprucelabs/spruce-core-schemas": "^22.6.33",
|
|
86
|
+
"@sprucelabs/spruce-event-plugin": "^8.1.1",
|
|
87
|
+
"@sprucelabs/spruce-event-utils": "^17.0.2",
|
|
88
|
+
"@sprucelabs/spruce-skill-booter": "^8.1.1",
|
|
89
|
+
"@sprucelabs/spruce-skill-utils": "^22.0.33",
|
|
90
|
+
"@sprucelabs/spruce-templates": "^14.26.0",
|
|
91
91
|
"cfonts": "^2.10.0",
|
|
92
92
|
"chalk": "^4.1.2",
|
|
93
93
|
"chokidar": "^3.5.2",
|
|
@@ -116,16 +116,16 @@
|
|
|
116
116
|
"uuid": "^8.3.2"
|
|
117
117
|
},
|
|
118
118
|
"devDependencies": {
|
|
119
|
-
"@sprucelabs/data-stores": "^7.0.
|
|
120
|
-
"@sprucelabs/jest-sheets-reporter": "^1.2.
|
|
121
|
-
"@sprucelabs/mercury-core-events": "^1.
|
|
122
|
-
"@sprucelabs/resolve-path-aliases": "^1.0.
|
|
123
|
-
"@sprucelabs/spruce-conversation-plugin": "^
|
|
124
|
-
"@sprucelabs/spruce-deploy-plugin": "^
|
|
125
|
-
"@sprucelabs/spruce-store-plugin": "^
|
|
126
|
-
"@sprucelabs/spruce-test-fixtures": "^
|
|
127
|
-
"@sprucelabs/test": "^7.7.
|
|
128
|
-
"@sprucelabs/test-utils": "^3.0.
|
|
119
|
+
"@sprucelabs/data-stores": "^7.0.12",
|
|
120
|
+
"@sprucelabs/jest-sheets-reporter": "^1.2.236",
|
|
121
|
+
"@sprucelabs/mercury-core-events": "^1.4.30",
|
|
122
|
+
"@sprucelabs/resolve-path-aliases": "^1.0.223",
|
|
123
|
+
"@sprucelabs/spruce-conversation-plugin": "^8.1.1",
|
|
124
|
+
"@sprucelabs/spruce-deploy-plugin": "^8.1.1",
|
|
125
|
+
"@sprucelabs/spruce-store-plugin": "^8.1.1",
|
|
126
|
+
"@sprucelabs/spruce-test-fixtures": "^8.1.1",
|
|
127
|
+
"@sprucelabs/test": "^7.7.218",
|
|
128
|
+
"@sprucelabs/test-utils": "^3.0.248",
|
|
129
129
|
"@types/blessed": "^0.1.19",
|
|
130
130
|
"@types/eslint": "^7.28.2",
|
|
131
131
|
"@types/fs-extra": "^9.0.13",
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
"concurrently": "^6.3.0",
|
|
150
150
|
"conventional-changelog-sprucelabs": "^1.1.2",
|
|
151
151
|
"dotenv": "^10.0.0",
|
|
152
|
-
"eslint": "^8.
|
|
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": "
|
|
596
|
+
"gitHead": "29821f35b5ddf29fe81b98167ef51f21d934b389"
|
|
597
597
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 ?? [], '
|
|
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
|
|
|
@@ -61,9 +61,9 @@ export default class NodeFeature<
|
|
|
61
61
|
|
|
62
62
|
return {
|
|
63
63
|
summaryLines: [
|
|
64
|
-
'Build
|
|
65
|
-
'Lint rules applied.',
|
|
66
|
-
'
|
|
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
|
-
|
|
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
|
|
77
|
-
name
|
|
82
|
+
stripped,
|
|
83
|
+
name,
|
|
78
84
|
})
|
|
79
85
|
} else {
|
|
80
86
|
dependencies.unshift({
|
|
81
|
-
stripped
|
|
82
|
-
name
|
|
87
|
+
stripped,
|
|
88
|
+
name,
|
|
83
89
|
})
|
|
84
90
|
}
|
|
85
91
|
}
|