@sprucelabs/spruce-cli 20.0.1 → 20.0.3

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 (33) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js +1 -1
  3. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  4. package/build/__tests__/implementation/EventCacheService.test.d.ts +4 -0
  5. package/build/__tests__/implementation/EventCacheService.test.js +84 -0
  6. package/build/__tests__/implementation/EventCacheService.test.js.map +1 -0
  7. package/build/features/event/EventFeature.js +2 -2
  8. package/build/features/event/EventFeature.js.map +1 -1
  9. package/build/features/event/actions/SyncAction.js +1 -1
  10. package/build/features/event/actions/SyncAction.js.map +1 -1
  11. package/build/features/event/services/{EventSettingsService.d.ts → EventCacheService.d.ts} +3 -3
  12. package/build/features/event/services/{EventSettingsService.js → EventCacheService.js} +8 -7
  13. package/build/features/event/services/EventCacheService.js.map +1 -0
  14. package/build/features/node/actions/UpgradeAction.d.ts +2 -2
  15. package/build/features/node/actions/UpgradeAction.js.map +1 -1
  16. package/build/features/universalFileDescriptions.js +1 -1
  17. package/build/features/universalFileDescriptions.js.map +1 -1
  18. package/build/interfaces/TerminalInterface.js +5 -1
  19. package/build/interfaces/TerminalInterface.js.map +1 -1
  20. package/build/services/ServiceFactory.d.ts +3 -2
  21. package/build/services/ServiceFactory.js +11 -7
  22. package/build/services/ServiceFactory.js.map +1 -1
  23. package/package.json +27 -27
  24. package/src/__tests__/behavioral/upgrading/UpgradingASkill5.test.ts +1 -1
  25. package/src/__tests__/implementation/EventCacheService.test.ts +38 -0
  26. package/src/features/event/EventFeature.ts +2 -2
  27. package/src/features/event/actions/SyncAction.ts +1 -1
  28. package/src/features/event/services/{EventSettingsService.ts → EventCacheService.ts} +5 -3
  29. package/src/features/node/actions/UpgradeAction.ts +4 -4
  30. package/src/features/universalFileDescriptions.ts +1 -1
  31. package/src/interfaces/TerminalInterface.ts +6 -1
  32. package/src/services/ServiceFactory.ts +11 -8
  33. package/build/features/event/services/EventSettingsService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalInterface.js","names":["_path","_interopRequireDefault","require","_error","_globby","_schema","_spruceSkillUtils","_cfonts","_chalk","_cliTable","_emphasize","_fsExtra","_inquirer","_lodash","_interopRequireWildcard","_ora","_terminalKit","_SpruceError","_feature","_graphicsInterface","_duration","_isCi","_process","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","_createForOfIteratorHelper","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","done","value","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","terminalImage","fieldCount","generateInquirerFieldName","concat","filterEffectsForCFonts","effects","effect","GraphicsTextEffect","SpruceHeader","Reset","Bold","Dim","Italic","Underline","Inverse","Hidden","Strikethrough","Visible","indexOf","TerminalInterface","exports","cwd","renderStackTraces","undefined","log","console","bind","_classCallCheck2","_createClass2","key","_sendInput","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","Error","stop","sendInput","renderLines","lines","_this","line","renderLine","renderObject","object","_this2","Green","renderDivider","chalk","bold","JSON","stringify","renderSection","options","headline","_options$dividerEffec","dividerEffects","_options$headlineEffe","headlineEffects","Blue","_options$bodyEffects","bodyEffects","renderHeadline","bar","renderActionSummary","results","_results$files$filter","_results$files","_results$files$filter2","_results$files2","_results$files$filter3","_results$files3","_results$errors","_results$packagesInst","_results$summaryLines","_this3","generatedFiles","files","action","updatedFiles","skippedFiles","errors","packagesInstalled","renderHero","summaryLines","_toConsumableArray2","featuresUtil","generateCommand","featureCode","actionCode","table","Table","head","colWidths","wordWrap","colAligns","sort","one","two","pkg","isDev","_i","_arr","_iterator","_step","_file$description","file","description","namesUtil","toPascal","hints","renderError","totalTime","durationUtil","msToFriendly","message","isSpruce","fonts","say","font","align","space","colors","setTitle","title","process","stdout","write","shouldStripVowels","columns","stripped","replace","toLowerCase","gradient","Red","renderHint","eraseBeforeRender","terminal","eraseLine","renderWarning","Yellow","_startLoading","_callee2","_callee2$","_context2","stopLoading","loader","ora","text","start","startLoading","_x","_stopLoading","_callee3","_TerminalInterface$lo","_callee3$","_context3","_confirm","_callee4","question","confirmResult","_callee4$","_context4","inquirer","prompt","type","sent","abrupt","answer","confirm","_x2","_waitForEnter","_callee5","_callee5$","_context5","label","bgGreenBright","black","waitForEnter","_x3","clear","renderCodeSample","code","colored","emphasize","highlight","_prompt","_callee6","definition","fieldDefinition","defaultValue","promptOptions","field","_fieldDefinition$defa","_fieldDefinition$defa2","dirPath","_fieldDefinition$defa3","_fieldDefinition$defa4","_dirPath","response","result","_callee6$","_context6","isPromptActive","generatePromptLabel","FieldFactory","Field","transformer","toValueType","validate","areSchemaValuesValid","id","fields","t0","choices","map","choice","checked","_","includes","SpruceError","friendlyMessage","path","join","root","onlyShowDir","fs","existsSync","lstatSync","isDirectory","cleanedPath","uri","globby","directory","extname","_x4","hint","italic","dim","stackLines","cleanStack","splice","stack","AbstractSpruceError","original","originalError","split","renderProgressBar","removeProgressBar","progressBar","percent","showPercent","eta","showEta","items","totalItems","inline","renderInline","updateProgressBar","update","_renderImage","_callee7","image","_callee7$","_context7","renderImage","_x5","_x6","_getCursorPosition","_callee8","_callee8$","_context8","Promise","resolve","requestCursorLocation","getCursorLocation","x","y","getCursorPosition","saveCursor","restoreCursor","moveCursorTo","moveTo","clearBelowCursor","eraseDisplayBelow","doesSupportColor","_doesSupportColor","setDoesSupportColor","isTTy","isTTY","isCi"],"sources":["../../src/interfaces/TerminalInterface.ts"],"sourcesContent":["import path from 'path'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport globby from '@sprucelabs/globby'\nimport {\n\tFieldFactory,\n\tFieldDefinitionValueType,\n\tareSchemaValuesValid,\n} from '@sprucelabs/schema'\nimport { IField } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\n// @ts-ignore\nimport fonts from 'cfonts'\nimport chalk from 'chalk'\n// @ts-ignore No definition available\nimport Table from 'cli-table3'\n// @ts-ignore No definition available\nimport emphasize from 'emphasize'\nimport fs from 'fs-extra'\nimport inquirer from 'inquirer'\nimport _ from 'lodash'\nimport { filter } from 'lodash'\nimport ora from 'ora'\nimport { terminal } from 'terminal-kit'\nimport { ProgressBarController } from 'terminal-kit/Terminal'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport SpruceError from '../errors/SpruceError'\nimport featuresUtil from '../features/feature.utilities'\nimport { ExecutionResults, GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tImageDimensions,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport isCi from '../utilities/isCi'\nconst terminalImage = require('terminal-image')\n\nlet fieldCount = 0\nfunction generateInquirerFieldName() {\n\tfieldCount++\n\treturn `field-${fieldCount}`\n}\n\n/** Remove effects cfonts does not support */\nfunction filterEffectsForCFonts(effects: GraphicsTextEffect[]) {\n\treturn filter(\n\t\teffects,\n\t\t(effect) =>\n\t\t\t[\n\t\t\t\tGraphicsTextEffect.SpruceHeader,\n\t\t\t\tGraphicsTextEffect.Reset,\n\t\t\t\tGraphicsTextEffect.Bold,\n\t\t\t\tGraphicsTextEffect.Dim,\n\t\t\t\tGraphicsTextEffect.Italic,\n\t\t\t\tGraphicsTextEffect.Underline,\n\t\t\t\tGraphicsTextEffect.Inverse,\n\t\t\t\tGraphicsTextEffect.Hidden,\n\t\t\t\tGraphicsTextEffect.Strikethrough,\n\t\t\t\tGraphicsTextEffect.Visible,\n\t\t\t].indexOf(effect) === -1\n\t)\n}\n\ntype TerminalSpecificOptions = {\n\teraseBeforeRender?: boolean\n}\n\nexport default class TerminalInterface implements GraphicsInterface {\n\tpublic isPromptActive = false\n\tpublic cwd: string\n\tprivate renderStackTraces = false\n\tprivate static loader?: ora.Ora | null\n\tprivate progressBar: ProgressBarController | null = null\n\tprivate static _doesSupportColor = process?.stdout?.isTTY && !isCi()\n\tprivate log: (...args: any[]) => void\n\n\tpublic constructor(\n\t\tcwd: string,\n\t\trenderStackTraces = false,\n\t\tlog = console.log.bind(console)\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.renderStackTraces = renderStackTraces\n\t\tthis.log = log\n\t}\n\n\tpublic static doesSupportColor() {\n\t\treturn this._doesSupportColor\n\t}\n\n\tpublic static setDoesSupportColor(isTTy: boolean) {\n\t\tthis._doesSupportColor = isTTy\n\t}\n\n\tpublic async sendInput(): Promise<void> {\n\t\tthrow new Error('sendInput not supported on the TerminalInterface!')\n\t}\n\n\tpublic renderLines(lines: any[], effects?: GraphicsTextEffect[]) {\n\t\tlines.forEach((line) => {\n\t\t\tthis.renderLine(line, effects)\n\t\t})\n\t}\n\n\tpublic renderObject(\n\t\tobject: Record<string, any>,\n\t\teffects: GraphicsTextEffect[] = [GraphicsTextEffect.Green]\n\t) {\n\t\tthis.renderLine('')\n\t\tthis.renderDivider()\n\t\tthis.renderLine('')\n\t\tObject.keys(object).forEach((key) => {\n\t\t\tthis.renderLine(\n\t\t\t\t`${chalk.bold(key)}: ${\n\t\t\t\t\ttypeof object[key] === 'string'\n\t\t\t\t\t\t? object[key]\n\t\t\t\t\t\t: JSON.stringify(object[key])\n\t\t\t\t}`,\n\t\t\t\teffects\n\t\t\t)\n\t\t})\n\t\tthis.renderLine('')\n\t\tthis.renderDivider()\n\t\tthis.renderLine('')\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline?: string\n\t\tlines?: string[]\n\t\tobject?: Record<string, any>\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t}) {\n\t\tconst {\n\t\t\theadline,\n\t\t\tlines,\n\t\t\tobject,\n\t\t\tdividerEffects = [],\n\t\t\theadlineEffects = [GraphicsTextEffect.Blue, GraphicsTextEffect.Bold],\n\t\t\tbodyEffects = [GraphicsTextEffect.Green],\n\t\t} = options\n\n\t\tif (headline) {\n\t\t\tthis.renderHeadline(`${headline} 🌲🤖`, headlineEffects, dividerEffects)\n\t\t}\n\n\t\tif (lines) {\n\t\t\tthis.renderLines(lines, bodyEffects)\n\n\t\t\tthis.renderLine('')\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t}\n\n\t\tif (object) {\n\t\t\tthis.renderObject(object, bodyEffects)\n\t\t}\n\n\t\tthis.renderLine('')\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[]) {\n\t\tconst bar = '=================================================='\n\t\tthis.renderLine(bar, effects)\n\t}\n\n\tpublic renderActionSummary(\n\t\tresults: ExecutionResults & { totalTime?: number }\n\t) {\n\t\tconst generatedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'generated') ?? []\n\t\tconst updatedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'updated') ?? []\n\t\tconst skippedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'skipped') ?? []\n\n\t\tconst errors = results.errors ?? []\n\t\tconst packagesInstalled = results.packagesInstalled ?? []\n\n\t\tthis.renderHero(`${results.headline}`)\n\n\t\tlet summaryLines: string[] = [\n\t\t\terrors.length > 0 ? `Errors: ${errors.length}` : null,\n\t\t\tgeneratedFiles.length > 0\n\t\t\t\t? `Generated files: ${generatedFiles.length}`\n\t\t\t\t: null,\n\t\t\tupdatedFiles.length > 0 ? `Updated files: ${updatedFiles.length}` : null,\n\t\t\tskippedFiles.length > 0 ? `Skipped files: ${skippedFiles.length}` : null,\n\t\t\tpackagesInstalled.length > 0\n\t\t\t\t? `NPM packages installed: ${packagesInstalled.length}`\n\t\t\t\t: null,\n\t\t\t...(results.summaryLines ?? []),\n\t\t].filter((line) => !!line) as string[]\n\n\t\tif (summaryLines.length === 0) {\n\t\t\tsummaryLines.push('Nothing to report!')\n\t\t}\n\t\tthis.renderSection({\n\t\t\theadline: `${featuresUtil.generateCommand(\n\t\t\t\tresults.featureCode,\n\t\t\t\tresults.actionCode\n\t\t\t)} summary`,\n\t\t\tlines: summaryLines,\n\t\t})\n\n\t\tif (packagesInstalled.length > 0) {\n\t\t\tconst table = new Table({\n\t\t\t\thead: ['Name', 'Dev'],\n\t\t\t\tcolWidths: [40, 5],\n\t\t\t\twordWrap: true,\n\t\t\t\tcolAligns: ['left', 'center'],\n\t\t\t})\n\t\t\tpackagesInstalled\n\t\t\t\t.sort((one, two) => (one.name > two.name ? 1 : -1))\n\t\t\t\t.forEach((pkg) => {\n\t\t\t\t\ttable.push([pkg.name, pkg.isDev ? '√' : ''])\n\t\t\t\t})\n\n\t\t\tthis.renderSection({\n\t\t\t\theadline: `NPM packages summary`,\n\t\t\t\tlines: [table.toString()],\n\t\t\t})\n\t\t}\n\n\t\tfor (let files of [generatedFiles, updatedFiles]) {\n\t\t\tif (files.length > 0) {\n\t\t\t\tconst table = new Table({\n\t\t\t\t\thead: ['File', 'Description'],\n\t\t\t\t\twordWrap: true,\n\t\t\t\t})\n\n\t\t\t\tfiles = files.sort()\n\n\t\t\t\tfor (const file of files) {\n\t\t\t\t\ttable.push([file.name, file.description ?? ''])\n\t\t\t\t}\n\n\t\t\t\tthis.renderSection({\n\t\t\t\t\theadline: `${namesUtil.toPascal(files[0].action)} file summary`,\n\t\t\t\t\tlines: [table.toString()],\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tif (results.hints) {\n\t\t\tthis.renderSection({\n\t\t\t\theadline: 'Read below 👇',\n\t\t\t\tlines: results.hints,\n\t\t\t})\n\t\t}\n\n\t\tif (errors.length > 0) {\n\t\t\tthis.renderHeadline('Errors')\n\t\t\terrors.forEach((err) => this.renderError(err))\n\t\t}\n\n\t\tif (results.totalTime) {\n\t\t\tthis.renderLine(\n\t\t\t\t`Total time: ${durationUtil.msToFriendly(results.totalTime)}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[] = [\n\t\t\tGraphicsTextEffect.Blue,\n\t\t\tGraphicsTextEffect.Bold,\n\t\t],\n\t\tdividerEffects: GraphicsTextEffect[] = []\n\t) {\n\t\tconst isSpruce = effects.indexOf(GraphicsTextEffect.SpruceHeader) > -1\n\n\t\tif (isSpruce) {\n\t\t\tfonts.say(message, {\n\t\t\t\tfont: GraphicsTextEffect.SpruceHeader,\n\t\t\t\talign: 'left',\n\t\t\t\tspace: false,\n\t\t\t\tcolors: filterEffectsForCFonts(effects),\n\t\t\t})\n\t\t} else {\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t\tthis.renderLine(message, effects)\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t\tthis.renderLine('')\n\t\t}\n\t}\n\n\tpublic setTitle(title: string): void {\n\t\tprocess.stdout.write('\\x1b]2;' + title + '\\x07')\n\t}\n\n\tpublic renderHero(message: string, effects?: GraphicsTextEffect[]) {\n\t\tconst shouldStripVowels = process.stdout.columns < 80\n\n\t\tlet stripped = shouldStripVowels\n\t\t\t? message.replace(/[aeiou]/gi, '')\n\t\t\t: message\n\n\t\tif (\n\t\t\tshouldStripVowels &&\n\t\t\t['a', 'e', 'i', 'o', 'u'].indexOf(message[0].toLowerCase()) > -1\n\t\t) {\n\t\t\tstripped = `${message[0]}${stripped}`\n\t\t}\n\n\t\tfonts.say(stripped, {\n\t\t\talign: 'left',\n\t\t\tgradient: [GraphicsTextEffect.Red, GraphicsTextEffect.Blue],\n\t\t\tcolors: effects ? filterEffectsForCFonts(effects) : undefined,\n\t\t})\n\t}\n\n\tpublic renderHint(message: string) {\n\t\treturn this.renderLine(`👨‍🏫 ${message}`)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: any,\n\t\teffects: GraphicsTextEffect[] = [],\n\t\toptions?: TerminalSpecificOptions\n\t) {\n\t\tlet write: any = chalk\n\t\teffects.forEach((effect) => {\n\t\t\twrite = write[effect]\n\t\t})\n\n\t\tif (options?.eraseBeforeRender) {\n\t\t\tterminal.eraseLine()\n\t\t}\n\n\t\tthis.log(effects.length > 0 ? write(message) : message)\n\t}\n\n\tpublic renderWarning(message: string) {\n\t\tthis.renderLine(`⚠️ ${message}`, [\n\t\t\tGraphicsTextEffect.Bold,\n\t\t\tGraphicsTextEffect.Yellow,\n\t\t])\n\t}\n\n\tpublic async startLoading(message?: string) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.stopLoading()\n\t\tTerminalInterface.loader = ora({\n\t\t\ttext: message,\n\t\t}).start()\n\t}\n\n\tpublic async stopLoading() {\n\t\tTerminalInterface.loader?.stop()\n\t\tTerminalInterface.loader = null\n\t}\n\n\tpublic async confirm(question: string): Promise<boolean> {\n\t\tconst confirmResult = await inquirer.prompt({\n\t\t\ttype: 'confirm',\n\t\t\tname: 'answer',\n\t\t\tmessage: question,\n\t\t})\n\n\t\treturn !!confirmResult.answer\n\t}\n\n\tpublic async waitForEnter(message?: string) {\n\t\tawait this.prompt({\n\t\t\ttype: 'text',\n\t\t\tlabel: `${message ? message + ' ' : ''}${chalk.bgGreenBright.black(\n\t\t\t\t'hit enter'\n\t\t\t)}`,\n\t\t})\n\t\tthis.renderLine('')\n\t\treturn\n\t}\n\n\tpublic clear() {\n\t\tvoid this.stopLoading()\n\t\tconsole.clear()\n\t}\n\n\tpublic renderCodeSample(code: string) {\n\t\ttry {\n\t\t\tconst colored = emphasize.highlight('js', code).value\n\t\t\tthis.renderLine(colored)\n\t\t} catch (err: any) {\n\t\t\tthis.renderWarning(err)\n\t\t}\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(\n\t\tdefinition: T\n\t): Promise<FieldDefinitionValueType<T>> {\n\t\tthis.isPromptActive = true\n\t\tconst name = generateInquirerFieldName()\n\t\tconst fieldDefinition: FieldDefinitions = definition\n\t\tconst { defaultValue } = fieldDefinition\n\n\t\tconst promptOptions: Record<string, any> = {\n\t\t\tdefault: defaultValue,\n\t\t\tname,\n\t\t\tmessage: this.generatePromptLabel(fieldDefinition),\n\t\t}\n\n\t\tconst field = FieldFactory.Field('prompt', fieldDefinition)\n\n\t\tpromptOptions.transformer = (value: string) => {\n\t\t\treturn (field as IField<any>).toValueType(value)\n\t\t}\n\n\t\tpromptOptions.validate = (value: string) => {\n\t\t\treturn areSchemaValuesValid(\n\t\t\t\t{\n\t\t\t\t\tid: 'promptvalidateschema',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tprompt: fieldDefinition,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ prompt: value }\n\t\t\t)\n\t\t\t// return field.validate(value, {}).length === 0\n\t\t}\n\n\t\tswitch (fieldDefinition.type) {\n\t\t\t// Map select options to prompt list choices\n\t\t\tcase 'boolean':\n\t\t\t\tpromptOptions.type = 'confirm'\n\t\t\t\tbreak\n\n\t\t\tcase 'select':\n\t\t\t\tpromptOptions.type = fieldDefinition.isArray ? 'checkbox' : 'list'\n\n\t\t\t\tpromptOptions.choices = fieldDefinition.options.choices.map(\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t(choice) => ({\n\t\t\t\t\t\tname: choice.label,\n\t\t\t\t\t\tvalue: choice.value,\n\t\t\t\t\t\tchecked: _.includes(fieldDefinition.defaultValue, choice.value),\n\t\t\t\t\t})\n\t\t\t\t)\n\n\t\t\t\tbreak\n\t\t\t// Directory select\n\t\t\t// File select\n\t\t\tcase 'directory': {\n\t\t\t\tif (fieldDefinition.isArray) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t\t'isArray file field not supported, prompt needs to be rewritten with isArray support',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst dirPath = path.join(\n\t\t\t\t\tfieldDefinition.defaultValue?.path ?? this.cwd,\n\t\t\t\t\t'/'\n\t\t\t\t)\n\n\t\t\t\tpromptOptions.type = 'file'\n\t\t\t\tpromptOptions.root = dirPath\n\t\t\t\tpromptOptions.onlyShowDir = true\n\n\t\t\t\t// Only let people select an actual file\n\t\t\t\tpromptOptions.validate = (value: string) => {\n\t\t\t\t\treturn fs.existsSync(value) && fs.lstatSync(value).isDirectory()\n\t\t\t\t}\n\t\t\t\t// Strip out cwd from the paths while selecting\n\t\t\t\tpromptOptions.transformer = (path: string) => {\n\t\t\t\t\tconst cleanedPath = path.replace(promptOptions.root, '')\n\t\t\t\t\treturn cleanedPath.length === 0 ? promptOptions.root : cleanedPath\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'file': {\n\t\t\t\tif (fieldDefinition.isArray) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t\t'isArray file field not supported, prompt needs to be rewritten with isArray support',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tconst dirPath = path.join(\n\t\t\t\t\tfieldDefinition.defaultValue?.uri ?? this.cwd,\n\t\t\t\t\t'/'\n\t\t\t\t)\n\n\t\t\t\t// Check if directory is empty.\n\t\t\t\tconst files = await globby(`${dirPath}**/*`)\n\n\t\t\t\tif (files.length === 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'DIRECTORY_EMPTY',\n\t\t\t\t\t\tdirectory: dirPath,\n\t\t\t\t\t\tfriendlyMessage: `I wanted to help you select a file, but none exist in ${dirPath}.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tpromptOptions.type = 'file'\n\t\t\t\tpromptOptions.root = dirPath\n\n\t\t\t\t// Only let people select an actual file\n\t\t\t\tpromptOptions.validate = (value: string) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tfs.existsSync(value) &&\n\t\t\t\t\t\t!fs.lstatSync(value).isDirectory() &&\n\t\t\t\t\t\tpath.extname(value) === '.ts'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\t// Strip out cwd from the paths while selecting\n\t\t\t\tpromptOptions.transformer = (path: string) => {\n\t\t\t\t\tconst cleanedPath = path.replace(promptOptions.root, '')\n\t\t\t\t\treturn cleanedPath.length === 0 ? promptOptions.root : cleanedPath\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Defaults to input\n\t\t\tdefault:\n\t\t\t\tpromptOptions.type = 'input'\n\t\t}\n\n\t\tconst response = (await inquirer.prompt(promptOptions)) as any\n\n\t\tthis.isPromptActive = false\n\n\t\tconst result =\n\t\t\ttypeof response[name] !== 'undefined'\n\t\t\t\t? (field as IField<any>).toValueType(response[name])\n\t\t\t\t: response[name]\n\n\t\treturn result\n\t}\n\tprivate generatePromptLabel(fieldDefinition: FieldDefinitions): any {\n\t\tlet label = fieldDefinition.label\n\n\t\tif (fieldDefinition.hint) {\n\t\t\tlabel = `${label} ${chalk.italic.dim(`(${fieldDefinition.hint})`)}`\n\t\t}\n\n\t\tlabel = label + ': '\n\n\t\treturn label\n\t}\n\n\tpublic renderError(err: Error) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.stopLoading()\n\n\t\tconst message = err.message\n\t\t// Remove message from stack so the message is not doubled up\n\t\tconst stackLines = this.cleanStack(err)\n\t\tthis.renderSection({\n\t\t\theadline: message,\n\t\t\tlines: this.renderStackTraces ? stackLines.splice(0, 100) : undefined,\n\t\t\theadlineEffects: [GraphicsTextEffect.Bold, GraphicsTextEffect.Red],\n\t\t\tdividerEffects: [GraphicsTextEffect.Red],\n\t\t\tbodyEffects: [GraphicsTextEffect.Red],\n\t\t})\n\t}\n\n\tprivate cleanStack(err: Error) {\n\t\tconst message = err.message\n\t\tlet stack = err.stack ? err.stack.replace(message, '') : ''\n\n\t\tif (err instanceof AbstractSpruceError) {\n\t\t\tlet original = err.originalError\n\t\t\twhile (original) {\n\t\t\t\tstack = stack.replace('Error: ' + original.message, '')\n\t\t\t\toriginal = (original as AbstractSpruceError).originalError\n\t\t\t}\n\t\t}\n\n\t\tconst stackLines = stack.split('\\n')\n\n\t\treturn stackLines\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.removeProgressBar()\n\t\tthis.progressBar = terminal.progressBar({\n\t\t\t...options,\n\t\t\tpercent: options.showPercent,\n\t\t\teta: options.showEta,\n\t\t\titems: options.totalItems,\n\t\t\tinline: options.renderInline,\n\t\t})\n\t}\n\n\tpublic removeProgressBar() {\n\t\tif (this.progressBar) {\n\t\t\tthis.progressBar.stop()\n\t\t\tthis.progressBar = null\n\t\t}\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tif (this.progressBar) {\n\t\t\tthis.progressBar.update({\n\t\t\t\t...options,\n\t\t\t\titems: options.totalItems,\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\tconst image = await terminalImage.file(path, options)\n\t\tthis.renderLine(image)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\treturn new Promise((resolve) => {\n\t\t\tterminal.requestCursorLocation()\n\t\t\tterminal.getCursorLocation((err, x, y) => {\n\t\t\t\tresolve(err ? null : { x: x ?? 0, y: y ?? 0 })\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic saveCursor() {\n\t\tterminal.saveCursor()\n\t}\n\n\tpublic restoreCursor() {\n\t\tterminal.restoreCursor()\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tterminal.moveTo(x, y)\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tterminal.eraseDisplayBelow()\n\t}\n\n\tpublic eraseLine() {\n\t\tterminal.eraseLine()\n\t}\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TerminalInterface.js","names":["_path","_interopRequireDefault","require","_error","_globby","_schema","_spruceSkillUtils","_cfonts","_chalk","_cliTable","_emphasize","_fsExtra","_inquirer","_lodash","_interopRequireWildcard","_ora","_terminalKit","_SpruceError","_feature","_graphicsInterface","_duration","_isCi","_process","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","_createForOfIteratorHelper","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","done","value","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","terminalImage","fieldCount","generateInquirerFieldName","concat","filterEffectsForCFonts","effects","effect","GraphicsTextEffect","SpruceHeader","Reset","Bold","Dim","Italic","Underline","Inverse","Hidden","Strikethrough","Visible","indexOf","TerminalInterface","exports","cwd","renderStackTraces","undefined","log","console","bind","_classCallCheck2","_createClass2","key","_sendInput","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","Error","stop","sendInput","renderLines","lines","_this","line","renderLine","renderObject","object","_this2","Green","renderDivider","chalk","bold","JSON","stringify","renderSection","options","headline","_options$dividerEffec","dividerEffects","_options$headlineEffe","headlineEffects","Blue","_options$bodyEffects","bodyEffects","renderHeadline","bar","renderActionSummary","results","_results$files$filter","_results$files","_results$files$filter2","_results$files2","_results$files$filter3","_results$files3","_results$errors","_results$packagesInst","_results$summaryLines","_this3","generatedFiles","files","action","updatedFiles","skippedFiles","errors","packagesInstalled","renderHero","summaryLines","_toConsumableArray2","featuresUtil","generateCommand","featureCode","actionCode","table","Table","head","colWidths","wordWrap","colAligns","sort","one","two","pkg","isDev","_i","_arr","_iterator","_step","_file$description","file","description","namesUtil","toPascal","hints","renderError","totalTime","durationUtil","msToFriendly","message","isSpruce","doesSupportColor","fonts","say","font","align","space","colors","setTitle","title","process","stdout","write","shouldStripVowels","columns","stripped","replace","toLowerCase","gradient","Red","renderHint","eraseBeforeRender","terminal","eraseLine","renderWarning","Yellow","_startLoading","_callee2","_callee2$","_context2","stopLoading","loader","ora","text","start","startLoading","_x","_stopLoading","_callee3","_TerminalInterface$lo","_callee3$","_context3","_confirm","_callee4","question","confirmResult","_callee4$","_context4","inquirer","prompt","type","sent","abrupt","answer","confirm","_x2","_waitForEnter","_callee5","_callee5$","_context5","label","bgGreenBright","black","waitForEnter","_x3","clear","renderCodeSample","code","colored","emphasize","highlight","_prompt","_callee6","definition","fieldDefinition","defaultValue","promptOptions","field","_fieldDefinition$defa","_fieldDefinition$defa2","dirPath","_fieldDefinition$defa3","_fieldDefinition$defa4","_dirPath","response","result","_callee6$","_context6","isPromptActive","generatePromptLabel","FieldFactory","Field","transformer","toValueType","validate","areSchemaValuesValid","id","fields","t0","choices","map","choice","checked","_","includes","SpruceError","friendlyMessage","path","join","root","onlyShowDir","fs","existsSync","lstatSync","isDirectory","cleanedPath","uri","globby","directory","extname","_x4","hint","italic","dim","stackLines","cleanStack","splice","stack","AbstractSpruceError","original","originalError","split","renderProgressBar","removeProgressBar","progressBar","percent","showPercent","eta","showEta","items","totalItems","inline","renderInline","updateProgressBar","update","_renderImage","_callee7","image","_callee7$","_context7","renderImage","_x5","_x6","_getCursorPosition","_callee8","_callee8$","_context8","Promise","resolve","requestCursorLocation","getCursorLocation","x","y","getCursorPosition","saveCursor","restoreCursor","moveCursorTo","moveTo","clearBelowCursor","eraseDisplayBelow","_doesSupportColor","setDoesSupportColor","isTTy","isTTY","isCi"],"sources":["../../src/interfaces/TerminalInterface.ts"],"sourcesContent":["import path from 'path'\nimport AbstractSpruceError from '@sprucelabs/error'\nimport globby from '@sprucelabs/globby'\nimport {\n\tFieldFactory,\n\tFieldDefinitionValueType,\n\tareSchemaValuesValid,\n} from '@sprucelabs/schema'\nimport { IField } from '@sprucelabs/schema'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\n// @ts-ignore\nimport fonts from 'cfonts'\nimport chalk from 'chalk'\n// @ts-ignore No definition available\nimport Table from 'cli-table3'\n// @ts-ignore No definition available\nimport emphasize from 'emphasize'\nimport fs from 'fs-extra'\nimport inquirer from 'inquirer'\nimport _ from 'lodash'\nimport { filter } from 'lodash'\nimport ora from 'ora'\nimport { terminal } from 'terminal-kit'\nimport { ProgressBarController } from 'terminal-kit/Terminal'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport SpruceError from '../errors/SpruceError'\nimport featuresUtil from '../features/feature.utilities'\nimport { ExecutionResults, GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tImageDimensions,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport isCi from '../utilities/isCi'\nconst terminalImage = require('terminal-image')\n\nlet fieldCount = 0\nfunction generateInquirerFieldName() {\n\tfieldCount++\n\treturn `field-${fieldCount}`\n}\n\n/** Remove effects cfonts does not support */\nfunction filterEffectsForCFonts(effects: GraphicsTextEffect[]) {\n\treturn filter(\n\t\teffects,\n\t\t(effect) =>\n\t\t\t[\n\t\t\t\tGraphicsTextEffect.SpruceHeader,\n\t\t\t\tGraphicsTextEffect.Reset,\n\t\t\t\tGraphicsTextEffect.Bold,\n\t\t\t\tGraphicsTextEffect.Dim,\n\t\t\t\tGraphicsTextEffect.Italic,\n\t\t\t\tGraphicsTextEffect.Underline,\n\t\t\t\tGraphicsTextEffect.Inverse,\n\t\t\t\tGraphicsTextEffect.Hidden,\n\t\t\t\tGraphicsTextEffect.Strikethrough,\n\t\t\t\tGraphicsTextEffect.Visible,\n\t\t\t].indexOf(effect) === -1\n\t)\n}\n\ntype TerminalSpecificOptions = {\n\teraseBeforeRender?: boolean\n}\n\nexport default class TerminalInterface implements GraphicsInterface {\n\tpublic isPromptActive = false\n\tpublic cwd: string\n\tprivate renderStackTraces = false\n\tprivate static loader?: ora.Ora | null\n\tprivate progressBar: ProgressBarController | null = null\n\tprivate static _doesSupportColor = process?.stdout?.isTTY && !isCi()\n\tprivate log: (...args: any[]) => void\n\n\tpublic constructor(\n\t\tcwd: string,\n\t\trenderStackTraces = false,\n\t\tlog = console.log.bind(console)\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.renderStackTraces = renderStackTraces\n\t\tthis.log = log\n\t}\n\n\tpublic static doesSupportColor() {\n\t\treturn this._doesSupportColor\n\t}\n\n\tpublic static setDoesSupportColor(isTTy: boolean) {\n\t\tthis._doesSupportColor = isTTy\n\t}\n\n\tpublic async sendInput(): Promise<void> {\n\t\tthrow new Error('sendInput not supported on the TerminalInterface!')\n\t}\n\n\tpublic renderLines(lines: any[], effects?: GraphicsTextEffect[]) {\n\t\tlines.forEach((line) => {\n\t\t\tthis.renderLine(line, effects)\n\t\t})\n\t}\n\n\tpublic renderObject(\n\t\tobject: Record<string, any>,\n\t\teffects: GraphicsTextEffect[] = [GraphicsTextEffect.Green]\n\t) {\n\t\tthis.renderLine('')\n\t\tthis.renderDivider()\n\t\tthis.renderLine('')\n\t\tObject.keys(object).forEach((key) => {\n\t\t\tthis.renderLine(\n\t\t\t\t`${chalk.bold(key)}: ${\n\t\t\t\t\ttypeof object[key] === 'string'\n\t\t\t\t\t\t? object[key]\n\t\t\t\t\t\t: JSON.stringify(object[key])\n\t\t\t\t}`,\n\t\t\t\teffects\n\t\t\t)\n\t\t})\n\t\tthis.renderLine('')\n\t\tthis.renderDivider()\n\t\tthis.renderLine('')\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline?: string\n\t\tlines?: string[]\n\t\tobject?: Record<string, any>\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t}) {\n\t\tconst {\n\t\t\theadline,\n\t\t\tlines,\n\t\t\tobject,\n\t\t\tdividerEffects = [],\n\t\t\theadlineEffects = [GraphicsTextEffect.Blue, GraphicsTextEffect.Bold],\n\t\t\tbodyEffects = [GraphicsTextEffect.Green],\n\t\t} = options\n\n\t\tif (headline) {\n\t\t\tthis.renderHeadline(`${headline} 🌲🤖`, headlineEffects, dividerEffects)\n\t\t}\n\n\t\tif (lines) {\n\t\t\tthis.renderLines(lines, bodyEffects)\n\n\t\t\tthis.renderLine('')\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t}\n\n\t\tif (object) {\n\t\t\tthis.renderObject(object, bodyEffects)\n\t\t}\n\n\t\tthis.renderLine('')\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[]) {\n\t\tconst bar = '=================================================='\n\t\tthis.renderLine(bar, effects)\n\t}\n\n\tpublic renderActionSummary(\n\t\tresults: ExecutionResults & { totalTime?: number }\n\t) {\n\t\tconst generatedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'generated') ?? []\n\t\tconst updatedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'updated') ?? []\n\t\tconst skippedFiles =\n\t\t\tresults.files?.filter((f) => f.action === 'skipped') ?? []\n\n\t\tconst errors = results.errors ?? []\n\t\tconst packagesInstalled = results.packagesInstalled ?? []\n\n\t\tthis.renderHero(`${results.headline}`)\n\n\t\tlet summaryLines: string[] = [\n\t\t\terrors.length > 0 ? `Errors: ${errors.length}` : null,\n\t\t\tgeneratedFiles.length > 0\n\t\t\t\t? `Generated files: ${generatedFiles.length}`\n\t\t\t\t: null,\n\t\t\tupdatedFiles.length > 0 ? `Updated files: ${updatedFiles.length}` : null,\n\t\t\tskippedFiles.length > 0 ? `Skipped files: ${skippedFiles.length}` : null,\n\t\t\tpackagesInstalled.length > 0\n\t\t\t\t? `NPM packages installed: ${packagesInstalled.length}`\n\t\t\t\t: null,\n\t\t\t...(results.summaryLines ?? []),\n\t\t].filter((line) => !!line) as string[]\n\n\t\tif (summaryLines.length === 0) {\n\t\t\tsummaryLines.push('Nothing to report!')\n\t\t}\n\t\tthis.renderSection({\n\t\t\theadline: `${featuresUtil.generateCommand(\n\t\t\t\tresults.featureCode,\n\t\t\t\tresults.actionCode\n\t\t\t)} summary`,\n\t\t\tlines: summaryLines,\n\t\t})\n\n\t\tif (packagesInstalled.length > 0) {\n\t\t\tconst table = new Table({\n\t\t\t\thead: ['Name', 'Dev'],\n\t\t\t\tcolWidths: [40, 5],\n\t\t\t\twordWrap: true,\n\t\t\t\tcolAligns: ['left', 'center'],\n\t\t\t})\n\t\t\tpackagesInstalled\n\t\t\t\t.sort((one, two) => (one.name > two.name ? 1 : -1))\n\t\t\t\t.forEach((pkg) => {\n\t\t\t\t\ttable.push([pkg.name, pkg.isDev ? '√' : ''])\n\t\t\t\t})\n\n\t\t\tthis.renderSection({\n\t\t\t\theadline: `NPM packages summary`,\n\t\t\t\tlines: [table.toString()],\n\t\t\t})\n\t\t}\n\n\t\tfor (let files of [generatedFiles, updatedFiles]) {\n\t\t\tif (files.length > 0) {\n\t\t\t\tconst table = new Table({\n\t\t\t\t\thead: ['File', 'Description'],\n\t\t\t\t\twordWrap: true,\n\t\t\t\t})\n\n\t\t\t\tfiles = files.sort()\n\n\t\t\t\tfor (const file of files) {\n\t\t\t\t\ttable.push([file.name, file.description ?? ''])\n\t\t\t\t}\n\n\t\t\t\tthis.renderSection({\n\t\t\t\t\theadline: `${namesUtil.toPascal(files[0].action)} file summary`,\n\t\t\t\t\tlines: [table.toString()],\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tif (results.hints) {\n\t\t\tthis.renderSection({\n\t\t\t\theadline: 'Read below 👇',\n\t\t\t\tlines: results.hints,\n\t\t\t})\n\t\t}\n\n\t\tif (errors.length > 0) {\n\t\t\tthis.renderHeadline('Errors')\n\t\t\terrors.forEach((err) => this.renderError(err))\n\t\t}\n\n\t\tif (results.totalTime) {\n\t\t\tthis.renderLine(\n\t\t\t\t`Total time: ${durationUtil.msToFriendly(results.totalTime)}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[] = [\n\t\t\tGraphicsTextEffect.Blue,\n\t\t\tGraphicsTextEffect.Bold,\n\t\t],\n\t\tdividerEffects: GraphicsTextEffect[] = []\n\t) {\n\t\tconst isSpruce = effects.indexOf(GraphicsTextEffect.SpruceHeader) > -1\n\n\t\tif (isSpruce && TerminalInterface.doesSupportColor()) {\n\t\t\tfonts.say(message, {\n\t\t\t\tfont: GraphicsTextEffect.SpruceHeader,\n\t\t\t\talign: 'left',\n\t\t\t\tspace: false,\n\t\t\t\tcolors: filterEffectsForCFonts(effects),\n\t\t\t})\n\t\t} else {\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t\tthis.renderLine(message, effects)\n\t\t\tthis.renderDivider(dividerEffects)\n\t\t\tthis.renderLine('')\n\t\t}\n\t}\n\n\tpublic setTitle(title: string): void {\n\t\tprocess.stdout.write('\\x1b]2;' + title + '\\x07')\n\t}\n\n\tpublic renderHero(message: string, effects?: GraphicsTextEffect[]) {\n\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\tthis.renderLine(message)\n\t\t\treturn\n\t\t}\n\n\t\tconst shouldStripVowels = process.stdout.columns < 80\n\n\t\tlet stripped = shouldStripVowels\n\t\t\t? message.replace(/[aeiou]/gi, '')\n\t\t\t: message\n\n\t\tif (\n\t\t\tshouldStripVowels &&\n\t\t\t['a', 'e', 'i', 'o', 'u'].indexOf(message[0].toLowerCase()) > -1\n\t\t) {\n\t\t\tstripped = `${message[0]}${stripped}`\n\t\t}\n\n\t\tfonts.say(stripped, {\n\t\t\talign: 'left',\n\t\t\tgradient: [GraphicsTextEffect.Red, GraphicsTextEffect.Blue],\n\t\t\tcolors: effects ? filterEffectsForCFonts(effects) : undefined,\n\t\t})\n\t}\n\n\tpublic renderHint(message: string) {\n\t\treturn this.renderLine(`👨‍🏫 ${message}`)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: any,\n\t\teffects: GraphicsTextEffect[] = [],\n\t\toptions?: TerminalSpecificOptions\n\t) {\n\t\tlet write: any = chalk\n\t\teffects.forEach((effect) => {\n\t\t\twrite = write[effect]\n\t\t})\n\n\t\tif (options?.eraseBeforeRender) {\n\t\t\tterminal.eraseLine()\n\t\t}\n\n\t\tthis.log(effects.length > 0 ? write(message) : message)\n\t}\n\n\tpublic renderWarning(message: string) {\n\t\tthis.renderLine(`⚠️ ${message}`, [\n\t\t\tGraphicsTextEffect.Bold,\n\t\t\tGraphicsTextEffect.Yellow,\n\t\t])\n\t}\n\n\tpublic async startLoading(message?: string) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.stopLoading()\n\t\tTerminalInterface.loader = ora({\n\t\t\ttext: message,\n\t\t}).start()\n\t}\n\n\tpublic async stopLoading() {\n\t\tTerminalInterface.loader?.stop()\n\t\tTerminalInterface.loader = null\n\t}\n\n\tpublic async confirm(question: string): Promise<boolean> {\n\t\tconst confirmResult = await inquirer.prompt({\n\t\t\ttype: 'confirm',\n\t\t\tname: 'answer',\n\t\t\tmessage: question,\n\t\t})\n\n\t\treturn !!confirmResult.answer\n\t}\n\n\tpublic async waitForEnter(message?: string) {\n\t\tawait this.prompt({\n\t\t\ttype: 'text',\n\t\t\tlabel: `${message ? message + ' ' : ''}${chalk.bgGreenBright.black(\n\t\t\t\t'hit enter'\n\t\t\t)}`,\n\t\t})\n\t\tthis.renderLine('')\n\t\treturn\n\t}\n\n\tpublic clear() {\n\t\tvoid this.stopLoading()\n\t\tconsole.clear()\n\t}\n\n\tpublic renderCodeSample(code: string) {\n\t\ttry {\n\t\t\tconst colored = emphasize.highlight('js', code).value\n\t\t\tthis.renderLine(colored)\n\t\t} catch (err: any) {\n\t\t\tthis.renderWarning(err)\n\t\t}\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(\n\t\tdefinition: T\n\t): Promise<FieldDefinitionValueType<T>> {\n\t\tthis.isPromptActive = true\n\t\tconst name = generateInquirerFieldName()\n\t\tconst fieldDefinition: FieldDefinitions = definition\n\t\tconst { defaultValue } = fieldDefinition\n\n\t\tconst promptOptions: Record<string, any> = {\n\t\t\tdefault: defaultValue,\n\t\t\tname,\n\t\t\tmessage: this.generatePromptLabel(fieldDefinition),\n\t\t}\n\n\t\tconst field = FieldFactory.Field('prompt', fieldDefinition)\n\n\t\tpromptOptions.transformer = (value: string) => {\n\t\t\treturn (field as IField<any>).toValueType(value)\n\t\t}\n\n\t\tpromptOptions.validate = (value: string) => {\n\t\t\treturn areSchemaValuesValid(\n\t\t\t\t{\n\t\t\t\t\tid: 'promptvalidateschema',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tprompt: fieldDefinition,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ prompt: value }\n\t\t\t)\n\t\t\t// return field.validate(value, {}).length === 0\n\t\t}\n\n\t\tswitch (fieldDefinition.type) {\n\t\t\t// Map select options to prompt list choices\n\t\t\tcase 'boolean':\n\t\t\t\tpromptOptions.type = 'confirm'\n\t\t\t\tbreak\n\n\t\t\tcase 'select':\n\t\t\t\tpromptOptions.type = fieldDefinition.isArray ? 'checkbox' : 'list'\n\n\t\t\t\tpromptOptions.choices = fieldDefinition.options.choices.map(\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t(choice) => ({\n\t\t\t\t\t\tname: choice.label,\n\t\t\t\t\t\tvalue: choice.value,\n\t\t\t\t\t\tchecked: _.includes(fieldDefinition.defaultValue, choice.value),\n\t\t\t\t\t})\n\t\t\t\t)\n\n\t\t\t\tbreak\n\t\t\t// Directory select\n\t\t\t// File select\n\t\t\tcase 'directory': {\n\t\t\t\tif (fieldDefinition.isArray) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t\t'isArray file field not supported, prompt needs to be rewritten with isArray support',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst dirPath = path.join(\n\t\t\t\t\tfieldDefinition.defaultValue?.path ?? this.cwd,\n\t\t\t\t\t'/'\n\t\t\t\t)\n\n\t\t\t\tpromptOptions.type = 'file'\n\t\t\t\tpromptOptions.root = dirPath\n\t\t\t\tpromptOptions.onlyShowDir = true\n\n\t\t\t\t// Only let people select an actual file\n\t\t\t\tpromptOptions.validate = (value: string) => {\n\t\t\t\t\treturn fs.existsSync(value) && fs.lstatSync(value).isDirectory()\n\t\t\t\t}\n\t\t\t\t// Strip out cwd from the paths while selecting\n\t\t\t\tpromptOptions.transformer = (path: string) => {\n\t\t\t\t\tconst cleanedPath = path.replace(promptOptions.root, '')\n\t\t\t\t\treturn cleanedPath.length === 0 ? promptOptions.root : cleanedPath\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'file': {\n\t\t\t\tif (fieldDefinition.isArray) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t\t'isArray file field not supported, prompt needs to be rewritten with isArray support',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tconst dirPath = path.join(\n\t\t\t\t\tfieldDefinition.defaultValue?.uri ?? this.cwd,\n\t\t\t\t\t'/'\n\t\t\t\t)\n\n\t\t\t\t// Check if directory is empty.\n\t\t\t\tconst files = await globby(`${dirPath}**/*`)\n\n\t\t\t\tif (files.length === 0) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'DIRECTORY_EMPTY',\n\t\t\t\t\t\tdirectory: dirPath,\n\t\t\t\t\t\tfriendlyMessage: `I wanted to help you select a file, but none exist in ${dirPath}.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tpromptOptions.type = 'file'\n\t\t\t\tpromptOptions.root = dirPath\n\n\t\t\t\t// Only let people select an actual file\n\t\t\t\tpromptOptions.validate = (value: string) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tfs.existsSync(value) &&\n\t\t\t\t\t\t!fs.lstatSync(value).isDirectory() &&\n\t\t\t\t\t\tpath.extname(value) === '.ts'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\t// Strip out cwd from the paths while selecting\n\t\t\t\tpromptOptions.transformer = (path: string) => {\n\t\t\t\t\tconst cleanedPath = path.replace(promptOptions.root, '')\n\t\t\t\t\treturn cleanedPath.length === 0 ? promptOptions.root : cleanedPath\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Defaults to input\n\t\t\tdefault:\n\t\t\t\tpromptOptions.type = 'input'\n\t\t}\n\n\t\tconst response = (await inquirer.prompt(promptOptions)) as any\n\n\t\tthis.isPromptActive = false\n\n\t\tconst result =\n\t\t\ttypeof response[name] !== 'undefined'\n\t\t\t\t? (field as IField<any>).toValueType(response[name])\n\t\t\t\t: response[name]\n\n\t\treturn result\n\t}\n\tprivate generatePromptLabel(fieldDefinition: FieldDefinitions): any {\n\t\tlet label = fieldDefinition.label\n\n\t\tif (fieldDefinition.hint) {\n\t\t\tlabel = `${label} ${chalk.italic.dim(`(${fieldDefinition.hint})`)}`\n\t\t}\n\n\t\tlabel = label + ': '\n\n\t\treturn label\n\t}\n\n\tpublic renderError(err: Error) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.stopLoading()\n\n\t\tconst message = err.message\n\t\t// Remove message from stack so the message is not doubled up\n\t\tconst stackLines = this.cleanStack(err)\n\t\tthis.renderSection({\n\t\t\theadline: message,\n\t\t\tlines: this.renderStackTraces ? stackLines.splice(0, 100) : undefined,\n\t\t\theadlineEffects: [GraphicsTextEffect.Bold, GraphicsTextEffect.Red],\n\t\t\tdividerEffects: [GraphicsTextEffect.Red],\n\t\t\tbodyEffects: [GraphicsTextEffect.Red],\n\t\t})\n\t}\n\n\tprivate cleanStack(err: Error) {\n\t\tconst message = err.message\n\t\tlet stack = err.stack ? err.stack.replace(message, '') : ''\n\n\t\tif (err instanceof AbstractSpruceError) {\n\t\t\tlet original = err.originalError\n\t\t\twhile (original) {\n\t\t\t\tstack = stack.replace('Error: ' + original.message, '')\n\t\t\t\toriginal = (original as AbstractSpruceError).originalError\n\t\t\t}\n\t\t}\n\n\t\tconst stackLines = stack.split('\\n')\n\n\t\treturn stackLines\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.removeProgressBar()\n\t\tthis.progressBar = terminal.progressBar({\n\t\t\t...options,\n\t\t\tpercent: options.showPercent,\n\t\t\teta: options.showEta,\n\t\t\titems: options.totalItems,\n\t\t\tinline: options.renderInline,\n\t\t})\n\t}\n\n\tpublic removeProgressBar() {\n\t\tif (this.progressBar) {\n\t\t\tthis.progressBar.stop()\n\t\t\tthis.progressBar = null\n\t\t}\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tif (this.progressBar) {\n\t\t\tthis.progressBar.update({\n\t\t\t\t...options,\n\t\t\t\titems: options.totalItems,\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\tconst image = await terminalImage.file(path, options)\n\t\tthis.renderLine(image)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\treturn new Promise((resolve) => {\n\t\t\tterminal.requestCursorLocation()\n\t\t\tterminal.getCursorLocation((err, x, y) => {\n\t\t\t\tresolve(err ? null : { x: x ?? 0, y: y ?? 0 })\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic saveCursor() {\n\t\tterminal.saveCursor()\n\t}\n\n\tpublic restoreCursor() {\n\t\tterminal.restoreCursor()\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tterminal.moveTo(x, y)\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tterminal.eraseDisplayBelow()\n\t}\n\n\tpublic eraseLine() {\n\t\tterminal.eraseLine()\n\t}\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { SettingsService, EnvService, AuthService } from '@sprucelabs/spruce-skill-utils';
