diff --git a/src/client.ts b/src/client.ts index 90275e7..3964024 100644 --- a/src/client.ts +++ b/src/client.ts @@ -1,6 +1,7 @@ import createOpenApiFetchClient from "openapi-fetch"; import { createAuthMiddleware, + createDefaultHeadersMiddleware, createVersionPrefixMiddleware, defaultTokenCache, extractAccountId, @@ -20,10 +21,11 @@ export const createClient = (options: ClientOptions) => { const accountId = extractAccountId(config.audience); const authMiddleware = createAuthMiddleware(config, core); + const headersMiddleware = createDefaultHeadersMiddleware(); const versionPrefixMiddleware = createVersionPrefixMiddleware(); - core.use(versionPrefixMiddleware, authMiddleware); - checkout.use(versionPrefixMiddleware, authMiddleware); + core.use(versionPrefixMiddleware, authMiddleware, headersMiddleware); + checkout.use(versionPrefixMiddleware, authMiddleware, headersMiddleware); return { checkout, core, accountId }; }; diff --git a/src/middleware.ts b/src/middleware.ts index 6e66747..c1a9821 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,4 +1,5 @@ import type { Client, Middleware } from "openapi-fetch"; +import { version } from "../package.json"; import type { CorePaths } from "./types"; import type { ClientOptions, TokenCache } from "./types"; @@ -102,6 +103,17 @@ export const createAuthMiddleware = ( }; }; +export const createDefaultHeadersMiddleware = (): Middleware => ({ + onRequest({ request }) { + if (!request.headers.get("User-Agent")) { + request.headers.set( + "User-Agent", + `Dintero.Node.SDK/${version} (+https://github.com/Dintero/Dintero.Node.SDK)`, + ); + } + }, +}); + export const createVersionPrefixMiddleware = (): Middleware => ({ async onRequest({ request, schemaPath }) { if (schemaPath.startsWith("/v")) { diff --git a/test/client.test.ts b/test/client.test.ts index 34b6135..d75e0bc 100644 --- a/test/client.test.ts +++ b/test/client.test.ts @@ -1,4 +1,3 @@ -import { afterEach, beforeAll, describe, expect, test } from "@jest/globals"; import { http, HttpResponse } from "msw"; import { setupServer } from "msw/node"; import { createClient } from "../src/client"; diff --git a/tsconfig.json b/tsconfig.json index a9be69c..38cc260 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,7 @@ "strict": true, "baseUrl": "./", "types": ["jest", "node"], + "resolveJsonModule": true, "noUnusedLocals": true, "skipLibCheck": true, "noUncheckedIndexedAccess": true,