@shopify/cli-hydrogen 3.0.14 → 3.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @shopify/cli-hydrogen
2
2
 
3
+ ## 3.0.17
4
+
5
+ ### Patch Changes
6
+
7
+ - 64d4b6a8: Report Vite errors as aborts to not get them reported to Bugsnag
8
+ - Updated dependencies [df0d0347]
9
+ - Updated dependencies [6657a57c]
10
+ - @shopify/cli-kit@3.0.17
11
+
12
+ ## 3.0.16
13
+
14
+ ### Patch Changes
15
+
16
+ - eb915dee: Loose version requirements to help dependency managers dedupe dependencies
17
+ - Updated dependencies [eb915dee]
18
+ - Updated dependencies [85ee088d]
19
+ - Updated dependencies [2ecbff43]
20
+ - Updated dependencies [a750e67c]
21
+ - @shopify/cli-kit@3.0.16
22
+
23
+ ## 3.0.15
24
+
25
+ ### Patch Changes
26
+
27
+ - Updated dependencies [c3b711ec]
28
+ - Updated dependencies [99378ca0]
29
+ - @shopify/cli-kit@3.0.15
30
+
3
31
  ## 3.0.14
4
32
 
5
33
  ### Patch Changes
@@ -1,5 +1,5 @@
1
1
  import { h as hydrogenFlags } from '../../../flags-39d1e3c2.js';
2
- import { g as genericConfigurationFileNames, l as load } from '../../../hydrogen-6abf62e1.js';
2
+ import { g as genericConfigurationFileNames, l as load } from '../../../hydrogen-21482096.js';
3
3
  import { ui, dependency, path, file, error, npm, vscode, cli } from '@shopify/cli-kit';
4
4
  import stream from 'node:stream';
5
5
  import { Flags, Command } from '@oclif/core';
@@ -1,7 +1,7 @@
1
1
  import { h as hydrogenFlags } from '../../../flags-39d1e3c2.js';
2
2
  import { ui, dependency, path, file, error, system, vscode, cli } from '@shopify/cli-kit';
3
3
  import stream from 'node:stream';
4
- import { l as load } from '../../../hydrogen-6abf62e1.js';
4
+ import { l as load } from '../../../hydrogen-21482096.js';
5
5
  import { Flags, Command } from '@oclif/core';
6
6
  import 'vite';
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { createServer } from 'vite';
2
+ import { error, cli, path } from '@shopify/cli-kit';
2
3
  import { h as hydrogenFlags } from '../../flags-39d1e3c2.js';
3
- import { cli, path } from '@shopify/cli-kit';
4
4
  import { Flags, Command } from '@oclif/core';
5
5
 
6
6
  async function dev({ directory, force, host }) {
@@ -12,9 +12,15 @@ async function dev({ directory, force, host }) {
12
12
  host
13
13
  }
14
14
  });
15
- await server.listen();
16
- server.printUrls();
17
- server.config.logger.info("");
15
+ try {
16
+ await server.listen();
17
+ server.printUrls();
18
+ server.config.logger.info("");
19
+ } catch (error$1) {
20
+ const abortError = new error.Abort(error$1.message);
21
+ abortError.stack = error$1.stack;
22
+ throw abortError;
23
+ }
18
24
  }
19
25
 
