mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch> Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
36 lines
838 B
TypeScript
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),
|
|
};
|
|
},
|
|
};
|
|
};
|