@sprucelabs/spruce-cli 17.1.55 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js +1 -1
  3. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  4. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +1 -1
  5. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  6. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js +4 -4
  7. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  8. package/build/__tests__/behavioral/WatchingSkillViews.test.js +3 -3
  9. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  10. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js +1 -1
  11. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  12. package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +2 -0
  13. package/build/__tests__/behavioral/events/CreatingAListener.test.js +118 -59
  14. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  15. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.d.ts +17 -0
  16. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js +137 -0
  17. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js.map +1 -0
  18. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js +46 -45
  19. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  20. package/build/__tests__/behavioral/tests/CreatingATest.test.js +1 -1
  21. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  22. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +4 -4
  23. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  24. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js +2 -2
  25. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  26. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +2 -2
  27. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  28. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js +2 -2
  29. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  30. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js +2 -2
  31. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  32. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +1 -1
  33. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  34. package/build/__tests__/behavioral/views/CreatingATheme.test.js +1 -1
  35. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  36. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.d.ts +3 -3
  37. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js +153 -156
  38. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  39. package/build/__tests__/implementation/ActionExecuter.test.js +2 -2
  40. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  41. package/build/__tests__/implementation/ActionExecuter2.test.js +1 -1
  42. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  43. package/build/__tests__/implementation/ActionExecuter4.test.js +1 -1
  44. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  45. package/build/__tests__/implementation/FeatureInstaller.test.js +8 -4
  46. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  47. package/build/__tests__/implementation/GlobalEmitter.d.ts +1 -1
  48. package/build/__tests__/implementation/GlobalEmitter.js +9 -10
  49. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  50. package/build/__tests__/implementation/SettingUpANodeModule.test.js +1 -1
  51. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  52. package/build/__tests__/implementation/SkillStore.test.d.ts +3 -1
  53. package/build/__tests__/implementation/SkillStore.test.js +67 -50
  54. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  55. package/build/__tests__/implementation/StoreFeature.test.js +1 -1
  56. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  57. package/build/cli.js +3 -3
  58. package/build/cli.js.map +1 -1
  59. package/build/features/AbstractAction.d.ts +2 -2
  60. package/build/features/AbstractAction.js.map +1 -1
  61. package/build/features/AbstractFeature.d.ts +22 -22
  62. package/build/features/AbstractFeature.js.map +1 -1
  63. package/build/features/ActionExecuter.d.ts +8 -8
  64. package/build/features/ActionExecuter.js.map +1 -1
  65. package/build/features/FeatureInstaller.d.ts +15 -2
  66. package/build/features/FeatureInstaller.js +36 -36
  67. package/build/features/FeatureInstaller.js.map +1 -1
  68. package/build/features/FeatureInstallerFactory.d.ts +12 -10
  69. package/build/features/FeatureInstallerFactory.js +2 -2
  70. package/build/features/FeatureInstallerFactory.js.map +1 -1
  71. package/build/features/OverrideActionDecorator.js +4 -5
  72. package/build/features/OverrideActionDecorator.js.map +1 -1
  73. package/build/features/event/actions/ListenAction.js.map +1 -1
  74. package/build/features/event/actions/SetRemoteAction.d.ts +1 -0
  75. package/build/features/event/actions/SetRemoteAction.js +2 -1
  76. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  77. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  78. package/build/features/node/NodeFeature.js.map +1 -1
  79. package/build/features/skill/SkillFeature.js.map +1 -1
  80. package/build/features/skill/stores/SkillStore.d.ts +4 -1
  81. package/build/features/skill/stores/SkillStore.js +127 -100
  82. package/build/features/skill/stores/SkillStore.js.map +1 -1
  83. package/build/features/watch/WatchFeature.js +1 -1
  84. package/build/features/watch/WatchFeature.js.map +1 -1
  85. package/build/interfaces/SpyInterface.d.ts +2 -0
  86. package/build/interfaces/SpyInterface.js +16 -4
  87. package/build/interfaces/SpyInterface.js.map +1 -1
  88. package/build/stores/AbstractStore.d.ts +9 -7
  89. package/build/stores/AbstractStore.js.map +1 -1
  90. package/build/stores/StoreFactory.d.ts +19 -13
  91. package/build/stores/StoreFactory.js +15 -13
  92. package/build/stores/StoreFactory.js.map +1 -1
  93. package/build/tests/AbstractCliTest.d.ts +9 -6
  94. package/build/tests/AbstractCliTest.js +53 -45
  95. package/build/tests/AbstractCliTest.js.map +1 -1
  96. package/build/tests/AbstractSchemaTest.js +18 -20
  97. package/build/tests/AbstractSchemaTest.js.map +1 -1
  98. package/build/utilities/action.utility.js +3 -1
  99. package/build/utilities/action.utility.js.map +1 -1
  100. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  101. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  102. package/node_modules/@typescript-eslint/types/package.json +2 -2
  103. package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
  104. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  105. package/package.json +28 -86
  106. package/src/__tests__/behavioral/EnablingAndDisablingCache.test.ts +1 -1
  107. package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
  108. package/src/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.ts +4 -4
  109. package/src/__tests__/behavioral/WatchingSkillViews.test.ts +3 -3
  110. package/src/__tests__/behavioral/errors/SettingUpErrors.test.ts +1 -1
  111. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +41 -14
  112. package/src/__tests__/behavioral/events/EverythingInstalledInstaller.ts +46 -0
  113. package/src/__tests__/behavioral/onboard/StartingOnboarding.test.ts +10 -5
  114. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +1 -1
  115. package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +4 -4
  116. package/src/__tests__/behavioral/upgrading/UpdatingDependencies2.test.ts +2 -2
  117. package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +2 -2
  118. package/src/__tests__/behavioral/upgrading/UpgradingASkill5.test.ts +2 -2
  119. package/src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts +2 -2
  120. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +1 -1
  121. package/src/__tests__/behavioral/views/CreatingATheme.test.ts +1 -1
  122. package/src/__tests__/behavioral/watchers/WatchingForChanges.test.ts +35 -35
  123. package/src/__tests__/implementation/ActionExecuter.test.ts +2 -2
  124. package/src/__tests__/implementation/ActionExecuter2.test.ts +1 -1
  125. package/src/__tests__/implementation/ActionExecuter4.test.ts +1 -1
  126. package/src/__tests__/implementation/FeatureInstaller.test.ts +8 -1
  127. package/src/__tests__/implementation/GlobalEmitter.ts +2 -4
  128. package/src/__tests__/implementation/SettingUpANodeModule.test.ts +1 -1
  129. package/src/__tests__/implementation/SkillStore.test.ts +23 -24
  130. package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
  131. package/src/cli.ts +7 -3
  132. package/src/features/AbstractAction.ts +3 -3
  133. package/src/features/AbstractFeature.ts +26 -26
  134. package/src/features/ActionExecuter.ts +9 -9
  135. package/src/features/FeatureInstaller.ts +32 -12
  136. package/src/features/FeatureInstallerFactory.ts +17 -13
  137. package/src/features/OverrideActionDecorator.ts +2 -5
  138. package/src/features/event/actions/ListenAction.ts +1 -0
  139. package/src/features/event/actions/SetRemoteAction.ts +2 -1
  140. package/src/features/event/actions/SyncListenersAction.ts +0 -1
  141. package/src/features/node/NodeFeature.ts +3 -1
  142. package/src/features/skill/SkillFeature.ts +3 -3
  143. package/src/features/skill/stores/SkillStore.ts +18 -11
  144. package/src/features/watch/WatchFeature.ts +1 -1
  145. package/src/interfaces/SpyInterface.ts +10 -0
  146. package/src/stores/AbstractStore.ts +14 -8
  147. package/src/stores/StoreFactory.ts +56 -44
  148. package/src/tests/AbstractCliTest.ts +53 -45
  149. package/src/tests/AbstractSchemaTest.ts +1 -3
  150. package/src/utilities/action.utility.ts +3 -1
