{"version":3,"sources":["../../../src/internals/helpers/prototype.ts"],"names":["traversePrototypeChain","value","excluded","node","undefined","Object","getPrototypeOf","has","isConstructor","prototype","isDirectInstanceOf","object","constructor","R","isTruthy","findDescriptor","target","property","descriptor","getOwnPropertyDescriptor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,UAAUA,sBAAAA,CAAuBC,OAAgBC,QAAAA,EAAmB;AACzE,EAAA,IAAIC,IAAAA,GAAOF,KAAAA;AACX,EAAA,OAAOE,IAAAA,KAAS,IAAA,IAAQA,IAAAA,KAASC,MAAAA,EAAW;AAC1CD,IAAAA,IAAAA,GAAOE,MAAAA,CAAOC,eAAeH,IAAAA,CAAAA;AAC7B,IAAA,IAAI,CAACD,QAAAA,EAAUK,GAAAA,GAAMJ,IAAAA,CAAAA,EAAO;AAC1B,MAAA,MAAMA,IAAAA;AACR,IAAA;AACF,EAAA;AACF;AARiBH,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUV,SAASQ,cAAiBP,KAAAA,EAAU;AACzC,EAAA,OAAO,CAAC,CAACA,KAAAA,IAAS,CAAC,CAACA,MAAMQ,SAAAA,IAAa,CAAC,CAACR,KAAAA,CAAMQ,SAAAA,CAAU,WAAA;AAC3D;AAFgBD,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAIT,SAASE,kBAAAA,CACdC,QACAC,WAAAA,EAAgC;AAEhC,EAAA,OAAOC,YAAAA,CAAEC,SAASH,MAAAA,CAAAA,IAAWN,OAAOC,cAAAA,CAAeK,MAAAA,MAAYC,WAAAA,CAAYH,SAAAA;AAC7E;AALgBC,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAOT,SAASK,cAAAA,CACdC,QACAC,QAAAA,EAAiB;AAEjB,EAAA,KAAA,MAAWd,IAAAA,IAAQH,sBAAAA,CAAuBgB,MAAAA,CAAAA,EAAS;AACjD,IAAA,MAAME,UAAAA,GAAab,MAAAA,CAAOc,wBAAAA,CAAyBhB,IAAAA,EAAMc,QAAAA,CAAAA;AACzD,IAAA,IAAIC,UAAAA,EAAY;AACd,MAAA,OAAOA,UAAAA;AACT,IAAA;AACF,EAAA;AACA,EAAA,OAAO,IAAA;AACT;AAXgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"prototype.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport * as R from \"remeda\";\n\nexport function* traversePrototypeChain(value: unknown, excluded?: Set<any>) {\n  let node = value;\n  while (node !== null && node !== undefined) {\n    node = Object.getPrototypeOf(node);\n    if (!excluded?.has?.(node)) {\n      yield node;\n    }\n  }\n}\n\nexport function isConstructor<A>(value: any): value is ClassConstructor<A> {\n  return !!value && !!value.prototype && !!value.prototype.constructor;\n}\n\nexport function isDirectInstanceOf<A>(\n  object: unknown,\n  constructor: ClassConstructor<A>,\n): object is A {\n  return R.isTruthy(object) && Object.getPrototypeOf(object) === constructor.prototype;\n}\n\nexport function findDescriptor<T extends NonNullable<unknown>>(\n  target: T,\n  property: keyof T,\n): PropertyDescriptor | null {\n  for (const node of traversePrototypeChain(target)) {\n    const descriptor = Object.getOwnPropertyDescriptor(node, property);\n    if (descriptor) {\n      return descriptor;\n    }\n  }\n  return null;\n}\n"]}