@shopify/cli-hydrogen 0.31.0 → 0.33.2

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.
@@ -1,13 +1,12 @@
1
- import { s as semver, C as Command, H as HelpfulError, a as source } from '../../Command-bded1434.js';
2
- import 'path';
1
+ import { s as semver, c as cliHydrogenPackageJson, C as Command, H as HelpfulError, a as source } from '../../Command-fd93d525.js';
3
2
  import 'prettier';
4
- import { c as cliHydrogenPackageJson } from '../../package-fa31d133.js';
5
- import '@oclif/core';
3
+ import { output } from '@shopify/cli-kit';
6
4
  import 'fs';
7
5
  import 'constants';
8
6
  import 'stream';
9
7
  import 'util';
10
8
  import 'assert';
9
+ import 'path';
11
10
  import 'os';
12
11
  import 'events';
13
12
  import 'tty';
@@ -16,11 +15,11 @@ import 'buffer';
16
15
  import 'child_process';
17
16
  import 'string_decoder';
18
17
  import 'crypto';
19
- import '@shopify/cli-kit';
20
18
  import 'module';
21
19
  import 'vm';
22
20
  import 'url';
23
21
  import 'v8';
22
+ import '@oclif/core';
24
23
 
25
24
  async function addHydrogen() {
26
25
  this.package.install("@shopify/hydrogen");
@@ -115,7 +114,7 @@ class Check extends Command {
115
114
  this.interface.say(`${source.green.bold(`\u2022 No errors `)}${source.dim(`found in ${results.length} checks`)}`);
116
115
  }
117
116
  await fixChecks.call(this, results);
118
- console.log();
117
+ output.newline();
119
118
  }
120
119
  }
121
120
  Check.description = "Check a hydrogen app for common problems.";
@@ -135,22 +134,19 @@ function displayCheckResults(allCheckResults) {
135
134
  }, {});
136
135
  [...Object.entries(checksBySection)].forEach(([section, sectionResults]) => {
137
136
  const allChecksStatusEmoji = statusEmoji(sectionResults.every(({ success }) => success));
138
- console.log();
137
+ output.newline();
139
138
  this.interface.say(`${allChecksStatusEmoji} ${source.cyan.bold.underline(section)}`);
140
- console.log();
139
+ output.newline();
141
140
  sectionResults.forEach(({ description, link, success, fix, id }) => {
142
141
  const docsLink = link ? source.dim(`${indent}${link}
143
142
  `) : "";
144
143
  const idText = id ? source.dim(id) : "";
145
144
  const fixedText = success ? "" : statusFixable(fix);
146
- const lines = [
147
- [statusEmoji(success), description, idText, fixedText].join(" "),
148
- docsLink
149
- ];
145
+ const lines = [[statusEmoji(success), description, idText, fixedText].join(" "), docsLink];
150
146
  this.interface.say(lines.join("\n"));
151
147
  });
152
148
  });
153
- console.log();
149
+ output.newline();
154
150
  }
