@shopify/cli-hydrogen 0.33.1 → 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,12 +1,12 @@
1
- import { s as semver, c as cliHydrogenPackageJson, C as Command, H as HelpfulError, a as source } from '../../package-830cee27.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 '@oclif/core';
3
+ import { output } from '@shopify/cli-kit';
5
4
  import 'fs';
6
5
  import 'constants';
7
6
  import 'stream';
8
7
  import 'util';
9
8
  import 'assert';
9
+ import 'path';
10
10
  import 'os';
11
11
  import 'events';
12
12
  import 'tty';
@@ -15,11 +15,11 @@ import 'buffer';
15
15
  import 'child_process';
16
16
  import 'string_decoder';
17
17
  import 'crypto';
18
- import '@shopify/cli-kit';
19
18
  import 'module';
20
19
  import 'vm';
21
20
  import 'url';
22
21
  import 'v8';
22
+ import '@oclif/core';
23
23
 
24
24
  async function addHydrogen() {
25
25
  this.package.install("@shopify/hydrogen");
@@ -114,7 +114,7 @@ class Check extends Command {
114
114
  this.interface.say(`${source.green.bold(`\u2022 No errors `)}${source.dim(`found in ${results.length} checks`)}`);
115
115
  }
116
116
  await fixChecks.call(this, results);
117
- console.log();
117
+ output.newline();
118
118
  }
119
119
  }
120
120
  Check.description = "Check a hydrogen app for common problems.";
@@ -134,9 +134,9 @@ function displayCheckResults(allCheckResults) {
134
134
  }, {});
135
135
  [...Object.entries(checksBySection)].forEach(([section, sectionResults]) => {
136
136
  const allChecksStatusEmoji = statusEmoji(sectionResults.every(({ success }) => success));
137
- console.log();
137
+ output.newline();
138
138
  this.interface.say(`${allChecksStatusEmoji} ${source.cyan.bold.underline(section)}`);
139
- console.log();
139
+ output.newline();
140
140
  sectionResults.forEach(({ description, link, success, fix, id }) => {
141
141
  const docsLink = link ? source.dim(`${indent}${link}
142
142
  `) : "";
@@ -146,7 +146,7 @@ function displayCheckResults(allCheckResults) {
146
146
  this.interface.say(lines.join("\n"));
147
147
  });
148
148
  });
149
- console.log();
149
+ output.newline();
150
150
  }
