core/ComoClient.js

import ComoNode from './ComoNode.js';

import ClientPluginPlatformInit from '@soundworks/plugin-platform-init/client.js';

// components
import SourceManagerClient from '../components/source-manager/SourceManagerClient.js';
import ProjectManagerClient from '../components/project-manager/ProjectManagerClient.js';
import ScriptManagerClient from '../components/script-manager/ScriptManagerClient.js';
import SoundbankManagerClient from '../components/soundbank-manager/SoundbankManagerClient.js';
import SessionManagerClient from '../components/session-manager/SessionManagerClient.js';
import PlayerManagerClient from '../components/player-manager/PlayerManagerClient.js';
import KeyValueStoreClient from '../components/key-value-store/KeyValueStoreClient.js';

/**
 * Server-side representation of a ComoNode
 *
 * @extends ComoNode
 * @examplekeyValueStore
 * import { Client } from '@soundworks/core/client.js';
 * import { ComoClient } from '@ircam/como/client.js';
 *
 * const client = new Client(config);
 * const como = new ComoClient(client);
 * await como.start();
 */
class ComoClient extends ComoNode {
  /**
   * Constructs a new ComoClient instance
   *
   * @param {Client} node - Instance of soundworks client
   */
  constructor(node) {
    super(node);

    this.pluginManager.register('platform-init', ClientPluginPlatformInit, {
      audioContext: this.audioContext,
    });

    /**
     * @member sourceManager
     * @memberof ComoClient#
     * @readonly
     * @type {SourceManagerClient}
     */
    new SourceManagerClient(this, 'sourceManager');
    /**
     * @member projectManager
     * @memberof ComoClient#
     * @readonly
     * @type {ProjectManagerClient}
     */
    new ProjectManagerClient(this, 'projectManager');
    /**
     * @member scriptManager
     * @memberof ComoClient#
     * @readonly
     * @type {ScriptManagerClient}
     */
    new ScriptManagerClient(this, 'scriptManager');
    /**
     * @member soundbankManager
     * @memberof ComoClient#
     * @readonly
     * @type {SoundbankManagerClient}
     */
    new SoundbankManagerClient(this, 'soundbankManager');
    /**
     * @member sessionManager
     * @memberof ComoClient#
     * @readonly
     * @type {SessionManagerClient}
     */
    new SessionManagerClient(this, 'sessionManager');
    /**
     * @member playerManager
     * @memberof ComoClient#
     * @readonly
     * @type {PlayerManagerClient}
     */
    new PlayerManagerClient(this, 'playerManager');
    /**
     * @member keyValueStore
     * @memberof ComoClient#
     * @readonly
     * @type {KeyValueStoreClient}
     */
    new KeyValueStoreClient(this, 'keyValueStore');
  }
}

export default ComoClient;