From 3c5ebf620f924db90bc2c8733549ea572270c5aa Mon Sep 17 00:00:00 2001 From: Emerson Laurentino Date: Wed, 6 Nov 2024 14:03:33 -0300 Subject: [PATCH 01/16] feat: Update fetchAPI to modify request URL in production environment --- packages/api/src/platforms/vtex/clients/fetch.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 09f5780682..515ed22ce3 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -3,8 +3,16 @@ import packageJson from '../../../../package.json' const USER_AGENT = `${packageJson.name}@${packageJson.version}` +const IS_PRODUCTION = process.env.NODE_ENV === 'production' + export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { - const response = await fetch(info, { + let customInfo = info.toString() + + if (IS_PRODUCTION && customInfo.includes('vtexcommercestable')) { + customInfo = customInfo.replace('vtexcommercestable', 'vtexinternal') + } + + const response = await fetch(customInfo, { ...init, headers: { ...init?.headers, From fd50c8a64b6badc495bb3f0986a0fccdf3a1873f Mon Sep 17 00:00:00 2001 From: Emerson Laurentino Date: Wed, 6 Nov 2024 16:34:47 -0300 Subject: [PATCH 02/16] feat: Update fetchAPI to construct internal URL for production environment --- packages/api/src/platforms/vtex/clients/fetch.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 515ed22ce3..09a830c700 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -9,7 +9,11 @@ export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { let customInfo = info.toString() if (IS_PRODUCTION && customInfo.includes('vtexcommercestable')) { - customInfo = customInfo.replace('vtexcommercestable', 'vtexinternal') + const url = new URL(customInfo) + url.protocol = 'http' + url.hostname = `${packageJson.name}.vtexinternal.com` + url.searchParams.append('an', url.hostname.split('.')[0]) + customInfo = url.toString() } const response = await fetch(customInfo, { From 8aae3c71015b778b74bd21d81f62933629e83460 Mon Sep 17 00:00:00 2001 From: Emerson Laurentino Date: Wed, 6 Nov 2024 16:37:13 -0300 Subject: [PATCH 03/16] feat: Update fetchAPI to set hostname for internal URL in production environment --- packages/api/src/platforms/vtex/clients/fetch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 09a830c700..079459f36d 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -11,8 +11,8 @@ export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { if (IS_PRODUCTION && customInfo.includes('vtexcommercestable')) { const url = new URL(customInfo) url.protocol = 'http' - url.hostname = `${packageJson.name}.vtexinternal.com` url.searchParams.append('an', url.hostname.split('.')[0]) + url.hostname = `vtexioapi.vtexinternal.com` customInfo = url.toString() } From e78bb35597278a43701c0b6ac1d67b1d55a42773 Mon Sep 17 00:00:00 2001 From: Emerson Laurentino Date: Wed, 6 Nov 2024 16:59:46 -0300 Subject: [PATCH 04/16] feat: Refactor fetchAPI to improve production URL handling and header management --- .../api/src/platforms/vtex/clients/fetch.ts | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 079459f36d..7718ffddb9 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -2,27 +2,31 @@ import fetch from 'isomorphic-unfetch' import packageJson from '../../../../package.json' const USER_AGENT = `${packageJson.name}@${packageJson.version}` - const IS_PRODUCTION = process.env.NODE_ENV === 'production' +const getProductionRequestInfo = (info: string) => { + const url = new URL(info) + url.protocol = 'https' + const account = url.hostname.split('.')[0] + url.searchParams.append('an', account) + url.hostname = `vtexioapi.vtexinternal.com` + return { url: url.toString(), host: `${account}.vtexcommercestable.com.br` } +} + export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { - let customInfo = info.toString() - - if (IS_PRODUCTION && customInfo.includes('vtexcommercestable')) { - const url = new URL(customInfo) - url.protocol = 'http' - url.searchParams.append('an', url.hostname.split('.')[0]) - url.hostname = `vtexioapi.vtexinternal.com` - customInfo = url.toString() + let requestInfo = info.toString() + let headers: HeadersInit = { + ...init?.headers, + 'User-Agent': USER_AGENT, + } + + if (IS_PRODUCTION && requestInfo.includes('vtexcommercestable')) { + const { url, host } = getProductionRequestInfo(requestInfo) + headers = { ...headers, Host: host } + requestInfo = url } - const response = await fetch(customInfo, { - ...init, - headers: { - ...init?.headers, - 'User-Agent': USER_AGENT, - }, - }) + const response = await fetch(requestInfo, { ...init, headers }) if (response.ok) { return response.status !== 204 ? response.json() : undefined From 0ed1876b4e25bce9e1283c6038bd00e447f1f82f Mon Sep 17 00:00:00 2001 From: Emerson Laurentino Date: Wed, 6 Nov 2024 18:00:24 -0300 Subject: [PATCH 05/16] feat: Update fetchAPI to change production host to myvtex.com --- packages/api/src/platforms/vtex/clients/fetch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 7718ffddb9..fef4d8dacc 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -10,7 +10,7 @@ const getProductionRequestInfo = (info: string) => { const account = url.hostname.split('.')[0] url.searchParams.append('an', account) url.hostname = `vtexioapi.vtexinternal.com` - return { url: url.toString(), host: `${account}.vtexcommercestable.com.br` } + return { url: url.toString(), host: `${account}.myvtex.com` } } export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { From 0b338185f7ddcd9ffacb2926483a758402cf37fe Mon Sep 17 00:00:00 2001 From: Emerson Laurentino Date: Wed, 6 Nov 2024 18:36:07 -0300 Subject: [PATCH 06/16] feat: Update fetchAPI to use HTTP protocol for production requests --- packages/api/src/platforms/vtex/clients/fetch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index fef4d8dacc..8353f0dceb 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -6,7 +6,7 @@ const IS_PRODUCTION = process.env.NODE_ENV === 'production' const getProductionRequestInfo = (info: string) => { const url = new URL(info) - url.protocol = 'https' + url.protocol = 'http' const account = url.hostname.split('.')[0] url.searchParams.append('an', account) url.hostname = `vtexioapi.vtexinternal.com` From 50bf3f04347b594b81659f57a73b9bc3dad43192 Mon Sep 17 00:00:00 2001 From: Emerson Laurentino Date: Wed, 6 Nov 2024 18:59:36 -0300 Subject: [PATCH 07/16] feat: Add logging for requestInfo and headers in fetchAPI --- packages/api/src/platforms/vtex/clients/fetch.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 8353f0dceb..1497e1378d 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -26,6 +26,9 @@ export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { requestInfo = url } + console.log('requestInfo', requestInfo); + console.log('headers', headers); + const response = await fetch(requestInfo, { ...init, headers }) if (response.ok) { From e8396c599b48e1e0458df37d2bdc2f245afff806 Mon Sep 17 00:00:00 2001 From: Emerson Laurentino Date: Thu, 7 Nov 2024 10:49:25 -0300 Subject: [PATCH 08/16] feat: Update fetchAPI to change production host to vtexcommercestable.com.br --- packages/api/src/platforms/vtex/clients/fetch.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 1497e1378d..0baf8ad05d 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -10,7 +10,7 @@ const getProductionRequestInfo = (info: string) => { const account = url.hostname.split('.')[0] url.searchParams.append('an', account) url.hostname = `vtexioapi.vtexinternal.com` - return { url: url.toString(), host: `${account}.myvtex.com` } + return { url: url.toString(), host: `${account}.vtexcommercestable.com.br` } } export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { @@ -26,9 +26,6 @@ export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { requestInfo = url } - console.log('requestInfo', requestInfo); - console.log('headers', headers); - const response = await fetch(requestInfo, { ...init, headers }) if (response.ok) { From 28213f67268976da481eb3773b7dfdb756076b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Feij=C3=B3?= Date: Thu, 7 Nov 2024 12:45:44 -0300 Subject: [PATCH 09/16] feat: Add log and `secure` to Host --- .../api/src/platforms/vtex/clients/fetch.ts | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 0baf8ad05d..378bd81f8a 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -10,7 +10,10 @@ const getProductionRequestInfo = (info: string) => { const account = url.hostname.split('.')[0] url.searchParams.append('an', account) url.hostname = `vtexioapi.vtexinternal.com` - return { url: url.toString(), host: `${account}.vtexcommercestable.com.br` } + return { + url: url.toString(), + host: `secure.${account}.vtexcommercestable.com.br`, + } } export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { @@ -20,20 +23,27 @@ export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { 'User-Agent': USER_AGENT, } - if (IS_PRODUCTION && requestInfo.includes('vtexcommercestable')) { - const { url, host } = getProductionRequestInfo(requestInfo) - headers = { ...headers, Host: host } - requestInfo = url - } + try { + if (IS_PRODUCTION && requestInfo.includes('vtexcommercestable')) { + const { url, host } = getProductionRequestInfo(requestInfo) + headers = { ...headers, Host: host } + requestInfo = url + } - const response = await fetch(requestInfo, { ...init, headers }) + console.log('~~request headers', headers) + console.log('~~request info', requestInfo) - if (response.ok) { - return response.status !== 204 ? response.json() : undefined - } + const response = await fetch(requestInfo, { ...init, headers }) - console.error(info, init, response) - const text = await response.text() + if (response.ok) { + return response.status !== 204 ? response.json() : undefined + } - throw new Error(text) + console.error(info, init, response) + const text = await response.text() + + throw new Error(text) + } catch (e) { + console.log('~~FS error: ', e) + } } From c3b5b7a4b3d6e43d288fa82cca2abd072a86bc90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Feij=C3=B3?= Date: Thu, 7 Nov 2024 12:53:55 -0300 Subject: [PATCH 10/16] fix: secure.vivara --- packages/api/src/platforms/vtex/clients/fetch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 378bd81f8a..92222d3cad 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -12,7 +12,7 @@ const getProductionRequestInfo = (info: string) => { url.hostname = `vtexioapi.vtexinternal.com` return { url: url.toString(), - host: `secure.${account}.vtexcommercestable.com.br`, + host: `secure.vivara.vtexcommercestable.com.br`, } } From 715bd905d630ba6568e10b1b85275ab525a16c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Feij=C3=B3?= Date: Thu, 7 Nov 2024 13:11:54 -0300 Subject: [PATCH 11/16] fix: secure.vivara.com.br --- packages/api/src/platforms/vtex/clients/fetch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 92222d3cad..1da30ef80f 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -12,7 +12,7 @@ const getProductionRequestInfo = (info: string) => { url.hostname = `vtexioapi.vtexinternal.com` return { url: url.toString(), - host: `secure.vivara.vtexcommercestable.com.br`, + host: `secure.vivara.com.br`, } } From fcc1ae08188ced93c3c0b7d989b5368fc0b944f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Feij=C3=B3?= Date: Thu, 7 Nov 2024 14:29:26 -0300 Subject: [PATCH 12/16] fix: init headers --- packages/api/src/platforms/vtex/clients/fetch.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 1da30ef80f..37fcf38126 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -19,7 +19,7 @@ const getProductionRequestInfo = (info: string) => { export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { let requestInfo = info.toString() let headers: HeadersInit = { - ...init?.headers, + ...(init?.headers ?? {}), 'User-Agent': USER_AGENT, } @@ -30,8 +30,8 @@ export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { requestInfo = url } - console.log('~~request headers', headers) console.log('~~request info', requestInfo) + console.log('~~request init', { ...init, headers }) const response = await fetch(requestInfo, { ...init, headers }) @@ -39,7 +39,7 @@ export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { return response.status !== 204 ? response.json() : undefined } - console.error(info, init, response) + console.error(requestInfo, { ...init, headers }, response) const text = await response.text() throw new Error(text) From c206a2b64e285508b1d664cad082360d64c0faa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Feij=C3=B3?= Date: Thu, 7 Nov 2024 16:52:04 -0300 Subject: [PATCH 13/16] feat: Add `node-fetch` --- packages/api/package.json | 3 ++- yarn.lock | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/packages/api/package.json b/packages/api/package.json index 380d27b162..e87d81a041 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -32,7 +32,8 @@ "dataloader": "^2.1.0", "fast-deep-equal": "^3.1.3", "isomorphic-unfetch": "^3.1.0", - "p-limit": "^3.1.0" + "p-limit": "^3.1.0", + "node-fetch": "^3.3.2" }, "devDependencies": { "@envelop/core": "^2.6.0", diff --git a/yarn.lock b/yarn.lock index f43ae1f4ad..e62b4f3920 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13199,6 +13199,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + data-urls@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz" @@ -15360,6 +15365,14 @@ feed@^4.2.2: dependencies: xml-js "^1.6.11" +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" @@ -15743,6 +15756,13 @@ format@^0.2.0: resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" @@ -20623,6 +20643,11 @@ node-dir@^0.1.10: dependencies: minimatch "^3.0.2" +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + node-emoji@^1.10.0, node-emoji@^1.8.1: version "1.11.0" resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" @@ -20649,6 +20674,15 @@ node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + node-forge@^1: version "1.3.1" resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" @@ -28167,6 +28201,11 @@ web-namespaces@^1.0.0, web-namespaces@^1.1.2: resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== +web-streams-polyfill@^3.0.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" From 32c051a84afc80507785e7a969ec412ca6bd9cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Feij=C3=B3?= Date: Thu, 7 Nov 2024 16:52:41 -0300 Subject: [PATCH 14/16] fix: Remove logs and using `node-fetch` --- .../api/src/platforms/vtex/clients/fetch.ts | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 37fcf38126..77803e6fc5 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -1,4 +1,4 @@ -import fetch from 'isomorphic-unfetch' +import fetch from 'node-fetch' import packageJson from '../../../../package.json' const USER_AGENT = `${packageJson.name}@${packageJson.version}` @@ -23,27 +23,20 @@ export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { 'User-Agent': USER_AGENT, } - try { - if (IS_PRODUCTION && requestInfo.includes('vtexcommercestable')) { - const { url, host } = getProductionRequestInfo(requestInfo) - headers = { ...headers, Host: host } - requestInfo = url - } - - console.log('~~request info', requestInfo) - console.log('~~request init', { ...init, headers }) + if (IS_PRODUCTION && requestInfo.includes('vtexcommercestable')) { + const { url, host } = getProductionRequestInfo(requestInfo) + headers = { ...headers, Host: host } + requestInfo = url + } - const response = await fetch(requestInfo, { ...init, headers }) + const response = await fetch(requestInfo, { ...init, headers }) - if (response.ok) { - return response.status !== 204 ? response.json() : undefined - } + if (response.ok) { + return response.status !== 204 ? response.json() : undefined + } - console.error(requestInfo, { ...init, headers }, response) - const text = await response.text() + console.error(requestInfo, { ...init, headers }, response) + const text = await response.text() - throw new Error(text) - } catch (e) { - console.log('~~FS error: ', e) - } + throw new Error(text) } From 4eddbb957055ed228777d4a530b66a7e0ab1497f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Feij=C3=B3?= Date: Thu, 7 Nov 2024 17:09:46 -0300 Subject: [PATCH 15/16] fix: node-fetch typings --- packages/api/src/platforms/vtex/clients/fetch.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/api/src/platforms/vtex/clients/fetch.ts b/packages/api/src/platforms/vtex/clients/fetch.ts index 77803e6fc5..96a1f032e6 100644 --- a/packages/api/src/platforms/vtex/clients/fetch.ts +++ b/packages/api/src/platforms/vtex/clients/fetch.ts @@ -1,4 +1,4 @@ -import fetch from 'node-fetch' +import fetch, { HeadersInit, RequestInit } from 'node-fetch' import packageJson from '../../../../package.json' const USER_AGENT = `${packageJson.name}@${packageJson.version}` @@ -16,7 +16,10 @@ const getProductionRequestInfo = (info: string) => { } } -export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { +export const fetchAPI = async ( + info: RequestInfo, + init?: RequestInit +): Promise => { let requestInfo = info.toString() let headers: HeadersInit = { ...(init?.headers ?? {}), @@ -32,7 +35,7 @@ export const fetchAPI = async (info: RequestInfo, init?: RequestInit) => { const response = await fetch(requestInfo, { ...init, headers }) if (response.ok) { - return response.status !== 204 ? response.json() : undefined + return (response.status !== 204 ? response.json() : undefined) as Promise } console.error(requestInfo, { ...init, headers }, response) From c50b875ee04f8308784d4eb2b326038633b2eb04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Feij=C3=B3?= Date: Thu, 7 Nov 2024 18:01:48 -0300 Subject: [PATCH 16/16] fix: `node-fetch` compatible version --- packages/api/package.json | 2 +- yarn.lock | 44 ++++++--------------------------------- 2 files changed, 7 insertions(+), 39 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index e87d81a041..fd6d6d15ba 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -33,7 +33,7 @@ "fast-deep-equal": "^3.1.3", "isomorphic-unfetch": "^3.1.0", "p-limit": "^3.1.0", - "node-fetch": "^3.3.2" + "node-fetch": "^2.7.0" }, "devDependencies": { "@envelop/core": "^2.6.0", diff --git a/yarn.lock b/yarn.lock index e62b4f3920..a492c71822 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13199,11 +13199,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-uri-to-buffer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" - integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== - data-urls@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz" @@ -15365,14 +15360,6 @@ feed@^4.2.2: dependencies: xml-js "^1.6.11" -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" - integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" @@ -15756,13 +15743,6 @@ format@^0.2.0: resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" @@ -18236,7 +18216,7 @@ isomorphic-fetch@^3.0.0: isomorphic-unfetch@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== dependencies: node-fetch "^2.6.1" @@ -20643,11 +20623,6 @@ node-dir@^0.1.10: dependencies: minimatch "^3.0.2" -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - node-emoji@^1.10.0, node-emoji@^1.8.1: version "1.11.0" resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" @@ -20674,14 +20649,12 @@ node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" - integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== +node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" + whatwg-url "^5.0.0" node-forge@^1: version "1.3.1" @@ -28201,11 +28174,6 @@ web-namespaces@^1.0.0, web-namespaces@^1.1.2: resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== -web-streams-polyfill@^3.0.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" - integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"