151
151
  async function fixChecks(results) {
152
152
  let changedFiles = /* @__PURE__ */ new Map();
@@ -155,10 +155,10 @@ async function fixChecks(results) {
155
155
  this.interface.say(`No fixable checks`);
156
156
  return;
157
157
  }
158
- console.log();
159
- console.log();
158
+ output.newline();
159
+ output.newline();
160
160
  await this.interface.say(`${allFixableResults.length} failed checks might be automatically fixable.`);
161
- console.log();
161
+ output.newline();
162
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 });
163
163
  if (!wantsFix) {
164
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(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 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 || (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 chalk from 'chalk'\n\nimport {HelpfulError} from '../../utilities'\nimport {CheckResult} from '../../types'\nimport Command from '../../core/Command'\n\nimport {checkHydrogenVersion, checkEslintConfig, checkNodeVersion} 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(`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 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(sectionResults.every(({success}) => success))\n\n console.log()\n this.interface.say(`${allChecksStatusEmoji} ${chalk.cyan.bold.underline(section)}`)\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 = [[statusEmoji(success), description, idText, fixedText].join(' '), docsLink]\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}) => !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(`${allFixableResults.length} failed checks might be automatically fixable.`)\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(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 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,47 +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 { b as commonjsGlobal$1, d as commonjsRequire, C as Command, a as source$1, c as cliHydrogenPackageJson } from '../../package-830cee27.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';
20
+ import { ui, output } from '@shopify/cli-kit';
21
21
  import { Flags } from '@oclif/core';
22
- import 'prettier';
23
22
  import 'readline';
24
23
  import 'module';
25
24
  import 'vm';
26
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
+ };
27
135
 
28
136
  var index688c5d50 = {};
29
137
 
30
- var fs$1 = require$$0$9;
138
+ var fs$1 = require$$0$a;
31
139
  var path$1 = require$$0$3;
32
140
  var Events = require$$0$4;
33
141
  var Stream$1 = require$$0$5;
34
142
  var require$$0 = require$$1$1;
35
143
  var assert = require$$0$6;
36
- var require$$0$1 = require$$0$a;
144
+ var require$$0$1 = require$$0$b;
37
145
  var realZlib = require$$10;
38
146
  var util$1 = require$$0$7;
39
147
  var crypto = require$$2$1;
40
- var os$1 = require$$1$2;
41
- var tty = require$$0$8;
42
- 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;
43
151
  var https = require$$16;
44
- var child_process = require$$1$3;
152
+ var child_process = require$$1$2;
45
153
  var require$$2 = require$$7;
46
154
  var require$$0$2 = require$$4;
47
155
  var require$$1 = require$$20;
@@ -58,7 +166,7 @@ var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$1);
58
166
  var realZlib__default = /*#__PURE__*/_interopDefaultLegacy(realZlib);
59
167
  var util__default = /*#__PURE__*/_interopDefaultLegacy(util$1);
60
168
  var crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto);
61
- var os__default = /*#__PURE__*/_interopDefaultLegacy(os$1);
169
+ var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
62
170
  var tty__default = /*#__PURE__*/_interopDefaultLegacy(tty);
63
171
  var constants__default = /*#__PURE__*/_interopDefaultLegacy(constants$1);
64
172
  var https__default = /*#__PURE__*/_interopDefaultLegacy(https);
@@ -9073,8 +9181,8 @@ realpath.unmonkeypatch = unmonkeypatch;
9073
9181
  var origRealpath = fs__default['default'].realpath;
9074
9182
  var origRealpathSync = fs__default['default'].realpathSync;
9075
9183
 
9076
- var version$2 = process.version;
9077
- var ok = /^v[0-5]\./.test(version$2);
9184
+ var version = process.version;
9185
+ var ok = /^v[0-5]\./.test(version);
9078
9186
 
9079
9187
 
9080
9188
  function newError (er) {
@@ -14510,110 +14618,6 @@ var index = index688c5d50;
14510
14618
 
14511
14619
  var dist = index.degit;
14512
14620
 
14513
- var name = "@shopify/cli";
14514
- var version = "0.33.1";
14515
- var description = "A CLI tool to build for the Shopify platform";
14516
- var type = "module";
14517
- var main = "src/index.js";
14518
- var module = "src/index.js";
14519
- var keywords = [
14520
- "shopify",
14521
- "shopify-cli",
14522
- "shopify-partners"
14523
- ];
14524
- var license = "MIT";
14525
- var exports = {
14526
- ".": {
14527
- "import": "./dist/index.js",
14528
- types: "./dist/index.d.ts"
14529
- }
14530
- };
14531
- var bin = {
14532
- shopify: "./bin/run.js"
14533
- };
14534
- var files = [
14535
- "/bin/run.cmd",
14536
- "/bin/run.js",
14537
- "/dist",
14538
- "/oclif.manifest.json"
14539
- ];
14540
- var publishConfig = {
14541
- access: "public",
14542
- "@shopify:registry": "https://registry.npmjs.org"
14543
- };
14544
- var scripts = {
14545
- clean: "shx rm -rf dist",
14546
- build: "rollup -c",
14547
- prepack: "cross-env NODE_ENV=production yarn run build",
14548
- lint: "prettier -c src/** && eslint src/**/*.ts",
14549
- "lint:fix": "prettier -w src/** && eslint src/**/*.ts --fix",
14550
- test: "vitest run",
14551
- "test:watch": "vitest watch",
14552
- tsc: "tsc --noEmit"
14553
- };
14554
- var eslintConfig = {
14555
- "extends": [
14556
- "../../package.json"
14557
- ]
14558
- };
14559
- var dependencies = {
14560
- "@bugsnag/js": "^7.16.2",
14561
- "@oclif/core": "1.3.6",
14562
- "@oclif/plugin-help": "^5.1.11",
14563
- "@shopify/cli-kit": "0.33.1"
14564
- };
14565
- var engines = {
14566
- node: "^14.13.1 || ^16.0.0 || ^17.0.0"
14567
- };
14568
- var os = [
14569
- "darwin",
14570
- "linux",
14571
- "win32"
14572
- ];
14573
- var oclif = {
14574
- bin: "shopify",
14575
- commands: "dist/commands",
14576
- plugins: [
14577
- "@oclif/plugin-help",
14578
- "@shopify/app",
14579
- "@shopify/cli-hydrogen"
14580
- ],
14581
- topicSeparator: " ",
14582
- topics: {
14583
- hydrogen: {
14584
- description: "Build Hydrogen storefronts"
14585
- },
14586
- theme: {
14587
- description: "Build Liquid themes"
14588
- },
14589
- app: {
14590
- description: "Build Shopify apps"
14591
- }
14592
- }
14593
- };
14594
- var cliPackageJson = {
14595
- name: name,
14596
- version: version,
14597
- "private": false,
14598
- description: description,
14599
- type: type,
14600
- main: main,
14601
- module: module,
14602
- keywords: keywords,
14603
- license: license,
14604
- exports: exports,
14605
- bin: bin,
14606
- files: files,
14607
- publishConfig: publishConfig,
14608
- scripts: scripts,
14609
- eslintConfig: eslintConfig,
14610
- dependencies: dependencies,
14611
- "engine-strict": true,
14612
- engines: engines,
14613
- os: os,
14614
- oclif: oclif
14615
- };
14616
-
14617
14621
  var Template = /* @__PURE__ */ ((Template2) => {
14618
14622
  Template2["Minimum"] = "Minimal Hydrogen starter";
14619
14623
  Template2["Default"] = "Default Hydrogen demo";
@@ -14699,10 +14703,10 @@ const _Init = class extends Command {
14699
14703
  });
14700
14704
  }
14701
14705
  await this.package.write();
14702
- console.log();
14706
+ output.newline();
14703
14707
  this.interface.say(`${source$1.underline("Success!")} Created app in ${source$1.yellow(`/${this.fs.relativePath(this.root, process.cwd())}`)}.`);
14704
14708
  this.interface.say(`Run the following commands to get started:`);
14705
- console.log();
14709
+ output.newline();
14706
14710
  if (this.root !== process.cwd()) {
14707
14711
  this.interface.say([
14708
14712
  [` \u2022 cd ${this.fs.relativePath(this.root, process.cwd())}`, "change into the project directory"]
@@ -14713,9 +14717,9 @@ const _Init = class extends Command {
14713
14717
  [` \u2022 ${usesYarn ? `yarn` : `npm install --legacy-peer-deps`}`, " install the dependencies"],
14714
14718
  [` \u2022 ${usesYarn ? `yarn` : `npm run`} dev`, " start the dev server"]
14715
14719
  ]);
14716
- console.log();
14717
- console.log();
14718
- console.log();
14720
+ output.newline();
14721
+ output.newline();
14722
+ output.newline();
14719
14723
  }
14720
14724
  };
14721
14725
  let Init = _Init;
@@ -14723,11 +14727,13 @@ Init.args = [{ name: "name", description: "Root of the project" }];
14723
14727
  Init.flags = {
14724
14728
  root: Flags.string({
14725
14729
  char: "r",
14726
- description: "Root directory of the project."
14730
+ description: "Root directory of the project.",
14731
+ env: "SHOPIFY_FLAG_ROOT"
14727
14732
  }),
14728
14733
  local: Flags.boolean({
14729
14734
  char: "l",
14730
- description: "Use local hydrogen"
14735
+ description: "Use local hydrogen",
14736
+ env: "SHOPIFY_FLAG_LOCAL"
14731
14737
  })
14732
14738
  };
14733
14739