@@ -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 interface StoreOptions {\n\tserviceFactory: ServiceFactory\n\tcwd: string\n\thomeDir: string\n\tapiClientFactory: ApiClientFactory\n\temitter: GlobalEmitter\n}\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"],"mappings":";;;;;;;;;;;;IAoB8BA,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"}
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 default class StoreFactory {
37
- private serviceFactory;
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 storeMap = {
21
- onboarding: _OnboardingStore["default"],
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":["storeMap","onboarding","OnboardingStore","schema","SchemaStore","event","EventStore","skill","SkillStore","organization","OrganizationStore","conversation","ConversationStore","store","StoreStore","view","ViewStore","listener","ListenerStore","StoreFactory","options","cwd","serviceFactory","homeDir","apiClientFactory","emitter","code","storeOptions","Error"],"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 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'\nimport { StoreOptions } from './AbstractStore'\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 StoreFactoryMethodOptions {\n\tcwd?: string\n\tapiClientFactory?: ApiClientFactory\n}\n\nexport interface StoreFactoryOptions {\n\tcwd: string\n\tserviceFactory: ServiceFactory\n\thomeDir: string\n\tapiClientFactory: ApiClientFactory\n\temitter: GlobalEmitter\n}\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?: StoreFactoryMethodOptions\n\t): StoreMap[C] {\n\t\tconst storeOptions: 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}\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)\n\n\t\treturn store as StoreMap[C]\n\t}\n}\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAoBA,IAAMA,QAAQ,GAAG;EAChBC,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/BC,KAAK,EAAEC,sBAAU;EACjBC,IAAI,EAAEC,qBAAS;EACfC,QAAQ,EAAEC;AACX,CAAC;AAAA,IAeoBC,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,OAAmC,EACrB;MAAA;MACd,IAAMO,YAA0B,GAAG;QAClCN,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;MACf,CAAC;MAED,IAAI,CAACzB,QAAQ,CAAC0B,IAAI,CAAC,EAAE;QACpB,MAAM,IAAIE,KAAK,2CAAoCF,IAAI,QAAK;MAC7D;MAEA,IAAMb,KAAK,GAAG,IAAIb,QAAQ,CAAC0B,IAAI,CAAC,CAACC,YAAY,CAAC;MAE9C,OAAOd,KAAK;IACb;EAAC;EAAA;AAAA;AAAA"}
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, StoreFactoryMethodOptions, StoreFactoryOptions, StoreMap } from '../stores/StoreFactory';
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 emitter?;
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 featureInstaller?;
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 getEmitter(): GlobalEmitter;
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 getFeatureInstaller(options?: Partial<FeatureOptions>): FeatureInstaller;
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?: StoreFactoryMethodOptions): StoreMap[C];
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.emitter = undefined;
114
- this.featureInstaller = undefined;
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.emitter = undefined;
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: "getEmitter",
275
- value: function getEmitter() {
276
- if (!this.emitter) {
277
- this.emitter = _GlobalEmitter["default"].Emitter();
274
+ key: "emitter",
275
+ get: function get() {
276
+ if (!this._emitter) {
277
+ this._emitter = _GlobalEmitter["default"].Emitter();
278
278
  }
279
- return this.emitter;
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.getFeatureInstaller({
368
- emitter: emitter
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: "getFeatureInstaller",
474
- value: function getFeatureInstaller(options) {
475
- if (!this.featureInstaller) {
476
- var serviceFactory = this.ServiceFactory();
477
- var storeFactory = this.StoreFactory(options);
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.featureInstaller;
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.getEmitter()
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 featureInstaller, isInstalled;
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
- featureInstaller = this.getFeatureInstaller();
543
- _context10.next = 3;
544
- return featureInstaller.isInstalled(code);
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 5:
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.getFeatureInstaller();
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, "emitter", void 0);
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, "featureInstaller", void 0);
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