2
- import EventSettingsService from '../features/event/services/EventSettingsService';
2
+ import EventCacheService from '../features/event/services/EventCacheService';
3
3
  import RemoteService from '../features/event/services/RemoteService';
4
4
  import SchemaService from '../features/schema/services/SchemaService';
5
5
  import VsCodeService from '../features/vscode/services/VsCodeService';
@@ -12,6 +12,7 @@ import PkgService from './PkgService';
12
12
  import TypeCheckerService from './TypeCheckerService';
13
13
  export default class ServiceFactory {
14
14
  static serviceClassOverides: Record<string, any>;
15
+ static setServiceClass(name: Service, Class: any): void;
15
16
  Service<S extends Service>(cwd: string, type: S): ServiceMap[S];
16
17
  private buildImportService;
17
18
  static reset(): void;
@@ -30,7 +31,7 @@ export interface ServiceMap {
30
31
  env: EnvService;
31
32
  auth: AuthService;
32
33
  remote: RemoteService;
33
- eventSettings: EventSettingsService;
34
+ eventCache: EventCacheService;
34
35
  dependency: DependencyService;
35
36
  }
36
37
  export type Service = keyof ServiceMap;
@@ -9,7 +9,7 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
12
- var _EventSettingsService = _interopRequireDefault(require("../features/event/services/EventSettingsService"));
12
+ var _EventCacheService = _interopRequireDefault(require("../features/event/services/EventCacheService"));
13
13
  var _RemoteService = _interopRequireDefault(require("../features/event/services/RemoteService"));
14
14
  var _SchemaService = _interopRequireDefault(require("../features/schema/services/SchemaService"));
15
15
  var _VsCodeService = _interopRequireDefault(require("../features/vscode/services/VsCodeService"));
@@ -36,9 +36,7 @@ var ServiceFactory = exports["default"] = /*#__PURE__*/function () {
36
36
  return Service;
37
37
  }(function (cwd, type) {
38
38
  var _this = this;
39
- if (ServiceFactory.serviceClassOverides[type]) {
40
- return new ServiceFactory.serviceClassOverides[type](cwd);
41
- }
39
+ var Class = ServiceFactory.serviceClassOverides[type];
42
40
  switch (type) {
43
41
  case 'auth':
44
42
  return _spruceSkillUtils.AuthService.Auth(cwd);
@@ -66,7 +64,8 @@ var ServiceFactory = exports["default"] = /*#__PURE__*/function () {
66
64
  case 'typeChecker':
67
65
  return new _TypeCheckerService["default"](this.buildImportService(cwd));
68
66
  case 'settings':
69
- return new _spruceSkillUtils.SettingsService(cwd);
67
+ //@ts-ignore
68
+ return new (Class !== null && Class !== void 0 ? Class : _spruceSkillUtils.SettingsService)(cwd);
70
69
  case 'dependency':
71
70
  return new _DependencyService["default"](new _spruceSkillUtils.SettingsService(cwd));
72
71
  case 'import':
@@ -78,8 +77,8 @@ var ServiceFactory = exports["default"] = /*#__PURE__*/function () {
78
77
  return _this.Service(cwd, 'command');
79
78
  }));
80
79
  }
81
- case 'eventSettings':
82
- return new _EventSettingsService["default"](new _spruceSkillUtils.SettingsService(cwd));
80
+ case 'eventCache':
81
+ return new (Class !== null && Class !== void 0 ? Class : _EventCacheService["default"])(new _spruceSkillUtils.SettingsService(cwd));
83
82
  default:
84
83
  throw new Error("Service \"".concat(type, "\" not found"));
85
84
  }
@@ -93,6 +92,11 @@ var ServiceFactory = exports["default"] = /*#__PURE__*/function () {
93
92
  });
