class BaseFunction {
  static #allowInstantiation = false;

  constructor(...args) {
    if (!BaseFunction.#allowInstantiation) {
      throw new Error(
        "Why are you trying to use 'new'? Classes are so 2015! Use our fancy 'run' method instead!"
      );
    }
    for (const [name, validator] of this.parameters()) {
      this[name] = validator(args.shift());
    }
  }

  parameters() {
    return [];
  }

  body() {
    return undefined;
  }

  static run(...args) {
    BaseFunction.#allowInstantiation = true;
    const instance = new this(...args);
    BaseFunction.#allowInstantiation = false;
    return instance.body();
  }
}

class Add extends BaseFunction {
  parameters() {
    return [
      ["a", (x) => Number(x)],
      ["b", (x) => Number(x)],
    ];
  }

  body() {
    return this.a + this.b;
  }
}

console.log(Add.run(5, 3)); // 8



  • sebastiancarlos@lemmy.sdf.orgOP
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    6 days ago

    I can confirm it’s Catppuccin Mocha. I am not currently aware of the background color issue, but I’ll look into the matter soon. Thanks for letting me know. Also how dare you. But thanks.

    • Chais@sh.itjust.works
      link
      fedilink
      arrow-up
      2
      ·
      6 days ago

      The background is most likely a color that is in the Mocha palette, just one that is intended for dark accents, not regular background.