@datalayer/core
Version:
[](https://datalayer.io)
82 lines (81 loc) • 2.72 kB
JavaScript
/*
* 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';