155
151
  async function fixChecks(results) {
156
152
  let changedFiles = /* @__PURE__ */ new Map();
@@ -159,10 +155,10 @@ async function fixChecks(results) {
159
155
  this.interface.say(`No fixable checks`);
160
156
  return;
161
157
  }
162
- console.log();
163
- console.log();
158
+ output.newline();
159
+ output.newline();
164
160
  await this.interface.say(`${allFixableResults.length} failed checks might be automatically fixable.`);
165
- console.log();
161
+ output.newline();
166
162
  const wantsFix = await this.interface.ask(`Do you want to apply automatic fixes to ${allFixableResults.length} failed checks?`, { boolean: true, name: "fix", default: false });
167
163
  if (!wantsFix) {
168
164
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sources":["../../../src/cli/commands/hydrogen/add/hydrogen/hydrogen.ts","../../../src/cli/commands/hydrogen/check/rules/hydrogen/checkHydrogenVersion.ts","../../../src/cli/commands/hydrogen/check/rules/node/checkNodeVersion.ts","../../../src/cli/commands/hydrogen/add/eslint/eslint.ts","../../../src/cli/commands/hydrogen/check/rules/eslint/checkEslintConfig.ts","../../../src/cli/commands/hydrogen/check.ts"],"sourcesContent":["import Command from '../../../../core/Command'\n\nexport async function addHydrogen(this: Command) {\n this.package.install('@shopify/hydrogen')\n}\n","import semver from 'semver'\n\nimport {CheckResult} from '../../../../../types'\nimport addHydrogen from '../../../add/hydrogen'\nimport Command from '../../../../../core/Command'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport hydrogenPkg from '../../../../../../../package.json'\n\nexport const HYDROGEN_MIN_VERSION = hydrogenPkg.version\n\nexport async function checkHydrogenVersion(\n this: Command,\n): Promise<CheckResult[]> {\n const h2Version = await this.package.hasDependency('@shopify/hydrogen')\n const normalizedVersion = h2Version\n ? semver.coerce(h2Version)?.version\n : `@shopify/hydrogen not installed`\n const latestHydrogen =\n typeof h2Version === 'string' &&\n typeof normalizedVersion === 'string' &&\n semver.gte(normalizedVersion, HYDROGEN_MIN_VERSION)\n\n const success = h2Version === 'latest' || latestHydrogen\n\n const description = `Has latest hydrogen version (latest: ${HYDROGEN_MIN_VERSION} / found ${normalizedVersion})`\n\n return [\n {\n id: 'hydrogen-latest',\n type: 'Dependencies',\n description,\n success,\n fix: addHydrogen,\n },\n ]\n}\n","import semver from 'semver'\n\nimport {CheckResult} from '../../../../../types'\nimport Command from '../../../../../core/Command'\n\nconst NODE_MIN_VERSION = '>=12.0.0'\n\nexport async function checkNodeVersion(this: Command): Promise<CheckResult[]> {\n const nodeVersion = await this.package.nodeVersion()\n const normalizedVersion = semver.coerce(nodeVersion)?.version\n\n return [\n {\n id: 'node-version',\n type: 'Dependencies',\n description: 'Has min node version',\n success:\n !nodeVersion ||\n (normalizedVersion !== undefined &&\n semver.satisfies(normalizedVersion, NODE_MIN_VERSION)),\n link: 'https://shopify.dev/custom-storefronts/hydrogen/support',\n },\n ]\n}\n","import Command from '../../../../core/Command'\n\nexport async function addEslint(this: Command) {\n const {fs} = this\n\n await fs.write(\n '.eslintrc.js',\n (await import('./templates/eslintrc-js')).default(),\n )\n this.package.install('eslint', {dev: true, version: '^7.31.0'})\n this.package.install('eslint-plugin-hydrogen', {\n dev: true,\n version: '^0.6.2',\n })\n}\n","import {CheckResult} from '../../../../../types'\nimport addEslint from '../../../add/eslint'\nimport Command from '../../../../../core/Command'\n\nexport async function checkEslintConfig(this: Command): Promise<CheckResult[]> {\n const eslintConfig = await this.workspace.loadConfig<{extends: string[]}>(\n 'eslint',\n )\n\n const hasEslintConfig = Boolean(eslintConfig)\n\n const hasHydrogenConfig =\n hasEslintConfig &&\n Boolean(\n eslintConfig.config.extends?.filter((extended: string) =>\n extended.includes('plugin:hydrogen'),\n ).length,\n )\n\n const hasHydrogenEslintPackage = Boolean(\n await this.package.hasDependency('eslint-plugin-hydrogen'),\n )\n\n return [\n {\n id: 'eslint-config',\n type: 'Setup',\n description: 'Has eslint config',\n success: hasEslintConfig,\n link: 'https://shopify.dev/custom-storefronts/hydrogen/lint',\n fix: addEslint,\n },\n {\n id: 'eslint-config-hydrogen',\n type: 'Setup',\n description: 'Has hydrogen eslint config',\n success: hasHydrogenConfig && hasHydrogenEslintPackage,\n link: 'https://shopify.dev/custom-storefronts/hydrogen/lint',\n fix: addEslint,\n },\n ]\n}\n","// import type {Env} from 'types';\nimport chalk from 'chalk'\n\nimport {HelpfulError} from '../../utilities'\nimport {CheckResult} from '../../types'\nimport Command from '../../core/Command'\n\nimport {\n checkHydrogenVersion,\n checkEslintConfig,\n checkNodeVersion,\n} from './check/rules'\n\nexport default class Check extends Command {\n static description = 'Check a hydrogen app for common problems.'\n\n static examples = [`$ shopify hydrogen check`]\n\n static flags = {\n ...Command.flags,\n }\n\n static args = []\n\n async run(): Promise<void> {\n this.interface.say('Running checks...')\n\n let results\n\n try {\n results = [\n ...(await checkNodeVersion.call(this)),\n ...(await checkHydrogenVersion.call(this)),\n ...(await checkEslintConfig.call(this)),\n ]\n } catch (error) {\n throw new HelpfulError({title: 'Error running checks'})\n }\n\n displayCheckResults.call(this, results)\n\n const failedChecks = results.filter(({success}) => !success)\n\n if (failedChecks.length) {\n this.interface.say(\n `${chalk.red.bold(`• ${failedChecks.length} errors `)}${chalk.dim(\n `found in ${results.length} checks`,\n )}`,\n )\n } else {\n this.interface.say(\n `${chalk.green.bold(`• No errors `)}${chalk.dim(\n `found in ${results.length} checks`,\n )}`,\n )\n }\n\n await fixChecks.call(this, results)\n console.log()\n }\n}\n\nfunction displayCheckResults(this: Command, allCheckResults: CheckResult[]) {\n const indent = ' '\n const checksBySection = allCheckResults.reduce((acc, {type, ...rest}) => {\n if (!acc[type]) {\n acc[type] = []\n }\n acc[type].push({type, ...rest})\n return acc\n }, {} as {[key: string]: CheckResult[]})\n\n ;[...Object.entries(checksBySection)].forEach(([section, sectionResults]) => {\n const allChecksStatusEmoji = statusEmoji(\n sectionResults.every(({success}) => success),\n )\n\n console.log()\n this.interface.say(\n `${allChecksStatusEmoji} ${chalk.cyan.bold.underline(section)}`,\n )\n console.log()\n\n sectionResults.forEach(({description, link, success, fix, id}) => {\n const docsLink = link ? chalk.dim(`${indent}${link}\\n`) : ''\n const idText = id ? chalk.dim(id) : ''\n const fixedText = success ? '' : statusFixable(fix)\n const lines = [\n [statusEmoji(success), description, idText, fixedText].join(' '),\n docsLink,\n ]\n\n this.interface.say(lines.join('\\n'))\n })\n })\n console.log()\n}\n\nasync function fixChecks(this: Command, results: CheckResult[]) {\n let changedFiles = new Map()\n\n const allFixableResults: CheckResult[] = results.filter(\n ({fix, success}) =>\n !success && fix !== undefined && typeof fix === 'function',\n )\n\n if (allFixableResults.length === 0) {\n this.interface.say(`No fixable checks`)\n\n return\n }\n\n console.log()\n console.log()\n await this.interface.say(\n `${allFixableResults.length} failed checks might be automatically fixable.`,\n )\n console.log()\n const wantsFix = await this.interface.ask(\n `Do you want to apply automatic fixes to ${allFixableResults.length} failed checks?`,\n {boolean: true, name: 'fix', default: false},\n )\n\n if (!wantsFix) {\n return\n }\n\n for await (const {description, files} of runFixers(\n allFixableResults as Required<CheckResult>[],\n {\n fs: this.fs,\n package: this.package,\n interface: this.interface,\n },\n )) {\n this.interface.say(\n [statusEmoji(true), description, chalk.green('fixed')].join(' '),\n )\n\n changedFiles = new Map([...changedFiles, ...files])\n }\n\n const cleanUpPromises = Array.from(changedFiles).map(\n async ([path, content]) => {\n const action = (await this.fs.hasFile(path))\n ? chalk.red(`{red overwrote`)\n : chalk.green(`{green wrote}`)\n\n await this.fs.write(path, content)\n\n this.interface.say(`${action}${stripPath(path)}`)\n },\n )\n\n await Promise.all(cleanUpPromises)\n}\n\nasync function* runFixers(\n allFixableResults: Required<CheckResult>[],\n context: any,\n) {\n for (const {fix, description} of allFixableResults) {\n try {\n await fix(context)\n } finally {\n yield {description, files: []}\n }\n }\n}\n\nfunction statusEmoji(success: boolean) {\n return success ? '✓' : `✕`\n}\n\nfunction statusFixable(fix: CheckResult['fix']) {\n return typeof fix === 'function' ? chalk.cyan(` (fixable) `) : ' '\n}\n\nfunction stripPath(path: string) {\n return path.replace(`${process.cwd()}`, '')\n}\n"],"names":["hydrogenPkg","chalk"],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sources":["../../../src/cli/commands/hydrogen/add/hydrogen/hydrogen.ts","../../../src/cli/commands/hydrogen/check/rules/hydrogen/checkHydrogenVersion.ts","../../../src/cli/commands/hydrogen/check/rules/node/checkNodeVersion.ts","../../../src/cli/commands/hydrogen/add/eslint/eslint.ts","../../../src/cli/commands/hydrogen/check/rules/eslint/checkEslintConfig.ts","../../../src/cli/commands/hydrogen/check.ts"],"sourcesContent":["import Command from '../../../../core/Command'\n\nexport async function addHydrogen(this: Command) {\n this.package.install('@shopify/hydrogen')\n}\n","import {CheckResult} from '../../../../../types'\nimport addHydrogen from '../../../add/hydrogen'\nimport Command from '../../../../../core/Command'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport hydrogenPkg from '../../../../../../../package.json'\nimport semver from 'semver'\n\nexport const HYDROGEN_MIN_VERSION = hydrogenPkg.version\n\nexport async function checkHydrogenVersion(this: Command): Promise<CheckResult[]> {\n const h2Version = await this.package.hasDependency('@shopify/hydrogen')\n const normalizedVersion = h2Version ? semver.coerce(h2Version)?.version : `@shopify/hydrogen not installed`\n const latestHydrogen =\n typeof h2Version === 'string' &&\n typeof normalizedVersion === 'string' &&\n semver.gte(normalizedVersion, HYDROGEN_MIN_VERSION)\n\n const success = h2Version === 'latest' || latestHydrogen\n\n const description = `Has latest hydrogen version (latest: ${HYDROGEN_MIN_VERSION} / found ${normalizedVersion})`\n\n return [\n {\n id: 'hydrogen-latest',\n type: 'Dependencies',\n description,\n success,\n fix: addHydrogen,\n },\n ]\n}\n","import {CheckResult} from '../../../../../types'\nimport Command from '../../../../../core/Command'\nimport semver from 'semver'\n\nconst NODE_MIN_VERSION = '>=12.0.0'\n\nexport async function checkNodeVersion(this: Command): Promise<CheckResult[]> {\n const nodeVersion = await this.package.nodeVersion()\n const normalizedVersion = semver.coerce(nodeVersion)?.version\n\n return [\n {\n id: 'node-version',\n type: 'Dependencies',\n description: 'Has min node version',\n success:\n !nodeVersion || (normalizedVersion !== undefined && semver.satisfies(normalizedVersion, NODE_MIN_VERSION)),\n link: 'https://shopify.dev/custom-storefronts/hydrogen/support',\n },\n ]\n}\n","import Command from '../../../../core/Command'\n\nexport async function addEslint(this: Command) {\n const {fs} = this\n\n await fs.write('.eslintrc.js', (await import('./templates/eslintrc-js')).default())\n this.package.install('eslint', {dev: true, version: '^7.31.0'})\n this.package.install('eslint-plugin-hydrogen', {\n dev: true,\n version: '^0.6.2',\n })\n}\n","import {CheckResult} from '../../../../../types'\nimport addEslint from '../../../add/eslint'\nimport Command from '../../../../../core/Command'\n\nexport async function checkEslintConfig(this: Command): Promise<CheckResult[]> {\n const eslintConfig = await this.workspace.loadConfig<{extends: string[]}>('eslint')\n\n const hasEslintConfig = Boolean(eslintConfig)\n\n const hasHydrogenConfig =\n hasEslintConfig &&\n Boolean(eslintConfig.config.extends?.filter((extended: string) => extended.includes('plugin:hydrogen')).length)\n\n const hasHydrogenEslintPackage = Boolean(await this.package.hasDependency('eslint-plugin-hydrogen'))\n\n return [\n {\n id: 'eslint-config',\n type: 'Setup',\n description: 'Has eslint config',\n success: hasEslintConfig,\n link: 'https://shopify.dev/custom-storefronts/hydrogen/lint',\n fix: addEslint,\n },\n {\n id: 'eslint-config-hydrogen',\n type: 'Setup',\n description: 'Has hydrogen eslint config',\n success: hasHydrogenConfig && hasHydrogenEslintPackage,\n link: 'https://shopify.dev/custom-storefronts/hydrogen/lint',\n fix: addEslint,\n },\n ]\n}\n","// import type {Env} from 'types';\nimport {checkHydrogenVersion, checkEslintConfig, checkNodeVersion} from './check/rules'\nimport {HelpfulError} from '../../utilities'\n\nimport {CheckResult} from '../../types'\nimport Command from '../../core/Command'\nimport chalk from 'chalk'\nimport {output} from '@shopify/cli-kit'\n\nexport default class Check extends Command {\n static description = 'Check a hydrogen app for common problems.'\n\n static examples = [`$ shopify hydrogen check`]\n\n static flags = {\n ...Command.flags,\n }\n\n static args = []\n\n async run(): Promise<void> {\n this.interface.say('Running checks...')\n\n let results\n\n try {\n results = [\n ...(await checkNodeVersion.call(this)),\n ...(await checkHydrogenVersion.call(this)),\n ...(await checkEslintConfig.call(this)),\n ]\n } catch (error) {\n throw new HelpfulError({title: 'Error running checks'})\n }\n\n displayCheckResults.call(this, results)\n\n const failedChecks = results.filter(({success}) => !success)\n\n if (failedChecks.length) {\n this.interface.say(\n `${chalk.red.bold(`• ${failedChecks.length} errors `)}${chalk.dim(`found in ${results.length} checks`)}`,\n )\n } else {\n this.interface.say(`${chalk.green.bold(`• No errors `)}${chalk.dim(`found in ${results.length} checks`)}`)\n }\n\n await fixChecks.call(this, results)\n output.newline()\n }\n}\n\nfunction displayCheckResults(this: Command, allCheckResults: CheckResult[]) {\n const indent = ' '\n const checksBySection = allCheckResults.reduce((acc, {type, ...rest}) => {\n if (!acc[type]) {\n acc[type] = []\n }\n acc[type].push({type, ...rest})\n return acc\n }, {} as {[key: string]: CheckResult[]})\n\n ;[...Object.entries(checksBySection)].forEach(([section, sectionResults]) => {\n const allChecksStatusEmoji = statusEmoji(sectionResults.every(({success}) => success))\n\n output.newline()\n this.interface.say(`${allChecksStatusEmoji} ${chalk.cyan.bold.underline(section)}`)\n output.newline()\n\n sectionResults.forEach(({description, link, success, fix, id}) => {\n const docsLink = link ? chalk.dim(`${indent}${link}\\n`) : ''\n const idText = id ? chalk.dim(id) : ''\n const fixedText = success ? '' : statusFixable(fix)\n const lines = [[statusEmoji(success), description, idText, fixedText].join(' '), docsLink]\n\n this.interface.say(lines.join('\\n'))\n })\n })\n output.newline()\n}\n\nasync function fixChecks(this: Command, results: CheckResult[]) {\n let changedFiles = new Map()\n\n const allFixableResults: CheckResult[] = results.filter(\n ({fix, success}) => !success && fix !== undefined && typeof fix === 'function',\n )\n\n if (allFixableResults.length === 0) {\n this.interface.say(`No fixable checks`)\n\n return\n }\n\n output.newline()\n output.newline()\n await this.interface.say(`${allFixableResults.length} failed checks might be automatically fixable.`)\n output.newline()\n const wantsFix = await this.interface.ask(\n `Do you want to apply automatic fixes to ${allFixableResults.length} failed checks?`,\n {boolean: true, name: 'fix', default: false},\n )\n\n if (!wantsFix) {\n return\n }\n\n for await (const {description, files} of runFixers(allFixableResults as Required<CheckResult>[], {\n fs: this.fs,\n package: this.package,\n interface: this.interface,\n })) {\n this.interface.say([statusEmoji(true), description, chalk.green('fixed')].join(' '))\n\n changedFiles = new Map([...changedFiles, ...files])\n }\n\n const cleanUpPromises = Array.from(changedFiles).map(async ([path, content]) => {\n const action = (await this.fs.hasFile(path)) ? chalk.red(`{red overwrote`) : chalk.green(`{green wrote}`)\n\n await this.fs.write(path, content)\n\n this.interface.say(`${action}${stripPath(path)}`)\n })\n\n await Promise.all(cleanUpPromises)\n}\n\nasync function* runFixers(allFixableResults: Required<CheckResult>[], context: any) {\n for (const {fix, description} of allFixableResults) {\n try {\n // eslint-disable-next-line no-await-in-loop\n await fix(context)\n } finally {\n yield {description, files: []}\n }\n }\n}\n\nfunction statusEmoji(success: boolean) {\n return success ? '✓' : `✕`\n}\n\nfunction statusFixable(fix: CheckResult['fix']) {\n return typeof fix === 'function' ? chalk.cyan(` (fixable) `) : ' '\n}\n\nfunction stripPath(path: string) {\n return path.replace(`${process.cwd()}`, '')\n}\n"],"names":["hydrogenPkg","chalk"],"mappings":"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"}
@@ -1,48 +1,155 @@
1
- import require$$0$9 from 'fs';
1
+ import { b as commonjsGlobal$1, d as commonjsRequire, C as Command, a as source$1, c as cliHydrogenPackageJson } from '../../Command-fd93d525.js';
2
+ import require$$0$a from 'fs';
2
3
  import require$$0$3 from 'path';
3
- import { c as commonjsGlobal$1, b as commonjsRequire, C as Command, a as source$1 } from '../../Command-bded1434.js';
4
4
  import require$$0$4 from 'events';
5
5
  import require$$0$5 from 'stream';
6
6
  import require$$1$1 from 'string_decoder';
7
7
  import require$$0$6 from 'assert';
8
- import require$$0$a from 'buffer';
8
+ import require$$0$b from 'buffer';
9
9
  import require$$10 from 'zlib';
10
10
  import require$$0$7 from 'util';
11
11
  import require$$2$1 from 'crypto';
12
- import require$$1$2 from 'os';
13
- import require$$0$8 from 'tty';
14
- import require$$0$b from 'constants';
12
+ import require$$0$8 from 'os';
13
+ import require$$0$9 from 'tty';
14
+ import require$$0$c from 'constants';
15
15
  import require$$16 from 'https';
16
- import require$$1$3 from 'child_process';
16
+ import require$$1$2 from 'child_process';
17
17
  import require$$7 from 'url';
18
18
  import require$$4 from 'net';
19
19
  import require$$20 from 'tls';
20
- import { ui } from '@shopify/cli-kit';
21
- import { c as cliHydrogenPackageJson } from '../../package-fa31d133.js';
20
+ import { ui, output } from '@shopify/cli-kit';
22
21
  import { Flags } from '@oclif/core';
23
- import 'prettier';
24
22
  import 'readline';
25
23
  import 'module';
26
24
  import 'vm';
27
25
  import 'v8';
26
+ import 'prettier';
27
+
28
+ var name = "@shopify/cli";
29
+ var version$2 = "0.33.2";
30
+ var description = "A CLI tool to build for the Shopify platform";
31
+ var type = "module";
32
+ var main = "src/index.js";
33
+ var module = "src/index.js";
34
+ var keywords = [
35
+ "shopify",
36
+ "shopify-cli",
37
+ "shopify-partners"
38
+ ];
39
+ var license = "MIT";
40
+ var exports = {
41
+ ".": {
42
+ "import": "./dist/index.js",
43
+ types: "./dist/index.d.ts"
44
+ }
45
+ };
46
+ var bin = {
47
+ shopify: "./bin/run.js"
48
+ };
49
+ var files = [
50
+ "/bin/run.cmd",
51
+ "/bin/run.js",
52
+ "/dist",
53
+ "/oclif.manifest.json"
54
+ ];
55
+ var publishConfig = {
56
+ access: "public",
57
+ "@shopify:registry": "https://registry.npmjs.org"
58
+ };
59
+ var scripts = {
60
+ clean: "shx rm -rf dist",
61
+ build: "rimraf dist/ && rollup -c",
62
+ prepack: "cross-env NODE_ENV=production yarn run build",
63
+ lint: "prettier -c src/** && eslint 'src/**/*.ts'",
64
+ "lint:fix": "prettier -w src/** && eslint 'src/**/*.ts' --fix",
65
+ test: "vitest run",
66
+ "test:watch": "vitest watch",
67
+ tsc: "tsc --noEmit"
68
+ };
69
+ var eslintConfig = {
70
+ "extends": [
71
+ "../../.eslintrc.cjs"
72
+ ]
73
+ };
74
+ var dependencies = {
75
+ "@bugsnag/js": "^7.16.2",
76
+ "@oclif/core": "1.3.6",
77
+ "@oclif/plugin-help": "^5.1.11",
78
+ "@shopify/cli-kit": "0.33.2"
79
+ };
80
+ var devDependencies = {
81
+ vitest: "0.7.9"
82
+ };
83
+ var engines = {
84
+ node: "^14.13.1 || ^16.0.0 || ^17.0.0"
85
+ };
86
+ var os$1 = [
87
+ "darwin",
88
+ "linux",
89
+ "win32"
90
+ ];
91
+ var oclif = {
92
+ bin: "shopify",
93
+ commands: "dist/commands",
94
+ plugins: [
95
+ "@oclif/plugin-help",
96
+ "@shopify/app",
97
+ "@shopify/cli-hydrogen"
98
+ ],
99
+ topicSeparator: " ",
100
+ topics: {
101
+ hydrogen: {
102
+ description: "Build Hydrogen storefronts"
103
+ },
104
+ theme: {
105
+ description: "Build Liquid themes"
106
+ },
107
+ app: {
108
+ description: "Build Shopify apps"
109
+ }
110
+ }
111
+ };
112
+ var cliPackageJson = {
113
+ name: name,
114
+ version: version$2,
115
+ "private": false,
116
+ description: description,
117
+ type: type,
118
+ main: main,
119
+ module: module,
120
+ keywords: keywords,
121
+ license: license,
122
+ exports: exports,
123
+ bin: bin,
124
+ files: files,
125
+ publishConfig: publishConfig,
126
+ scripts: scripts,
127
+ eslintConfig: eslintConfig,
128
+ dependencies: dependencies,
129
+ devDependencies: devDependencies,
130
+ "engine-strict": true,
131
+ engines: engines,
132
+ os: os$1,
133
+ oclif: oclif
134
+ };
28
135
 
29
136
  var index688c5d50 = {};
30
137
 
31
- var fs$1 = require$$0$9;
138
+ var fs$1 = require$$0$a;
32
139
  var path$1 = require$$0$3;
33
140
  var Events = require$$0$4;
34
141
  var Stream$1 = require$$0$5;
35
142
  var require$$0 = require$$1$1;
36
143
  var assert = require$$0$6;
37
- var require$$0$1 = require$$0$a;
144
+ var require$$0$1 = require$$0$b;
38
145
  var realZlib = require$$10;
39
146
  var util$1 = require$$0$7;
40
147
  var crypto = require$$2$1;
41
- var os$1 = require$$1$2;
42
- var tty = require$$0$8;
43
- var constants$1 = require$$0$b;
148
+ var os = require$$0$8;
149
+ var tty = require$$0$9;
150
+ var constants$1 = require$$0$c;
44
151
  var https = require$$16;
45
- var child_process = require$$1$3;
152
+ var child_process = require$$1$2;
46
153
  var require$$2 = require$$7;
47
154
  var require$$0$2 = require$$4;
48
155
  var require$$1 = require$$20;
@@ -59,7 +166,7 @@ var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$1);
59
166
  var realZlib__default = /*#__PURE__*/_interopDefaultLegacy(realZlib);
60
167
  var util__default = /*#__PURE__*/_interopDefaultLegacy(util$1);
61
168
  var crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto);
