@shopify/cli-hydrogen 2.0.2 → 2.0.5

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.
@@ -8,7 +8,9 @@ async function build({ directory, targets, base }) {
8
8
  return {
9
9
  title: `Building ${key} code`,
10
10
  task: async (_, task) => {
11
- process.env.WORKER = key === "worker" ? "true" : void 0;
11
+ if (key === "worker") {
12
+ process.env.WORKER = "true";
13
+ }
12
14
  await build$1({
13
15
  ...commonConfig,
14
16
  build: {
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sources":["../../../src/cli/services/build.ts","../../../src/cli/commands/hydrogen/build.ts"],"sourcesContent":["import {build as viteBuild} from 'vite'\nimport {ui} from '@shopify/cli-kit'\n\ntype Target = 'node' | 'client' | 'worker'\n\ninterface DevOptions {\n directory: string\n targets: {[key in Target]: boolean | string}\n base?: string\n}\n\nasync function build({directory, targets, base}: DevOptions) {\n const commonConfig = {base, root: directory}\n\n const tasks: ui.ListrTask[] = Object.entries(targets)\n .filter(([_, value]) => value)\n .map(([key, value]) => {\n return {\n title: `Building ${key} code`,\n task: async (_, task) => {\n process.env.WORKER = key === 'worker' ? 'true' : undefined\n await viteBuild({\n ...commonConfig,\n build: {\n outDir: `dist/${key}`,\n ssr: typeof value === 'string' ? value : undefined,\n manifest: key === 'client',\n },\n })\n\n task.title = `Built ${key} code`\n },\n }\n })\n\n const list = new ui.Listr(tasks)\n\n await list.run()\n}\n\nexport default build\n","import buildService from '../../services/build'\nimport {Command, Flags} from '@oclif/core'\nimport {path, cli} from '@shopify/cli-kit'\n\nconst PLATFORM_ENTRIES = {\n node: `@shopify/hydrogen/platforms/node`,\n worker: `@shopify/hydrogen/platforms/worker`,\n}\n\nexport default class Build extends Command {\n static description = 'Builds a Hydrogen storefront for production'\n static flags = {\n ...cli.globalFlags,\n path: Flags.string({\n hidden: true,\n description: 'the path to your hydrogen storefront',\n env: 'SHOPIFY_FLAG_PATH',\n }),\n base: Flags.string({\n description: ' the public path when served in production',\n env: 'SHOPIFY_FLAG_BUILD_BASE',\n }),\n client: Flags.boolean({\n description: 'build the client code',\n env: 'SHOPIFY_FLAG_BUILD_CLIENT',\n allowNo: true,\n default: true,\n }),\n target: Flags.string({\n char: 't',\n description: 'the target platform to build for (worker or node)',\n options: ['node', 'worker'],\n default: 'worker',\n env: 'SHOPIFY_FLAG_BUILD_TARGET',\n }),\n entry: Flags.string({\n description: 'produce Server Side Rendering (SSR) build for node environments',\n env: 'SHOPIFY_FLAG_BUILD_SSR_ENTRY',\n }),\n }\n\n async run(): Promise<void> {\n const {flags} = await this.parse(Build)\n const directory = flags.path ? path.resolve(flags.path) : process.cwd()\n\n const entry = flags.entry || PLATFORM_ENTRIES[flags.target as 'node' | 'worker']\n\n const targets = {\n client: flags.client,\n worker: flags.target === 'worker' ? entry : false,\n node: flags.target === 'node' ? entry : false,\n }\n\n await buildService({...flags, directory, targets})\n }\n}\n"],"names":["viteBuild","buildService"],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sources":["../../../src/cli/services/build.ts","../../../src/cli/commands/hydrogen/build.ts"],"sourcesContent":["import {build as viteBuild} from 'vite'\nimport {ui} from '@shopify/cli-kit'\n\ntype Target = 'node' | 'client' | 'worker'\n\ninterface DevOptions {\n directory: string\n targets: {[key in Target]: boolean | string}\n base?: string\n}\n\nasync function build({directory, targets, base}: DevOptions) {\n const commonConfig = {base, root: directory}\n\n const tasks: ui.ListrTask[] = Object.entries(targets)\n .filter(([_, value]) => value)\n .map(([key, value]) => {\n return {\n title: `Building ${key} code`,\n task: async (_, task) => {\n if (key === 'worker') {\n process.env.WORKER = 'true'\n }\n await viteBuild({\n ...commonConfig,\n build: {\n outDir: `dist/${key}`,\n ssr: typeof value === 'string' ? value : undefined,\n manifest: key === 'client',\n },\n })\n\n task.title = `Built ${key} code`\n },\n }\n })\n\n const list = new ui.Listr(tasks)\n\n await list.run()\n}\n\nexport default build\n","import buildService from '../../services/build'\nimport {Command, Flags} from '@oclif/core'\nimport {path, cli} from '@shopify/cli-kit'\n\nconst PLATFORM_ENTRIES = {\n node: `@shopify/hydrogen/platforms/node`,\n worker: `@shopify/hydrogen/platforms/worker`,\n}\n\nexport default class Build extends Command {\n static description = 'Builds a Hydrogen storefront for production'\n static flags = {\n ...cli.globalFlags,\n path: Flags.string({\n hidden: true,\n description: 'the path to your hydrogen storefront',\n env: 'SHOPIFY_FLAG_PATH',\n }),\n base: Flags.string({\n description: ' the public path when served in production',\n env: 'SHOPIFY_FLAG_BUILD_BASE',\n }),\n client: Flags.boolean({\n description: 'build the client code',\n env: 'SHOPIFY_FLAG_BUILD_CLIENT',\n allowNo: true,\n default: true,\n }),\n target: Flags.string({\n char: 't',\n description: 'the target platform to build for (worker or node)',\n options: ['node', 'worker'],\n default: 'worker',\n env: 'SHOPIFY_FLAG_BUILD_TARGET',\n }),\n entry: Flags.string({\n description: 'produce Server Side Rendering (SSR) build for node environments',\n env: 'SHOPIFY_FLAG_BUILD_SSR_ENTRY',\n }),\n }\n\n async run(): Promise<void> {\n const {flags} = await this.parse(Build)\n const directory = flags.path ? path.resolve(flags.path) : process.cwd()\n\n const entry = flags.entry || PLATFORM_ENTRIES[flags.target as 'node' | 'worker']\n\n const targets = {\n client: flags.client,\n worker: flags.target === 'worker' ? entry : false,\n node: flags.target === 'node' ? entry : false,\n }\n\n await buildService({...flags, directory, targets})\n }\n}\n"],"names":["viteBuild","buildService"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { s as semver, c as cliHydrogenPackageJson, C as Command, H as HelpfulError, a as source } from '../../Command-a46acef0.js';
1
+ import { s as semver, c as cliHydrogenPackageJson, C as Command, H as HelpfulError, a as source } from '../../Command-e4356683.js';
2
2
  import 'prettier';
3
3
  import { cli, output } from '@shopify/cli-kit';
4
4
  import 'fs';
@@ -12,6 +12,7 @@ import 'events';
12
12
  import 'tty';
13
13
  import 'readline';
14
14
  import 'buffer';
15
+ import 'string_decoder/';
15
16
  import 'child_process';
16
17
  import 'string_decoder';
17
18
  import 'crypto';
@@ -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 {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, cli} 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 ...cli.globalFlags,\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
+ {"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, cli} 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 ...cli.globalFlags,\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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"}
@@ -2,12 +2,13 @@ import { createServer } from 'vite';
2
2
  import { cli, path } from '@shopify/cli-kit';
3
3
  import { Flags, Command } from '@oclif/core';
4
4
 
5
- async function dev({ directory, force }) {
5
+ async function dev({ directory, force, host }) {
6
6
  const server = await createServer({
7
7
  root: directory,
8
8
  server: {
9
9
  open: true,
10
- force
10
+ force,
11
+ host
11
12
  }
12
13
  });
13
14
  await server.listen();
@@ -33,6 +34,10 @@ Dev.flags = {
33
34
  force: Flags.boolean({
34
35
  description: "force dependency pre-bundling.",
35
36
  env: "SHOPIFY_FLAG_DEV_FORCE"
37
+ }),
38
+ host: Flags.boolean({
39
+ description: "listen on all addresses, including LAN and public addresses.",
40
+ env: "SHOPIFY_FLAG_DEV_HOST"
36
41
  })
37
42
  };
38
43
 
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sources":["../../../src/cli/services/dev.ts","../../../src/cli/commands/hydrogen/dev.ts"],"sourcesContent":["import {createServer} from 'vite'\n\ninterface DevOptions {\n directory: string\n force: boolean\n}\n\nasync function dev({directory, force}: DevOptions) {\n const server = await createServer({\n root: directory,\n server: {\n open: true,\n force,\n },\n })\n\n await server.listen()\n server.printUrls()\n}\n\nexport default dev\n","import devService from '../../services/dev'\nimport {path, cli} from '@shopify/cli-kit'\nimport {Command, Flags} from '@oclif/core'\n\nexport default class Dev extends Command {\n static description = 'Run a Hydrogen storefront locally for development'\n static flags = {\n ...cli.globalFlags,\n path: Flags.string({\n hidden: true,\n description: 'the path to your hydrogen storefront',\n env: 'SHOPIFY_FLAG_PATH',\n }),\n force: Flags.boolean({\n description: 'force dependency pre-bundling.',\n env: 'SHOPIFY_FLAG_DEV_FORCE',\n }),\n }\n\n async run(): Promise<void> {\n const {flags} = await this.parse(Dev)\n const directory = flags.path ? path.resolve(flags.path) : process.cwd()\n\n await devService({directory, ...flags})\n }\n}\n"],"names":["devService"],"mappings":";;;;AAOA,eAAmB,GAAA,CAAA,EAAC,WAAW,KAAoB,EAAA,EAAA;AACjD,EAAM,MAAA,MAAA,GAAS,MAAM,YAAa,CAAA;AAAA,IAChC,IAAM,EAAA,SAAA;AAAA,IACN,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,IAAA;AAAA,MACN,KAAA;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,OAAO,MAAO,EAAA,CAAA;AACpB,EAAA,MAAA,CAAO,SAAU,EAAA,CAAA;AACnB;;ACdA,MAAA,IAAA,GAAA,cAAiC,OAAQ,CAAA;AAAA,EAAA,MAejC,GAAqB,GAAA;AACzB,IAAA,MAAM,EAAC,KAAA,EAAA,GAAS,MAAM,IAAA,CAAK,MAAM,IAAG,CAAA,CAAA;AACpC,IAAM,MAAA,SAAA,GAAY,MAAM,IAAO,GAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,IAAI,CAAI,GAAA,OAAA,CAAQ,GAAI,EAAA,CAAA;AAEtE,IAAA,MAAMA,GAAW,CAAA,EAAC,SAAc,EAAA,GAAA,KAAA,EAAM,CAAA,CAAA;AAAA,GACxC;AACF,CAAA,CAAA;AArBA,IAAA,GAAA,GAAA,KAAA;AAAA,IACS,WAAc,GAAA,mDAAA,CAAA;AADvB,IAES,KAAQ,GAAA;AAAA,EAAA,GACV,GAAI,CAAA,WAAA;AAAA,EACP,IAAA,EAAM,MAAM,MAAO,CAAA;AAAA,IACjB,MAAQ,EAAA,IAAA;AAAA,IACR,WAAa,EAAA,sCAAA;AAAA,IACb,GAAK,EAAA,mBAAA;AAAA,GACN,CAAA;AAAA,EACD,KAAA,EAAO,MAAM,OAAQ,CAAA;AAAA,IACnB,WAAa,EAAA,gCAAA;AAAA,IACb,GAAK,EAAA,wBAAA;AAAA,GACN,CAAA;AACH,CAAA;;;;"}
1
+ {"version":3,"file":"dev.js","sources":["../../../src/cli/services/dev.ts","../../../src/cli/commands/hydrogen/dev.ts"],"sourcesContent":["import {createServer} from 'vite'\n\ninterface DevOptions {\n directory: string\n force: boolean\n host: boolean\n}\n\nasync function dev({directory, force, host}: DevOptions) {\n const server = await createServer({\n root: directory,\n server: {\n open: true,\n force,\n host,\n },\n })\n\n await server.listen()\n server.printUrls()\n}\n\nexport default dev\n","import devService from '../../services/dev'\nimport {path, cli} from '@shopify/cli-kit'\nimport {Command, Flags} from '@oclif/core'\n\nexport default class Dev extends Command {\n static description = 'Run a Hydrogen storefront locally for development'\n static flags = {\n ...cli.globalFlags,\n path: Flags.string({\n hidden: true,\n description: 'the path to your hydrogen storefront',\n env: 'SHOPIFY_FLAG_PATH',\n }),\n force: Flags.boolean({\n description: 'force dependency pre-bundling.',\n env: 'SHOPIFY_FLAG_DEV_FORCE',\n }),\n host: Flags.boolean({\n description: 'listen on all addresses, including LAN and public addresses.',\n env: 'SHOPIFY_FLAG_DEV_HOST',\n }),\n }\n\n async run(): Promise<void> {\n const {flags} = await this.parse(Dev)\n const directory = flags.path ? path.resolve(flags.path) : process.cwd()\n\n await devService({directory, ...flags})\n }\n}\n"],"names":["devService"],"mappings":";;;;AAQA,eAAmB,GAAA,CAAA,EAAC,SAAW,EAAA,KAAA,EAAO,IAAmB,EAAA,EAAA;AACvD,EAAM,MAAA,MAAA,GAAS,MAAM,YAAa,CAAA;AAAA,IAChC,IAAM,EAAA,SAAA;AAAA,IACN,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,IAAA;AAAA,MACN,KAAA;AAAA,MACA,IAAA;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,OAAO,MAAO,EAAA,CAAA;AACpB,EAAA,MAAA,CAAO,SAAU,EAAA,CAAA;AACnB;;AChBA,MAAA,IAAA,GAAA,cAAiC,OAAQ,CAAA;AAAA,EAAA,MAmBjC,GAAqB,GAAA;AACzB,IAAA,MAAM,EAAC,KAAA,EAAA,GAAS,MAAM,IAAA,CAAK,MAAM,IAAG,CAAA,CAAA;AACpC,IAAM,MAAA,SAAA,GAAY,MAAM,IAAO,GAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,IAAI,CAAI,GAAA,OAAA,CAAQ,GAAI,EAAA,CAAA;AAEtE,IAAA,MAAMA,GAAW,CAAA,EAAC,SAAc,EAAA,GAAA,KAAA,EAAM,CAAA,CAAA;AAAA,GACxC;AACF,CAAA,CAAA;AAzBA,IAAA,GAAA,GAAA,KAAA;AAAA,IACS,WAAc,GAAA,mDAAA,CAAA;AADvB,IAES,KAAQ,GAAA;AAAA,EAAA,GACV,GAAI,CAAA,WAAA;AAAA,EACP,IAAA,EAAM,MAAM,MAAO,CAAA;AAAA,IACjB,MAAQ,EAAA,IAAA;AAAA,IACR,WAAa,EAAA,sCAAA;AAAA,IACb,GAAK,EAAA,mBAAA;AAAA,GACN,CAAA;AAAA,EACD,KAAA,EAAO,MAAM,OAAQ,CAAA;AAAA,IACnB,WAAa,EAAA,gCAAA;AAAA,IACb,GAAK,EAAA,wBAAA;AAAA,GACN,CAAA;AAAA,EACD,IAAA,EAAM,MAAM,OAAQ,CAAA;AAAA,IAClB,WAAa,EAAA,8DAAA;AAAA,IACb,GAAK,EAAA,uBAAA;AAAA,GACN,CAAA;AACH,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { b as commonjsGlobal$1, d as commonjsRequire, C as Command, a as source$1, c as cliHydrogenPackageJson } from '../../Command-a46acef0.js';
1
+ import { b as commonjsGlobal$1, d as commonjsRequire, C as Command, a as source$1, c as cliHydrogenPackageJson } from '../../Command-e4356683.js';
2
2
  import require$$0$a from 'fs';
3
3
  import require$$0$3 from 'path';
4
4
  import require$$0$4 from 'events';
@@ -20,13 +20,14 @@ import require$$20 from 'tls';
20
20
  import { cli, ui, output } from '@shopify/cli-kit';
21
21
  import { Flags } from '@oclif/core';
22
22
  import 'readline';
23
+ import 'string_decoder/';
23
24
  import 'module';
24
25
  import 'vm';
25
26
  import 'v8';
26
27
  import 'prettier';
27
28
 
28
29
  var name = "@shopify/cli";
29
- var version$2 = "2.0.2";
30
+ var version$2 = "2.0.5";
30
31
  var description = "A CLI tool to build for the Shopify platform";
31
32
  var type = "module";
32
33
  var main = "src/index.js";
@@ -76,8 +77,8 @@ var dependencies = {
76
77
  "@oclif/core": "1.7.0",
77
78
  "@oclif/plugin-help": "^5.1.12",
78
79
  "@oclif/plugin-plugins": "^2.1.0",
79
- "@shopify/cli-kit": "2.0.2",
80
- "@shopify/plugin-ngrok": "^0.2.3"
80
+ "@shopify/cli-kit": "2.0.5",
81
+ "@shopify/plugin-ngrok": "^0.2.4"
81
82
  };
82
83
  var devDependencies = {
83
84
  vitest: "0.10.0"
@@ -14724,7 +14725,7 @@ const _Init = class extends Command {
14724
14725
  [` \u2022 cd ${this.fs.relativePath(this.root, process.cwd())}`, "change into the project directory"]
14725
14726
  ]);
14726
14727
  }
14727
- const usesYarn = this.package.packageManager === "npm";
14728
+ const usesYarn = this.package.dependencyManager === "npm";
14728
14729
  this.interface.say([
14729
14730
  [` \u2022 ${usesYarn ? `yarn` : `npm install --legacy-peer-deps`}`, " install the dependencies"],
14730
14731
  [` \u2022 ${usesYarn ? `yarn` : `npm run`} dev`, " start the dev server"]