import { Addon } from "@watchedcom/schema"; type Opts = { AddonClass: { new (props: P): C }; type: Addon["type"]; defaults?: () => Partial

; }; export const makeCreateFunction =

(opts: Opts) => { const createAddon = (props: Partial

): C => { return new opts.AddonClass(

{ ...(opts.defaults ? opts.defaults() : null), ...props, type: opts.type, }); }; return createAddon; };