components/script-manager/ScriptManagerServer.js

import path from 'node:path';

import ServerPluginScripting from '@soundworks/plugin-scripting/server.js';

import ScriptManager from './ScriptManager.js';

/**
 * Server-side representation of the {@link ScriptManager}
 *
 * @extends {ScriptManager}
 */
class ScriptManagerServer extends ScriptManager {
  constructor(como, name) {
    super(como, name);

    this.como.pluginManager.register(`${this.name}:scripting`, ServerPluginScripting);
  }

  async start() {
    await super.start();

    this.como.project.onUpdate(({ dirname }) => {
      if (dirname !== null) {
        const scriptDirname = path.join(dirname, this.como.constants.PROJECT_SCRIPTS_DIRNAME);
        this.scripting.switch(scriptDirname);
      } else {
        this.scripting.switch(null);
      }
    }, true);
  }
}

export default ScriptManagerServer;