@shopify/cli-hydrogen 3.0.24 → 3.0.27

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.
Files changed (68) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +56 -0
  3. package/dist/cli/commands/hydrogen/add/eslint.d.ts +10 -0
  4. package/dist/cli/commands/hydrogen/add/eslint.js +25 -0
  5. package/dist/cli/commands/hydrogen/add/eslint.js.map +1 -0
  6. package/dist/cli/commands/hydrogen/add/tailwind.d.ts +10 -0
  7. package/dist/cli/commands/hydrogen/add/tailwind.js +25 -0
  8. package/dist/cli/commands/hydrogen/add/tailwind.js.map +1 -0
  9. package/dist/cli/commands/hydrogen/build.d.ts +13 -0
  10. package/dist/cli/commands/hydrogen/build.js +48 -0
  11. package/dist/cli/commands/hydrogen/build.js.map +1 -0
  12. package/dist/cli/commands/hydrogen/dev.d.ts +11 -0
  13. package/dist/cli/commands/hydrogen/dev.js +25 -0
  14. package/dist/cli/commands/hydrogen/dev.js.map +1 -0
  15. package/dist/cli/commands/hydrogen/info.d.ts +11 -0
  16. package/dist/cli/commands/hydrogen/info.js +27 -0
  17. package/dist/cli/commands/hydrogen/info.js.map +1 -0
  18. package/dist/cli/commands/hydrogen/preview.d.ts +11 -0
  19. package/dist/cli/commands/hydrogen/preview.js +37 -0
  20. package/dist/cli/commands/hydrogen/preview.js.map +1 -0
  21. package/dist/cli/constants.d.ts +21 -0
  22. package/dist/cli/constants.js +18 -0
  23. package/dist/cli/constants.js.map +1 -0
  24. package/dist/cli/flags.d.ts +4 -0
  25. package/dist/cli/flags.js +16 -0
  26. package/dist/cli/flags.js.map +1 -0
  27. package/dist/cli/models/hydrogen.d.ts +22 -0
  28. package/dist/cli/models/hydrogen.js +82 -0
  29. package/dist/cli/models/hydrogen.js.map +1 -0
  30. package/dist/cli/services/build.d.ts +10 -0
  31. package/dist/cli/services/build.js +38 -0
  32. package/dist/cli/services/build.js.map +1 -0
  33. package/dist/cli/services/dev.d.ts +7 -0
  34. package/dist/cli/services/dev.js +25 -0
  35. package/dist/cli/services/dev.js.map +1 -0
  36. package/dist/cli/services/eslint.d.ts +8 -0
  37. package/dist/cli/services/eslint.js +73 -0
  38. package/dist/cli/services/eslint.js.map +1 -0
  39. package/dist/cli/services/info.d.ts +7 -0
  40. package/dist/cli/services/info.js +131 -0
  41. package/dist/cli/services/info.js.map +1 -0
  42. package/dist/cli/services/preview.d.ts +9 -0
  43. package/dist/cli/services/preview.js +55 -0
  44. package/dist/cli/services/preview.js.map +1 -0
  45. package/dist/cli/services/tailwind.d.ts +9 -0
  46. package/dist/cli/services/tailwind.js +102 -0
  47. package/dist/cli/services/tailwind.js.map +1 -0
  48. package/dist/cli/utilities/load-config.d.ts +5 -0
  49. package/dist/cli/utilities/load-config.js +6 -0
  50. package/dist/cli/utilities/load-config.js.map +1 -0
  51. package/dist/tsconfig.tsbuildinfo +1 -0
  52. package/package.json +15 -13
  53. package/dist/commands/hydrogen/add/eslint.js +0 -99
  54. package/dist/commands/hydrogen/add/eslint.js.map +0 -1
  55. package/dist/commands/hydrogen/add/tailwind.js +0 -131
  56. package/dist/commands/hydrogen/add/tailwind.js.map +0 -1
  57. package/dist/commands/hydrogen/build.js +0 -77
  58. package/dist/commands/hydrogen/build.js.map +0 -1
  59. package/dist/commands/hydrogen/dev.js +0 -49
  60. package/dist/commands/hydrogen/dev.js.map +0 -1
  61. package/dist/commands/hydrogen/info.js +0 -156
  62. package/dist/commands/hydrogen/info.js.map +0 -1
  63. package/dist/commands/hydrogen/preview.js +0 -90
  64. package/dist/commands/hydrogen/preview.js.map +0 -1
  65. package/dist/flags-39d1e3c2.js +0 -19
  66. package/dist/flags-39d1e3c2.js.map +0 -1
  67. package/dist/hydrogen-21276a42.js +0 -124
  68. package/dist/hydrogen-21276a42.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # @shopify/cli-hydrogen
2
2
 