20
26
  const _Dev = class extends Command {
@@ -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 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 server.config.logger.info('')\n}\n\nexport default dev\n","import devService from '../../services/dev'\nimport {hydrogenFlags} from '../../flags'\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: hydrogenFlags.path,\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;AACjB,EAAO,MAAA,CAAA,MAAA,CAAO,MAAO,CAAA,IAAA,CAAK,EAAE,CAAA,CAAA;AAC9B;;AChBA,MAAqB,IAAA,GAArB,cAAiC,OAAQ,CAAA;AAAA,EAevC,MAAM,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,SAAW,EAAA,GAAG,OAAM,CAAA,CAAA;AAAA,GACxC;AACF,CAAA,CAAA;AArBA,IAAqB,GAArB,GAAA,KAAA;AAAqB,IACZ,WAAc,GAAA,mDAAA,CAAA;AADF,IAEZ,KAAQ,GAAA;AAAA,EACb,GAAG,GAAI,CAAA,WAAA;AAAA,EACP,MAAM,aAAc,CAAA,IAAA;AAAA,EACpB,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
+ {"version":3,"file":"dev.js","sources":["../../../src/cli/services/dev.ts","../../../src/cli/commands/hydrogen/dev.ts"],"sourcesContent":["import {createServer} from 'vite'\nimport {error as kitError} from '@shopify/cli-kit'\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 try {\n await server.listen()\n server.printUrls()\n server.config.logger.info('')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n const abortError = new kitError.Abort(error.message)\n abortError.stack = error.stack\n throw abortError\n }\n}\n\nexport default dev\n","import devService from '../../services/dev'\nimport {hydrogenFlags} from '../../flags'\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: hydrogenFlags.path,\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":["error","kitError","devService"],"mappings":";;;;;AASA,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,EAAI,IAAA;AACF,IAAA,MAAM,OAAO,MAAO,EAAA,CAAA;AACpB,IAAA,MAAA,CAAO,SAAU,EAAA,CAAA;AACjB,IAAO,MAAA,CAAA,MAAA,CAAO,MAAO,CAAA,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,WAErBA,OAAP,EAAA;AACA,IAAA,MAAM,UAAa,GAAA,IAAIC,KAAS,CAAA,KAAA,CAAMD,QAAM,OAAO,CAAA,CAAA;AACnD,IAAA,UAAA,CAAW,QAAQA,OAAM,CAAA,KAAA,CAAA;AACzB,IAAM,MAAA,UAAA,CAAA;AAAA,GACR;AACF;;ACxBA,MAAqB,IAAA,GAArB,cAAiC,OAAQ,CAAA;AAAA,EAevC,MAAM,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,MAAME,GAAW,CAAA,EAAC,SAAW,EAAA,GAAG,OAAM,CAAA,CAAA;AAAA,GACxC;AACF,CAAA,CAAA;AArBA,IAAqB,GAArB,GAAA,KAAA;AAAqB,IACZ,WAAc,GAAA,mDAAA,CAAA;AADF,IAEZ,KAAQ,GAAA;AAAA,EACb,GAAG,GAAI,CAAA,WAAA;AAAA,EACP,MAAM,aAAc,CAAA,IAAA;AAAA,EACpB,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,5 +1,5 @@
1
1
  import { output, string, os, cli, path } from '@shopify/cli-kit';
2
- import { l as load } from '../../hydrogen-6abf62e1.js';
2
+ import { l as load } from '../../hydrogen-21482096.js';
3
3
  import { h as hydrogenFlags } from '../../flags-39d1e3c2.js';
4
4
  import { Flags, Command } from '@oclif/core';
5
5
  import 'vite';
@@ -1,4 +1,4 @@
1
- import { path, file, dependency, error } from '@shopify/cli-kit';
1
+ import { dependency, path, file, error } from '@shopify/cli-kit';
2
2
  import { createServer } from 'vite';
3
3
 
4
4
  const configurationFileNames = {
@@ -12,12 +12,7 @@ const genericConfigurationFileNames = {
12
12
  typescript: {
13
13
  config: "tsconfig.json"
14
14
  },
15
- yarn: {
16
- lockfile: "yarn.lock"
17
- },
18
- pnpm: {
19
- lockfile: "pnpm-lock.yaml"
20
- }
15
+ ...dependency.genericConfigurationFileNames
21
16
  };
22
17
 
23
18
  class AppErrors {
@@ -104,9 +99,15 @@ class AppLoader {
104
99
  const server = await createServer({
105
100
  server: { middlewareMode: "ssr" }
106
101
  });
107
- const config = (await server.ssrLoadModule(filepath)).default;
108
- await server.close();
109
- return config;
102
+ try {
103
+ const config = (await server.ssrLoadModule(filepath)).default;
104
+ await server.close();
105
+ return config;
106
+ } catch (error$1) {
107
+ const abortError = new error.Abort(error$1.message);
108
+ abortError.stack = error$1.stack;
109
+ throw abortError;
110
+ }
110
111
  }
111
112
  abortOrReport(errorMessage, fallback, configurationPath) {
112
113
  if (this.mode === "strict") {
@@ -123,4 +124,4 @@ async function load(directory, mode = "strict") {
123
124
  }
124
125
 
125
126
  export { genericConfigurationFileNames as g, load as l };
126
- //# sourceMappingURL=hydrogen-6abf62e1.js.map
127
+ //# sourceMappingURL=hydrogen-21482096.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrogen-21482096.js","sources":["../src/cli/constants.ts","../src/cli/models/hydrogen.ts"],"sourcesContent":["import {dependency} from '@shopify/cli-kit'\n\nexport const configurationFileNames = {\n hydrogen: 'hydrogen.config',\n} as const\n\nexport const supportedConfigExtensions = ['ts', 'js', 'mjs', 'cjs', 'json']\n\nexport const dotEnvFileNames = {\n production: '.env',\n}\n\nexport const genericConfigurationFileNames = {\n tailwind: 'tailwind.config',\n postCSS: 'postcss.config',\n eslint: '.eslintrc.js',\n typescript: {\n config: 'tsconfig.json',\n },\n ...dependency.genericConfigurationFileNames,\n} as const\n","import {configurationFileNames, genericConfigurationFileNames, supportedConfigExtensions} from '../constants'\nimport {HydrogenConfig} from '@shopify/hydrogen/config'\nimport {dependency, path, file, error as kitError} from '@shopify/cli-kit'\nimport {createServer} from 'vite'\n\nexport interface HydrogenApp {\n name: string\n directory: string\n dependencyManager: dependency.DependencyManager\n configuration: HydrogenConfig\n configurationPath: string\n nodeDependencies: {[key: string]: string}\n language: 'javascript' | 'typescript'\n errors?: AppErrors\n}\n\nexport type AppLoaderMode = 'strict' | 'report'\n\ninterface AppLoaderConstructorArgs {\n directory: string\n mode: AppLoaderMode\n}\n\nclass AppErrors {\n private errors: {\n [key: string]: string\n } = {}\n\n addError(path: string, message: string): void {\n this.errors[path] = message\n }\n\n getError(path: string): string {\n return this.errors[path]\n }\n\n isEmpty() {\n return Object.keys(this.errors).length === 0\n }\n\n toJSON(): string[] {\n return Object.values(this.errors)\n }\n}\n\nclass AppLoader {\n private directory: string\n private mode: AppLoaderMode\n private appDirectory = ''\n private configurationPath = ''\n private errors: AppErrors = new AppErrors()\n\n constructor({directory, mode}: AppLoaderConstructorArgs) {\n this.mode = mode\n this.directory = directory\n }\n\n async loaded() {\n this.appDirectory = await this.findAppDirectory()\n const configurationPath = await this.getConfigurationPath()\n const configuration = await this.loadConfigurationFile<HydrogenConfig>(configurationPath)\n const yarnLockPath = path.join(this.appDirectory, genericConfigurationFileNames.yarn.lockfile)\n const yarnLockExists = await file.exists(yarnLockPath)\n const pnpmLockPath = path.join(this.appDirectory, genericConfigurationFileNames.pnpm.lockfile)\n const pnpmLockExists = await file.exists(pnpmLockPath)\n const packageJSONPath = path.join(this.appDirectory, 'package.json')\n const name = await dependency.getPackageName(packageJSONPath)\n const nodeDependencies = await dependency.getDependencies(packageJSONPath)\n const tsConfigExists = await file.exists(path.join(this.appDirectory, 'tsconfig.json'))\n const language = tsConfigExists && nodeDependencies.typescript ? 'typescript' : 'javascript'\n\n let dependencyManager: dependency.DependencyManager\n if (yarnLockExists) {\n dependencyManager = 'yarn'\n } else if (pnpmLockExists) {\n dependencyManager = 'pnpm'\n } else {\n dependencyManager = 'npm'\n }\n\n const app: HydrogenApp = {\n name,\n directory: this.appDirectory,\n configuration,\n configurationPath,\n dependencyManager,\n nodeDependencies,\n language,\n }\n if (!this.errors.isEmpty()) app.errors = this.errors\n\n return app\n }\n\n async findAppDirectory() {\n if (!(await file.exists(this.directory))) {\n throw new kitError.Abort(`Couldn't find directory ${this.directory}`)\n }\n return path.dirname(await this.getConfigurationPath())\n }\n\n async getConfigurationPath() {\n if (this.configurationPath) return this.configurationPath\n\n const promises = supportedConfigExtensions.map((ext) =>\n path.findUp([configurationFileNames.hydrogen, ext].join('.'), {\n cwd: this.directory,\n type: 'file',\n }),\n )\n\n const configurationPathResults = await Promise.all(promises)\n\n const configurationPath = configurationPathResults.find((result) => result !== undefined)\n\n if (!configurationPath) {\n throw new kitError.Abort(\n `Couldn't find the configuration file for ${this.directory}, are you in an app directory?`,\n )\n }\n\n this.configurationPath = configurationPath\n return configurationPath\n }\n\n async loadConfigurationFile<T>(filepath: string): Promise<T> {\n const server = await createServer({\n server: {middlewareMode: 'ssr'},\n })\n\n try {\n const config = (await server.ssrLoadModule(filepath)).default\n\n await server.close()\n\n return config\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n const abortError = new kitError.Abort(error.message)\n abortError.stack = error.stack\n throw abortError\n }\n }\n\n abortOrReport<T>(errorMessage: string, fallback: T, configurationPath: string): T {\n if (this.mode === 'strict') {\n throw new kitError.Abort(errorMessage)\n } else {\n this.errors.addError(configurationPath, errorMessage)\n return fallback\n }\n }\n}\n\nexport async function load(directory: string, mode: AppLoaderMode = 'strict'): Promise<HydrogenApp> {\n const loader = new AppLoader({directory, mode})\n return loader.loaded()\n}\n"],"names":["kitError","error"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopify/cli-hydrogen",
3
- "version": "3.0.14",
3
+ "version": "3.0.17",
4
4
  "private": false,
5
5
  "description": "Commands for building Hydrogen storefronts",
6
6
  "type": "module",
@@ -33,20 +33,18 @@
33
33
  ]
34
34
  },
35
35
  "dependencies": {
36
- "@oclif/core": "1.9.0",
36
+ "@oclif/core": "^1.0.0",
37
37
  "@shopify/hydrogen": "^0.22.1",
38
38
  "@shopify/mini-oxygen": "^0.0.5",
39
39
  "@types/prettier": "^2.6.3",
40
40
  "prettier": "^2.6.1",
41
- "vite": "^2.9.9"
42
- },
43
- "peerDependencies": {
44
- "@shopify/cli-kit": "3.0.14"
41
+ "vite": "^2.9.9",
42
+ "@shopify/cli-kit": "^3.0.17"
45
43
  },
46
44
  "devDependencies": {
47
45
  "@babel/core": "^7.17.10",
48
46
  "@shopify/ast-utilities": "^1.3.4",
49
- "@shopify/cli-testing": "3.0.14",
47
+ "@shopify/cli-testing": "3.0.17",
50
48
  "@shopify/prettier-config": "^1.1.2",
51
49
  "@types/change-case": "^2.3.1",
52
50
  "@types/connect": "^3.4.35",
@@ -1 +0,0 @@
1
- {"version":3,"file":"hydrogen-6abf62e1.js","sources":["../src/cli/constants.ts","../src/cli/models/hydrogen.ts"],"sourcesContent":["export const configurationFileNames = {\n hydrogen: 'hydrogen.config',\n} as const\n\nexport const supportedConfigExtensions = ['ts', 'js', 'mjs', 'cjs', 'json']\n\nexport const dotEnvFileNames = {\n production: '.env',\n}\n\nexport const genericConfigurationFileNames = {\n tailwind: 'tailwind.config',\n postCSS: 'postcss.config',\n eslint: '.eslintrc.js',\n typescript: {\n config: 'tsconfig.json',\n },\n yarn: {\n lockfile: 'yarn.lock',\n },\n pnpm: {\n lockfile: 'pnpm-lock.yaml',\n },\n} as const\n","import {configurationFileNames, genericConfigurationFileNames, supportedConfigExtensions} from '../constants'\nimport {HydrogenConfig} from '@shopify/hydrogen/config'\nimport {dependency, path, file, error} from '@shopify/cli-kit'\nimport {createServer} from 'vite'\n\nexport interface HydrogenApp {\n name: string\n directory: string\n dependencyManager: dependency.DependencyManager\n configuration: HydrogenConfig\n configurationPath: string\n nodeDependencies: {[key: string]: string}\n language: 'javascript' | 'typescript'\n errors?: AppErrors\n}\n\nexport type AppLoaderMode = 'strict' | 'report'\n\ninterface AppLoaderConstructorArgs {\n directory: string\n mode: AppLoaderMode\n}\n\nclass AppErrors {\n private errors: {\n [key: string]: string\n } = {}\n\n addError(path: string, message: string): void {\n this.errors[path] = message\n }\n\n getError(path: string): string {\n return this.errors[path]\n }\n\n isEmpty() {\n return Object.keys(this.errors).length === 0\n }\n\n toJSON(): string[] {\n return Object.values(this.errors)\n }\n}\n\nclass AppLoader {\n private directory: string\n private mode: AppLoaderMode\n private appDirectory = ''\n private configurationPath = ''\n private errors: AppErrors = new AppErrors()\n\n constructor({directory, mode}: AppLoaderConstructorArgs) {\n this.mode = mode\n this.directory = directory\n }\n\n async loaded() {\n this.appDirectory = await this.findAppDirectory()\n const configurationPath = await this.getConfigurationPath()\n const configuration = await this.loadConfigurationFile<HydrogenConfig>(configurationPath)\n const yarnLockPath = path.join(this.appDirectory, genericConfigurationFileNames.yarn.lockfile)\n const yarnLockExists = await file.exists(yarnLockPath)\n const pnpmLockPath = path.join(this.appDirectory, genericConfigurationFileNames.pnpm.lockfile)\n const pnpmLockExists = await file.exists(pnpmLockPath)\n const packageJSONPath = path.join(this.appDirectory, 'package.json')\n const name = await dependency.getPackageName(packageJSONPath)\n const nodeDependencies = await dependency.getDependencies(packageJSONPath)\n const tsConfigExists = await file.exists(path.join(this.appDirectory, 'tsconfig.json'))\n const language = tsConfigExists && nodeDependencies.typescript ? 'typescript' : 'javascript'\n\n let dependencyManager: dependency.DependencyManager\n if (yarnLockExists) {\n dependencyManager = 'yarn'\n } else if (pnpmLockExists) {\n dependencyManager = 'pnpm'\n } else {\n dependencyManager = 'npm'\n }\n\n const app: HydrogenApp = {\n name,\n directory: this.appDirectory,\n configuration,\n configurationPath,\n dependencyManager,\n nodeDependencies,\n language,\n }\n if (!this.errors.isEmpty()) app.errors = this.errors\n\n return app\n }\n\n async findAppDirectory() {\n if (!(await file.exists(this.directory))) {\n throw new error.Abort(`Couldn't find directory ${this.directory}`)\n }\n return path.dirname(await this.getConfigurationPath())\n }\n\n async getConfigurationPath() {\n if (this.configurationPath) return this.configurationPath\n\n const promises = supportedConfigExtensions.map((ext) =>\n path.findUp([configurationFileNames.hydrogen, ext].join('.'), {\n cwd: this.directory,\n type: 'file',\n }),\n )\n\n const configurationPathResults = await Promise.all(promises)\n\n const configurationPath = configurationPathResults.find((result) => result !== undefined)\n\n if (!configurationPath) {\n throw new error.Abort(`Couldn't find the configuration file for ${this.directory}, are you in an app directory?`)\n }\n\n this.configurationPath = configurationPath\n return configurationPath\n }\n\n async loadConfigurationFile<T>(filepath: string): Promise<T> {\n const server = await createServer({\n server: {middlewareMode: 'ssr'},\n })\n\n const config = (await server.ssrLoadModule(filepath)).default\n\n await server.close()\n\n return config\n }\n\n abortOrReport<T>(errorMessage: string, fallback: T, configurationPath: string): T {\n if (this.mode === 'strict') {\n throw new error.Abort(errorMessage)\n } else {\n this.errors.addError(configurationPath, errorMessage)\n return fallback\n }\n }\n}\n\nexport async function load(directory: string, mode: AppLoaderMode = 'strict'): Promise<HydrogenApp> {\n const loader = new AppLoader({directory, mode})\n return loader.loaded()\n}\n"],"names":[],"mappings":"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"}