@shopify/cli-kit 3.12.0 → 3.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/analytics.js +1 -1
- package/dist/analytics.js.map +1 -1
- package/dist/api/graphql/create_app.d.ts +1 -0
- package/dist/api/graphql/create_app.js +1 -0
- package/dist/api/graphql/create_app.js.map +1 -1
- package/dist/api/graphql/find_app.d.ts +1 -0
- package/dist/api/graphql/find_app.js +1 -0
- package/dist/api/graphql/find_app.js.map +1 -1
- package/dist/api/graphql/find_org.d.ts +1 -0
- package/dist/api/graphql/find_org.js +1 -0
- package/dist/api/graphql/find_org.js.map +1 -1
- package/dist/api.d.ts +2 -1
- package/dist/api.js +2 -1
- package/dist/api.js.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/file.d.ts +3 -0
- package/dist/file.js +3 -0
- package/dist/file.js.map +1 -1
- package/dist/git.d.ts +20 -0
- package/dist/git.js +53 -0
- package/dist/git.js.map +1 -1
- package/dist/http.d.ts +1 -0
- package/dist/http.js +1 -0
- package/dist/http.js.map +1 -1
- package/dist/node/cli.d.ts +6 -0
- package/dist/node/cli.js +38 -12
- package/dist/node/cli.js.map +1 -1
- package/dist/node/ruby.d.ts +2 -1
- package/dist/node/ruby.js +3 -2
- package/dist/node/ruby.js.map +1 -1
- package/dist/path.d.ts +2 -2
- package/dist/path.js +2 -2
- package/dist/path.js.map +1 -1
- package/dist/session/store.js +2 -1
- package/dist/session/store.js.map +1 -1
- package/dist/store.d.ts +5 -0
- package/dist/store.js +10 -1
- package/dist/store.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/inquirer/autocomplete.js +0 -3
- package/dist/ui/inquirer/autocomplete.js.map +1 -1
- package/dist/ui.d.ts +2 -2
- package/dist/ui.js.map +1 -1
- package/package.json +2 -2
|
@@ -15,9 +15,6 @@ export class CustomAutocomplete extends AutocompletePrompt {
|
|
|
15
15
|
let bottomContent = '';
|
|
16
16
|
if (this.status !== 'answered') {
|
|
17
17
|
content += colors.gray('… ');
|
|
18
|
-
if (!this.isAutocomplete) {
|
|
19
|
-
process.stdout.write('\u001b[?25l');
|
|
20
|
-
}
|
|
21
18
|
}
|
|
22
19
|
if (this.status === 'answered') {
|
|
23
20
|
content += `${colors.dim('·')} ${colors.magenta(this.shortAnswer || this.answerName || this.answer)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../../src/ui/inquirer/autocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAA;AAC3C,OAAO,kBAAkB,MAAM,8BAA8B,CAAA;AAG7D,6CAA6C;AAC7C,OAAO,SAAS,MAAM,iCAAiC,CAAA;AAGvD,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IAGxD,YAAY,SAA8C,EAAE,EAAa,EAAE,OAAyB;QAClG,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1C,UAAU,EAAE,KAAK;SAClB,CAAC,CAAA;IACJ,CAAC;IAES,MAAM,CAAC,KAAc;QAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAChC,IAAI,aAAa,GAAG,EAAE,CAAA;QAEtB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;YAC9B,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../../src/ui/inquirer/autocomplete.ts"],"names":[],"mappings":"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","sourcesContent":["import {colors} from '../../node/colors.js'\nimport AutocompletePrompt from 'inquirer-autocomplete-prompt'\nimport DistinctChoice from 'inquirer/lib/objects/choices'\nimport inquirer from 'inquirer'\n// eslint-disable-next-line import/extensions\nimport Paginator from 'inquirer/lib/utils/paginator.js'\nimport {Interface} from 'readline'\n\nexport class CustomAutocomplete extends AutocompletePrompt {\n protected isAutocomplete: boolean\n\n constructor(questions: inquirer.Question<inquirer.Answers>, rl: Interface, answers: inquirer.Answers) {\n super(questions, rl, answers)\n this.isAutocomplete = true\n this.paginator = new Paginator(this.screen, {\n isInfinite: false,\n })\n }\n\n protected render(error?: string) {\n let content = this.getQuestion()\n let bottomContent = ''\n\n if (this.status !== 'answered') {\n content += colors.gray('… ')\n }\n\n if (this.status === 'answered') {\n content += `${colors.dim('·')} ${colors.magenta(this.shortAnswer || this.answerName || this.answer)}`\n process.stdout.write('\\u001b[?25h')\n } else if (this.searching) {\n content += this.rl.line\n bottomContent += ` ${colors.magenta.dim('Searching...')}`\n } else if (this.nbChoices) {\n const choicesStr = listRender(this.currentChoices, this.selected, this.isAutocomplete ? this.rl.line : undefined)\n content += this.isAutocomplete ? this.rl.line : ''\n const indexPosition = this.selected\n let realIndexPosition = 0\n this.currentChoices.choices.every((choice, index: number) => {\n if (index > indexPosition) {\n return false\n }\n if (choice.type === 'separator') {\n return true\n }\n const name = choice.name\n realIndexPosition += name ? name.split('\\n').length : 0\n return true\n })\n bottomContent += this.paginator.paginate(choicesStr, realIndexPosition, this.isAutocomplete ? 10 : 500)\n } else {\n content += this.rl.line\n bottomContent += ` ${colors.magenta('No matching choices')}`\n }\n\n if (error) {\n bottomContent += `\\n${colors.magenta('>> ')}${error}`\n }\n\n this.firstRender = false\n\n this.screen.render(content, bottomContent)\n }\n\n protected getQuestion(): string {\n return `${this.prefix()} ${colors.bold(this.opt.message)}${this.opt.suffix}${colors.reset(' ')}`\n }\n\n protected prefix(): string {\n const color = colors.magenta.bold\n return this.status === 'answered' ? color('✔') : color('?')\n }\n}\n\nfunction listRender(choices: DistinctChoice, pointer: number, searchToken?: string): string {\n let output = ''\n let separatorOffset = 0\n\n choices.forEach((choice, i: number) => {\n if (choice.type === 'separator') {\n separatorOffset++\n if (choice.line.includes('──────────────')) {\n output += `\\n`\n } else {\n output += ` ${colors.dim.underline(choice)}\\n`\n }\n return\n }\n\n if (choice.disabled) {\n separatorOffset++\n output += ` - ${choice.name}`\n output += ` (${typeof choice.disabled === 'string' ? choice.disabled : 'Disabled'})`\n output += '\\n'\n return\n }\n\n const isSelected = i - separatorOffset === pointer\n let line = (isSelected ? '> ' : ' ') + choice.name\n\n if (isSelected) {\n line = colors.magenta(line)\n }\n\n if (searchToken) {\n line = line\n .split(searchToken)\n .map((token) => (isSelected ? colors.magenta(token) : token))\n .join(colors.magenta.dim(searchToken))\n } else if (isSelected) {\n line = colors.magenta(line)\n }\n\n output += `${line} \\n`\n })\n\n return output.replace(/\\n$/, '')\n}\n"]}
|
package/dist/ui.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Listr as OriginalListr, ListrTask } from 'listr2';
|
|
2
|
-
export declare function newListr(tasks: ListrTask[], options?: object): OriginalListr<any, any, "verbose">;
|
|
1
|
+
import { Listr as OriginalListr, ListrTask, ListrBaseClassOptions } from 'listr2';
|
|
2
|
+
export declare function newListr(tasks: ListrTask[], options?: object | ListrBaseClassOptions): OriginalListr<any, any, "verbose">;
|
|
3
3
|
export declare type ListrTasks = ConstructorParameters<typeof OriginalListr>[0];
|
|
4
4
|
export type { ListrTaskWrapper, ListrDefaultRenderer, ListrTask } from 'listr2';
|
|
5
5
|
export interface Question<TName extends string = string> {
|
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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","sourcesContent":["import {CancelExecution, Abort} from './error.js'\nimport {remove, exists} from './file.js'\nimport {info, completed, content, token, logUpdate, Message, Logger, stringifyMessage} from './output.js'\nimport {colors} from './node/colors.js'\nimport {relative} from './path.js'\nimport {isTerminalInteractive} from './environment/local.js'\nimport {mapper as mapperUI, run as executorUI} from './ui/executor.js'\nimport {logToFile} from './log.js'\nimport {Listr as OriginalListr, ListrTask, ListrEvent, ListrTaskState} from 'listr2'\nimport findProcess from 'find-process'\n\nexport function newListr(tasks: ListrTask[], options?: object) {\n const listr = new OriginalListr(tasks, options)\n listr.tasks.forEach((task) => {\n const loggedSubtaskTitles: string[] = []\n task.subscribe((event: ListrEvent) => {\n if (event.type === 'TITLE' && typeof event.data === 'string') {\n logToFile(event.data, 'INFO')\n }\n })\n task.renderHook$.subscribe(() => {\n if (task.hasSubtasks()) {\n const activeSubtasks = task.subtasks.filter((subtask) => {\n return [ListrTaskState.PENDING, ListrTaskState.COMPLETED].includes(subtask.state as ListrTaskState)\n })\n activeSubtasks.forEach((subtask) => {\n if (subtask.title && !loggedSubtaskTitles.includes(subtask.title)) {\n loggedSubtaskTitles.push(subtask.title)\n logToFile(subtask.title, 'INFO')\n }\n })\n }\n })\n })\n return listr\n}\n\nexport type ListrTasks = ConstructorParameters<typeof OriginalListr>[0]\nexport type {ListrTaskWrapper, ListrDefaultRenderer, ListrTask} from 'listr2'\n\nexport interface Question<TName extends string = string> {\n name: TName\n message: string\n preface?: string\n validate?: (value: string) => string | true\n default?: string\n result?: (value: string) => string | boolean\n type: 'input' | 'select' | 'autocomplete' | 'password'\n choices?: QuestionChoiceType[]\n}\n\nexport interface QuestionChoiceType {\n name: string\n value: string\n group?: {name: string; order: number}\n}\n\nconst started = (content: Message, logger: Logger) => {\n const message = `${colors.yellow('❯')} ${stringifyMessage(content)}`\n info(message, logger)\n}\n\nconst failed = (content: Message, logger: Logger) => {\n const message = `${colors.red('✖')} ${stringifyMessage(content)}`\n info(message, logger)\n}\n\n/**\n * Performs a task with the title kept up to date and stdout available to the\n * task while it runs (there is no re-writing stdout while the task runs).\n */\nexport interface TaskOptions {\n title: string\n task: () => Promise<void | {successMessage: string}>\n}\nexport const task = async ({title, task}: TaskOptions) => {\n let success\n started(title, logUpdate)\n try {\n const result = await task()\n success = result?.successMessage || title\n } catch (err) {\n failed(title, logUpdate)\n logUpdate.done()\n throw err\n }\n completed(success, logUpdate)\n logUpdate.done()\n}\nexport const prompt = async <\n TName extends string & keyof TAnswers,\n TAnswers extends {[key in TName]: string} = {[key in TName]: string},\n>(\n questions: ReadonlyArray<Question<TName>>,\n): Promise<TAnswers> => {\n if (!isTerminalInteractive() && questions.length !== 0) {\n throw new Abort(content`\nThe CLI prompted in a non-interactive terminal with the following questions:\n${token.json(questions)}\n `)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mappedQuestions: any[] = questions.map(mapperUI)\n const value = {} as TAnswers\n for (const question of mappedQuestions) {\n if (question.preface) {\n info(question.preface)\n }\n\n // eslint-disable-next-line no-await-in-loop\n value[question.name as TName] = await executorUI(question)\n\n logPromptResults(question.message, value[question.name as TName])\n }\n return value\n}\n\nfunction logPromptResults(questionName: string, answer: string) {\n logToFile([questionName, answer].join(' '), 'INFO')\n}\n\nexport async function nonEmptyDirectoryPrompt(directory: string) {\n if (await exists(directory)) {\n const options = [\n {name: 'No, don’t delete the files', value: 'abort'},\n {name: 'Yes, delete the files', value: 'overwrite'},\n ]\n\n const relativeDirectory = relative(process.cwd(), directory)\n\n const questions: Question<'value'> = {\n type: 'select',\n name: 'value',\n message: `${relativeDirectory} is not an empty directory. Do you want to delete the existing files and continue?`,\n choices: options,\n }\n\n const choice = await prompt([questions])\n\n if (choice.value === 'abort') {\n throw new CancelExecution()\n }\n\n await remove(directory)\n }\n}\n\nexport async function terminateBlockingPortProcessPrompt(port: number, stepDescription?: string): Promise<boolean> {\n const stepDescriptionContent = stepDescription ?? 'current step'\n\n const processInfo = await findProcess('port', port)\n const formattedProcessName =\n processInfo && processInfo.length > 0 && processInfo[0]?.name\n ? ` ${content`${token.italic(`(${processInfo[0].name})`)}`.value}`\n : ''\n\n const options = [\n {name: 'Yes, terminate process in order to log in now', value: 'finish'},\n {name: `No, cancel command and try later`, value: 'cancel'},\n ]\n\n const choice = await prompt([\n {\n type: 'select',\n name: 'value',\n message: `${stepDescriptionContent} requires a port ${port} that's unavailable because it's running another process${formattedProcessName}. Terminate that process? `,\n choices: options,\n },\n ])\n return choice.value === 'finish'\n}\n\nexport const keypress = async () => {\n process.stdin.setRawMode(true)\n process.stdin.resume()\n return new Promise<void>((resolve) =>\n process.stdin.once('data', () => {\n process.stdin.setRawMode(false)\n resolve()\n }),\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,KAAK,EAAC,MAAM,YAAY,CAAA;AACjD,OAAO,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,WAAW,CAAA;AACxC,OAAO,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAmB,gBAAgB,EAAC,MAAM,aAAa,CAAA;AACzG,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAClC,OAAO,EAAC,qBAAqB,EAAC,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAC,MAAM,IAAI,QAAQ,EAAE,GAAG,IAAI,UAAU,EAAC,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAClC,OAAO,EAAC,KAAK,IAAI,aAAa,EAAyB,cAAc,EAAwB,MAAM,QAAQ,CAAA;AAC3G,OAAO,WAAW,MAAM,cAAc,CAAA;AAEtC,MAAM,UAAU,QAAQ,CAAC,KAAkB,EAAE,OAAwC;IACnF,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC/C,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,mBAAmB,GAAa,EAAE,CAAA;QACxC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAiB,EAAE,EAAE;YACnC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC5D,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;aAC9B;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE;YAC9B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;oBACtD,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAuB,CAAC,CAAA;gBACrG,CAAC,CAAC,CAAA;gBACF,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACjC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACjE,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;wBACvC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;qBACjC;gBACH,CAAC,CAAC,CAAA;aACH;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC;AAsBD,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,MAAc,EAAE,EAAE;IACnD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAA;IACpE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAE,MAAc,EAAE,EAAE;IAClD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAA;IACjE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AACvB,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,EAAC,KAAK,EAAE,IAAI,EAAc,EAAE,EAAE;IACvD,IAAI,OAAO,CAAA;IACX,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACzB,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;QAC3B,OAAO,GAAG,MAAM,EAAE,cAAc,IAAI,KAAK,CAAA;KAC1C;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACxB,SAAS,CAAC,IAAI,EAAE,CAAA;QAChB,MAAM,GAAG,CAAA;KACV;IACD,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC7B,SAAS,CAAC,IAAI,EAAE,CAAA;AAClB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAIzB,SAAyC,EACtB,EAAE;IACrB,IAAI,CAAC,qBAAqB,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QACtD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAA;;EAEzB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;KAClB,CAAC,CAAA;KACH;IAED,8DAA8D;IAC9D,MAAM,eAAe,GAAU,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,EAAc,CAAA;IAC5B,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;QACtC,IAAI,QAAQ,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;SACvB;QAED,4CAA4C;QAC5C,KAAK,CAAC,QAAQ,CAAC,IAAa,CAAC,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAA;QAE1D,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAa,CAAC,CAAC,CAAA;KAClE;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,SAAS,gBAAgB,CAAC,YAAoB,EAAE,MAAc;IAC5D,SAAS,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,SAAiB;IAC7D,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM,OAAO,GAAG;YACd,EAAC,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAC;YACpD,EAAC,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAC;SACpD,CAAA;QAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAA;QAE5D,MAAM,SAAS,GAAsB;YACnC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,GAAG,iBAAiB,oFAAoF;YACjH,OAAO,EAAE,OAAO;SACjB,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;QAExC,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;YAC5B,MAAM,IAAI,eAAe,EAAE,CAAA;SAC5B;QAED,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;KACxB;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,IAAY,EAAE,eAAwB;IAC7F,MAAM,sBAAsB,GAAG,eAAe,IAAI,cAAc,CAAA;IAEhE,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnD,MAAM,oBAAoB,GACxB,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI;QAC3D,CAAC,CAAC,IAAI,OAAO,CAAA,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE;QAClE,CAAC,CAAC,EAAE,CAAA;IAER,MAAM,OAAO,GAAG;QACd,EAAC,IAAI,EAAE,+CAA+C,EAAE,KAAK,EAAE,QAAQ,EAAC;QACxE,EAAC,IAAI,EAAE,kCAAkC,EAAE,KAAK,EAAE,QAAQ,EAAC;KAC5D,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,GAAG,sBAAsB,oBAAoB,IAAI,2DAA2D,oBAAoB,4BAA4B;YACrK,OAAO,EAAE,OAAO;SACjB;KACF,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAA;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;IACjC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;IACtB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CACnC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QAC9B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAC/B,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CACH,CAAA;AACH,CAAC,CAAA","sourcesContent":["import {CancelExecution, Abort} from './error.js'\nimport {remove, exists} from './file.js'\nimport {info, completed, content, token, logUpdate, Message, Logger, stringifyMessage} from './output.js'\nimport {colors} from './node/colors.js'\nimport {relative} from './path.js'\nimport {isTerminalInteractive} from './environment/local.js'\nimport {mapper as mapperUI, run as executorUI} from './ui/executor.js'\nimport {logToFile} from './log.js'\nimport {Listr as OriginalListr, ListrTask, ListrEvent, ListrTaskState, ListrBaseClassOptions} from 'listr2'\nimport findProcess from 'find-process'\n\nexport function newListr(tasks: ListrTask[], options?: object | ListrBaseClassOptions) {\n const listr = new OriginalListr(tasks, options)\n listr.tasks.forEach((task) => {\n const loggedSubtaskTitles: string[] = []\n task.subscribe((event: ListrEvent) => {\n if (event.type === 'TITLE' && typeof event.data === 'string') {\n logToFile(event.data, 'INFO')\n }\n })\n task.renderHook$.subscribe(() => {\n if (task.hasSubtasks()) {\n const activeSubtasks = task.subtasks.filter((subtask) => {\n return [ListrTaskState.PENDING, ListrTaskState.COMPLETED].includes(subtask.state as ListrTaskState)\n })\n activeSubtasks.forEach((subtask) => {\n if (subtask.title && !loggedSubtaskTitles.includes(subtask.title)) {\n loggedSubtaskTitles.push(subtask.title)\n logToFile(subtask.title, 'INFO')\n }\n })\n }\n })\n })\n return listr\n}\n\nexport type ListrTasks = ConstructorParameters<typeof OriginalListr>[0]\nexport type {ListrTaskWrapper, ListrDefaultRenderer, ListrTask} from 'listr2'\n\nexport interface Question<TName extends string = string> {\n name: TName\n message: string\n preface?: string\n validate?: (value: string) => string | true\n default?: string\n result?: (value: string) => string | boolean\n type: 'input' | 'select' | 'autocomplete' | 'password'\n choices?: QuestionChoiceType[]\n}\n\nexport interface QuestionChoiceType {\n name: string\n value: string\n group?: {name: string; order: number}\n}\n\nconst started = (content: Message, logger: Logger) => {\n const message = `${colors.yellow('❯')} ${stringifyMessage(content)}`\n info(message, logger)\n}\n\nconst failed = (content: Message, logger: Logger) => {\n const message = `${colors.red('✖')} ${stringifyMessage(content)}`\n info(message, logger)\n}\n\n/**\n * Performs a task with the title kept up to date and stdout available to the\n * task while it runs (there is no re-writing stdout while the task runs).\n */\nexport interface TaskOptions {\n title: string\n task: () => Promise<void | {successMessage: string}>\n}\nexport const task = async ({title, task}: TaskOptions) => {\n let success\n started(title, logUpdate)\n try {\n const result = await task()\n success = result?.successMessage || title\n } catch (err) {\n failed(title, logUpdate)\n logUpdate.done()\n throw err\n }\n completed(success, logUpdate)\n logUpdate.done()\n}\nexport const prompt = async <\n TName extends string & keyof TAnswers,\n TAnswers extends {[key in TName]: string} = {[key in TName]: string},\n>(\n questions: ReadonlyArray<Question<TName>>,\n): Promise<TAnswers> => {\n if (!isTerminalInteractive() && questions.length !== 0) {\n throw new Abort(content`\nThe CLI prompted in a non-interactive terminal with the following questions:\n${token.json(questions)}\n `)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mappedQuestions: any[] = questions.map(mapperUI)\n const value = {} as TAnswers\n for (const question of mappedQuestions) {\n if (question.preface) {\n info(question.preface)\n }\n\n // eslint-disable-next-line no-await-in-loop\n value[question.name as TName] = await executorUI(question)\n\n logPromptResults(question.message, value[question.name as TName])\n }\n return value\n}\n\nfunction logPromptResults(questionName: string, answer: string) {\n logToFile([questionName, answer].join(' '), 'INFO')\n}\n\nexport async function nonEmptyDirectoryPrompt(directory: string) {\n if (await exists(directory)) {\n const options = [\n {name: 'No, don’t delete the files', value: 'abort'},\n {name: 'Yes, delete the files', value: 'overwrite'},\n ]\n\n const relativeDirectory = relative(process.cwd(), directory)\n\n const questions: Question<'value'> = {\n type: 'select',\n name: 'value',\n message: `${relativeDirectory} is not an empty directory. Do you want to delete the existing files and continue?`,\n choices: options,\n }\n\n const choice = await prompt([questions])\n\n if (choice.value === 'abort') {\n throw new CancelExecution()\n }\n\n await remove(directory)\n }\n}\n\nexport async function terminateBlockingPortProcessPrompt(port: number, stepDescription?: string): Promise<boolean> {\n const stepDescriptionContent = stepDescription ?? 'current step'\n\n const processInfo = await findProcess('port', port)\n const formattedProcessName =\n processInfo && processInfo.length > 0 && processInfo[0]?.name\n ? ` ${content`${token.italic(`(${processInfo[0].name})`)}`.value}`\n : ''\n\n const options = [\n {name: 'Yes, terminate process in order to log in now', value: 'finish'},\n {name: `No, cancel command and try later`, value: 'cancel'},\n ]\n\n const choice = await prompt([\n {\n type: 'select',\n name: 'value',\n message: `${stepDescriptionContent} requires a port ${port} that's unavailable because it's running another process${formattedProcessName}. Terminate that process? `,\n choices: options,\n },\n ])\n return choice.value === 'finish'\n}\n\nexport const keypress = async () => {\n process.stdin.setRawMode(true)\n process.stdin.resume()\n return new Promise<void>((resolve) =>\n process.stdin.once('data', () => {\n process.stdin.setRawMode(false)\n resolve()\n }),\n )\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shopify/cli-kit",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.13.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A set of utilities, interfaces, and models that are common across all the platform features",
|
|
6
6
|
"keywords": [
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"cross-zip": "^4.0.0",
|
|
86
86
|
"del": "^6.0.0",
|
|
87
87
|
"env-paths": "^3.0.0",
|
|
88
|
-
"envfile": "^6.
|
|
88
|
+
"envfile": "^6.18.0",
|
|
89
89
|
"execa": "^6.0.0",
|
|
90
90
|
"fast-glob": "^3.2.11",
|
|
91
91
|
"fastify": "^4.2.1",
|