@shopify/cli-hydrogen 3.34.0 → 3.36.0

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 (31) hide show
  1. package/dist/cli/commands/hydrogen/add/eslint.js +2 -2
  2. package/dist/cli/commands/hydrogen/add/eslint.js.map +1 -1
  3. package/dist/cli/commands/hydrogen/add/tailwind.js +2 -2
  4. package/dist/cli/commands/hydrogen/add/tailwind.js.map +1 -1
  5. package/dist/cli/commands/hydrogen/build.js +2 -2
  6. package/dist/cli/commands/hydrogen/build.js.map +1 -1
  7. package/dist/cli/commands/hydrogen/deploy.js +3 -2
  8. package/dist/cli/commands/hydrogen/deploy.js.map +1 -1
  9. package/dist/cli/commands/hydrogen/dev.js +2 -2
  10. package/dist/cli/commands/hydrogen/dev.js.map +1 -1
  11. package/dist/cli/commands/hydrogen/info.js +3 -2
  12. package/dist/cli/commands/hydrogen/info.js.map +1 -1
  13. package/dist/cli/commands/hydrogen/preview.js +3 -3
  14. package/dist/cli/commands/hydrogen/preview.js.map +1 -1
  15. package/dist/cli/models/hydrogen.js +11 -9
  16. package/dist/cli/models/hydrogen.js.map +1 -1
  17. package/dist/cli/services/build/check-lockfile.js +6 -4
  18. package/dist/cli/services/build/check-lockfile.js.map +1 -1
  19. package/dist/cli/services/deploy/config.js +18 -13
  20. package/dist/cli/services/deploy/config.js.map +1 -1
  21. package/dist/cli/services/deploy/upload.js +9 -8
  22. package/dist/cli/services/deploy/upload.js.map +1 -1
  23. package/dist/cli/services/eslint.js +12 -9
  24. package/dist/cli/services/eslint.js.map +1 -1
  25. package/dist/cli/services/preview.js +13 -7
  26. package/dist/cli/services/preview.js.map +1 -1
  27. package/dist/cli/services/tailwind.js +16 -14
  28. package/dist/cli/services/tailwind.js.map +1 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/oclif.manifest.json +1 -1
  31. package/package.json +2 -2
@@ -3,12 +3,12 @@ import { addESLint } from '../../../services/eslint.js';
3
3
  import { load as loadApp } from '../../../models/hydrogen.js';
4
4
  import { Flags } from '@oclif/core';
5
5
  import { globalFlags } from '@shopify/cli-kit/node/cli';
6
- import { path } from '@shopify/cli-kit';
7
6
  import Command from '@shopify/cli-kit/node/base-command';
