diff --git a/packages/commerce-sdk-react/package-lock.json b/packages/commerce-sdk-react/package-lock.json index 80f7146a74..350a1ccff5 100644 --- a/packages/commerce-sdk-react/package-lock.json +++ b/packages/commerce-sdk-react/package-lock.json @@ -9,7 +9,7 @@ "version": "1.2.0-dev", "license": "See license in LICENSE", "dependencies": { - "commerce-sdk-isomorphic": "^1.10.4", + "commerce-sdk-isomorphic": "/Users/vcua/Git/commerce-sdk-isomorphic", "js-cookie": "^3.0.1", "jwt-decode": "^4.0.0" }, @@ -53,6 +53,87 @@ "react-helmet": "^6.1.0" } }, + "../../../commerce-sdk-isomorphic": { + "version": "1.10.4", + "license": "BSD-3-Clause", + "dependencies": { + "nanoid": "^3.3.4", + "node-fetch": "2.6.12" + }, + "devDependencies": { + "@babel/cli": "7.18.6", + "@babel/core": "7.18.6", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/preset-env": "7.18.6", + "@babel/preset-react": "7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@commerce-apps/raml-toolkit": "^0.5.11", + "@rollup/plugin-babel": "5.3.1", + "@rollup/plugin-commonjs": "13.0.2", + "@rollup/plugin-node-resolve": "8.4.0", + "@testing-library/jest-dom": "5.16.4", + "@testing-library/react": "10.4.9", + "@types/fs-extra": "^9.0.13", + "@types/handlebars-helpers": "^0.5.3", + "@types/node-fetch": "^2.6.2", + "@types/react-dom": "^16.9.16", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "autoprefixer": "9.8.8", + "bundlesize": "^0.18.1", + "depcheck": "^1.4.3", + "dotenv": "^16.0.3", + "eslint": "^7.32.0", + "eslint-config-airbnb": "18.2.1", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-header": "^3.1.1", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jest": "^24.7.0", + "eslint-plugin-jsx-a11y": "6.6.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "7.30.1", + "eslint-plugin-react-hooks": "4.6.0", + "fs-extra": "^9.1.0", + "handlebars-helpers": "^0.10.0", + "husky": "4.3.8", + "jest-environment-jsdom-sixteen": "1.0.3", + "lint-staged": "10.5.4", + "nock": "^13.2.8", + "npm-pack-all": "^1.12.7", + "postcss-preset-env": "6.7.1", + "prettier": "^2.7.1", + "prop-types": "^15.8.1", + "react": "^16.14.0", + "react-dom": "^16.14.0", + "react-scripts": "4.0.3", + "rollup": "2.77.0", + "rollup-plugin-filesize": "9.1.2", + "rollup-plugin-includepaths": "0.2.4", + "rollup-plugin-peer-deps-external": "2.2.4", + "rollup-plugin-postcss": "3.1.8", + "rollup-plugin-stylelint": "1.0.0", + "rollup-plugin-terser": "6.1.0", + "rollup-plugin-ts": "^2.0.7", + "snyk": "^1.973.0", + "sort-package-json": "^1.57.0", + "stylelint": "13.13.1", + "stylelint-config-standard": "20.0.0", + "stylelint-order": "4.1.0", + "ts-node": "9.1.1", + "typedoc": "^0.17.7", + "typedoc-plugin-external-module-map": "1.2.1", + "typedoc-plugin-nojekyll": "^1.0.1", + "typescript": "^4.4.4" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/@adobe/css-tools": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", @@ -861,20 +942,8 @@ "dev": true }, "node_modules/commerce-sdk-isomorphic": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/commerce-sdk-isomorphic/-/commerce-sdk-isomorphic-1.10.4.tgz", - "integrity": "sha512-CydwGcwo3C6+qZbQNnbEGTifArUnWFv5yhvDvBwx2p2X1yn41TESVKclzxzpGLS88jLEmkzgNvfg2GFtmZgPsQ==", - "dependencies": { - "nanoid": "^3.3.4", - "node-fetch": "2.6.12" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } + "resolved": "../../../commerce-sdk-isomorphic", + "link": true }, "node_modules/concat-map": { "version": "0.0.1", @@ -1925,7 +1994,8 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "devOptional": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -2042,6 +2112,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "devOptional": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -2128,23 +2199,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -2165,25 +2219,6 @@ "node": ">= 10.13" } }, - "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", @@ -2452,6 +2487,7 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -2463,6 +2499,7 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -2658,6 +2695,7 @@ "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0" } @@ -2896,11 +2934,6 @@ "nodetouch": "bin/nodetouch.js" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/typedoc": { "version": "0.24.8", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.8.tgz", @@ -3001,20 +3034,6 @@ "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", "dev": true }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/packages/commerce-sdk-react/package.json b/packages/commerce-sdk-react/package.json index 26d88f863c..7501d1a9b6 100644 --- a/packages/commerce-sdk-react/package.json +++ b/packages/commerce-sdk-react/package.json @@ -40,7 +40,7 @@ "version": "node ./scripts/version.js" }, "dependencies": { - "commerce-sdk-isomorphic": "^1.10.4", + "commerce-sdk-isomorphic": "/Users/vcua/Git/commerce-sdk-isomorphic", "js-cookie": "^3.0.1", "jwt-decode": "^4.0.0" }, diff --git a/packages/commerce-sdk-react/src/auth/index.test.ts b/packages/commerce-sdk-react/src/auth/index.test.ts index a949a661df..649b230d20 100644 --- a/packages/commerce-sdk-react/src/auth/index.test.ts +++ b/packages/commerce-sdk-react/src/auth/index.test.ts @@ -48,6 +48,7 @@ const config = { shortCode: 'shortCode', siteId: 'siteId', proxy: 'proxy', + slasProxy: 'slasProxy', redirectURI: 'redirectURI' } diff --git a/packages/commerce-sdk-react/src/auth/index.ts b/packages/commerce-sdk-react/src/auth/index.ts index 57752e9e61..08b1475ce7 100644 --- a/packages/commerce-sdk-react/src/auth/index.ts +++ b/packages/commerce-sdk-react/src/auth/index.ts @@ -22,6 +22,7 @@ type Helpers = typeof helpers interface AuthConfig extends ApiClientConfigParams { redirectURI: string proxy: string + slasProxy: string fetchOptions?: ShopperLoginTypes.FetchOptions fetchedToken?: string OCAPISessionsURL?: string @@ -168,7 +169,7 @@ class Auth { constructor(config: AuthConfig) { this.client = new ShopperLogin({ - proxy: config.proxy, + proxy: config.slasProxy, parameters: { clientId: config.clientId, organizationId: config.organizationId, @@ -405,7 +406,8 @@ class Auth { } } return await this.queueRequest( - () => helpers.loginGuestUser(this.client, {redirectURI: this.redirectURI}), + //() => helpers.loginGuestUser(this.client, {redirectURI: this.redirectURI}), + () => helpers.loginGuestUserPrivateClient(this.client,{redirectURI: this.redirectURI}), true ) } diff --git a/packages/commerce-sdk-react/src/provider.tsx b/packages/commerce-sdk-react/src/provider.tsx index 5590868527..ca3c3bf6bc 100644 --- a/packages/commerce-sdk-react/src/provider.tsx +++ b/packages/commerce-sdk-react/src/provider.tsx @@ -24,6 +24,7 @@ import {ApiClientConfigParams, ApiClients} from './hooks/types' export interface CommerceApiProviderProps extends ApiClientConfigParams { children: React.ReactNode proxy: string + slasProxy: string locale: string currency: string redirectURI: string @@ -52,7 +53,7 @@ export const AuthContext = React.createContext({} as Auth) * Initialize a set of Commerce API clients and make it available to all of descendant components * * @group Components - * + * * @example * ```js import {CommerceApiProvider} from '@salesforce/commerce-sdk-react' @@ -73,11 +74,11 @@ export const AuthContext = React.createContext({} as Auth) {children} ) - } + } export default App * ``` - * + * * @returns Provider to wrap your app with */ const CommerceApiProvider = (props: CommerceApiProviderProps): ReactElement => { @@ -87,6 +88,7 @@ const CommerceApiProvider = (props: CommerceApiProviderProps): ReactElement => { headers = {}, organizationId, proxy, + slasProxy, redirectURI, fetchOptions, siteId, @@ -99,6 +101,7 @@ const CommerceApiProvider = (props: CommerceApiProviderProps): ReactElement => { const config = { proxy, + slasProxy, headers, parameters: { clientId, @@ -130,6 +133,7 @@ const CommerceApiProvider = (props: CommerceApiProviderProps): ReactElement => { shortCode, siteId, proxy, + slasProxy, fetchOptions, locale, currency, @@ -143,6 +147,7 @@ const CommerceApiProvider = (props: CommerceApiProviderProps): ReactElement => { shortCode, siteId, proxy, + slasProxy, redirectURI, fetchOptions, fetchedToken, @@ -154,6 +159,7 @@ const CommerceApiProvider = (props: CommerceApiProviderProps): ReactElement => { shortCode, siteId, proxy, + slasProxy, redirectURI, fetchOptions, fetchedToken, @@ -170,6 +176,7 @@ const CommerceApiProvider = (props: CommerceApiProviderProps): ReactElement => { headers, organizationId, proxy, + slasProxy, redirectURI, fetchOptions, siteId, diff --git a/packages/commerce-sdk-react/src/test-utils.tsx b/packages/commerce-sdk-react/src/test-utils.tsx index be878c270b..714045a743 100644 --- a/packages/commerce-sdk-react/src/test-utils.tsx +++ b/packages/commerce-sdk-react/src/test-utils.tsx @@ -23,6 +23,7 @@ export const DEFAULT_TEST_HOST = 'http://localhost:8888' export const DEFAULT_TEST_CONFIG = { proxy: `${DEFAULT_TEST_HOST}/mobify/proxy/api`, + slasProxy: `${DEFAULT_TEST_HOST}`, redirectURI: `${DEFAULT_TEST_HOST}/callback`, clientId: '12345678-1234-1234-1234-123412341234', organizationId: 'f_ecom_zzrmy_orgf_001', diff --git a/packages/pwa-kit-runtime/package-lock.json b/packages/pwa-kit-runtime/package-lock.json index c88fc856e5..9d5004a14b 100644 --- a/packages/pwa-kit-runtime/package-lock.json +++ b/packages/pwa-kit-runtime/package-lock.json @@ -16,7 +16,7 @@ "cross-env": "^5.2.1", "express": "^4.18.2", "header-case": "1.0.1", - "http-proxy-middleware": "0.21.0", + "http-proxy-middleware": "^2.0.6", "merge-descriptors": "^1.0.1", "morgan": "^1.10.0", "semver": "^7.5.2", @@ -1595,18 +1595,26 @@ } }, "node_modules/http-proxy-middleware": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.21.0.tgz", - "integrity": "sha512-4Arcl5QQ6pRMRJmtM1WVHKHkFAQn5uvw83XuNeqnMTOikDiCoTxv5/vdudhKQsF+1mtaAawrK2SEB1v2tYecdQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dependencies": { - "@types/http-proxy": "^1.17.3", - "http-proxy": "^1.18.0", + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", "is-glob": "^4.0.1", - "lodash": "^4.17.15", + "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, "node_modules/iconv-lite": { @@ -1743,6 +1751,17 @@ "node": ">=0.12.0" } }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-typed-array": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", @@ -1852,7 +1871,8 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.get": { "version": "4.4.2", diff --git a/packages/pwa-kit-runtime/package.json b/packages/pwa-kit-runtime/package.json index 69c3f1738d..7fe7b9c93d 100644 --- a/packages/pwa-kit-runtime/package.json +++ b/packages/pwa-kit-runtime/package.json @@ -37,7 +37,7 @@ "cross-env": "^5.2.1", "express": "^4.18.2", "header-case": "1.0.1", - "http-proxy-middleware": "0.21.0", + "http-proxy-middleware": "^2.0.6", "merge-descriptors": "^1.0.1", "morgan": "^1.10.0", "semver": "^7.5.2", diff --git a/packages/pwa-kit-runtime/src/utils/ssr-server/configure-proxy.js b/packages/pwa-kit-runtime/src/utils/ssr-server/configure-proxy.js index 3d25fe6b02..e5365988e9 100644 --- a/packages/pwa-kit-runtime/src/utils/ssr-server/configure-proxy.js +++ b/packages/pwa-kit-runtime/src/utils/ssr-server/configure-proxy.js @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import proxy from 'http-proxy-middleware' +import {createProxyMiddleware} from 'http-proxy-middleware' import {rewriteProxyRequestHeaders, rewriteProxyResponseHeaders} from '../ssr-proxying' import {proxyConfigs} from '../ssr-shared' import {processExpressResponse} from './process-express-response' @@ -190,7 +190,7 @@ export const configureProxy = ({ target: targetOrigin } - const proxyFunc = proxy(config) + const proxyFunc = createProxyMiddleware(config) // For a standard proxy, we're done if (!caching) { diff --git a/packages/template-retail-react-app/app/components/_app-config/index.jsx b/packages/template-retail-react-app/app/components/_app-config/index.jsx index 4abe51606f..7c6f1fa76b 100644 --- a/packages/template-retail-react-app/app/components/_app-config/index.jsx +++ b/packages/template-retail-react-app/app/components/_app-config/index.jsx @@ -54,6 +54,7 @@ const AppConfig = ({children, locals = {}}) => { currency={locals.locale?.preferredCurrency} redirectURI={`${appOrigin}/callback`} proxy={`${appOrigin}${commerceApiConfig.proxyPath}`} + slasProxy={`${appOrigin}`} headers={headers} OCAPISessionsURL={`${appOrigin}/mobify/proxy/ocapi/s/${locals.site?.id}/dw/shop/v22_8/sessions`} > diff --git a/packages/template-retail-react-app/app/ssr.js b/packages/template-retail-react-app/app/ssr.js index 7609d8598d..46be201550 100644 --- a/packages/template-retail-react-app/app/ssr.js +++ b/packages/template-retail-react-app/app/ssr.js @@ -10,7 +10,9 @@ import path from 'path' import {getRuntime} from '@salesforce/pwa-kit-runtime/ssr/server/express' import {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config' +import {createProxyMiddleware} from 'http-proxy-middleware' import helmet from 'helmet' +//import {secret, clientId, shortCode} from '../env-vars.json'; const options = { // The build directory (an absolute path) @@ -59,6 +61,36 @@ const {handler} = runtime.createHandler(options, (app) => { }) ) + const createSlasHandler = () => { + const clientId = process?.env?.SLAS_PRIVATE_CLIENT_ID + const secret = process?.env?.SLAS_PRIVATE_CLIENT_SECRET + const shortCode = process?.env?.CC_SHORT_CODE + const target = `https://${shortCode}.api.commercecloud.salesforce.com` + + const proxy = createProxyMiddleware({ + target: target, + changeOrigin: true, + onProxyReq: (outGoingReq, incomingReq) => { + if (incomingReq.path.includes('/token')) { + const encodedClientCredential = Buffer.from(`${clientId}:${secret}`).toString( + 'base64' + ) + outGoingReq.setHeader('Authorization', `Basic ${encodedClientCredential}`) + } + } + }) + return (req, res, next) => { + if (!req.path.startsWith('/shopper/auth')) { + return next() + } + proxy(req, res, next) + } + } + + app.use( + createSlasHandler() + ) + // Handle the redirect from SLAS as to avoid error app.get('/callback?*', (req, res) => { // This endpoint does nothing and is not expected to change diff --git a/packages/template-retail-react-app/config/default.js b/packages/template-retail-react-app/config/default.js index 0181da007a..0681983edb 100644 --- a/packages/template-retail-react-app/config/default.js +++ b/packages/template-retail-react-app/config/default.js @@ -15,7 +15,7 @@ module.exports = { showDefaults: true, interpretPlusSignAsSpace: false }, - defaultSite: 'RefArchGlobal', + defaultSite: 'RefArch', siteAliases: { RefArch: 'us', RefArchGlobal: 'global' @@ -24,10 +24,10 @@ module.exports = { commerceAPI: { proxyPath: `/mobify/proxy/api`, parameters: { - clientId: 'c9c45bfd-0ed3-4aa2-9971-40f88962b836', - organizationId: 'f_ecom_zzrf_001', - shortCode: '8o7m175y', - siteId: 'RefArchGlobal' + clientId: 'ee8a86c8-cd90-44b8-8bdf-61b096884e0c', + organizationId: 'f_ecom_zzrf_026', + shortCode: 'kv7kzm78', + siteId: 'RefArch' } }, einsteinAPI: { @@ -57,7 +57,7 @@ module.exports = { path: 'api' }, { - host: 'zzrf-001.dx.commercecloud.salesforce.com', + host: 'zzrf-026.dx.commercecloud.salesforce.com', path: 'ocapi' } ] diff --git a/packages/template-retail-react-app/package-lock.json b/packages/template-retail-react-app/package-lock.json index d3f686485e..772160a92e 100644 --- a/packages/template-retail-react-app/package-lock.json +++ b/packages/template-retail-react-app/package-lock.json @@ -34,6 +34,7 @@ "framer-motion": "^10.12.9", "full-icu": "^1.5.0", "helmet": "^4.6.0", + "http-proxy-middleware": "^2.0.6", "jest-fetch-mock": "^2.1.2", "js-cookie": "^3.0.1", "jsonwebtoken": "^9.0.0", @@ -2164,6 +2165,14 @@ "hoist-non-react-statics": "^3.3.0" } }, + "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==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -3556,6 +3565,11 @@ "node": ">= 0.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", @@ -3807,6 +3821,25 @@ "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz", "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "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", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -4172,6 +4205,42 @@ "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-0.8.0.tgz", "integrity": "sha512-qsh/wKe1Mk1vtYEFr+LpQBFWTO1gxZQBdii2D0Umj+IUQ23r5sT088Rhpq4XzpSyIpaX7vwjB8Rrtx8u9JTg+Q==" }, + "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-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -4633,6 +4702,17 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -6873,6 +6953,11 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, + "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/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", diff --git a/packages/template-retail-react-app/package.json b/packages/template-retail-react-app/package.json index 9aadc7427d..c232039c81 100644 --- a/packages/template-retail-react-app/package.json +++ b/packages/template-retail-react-app/package.json @@ -64,6 +64,7 @@ "framer-motion": "^10.12.9", "full-icu": "^1.5.0", "helmet": "^4.6.0", + "http-proxy-middleware": "^2.0.6", "jest-fetch-mock": "^2.1.2", "js-cookie": "^3.0.1", "jsonwebtoken": "^9.0.0",