62
- var os__default = /*#__PURE__*/_interopDefaultLegacy(os$1);
169
+ var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
63
170
  var tty__default = /*#__PURE__*/_interopDefaultLegacy(tty);
64
171
  var constants__default = /*#__PURE__*/_interopDefaultLegacy(constants$1);
65
172
  var https__default = /*#__PURE__*/_interopDefaultLegacy(https);
@@ -9074,8 +9181,8 @@ realpath.unmonkeypatch = unmonkeypatch;
9074
9181
  var origRealpath = fs__default['default'].realpath;
9075
9182
  var origRealpathSync = fs__default['default'].realpathSync;
9076
9183
 
9077
- var version$2 = process.version;
9078
- var ok = /^v[0-5]\./.test(version$2);
9184
+ var version = process.version;
9185
+ var ok = /^v[0-5]\./.test(version);
9079
9186
 
9080
9187
 
9081
9188
  function newError (er) {
@@ -14511,110 +14618,6 @@ var index = index688c5d50;
14511
14618
 
14512
14619
  var dist = index.degit;
14513
14620
 
14514
- var name = "@shopify/cli";
14515
- var version = "0.31.0";
14516
- var description = "A CLI tool to build for the Shopify platform";
14517
- var type = "module";
14518
- var main = "src/index.js";
14519
- var module = "src/index.js";
14520
- var keywords = [
14521
- "shopify",
14522
- "shopify-cli",
14523
- "shopify-partners"
14524
- ];
14525
- var license = "MIT";
14526
- var exports = {
14527
- ".": {
14528
- "import": "./dist/index.js",
14529
- types: "./dist/index.d.ts"
14530
- }
14531
- };
14532
- var bin = {
14533
- shopify: "./bin/run.js"
14534
- };
14535
- var files = [
14536
- "/bin/run.cmd",
14537
- "/bin/run.js",
14538
- "/dist",
14539
- "/oclif.manifest.json"
14540
- ];
14541
- var publishConfig = {
14542
- access: "public",
14543
- "@shopify:registry": "https://registry.npmjs.org"
14544
- };
14545
- var scripts = {
14546
- clean: "shx rm -rf dist",
14547
- build: "rollup -c",
14548
- prepack: "cross-env NODE_ENV=production yarn run build",
14549
- lint: "prettier -c src/** && eslint src/**/*.ts",
14550
- "lint:fix": "prettier -w src/** && eslint src/**/*.ts --fix",
14551
- test: "vitest run",
14552
- "test:watch": "vitest watch",
14553
- tsc: "tsc --noEmit"
14554
- };
14555
- var eslintConfig = {
14556
- "extends": [
14557
- "../../package.json"
14558
- ]
14559
- };
14560
- var dependencies = {
14561
- "@bugsnag/js": "^7.14.1",
14562
- "@oclif/core": "1.3.6",
14563
- "@oclif/plugin-help": "^5.1.11",
14564
- "@shopify/cli-kit": "0.31.0"
14565
- };
14566
- var engines = {
14567
- node: "^14.13.1 || ^16.0.0 || ^17.0.0"
14568
- };
14569
- var os = [
14570
- "darwin",
14571
- "linux",
14572
- "win32"
14573
- ];
14574
- var oclif = {
14575
- bin: "shopify",
14576
- commands: "dist/commands",
14577
- plugins: [
14578
- "@oclif/plugin-help",
14579
- "@shopify/app",
14580
- "@shopify/cli-hydrogen"
14581
- ],
14582
- topicSeparator: " ",
14583
- topics: {
14584
- hydrogen: {
14585
- description: "Build Hydrogen storefronts"
14586
- },
14587
- theme: {
14588
- description: "Build Liquid themes"
14589
- },
14590
- app: {
14591
- description: "Build Shopify apps"
14592
- }
14593
- }
14594
- };
14595
- var cliPackageJson = {
14596
- name: name,
14597
- version: version,
14598
- "private": false,
14599
- description: description,
14600
- type: type,
14601
- main: main,
14602
- module: module,
14603
- keywords: keywords,
14604
- license: license,
14605
- exports: exports,
14606
- bin: bin,
14607
- files: files,
14608
- publishConfig: publishConfig,
14609
- scripts: scripts,
14610
- eslintConfig: eslintConfig,
14611
- dependencies: dependencies,
14612
- "engine-strict": true,
14613
- engines: engines,
14614
- os: os,
14615
- oclif: oclif
14616
- };
14617
-
14618
14621
  var Template = /* @__PURE__ */ ((Template2) => {
14619
14622
  Template2["Minimum"] = "Minimal Hydrogen starter";
14620
14623
  Template2["Default"] = "Default Hydrogen demo";
@@ -14700,29 +14703,23 @@ const _Init = class extends Command {
14700
14703
  });
14701
14704
  }
14702
14705
  await this.package.write();
14703
- console.log();
14706
+ output.newline();
14704
14707
  this.interface.say(`${source$1.underline("Success!")} Created app in ${source$1.yellow(`/${this.fs.relativePath(this.root, process.cwd())}`)}.`);
14705
14708
  this.interface.say(`Run the following commands to get started:`);
14706
- console.log();
14709
+ output.newline();
14707
14710
  if (this.root !== process.cwd()) {
14708
14711
  this.interface.say([
14709
- [
14710
- ` \u2022 cd ${this.fs.relativePath(this.root, process.cwd())}`,
14711
- "change into the project directory"
14712
- ]
14712
+ [` \u2022 cd ${this.fs.relativePath(this.root, process.cwd())}`, "change into the project directory"]
14713
14713
  ]);
14714
14714
  }
14715
14715
  const usesYarn = this.package.packageManager === "npm";
14716
14716
  this.interface.say([
14717
- [
14718
- ` \u2022 ${usesYarn ? `yarn` : `npm install --legacy-peer-deps`}`,
14719
- " install the dependencies"
14720
- ],
14717
+ [` \u2022 ${usesYarn ? `yarn` : `npm install --legacy-peer-deps`}`, " install the dependencies"],
14721
14718
  [` \u2022 ${usesYarn ? `yarn` : `npm run`} dev`, " start the dev server"]
14722
14719
  ]);
14723
- console.log();
14724
- console.log();
14725
- console.log();
14720
+ output.newline();
14721
+ output.newline();
14722
+ output.newline();
14726
14723
  }
14727
14724
  };
14728
14725
  let Init = _Init;
@@ -14730,11 +14727,13 @@ Init.args = [{ name: "name", description: "Root of the project" }];
14730
14727
  Init.flags = {
14731
14728
  root: Flags.string({
14732
14729
  char: "r",
14733
- description: "Root directory of the project."
14730
+ description: "Root directory of the project.",
14731
+ env: "SHOPIFY_FLAG_ROOT"
14734
14732
  }),
14735
14733
  local: Flags.boolean({
14736
14734
  char: "l",
14737
- description: "Use local hydrogen"
14735
+ description: "Use local hydrogen",
14736
+ env: "SHOPIFY_FLAG_LOCAL"
14738
14737
  })
14739
14738
  };
14740
14739