7
+ import { resolvePath } from '@shopify/cli-kit/node/path';
8
8
  export default class AddESLint extends Command {
9
9
  async run() {
10
10
  const { flags: { path: pathFlag, install, force }, } = await this.parse(AddESLint);
11
- const directory = pathFlag ? path.resolve(pathFlag) : process.cwd();
11
+ const directory = pathFlag ? resolvePath(pathFlag) : process.cwd();
12
12
  const app = await loadApp(directory);
13
13
  await addESLint({ app, install, force });
14
14
  }
@@ -1 +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,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,OAAO,MAAM,oCAAoC,CAAA;AAExD,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,WAAW;IACd,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 {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport {path} from '@shopify/cli-kit'\nimport Command from '@shopify/cli-kit/node/base-command'\n\nexport default class AddESLint extends Command {\n static flags = {\n ...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"]}
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,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,OAAO,MAAM,oCAAoC,CAAA;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAEtD,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,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAElE,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,WAAW;IACd,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 {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport Command from '@shopify/cli-kit/node/base-command'\nimport {resolvePath} from '@shopify/cli-kit/node/path'\n\nexport default class AddESLint extends Command {\n static flags = {\n ...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 ? resolvePath(pathFlag) : process.cwd()\n\n const app: HydrogenApp = await loadApp(directory)\n\n await addESLint({app, install, force})\n }\n}\n"]}
@@ -3,12 +3,12 @@ import { addTailwind } from '../../../services/tailwind.js';
3
3
  import { load as loadApp } from '../../../models/hydrogen.js';
4
4
  import { Flags } from '@oclif/core';
5
5
  import { globalFlags } from '@shopify/cli-kit/node/cli';
6
- import { path } from '@shopify/cli-kit';
7
6
  import Command from '@shopify/cli-kit/node/base-command';
7
+ import { resolvePath } from '@shopify/cli-kit/node/path';
8
8
  export default class AddTailwind extends Command {
9
9
  async run() {
10
10
  const { flags: { path: pathFlag, install, force }, } = await this.parse(AddTailwind);
11
- const directory = pathFlag ? path.resolve(pathFlag) : process.cwd();
11
+ const directory = pathFlag ? resolvePath(pathFlag) : process.cwd();
12
12
  const app = await loadApp(directory);
13
13
  await addTailwind({ app, directory, install, force });
14
14
  }
@@ -1 +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,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,OAAO,MAAM,oCAAoC,CAAA;AAExD,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,WAAW;IACd,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 {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport {path} from '@shopify/cli-kit'\nimport Command from '@shopify/cli-kit/node/base-command'\n\nexport default class AddTailwind extends Command {\n static flags = {\n ...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"]}
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,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,OAAO,MAAM,oCAAoC,CAAA;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAEtD,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,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAElE,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,WAAW;IACd,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 {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport Command from '@shopify/cli-kit/node/base-command'\nimport {resolvePath} from '@shopify/cli-kit/node/path'\n\nexport default class AddTailwind extends Command {\n static flags = {\n ...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 ? resolvePath(pathFlag) : process.cwd()\n\n const app: HydrogenApp = await loadApp(directory)\n\n await addTailwind({app, directory, install, force})\n }\n}\n"]}
@@ -2,8 +2,8 @@ import { build } from '../../services/build.js';
2
2
  import { hydrogenFlags } from '../../flags.js';
3
3
  import { Flags } from '@oclif/core';
4
4
  import { globalFlags } from '@shopify/cli-kit/node/cli';
5
- import { path } from '@shopify/cli-kit';
6
5
  import Command from '@shopify/cli-kit/node/base-command';
6
+ import { resolvePath } from '@shopify/cli-kit/node/path';
7
7
  const PLATFORM_ENTRIES = {
8
8
  node: `@shopify/hydrogen/platforms/node`,
9
9
  worker: `@shopify/hydrogen/platforms/worker`,
@@ -11,7 +11,7 @@ const PLATFORM_ENTRIES = {
11
11
  export default class Build extends Command {
12
12
  async run() {
13
13
  const { flags } = await this.parse(Build);
14
- const directory = flags.path ? path.resolve(flags.path) : process.cwd();
14
+ const directory = flags.path ? resolvePath(flags.path) : process.cwd();
15
15
  const entry = flags.entry || PLATFORM_ENTRIES[flags.target];
16
16
  const targets = {
17
17
  client: flags.client,
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../src/cli/commands/hydrogen/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,yBAAyB,CAAA;AAC7C,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,OAAO,MAAM,oCAAoC,CAAA;AAExD,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,KAAK,CAAC,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,OAAO,EAAC,CAAC,CAAA;IAC7C,CAAC;;AAxCM,iBAAW,GAAG,8CAA8C,CAAA;AAC5D,WAAK,GAAG;IACb,GAAG,WAAW;IACd,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 {build} from '../../services/build.js'\nimport {hydrogenFlags} from '../../flags.js'\nimport {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport {path} from '@shopify/cli-kit'\nimport Command from '@shopify/cli-kit/node/base-command'\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 ...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 build({...flags, directory, targets})\n }\n}\n"]}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../src/cli/commands/hydrogen/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,yBAAyB,CAAA;AAC7C,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,OAAO,MAAM,oCAAoC,CAAA;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAEtD,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,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAEtE,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,KAAK,CAAC,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,OAAO,EAAC,CAAC,CAAA;IAC7C,CAAC;;AAxCM,iBAAW,GAAG,8CAA8C,CAAA;AAC5D,WAAK,GAAG;IACb,GAAG,WAAW;IACd,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 {build} from '../../services/build.js'\nimport {hydrogenFlags} from '../../flags.js'\nimport {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport Command from '@shopify/cli-kit/node/base-command'\nimport {resolvePath} from '@shopify/cli-kit/node/path'\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 ...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 ? resolvePath(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 build({...flags, directory, targets})\n }\n}\n"]}
@@ -1,10 +1,11 @@
1
1
  import { hydrogenFlags } from '../../flags.js';
2
2
  import { deployToOxygen } from '../../services/deploy.js';
3
- import { output, path } from '@shopify/cli-kit';
3
+ import { output } from '@shopify/cli-kit';
4
4
  import Command from '@shopify/cli-kit/node/base-command';
5
5
  import { Flags } from '@oclif/core';
6
6
  import { isShopify } from '@shopify/cli-kit/node/environment/local';
7
7
  import { globalFlags } from '@shopify/cli-kit/node/cli';
8
+ import { resolvePath } from '@shopify/cli-kit/node/path';
8
9
  export default class Deploy extends Command {
9
10
  async run() {
10
11
  const isShopifolk = await isShopify();
@@ -13,7 +14,7 @@ export default class Deploy extends Command {
13
14
  return;
14
15
  }
15
16
  const { flags } = await this.parse(Deploy);
16
- const dir = flags.path ? path.resolve(flags.path) : process.cwd();
17
+ const dir = flags.path ? resolvePath(flags.path) : process.cwd();
17
18
  await deployToOxygen({ ...flags, path: dir });
18
19
  }
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../../src/cli/commands/hydrogen/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC7C,OAAO,OAAO,MAAM,oCAAoC,CAAA;AACxD,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AACjE,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAErD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IA2ClC,KAAK,CAAC,GAAG;QACd,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAA;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;YACrC,OAAM;SACP;QAED,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAEjE,MAAM,cAAc,CAAC,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAA;IAC7C,CAAC;;AArDM,kBAAW,GAAG,4CAA4C,CAAA;AAC1D,aAAM,GAAG,IAAI,CAAA;AAEb,YAAK,GAAG;IACb,GAAG,WAAW;IACd,GAAG,aAAa;IAChB,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC;QAC5B,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,wCAAwC;QAC7C,WAAW,EAAE,uCAAuC;KACrD,CAAC;IACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;QAC1B,GAAG,EAAE,sCAAsC;QAC3C,WAAW,EAAE,0CAA0C;KACxD,CAAC;IACF,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;QACzB,GAAG,EAAE,qCAAqC;QAC1C,WAAW,EAAE,yCAAyC;KACvD,CAAC;IACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,qCAAqC;QAC1C,WAAW,EAAE,oDAAoD;KAClE,CAAC;IACF,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC;QACzB,GAAG,EAAE,oCAAoC;QACzC,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,wDAAwD;KACtE,CAAC;IACF,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;QACvB,IAAI,EAAE,GAAG;QACT,GAAG,EAAE,kCAAkC;QACvC,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,4FAA4F;KAC1G,CAAC;IACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,sCAAsC;QAC3C,OAAO,EAAE,6BAA6B;KACvC,CAAC;CACH,CAAA","sourcesContent":["import {hydrogenFlags} from '../../flags.js'\nimport {deployToOxygen} from '../../services/deploy.js'\nimport {output, path} from '@shopify/cli-kit'\nimport Command from '@shopify/cli-kit/node/base-command'\nimport {Flags} from '@oclif/core'\nimport {isShopify} from '@shopify/cli-kit/node/environment/local'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\n\nexport default class Deploy extends Command {\n static description = 'Deploy your Hydrogen app to Oxygen hosting'\n static hidden = true\n\n static flags = {\n ...globalFlags,\n ...hydrogenFlags,\n deploymentToken: Flags.string({\n required: true,\n env: 'SHOPIFY_HYDROGEN_FLAG_DEPLOYMENT_TOKEN',\n description: 'Specify your Oxygen deployment token.',\n }),\n commitMessage: Flags.string({\n env: 'SHOPIFY_HYDROGEN_FLAG_COMMIT_MESSAGE',\n description: 'Override the default Git commit message.',\n }),\n commitAuthor: Flags.string({\n env: 'SHOPIFY_HYDROGEN_FLAG_COMMIT_AUTHOR',\n description: 'Override the default Git commit author.',\n }),\n pathToBuild: Flags.string({\n hidden: true,\n env: 'SHOPIFY_HYDROGEN_FLAG_PATH_TO_BUILD',\n description: 'Skip build process and use provided value as build',\n }),\n healthCheck: Flags.boolean({\n env: 'SHOPIFY_HYDROGEN_FLAG_HEALTH_CHECK',\n default: true,\n description: 'Require a health check before the deployment succeeds.',\n }),\n assumeYes: Flags.boolean({\n char: 'y',\n env: 'SHOPIFY_HYDROGEN_FLAG_ASSUME_YES',\n default: false,\n description: 'Automatic yes to prompts. Assume \"yes\" as answer to all prompts and run non-interactively.',\n }),\n oxygenAddress: Flags.string({\n hidden: true,\n env: 'SHOPIFY_HYDROGEN_FLAG_OXYGEN_ADDRESS',\n default: 'oxygen-dms.shopifycloud.com',\n }),\n }\n\n public async run(): Promise<void> {\n const isShopifolk = await isShopify()\n if (!isShopifolk) {\n output.warn('Command coming soon...')\n return\n }\n\n const {flags} = await this.parse(Deploy)\n const dir = flags.path ? path.resolve(flags.path) : process.cwd()\n\n await deployToOxygen({...flags, path: dir})\n }\n}\n"]}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../../src/cli/commands/hydrogen/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvC,OAAO,OAAO,MAAM,oCAAoC,CAAA;AACxD,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AACjE,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAEtD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IA2ClC,KAAK,CAAC,GAAG;QACd,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAA;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;YACrC,OAAM;SACP;QAED,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAEhE,MAAM,cAAc,CAAC,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAA;IAC7C,CAAC;;AArDM,kBAAW,GAAG,4CAA4C,CAAA;AAC1D,aAAM,GAAG,IAAI,CAAA;AAEb,YAAK,GAAG;IACb,GAAG,WAAW;IACd,GAAG,aAAa;IAChB,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC;QAC5B,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,wCAAwC;QAC7C,WAAW,EAAE,uCAAuC;KACrD,CAAC;IACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;QAC1B,GAAG,EAAE,sCAAsC;QAC3C,WAAW,EAAE,0CAA0C;KACxD,CAAC;IACF,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;QACzB,GAAG,EAAE,qCAAqC;QAC1C,WAAW,EAAE,yCAAyC;KACvD,CAAC;IACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,qCAAqC;QAC1C,WAAW,EAAE,oDAAoD;KAClE,CAAC;IACF,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC;QACzB,GAAG,EAAE,oCAAoC;QACzC,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,wDAAwD;KACtE,CAAC;IACF,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;QACvB,IAAI,EAAE,GAAG;QACT,GAAG,EAAE,kCAAkC;QACvC,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,4FAA4F;KAC1G,CAAC;IACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,sCAAsC;QAC3C,OAAO,EAAE,6BAA6B;KACvC,CAAC;CACH,CAAA","sourcesContent":["import {hydrogenFlags} from '../../flags.js'\nimport {deployToOxygen} from '../../services/deploy.js'\nimport {output} from '@shopify/cli-kit'\nimport Command from '@shopify/cli-kit/node/base-command'\nimport {Flags} from '@oclif/core'\nimport {isShopify} from '@shopify/cli-kit/node/environment/local'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport {resolvePath} from '@shopify/cli-kit/node/path'\n\nexport default class Deploy extends Command {\n static description = 'Deploy your Hydrogen app to Oxygen hosting'\n static hidden = true\n\n static flags = {\n ...globalFlags,\n ...hydrogenFlags,\n deploymentToken: Flags.string({\n required: true,\n env: 'SHOPIFY_HYDROGEN_FLAG_DEPLOYMENT_TOKEN',\n description: 'Specify your Oxygen deployment token.',\n }),\n commitMessage: Flags.string({\n env: 'SHOPIFY_HYDROGEN_FLAG_COMMIT_MESSAGE',\n description: 'Override the default Git commit message.',\n }),\n commitAuthor: Flags.string({\n env: 'SHOPIFY_HYDROGEN_FLAG_COMMIT_AUTHOR',\n description: 'Override the default Git commit author.',\n }),\n pathToBuild: Flags.string({\n hidden: true,\n env: 'SHOPIFY_HYDROGEN_FLAG_PATH_TO_BUILD',\n description: 'Skip build process and use provided value as build',\n }),\n healthCheck: Flags.boolean({\n env: 'SHOPIFY_HYDROGEN_FLAG_HEALTH_CHECK',\n default: true,\n description: 'Require a health check before the deployment succeeds.',\n }),\n assumeYes: Flags.boolean({\n char: 'y',\n env: 'SHOPIFY_HYDROGEN_FLAG_ASSUME_YES',\n default: false,\n description: 'Automatic yes to prompts. Assume \"yes\" as answer to all prompts and run non-interactively.',\n }),\n oxygenAddress: Flags.string({\n hidden: true,\n env: 'SHOPIFY_HYDROGEN_FLAG_OXYGEN_ADDRESS',\n default: 'oxygen-dms.shopifycloud.com',\n }),\n }\n\n public async run(): Promise<void> {\n const isShopifolk = await isShopify()\n if (!isShopifolk) {\n output.warn('Command coming soon...')\n return\n }\n\n const {flags} = await this.parse(Deploy)\n const dir = flags.path ? resolvePath(flags.path) : process.cwd()\n\n await deployToOxygen({...flags, path: dir})\n }\n}\n"]}
@@ -1,13 +1,13 @@
1
1
  import devService from '../../services/dev.js';
2
2
  import { hydrogenFlags } from '../../flags.js';
3
- import { path } from '@shopify/cli-kit';
4
3
  import { Flags } from '@oclif/core';
5
4
  import { globalFlags } from '@shopify/cli-kit/node/cli';
6
5
  import Command from '@shopify/cli-kit/node/base-command';
6
+ import { resolvePath } from '@shopify/cli-kit/node/path';
7
7
  export default class Dev extends Command {
8
8
  async run() {
9
9
  const { flags } = await this.parse(Dev);
10
- const directory = flags.path ? path.resolve(flags.path) : process.cwd();
10
+ const directory = flags.path ? resolvePath(flags.path) : process.cwd();
11
11
  await devService({ directory, ...flags, commandConfig: this.config });
12
12
  }
13
13
  }
@@ -1 +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,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,OAAO,MAAM,oCAAoC,CAAA;AAExD,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,OAAO;IAoBtC,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,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAA;IACrE,CAAC;;AAxBM,eAAW,GAAG,oDAAoD,CAAA;AAClE,SAAK,GAAG;IACb,GAAG,WAAW;IACd,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;IACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;QAClB,WAAW,EAAE,2CAA2C;QACxD,GAAG,EAAE,uBAAuB;QAC5B,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAA","sourcesContent":["import devService from '../../services/dev.js'\nimport {hydrogenFlags} from '../../flags.js'\nimport {path} from '@shopify/cli-kit'\nimport {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport Command from '@shopify/cli-kit/node/base-command'\n\nexport default class Dev extends Command {\n static description = 'Run a Hydrogen storefront locally for development.'\n static flags = {\n ...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 open: Flags.boolean({\n description: 'automatically open the app in the browser',\n env: 'SHOPIFY_FLAG_DEV_OPEN',\n default: false,\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, commandConfig: this.config})\n }\n}\n"]}
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,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,OAAO,MAAM,oCAAoC,CAAA;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAEtD,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,OAAO;IAoBtC,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,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAEtE,MAAM,UAAU,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAA;IACrE,CAAC;;AAxBM,eAAW,GAAG,oDAAoD,CAAA;AAClE,SAAK,GAAG;IACb,GAAG,WAAW;IACd,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;IACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;QAClB,WAAW,EAAE,2CAA2C;QACxD,GAAG,EAAE,uBAAuB;QAC5B,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAA","sourcesContent":["import devService from '../../services/dev.js'\nimport {hydrogenFlags} from '../../flags.js'\nimport {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport Command from '@shopify/cli-kit/node/base-command'\nimport {resolvePath} from '@shopify/cli-kit/node/path'\n\nexport default class Dev extends Command {\n static description = 'Run a Hydrogen storefront locally for development.'\n static flags = {\n ...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 open: Flags.boolean({\n description: 'automatically open the app in the browser',\n env: 'SHOPIFY_FLAG_DEV_OPEN',\n default: false,\n }),\n }\n\n async run(): Promise<void> {\n const {flags} = await this.parse(Dev)\n const directory = flags.path ? resolvePath(flags.path) : process.cwd()\n\n await devService({directory, ...flags, commandConfig: this.config})\n }\n}\n"]}
@@ -3,12 +3,13 @@ import { load as loadApp } from '../../models/hydrogen.js';
3
3
  import { hydrogenFlags } from '../../flags.js';
4
4
  import { Flags } from '@oclif/core';
5
5
  import { globalFlags } from '@shopify/cli-kit/node/cli';
6
- import { output, path } from '@shopify/cli-kit';
6
+ import { output } from '@shopify/cli-kit';
7
7
  import Command from '@shopify/cli-kit/node/base-command';
8
+ import { resolvePath } from '@shopify/cli-kit/node/path';
8
9
  export default class Info extends Command {
9
10
  async run() {
10
11
  const { flags } = await this.parse(Info);
11
- const directory = flags.path ? path.resolve(flags.path) : process.cwd();
12
+ const directory = flags.path ? resolvePath(flags.path) : process.cwd();
12
13
  const app = await loadApp(directory);
13
14
  output.info(info(app, { showPrivateData: flags.showToken }));
14
15
  if (app.errors)
@@ -1 +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,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC7C,OAAO,OAAO,MAAM,oCAAoC,CAAA;AAExD,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,kDAAkD,CAAA;AAEhE,UAAK,GAAG;IACb,GAAG,WAAW;IACd,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 {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport {output, path} from '@shopify/cli-kit'\nimport Command from '@shopify/cli-kit/node/base-command'\n\nexport default class Info extends Command {\n static description = 'Print basic information about your hydrogen app.'\n\n static flags = {\n ...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"]}
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,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvC,OAAO,OAAO,MAAM,oCAAoC,CAAA;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAEtD,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,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QACtE,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,kDAAkD,CAAA;AAEhE,UAAK,GAAG;IACb,GAAG,WAAW;IACd,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 {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport {output} from '@shopify/cli-kit'\nimport Command from '@shopify/cli-kit/node/base-command'\nimport {resolvePath} from '@shopify/cli-kit/node/path'\n\nexport default class Info extends Command {\n static description = 'Print basic information about your hydrogen app.'\n\n static flags = {\n ...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 ? resolvePath(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"]}
@@ -1,13 +1,13 @@
1
1
  import { previewInWorker, previewInNode } from '../../services/preview.js';
2
2
  import { hydrogenFlags } from '../../flags.js';
3
- import { path } from '@shopify/cli-kit';
4
3
  import { Flags } from '@oclif/core';
5
4
  import { globalFlags } from '@shopify/cli-kit/node/cli';
6
5
  import Command from '@shopify/cli-kit/node/base-command';
6
+ import { resolvePath } from '@shopify/cli-kit/node/path';
7
7
  export default class Preview extends Command {
8
8
  async run() {
9
9
  const { flags } = await this.parse(Preview);
10
- const directory = flags.path ? path.resolve(flags.path) : process.cwd();
10
+ const directory = flags.path ? resolvePath(flags.path) : process.cwd();
11
11
  const port = parseInt(flags.port, 10);
12
12
  const envPath = flags.env;
13
13
  if (flags.target === 'worker') {
@@ -33,7 +33,7 @@ Preview.flags = {
33
33
  char: 'e',
34
34
  description: 'the file path to your .env',
35
35
  default: undefined,
36
- parse: (input, _) => Promise.resolve(path.resolve(input)),
36
+ parse: (input, _) => Promise.resolve(resolvePath(input)),
37
37
  env: 'SHOPIFY_FLAG_ENV_PATH',
38
38
  }),
39
39
  target: Flags.string({
@@ -1 +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,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,OAAO,MAAM,oCAAoC,CAAA;AAExD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IA4B1C,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;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAA;QAEzB,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC7B,MAAM,eAAe,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC,CAAA;SAClD;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;YAClC,MAAM,aAAa,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;SACvC;IACH,CAAC;;AAtCM,mBAAW,GAAG,4DAA4D,CAAA;AAC1E,aAAK,GAAG;IACb,GAAG,WAAW;IACd,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,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzD,GAAG,EAAE,uBAAuB;KAC7B,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} from '@shopify/cli-kit'\nimport {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport Command from '@shopify/cli-kit/node/base-command'\n\nexport default class Preview extends Command {\n static description = 'Run a Hydrogen storefront locally in a worker environment.'\n static flags = {\n ...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 env: Flags.string({\n char: 'e',\n description: 'the file path to your .env',\n default: undefined,\n parse: (input, _) => Promise.resolve(path.resolve(input)),\n env: 'SHOPIFY_FLAG_ENV_PATH',\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 const envPath = flags.env\n\n if (flags.target === 'worker') {\n await previewInWorker({directory, port, envPath})\n } else if (flags.target === 'node') {\n await previewInNode({directory, port})\n }\n }\n}\n"]}
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,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,OAAO,MAAM,oCAAoC,CAAA;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAEtD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IA4B1C,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,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAA;QAEzB,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC7B,MAAM,eAAe,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC,CAAA;SAClD;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;YAClC,MAAM,aAAa,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;SACvC;IACH,CAAC;;AAtCM,mBAAW,GAAG,4DAA4D,CAAA;AAC1E,aAAK,GAAG;IACb,GAAG,WAAW;IACd,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,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxD,GAAG,EAAE,uBAAuB;KAC7B,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 {Flags} from '@oclif/core'\nimport {globalFlags} from '@shopify/cli-kit/node/cli'\nimport Command from '@shopify/cli-kit/node/base-command'\nimport {resolvePath} from '@shopify/cli-kit/node/path'\n\nexport default class Preview extends Command {\n static description = 'Run a Hydrogen storefront locally in a worker environment.'\n static flags = {\n ...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 env: Flags.string({\n char: 'e',\n description: 'the file path to your .env',\n default: undefined,\n parse: (input, _) => Promise.resolve(resolvePath(input)),\n env: 'SHOPIFY_FLAG_ENV_PATH',\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 ? resolvePath(flags.path) : process.cwd()\n const port = parseInt(flags.port, 10)\n const envPath = flags.env\n\n if (flags.target === 'worker') {\n await previewInWorker({directory, port, envPath})\n } else if (flags.target === 'node') {\n await previewInNode({directory, port})\n }\n }\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  import { loadConfig } from '../utilities/load-config.js';
2
- import { path, error as kitError, file } from '@shopify/cli-kit';
2
+ import { error as kitError } from '@shopify/cli-kit';
3
3
  import { getDependencies, getPackageName, pnpmLockfile, yarnLockfile, } from '@shopify/cli-kit/node/node-package-manager';
4
+ import { joinPath, basename } from '@shopify/cli-kit/node/path';
5
+ import { fileExists } from '@shopify/cli-kit/node/fs';
4
6
  class AppErrors {
5
7
  constructor() {
6
8
  this.errors = {};
@@ -24,18 +26,18 @@ class HydrogenAppLoader {
24
26
  this.directory = directory;
25
27
  }
26
28
  async loaded() {
27
- if (!(await file.exists(this.directory))) {
29
+ if (!(await fileExists(this.directory))) {
28
30
  throw new kitError.Abort(`Couldn't find directory ${this.directory}`);
29
31
  }
30
32
  const { configuration } = await this.loadConfig();
31
- const yarnLockPath = path.join(this.directory, yarnLockfile);
32
- const yarnLockExists = await file.exists(yarnLockPath);
33
- const pnpmLockPath = path.join(this.directory, pnpmLockfile);
34
- const pnpmLockExists = await file.exists(pnpmLockPath);
35
- const packageJSONPath = path.join(this.directory, 'package.json');
33
+ const yarnLockPath = joinPath(this.directory, yarnLockfile);
34
+ const yarnLockExists = await fileExists(yarnLockPath);
35
+ const pnpmLockPath = joinPath(this.directory, pnpmLockfile);
36
+ const pnpmLockExists = await fileExists(pnpmLockPath);
37
+ const packageJSONPath = joinPath(this.directory, 'package.json');
36
38
  const name = await getPackageName(packageJSONPath);
37
39
  const nodeDependencies = await getDependencies(packageJSONPath);
38
- const tsConfigExists = await file.exists(path.join(this.directory, 'tsconfig.json'));
40
+ const tsConfigExists = await fileExists(joinPath(this.directory, 'tsconfig.json'));
39
41
  const language = tsConfigExists && nodeDependencies.typescript ? 'TypeScript' : 'JavaScript';
40
42
  let packageManager;
41
43
  if (yarnLockExists) {
@@ -48,7 +50,7 @@ class HydrogenAppLoader {
48
50
  packageManager = 'npm';
49
51
  }
50
52
  const app = {
51
- name: name ?? path.basename(this.directory),
53
+ name: name ?? basename(this.directory),
52
54
  directory: this.directory,
53
55
  configuration,
54
56
  packageManager,
@@ -1 +1 @@
1
- {"version":3,"file":"hydrogen.js","sourceRoot":"","sources":["../../../src/cli/models/hydrogen.ts"],"names":[],"mappings":"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","sourcesContent":["import {loadConfig} from '../utilities/load-config.js'\nimport {path, error as kitError, file} from '@shopify/cli-kit'\nimport {\n getDependencies,\n getPackageName,\n PackageManager,\n pnpmLockfile,\n yarnLockfile,\n} from '@shopify/cli-kit/node/node-package-manager'\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 packageManager: PackageManager\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) {\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, yarnLockfile)\n const yarnLockExists = await file.exists(yarnLockPath)\n const pnpmLockPath = path.join(this.directory, pnpmLockfile)\n const pnpmLockExists = await file.exists(pnpmLockPath)\n const packageJSONPath = path.join(this.directory, 'package.json')\n const name = await getPackageName(packageJSONPath)\n const nodeDependencies = await 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 packageManager: PackageManager\n if (yarnLockExists) {\n packageManager = 'yarn'\n } else if (pnpmLockExists) {\n packageManager = 'pnpm'\n } else {\n packageManager = 'npm'\n }\n\n const app: HydrogenApp = {\n name: name ?? path.basename(this.directory),\n directory: this.directory,\n configuration,\n packageManager,\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"]}
1
+ {"version":3,"file":"hydrogen.js","sourceRoot":"","sources":["../../../src/cli/models/hydrogen.ts"],"names":[],"mappings":"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","sourcesContent":["import {loadConfig} from '../utilities/load-config.js'\nimport {error as kitError} from '@shopify/cli-kit'\nimport {\n getDependencies,\n getPackageName,\n PackageManager,\n pnpmLockfile,\n yarnLockfile,\n} from '@shopify/cli-kit/node/node-package-manager'\nimport {joinPath, basename} from '@shopify/cli-kit/node/path'\n\nimport {fileExists} from '@shopify/cli-kit/node/fs'\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 packageManager: PackageManager\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) {\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 fileExists(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 = joinPath(this.directory, yarnLockfile)\n const yarnLockExists = await fileExists(yarnLockPath)\n const pnpmLockPath = joinPath(this.directory, pnpmLockfile)\n const pnpmLockExists = await fileExists(pnpmLockPath)\n const packageJSONPath = joinPath(this.directory, 'package.json')\n const name = await getPackageName(packageJSONPath)\n const nodeDependencies = await getDependencies(packageJSONPath)\n const tsConfigExists = await fileExists(joinPath(this.directory, 'tsconfig.json'))\n const language = tsConfigExists && nodeDependencies.typescript ? 'TypeScript' : 'JavaScript'\n\n let packageManager: PackageManager\n if (yarnLockExists) {\n packageManager = 'yarn'\n } else if (pnpmLockExists) {\n packageManager = 'pnpm'\n } else {\n packageManager = 'npm'\n }\n\n const app: HydrogenApp = {\n name: name ?? basename(this.directory),\n directory: this.directory,\n configuration,\n packageManager,\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"]}
@@ -1,6 +1,8 @@
1
- import { file, git, path } from '@shopify/cli-kit';
2
1
  import { renderWarning } from '@shopify/cli-kit/node/ui';
3
2
  import { lockfiles } from '@shopify/cli-kit/node/node-package-manager';
3
+ import { fileExists } from '@shopify/cli-kit/node/fs';
4
+ import { gitFactory } from '@shopify/cli-kit/node/git';
5
+ import { resolvePath } from '@shopify/cli-kit/node/path';
4
6
  function missingLockfileWarning() {
5
7
  renderWarning({
6
8
  headline: 'No lockfile found',
@@ -52,8 +54,8 @@ function lockfileIgnoredWarning(lockfile) {
52
54
  }
53
55
  export async function checkLockfileStatus(directory) {
54
56
  const availableLockfiles = await lockfiles.reduce(async (acc, lockFileName) => {
55
- const lockfilePath = path.resolve(directory, lockFileName);
56
- if (await file.exists(lockfilePath)) {
57
+ const lockfilePath = resolvePath(directory, lockFileName);
58
+ if (await fileExists(lockfilePath)) {
57
59
  return (await acc).concat(lockFileName);
58
60
  }
59
61
  else {
@@ -68,7 +70,7 @@ export async function checkLockfileStatus(directory) {
68
70
  multipleLockfilesWarning(availableLockfiles);
69
71
  return 'multiple';
70
72
  }
71
- const repo = git.factory(directory);
73
+ const repo = gitFactory(directory);
72
74
  const lockfile = availableLockfiles[0];
73
75
  const ignoredLockfile = await repo.checkIgnore([lockfile]);
74
76
  if (ignoredLockfile.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"check-lockfile.js","sourceRoot":"","sources":["../../../../src/cli/services/build/check-lockfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAC,SAAS,EAAC,MAAM,4CAA4C,CAAA;AAGpE,SAAS,sBAAsB;IAC7B,aAAa,CAAC;QACZ,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EACF,wEAAwE;YACxE,0EAA0E;YAC1E,gDAAgD;QAClD,SAAS,EAAE;YACT;gBACE,0BAA0B;gBAC1B;oBACE,OAAO,EAAE,uBAAuB;iBACjC;aACF;YACD,wCAAwC;SACzC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAqB;IACrD,MAAM,eAAe,GAAG;QACtB,WAAW,EAAE,MAAM;QACnB,mBAAmB,EAAE,KAAK;QAC1B,gBAAgB,EAAE,MAAM;KACzB,CAAA;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9C,OAAO,GAAG,QAAQ,gBAAgB,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,aAAa,CAAC;QACZ,QAAQ,EAAE,0BAA0B;QACpC,IAAI,EAAE;YACJ,uEAAuE;gBACrE,kEAAkE;gBAClE,4BAA4B;YAC9B,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,YAAY,EAAC,EAAC;SAC9B;QACD,SAAS,EAAE,CAAC,+BAA+B,EAAE,sCAAsC,CAAC;KACrF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,aAAa,CAAC;QACZ,QAAQ,EAAE,yBAAyB;QACnC,IAAI,EACF,0EAA0E;YAC1E,0EAA0E;YAC1E,YAAY;QACd,SAAS,EAAE;YACT,+DAA+D,QAAQ,EAAE;YACzE,sCAAsC;SACvC;KACF,CAAC,CAAA;AACJ,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IACzD,MAAM,kBAAkB,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAC1D,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;YACnC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;SACxC;aAAM;YACL,OAAO,GAAG,CAAA;SACX;IACH,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAgB,CAAC,CAAC,CAAA;IAErC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;QAC9B,sBAAsB,EAAE,CAAA;QACxB,OAAO,SAAS,CAAA;KACjB;IAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,wBAAwB,CAAC,kBAAkB,CAAC,CAAA;QAC5C,OAAO,UAAU,CAAA;KAClB;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAE,CAAA;IACvC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE1D,IAAI,eAAe,CAAC,MAAM,EAAE;QAC1B,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QAChC,OAAO,SAAS,CAAA;KACjB;IAED,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import {file, git, path} from '@shopify/cli-kit'\nimport {renderWarning} from '@shopify/cli-kit/node/ui'\nimport {lockfiles} from '@shopify/cli-kit/node/node-package-manager'\nimport type {Lockfile} from '@shopify/cli-kit/node/node-package-manager'\n\nfunction missingLockfileWarning() {\n renderWarning({\n headline: 'No lockfile found',\n body:\n `If you don’t commit a lockfile, then your app might install the wrong ` +\n `package versions when deploying. To avoid versioning issues, generate a ` +\n `new lockfile and commit it to your repository.`,\n nextSteps: [\n [\n 'Generate a lockfile. Run',\n {\n command: 'npm|yarn|pnpm install',\n },\n ],\n 'Commit the new file to your repository',\n ],\n })\n}\n\nfunction multipleLockfilesWarning(lockfiles: Lockfile[]) {\n const packageManagers = {\n 'yarn.lock': 'yarn',\n 'package-lock.json': 'npm',\n 'pnpm-lock.yaml': 'pnpm',\n }\n\n const lockfileList = lockfiles.map((lockfile) => {\n return `${lockfile} (created by ${packageManagers[lockfile]})`\n })\n\n renderWarning({\n headline: 'Multiple lockfiles found',\n body: [\n `Your project contains more than one lockfile. This can cause version ` +\n `conflicts when installing and deploying your app. The following ` +\n `lockfiles were detected:\\n`,\n {list: {items: lockfileList}},\n ],\n nextSteps: ['Delete any unneeded lockfiles', 'Commit the change to your repository'],\n })\n}\n\nfunction lockfileIgnoredWarning(lockfile: string) {\n renderWarning({\n headline: 'Lockfile ignored by Git',\n body:\n `Your project’s lockfile isn’t being tracked by Git. If you don’t commit ` +\n `a lockfile, then your app might install the wrong package versions when ` +\n `deploying.`,\n nextSteps: [\n `In your project’s .gitignore file, delete any references to ${lockfile}`,\n 'Commit the change to your repository',\n ],\n })\n}\n\ntype LockFileStatus = 'missing' | 'multiple' | 'ignored' | 'ok'\n\nexport async function checkLockfileStatus(directory: string): Promise<LockFileStatus> {\n const availableLockfiles = await lockfiles.reduce(async (acc, lockFileName) => {\n const lockfilePath = path.resolve(directory, lockFileName)\n if (await file.exists(lockfilePath)) {\n return (await acc).concat(lockFileName)\n } else {\n return acc\n }\n }, Promise.resolve([] as Lockfile[]))\n\n if (!availableLockfiles.length) {\n missingLockfileWarning()\n return 'missing'\n }\n\n if (availableLockfiles.length > 1) {\n multipleLockfilesWarning(availableLockfiles)\n return 'multiple'\n }\n\n const repo = git.factory(directory)\n const lockfile = availableLockfiles[0]!\n const ignoredLockfile = await repo.checkIgnore([lockfile])\n\n if (ignoredLockfile.length) {\n lockfileIgnoredWarning(lockfile)\n return 'ignored'\n }\n\n return 'ok'\n}\n"]}
1
+ {"version":3,"file":"check-lockfile.js","sourceRoot":"","sources":["../../../../src/cli/services/build/check-lockfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAC,SAAS,EAAC,MAAM,4CAA4C,CAAA;AACpE,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAGtD,SAAS,sBAAsB;IAC7B,aAAa,CAAC;QACZ,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EACF,wEAAwE;YACxE,0EAA0E;YAC1E,gDAAgD;QAClD,SAAS,EAAE;YACT;gBACE,0BAA0B;gBAC1B;oBACE,OAAO,EAAE,uBAAuB;iBACjC;aACF;YACD,wCAAwC;SACzC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAqB;IACrD,MAAM,eAAe,GAAG;QACtB,WAAW,EAAE,MAAM;QACnB,mBAAmB,EAAE,KAAK;QAC1B,gBAAgB,EAAE,MAAM;KACzB,CAAA;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9C,OAAO,GAAG,QAAQ,gBAAgB,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,aAAa,CAAC;QACZ,QAAQ,EAAE,0BAA0B;QACpC,IAAI,EAAE;YACJ,uEAAuE;gBACrE,kEAAkE;gBAClE,4BAA4B;YAC9B,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,YAAY,EAAC,EAAC;SAC9B;QACD,SAAS,EAAE,CAAC,+BAA+B,EAAE,sCAAsC,CAAC;KACrF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,aAAa,CAAC;QACZ,QAAQ,EAAE,yBAAyB;QACnC,IAAI,EACF,0EAA0E;YAC1E,0EAA0E;YAC1E,YAAY;QACd,SAAS,EAAE;YACT,+DAA+D,QAAQ,EAAE;YACzE,sCAAsC;SACvC;KACF,CAAC,CAAA;AACJ,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IACzD,MAAM,kBAAkB,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE;QAC5E,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QACzD,IAAI,MAAM,UAAU,CAAC,YAAY,CAAC,EAAE;YAClC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;SACxC;aAAM;YACL,OAAO,GAAG,CAAA;SACX;IACH,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAgB,CAAC,CAAC,CAAA;IAErC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;QAC9B,sBAAsB,EAAE,CAAA;QACxB,OAAO,SAAS,CAAA;KACjB;IAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,wBAAwB,CAAC,kBAAkB,CAAC,CAAA;QAC5C,OAAO,UAAU,CAAA;KAClB;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAE,CAAA;IACvC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE1D,IAAI,eAAe,CAAC,MAAM,EAAE;QAC1B,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QAChC,OAAO,SAAS,CAAA;KACjB;IAED,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import {renderWarning} from '@shopify/cli-kit/node/ui'\nimport {lockfiles} from '@shopify/cli-kit/node/node-package-manager'\nimport {fileExists} from '@shopify/cli-kit/node/fs'\nimport {gitFactory} from '@shopify/cli-kit/node/git'\nimport {resolvePath} from '@shopify/cli-kit/node/path'\nimport type {Lockfile} from '@shopify/cli-kit/node/node-package-manager'\n\nfunction missingLockfileWarning() {\n renderWarning({\n headline: 'No lockfile found',\n body:\n `If you don’t commit a lockfile, then your app might install the wrong ` +\n `package versions when deploying. To avoid versioning issues, generate a ` +\n `new lockfile and commit it to your repository.`,\n nextSteps: [\n [\n 'Generate a lockfile. Run',\n {\n command: 'npm|yarn|pnpm install',\n },\n ],\n 'Commit the new file to your repository',\n ],\n })\n}\n\nfunction multipleLockfilesWarning(lockfiles: Lockfile[]) {\n const packageManagers = {\n 'yarn.lock': 'yarn',\n 'package-lock.json': 'npm',\n 'pnpm-lock.yaml': 'pnpm',\n }\n\n const lockfileList = lockfiles.map((lockfile) => {\n return `${lockfile} (created by ${packageManagers[lockfile]})`\n })\n\n renderWarning({\n headline: 'Multiple lockfiles found',\n body: [\n `Your project contains more than one lockfile. This can cause version ` +\n `conflicts when installing and deploying your app. The following ` +\n `lockfiles were detected:\\n`,\n {list: {items: lockfileList}},\n ],\n nextSteps: ['Delete any unneeded lockfiles', 'Commit the change to your repository'],\n })\n}\n\nfunction lockfileIgnoredWarning(lockfile: string) {\n renderWarning({\n headline: 'Lockfile ignored by Git',\n body:\n `Your project’s lockfile isn’t being tracked by Git. If you don’t commit ` +\n `a lockfile, then your app might install the wrong package versions when ` +\n `deploying.`,\n nextSteps: [\n `In your project’s .gitignore file, delete any references to ${lockfile}`,\n 'Commit the change to your repository',\n ],\n })\n}\n\ntype LockFileStatus = 'missing' | 'multiple' | 'ignored' | 'ok'\n\nexport async function checkLockfileStatus(directory: string): Promise<LockFileStatus> {\n const availableLockfiles = await lockfiles.reduce(async (acc, lockFileName) => {\n const lockfilePath = resolvePath(directory, lockFileName)\n if (await fileExists(lockfilePath)) {\n return (await acc).concat(lockFileName)\n } else {\n return acc\n }\n }, Promise.resolve([] as Lockfile[]))\n\n if (!availableLockfiles.length) {\n missingLockfileWarning()\n return 'missing'\n }\n\n if (availableLockfiles.length > 1) {\n multipleLockfilesWarning(availableLockfiles)\n return 'multiple'\n }\n\n const repo = gitFactory(directory)\n const lockfile = availableLockfiles[0]!\n const ignoredLockfile = await repo.checkIgnore([lockfile])\n\n if (ignoredLockfile.length) {\n lockfileIgnoredWarning(lockfile)\n return 'ignored'\n }\n\n return 'ok'\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  import { gitInit } from '../../prompts/git-init.js';
2
- import { git, error, path } from '@shopify/cli-kit';
2
+ import { error } from '@shopify/cli-kit';
3
+ import { addAllToGitFromDirectory, createGitCommit, createGitIgnore, ensureGitIsPresentOrAbort, ensureInsideGitDirectory, getHeadSymbolicRef, getLatestGitCommit, initializeGitRepository, OutsideGitDirectoryError, } from '@shopify/cli-kit/node/git';
4
+ import { resolvePath } from '@shopify/cli-kit/node/path';
3
5
  const MINIMAL_GIT_IGNORE = {
4
6
  system: ['.DS_Store'],
5
7
  logs: ['logs', '*.log', 'npm-debug.log*', 'yarn-debug.log*', 'yarn-error.log*'],
@@ -10,14 +12,17 @@ const MINIMAL_GIT_IGNORE = {
10
12
  production: ['/dist'],
11
13
  };
12
14
  export const validateProject = async (config) => {
13
- await git.ensurePresentOrAbort();
15
+ await ensureGitIsPresentOrAbort();
14
16
  try {
15
- await git.ensureInsideGitDirectory(config.path);
17
+ await ensureInsideGitDirectory(config.path);
16
18
  }
17
19
  catch (err) {
18
- if (err?.message !== git.OutsideGitDirectoryError(config.path).message)
19
- throw error;
20
- await initializeGit(config);
20
+ if (err instanceof OutsideGitDirectoryError) {
21
+ await initializeGit(config);
22
+ }
23
+ else {
24
+ throw err;
25
+ }
21
26
  }
22
27
  };
23
28
  export const initializeGit = async (config) => {
@@ -26,19 +31,19 @@ export const initializeGit = async (config) => {
26
31
  if (!shouldGitInit)
27
32
  throw new error.AbortSilent();
28
33
  }
29
- await git.initializeRepository(config.path);
30
- git.createGitIgnore(config.path, MINIMAL_GIT_IGNORE);
31
- await git.addAll(config.path);
32
- await git.commit('Initial commit generated by Hydrogen', { directory: config.path });
34
+ await initializeGitRepository(config.path);
35
+ createGitIgnore(config.path, MINIMAL_GIT_IGNORE);
36
+ await addAllToGitFromDirectory(config.path);
37
+ await createGitCommit('Initial commit generated by Hydrogen', { directory: config.path });
33
38
  };
34
39
  export const fillDeployConfig = async (config) => {
35
40
  const [latestCommit, commitRef] = await Promise.all([
36
- git.getLatestCommit(config.path),
37
- git.getHeadSymbolicRef(config.path),
41
+ getLatestGitCommit(config.path),
42
+ getHeadSymbolicRef(config.path),
38
43
  ]);
39
44
  return {
40
45
  ...config,
41
- pathToBuild: config.pathToBuild ? path.resolve(config.pathToBuild) : '',
46
+ pathToBuild: config.pathToBuild ? resolvePath(config.pathToBuild) : '',
42
47
  commitMessage: config.commitMessage ?? latestCommit.message,
43
48
  commitAuthor: config.commitAuthor ?? latestCommit.author_name,
44
49
  commitSha: latestCommit.hash,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/cli/services/deploy/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAA;AACjD,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAEjD,MAAM,kBAAkB,GAA0B;IAChD,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;IAC/E,OAAO,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChC,YAAY,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,CAAC;IAC9E,UAAU,EAAE,CAAC,eAAe,CAAC;IAC7B,WAAW,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC;IAChD,UAAU,EAAE,CAAC,OAAO,CAAC;CACtB,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,MAAoB,EAAE,EAAE;IAC5D,MAAM,GAAG,CAAC,oBAAoB,EAAE,CAAA;IAChC,IAAI;QACF,MAAM,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;KAChD;IAAC,OAAO,GAAY,EAAE;QACrB,IAAK,GAAmB,EAAE,OAAO,KAAK,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;YAAE,MAAM,KAAK,CAAA;QACpG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAA;KAC5B;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,MAAoB,EAAE,EAAE;IAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrB,MAAM,aAAa,GAAG,MAAM,OAAO,EAAE,CAAA;QACrC,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAA;KAClD;IAED,MAAM,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3C,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;IACpD,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,GAAG,CAAC,MAAM,CAAC,sCAAsC,EAAE,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC,CAAA;AACpF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAoB,EAA4B,EAAE;IACvF,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;KACpC,CAAC,CAAA;IAEF,OAAO;QACL,GAAG,MAAM;QACT,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;QACvE,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,YAAY,CAAC,OAAO;QAC3D,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW;QAC7D,SAAS,EAAE,YAAY,CAAC,IAAI;QAC5B,SAAS,EAAE,YAAY,CAAC,IAAI;QAC5B,SAAS;KACV,CAAA;AACH,CAAC,CAAA","sourcesContent":["import {DeployConfig, ReqDeployConfig} from './types.js'\nimport {gitInit} from '../../prompts/git-init.js'\nimport {git, error, path} from '@shopify/cli-kit'\n\nconst MINIMAL_GIT_IGNORE: git.GitIgnoreTemplate = {\n system: ['.DS_Store'],\n logs: ['logs', '*.log', 'npm-debug.log*', 'yarn-debug.log*', 'yarn-error.log*'],\n testing: ['/coverage', '*.lcov'],\n dependencies: ['/node_modules', '.npm', '.yarn-integrity', '/.pnp', '.pnp.js'],\n typescript: ['*.tsbuildinfo'],\n environment: ['.env', '.env.test', '.env.local'],\n production: ['/dist'],\n}\n\nexport const validateProject = async (config: DeployConfig) => {\n await git.ensurePresentOrAbort()\n try {\n await git.ensureInsideGitDirectory(config.path)\n } catch (err: unknown) {\n if ((err as error.Abort)?.message !== git.OutsideGitDirectoryError(config.path).message) throw error\n await initializeGit(config)\n }\n}\n\nexport const initializeGit = async (config: DeployConfig) => {\n if (!config.assumeYes) {\n const shouldGitInit = await gitInit()\n if (!shouldGitInit) throw new error.AbortSilent()\n }\n\n await git.initializeRepository(config.path)\n git.createGitIgnore(config.path, MINIMAL_GIT_IGNORE)\n await git.addAll(config.path)\n await git.commit('Initial commit generated by Hydrogen', {directory: config.path})\n}\n\nexport const fillDeployConfig = async (config: DeployConfig): Promise<ReqDeployConfig> => {\n const [latestCommit, commitRef] = await Promise.all([\n git.getLatestCommit(config.path),\n git.getHeadSymbolicRef(config.path),\n ])\n\n return {\n ...config,\n pathToBuild: config.pathToBuild ? path.resolve(config.pathToBuild) : '',\n commitMessage: config.commitMessage ?? latestCommit.message,\n commitAuthor: config.commitAuthor ?? latestCommit.author_name,\n commitSha: latestCommit.hash,\n timestamp: latestCommit.date,\n commitRef,\n }\n}\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/cli/services/deploy/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAA;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AACtC,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAElB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAEtD,MAAM,kBAAkB,GAAsB;IAC5C,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;IAC/E,OAAO,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChC,YAAY,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,CAAC;IAC9E,UAAU,EAAE,CAAC,eAAe,CAAC;IAC7B,WAAW,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC;IAChD,UAAU,EAAE,CAAC,OAAO,CAAC;CACtB,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,MAAoB,EAAE,EAAE;IAC5D,MAAM,yBAAyB,EAAE,CAAA;IACjC,IAAI;QACF,MAAM,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;KAC5C;IAAC,OAAO,GAAY,EAAE;QACrB,IAAI,GAAG,YAAY,wBAAwB,EAAE;YAC3C,MAAM,aAAa,CAAC,MAAM,CAAC,CAAA;SAC5B;aAAM;YACL,MAAM,GAAG,CAAA;SACV;KACF;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,MAAoB,EAAE,EAAE;IAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrB,MAAM,aAAa,GAAG,MAAM,OAAO,EAAE,CAAA;QACrC,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAA;KAClD;IAED,MAAM,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1C,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;IAChD,MAAM,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,eAAe,CAAC,sCAAsC,EAAE,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC,CAAA;AACzF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAoB,EAA4B,EAAE;IACvF,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/B,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;KAChC,CAAC,CAAA;IAEF,OAAO;QACL,GAAG,MAAM;QACT,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;QACtE,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,YAAY,CAAC,OAAO;QAC3D,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW;QAC7D,SAAS,EAAE,YAAY,CAAC,IAAI;QAC5B,SAAS,EAAE,YAAY,CAAC,IAAI;QAC5B,SAAS;KACV,CAAA;AACH,CAAC,CAAA","sourcesContent":["import {DeployConfig, ReqDeployConfig} from './types.js'\nimport {gitInit} from '../../prompts/git-init.js'\nimport {error} from '@shopify/cli-kit'\nimport {\n addAllToGitFromDirectory,\n createGitCommit,\n createGitIgnore,\n ensureGitIsPresentOrAbort,\n ensureInsideGitDirectory,\n getHeadSymbolicRef,\n getLatestGitCommit,\n GitIgnoreTemplate,\n initializeGitRepository,\n OutsideGitDirectoryError,\n} from '@shopify/cli-kit/node/git'\nimport {resolvePath} from '@shopify/cli-kit/node/path'\n\nconst MINIMAL_GIT_IGNORE: GitIgnoreTemplate = {\n system: ['.DS_Store'],\n logs: ['logs', '*.log', 'npm-debug.log*', 'yarn-debug.log*', 'yarn-error.log*'],\n testing: ['/coverage', '*.lcov'],\n dependencies: ['/node_modules', '.npm', '.yarn-integrity', '/.pnp', '.pnp.js'],\n typescript: ['*.tsbuildinfo'],\n environment: ['.env', '.env.test', '.env.local'],\n production: ['/dist'],\n}\n\nexport const validateProject = async (config: DeployConfig) => {\n await ensureGitIsPresentOrAbort()\n try {\n await ensureInsideGitDirectory(config.path)\n } catch (err: unknown) {\n if (err instanceof OutsideGitDirectoryError) {\n await initializeGit(config)\n } else {\n throw err\n }\n }\n}\n\nexport const initializeGit = async (config: DeployConfig) => {\n if (!config.assumeYes) {\n const shouldGitInit = await gitInit()\n if (!shouldGitInit) throw new error.AbortSilent()\n }\n\n await initializeGitRepository(config.path)\n createGitIgnore(config.path, MINIMAL_GIT_IGNORE)\n await addAllToGitFromDirectory(config.path)\n await createGitCommit('Initial commit generated by Hydrogen', {directory: config.path})\n}\n\nexport const fillDeployConfig = async (config: DeployConfig): Promise<ReqDeployConfig> => {\n const [latestCommit, commitRef] = await Promise.all([\n getLatestGitCommit(config.path),\n getHeadSymbolicRef(config.path),\n ])\n\n return {\n ...config,\n pathToBuild: config.pathToBuild ? resolvePath(config.pathToBuild) : '',\n commitMessage: config.commitMessage ?? latestCommit.message,\n commitAuthor: config.commitAuthor ?? latestCommit.author_name,\n commitSha: latestCommit.hash,\n timestamp: latestCommit.date,\n commitRef,\n }\n}\n"]}
@@ -1,10 +1,11 @@
1
1
  import { CreateDeploymentQuery, } from './graphql/create_deployment.js';
2
2
  import { UnrecoverableError, WebPageNotAvailable, TooManyRequestsError } from './error.js';
3
3
  import { UploadDeploymentQuery } from './graphql/upload_deployment.js';
4
- import { http, file } from '@shopify/cli-kit';
5
4
  import { zip } from '@shopify/cli-kit/node/archiver';
6
5
  import { ClientError } from 'graphql-request';
7
6
  import { uploadOxygenDeploymentFile, oxygenRequest } from '@shopify/cli-kit/node/api/oxygen';
7
+ import { inTemporaryDirectory, createFileReadStream } from '@shopify/cli-kit/node/fs';
8
+ import { fetch, formData } from '@shopify/cli-kit/node/http';
8
9
  export const createDeployment = async (config) => {
9
10
  const variables = {
10
11
  input: {
@@ -36,15 +37,15 @@ export const createDeployment = async (config) => {
36
37
  };
37
38
  export const uploadDeployment = async (config, deploymentID) => {
38
39
  let deploymentData;
39
- await file.inTemporaryDirectory(async (tmpDir) => {
40
+ await inTemporaryDirectory(async (tmpDir) => {
40
41
  const distPath = config.pathToBuild ? config.pathToBuild : `${config.path}/dist`;
41
42
  const distZipPath = `${tmpDir}/dist.zip`;
42
43
  await zip(distPath, distZipPath);
43
- const formData = http.formData();
44
- formData.append('operations', buildOperationsString(deploymentID));
45
- formData.append('map', JSON.stringify({ '0': ['variables.file'] }));
46
- formData.append('0', file.createReadStream(distZipPath), { filename: distZipPath });
47
- const response = await uploadOxygenDeploymentFile(config.oxygenAddress, config.deploymentToken, formData);
44
+ const form = formData();
45
+ form.append('operations', buildOperationsString(deploymentID));
46
+ form.append('map', JSON.stringify({ '0': ['variables.file'] }));
47
+ form.append('0', createFileReadStream(distZipPath), { filename: distZipPath });
48
+ const response = await uploadOxygenDeploymentFile(config.oxygenAddress, config.deploymentToken, form);
48
49
  if (!response.ok) {
49
50
  if (response.status === 429) {
50
51
  throw TooManyRequestsError();
@@ -69,7 +70,7 @@ export const uploadDeployment = async (config, deploymentID) => {
69
70
  };
70
71
  export const healthCheck = async (pingUrl) => {
71
72
  const url = `${pingUrl}/__health`;
72
- const result = await http.fetch(url, { method: 'GET' });
73
+ const result = await fetch(url, { method: 'GET' });
73
74
  if (result.status !== 200)
74
75
  throw WebPageNotAvailable();
75
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/cli/services/deploy/upload.ts"],"names":[],"mappings":"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","sourcesContent":["import {ReqDeployConfig, UploadDeploymentResponse} from './types.js'\nimport {\n CreateDeploymentResponse,\n CreateDeploymentQuerySchema,\n CreateDeploymentQuery,\n} from './graphql/create_deployment.js'\nimport {UnrecoverableError, WebPageNotAvailable, TooManyRequestsError} from './error.js'\nimport {UploadDeploymentQuery} from './graphql/upload_deployment.js'\nimport {http, file} from '@shopify/cli-kit'\nimport {zip} from '@shopify/cli-kit/node/archiver'\nimport {ClientError} from 'graphql-request'\nimport {uploadOxygenDeploymentFile, oxygenRequest} from '@shopify/cli-kit/node/api/oxygen'\n\nexport const createDeployment = async (config: ReqDeployConfig): Promise<CreateDeploymentResponse> => {\n const variables = {\n input: {\n branch: config.commitRef,\n commitHash: config.commitSha,\n commitAuthor: config.commitAuthor,\n commitMessage: config.commitMessage,\n commitTimestamp: config.timestamp,\n },\n }\n\n try {\n const response: CreateDeploymentQuerySchema = await oxygenRequest(\n config.oxygenAddress,\n CreateDeploymentQuery,\n config.deploymentToken,\n variables,\n )\n\n if (response.createDeployment?.error) {\n if (response.createDeployment.error.unrecoverable) {\n throw UnrecoverableError(response.createDeployment.error.debugInfo)\n }\n\n throw new Error(`Failed to create deployment. ${response.createDeployment.error.debugInfo}`)\n }\n\n return response.createDeployment\n } catch (error) {\n if (error instanceof ClientError) {\n if (error.response.status === 429) {\n throw TooManyRequestsError()\n }\n }\n\n throw error\n }\n}\n\nexport const uploadDeployment = async (config: ReqDeployConfig, deploymentID: string): Promise<string> => {\n let deploymentData: UploadDeploymentResponse | undefined\n\n await file.inTemporaryDirectory(async (tmpDir) => {\n const distPath = config.pathToBuild ? config.pathToBuild : `${config.path}/dist`\n const distZipPath = `${tmpDir}/dist.zip`\n await zip(distPath, distZipPath)\n\n const formData = http.formData()\n formData.append('operations', buildOperationsString(deploymentID))\n formData.append('map', JSON.stringify({'0': ['variables.file']}))\n formData.append('0', file.createReadStream(distZipPath), {filename: distZipPath})\n\n const response = await uploadOxygenDeploymentFile(config.oxygenAddress, config.deploymentToken, formData)\n if (!response.ok) {\n if (response.status === 429) {\n throw TooManyRequestsError()\n }\n if (response.status !== 200 && response.status !== 202) {\n throw new Error(`Failed to upload deployment. ${await response.json()}`)\n }\n }\n\n deploymentData = (await response.json()) as UploadDeploymentResponse\n })\n\n if (!deploymentData) {\n throw new Error('Failed to upload deployment.')\n }\n const deploymentError = deploymentData.data?.uploadDeployment?.error\n if (deploymentError) {\n if (deploymentError.unrecoverable) {\n throw UnrecoverableError(deploymentError.debugInfo)\n }\n\n throw new Error(`Failed to upload deployment: ${deploymentError.debugInfo}`)\n }\n\n return deploymentData.data.uploadDeployment.deployment.previewURL\n}\n\nexport const healthCheck = async (pingUrl: string) => {\n const url = `${pingUrl}/__health`\n const result = await http.fetch(url, {method: 'GET'})\n if (result.status !== 200) throw WebPageNotAvailable()\n}\n\nconst buildOperationsString = (deploymentID: string): string => {\n return JSON.stringify({\n query: UploadDeploymentQuery,\n variables: {deploymentID, file: null},\n })\n}\n"]}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/cli/services/deploy/upload.ts"],"names":[],"mappings":"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","sourcesContent":["import {ReqDeployConfig, UploadDeploymentResponse} from './types.js'\nimport {\n CreateDeploymentResponse,\n CreateDeploymentQuerySchema,\n CreateDeploymentQuery,\n} from './graphql/create_deployment.js'\nimport {UnrecoverableError, WebPageNotAvailable, TooManyRequestsError} from './error.js'\nimport {UploadDeploymentQuery} from './graphql/upload_deployment.js'\nimport {zip} from '@shopify/cli-kit/node/archiver'\nimport {ClientError} from 'graphql-request'\nimport {uploadOxygenDeploymentFile, oxygenRequest} from '@shopify/cli-kit/node/api/oxygen'\nimport {inTemporaryDirectory, createFileReadStream} from '@shopify/cli-kit/node/fs'\nimport {fetch, formData} from '@shopify/cli-kit/node/http'\n\nexport const createDeployment = async (config: ReqDeployConfig): Promise<CreateDeploymentResponse> => {\n const variables = {\n input: {\n branch: config.commitRef,\n commitHash: config.commitSha,\n commitAuthor: config.commitAuthor,\n commitMessage: config.commitMessage,\n commitTimestamp: config.timestamp,\n },\n }\n\n try {\n const response: CreateDeploymentQuerySchema = await oxygenRequest(\n config.oxygenAddress,\n CreateDeploymentQuery,\n config.deploymentToken,\n variables,\n )\n\n if (response.createDeployment?.error) {\n if (response.createDeployment.error.unrecoverable) {\n throw UnrecoverableError(response.createDeployment.error.debugInfo)\n }\n\n throw new Error(`Failed to create deployment. ${response.createDeployment.error.debugInfo}`)\n }\n\n return response.createDeployment\n } catch (error) {\n if (error instanceof ClientError) {\n if (error.response.status === 429) {\n throw TooManyRequestsError()\n }\n }\n\n throw error\n }\n}\n\nexport const uploadDeployment = async (config: ReqDeployConfig, deploymentID: string): Promise<string> => {\n let deploymentData: UploadDeploymentResponse | undefined\n\n await inTemporaryDirectory(async (tmpDir) => {\n const distPath = config.pathToBuild ? config.pathToBuild : `${config.path}/dist`\n const distZipPath = `${tmpDir}/dist.zip`\n await zip(distPath, distZipPath)\n\n const form = formData()\n form.append('operations', buildOperationsString(deploymentID))\n form.append('map', JSON.stringify({'0': ['variables.file']}))\n form.append('0', createFileReadStream(distZipPath), {filename: distZipPath})\n\n const response = await uploadOxygenDeploymentFile(config.oxygenAddress, config.deploymentToken, form)\n if (!response.ok) {\n if (response.status === 429) {\n throw TooManyRequestsError()\n }\n if (response.status !== 200 && response.status !== 202) {\n throw new Error(`Failed to upload deployment. ${await response.json()}`)\n }\n }\n\n deploymentData = (await response.json()) as UploadDeploymentResponse\n })\n\n if (!deploymentData) {\n throw new Error('Failed to upload deployment.')\n }\n const deploymentError = deploymentData.data?.uploadDeployment?.error\n if (deploymentError) {\n if (deploymentError.unrecoverable) {\n throw UnrecoverableError(deploymentError.debugInfo)\n }\n\n throw new Error(`Failed to upload deployment: ${deploymentError.debugInfo}`)\n }\n\n return deploymentData.data.uploadDeployment.deployment.previewURL\n}\n\nexport const healthCheck = async (pingUrl: string) => {\n const url = `${pingUrl}/__health`\n const result = await fetch(url, {method: 'GET'})\n if (result.status !== 200) throw WebPageNotAvailable()\n}\n\nconst buildOperationsString = (deploymentID: string): string => {\n return JSON.stringify({\n query: UploadDeploymentQuery,\n variables: {deploymentID, file: null},\n })\n}\n"]}