@sebspark/openapi-client 4.1.1 → 4.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.ts","../src/graphql/types.ts","../src/graphql/client.ts"],"sourcesContent":[],"mappings":";;;;;;KA2BY,sBAAsB;iBACjB;;cAGJ,wBAAyB,QAAQ,8CAE5B,kBACf,iBAAiB;;;KC5BR,sBAAA,GAAuB,KAAK;;;;;;ADqBxC;AAIA;;;;;;IAGmB,CAAA,GAAA,EAAA,UAAA,EAAA,IC5BqB,CD4BrB,EAAA;;;oBCVG;MAlBV,CAAA;IAA4B,CAAA,EAAA,IAAA,CAAA,EAqB3B,cArB2B,CAAA,EAsBjC,OAtBiC,CAuBlC,WAvBkC,CAAA;MAAL,IAAA,EAyBrB,MAzBqB,CAAA,MAAA,EAAA,GAAA,CAAA;MAkBb,MAAA,CAAA,EAAA,CAAA;QAGT,OAAA,EAAA,MAAA;MAIC,CAAA,GAE0B,MAF1B,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,EAAA;IAE0B,CAAA,CAAA,CAAA;EAJlC,CAAA;EADC,GAAA,EAAA;IAgBqB;;;AAI5B;;;4BAJ4B,iBAAiB;ECpChC,CAAA;CACD;AAA2B,KDuC3B,wBAAA,GCvC2B;EAEtB,GAAA,EAAA,MAAA;EACkB,MAAA,EAAA,MAAA;CAAlB;;;cAJJ,+BACD,yBAA2B;UAEtB;UACA,kBAAkB;;;EFevB,WAAA,CAAA,IAAA,EEXQ,wBFYH;EAGJ,OAAA,CAAA,CAAA,CAAA,CAAA,KAoIZ,EAAA,MAAA,EAAA,SAAA,CAAA,EExIoD,MFwIpD,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EExI2E,OFwI3E,CExI2E,CFwI3E,CAAA;EApI6C,SAAA,CAAA,CAAA,EEctB,OFdsB,CAAA,OAAA,CAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.ts","../src/graphql/types.ts","../src/graphql/client.ts"],"mappings":";;;;;;KA2BY,gBAAA,MAAsB,CAAA;EAChC,aAAA,EAAe,aAAA;AAAA;AAAA,cAGJ,WAAA,aAAyB,OAAA,CAAQ,UAAA,GAC5C,OAAA,UACA,aAAA,GAAgB,aAAA,KACf,gBAAA,CAAiB,CAAA;;;KC5BR,sBAAA,GAAuB,IAAA,CAAK,UAAA;EACtC,IAAA;;;;;ADoBF;;;;;;;KCPM,GAAA,cACA,IAAA;MACE,IAAA;QACE,KAAA;QACA,SAAA,GAAY,MAAA;MAAA;IAAA,GAGhB,IAAA,GAAO,cAAA,GACN,OAAA,CACD,WAAA;MAEE,IAAA,EAAM,MAAA;MAEN,MAAA;QAAY,OAAA;MAAA,IAAoB,MAAA;IAAA;EAAA;EAItC,GAAA;IDN0B;;;;;;IAAA,CCavB,GAAA,aAAgB,IAAA,GAAO,cAAA,GAAiB,OAAA;EAAA;AAAA;AAAA,KAIjC,wBAAA;EACV,GAAA;EACA,MAAA;AAAA;;;cC1CW,oBAAA,WACD,sBAAA,GAA2B,sBAAA;EAE9B,MAAA,EAAQ,CAAA;EACR,MAAA,EAAQ,UAAA,QAAkB,SAAA;EAAA,QACzB,GAAA;EAAA,QACA,OAAA;cAEI,IAAA,EAAM,wBAAA;EAWL,OAAA,GAAA,CAAW,KAAA,UAAe,SAAA,GAAY,MAAA,oBAAuB,OAAA,CAAA,CAAA;EAkB7D,SAAA,CAAA,GAAS,OAAA;AAAA"}
package/dist/index.mjs CHANGED
@@ -28,16 +28,16 @@ const paramsSerializer = (format) => (params) => {
28
28
  continue;
29
29
  }