3
+ ## 3.0.27
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [e2e8b4db]
8
+ - @shopify/cli-kit@3.0.27
9
+
10
+ ## 3.0.26
11
+
12
+ ### Patch Changes
13
+
14
+ - 022a4e24: Internal: build cli-kit using tsc instead of rollup+esbuild
15
+ - c4465044: Not report Vite build errors as bugs
16
+ - 787a29fa: Update mini-oxygen
17
+ - 2d8e4458: Log Listr task titles to logfile
18
+ - Updated dependencies [dbcffdbb]
19
+ - Updated dependencies [022a4e24]
20
+ - Updated dependencies [e81e52b1]
21
+ - Updated dependencies [c16035f1]
22
+ - Updated dependencies [61f595df]
23
+ - Updated dependencies [87f7843f]
24
+ - Updated dependencies [8ff4e3d7]
25
+ - Updated dependencies [168bb4c6]
26
+ - Updated dependencies [0a9dbc63]
27
+ - Updated dependencies [2d8e4458]
28
+ - @shopify/cli-kit@3.0.26
29
+
30
+ ## 3.0.25
31
+
32
+ ### Patch Changes
33
+
34
+ - 0621bd1d: Add warning for eslint-plugin-hydrogen missing if eslint exists during `hydrogen info` command.
35
+ - ec9e9a47: Fix TypeScript support in `hydrogen add eslint`. This command will now add the TypeScript eslint configuration in addition to the recommended configuration for TypeScript projects.
36
+ - 66cf3dee: Fix error messages to show up when running hydrogen preview
37
+ - Updated dependencies [a6ea9c8d]
38
+ - Updated dependencies [822d0fd3]
39
+ - Updated dependencies [bf8137c2]
40
+ - Updated dependencies [e650b499]
41
+ - Updated dependencies [3360289d]
42
+ - Updated dependencies [2a666db7]
43
+ - @shopify/cli-kit@3.0.25
44
+
3
45
  ## 3.0.24
4
46
 
5
47
  ### Patch Changes
