
import { withCoreAddons } from "./addons";
import { withCoreDirectives } from "./directives";
import { withCorePlugins } from "./plugins";
import { withCoreScalars } from "./scalars";

export namespace withCoreFeatures {
  export interface Options {
    directives?: withCoreDirectives.Options;
    plugins?   : withCorePlugins.Options;
  }
}

export function withCoreFeatures (
  options: withCoreFeatures.Options = { }
) {
  withCoreAddons();

  return [
    ...withCoreScalars(), // Must be first
    ...withCoreDirectives(options.directives),
    ...withCorePlugins(options.plugins),
  ];
}
