Skip to content
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
dacd86e
Bump axios from 0.21.1 to 1.8.2
dependabot[bot] Mar 18, 2025
286137f
Bump axios from 1.8.2 to 1.8.4
arturpimentel Mar 19, 2025
35ded60
Solve lint issues in Auth.ts
arturpimentel Mar 19, 2025
61c6422
Release v6.48.1-beta
arturpimentel Mar 19, 2025
74331ef
Fix typings in cache gets
arturpimentel Mar 28, 2025
f29d8cd
Fix typing errors in Apps client
arturpimentel Mar 28, 2025
7bd5638
Fix typings in VBase client
arturpimentel Mar 28, 2025
8943c89
Fix HttpClient typings
arturpimentel Mar 28, 2025
e801f77
Fix typings in HttpClient.middlewares.cache
arturpimentel Mar 29, 2025
1f5ac11
Fix typings in HttpClient.middlewares.metrics
arturpimentel Mar 29, 2025
1799d7e
Fix typings in HttpClient.middlewares.recorder
arturpimentel Mar 29, 2025
3604de8
Fix typings in HttpClient.middlewares.request
arturpimentel Mar 29, 2025
40d8f45
Fix typings in HttpClient...interceptors.tracing.spanSetup
arturpimentel Mar 29, 2025
ba51b4a
Fix typings in HttpClient.middlewares.tracing
arturpimentel Mar 29, 2025
7b917fd
Fix typings in service.worker.runtime.graphql.middlewares.error
arturpimentel Mar 29, 2025
819b344
Fix typings in service.worker.runtime.http.middlewares.error
arturpimentel Mar 29, 2025
54427dd
Fix typings in HttpClient...interceptors.tracing
arturpimentel Mar 29, 2025
dc34076
Release v6.48.1-beta.0
arturpimentel Mar 31, 2025
064e4c0
Fix `typescript-json-schema` issues (yarn gen)
arturpimentel Mar 31, 2025
79aa2ce
Release v6.48.1-beta.1
arturpimentel Mar 31, 2025
34994b4
Release v6.48.1-beta.2
arturpimentel Mar 31, 2025
93135be
Update NodeJS in all CI workflows
arturpimentel Mar 31, 2025
187b096
Create compatibility with TS 3.9.7
arturpimentel Apr 28, 2025
f000934
Release v6.48.1-beta.3
arturpimentel Apr 28, 2025
ec6be99
Release v6.48.1-beta.4
arturpimentel May 4, 2025
d28d182
Update Changelog
arturpimentel May 22, 2025
022db8d
Remove unnecessary imports
arturpimentel May 22, 2025
1ada045
Remove unnecessary comments
arturpimentel May 22, 2025
ede6d6a
Rollback error handling changes to http/middlewares/error.ts
arturpimentel May 23, 2025
cc3125e
Rollback typings fixes for HttpClient.ts
arturpimentel May 23, 2025
590452e
Remove type casting from `parseCacheHeaders`
arturpimentel May 23, 2025
497281c
Rollback typing fixes for middlewares/recorder.ts
arturpimentel May 23, 2025
b653b57
Remove type casting from middlewares/interceptors/tracing/idex.ts
arturpimentel May 23, 2025
a28ba22
Release v6.49.2-beta.1
arturpimentel May 30, 2025
a52c0a9
Release v6.49.2
arturpimentel Jun 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
node-version: 22
- run: yarn install --ignore-scripts
- run: yarn run lint

Expand All @@ -24,7 +24,7 @@ jobs:
strategy:
fail-fast: true
matrix:
node-version: [12]
node-version: [22]
os: [ubuntu-latest]

steps:
Expand Down
21 changes: 20 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

## [Unreleased]

## [6.48.1-beta.4] - 2025-05-04

## [6.49.1] - 2025-04-30
### Fixed
- Add yarn.lock changes from previous release
Expand All @@ -20,6 +22,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Fix `yarn gen` script
- Update node-version on publish workflows

## [6.48.1-beta.3] - 2025-04-28

## [6.48.1-beta.2] - 2025-03-31

## [6.48.1-beta.1] - 2025-03-31

## [6.48.1-beta.0] - 2025-03-31

## [6.48.1-beta] - 2025-03-19

