{"version":3,"sources":["../../src/mockable/index.ts","../../src/mockable/mockable.ts"],"sourcesContent":["import { mockable, mock, reset } from './mockable'\n\nexport default mockable\nexport { mockable, mock, reset }\nexport type { Mockable } from './mockable'","const OVERRIDES = Symbol('overrides')\n\nexport type Mockable<T extends Record<string, any>> = T & {\n  [OVERRIDES]: Partial<T>\n}\n\nexport function mock<T extends Record<string, any>>(value: Mockable<T>, custom: Partial<T>) {\n  Object.assign(value[OVERRIDES], custom)\n  return value\n}\n\nexport function reset<T extends Record<string, any>>(value: Mockable<T>) {\n  value[OVERRIDES] = {}\n}\n\nexport function mockable<T extends Record<string, any>>(value: T): Mockable<T> {\n  const overrides: Partial<T> = {}\n  \n  const proxy = {} as Mockable<T>\n  Object.defineProperty(proxy, OVERRIDES, {\n    value: overrides,\n    writable: true,\n    enumerable: false,\n    configurable: false,\n  })\n  \n  for (const name of Object.keys(value)) {\n    Object.defineProperty(proxy, name, {\n      get: () => (name in proxy[OVERRIDES] ? proxy[OVERRIDES][name] : value[name]),\n      enumerable: true,\n      configurable: false,\n    })\n  }\n  \n  return proxy\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAM,YAAY,OAAO,WAAW;AAM7B,SAAS,KAAoC,OAAoB,QAAoB;AAC1F,SAAO,OAAO,MAAM,SAAS,GAAG,MAAM;AACtC,SAAO;AACT;AAEO,SAAS,MAAqC,OAAoB;AACvE,QAAM,SAAS,IAAI,CAAC;AACtB;AAEO,SAAS,SAAwC,OAAuB;AAC7E,QAAM,YAAwB,CAAC;AAE/B,QAAM,QAAQ,CAAC;AACf,SAAO,eAAe,OAAO,WAAW;AAAA,IACtC,OAAO;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB,CAAC;AAED,aAAW,QAAQ,OAAO,KAAK,KAAK,GAAG;AACrC,WAAO,eAAe,OAAO,MAAM;AAAA,MACjC,KAAK,MAAO,QAAQ,MAAM,SAAS,IAAI,MAAM,SAAS,EAAE,IAAI,IAAI,MAAM,IAAI;AAAA,MAC1E,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;ADjCA,IAAO,mBAAQ;","names":[]}