package/README.md ADDED
@@ -0,0 +1,56 @@
1
+ <img src="https://github.com/Shopify/cli/blob/main/assets/logo.png?raw=true" width="150"/>
2
+
3
+ # Shopify CLI
4
+ <a href="http://twitter.com/ShopifyDevs"><img src="https://img.shields.io/twitter/follow/ShopifyDevs?style=flat-square" alt="Twitter Followers"></a>
5
+ <img src="https://img.shields.io/badge/License-MIT-green.svg" alt="License">
6
+ <a href="https://github.com/Shopify/cli/actions/workflows/shopify-cli.yml">![badge](https://github.com/Shopify/cli/actions/workflows/shopify-cli.yml/badge.svg)</a>
7
+
8
+ With the Shopify command line interface (Shopify CLI 3.0), you can:
9
+ - build custom storefronts and manage their hosting
10
+ - initialize, build, dev, and deploy Shopify apps — and scaffold app extensions
11
+
12
+ <p>&nbsp;</p>
13
+
14
+ ### Before you begin ###
15
+
16
+ Install the latest version of [Node.js](https://nodejs.org/en/download/) and [npm](https://docs.npmjs.com/getting-started) (or another package manager of your choice).
17
+
18
+ <p>&nbsp;</p>
19
+
20
+ ## Developing apps with Shopify CLI
21
+
22
+ When you’re building a Shopify app, you can initialize your project using your preferred package manager. A single command will install all the dependencies you need — including Shopify CLI itself.
23
+
24
+ Initialize your project using one of the following commands:
25
+ - `npx @shopify/create-app@latest` (installed by default with Node)
26
+ - `pnpm create @shopify/create-app@latest`
27
+ - `yarn create @shopify/app`
28
+
29
+ Learn more in the docs: [Create an app](https://shopify.dev/apps/getting-started/create)
30
+
31
+ <p>&nbsp;</p>
32
+
33
+ ## Developing Hydrogen custom storefronts with Shopify CLI ##
34
+
35
+ When you’re building a custom storefront, use Hydrogen, Shopify’s React-based framework optimized for headless commerce. Initialize a new Hydrogen app with a fully-featured Demo Store template, or start from scratch with the minimal Hello World template. Shopify Plus stores can deploy their Hydrogen apps to Oxygen, Shopify’s global hosting solution, at no extra cost.
36
+
37
+ Get started using one of the following commands:
38
+ - `npm init @shopify/hydrogen@latest`
39
+ - `npx @shopify/create-hydrogen@latest`
40
+ - `pnpm create @shopify/create-hydrogen@latest`
41
+ - `yarn create @shopify/hydrogen`
42
+
43
+ <p>&nbsp;</p>
44
+
45
+ ## Help 🖐
46
+
47
+ If you encounter issues using the CLI or have feedback you'd like to share with us, below are some options:
48
+
49
+ - [Open a GitHub issue](https://github.com/Shopify/cli/issues) - To report bugs or request new features, open an issue in the Shopify CLI repository.
50
+ - [Shopify Community Forums](https://community.shopify.com/) - Visit our forums to connect with the community and learn more about Shopify CLI development.
51
+
52
+ <p>&nbsp;</p>
53
+
54
+ ## References
55
+
56
+ - [oclif](https://oclif.io/)
@@ -0,0 +1,10 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class AddESLint extends Command {
3
+ static flags: {
4
+ force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
5
+ path: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
6
+ install: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
7
+ verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
8
+ };
9
+ run(): Promise<void>;
10
+ }
@@ -0,0 +1,25 @@
1
+ import { hydrogenFlags } from '../../../flags.js';
2
+ import { addESLint } from '../../../services/eslint.js';
3
+ import { load as loadApp } from '../../../models/hydrogen.js';
4
+ import { Command, Flags } from '@oclif/core';
5
+ import { cli, path } from '@shopify/cli-kit';
6
+ export default class AddESLint extends Command {
7
+ async run() {
8
+ const { flags: { path: pathFlag, install, force }, } = await this.parse(AddESLint);
9
+ const directory = pathFlag ? path.resolve(pathFlag) : process.cwd();
10
+ const app = await loadApp(directory);
11
+ await addESLint({ app, install, force });
12
+ }
13
+ }
14
+ AddESLint.flags = {
15
+ ...cli.globalFlags,
16
+ ...hydrogenFlags,
17
+ force: Flags.boolean({
18
+ hidden: false,
19
+ char: 'f',
20
+ description: 'Overwrite existing configuration',
21
+ default: false,
22
+ env: 'SHOPIFY_FLAG_FORCE',
23
+ }),
24
+ };
25
+ //# sourceMappingURL=eslint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../../../src/cli/commands/hydrogen/add/eslint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAC,IAAI,IAAI,OAAO,EAAc,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAE1C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAarC,KAAK,CAAC,GAAG;QACd,MAAM,EACJ,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAC,GACxC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAEnE,MAAM,GAAG,GAAgB,MAAM,OAAO,CAAC,SAAS,CAAC,CAAA;QAEjD,MAAM,SAAS,CAAC,EAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,CAAA;IACxC,CAAC;;AArBM,eAAK,GAAG;IACb,GAAG,GAAG,CAAC,WAAW;IAClB,GAAG,aAAa;IAChB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACnB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,KAAK;QACd,GAAG,EAAE,oBAAoB;KAC1B,CAAC;CACH,CAAA","sourcesContent":["import {hydrogenFlags} from '../../../flags.js'\nimport {addESLint} from '../../../services/eslint.js'\nimport {load as loadApp, HydrogenApp} from '../../../models/hydrogen.js'\nimport {Command, Flags} from '@oclif/core'\nimport {cli, path} from '@shopify/cli-kit'\n\nexport default class AddESLint extends Command {\n static flags = {\n ...cli.globalFlags,\n ...hydrogenFlags,\n force: Flags.boolean({\n hidden: false,\n char: 'f',\n description: 'Overwrite existing configuration',\n default: false,\n env: 'SHOPIFY_FLAG_FORCE',\n }),\n }\n\n public async run(): Promise<void> {\n const {\n flags: {path: pathFlag, install, force},\n } = await this.parse(AddESLint)\n const directory = pathFlag ? path.resolve(pathFlag) : process.cwd()\n\n const app: HydrogenApp = await loadApp(directory)\n\n await addESLint({app, install, force})\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class AddTailwind extends Command {
3
+ static flags: {
4
+ force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
5
+ path: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
6
+ install: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
7
+ verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
8
+ };
9
+ run(): Promise<void>;
10
+ }
@@ -0,0 +1,25 @@
1
+ import { hydrogenFlags } from '../../../flags.js';
2
+ import { addTailwind } from '../../../services/tailwind.js';
3
+ import { load as loadApp } from '../../../models/hydrogen.js';
4
+ import { Command, Flags } from '@oclif/core';
5
+ import { path, cli } from '@shopify/cli-kit';
6
+ export default class AddTailwind extends Command {
7
+ async run() {
8
+ const { flags: { path: pathFlag, install, force }, } = await this.parse(AddTailwind);
9
+ const directory = pathFlag ? path.resolve(pathFlag) : process.cwd();
10
+ const app = await loadApp(directory);
11
+ await addTailwind({ app, directory, install, force });
12
+ }
13
+ }
14
+ AddTailwind.flags = {
15
+ ...cli.globalFlags,
16
+ ...hydrogenFlags,
17
+ force: Flags.boolean({
18
+ hidden: false,
19
+ char: 'f',
20
+ description: 'overwrite existing configuration',
21
+ default: false,
22
+ env: 'SHOPIFY_FLAG_FORCE',
23
+ }),
24
+ };
25
+ //# sourceMappingURL=tailwind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../../../../../src/cli/commands/hydrogen/add/tailwind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAC,IAAI,IAAI,OAAO,EAAc,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAE1C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAavC,KAAK,CAAC,GAAG;QACd,MAAM,EACJ,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAC,GACxC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAEnE,MAAM,GAAG,GAAgB,MAAM,OAAO,CAAC,SAAS,CAAC,CAAA;QAEjD,MAAM,WAAW,CAAC,EAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,CAAA;IACrD,CAAC;;AArBM,iBAAK,GAAG;IACb,GAAG,GAAG,CAAC,WAAW;IAClB,GAAG,aAAa;IAChB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACnB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,KAAK;QACd,GAAG,EAAE,oBAAoB;KAC1B,CAAC;CACH,CAAA","sourcesContent":["import {hydrogenFlags} from '../../../flags.js'\nimport {addTailwind} from '../../../services/tailwind.js'\nimport {load as loadApp, HydrogenApp} from '../../../models/hydrogen.js'\nimport {Command, Flags} from '@oclif/core'\nimport {path, cli} from '@shopify/cli-kit'\n\nexport default class AddTailwind extends Command {\n static flags = {\n ...cli.globalFlags,\n ...hydrogenFlags,\n force: Flags.boolean({\n hidden: false,\n char: 'f',\n description: 'overwrite existing configuration',\n default: false,\n env: 'SHOPIFY_FLAG_FORCE',\n }),\n }\n\n public async run(): Promise<void> {\n const {\n flags: {path: pathFlag, install, force},\n } = await this.parse(AddTailwind)\n const directory = pathFlag ? path.resolve(pathFlag) : process.cwd()\n\n const app: HydrogenApp = await loadApp(directory)\n\n await addTailwind({app, directory, install, force})\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Build extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ path: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
6
+ base: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
7
+ client: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
8
+ target: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string>;
9
+ entry: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
10
+ verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,48 @@
1
+ import buildService from '../../services/build.js';
2
+ import { hydrogenFlags } from '../../flags.js';
3
+ import { Command, Flags } from '@oclif/core';
4
+ import { path, cli } from '@shopify/cli-kit';
5
+ const PLATFORM_ENTRIES = {
6
+ node: `@shopify/hydrogen/platforms/node`,
7
+ worker: `@shopify/hydrogen/platforms/worker`,
8
+ };
9
+ export default class Build extends Command {
10
+ async run() {
11
+ const { flags } = await this.parse(Build);
12
+ const directory = flags.path ? path.resolve(flags.path) : process.cwd();
13
+ const entry = flags.entry || PLATFORM_ENTRIES[flags.target];
14
+ const targets = {
15
+ client: flags.client,
16
+ worker: flags.target === 'worker' ? entry : false,
17
+ node: flags.target === 'node' ? entry : false,
18
+ };
19
+ await buildService({ ...flags, directory, targets });
20
+ }
21
+ }
22
+ Build.description = 'Builds a Hydrogen storefront for production';
23
+ Build.flags = {
24
+ ...cli.globalFlags,
25
+ path: hydrogenFlags.path,
26
+ base: Flags.string({
27
+ description: ' the public path when served in production',
28
+ env: 'SHOPIFY_FLAG_BUILD_BASE',
29
+ }),
30
+ client: Flags.boolean({
31
+ description: 'build the client code',
32
+ env: 'SHOPIFY_FLAG_BUILD_CLIENT',
33
+ allowNo: true,
34
+ default: true,
35
+ }),
36
+ target: Flags.string({
37
+ char: 't',
38
+ description: 'the target platform to build for (worker or node)',
39
+ options: ['node', 'worker'],
40
+ default: 'worker',
41
+ env: 'SHOPIFY_FLAG_BUILD_TARGET',
42
+ }),
43
+ entry: Flags.string({
44
+ description: 'produce Server Side Rendering (SSR) build for node environments',
45
+ env: 'SHOPIFY_FLAG_BUILD_SSR_ENTRY',
46
+ }),
47
+ };
48
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../src/cli/commands/hydrogen/build.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAE1C,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE,kCAAkC;IACxC,MAAM,EAAE,oCAAoC;CAC7C,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IA4BxC,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAEvE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAA2B,CAAC,CAAA;QAEhF,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;YACjD,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;SAC9C,CAAA;QAED,MAAM,YAAY,CAAC,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,OAAO,EAAC,CAAC,CAAA;IACpD,CAAC;;AAxCM,iBAAW,GAAG,6CAA6C,CAAA;AAC3D,WAAK,GAAG;IACb,GAAG,GAAG,CAAC,WAAW;IAClB,IAAI,EAAE,aAAa,CAAC,IAAI;IACxB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,4CAA4C;QACzD,GAAG,EAAE,yBAAyB;KAC/B,CAAC;IACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,uBAAuB;QACpC,GAAG,EAAE,2BAA2B;QAChC,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,mDAAmD;QAChE,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC3B,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,2BAA2B;KACjC,CAAC;IACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,iEAAiE;QAC9E,GAAG,EAAE,8BAA8B;KACpC,CAAC;CACH,CAAA","sourcesContent":["import buildService from '../../services/build.js'\nimport {hydrogenFlags} from '../../flags.js'\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: hydrogenFlags.path,\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"]}
@@ -0,0 +1,11 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Dev extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ path: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
6
+ force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
7
+ host: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
8
+ verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,25 @@
1
+ import devService from '../../services/dev.js';
2
+ import { hydrogenFlags } from '../../flags.js';
3
+ import { path, cli } from '@shopify/cli-kit';
4
+ import { Command, Flags } from '@oclif/core';
5
+ export default class Dev extends Command {
6
+ async run() {
7
+ const { flags } = await this.parse(Dev);
8
+ const directory = flags.path ? path.resolve(flags.path) : process.cwd();
9
+ await devService({ directory, ...flags });
10
+ }
11
+ }
12
+ Dev.description = 'Run a Hydrogen storefront locally for development';
13
+ Dev.flags = {
14
+ ...cli.globalFlags,
15
+ path: hydrogenFlags.path,
16
+ force: Flags.boolean({
17
+ description: 'force dependency pre-bundling.',
18
+ env: 'SHOPIFY_FLAG_DEV_FORCE',
19
+ }),
20
+ host: Flags.boolean({
21
+ description: 'listen on all addresses, including LAN and public addresses.',
22
+ env: 'SHOPIFY_FLAG_DEV_HOST',
23
+ }),
24
+ };
25
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../../src/cli/commands/hydrogen/dev.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAE1C,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,OAAO;IAetC,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAEvE,MAAM,UAAU,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,CAAC,CAAA;IACzC,CAAC;;AAnBM,eAAW,GAAG,mDAAmD,CAAA;AACjE,SAAK,GAAG;IACb,GAAG,GAAG,CAAC,WAAW;IAClB,IAAI,EAAE,aAAa,CAAC,IAAI;IACxB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACnB,WAAW,EAAE,gCAAgC;QAC7C,GAAG,EAAE,wBAAwB;KAC9B,CAAC;IACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;QAClB,WAAW,EAAE,8DAA8D;QAC3E,GAAG,EAAE,uBAAuB;KAC7B,CAAC;CACH,CAAA","sourcesContent":["import devService from '../../services/dev.js'\nimport {hydrogenFlags} from '../../flags.js'\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"]}
@@ -0,0 +1,11 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Info extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ showToken: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
6
+ path: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
7
+ install: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
8
+ verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,27 @@
1
+ import { info } from '../../services/info.js';
2
+ import { load as loadApp } from '../../models/hydrogen.js';
3
+ import { hydrogenFlags } from '../../flags.js';
4
+ import { Command, Flags } from '@oclif/core';
5
+ import { output, path, cli } from '@shopify/cli-kit';
6
+ export default class Info extends Command {
7
+ async run() {
8
+ const { flags } = await this.parse(Info);
9
+ const directory = flags.path ? path.resolve(flags.path) : process.cwd();
10
+ const app = await loadApp(directory);
11
+ output.info(info(app, { showPrivateData: flags.showToken }));
12
+ if (app.errors)
13
+ process.exit(2);
14
+ }
15
+ }
16
+ Info.description = 'Print basic information about your hydrogen app';
17
+ Info.flags = {
18
+ ...cli.globalFlags,
19
+ ...hydrogenFlags,
20
+ showToken: Flags.boolean({
21
+ hidden: false,
22
+ description: 'Show storefront API token',
23
+ default: false,
24
+ env: 'SHOPIFY_HYDROGEN_FLAG_SHOW_TOKEN',
25
+ }),
26
+ };
27
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../src/cli/commands/hydrogen/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,wBAAwB,CAAA;AAC3C,OAAO,EAAC,IAAI,IAAI,OAAO,EAAc,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IAchC,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QACvE,MAAM,GAAG,GAAgB,MAAM,OAAO,CAAC,SAAS,CAAC,CAAA;QAEjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC,eAAe,EAAE,KAAK,CAAC,SAAS,EAAC,CAAC,CAAC,CAAA;QAC1D,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;;AApBM,gBAAW,GAAG,iDAAiD,CAAA;AAE/D,UAAK,GAAG;IACb,GAAG,GAAG,CAAC,WAAW;IAClB,GAAG,aAAa;IAChB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;QACvB,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,KAAK;QACd,GAAG,EAAE,kCAAkC;KACxC,CAAC;CACH,CAAA","sourcesContent":["import {info} from '../../services/info.js'\nimport {load as loadApp, HydrogenApp} from '../../models/hydrogen.js'\nimport {hydrogenFlags} from '../../flags.js'\nimport {Command, Flags} from '@oclif/core'\nimport {output, path, cli} from '@shopify/cli-kit'\n\nexport default class Info extends Command {\n static description = 'Print basic information about your hydrogen app'\n\n static flags = {\n ...cli.globalFlags,\n ...hydrogenFlags,\n showToken: Flags.boolean({\n hidden: false,\n description: 'Show storefront API token',\n default: false,\n env: 'SHOPIFY_HYDROGEN_FLAG_SHOW_TOKEN',\n }),\n }\n\n public async run(): Promise<void> {\n const {flags} = await this.parse(Info)\n const directory = flags.path ? path.resolve(flags.path) : process.cwd()\n const app: HydrogenApp = await loadApp(directory)\n\n output.info(info(app, {showPrivateData: flags.showToken}))\n if (app.errors) process.exit(2)\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Preview extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ path: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
6
+ port: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string>;
7
+ target: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string>;
8
+ verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,37 @@
1
+ import { previewInWorker, previewInNode } from '../../services/preview.js';
2
+ import { hydrogenFlags } from '../../flags.js';
3
+ import { path, cli } from '@shopify/cli-kit';
4
+ import { Command, Flags } from '@oclif/core';
5
+ export default class Preview extends Command {
6
+ async run() {
7
+ const { flags } = await this.parse(Preview);
8
+ const directory = flags.path ? path.resolve(flags.path) : process.cwd();
9
+ const port = parseInt(flags.port, 10);
10
+ if (flags.target === 'worker') {
11
+ await previewInWorker({ directory, port });
12
+ }
13
+ else if (flags.target === 'node') {
14
+ await previewInNode({ directory, port });
15
+ }
16
+ }
17
+ }
18
+ Preview.description = 'Run a Hydrogen storefront locally in a worker environment';
19
+ Preview.flags = {
20
+ ...cli.globalFlags,
21
+ path: hydrogenFlags.path,
22
+ port: Flags.string({
23
+ char: 'p',
24
+ hidden: true,
25
+ description: 'the port to run the preview server on',
26
+ default: '3000',
27
+ env: 'SHOPIFY_FLAG_PORT',
28
+ }),
29
+ target: Flags.string({
30
+ char: 't',
31
+ description: 'the target environment (worker or node)',
32
+ options: ['node', 'worker'],
33
+ default: 'worker',
34
+ env: 'SHOPIFY_FLAG_PREVIEW_TARGET',
35
+ }),
36
+ };
37
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../../src/cli/commands/hydrogen/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAE1C,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAqB1C,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAErC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC7B,MAAM,eAAe,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;SACzC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;YAClC,MAAM,aAAa,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;SACvC;IACH,CAAC;;AA9BM,mBAAW,GAAG,2DAA2D,CAAA;AACzE,aAAK,GAAG;IACb,GAAG,GAAG,CAAC,WAAW;IAClB,IAAI,EAAE,aAAa,CAAC,IAAI;IACxB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,mBAAmB;KACzB,CAAC;IACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC3B,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,6BAA6B;KACnC,CAAC;CACH,CAAA","sourcesContent":["import {previewInWorker, previewInNode} from '../../services/preview.js'\nimport {hydrogenFlags} from '../../flags.js'\nimport {path, cli} from '@shopify/cli-kit'\nimport {Command, Flags} from '@oclif/core'\n\nexport default class Preview extends Command {\n static description = 'Run a Hydrogen storefront locally in a worker environment'\n static flags = {\n ...cli.globalFlags,\n path: hydrogenFlags.path,\n port: Flags.string({\n char: 'p',\n hidden: true,\n description: 'the port to run the preview server on',\n default: '3000',\n env: 'SHOPIFY_FLAG_PORT',\n }),\n target: Flags.string({\n char: 't',\n description: 'the target environment (worker or node)',\n options: ['node', 'worker'],\n default: 'worker',\n env: 'SHOPIFY_FLAG_PREVIEW_TARGET',\n }),\n }\n\n async run(): Promise<void> {\n const {flags} = await this.parse(Preview)\n const directory = flags.path ? path.resolve(flags.path) : process.cwd()\n const port = parseInt(flags.port, 10)\n\n if (flags.target === 'worker') {\n await previewInWorker({directory, port})\n } else if (flags.target === 'node') {\n await previewInNode({directory, port})\n }\n }\n}\n"]}
@@ -0,0 +1,21 @@
1
+ export declare const configurationFileNames: {
2
+ readonly hydrogen: "hydrogen.config";
3
+ };
4
+ export declare const supportedConfigExtensions: string[];
5
+ export declare const dotEnvFileNames: {
6
+ production: string;
7
+ };
8
+ export declare const genericConfigurationFileNames: {
9
+ readonly yarn: {
10
+ readonly lockfile: "yarn.lock";
11
+ };
12
+ readonly pnpm: {
13
+ readonly lockfile: "pnpm-lock.yaml";
14
+ };
15
+ readonly tailwind: "tailwind.config";
16
+ readonly postCSS: "postcss.config";
17
+ readonly eslint: ".eslintrc.js";
18
+ readonly typescript: {
19
+ readonly config: "tsconfig.json";
20
+ };
21
+ };
@@ -0,0 +1,18 @@
1
+ import { dependency } from '@shopify/cli-kit';
2
+ export const configurationFileNames = {
3
+ hydrogen: 'hydrogen.config',
4
+ };
5
+ export const supportedConfigExtensions = ['ts', 'js', 'mjs', 'cjs', 'json'];
6
+ export const dotEnvFileNames = {
7
+ production: '.env',
8
+ };
9
+ export const genericConfigurationFileNames = {
10
+ tailwind: 'tailwind.config',
11
+ postCSS: 'postcss.config',
12
+ eslint: '.eslintrc.js',
13
+ typescript: {
14
+ config: 'tsconfig.json',
15
+ },
16
+ ...dependency.genericConfigurationFileNames,
17
+ };
18
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAE3C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,QAAQ,EAAE,iBAAiB;CACnB,CAAA;AAEV,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AAE3E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,MAAM;CACnB,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,gBAAgB;IACzB,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE;QACV,MAAM,EAAE,eAAe;KACxB;IACD,GAAG,UAAU,CAAC,6BAA6B;CACnC,CAAA","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"]}
@@ -0,0 +1,4 @@
1
+ export declare const hydrogenFlags: {
2
+ path: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
3
+ install: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
4
+ };
@@ -0,0 +1,16 @@
1
+ import { Flags } from '@oclif/core';
2
+ export const hydrogenFlags = {
3
+ path: Flags.string({
4
+ hidden: true,
5
+ description: 'the path to your hydrogen storefront',
6
+ env: 'SHOPIFY_HYDROGEN_FLAG_PATH',
7
+ }),
8
+ install: Flags.boolean({
9
+ hidden: true,
10
+ default: true,
11
+ description: 'should install packages',
12
+ env: 'SHOPIFY_HYDROGEN_FLAG_INSTALL',
13
+ allowNo: true,
14
+ }),
15
+ };
16
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/cli/flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAEjC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACjB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,sCAAsC;QACnD,GAAG,EAAE,4BAA4B;KAClC,CAAC;IACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,yBAAyB;QACtC,GAAG,EAAE,+BAA+B;QACpC,OAAO,EAAE,IAAI;KACd,CAAC;CACH,CAAA","sourcesContent":["import {Flags} from '@oclif/core'\n\nexport const hydrogenFlags = {\n path: Flags.string({\n hidden: true,\n description: 'the path to your hydrogen storefront',\n env: 'SHOPIFY_HYDROGEN_FLAG_PATH',\n }),\n install: Flags.boolean({\n hidden: true,\n default: true,\n description: 'should install packages',\n env: 'SHOPIFY_HYDROGEN_FLAG_INSTALL',\n allowNo: true,\n }),\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import { dependency } from '@shopify/cli-kit';
2
+ import type { HydrogenConfig } from '@shopify/hydrogen/config';
3
+ export interface HydrogenApp {
4
+ name: string;
5
+ directory: string;
6
+ dependencyManager: dependency.DependencyManager;
7
+ configuration: HydrogenConfig;
8
+ nodeDependencies: {
9
+ [key: string]: string;
10
+ };
11
+ language: 'JavaScript' | 'TypeScript';
12
+ errors?: AppErrors;
13
+ }
14
+ declare class AppErrors {
15
+ private errors;
16
+ addError(path: string, message: string): void;
17
+ getError(path: string): string;
18
+ isEmpty(): boolean;
19
+ toJSON(): string[];
20
+ }
21
+ export declare function load(directory: string): Promise<HydrogenApp>;
22
+ export {};
@@ -0,0 +1,82 @@
1
+ import { genericConfigurationFileNames } from '../constants.js';
2
+ import { loadConfig } from '../utilities/load-config.js';
3
+ import { dependency, path, error as kitError, file } from '@shopify/cli-kit';
4
+ class AppErrors {
5
+ constructor() {
6
+ this.errors = {};
7
+ }
8
+ addError(path, message) {
9
+ this.errors[path] = message;
10
+ }
11
+ getError(path) {
12
+ return this.errors[path];
13
+ }
14
+ isEmpty() {
15
+ return Object.keys(this.errors).length === 0;
16
+ }
17
+ toJSON() {
18
+ return Object.values(this.errors);
19
+ }
20
+ }
21
+ class HydrogenAppLoader {
22
+ constructor({ directory }) {
23
+ this.errors = new AppErrors();
24
+ this.directory = directory;
25
+ }
26
+ async loaded() {
27
+ if (!(await file.exists(this.directory))) {
28
+ throw new kitError.Abort(`Couldn't find directory ${this.directory}`);
29
+ }
30
+ const { configuration } = await this.loadConfig();
31
+ const yarnLockPath = path.join(this.directory, genericConfigurationFileNames.yarn.lockfile);
32
+ const yarnLockExists = await file.exists(yarnLockPath);
33
+ const pnpmLockPath = path.join(this.directory, genericConfigurationFileNames.pnpm.lockfile);
34
+ const pnpmLockExists = await file.exists(pnpmLockPath);
35
+ const packageJSONPath = path.join(this.directory, 'package.json');
36
+ const name = await dependency.getPackageName(packageJSONPath);
37
+ const nodeDependencies = await dependency.getDependencies(packageJSONPath);
38
+ const tsConfigExists = await file.exists(path.join(this.directory, 'tsconfig.json'));
39
+ const language = tsConfigExists && nodeDependencies.typescript ? 'TypeScript' : 'JavaScript';
40
+ let dependencyManager;
41
+ if (yarnLockExists) {
42
+ dependencyManager = 'yarn';
43
+ }
44
+ else if (pnpmLockExists) {
45
+ dependencyManager = 'pnpm';
46
+ }
47
+ else {
48
+ dependencyManager = 'npm';
49
+ }
50
+ const app = {
51
+ name,
52
+ directory: this.directory,
53
+ configuration,
54
+ dependencyManager,
55
+ nodeDependencies,
56
+ language,
57
+ };
58
+ if (!this.errors.isEmpty())
59
+ app.errors = this.errors;
60
+ return app;
61
+ }
62
+ async loadConfig() {
63
+ const abortError = new kitError.Abort(`Couldn't find hydrogen configuration file`);
64
+ try {
65
+ const config = await loadConfig({ root: this.directory });
66
+ if (!config) {
67
+ throw abortError;
68
+ }
69
+ return config;
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
+ }
72
+ catch (error) {
73
+ abortError.stack = error.stack;
74
+ throw abortError;
75
+ }
76
+ }
77
+ }
78
+ export async function load(directory) {
79
+ const loader = new HydrogenAppLoader({ directory });
80
+ return loader.loaded();
81
+ }
82
+ //# sourceMappingURL=hydrogen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrogen.js","sourceRoot":"","sources":["../../../src/cli/models/hydrogen.ts"],"names":[],"mappings":"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","sourcesContent":["import {genericConfigurationFileNames} from '../constants.js'\nimport {loadConfig} from '../utilities/load-config.js'\nimport {dependency, path, error as kitError, file} from '@shopify/cli-kit'\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-ignore\nimport type {HydrogenConfig} from '@shopify/hydrogen/config'\n/* eslint-enable @typescript-eslint/ban-ts-comment */\n\nexport interface HydrogenApp {\n name: string\n directory: string\n dependencyManager: dependency.DependencyManager\n configuration: HydrogenConfig\n nodeDependencies: {[key: string]: string}\n language: 'JavaScript' | 'TypeScript'\n errors?: AppErrors\n}\n\ninterface AppLoaderConstructorArgs {\n directory: string\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 HydrogenAppLoader {\n private directory: string\n private errors: AppErrors = new AppErrors()\n\n constructor({directory}: AppLoaderConstructorArgs) {\n this.directory = directory\n }\n\n async loaded() {\n if (!(await file.exists(this.directory))) {\n throw new kitError.Abort(`Couldn't find directory ${this.directory}`)\n }\n\n const {configuration} = await this.loadConfig()\n\n const yarnLockPath = path.join(this.directory, genericConfigurationFileNames.yarn.lockfile)\n const yarnLockExists = await file.exists(yarnLockPath)\n const pnpmLockPath = path.join(this.directory, genericConfigurationFileNames.pnpm.lockfile)\n const pnpmLockExists = await file.exists(pnpmLockPath)\n const packageJSONPath = path.join(this.directory, '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.directory, '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.directory,\n configuration,\n dependencyManager,\n nodeDependencies,\n language,\n }\n\n if (!this.errors.isEmpty()) app.errors = this.errors\n\n return app\n }\n\n async loadConfig() {\n const abortError = new kitError.Abort(`Couldn't find hydrogen configuration file`)\n\n try {\n const config = await loadConfig({root: this.directory})\n\n if (!config) {\n throw abortError\n }\n\n return config\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n abortError.stack = error.stack\n throw abortError\n }\n }\n}\n\nexport async function load(directory: string): Promise<HydrogenApp> {\n const loader = new HydrogenAppLoader({directory})\n\n return loader.loaded()\n}\n"]}
@@ -0,0 +1,10 @@
1
+ declare type Target = 'node' | 'client' | 'worker';
2
+ interface DevOptions {
3
+ directory: string;
4
+ targets: {
5
+ [key in Target]: boolean | string;
6
+ };
7
+ base?: string;
8
+ }
9
+ declare function build({ directory, targets, base }: DevOptions): Promise<void>;
10
+ export default build;