30
30
  value.forEach((v, ix) => {
31
- const value$1 = encodeValue(v);
31
+ const value = encodeValue(v);
32
32
  switch (format) {
33
33
  case "indices":
34
- s.push(`${title}[${ix}]=${value$1}`);
34
+ s.push(`${title}[${ix}]=${value}`);
35
35
  break;
36
36
  case "repeat":
37
- s.push(`${title}=${value$1}`);
37
+ s.push(`${title}=${value}`);
38
38
  break;
39
39
  default:
40
- s.push(`${title}[]=${value$1}`);
40
+ s.push(`${title}[]=${value}`);
41
41
  break;
42
42
  }
43
43
  });
@@ -151,7 +151,7 @@ const mergeArgs = (baseUrl, url, method, requestArgs, extras, global) => {
151
151
  const query = merge("query", global, requestArgs, extras);
152
152
  const headers = merge("headers", global, requestArgs, extras);
153
153
  const body = merge("body", global, requestArgs, extras);
154
- const retry$1 = merge("retry", global, requestArgs, extras);
154
+ const retry = merge("retry", global, requestArgs, extras);
155
155
  return {
156
156
  url: setParams(url, params),
157
157
  baseUrl,
@@ -159,14 +159,14 @@ const mergeArgs = (baseUrl, url, method, requestArgs, extras, global) => {
159
159
  params: query,
160
160
  headers,
161
161
  body,
162
- retry: retry$1,
162
+ retry,
163
163
  arrayFormat: global?.arrayFormat,
164
164
  httpsAgent: extras?.httpsAgent,
165
165
  httpAgent: extras?.httpAgent
166
166
  };
167
167
  };
168
168
  const merge = (prop, ...args) => Object.assign({}, ...args.map((a) => a?.[prop] || {}));
169
- const setParams = (url, params = {}) => Object.entries(params).reduce((url$1, [key, val]) => url$1.replace(new RegExp(`/:${key}(?!\\w|\\d)`, "g"), `/${val}`), url);
169
+ const setParams = (url, params = {}) => Object.entries(params).reduce((url, [key, val]) => url.replace(new RegExp(`/:${key}(?!\\w|\\d)`, "g"), `/${val}`), url);
170
170
 
171
171
  //#endregion
172
172
  //#region src/graphql/client.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["value","retry","url"],"sources":["../src/paramsSerializer.ts","../src/client.ts","../src/graphql/client.ts"],"sourcesContent":["import type { ArrayFormat } from '@sebspark/openapi-core'\n\ntype Param = boolean | string | number | Date | undefined | Array<Param>\ntype Params = Record<string, Param>\n\nconst encodeParam = (param: string) => encodeURIComponent(param)\nconst encodeValue = (param: Param, encodeCommas = false) => {\n if (param instanceof Date) {\n return encodeURIComponent(param.toISOString())\n }\n if (\n typeof param === 'number' ||\n typeof param === 'string' ||\n typeof param === 'boolean'\n ) {\n if (encodeCommas) {\n return encodeURIComponent(param)\n }\n\n return param\n .toString()\n .split(',')\n .map((p) => encodeURIComponent(p))\n .join(',')\n }\n\n return ''\n}\n\nexport const paramsSerializer = (format?: ArrayFormat) => (params?: Params) => {\n if (!params) {\n return ''\n }\n\n const s = []\n\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) {\n continue\n }\n\n if (Array.isArray(value)) {\n const title = encodeParam(key)\n\n if (format === 'comma') {\n s.push(`${title}=${value.map((v) => encodeValue(v, true)).join(',')}`)\n continue\n }\n\n value.forEach((v, ix) => {\n const value = encodeValue(v)\n\n switch (format) {\n case 'indices': {\n s.push(`${title}[${ix}]=${value}`)\n break\n }\n case 'repeat': {\n s.push(`${title}=${value}`)\n break\n }\n default: {\n s.push(`${title}[]=${value}`)\n break\n }\n }\n })\n } else {\n s.push(`${encodeParam(key)}=${encodeValue(value)}`)\n }\n }\n\n return s.join('&')\n}\n","import type {\n APIResponse,\n BaseClient,\n ClientOptions,\n RequestArgs,\n RequestOptions,\n} from '@sebspark/openapi-core'\nimport { fromAxiosError } from '@sebspark/openapi-core'\nimport { getLogger } from '@sebspark/otel'\nimport { retry } from '@sebspark/retry'\nimport type {\n AxiosError,\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n} from 'axios'\nimport axios from 'axios'\nimport createAuthRefreshInterceptor from 'axios-auth-refresh'\nimport { paramsSerializer } from './paramsSerializer'\n\nconst createAuthRefreshInterceptorFunc =\n (\n createAuthRefreshInterceptor as unknown as {\n default: typeof createAuthRefreshInterceptor\n }\n )?.default ?? createAuthRefreshInterceptor\n\nexport type TypedAxiosClient<T> = T & {\n axiosInstance: AxiosInstance\n}\n\nexport const TypedClient = <C extends Partial<BaseClient>>(\n baseURL: string,\n globalOptions?: ClientOptions\n): TypedAxiosClient<C> => {\n const axiosInstance = axios.create()\n\n const logger = getLogger('TypedClient')\n\n logger.debug(\n `client initialized with arrayFormat '${globalOptions?.arrayFormat}'`\n )\n\n if (globalOptions?.authorizationTokenGenerator) {\n logger.debug('authorizationTokenGenerator is set')\n\n axiosInstance.interceptors.request.use(async (request) => {\n const url = `${request.baseURL}${request.url}`\n logger.debug(`Intercepting request to ${url}`)\n\n if (globalOptions?.authorizationTokenGenerator && url) {\n try {\n const authorizationTokenHeaders =\n await globalOptions.authorizationTokenGenerator(url)\n\n if (authorizationTokenHeaders) {\n for (const key of Object.keys(authorizationTokenHeaders)) {\n const value = authorizationTokenHeaders[key]\n request.headers[key] = value\n }\n }\n } catch (error) {\n logger.error(`Error generating token for URL: ${url}`, error as Error)\n throw error\n }\n }\n return request\n })\n }\n\n if (globalOptions?.authorizationTokenRefresh) {\n const refreshAuthLogic = async (\n // biome-ignore lint/suspicious/noExplicitAny: Defined by dependency\n failedRequest: any\n ): Promise<AxiosResponse> => {\n if (!axios.isAxiosError(failedRequest)) {\n logger.error(\n 'Failed request is not an axios error',\n failedRequest as Error\n )\n throw failedRequest\n } else {\n logger.debug('Failed request', failedRequest)\n }\n\n const axiosError = failedRequest as AxiosError\n\n logger.debug('Failed request config', axiosError.config)\n\n const url = `${axiosError.config?.baseURL}${axiosError.config?.url}`\n if (globalOptions?.authorizationTokenRefresh && url) {\n logger.debug(`Refreshing token for URL ${url}`)\n try {\n await globalOptions?.authorizationTokenRefresh(url)\n } catch (error) {\n logger.error(`Error refreshing token for URL: ${url}`, error as Error)\n throw error\n }\n }\n\n return axiosError.response as AxiosResponse\n }\n\n createAuthRefreshInterceptorFunc(axiosInstance, refreshAuthLogic)\n }\n\n if (logger) {\n axiosInstance.interceptors.request.use((request) => {\n const requestObject = {\n url: request.url,\n params: request.params,\n headers: request.headers,\n }\n logger.debug('request', requestObject)\n return request\n })\n\n axiosInstance.interceptors.response.use((response) => {\n const responseObject = {\n data: response.data,\n config: response.config,\n headers: response.headers,\n }\n\n logger.debug('response', responseObject)\n return response\n })\n }\n\n const client: BaseClient = {\n get: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'get', args, opts, globalOptions),\n logger\n ),\n post: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'post', args, opts, globalOptions),\n logger\n ),\n put: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'put', args, opts, globalOptions),\n logger\n ),\n patch: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'patch', args, opts, globalOptions),\n logger\n ),\n delete: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'delete', args, opts, globalOptions),\n logger\n ),\n }\n\n return { ...client, axiosInstance } as TypedAxiosClient<C>\n}\n\nconst callServer = async <\n R extends APIResponse<\n unknown | undefined,\n Record<string, string> | undefined\n >,\n>(\n axiosInstance: AxiosInstance,\n args: Partial<ClientOptions & RequestArgs>,\n logger: ReturnType<typeof getLogger>\n): Promise<R> => {\n try {\n const serializer = paramsSerializer((args as ClientOptions).arrayFormat)\n\n logger.debug(`[callServer] typeof serializer: ${typeof serializer}`)\n\n const body =\n args.method?.toLowerCase() === 'get' ||\n args.method?.toLowerCase() === 'delete'\n ? undefined\n : args.body\n const { headers, data } = await retry(\n () =>\n axiosInstance.request({\n baseURL: args.baseUrl,\n url: args.url,\n method: args.method,\n headers: args.headers as AxiosRequestConfig['headers'],\n params: args.params,\n paramsSerializer: serializer,\n data: body,\n httpsAgent: args.httpsAgent,\n httpAgent: args.httpAgent,\n }),\n args.retry\n )\n return { headers, data } as R\n } catch (error) {\n throw fromAxiosError(error as AxiosError)\n }\n}\n\nconst mergeArgs = (\n baseUrl: string,\n url: string,\n method: string,\n requestArgs: RequestArgs | RequestOptions | undefined,\n extras: RequestOptions | undefined,\n global: ClientOptions | undefined\n): Partial<ClientOptions & RequestArgs> => {\n const params = merge('params', global, requestArgs, extras)\n const query = merge('query', global, requestArgs, extras)\n const headers = merge('headers', global, requestArgs, extras)\n const body = merge('body', global, requestArgs, extras)\n const retry = merge('retry', global, requestArgs, extras)\n const merged: Partial<ClientOptions & RequestArgs> = {\n url: setParams(url, params),\n baseUrl,\n method,\n params: query,\n headers,\n body,\n retry,\n arrayFormat: global?.arrayFormat,\n httpsAgent: extras?.httpsAgent,\n httpAgent: extras?.httpAgent,\n }\n\n return merged\n}\n\nconst merge = (\n prop: keyof (ClientOptions & RequestArgs),\n // biome-ignore lint/suspicious/noExplicitAny: it is any\n ...args: (any | undefined)[]\n // biome-ignore lint/suspicious/noExplicitAny: it is any\n): any => Object.assign({}, ...args.map((a) => a?.[prop] || {}))\n\nconst setParams = (url: string, params: Record<string, string> = {}): string =>\n Object.entries(params).reduce(\n (url, [key, val]) =>\n url.replace(new RegExp(`/:${key}(?!\\\\w|\\\\d)`, 'g'), `/${val}`),\n url\n )\n","import type { ClientOptions } from '@sebspark/openapi-core'\nimport { getLogger } from '@sebspark/otel'\nimport { TypedClient } from '../client'\nimport type {\n GatewayGraphqlClientArgs,\n GatewayGraphqlClient as GatewayGraphqlClientType,\n} from './types'\n\nexport class GatewayGraphqlClient<\n T extends GatewayGraphqlClientType = GatewayGraphqlClientType,\n> {\n public client: T\n public logger: ReturnType<typeof getLogger>\n private uri: string\n private options: ClientOptions\n\n constructor(args: GatewayGraphqlClientArgs) {\n this.uri = args.uri\n this.logger = getLogger('GatewayGraphqlClient')\n this.options = {\n headers: {\n 'x-api-key': args.apiKey,\n },\n }\n this.client = TypedClient<T>(args.uri, this.options)\n }\n\n public async graphql<K>(query: string, variables?: Record<string, unknown>) {\n try {\n const response = await this.client.post('/graphql', {\n body: { query: query.trim(), variables },\n })\n\n if (response.data.errors) {\n this.logger.error(`Error posting graphql query to: ${this.uri}`)\n throw new Error(response.data.errors.map((e) => e.message).join('\\n'))\n }\n\n return response.data.data as K\n } catch (error) {\n this.logger.error(`Error posting graphql: ${this.uri}`)\n throw error\n }\n }\n\n public async isHealthy() {\n try {\n await this.client.get('/health')\n return true\n } catch (error) {\n this.logger.error(error as Error)\n }\n return false\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/paramsSerializer.ts","../src/client.ts","../src/graphql/client.ts"],"sourcesContent":["import type { ArrayFormat } from '@sebspark/openapi-core'\n\ntype Param = boolean | string | number | Date | undefined | Array<Param>\ntype Params = Record<string, Param>\n\nconst encodeParam = (param: string) => encodeURIComponent(param)\nconst encodeValue = (param: Param, encodeCommas = false) => {\n if (param instanceof Date) {\n return encodeURIComponent(param.toISOString())\n }\n if (\n typeof param === 'number' ||\n typeof param === 'string' ||\n typeof param === 'boolean'\n ) {\n if (encodeCommas) {\n return encodeURIComponent(param)\n }\n\n return param\n .toString()\n .split(',')\n .map((p) => encodeURIComponent(p))\n .join(',')\n }\n\n return ''\n}\n\nexport const paramsSerializer = (format?: ArrayFormat) => (params?: Params) => {\n if (!params) {\n return ''\n }\n\n const s = []\n\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) {\n continue\n }\n\n if (Array.isArray(value)) {\n const title = encodeParam(key)\n\n if (format === 'comma') {\n s.push(`${title}=${value.map((v) => encodeValue(v, true)).join(',')}`)\n continue\n }\n\n value.forEach((v, ix) => {\n const value = encodeValue(v)\n\n switch (format) {\n case 'indices': {\n s.push(`${title}[${ix}]=${value}`)\n break\n }\n case 'repeat': {\n s.push(`${title}=${value}`)\n break\n }\n default: {\n s.push(`${title}[]=${value}`)\n break\n }\n }\n })\n } else {\n s.push(`${encodeParam(key)}=${encodeValue(value)}`)\n }\n }\n\n return s.join('&')\n}\n","import type {\n APIResponse,\n BaseClient,\n ClientOptions,\n RequestArgs,\n RequestOptions,\n} from '@sebspark/openapi-core'\nimport { fromAxiosError } from '@sebspark/openapi-core'\nimport { getLogger } from '@sebspark/otel'\nimport { retry } from '@sebspark/retry'\nimport type {\n AxiosError,\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n} from 'axios'\nimport axios from 'axios'\nimport createAuthRefreshInterceptor from 'axios-auth-refresh'\nimport { paramsSerializer } from './paramsSerializer'\n\nconst createAuthRefreshInterceptorFunc =\n (\n createAuthRefreshInterceptor as unknown as {\n default: typeof createAuthRefreshInterceptor\n }\n )?.default ?? createAuthRefreshInterceptor\n\nexport type TypedAxiosClient<T> = T & {\n axiosInstance: AxiosInstance\n}\n\nexport const TypedClient = <C extends Partial<BaseClient>>(\n baseURL: string,\n globalOptions?: ClientOptions\n): TypedAxiosClient<C> => {\n const axiosInstance = axios.create()\n\n const logger = getLogger('TypedClient')\n\n logger.debug(\n `client initialized with arrayFormat '${globalOptions?.arrayFormat}'`\n )\n\n if (globalOptions?.authorizationTokenGenerator) {\n logger.debug('authorizationTokenGenerator is set')\n\n axiosInstance.interceptors.request.use(async (request) => {\n const url = `${request.baseURL}${request.url}`\n logger.debug(`Intercepting request to ${url}`)\n\n if (globalOptions?.authorizationTokenGenerator && url) {\n try {\n const authorizationTokenHeaders =\n await globalOptions.authorizationTokenGenerator(url)\n\n if (authorizationTokenHeaders) {\n for (const key of Object.keys(authorizationTokenHeaders)) {\n const value = authorizationTokenHeaders[key]\n request.headers[key] = value\n }\n }\n } catch (error) {\n logger.error(`Error generating token for URL: ${url}`, error as Error)\n throw error\n }\n }\n return request\n })\n }\n\n if (globalOptions?.authorizationTokenRefresh) {\n const refreshAuthLogic = async (\n // biome-ignore lint/suspicious/noExplicitAny: Defined by dependency\n failedRequest: any\n ): Promise<AxiosResponse> => {\n if (!axios.isAxiosError(failedRequest)) {\n logger.error(\n 'Failed request is not an axios error',\n failedRequest as Error\n )\n throw failedRequest\n } else {\n logger.debug('Failed request', failedRequest)\n }\n\n const axiosError = failedRequest as AxiosError\n\n logger.debug('Failed request config', axiosError.config)\n\n const url = `${axiosError.config?.baseURL}${axiosError.config?.url}`\n if (globalOptions?.authorizationTokenRefresh && url) {\n logger.debug(`Refreshing token for URL ${url}`)\n try {\n await globalOptions?.authorizationTokenRefresh(url)\n } catch (error) {\n logger.error(`Error refreshing token for URL: ${url}`, error as Error)\n throw error\n }\n }\n\n return axiosError.response as AxiosResponse\n }\n\n createAuthRefreshInterceptorFunc(axiosInstance, refreshAuthLogic)\n }\n\n if (logger) {\n axiosInstance.interceptors.request.use((request) => {\n const requestObject = {\n url: request.url,\n params: request.params,\n headers: request.headers,\n }\n logger.debug('request', requestObject)\n return request\n })\n\n axiosInstance.interceptors.response.use((response) => {\n const responseObject = {\n data: response.data,\n config: response.config,\n headers: response.headers,\n }\n\n logger.debug('response', responseObject)\n return response\n })\n }\n\n const client: BaseClient = {\n get: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'get', args, opts, globalOptions),\n logger\n ),\n post: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'post', args, opts, globalOptions),\n logger\n ),\n put: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'put', args, opts, globalOptions),\n logger\n ),\n patch: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'patch', args, opts, globalOptions),\n logger\n ),\n delete: (url, args, opts) =>\n callServer(\n axiosInstance,\n mergeArgs(baseURL, url, 'delete', args, opts, globalOptions),\n logger\n ),\n }\n\n return { ...client, axiosInstance } as TypedAxiosClient<C>\n}\n\nconst callServer = async <\n R extends APIResponse<\n unknown | undefined,\n Record<string, string> | undefined\n >,\n>(\n axiosInstance: AxiosInstance,\n args: Partial<ClientOptions & RequestArgs>,\n logger: ReturnType<typeof getLogger>\n): Promise<R> => {\n try {\n const serializer = paramsSerializer((args as ClientOptions).arrayFormat)\n\n logger.debug(`[callServer] typeof serializer: ${typeof serializer}`)\n\n const body =\n args.method?.toLowerCase() === 'get' ||\n args.method?.toLowerCase() === 'delete'\n ? undefined\n : args.body\n const { headers, data } = await retry(\n () =>\n axiosInstance.request({\n baseURL: args.baseUrl,\n url: args.url,\n method: args.method,\n headers: args.headers as AxiosRequestConfig['headers'],\n params: args.params,\n paramsSerializer: serializer,\n data: body,\n httpsAgent: args.httpsAgent,\n httpAgent: args.httpAgent,\n }),\n args.retry\n )\n return { headers, data } as R\n } catch (error) {\n throw fromAxiosError(error as AxiosError)\n }\n}\n\nconst mergeArgs = (\n baseUrl: string,\n url: string,\n method: string,\n requestArgs: RequestArgs | RequestOptions | undefined,\n extras: RequestOptions | undefined,\n global: ClientOptions | undefined\n): Partial<ClientOptions & RequestArgs> => {\n const params = merge('params', global, requestArgs, extras)\n const query = merge('query', global, requestArgs, extras)\n const headers = merge('headers', global, requestArgs, extras)\n const body = merge('body', global, requestArgs, extras)\n const retry = merge('retry', global, requestArgs, extras)\n const merged: Partial<ClientOptions & RequestArgs> = {\n url: setParams(url, params),\n baseUrl,\n method,\n params: query,\n headers,\n body,\n retry,\n arrayFormat: global?.arrayFormat,\n httpsAgent: extras?.httpsAgent,\n httpAgent: extras?.httpAgent,\n }\n\n return merged\n}\n\nconst merge = (\n prop: keyof (ClientOptions & RequestArgs),\n // biome-ignore lint/suspicious/noExplicitAny: it is any\n ...args: (any | undefined)[]\n // biome-ignore lint/suspicious/noExplicitAny: it is any\n): any => Object.assign({}, ...args.map((a) => a?.[prop] || {}))\n\nconst setParams = (url: string, params: Record<string, string> = {}): string =>\n Object.entries(params).reduce(\n (url, [key, val]) =>\n url.replace(new RegExp(`/:${key}(?!\\\\w|\\\\d)`, 'g'), `/${val}`),\n url\n )\n","import type { ClientOptions } from '@sebspark/openapi-core'\nimport { getLogger } from '@sebspark/otel'\nimport { TypedClient } from '../client'\nimport type {\n GatewayGraphqlClientArgs,\n GatewayGraphqlClient as GatewayGraphqlClientType,\n} from './types'\n\nexport class GatewayGraphqlClient<\n T extends GatewayGraphqlClientType = GatewayGraphqlClientType,\n> {\n public client: T\n public logger: ReturnType<typeof getLogger>\n private uri: string\n private options: ClientOptions\n\n constructor(args: GatewayGraphqlClientArgs) {\n this.uri = args.uri\n this.logger = getLogger('GatewayGraphqlClient')\n this.options = {\n headers: {\n 'x-api-key': args.apiKey,\n },\n }\n this.client = TypedClient<T>(args.uri, this.options)\n }\n\n public async graphql<K>(query: string, variables?: Record<string, unknown>) {\n try {\n const response = await this.client.post('/graphql', {\n body: { query: query.trim(), variables },\n })\n\n if (response.data.errors) {\n this.logger.error(`Error posting graphql query to: ${this.uri}`)\n throw new Error(response.data.errors.map((e) => e.message).join('\\n'))\n }\n\n return response.data.data as K\n } catch (error) {\n this.logger.error(`Error posting graphql: ${this.uri}`)\n throw error\n }\n }\n\n public async isHealthy() {\n try {\n await this.client.get('/health')\n return true\n } catch (error) {\n this.logger.error(error as Error)\n }\n return false\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sebspark/openapi-client",
3
- "version": "4.1.1",
3
+ "version": "4.1.3",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",
@@ -25,21 +25,19 @@
25
25
  "typecheck": "vitest --typecheck.only --passWithNoTests"
26
26
  },
27
27
  "devDependencies": {
28
- "@sebspark/openapi-typegen": "*",
29
- "@sebspark/otel": "*",
30
- "@sebspark/tsconfig": "*",
28
+ "@sebspark/openapi-typegen": "5.0.11",
31
29
  "express": "5.2.1",
32
- "nock": "14.0.10",
33
- "vitest": "4.0.16"
30
+ "nock": "14.0.10"
34
31
  },
35
32
  "dependencies": {
36
- "@sebspark/openapi-core": "*",
37
- "@sebspark/retry": "*",
38
- "@types/express-serve-static-core": "5.1.0",
39
- "axios": "1.13.2",
33
+ "@sebspark/openapi-core": "4.0.13",
34
+ "@sebspark/otel": "2.0.11",
35
+ "@sebspark/retry": "1.0.6",
36
+ "axios": "1.13.4",
40
37
  "axios-auth-refresh": "3.3.6"
41
38
  },
42
- "peerDependencies": {
43
- "@sebspark/otel": ">=2.0.9"
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/seb-oss/Spark-packages.git"
44
42
  }
45
43
  }