UNPKG

@datalayer/core

Version:

[![Datalayer](https://assets.datalayer.tech/datalayer-25.svg)](https://datalayer.io)

82 lines (81 loc) 2.72 kB
/* * Copyright (c) 2023-2025 Datalayer, Inc. * Distributed under the terms of the Modified BSD License. */ /** * Main Datalayer Client with intuitive mixin-based API. * Provides unified, flat API for all Datalayer platform services through TypeScript mixins. * * @module client * * @example * ```typescript * const client = new DatalayerClient({ * token: 'your-api-token' * }); * * const user = await client.whoami(); * const runtime = await client.createRuntime(config); * ``` */ import { DatalayerClientBase, } from './base'; import { IAMMixin } from './mixins/IAMMixin'; import { RuntimesMixin } from './mixins/RuntimesMixin'; import { SpacerMixin } from './mixins/SpacerMixin'; /** * Helper function to compose mixins in a more readable way. * Applies mixins in the order provided. * * @param mixins - Array of mixin functions to apply * @returns The composed class with all mixins applied */ function composeMixins(...mixins) { return mixins.reduce((base, mixin) => mixin(base), DatalayerClientBase); } // Apply mixins to the base class using the helper const DatalayerClientWithMixins = composeMixins(IAMMixin, RuntimesMixin, SpacerMixin); /** * Main Datalayer Client providing unified access to all platform services. * Uses TypeScript mixins to provide a flat, discoverable API. * * @example * ```typescript * const client = new DatalayerClient({ * token: 'your-token' * }); * * const user = await client.whoami(); * const runtime = await client.createRuntime({ * environment_name: 'python-cpu-env', * credits_limit: 100 * }); * ``` */ export class DatalayerClient extends DatalayerClientWithMixins { /** * Create a DatalayerClient instance. * * @param config - Client configuration options */ constructor(config) { super(config); // Wrap all methods with handlers if configured this.wrapAllMethods(); } } export { DatalayerClientBase }; // Export models for use by consumers export { UserDTO as User } from './../models/UserDTO'; export { RuntimeDTO as Runtime } from '../models/RuntimeDTO'; export { EnvironmentDTO as Environment } from '../models/EnvironmentDTO'; export { RuntimeSnapshotDTO as Snapshot } from '../models/RuntimeSnapshotDTO'; export { SpaceDTO as Space } from '../models/SpaceDTO'; export { NotebookDTO as Notebook } from '../models/NotebookDTO'; export { LexicalDTO } from '../models/LexicalDTO'; export { CreditsDTO as Credits } from '../models/CreditsDTO'; export { ItemDTO as Item } from '../models/ItemDTO'; export { HealthCheck } from '../models/HealthCheck'; // Export constants export { ItemTypes } from './constants'; // Export authentication module export * from './auth';