Files
directus/sdk/src/client.ts
Brainslug 975f75a9ad SDK Make globals configurable (#19606)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-09-08 15:22:42 +02:00

36 lines
838 B
TypeScript

import type { ClientGlobals, ClientOptions, DirectusClient } from './types/client.js';
/**
* The default globals supplied to the client
*/
const defaultGlobals = {
fetch: globalThis.fetch,
WebSocket: globalThis.WebSocket,
URL: globalThis.URL,
} as ClientGlobals;
/**
* Creates a client to communicate with a Directus app.
*
* @param url The URL to the Directus app.
* @param config The optional configuration.
*
* @returns A Directus client.
*/
export const createDirectus = <Schema extends object = any>(
url: string,
options: ClientOptions = {}
): DirectusClient<Schema> => {
const globals = options.globals ? { ...defaultGlobals, ...options.globals } : defaultGlobals;
return {
globals,
url: new globals.URL(url),
with(createExtension) {
return {
...this,
...createExtension(this),
};
},
};
};