From 0123e59177b68edb465f02be4b4586e57e92987c Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 2 Feb 2024 13:30:56 +0900 Subject: [PATCH 01/81] Bump Remix to 2.6.0 --- docs/preview/package.json | 12 ++++++------ examples/express/package.json | 14 +++++++------- examples/multipass/package.json | 6 +++--- examples/partytown/package.json | 6 +++--- examples/subscriptions/package.json | 6 +++--- packages/cli/package.json | 2 +- packages/hydrogen/package.json | 4 ++-- packages/remix-oxygen/package.json | 2 +- templates/demo-store/package.json | 8 ++++---- templates/hello-world/package.json | 6 +++--- templates/skeleton/package.json | 8 ++++---- 11 files changed, 37 insertions(+), 37 deletions(-) diff --git a/docs/preview/package.json b/docs/preview/package.json index 0729856136..2bc77a9a4a 100644 --- a/docs/preview/package.json +++ b/docs/preview/package.json @@ -8,10 +8,10 @@ "typecheck": "tsc" }, "dependencies": { - "@remix-run/css-bundle": "^2.5.1", - "@remix-run/node": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/serve": "^2.5.1", + "@remix-run/css-bundle": "^2.6.0", + "@remix-run/node": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/serve": "^2.6.0", "he": "^1.2.0", "isbot": "^3.6.8", "marked": "^9.1.0", @@ -20,8 +20,8 @@ "react-syntax-highlighter": "^15.5.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@types/he": "^1.2.1", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", diff --git a/examples/express/package.json b/examples/express/package.json index af0d99b53e..03133e8fc3 100644 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -11,11 +11,11 @@ "typecheck": "tsc" }, "dependencies": { - "@remix-run/css-bundle": "^2.5.1", - "@remix-run/express": "^2.5.1", - "@remix-run/node": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/css-bundle": "^2.6.0", + "@remix-run/express": "^2.6.0", + "@remix-run/node": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/hydrogen": "2024.1.0", "compression": "^1.7.4", "cross-env": "^7.0.3", @@ -26,8 +26,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@types/compression": "^1.7.2", diff --git a/examples/multipass/package.json b/examples/multipass/package.json index c990c71ee1..2fe882ce1e 100644 --- a/examples/multipass/package.json +++ b/examples/multipass/package.json @@ -12,7 +12,7 @@ }, "prettier": "@shopify/prettier-config", "dependencies": { - "@remix-run/react": "^2.5.1", + "@remix-run/react": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -26,8 +26,8 @@ "snakecase-keys": "^5.5.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/oxygen-workers-types": "^3.17.3", "@shopify/prettier-config": "^1.1.2", "@total-typescript/ts-reset": "^0.4.2", diff --git a/examples/partytown/package.json b/examples/partytown/package.json index 5a98aa430c..3a3a8ad3a9 100644 --- a/examples/partytown/package.json +++ b/examples/partytown/package.json @@ -15,7 +15,7 @@ "prettier": "@shopify/prettier-config", "dependencies": { "@builder.io/partytown": "^0.8.1", - "@remix-run/react": "^2.5.1", + "@remix-run/react": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -27,8 +27,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", "@total-typescript/ts-reset": "^0.4.2", diff --git a/examples/subscriptions/package.json b/examples/subscriptions/package.json index 25d574b81e..d87be255d7 100644 --- a/examples/subscriptions/package.json +++ b/examples/subscriptions/package.json @@ -12,7 +12,7 @@ }, "prettier": "@shopify/prettier-config", "dependencies": { - "@remix-run/react": "^2.5.1", + "@remix-run/react": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -24,8 +24,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", "@tailwindcss/forms": "^0.5.3", diff --git a/packages/cli/package.json b/packages/cli/package.json index 8e016fedc4..17cff8a7e4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -16,7 +16,7 @@ "test:watch": "cross-env SHOPIFY_UNIT_TEST=1 vitest --test-timeout=20000" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", + "@remix-run/dev": "^2.6.0", "@types/diff": "^5.0.2", "@types/fs-extra": "^11.0.1", "@types/gunzip-maybe": "^1.4.0", diff --git a/packages/hydrogen/package.json b/packages/hydrogen/package.json index 3eb93dc64f..bff51cff3e 100644 --- a/packages/hydrogen/package.json +++ b/packages/hydrogen/package.json @@ -69,8 +69,8 @@ "react": "^18.2.0" }, "devDependencies": { - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/generate-docs": "0.11.1", "@shopify/hydrogen-codegen": "*", "@testing-library/react": "^14.0.0", diff --git a/packages/remix-oxygen/package.json b/packages/remix-oxygen/package.json index bd05e99992..9a9ca6a387 100644 --- a/packages/remix-oxygen/package.json +++ b/packages/remix-oxygen/package.json @@ -40,7 +40,7 @@ "dist" ], "devDependencies": { - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/server-runtime": "^2.6.0", "@shopify/oxygen-workers-types": "^4.0.0" }, "peerDependencies": { diff --git a/templates/demo-store/package.json b/templates/demo-store/package.json index f57eb311b9..ab83f5e5fe 100644 --- a/templates/demo-store/package.json +++ b/templates/demo-store/package.json @@ -20,8 +20,8 @@ "prettier": "@shopify/prettier-config", "dependencies": { "@headlessui/react": "^1.7.2", - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -41,8 +41,8 @@ }, "devDependencies": { "@playwright/test": "^1.40.1", - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/eslint-plugin": "^42.0.1", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", diff --git a/templates/hello-world/package.json b/templates/hello-world/package.json index ce9af233f3..fb7cdcd583 100644 --- a/templates/hello-world/package.json +++ b/templates/hello-world/package.json @@ -13,8 +13,8 @@ }, "prettier": "@shopify/prettier-config", "dependencies": { - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -27,7 +27,7 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", + "@remix-run/dev": "^2.6.0", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", "@types/eslint": "^8.4.10", diff --git a/templates/skeleton/package.json b/templates/skeleton/package.json index 57ed411c3d..fda0f5268f 100644 --- a/templates/skeleton/package.json +++ b/templates/skeleton/package.json @@ -13,8 +13,8 @@ }, "prettier": "@shopify/prettier-config", "dependencies": { - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -26,8 +26,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", "@total-typescript/ts-reset": "^0.4.2", From 0ae54206066a7df9d82dd8c01cb279088f6a7dca Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 2 Feb 2024 17:01:47 +0900 Subject: [PATCH 02/81] Super experimental Vite --- package-lock.json | 5278 ++++++++++++++--- packages/cli/oclif.manifest.json | 82 + packages/cli/package.json | 16 +- .../cli/src/commands/hydrogen/dev-vite.ts | 311 + packages/cli/src/commands/hydrogen/preview.ts | 11 +- .../cli/src/lib/mini-oxygen/vite/client.ts | 207 + .../cli/src/lib/mini-oxygen/vite/common.ts | 10 + .../cli/src/lib/mini-oxygen/vite/server.ts | 196 + packages/cli/src/lib/remix-config.ts | 8 +- packages/cli/tsup.config.ts | 32 +- packages/hydrogen-react/package.json | 2 +- 11 files changed, 5190 insertions(+), 963 deletions(-) create mode 100644 packages/cli/src/commands/hydrogen/dev-vite.ts create mode 100644 packages/cli/src/lib/mini-oxygen/vite/client.ts create mode 100644 packages/cli/src/lib/mini-oxygen/vite/common.ts create mode 100644 packages/cli/src/lib/mini-oxygen/vite/server.ts diff --git a/package-lock.json b/package-lock.json index 4e3ef003ac..d493b37a2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "packages/remix-oxygen", "templates/demo-store", "templates/hello-world", + "templates/vite-hello-world", "templates/skeleton" ], "dependencies": { @@ -51,10 +52,10 @@ "docs/preview": { "name": "docs-preview", "dependencies": { - "@remix-run/css-bundle": "^2.5.1", - "@remix-run/node": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/serve": "^2.5.1", + "@remix-run/css-bundle": "^2.6.0", + "@remix-run/node": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/serve": "^2.6.0", "he": "^1.2.0", "isbot": "^3.6.8", "marked": "^9.1.0", @@ -63,8 +64,8 @@ "react-syntax-highlighter": "^15.5.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@types/he": "^1.2.1", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", @@ -76,15 +77,17 @@ "node": ">=18.0.0" } }, - "examples/custom-cart-method": {}, + "examples/custom-cart-method": { + "name": "example-custom-cart-method" + }, "examples/express": { "name": "example-hydrogen-express", "dependencies": { - "@remix-run/css-bundle": "^2.5.1", - "@remix-run/express": "^2.5.1", - "@remix-run/node": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/css-bundle": "^2.6.0", + "@remix-run/express": "^2.6.0", + "@remix-run/node": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/hydrogen": "2024.1.0", "compression": "^1.7.4", "cross-env": "^7.0.3", @@ -95,8 +98,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@types/compression": "^1.7.2", @@ -120,7 +123,7 @@ "examples/multipass": { "name": "example-multipass", "dependencies": { - "@remix-run/react": "^2.5.1", + "@remix-run/react": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -134,8 +137,8 @@ "snakecase-keys": "^5.5.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/oxygen-workers-types": "^3.17.3", "@shopify/prettier-config": "^1.1.2", "@total-typescript/ts-reset": "^0.4.2", @@ -166,7 +169,7 @@ "version": "1.0.0", "dependencies": { "@builder.io/partytown": "^0.8.1", - "@remix-run/react": "^2.5.1", + "@remix-run/react": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -178,8 +181,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", "@total-typescript/ts-reset": "^0.4.2", @@ -199,7 +202,7 @@ "examples/subscriptions": { "name": "example-subscriptions", "dependencies": { - "@remix-run/react": "^2.5.1", + "@remix-run/react": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -211,8 +214,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", "@tailwindcss/forms": "^0.5.3", @@ -2765,9 +2768,9 @@ } }, "node_modules/@cloudflare/workerd-darwin-64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20231218.0.tgz", - "integrity": "sha512-547gOmTIVmRdDy7HNAGJUPELa+fSDm2Y0OCxqAtQOz0GLTDu1vX61xYmsb2rn91+v3xW6eMttEIpbYokKjtfJA==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20240129.0.tgz", + "integrity": "sha512-DfVVB5IsQLVcWPJwV019vY3nEtU88c2Qu2ST5SQxqcGivZ52imagLRK0RHCIP8PK4piSiq90qUC6ybppUsw8eg==", "cpu": [ "x64" ], @@ -2780,9 +2783,9 @@ } }, "node_modules/@cloudflare/workerd-darwin-arm64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20231218.0.tgz", - "integrity": "sha512-b39qrU1bKolCfmKFDAnX4vXcqzISkEUVE/V8sMBsFzxrIpNAbcUHBZAQPYmS/OHIGB94KjOVokvDi7J6UNurPw==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20240129.0.tgz", + "integrity": "sha512-t0q8ABkmumG1zRM/MZ/vIv/Ysx0vTAXnQAPy/JW5aeQi/tqrypXkO9/NhPc0jbF/g/hIPrWEqpDgEp3CB7Da7Q==", "cpu": [ "arm64" ], @@ -2795,9 +2798,9 @@ } }, "node_modules/@cloudflare/workerd-linux-64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20231218.0.tgz", - "integrity": "sha512-dMUF1wA+0mybm6hHNOCgY/WMNMwomPPs4I7vvYCgwHSkch0Q2Wb7TnxQZSt8d1PK/myibaBwadrlIxpjxmpz3w==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20240129.0.tgz", + "integrity": "sha512-sFV1uobHgDI+6CKBS/ZshQvOvajgwl6BtiYaH4PSFSpvXTmRx+A9bcug+6BnD+V4WgwxTiEO2iR97E1XuwDAVw==", "cpu": [ "x64" ], @@ -2810,9 +2813,9 @@ } }, "node_modules/@cloudflare/workerd-linux-arm64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20231218.0.tgz", - "integrity": "sha512-2s5uc8IHt0QmWyKxAr1Fy+4b8Xy0b/oUtlPnm5MrKi2gDRlZzR7JvxENPJCpCnYENydS8lzvkMiAFECPBccmyQ==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20240129.0.tgz", + "integrity": "sha512-O7q7htHaFRp8PgTqNJx1/fYc3+LnvAo6kWWB9a14C5OWak6AAZk42PNpKPx+DXTmGvI+8S1+futBGUeJ8NPDXg==", "cpu": [ "arm64" ], @@ -2825,9 +2828,9 @@ } }, "node_modules/@cloudflare/workerd-windows-64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20231218.0.tgz", - "integrity": "sha512-oN5hz6TXUDB5YKUN5N3QWAv6cYz9JjTZ9g16HVyoegVFEL6/zXU3tV19MBX2IvlE11ab/mRogEv9KXVIrHfKmA==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20240129.0.tgz", + "integrity": "sha512-YqGno0XSqqqkDmNoGEX6M8kJlI2lEfWntbTPVtHaZlaXVR9sWfoD7TEno0NKC95cXFz+ioyFLbgbOdnfWwmVAA==", "cpu": [ "x64" ], @@ -5113,6 +5116,97 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@hattip/adapter-node": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/adapter-node/-/adapter-node-0.0.41.tgz", + "integrity": "sha512-l/UT8aH+frMo4c2IWfbavmbMW0ixSIfYyFB9VvpvDLL9A6Adqfh1d4UEfjg4IBxUlgRko/vTuTeND7jfh2fstg==", + "dependencies": { + "@hattip/core": "0.0.41", + "@hattip/polyfills": "0.0.41", + "@hattip/walk": "0.0.41" + } + }, + "node_modules/@hattip/core": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/core/-/core-0.0.41.tgz", + "integrity": "sha512-ZdYSUWg+kciF+su80AEvs2Lfvvf1z021sdljYjL7KpwiqVpuCoWTrfN2pF5iy0uZ7KYgCPPBD1hWtMZ7/Mo0Rg==" + }, + "node_modules/@hattip/headers": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/headers/-/headers-0.0.41.tgz", + "integrity": "sha512-Fe2ZlzmgQPSH4XQ7zBx2vbQ0c7AxToZiXSn5nm/xZGU3/tbSAeaiYf+fQ2yI1lREDktZwp/ZlU43a5aKB/WiSQ==", + "dependencies": { + "@hattip/core": "0.0.41" + } + }, + "node_modules/@hattip/polyfills": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/polyfills/-/polyfills-0.0.41.tgz", + "integrity": "sha512-pyqbaw2iqCEvN91HNS1Q40TYMQG+9YZgD8wXNlVsdWipWNN5KXrfvkKVMlcjbtMR5tg1thXSXkwiPFDmcxmJaw==", + "dependencies": { + "@hattip/core": "0.0.41", + "@whatwg-node/fetch": "^0.9.15", + "node-fetch-native": "^1.6.1" + } + }, + "node_modules/@hattip/polyfills/node_modules/@whatwg-node/events": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", + "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@hattip/polyfills/node_modules/@whatwg-node/fetch": { + "version": "0.9.16", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.16.tgz", + "integrity": "sha512-mqasZiUNquRe3ea9+aCAuo81BR6vq5opUKprPilIHTnrg8a21Z1T1OrI+KiMFX8OmwO5HUJe/vro47lpj2JPWQ==", + "dependencies": { + "@whatwg-node/node-fetch": "^0.5.5", + "urlpattern-polyfill": "^10.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@hattip/polyfills/node_modules/@whatwg-node/node-fetch": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.5.tgz", + "integrity": "sha512-LhE0Oo95+dOrrzrJncrpCaR3VHSjJ5Gvkl5g9WVfkPKSKkxCbMeOsRQ+v9LrU9lRvXBJn8JicXqSufKFEpyRbQ==", + "dependencies": { + "@kamilkisiela/fast-url-parser": "^1.1.4", + "@whatwg-node/events": "^0.1.0", + "busboy": "^1.6.0", + "fast-querystring": "^1.1.1", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@hattip/polyfills/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@hattip/polyfills/node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==" + }, + "node_modules/@hattip/walk": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/walk/-/walk-0.0.41.tgz", + "integrity": "sha512-LEVv20gZNRDZIVMg3OltdEYBKeMg+b2AqrcYqbOXOljQxP2Va7fRifg3PWcNIJ/bvAq4nwif3K9jI2cqn0CIBQ==", + "dependencies": { + "@hattip/headers": "0.0.41", + "cac": "^6.7.14", + "mime-types": "^2.1.35" + }, + "bin": { + "hattip-walk": "cli.js" + } + }, "node_modules/@headlessui/react": { "version": "1.7.2", "license": "MIT", @@ -7426,17 +7520,17 @@ } }, "node_modules/@remix-run/css-bundle": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-2.5.1.tgz", - "integrity": "sha512-QPeNvgD7fj4NmXB9CuGM5Mp0ZtM43dMeda8Ik3AUoQOMgMWb0d4jK4Cye6eoTGwJOron6XISKh0mq8MorucWEQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-2.6.0.tgz", + "integrity": "sha512-c3I1FVsWeBoA3c92Fwa1sufxAlosovfE2V7hwjc9HeQHA3DAHe18RXfgU6my/IvpItkIvaEgQPuoWEA6Dh8VDQ==", "engines": { "node": ">=18.0.0" } }, "node_modules/@remix-run/dev": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-2.5.1.tgz", - "integrity": "sha512-IrYhWANubH+WM62Wz55n8NWT5kBqfbyytXDFlP0VoZLrr1IpJf2GtaT4IA+CODMaNoeXeMACOD5Tw5/Y2bO5lA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-2.6.0.tgz", + "integrity": "sha512-wf5DoKxBwz3/84FNyFM6NKvQIOEv+Ukwj9DjXrDs6YLI6oSqw2XsJCxWN4lAbOxXuK37pBt1WAE8LzEMuyowsw==", "dev": true, "dependencies": { "@babel/core": "^7.21.8", @@ -7449,9 +7543,9 @@ "@babel/types": "^7.22.5", "@mdx-js/mdx": "^2.3.0", "@npmcli/package-json": "^4.0.1", - "@remix-run/node": "2.5.1", - "@remix-run/router": "1.14.2", - "@remix-run/server-runtime": "2.5.1", + "@remix-run/node": "2.6.0", + "@remix-run/router": "1.15.0", + "@remix-run/server-runtime": "2.6.0", "@types/mdx": "^2.0.5", "@vanilla-extract/integration": "^6.2.0", "arg": "^5.0.1", @@ -7500,9 +7594,10 @@ "node": ">=18.0.0" }, "peerDependencies": { - "@remix-run/serve": "^2.5.1", + "@remix-run/serve": "^2.6.0", "typescript": "^5.1.0", - "vite": "^5.0.0" + "vite": "^5.0.0", + "wrangler": "^3.24.0" }, "peerDependenciesMeta": { "@remix-run/serve": { @@ -7513,6 +7608,9 @@ }, "vite": { "optional": true + }, + "wrangler": { + "optional": true } } }, @@ -7669,9 +7767,9 @@ } }, "node_modules/@remix-run/eslint-config": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-2.5.1.tgz", - "integrity": "sha512-PpLj0QSd2NZ12KdTA2QYPd/FK3Szu9Np7kTmx26VxDZJTzQYSgGb5i2O9uby+j2sD68zR/+EAYaIcOlq66ekJw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-2.6.0.tgz", + "integrity": "sha512-WIYyCl8qHNDyZy05ggzl/x3wbnLtmHWOaeSqvtshYbvBsKpyLT0xVQNWyj0XEzk6hWWk+93b0yQ5ihumjM4Y1Q==", "dev": true, "dependencies": { "@babel/core": "^7.21.8", @@ -7706,11 +7804,11 @@ } }, "node_modules/@remix-run/express": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-2.5.1.tgz", - "integrity": "sha512-ISaf2hzHxDTS1hNsOovRoSfIQC29m4ogzXvBC6xp2BuJj0K8R0yQ4RFD4+qUFEUnS2n6MyWyjFQRhOC6PhQhRw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-2.6.0.tgz", + "integrity": "sha512-sAb0eoMwqP4yhDCnT5H6Db0svfzBuRbuPuPSbQCtuLRWkEGmIhWN7vKA0IqaxsUA09qKwQQiKQdupra55KfCyA==", "dependencies": { - "@remix-run/node": "2.5.1" + "@remix-run/node": "2.6.0" }, "engines": { "node": ">=18.0.0" @@ -7726,11 +7824,11 @@ } }, "node_modules/@remix-run/node": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.5.1.tgz", - "integrity": "sha512-UI442xzHAiokmsfrYOabMQB024+IizmRhZBGcNa42QjJWsNqogy1bNwYhzEpB6oQEB1wF3vwOKK1AD1/iYA/9A==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.6.0.tgz", + "integrity": "sha512-bWemy3g258Kdqi+4OxIEZ7QS64T96jNK6a7NdlPXGJZqeLpxM5NmlCl/slSdx52oTi9r5Xoz1Tm4uR37nD1/Xw==", "dependencies": { - "@remix-run/server-runtime": "2.5.1", + "@remix-run/server-runtime": "2.6.0", "@remix-run/web-fetch": "^4.4.2", "@remix-run/web-file": "^3.1.0", "@remix-run/web-stream": "^1.1.0", @@ -7760,14 +7858,14 @@ } }, "node_modules/@remix-run/react": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.5.1.tgz", - "integrity": "sha512-MNXHLj4Iu9Iyi+3uY61JZJ1Rtx2nM/z11j9AtwQdEADkh1/t9GruhtT/8VLplToOl0qWZKItboWScKf6uRQsrw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.6.0.tgz", + "integrity": "sha512-m/Ph6bryny7wrmrQyXQMvIiW+cBLrU/MepcLGFPvTVVwvfeiGBgXRiYZJ6yPNsfrmHFaS83d+Ja/Mx4N4zUWcg==", "dependencies": { - "@remix-run/router": "1.14.2", - "@remix-run/server-runtime": "2.5.1", - "react-router": "6.21.3", - "react-router-dom": "6.21.3" + "@remix-run/router": "1.15.0", + "@remix-run/server-runtime": "2.6.0", + "react-router": "6.22.0", + "react-router-dom": "6.22.0" }, "engines": { "node": ">=18.0.0" @@ -7784,20 +7882,20 @@ } }, "node_modules/@remix-run/router": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz", - "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.0.tgz", + "integrity": "sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==", "engines": { "node": ">=14.0.0" } }, "node_modules/@remix-run/serve": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/serve/-/serve-2.5.1.tgz", - "integrity": "sha512-r1IWfirwkLrxADd8uFUIpLR1wMU8VeRI4ED4SpbhrKwqODLrYtv5irzjei+r/w0y0Oob8DMHnYxg03UY4T7ejg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/serve/-/serve-2.6.0.tgz", + "integrity": "sha512-OIvGWaruFLCMLpemovitE8WnxRD/4TBPDTsgC/pSxcjDfuXv3nZk0nhAcmfklPSnxBCCct50cbtEN1xcrPqeyw==", "dependencies": { - "@remix-run/express": "2.5.1", - "@remix-run/node": "2.5.1", + "@remix-run/express": "2.6.0", + "@remix-run/node": "2.6.0", "chokidar": "^3.5.3", "compression": "^1.7.4", "express": "^4.17.1", @@ -7813,11 +7911,11 @@ } }, "node_modules/@remix-run/server-runtime": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.5.1.tgz", - "integrity": "sha512-bP31jrVbYTJ2eP5sxZfDgT1YyXzDlzsfMxGYVzpaoLCYDJAekq1QpHLLXKGOXhmyb46O9rdhlQKfwD6WpAxr3A==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.6.0.tgz", + "integrity": "sha512-qFXDl4pK55njBLuvyRn5AkI/hu8fEU3t1XFKv0Syivx0nmUVpWMW25Uzi1pkX/chF1VIxCVrZ8KuQ1rcrKj+DQ==", "dependencies": { - "@remix-run/router": "1.14.2", + "@remix-run/router": "1.15.0", "@types/cookie": "^0.6.0", "@web3-storage/multipart-parser": "^1.0.0", "cookie": "^0.6.0", @@ -7900,6 +7998,34 @@ "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==" }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", @@ -9143,9 +9269,10 @@ } }, "node_modules/@types/connect": { - "version": "3.4.35", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9267,6 +9394,15 @@ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==" }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/is-ci": { "version": "3.0.0", "dev": true, @@ -9611,8 +9747,9 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.4", - "license": "MIT", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dependencies": { "@types/node": "*" } @@ -11400,6 +11537,14 @@ "node": ">=8" } }, + "node_modules/birpc": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.15.tgz", + "integrity": "sha512-LuZgWLW6DB1zenkfJuF4/kfSZdazOR2xaMSzeqgvfbNIwECwV1AJso9wpNje79uaRU86Obbujv4qtDnwoOLQww==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/bl": { "version": "4.1.0", "license": "MIT", @@ -11752,7 +11897,6 @@ }, "node_modules/cac": { "version": "6.7.14", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15302,6 +15446,11 @@ "node": ">=6" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -15836,6 +15985,25 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "license": "MIT", @@ -16963,6 +17131,19 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/http-proxy-agent": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", @@ -20631,9 +20812,9 @@ } }, "node_modules/miniflare": { - "version": "3.20231218.2", - "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20231218.2.tgz", - "integrity": "sha512-rCUI2OjqCf3fZVdmSX4DOZQRzSDvHp/oL2vjER/cvJEdWSYiqRxDp2oO7A7JcEo1/Y+kPa5VQ1pFfdZpjBcpFg==", + "version": "3.20240129.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20240129.0.tgz", + "integrity": "sha512-27pDhlP2G/4gXmvnSt6LjMQ8KrkmbJElIQmn+BLjdiyIx+zXY4E8MSPJmi9flgf0dn3wtjuHO2ASenuopqqxrw==", "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "^8.8.0", @@ -20642,8 +20823,8 @@ "exit-hook": "^2.2.1", "glob-to-regexp": "^0.4.1", "stoppable": "^1.1.0", - "undici": "^5.22.1", - "workerd": "1.20231218.0", + "undici": "^5.28.2", + "workerd": "1.20240129.0", "ws": "^8.11.0", "youch": "^3.2.2", "zod": "^3.20.6" @@ -21066,6 +21247,11 @@ } } }, + "node_modules/node-fetch-native": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.1.tgz", + "integrity": "sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==" + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -25369,9 +25555,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "dev": true, "funding": [ { @@ -26529,11 +26715,11 @@ } }, "node_modules/react-router": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.3.tgz", - "integrity": "sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.0.tgz", + "integrity": "sha512-q2yemJeg6gw/YixRlRnVx6IRJWZD6fonnfZhN1JIOhV2iJCPeRNSH3V1ISwHf+JWcESzLC3BOLD1T07tmO5dmg==", "dependencies": { - "@remix-run/router": "1.14.2" + "@remix-run/router": "1.15.0" }, "engines": { "node": ">=14.0.0" @@ -26543,12 +26729,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.3.tgz", - "integrity": "sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.0.tgz", + "integrity": "sha512-z2w+M4tH5wlcLmH3BMMOMdrtrJ9T3oJJNsAlBJbwk+8Syxd5WFJ7J5dxMEW0/GEXD1BBis4uXRrNIz3mORr0ag==", "dependencies": { - "@remix-run/router": "1.14.2", - "react-router": "6.21.3" + "@remix-run/router": "1.15.0", + "react-router": "6.22.0" }, "engines": { "node": ">=14.0.0" @@ -27294,6 +27480,11 @@ "node": ">=0.10.5" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", "license": "MIT" @@ -30462,6 +30653,10 @@ } } }, + "node_modules/vite-hello-world": { + "resolved": "templates/vite-hello-world", + "link": true + }, "node_modules/vite-node": { "version": "0.28.5", "dev": true, @@ -31367,9 +31562,9 @@ "license": "MIT" }, "node_modules/workerd": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20231218.0.tgz", - "integrity": "sha512-AGIsDvqCrcwhoA9kb1hxOhVAe53/xJeaGZxL4FbYI9FvO17DZwrnqGq+6eqItJ6Cfw1ZLmf3BM+QdMWaL2bFWQ==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20240129.0.tgz", + "integrity": "sha512-t4pnsmjjk/u+GdVDgH2M1AFmJaBUABshYK/vT/HNrAXsHSwN6VR8Yqw0JQ845OokO34VLkuUtYQYyxHHKpdtsw==", "hasInstallScript": true, "bin": { "workerd": "bin/workerd" @@ -31378,11 +31573,11 @@ "node": ">=16" }, "optionalDependencies": { - "@cloudflare/workerd-darwin-64": "1.20231218.0", - "@cloudflare/workerd-darwin-arm64": "1.20231218.0", - "@cloudflare/workerd-linux-64": "1.20231218.0", - "@cloudflare/workerd-linux-arm64": "1.20231218.0", - "@cloudflare/workerd-windows-64": "1.20231218.0" + "@cloudflare/workerd-darwin-64": "1.20240129.0", + "@cloudflare/workerd-darwin-arm64": "1.20240129.0", + "@cloudflare/workerd-linux-64": "1.20240129.0", + "@cloudflare/workerd-linux-arm64": "1.20240129.0", + "@cloudflare/workerd-windows-64": "1.20240129.0" } }, "node_modules/worktop": { @@ -31761,19 +31956,23 @@ "dependencies": { "@ast-grep/napi": "0.11.0", "@graphql-codegen/cli": "5.0.1", + "@hattip/adapter-node": "^0.0.41", "@oclif/core": "2.11.7", "@shopify/cli-kit": "3.52.0", "@shopify/hydrogen-codegen": "^0.2.0", "@shopify/mini-oxygen": "^2.2.5", "@shopify/oxygen-cli": "^4.0.0", "ansi-escapes": "^6.2.0", + "birpc": "^0.2.15", "cli-truncate": "^4.0.0", + "connect": "^3.7.0", "diff": "^5.1.0", "fs-extra": "^11.1.0", "get-port": "^7.0.0", "graphql-config": "5.0.3", "gunzip-maybe": "^1.4.2", - "miniflare": "3.20231218.2", + "http-proxy": "^1.18.1", + "miniflare": "3.20240129.0", "prettier": "^2.8.4", "semver": "^7.5.3", "source-map": "^0.7.4", @@ -31782,26 +31981,31 @@ "tempy": "^3.0.0", "ts-morph": "20.0.0", "use-resize-observer": "^9.1.0", - "ws": "^8.13.0" + "ws": "^8.16.0" }, "bin": { "cli-hydrogen": "dist/create-app.js" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", + "@remix-run/dev": "2.6.0", + "@rollup/pluginutils": "^5.1.0", + "@types/connect": "^3.4.38", "@types/diff": "^5.0.2", "@types/fs-extra": "^11.0.1", "@types/gunzip-maybe": "^1.4.0", + "@types/http-proxy": "^1.17.14", "@types/prettier": "^2.7.2", "@types/recursive-readdir": "^2.2.1", "@types/stack-trace": "^0.0.30", "@types/tar-fs": "^2.0.1", + "@types/ws": "^8.5.10", "@vitest/coverage-v8": "^1.0.4", "devtools-protocol": "^0.0.1177611", "fast-glob": "^3.2.12", "flame-chart-js": "2.3.2", "get-port": "^7.0.0", "type-fest": "^4.5.0", + "vite": "5.1.0-beta.6", "vitest": "^1.0.4" }, "engines": { @@ -31811,7 +32015,8 @@ "@parcel/watcher": "^2.3.0" }, "peerDependencies": { - "@remix-run/dev": "^2.1.0" + "@remix-run/dev": "^2.1.0", + "vite": "5.1.0-beta.6" }, "peerDependenciesMeta": { "@remix-run/dev": { @@ -31828,771 +32033,2792 @@ "@bugsnag/node": "^7.22.3" } }, - "packages/cli/node_modules/@shopify/oxygen-cli": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@shopify/oxygen-cli/-/oxygen-cli-4.0.0.tgz", - "integrity": "sha512-mkUffl5zUGrvrds935ncWQdzLIThrF1CNGpvLUA17dMwQxqVIfb3pM9/4iWBNgvvORaLWG1ceXsUTg5xVEra1Q==", + "packages/cli/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, "os": [ - "darwin", - "linux", - "win32" + "aix" ], - "dependencies": { - "@bugsnag/core": "^7.19.0", - "@bugsnag/js": "^7.22.3", - "@bugsnag/node": "^7.19.0", - "async": "^3.2.5" - }, - "bin": { - "oxygen-cli": "dist/oxygen-cli.js" - }, "engines": { - "node": ">=16.14.0" - }, - "peerDependencies": { - "@oclif/core": "^2.11.7", - "@shopify/cli-kit": "^3.51.0" + "node": ">=12" } }, - "packages/cli/node_modules/ansi-escapes": { - "version": "6.2.0", - "license": "MIT", - "dependencies": { - "type-fest": "^3.0.0" - }, + "packages/cli/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "packages/cli/node_modules/ansi-escapes/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "packages/cli/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "packages/cli/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "packages/cli/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "packages/cli/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "packages/cli/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "packages/cli/node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, + "packages/cli/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "packages/cli/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" - }, - "packages/cli/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "packages/cli/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=14.14" + "node": ">=12" } }, - "packages/cli/node_modules/get-port": { - "version": "7.0.0", + "packages/cli/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "packages/cli/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "packages/cli/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/cli/node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, + "packages/cli/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "packages/cli/node_modules/string-width": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.0.0.tgz", - "integrity": "sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, + "packages/cli/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "packages/cli/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "packages/cli/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "packages/cli/node_modules/type-fest": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", - "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "packages/cli/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "packages/cli/node_modules/ws": { - "version": "8.15.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", - "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", + "packages/cli/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "packages/create-hydrogen": { - "name": "@shopify/create-hydrogen", - "version": "4.3.5", - "license": "MIT", - "dependencies": { - "@shopify/cli-hydrogen": "^7.0.0" - }, - "bin": { - "create-hydrogen": "dist/create-app.js" + "node": ">=12" } }, - "packages/hydrogen": { - "name": "@shopify/hydrogen", - "version": "2024.1.0", - "license": "MIT", - "dependencies": { - "@shopify/hydrogen-react": "2024.1.0", - "content-security-policy-builder": "^2.1.1", - "type-fest": "^4.5.0" - }, - "devDependencies": { - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", - "@shopify/generate-docs": "0.11.1", - "@shopify/hydrogen-codegen": "*", - "@testing-library/react": "^14.0.0", - "happy-dom": "^8.9.0", - "react": "^18.2.0", - "schema-dts": "^1.1.0", - "vitest": "^1.0.4" - }, - "peerDependencies": { - "@remix-run/react": "^2.1.0", - "@remix-run/server-runtime": "^2.1.0", - "react": "^18.2.0" + "packages/cli/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "packages/hydrogen-codegen": { - "name": "@shopify/hydrogen-codegen", - "version": "0.2.0", - "license": "MIT", - "dependencies": { - "@graphql-codegen/add": "^5.0.1", - "@graphql-codegen/typescript": "^4.0.2", - "@graphql-codegen/typescript-operations": "^4.1.0", - "type-fest": "^4.5.0" - }, - "devDependencies": { - "@graphql-codegen/cli": "^5.0.1", - "@graphql-codegen/plugin-helpers": "^5.0.2", - "@graphql-tools/utils": "^10.0.13", - "vitest": "^1.0.4" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "packages/cli/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "packages/hydrogen-codegen/node_modules/type-fest": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", - "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "packages/cli/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "packages/hydrogen-react": { - "name": "@shopify/hydrogen-react", - "version": "2024.1.0", - "license": "MIT", - "dependencies": { - "@google/model-viewer": "^1.12.1", - "@xstate/fsm": "^2.0.0", - "@xstate/react": "^3.2.1", - "graphql": "^16.6.0", - "type-fest": "^4.5.0", - "worktop": "^0.7.3" + "packages/cli/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "packages/cli/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "packages/cli/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "packages/cli/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "packages/cli/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "packages/cli/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "packages/cli/node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "packages/cli/node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "packages/cli/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "packages/cli/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "packages/cli/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/cli/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/cli/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/cli/node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/cli/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/cli/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/cli/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "packages/cli/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "packages/cli/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "packages/cli/node_modules/@shopify/oxygen-cli": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@shopify/oxygen-cli/-/oxygen-cli-4.0.0.tgz", + "integrity": "sha512-mkUffl5zUGrvrds935ncWQdzLIThrF1CNGpvLUA17dMwQxqVIfb3pM9/4iWBNgvvORaLWG1ceXsUTg5xVEra1Q==", + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "@bugsnag/core": "^7.19.0", + "@bugsnag/js": "^7.22.3", + "@bugsnag/node": "^7.19.0", + "async": "^3.2.5" }, - "devDependencies": { - "@faker-js/faker": "^7.6.0", - "@graphql-codegen/add": "^5.0.1", - "@graphql-codegen/cli": "^5.0.1", - "@graphql-codegen/introspection": "^4.0.1", - "@graphql-codegen/typescript": "^4.0.2", - "@ladle/react": "^2.9.0", - "@shopify/generate-docs": "^0.11.1", - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^14.0.0", - "@testing-library/user-event": "^14.4.3", - "@types/jest": "^29.4.0", - "@vitejs/plugin-react": "^4.2.1", - "@vitest/coverage-v8": "^1.0.4", - "cpy-cli": "^4.2.0", - "eslint": "^8.34.0", - "eslint-plugin-hydrogen": "^0.12.3", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.2.0", - "eslint-plugin-simple-import-sort": "^10.0.0", - "eslint-plugin-tsdoc": "^0.2.14", - "happy-dom": "8.7.2", - "npm-run-all": "^4.1.5", - "react": "^18.0.0", - "react-dom": "^18.0.0", - "rimraf": "^4.1.2", - "ts-expect": "^1.3.0", - "typescript": "^5.2.2", - "vite": "^5.0.12", - "vitest": "^1.0.4" + "bin": { + "oxygen-cli": "dist/oxygen-cli.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.14.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "@oclif/core": "^2.11.7", + "@shopify/cli-kit": "^3.51.0" } }, - "packages/hydrogen-react/node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", - "dev": true, + "packages/cli/node_modules/ansi-escapes": { + "version": "6.2.0", + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" + "type-fest": "^3.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">=14.16" }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/hydrogen-react/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "packages/cli/node_modules/ansi-escapes/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/cli/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "packages/cli/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "packages/cli/node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dependencies": { - "balanced-match": "^1.0.0" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/hydrogen-react/node_modules/eslint-plugin-hydrogen": { - "version": "0.12.3", + "packages/cli/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + }, + "packages/cli/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "dev": true, - "license": "MIT", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "packages/cli/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.26.0", - "@typescript-eslint/experimental-utils": "^5.26.0", - "@typescript-eslint/parser": "^5.26.0", - "@typescript-eslint/types": "^5.20.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-jest": "^26.2.2", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.30.0", - "eslint-plugin-react-hooks": "^4.5.0", - "prettier": "^2.6.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "peerDependencies": { - "eslint": ">=8.0.0" + "engines": { + "node": ">=14.14" } }, - "packages/hydrogen-react/node_modules/eslint-plugin-hydrogen/node_modules/eslint-plugin-jest": { - "version": "26.9.0", + "packages/cli/node_modules/get-port": { + "version": "7.0.0", "dev": true, "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/cli/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/cli/node_modules/rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, "dependencies": { - "@typescript-eslint/utils": "^5.10.0" + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "fsevents": "~2.3.2" + } + }, + "packages/cli/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "packages/hydrogen-react/node_modules/eslint-plugin-jest": { - "version": "27.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz", - "integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==", + "packages/cli/node_modules/string-width": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.0.0.tgz", + "integrity": "sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/cli/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "packages/cli/node_modules/type-fest": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", + "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/cli/node_modules/vite": { + "version": "5.1.0-beta.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.0-beta.6.tgz", + "integrity": "sha512-Tnham+O97w9GAQfeYyh1wZF2iePQdr/MgU+8k23O8aa+DtUbAPTmg09CsFgIi4eMta2utRa0pOjSqtYIMcUKbQ==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^5.10.0" + "esbuild": "^0.19.3", + "postcss": "^8.4.33", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0", - "eslint": "^7.0.0 || ^8.0.0", - "jest": "*" + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" }, "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { + "@types/node": { "optional": true }, - "jest": { + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { "optional": true } } }, - "packages/hydrogen-react/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "dev": true, - "dependencies": { + "packages/cli/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "packages/create-hydrogen": { + "name": "@shopify/create-hydrogen", + "version": "4.3.5", + "license": "MIT", + "dependencies": { + "@shopify/cli-hydrogen": "^7.0.0" + }, + "bin": { + "create-hydrogen": "dist/create-app.js" + } + }, + "packages/hydrogen": { + "name": "@shopify/hydrogen", + "version": "2024.1.0", + "license": "MIT", + "dependencies": { + "@shopify/hydrogen-react": "2024.1.0", + "content-security-policy-builder": "^2.1.1", + "type-fest": "^4.5.0" + }, + "devDependencies": { + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", + "@shopify/generate-docs": "0.11.1", + "@shopify/hydrogen-codegen": "*", + "@testing-library/react": "^14.0.0", + "happy-dom": "^8.9.0", + "react": "^18.2.0", + "schema-dts": "^1.1.0", + "vitest": "^1.0.4" + }, + "peerDependencies": { + "@remix-run/react": "^2.1.0", + "@remix-run/server-runtime": "^2.1.0", + "react": "^18.2.0" + } + }, + "packages/hydrogen-codegen": { + "name": "@shopify/hydrogen-codegen", + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "@graphql-codegen/add": "^5.0.1", + "@graphql-codegen/typescript": "^4.0.2", + "@graphql-codegen/typescript-operations": "^4.1.0", + "type-fest": "^4.5.0" + }, + "devDependencies": { + "@graphql-codegen/cli": "^5.0.1", + "@graphql-codegen/plugin-helpers": "^5.0.2", + "@graphql-tools/utils": "^10.0.13", + "vitest": "^1.0.4" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "packages/hydrogen-codegen/node_modules/type-fest": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", + "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/hydrogen-react": { + "name": "@shopify/hydrogen-react", + "version": "2024.1.0", + "license": "MIT", + "dependencies": { + "@google/model-viewer": "^1.12.1", + "@xstate/fsm": "^2.0.0", + "@xstate/react": "^3.2.1", + "graphql": "^16.6.0", + "type-fest": "^4.5.0", + "worktop": "^0.7.3" + }, + "devDependencies": { + "@faker-js/faker": "^7.6.0", + "@graphql-codegen/add": "^5.0.1", + "@graphql-codegen/cli": "^5.0.1", + "@graphql-codegen/introspection": "^4.0.1", + "@graphql-codegen/typescript": "^4.0.2", + "@ladle/react": "^2.9.0", + "@shopify/generate-docs": "^0.11.1", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.4.3", + "@types/jest": "^29.4.0", + "@vitejs/plugin-react": "^4.2.1", + "@vitest/coverage-v8": "^1.0.4", + "cpy-cli": "^4.2.0", + "eslint": "^8.34.0", + "eslint-plugin-hydrogen": "^0.12.3", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jest": "^27.2.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-simple-import-sort": "^10.0.0", + "eslint-plugin-tsdoc": "^0.2.14", + "happy-dom": "8.7.2", + "npm-run-all": "^4.1.5", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "rimraf": "^4.1.2", + "ts-expect": "^1.3.0", + "typescript": "^5.2.2", + "vite": "5.1.0-beta.6", + "vitest": "^1.0.4" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "packages/hydrogen-react/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "packages/hydrogen-react/node_modules/@vitejs/plugin-react": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", + "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.5", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "packages/hydrogen-react/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "packages/hydrogen-react/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "packages/hydrogen-react/node_modules/eslint-plugin-hydrogen": { + "version": "0.12.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.26.0", + "@typescript-eslint/experimental-utils": "^5.26.0", + "@typescript-eslint/parser": "^5.26.0", + "@typescript-eslint/types": "^5.20.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-jest": "^26.2.2", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-react": "^7.30.0", + "eslint-plugin-react-hooks": "^4.5.0", + "prettier": "^2.6.2" + }, + "peerDependencies": { + "eslint": ">=8.0.0" + } + }, + "packages/hydrogen-react/node_modules/eslint-plugin-hydrogen/node_modules/eslint-plugin-jest": { + "version": "26.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "packages/hydrogen-react/node_modules/eslint-plugin-jest": { + "version": "27.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz", + "integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "packages/hydrogen-react/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/hydrogen-react/node_modules/happy-dom": { + "version": "8.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "css.escape": "^1.5.1", + "he": "^1.2.0", + "node-fetch": "^2.x.x", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0" + } + }, + "packages/hydrogen-react/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/hydrogen-react/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "packages/hydrogen-react/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/hydrogen-react/node_modules/rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "fsevents": "~2.3.2" + } + }, + "packages/hydrogen-react/node_modules/type-fest": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", + "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/hydrogen-react/node_modules/vite": { + "version": "5.1.0-beta.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.0-beta.6.tgz", + "integrity": "sha512-Tnham+O97w9GAQfeYyh1wZF2iePQdr/MgU+8k23O8aa+DtUbAPTmg09CsFgIi4eMta2utRa0pOjSqtYIMcUKbQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.33", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "packages/hydrogen-react/node_modules/webidl-conversions": { + "version": "7.0.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "packages/hydrogen/node_modules/type-fest": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", + "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/mini-oxygen": { + "name": "@shopify/mini-oxygen", + "version": "2.2.5", + "license": "MIT", + "dependencies": { + "@miniflare/cache": "^2.14.2", + "@miniflare/core": "^2.14.2", + "@miniflare/queues": "^2.14.2", + "@miniflare/runner-vm": "^2.14.2", + "@miniflare/shared": "^2.14.2", + "@miniflare/storage-memory": "^2.14.2", + "@miniflare/web-sockets": "^2.14.2", + "body-parser": "1.20.2", + "connect": "^3.7.0", + "get-port": "^7.0.0", + "mime": "^3.0.0", + "source-map-support": "^0.5.21" + }, + "devDependencies": { + "@types/body-parser": "1.19.3", + "@types/connect": "^3.4.35", + "@types/eventsource": "^1.1.10", + "@types/fs-extra": "^11.0.1", + "@types/mime": "^3.0.1", + "@types/node": "^18.7.0", + "@types/source-map-support": "^0.5.6", + "@types/ws": "^8.5.3", + "eventsource": "^2.0.2", + "fs-extra": "^11.1.0", + "vitest": "^1.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "packages/mini-oxygen/node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "packages/mini-oxygen/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "packages/mini-oxygen/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "packages/mini-oxygen/node_modules/get-port": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz", + "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==", + "engines": { + "node": ">=16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/mini-oxygen/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "packages/mini-oxygen/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "packages/remix-oxygen": { + "name": "@shopify/remix-oxygen", + "version": "2.0.3", + "license": "MIT", + "devDependencies": { + "@remix-run/server-runtime": "^2.6.0", + "@shopify/oxygen-workers-types": "^4.0.0" + }, + "peerDependencies": { + "@remix-run/server-runtime": "^2.1.0", + "@shopify/oxygen-workers-types": "^3.17.3 || ^4.0.0" + } + }, + "templates/demo-store": { + "version": "2.1.6", + "dependencies": { + "@headlessui/react": "^1.7.2", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", + "@shopify/cli": "3.52.0", + "@shopify/cli-hydrogen": "^7.0.0", + "@shopify/hydrogen": "~2024.1.0", + "@shopify/remix-oxygen": "^2.0.3", + "clsx": "^1.2.1", + "cross-env": "^7.0.3", + "graphql": "^16.6.0", + "graphql-tag": "^2.12.6", + "isbot": "^3.6.5", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-intersection-observer": "^9.4.1", + "react-use": "^17.4.0", + "schema-dts": "^1.1.0", + "tiny-invariant": "^1.2.0", + "typographic-base": "^1.0.4" + }, + "devDependencies": { + "@playwright/test": "^1.40.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", + "@shopify/eslint-plugin": "^42.0.1", + "@shopify/oxygen-workers-types": "^4.0.0", + "@shopify/prettier-config": "^1.1.2", + "@tailwindcss/forms": "^0.5.3", + "@tailwindcss/typography": "^0.5.9", + "@total-typescript/ts-reset": "^0.4.2", + "@types/eslint": "^8.4.10", + "@types/react": "^18.2.22", + "@types/react-dom": "^18.2.7", + "cross-env": "^7.0.3", + "eslint": "^8.20.0", + "eslint-plugin-hydrogen": "0.12.2", + "postcss": "^8.4.21", + "postcss-import": "^15.1.0", + "postcss-preset-env": "^8.2.0", + "prettier": "^2.8.4", + "rimraf": "^3.0.2", + "tailwindcss": "^3.3.0", + "typescript": "^5.2.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "templates/hello-world": { + "version": "0.0.0", + "dependencies": { + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", + "@shopify/cli": "3.52.0", + "@shopify/cli-hydrogen": "^7.0.0", + "@shopify/hydrogen": "~2024.1.0", + "@shopify/remix-oxygen": "^2.0.3", + "@total-typescript/ts-reset": "^0.4.2", + "graphql": "^16.6.0", + "graphql-tag": "^2.12.6", + "isbot": "^3.6.6", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@remix-run/dev": "^2.6.0", + "@shopify/oxygen-workers-types": "^4.0.0", + "@shopify/prettier-config": "^1.1.2", + "@types/eslint": "^8.4.10", + "@types/react": "^18.2.22", + "@types/react-dom": "^18.2.7", + "eslint": "^8.20.0", + "eslint-plugin-hydrogen": "0.12.2", + "prettier": "^2.8.4", + "typescript": "^5.2.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "templates/skeleton": { + "version": "1.0.2", + "dependencies": { + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", + "@shopify/cli": "3.52.0", + "@shopify/cli-hydrogen": "^7.0.0", + "@shopify/hydrogen": "~2024.1.0", + "@shopify/remix-oxygen": "^2.0.3", + "graphql": "^16.6.0", + "graphql-tag": "^2.12.6", + "isbot": "^3.6.6", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", + "@shopify/oxygen-workers-types": "^4.0.0", + "@shopify/prettier-config": "^1.1.2", + "@total-typescript/ts-reset": "^0.4.2", + "@types/eslint": "^8.4.10", + "@types/react": "^18.2.22", + "@types/react-dom": "^18.2.7", + "eslint": "^8.20.0", + "eslint-plugin-hydrogen": "0.12.2", + "prettier": "^2.8.4", + "typescript": "^5.2.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "templates/vite-hello-world": { + "version": "0.0.0", + "dependencies": { + "@remix-run/node": "^2.5.1", + "@remix-run/react": "^2.5.1", + "@remix-run/serve": "^2.5.1", + "@remix-run/server-runtime": "^2.5.1", + "@shopify/cli": "3.52.0", + "@shopify/cli-hydrogen": "^7.0.0", + "@shopify/hydrogen": "~2024.1.0", + "@shopify/remix-oxygen": "^2.0.3", + "@total-typescript/ts-reset": "^0.4.2", + "graphql": "^16.6.0", + "graphql-tag": "^2.12.6", + "isbot": "^3.6.6", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@remix-run/dev": "^2.5.1", + "@shopify/oxygen-workers-types": "^4.0.0", + "@shopify/prettier-config": "^1.1.2", + "@types/eslint": "^8.4.10", + "@types/react": "^18.2.22", + "@types/react-dom": "^18.2.7", + "eslint": "^8.20.0", + "eslint-plugin-hydrogen": "0.12.2", + "prettier": "^2.8.4", + "typescript": "^5.2.2", + "vite": "^5.1.0-beta.6" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "templates/vite-hello-world/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "packages/hydrogen-react/node_modules/happy-dom": { - "version": "8.7.2", + "templates/vite-hello-world/node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "templates/vite-hello-world/node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "templates/vite-hello-world/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "templates/vite-hello-world/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "templates/vite-hello-world/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "css.escape": "^1.5.1", - "he": "^1.2.0", - "node-fetch": "^2.x.x", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "packages/hydrogen-react/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "templates/vite-hello-world/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "optional": true, + "os": [ + "linux" + ] }, - "packages/hydrogen-react/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "templates/vite-hello-world/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "linux" + ] }, - "packages/hydrogen-react/node_modules/rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "templates/vite-hello-world/node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "glob": "^9.2.0" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/hydrogen-react/node_modules/type-fest": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", - "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "optional": true, + "os": [ + "linux" + ] }, - "packages/hydrogen-react/node_modules/webidl-conversions": { - "version": "7.0.0", + "templates/vite-hello-world/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } + "optional": true, + "os": [ + "linux" + ] }, - "packages/hydrogen/node_modules/type-fest": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", - "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "templates/vite-hello-world/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "packages/mini-oxygen": { - "name": "@shopify/mini-oxygen", - "version": "2.2.5", - "license": "MIT", - "dependencies": { - "@miniflare/cache": "^2.14.2", - "@miniflare/core": "^2.14.2", - "@miniflare/queues": "^2.14.2", - "@miniflare/runner-vm": "^2.14.2", - "@miniflare/shared": "^2.14.2", - "@miniflare/storage-memory": "^2.14.2", - "@miniflare/web-sockets": "^2.14.2", - "body-parser": "1.20.2", - "connect": "^3.7.0", - "get-port": "^7.0.0", - "mime": "^3.0.0", - "source-map-support": "^0.5.21" - }, - "devDependencies": { - "@types/body-parser": "1.19.3", - "@types/connect": "^3.4.35", - "@types/eventsource": "^1.1.10", - "@types/fs-extra": "^11.0.1", - "@types/mime": "^3.0.1", - "@types/node": "^18.7.0", - "@types/source-map-support": "^0.5.6", - "@types/ws": "^8.5.3", - "eventsource": "^2.0.2", - "fs-extra": "^11.1.0", - "vitest": "^1.0.4" - }, - "engines": { - "node": ">=18.0.0" - } + "templates/vite-hello-world/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] }, - "packages/mini-oxygen/node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } + "templates/vite-hello-world/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] }, - "packages/mini-oxygen/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } + "templates/vite-hello-world/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] }, - "packages/mini-oxygen/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "templates/vite-hello-world/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=14.14" - } - }, - "packages/mini-oxygen/node_modules/get-port": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz", - "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==", - "engines": { - "node": ">=16" + "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/mini-oxygen/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "packages/mini-oxygen/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "templates/vite-hello-world/node_modules/rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": ">= 0.8" - } - }, - "packages/remix-oxygen": { - "name": "@shopify/remix-oxygen", - "version": "2.0.3", - "license": "MIT", - "devDependencies": { - "@remix-run/server-runtime": "^2.5.1", - "@shopify/oxygen-workers-types": "^4.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, - "peerDependencies": { - "@remix-run/server-runtime": "^2.1.0", - "@shopify/oxygen-workers-types": "^3.17.3 || ^4.0.0" + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "fsevents": "~2.3.2" } }, - "templates/demo-store": { - "version": "2.1.6", + "templates/vite-hello-world/node_modules/vite": { + "version": "5.1.0-beta.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.0-beta.6.tgz", + "integrity": "sha512-Tnham+O97w9GAQfeYyh1wZF2iePQdr/MgU+8k23O8aa+DtUbAPTmg09CsFgIi4eMta2utRa0pOjSqtYIMcUKbQ==", + "dev": true, "dependencies": { - "@headlessui/react": "^1.7.2", - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", - "@shopify/cli": "3.52.0", - "@shopify/cli-hydrogen": "^7.0.0", - "@shopify/hydrogen": "~2024.1.0", - "@shopify/remix-oxygen": "^2.0.3", - "clsx": "^1.2.1", - "cross-env": "^7.0.3", - "graphql": "^16.6.0", - "graphql-tag": "^2.12.6", - "isbot": "^3.6.5", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-intersection-observer": "^9.4.1", - "react-use": "^17.4.0", - "schema-dts": "^1.1.0", - "tiny-invariant": "^1.2.0", - "typographic-base": "^1.0.4" + "esbuild": "^0.19.3", + "postcss": "^8.4.33", + "rollup": "^4.2.0" }, - "devDependencies": { - "@playwright/test": "^1.40.1", - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", - "@shopify/eslint-plugin": "^42.0.1", - "@shopify/oxygen-workers-types": "^4.0.0", - "@shopify/prettier-config": "^1.1.2", - "@tailwindcss/forms": "^0.5.3", - "@tailwindcss/typography": "^0.5.9", - "@total-typescript/ts-reset": "^0.4.2", - "@types/eslint": "^8.4.10", - "@types/react": "^18.2.22", - "@types/react-dom": "^18.2.7", - "cross-env": "^7.0.3", - "eslint": "^8.20.0", - "eslint-plugin-hydrogen": "0.12.2", - "postcss": "^8.4.21", - "postcss-import": "^15.1.0", - "postcss-preset-env": "^8.2.0", - "prettier": "^2.8.4", - "rimraf": "^3.0.2", - "tailwindcss": "^3.3.0", - "typescript": "^5.2.2" + "bin": { + "vite": "bin/vite.js" }, "engines": { - "node": ">=18.0.0" - } - }, - "templates/hello-world": { - "version": "0.0.0", - "dependencies": { - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", - "@shopify/cli": "3.52.0", - "@shopify/cli-hydrogen": "^7.0.0", - "@shopify/hydrogen": "~2024.1.0", - "@shopify/remix-oxygen": "^2.0.3", - "@total-typescript/ts-reset": "^0.4.2", - "graphql": "^16.6.0", - "graphql-tag": "^2.12.6", - "isbot": "^3.6.6", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "node": "^18.0.0 || >=20.0.0" }, - "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@shopify/oxygen-workers-types": "^4.0.0", - "@shopify/prettier-config": "^1.1.2", - "@types/eslint": "^8.4.10", - "@types/react": "^18.2.22", - "@types/react-dom": "^18.2.7", - "eslint": "^8.20.0", - "eslint-plugin-hydrogen": "0.12.2", - "prettier": "^2.8.4", - "typescript": "^5.2.2" + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" }, - "engines": { - "node": ">=18.0.0" - } - }, - "templates/skeleton": { - "version": "1.0.2", - "dependencies": { - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", - "@shopify/cli": "3.52.0", - "@shopify/cli-hydrogen": "^7.0.0", - "@shopify/hydrogen": "~2024.1.0", - "@shopify/remix-oxygen": "^2.0.3", - "graphql": "^16.6.0", - "graphql-tag": "^2.12.6", - "isbot": "^3.6.6", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "optionalDependencies": { + "fsevents": "~2.3.3" }, - "devDependencies": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", - "@shopify/oxygen-workers-types": "^4.0.0", - "@shopify/prettier-config": "^1.1.2", - "@total-typescript/ts-reset": "^0.4.2", - "@types/eslint": "^8.4.10", - "@types/react": "^18.2.22", - "@types/react-dom": "^18.2.7", - "eslint": "^8.20.0", - "eslint-plugin-hydrogen": "0.12.2", - "prettier": "^2.8.4", - "typescript": "^5.2.2" + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } } }, @@ -34348,33 +36574,33 @@ } }, "@cloudflare/workerd-darwin-64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20231218.0.tgz", - "integrity": "sha512-547gOmTIVmRdDy7HNAGJUPELa+fSDm2Y0OCxqAtQOz0GLTDu1vX61xYmsb2rn91+v3xW6eMttEIpbYokKjtfJA==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20240129.0.tgz", + "integrity": "sha512-DfVVB5IsQLVcWPJwV019vY3nEtU88c2Qu2ST5SQxqcGivZ52imagLRK0RHCIP8PK4piSiq90qUC6ybppUsw8eg==", "optional": true }, "@cloudflare/workerd-darwin-arm64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20231218.0.tgz", - "integrity": "sha512-b39qrU1bKolCfmKFDAnX4vXcqzISkEUVE/V8sMBsFzxrIpNAbcUHBZAQPYmS/OHIGB94KjOVokvDi7J6UNurPw==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20240129.0.tgz", + "integrity": "sha512-t0q8ABkmumG1zRM/MZ/vIv/Ysx0vTAXnQAPy/JW5aeQi/tqrypXkO9/NhPc0jbF/g/hIPrWEqpDgEp3CB7Da7Q==", "optional": true }, "@cloudflare/workerd-linux-64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20231218.0.tgz", - "integrity": "sha512-dMUF1wA+0mybm6hHNOCgY/WMNMwomPPs4I7vvYCgwHSkch0Q2Wb7TnxQZSt8d1PK/myibaBwadrlIxpjxmpz3w==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20240129.0.tgz", + "integrity": "sha512-sFV1uobHgDI+6CKBS/ZshQvOvajgwl6BtiYaH4PSFSpvXTmRx+A9bcug+6BnD+V4WgwxTiEO2iR97E1XuwDAVw==", "optional": true }, "@cloudflare/workerd-linux-arm64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20231218.0.tgz", - "integrity": "sha512-2s5uc8IHt0QmWyKxAr1Fy+4b8Xy0b/oUtlPnm5MrKi2gDRlZzR7JvxENPJCpCnYENydS8lzvkMiAFECPBccmyQ==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20240129.0.tgz", + "integrity": "sha512-O7q7htHaFRp8PgTqNJx1/fYc3+LnvAo6kWWB9a14C5OWak6AAZk42PNpKPx+DXTmGvI+8S1+futBGUeJ8NPDXg==", "optional": true }, "@cloudflare/workerd-windows-64": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20231218.0.tgz", - "integrity": "sha512-oN5hz6TXUDB5YKUN5N3QWAv6cYz9JjTZ9g16HVyoegVFEL6/zXU3tV19MBX2IvlE11ab/mRogEv9KXVIrHfKmA==", + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20240129.0.tgz", + "integrity": "sha512-YqGno0XSqqqkDmNoGEX6M8kJlI2lEfWntbTPVtHaZlaXVR9sWfoD7TEno0NKC95cXFz+ioyFLbgbOdnfWwmVAA==", "optional": true }, "@cspotcode/source-map-support": { @@ -35652,15 +37878,108 @@ "tslib": "^2.3.1" } }, - "graphql-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", - "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", - "requires": { - "@graphql-typed-document-node/core": "^3.2.0", - "cross-fetch": "^3.1.5" - } - }, + "graphql-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", + "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", + "requires": { + "@graphql-typed-document-node/core": "^3.2.0", + "cross-fetch": "^3.1.5" + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "urlpattern-polyfill": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz", + "integrity": "sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==" + } + } + }, + "@graphql-tools/relay-operation-optimizer": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-7.0.0.tgz", + "integrity": "sha512-UNlJi5y3JylhVWU4MBpL0Hun4Q7IoJwv9xYtmAz+CgRa066szzY7dcuPfxrA7cIGgG/Q6TVsKsYaiF4OHPs1Fw==", + "requires": { + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "^10.0.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@graphql-tools/schema": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.0.tgz", + "integrity": "sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg==", + "requires": { + "@graphql-tools/merge": "^9.0.0", + "@graphql-tools/utils": "^10.0.0", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@graphql-tools/url-loader": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-8.0.0.tgz", + "integrity": "sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA==", + "requires": { + "@ardatan/sync-fetch": "^0.0.1", + "@graphql-tools/delegate": "^10.0.0", + "@graphql-tools/executor-graphql-ws": "^1.0.0", + "@graphql-tools/executor-http": "^1.0.0", + "@graphql-tools/executor-legacy-ws": "^1.0.0", + "@graphql-tools/utils": "^10.0.0", + "@graphql-tools/wrap": "^10.0.0", + "@types/ws": "^8.0.0", + "@whatwg-node/fetch": "^0.9.0", + "isomorphic-ws": "^5.0.0", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.11", + "ws": "^8.12.0" + }, + "dependencies": { + "@whatwg-node/events": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", + "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==" + }, + "@whatwg-node/fetch": { + "version": "0.9.14", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.14.tgz", + "integrity": "sha512-wurZC82zzZwXRDSW0OS9l141DynaJQh7Yt0FD1xZ8niX7/Et/7RoiLiltbVU1fSF1RR9z6ndEaTUQBAmddTm1w==", + "requires": { + "@whatwg-node/node-fetch": "^0.5.0", + "urlpattern-polyfill": "^9.0.0" + } + }, + "@whatwg-node/node-fetch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.3.tgz", + "integrity": "sha512-toMC8N53RxgprcuU7Fc05KOrJhZV49njJCHPZvXBsjZMQBKrDm9o14Y56CsrUC85cvjQu862MaYOjd8rKgHdDw==", + "requires": { + "@kamilkisiela/fast-url-parser": "^1.1.4", + "@whatwg-node/events": "^0.1.0", + "busboy": "^1.6.0", + "fast-querystring": "^1.1.1", + "tslib": "^2.3.1" + } + }, "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -35670,16 +37989,23 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz", "integrity": "sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==" + }, + "ws": { + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", + "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", + "requires": {} } } }, - "@graphql-tools/relay-operation-optimizer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-7.0.0.tgz", - "integrity": "sha512-UNlJi5y3JylhVWU4MBpL0Hun4Q7IoJwv9xYtmAz+CgRa066szzY7dcuPfxrA7cIGgG/Q6TVsKsYaiF4OHPs1Fw==", + "@graphql-tools/utils": { + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.0.13.tgz", + "integrity": "sha512-fMILwGr5Dm2zefNItjQ6C2rauigklv69LIwppccICuGTnGaOp3DspLt/6Lxj72cbg5d9z60Sr+Egco3CJKLsNg==", "requires": { - "@ardatan/relay-compiler": "12.0.0", - "@graphql-tools/utils": "^10.0.0", + "@graphql-typed-document-node/core": "^3.1.1", + "cross-inspect": "1.0.0", + "dset": "^3.1.2", "tslib": "^2.4.0" }, "dependencies": { @@ -35690,12 +38016,13 @@ } } }, - "@graphql-tools/schema": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.0.tgz", - "integrity": "sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg==", + "@graphql-tools/wrap": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-10.0.1.tgz", + "integrity": "sha512-Cw6hVrKGM2OKBXeuAGltgy4tzuqQE0Nt7t/uAqnuokSXZhMHXJUb124Bnvxc2gPZn5chfJSDafDe4Cp8ZAVJgg==", "requires": { - "@graphql-tools/merge": "^9.0.0", + "@graphql-tools/delegate": "^10.0.3", + "@graphql-tools/schema": "^10.0.0", "@graphql-tools/utils": "^10.0.0", "tslib": "^2.4.0", "value-or-promise": "^1.0.12" @@ -35708,24 +38035,43 @@ } } }, - "@graphql-tools/url-loader": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-8.0.0.tgz", - "integrity": "sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA==", + "@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "requires": {} + }, + "@hattip/adapter-node": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/adapter-node/-/adapter-node-0.0.41.tgz", + "integrity": "sha512-l/UT8aH+frMo4c2IWfbavmbMW0ixSIfYyFB9VvpvDLL9A6Adqfh1d4UEfjg4IBxUlgRko/vTuTeND7jfh2fstg==", "requires": { - "@ardatan/sync-fetch": "^0.0.1", - "@graphql-tools/delegate": "^10.0.0", - "@graphql-tools/executor-graphql-ws": "^1.0.0", - "@graphql-tools/executor-http": "^1.0.0", - "@graphql-tools/executor-legacy-ws": "^1.0.0", - "@graphql-tools/utils": "^10.0.0", - "@graphql-tools/wrap": "^10.0.0", - "@types/ws": "^8.0.0", - "@whatwg-node/fetch": "^0.9.0", - "isomorphic-ws": "^5.0.0", - "tslib": "^2.4.0", - "value-or-promise": "^1.0.11", - "ws": "^8.12.0" + "@hattip/core": "0.0.41", + "@hattip/polyfills": "0.0.41", + "@hattip/walk": "0.0.41" + } + }, + "@hattip/core": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/core/-/core-0.0.41.tgz", + "integrity": "sha512-ZdYSUWg+kciF+su80AEvs2Lfvvf1z021sdljYjL7KpwiqVpuCoWTrfN2pF5iy0uZ7KYgCPPBD1hWtMZ7/Mo0Rg==" + }, + "@hattip/headers": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/headers/-/headers-0.0.41.tgz", + "integrity": "sha512-Fe2ZlzmgQPSH4XQ7zBx2vbQ0c7AxToZiXSn5nm/xZGU3/tbSAeaiYf+fQ2yI1lREDktZwp/ZlU43a5aKB/WiSQ==", + "requires": { + "@hattip/core": "0.0.41" + } + }, + "@hattip/polyfills": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/polyfills/-/polyfills-0.0.41.tgz", + "integrity": "sha512-pyqbaw2iqCEvN91HNS1Q40TYMQG+9YZgD8wXNlVsdWipWNN5KXrfvkKVMlcjbtMR5tg1thXSXkwiPFDmcxmJaw==", + "requires": { + "@hattip/core": "0.0.41", + "@whatwg-node/fetch": "^0.9.15", + "node-fetch-native": "^1.6.1" }, "dependencies": { "@whatwg-node/events": { @@ -35734,18 +38080,18 @@ "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==" }, "@whatwg-node/fetch": { - "version": "0.9.14", - "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.14.tgz", - "integrity": "sha512-wurZC82zzZwXRDSW0OS9l141DynaJQh7Yt0FD1xZ8niX7/Et/7RoiLiltbVU1fSF1RR9z6ndEaTUQBAmddTm1w==", + "version": "0.9.16", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.16.tgz", + "integrity": "sha512-mqasZiUNquRe3ea9+aCAuo81BR6vq5opUKprPilIHTnrg8a21Z1T1OrI+KiMFX8OmwO5HUJe/vro47lpj2JPWQ==", "requires": { - "@whatwg-node/node-fetch": "^0.5.0", - "urlpattern-polyfill": "^9.0.0" + "@whatwg-node/node-fetch": "^0.5.5", + "urlpattern-polyfill": "^10.0.0" } }, "@whatwg-node/node-fetch": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.3.tgz", - "integrity": "sha512-toMC8N53RxgprcuU7Fc05KOrJhZV49njJCHPZvXBsjZMQBKrDm9o14Y56CsrUC85cvjQu862MaYOjd8rKgHdDw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.5.tgz", + "integrity": "sha512-LhE0Oo95+dOrrzrJncrpCaR3VHSjJ5Gvkl5g9WVfkPKSKkxCbMeOsRQ+v9LrU9lRvXBJn8JicXqSufKFEpyRbQ==", "requires": { "@kamilkisiela/fast-url-parser": "^1.1.4", "@whatwg-node/events": "^0.1.0", @@ -35760,61 +38106,22 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "urlpattern-polyfill": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz", - "integrity": "sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==" - }, - "ws": { - "version": "8.15.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", - "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", - "requires": {} - } - } - }, - "@graphql-tools/utils": { - "version": "10.0.13", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.0.13.tgz", - "integrity": "sha512-fMILwGr5Dm2zefNItjQ6C2rauigklv69LIwppccICuGTnGaOp3DspLt/6Lxj72cbg5d9z60Sr+Egco3CJKLsNg==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "cross-inspect": "1.0.0", - "dset": "^3.1.2", - "tslib": "^2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==" } } }, - "@graphql-tools/wrap": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-10.0.1.tgz", - "integrity": "sha512-Cw6hVrKGM2OKBXeuAGltgy4tzuqQE0Nt7t/uAqnuokSXZhMHXJUb124Bnvxc2gPZn5chfJSDafDe4Cp8ZAVJgg==", + "@hattip/walk": { + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/@hattip/walk/-/walk-0.0.41.tgz", + "integrity": "sha512-LEVv20gZNRDZIVMg3OltdEYBKeMg+b2AqrcYqbOXOljQxP2Va7fRifg3PWcNIJ/bvAq4nwif3K9jI2cqn0CIBQ==", "requires": { - "@graphql-tools/delegate": "^10.0.3", - "@graphql-tools/schema": "^10.0.0", - "@graphql-tools/utils": "^10.0.0", - "tslib": "^2.4.0", - "value-or-promise": "^1.0.12" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - } + "@hattip/headers": "0.0.41", + "cac": "^6.7.14", + "mime-types": "^2.1.35" } }, - "@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "requires": {} - }, "@headlessui/react": { "version": "1.7.2", "requires": {} @@ -37373,14 +39680,14 @@ } }, "@remix-run/css-bundle": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-2.5.1.tgz", - "integrity": "sha512-QPeNvgD7fj4NmXB9CuGM5Mp0ZtM43dMeda8Ik3AUoQOMgMWb0d4jK4Cye6eoTGwJOron6XISKh0mq8MorucWEQ==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-2.6.0.tgz", + "integrity": "sha512-c3I1FVsWeBoA3c92Fwa1sufxAlosovfE2V7hwjc9HeQHA3DAHe18RXfgU6my/IvpItkIvaEgQPuoWEA6Dh8VDQ==" }, "@remix-run/dev": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-2.5.1.tgz", - "integrity": "sha512-IrYhWANubH+WM62Wz55n8NWT5kBqfbyytXDFlP0VoZLrr1IpJf2GtaT4IA+CODMaNoeXeMACOD5Tw5/Y2bO5lA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-2.6.0.tgz", + "integrity": "sha512-wf5DoKxBwz3/84FNyFM6NKvQIOEv+Ukwj9DjXrDs6YLI6oSqw2XsJCxWN4lAbOxXuK37pBt1WAE8LzEMuyowsw==", "dev": true, "requires": { "@babel/core": "^7.21.8", @@ -37393,9 +39700,9 @@ "@babel/types": "^7.22.5", "@mdx-js/mdx": "^2.3.0", "@npmcli/package-json": "^4.0.1", - "@remix-run/node": "2.5.1", - "@remix-run/router": "1.14.2", - "@remix-run/server-runtime": "2.5.1", + "@remix-run/node": "2.6.0", + "@remix-run/router": "1.15.0", + "@remix-run/server-runtime": "2.6.0", "@types/mdx": "^2.0.5", "@vanilla-extract/integration": "^6.2.0", "arg": "^5.0.1", @@ -37534,9 +39841,9 @@ } }, "@remix-run/eslint-config": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-2.5.1.tgz", - "integrity": "sha512-PpLj0QSd2NZ12KdTA2QYPd/FK3Szu9Np7kTmx26VxDZJTzQYSgGb5i2O9uby+j2sD68zR/+EAYaIcOlq66ekJw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-2.6.0.tgz", + "integrity": "sha512-WIYyCl8qHNDyZy05ggzl/x3wbnLtmHWOaeSqvtshYbvBsKpyLT0xVQNWyj0XEzk6hWWk+93b0yQ5ihumjM4Y1Q==", "dev": true, "requires": { "@babel/core": "^7.21.8", @@ -37558,19 +39865,19 @@ } }, "@remix-run/express": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-2.5.1.tgz", - "integrity": "sha512-ISaf2hzHxDTS1hNsOovRoSfIQC29m4ogzXvBC6xp2BuJj0K8R0yQ4RFD4+qUFEUnS2n6MyWyjFQRhOC6PhQhRw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-2.6.0.tgz", + "integrity": "sha512-sAb0eoMwqP4yhDCnT5H6Db0svfzBuRbuPuPSbQCtuLRWkEGmIhWN7vKA0IqaxsUA09qKwQQiKQdupra55KfCyA==", "requires": { - "@remix-run/node": "2.5.1" + "@remix-run/node": "2.6.0" } }, "@remix-run/node": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.5.1.tgz", - "integrity": "sha512-UI442xzHAiokmsfrYOabMQB024+IizmRhZBGcNa42QjJWsNqogy1bNwYhzEpB6oQEB1wF3vwOKK1AD1/iYA/9A==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.6.0.tgz", + "integrity": "sha512-bWemy3g258Kdqi+4OxIEZ7QS64T96jNK6a7NdlPXGJZqeLpxM5NmlCl/slSdx52oTi9r5Xoz1Tm4uR37nD1/Xw==", "requires": { - "@remix-run/server-runtime": "2.5.1", + "@remix-run/server-runtime": "2.6.0", "@remix-run/web-fetch": "^4.4.2", "@remix-run/web-file": "^3.1.0", "@remix-run/web-stream": "^1.1.0", @@ -37588,28 +39895,28 @@ } }, "@remix-run/react": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.5.1.tgz", - "integrity": "sha512-MNXHLj4Iu9Iyi+3uY61JZJ1Rtx2nM/z11j9AtwQdEADkh1/t9GruhtT/8VLplToOl0qWZKItboWScKf6uRQsrw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.6.0.tgz", + "integrity": "sha512-m/Ph6bryny7wrmrQyXQMvIiW+cBLrU/MepcLGFPvTVVwvfeiGBgXRiYZJ6yPNsfrmHFaS83d+Ja/Mx4N4zUWcg==", "requires": { - "@remix-run/router": "1.14.2", - "@remix-run/server-runtime": "2.5.1", - "react-router": "6.21.3", - "react-router-dom": "6.21.3" + "@remix-run/router": "1.15.0", + "@remix-run/server-runtime": "2.6.0", + "react-router": "6.22.0", + "react-router-dom": "6.22.0" } }, "@remix-run/router": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz", - "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==" + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.0.tgz", + "integrity": "sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==" }, "@remix-run/serve": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/serve/-/serve-2.5.1.tgz", - "integrity": "sha512-r1IWfirwkLrxADd8uFUIpLR1wMU8VeRI4ED4SpbhrKwqODLrYtv5irzjei+r/w0y0Oob8DMHnYxg03UY4T7ejg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/serve/-/serve-2.6.0.tgz", + "integrity": "sha512-OIvGWaruFLCMLpemovitE8WnxRD/4TBPDTsgC/pSxcjDfuXv3nZk0nhAcmfklPSnxBCCct50cbtEN1xcrPqeyw==", "requires": { - "@remix-run/express": "2.5.1", - "@remix-run/node": "2.5.1", + "@remix-run/express": "2.6.0", + "@remix-run/node": "2.6.0", "chokidar": "^3.5.3", "compression": "^1.7.4", "express": "^4.17.1", @@ -37619,11 +39926,11 @@ } }, "@remix-run/server-runtime": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.5.1.tgz", - "integrity": "sha512-bP31jrVbYTJ2eP5sxZfDgT1YyXzDlzsfMxGYVzpaoLCYDJAekq1QpHLLXKGOXhmyb46O9rdhlQKfwD6WpAxr3A==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.6.0.tgz", + "integrity": "sha512-qFXDl4pK55njBLuvyRn5AkI/hu8fEU3t1XFKv0Syivx0nmUVpWMW25Uzi1pkX/chF1VIxCVrZ8KuQ1rcrKj+DQ==", "requires": { - "@remix-run/router": "1.14.2", + "@remix-run/router": "1.15.0", "@types/cookie": "^0.6.0", "@web3-storage/multipart-parser": "^1.0.0", "cookie": "^0.6.0", @@ -37691,6 +39998,25 @@ "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==" }, + "@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@rollup/rollup-android-arm-eabi": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", @@ -37818,23 +40144,30 @@ "requires": { "@ast-grep/napi": "0.11.0", "@graphql-codegen/cli": "5.0.1", + "@hattip/adapter-node": "^0.0.41", "@oclif/core": "2.11.7", "@parcel/watcher": "^2.3.0", - "@remix-run/dev": "^2.5.1", + "@remix-run/dev": "2.6.0", + "@rollup/pluginutils": "^5.1.0", "@shopify/cli-kit": "3.52.0", "@shopify/hydrogen-codegen": "^0.2.0", "@shopify/mini-oxygen": "^2.2.5", "@shopify/oxygen-cli": "^4.0.0", + "@types/connect": "^3.4.38", "@types/diff": "^5.0.2", "@types/fs-extra": "^11.0.1", "@types/gunzip-maybe": "^1.4.0", + "@types/http-proxy": "^1.17.14", "@types/prettier": "^2.7.2", "@types/recursive-readdir": "^2.2.1", "@types/stack-trace": "^0.0.30", "@types/tar-fs": "^2.0.1", + "@types/ws": "^8.5.10", "@vitest/coverage-v8": "^1.0.4", "ansi-escapes": "^6.2.0", + "birpc": "^0.2.15", "cli-truncate": "^4.0.0", + "connect": "^3.7.0", "devtools-protocol": "^0.0.1177611", "diff": "^5.1.0", "fast-glob": "^3.2.12", @@ -37843,7 +40176,8 @@ "get-port": "^7.0.0", "graphql-config": "5.0.3", "gunzip-maybe": "^1.4.2", - "miniflare": "3.20231218.2", + "http-proxy": "^1.18.1", + "miniflare": "3.20240129.0", "prettier": "^2.8.4", "semver": "^7.5.3", "source-map": "^0.7.4", @@ -37853,8 +40187,9 @@ "ts-morph": "20.0.0", "type-fest": "^4.5.0", "use-resize-observer": "^9.1.0", + "vite": "5.1.0-beta.6", "vitest": "^1.0.4", - "ws": "^8.13.0" + "ws": "^8.16.0" }, "dependencies": { "@bugsnag/js": { @@ -37866,6 +40201,258 @@ "@bugsnag/node": "^7.22.3" } }, + "@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "dev": true, + "optional": true + }, "@shopify/oxygen-cli": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@shopify/oxygen-cli/-/oxygen-cli-4.0.0.tgz", @@ -37914,6 +40501,37 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" }, + "esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, "fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -37933,6 +40551,29 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" }, + "rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, "slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", @@ -37966,10 +40607,22 @@ "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", "dev": true }, + "vite": { + "version": "5.1.0-beta.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.0-beta.6.tgz", + "integrity": "sha512-Tnham+O97w9GAQfeYyh1wZF2iePQdr/MgU+8k23O8aa+DtUbAPTmg09CsFgIi4eMta2utRa0pOjSqtYIMcUKbQ==", + "dev": true, + "requires": { + "esbuild": "^0.19.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.33", + "rollup": "^4.2.0" + } + }, "ws": { - "version": "8.15.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", - "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "requires": {} } } @@ -38259,8 +40912,8 @@ "@shopify/hydrogen": { "version": "file:packages/hydrogen", "requires": { - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/generate-docs": "0.11.1", "@shopify/hydrogen-codegen": "*", "@shopify/hydrogen-react": "2024.1.0", @@ -38339,11 +40992,263 @@ "ts-expect": "^1.3.0", "type-fest": "^4.5.0", "typescript": "^5.2.2", - "vite": "^5.0.12", + "vite": "5.1.0-beta.6", "vitest": "^1.0.4", "worktop": "^0.7.3" }, "dependencies": { + "@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "dev": true, + "optional": true + }, "@vitejs/plugin-react": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", @@ -38366,6 +41271,37 @@ "balanced-match": "^1.0.0" } }, + "esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, "eslint-plugin-hydrogen": { "version": "0.12.3", "dev": true, @@ -38450,11 +41386,46 @@ "glob": "^9.2.0" } }, + "rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, "type-fest": { "version": "4.8.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==" }, + "vite": { + "version": "5.1.0-beta.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.0-beta.6.tgz", + "integrity": "sha512-Tnham+O97w9GAQfeYyh1wZF2iePQdr/MgU+8k23O8aa+DtUbAPTmg09CsFgIi4eMta2utRa0pOjSqtYIMcUKbQ==", + "dev": true, + "requires": { + "esbuild": "^0.19.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.33", + "rollup": "^4.2.0" + } + }, "webidl-conversions": { "version": "7.0.0", "dev": true @@ -38573,7 +41544,7 @@ "@shopify/remix-oxygen": { "version": "file:packages/remix-oxygen", "requires": { - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/server-runtime": "^2.6.0", "@shopify/oxygen-workers-types": "^4.0.0" } }, @@ -38944,7 +41915,9 @@ } }, "@types/connect": { - "version": "3.4.35", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "requires": { "@types/node": "*" @@ -39059,6 +42032,15 @@ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==" }, + "@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/is-ci": { "version": "3.0.0", "dev": true, @@ -39358,7 +42340,9 @@ "version": "2.0.6" }, "@types/ws": { - "version": "8.5.4", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "requires": { "@types/node": "*" } @@ -40447,6 +43431,11 @@ "binary-extensions": { "version": "2.2.0" }, + "birpc": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.15.tgz", + "integrity": "sha512-LuZgWLW6DB1zenkfJuF4/kfSZdazOR2xaMSzeqgvfbNIwECwV1AJso9wpNje79uaRU86Obbujv4qtDnwoOLQww==" + }, "bl": { "version": "4.1.0", "requires": { @@ -40658,8 +43647,7 @@ "version": "3.1.2" }, "cac": { - "version": "6.7.14", - "dev": true + "version": "6.7.14" }, "cacache": { "version": "17.1.4", @@ -41799,10 +44787,10 @@ "requires": { "@headlessui/react": "^1.7.2", "@playwright/test": "^1.40.1", - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/eslint-plugin": "^42.0.1", @@ -41895,12 +44883,12 @@ "docs-preview": { "version": "file:docs/preview", "requires": { - "@remix-run/css-bundle": "^2.5.1", - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", - "@remix-run/node": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/serve": "^2.5.1", + "@remix-run/css-bundle": "^2.6.0", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", + "@remix-run/node": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/serve": "^2.6.0", "@types/he": "^1.2.1", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", @@ -42958,6 +45946,11 @@ "event-target-shim": { "version": "5.0.1" }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -42974,13 +45967,13 @@ "example-hydrogen-express": { "version": "file:examples/express", "requires": { - "@remix-run/css-bundle": "^2.5.1", - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", - "@remix-run/express": "^2.5.1", - "@remix-run/node": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/css-bundle": "^2.6.0", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", + "@remix-run/express": "^2.6.0", + "@remix-run/node": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "2024.1.0", @@ -43009,9 +46002,9 @@ "example-multipass": { "version": "file:examples/multipass", "requires": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", - "@remix-run/react": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", + "@remix-run/react": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -43051,9 +46044,9 @@ "version": "file:examples/partytown", "requires": { "@builder.io/partytown": "^0.8.1", - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", - "@remix-run/react": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", + "@remix-run/react": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -43079,9 +46072,9 @@ "example-subscriptions": { "version": "file:examples/subscriptions", "requires": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", - "@remix-run/react": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", + "@remix-run/react": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -43465,6 +46458,11 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, + "follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + }, "for-each": { "version": "0.3.3", "requires": { @@ -44126,9 +47124,9 @@ "hello-world": { "version": "file:templates/hello-world", "requires": { - "@remix-run/dev": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -44242,6 +47240,16 @@ "toidentifier": "1.0.1" } }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, "http-proxy-agent": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", @@ -46481,9 +49489,9 @@ "dev": true }, "miniflare": { - "version": "3.20231218.2", - "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20231218.2.tgz", - "integrity": "sha512-rCUI2OjqCf3fZVdmSX4DOZQRzSDvHp/oL2vjER/cvJEdWSYiqRxDp2oO7A7JcEo1/Y+kPa5VQ1pFfdZpjBcpFg==", + "version": "3.20240129.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20240129.0.tgz", + "integrity": "sha512-27pDhlP2G/4gXmvnSt6LjMQ8KrkmbJElIQmn+BLjdiyIx+zXY4E8MSPJmi9flgf0dn3wtjuHO2ASenuopqqxrw==", "requires": { "@cspotcode/source-map-support": "0.8.1", "acorn": "^8.8.0", @@ -46492,8 +49500,8 @@ "exit-hook": "^2.2.1", "glob-to-regexp": "^0.4.1", "stoppable": "^1.1.0", - "undici": "^5.22.1", - "workerd": "1.20231218.0", + "undici": "^5.28.2", + "workerd": "1.20240129.0", "ws": "^8.11.0", "youch": "^3.2.2", "zod": "^3.20.6" @@ -46778,6 +49786,11 @@ "whatwg-url": "^5.0.0" } }, + "node-fetch-native": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.1.tgz", + "integrity": "sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==" + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -49562,9 +52575,9 @@ "dev": true }, "postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "dev": true, "requires": { "nanoid": "^3.3.7", @@ -50192,20 +53205,20 @@ "dev": true }, "react-router": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.3.tgz", - "integrity": "sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.0.tgz", + "integrity": "sha512-q2yemJeg6gw/YixRlRnVx6IRJWZD6fonnfZhN1JIOhV2iJCPeRNSH3V1ISwHf+JWcESzLC3BOLD1T07tmO5dmg==", "requires": { - "@remix-run/router": "1.14.2" + "@remix-run/router": "1.15.0" } }, "react-router-dom": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.3.tgz", - "integrity": "sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.0.tgz", + "integrity": "sha512-z2w+M4tH5wlcLmH3BMMOMdrtrJ9T3oJJNsAlBJbwk+8Syxd5WFJ7J5dxMEW0/GEXD1BBis4uXRrNIz3mORr0ag==", "requires": { - "@remix-run/router": "1.14.2", - "react-router": "6.21.3" + "@remix-run/router": "1.15.0", + "react-router": "6.22.0" } }, "react-syntax-highlighter": { @@ -50710,6 +53723,11 @@ "version": "1.2.0", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "resize-observer-polyfill": { "version": "1.5.1" }, @@ -51127,10 +54145,10 @@ "skeleton": { "version": "file:templates/skeleton", "requires": { - "@remix-run/dev": "^2.5.1", - "@remix-run/eslint-config": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/eslint-config": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -53062,6 +56080,356 @@ } } }, + "vite-hello-world": { + "version": "file:templates/vite-hello-world", + "requires": { + "@remix-run/dev": "^2.5.1", + "@remix-run/node": "^2.5.1", + "@remix-run/react": "^2.5.1", + "@remix-run/serve": "^2.5.1", + "@remix-run/server-runtime": "^2.5.1", + "@shopify/cli": "3.52.0", + "@shopify/cli-hydrogen": "^7.0.0", + "@shopify/hydrogen": "~2024.1.0", + "@shopify/oxygen-workers-types": "^4.0.0", + "@shopify/prettier-config": "^1.1.2", + "@shopify/remix-oxygen": "^2.0.3", + "@total-typescript/ts-reset": "^0.4.2", + "@types/eslint": "^8.4.10", + "@types/react": "^18.2.22", + "@types/react-dom": "^18.2.7", + "eslint": "^8.20.0", + "eslint-plugin-hydrogen": "0.12.2", + "graphql": "^16.6.0", + "graphql-tag": "^2.12.6", + "isbot": "^3.6.6", + "prettier": "^2.8.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "typescript": "^5.2.2", + "vite": "^5.1.0-beta.6" + }, + "dependencies": { + "@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, + "vite": { + "version": "5.1.0-beta.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.0-beta.6.tgz", + "integrity": "sha512-Tnham+O97w9GAQfeYyh1wZF2iePQdr/MgU+8k23O8aa+DtUbAPTmg09CsFgIi4eMta2utRa0pOjSqtYIMcUKbQ==", + "dev": true, + "requires": { + "esbuild": "^0.19.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.33", + "rollup": "^4.2.0" + } + } + } + }, "vite-node": { "version": "0.28.5", "dev": true, @@ -53336,15 +56704,15 @@ "version": "1.0.0" }, "workerd": { - "version": "1.20231218.0", - "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20231218.0.tgz", - "integrity": "sha512-AGIsDvqCrcwhoA9kb1hxOhVAe53/xJeaGZxL4FbYI9FvO17DZwrnqGq+6eqItJ6Cfw1ZLmf3BM+QdMWaL2bFWQ==", - "requires": { - "@cloudflare/workerd-darwin-64": "1.20231218.0", - "@cloudflare/workerd-darwin-arm64": "1.20231218.0", - "@cloudflare/workerd-linux-64": "1.20231218.0", - "@cloudflare/workerd-linux-arm64": "1.20231218.0", - "@cloudflare/workerd-windows-64": "1.20231218.0" + "version": "1.20240129.0", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20240129.0.tgz", + "integrity": "sha512-t4pnsmjjk/u+GdVDgH2M1AFmJaBUABshYK/vT/HNrAXsHSwN6VR8Yqw0JQ845OokO34VLkuUtYQYyxHHKpdtsw==", + "requires": { + "@cloudflare/workerd-darwin-64": "1.20240129.0", + "@cloudflare/workerd-darwin-arm64": "1.20240129.0", + "@cloudflare/workerd-linux-64": "1.20240129.0", + "@cloudflare/workerd-linux-arm64": "1.20240129.0", + "@cloudflare/workerd-windows-64": "1.20240129.0" } }, "worktop": { diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index 139b59cfd0..6133853946 100644 --- a/packages/cli/oclif.manifest.json +++ b/packages/cli/oclif.manifest.json @@ -230,6 +230,88 @@ }, "args": {} }, + "hydrogen:dev-vite": { + "id": "hydrogen:dev-vite", + "description": "Runs Hydrogen storefront in an Oxygen worker for development.", + "strict": true, + "pluginName": "@shopify/cli-hydrogen", + "pluginAlias": "@shopify/cli-hydrogen", + "pluginType": "core", + "aliases": [], + "flags": { + "path": { + "name": "path", + "type": "option", + "description": "The path to the directory of the Hydrogen storefront. The default is the current directory.", + "multiple": false + }, + "port": { + "name": "port", + "type": "option", + "description": "Port to run the server on.", + "multiple": false, + "default": 3000 + }, + "codegen": { + "name": "codegen", + "type": "boolean", + "description": "Generate types for the Storefront API queries found in your project. It updates the types on file save.", + "required": false, + "allowNo": false + }, + "codegen-config-path": { + "name": "codegen-config-path", + "type": "option", + "description": "Specify a path to a codegen configuration file. Defaults to `/codegen.ts` if it exists.", + "required": false, + "multiple": false, + "dependsOn": [ + "codegen" + ] + }, + "disable-virtual-routes": { + "name": "disable-virtual-routes", + "type": "boolean", + "description": "Disable rendering fallback routes when a route file doesn't exist.", + "allowNo": false + }, + "debug": { + "name": "debug", + "type": "boolean", + "description": "Enables inspector connections with a debugger.", + "allowNo": false + }, + "inspector-port": { + "name": "inspector-port", + "type": "option", + "description": "Port where the inspector will be available.", + "multiple": false, + "default": 9229 + }, + "env-branch": { + "name": "env-branch", + "type": "option", + "char": "e", + "description": "Specify an environment's branch name when using remote environment variables.", + "multiple": false + }, + "disable-version-check": { + "name": "disable-version-check", + "type": "boolean", + "description": "Skip the version check when running `hydrogen dev`", + "required": false, + "allowNo": false + }, + "diff": { + "name": "diff", + "type": "boolean", + "description": "Applies the current files on top of Hydrogen's starter template in a temporary directory.", + "required": false, + "allowNo": false + } + }, + "args": {} + }, "hydrogen:dev": { "id": "hydrogen:dev", "description": "Runs Hydrogen storefront in an Oxygen worker for development.", diff --git a/packages/cli/package.json b/packages/cli/package.json index 17cff8a7e4..6371c4b196 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -17,37 +17,46 @@ }, "devDependencies": { "@remix-run/dev": "^2.6.0", + "@rollup/pluginutils": "^5.1.0", + "@types/connect": "^3.4.38", "@types/diff": "^5.0.2", "@types/fs-extra": "^11.0.1", "@types/gunzip-maybe": "^1.4.0", + "@types/http-proxy": "^1.17.14", "@types/prettier": "^2.7.2", "@types/recursive-readdir": "^2.2.1", "@types/stack-trace": "^0.0.30", "@types/tar-fs": "^2.0.1", + "@types/ws": "^8.5.10", "@vitest/coverage-v8": "^1.0.4", "devtools-protocol": "^0.0.1177611", "fast-glob": "^3.2.12", "flame-chart-js": "2.3.2", "get-port": "^7.0.0", "type-fest": "^4.5.0", + "vite": "5.1.0-beta.6", "vitest": "^1.0.4" }, "dependencies": { "@ast-grep/napi": "0.11.0", "@graphql-codegen/cli": "5.0.1", + "@hattip/adapter-node": "^0.0.41", "@oclif/core": "2.11.7", "@shopify/cli-kit": "3.52.0", "@shopify/hydrogen-codegen": "^0.2.0", "@shopify/mini-oxygen": "^2.2.5", "@shopify/oxygen-cli": "^4.0.0", "ansi-escapes": "^6.2.0", + "birpc": "^0.2.15", "cli-truncate": "^4.0.0", + "connect": "^3.7.0", "diff": "^5.1.0", "fs-extra": "^11.1.0", "get-port": "^7.0.0", "graphql-config": "5.0.3", "gunzip-maybe": "^1.4.2", - "miniflare": "3.20231218.2", + "http-proxy": "^1.18.1", + "miniflare": "3.20240129.0", "prettier": "^2.8.4", "semver": "^7.5.3", "source-map": "^0.7.4", @@ -56,13 +65,14 @@ "tempy": "^3.0.0", "ts-morph": "20.0.0", "use-resize-observer": "^9.1.0", - "ws": "^8.13.0" + "ws": "^8.16.0" }, "optionalDependencies": { "@parcel/watcher": "^2.3.0" }, "peerDependencies": { - "@remix-run/dev": "^2.1.0" + "@remix-run/dev": "^2.1.0", + "vite": "5.1.0-beta.6" }, "peerDependenciesMeta": { "@remix-run/dev": { diff --git a/packages/cli/src/commands/hydrogen/dev-vite.ts b/packages/cli/src/commands/hydrogen/dev-vite.ts new file mode 100644 index 0000000000..f1b971be3a --- /dev/null +++ b/packages/cli/src/commands/hydrogen/dev-vite.ts @@ -0,0 +1,311 @@ +import path from 'node:path'; +import fs from 'node:fs/promises'; +import type {ChildProcess} from 'node:child_process'; +import {outputDebug, outputInfo} from '@shopify/cli-kit/node/output'; +import {fileExists} from '@shopify/cli-kit/node/fs'; +import {renderFatalError} from '@shopify/cli-kit/node/ui'; +import colors from '@shopify/cli-kit/node/colors'; +import {copyPublicFiles} from './build.js'; +import { + assertOxygenChecks, + getProjectPaths, + getRemixConfig, + handleRemixImportFail, + type ServerMode, +} from '../../lib/remix-config.js'; +import {createRemixLogger, enhanceH2Logs, muteDevLogs} from '../../lib/log.js'; +import { + commonFlags, + flagsToCamelObject, + overrideFlag, +} from '../../lib/flags.js'; +import Command from '@shopify/cli-kit/node/base-command'; +import {Flags} from '@oclif/core'; +import { + type MiniOxygen, + startMiniOxygen, + buildAssetsUrl, +} from '../../lib/mini-oxygen/index.js'; +import {setupRuntime} from '../../lib/mini-oxygen/vite/server.js'; +import {addVirtualRoutes} from '../../lib/virtual-routes.js'; +import {spawnCodegenProcess} from '../../lib/codegen.js'; +import {getAllEnvironmentVariables} from '../../lib/environment-variables.js'; +import {getConfig} from '../../lib/shopify-config.js'; +import {setupLiveReload} from '../../lib/live-reload.js'; +import {checkRemixVersions} from '../../lib/remix-version-check.js'; +import {getGraphiQLUrl} from '../../lib/graphiql-url.js'; +import {displayDevUpgradeNotice} from './upgrade.js'; +import {findPort} from '../../lib/find-port.js'; +import {prepareDiffDirectory} from '../../lib/template-diff.js'; + +import {createServer as createHattipServer} from '@hattip/adapter-node'; +import httpProxy from 'http-proxy'; +import {createServer} from 'vite'; + +const LOG_REBUILDING = 'šŸ§± Rebuilding...'; +const LOG_REBUILT = 'šŸš€ Rebuilt'; + +export default class DevVite extends Command { + static description = + 'Runs Hydrogen storefront in an Oxygen worker for development.'; + static flags = { + path: commonFlags.path, + port: commonFlags.port, + codegen: overrideFlag(commonFlags.codegen, { + description: + commonFlags.codegen.description! + + ' It updates the types on file save.', + }), + 'codegen-config-path': commonFlags.codegenConfigPath, + // sourcemap: commonFlags.sourcemap, + 'disable-virtual-routes': Flags.boolean({ + description: + "Disable rendering fallback routes when a route file doesn't exist.", + env: 'SHOPIFY_HYDROGEN_FLAG_DISABLE_VIRTUAL_ROUTES', + default: false, + }), + debug: commonFlags.debug, + 'inspector-port': commonFlags.inspectorPort, + ['env-branch']: commonFlags.envBranch, + ['disable-version-check']: Flags.boolean({ + description: 'Skip the version check when running `hydrogen dev`', + default: false, + required: false, + }), + diff: commonFlags.diff, + }; + + async run(): Promise { + const {flags} = await this.parse(DevVite); + let directory = flags.path ? path.resolve(flags.path) : process.cwd(); + + if (flags.diff) { + directory = await prepareDiffDirectory(directory, true); + } + + await runDev({ + ...flagsToCamelObject(flags), + path: directory, + }); + } +} + +type DevOptions = { + port: number; + path?: string; + codegen?: boolean; + codegenConfigPath?: string; + disableVirtualRoutes?: boolean; + disableVersionCheck?: boolean; + envBranch?: string; + debug?: boolean; + sourcemap?: boolean; + inspectorPort: number; +}; + +export async function runDev({ + port: appPort, + path: appPath, + codegen: useCodegen = false, + codegenConfigPath, + disableVirtualRoutes, + envBranch, + debug = false, + sourcemap = true, + disableVersionCheck = false, + inspectorPort, +}: DevOptions) { + if (!process.env.NODE_ENV) process.env.NODE_ENV = 'development'; + + muteDevLogs(); + + const {root, publicPath, buildPathClient, buildPathWorkerFile} = + getProjectPaths(appPath); + + // const copyingFiles = copyPublicFiles(publicPath, buildPathClient); + // const reloadConfig = async () => { + // const config = await getRemixConfig(root); + + // return disableVirtualRoutes + // ? config + // : addVirtualRoutes(config).catch((error) => { + // // Seen this fail when somehow NPM doesn't publish + // // the full 'virtual-routes' directory. + // // E.g. https://unpkg.com/browse/@shopify/cli-hydrogen@0.0.0-next-aa15969-20230703072007/dist/virtual-routes/ + // outputDebug( + // 'Could not add virtual routes: ' + + // (error?.stack ?? error?.message ?? error), + // ); + + // return config; + // }); + // }; + + inspectorPort = debug ? await findPort(inspectorPort) : inspectorPort; + appPort = await findPort(appPort); // findPort is already called for Node sandbox + + const assetsPort = await findPort(appPort + 100); + if (assetsPort) { + // Note: Set this env before loading Remix config! + process.env.HYDROGEN_ASSET_BASE_URL = buildAssetsUrl(assetsPort); + } + + const [{shop, storefront}] = await Promise.all([getConfig(root)]); + + // assertOxygenChecks(remixConfig); + + const fetchRemote = !!shop && !!storefront?.id; + const envPromise = getAllEnvironmentVariables({root, fetchRemote, envBranch}); + + // let isInitialBuild = true; + // let initialBuildDurationMs = 0; + // let initialBuildStartTimeMs = Date.now(); + + // const liveReload = true // TODO: option to disable HMR? + // ? await setupLiveReload(remixConfig.dev?.port ?? 8002) + // : undefined; + + // let miniOxygen: MiniOxygen; + // let codegenProcess: ChildProcess; + // async function safeStartMiniOxygen() { + // if (miniOxygen) return; + + // miniOxygen = await startMiniOxygen({ + // root, + // debug, + // assetsPort, + // inspectorPort, + // port: appPort, + // watch: !liveReload, + // buildPathWorkerFile, + // buildPathClient, + // env: await envPromise, + // }); + + // enhanceH2Logs({host: miniOxygen.listeningAt, ...remixConfig}); + + // miniOxygen.showBanner({ + // appName: storefront ? colors.cyan(storefront?.title) : undefined, + // headlinePrefix: + // initialBuildDurationMs > 0 + // ? `Initial build: ${initialBuildDurationMs}ms\n` + // : '', + // extraLines: [ + // colors.dim( + // `\nView GraphiQL API browser: ${getGraphiQLUrl({ + // host: miniOxygen.listeningAt, + // })}`, + // ), + // colors.dim( + // `\nView server network requests: ${miniOxygen.listeningAt}/subrequest-profiler`, + // ), + // ], + // }); + + // if (useCodegen) { + // codegenProcess = spawnCodegenProcess({ + // ...remixConfig, + // configFilePath: codegenConfigPath, + // }); + // } + + // checkRemixVersions(); + + // if (!disableVersionCheck) { + // displayDevUpgradeNotice({targetPath: appPath}); + // } + // } + + const viteServer = await createServer(); + const publicPort = viteServer.config.server.port ?? 3000; + + process.once('SIGTERM', async () => { + try { + await viteServer.close(); + } finally { + process.exit(); + } + }); + + const standaloneRuntime = await setupRuntime(viteServer, { + env: await envPromise, + }); + + // handle unhandledRejection so that the process won't exit + process.on('unhandledRejection', (err) => { + console.log('Unhandled Rejection: ', err); + }); + + // Get a random port + await viteServer.listen(0); + + const viteUrlString = + viteServer.resolvedUrls!.local[0] ?? viteServer.resolvedUrls!.network[0]!; + const viteUrl = new URL(viteUrlString); + const internalPort = viteUrlString.split(':').pop()?.replace('/', '')!; + viteServer.config.server.port = Number(internalPort); + + const proxyServer = httpProxy.createProxyServer({ + target: viteUrlString, + ws: true, + }); + + const hattipServer = createHattipServer(async (ctx) => { + try { + const resolved = await standaloneRuntime.selectModule( + ctx.request, + viteServer.config.root, + ); + + if (resolved === undefined) { + // NOTE: If Vite uses Universal/Modern middlewares in the future, + // we can avoid using actual HTTP requests. + // It's difficult to convert Node middlewares into them. + // https://github.com/fastly/http-compute-js#notes--known-issues + const newUrl = new URL(ctx.request.url); + newUrl.protocol = viteUrl.protocol; + newUrl.host = viteUrl.host; + try { + return await fetch(new Request(newUrl.href, ctx.request)); + } catch (e) { + console.error('Failed to proxy request to Vite server: ', e); + return new Response(null, {status: 500}); + } + } + + const res = await standaloneRuntime.runModule(resolved, ctx.request, { + viteUrl: viteUrlString, + }); + return res; + } catch (e) { + console.error('Error during evaluation: ', e); + return new Response(null, {status: 500}); + } + }); + + hattipServer.on('upgrade', (req, socket, head) => { + proxyServer.ws(req, socket, head); + }); + + hattipServer.listen(publicPort, 'localhost', () => { + if (viteServer.resolvedUrls) { + if (internalPort) { + viteServer.resolvedUrls.local = viteServer.resolvedUrls.local.map( + (url) => url.replace(internalPort, String(publicPort)), + ); + viteServer.resolvedUrls.network = viteServer.resolvedUrls.network.map( + (url) => url.replace(':' + internalPort, ':' + publicPort), + ); + } + } + viteServer.printUrls(); + viteServer.bindCLIShortcuts({print: true}); + }); + + return { + async close() { + // codegenProcess?.kill(0); + // await Promise.all([closeWatcher(), miniOxygen?.close()]); + }, + }; +} diff --git a/packages/cli/src/commands/hydrogen/preview.ts b/packages/cli/src/commands/hydrogen/preview.ts index 415cea91eb..5d73d9bd91 100644 --- a/packages/cli/src/commands/hydrogen/preview.ts +++ b/packages/cli/src/commands/hydrogen/preview.ts @@ -6,6 +6,8 @@ import {startMiniOxygen} from '../../lib/mini-oxygen/index.js'; import {getAllEnvironmentVariables} from '../../lib/environment-variables.js'; import {getConfig} from '../../lib/shopify-config.js'; import {findPort} from '../../lib/find-port.js'; +import {fileExists} from '@shopify/cli-kit/node/fs'; +import {joinPath} from '@shopify/cli-kit/node/path'; export default class Preview extends Command { static description = @@ -51,7 +53,14 @@ export async function runPreview({ muteDevLogs({workerReload: false}); - const {root, buildPathWorkerFile, buildPathClient} = getProjectPaths(appPath); + const isVite = await fileExists( + joinPath(appPath ?? process.cwd(), 'vite.config.ts'), + ); + const {root, buildPathWorkerFile, buildPathClient} = getProjectPaths( + appPath, + isVite, + ); + const {shop, storefront} = await getConfig(root); const fetchRemote = !!shop && !!storefront?.id; const env = await getAllEnvironmentVariables({root, fetchRemote, envBranch}); diff --git a/packages/cli/src/lib/mini-oxygen/vite/client.ts b/packages/cli/src/lib/mini-oxygen/vite/client.ts new file mode 100644 index 0000000000..3c296b4cc0 --- /dev/null +++ b/packages/cli/src/lib/mini-oxygen/vite/client.ts @@ -0,0 +1,207 @@ +import { + ViteRuntime, + type ViteModuleRunner, + type ViteRuntimeModuleContext, + ssrModuleExportsKey, + ssrImportMetaKey, + ssrImportKey, + ssrExportAllKey, + ssrDynamicImportKey, + type ResolvedResult, + type SSRImportMetadata, + type HMRRuntimeConnection, +} from 'vite/runtime'; +import {createBirpc, type BirpcReturn} from 'birpc'; +import type {ClientFunctions, ServerFunctions} from './common.js'; +import type {Response} from 'miniflare'; +import type {HMRPayload} from 'vite'; +import {makeLegalIdentifier} from '@rollup/pluginutils'; + +declare const __ROOT__: string; +declare const __CODE_LINE_OFFSET__: number; + +let rpc: BirpcReturn; +let onHmrRecieve: ((payload: HMRPayload) => void) | undefined; + +const setupRpc = async () => { + if (rpc) return; + + const resp = (await fetch('http://localhost:9400', { + headers: { + Upgrade: 'websocket', + }, + })) as unknown as Response; + const ws = resp.webSocket; + if (!ws) { + throw new Error('ws failed to connect'); + } + ws.accept(); + + const clientFunctions: ClientFunctions = { + hmrSend(payload) { + onHmrRecieve?.(payload); + }, + }; + rpc = createBirpc(clientFunctions, { + post: (data) => ws.send(data), + on: (data) => ws.addEventListener('message', (e) => data(e.data)), + serialize: (v) => JSON.stringify(v), + deserialize: (v) => JSON.parse(v), + }); +}; + +const hmrConnection: HMRRuntimeConnection = { + isReady() { + return !!rpc; + }, + send(messages: string) { + console.log('send:', messages); + }, + onUpdate(h: any) { + onHmrRecieve = h; + return () => { + onHmrRecieve = undefined; + }; + }, +}; + +type UnsafeEvalModule = { + newAsyncFunction(code: string, name?: string, ...args: string[]): Function; +}; + +class MiniOxygenRunner implements ViteModuleRunner { + unsafeEval: UnsafeEvalModule | undefined; + fetchModuleUrl: string | undefined | null; + private idMap = new Map(); + + async runViteModule( + context: ViteRuntimeModuleContext, + code: string, + id: string, + ): Promise { + if (!this.unsafeEval) throw new Error('unsafeEval module is not set'); + + const escapedId = makeLegalIdentifier(id); + + if (!this.idMap.has(escapedId)) { + this.idMap.set(escapedId, []); + } + const idList = this.idMap.get(escapedId)!; + let number = idList.indexOf(id); + if (number < 0) { + number = idList.push(id) - 1; + } + + delete context[ssrImportMetaKey].filename; + delete context[ssrImportMetaKey].dirname; + + const initModule = this.unsafeEval.newAsyncFunction( + '"use strict";' + '\n'.repeat(__CODE_LINE_OFFSET__) + code, + `${escapedId}_${number}`, + ssrModuleExportsKey, + ssrImportMetaKey, + ssrImportKey, + ssrDynamicImportKey, + ssrExportAllKey, + ); + await initModule( + context[ssrModuleExportsKey], + context[ssrImportMetaKey], + context[ssrImportKey], + context[ssrDynamicImportKey], + context[ssrExportAllKey], + ); + Object.freeze(context[ssrModuleExportsKey]); + } + + runExternalModule(_filepath: string): Promise { + // TODO: support Node.js modules + // https://developers.cloudflare.com/workers/runtime-apis/nodejs/ + // TODO: support `cloudflare:*` modules and `workerd:*` modules + throw new Error('Not supported'); + } + + processImport( + mod: Record, + _fetchResult: ResolvedResult, + _metadata?: SSRImportMetadata | undefined, + ): Record { + return mod; + } + + getGetRealFilenameFromEscapedId(escapedIdWithSuffix: string) { + const match = escapedIdWithSuffix.match(/^(.+)_(\d+)$/); + if (!match) return undefined; + + const escapedId = match[1] ?? ''; + const number = Number(match[2]); + + return this.idMap.get(escapedId)?.[number]; + } +} + +const runner = new MiniOxygenRunner(); +const runtime = new ViteRuntime( + { + root: __ROOT__, + fetchModule: (id, importer) => { + // Do not use WS here because the payload can exceed the limit of WS in workerd + + if (!runner.fetchModuleUrl) throw new Error('fetchModuleUrl is not set'); + + const url = new URL(runner.fetchModuleUrl); + url.searchParams.set('id', id); + if (importer) url.searchParams.set('importer', importer); + + return fetch(url).then((res) => res.json()); + }, + hmr: { + connection: hmrConnection, + }, + }, + runner, +); +// exists because ViteRuntime assigns it +const originalPrepareStackTrace = Error.prepareStackTrace!; +Error.prepareStackTrace = (error, stacks) => { + const wrappedStacks = stacks.map( + (stack) => + new Proxy(stack as any, { + get(target, key, receiver) { + const value = target[key]; + if (value instanceof Function) { + return function (this: any, ...args: any[]) { + const result = value.apply( + this === receiver ? target : this, + args, + ); + if (key === 'getFileName' && typeof result === 'string') { + const realFilename = + runner.getGetRealFilenameFromEscapedId(result); + return realFilename ?? result; + } + return result; + }; + } + return value; + }, + }), + ); + return originalPrepareStackTrace(error, wrappedStacks); +}; + +export default { + async fetch(request: Request, env: any, ctx: any) { + await setupRpc(); + runner.unsafeEval = env.UNSAFE_EVAL; + runner.fetchModuleUrl = request.headers.get('vite-fetch-module-url'); + + const executeUrl = request.headers.get('vite-runtime-execute-url'); + if (!executeUrl) { + throw new Error('executeUrl should not be empty'); + } + + const module = await runtime.executeEntrypoint(executeUrl); + return module.default.fetch(request, env, ctx); + }, +}; diff --git a/packages/cli/src/lib/mini-oxygen/vite/common.ts b/packages/cli/src/lib/mini-oxygen/vite/common.ts new file mode 100644 index 0000000000..b0ff146863 --- /dev/null +++ b/packages/cli/src/lib/mini-oxygen/vite/common.ts @@ -0,0 +1,10 @@ +import type {HMRPayload} from 'vite'; +import type {FetchResult} from 'vite/runtime'; + +export type ClientFunctions = { + hmrSend(payload: HMRPayload): void; +}; + +export type ServerFunctions = { + hmrSend(payload: HMRPayload): void; +}; diff --git a/packages/cli/src/lib/mini-oxygen/vite/server.ts b/packages/cli/src/lib/mini-oxygen/vite/server.ts new file mode 100644 index 0000000000..f3c69727d8 --- /dev/null +++ b/packages/cli/src/lib/mini-oxygen/vite/server.ts @@ -0,0 +1,196 @@ +import {type HMRChannel, type HMRPayload, type ViteDevServer} from 'vite'; +import path from 'node:path'; +import {statSync} from 'node:fs'; +import {readFile} from 'node:fs/promises'; +import {fileURLToPath} from 'node:url'; +import {createBirpc, type BirpcReturn} from 'birpc'; +import {Miniflare, type SharedOptions, Request, Response} from 'miniflare'; +import {WebSocket, WebSocketServer} from 'ws'; +import type {ClientFunctions, ServerFunctions} from './common.js'; + +const clientPath = fileURLToPath(new URL('./client.js', import.meta.url)); + +const AsyncFunction = async function () {}.constructor as typeof Function; +const fnDeclarationLineCount = (() => { + const body = '/*code*/'; + const source = new AsyncFunction('a', 'b', body).toString(); + return source.slice(0, source.indexOf(body)).split('\n').length - 1; +})(); + +export async function setupRuntime( + server: ViteDevServer, + options?: {env?: Record}, +) { + const fetchModulePathname = '/__vite_fetch_module'; + const entryFile = + typeof server.config.build.ssr === 'string' + ? server.config.build.ssr + : 'server.ts'; + + const clientContent = await readFile(clientPath, 'utf-8'); + const clientContentReplaced = clientContent + .replaceAll('__ROOT__', JSON.stringify(server.config.root)) + .replaceAll('__CODE_LINE_OFFSET__', '' + fnDeclarationLineCount); + + const mf = new Miniflare({ + script: clientContentReplaced, + scriptPath: path.join(server.config.root, '_virtual-server-entry.js'), + modules: true, + unsafeEvalBinding: 'UNSAFE_EVAL', + compatibilityFlags: ['streams_enable_constructors'], + compatibilityDate: '2022-10-31', + bindings: {...options?.env}, + // serviceBindings: { + // ASSETS: async (req: Request) => { + // const viteUrlString = + // server.resolvedUrls!.local[0] ?? server.resolvedUrls!.network[0]!; + // const viteUrl = new URL(viteUrlString); + + // const newUrl = new URL(req.url); + // newUrl.protocol = viteUrl.protocol; + // newUrl.host = viteUrl.host; + // try { + // const res = await fetch( + // new globalThis.Request( + // newUrl.href, + // req as unknown as globalThis.Request, + // ), + // ); + // return new Response(res.body ? await res.arrayBuffer() : undefined, { + // headers: Object.fromEntries( + // res.headers as unknown as Iterable<[string, string]>, + // ), + // status: res.status, + // statusText: res.statusText, + // }); + // } catch (e) { + // console.error('Failed to execute ASSETS.fetch: ', e); + // return new Response(null, {status: 500}); + // } + // }, + // }, + }); + + const url = await mf.ready; + + const wss = new WebSocketServer({ + host: 'localhost', + port: 9400, + }); + + const hmrChannel = new WssHmrChannel(); + server.hot.addChannel(hmrChannel); + + server.middlewares.use(async (req, res) => { + const url = new URL(req.url!, 'http://localhost'); + if (url.pathname === fetchModulePathname) { + const id = url.searchParams.get('id'); + const importer = url.searchParams.get('importer') ?? undefined; + + if (!id) { + res.statusCode = 400; + return res.end('Invalid request'); + } + + const ssrModule = await server.ssrFetchModule(id, importer); + res.setHeader('content-type', 'application/json'); + return res.end(JSON.stringify(ssrModule)); + } + }); + + const serverFunctions: ServerFunctions = { + hmrSend(_payload) { + // TODO: emit? + }, + }; + + wss.on('connection', (ws) => { + const rpc = createBirpc(serverFunctions, { + post: (data) => ws.send(data), + on: (data) => ws.on('message', data), + serialize: (v) => JSON.stringify(v), + deserialize: (v) => JSON.parse(v), + }); + hmrChannel.clients.set(ws, rpc); + ws.on('close', () => { + hmrChannel.clients.delete(ws); + }); + }); + + type RequestContext = { + viteUrl: string; + }; + + return { + async runModule( + id: string, + request: globalThis.Request, + ctx: RequestContext, + ) { + const resolvedUrl = new URL(request.url); + resolvedUrl.protocol = url.protocol; + resolvedUrl.host = url.host; + request.headers.set('vite-runtime-execute-url', id); + request.headers.set( + 'vite-fetch-module-url', + path.join(ctx.viteUrl + fetchModulePathname), + ); + const body = request.body ? await request.arrayBuffer() : undefined; + const response = await mf.dispatchFetch(resolvedUrl, { + method: request.method, + headers: Object.fromEntries( + request.headers as unknown as Iterable<[string, string]>, + ), + body, + }); + return response as unknown as globalThis.Response; + }, + // TODO: support non-Advanced mode + selectModule(request: globalThis.Request, root: string) { + const url = new URL(request.url); + if (/^\/(@\w+|app|node_modules)\//.test(url.pathname)) { + return; + } + + const entryFilePath = path.resolve(root, entryFile); + try { + const stat = statSync(entryFilePath, {throwIfNoEntry: false}); + if (stat) return entryFilePath; + } catch {} + }, + async teardown() { + await mf.dispose(); + await new Promise((resolve, reject) => + wss.close((err) => (err ? reject(err) : resolve())), + ); + }, + }; +} + +class WssHmrChannel implements HMRChannel { + name = 'WssHmrChannel'; + clients = new Map>(); + + listen(): void {} + close(): void {} + + on(_event: unknown, _listener: unknown): void {} + off(_event: string, _listener: Function): void {} + + send(arg0: unknown, arg1?: unknown): void { + let payload: HMRPayload; + if (typeof arg0 === 'string') { + payload = { + type: 'custom', + event: arg0, + data: arg1, + }; + } else { + payload = arg0 as HMRPayload; + } + + this.clients.forEach((rpc) => { + rpc.hmrSend(payload); + }); + } +} diff --git a/packages/cli/src/lib/remix-config.ts b/packages/cli/src/lib/remix-config.ts index cdc162686a..5f2d44cca9 100644 --- a/packages/cli/src/lib/remix-config.ts +++ b/packages/cli/src/lib/remix-config.ts @@ -18,12 +18,16 @@ const WORKER_SUBDIR = 'worker'; // Hardcoded in Oxygen const oxygenServerMainFields = ['browser', 'module', 'main']; -export function getProjectPaths(appPath?: string, entry?: string) { +export function getProjectPaths(appPath?: string, isVite = false) { const root = appPath ?? process.cwd(); const publicPath = path.join(root, 'public'); const buildPath = path.join(root, BUILD_DIR); const buildPathClient = path.join(buildPath, CLIENT_SUBDIR); - const buildPathWorkerFile = path.join(buildPath, WORKER_SUBDIR, 'index.js'); + const buildPathWorkerFile = path.join( + buildPath, + isVite ? 'server' : WORKER_SUBDIR, + 'index.js', + ); return { root, diff --git a/packages/cli/tsup.config.ts b/packages/cli/tsup.config.ts index aabbe25732..ddc1ba26df 100644 --- a/packages/cli/tsup.config.ts +++ b/packages/cli/tsup.config.ts @@ -32,7 +32,7 @@ const outDir = 'dist'; export default defineConfig([ { ...commonConfig, - entry: ['src/**/*.ts'], + entry: ['src/**/*.ts', '!src/**/vite/client.ts'], outDir, async onSuccess() { // Copy TS templates @@ -56,6 +56,13 @@ export default defineConfig([ console.log('', 'Oclif manifest generated.\n'); }, }, + { + entry: ['src/lib/mini-oxygen/vite/client.ts'], + outDir: 'dist/lib/mini-oxygen/vite', + format: 'esm', + noExternal: [/./], + esbuildPlugins: [esbuildNoSideEffectPlugin(['picomatch'])], + }, { ...commonConfig, entry: ['src/virtual-routes/**/*.tsx'], @@ -97,3 +104,26 @@ export default defineConfig([ }, }, ]); + +function esbuildNoSideEffectPlugin(packageNames: string[]) { + return { + name: 'no-sideeffect', + setup({onResolve, resolve}) { + onResolve( + {filter: new RegExp(`^${packageNames.join('|')}$`)}, + async (args) => { + if (args.pluginData?.skipNoSideEffectResolver) return; + + const result = await resolve(args.path, { + kind: args.kind, + importer: args.importer, + namespace: args.namespace, + resolveDir: args.resolveDir, + pluginData: {...args.pluginData, skipNoSideEffectResolver: true}, + }); + return {...result, sideEffects: false}; + }, + ); + }, + }; +} diff --git a/packages/hydrogen-react/package.json b/packages/hydrogen-react/package.json index 4c8a179b22..7305dc5fb7 100644 --- a/packages/hydrogen-react/package.json +++ b/packages/hydrogen-react/package.json @@ -163,7 +163,7 @@ "rimraf": "^4.1.2", "ts-expect": "^1.3.0", "typescript": "^5.2.2", - "vite": "^5.0.12", + "vite": "5.1.0-beta.6", "vitest": "^1.0.4" }, "peerDependencies": { From ff1119ed9c1ac52200447eb27599d5348d6777f5 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 2 Feb 2024 17:02:53 +0900 Subject: [PATCH 03/81] Add vite-skeleton template --- package-lock.json | 22 +- package.json | 3 +- templates/vite-skeleton/.graphqlrc.yml | 12 + .../vite-skeleton/app/components/Aside.tsx | 47 + .../vite-skeleton/app/components/Cart.tsx | 340 +++++ .../vite-skeleton/app/components/Footer.tsx | 112 ++ .../vite-skeleton/app/components/Header.tsx | 190 +++ .../vite-skeleton/app/components/Layout.tsx | 108 ++ .../vite-skeleton/app/components/Search.tsx | 478 +++++++ templates/vite-skeleton/app/entry.client.tsx | 12 + templates/vite-skeleton/app/entry.server.tsx | 41 + .../CustomerAddressMutations.ts | 61 + .../customer-account/CustomerDetailsQuery.ts | 39 + .../customer-account/CustomerOrderQuery.ts | 87 ++ .../customer-account/CustomerOrdersQuery.ts | 58 + .../CustomerUpdateMutation.ts | 24 + templates/vite-skeleton/app/lib/fragments.ts | 102 ++ templates/vite-skeleton/app/lib/session.ts | 67 + templates/vite-skeleton/app/lib/variants.ts | 46 + templates/vite-skeleton/app/root.tsx | 239 ++++ templates/vite-skeleton/app/routes/$.tsx | 11 + .../vite-skeleton/app/routes/[robots.txt].tsx | 118 ++ .../app/routes/[sitemap.xml].tsx | 177 +++ templates/vite-skeleton/app/routes/_index.tsx | 145 ++ .../vite-skeleton/app/routes/account.$.tsx | 12 + .../app/routes/account._index.tsx | 5 + .../app/routes/account.addresses.tsx | 572 ++++++++ .../app/routes/account.orders.$id.tsx | 202 +++ .../app/routes/account.orders._index.tsx | 114 ++ .../app/routes/account.profile.tsx | 154 +++ .../vite-skeleton/app/routes/account.tsx | 89 ++ .../app/routes/account_.authorize.tsx | 5 + .../app/routes/account_.login.tsx | 5 + .../app/routes/account_.logout.tsx | 10 + .../app/routes/api.predictive-search.tsx | 340 +++++ .../blogs.$blogHandle.$articleHandle.tsx | 87 ++ .../app/routes/blogs.$blogHandle._index.tsx | 162 +++ .../vite-skeleton/app/routes/blogs._index.tsx | 96 ++ .../vite-skeleton/app/routes/cart.$lines.tsx | 69 + templates/vite-skeleton/app/routes/cart.tsx | 108 ++ .../app/routes/collections.$handle.tsx | 183 +++ .../app/routes/collections._index.tsx | 120 ++ .../app/routes/discount.$code.tsx | 47 + .../app/routes/pages.$handle.tsx | 56 + .../app/routes/policies.$handle.tsx | 93 ++ .../app/routes/policies._index.tsx | 63 + .../app/routes/products.$handle.tsx | 428 ++++++ templates/vite-skeleton/app/routes/search.tsx | 168 +++ templates/vite-skeleton/app/styles/app.css | 473 +++++++ templates/vite-skeleton/app/styles/reset.css | 129 ++ .../customer-accountapi.generated.d.ts | 506 +++++++ templates/vite-skeleton/env.d.ts | 48 + templates/vite-skeleton/package.json | 47 + templates/vite-skeleton/public/favicon.svg | 28 + templates/vite-skeleton/server.ts | 118 ++ .../storefrontapi.generated.d.ts | 1163 +++++++++++++++++ templates/vite-skeleton/tsconfig.json | 23 + templates/vite-skeleton/vite.config.ts | 67 + 58 files changed, 8316 insertions(+), 13 deletions(-) create mode 100644 templates/vite-skeleton/.graphqlrc.yml create mode 100644 templates/vite-skeleton/app/components/Aside.tsx create mode 100644 templates/vite-skeleton/app/components/Cart.tsx create mode 100644 templates/vite-skeleton/app/components/Footer.tsx create mode 100644 templates/vite-skeleton/app/components/Header.tsx create mode 100644 templates/vite-skeleton/app/components/Layout.tsx create mode 100644 templates/vite-skeleton/app/components/Search.tsx create mode 100644 templates/vite-skeleton/app/entry.client.tsx create mode 100644 templates/vite-skeleton/app/entry.server.tsx create mode 100644 templates/vite-skeleton/app/graphql/customer-account/CustomerAddressMutations.ts create mode 100644 templates/vite-skeleton/app/graphql/customer-account/CustomerDetailsQuery.ts create mode 100644 templates/vite-skeleton/app/graphql/customer-account/CustomerOrderQuery.ts create mode 100644 templates/vite-skeleton/app/graphql/customer-account/CustomerOrdersQuery.ts create mode 100644 templates/vite-skeleton/app/graphql/customer-account/CustomerUpdateMutation.ts create mode 100644 templates/vite-skeleton/app/lib/fragments.ts create mode 100644 templates/vite-skeleton/app/lib/session.ts create mode 100644 templates/vite-skeleton/app/lib/variants.ts create mode 100644 templates/vite-skeleton/app/root.tsx create mode 100644 templates/vite-skeleton/app/routes/$.tsx create mode 100644 templates/vite-skeleton/app/routes/[robots.txt].tsx create mode 100644 templates/vite-skeleton/app/routes/[sitemap.xml].tsx create mode 100644 templates/vite-skeleton/app/routes/_index.tsx create mode 100644 templates/vite-skeleton/app/routes/account.$.tsx create mode 100644 templates/vite-skeleton/app/routes/account._index.tsx create mode 100644 templates/vite-skeleton/app/routes/account.addresses.tsx create mode 100644 templates/vite-skeleton/app/routes/account.orders.$id.tsx create mode 100644 templates/vite-skeleton/app/routes/account.orders._index.tsx create mode 100644 templates/vite-skeleton/app/routes/account.profile.tsx create mode 100644 templates/vite-skeleton/app/routes/account.tsx create mode 100644 templates/vite-skeleton/app/routes/account_.authorize.tsx create mode 100644 templates/vite-skeleton/app/routes/account_.login.tsx create mode 100644 templates/vite-skeleton/app/routes/account_.logout.tsx create mode 100644 templates/vite-skeleton/app/routes/api.predictive-search.tsx create mode 100644 templates/vite-skeleton/app/routes/blogs.$blogHandle.$articleHandle.tsx create mode 100644 templates/vite-skeleton/app/routes/blogs.$blogHandle._index.tsx create mode 100644 templates/vite-skeleton/app/routes/blogs._index.tsx create mode 100644 templates/vite-skeleton/app/routes/cart.$lines.tsx create mode 100644 templates/vite-skeleton/app/routes/cart.tsx create mode 100644 templates/vite-skeleton/app/routes/collections.$handle.tsx create mode 100644 templates/vite-skeleton/app/routes/collections._index.tsx create mode 100644 templates/vite-skeleton/app/routes/discount.$code.tsx create mode 100644 templates/vite-skeleton/app/routes/pages.$handle.tsx create mode 100644 templates/vite-skeleton/app/routes/policies.$handle.tsx create mode 100644 templates/vite-skeleton/app/routes/policies._index.tsx create mode 100644 templates/vite-skeleton/app/routes/products.$handle.tsx create mode 100644 templates/vite-skeleton/app/routes/search.tsx create mode 100644 templates/vite-skeleton/app/styles/app.css create mode 100644 templates/vite-skeleton/app/styles/reset.css create mode 100644 templates/vite-skeleton/customer-accountapi.generated.d.ts create mode 100644 templates/vite-skeleton/env.d.ts create mode 100644 templates/vite-skeleton/package.json create mode 100644 templates/vite-skeleton/public/favicon.svg create mode 100644 templates/vite-skeleton/server.ts create mode 100644 templates/vite-skeleton/storefrontapi.generated.d.ts create mode 100644 templates/vite-skeleton/tsconfig.json create mode 100644 templates/vite-skeleton/vite.config.ts diff --git a/package-lock.json b/package-lock.json index d493b37a2a..73f83360a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31987,7 +31987,7 @@ "cli-hydrogen": "dist/create-app.js" }, "devDependencies": { - "@remix-run/dev": "2.6.0", + "@remix-run/dev": "^2.6.0", "@rollup/pluginutils": "^5.1.0", "@types/connect": "^3.4.38", "@types/diff": "^5.0.2", @@ -34127,10 +34127,9 @@ "templates/vite-hello-world": { "version": "0.0.0", "dependencies": { - "@remix-run/node": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/serve": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/react": "^2.6.0", + "@remix-run/serve": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", @@ -34143,7 +34142,7 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-run/dev": "^2.5.1", + "@remix-run/dev": "^2.6.0", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", "@types/eslint": "^8.4.10", @@ -40147,7 +40146,7 @@ "@hattip/adapter-node": "^0.0.41", "@oclif/core": "2.11.7", "@parcel/watcher": "^2.3.0", - "@remix-run/dev": "2.6.0", + "@remix-run/dev": "^2.6.0", "@rollup/pluginutils": "^5.1.0", "@shopify/cli-kit": "3.52.0", "@shopify/hydrogen-codegen": "^0.2.0", @@ -56083,11 +56082,10 @@ "vite-hello-world": { "version": "file:templates/vite-hello-world", "requires": { - "@remix-run/dev": "^2.5.1", - "@remix-run/node": "^2.5.1", - "@remix-run/react": "^2.5.1", - "@remix-run/serve": "^2.5.1", - "@remix-run/server-runtime": "^2.5.1", + "@remix-run/dev": "^2.6.0", + "@remix-run/react": "^2.6.0", + "@remix-run/serve": "^2.6.0", + "@remix-run/server-runtime": "^2.6.0", "@shopify/cli": "3.52.0", "@shopify/cli-hydrogen": "^7.0.0", "@shopify/hydrogen": "~2024.1.0", diff --git a/package.json b/package.json index daeb8f35a2..aa14136fb0 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,8 @@ "packages/remix-oxygen", "templates/demo-store", "templates/hello-world", - "templates/skeleton" + "templates/skeleton", + "templates/vite-skeleton" ], "prettier": "@shopify/prettier-config", "devDependencies": { diff --git a/templates/vite-skeleton/.graphqlrc.yml b/templates/vite-skeleton/.graphqlrc.yml new file mode 100644 index 0000000000..eee81eddc0 --- /dev/null +++ b/templates/vite-skeleton/.graphqlrc.yml @@ -0,0 +1,12 @@ +projects: + default: + schema: 'node_modules/@shopify/hydrogen/storefront.schema.json' + documents: + - '!*.d.ts' + - '*.{ts,tsx,js,jsx}' + - 'app/**/*.{ts,tsx,js,jsx}' + - '!app/graphql/**/*.{ts,tsx,js,jsx}' + customer-account: + schema: 'node_modules/@shopify/hydrogen/customer-account.schema.json' + documents: + - 'app/graphql/customer-account/**/*.{ts,tsx,js,jsx}' diff --git a/templates/vite-skeleton/app/components/Aside.tsx b/templates/vite-skeleton/app/components/Aside.tsx new file mode 100644 index 0000000000..f486f1992e --- /dev/null +++ b/templates/vite-skeleton/app/components/Aside.tsx @@ -0,0 +1,47 @@ +/** + * A side bar component with Overlay that works without JavaScript. + * @example + * ```jsx + * + * ``` + */ +export function Aside({ + children, + heading, + id = 'aside', +}: { + children?: React.ReactNode; + heading: React.ReactNode; + id?: string; +}) { + return ( + + ); +} + +function CloseAside() { + return ( + /* eslint-disable-next-line jsx-a11y/anchor-is-valid */ + history.go(-1)}> + × + + ); +} diff --git a/templates/vite-skeleton/app/components/Cart.tsx b/templates/vite-skeleton/app/components/Cart.tsx new file mode 100644 index 0000000000..c7039fb291 --- /dev/null +++ b/templates/vite-skeleton/app/components/Cart.tsx @@ -0,0 +1,340 @@ +import {CartForm, Image, Money} from '@shopify/hydrogen'; +import type {CartLineUpdateInput} from '@shopify/hydrogen/storefront-api-types'; +import {Link} from '@remix-run/react'; +import type {CartApiQueryFragment} from 'storefrontapi.generated'; +import {useVariantUrl} from '~/lib/variants'; + +type CartLine = CartApiQueryFragment['lines']['nodes'][0]; + +type CartMainProps = { + cart: CartApiQueryFragment | null; + layout: 'page' | 'aside'; +}; + +export function CartMain({layout, cart}: CartMainProps) { + const linesCount = Boolean(cart?.lines?.nodes?.length || 0); + const withDiscount = + cart && + Boolean(cart.discountCodes.filter((code) => code.applicable).length); + const className = `cart-main ${withDiscount ? 'with-discount' : ''}`; + + return ( +
+
+ ); +} + +function CartDetails({layout, cart}: CartMainProps) { + const cartHasItems = !!cart && cart.totalQuantity > 0; + + return ( +
+ + {cartHasItems && ( + + + + + )} +
+ ); +} + +function CartLines({ + lines, + layout, +}: { + layout: CartMainProps['layout']; + lines: CartApiQueryFragment['lines'] | undefined; +}) { + if (!lines) return null; + + return ( +
+
    + {lines.nodes.map((line) => ( + + ))} +
+
+ ); +} + +function CartLineItem({ + layout, + line, +}: { + layout: CartMainProps['layout']; + line: CartLine; +}) { + const {id, merchandise} = line; + const {product, title, image, selectedOptions} = merchandise; + const lineItemUrl = useVariantUrl(product.handle, selectedOptions); + + return ( +
  • + {image && ( + {title} + )} + +
    + { + if (layout === 'aside') { + // close the drawer + window.location.href = lineItemUrl; + } + }} + > +

    + {product.title} +

    + + +
      + {selectedOptions.map((option) => ( +
    • + + {option.name}: {option.value} + +
    • + ))} +
    + +
    +
  • + ); +} + +function CartCheckoutActions({checkoutUrl}: {checkoutUrl: string}) { + if (!checkoutUrl) return null; + + return ( + + ); +} + +export function CartSummary({ + cost, + layout, + children = null, +}: { + children?: React.ReactNode; + cost: CartApiQueryFragment['cost']; + layout: CartMainProps['layout']; +}) { + const className = + layout === 'page' ? 'cart-summary-page' : 'cart-summary-aside'; + + return ( +
    +

    Totals

    +
    +
    Subtotal
    +
    + {cost?.subtotalAmount?.amount ? ( + + ) : ( + '-' + )} +
    +
    + {children} +
    + ); +} + +function CartLineRemoveButton({lineIds}: {lineIds: string[]}) { + return ( + + + + ); +} + +function CartLineQuantity({line}: {line: CartLine}) { + if (!line || typeof line?.quantity === 'undefined') return null; + const {id: lineId, quantity} = line; + const prevQuantity = Number(Math.max(0, quantity - 1).toFixed(0)); + const nextQuantity = Number((quantity + 1).toFixed(0)); + + return ( +
    + Quantity: {quantity}    + + + +   + + + +   + +
    + ); +} + +function CartLinePrice({ + line, + priceType = 'regular', + ...passthroughProps +}: { + line: CartLine; + priceType?: 'regular' | 'compareAt'; + [key: string]: any; +}) { + if (!line?.cost?.amountPerQuantity || !line?.cost?.totalAmount) return null; + + const moneyV2 = + priceType === 'regular' + ? line.cost.totalAmount + : line.cost.compareAtAmountPerQuantity; + + if (moneyV2 == null) { + return null; + } + + return ( +
    + +
    + ); +} + +export function CartEmpty({ + hidden = false, + layout = 'aside', +}: { + hidden: boolean; + layout?: CartMainProps['layout']; +}) { + return ( + + ); +} + +function CartDiscounts({ + discountCodes, +}: { + discountCodes: CartApiQueryFragment['discountCodes']; +}) { + const codes: string[] = + discountCodes + ?.filter((discount) => discount.applicable) + ?.map(({code}) => code) || []; + + return ( +
    + {/* Have existing discount, display it with a remove option */} + + + {/* Show an input to apply a discount */} + +
    + +   + +
    +
    +
    + ); +} + +function UpdateDiscountForm({ + discountCodes, + children, +}: { + discountCodes?: string[]; + children: React.ReactNode; +}) { + return ( + + {children} + + ); +} + +function CartLineUpdateButton({ + children, + lines, +}: { + children: React.ReactNode; + lines: CartLineUpdateInput[]; +}) { + return ( + + {children} + + ); +} diff --git a/templates/vite-skeleton/app/components/Footer.tsx b/templates/vite-skeleton/app/components/Footer.tsx new file mode 100644 index 0000000000..332b63a663 --- /dev/null +++ b/templates/vite-skeleton/app/components/Footer.tsx @@ -0,0 +1,112 @@ +import {NavLink} from '@remix-run/react'; +import type {FooterQuery, HeaderQuery} from 'storefrontapi.generated'; +import {useRootLoaderData} from '~/root'; + +export function Footer({ + menu, + shop, +}: FooterQuery & {shop: HeaderQuery['shop']}) { + return ( +
    + {menu && shop?.primaryDomain?.url && ( + + )} +
    + ); +} + +function FooterMenu({ + menu, + primaryDomainUrl, +}: { + menu: FooterQuery['menu']; + primaryDomainUrl: HeaderQuery['shop']['primaryDomain']['url']; +}) { + const {publicStoreDomain} = useRootLoaderData(); + + return ( + + ); +} + +const FALLBACK_FOOTER_MENU = { + id: 'gid://shopify/Menu/199655620664', + items: [ + { + id: 'gid://shopify/MenuItem/461633060920', + resourceId: 'gid://shopify/ShopPolicy/23358046264', + tags: [], + title: 'Privacy Policy', + type: 'SHOP_POLICY', + url: '/policies/privacy-policy', + items: [], + }, + { + id: 'gid://shopify/MenuItem/461633093688', + resourceId: 'gid://shopify/ShopPolicy/23358013496', + tags: [], + title: 'Refund Policy', + type: 'SHOP_POLICY', + url: '/policies/refund-policy', + items: [], + }, + { + id: 'gid://shopify/MenuItem/461633126456', + resourceId: 'gid://shopify/ShopPolicy/23358111800', + tags: [], + title: 'Shipping Policy', + type: 'SHOP_POLICY', + url: '/policies/shipping-policy', + items: [], + }, + { + id: 'gid://shopify/MenuItem/461633159224', + resourceId: 'gid://shopify/ShopPolicy/23358079032', + tags: [], + title: 'Terms of Service', + type: 'SHOP_POLICY', + url: '/policies/terms-of-service', + items: [], + }, + ], +}; + +function activeLinkStyle({ + isActive, + isPending, +}: { + isActive: boolean; + isPending: boolean; +}) { + return { + fontWeight: isActive ? 'bold' : undefined, + color: isPending ? 'grey' : 'white', + }; +} diff --git a/templates/vite-skeleton/app/components/Header.tsx b/templates/vite-skeleton/app/components/Header.tsx new file mode 100644 index 0000000000..888e534532 --- /dev/null +++ b/templates/vite-skeleton/app/components/Header.tsx @@ -0,0 +1,190 @@ +import {Await, NavLink} from '@remix-run/react'; +import {Suspense} from 'react'; +import type {HeaderQuery} from 'storefrontapi.generated'; +import type {LayoutProps} from './Layout'; +import {useRootLoaderData} from '~/root'; + +type HeaderProps = Pick; + +type Viewport = 'desktop' | 'mobile'; + +export function Header({header, isLoggedIn, cart}: HeaderProps) { + const {shop, menu} = header; + return ( +
    + + {shop.name} + + + +
    + ); +} + +export function HeaderMenu({ + menu, + primaryDomainUrl, + viewport, +}: { + menu: HeaderProps['header']['menu']; + primaryDomainUrl: HeaderQuery['shop']['primaryDomain']['url']; + viewport: Viewport; +}) { + const {publicStoreDomain} = useRootLoaderData(); + const className = `header-menu-${viewport}`; + + function closeAside(event: React.MouseEvent) { + if (viewport === 'mobile') { + event.preventDefault(); + window.location.href = event.currentTarget.href; + } + } + + return ( + + ); +} + +function HeaderCtas({ + isLoggedIn, + cart, +}: Pick) { + return ( + + ); +} + +function HeaderMenuMobileToggle() { + return ( + +

    ā˜°

    +
    + ); +} + +function SearchToggle() { + return Search; +} + +function CartBadge({count}: {count: number}) { + return Cart {count}; +} + +function CartToggle({cart}: Pick) { + return ( + }> + + {(cart) => { + if (!cart) return ; + return ; + }} + + + ); +} + +const FALLBACK_HEADER_MENU = { + id: 'gid://shopify/Menu/199655587896', + items: [ + { + id: 'gid://shopify/MenuItem/461609500728', + resourceId: null, + tags: [], + title: 'Collections', + type: 'HTTP', + url: '/collections', + items: [], + }, + { + id: 'gid://shopify/MenuItem/461609533496', + resourceId: null, + tags: [], + title: 'Blog', + type: 'HTTP', + url: '/blogs/journal', + items: [], + }, + { + id: 'gid://shopify/MenuItem/461609566264', + resourceId: null, + tags: [], + title: 'Policies', + type: 'HTTP', + url: '/policies', + items: [], + }, + { + id: 'gid://shopify/MenuItem/461609599032', + resourceId: 'gid://shopify/Page/92591030328', + tags: [], + title: 'About', + type: 'PAGE', + url: '/pages/about', + items: [], + }, + ], +}; + +function activeLinkStyle({ + isActive, + isPending, +}: { + isActive: boolean; + isPending: boolean; +}) { + return { + fontWeight: isActive ? 'bold' : undefined, + color: isPending ? 'grey' : 'black', + }; +} diff --git a/templates/vite-skeleton/app/components/Layout.tsx b/templates/vite-skeleton/app/components/Layout.tsx new file mode 100644 index 0000000000..a6765a25c1 --- /dev/null +++ b/templates/vite-skeleton/app/components/Layout.tsx @@ -0,0 +1,108 @@ +import {Await} from '@remix-run/react'; +import {Suspense} from 'react'; +import type { + CartApiQueryFragment, + FooterQuery, + HeaderQuery, +} from 'storefrontapi.generated'; +import {Aside} from '~/components/Aside'; +import {Footer} from '~/components/Footer'; +import {Header, HeaderMenu} from '~/components/Header'; +import {CartMain} from '~/components/Cart'; +import { + PredictiveSearchForm, + PredictiveSearchResults, +} from '~/components/Search'; + +export type LayoutProps = { + cart: Promise; + children?: React.ReactNode; + footer: Promise; + header: HeaderQuery; + isLoggedIn: Promise; +}; + +export function Layout({ + cart, + children = null, + footer, + header, + isLoggedIn, +}: LayoutProps) { + return ( + <> + + + + {header &&
    } +
    {children}
    + + + {(footer) =>