## [6.48.0] - 2024-10-23
### Added
- resolveAll to `MineWinsConflictsResolver` to handle an array of conflicts.
Expand Down Expand Up @@ -1856,7 +1868,7 @@ instead
- `HttpClient` now adds `'Accept-Encoding': 'gzip'` header by default.


[Unreleased]: https://github.com/vtex/node-vtex-api/compare/v6.45.22...HEAD
[Unreleased]: https://github.com/vtex/node-vtex-api/compare/v6.48.1-beta.4...HEAD
[6.45.15]: https://github.com/vtex/node-vtex-api/compare/v6.45.14...v6.45.15
[6.45.14]: https://github.com/vtex/node-vtex-api/compare/v6.45.13...v6.45.14
[6.45.13]: https://github.com/vtex/node-vtex-api/compare/v6.45.12...v6.45.13
Expand All @@ -1869,3 +1881,10 @@ instead
[6.45.21-beta]: https://github.com/vtex/node-vtex-api/compare/v6.45.20...v6.45.21-beta
[6.45.20]: https://github.com/vtex/node-vtex-api/compare/v6.45.20-beta...v6.45.20
[6.45.20-beta]: https://github.com/vtex/node-vtex-api/compare/v6.45.19...v6.45.20-beta

[6.48.1-beta.4]: https://github.com/vtex/node-vtex-api/compare/v6.48.1-beta.3...v6.48.1-beta.4
[6.48.1-beta.3]: https://github.com/vtex/node-vtex-api/compare/v6.48.1-beta.2...v6.48.1-beta.3
[6.48.1-beta.2]: https://github.com/vtex/node-vtex-api/compare/v6.48.1-beta.1...v6.48.1-beta.2
[6.48.1-beta.1]: https://github.com/vtex/node-vtex-api/compare/v6.48.1-beta.0...v6.48.1-beta.1
[6.48.1-beta.0]: https://github.com/vtex/node-vtex-api/compare/v6.48.1-beta...v6.48.1-beta.0
[6.48.1-beta]: https://github.com/vtex/node-vtex-api/compare/v6.48.0...v6.48.1-beta
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vtex/api",
"version": "6.49.1",
"version": "6.48.1-beta.4",
"description": "VTEX I/O API client",
"main": "lib/index.js",
"typings": "lib/index.d.ts",
Expand Down Expand Up @@ -55,7 +55,7 @@
"agentkeepalive": "^4.0.2",
"apollo-server-errors": "^2.2.1",
"archiver": "^3.0.0",
"axios": "^0.21.1",
"axios": "^1.8.4",
"axios-retry": "^3.1.2",
"bluebird": "^3.5.4",
"chalk": "^2.4.2",
Expand Down
6 changes: 3 additions & 3 deletions src/HttpClient/HttpClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ export class HttpClient {

public getRaw = <T = any>(url: string, config: RequestConfig = {}): Promise<IOResponse<T>> => {
const cacheableConfig = this.getConfig(url, config)
return this.request(cacheableConfig)
return this.request(cacheableConfig) as any
}

public getWithBody = <T = any>(url: string, data?: any, config: RequestConfig = {}): Promise<T> => {
Expand Down Expand Up @@ -198,12 +198,12 @@ export class HttpClient {

public head = (url: string, config: RequestConfig = {}): Promise<IOResponse<void>> => {
const headConfig: RequestConfig = { ...config, url, method: 'head' }
return this.request(headConfig)
return this.request(headConfig) as any
}

public delete = <T = void>(url: string, config?: RequestConfig): Promise<IOResponse<T>> => {
const deleteConfig: RequestConfig = { ...config, url, method: 'delete' }
return this.request(deleteConfig)
return this.request(deleteConfig) as any
}

protected request = async (config: RequestConfig): Promise<AxiosResponse> => {
Expand Down
13 changes: 8 additions & 5 deletions src/HttpClient/middlewares/cache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const cacheableStatusCodes = [200, 203, 204, 206, 300, 301, 404, 405, 410, 414,

export const cacheKey = (config: AxiosRequestConfig) => {
const {baseURL = '', url = '', params, headers} = config
const locale = headers[LOCALE_HEADER]
const locale = headers?.[LOCALE_HEADER]

const encodedBaseURL = baseURL.replace(/\//g, '\\')
const encodedURL = url.replace(/\//g, '\\')
Expand Down Expand Up @@ -97,7 +97,7 @@ export const cacheMiddleware = ({ type, storage, asyncSet }: CacheOptions) => {
const { rootSpan: span, tracer, logger } = ctx.tracing ?? {}

const key = cacheKey(ctx.config)
const segmentToken = ctx.config.headers[SEGMENT_HEADER]
const segmentToken = ctx.config.headers?.[SEGMENT_HEADER]
const keyWithSegment = key + segmentToken

span?.log({
Expand Down Expand Up @@ -153,7 +153,10 @@ export const cacheMiddleware = ({ type, storage, asyncSet }: CacheOptions) => {
span?.setTag(CACHE_RESULT_TAG, CacheResult.STALE)
const validateStatus = addNotModified(ctx.config.validateStatus!)
if (cachedEtag && validateStatus(response.status as number)) {
ctx.config.headers['if-none-match'] = cachedEtag
ctx.config.headers = {
...ctx.config.headers,
'if-none-match': cachedEtag
}
ctx.config.validateStatus = validateStatus
}
} else {
Expand All @@ -177,7 +180,7 @@ export const cacheMiddleware = ({ type, storage, asyncSet }: CacheOptions) => {
}

const {data, headers, status} = ctx.response as AxiosResponse
const {age, etag, maxAge: headerMaxAge, noStore, noCache} = parseCacheHeaders(headers)
const {age, etag, maxAge: headerMaxAge, noStore, noCache} = parseCacheHeaders(headers as any)

const {forceMaxAge} = ctx.config
const maxAge = forceMaxAge && cacheableStatusCodes.includes(status) ? Math.max(forceMaxAge, headerMaxAge) : headerMaxAge
Expand Down Expand Up @@ -229,7 +232,7 @@ export const cacheMiddleware = ({ type, storage, asyncSet }: CacheOptions) => {
etag,
expiration,
response: {data: cacheableData, headers, status},
responseEncoding,
responseEncoding: responseEncoding as any,
responseType,
})
if (asyncSet) {
Expand Down
1 change: 1 addition & 0 deletions src/HttpClient/middlewares/metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
import { TIMEOUT_CODE } from '../../utils/retry'
import { statusLabel } from '../../utils/status'
import { MiddlewareContext } from '../typings'
import { AxiosError } from 'axios'

interface MetricsOpts {
metrics?: MetricsAccumulator
Expand Down
5 changes: 3 additions & 2 deletions src/HttpClient/middlewares/recorder.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { AxiosError } from 'axios'
import { MiddlewareContext } from '../typings'
import {
Recorder,
Expand All @@ -13,11 +14,11 @@ export const recorderMiddleware = (recorder: Recorder) =>
try {
await next()
if (ctx.response) {
(recorder as Recorder).record(ctx.response.headers)
(recorder as Recorder).record(ctx.response.headers as any)
}
} catch (err: any) {
if (err.response && err.response.headers && err.response.status === 404) {
(recorder as Recorder).record(err.response.headers)
(recorder as Recorder).record(err.response.headers as any)
}
throw err
}
Expand Down
4 changes: 2 additions & 2 deletions src/HttpClient/middlewares/request/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { AxiosRequestConfig } from 'axios'
import buildFullPath from 'axios/lib/core/buildFullPath'
import buildFullPath from '../../../utils/buildFullPath'
import { Limit } from 'p-limit'
import { stringify } from 'qs'
import { toLower } from 'ramda'
Expand Down Expand Up @@ -47,7 +47,7 @@ export const defaultsMiddleware = ({ baseURL, rawHeaders, params, timeout, retri
...ctx.config,
headers: {
...headers,
...renameBy(toLower, ctx.config.headers),
...renameBy(toLower, ctx.config.headers as any),
},
params: {
...params,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'
import { AxiosError, AxiosInstance, AxiosResponse, AxiosRequestConfig } from 'axios'
import { FORMAT_HTTP_HEADERS, Span } from 'opentracing'
import { createSpanReference, ErrorReport } from '../../../../../../tracing'
import { SpanReferenceTypes } from '../../../../../../tracing/spanReference/SpanReferenceTypes'
Expand All @@ -9,6 +9,7 @@ interface AxiosRequestTracingContext extends MiddlewaresTracingContext {
requestSpan?: Span
}

// Modificado para usar AxiosRequestConfig em vez de InternalAxiosRequestConfig
interface TraceableAxiosRequestConfig extends AxiosRequestConfig {
tracing?: AxiosRequestTracingContext
}
Expand All @@ -31,7 +32,6 @@ const preRequestInterceptor = (http: AxiosInstance) => (
}

const { tracer, rootSpan, requestSpanNameSuffix } = config.tracing

const spanName = requestSpanNameSuffix ? `${requestSpanPrefix}:${requestSpanNameSuffix}` : requestSpanPrefix

const span = rootSpan
Expand All @@ -44,6 +44,7 @@ const preRequestInterceptor = (http: AxiosInstance) => (

config.tracing.requestSpan = span
tracer.inject(span, FORMAT_HTTP_HEADERS, config.headers)

return config
}

Expand All @@ -55,6 +56,7 @@ const onResponseSuccess = (response: TraceableAxiosResponse): TraceableAxiosResp
const requestSpan = response.config.tracing?.requestSpan
injectResponseInfoOnSpan(requestSpan, response)
requestSpan?.finish()

return response
}

Expand All @@ -67,17 +69,26 @@ const onResponseError = (err: ExtendedAxiosError) => {
injectResponseInfoOnSpan(requestSpan, err.response)
ErrorReport.create({ originalError: err }).injectOnSpan(requestSpan, err.config.tracing.logger)
requestSpan.finish()

return Promise.reject(err)
}

export const addTracingPreRequestInterceptor = (http: AxiosInstance) => {
const requestTracingInterceptor = http.interceptors.request.use(preRequestInterceptor(http), undefined)
// Usando type assertion para compatibilidade com TypeScript 3.9.7
const requestTracingInterceptor = http.interceptors.request.use(
preRequestInterceptor(http) as any,
undefined
)

return { requestTracingInterceptor }
}

export const addTracingResponseInterceptor = (http: AxiosInstance) => {
const responseTracingInterceptor = http.interceptors.response.use(onResponseSuccess, onResponseError)
// Usando type assertion para compatibilidade com TypeScript 3.9.7
const responseTracingInterceptor = http.interceptors.response.use(
onResponseSuccess as any,
onResponseError as any
)

return { responseTracingInterceptor }
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'
import buildFullPath from 'axios/lib/core/buildFullPath'
import buildFullPath from '../../../../../../utils/buildFullPath'
import { Span } from 'opentracing'
import { ROUTER_CACHE_HEADER } from '../../../../../../constants'
import { CustomHttpTags, OpentracingTags } from '../../../../../../tracing/Tags'
Expand All @@ -12,7 +12,7 @@ export const injectRequestInfoOnSpan = (span: Span | undefined, http: AxiosInsta
[OpentracingTags.HTTP_URL]: buildFullPath(config.baseURL, http.getUri(config)),
})

span?.log({ 'request-headers': cloneAndSanitizeHeaders(config.headers) })
span?.log({ 'request-headers': cloneAndSanitizeHeaders(config.headers as any) })
}

// Response may be undefined in case of client timeout, invalid URL, ...
Expand Down
1 change: 1 addition & 0 deletions src/HttpClient/middlewares/tracing.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { AxiosError } from 'axios'
import { MiddlewaresTracingContext, RequestConfig } from '..'
import { IOContext } from '../../service/worker/runtime/typings'
import { ErrorReport, getTraceInfo } from '../../tracing'
Expand Down
4 changes: 2 additions & 2 deletions src/HttpClient/typings.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AxiosRequestConfig, AxiosResponse } from 'axios'
import { AxiosRequestConfig, AxiosResponse, RawAxiosResponseHeaders } from 'axios'
import { Middleware } from 'koa-compose'
import { Span } from 'opentracing'

Expand Down Expand Up @@ -48,7 +48,7 @@ export interface RequestConfig extends AxiosRequestConfig, RequestTracingConfig
memoizeable?: boolean
inflightKey?: InflightKeyGenerator
forceMaxAge?: number
responseEncoding?: BufferEncoding
responseEncoding?: BufferEncoding | string
nullIfNotFound?: boolean
ignoreRecorder?: boolean
}
Expand Down
Loading
Loading