From 35e82746218a1b755ae066e387fc2af73361e48a Mon Sep 17 00:00:00 2001 From: bkrmendy Date: Tue, 30 Apr 2024 13:36:28 +0200 Subject: [PATCH] x --- app/routes/_index.jsx | 21 ++- app/routes/_index.server.js | 44 +++++ app/routes/auth.$.jsx | 7 + app/routes/entry.server.js | 13 ++ app/shopify.server.js | 26 +++ package-lock.json | 309 ++++++++++++++++++++++++++++++++++-- package.json | 6 +- remix.config.js | 10 +- 8 files changed, 418 insertions(+), 18 deletions(-) create mode 100644 app/routes/_index.server.js create mode 100644 app/routes/auth.$.jsx create mode 100644 app/routes/entry.server.js create mode 100644 app/shopify.server.js diff --git a/app/routes/_index.jsx b/app/routes/_index.jsx index 7bc13b4..0ff040c 100644 --- a/app/routes/_index.jsx +++ b/app/routes/_index.jsx @@ -1,4 +1,4 @@ -import { useLoaderData } from '@remix-run/react' +import { useLoaderData, Form } from '@remix-run/react' import { BadgesColumn, ColorOptionsColumn, @@ -68,8 +68,27 @@ export const ReviewCard = ({ export default function LandingPage() { const { reviews, recommendedProducts } = useLoaderData() + console.log(reviews) + return ( +
+ +
{ + console.log('action!') + const { admin } = await shopify.authenticate.admin( + request, + ) + + const response = await admin.graphql( + `#graphql + mutation UpdateMetaobject($id: ID!, $metaobject: MetaobjectUpdateInput!) { + metaobjectUpdate(id: $id, metaobject: $metaobject) { + metaobject { + handle + rating: field(key: "rating") { + value + } + } + userErrors { + field + message + code + } + } + }`, + { + variables: { + id: 'gid://shopify/Metaobject/8960933910', + metaobject: { + fields: [ + { + key: 'rating', + value: '3.0', + }, + ], + }, + }, + }, + ) + + const data = await response.json() + console.log(data) + return data +} diff --git a/app/routes/auth.$.jsx b/app/routes/auth.$.jsx new file mode 100644 index 0000000..8685c64 --- /dev/null +++ b/app/routes/auth.$.jsx @@ -0,0 +1,7 @@ +import shopify from '~/shopify.server' + +export async function loader({ request }) { + await shopify.authenticate.admin(request) + + return null +} diff --git a/app/routes/entry.server.js b/app/routes/entry.server.js new file mode 100644 index 0000000..e2ff5e1 --- /dev/null +++ b/app/routes/entry.server.js @@ -0,0 +1,13 @@ +import shopify from '~/shopify.server' + +export default async function handleRequest( + request, + responseStatusCode, + responseHeaders, + remixContext, +) { + shopify.addDocumentResponseHeaders( + request, + responseHeaders, + ) +} diff --git a/app/shopify.server.js b/app/shopify.server.js new file mode 100644 index 0000000..eafb0d0 --- /dev/null +++ b/app/shopify.server.js @@ -0,0 +1,26 @@ +// https://www.npmjs.com/package/@shopify/shopify-app-remix + +// Note that you don't need to import the node adapter if you're running on a different runtime. +// import '@shopify/shopify-app-remix/server/adapters/node' +// Memory storage makes it easy to set an app up, but should never be used in production. +import { MemorySessionStorage } from '@shopify/shopify-app-session-storage-memory' + +import { + LATEST_API_VERSION, + shopifyApp, +} from '@shopify/shopify-app-remix' + +const shopify = shopifyApp({ + apiKey: process.env.SHOPIFY_API_KEY, + apiSecretKey: process.env.SHOPIFY_API_SECRET, + appUrl: process.env.SHOPIFY_APP_URL, + authPathPrefix: '/auth', + scopes: [ + 'read_products', + 'write_metaobjects', + 'read_metaobjects', + ], + apiVersion: LATEST_API_VERSION, + sessionStorage: new MemorySessionStorage(), +}) +export default shopify diff --git a/package-lock.json b/package-lock.json index f6aa168..2692ad6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,11 @@ "@shopify/cli": "3.50.0", "@shopify/cli-hydrogen": "^6.0.0", "@shopify/hydrogen": "^2023.10.0", + "@shopify/polaris": "^13.2.0", "@shopify/remix-oxygen": "^2.0.0", + "@shopify/shopify-api": "^10.0.0", + "@shopify/shopify-app-remix": "^2.8.2", + "@shopify/shopify-app-session-storage-memory": "^3.0.5", "graphql": "^16.6.0", "graphql-tag": "^2.12.6", "isbot": "^3.6.6", @@ -5398,6 +5402,14 @@ "integrity": "sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==", "dev": true }, + "node_modules/@shopify/admin-api-client": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@shopify/admin-api-client/-/admin-api-client-0.2.9.tgz", + "integrity": "sha512-0K/P6e4bofCyk5BQ1OCiw9bq2d2hlxHM3B8FQEQclyMyU/b3oMowhy56sOQQODViaiZoDH/atmeWJwOX1di0Qg==", + "dependencies": { + "@shopify/graphql-client": "^0.10.4" + } + }, "node_modules/@shopify/cli": { "version": "3.50.0", "resolved": "https://registry.npmjs.org/@shopify/cli/-/cli-3.50.0.tgz", @@ -5903,6 +5915,11 @@ "url": "https://github.com/sponsors/colinhacks" } }, + "node_modules/@shopify/graphql-client": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@shopify/graphql-client/-/graphql-client-0.10.4.tgz", + "integrity": "sha512-wbor9lk+GrdvCYnQBY0R/PuEVmOedwZQR0ld4zp1DB6eGaEpuoO5kPB4fk+Kz65mFD9hi2KqK6Nu7/ICsIJSHg==" + }, "node_modules/@shopify/hydrogen": { "version": "2023.10.2", "resolved": "https://registry.npmjs.org/@shopify/hydrogen/-/hydrogen-2023.10.2.tgz", @@ -6103,6 +6120,14 @@ "node": ">=8" } }, + "node_modules/@shopify/network": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shopify/network/-/network-3.2.1.tgz", + "integrity": "sha512-Ih/6Oe80dynlUsRfEqptWBfsySCqI0rjQvPAjS8HuWeK9nZ+TvmYScfxjucKXZ2deXwAClnU6SMdh3/B1lMMog==", + "engines": { + "node": "^14.17.0 || >=16.0.0" + } + }, "node_modules/@shopify/oxygen-cli": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/@shopify/oxygen-cli/-/oxygen-cli-2.6.2.tgz", @@ -6504,6 +6529,49 @@ "node": ">=14.17.0" } }, + "node_modules/@shopify/polaris": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@shopify/polaris/-/polaris-13.2.0.tgz", + "integrity": "sha512-4InBs5EG6xoxe1ubdsNCYd9XW+Pjlxxaq/xTKBoaWGTBaGuX1gDw5zCPPPBMXcbjL9Bm1JRQYQo8BB6O/Dilng==", + "dependencies": { + "@shopify/polaris-icons": "^9.0.1", + "@shopify/polaris-tokens": "^9.0.1", + "@types/react": "*", + "@types/react-dom": "*", + "@types/react-transition-group": "^4.4.2", + "react-fast-compare": "^3.2.0", + "react-transition-group": "^4.4.2" + }, + "engines": { + "node": ">=20.10.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@shopify/polaris-icons": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@shopify/polaris-icons/-/polaris-icons-9.0.1.tgz", + "integrity": "sha512-g3V76HcxTXcp6DuKOIWIE08pj95yfzqZw7fnVTGQ1q49PRXTHWh0byDivQCt8wiQPenzWm2pWeme/Ix057nDLw==", + "engines": { + "node": ">=20.10.0" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@shopify/polaris-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@shopify/polaris-tokens/-/polaris-tokens-9.0.1.tgz", + "integrity": "sha512-/OYW8HQZ1EuxkF50RCihDVRGi8tnhtpUOsxSKWkX6hVdCOSiYtWPY2sGd3loavKABnm4mhY3pGaA0rcfUg7zEw==", + "dependencies": { + "deepmerge": "^4.3.1" + }, + "engines": { + "node": ">=20.10.0" + } + }, "node_modules/@shopify/remix-oxygen": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@shopify/remix-oxygen/-/remix-oxygen-2.0.1.tgz", @@ -6518,6 +6586,167 @@ } } }, + "node_modules/@shopify/shopify-api": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@shopify/shopify-api/-/shopify-api-10.0.0.tgz", + "integrity": "sha512-MZVkLjS8IW3w5INohAi+QstfSl+kpLEkKBgF1bZnC/b2IQVDnG24Ew7QAdxjgP/xMsbiQ9aMXUeB1HyRjW7NXA==", + "dependencies": { + "@shopify/admin-api-client": "^0.2.9", + "@shopify/network": "^3.2.1", + "@shopify/storefront-api-client": "^0.3.4", + "compare-versions": "^6.1.0", + "isbot": "^5.1.4", + "jose": "^5.2.3", + "node-fetch": "^2.6.1", + "tslib": "^2.0.3", + "uuid": "^9.0.0" + } + }, + "node_modules/@shopify/shopify-api/node_modules/isbot": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/isbot/-/isbot-5.1.6.tgz", + "integrity": "sha512-Phksj1A0dBP/M/5xeOx0zWemKlZRQvrbNzI19/HWso0uodiOcR8YYCXN60IdzwbKsGj5LnxPkMy6FuBtgckMNw==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@shopify/shopify-app-remix": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@shopify/shopify-app-remix/-/shopify-app-remix-2.8.2.tgz", + "integrity": "sha512-gkiF9n4vExuwyrg0pkfMubZzpqdfy3lfs3mFNTluHaKauFLpxTWLeIAT0MiVL/x3r+PmyWJyzxaXf3i1PUyglQ==", + "dependencies": { + "@remix-run/server-runtime": "^2.5.1", + "@shopify/admin-api-client": "^0.2.9", + "@shopify/shopify-api": "^10.0.0", + "@shopify/shopify-app-session-storage": "^2.1.5", + "@shopify/storefront-api-client": "^0.3.4", + "isbot": "^5.1.4", + "semver": "^7.6.0" + }, + "peerDependencies": { + "@remix-run/node": "*", + "@remix-run/react": "*", + "@shopify/polaris": "*", + "react": "*" + }, + "peerDependenciesMeta": { + "@remix-run/node": { + "optional": true + }, + "@shopify/polaris": { + "optional": true + } + } + }, + "node_modules/@shopify/shopify-app-remix/node_modules/@remix-run/router": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.0.tgz", + "integrity": "sha512-Quz1KOffeEf/zwkCBM3kBtH4ZoZ+pT3xIXBG4PPW/XFtDP7EGhtTiC2+gpL9GnR7+Qdet5Oa6cYSvwKYg6kN9Q==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@shopify/shopify-app-remix/node_modules/@remix-run/server-runtime": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.9.1.tgz", + "integrity": "sha512-6rRPiR+eMdTPkDojlYiZohVzXkD3+3X55ZvD78axMVocwGcDFFllpmgH9NSR2RKHW9eZDZUfKvNCwd/i9W6Xog==", + "dependencies": { + "@remix-run/router": "1.16.0", + "@types/cookie": "^0.6.0", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie": "^0.6.0", + "set-cookie-parser": "^2.4.8", + "source-map": "^0.7.3", + "turbo-stream": "^2.0.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@shopify/shopify-app-remix/node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + }, + "node_modules/@shopify/shopify-app-remix/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@shopify/shopify-app-remix/node_modules/isbot": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/isbot/-/isbot-5.1.6.tgz", + "integrity": "sha512-Phksj1A0dBP/M/5xeOx0zWemKlZRQvrbNzI19/HWso0uodiOcR8YYCXN60IdzwbKsGj5LnxPkMy6FuBtgckMNw==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@shopify/shopify-app-remix/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@shopify/shopify-app-remix/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@shopify/shopify-app-remix/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@shopify/shopify-app-session-storage": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@shopify/shopify-app-session-storage/-/shopify-app-session-storage-2.1.5.tgz", + "integrity": "sha512-4fvdjR/b1c0SH8GbBnHTl+ETV69siozI9Z2lbG1xWVJ6mFoBG71nQ3Uf89QfJImnqRR2olPXtS4YFl2Purqp3Q==", + "peerDependencies": { + "@shopify/shopify-api": "^9.7.2 || ^10.0.0" + } + }, + "node_modules/@shopify/shopify-app-session-storage-memory": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@shopify/shopify-app-session-storage-memory/-/shopify-app-session-storage-memory-3.0.5.tgz", + "integrity": "sha512-4kxuJgp/DclqdN1FH5wpUs+rdV2Oz8e6izDNjnHmcODRqheVMZxCvEDjRuz+kDGNRF7sgyuQ71Qe04PAAJ5EWw==", + "peerDependencies": { + "@shopify/shopify-api": "^9.7.2 || ^10.0.0", + "@shopify/shopify-app-session-storage": "^2.1.4" + } + }, + "node_modules/@shopify/storefront-api-client": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@shopify/storefront-api-client/-/storefront-api-client-0.3.4.tgz", + "integrity": "sha512-tI9l+qj1VbqdqMX6EfChnX5OVqLKADJDSRmCUHWlmkSCrNVuJtP+ylzJE70bTekeAA0DOJ+tCUZotbvngp4j+Q==", + "dependencies": { + "@shopify/graphql-client": "^0.10.4" + } + }, "node_modules/@sindresorhus/is": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", @@ -6797,14 +7026,12 @@ "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "devOptional": true + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/react": { "version": "18.2.38", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.38.tgz", "integrity": "sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==", - "devOptional": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -6815,7 +7042,14 @@ "version": "18.2.17", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", - "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "dependencies": { "@types/react": "*" } @@ -6831,8 +7065,7 @@ "node_modules/@types/scheduler": { "version": "0.16.8", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "devOptional": true + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "node_modules/@types/semver": { "version": "7.5.6", @@ -8741,6 +8974,11 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, + "node_modules/compare-versions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==" + }, "node_modules/compress-commons": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", @@ -9148,8 +9386,7 @@ "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "devOptional": true + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -9497,6 +9734,15 @@ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -13579,9 +13825,9 @@ } }, "node_modules/jose": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/jose/-/jose-5.1.1.tgz", - "integrity": "sha512-bfB+lNxowY49LfrBO0ITUn93JbUhxUN8I11K6oI5hJu/G6PO6fEUddVLjqdD0cQ9SXIHWXuWh7eJYwZF7Z0N/g==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.2.4.tgz", + "integrity": "sha512-6ScbIk2WWCeXkmzF6bRPmEuaqy1m8SbsRFMa/FLrSCkGIhj8OLVG/IH+XHVmNMx/KUo8cVWEE6oKR4dJ+S0Rkg==", "funding": { "url": "https://github.com/sponsors/panva" } @@ -20566,7 +20812,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -20576,8 +20821,7 @@ "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/property-information": { "version": "6.4.0", @@ -20773,6 +21017,11 @@ "react": "^18.2.0" } }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -20833,6 +21082,21 @@ "react-dom": ">=16.8" } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -22913,6 +23177,11 @@ "node": "*" } }, + "node_modules/turbo-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.0.1.tgz", + "integrity": "sha512-sm0ZtcX9YWh28p5X8t5McxC2uthrt9p+g0bGE0KTVFhnhNWefpSVCr+67zRNDUOfo4bpXwiOp7otO+dyQ7/y/A==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -23416,6 +23685,18 @@ "node": ">= 0.4.0" } }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", diff --git a/package.json b/package.json index e08e03e..912fbf2 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,11 @@ "@shopify/cli": "3.50.0", "@shopify/cli-hydrogen": "^6.0.0", "@shopify/hydrogen": "^2023.10.0", + "@shopify/polaris": "^13.2.0", "@shopify/remix-oxygen": "^2.0.0", + "@shopify/shopify-api": "^10.0.0", + "@shopify/shopify-app-remix": "^2.8.2", + "@shopify/shopify-app-session-storage-memory": "^3.0.5", "graphql": "^16.6.0", "graphql-tag": "^2.12.6", "isbot": "^3.6.6", @@ -61,4 +65,4 @@ } ] } -} \ No newline at end of file +} diff --git a/remix.config.js b/remix.config.js index 5baba5e..2135f1d 100644 --- a/remix.config.js +++ b/remix.config.js @@ -7,7 +7,8 @@ module.exports = { /** * The following settings are required to deploy Hydrogen apps to Oxygen: */ - publicPath: (process.env.HYDROGEN_ASSET_BASE_URL ?? '/') + 'build/', + publicPath: + (process.env.HYDROGEN_ASSET_BASE_URL ?? '/') + 'build/', assetsBuildDirectory: 'dist/client/build', serverBuildPath: 'dist/worker/index.js', serverMainFields: ['browser', 'module', 'main'], @@ -16,4 +17,9 @@ module.exports = { serverModuleFormat: 'esm', serverPlatform: 'neutral', serverMinify: process.env.NODE_ENV === 'production', -}; + serverNodeBuiltinsPolyfill: { + modules: { + crypto: true, // Provide a JSPM polyfill, + }, + }, +}