{"version":3,"file":"runtime-D1TsO5tA.cjs","sources":["../src/runtime.ts"],"sourcesContent":["export interface Descriptor {\n  configurable?: boolean;\n  enumerable?: boolean;\n  writable?: boolean;\n  get?(): any;\n  set?(v: any): void;\n  initializer?: null | (() => any);\n  value?: any;\n}\nexport type LegacyDecorator = (\n  target: object,\n  prop: unknown,\n  desc: Descriptor,\n) => Descriptor | null | undefined | void;\n\nexport type LegacyClassDecorator = (target: new (...args: any) => any) =>\n  | {\n      new (...args: any): any;\n    }\n  | null\n  | undefined\n  | void;\n\nconst deferred: WeakMap<\n  object,\n  Map<string | number | symbol, Descriptor>\n> = new WeakMap();\n\nfunction deferDecorator(\n  proto: object,\n  prop: string | number | symbol,\n  desc: Descriptor,\n): void {\n  let map = deferred.get(proto);\n  if (!map) {\n    map = new Map();\n    deferred.set(proto, map);\n  }\n  map.set(prop, desc);\n}\n\nfunction findDeferredDecorator(\n  target: object,\n  prop: string | number | symbol,\n): Descriptor | undefined {\n  let cursor: object = (target as any).prototype;\n  while (cursor) {\n    let desc = deferred.get(cursor)?.get(prop);\n    if (desc) {\n      return desc;\n    }\n    cursor = Object.getPrototypeOf(cursor);\n  }\n}\n\nfunction decorateFieldV1(\n  target: { prototype: object },\n  prop: string | number | symbol,\n  decorators: LegacyDecorator[],\n  initializer?: () => any,\n): void {\n  return decorateFieldV2(target.prototype, prop, decorators, initializer);\n}\n\nfunction decorateFieldV2(\n  prototype: object,\n  prop: string | number | symbol,\n  decorators: LegacyDecorator[],\n  initializer?: () => any,\n): void {\n  let desc: Descriptor = {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null,\n  };\n  if (initializer) {\n    desc.initializer = initializer;\n  }\n  for (let decorator of decorators) {\n    desc = decorator(prototype, prop, desc) || desc;\n  }\n  if (desc.initializer === undefined) {\n    Object.defineProperty(prototype, prop, desc);\n  } else {\n    deferDecorator(prototype, prop, desc);\n  }\n}\n\nfunction decorateMethodV1(\n  { prototype }: { prototype: object },\n  prop: string | number | symbol,\n  decorators: LegacyDecorator[],\n): void {\n  return decorateMethodV2(prototype, prop, decorators);\n}\n\nfunction decorateMethodV2(\n  prototype: object,\n  prop: string | number | symbol,\n  decorators: LegacyDecorator[],\n): void {\n  const origDesc = Object.getOwnPropertyDescriptor(prototype, prop);\n  let desc: Descriptor = { ...origDesc };\n  for (let decorator of decorators) {\n    desc = decorator(prototype, prop, desc) || desc;\n  }\n  if (desc.initializer !== undefined) {\n    desc.value = desc.initializer ? desc.initializer.call(prototype) : void 0;\n    desc.initializer = undefined;\n  }\n  Object.defineProperty(prototype, prop, desc);\n}\n\nfunction initializeDeferredDecorator(\n  target: object,\n  prop: string | number | symbol,\n): void {\n  let desc = findDeferredDecorator(target.constructor, prop);\n  if (desc) {\n    Object.defineProperty(target, prop, {\n      enumerable: desc.enumerable,\n      configurable: desc.configurable,\n      writable: desc.writable,\n      value: desc.initializer ? desc.initializer.call(target) : undefined,\n    });\n  }\n}\n\nfunction decorateClass(\n  target: new (...args: any) => any,\n  decorators: LegacyClassDecorator[],\n): new (...args: any) => any {\n  return decorators.reduce(\n    (accum, decorator) => decorator(accum) || accum,\n    target,\n  );\n}\n\nfunction decoratePOJO(\n  pojo: object,\n  decorated: [\n    'field' | 'method',\n    string | number | symbol,\n    LegacyDecorator[],\n  ][],\n) {\n  for (let [type, prop, decorators] of decorated) {\n    if (type === 'field') {\n      decoratePojoField(pojo, prop, decorators);\n    } else {\n      decorateMethodV2(pojo, prop, decorators);\n    }\n  }\n  return pojo;\n}\nfunction decoratePojoField(\n  pojo: object,\n  prop: string | number | symbol,\n  decorators: LegacyDecorator[],\n) {\n  let desc: Descriptor = {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: () => Object.getOwnPropertyDescriptor(pojo, prop)?.value,\n  };\n  for (let decorator of decorators) {\n    desc = decorator(pojo, prop, desc) || desc;\n  }\n  if (desc.initializer) {\n    desc.value = desc.initializer.call(pojo);\n    delete desc.initializer;\n  }\n  Object.defineProperty(pojo, prop, desc);\n}\n\nexport {\n  decorateFieldV1 as f,\n  decorateFieldV2 as g,\n  decorateMethodV1 as m,\n  decorateMethodV2 as n,\n  initializeDeferredDecorator as i,\n  decorateClass as c,\n  decoratePOJO as p,\n};\n"],"names":[],"mappings":";AAuBA,MAAM,+BAGE,QAAA;AAER,SAAS,eACP,OACA,MACA,MACM;AACN,MAAI,MAAM,SAAS,IAAI,KAAK;AAC5B,MAAI,CAAC,KAAK;AACR,8BAAU,IAAA;AACV,aAAS,IAAI,OAAO,GAAG;AAAA,EACzB;AACA,MAAI,IAAI,MAAM,IAAI;AACpB;AAEA,SAAS,sBACP,QACA,MACwB;;AACxB,MAAI,SAAkB,OAAe;AACrC,SAAO,QAAQ;AACb,QAAI,QAAO,cAAS,IAAI,MAAM,MAAnB,mBAAsB,IAAI;AACrC,QAAI,MAAM;AACR,aAAO;AAAA,IACT;AACA,aAAS,OAAO,eAAe,MAAM;AAAA,EACvC;AACF;AAEA,SAAS,gBACP,QACA,MACA,YACA,aACM;AACN,SAAO,gBAAgB,OAAO,WAAW,MAAM,YAAY,WAAW;AACxE;AAEA,SAAS,gBACP,WACA,MACA,YACA,aACM;AACN,MAAI,OAAmB;AAAA,IACrB,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,aAAa;AAAA,EAAA;AAEf,MAAI,aAAa;AACf,SAAK,cAAc;AAAA,EACrB;AACA,WAAS,aAAa,YAAY;AAChC,WAAO,UAAU,WAAW,MAAM,IAAI,KAAK;AAAA,EAC7C;AACA,MAAI,KAAK,gBAAgB,QAAW;AAClC,WAAO,eAAe,WAAW,MAAM,IAAI;AAAA,EAC7C,OAAO;AACL,mBAAe,WAAW,MAAM,IAAI;AAAA,EACtC;AACF;AAEA,SAAS,iBACP,EAAE,aACF,MACA,YACM;AACN,SAAO,iBAAiB,WAAW,MAAM,UAAU;AACrD;AAEA,SAAS,iBACP,WACA,MACA,YACM;AACN,QAAM,WAAW,OAAO,yBAAyB,WAAW,IAAI;AAChE,MAAI,OAAmB,EAAE,GAAG,SAAA;AAC5B,WAAS,aAAa,YAAY;AAChC,WAAO,UAAU,WAAW,MAAM,IAAI,KAAK;AAAA,EAC7C;AACA,MAAI,KAAK,gBAAgB,QAAW;AAClC,SAAK,QAAQ,KAAK,cAAc,KAAK,YAAY,KAAK,SAAS,IAAI;AACnE,SAAK,cAAc;AAAA,EACrB;AACA,SAAO,eAAe,WAAW,MAAM,IAAI;AAC7C;AAEA,SAAS,4BACP,QACA,MACM;AACN,MAAI,OAAO,sBAAsB,OAAO,aAAa,IAAI;AACzD,MAAI,MAAM;AACR,WAAO,eAAe,QAAQ,MAAM;AAAA,MAClC,YAAY,KAAK;AAAA,MACjB,cAAc,KAAK;AAAA,MACnB,UAAU,KAAK;AAAA,MACf,OAAO,KAAK,cAAc,KAAK,YAAY,KAAK,MAAM,IAAI;AAAA,IAAA,CAC3D;AAAA,EACH;AACF;AAEA,SAAS,cACP,QACA,YAC2B;AAC3B,SAAO,WAAW;AAAA,IAChB,CAAC,OAAO,cAAc,UAAU,KAAK,KAAK;AAAA,IAC1C;AAAA,EAAA;AAEJ;AAEA,SAAS,aACP,MACA,WAKA;AACA,WAAS,CAAC,MAAM,MAAM,UAAU,KAAK,WAAW;AAC9C,QAAI,SAAS,SAAS;AACpB,wBAAkB,MAAM,MAAM,UAAU;AAAA,IAC1C,OAAO;AACL,uBAAiB,MAAM,MAAM,UAAU;AAAA,IACzC;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,kBACP,MACA,MACA,YACA;AACA,MAAI,OAAmB;AAAA,IACrB,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,aAAa,MAAA;;AAAM,0BAAO,yBAAyB,MAAM,IAAI,MAA1C,mBAA6C;AAAA;AAAA,EAAA;AAElE,WAAS,aAAa,YAAY;AAChC,WAAO,UAAU,MAAM,MAAM,IAAI,KAAK;AAAA,EACxC;AACA,MAAI,KAAK,aAAa;AACpB,SAAK,QAAQ,KAAK,YAAY,KAAK,IAAI;AACvC,WAAO,KAAK;AAAA,EACd;AACA,SAAO,eAAe,MAAM,MAAM,IAAI;AACxC;;;;;;;;;;;;;;;;;;;"}