94
93
  }
95
94
  }], [{
95
+ key: "setServiceClass",
96
+ value: function setServiceClass(name, Class) {
97
+ this.serviceClassOverides[name] = Class;
98
+ }
99
+ }, {
96
100
  key: "reset",
97
101
  value: function reset() {
98
102
  this.serviceClassOverides = {};
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceFactory.js","names":["_spruceSkillUtils","require","_EventSettingsService","_interopRequireDefault","_RemoteService","_SchemaService","_VsCodeService","_BuildService","_CommandService","_DependencyService","_ImportService","_LintService","_PkgService","_TypeCheckerService","ServiceFactory","exports","_classCallCheck2","_createClass2","key","value","_Service","Service","_x","_x2","apply","arguments","toString","cwd","type","_this","serviceClassOverides","AuthService","Auth","PkgService","EnvService","VsCodeService","SchemaService","command","CommandService","LintService","RemoteService","TypeCheckerService","buildImportService","SettingsService","DependencyService","commandService","BuildService","EventSettingsService","Error","concat","ImportService","reset","setFactoryClass","name","Class","_defineProperty2"],"sources":["../../src/services/ServiceFactory.ts"],"sourcesContent":["import {\n\tSettingsService,\n\tEnvService,\n\tAuthService,\n} from '@sprucelabs/spruce-skill-utils'\nimport EventSettingsService from '../features/event/services/EventSettingsService'\nimport RemoteService from '../features/event/services/RemoteService'\nimport { FeatureCode } from '../features/features.types'\nimport SchemaService from '../features/schema/services/SchemaService'\nimport VsCodeService from '../features/vscode/services/VsCodeService'\nimport BuildService from './BuildService'\nimport CommandService from './CommandService'\nimport DependencyService from './DependencyService'\nimport ImportService from './ImportService'\nimport LintService from './LintService'\nimport PkgService from './PkgService'\nimport TypeCheckerService from './TypeCheckerService'\n\nexport default class ServiceFactory {\n\tpublic static serviceClassOverides: Record<string, any> = {}\n\n\tpublic Service<S extends Service>(cwd: string, type: S): ServiceMap[S] {\n\t\tif (ServiceFactory.serviceClassOverides[type]) {\n\t\t\treturn new ServiceFactory.serviceClassOverides[type](cwd) as ServiceMap[S]\n\t\t}\n\n\t\tswitch (type) {\n\t\t\tcase 'auth':\n\t\t\t\treturn AuthService.Auth(cwd) as ServiceMap[S]\n\t\t\tcase 'pkg':\n\t\t\t\treturn new PkgService(\n\t\t\t\t\tcwd,\n\t\t\t\t\tthis.Service(cwd, 'command')\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'env':\n\t\t\t\treturn new EnvService(cwd) as ServiceMap[S]\n\t\t\tcase 'vsCode':\n\t\t\t\treturn new VsCodeService(cwd) as ServiceMap[S]\n\t\t\tcase 'schema':\n\t\t\t\treturn new SchemaService({\n\t\t\t\t\tcwd,\n\t\t\t\t\tcommand: new CommandService(cwd),\n\t\t\t\t}) as ServiceMap[S]\n\t\t\tcase 'lint':\n\t\t\t\treturn new LintService(cwd, () =>\n\t\t\t\t\tthis.Service(cwd, 'command')\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'command': {\n\t\t\t\treturn new CommandService(cwd) as ServiceMap[S]\n\t\t\t}\n\t\t\tcase 'remote':\n\t\t\t\treturn new RemoteService(new EnvService(cwd)) as ServiceMap[S]\n\t\t\tcase 'typeChecker':\n\t\t\t\treturn new TypeCheckerService(\n\t\t\t\t\tthis.buildImportService(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'settings':\n\t\t\t\treturn new SettingsService<FeatureCode>(cwd) as ServiceMap[S]\n\t\t\tcase 'dependency':\n\t\t\t\treturn new DependencyService(\n\t\t\t\t\tnew SettingsService<FeatureCode>(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'import':\n\t\t\t\treturn this.buildImportService(cwd) as ServiceMap[S]\n\t\t\tcase 'build': {\n\t\t\t\tconst commandService = new CommandService(cwd)\n\t\t\t\treturn new BuildService(\n\t\t\t\t\tcommandService,\n\t\t\t\t\tnew LintService(cwd, () => this.Service(cwd, 'command'))\n\t\t\t\t) as ServiceMap[S]\n\t\t\t}\n\t\t\tcase 'eventSettings':\n\t\t\t\treturn new EventSettingsService(\n\t\t\t\t\tnew SettingsService(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Service \"${type}\" not found`)\n\t\t}\n\t}\n\n\tprivate buildImportService(cwd: string): ImportService {\n\t\treturn new ImportService({\n\t\t\tcwd,\n\t\t\tcommand: new CommandService(cwd),\n\t\t})\n\t}\n\n\tpublic static reset() {\n\t\tthis.serviceClassOverides = {}\n\t}\n\n\tpublic static setFactoryClass(name: string, Class: any) {\n\t\tthis.serviceClassOverides[name] = Class\n\t}\n}\n\nexport interface ServiceMap {\n\tpkg: PkgService\n\tvsCode: VsCodeService\n\tschema: SchemaService\n\tlint: LintService\n\tcommand: CommandService\n\ttypeChecker: TypeCheckerService\n\timport: ImportService\n\tbuild: BuildService\n\tsettings: SettingsService\n\tenv: EnvService\n\tauth: AuthService\n\tremote: RemoteService\n\teventSettings: EventSettingsService\n\tdependency: DependencyService\n}\n\nexport type Service = keyof ServiceMap\n\nexport interface ServiceProvider {\n\tService<S extends Service>(type: S, cwd?: string): ServiceMap[S]\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ServiceFactory.js","names":["_spruceSkillUtils","require","_EventCacheService","_interopRequireDefault","_RemoteService","_SchemaService","_VsCodeService","_BuildService","_CommandService","_DependencyService","_ImportService","_LintService","_PkgService","_TypeCheckerService","ServiceFactory","exports","_classCallCheck2","_createClass2","key","value","_Service","Service","_x","_x2","apply","arguments","toString","cwd","type","_this","Class","serviceClassOverides","AuthService","Auth","PkgService","EnvService","VsCodeService","SchemaService","command","CommandService","LintService","RemoteService","TypeCheckerService","buildImportService","SettingsService","DependencyService","commandService","BuildService","EventCacheService","Error","concat","ImportService","setServiceClass","name","reset","setFactoryClass","_defineProperty2"],"sources":["../../src/services/ServiceFactory.ts"],"sourcesContent":["import {\n\tSettingsService,\n\tEnvService,\n\tAuthService,\n} from '@sprucelabs/spruce-skill-utils'\nimport EventCacheService from '../features/event/services/EventCacheService'\nimport RemoteService from '../features/event/services/RemoteService'\nimport { FeatureCode } from '../features/features.types'\nimport SchemaService from '../features/schema/services/SchemaService'\nimport VsCodeService from '../features/vscode/services/VsCodeService'\nimport BuildService from './BuildService'\nimport CommandService from './CommandService'\nimport DependencyService from './DependencyService'\nimport ImportService from './ImportService'\nimport LintService from './LintService'\nimport PkgService from './PkgService'\nimport TypeCheckerService from './TypeCheckerService'\n\nexport default class ServiceFactory {\n\tpublic static serviceClassOverides: Record<string, any> = {}\n\n\tpublic static setServiceClass(name: Service, Class: any) {\n\t\tthis.serviceClassOverides[name] = Class\n\t}\n\n\tpublic Service<S extends Service>(cwd: string, type: S): ServiceMap[S] {\n\t\tconst Class = ServiceFactory.serviceClassOverides[type] as any\n\n\t\tswitch (type) {\n\t\t\tcase 'auth':\n\t\t\t\treturn AuthService.Auth(cwd) as ServiceMap[S]\n\t\t\tcase 'pkg':\n\t\t\t\treturn new PkgService(\n\t\t\t\t\tcwd,\n\t\t\t\t\tthis.Service(cwd, 'command')\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'env':\n\t\t\t\treturn new EnvService(cwd) as ServiceMap[S]\n\t\t\tcase 'vsCode':\n\t\t\t\treturn new VsCodeService(cwd) as ServiceMap[S]\n\t\t\tcase 'schema':\n\t\t\t\treturn new SchemaService({\n\t\t\t\t\tcwd,\n\t\t\t\t\tcommand: new CommandService(cwd),\n\t\t\t\t}) as ServiceMap[S]\n\t\t\tcase 'lint':\n\t\t\t\treturn new LintService(cwd, () =>\n\t\t\t\t\tthis.Service(cwd, 'command')\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'command': {\n\t\t\t\treturn new CommandService(cwd) as ServiceMap[S]\n\t\t\t}\n\t\t\tcase 'remote':\n\t\t\t\treturn new RemoteService(new EnvService(cwd)) as ServiceMap[S]\n\t\t\tcase 'typeChecker':\n\t\t\t\treturn new TypeCheckerService(\n\t\t\t\t\tthis.buildImportService(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'settings':\n\t\t\t\t//@ts-ignore\n\t\t\t\treturn new (Class ?? SettingsService)<FeatureCode>(cwd) as ServiceMap[S]\n\t\t\tcase 'dependency':\n\t\t\t\treturn new DependencyService(\n\t\t\t\t\tnew SettingsService<FeatureCode>(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tcase 'import':\n\t\t\t\treturn this.buildImportService(cwd) as ServiceMap[S]\n\t\t\tcase 'build': {\n\t\t\t\tconst commandService = new CommandService(cwd)\n\t\t\t\treturn new BuildService(\n\t\t\t\t\tcommandService,\n\t\t\t\t\tnew LintService(cwd, () => this.Service(cwd, 'command'))\n\t\t\t\t) as ServiceMap[S]\n\t\t\t}\n\t\t\tcase 'eventCache':\n\t\t\t\treturn new (Class ?? EventCacheService)(\n\t\t\t\t\tnew SettingsService(cwd)\n\t\t\t\t) as ServiceMap[S]\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Service \"${type}\" not found`)\n\t\t}\n\t}\n\n\tprivate buildImportService(cwd: string): ImportService {\n\t\treturn new ImportService({\n\t\t\tcwd,\n\t\t\tcommand: new CommandService(cwd),\n\t\t})\n\t}\n\n\tpublic static reset() {\n\t\tthis.serviceClassOverides = {}\n\t}\n\n\tpublic static setFactoryClass(name: string, Class: any) {\n\t\tthis.serviceClassOverides[name] = Class\n\t}\n}\n\nexport interface ServiceMap {\n\tpkg: PkgService\n\tvsCode: VsCodeService\n\tschema: SchemaService\n\tlint: LintService\n\tcommand: CommandService\n\ttypeChecker: TypeCheckerService\n\timport: ImportService\n\tbuild: BuildService\n\tsettings: SettingsService\n\tenv: EnvService\n\tauth: AuthService\n\tremote: RemoteService\n\teventCache: EventCacheService\n\tdependency: DependencyService\n}\n\nexport type Service = keyof ServiceMap\n\nexport interface ServiceProvider {\n\tService<S extends Service>(type: S, cwd?: string): ServiceMap[S]\n}\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AAKA,IAAAC,kBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,cAAA,GAAAD,sBAAA,CAAAF,OAAA;AAEA,IAAAI,cAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,cAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,aAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,eAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,kBAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,cAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,YAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,WAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,mBAAA,GAAAV,sBAAA,CAAAF,OAAA;AAAqD,IAEhCa,cAAc,GAAAC,OAAA;EAAA,SAAAD,eAAA;IAAA,IAAAE,gBAAA,mBAAAF,cAAA;EAAA;EAAA,WAAAG,aAAA,aAAAH,cAAA;IAAAI,GAAA;IAAAC,KAAA,YAAAC,QAAA;MAAA,SAAAC,QAAAC,EAAA,EAAAC,GAAA;QAAA,OAAAH,QAAA,CAAAI,KAAA,OAAAC,SAAA;MAAA;MAAAJ,OAAA,CAAAK,QAAA;QAAA,OAAAN,QAAA,CAAAM,QAAA;MAAA;MAAA,OAAAL,OAAA;IAAA,EAOlC,UAAkCM,GAAW,EAAEC,IAAO,EAAiB;MAAA,IAAAC,KAAA;MACtE,IAAMC,KAAK,GAAGhB,cAAc,CAACiB,oBAAoB,CAACH,IAAI,CAAQ;MAE9D,QAAQA,IAAI;QACX,KAAK,MAAM;UACV,OAAOI,6BAAW,CAACC,IAAI,CAACN,GAAG,CAAC;QAC7B,KAAK,KAAK;UACT,OAAO,IAAIO,sBAAU,CACpBP,GAAG,EACH,IAAI,CAACN,OAAO,CAACM,GAAG,EAAE,SAAS,CAC5B,CAAC;QACF,KAAK,KAAK;UACT,OAAO,IAAIQ,4BAAU,CAACR,GAAG,CAAC;QAC3B,KAAK,QAAQ;UACZ,OAAO,IAAIS,yBAAa,CAACT,GAAG,CAAC;QAC9B,KAAK,QAAQ;UACZ,OAAO,IAAIU,yBAAa,CAAC;YACxBV,GAAG,EAAHA,GAAG;YACHW,OAAO,EAAE,IAAIC,0BAAc,CAACZ,GAAG;UAChC,CAAC,CAAC;QACH,KAAK,MAAM;UACV,OAAO,IAAIa,uBAAW,CAACb,GAAG,EAAE;YAAA,OAC3BE,KAAI,CAACR,OAAO,CAACM,GAAG,EAAE,SAAS,CAAC;UAAA,CAC7B,CAAC;QACF,KAAK,SAAS;UAAE;YACf,OAAO,IAAIY,0BAAc,CAACZ,GAAG,CAAC;UAC/B;QACA,KAAK,QAAQ;UACZ,OAAO,IAAIc,yBAAa,CAAC,IAAIN,4BAAU,CAACR,GAAG,CAAC,CAAC;QAC9C,KAAK,aAAa;UACjB,OAAO,IAAIe,8BAAkB,CAC5B,IAAI,CAACC,kBAAkB,CAAChB,GAAG,CAC5B,CAAC;QACF,KAAK,UAAU;UACd;UACA,OAAO,KAAKG,KAAK,aAALA,KAAK,cAALA,KAAK,GAAIc,iCAAe,EAAejB,GAAG,CAAC;QACxD,KAAK,YAAY;UAChB,OAAO,IAAIkB,6BAAiB,CAC3B,IAAID,iCAAe,CAAcjB,GAAG,CACrC,CAAC;QACF,KAAK,QAAQ;UACZ,OAAO,IAAI,CAACgB,kBAAkB,CAAChB,GAAG,CAAC;QACpC,KAAK,OAAO;UAAE;YACb,IAAMmB,cAAc,GAAG,IAAIP,0BAAc,CAACZ,GAAG,CAAC;YAC9C,OAAO,IAAIoB,wBAAY,CACtBD,cAAc,EACd,IAAIN,uBAAW,CAACb,GAAG,EAAE;cAAA,OAAME,KAAI,CAACR,OAAO,CAACM,GAAG,EAAE,SAAS,CAAC;YAAA,EACxD,CAAC;UACF;QACA,KAAK,YAAY;UAChB,OAAO,KAAKG,KAAK,aAALA,KAAK,cAALA,KAAK,GAAIkB,6BAAiB,EACrC,IAAIJ,iCAAe,CAACjB,GAAG,CACxB,CAAC;QACF;UACC,MAAM,IAAIsB,KAAK,cAAAC,MAAA,CAAatB,IAAI,iBAAa,CAAC;MAChD;IACD,CAAC;EAAA;IAAAV,GAAA;IAAAC,KAAA,EAED,SAAAwB,mBAA2BhB,GAAW,EAAiB;MACtD,OAAO,IAAIwB,yBAAa,CAAC;QACxBxB,GAAG,EAAHA,GAAG;QACHW,OAAO,EAAE,IAAIC,0BAAc,CAACZ,GAAG;MAChC,CAAC,CAAC;IACH;EAAC;IAAAT,GAAA;IAAAC,KAAA,EAnED,SAAAiC,gBAA8BC,IAAa,EAAEvB,KAAU,EAAE;MACxD,IAAI,CAACC,oBAAoB,CAACsB,IAAI,CAAC,GAAGvB,KAAK;IACxC;EAAC;IAAAZ,GAAA;IAAAC,KAAA,EAmED,SAAAmC,MAAA,EAAsB;MACrB,IAAI,CAACvB,oBAAoB,GAAG,CAAC,CAAC;IAC/B;EAAC;IAAAb,GAAA;IAAAC,KAAA,EAED,SAAAoC,gBAA8BF,IAAY,EAAEvB,KAAU,EAAE;MACvD,IAAI,CAACC,oBAAoB,CAACsB,IAAI,CAAC,GAAGvB,KAAK;IACxC;EAAC;AAAA;AAAA,IAAA0B,gBAAA,aA9EmB1C,cAAc,0BACwB,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  ]
18
18
  },
19
19
  "license": "MIT",
20
- "version": "20.0.1",
20
+ "version": "20.0.3",
21
21
  "bin": {
22
22
  "spruce": "./build/index.js"
23
23
  },
@@ -75,24 +75,24 @@
75
75
  "@babel/plugin-proposal-decorators": "^7.24.1",
76
76
  "@babel/runtime": "^7.24.1",
77
77
  "@jest/reporters": "^29.7.0",
78
- "@sprucelabs/error": "^5.1.82",
79
- "@sprucelabs/globby": "^1.0.21",
80
- "@sprucelabs/heartwood-view-controllers": "^109.7.0",
81
- "@sprucelabs/jest-json-reporter": "^7.0.188",
82
- "@sprucelabs/mercury-client": "^41.0.351",
83
- "@sprucelabs/mercury-event-emitter": "^41.0.351",
84
- "@sprucelabs/mercury-types": "^46.0.269",
85
- "@sprucelabs/schema": "^29.4.31",
86
- "@sprucelabs/spruce-core-schemas": "^39.0.265",
87
- "@sprucelabs/spruce-event-utils": "^38.1.10",
88
- "@sprucelabs/spruce-skill-utils": "^30.3.27",
89
- "@sprucelabs/spruce-templates": "^20.0.1",
78
+ "@sprucelabs/error": "^5.1.101",
79
+ "@sprucelabs/globby": "^1.0.32",
80
+ "@sprucelabs/heartwood-view-controllers": "^109.7.29",
81
+ "@sprucelabs/jest-json-reporter": "^7.0.202",
82
+ "@sprucelabs/mercury-client": "^41.0.375",
83
+ "@sprucelabs/mercury-event-emitter": "^41.0.375",
84
+ "@sprucelabs/mercury-types": "^46.0.291",
85
+ "@sprucelabs/schema": "^29.4.50",
86
+ "@sprucelabs/spruce-core-schemas": "^39.0.284",
87
+ "@sprucelabs/spruce-event-utils": "^38.1.32",
88
+ "@sprucelabs/spruce-skill-utils": "^30.4.19",
89
+ "@sprucelabs/spruce-templates": "^20.0.3",
90
90
  "@typescript-eslint/eslint-plugin": "^5.27.1",
91
91
  "@typescript-eslint/parser": "^5.27.1",
92
92
  "cfonts": "^3.2.0",
93
93
  "chalk": "4.1.2",
94
94
  "chokidar": "^3.6.0",
95
- "cli-table3": "^0.6.3",
95
+ "cli-table3": "^0.6.4",
96
96
  "commander": "7.2.0",
97
97
  "emphasize": "4.2.0",
98
98
  "fs-extra": "^11.2.0",
@@ -113,29 +113,29 @@
113
113
  "uuid": "^9.0.1"
114
114
  },
115
115
  "devDependencies": {
116
- "@sprucelabs/data-stores": "^26.4.58",
116
+ "@sprucelabs/data-stores": "^26.4.80",
117
117
  "@sprucelabs/jest-sheets-reporter": "^3.0.26",
118
- "@sprucelabs/mercury-core-events": "^22.2.54",
119
- "@sprucelabs/resolve-path-aliases": "^1.1.291",
120
- "@sprucelabs/spruce-conversation-plugin": "^61.0.0",
121
- "@sprucelabs/spruce-deploy-plugin": "^61.0.0",
122
- "@sprucelabs/spruce-store-plugin": "^61.0.0",
123
- "@sprucelabs/spruce-test-fixtures": "^61.0.0",
124
- "@sprucelabs/test": "^8.0.45",
125
- "@sprucelabs/test-utils": "^4.0.129",
118
+ "@sprucelabs/mercury-core-events": "^22.2.78",
119
+ "@sprucelabs/resolve-path-aliases": "^1.1.303",
120
+ "@sprucelabs/spruce-conversation-plugin": "^61.1.22",
121
+ "@sprucelabs/spruce-deploy-plugin": "^61.1.22",
122
+ "@sprucelabs/spruce-store-plugin": "^61.1.22",
123
+ "@sprucelabs/spruce-test-fixtures": "^61.1.22",
124
+ "@sprucelabs/test": "^8.0.49",
125
+ "@sprucelabs/test-utils": "^4.0.148",
126
126
  "@types/blessed": "^0.1.25",
127
127
  "@types/eslint": "^8.56.6",
128
128
  "@types/fs-extra": "^11.0.4",
129
129
  "@types/inquirer": "^8.2.1",
130
130
  "@types/lodash": "^4.17.0",
131
131
  "@types/md5": "^2.3.5",
132
- "@types/node": "^20.11.30",
132
+ "@types/node": "^20.12.2",
133
133
  "@types/promise.allsettled": "^1.0.6",
134
134
  "@types/ps-node": "^0.1.3",
135
135
  "@types/semver": "^7.5.8",
136
136
  "@types/sha1": "^1.1.5",
137
137
  "@types/slug": "^5.0.8",
138
- "@types/superagent": "^8.1.5",
138
+ "@types/superagent": "^8.1.6",
139
139
  "@types/terminal-kit": "^2.5.6",
140
140
  "@types/uuid": "^9.0.8",
141
141
  "chokidar-cli": "^3.0.0",
@@ -153,7 +153,7 @@
153
153
  "ps-node": "^0.1.6",
154
154
  "ts-jest": "^29.1.2",
155
155
  "ts-node": "^10.9.2",
156
- "tsc-watch": "^6.0.4",
156
+ "tsc-watch": "^6.2.0",
157
157
  "tsconfig-paths": "^4.2.0"
158
158
  },
159
159
  "testSkillCache": {
@@ -590,5 +590,5 @@
590
590
  "terminal-kit"
591
591
  ]
592
592
  },
593
- "gitHead": "19fa45255f1b3e1b38cd2c157f000fc28dbfc320"
593
+ "gitHead": "c14160020667b0dc501c54d740e75b159e577bd1"
594
594
  }
@@ -170,7 +170,7 @@ export default class UpgradingASkill5Test extends AbstractCliTest {
170
170
  }
171
171
 
172
172
  private static Settings() {
173
- return this.Service('eventSettings')
173
+ return this.Service('eventCache')
174
174
  }
175
175
  }
176
176
 
@@ -0,0 +1,38 @@
1
+ import {
2
+ HASH_SPRUCE_DIR,
3
+ SettingsService,
4
+ diskUtil,
5
+ } from '@sprucelabs/spruce-skill-utils'
6
+ import { assert, test } from '@sprucelabs/test-utils'
7
+ import EventCacheService from '../../features/event/services/EventCacheService'
8
+ import ServiceFactory from '../../services/ServiceFactory'
9
+ import AbstractCliTest from '../../tests/AbstractCliTest'
10
+
11
+ export default class EventCacheServiceTest extends AbstractCliTest {
12
+ @test()
13
+ protected static async writesToHashSpruceCacheJson() {
14
+ ServiceFactory.serviceClassOverides['eventCache'] = SpyEventCacheService
15
+ ServiceFactory.serviceClassOverides['settings'] = SpySettingsService
16
+
17
+ const settings = this.Service('eventCache') as SpyEventCacheService
18
+ const expected = diskUtil.resolvePath(
19
+ this.cwd,
20
+ HASH_SPRUCE_DIR,
21
+ 'event-cache.json'
22
+ )
23
+ const actual = settings.getCacheFilePath()
24
+ assert.isEqual(actual, expected)
25
+ }
26
+ }
27
+
28
+ class SpyEventCacheService extends EventCacheService {
29
+ public getCacheFilePath() {
30
+ return (this.settings as SpySettingsService).getSettingsPath()
31
+ }
32
+ }
33
+
34
+ class SpySettingsService extends SettingsService<string> {
35
+ public getSettingsPath() {
36
+ return super.getSettingsPath()
37
+ }
38
+ }
@@ -94,7 +94,7 @@ export default class EventFeature extends AbstractFeature {
94
94
  }
95
95
 
96
96
  if (featureCode === 'node' || featureCode === 'upgrade') {
97
- const settings = this.Service('eventSettings')
97
+ const settings = this.Service('eventCache')
98
98
  settings.clearListenerCache()
99
99
  }
100
100
 
@@ -177,7 +177,7 @@ export default class EventFeature extends AbstractFeature {
177
177
  private async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {
178
178
  const isInstalled = await this.features.isInstalled(this.code)
179
179
 
180
- const lastSync = this.Service('eventSettings').getLastSyncOptions()
180
+ const lastSync = this.Service('eventCache').getLastSyncOptions()
181
181
 
182
182
  if (lastSync && isInstalled) {
183
183
  const writer = this.getEventContractBuilder()
@@ -25,7 +25,7 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
25
25
  }
26
26
  }
27
27
 
28
- this.Service('eventSettings').setLastSyncOptions(options)
28
+ this.Service('eventCache').setLastSyncCache(options)
29
29
 
30
30
  const schemaSyncResults = await this.Action('schema', 'sync').execute({})
31
31
 
@@ -1,16 +1,18 @@
1
1
  import { SettingsService } from '@sprucelabs/spruce-skill-utils'
2
2
 
3
- export default class EventSettingsService {
4
- private settings: SettingsService<string>
3
+ export default class EventCacheService {
4
+ protected settings: SettingsService<string>
5
+
5
6
  public constructor(settings: SettingsService) {
6
7
  this.settings = settings
8
+ this.settings.setFile('event-cache.json')
7
9
  }
8
10
 
9
11
  public getLastSyncOptions() {
10
12
  return this.settings.get('events.lastSync')
11
13
  }
12
14
 
13
- public setLastSyncOptions(options: {
15
+ public setLastSyncCache(options: {
14
16
  shouldSyncOnlyCoreEvents?: boolean | null
15
17
  }) {
16
18
  this.settings.set('events.lastSync', options)
@@ -7,10 +7,6 @@ import actionUtil from '../../../utilities/action.utility'
7
7
  import AbstractAction from '../../AbstractAction'
8
8
  import { FeatureActionResponse } from '../../features.types'
9
9
 
10
- type OptionsSchema =
11
- SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptionsSchema
12
- type Options = SchemaValues<OptionsSchema>
13
-
14
10
  export default class UpgradeAction extends AbstractAction<OptionsSchema> {
15
11
  public invocationMessage = 'Upgrading your skill... 💪'
16
12
  public optionsSchema = upgradeSkillActionSchema
@@ -77,3 +73,7 @@ export default class UpgradeAction extends AbstractAction<OptionsSchema> {
77
73
  })
78
74
  }
79
75
  }
76
+
77
+ type OptionsSchema =
78
+ SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptionsSchema
79
+ type Options = SchemaValues<OptionsSchema>
@@ -14,7 +14,7 @@ const universalFileDescriptions: FileDescription[] = [
14
14
  {
15
15
  path: '.gitignore',
16
16
  description: 'The usual suspects.',
17
- shouldOverwriteWhenChanged: false,
17
+ shouldOverwriteWhenChanged: true,
18
18
  },
19
19
  {
20
20
  path: '.npmignore',