@sprucelabs/spruce-cli 18.0.0 → 18.1.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 +10 -0
- package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js +1 -1
- package/build/__tests__/behavioral/EnablingAndDisablingCache.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/SettingUpSchemasForModuleDistribution.test.js +4 -4
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
- package/build/__tests__/behavioral/WatchingSkillViews.test.js +3 -3
- package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
- package/build/__tests__/behavioral/errors/SettingUpErrors.test.js +1 -1
- package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +2 -0
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +118 -59
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/EverythingInstalledInstaller.d.ts +17 -0
- package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js +137 -0
- package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js.map +1 -0
- package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js +46 -45
- package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/CreatingATest.test.js +1 -1
- package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +4 -4
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js +2 -2
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +2 -2
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js +2 -2
- package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
- package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js +2 -2
- package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js +1 -1
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingATheme.test.js +1 -1
- package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
- package/build/__tests__/behavioral/watchers/WatchingForChanges.test.d.ts +3 -3
- package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js +153 -156
- package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter.test.js +2 -2
- package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter4.test.js +1 -1
- package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
- package/build/__tests__/implementation/FeatureInstaller.test.js +8 -4
- package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
- package/build/__tests__/implementation/GlobalEmitter.d.ts +1 -1
- package/build/__tests__/implementation/GlobalEmitter.js +9 -10
- package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
- package/build/__tests__/implementation/SettingUpANodeModule.test.js +1 -1
- package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
- package/build/__tests__/implementation/SkillStore.test.d.ts +3 -1
- package/build/__tests__/implementation/SkillStore.test.js +67 -50
- package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
- package/build/__tests__/implementation/StoreFeature.test.js +1 -1
- package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
- package/build/cli.js +3 -3
- package/build/cli.js.map +1 -1
- package/build/features/AbstractAction.d.ts +2 -2
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/AbstractFeature.d.ts +22 -22
- package/build/features/AbstractFeature.js.map +1 -1
- package/build/features/ActionExecuter.d.ts +8 -8
- package/build/features/ActionExecuter.js.map +1 -1
- package/build/features/FeatureInstaller.d.ts +15 -2
- package/build/features/FeatureInstaller.js +36 -36
- package/build/features/FeatureInstaller.js.map +1 -1
- package/build/features/FeatureInstallerFactory.d.ts +12 -10
- package/build/features/FeatureInstallerFactory.js +2 -2
- package/build/features/FeatureInstallerFactory.js.map +1 -1
- package/build/features/OverrideActionDecorator.js +4 -5
- package/build/features/OverrideActionDecorator.js.map +1 -1
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/actions/SetRemoteAction.d.ts +1 -0
- package/build/features/event/actions/SetRemoteAction.js +2 -1
- package/build/features/event/actions/SetRemoteAction.js.map +1 -1
- package/build/features/event/actions/SyncListenersAction.js.map +1 -1
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/skill/SkillFeature.js.map +1 -1
- package/build/features/skill/stores/SkillStore.d.ts +4 -1
- package/build/features/skill/stores/SkillStore.js +127 -100
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/watch/WatchFeature.js +1 -1
- package/build/features/watch/WatchFeature.js.map +1 -1
- package/build/interfaces/SpyInterface.d.ts +2 -0
- package/build/interfaces/SpyInterface.js +16 -4
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/stores/AbstractStore.d.ts +9 -7
- package/build/stores/AbstractStore.js.map +1 -1
- package/build/stores/StoreFactory.d.ts +19 -13
- package/build/stores/StoreFactory.js +15 -13
- package/build/stores/StoreFactory.js.map +1 -1
- package/build/tests/AbstractCliTest.d.ts +9 -6
- package/build/tests/AbstractCliTest.js +53 -45
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/AbstractSchemaTest.js +18 -20
- package/build/tests/AbstractSchemaTest.js.map +1 -1
- package/build/utilities/action.utility.js +3 -1
- package/build/utilities/action.utility.js.map +1 -1
- package/node_modules/@typescript-eslint/parser/package.json +5 -5
- package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
- package/node_modules/@typescript-eslint/types/package.json +2 -2
- package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
- package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
- package/package.json +32 -90
- package/src/__tests__/behavioral/EnablingAndDisablingCache.test.ts +1 -1
- package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
- package/src/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.ts +4 -4
- package/src/__tests__/behavioral/WatchingSkillViews.test.ts +3 -3
- package/src/__tests__/behavioral/errors/SettingUpErrors.test.ts +1 -1
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +41 -14
- package/src/__tests__/behavioral/events/EverythingInstalledInstaller.ts +46 -0
- package/src/__tests__/behavioral/onboard/StartingOnboarding.test.ts +10 -5
- package/src/__tests__/behavioral/tests/CreatingATest.test.ts +1 -1
- package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +4 -4
- package/src/__tests__/behavioral/upgrading/UpdatingDependencies2.test.ts +2 -2
- package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +2 -2
- package/src/__tests__/behavioral/upgrading/UpgradingASkill5.test.ts +2 -2
- package/src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts +2 -2
- package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +1 -1
- package/src/__tests__/behavioral/views/CreatingATheme.test.ts +1 -1
- package/src/__tests__/behavioral/watchers/WatchingForChanges.test.ts +35 -35
- package/src/__tests__/implementation/ActionExecuter.test.ts +2 -2
- package/src/__tests__/implementation/ActionExecuter2.test.ts +1 -1
- package/src/__tests__/implementation/ActionExecuter4.test.ts +1 -1
- package/src/__tests__/implementation/FeatureInstaller.test.ts +8 -1
- package/src/__tests__/implementation/GlobalEmitter.ts +2 -4
- package/src/__tests__/implementation/SettingUpANodeModule.test.ts +1 -1
- package/src/__tests__/implementation/SkillStore.test.ts +23 -24
- package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
- package/src/cli.ts +7 -3
- package/src/features/AbstractAction.ts +3 -3
- package/src/features/AbstractFeature.ts +26 -26
- package/src/features/ActionExecuter.ts +9 -9
- package/src/features/FeatureInstaller.ts +32 -12
- package/src/features/FeatureInstallerFactory.ts +17 -13
- package/src/features/OverrideActionDecorator.ts +2 -5
- package/src/features/event/actions/ListenAction.ts +1 -0
- package/src/features/event/actions/SetRemoteAction.ts +2 -1
- package/src/features/event/actions/SyncListenersAction.ts +0 -1
- package/src/features/node/NodeFeature.ts +3 -1
- package/src/features/skill/SkillFeature.ts +3 -3
- package/src/features/skill/stores/SkillStore.ts +18 -11
- package/src/features/watch/WatchFeature.ts +1 -1
- package/src/interfaces/SpyInterface.ts +10 -0
- package/src/stores/AbstractStore.ts +14 -8
- package/src/stores/StoreFactory.ts +56 -44
- package/src/tests/AbstractCliTest.ts +53 -45
- package/src/tests/AbstractSchemaTest.ts +1 -3
- package/src/utilities/action.utility.ts +3 -1
- package/.DS_Store +0 -0
- package/.env +0 -25
- package/.eslintcache +0 -1
- package/build/.spruce/tmp/cached-skills.json +0 -3
- package/junit.xml +0 -7
- package/src/.DS_Store +0 -0
- package/src/.spruce/tmp/cached-skills.json +0 -3
- package/yarn-error.log +0 -12174
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpyInterface.js","names":["SpyInterface","x","y","startTime","Date","getTime","term","shouldRenderTestLogs","TerminalInterface","process","cwd","strs","optionallyRenderLine","join","undefined","env","SHOULD_RENDER_TEST_LOGS","message","effects","trackInvocation","renderWarning","renderHint","command","options","invocations","push","promptResolver","confirmResolver","waitForEnterResolver","clearTimeout","promptTimeout","length","input","resolver","promptDefaultValue","toLowerCase","Error","Promise","resolve","setTimeout","renderSection","obj","renderObject","err","renderError","code","renderCodeSample","results","renderActionSummary","renderHero","dividerEffects","renderHeadline","renderDivider","duration","friendly","durationUtil","msToFriendly","testLog","info","global","activeTest","test","path","messages","renderLines","definition","msg","namesUtil","toPascal","type","label","choices","forEach","choice","value","reject","reset","assert","fail","defaultValue","ttl","checkInterval","loops","lastWriteCount","isWaitingForInput","hasWritten","testUtil","log","question","title","cursorPosition","pos"],"sources":["../../src/interfaces/SpyInterface.ts"],"sourcesContent":["import { FieldDefinitionValueType } from '@sprucelabs/schema'\nimport { namesUtil, testLog } from '@sprucelabs/spruce-skill-utils'\nimport { assert } from '@sprucelabs/test-utils'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport testUtil from '../tests/utilities/test.utility'\nimport { ExecutionResults } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n\tImageDimensions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport TerminalInterface from './TerminalInterface'\n\nexport default class SpyInterface implements GraphicsInterface {\n\tpublic invocations: { command: string; options?: any }[] = []\n\tprivate cursorPosition = { x: 0, y: 0 }\n\n\tprivate promptResolver?: (\n\t\tinput: FieldDefinitionValueType<FieldDefinitions>\n\t) => void | undefined\n\n\tprivate confirmResolver?: (pass: boolean) => void | undefined\n\tprivate waitForEnterResolver?: () => void | undefined\n\tprivate promptDefaultValue: any\n\tprivate term?: TerminalInterface\n\tprivate startTime: number\n\tprivate promptTimeout?: any\n\n\tpublic constructor() {\n\t\tthis.startTime = new Date().getTime()\n\n\t\tthis.term = this.shouldRenderTestLogs()\n\t\t\t? new TerminalInterface(process.cwd(), true, (...strs: []) => {\n\t\t\t\t\tthis.optionallyRenderLine(strs.join(' '))\n\t\t\t })\n\t\t\t: undefined\n\t}\n\n\tprivate shouldRenderTestLogs() {\n\t\treturn process.env.SHOULD_RENDER_TEST_LOGS === 'true'\n\t}\n\n\tpublic renderWarning(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderWarning', { message, effects })\n\t\tthis.term?.renderWarning(message)\n\t}\n\n\tpublic renderHint(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHint', { message, effects })\n\t\tthis.optionallyRenderLine(`Hint: ${message}`)\n\t\tthis.term?.renderHint(message)\n\t}\n\n\tprivate trackInvocation(command: string, options?: any) {\n\t\t// testUtil.log(command, JSON.stringify(options), '\\n')\n\t\tthis.invocations.push({ command, options })\n\t}\n\n\tpublic isWaitingForInput() {\n\t\treturn !!(\n\t\t\tthis.promptResolver ||\n\t\t\tthis.confirmResolver ||\n\t\t\tthis.waitForEnterResolver\n\t\t)\n\t}\n\n\tpublic reset() {\n\t\tthis.promptResolver = undefined\n\t\tthis.confirmResolver = undefined\n\t\tthis.waitForEnterResolver = undefined\n\t\tclearTimeout(this.promptTimeout)\n\t}\n\n\tpublic getLastInvocation() {\n\t\treturn this.invocations[this.invocations.length - 1]\n\t}\n\n\tpublic async sendInput(input: string | string[]): Promise<void> {\n\t\tthis.trackInvocation('sendInput', input)\n\n\t\tthis.optionallyRenderLine(\n\t\t\t`Sending input: \"${input.length > 0 ? input : 'ENTER'}\"`\n\t\t)\n\n\t\tif (this.waitForEnterResolver) {\n\t\t\tconst resolver = this.waitForEnterResolver\n\t\t\tthis.waitForEnterResolver = undefined\n\n\t\t\tresolver()\n\t\t} else if (this.promptResolver) {\n\t\t\tconst resolver = this.promptResolver\n\t\t\tthis.promptResolver = undefined\n\n\t\t\tresolver(input !== '\\n' && input !== '' ? input : this.promptDefaultValue)\n\t\t} else if (this.confirmResolver) {\n\t\t\tconst resolver = this.confirmResolver\n\t\t\tthis.confirmResolver = undefined\n\n\t\t\tresolver(\n\t\t\t\tinput === '\\n' ||\n\t\t\t\t\tinput.length === 0 ||\n\t\t\t\t\t(typeof input === 'string' && input.toLowerCase() === 'y')\n\t\t\t)\n\t\t} else {\n\t\t\tthrow new Error('Sent input before prompted for input')\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, 50)\n\t\t})\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline: string\n\t\tlines?: string[] | string[]\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tobject?: any\n\t}): void {\n\t\tthis.trackInvocation('renderSection', options)\n\t\tthis.term?.renderSection(options)\n\t}\n\n\tpublic renderObject(obj: any): void {\n\t\tthis.trackInvocation('renderObject', obj)\n\t\tthis.term?.renderObject(obj)\n\t}\n\n\tpublic renderError(err: Error): void {\n\t\tthis.trackInvocation('renderError', err)\n\t\tthis.term?.renderError(err)\n\t}\n\n\tpublic renderCodeSample(code: string): void {\n\t\tthis.trackInvocation('renderCodeSample', code)\n\t\tthis.term?.renderCodeSample(code)\n\t}\n\n\tpublic renderActionSummary(results: ExecutionResults): void {\n\t\tthis.trackInvocation('renderCommandSummary', results)\n\t\tthis.term?.renderActionSummary(results)\n\t}\n\n\tpublic renderHero(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHero', { message, effects })\n\t\tthis.term?.renderHero(message, effects)\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[],\n\t\tdividerEffects: GraphicsTextEffect[]\n\t): void {\n\t\tthis.trackInvocation('renderHeadline', { message, effects, dividerEffects })\n\t\tthis.term?.renderHeadline(message, effects, dividerEffects)\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[] | undefined): void {\n\t\tthis.trackInvocation('renderDivider', effects)\n\t\tthis.term?.renderDivider(effects)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLine', { message, effects })\n\t\tmessage && message.length > 0 && this.optionallyRenderLine(message)\n\t}\n\n\tprivate optionallyRenderLine(message: string) {\n\t\tif (this.shouldRenderTestLogs()) {\n\t\t\tconst duration = new Date().getTime() - this.startTime\n\t\t\tconst friendly = durationUtil.msToFriendly(duration)\n\n\t\t\ttestLog.info(\n\t\t\t\t`${\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tglobal.activeTest?.test ? global.activeTest?.test + ' :: ' : ''\n\t\t\t\t}${friendly} :: ${message}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tthis.trackInvocation('renderImage', { path, options })\n\t}\n\n\tpublic renderLines(\n\t\tmessages: string[],\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLines', { messages, effects })\n\t\tthis.term?.renderLines(messages, effects)\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(definition: T) {\n\t\tthis.trackInvocation('prompt', definition)\n\n\t\tif (this.promptResolver) {\n\t\t\tthrow new Error(\n\t\t\t\t'Tried to double prompt. Try this.term?.sendInput() before calling prompt next.'\n\t\t\t)\n\t\t}\n\n\t\tlet msg = `${namesUtil.toPascal(definition.type)} Prompt: ${\n\t\t\tdefinition.label\n\t\t}`\n\n\t\tif (definition.type === 'select') {\n\t\t\tmsg += '\\n\\nChoices:\\n'\n\t\t\tdefinition.options.choices.forEach((choice) => {\n\t\t\t\tmsg += `\\n${choice.value}: ${choice.label}`\n\t\t\t})\n\n\t\t\tmsg += '\\n'\n\t\t}\n\n\t\tthis.optionallyRenderLine(msg)\n\n\t\treturn new Promise<FieldDefinitionValueType<FieldDefinitions>>(\n\t\t\t(resolve, reject) => {\n\t\t\t\tthis.promptResolver = (...args: any[]) => {\n\t\t\t\t\tclearTimeout(this.promptTimeout)\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tresolve(...args)\n\t\t\t\t}\n\t\t\t\tthis.promptTimeout = setTimeout(() => {\n\t\t\t\t\tthis.reset()\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t`Timed out waiting for input with label: '${definition.label}'\\n\\nConsider passing what you need to Action().execute({ something })`\n\t\t\t\t\t\t)\n\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t}\n\t\t\t\t}, 10000)\n\t\t\t\tthis.promptDefaultValue = definition.defaultValue\n\t\t\t}\n\t\t)\n\t}\n\n\tpublic startLoading(message?: string | undefined): void {\n\t\tthis.trackInvocation('startLoading', message)\n\t\tthis.optionallyRenderLine(message ? `${message}` : 'Start loading...')\n\t}\n\n\tpublic stopLoading(): void {\n\t\tthis.trackInvocation('stopLoading')\n\t\tthis.optionallyRenderLine('Stop loading...')\n\t}\n\n\tpublic async waitForEnter(message?: string | undefined): Promise<void> {\n\t\tthis.trackInvocation('waitForEnter', message)\n\t\tthis.optionallyRenderLine(\n\t\t\t`${message ? ` ${message}\\n\\n` : ``}Waiting for enter...`\n\t\t)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.waitForEnterResolver = resolve\n\t\t})\n\t}\n\n\tpublic async waitForInput() {\n\t\tconst ttl = 1000 * 60 * 5\n\t\tconst checkInterval = 100\n\t\tlet loops = ttl / checkInterval\n\t\tlet lastWriteCount = this.invocations.length\n\n\t\twhile (!this.isWaitingForInput()) {\n\t\t\tif (loops-- === 0) {\n\t\t\t\tassert.fail(`Waiting for input timed out.`)\n\t\t\t}\n\n\t\t\tconst hasWritten = lastWriteCount != this.invocations.length\n\n\t\t\tif (hasWritten) {\n\t\t\t\tloops = ttl / checkInterval\n\t\t\t\tlastWriteCount = this.invocations.length\n\t\t\t\tif (this.shouldRenderTestLogs()) {\n\t\t\t\t\ttestUtil.log('waitForInput timeout reset because of new output.')\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, checkInterval))\n\t\t}\n\t}\n\n\tpublic confirm(question: string): Promise<boolean> {\n\t\tthis.trackInvocation('confirm', question)\n\t\tthis.optionallyRenderLine(`${question} :: Y/N...`)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.confirmResolver = resolve\n\t\t})\n\t}\n\n\tpublic clear(): void {\n\t\tthis.trackInvocation('clear')\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.trackInvocation('renderProgressBar', options)\n\t\tthis.optionallyRenderLine(\n\t\t\t`Showing progress${options.title ? ` ${options.title}` : ``}`\n\t\t)\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tthis.trackInvocation('updateProgressBar', options)\n\t}\n\n\tpublic removeProgressBar(): void {\n\t\tthis.trackInvocation('removeProgressBar')\n\t\tthis.optionallyRenderLine(`Hiding progress`)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\tthis.trackInvocation('getCursorPosition')\n\t\treturn this.cursorPosition\n\t}\n\n\tpublic setCursorPosition(pos: { x: number; y: number }) {\n\t\tthis.cursorPosition = pos\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tthis.trackInvocation('moveCursorTo', { x, y })\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tthis.trackInvocation('clearBelowCursor')\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SpyInterface.js","names":["SpyInterface","x","y","startTime","Date","getTime","term","shouldRenderTestLogs","TerminalInterface","process","cwd","strs","optionallyRenderLine","join","undefined","env","SHOULD_RENDER_TEST_LOGS","message","effects","trackInvocation","renderWarning","renderHint","command","options","invocations","push","promptResolver","confirmResolver","waitForEnterResolver","clearTimeout","promptTimeout","err","error","length","input","resolver","promptDefaultValue","toLowerCase","Error","Promise","resolve","setTimeout","renderSection","obj","renderObject","renderError","code","renderCodeSample","results","renderActionSummary","renderHero","dividerEffects","renderHeadline","renderDivider","duration","friendly","durationUtil","msToFriendly","testLog","info","global","activeTest","test","path","messages","renderLines","definition","msg","namesUtil","toPascal","type","label","choices","forEach","choice","value","reject","reset","assert","fail","defaultValue","ttl","checkInterval","loops","lastWriteCount","isWaitingForInput","hasWritten","testUtil","log","question","title","cursorPosition","pos"],"sources":["../../src/interfaces/SpyInterface.ts"],"sourcesContent":["import { FieldDefinitionValueType } from '@sprucelabs/schema'\nimport { namesUtil, testLog } from '@sprucelabs/spruce-skill-utils'\nimport { assert } from '@sprucelabs/test-utils'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport testUtil from '../tests/utilities/test.utility'\nimport { ExecutionResults } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n\tImageDimensions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport TerminalInterface from './TerminalInterface'\n\nexport default class SpyInterface implements GraphicsInterface {\n\tpublic invocations: { command: string; options?: any }[] = []\n\tprivate cursorPosition = { x: 0, y: 0 }\n\n\tprivate promptResolver?: (\n\t\tinput: FieldDefinitionValueType<FieldDefinitions>\n\t) => void | undefined\n\n\tprivate confirmResolver?: (pass: boolean) => void | undefined\n\tprivate waitForEnterResolver?: () => void | undefined\n\tprivate promptDefaultValue: any\n\tprivate term?: TerminalInterface\n\tprivate startTime: number\n\tprivate promptTimeout?: any\n\tprivate error?: Error\n\n\tpublic constructor() {\n\t\tthis.startTime = new Date().getTime()\n\n\t\tthis.term = this.shouldRenderTestLogs()\n\t\t\t? new TerminalInterface(process.cwd(), true, (...strs: []) => {\n\t\t\t\t\tthis.optionallyRenderLine(strs.join(' '))\n\t\t\t })\n\t\t\t: undefined\n\t}\n\n\tprivate shouldRenderTestLogs() {\n\t\treturn process.env.SHOULD_RENDER_TEST_LOGS === 'true'\n\t}\n\n\tpublic renderWarning(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderWarning', { message, effects })\n\t\tthis.term?.renderWarning(message)\n\t}\n\n\tpublic renderHint(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHint', { message, effects })\n\t\tthis.optionallyRenderLine(`Hint: ${message}`)\n\t\tthis.term?.renderHint(message)\n\t}\n\n\tprivate trackInvocation(command: string, options?: any) {\n\t\t// testUtil.log(command, JSON.stringify(options), '\\n')\n\t\tthis.invocations.push({ command, options })\n\t}\n\n\tpublic isWaitingForInput() {\n\t\treturn !!(\n\t\t\tthis.promptResolver ||\n\t\t\tthis.confirmResolver ||\n\t\t\tthis.waitForEnterResolver\n\t\t)\n\t}\n\n\tpublic reset() {\n\t\tthis.promptResolver = undefined\n\t\tthis.confirmResolver = undefined\n\t\tthis.waitForEnterResolver = undefined\n\t\tclearTimeout(this.promptTimeout)\n\t}\n\n\tpublic setError(err: Error) {\n\t\tthis.error = err\n\t}\n\n\tpublic getLastInvocation() {\n\t\treturn this.invocations[this.invocations.length - 1]\n\t}\n\n\tpublic async sendInput(input: string | string[]): Promise<void> {\n\t\tthis.trackInvocation('sendInput', input)\n\n\t\tthis.optionallyRenderLine(\n\t\t\t`Sending input: \"${input.length > 0 ? input : 'ENTER'}\"`\n\t\t)\n\n\t\tif (this.waitForEnterResolver) {\n\t\t\tconst resolver = this.waitForEnterResolver\n\t\t\tthis.waitForEnterResolver = undefined\n\n\t\t\tresolver()\n\t\t} else if (this.promptResolver) {\n\t\t\tconst resolver = this.promptResolver\n\t\t\tthis.promptResolver = undefined\n\n\t\t\tresolver(input !== '\\n' && input !== '' ? input : this.promptDefaultValue)\n\t\t} else if (this.confirmResolver) {\n\t\t\tconst resolver = this.confirmResolver\n\t\t\tthis.confirmResolver = undefined\n\n\t\t\tresolver(\n\t\t\t\tinput === '\\n' ||\n\t\t\t\t\tinput.length === 0 ||\n\t\t\t\t\t(typeof input === 'string' && input.toLowerCase() === 'y')\n\t\t\t)\n\t\t} else {\n\t\t\tthrow new Error('Sent input before prompted for input')\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, 50)\n\t\t})\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline: string\n\t\tlines?: string[] | string[]\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tobject?: any\n\t}): void {\n\t\tthis.trackInvocation('renderSection', options)\n\t\tthis.term?.renderSection(options)\n\t}\n\n\tpublic renderObject(obj: any): void {\n\t\tthis.trackInvocation('renderObject', obj)\n\t\tthis.term?.renderObject(obj)\n\t}\n\n\tpublic renderError(err: Error): void {\n\t\tthis.trackInvocation('renderError', err)\n\t\tthis.term?.renderError(err)\n\t}\n\n\tpublic renderCodeSample(code: string): void {\n\t\tthis.trackInvocation('renderCodeSample', code)\n\t\tthis.term?.renderCodeSample(code)\n\t}\n\n\tpublic renderActionSummary(results: ExecutionResults): void {\n\t\tthis.trackInvocation('renderCommandSummary', results)\n\t\tthis.term?.renderActionSummary(results)\n\t}\n\n\tpublic renderHero(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHero', { message, effects })\n\t\tthis.term?.renderHero(message, effects)\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[],\n\t\tdividerEffects: GraphicsTextEffect[]\n\t): void {\n\t\tthis.trackInvocation('renderHeadline', { message, effects, dividerEffects })\n\t\tthis.term?.renderHeadline(message, effects, dividerEffects)\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[] | undefined): void {\n\t\tthis.trackInvocation('renderDivider', effects)\n\t\tthis.term?.renderDivider(effects)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLine', { message, effects })\n\t\tmessage && message.length > 0 && this.optionallyRenderLine(message)\n\t}\n\n\tprivate optionallyRenderLine(message: string) {\n\t\tif (this.shouldRenderTestLogs()) {\n\t\t\tconst duration = new Date().getTime() - this.startTime\n\t\t\tconst friendly = durationUtil.msToFriendly(duration)\n\n\t\t\ttestLog.info(\n\t\t\t\t`${\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tglobal.activeTest?.test ? global.activeTest?.test + ' :: ' : ''\n\t\t\t\t}${friendly} :: ${message}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tthis.trackInvocation('renderImage', { path, options })\n\t}\n\n\tpublic renderLines(\n\t\tmessages: string[],\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLines', { messages, effects })\n\t\tthis.term?.renderLines(messages, effects)\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(definition: T) {\n\t\tthis.trackInvocation('prompt', definition)\n\n\t\tif (this.promptResolver) {\n\t\t\tthrow new Error(\n\t\t\t\t'Tried to double prompt. Try this.term?.sendInput() before calling prompt next.'\n\t\t\t)\n\t\t}\n\n\t\tlet msg = `${namesUtil.toPascal(definition.type)} Prompt: ${\n\t\t\tdefinition.label\n\t\t}`\n\n\t\tif (definition.type === 'select') {\n\t\t\tmsg += '\\n\\nChoices:\\n'\n\t\t\tdefinition.options.choices.forEach((choice) => {\n\t\t\t\tmsg += `\\n${choice.value}: ${choice.label}`\n\t\t\t})\n\n\t\t\tmsg += '\\n'\n\t\t}\n\n\t\tthis.optionallyRenderLine(msg)\n\n\t\treturn new Promise<FieldDefinitionValueType<FieldDefinitions>>(\n\t\t\t(resolve, reject) => {\n\t\t\t\tthis.promptResolver = (...args: any[]) => {\n\t\t\t\t\tclearTimeout(this.promptTimeout)\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tresolve(...args)\n\t\t\t\t}\n\t\t\t\tthis.promptTimeout = setTimeout(() => {\n\t\t\t\t\tthis.reset()\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t`Timed out waiting for input with label: '${definition.label}'\\n\\nConsider passing what you need to Action().execute({ something })`\n\t\t\t\t\t\t)\n\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t}\n\t\t\t\t}, 10000)\n\t\t\t\tthis.promptDefaultValue = definition.defaultValue\n\t\t\t}\n\t\t)\n\t}\n\n\tpublic startLoading(message?: string | undefined): void {\n\t\tthis.trackInvocation('startLoading', message)\n\t\tthis.optionallyRenderLine(message ? `${message}` : 'Start loading...')\n\t}\n\n\tpublic stopLoading(): void {\n\t\tthis.trackInvocation('stopLoading')\n\t\tthis.optionallyRenderLine('Stop loading...')\n\t}\n\n\tpublic async waitForEnter(message?: string | undefined): Promise<void> {\n\t\tthis.trackInvocation('waitForEnter', message)\n\t\tthis.optionallyRenderLine(\n\t\t\t`${message ? ` ${message}\\n\\n` : ``}Waiting for enter...`\n\t\t)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.waitForEnterResolver = resolve\n\t\t})\n\t}\n\n\tpublic async waitForInput() {\n\t\tconst ttl = 1000 * 60 * 5\n\t\tconst checkInterval = 100\n\t\tlet loops = ttl / checkInterval\n\t\tlet lastWriteCount = this.invocations.length\n\n\t\twhile (!this.isWaitingForInput()) {\n\t\t\tif (loops-- === 0) {\n\t\t\t\tassert.fail(`Waiting for input timed out.`)\n\t\t\t}\n\n\t\t\tconst hasWritten = lastWriteCount != this.invocations.length\n\n\t\t\tif (hasWritten) {\n\t\t\t\tloops = ttl / checkInterval\n\t\t\t\tlastWriteCount = this.invocations.length\n\t\t\t\tif (this.shouldRenderTestLogs()) {\n\t\t\t\t\ttestUtil.log('waitForInput timeout reset because of new output.')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.error) {\n\t\t\t\tthrow this.error\n\t\t\t}\n\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, checkInterval))\n\t\t}\n\t}\n\n\tpublic confirm(question: string): Promise<boolean> {\n\t\tthis.trackInvocation('confirm', question)\n\t\tthis.optionallyRenderLine(`${question} :: Y/N...`)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.confirmResolver = resolve\n\t\t})\n\t}\n\n\tpublic clear(): void {\n\t\tthis.trackInvocation('clear')\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.trackInvocation('renderProgressBar', options)\n\t\tthis.optionallyRenderLine(\n\t\t\t`Showing progress${options.title ? ` ${options.title}` : ``}`\n\t\t)\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tthis.trackInvocation('updateProgressBar', options)\n\t}\n\n\tpublic removeProgressBar(): void {\n\t\tthis.trackInvocation('removeProgressBar')\n\t\tthis.optionallyRenderLine(`Hiding progress`)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\tthis.trackInvocation('getCursorPosition')\n\t\treturn this.cursorPosition\n\t}\n\n\tpublic setCursorPosition(pos: { x: number; y: number }) {\n\t\tthis.cursorPosition = pos\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tthis.trackInvocation('moveCursorTo', { x, y })\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tthis.trackInvocation('clearBelowCursor')\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { GlobalEmitter } from '../GlobalEmitter';
|
|
2
2
|
import ServiceFactory, { ServiceProvider, Service, ServiceMap } from '../services/ServiceFactory';
|
|
3
3
|
import { ApiClientFactory, ApiClient, ApiClientFactoryOptions } from '../types/apiClient.types';
|
|
4
|
-
export interface StoreOptions {
|
|
5
|
-
serviceFactory: ServiceFactory;
|
|
6
|
-
cwd: string;
|
|
7
|
-
homeDir: string;
|
|
8
|
-
apiClientFactory: ApiClientFactory;
|
|
9
|
-
emitter: GlobalEmitter;
|
|
10
|
-
}
|
|
11
4
|
export default abstract class AbstractStore implements ServiceProvider {
|
|
12
5
|
protected cwd: string;
|
|
13
6
|
protected homeDir: string;
|
|
@@ -19,3 +12,12 @@ export default abstract class AbstractStore implements ServiceProvider {
|
|
|
19
12
|
Service<S extends Service>(type: S, cwd?: string): ServiceMap[S];
|
|
20
13
|
protected connectToApi(options?: ApiClientFactoryOptions): Promise<ApiClient>;
|
|
21
14
|
}
|
|
15
|
+
interface AbstractStoreOptions {
|
|
16
|
+
serviceFactory: ServiceFactory;
|
|
17
|
+
cwd: string;
|
|
18
|
+
homeDir: string;
|
|
19
|
+
apiClientFactory: ApiClientFactory;
|
|
20
|
+
emitter: GlobalEmitter;
|
|
21
|
+
}
|
|
22
|
+
export declare type StoreOptions<Options extends Record<string, any> | undefined = undefined> = Options extends Record<string, any> ? AbstractStoreOptions & Options : AbstractStoreOptions;
|
|
23
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractStore.js","names":["AbstractStore","options","cwd","serviceFactory","homeDir","apiClientFactory","emitter","type","Service"],"sources":["../../src/stores/AbstractStore.ts"],"sourcesContent":["import { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport {\n\tApiClientFactory,\n\tApiClient,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\n\nexport
|
|
1
|
+
{"version":3,"file":"AbstractStore.js","names":["AbstractStore","options","cwd","serviceFactory","homeDir","apiClientFactory","emitter","type","Service"],"sources":["../../src/stores/AbstractStore.ts"],"sourcesContent":["import { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory, {\n\tServiceProvider,\n\tService,\n\tServiceMap,\n} from '../services/ServiceFactory'\nimport {\n\tApiClientFactory,\n\tApiClient,\n\tApiClientFactoryOptions,\n} from '../types/apiClient.types'\n\nexport default abstract class AbstractStore implements ServiceProvider {\n\tprotected cwd: string\n\tprotected homeDir: string\n\tprotected apiClientFactory: ApiClientFactory\n\tprotected emitter: GlobalEmitter\n\n\tpublic abstract name: string\n\n\tprivate serviceFactory: ServiceFactory\n\n\tpublic constructor(options: StoreOptions) {\n\t\tthis.cwd = options.cwd\n\t\tthis.serviceFactory = options.serviceFactory\n\t\tthis.homeDir = options.homeDir\n\t\tthis.apiClientFactory = options.apiClientFactory\n\t\tthis.emitter = options.emitter\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 async connectToApi(\n\t\toptions?: ApiClientFactoryOptions\n\t): Promise<ApiClient> {\n\t\treturn this.apiClientFactory(options)\n\t}\n}\n\ninterface AbstractStoreOptions {\n\tserviceFactory: ServiceFactory\n\tcwd: string\n\thomeDir: string\n\tapiClientFactory: ApiClientFactory\n\temitter: GlobalEmitter\n}\n\nexport type StoreOptions<\n\tOptions extends Record<string, any> | undefined = undefined\n> = Options extends Record<string, any>\n\t? AbstractStoreOptions & Options\n\t: AbstractStoreOptions\n"],"mappings":";;;;;;;;;;;;IAY8BA,aAAa;EAU1C,uBAAmBC,OAAqB,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IACzC,IAAI,CAACC,GAAG,GAAGD,OAAO,CAACC,GAAG;IACtB,IAAI,CAACC,cAAc,GAAGF,OAAO,CAACE,cAAc;IAC5C,IAAI,CAACC,OAAO,GAAGH,OAAO,CAACG,OAAO;IAC9B,IAAI,CAACC,gBAAgB,GAAGJ,OAAO,CAACI,gBAAgB;IAChD,IAAI,CAACC,OAAO,GAAGL,OAAO,CAACK,OAAO;EAC/B;EAAC;IAAA;IAAA;MAAA;QAAA;MAAA;MAAA;QAAA;MAAA;MAAA;IAAA,EAED,UAAkCC,IAAO,EAAEL,GAAY,EAAiB;MACvE,OAAO,IAAI,CAACC,cAAc,CAACK,OAAO,CAACN,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,IAAI,CAACA,GAAG,EAAEK,IAAI,CAAC;IAC1D,CAAC;EAAA;IAAA;IAAA;MAAA,kGAED,iBACCN,OAAiC;QAAA;UAAA;YAAA;cAAA;gBAAA,iCAE1B,IAAI,CAACI,gBAAgB,CAACJ,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACrC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA"}
|
|
@@ -4,12 +4,27 @@ import ListenerStore from '../features/event/stores/ListenerStore';
|
|
|
4
4
|
import OnboardingStore from '../features/onboard/stores/OnboardingStore';
|
|
5
5
|
import OrganizationStore from '../features/organization/stores/OrganizationStore';
|
|
6
6
|
import SchemaStore from '../features/schema/stores/SchemaStore';
|
|
7
|
-
import SkillStore from '../features/skill/stores/SkillStore';
|
|
7
|
+
import SkillStore, { SkillStoreOptions } from '../features/skill/stores/SkillStore';
|
|
8
8
|
import StoreStore from '../features/store/stores/StoreStore';
|
|
9
9
|
import ViewStore from '../features/view/stores/ViewStore';
|
|
10
10
|
import { GlobalEmitter } from '../GlobalEmitter';
|
|
11
11
|
import ServiceFactory from '../services/ServiceFactory';
|
|
12
12
|
import { ApiClientFactory } from '../types/apiClient.types';
|
|
13
|
+
export default class StoreFactory {
|
|
14
|
+
private serviceFactory;
|
|
15
|
+
private cwd;
|
|
16
|
+
private homeDir;
|
|
17
|
+
private apiClientFactory;
|
|
18
|
+
private emitter;
|
|
19
|
+
constructor(options: StoreFactoryOptions);
|
|
20
|
+
Store<C extends StoreCode>(code: C, options?: CreateStoreOptions<C>): StoreMap[C];
|
|
21
|
+
}
|
|
22
|
+
interface UniversalOptions {
|
|
23
|
+
cwd?: string;
|
|
24
|
+
apiClientFactory?: ApiClientFactory;
|
|
25
|
+
}
|
|
26
|
+
export declare type CreateStoreOptions<Code extends StoreCode> = Code extends keyof StoreOptionsMap ? //@ts-ignore
|
|
27
|
+
StoreOptionsMap[Code] & UniversalOptions : UniversalOptions;
|
|
13
28
|
export interface StoreMap {
|
|
14
29
|
onboarding: OnboardingStore;
|
|
15
30
|
schema: SchemaStore;
|
|
@@ -22,10 +37,6 @@ export interface StoreMap {
|
|
|
22
37
|
listener: ListenerStore;
|
|
23
38
|
}
|
|
24
39
|
export declare type StoreCode = keyof StoreMap;
|
|
25
|
-
export interface StoreFactoryMethodOptions {
|
|
26
|
-
cwd?: string;
|
|
27
|
-
apiClientFactory?: ApiClientFactory;
|
|
28
|
-
}
|
|
29
40
|
export interface StoreFactoryOptions {
|
|
30
41
|
cwd: string;
|
|
31
42
|
serviceFactory: ServiceFactory;
|
|
@@ -33,12 +44,7 @@ export interface StoreFactoryOptions {
|
|
|
33
44
|
apiClientFactory: ApiClientFactory;
|
|
34
45
|
emitter: GlobalEmitter;
|
|
35
46
|
}
|
|
36
|
-
export
|
|
37
|
-
|
|
38
|
-
private cwd;
|
|
39
|
-
private homeDir;
|
|
40
|
-
private apiClientFactory;
|
|
41
|
-
private emitter;
|
|
42
|
-
constructor(options: StoreFactoryOptions);
|
|
43
|
-
Store<C extends StoreCode>(code: C, options?: StoreFactoryMethodOptions): StoreMap[C];
|
|
47
|
+
export interface StoreOptionsMap {
|
|
48
|
+
skill: SkillStoreOptions;
|
|
44
49
|
}
|
|
50
|
+
export {};
|
|
@@ -17,17 +17,8 @@ var _SchemaStore = _interopRequireDefault(require("../features/schema/stores/Sch
|
|
|
17
17
|
var _SkillStore = _interopRequireDefault(require("../features/skill/stores/SkillStore"));
|
|
18
18
|
var _StoreStore = _interopRequireDefault(require("../features/store/stores/StoreStore"));
|
|
19
19
|
var _ViewStore = _interopRequireDefault(require("../features/view/stores/ViewStore"));
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
schema: _SchemaStore["default"],
|
|
23
|
-
event: _EventStore["default"],
|
|
24
|
-
skill: _SkillStore["default"],
|
|
25
|
-
organization: _OrganizationStore["default"],
|
|
26
|
-
conversation: _ConversationStore["default"],
|
|
27
|
-
store: _StoreStore["default"],
|
|
28
|
-
view: _ViewStore["default"],
|
|
29
|
-
listener: _ListenerStore["default"]
|
|
30
|
-
};
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
31
22
|
var StoreFactory = /*#__PURE__*/function () {
|
|
32
23
|
function StoreFactory(options) {
|
|
33
24
|
(0, _classCallCheck2["default"])(this, StoreFactory);
|
|
@@ -51,13 +42,13 @@ var StoreFactory = /*#__PURE__*/function () {
|
|
|
51
42
|
key: "Store",
|
|
52
43
|
value: function Store(code, options) {
|
|
53
44
|
var _options$cwd, _options$apiClientFac;
|
|
54
|
-
var storeOptions = {
|
|
45
|
+
var storeOptions = _objectSpread({
|
|
55
46
|
cwd: (_options$cwd = options === null || options === void 0 ? void 0 : options.cwd) !== null && _options$cwd !== void 0 ? _options$cwd : this.cwd,
|
|
56
47
|
serviceFactory: this.serviceFactory,
|
|
57
48
|
homeDir: this.homeDir,
|
|
58
49
|
apiClientFactory: (_options$apiClientFac = options === null || options === void 0 ? void 0 : options.apiClientFactory) !== null && _options$apiClientFac !== void 0 ? _options$apiClientFac : this.apiClientFactory,
|
|
59
50
|
emitter: this.emitter
|
|
60
|
-
};
|
|
51
|
+
}, options);
|
|
61
52
|
if (!storeMap[code]) {
|
|
62
53
|
throw new Error("Could not find store with code '".concat(code, "'."));
|
|
63
54
|
}
|
|
@@ -68,4 +59,15 @@ var StoreFactory = /*#__PURE__*/function () {
|
|
|
68
59
|
return StoreFactory;
|
|
69
60
|
}();
|
|
70
61
|
exports["default"] = StoreFactory;
|
|
62
|
+
var storeMap = {
|
|
63
|
+
onboarding: _OnboardingStore["default"],
|
|
64
|
+
schema: _SchemaStore["default"],
|
|
65
|
+
event: _EventStore["default"],
|
|
66
|
+
skill: _SkillStore["default"],
|
|
67
|
+
organization: _OrganizationStore["default"],
|
|
68
|
+
conversation: _ConversationStore["default"],
|
|
69
|
+
store: _StoreStore["default"],
|
|
70
|
+
view: _ViewStore["default"],
|
|
71
|
+
listener: _ListenerStore["default"]
|
|
72
|
+
};
|
|
71
73
|
//# sourceMappingURL=StoreFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreFactory.js","names":["
|
|
1
|
+
{"version":3,"file":"StoreFactory.js","names":["StoreFactory","options","cwd","serviceFactory","homeDir","apiClientFactory","emitter","code","storeOptions","storeMap","Error","store","onboarding","OnboardingStore","schema","SchemaStore","event","EventStore","skill","SkillStore","organization","OrganizationStore","conversation","ConversationStore","StoreStore","view","ViewStore","listener","ListenerStore"],"sources":["../../src/stores/StoreFactory.ts"],"sourcesContent":["import ConversationStore from '../features/conversation/stores/ConversationStore'\nimport EventStore from '../features/event/stores/EventStore'\nimport ListenerStore from '../features/event/stores/ListenerStore'\nimport OnboardingStore from '../features/onboard/stores/OnboardingStore'\nimport OrganizationStore from '../features/organization/stores/OrganizationStore'\nimport SchemaStore from '../features/schema/stores/SchemaStore'\nimport SkillStore, {\n\tSkillStoreOptions,\n} from '../features/skill/stores/SkillStore'\nimport StoreStore from '../features/store/stores/StoreStore'\nimport ViewStore from '../features/view/stores/ViewStore'\nimport { GlobalEmitter } from '../GlobalEmitter'\nimport ServiceFactory from '../services/ServiceFactory'\nimport { ApiClientFactory } from '../types/apiClient.types'\n\nexport default class StoreFactory {\n\tprivate serviceFactory: ServiceFactory\n\tprivate cwd: string\n\tprivate homeDir: string\n\tprivate apiClientFactory: ApiClientFactory\n\tprivate emitter: GlobalEmitter\n\n\tpublic constructor(options: StoreFactoryOptions) {\n\t\tconst { cwd, serviceFactory, homeDir, apiClientFactory, emitter } = options\n\n\t\tthis.cwd = cwd\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.homeDir = homeDir\n\t\tthis.apiClientFactory = apiClientFactory\n\t\tthis.emitter = emitter\n\t}\n\n\tpublic Store<C extends StoreCode>(\n\t\tcode: C,\n\t\toptions?: CreateStoreOptions<C>\n\t): StoreMap[C] {\n\t\tconst storeOptions = {\n\t\t\tcwd: options?.cwd ?? this.cwd,\n\t\t\tserviceFactory: this.serviceFactory,\n\t\t\thomeDir: this.homeDir,\n\t\t\tapiClientFactory: options?.apiClientFactory ?? this.apiClientFactory,\n\t\t\temitter: this.emitter,\n\t\t\t...options,\n\t\t}\n\n\t\tif (!storeMap[code]) {\n\t\t\tthrow new Error(`Could not find store with code '${code}'.`)\n\t\t}\n\n\t\tconst store = new storeMap[code](storeOptions as any)\n\n\t\treturn store as StoreMap[C]\n\t}\n}\n\ninterface UniversalOptions {\n\tcwd?: string\n\tapiClientFactory?: ApiClientFactory\n}\n\nexport type CreateStoreOptions<Code extends StoreCode> =\n\tCode extends keyof StoreOptionsMap\n\t\t? //@ts-ignore\n\t\t StoreOptionsMap[Code] & UniversalOptions\n\t\t: UniversalOptions\n\nexport interface StoreMap {\n\tonboarding: OnboardingStore\n\tschema: SchemaStore\n\tevent: EventStore\n\tskill: SkillStore\n\torganization: OrganizationStore\n\tconversation: ConversationStore\n\tstore: StoreStore\n\tview: ViewStore\n\tlistener: ListenerStore\n}\n\nexport type StoreCode = keyof StoreMap\n\nconst storeMap = {\n\tonboarding: OnboardingStore,\n\tschema: SchemaStore,\n\tevent: EventStore,\n\tskill: SkillStore,\n\torganization: OrganizationStore,\n\tconversation: ConversationStore,\n\tstore: StoreStore,\n\tview: ViewStore,\n\tlistener: ListenerStore,\n}\n\nexport interface StoreFactoryOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\thomeDir: string\n\tapiClientFactory: ApiClientFactory\n\temitter: GlobalEmitter\n}\n\nexport interface StoreOptionsMap {\n\tskill: SkillStoreOptions\n}\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAAyD;AAAA;AAAA,IAKpCA,YAAY;EAOhC,sBAAmBC,OAA4B,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAChD,IAAQC,GAAG,GAAyDD,OAAO,CAAnEC,GAAG;MAAEC,cAAc,GAAyCF,OAAO,CAA9DE,cAAc;MAAEC,OAAO,GAAgCH,OAAO,CAA9CG,OAAO;MAAEC,gBAAgB,GAAcJ,OAAO,CAArCI,gBAAgB;MAAEC,OAAO,GAAKL,OAAO,CAAnBK,OAAO;IAE/D,IAAI,CAACJ,GAAG,GAAGA,GAAG;IACd,IAAI,CAACC,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACC,OAAO,GAAGA,OAAO;EACvB;EAAC;IAAA;IAAA,OAED,eACCC,IAAO,EACPN,OAA+B,EACjB;MAAA;MACd,IAAMO,YAAY;QACjBN,GAAG,kBAAED,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,GAAG,uDAAI,IAAI,CAACA,GAAG;QAC7BC,cAAc,EAAE,IAAI,CAACA,cAAc;QACnCC,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,gBAAgB,2BAAEJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,gBAAgB,yEAAI,IAAI,CAACA,gBAAgB;QACpEC,OAAO,EAAE,IAAI,CAACA;MAAO,GAClBL,OAAO,CACV;MAED,IAAI,CAACQ,QAAQ,CAACF,IAAI,CAAC,EAAE;QACpB,MAAM,IAAIG,KAAK,2CAAoCH,IAAI,QAAK;MAC7D;MAEA,IAAMI,KAAK,GAAG,IAAIF,QAAQ,CAACF,IAAI,CAAC,CAACC,YAAY,CAAQ;MAErD,OAAOG,KAAK;IACb;EAAC;EAAA;AAAA;AAAA;AA4BF,IAAMF,QAAQ,GAAG;EAChBG,UAAU,EAAEC,2BAAe;EAC3BC,MAAM,EAAEC,uBAAW;EACnBC,KAAK,EAAEC,sBAAU;EACjBC,KAAK,EAAEC,sBAAU;EACjBC,YAAY,EAAEC,6BAAiB;EAC/BC,YAAY,EAAEC,6BAAiB;EAC/BZ,KAAK,EAAEa,sBAAU;EACjBC,IAAI,EAAEC,qBAAS;EACfC,QAAQ,EAAEC;AACX,CAAC"}
|
|
@@ -8,7 +8,7 @@ import { FeatureActionResponse, FeatureCode } from '../features/features.types';
|
|
|
8
8
|
import { GlobalEmitter } from '../GlobalEmitter';
|
|
9
9
|
import SpyInterface from '../interfaces/SpyInterface';
|
|
10
10
|
import ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory';
|
|
11
|
-
import StoreFactory, { StoreCode,
|
|
11
|
+
import StoreFactory, { StoreCode, CreateStoreOptions, StoreFactoryOptions, StoreMap } from '../stores/StoreFactory';
|
|
12
12
|
import { ApiClientFactoryOptions } from '../types/apiClient.types';
|
|
13
13
|
import { OptionOverrides } from '../types/cli.types';
|
|
14
14
|
import CommandFaker from './CommandFaker';
|
|
@@ -26,12 +26,12 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
26
26
|
protected static homeDir: string;
|
|
27
27
|
protected static commandFaker: CommandFaker;
|
|
28
28
|
private static _ui;
|
|
29
|
-
private static
|
|
29
|
+
private static _emitter?;
|
|
30
30
|
private static mercuryFixture?;
|
|
31
31
|
private static personFixture?;
|
|
32
32
|
private static organizationFixture?;
|
|
33
33
|
private static skillFixture?;
|
|
34
|
-
private static
|
|
34
|
+
private static _featureInstaller?;
|
|
35
35
|
private static viewFixture?;
|
|
36
36
|
private static originalEnv;
|
|
37
37
|
protected static beforeAll(): Promise<void>;
|
|
@@ -42,7 +42,8 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
42
42
|
private static clearFixtures;
|
|
43
43
|
protected static freshTmpDir(): string;
|
|
44
44
|
protected static get ui(): SpyInterface;
|
|
45
|
-
protected static
|
|
45
|
+
protected static get emitter(): GlobalEmitter;
|
|
46
|
+
protected static set emitter(emitter: GlobalEmitter);
|
|
46
47
|
protected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]): string;
|
|
47
48
|
protected static Cli(options?: CliBootOptions): Promise<import("../cli").CliInterface>;
|
|
48
49
|
protected static linkLocalPackages(): Promise<void>;
|
|
@@ -57,9 +58,11 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
57
58
|
protected static getOrganizationFixture(): OrganizationFixture;
|
|
58
59
|
protected static getSkillFixture(): SkillFixture;
|
|
59
60
|
protected static resolveHashSprucePath(...filePath: string[]): string;
|
|
60
|
-
protected static
|
|
61
|
+
protected static get featureInstaller(): FeatureInstaller;
|
|
62
|
+
protected static set featureInstaller(installer: FeatureInstaller);
|
|
63
|
+
protected static FeatureInstaller(options?: Partial<FeatureOptions>): FeatureInstaller;
|
|
61
64
|
protected static StoreFactory(options?: Partial<StoreFactoryOptions>): StoreFactory;
|
|
62
|
-
protected static Store<C extends StoreCode>(code: C, options?:
|
|
65
|
+
protected static Store<C extends StoreCode>(code: C, options?: CreateStoreOptions<C>): StoreMap[C];
|
|
63
66
|
protected static waitForInput(): Promise<void>;
|
|
64
67
|
protected static assertIsFeatureInstalled(code: FeatureCode): Promise<void>;
|
|
65
68
|
protected static assertValidActionResponseFiles(results: FeatureActionResponse): Promise<void>;
|
|
@@ -110,8 +110,8 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
110
110
|
_schema.SchemaRegistry.getInstance().forgetAllSchemas();
|
|
111
111
|
this.cwd = this.freshTmpDir();
|
|
112
112
|
this.homeDir = this.freshTmpDir();
|
|
113
|
-
this.
|
|
114
|
-
this.
|
|
113
|
+
this._emitter = undefined;
|
|
114
|
+
this._featureInstaller = undefined;
|
|
115
115
|
_OnboardingStore["default"].overrideCwd(_spruceSkillUtils.diskUtil.createRandomTempDir());
|
|
116
116
|
this.ui.reset();
|
|
117
117
|
this.ui.invocations = [];
|
|
@@ -248,7 +248,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
248
248
|
}, {
|
|
249
249
|
key: "clearFixtures",
|
|
250
250
|
value: function clearFixtures() {
|
|
251
|
-
this.
|
|
251
|
+
this._emitter = undefined;
|
|
252
252
|
this.mercuryFixture = undefined;
|
|
253
253
|
this.organizationFixture = undefined;
|
|
254
254
|
this.personFixture = undefined;
|
|
@@ -271,12 +271,15 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
271
271
|
return this._ui;
|
|
272
272
|
}
|
|
273
273
|
}, {
|
|
274
|
-
key: "
|
|
275
|
-
|
|
276
|
-
if (!this.
|
|
277
|
-
this.
|
|
274
|
+
key: "emitter",
|
|
275
|
+
get: function get() {
|
|
276
|
+
if (!this._emitter) {
|
|
277
|
+
this._emitter = _GlobalEmitter["default"].Emitter();
|
|
278
278
|
}
|
|
279
|
-
return this.
|
|
279
|
+
return this._emitter;
|
|
280
|
+
},
|
|
281
|
+
set: function set(emitter) {
|
|
282
|
+
this._emitter = emitter;
|
|
280
283
|
}
|
|
281
284
|
}, {
|
|
282
285
|
key: "resolveTestPath",
|
|
@@ -356,17 +359,13 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
356
359
|
}, {
|
|
357
360
|
key: "FeatureFixture",
|
|
358
361
|
value: function FeatureFixture(options) {
|
|
359
|
-
var _options$emitter;
|
|
360
|
-
var emitter = (_options$emitter = options === null || options === void 0 ? void 0 : options.emitter) !== null && _options$emitter !== void 0 ? _options$emitter : this.getEmitter();
|
|
361
362
|
return new _FeatureFixture2["default"](_objectSpread({
|
|
362
363
|
cwd: this.cwd,
|
|
363
364
|
serviceFactory: this.ServiceFactory(),
|
|
364
365
|
ui: this.ui,
|
|
365
|
-
emitter: emitter,
|
|
366
366
|
apiClientFactory: this.getMercuryFixture().getApiClientFactory(),
|
|
367
|
-
featureInstaller: this.
|
|
368
|
-
|
|
369
|
-
})
|
|
367
|
+
featureInstaller: this.featureInstaller,
|
|
368
|
+
emitter: this.emitter
|
|
370
369
|
}, options));
|
|
371
370
|
}
|
|
372
371
|
}, {
|
|
@@ -470,25 +469,36 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
470
469
|
return _spruceSkillUtils.diskUtil.resolveHashSprucePath.apply(_spruceSkillUtils.diskUtil, [this.cwd].concat(filePath));
|
|
471
470
|
}
|
|
472
471
|
}, {
|
|
473
|
-
key: "
|
|
474
|
-
|
|
475
|
-
if (!this.
|
|
476
|
-
var
|
|
477
|
-
|
|
478
|
-
var emitter = this.getEmitter();
|
|
479
|
-
var apiClientFactory = this.getMercuryFixture().getApiClientFactory();
|
|
480
|
-
var actionExecuter = this.ActionExecuter();
|
|
481
|
-
this.featureInstaller = _FeatureInstallerFactory["default"].WithAllFeatures(_objectSpread({
|
|
482
|
-
cwd: this.cwd,
|
|
483
|
-
serviceFactory: serviceFactory,
|
|
484
|
-
storeFactory: storeFactory,
|
|
485
|
-
ui: this.ui,
|
|
486
|
-
emitter: emitter,
|
|
487
|
-
apiClientFactory: apiClientFactory,
|
|
488
|
-
actionExecuter: actionExecuter
|
|
489
|
-
}, options));
|
|
472
|
+
key: "featureInstaller",
|
|
473
|
+
get: function get() {
|
|
474
|
+
if (!this._featureInstaller) {
|
|
475
|
+
var installer = this.FeatureInstaller();
|
|
476
|
+
this._featureInstaller = installer;
|
|
490
477
|
}
|
|
491
|
-
return this.
|
|
478
|
+
return this._featureInstaller;
|
|
479
|
+
},
|
|
480
|
+
set: function set(installer) {
|
|
481
|
+
this._featureInstaller = installer;
|
|
482
|
+
}
|
|
483
|
+
}, {
|
|
484
|
+
key: "FeatureInstaller",
|
|
485
|
+
value: function FeatureInstaller(options) {
|
|
486
|
+
var _options$emitter;
|
|
487
|
+
var serviceFactory = this.ServiceFactory();
|
|
488
|
+
var storeFactory = this.StoreFactory(options);
|
|
489
|
+
var emitter = (_options$emitter = options === null || options === void 0 ? void 0 : options.emitter) !== null && _options$emitter !== void 0 ? _options$emitter : this.emitter;
|
|
490
|
+
var apiClientFactory = this.getMercuryFixture().getApiClientFactory();
|
|
491
|
+
var actionExecuter = this.ActionExecuter();
|
|
492
|
+
var installer = _FeatureInstallerFactory["default"].WithAllFeatures(_objectSpread({
|
|
493
|
+
cwd: this.cwd,
|
|
494
|
+
serviceFactory: serviceFactory,
|
|
495
|
+
storeFactory: storeFactory,
|
|
496
|
+
ui: this.ui,
|
|
497
|
+
emitter: emitter,
|
|
498
|
+
apiClientFactory: apiClientFactory,
|
|
499
|
+
actionExecuter: actionExecuter
|
|
500
|
+
}, options));
|
|
501
|
+
return installer;
|
|
492
502
|
}
|
|
493
503
|
}, {
|
|
494
504
|
key: "StoreFactory",
|
|
@@ -499,7 +509,7 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
499
509
|
serviceFactory: serviceFactory,
|
|
500
510
|
homeDir: this.homeDir,
|
|
501
511
|
apiClientFactory: this.getMercuryFixture().getApiClientFactory(),
|
|
502
|
-
emitter: this.
|
|
512
|
+
emitter: this.emitter
|
|
503
513
|
}, options));
|
|
504
514
|
}
|
|
505
515
|
}, {
|
|
@@ -534,18 +544,17 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
534
544
|
key: "assertIsFeatureInstalled",
|
|
535
545
|
value: function () {
|
|
536
546
|
var _assertIsFeatureInstalled = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(code) {
|
|
537
|
-
var
|
|
547
|
+
var isInstalled;
|
|
538
548
|
return _regenerator["default"].wrap(function _callee10$(_context10) {
|
|
539
549
|
while (1) {
|
|
540
550
|
switch (_context10.prev = _context10.next) {
|
|
541
551
|
case 0:
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
case 3:
|
|
552
|
+
_context10.next = 2;
|
|
553
|
+
return this.featureInstaller.isInstalled(code);
|
|
554
|
+
case 2:
|
|
546
555
|
isInstalled = _context10.sent;
|
|
547
556
|
_testUtils.assert.isTrue(isInstalled);
|
|
548
|
-
case
|
|
557
|
+
case 4:
|
|
549
558
|
case "end":
|
|
550
559
|
return _context10.stop();
|
|
551
560
|
}
|
|
@@ -710,11 +719,10 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
710
719
|
var _this = this;
|
|
711
720
|
var serviceFactory = this.ServiceFactory();
|
|
712
721
|
var writerFactory = this.WriterFactory();
|
|
713
|
-
var emitter = this.getEmitter();
|
|
714
722
|
var actionFactory = new _ActionFactory["default"]({
|
|
715
723
|
writerFactory: writerFactory,
|
|
716
724
|
ui: this.ui,
|
|
717
|
-
emitter: emitter,
|
|
725
|
+
emitter: this.emitter,
|
|
718
726
|
apiClientFactory: this.getMercuryFixture().getApiClientFactory(),
|
|
719
727
|
cwd: this.cwd,
|
|
720
728
|
serviceFactory: serviceFactory,
|
|
@@ -728,10 +736,10 @@ var AbstractCliTest = /*#__PURE__*/function (_AbstractSpruceTest) {
|
|
|
728
736
|
});
|
|
729
737
|
var executer = new _ActionExecuter2["default"](_objectSpread({
|
|
730
738
|
ui: this.ui,
|
|
731
|
-
emitter: emitter,
|
|
739
|
+
emitter: this.emitter,
|
|
732
740
|
actionFactory: actionFactory,
|
|
733
741
|
featureInstallerFactory: function featureInstallerFactory() {
|
|
734
|
-
return _this.
|
|
742
|
+
return _this.featureInstaller;
|
|
735
743
|
},
|
|
736
744
|
shouldAutoHandleDependencies: false
|
|
737
745
|
}, options));
|
|
@@ -757,12 +765,12 @@ exports["default"] = AbstractCliTest;
|
|
|
757
765
|
(0, _defineProperty2["default"])(AbstractCliTest, "homeDir", void 0);
|
|
758
766
|
(0, _defineProperty2["default"])(AbstractCliTest, "commandFaker", void 0);
|
|
759
767
|
(0, _defineProperty2["default"])(AbstractCliTest, "_ui", void 0);
|
|
760
|
-
(0, _defineProperty2["default"])(AbstractCliTest, "
|
|
768
|
+
(0, _defineProperty2["default"])(AbstractCliTest, "_emitter", void 0);
|
|
761
769
|
(0, _defineProperty2["default"])(AbstractCliTest, "mercuryFixture", void 0);
|
|
762
770
|
(0, _defineProperty2["default"])(AbstractCliTest, "personFixture", void 0);
|
|
763
771
|
(0, _defineProperty2["default"])(AbstractCliTest, "organizationFixture", void 0);
|
|
764
772
|
(0, _defineProperty2["default"])(AbstractCliTest, "skillFixture", void 0);
|
|
765
|
-
(0, _defineProperty2["default"])(AbstractCliTest, "
|
|
773
|
+
(0, _defineProperty2["default"])(AbstractCliTest, "_featureInstaller", void 0);
|
|
766
774
|
(0, _defineProperty2["default"])(AbstractCliTest, "viewFixture", void 0);
|
|
767
775
|
(0, _defineProperty2["default"])(AbstractCliTest, "originalEnv", void 0);
|
|
768
776
|
//# sourceMappingURL=AbstractCliTest.js.map
|