{"version":3,"file":"applyMixins.mjs","names":[],"sources":["../../../src/util/applyMixins.ts"],"sourcesContent":["import type { Constructor } from '../typedefs';\n\n/***\n * https://www.typescriptlang.org/docs/handbook/mixins.html#alternative-pattern\n */\nexport function applyMixins<T extends Constructor, S extends Constructor>(\n  derivedCtor: T,\n  constructors: S[],\n) {\n  constructors.forEach((baseCtor) => {\n    Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n      name !== 'constructor' &&\n        Object.defineProperty(\n          derivedCtor.prototype,\n          name,\n          Object.getOwnPropertyDescriptor(baseCtor.prototype, name) ||\n            Object.create(null),\n        );\n    });\n  });\n  return derivedCtor as T & { prototype: InstanceType<T & S> };\n}\n"],"mappings":";;;;AAKA,SAAgB,YACd,aACA,cACA;AACA,cAAa,SAAS,aAAa;AACjC,SAAO,oBAAoB,SAAS,UAAU,CAAC,SAAS,SAAS;AAC/D,YAAS,iBACP,OAAO,eACL,YAAY,WACZ,MACA,OAAO,yBAAyB,SAAS,WAAW,KAAK,IACvD,OAAO,OAAO,KAAK,CACtB;IACH;GACF;AACF,QAAO"}