@sprucelabs/spruce-cli 14.26.18 → 14.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/build/.spruce/errors/errors.types.d.ts +19 -0
- package/build/.spruce/errors/options.types.d.ts +4 -1
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.d.ts +3 -0
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js +28 -0
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -0
- package/build/__tests__/behavioral/AddingADependency.test.d.ts +6 -3
- package/build/__tests__/behavioral/AddingADependency.test.js +116 -44
- package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +2 -2
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js +4 -4
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/ManagingDependencies.test.js +3 -3
- package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +1 -1
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingRemote.test.js +1 -1
- package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpVscode.test.js +3 -3
- package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js +2 -2
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
- package/build/__tests__/behavioral/UpgradingANodeModule.test.d.ts +1 -0
- package/build/__tests__/behavioral/UpgradingANodeModule.test.js +50 -3
- package/build/__tests__/behavioral/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +2 -2
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.d.ts +3 -2
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +156 -106
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +6 -9
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js +7 -4
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +7 -7
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js +2 -2
- package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js +3 -3
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js +2 -2
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +3 -3
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/errors/SpruceError.js +4 -0
- package/build/errors/SpruceError.js.map +1 -1
- package/build/errors/dependencyExists.builder.d.ts +11 -0
- package/build/errors/dependencyExists.builder.js +22 -0
- package/build/errors/dependencyExists.builder.js.map +1 -0
- package/build/features/AbstractAction.js +1 -1
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/dependencies/actions/AddAction.js +22 -15
- package/build/features/dependencies/actions/AddAction.js.map +1 -1
- package/build/features/event/actions/CreateAction.js +1 -1
- package/build/features/event/actions/CreateAction.js.map +1 -1
- package/build/features/node/NodeFeature.d.ts +1 -0
- package/build/features/node/NodeFeature.js +83 -64
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/node/actions/UpgradeAction.js +20 -9
- package/build/features/node/actions/UpgradeAction.js.map +1 -1
- package/build/features/node/writers/NodeWriter.d.ts +5 -2
- package/build/features/node/writers/NodeWriter.js +37 -22
- package/build/features/node/writers/NodeWriter.js.map +1 -1
- package/build/features/skill/updaters/Updater.js +3 -1
- package/build/features/skill/updaters/Updater.js.map +1 -1
- package/build/interfaces/SpyInterface.d.ts +1 -1
- package/build/interfaces/SpyInterface.js +2 -2
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/services/DependencyService.d.ts +1 -0
- package/build/services/DependencyService.js +18 -0
- package/build/services/DependencyService.js.map +1 -1
- package/build/tests/AbstractCliTest.js +1 -1
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/utilities/uiAssert.utility.d.ts +7 -0
- package/build/tests/utilities/uiAssert.utility.js +85 -0
- package/build/tests/utilities/uiAssert.utility.js.map +1 -0
- package/build/writers/AbstractWriter.d.ts +10 -10
- package/build/writers/AbstractWriter.js.map +1 -1
- package/package.json +34 -32
- package/src/.spruce/errors/errors.types.ts +29 -0
- package/src/.spruce/errors/options.types.ts +4 -1
- package/src/.spruce/errors/spruceCli/dependencyExists.schema.ts +22 -0
- package/src/__tests__/behavioral/AddingADependency.test.ts +45 -8
- package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +3 -3
- package/src/__tests__/behavioral/LoggingInAsASkill.test.ts +4 -4
- package/src/__tests__/behavioral/ManagingDependencies.test.ts +3 -3
- package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
- package/src/__tests__/behavioral/SettingRemote.test.ts +1 -1
- package/src/__tests__/behavioral/SettingUpVscode.test.ts +3 -3
- package/src/__tests__/behavioral/TestingDataStores.test.ts +2 -2
- package/src/__tests__/behavioral/UpgradingANodeModule.test.ts +24 -0
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +2 -2
- package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +44 -22
- package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts +2 -0
- package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +7 -7
- package/src/__tests__/behavioral/skill/UpgradingASkill3.test.ts +2 -2
- package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +1 -1
- package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +3 -3
- package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +2 -2
- package/src/__tests__/implementation/ActionExecuter2.test.ts +3 -3
- package/src/errors/SpruceError.ts +4 -0
- package/src/errors/dependencyExists.builder.ts +12 -0
- package/src/features/AbstractAction.ts +1 -4
- package/src/features/dependencies/actions/AddAction.ts +12 -5
- package/src/features/event/actions/CreateAction.ts +4 -1
- package/src/features/node/NodeFeature.ts +31 -25
- package/src/features/node/actions/UpgradeAction.ts +8 -1
- package/src/features/node/writers/NodeWriter.ts +38 -23
- package/src/features/skill/updaters/Updater.ts +2 -1
- package/src/interfaces/SpyInterface.ts +1 -1
- package/src/services/DependencyService.ts +14 -0
- package/src/tests/AbstractCliTest.ts +1 -1
- package/src/tests/utilities/uiAssert.utility.ts +45 -0
- package/src/writers/AbstractWriter.ts +15 -10
|
@@ -496,7 +496,7 @@ var SelectingAnAbstractTestClassTest = (_dec = (0, _test.test)(), _dec2 = (0, _t
|
|
|
496
496
|
return this.waitForInput();
|
|
497
497
|
|
|
498
498
|
case 3:
|
|
499
|
-
last = this.ui.
|
|
499
|
+
last = this.ui.getLastInvocation();
|
|
500
500
|
_ref3 = (_last$options$options = last.options.options) !== null && _last$options$options !== void 0 ? _last$options$options : {}, choices = _ref3.choices;
|
|
501
501
|
return _context9.abrupt("return", {
|
|
502
502
|
promise: promise,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts"],"names":["expectedAbstractTests","featuresWithRegisteredTests","featureCode","className","SelectingAnAbstractTestClassTest","installTests","copyTestFiles","executeCreateUntilAbstractClassSelection","choices","promise","expected","assert","doesInclude","label","selectOptionBasedOnLabel","results","testUtil","assertFileByNameInGeneratedFiles","files","Service","build","doesThrowAsync","execute","cli","on","abstractClasses","name","isFalsy","errors","match","contents","diskUtil","readFile","CommandService","setMockResponse","RegExp","code","testFeature","getFeatureInstaller","getFeature","feat","install","features","buildParentClassCandidates","candidates","isTruthy","find","cwd","createRandomTempDir","c","includes","isInstalled","isFalse","ui","sendInput","value","isTrue","source","resolveTestPath","destination","resolvePath","copyDir","Action","type","nameReadable","nameCamel","waitForInput","last","lastInvocation","options","AbstractTestTest"],"mappings":"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","sourcesContent":["import { SelectChoice } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureCode } from '../../../features/features.types'\nimport CommandService from '../../../services/CommandService'\nimport AbstractTestTest from '../../../tests/AbstractTestTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nconst expectedAbstractTests = [\n\t'AbstractSpruceTest (default)',\n\t'AbstractStoreTest (requires install)',\n\t'AbstractViewControllerTest (requires install)',\n\t'AbstractSpruceFixtureTest',\n\t'AbstractTest',\n\t'AbstractTest2',\n\t'AbstractBananaTestDifferentThanFileName',\n]\n\nconst featuresWithRegisteredTests: {\n\tfeatureCode: FeatureCode\n\tclassName: string\n}[] = [\n\t{ featureCode: 'store', className: 'AbstractStoreTest' },\n\t{ featureCode: 'view', className: 'AbstractViewControllerTest' },\n]\n\nexport default class SelectingAnAbstractTestClassTest extends AbstractTestTest {\n\t@test()\n\tprotected static async asksForYouToSelectABaseClass() {\n\t\tawait this.installTests()\n\t\tawait this.copyTestFiles()\n\n\t\tconst { choices, promise } =\n\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\tfor (const expected of expectedAbstractTests) {\n\t\t\tassert.doesInclude(choices, { label: expected })\n\t\t}\n\n\t\tthis.selectOptionBasedOnLabel('AbstractBananaTestDifferentThanFileName')\n\n\t\tconst results = await promise\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('build').build()\n\n\t\tawait assert.doesThrowAsync(\n\t\t\t() => this.Service('command').execute('yarn test'),\n\t\t\t/false.*?does not equal.*?true/gis\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async canSelectAbstractTestBasedOnEventEmitter() {\n\t\tconst cli = await this.installTests()\n\t\tvoid cli.on('test.register-abstract-test-classes', async () => {\n\t\t\treturn {\n\t\t\t\tabstractClasses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'TestClass',\n\t\t\t\t\t\tlabel: 'TestClass',\n\t\t\t\t\t\timport: '@sprucelabs/another-lib',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'TestClass2',\n\t\t\t\t\t\tlabel: 'TestClass2',\n\t\t\t\t\t\timport: '@sprucelabs/another-lib',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\n\t\tconst { choices, promise } =\n\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\tassert.doesInclude(choices, {\n\t\t\tlabel: 'TestClass',\n\t\t})\n\n\t\tassert.doesInclude(choices, {\n\t\t\tlabel: 'TestClass2',\n\t\t})\n\n\t\tthis.selectOptionBasedOnLabel('TestClass2')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { TestClass2 } from '@sprucelabs/another-lib'\"\n\t\t)\n\n\t\tassert.doesInclude(contents, 'extends TestClass2')\n\t}\n\n\t@test()\n\tprotected static async installingAFeatureRemovesLabelFromName() {\n\t\tCommandService.setMockResponse(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tawait this.installTests()\n\n\t\tconst testFeature = this.getFeatureInstaller().getFeature('test')\n\n\t\tfor (const feat of featuresWithRegisteredTests) {\n\t\t\tawait this.getFeatureInstaller().install({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\tcode: feat.featureCode,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\n\t\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\t\tassert.isTruthy(\n\t\t\t\tcandidates.find(({ name }) => {\n\t\t\t\t\treturn name === feat.className\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async selectingUninistalledTestInstallsTheFeature() {\n\t\tCommandService.setMockResponse(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tfor (const feat of featuresWithRegisteredTests) {\n\t\t\tthis.cwd = diskUtil.createRandomTempDir()\n\t\t\tawait this.installTests()\n\n\t\t\tconst { choices, promise } =\n\t\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\t\tconst match = choices.find((c: any) => c.label.includes(feat.className))\n\n\t\t\tassert.isTruthy(match)\n\n\t\t\tlet isInstalled = await this.getFeatureInstaller().isInstalled(\n\t\t\t\tfeat.featureCode as any\n\t\t\t)\n\t\t\tassert.isFalse(isInstalled)\n\n\t\t\tawait this.ui.sendInput(match?.value)\n\n\t\t\tawait promise\n\n\t\t\tisInstalled = await this.getFeatureInstaller().isInstalled(\n\t\t\t\tfeat.featureCode as any\n\t\t\t)\n\t\t\tassert.isTrue(isInstalled)\n\t\t}\n\t}\n\n\tprivate static async copyTestFiles() {\n\t\tconst source = this.resolveTestPath('abstract_tests')\n\t\tconst destination = this.resolvePath('src')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\t}\n\n\tprivate static async executeCreateUntilAbstractClassSelection() {\n\t\tconst promise = this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Can book appointment',\n\t\t\tnameCamel: 'canBookAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\t\tconst { choices } = last.options.options ?? {}\n\n\t\treturn { promise, choices } as {\n\t\t\tpromise: Promise<any>\n\t\t\tchoices: SelectChoice[]\n\t\t}\n\t}\n}\n"],"file":"SelectingAnAbstractTestClass.test.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts"],"names":["expectedAbstractTests","featuresWithRegisteredTests","featureCode","className","SelectingAnAbstractTestClassTest","installTests","copyTestFiles","executeCreateUntilAbstractClassSelection","choices","promise","expected","assert","doesInclude","label","selectOptionBasedOnLabel","results","testUtil","assertFileByNameInGeneratedFiles","files","Service","build","doesThrowAsync","execute","cli","on","abstractClasses","name","isFalsy","errors","match","contents","diskUtil","readFile","CommandService","setMockResponse","RegExp","code","testFeature","getFeatureInstaller","getFeature","feat","install","features","buildParentClassCandidates","candidates","isTruthy","find","cwd","createRandomTempDir","c","includes","isInstalled","isFalse","ui","sendInput","value","isTrue","source","resolveTestPath","destination","resolvePath","copyDir","Action","type","nameReadable","nameCamel","waitForInput","last","getLastInvocation","options","AbstractTestTest"],"mappings":"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","sourcesContent":["import { SelectChoice } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureCode } from '../../../features/features.types'\nimport CommandService from '../../../services/CommandService'\nimport AbstractTestTest from '../../../tests/AbstractTestTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nconst expectedAbstractTests = [\n\t'AbstractSpruceTest (default)',\n\t'AbstractStoreTest (requires install)',\n\t'AbstractViewControllerTest (requires install)',\n\t'AbstractSpruceFixtureTest',\n\t'AbstractTest',\n\t'AbstractTest2',\n\t'AbstractBananaTestDifferentThanFileName',\n]\n\nconst featuresWithRegisteredTests: {\n\tfeatureCode: FeatureCode\n\tclassName: string\n}[] = [\n\t{ featureCode: 'store', className: 'AbstractStoreTest' },\n\t{ featureCode: 'view', className: 'AbstractViewControllerTest' },\n]\n\nexport default class SelectingAnAbstractTestClassTest extends AbstractTestTest {\n\t@test()\n\tprotected static async asksForYouToSelectABaseClass() {\n\t\tawait this.installTests()\n\t\tawait this.copyTestFiles()\n\n\t\tconst { choices, promise } =\n\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\tfor (const expected of expectedAbstractTests) {\n\t\t\tassert.doesInclude(choices, { label: expected })\n\t\t}\n\n\t\tthis.selectOptionBasedOnLabel('AbstractBananaTestDifferentThanFileName')\n\n\t\tconst results = await promise\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('build').build()\n\n\t\tawait assert.doesThrowAsync(\n\t\t\t() => this.Service('command').execute('yarn test'),\n\t\t\t/false.*?does not equal.*?true/gis\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async canSelectAbstractTestBasedOnEventEmitter() {\n\t\tconst cli = await this.installTests()\n\t\tvoid cli.on('test.register-abstract-test-classes', async () => {\n\t\t\treturn {\n\t\t\t\tabstractClasses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'TestClass',\n\t\t\t\t\t\tlabel: 'TestClass',\n\t\t\t\t\t\timport: '@sprucelabs/another-lib',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'TestClass2',\n\t\t\t\t\t\tlabel: 'TestClass2',\n\t\t\t\t\t\timport: '@sprucelabs/another-lib',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\n\t\tconst { choices, promise } =\n\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\tassert.doesInclude(choices, {\n\t\t\tlabel: 'TestClass',\n\t\t})\n\n\t\tassert.doesInclude(choices, {\n\t\t\tlabel: 'TestClass2',\n\t\t})\n\n\t\tthis.selectOptionBasedOnLabel('TestClass2')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { TestClass2 } from '@sprucelabs/another-lib'\"\n\t\t)\n\n\t\tassert.doesInclude(contents, 'extends TestClass2')\n\t}\n\n\t@test()\n\tprotected static async installingAFeatureRemovesLabelFromName() {\n\t\tCommandService.setMockResponse(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tawait this.installTests()\n\n\t\tconst testFeature = this.getFeatureInstaller().getFeature('test')\n\n\t\tfor (const feat of featuresWithRegisteredTests) {\n\t\t\tawait this.getFeatureInstaller().install({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\tcode: feat.featureCode,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\n\t\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\t\tassert.isTruthy(\n\t\t\t\tcandidates.find(({ name }) => {\n\t\t\t\t\treturn name === feat.className\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async selectingUninistalledTestInstallsTheFeature() {\n\t\tCommandService.setMockResponse(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tfor (const feat of featuresWithRegisteredTests) {\n\t\t\tthis.cwd = diskUtil.createRandomTempDir()\n\t\t\tawait this.installTests()\n\n\t\t\tconst { choices, promise } =\n\t\t\t\tawait this.executeCreateUntilAbstractClassSelection()\n\n\t\t\tconst match = choices.find((c: any) => c.label.includes(feat.className))\n\n\t\t\tassert.isTruthy(match)\n\n\t\t\tlet isInstalled = await this.getFeatureInstaller().isInstalled(\n\t\t\t\tfeat.featureCode as any\n\t\t\t)\n\t\t\tassert.isFalse(isInstalled)\n\n\t\t\tawait this.ui.sendInput(match?.value)\n\n\t\t\tawait promise\n\n\t\t\tisInstalled = await this.getFeatureInstaller().isInstalled(\n\t\t\t\tfeat.featureCode as any\n\t\t\t)\n\t\t\tassert.isTrue(isInstalled)\n\t\t}\n\t}\n\n\tprivate static async copyTestFiles() {\n\t\tconst source = this.resolveTestPath('abstract_tests')\n\t\tconst destination = this.resolvePath('src')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\t}\n\n\tprivate static async executeCreateUntilAbstractClassSelection() {\n\t\tconst promise = this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Can book appointment',\n\t\t\tnameCamel: 'canBookAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\t\tconst { choices } = last.options.options ?? {}\n\n\t\treturn { promise, choices } as {\n\t\t\tpromise: Promise<any>\n\t\t\tchoices: SelectChoice[]\n\t\t}\n\t}\n}\n"],"file":"SelectingAnAbstractTestClass.test.js"}
|
|
@@ -102,7 +102,7 @@ var CreatingASkillViewTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(
|
|
|
102
102
|
return this.waitForInput();
|
|
103
103
|
|
|
104
104
|
case 3:
|
|
105
|
-
last = this.ui.
|
|
105
|
+
last = this.ui.getLastInvocation();
|
|
106
106
|
|
|
107
107
|
_test.assert.isEqual(last.command, 'confirm');
|
|
108
108
|
|
|
@@ -268,7 +268,7 @@ var CreatingASkillViewTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(
|
|
|
268
268
|
return this.waitForInput();
|
|
269
269
|
|
|
270
270
|
case 3:
|
|
271
|
-
last = this.ui.
|
|
271
|
+
last = this.ui.getLastInvocation();
|
|
272
272
|
|
|
273
273
|
_test.assert.isEqual(last.command, 'prompt');
|
|
274
274
|
|
|
@@ -325,7 +325,7 @@ var CreatingASkillViewTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(
|
|
|
325
325
|
return this.waitForInput();
|
|
326
326
|
|
|
327
327
|
case 3:
|
|
328
|
-
last = this.ui.
|
|
328
|
+
last = this.ui.getLastInvocation();
|
|
329
329
|
|
|
330
330
|
_test.assert.isEqual(last.command, 'prompt');
|
|
331
331
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/__tests__/behavioral/views/CreatingASkillView.test.ts"],"names":["CreatingASkillViewTest","action","Action","assert","isFunction","execute","viewType","waitForInput","last","ui","lastInvocation","isEqual","command","reset","isRoot","results","isFalsy","errors","rootSvc","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","contents","diskUtil","readFile","isTruthy","errorAssertUtil","assertError","name","promise","sendInput","dashboardVc","nameReadable","options","choices","value","appointmentsCard","buildTestfile","idInterfaceName","code","testFile","resolvePath","writeFile","importAll","imported","svcModel","svcId","vcModel","vcId","viewsFile","resolveHashSprucePath","viewContents","trim","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport CreateAction from '../../../features/view/actions/CreateAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillViewTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: CreateAction\n\tprivate static rootSvc: string\n\tpublic static appointmentsCard: string\n\tprivate static dashboardVc: string\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'create') as CreateAction\n\t}\n\n\t@test()\n\tprotected static hasCreateAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async asksIfRootSkillViewIfNotYetCreated() {\n\t\tvoid this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'confirm')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canCreateRootSkillView() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.rootSvc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Root.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.rootSvc, 'skillViewControllers')\n\t}\n\n\t@test()\n\tprotected static async generatesValidRootSkillView() {\n\t\tawait this.Service('typeChecker').check(this.rootSvc)\n\t}\n\n\t@test()\n\tprotected static async rootSkillViewExtendsAbstractSkillViewController() {\n\t\tconst contents = diskUtil.readFile(this.rootSvc)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class RootSkillViewController extends AbstractSkillViewController'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantCreateTwoRootSvcs() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\n\t\terrorAssertUtil.assertError(results.errors?.[0], 'SKILL_VIEW_EXISTS', {\n\t\t\tname: 'Root',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async asksForNamesIfCreatingSkillViewNotRoot() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\n\t\tawait this.ui.sendInput('Dashboard')\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.dashboardVc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Dashboard.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.dashboardVc, 'skillViewControllers')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async asksForViewModelWhenCreatingSkillView() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'view',\n\t\t\tnameReadable: 'Appointments card',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tvalue: 'Card',\n\t\t})\n\n\t\tawait this.ui.sendInput('Card')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.appointmentsCard = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'AppointmentsCard.vc.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static skillViewExtendsAbstractViewControllerWithProperView() {\n\t\tconst contents = diskUtil.readFile(this.appointmentsCard)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class AppointmentsCardViewController extends AbstractViewController<Card>'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesRootSkillViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'SkillViewControllerId',\n\t\t\tcode: `\nconst root = vcFactory.Controller('testing-views.root', {})\nexport const svcModel = root.render()\nexport const svcId: SkillViewControllerId = 'testing-views.root'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.svcModel)\n\t\tassert.isTruthy(imported.svcId)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'ViewControllerId',\n\t\t\tcode: `\n\t\tconst apptCard = vcFactory.Controller('testing-views.appointments-card', {})\n\t\texport const vcModel = apptCard.render()\n\t\texport const vcId: ViewControllerId = 'testing-views.appointments-card'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.vcModel)\n\t\tassert.isTruthy(imported.vcId)\n\t}\n\n\t@test()\n\tprotected static async typesViewControllerOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface ViewControllerOptionsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.appointments-card': ConstructorParameters<typeof AppointmentsCardViewController>[0]`\n\t\t)\n\t}\n\n\tprivate static buildTestfile(options: {\n\t\tcode: string\n\t\tidInterfaceName: 'SkillViewControllerId' | 'ViewControllerId'\n\t}) {\n\t\tconst { code, idInterfaceName } = options\n\n\t\treturn (\n\t\t\t`\nimport ` +\n\t\t\t`'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\tMockStorage,\n\t${idInterfaceName},\n} from '@sprucelabs/heartwood-view-controllers'\nimport { vcDiskUtil } from '@sprucelabs/spruce-test-fixtures'\n\nAuthenticatorImpl.setStorage(new MockStorage())\n\nconst vcFactory = ViewControllerFactory.Factory({\n\tcontrollerMap: vcDiskUtil.loadViewControllersAndBuildMap('testing-views', __dirname),\n\tconnectToApi: async () => {\n\t\treturn 'yes' as any\n\t},\n})\n${code}\n\t\t`.trim()\n\t\t)\n\t}\n}\n"],"file":"CreatingASkillView.test.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/__tests__/behavioral/views/CreatingASkillView.test.ts"],"names":["CreatingASkillViewTest","action","Action","assert","isFunction","execute","viewType","waitForInput","last","ui","getLastInvocation","isEqual","command","reset","isRoot","results","isFalsy","errors","rootSvc","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","contents","diskUtil","readFile","isTruthy","errorAssertUtil","assertError","name","promise","sendInput","dashboardVc","nameReadable","options","choices","value","appointmentsCard","buildTestfile","idInterfaceName","code","testFile","resolvePath","writeFile","importAll","imported","svcModel","svcId","vcModel","vcId","viewsFile","resolveHashSprucePath","viewContents","trim","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport CreateAction from '../../../features/view/actions/CreateAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillViewTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: CreateAction\n\tprivate static rootSvc: string\n\tpublic static appointmentsCard: string\n\tprivate static dashboardVc: string\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'create') as CreateAction\n\t}\n\n\t@test()\n\tprotected static hasCreateAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async asksIfRootSkillViewIfNotYetCreated() {\n\t\tvoid this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'confirm')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canCreateRootSkillView() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.rootSvc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Root.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.rootSvc, 'skillViewControllers')\n\t}\n\n\t@test()\n\tprotected static async generatesValidRootSkillView() {\n\t\tawait this.Service('typeChecker').check(this.rootSvc)\n\t}\n\n\t@test()\n\tprotected static async rootSkillViewExtendsAbstractSkillViewController() {\n\t\tconst contents = diskUtil.readFile(this.rootSvc)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class RootSkillViewController extends AbstractSkillViewController'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantCreateTwoRootSvcs() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\n\t\terrorAssertUtil.assertError(results.errors?.[0], 'SKILL_VIEW_EXISTS', {\n\t\t\tname: 'Root',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async asksForNamesIfCreatingSkillViewNotRoot() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\n\t\tawait this.ui.sendInput('Dashboard')\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.dashboardVc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Dashboard.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.dashboardVc, 'skillViewControllers')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async asksForViewModelWhenCreatingSkillView() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'view',\n\t\t\tnameReadable: 'Appointments card',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tvalue: 'Card',\n\t\t})\n\n\t\tawait this.ui.sendInput('Card')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.appointmentsCard = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'AppointmentsCard.vc.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static skillViewExtendsAbstractViewControllerWithProperView() {\n\t\tconst contents = diskUtil.readFile(this.appointmentsCard)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class AppointmentsCardViewController extends AbstractViewController<Card>'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesRootSkillViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'SkillViewControllerId',\n\t\t\tcode: `\nconst root = vcFactory.Controller('testing-views.root', {})\nexport const svcModel = root.render()\nexport const svcId: SkillViewControllerId = 'testing-views.root'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.svcModel)\n\t\tassert.isTruthy(imported.svcId)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'ViewControllerId',\n\t\t\tcode: `\n\t\tconst apptCard = vcFactory.Controller('testing-views.appointments-card', {})\n\t\texport const vcModel = apptCard.render()\n\t\texport const vcId: ViewControllerId = 'testing-views.appointments-card'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.vcModel)\n\t\tassert.isTruthy(imported.vcId)\n\t}\n\n\t@test()\n\tprotected static async typesViewControllerOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface ViewControllerOptionsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.appointments-card': ConstructorParameters<typeof AppointmentsCardViewController>[0]`\n\t\t)\n\t}\n\n\tprivate static buildTestfile(options: {\n\t\tcode: string\n\t\tidInterfaceName: 'SkillViewControllerId' | 'ViewControllerId'\n\t}) {\n\t\tconst { code, idInterfaceName } = options\n\n\t\treturn (\n\t\t\t`\nimport ` +\n\t\t\t`'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\tMockStorage,\n\t${idInterfaceName},\n} from '@sprucelabs/heartwood-view-controllers'\nimport { vcDiskUtil } from '@sprucelabs/spruce-test-fixtures'\n\nAuthenticatorImpl.setStorage(new MockStorage())\n\nconst vcFactory = ViewControllerFactory.Factory({\n\tcontrollerMap: vcDiskUtil.loadViewControllersAndBuildMap('testing-views', __dirname),\n\tconnectToApi: async () => {\n\t\treturn 'yes' as any\n\t},\n})\n${code}\n\t\t`.trim()\n\t\t)\n\t}\n}\n"],"file":"CreatingASkillView.test.js"}
|
|
@@ -78,7 +78,7 @@ var TestingViewControllersTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.te
|
|
|
78
78
|
return this.waitForInput();
|
|
79
79
|
|
|
80
80
|
case 5:
|
|
81
|
-
last = this.ui.
|
|
81
|
+
last = this.ui.getLastInvocation();
|
|
82
82
|
|
|
83
83
|
_test.assert.doesInclude(last.options.options.choices, {
|
|
84
84
|
label: 'AbstractViewControllerTest (requires install)'
|
|
@@ -114,7 +114,7 @@ var TestingViewControllersTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.te
|
|
|
114
114
|
return this.waitForInput();
|
|
115
115
|
|
|
116
116
|
case 3:
|
|
117
|
-
last = this.ui.
|
|
117
|
+
last = this.ui.getLastInvocation();
|
|
118
118
|
|
|
119
119
|
_test.assert.doesInclude(last.options.options.choices, {
|
|
120
120
|
label: 'AbstractViewControllerTest'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/__tests__/behavioral/views/TestingViewControllers.test.ts"],"names":["TestingViewControllersTest","viewFeature","cli","getFeature","isInstalled","executeCreate","waitForInput","last","ui","
|
|
1
|
+
{"version":3,"sources":["../../../../src/__tests__/behavioral/views/TestingViewControllers.test.ts"],"names":["TestingViewControllersTest","viewFeature","cli","getFeature","isInstalled","executeCreate","waitForInput","last","ui","getLastInvocation","assert","doesInclude","options","choices","label","reset","promise","selectOptionBasedOnLabel","results","isFalsy","errors","match","testUtil","assertFileByNameInGeneratedFiles","files","contents","diskUtil","readFile","Service","build","Action","execute","shouldReportWhileRunning","testResults","isArray","isLength","meta","testFiles","path","status","type","nameReadable","nameCamel","namePascal","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class TestingViewControllersTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'viewsWithTests'\n\n\t@test()\n\tprotected static async showsNotInstalled() {\n\t\tconst viewFeature = this.cli.getFeature('view')\n\t\tviewFeature.isInstalled = async () => false\n\n\t\tvoid this.executeCreate()\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel: 'AbstractViewControllerTest (requires install)',\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canSelectAbstractTest() {\n\t\tvoid this.executeCreate()\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tlabel: 'AbstractViewControllerTest',\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async testsRun() {\n\t\tconst promise = this.executeCreate()\n\n\t\tawait this.waitForInput()\n\n\t\tthis.selectOptionBasedOnLabel('AbstractViewControllerTest')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'RenderingRootViewController.test.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'RenderingRootViewControllerTest extends AbstractViewControllerTest'\n\t\t)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { AbstractViewControllerTest } from '@sprucelabs/spruce-view-plugin'\"\n\t\t)\n\n\t\tawait this.Service('build').build()\n\n\t\tconst testResults = await this.Action('test', 'test').execute({\n\t\t\tshouldReportWhileRunning: false,\n\t\t})\n\n\t\tassert.isArray(testResults.errors)\n\t\tassert.isLength(testResults.errors, 1)\n\n\t\tassert.doesInclude(testResults.meta?.testResults.testFiles, {\n\t\t\tpath: 'behavioral/RenderingRootViewController.test.ts',\n\t\t\tstatus: 'failed',\n\t\t})\n\t}\n\n\tprivate static async executeCreate() {\n\t\treturn this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Rendering root view controller',\n\t\t\tnameCamel: 'renderingRootViewController',\n\t\t\tnamePascal: 'RenderingRootViewController',\n\t\t})\n\t}\n}\n"],"file":"TestingViewControllers.test.js"}
|
|
@@ -215,7 +215,7 @@ var FeatureCommandExecuterContTest = (_dec = (0, _test.test)(), _dec2 = (0, _tes
|
|
|
215
215
|
return this.waitForInput();
|
|
216
216
|
|
|
217
217
|
case 10:
|
|
218
|
-
_test.assert.doesNotInclude(this.ui.
|
|
218
|
+
_test.assert.doesNotInclude(this.ui.getLastInvocation(), {
|
|
219
219
|
command: 'prompt',
|
|
220
220
|
options: {
|
|
221
221
|
type: 'select'
|
|
@@ -317,7 +317,7 @@ var FeatureCommandExecuterContTest = (_dec = (0, _test.test)(), _dec2 = (0, _tes
|
|
|
317
317
|
|
|
318
318
|
case 5:
|
|
319
319
|
this.ui.reset();
|
|
320
|
-
lastQuestion = this.ui.
|
|
320
|
+
lastQuestion = this.ui.getLastInvocation();
|
|
321
321
|
|
|
322
322
|
_test.assert.isEqual(lastQuestion.command, 'prompt');
|
|
323
323
|
|
|
@@ -469,7 +469,7 @@ var FeatureCommandExecuterContTest = (_dec = (0, _test.test)(), _dec2 = (0, _tes
|
|
|
469
469
|
|
|
470
470
|
_test.assert.doesInclude(message, /1 optional/gi);
|
|
471
471
|
|
|
472
|
-
_test.assert.doesInclude(this.ui.
|
|
472
|
+
_test.assert.doesInclude(this.ui.getLastInvocation(), {
|
|
473
473
|
command: 'prompt',
|
|
474
474
|
options: {
|
|
475
475
|
type: 'select',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"names":["FeatureCommandExecuterContTest","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","setupMockCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","getEmitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","lastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","setMockResponse","RegExp","code","AbstractSchemaTest"],"mappings":"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","sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.lastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.lastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.setupMockCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.lastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static setupMockCommands() {\n\t\tCommandService.setMockResponse(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"file":"ActionExecuter2.test.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"names":["FeatureCommandExecuterContTest","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","setupMockCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","getEmitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","getLastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","setMockResponse","RegExp","code","AbstractSchemaTest"],"mappings":"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","sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.setupMockCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static setupMockCommands() {\n\t\tCommandService.setMockResponse(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"file":"ActionExecuter2.test.js"}
|
|
@@ -285,6 +285,10 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
|
|
|
285
285
|
message = "A transport named '".concat(options.name, "' already exists!");
|
|
286
286
|
break;
|
|
287
287
|
|
|
288
|
+
case 'DEPENDENCY_EXISTS':
|
|
289
|
+
message = "You already have ".concat(options.namespace, " as a dependency!");
|
|
290
|
+
break;
|
|
291
|
+
|
|
288
292
|
default:
|
|
289
293
|
message = (0, _get2["default"])((0, _getPrototypeOf2["default"])(SpruceError.prototype), "friendlyMessage", this).call(this);
|
|
290
294
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/errors/SpruceError.ts"],"names":["SpruceError","options","message","code","args","length","join","friendlyMessage","originalError","stack","name","command","file","pattern","cmd","cwd","stderr","cleanStdErr","stdout","schemaId","destination","featureCode","fileName","testName","errorMessage","split","map","line","errors","responseErrors","errorMessages","err","push","fullyQualifiedEventName","brokenProperty","dependencies","d","hint","namesUtil","toPascal","schemaNamespace","fieldName","JSON","stringify","fieldOptions","replace","trim","AbstractSpruceError"],"mappings":"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","sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport upperFirst from 'lodash/upperFirst'\nimport ErrorOptions from '#spruce/errors/options.types'\n\nexport default class SpruceError extends AbstractSpruceError<ErrorOptions> {\n\t/** An easy to understand version of the errors */\n\tpublic friendlyMessage(): string {\n\t\tconst { options } = this\n\t\tlet message\n\n\t\tswitch (options?.code) {\n\t\t\tcase 'INVALID_COMMAND':\n\t\t\t\tif (!options.args || options.args.length === 0) {\n\t\t\t\t\tmessage = `Hey friend 👋.. I don't support the command you tried.`\n\t\t\t\t} else {\n\t\t\t\t\tmessage = `Hey friend 👋. I don't know the command: ${options.args.join(\n\t\t\t\t\t\t' '\n\t\t\t\t\t)}.`\n\t\t\t\t}\n\t\t\t\tmessage += ' Try running `spruce --help`'\n\t\t\t\tbreak\n\n\t\t\tcase 'GENERIC':\n\t\t\t\tmessage = options.friendlyMessage ?? 'Oh shoot! 🤔'\n\n\t\t\t\tif (options.originalError) {\n\t\t\t\t\tmessage += `\\n\\n${\n\t\t\t\t\t\toptions.originalError.stack ?? options.originalError.name\n\t\t\t\t\t}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'NOT_IMPLEMENTED':\n\t\t\t\tmessage = ''\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'COMMAND_NOT_IMPLEMENTED':\n\t\t\t\tmessage = `${options.command} has not yet been implemented. ${\n\t\t\t\t\toptions.args ? `Args: ${options.args.join(', ')}` : ''\n\t\t\t\t}`\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_FAILED_TO_IMPORT':\n\t\t\t\tmessage = `Error importing \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BUILD_FAILED':\n\t\t\t\tmessage = `Build${\n\t\t\t\t\toptions.file ? `ing ${options.file}` : ''\n\t\t\t\t} failed. It looks like you're not running 'yarn watch'. Run it and then run 'spruce all:sync'.`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FAILED_TO_IMPORT':\n\t\t\t\tmessage =\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\t`Failed to import \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'LINT_FAILED':\n\t\t\t\tmessage = `Lint failed on pattern ${options.pattern}.`\n\n\t\t\t\tif (options.originalError) {\n\t\t\t\t\tmessage += `\\n\\nOriginal error:${\n\t\t\t\t\t\toptions.originalError.stack ?? options.originalError.message\n\t\t\t\t\t}`\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'EXECUTING_COMMAND_FAILED':\n\t\t\t\tif (this.originalError && this.originalError.message) {\n\t\t\t\t\tmessage = this.originalError.message + '\\n\\n'\n\t\t\t\t} else {\n\t\t\t\t\tmessage = ''\n\t\t\t\t}\n\t\t\t\tmessage += `Executing command failed '${options.cmd}'.\\n\\n`\n\t\t\t\tif (options.cwd) {\n\t\t\t\t\tmessage += `cwd: ${options.cwd}\\n\\n`\n\t\t\t\t}\n\n\t\t\t\tif (options.stderr) {\n\t\t\t\t\tmessage += this.cleanStdErr(options.stderr) + '\\n\\n'\n\t\t\t\t}\n\n\t\t\t\tif (options.stdout) {\n\t\t\t\t\tmessage += options.stdout\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'CREATE_AUTOLOADER_FAILED':\n\t\t\t\tmessage = 'A Could not create an autoloader just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_EMPTY':\n\t\t\t\tmessage = 'A directory empty just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'FILE_EXISTS':\n\t\t\t\tmessage = 'A fail already exists.'\n\t\t\t\tbreak\n\n\t\t\tcase 'VSCODE_NOT_INSTALLED':\n\t\t\t\tmessage =\n\t\t\t\t\t\"vscode's 'code' is not installed.\\n\\nMac instructions: https://code.visualstudio.com/docs/setup/mac\\n\\nLinux instructions: https://code.visualstudio.com/docs/setup/linux\\n\\nWindows instructions: https://code.visualstudio.com/docs/setup/windows\"\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_EXISTS':\n\t\t\t\tmessage = `A schema called ${options.schemaId} already exists at ${options.destination}`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_ABORTED':\n\t\t\t\tmessage = 'Aborted! See ya later! ✌️'\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_FEATURE_CODE':\n\t\t\t\tmessage = `Oh no! I couldn't find a feature with the code '${options.featureCode}'.`\n\t\t\t\tbreak\n\n\t\t\tcase 'TEST_FAILED':\n\t\t\t\tmessage = `${options.fileName}\\n - ${\n\t\t\t\t\toptions.testName\n\t\t\t\t}\\n\\n${options.errorMessage\n\t\t\t\t\t.split('\\n')\n\t\t\t\t\t.map((line) => ` ${line}`)\n\t\t\t\t\t.join('\\n')}`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FEATURE_NOT_INSTALLED':\n\t\t\t\tmessage = `\\`${upperFirst(\n\t\t\t\t\toptions.featureCode\n\t\t\t\t)}\\` feature is not installed. Install it first, then try again.`\n\t\t\t\tbreak\n\n\t\t\tcase 'MERCURY_RESPONSE_ERROR': {\n\t\t\t\tconst errors = options.responseErrors\n\t\t\t\tmessage = `Got ${\n\t\t\t\t\terrors.length === 1 ? 'an error' : `${errors.length} errors`\n\t\t\t\t} from the server:\\n\\n`\n\n\t\t\t\tconst errorMessages: string[] = []\n\t\t\t\tfor (const err of errors) {\n\t\t\t\t\terrorMessages.push(err.message)\n\t\t\t\t}\n\n\t\t\t\tmessage += errorMessages.join('\\n')\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'INVALID_TEST_DIRECTORY':\n\t\t\t\tmessage = `You are missing dependencies I need to run tests. Try \\`spruce test.install\\` to reinstall.`\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_NOT_SKILL':\n\t\t\t\tmessage = 'The directory you are in is not a skill!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_REGISTERED':\n\t\t\t\tmessage = `Dang! I can't continue until you register your skill! Run \\`spruce login\\` and then \\`spruce register.skill\\` to get the ball rolling!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_ORGANIZATIONS_FOUND':\n\t\t\t\tmessage =\n\t\t\t\t\t\"It looks like you don't have any organizations setup yet. Try `spruce create.organization` first.\"\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_EVENT_CONTRACT':\n\t\t\t\tmessage = `The event named \\`${options.fullyQualifiedEventName}\\` is not valid. Check ${options.brokenProperty}. The original error is:\\n\\n${options.originalError?.message}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BOOT_ERROR':\n\t\t\t\tmessage = `Booting your skill failed: ${\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\toptions.originalError?.message ??\n\t\t\t\t\t'Not sure why, tho.'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'DEPLOY_FAILED':\n\t\t\t\tmessage = 'Deploy halted!'\n\t\t\t\tbreak\n\n\t\t\tcase 'MISSING_DEPENDENCIES':\n\t\t\t\tmessage = `Looks like you're missing some dependencies:\\n\\n${options.dependencies\n\t\t\t\t\t.map((d) => `${d.name}: ${d.hint}`)\n\t\t\t\t\t.join('\\n')}`\n\t\t\t\tbreak\n\n\t\t\tcase 'STORE_EXISTS':\n\t\t\t\tmessage = 'A Store exists just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'NOT_LOGGED_IN':\n\t\t\t\tmessage = 'You have to be logged in to do that!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_FOUND':\n\t\t\t\tmessage = options.friendlyMessage ?? `I couldn't find that skill!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_SKILLS_REGISTERED':\n\t\t\t\tmessage = `Whoa! Looks like you haven't registered your skill yet! Try \\`spruce register\\` to get that done!`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_BLOCKED':\n\t\t\t\tmessage = `${options.command} is blocked! ${options.hint}`\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_VIEW_EXISTS':\n\t\t\t\tmessage = `A skill view controller already exists named ${options.name}!`\n\t\t\t\tbreak\n\n\t\t\tcase 'THEME_EXISTS':\n\t\t\t\tmessage = `Yikes! You can't create a new theme. One per skill for now.`\n\t\t\t\tbreak\n\n\t\t\tcase 'CACHE_NOT_ENABLED':\n\t\t\t\tmessage = \"Cache is not enabled, so it can't be disabled!\"\n\t\t\t\tbreak\n\n\t\t\tcase 'DOCKER_NOT_STARTED':\n\t\t\t\tmessage = 'Docker has not been started! Start it and try again!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_TEMPLATE_ITEM_BUILDING_FAILED':\n\t\t\t\tmessage = `Failed to build schema template item for '${namesUtil.toPascal(\n\t\t\t\t\toptions.schemaNamespace\n\t\t\t\t)}.${options.schemaId}'. The field I had an issue on was '${\n\t\t\t\t\toptions.fieldName\n\t\t\t\t}'. It's options are:\\n\\n${JSON.stringify(\n\t\t\t\t\toptions.fieldOptions\n\t\t\t\t)}.\\n\\nChances are you have a circular reference in your schemas. You'll need to extract shared fields to a new file and have your schemas mix those in, vs referencing eath other.`\n\t\t\t\tbreak\n\n\t\t\tcase 'ACTION_CANCELLED':\n\t\t\t\tmessage = 'A Action cancelled just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'TRANSPORT_ALREADY_EXISTS':\n\t\t\t\tmessage = `A transport named '${options.name}' already exists!`\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tmessage = super.friendlyMessage()\n\t\t}\n\n\t\treturn message\n\t}\n\n\tprivate cleanStdErr(stderr: string) {\n\t\treturn stderr.replace('warning package.json: No license field', '').trim()\n\t}\n}\n"],"file":"SpruceError.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/errors/SpruceError.ts"],"names":["SpruceError","options","message","code","args","length","join","friendlyMessage","originalError","stack","name","command","file","pattern","cmd","cwd","stderr","cleanStdErr","stdout","schemaId","destination","featureCode","fileName","testName","errorMessage","split","map","line","errors","responseErrors","errorMessages","err","push","fullyQualifiedEventName","brokenProperty","dependencies","d","hint","namesUtil","toPascal","schemaNamespace","fieldName","JSON","stringify","fieldOptions","namespace","replace","trim","AbstractSpruceError"],"mappings":"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","sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport upperFirst from 'lodash/upperFirst'\nimport ErrorOptions from '#spruce/errors/options.types'\n\nexport default class SpruceError extends AbstractSpruceError<ErrorOptions> {\n\t/** An easy to understand version of the errors */\n\tpublic friendlyMessage(): string {\n\t\tconst { options } = this\n\t\tlet message\n\n\t\tswitch (options?.code) {\n\t\t\tcase 'INVALID_COMMAND':\n\t\t\t\tif (!options.args || options.args.length === 0) {\n\t\t\t\t\tmessage = `Hey friend 👋.. I don't support the command you tried.`\n\t\t\t\t} else {\n\t\t\t\t\tmessage = `Hey friend 👋. I don't know the command: ${options.args.join(\n\t\t\t\t\t\t' '\n\t\t\t\t\t)}.`\n\t\t\t\t}\n\t\t\t\tmessage += ' Try running `spruce --help`'\n\t\t\t\tbreak\n\n\t\t\tcase 'GENERIC':\n\t\t\t\tmessage = options.friendlyMessage ?? 'Oh shoot! 🤔'\n\n\t\t\t\tif (options.originalError) {\n\t\t\t\t\tmessage += `\\n\\n${\n\t\t\t\t\t\toptions.originalError.stack ?? options.originalError.name\n\t\t\t\t\t}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'NOT_IMPLEMENTED':\n\t\t\t\tmessage = ''\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'COMMAND_NOT_IMPLEMENTED':\n\t\t\t\tmessage = `${options.command} has not yet been implemented. ${\n\t\t\t\t\toptions.args ? `Args: ${options.args.join(', ')}` : ''\n\t\t\t\t}`\n\t\t\t\tif (options.friendlyMessage) {\n\t\t\t\t\tmessage += `\\n\\n${options.friendlyMessage}`\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_FAILED_TO_IMPORT':\n\t\t\t\tmessage = `Error importing \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BUILD_FAILED':\n\t\t\t\tmessage = `Build${\n\t\t\t\t\toptions.file ? `ing ${options.file}` : ''\n\t\t\t\t} failed. It looks like you're not running 'yarn watch'. Run it and then run 'spruce all:sync'.`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FAILED_TO_IMPORT':\n\t\t\t\tmessage =\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\t`Failed to import \"${options.file}\". Original error:\\n\\n${\n\t\t\t\t\t\toptions.originalError?.message ?? '**MISSING**'\n\t\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'LINT_FAILED':\n\t\t\t\tmessage = `Lint failed on pattern ${options.pattern}.`\n\n\t\t\t\tif (options.originalError) {\n\t\t\t\t\tmessage += `\\n\\nOriginal error:${\n\t\t\t\t\t\toptions.originalError.stack ?? options.originalError.message\n\t\t\t\t\t}`\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'EXECUTING_COMMAND_FAILED':\n\t\t\t\tif (this.originalError && this.originalError.message) {\n\t\t\t\t\tmessage = this.originalError.message + '\\n\\n'\n\t\t\t\t} else {\n\t\t\t\t\tmessage = ''\n\t\t\t\t}\n\t\t\t\tmessage += `Executing command failed '${options.cmd}'.\\n\\n`\n\t\t\t\tif (options.cwd) {\n\t\t\t\t\tmessage += `cwd: ${options.cwd}\\n\\n`\n\t\t\t\t}\n\n\t\t\t\tif (options.stderr) {\n\t\t\t\t\tmessage += this.cleanStdErr(options.stderr) + '\\n\\n'\n\t\t\t\t}\n\n\t\t\t\tif (options.stdout) {\n\t\t\t\t\tmessage += options.stdout\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tcase 'CREATE_AUTOLOADER_FAILED':\n\t\t\t\tmessage = 'A Could not create an autoloader just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_EMPTY':\n\t\t\t\tmessage = 'A directory empty just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'FILE_EXISTS':\n\t\t\t\tmessage = 'A fail already exists.'\n\t\t\t\tbreak\n\n\t\t\tcase 'VSCODE_NOT_INSTALLED':\n\t\t\t\tmessage =\n\t\t\t\t\t\"vscode's 'code' is not installed.\\n\\nMac instructions: https://code.visualstudio.com/docs/setup/mac\\n\\nLinux instructions: https://code.visualstudio.com/docs/setup/linux\\n\\nWindows instructions: https://code.visualstudio.com/docs/setup/windows\"\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_EXISTS':\n\t\t\t\tmessage = `A schema called ${options.schemaId} already exists at ${options.destination}`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_ABORTED':\n\t\t\t\tmessage = 'Aborted! See ya later! ✌️'\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_FEATURE_CODE':\n\t\t\t\tmessage = `Oh no! I couldn't find a feature with the code '${options.featureCode}'.`\n\t\t\t\tbreak\n\n\t\t\tcase 'TEST_FAILED':\n\t\t\t\tmessage = `${options.fileName}\\n - ${\n\t\t\t\t\toptions.testName\n\t\t\t\t}\\n\\n${options.errorMessage\n\t\t\t\t\t.split('\\n')\n\t\t\t\t\t.map((line) => ` ${line}`)\n\t\t\t\t\t.join('\\n')}`\n\n\t\t\t\tbreak\n\n\t\t\tcase 'FEATURE_NOT_INSTALLED':\n\t\t\t\tmessage = `\\`${upperFirst(\n\t\t\t\t\toptions.featureCode\n\t\t\t\t)}\\` feature is not installed. Install it first, then try again.`\n\t\t\t\tbreak\n\n\t\t\tcase 'MERCURY_RESPONSE_ERROR': {\n\t\t\t\tconst errors = options.responseErrors\n\t\t\t\tmessage = `Got ${\n\t\t\t\t\terrors.length === 1 ? 'an error' : `${errors.length} errors`\n\t\t\t\t} from the server:\\n\\n`\n\n\t\t\t\tconst errorMessages: string[] = []\n\t\t\t\tfor (const err of errors) {\n\t\t\t\t\terrorMessages.push(err.message)\n\t\t\t\t}\n\n\t\t\t\tmessage += errorMessages.join('\\n')\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'INVALID_TEST_DIRECTORY':\n\t\t\t\tmessage = `You are missing dependencies I need to run tests. Try \\`spruce test.install\\` to reinstall.`\n\t\t\t\tbreak\n\n\t\t\tcase 'DIRECTORY_NOT_SKILL':\n\t\t\t\tmessage = 'The directory you are in is not a skill!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_REGISTERED':\n\t\t\t\tmessage = `Dang! I can't continue until you register your skill! Run \\`spruce login\\` and then \\`spruce register.skill\\` to get the ball rolling!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_ORGANIZATIONS_FOUND':\n\t\t\t\tmessage =\n\t\t\t\t\t\"It looks like you don't have any organizations setup yet. Try `spruce create.organization` first.\"\n\t\t\t\tbreak\n\n\t\t\tcase 'INVALID_EVENT_CONTRACT':\n\t\t\t\tmessage = `The event named \\`${options.fullyQualifiedEventName}\\` is not valid. Check ${options.brokenProperty}. The original error is:\\n\\n${options.originalError?.message}`\n\t\t\t\tbreak\n\n\t\t\tcase 'BOOT_ERROR':\n\t\t\t\tmessage = `Booting your skill failed: ${\n\t\t\t\t\toptions.friendlyMessage ??\n\t\t\t\t\toptions.originalError?.message ??\n\t\t\t\t\t'Not sure why, tho.'\n\t\t\t\t}`\n\t\t\t\tbreak\n\n\t\t\tcase 'DEPLOY_FAILED':\n\t\t\t\tmessage = 'Deploy halted!'\n\t\t\t\tbreak\n\n\t\t\tcase 'MISSING_DEPENDENCIES':\n\t\t\t\tmessage = `Looks like you're missing some dependencies:\\n\\n${options.dependencies\n\t\t\t\t\t.map((d) => `${d.name}: ${d.hint}`)\n\t\t\t\t\t.join('\\n')}`\n\t\t\t\tbreak\n\n\t\t\tcase 'STORE_EXISTS':\n\t\t\t\tmessage = 'A Store exists just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'NOT_LOGGED_IN':\n\t\t\t\tmessage = 'You have to be logged in to do that!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_NOT_FOUND':\n\t\t\t\tmessage = options.friendlyMessage ?? `I couldn't find that skill!`\n\t\t\t\tbreak\n\n\t\t\tcase 'NO_SKILLS_REGISTERED':\n\t\t\t\tmessage = `Whoa! Looks like you haven't registered your skill yet! Try \\`spruce register\\` to get that done!`\n\t\t\t\tbreak\n\n\t\t\tcase 'COMMAND_BLOCKED':\n\t\t\t\tmessage = `${options.command} is blocked! ${options.hint}`\n\t\t\t\tbreak\n\n\t\t\tcase 'SKILL_VIEW_EXISTS':\n\t\t\t\tmessage = `A skill view controller already exists named ${options.name}!`\n\t\t\t\tbreak\n\n\t\t\tcase 'THEME_EXISTS':\n\t\t\t\tmessage = `Yikes! You can't create a new theme. One per skill for now.`\n\t\t\t\tbreak\n\n\t\t\tcase 'CACHE_NOT_ENABLED':\n\t\t\t\tmessage = \"Cache is not enabled, so it can't be disabled!\"\n\t\t\t\tbreak\n\n\t\t\tcase 'DOCKER_NOT_STARTED':\n\t\t\t\tmessage = 'Docker has not been started! Start it and try again!'\n\t\t\t\tbreak\n\n\t\t\tcase 'SCHEMA_TEMPLATE_ITEM_BUILDING_FAILED':\n\t\t\t\tmessage = `Failed to build schema template item for '${namesUtil.toPascal(\n\t\t\t\t\toptions.schemaNamespace\n\t\t\t\t)}.${options.schemaId}'. The field I had an issue on was '${\n\t\t\t\t\toptions.fieldName\n\t\t\t\t}'. It's options are:\\n\\n${JSON.stringify(\n\t\t\t\t\toptions.fieldOptions\n\t\t\t\t)}.\\n\\nChances are you have a circular reference in your schemas. You'll need to extract shared fields to a new file and have your schemas mix those in, vs referencing eath other.`\n\t\t\t\tbreak\n\n\t\t\tcase 'ACTION_CANCELLED':\n\t\t\t\tmessage = 'A Action cancelled just happened!'\n\t\t\t\tbreak\n\n\t\t\tcase 'TRANSPORT_ALREADY_EXISTS':\n\t\t\t\tmessage = `A transport named '${options.name}' already exists!`\n\t\t\t\tbreak\n\n\t\t\tcase 'DEPENDENCY_EXISTS':\n\t\t\t\tmessage = `You already have ${options.namespace} as a dependency!`\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tmessage = super.friendlyMessage()\n\t\t}\n\n\t\treturn message\n\t}\n\n\tprivate cleanStdErr(stderr: string) {\n\t\treturn stderr.replace('warning package.json: No license field', '').trim()\n\t}\n}\n"],"file":"SpruceError.js"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _schema = require("@sprucelabs/schema");
|
|
9
|
+
|
|
10
|
+
var _default = (0, _schema.buildErrorSchema)({
|
|
11
|
+
id: 'dependencyExists',
|
|
12
|
+
name: 'Dependency exists',
|
|
13
|
+
fields: {
|
|
14
|
+
namespace: {
|
|
15
|
+
type: 'text',
|
|
16
|
+
isRequired: true
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
exports["default"] = _default;
|
|
22
|
+
//# sourceMappingURL=dependencyExists.builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/errors/dependencyExists.builder.ts"],"names":["id","name","fields","namespace","type","isRequired"],"mappings":";;;;;;;AAAA;;eAEe,8BAAiB;AAC/BA,EAAAA,EAAE,EAAE,kBAD2B;AAE/BC,EAAAA,IAAI,EAAE,mBAFyB;AAG/BC,EAAAA,MAAM,EAAE;AACPC,IAAAA,SAAS,EAAE;AACVC,MAAAA,IAAI,EAAE,MADI;AAEVC,MAAAA,UAAU,EAAE;AAFF;AADJ;AAHuB,CAAjB,C","sourcesContent":["import { buildErrorSchema } from '@sprucelabs/schema'\n\nexport default buildErrorSchema({\n\tid: 'dependencyExists',\n\tname: 'Dependency exists',\n\tfields: {\n\t\tnamespace: {\n\t\t\ttype: 'text',\n\t\t\tisRequired: true,\n\t\t},\n\t},\n})\n"],"file":"dependencyExists.builder.js"}
|
|
@@ -158,7 +158,7 @@ var AbstractAction = /*#__PURE__*/function () {
|
|
|
158
158
|
while (1) {
|
|
159
159
|
switch (_context2.prev = _context2.next) {
|
|
160
160
|
case 0:
|
|
161
|
-
versions = _spruceSkillUtils.
|
|
161
|
+
versions = _spruceSkillUtils.versionUtil.getAllVersions(resolvedDestination);
|
|
162
162
|
todaysVersion = _spruceSkillUtils.versionUtil.generateVersion();
|
|
163
163
|
version = fallbackVersion;
|
|
164
164
|
alreadyHasToday = !!versions.find(function (version) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/features/AbstractAction.ts"],"names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizeUtil","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","
|
|
1
|
+
{"version":3,"sources":["../../src/features/AbstractAction.ts"],"names":["AbstractAction","options","cwd","templates","parent","storeFactory","serviceFactory","featureInstaller","ui","writerFactory","apiClientFactory","emitter","actionExecuter","featureCode","actionCode","Action","type","Service","code","Store","Writer","fileDescriptions","linter","getFeature","getAllCodes","schema","optionsSchema","validateAndNormalizeUtil","validateAndNormalize","userSuppliedVersion","resolvedDestination","resolvedVersion","versionUtil","generateVersion","undefined","constValue","askForVersionIfTodaysVersionDoesNotExist","assertValidVersion","dirValue","fallbackVersion","versions","getAllVersions","todaysVersion","version","alreadyHasToday","find","choices","push","label","value","sort","a","b","intValue","map","length","prompt","hint","isRequired"],"mappings":"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","sourcesContent":["import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { Templates } from '@sprucelabs/spruce-templates'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport StoreFactory, {\n\tStoreCode,\n\tStoreFactoryMethodOptions,\n\tStoreMap,\n} from '../stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { WriterOptions } from '../writers/AbstractWriter'\nimport WriterFactory, { WriterCode, WriterMap } from '../writers/WriterFactory'\nimport AbstractFeature from './AbstractFeature'\nimport ActionExecuter from './ActionExecuter'\nimport FeatureInstaller from './FeatureInstaller'\nimport {\n\tFeatureAction,\n\tFeatureActionResponse,\n\tActionOptions,\n\tFeatureCode,\n} from './features.types'\nimport validateAndNormalizeUtil from './validateAndNormalize.utility'\n\nexport default abstract class AbstractAction<S extends Schema = Schema>\n\timplements FeatureAction<S>, ServiceProvider\n{\n\tpublic abstract optionsSchema: S\n\tpublic readonly commandAliases: string[] = []\n\tpublic abstract invocationMessage: string\n\n\tprotected parent: AbstractFeature\n\tprotected featureInstaller: FeatureInstaller\n\tprotected cwd: string\n\tprotected templates: Templates\n\tprotected ui: GraphicsInterface\n\tprotected emitter: GlobalEmitter\n\n\tprivate serviceFactory: ServiceFactory\n\tprivate storeFactory: StoreFactory\n\tprivate writerFactory: WriterFactory\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate actionExecuter: ActionExecuter\n\n\tpublic constructor(options: ActionOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.templates = options.templates\n\t\tthis.parent = options.parent\n\t\tthis.storeFactory = options.storeFactory\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.featureInstaller = options.featureInstaller\n\t\tthis.ui = options.ui\n\t\tthis.writerFactory = options.writerFactory\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\n\t\tthis.actionExecuter = options.actionExecuter\n\t}\n\n\tpublic abstract execute(\n\t\toptions: SchemaValues<S>\n\t): Promise<FeatureActionResponse>\n\n\tprotected Action(featureCode: string, actionCode: string) {\n\t\treturn this.actionExecuter.Action(featureCode as any, actionCode)\n\t}\n\n\tpublic Service<S extends Service>(type: S, cwd?: string): ServiceMap[S] {\n\t\treturn this.serviceFactory.Service(cwd ?? this.cwd, type)\n\t}\n\n\tprotected Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\treturn this.storeFactory.Store(code, { cwd: this.cwd, ...options })\n\t}\n\n\tprotected Writer<C extends WriterCode>(\n\t\tcode: C,\n\t\toptions?: Partial<WriterOptions>\n\t): WriterMap[C] {\n\t\treturn this.writerFactory.Writer(code, {\n\t\t\tfileDescriptions: this.parent.fileDescriptions,\n\t\t\tlinter: this.Service('lint'),\n\t\t\t...options,\n\t\t})\n\t}\n\n\tprotected getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tprotected getFeatureCodes(): FeatureCode[] {\n\t\treturn this.featureInstaller.getAllCodes()\n\t}\n\n\tprotected validateAndNormalizeOptions(options: SchemaPartialValues<S>) {\n\t\tconst schema = this.optionsSchema\n\t\treturn validateAndNormalizeUtil.validateAndNormalize(schema, options)\n\t}\n\n\tprotected async resolveVersion(\n\t\tuserSuppliedVersion: string | null | undefined,\n\t\tresolvedDestination: string\n\t) {\n\t\tlet resolvedVersion = versionUtil.generateVersion(\n\t\t\tuserSuppliedVersion ?? undefined\n\t\t).constValue\n\n\t\tif (!userSuppliedVersion) {\n\t\t\tresolvedVersion = await this.askForVersionIfTodaysVersionDoesNotExist(\n\t\t\t\tresolvedDestination,\n\t\t\t\tresolvedVersion\n\t\t\t)\n\t\t}\n\t\tversionUtil.assertValidVersion(resolvedVersion)\n\n\t\treturn versionUtil.generateVersion(resolvedVersion).dirValue\n\t}\n\n\tprivate async askForVersionIfTodaysVersionDoesNotExist(\n\t\tresolvedDestination: string,\n\t\tfallbackVersion: string\n\t) {\n\t\tconst versions = versionUtil.getAllVersions(resolvedDestination)\n\t\tconst todaysVersion = versionUtil.generateVersion()\n\n\t\tlet version = fallbackVersion\n\t\tconst alreadyHasToday = !!versions.find(\n\t\t\t(version) => version.dirValue === todaysVersion.dirValue\n\t\t)\n\t\tconst choices = []\n\n\t\tif (!alreadyHasToday) {\n\t\t\tchoices.push({\n\t\t\t\tlabel: 'New Version',\n\t\t\t\tvalue: todaysVersion.dirValue,\n\t\t\t})\n\t\t}\n\n\t\tchoices.push(\n\t\t\t...versions\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.intValue > b.intValue ? -1 : 1\n\t\t\t\t})\n\t\t\t\t.map((version) => ({\n\t\t\t\t\tvalue: version.dirValue,\n\t\t\t\t\tlabel: version.dirValue,\n\t\t\t\t}))\n\t\t)\n\n\t\tif (versions.length > 0) {\n\t\t\tversion = await this.ui.prompt({\n\t\t\t\ttype: 'select',\n\t\t\t\tlabel: 'Version',\n\t\t\t\thint: 'Confirm which version you want to use?',\n\t\t\t\tisRequired: true,\n\t\t\t\toptions: {\n\t\t\t\t\tchoices,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn version\n\t}\n\n\tprotected async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n"],"file":"AbstractAction.js"}
|
|
@@ -72,7 +72,7 @@ var DeployAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
72
72
|
key: "execute",
|
|
73
73
|
value: function () {
|
|
74
74
|
var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(options) {
|
|
75
|
-
var _this$validateAndNorm, namespace, skills, skill;
|
|
75
|
+
var _this$validateAndNorm, namespace, skills, dependencyService, dependencies, choices, skill;
|
|
76
76
|
|
|
77
77
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
78
78
|
while (1) {
|
|
@@ -84,37 +84,44 @@ var DeployAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
84
84
|
|
|
85
85
|
case 3:
|
|
86
86
|
skills = _context.sent;
|
|
87
|
+
dependencyService = this.Service('dependency');
|
|
87
88
|
|
|
88
89
|
if (namespace) {
|
|
89
|
-
_context.next =
|
|
90
|
+
_context.next = 11;
|
|
90
91
|
break;
|
|
91
92
|
}
|
|
92
93
|
|
|
93
|
-
|
|
94
|
+
dependencies = dependencyService.get().map(function (d) {
|
|
95
|
+
return d.namespace;
|
|
96
|
+
});
|
|
97
|
+
choices = skills.filter(function (s) {
|
|
98
|
+
return dependencies.indexOf(s.slug) === -1;
|
|
99
|
+
}).map(function (s) {
|
|
100
|
+
return {
|
|
101
|
+
value: s.slug,
|
|
102
|
+
label: s.name
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
_context.next = 10;
|
|
94
106
|
return this.ui.prompt({
|
|
95
107
|
type: 'select',
|
|
96
108
|
label: 'Which skill would you like to add as a dependency?',
|
|
97
109
|
isRequired: true,
|
|
98
110
|
options: {
|
|
99
|
-
choices:
|
|
100
|
-
return {
|
|
101
|
-
value: s.slug,
|
|
102
|
-
label: s.name
|
|
103
|
-
};
|
|
104
|
-
})
|
|
111
|
+
choices: choices
|
|
105
112
|
}
|
|
106
113
|
});
|
|
107
114
|
|
|
108
|
-
case
|
|
115
|
+
case 10:
|
|
109
116
|
namespace = _context.sent;
|
|
110
117
|
|
|
111
|
-
case
|
|
118
|
+
case 11:
|
|
112
119
|
skill = skills.find(function (s) {
|
|
113
120
|
return s.slug === namespace;
|
|
114
121
|
});
|
|
115
122
|
|
|
116
123
|
if (skill) {
|
|
117
|
-
_context.next =
|
|
124
|
+
_context.next = 14;
|
|
118
125
|
break;
|
|
119
126
|
}
|
|
120
127
|
|
|
@@ -123,8 +130,8 @@ var DeployAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
123
130
|
friendlyMessage: "I could not find a skill with the slug of ".concat(namespace, ".")
|
|
124
131
|
});
|
|
125
132
|
|
|
126
|
-
case
|
|
127
|
-
|
|
133
|
+
case 14:
|
|
134
|
+
dependencyService.add({
|
|
128
135
|
id: skill.id,
|
|
129
136
|
namespace: skill.slug
|
|
130
137
|
});
|
|
@@ -132,7 +139,7 @@ var DeployAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
132
139
|
summaryLines: ["Added \"".concat(skill.name, "\" as a dependency!")]
|
|
133
140
|
});
|
|
134
141
|
|
|
135
|
-
case
|
|
142
|
+
case 16:
|
|
136
143
|
case "end":
|
|
137
144
|
return _context.stop();
|
|
138
145
|
}
|