Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 5 additions & 0 deletions packages/js-client-grpc/src/api-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {Qdrant} from './proto/qdrant_pb.js';
import {PACKAGE_VERSION} from './client-version.js';
import {QdrantClientResourceExhaustedError} from './errors.js';
import {Compression} from '@connectrpc/connect/protocol';
import {getContextHeaders} from './context-headers.js';

type Clients = {
collections: Client<typeof Collections>;
Expand Down Expand Up @@ -99,6 +100,10 @@ export function createApis(baseUrl: string, {timeout, apiKey, compression, heade
return next(req);
});
}
interceptors.push((next) => (req) => {
for (const [key, value] of Object.entries(getContextHeaders())) req.header.set(key, value);
return next(req);
});
if (Number.isFinite(timeout)) {
interceptors.push((next) => async (req) => {
const controller = new AbortController();
Expand Down
15 changes: 15 additions & 0 deletions packages/js-client-grpc/src/context-headers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
let _current: Record<string, string> = {};

export function withHeaders<T>(headers: Record<string, string>, fn: () => T): T {
const previous = _current;
_current = {...previous, ...headers};
try {
return fn();
} finally {
_current = previous;
}
}

export function getContextHeaders(): Record<string, string> {
return _current;
}
1 change: 1 addition & 0 deletions packages/js-client-grpc/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export {QdrantClient, QdrantClientParams} from './qdrant-client.js';
export {withHeaders} from './context-headers.js';
export * from './errors.js';
export {ConnectError, Code as ConnectErrorCode} from '@connectrpc/connect';
export * from './proto/collections_pb.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/js-client-rest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
},
"dependencies": {
"@qdrant/openapi-typescript-fetch": "1.2.6",
"undici": "^6.23.0"
"undici": "^6.24.0"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Recommended by pnpm audit --prod.

},
"devDependencies": {
"@rollup/plugin-commonjs": "^24.1.0",
Expand Down
9 changes: 9 additions & 0 deletions packages/js-client-rest/src/api-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
import {RestArgs} from './types.js';
import {createClientApi} from './openapi/generated_api_client.js';
import {ClientApi} from './openapi/generated_client_type.js';
import {getContextHeaders} from './context-headers.js';

export type Client = ReturnType<typeof Fetcher.for<paths>>;

Expand All @@ -21,6 +22,14 @@ export type OpenApiClient = ReturnType<typeof createApis>;

export function createClient(baseUrl: string, {headers, timeout, connections}: RestArgs): Client {
const use: Middleware[] = [];
use.push((url, init, next) => {
const ctx = getContextHeaders();
const entries = Object.entries(ctx);
if (entries.length === 0) return next(url, init);
const merged = new Headers(init.headers as HeadersInit);
for (const [key, value] of entries) merged.set(key, value);
return next(url, {...init, headers: merged});
});
if (Number.isFinite(timeout)) {
use.push(async (url, init, next) => {
const controller = new AbortController();
Expand Down
15 changes: 15 additions & 0 deletions packages/js-client-rest/src/context-headers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
let _current: Record<string, string> = {};

export function withHeaders<T>(headers: Record<string, string>, fn: () => T): T {
const previous = _current;
_current = {...previous, ...headers};
try {
return fn();
} finally {
_current = previous;
}
}

export function getContextHeaders(): Record<string, string> {
return _current;
}
1 change: 1 addition & 0 deletions packages/js-client-rest/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export {QdrantClient, QdrantClientParams} from './qdrant-client.js';
export {withHeaders} from './context-headers.js';
export {Schemas} from './types.js';
export * from './errors.js';
10 changes: 5 additions & 5 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading