{"version":3,"sources":["../src/errors.ts","../src/adapter.ts"],"names":["AdapterConfigurationError","DbError","isAdapterError"],"mappings":";;;;;AAYO,IAAM,kBAAA,GAAN,cAAiCA,kCAAA,CAA0B;AAAA,EACvD,UAAA,GAAqC,4BAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ9C,WAAA,CAAY,SAAiB,KAAA,EAAiB;AAC5C,IAAA,KAAA,CAAM,OAAA,EAAS,kBAAkB,KAAK,CAAA;AACtC,IAAA,MAAA,CAAO,cAAA,CAAe,MAAM,MAAA,EAAQ;AAAA,MAClC,KAAA,EAAO,oBAAA;AAAA,MACP,UAAA,EAAY,KAAA;AAAA,MACZ,YAAA,EAAc;AAAA,KACf,CAAA;AACD,IAAA,MAAA,CAAO,cAAA,CAAe,MAAM,MAAA,EAAQ;AAAA,MAClC,OAAO,IAAA,CAAK,UAAA;AAAA,MACZ,UAAA,EAAY,IAAA;AAAA,MACZ,YAAA,EAAc;AAAA,KACf,CAAA;AACD,IAAA,MAAA,CAAO,cAAA,CAAe,MAAM,aAAA,EAAe;AAAA,MACzC,OAAO,IAAA,CAAK,UAAA;AAAA,MACZ,UAAA,EAAY,IAAA;AAAA,MACZ,YAAA,EAAc;AAAA,KACf,CAAA;AACD,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,GAAA,CAAA,MAAA,CAAW,SAAS,CAAA;AAAA,EAClD;AACF;ACpBA,IAAM,kBAAA,GAAqB;AAAA,EACzB,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,uBAAA,GAA0B,IAAI,GAAA,CAAY,kBAAkB,CAAA;AAClE,IAAM,2BAAA,uBAAkC,GAAA,CAAY;AAAA,EAClD,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAC,CAAA;AACD,IAAM,mCAAA,uBAA0C,GAAA,CAAY;AAAA,EAC1D,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,IAAM,wBAAA,GAA2B;AAAA,EAC/B,QAAA,EAAU,QAAA;AAAA,EACV,KAAA,EAAO,QAAA;AAAA,EACP,GAAA,EAAK,QAAA;AAAA,EACL,MAAA,EAAQ,iBAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAEA,SAAS,SAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,WACP,KAAA,EACiC;AACjC,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,SAAA,IAAa,KAAA;AACzC;AAEA,SAAS,wBAAwB,MAAA,EAAsC;AACrE,EAAA,IAAI,CAAC,QAAA,CAAS,MAAM,CAAA,IAAK,EAAE,cAAc,MAAA,CAAA,EAAS;AAChD,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,CAAO,QAAA,KAAa,MAAA,IAAa,MAAA,CAAO,aAAa,QAAA,EAAU;AACjE,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,CAAA,sDAAA,EAAyD,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAC,CAAA,EAAA;AAAA,KAClF;AAAA,EACF;AACF;AAEA,SAAS,aAAa,MAAA,EAAqD;AACzE,EAAA,uBAAA,CAAwB,MAAM,CAAA;AAE9B,EAAA,IAAI,UAAA,CAAW,MAAM,CAAA,EAAG;AACtB,IAAA,OAAO,MAAA,CAAO,OAAA;AAAA,EAChB;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,kBACP,MAAA,EACoC;AACpC,EAAA,IAAI,UAAA,CAAW,MAAM,CAAA,EAAG;AACtB,IAAA,OAAO,OAAO,MAAA,EAAQ,cAAA;AAAA,EACxB;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,iCACP,cAAA,EACoC;AACpC,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,SACJ,cAAA,CAAe,MAAA,IACf,cAAA,CAAe,MAAA,EAAQ,UACvB,cAAA,CAAe,SAAA;AAEjB,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,GAAG,wBAAA;AAAA,IACH;AAAA,GACF;AACF;AAEA,SAAS,iBAAA,CACP,QACA,OAAA,EACoC;AACpC,EAAA,IAAI,UAAA,CAAW,MAAM,CAAA,IAAK,MAAA,CAAO,aAAa,MAAA,EAAW;AACvD,IAAA,IAAI,CAAC,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA,EAAG;AAC9B,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAO,MAAA,CAAO,QAAA;AAAA,EAChB;AAEA,EAAA,IAAI,SAAS,OAAO,CAAA,IAAK,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA,EAAG;AACjD,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,EACjB;AAEA,EAAA,IAAI,SAAS,OAAO,CAAA,IAAK,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACnD,IAAA,OAAO,OAAA,CAAQ,QAAA;AAAA,EACjB;AAEA,EAAA,IACE,QAAA,CAAS,OAAO,CAAA,IAChB,OAAA,CAAQ,aAAa,QAAA,IACrB,OAAA,CAAQ,WAAW,MAAA,EACnB;AAIA,IAAA,MAAM,UAAW,CAAC,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,SAAS,CAAA,CAAY,MAAA;AAAA,MAC/D,CAAC,GAAA,KAAQ;AACP,QAAA,MAAM,QAAA,GAAW,yBAAyB,GAAG,CAAA;AAC7C,QAAA,OAAQ,OAAA,CAAoC,GAAG,CAAA,KAAM,QAAA;AAAA,MACvD;AAAA,KACF;AACA,IAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,CAAA,8DAAA,EAAiE,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,sIAAA;AAAA,OACrF;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,GAAG,wBAAA;AAAA,MACH,QAAQ,OAAA,CAAQ;AAAA,KAClB;AAAA,EACF;AAEA,EAAA,OAAO,gCAAA,CAAiC,iBAAA,CAAkB,MAAM,CAAC,CAAA;AACnE;AAEA,SAAS,kBAAA,CAAmB,OAAgB,OAAA,EAAyB;AACnE,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,gBAAgB,OAAO,CAAA,6BAAA;AAAA,KACzB;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,MAAM,IAAA,EAAK;AAC7B,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,gBAAgB,OAAO,CAAA,4BAAA;AAAA,KACzB;AAAA,EACF;AAEA,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,oBAAA,CAAqB,OAAgB,OAAA,EAAyB;AACrE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,MAAM,IAAA,EAAK,CAAE,WAAW,CAAA,EAAG;AAC1D,IAAA,MAAM,IAAI,kBAAA,CAAmB,CAAA,EAAG,OAAO,CAAA,4BAAA,CAA8B,CAAA;AAAA,EACvE;AAEA,EAAA,OAAO,MAAM,IAAA,EAAK;AACpB;AAEA,SAAS,wBAAA,CAAyB,OAAgB,OAAA,EAAuB;AACvE,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,WAAW,CAAA,EAAG;AAC/C,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,GAAG,OAAO,CAAA,sCAAA;AAAA,KACZ;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,KAAK,CAAA,IAAK,KAAA,CAAM,SAAQ,EAAG;AAC5C,IAAA,oBAAA,CAAqB,KAAA,EAAO,CAAA,EAAG,OAAO,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAE,CAAA;AAAA,EAClE;AACF;AAEA,SAAS,cAAc,MAAA,EAA2C;AAChE,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,IAAA,OAAO,MAAA,CAAO,GAAA;AAAA,MAAI,CAAC,SAAA,EAAW,KAAA,KAC5B,mBAAmB,SAAA,EAAW,CAAA,SAAA,EAAY,KAAK,CAAA,CAAE;AAAA,KACnD;AAAA,EACF;AAEA,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,GAAA;AAAA,IAAI,CAAC,SAAA,KAC9B,kBAAA,CAAmB,SAAA,EAAW,CAAA,KAAA,EAAQ,SAAS,CAAA,CAAA,CAAG;AAAA,GACpD;AACF;AAEA,IAAM,yCAAyB,IAAI,GAAA,CAAY,CAAC,QAAA,EAAU,UAAA,EAAY,OAAO,CAAC,CAAA;AAE9E,SAAS,+BAAA,CACP,SAAA,EACA,SAAA,EACA,UAAA,EACM;AACN,EAAA,IAAI,OAAO,eAAe,SAAA,EAAW;AACnC,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AAClC,IAAA,IAAI,UAAA,CAAW,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA,EAAG;AAClC,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,EAAe,SAAS,CAAA,mEAAA;AAAA,OACnD;AAAA,IACF;AACA,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAU,CAAA,EAAG;AACzB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,EAAe,SAAS,CAAA,4DAAA;AAAA,KACnD;AAAA,EACF;AAEA,EAAA,IAAI,UAAA,CAAW,SAAS,MAAA,EAAW;AACjC,IAAA,IACE,OAAO,WAAW,IAAA,KAAS,QAAA,IAC3B,CAAC,sBAAA,CAAuB,GAAA,CAAI,UAAA,CAAW,IAAI,CAAA,EAC3C;AACA,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,EAAe,SAAS,uBAAuB,MAAA,CAAO,UAAA,CAAW,IAAI,CAAC,CAAA,6CAAA;AAAA,OACjG;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,UAAA,CAAW,SAAS,MAAA,EAAW;AACjC,IAAA,IACE,OAAO,WAAW,IAAA,KAAS,QAAA,IAC3B,WAAW,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA,EAClC;AACA,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,EAAe,SAAS,CAAA,kCAAA;AAAA,OACnD;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,UAAA,CAAW,SAAS,MAAA,EAAW;AACjC,IAAA,IACE,CAAC,KAAA,CAAM,OAAA,CAAQ,WAAW,IAAI,CAAA,IAC9B,WAAW,IAAA,CAAK,IAAA;AAAA,MACd,CAAC,QAAQ,OAAO,GAAA,KAAQ,YAAY,GAAA,CAAI,IAAA,GAAO,MAAA,KAAW;AAAA,KAC5D,EACA;AACA,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,EAAe,SAAS,CAAA,6CAAA;AAAA,OACnD;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,UAAA,CAAW,YAAY,MAAA,EAAW;AACpC,IAAA,IACE,OAAO,WAAW,OAAA,KAAY,QAAA,IAC9B,WAAW,OAAA,CAAQ,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA,EACrC;AACA,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,EAAe,SAAS,CAAA,qCAAA;AAAA,OACnD;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,0BAAA,CACP,SAAA,EACA,OAAA,EACA,MAAA,EACA,UAAA,EACM;AACN,EAAA,IAAI,CAAC,QAAA,CAAS,MAAM,CAAA,EAAG;AACrB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,EAAI,OAAO,CAAA,mCAAA;AAAA,KACtC;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA;AACrC,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,EAAI,OAAO,CAAA,iCAAA;AAAA,KACtC;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,UAAU,CAAA,IAAK,OAAA,EAAS;AAC7C,IAAA,MAAM,mBAAA,GAAsB,oBAAA;AAAA,MAC1B,SAAA;AAAA,MACA,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,EAAI,OAAO,CAAA,WAAA;AAAA,KACtC;AACA,IAAA,MAAM,OACJ,UAAA,KAAe,MAAA,GACX,sBACA,CAAA,EAAG,UAAU,IAAI,mBAAmB,CAAA,CAAA;AAE1C,IAAA,kCAAA,CAAmC,SAAA,EAAW,MAAM,UAAU,CAAA;AAAA,EAChE;AACF;AAEA,SAAS,kCAAA,CACP,SAAA,EACA,IAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,OAAA,GAAU,CAAA,aAAA,EAAgB,SAAS,CAAA,eAAA,EAAkB,IAAI,CAAA,CAAA,CAAA;AAE/D,EAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AAClC,IAAA,oBAAA,CAAqB,UAAA,EAAY,CAAA,EAAG,OAAO,CAAA,KAAA,CAAO,CAAA;AAClD,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAU,CAAA,EAAG;AACzB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,GAAG,OAAO,CAAA,iDAAA;AAAA,KACZ;AAAA,EACF;AAEA,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,MAAA;AAAA,IAC1C,CAAC,GAAA,KAAQ,CAAC,mCAAA,CAAoC,IAAI,GAAG;AAAA,GACvD;AACA,EAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,GAAG,OAAO,CAAA,8BAAA,EAAiC,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,KACnE;AAAA,EACF;AAEA,EAAA,oBAAA,CAAqB,UAAA,CAAW,IAAA,EAAM,CAAA,EAAG,OAAO,CAAA,KAAA,CAAO,CAAA;AAEvD,EAAA,IAAI,UAAA,CAAW,WAAW,MAAA,EAAW;AACnC,IAAA,0BAAA;AAAA,MACE,SAAA;AAAA,MACA,UAAU,IAAI,CAAA,CAAA;AAAA,MACd,UAAA,CAAW,MAAA;AAAA,MACX;AAAA,KACF;AAAA,EACF;AAEA,EAAA,IAAI,UAAA,CAAW,UAAU,MAAA,EAAW;AAClC,IAAA,kCAAA;AAAA,MACE,SAAA;AAAA,MACA,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,MACP,UAAA,CAAW;AAAA,KACb;AAAA,EACF;AAEA,EAAA,IACE,WAAW,QAAA,KAAa,MAAA,IACxB,OAAO,UAAA,CAAW,aAAa,SAAA,EAC/B;AACA,IAAA,MAAM,IAAI,kBAAA,CAAmB,CAAA,EAAG,OAAO,CAAA,4BAAA,CAA8B,CAAA;AAAA,EACvE;AAEA,EAAA,IACE,WAAW,QAAA,KAAa,MAAA,IACxB,OAAO,UAAA,CAAW,aAAa,SAAA,EAC/B;AACA,IAAA,MAAM,IAAI,kBAAA,CAAmB,CAAA,EAAG,OAAO,CAAA,4BAAA,CAA8B,CAAA;AAAA,EACvE;AACF;AAEA,SAAS,mBAAA,CAAoB,WAAmB,OAAA,EAAwB;AACtE,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC1B,IAAA,wBAAA,CAAyB,OAAA,EAAS,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,CAAU,CAAA;AACrE,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,QAAA,CAAS,OAAO,CAAA,EAAG;AACtB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,gBAAgB,SAAS,CAAA,+CAAA;AAAA,KAC3B;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA;AACtC,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,gBAAgB,SAAS,CAAA,yCAAA;AAAA,KAC3B;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,MAAM,CAAA,IAAK,OAAA,EAAS;AACzC,IAAA,MAAM,mBAAA,GAAsB,oBAAA;AAAA,MAC1B,SAAA;AAAA,MACA,gBAAgB,SAAS,CAAA,WAAA;AAAA,KAC3B;AACA,IAAA,wBAAA;AAAA,MACE,MAAA;AAAA,MACA,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,mBAAmB,CAAA,QAAA;AAAA,KACzD;AAAA,EACF;AACF;AAEA,SAAS,0BAAA,CACP,WACA,WAAA,EACM;AACN,EAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,IAAA,MAAM,EAAE,QAAO,GAAI,WAAA;AAEnB,IAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,MAAA,oBAAA,CAAqB,MAAA,EAAQ,CAAA,aAAA,EAAgB,SAAS,CAAA,OAAA,CAAS,CAAA;AAAA,IACjE,CAAA,MAAO;AACL,MAAA,0BAAA,CAA2B,SAAA,EAAW,UAAU,MAAM,CAAA;AAAA,IACxD;AAAA,EACF;AAEA,EAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,IAAA,0BAAA,CAA2B,SAAA,EAAW,QAAA,EAAU,WAAA,CAAY,MAAM,CAAA;AAAA,EACpE;AAEA,EAAA,IAAI,aAAa,WAAA,EAAa;AAC5B,IAAA,mBAAA,CAAoB,SAAA,EAAW,YAAY,OAAO,CAAA;AAAA,EACpD;AACF;AAEA,SAAS,mCACP,MAAA,EACM;AACN,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,IAAA;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,WAAW,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC7D,IAAA,IAAI,CAAC,QAAA,CAAS,WAAW,CAAA,EAAG;AAC1B,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,gBAAgB,SAAS,CAAA,wDAAA;AAAA,OAC3B;AAAA,IACF;AAEA,IAAA,MAAM,uBAAA,GAA0B,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,IAAA;AAAA,MAAK,CAAC,GAAA,KAC7D,uBAAA,CAAwB,GAAA,CAAI,GAAG;AAAA,KACjC;AACA,IAAA,MAAM,iBAAA,GAAoB,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,IAAA;AAAA,MAAK,CAAC,GAAA,KACvD,2BAAA,CAA4B,GAAA,CAAI,GAAG;AAAA,KACrC;AAEA,IAAA,IAAI,CAAC,uBAAA,IAA2B,CAAC,iBAAA,EAAmB;AAClD,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,gBAAgB,SAAS,CAAA,wDAAA;AAAA,OAC3B;AAAA,IACF;AAEA,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,0BAAA;AAAA,QACE,SAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAEA,IAAA,IAAI,iBAAA,IAAqB,CAAC,uBAAA,EAAyB;AACjD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,oBAAoB,kBAAA,CAAmB,MAAA;AAAA,MAC3C,CAAC,SAAA,KAAc,EAAE,SAAA,IAAa,WAAA;AAAA,KAChC;AAEA,IAAA,IAAI,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAChC,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,gBAAgB,SAAS,CAAA,oCAAA,EAAuC,iBAAA,CAAkB,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,OAC9F;AAAA,IACF;AAEA,IAAA,KAAA,MAAW,aAAa,kBAAA,EAAoB;AAC1C,MAAA,+BAAA;AAAA,QACE,SAAA;AAAA,QACA,SAAA;AAAA,QACC,YAAwC,SAAS;AAAA,OACpD;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,4BAAA,CACP,QACA,OAAA,EACqB;AACrB,EAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,MAAA,EAAQ,OAAO,CAAA;AAElD,EAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,eAAA,GAAkB,MAAA,CAAO,OAAA,CAAQ,wBAAwB,CAAA;AAC/D,EAAA,MAAM,aAAa,eAAA,CAChB,MAAA,CAAO,CAAC,CAAC,GAAA,EAAK,aAAa,CAAA,KAAM;AAChC,IAAA,MAAM,MAAA,GAAS,SAAS,GAA4C,CAAA;AACpE,IAAA,OAAO,MAAA,KAAW,aAAA;AAAA,EACpB,CAAC,CAAA,CACA,GAAA;AAAA,IACC,CAAC,CAAC,GAAA,EAAK,aAAa,CAAA,KAClB,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAA,CAAO,aAAa,CAAC,CAAA,WAAA,EAAc,MAAA;AAAA,MAC3C,SAAS,GAA4C;AAAA,KACtD,CAAA,CAAA;AAAA,GACL;AAEF,EAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,CAAA,wDAAA,EAA2D,UAAA,CAAW,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,KAClF;AAAA,EACF;AAEA,EAAA,IACE,CAAC,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,KAC7B,CAAC,QAAA,CAAS,QAAA,CAAS,MAAM,CAAA,IAAK,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,CAAA,EAC5D;AACA,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,QAAA,CAAS,MAAM,CAAA;AAEhD,EAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,kCAAA,CAAmC,SAAS,MAAM,CAAA;AAClD,EAAA,OAAO,IAAI,IAAI,UAAU,CAAA;AAC3B;AAEA,SAAS,gBAAgB,KAAA,EAA4C;AACnE,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG;AACpB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,iBAAiB,kBAAA,CAAmB,MAAA;AAAA,IACxC,CAAC,MAAA,KAAW,OAAO,KAAA,CAAM,MAAM,CAAA,KAAM;AAAA,GACvC;AAEA,EAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAC7B,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,CAAA,6CAAA,EAAgD,cAAA,CAAe,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,KAC3E;AAAA,EACF;AACF;AAEA,SAAS,wBAAA,CACP,YACA,mBAAA,EACM;AACN,EAAA,IAAI,CAAC,mBAAA,CAAoB,GAAA,CAAI,UAAU,CAAA,EAAG;AACxC,IAAA,MAAM,IAAIC,gBAAA;AAAA,MACR,sBAAsB,UAAU,CAAA,kDAAA,CAAA;AAAA,MAChC;AAAA,KACF;AAAA,EACF;AACF;AAEA,eAAe,uBAAA,CACb,WACA,QAAA,EACY;AACZ,EAAA,IAAI;AACF,IAAA,OAAO,MAAM,QAAA,EAAS;AAAA,EACxB,SAAS,KAAA,EAAO;AACd,IAAA,IAAIC,uBAAA,CAAe,KAAK,CAAA,EAAG;AACzB,MAAA,MAAM,KAAA;AAAA,IACR;AAEA,IAAA,MAAM,IAAID,gBAAA;AAAA,MACR,UAAU,SAAS,CAAA,iBAAA,CAAA;AAAA,MACnB,aAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF;AAWO,SAAS,aAAa,MAAA,EAA2C;AACtE,EAAA,MAAM,OAAA,GAAU,aAAa,MAAM,CAAA;AAEnC,EAAA,eAAA,CAAgB,OAAO,CAAA;AACvB,EAAA,MAAM,mBAAA,GAAsB,4BAAA,CAA6B,MAAA,EAAQ,OAAO,CAAA;AAExE,EAAA,OAAO;AAAA,IACL,MAAM,MAAA,CACJ,UAAA,EACA,IAAA,EAC6B;AAC7B,MAAA,wBAAA,CAAyB,YAAY,mBAAmB,CAAA;AACxD,MAAA,OAAO,uBAAA;AAAA,QAAwB,QAAA;AAAA,QAAU,MACvC,OAAA,CAAQ,MAAA,CAAU,UAAA,EAAY,IAAI;AAAA,OACpC;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,GAAA,CAAO,UAAA,EAAoB,EAAA,EAA+B;AAC9D,MAAA,wBAAA,CAAyB,YAAY,mBAAmB,CAAA;AACxD,MAAA,OAAO,uBAAA;AAAA,QAAwB,KAAA;AAAA,QAAO,MACpC,OAAA,CAAQ,GAAA,CAAO,UAAA,EAAY,EAAE;AAAA,OAC/B;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,MAAA,CACJ,UAAA,EACA,EAAA,EACA,IAAA,EACmB;AACnB,MAAA,wBAAA,CAAyB,YAAY,mBAAmB,CAAA;AACxD,MAAA,OAAO,uBAAA;AAAA,QAAwB,QAAA;AAAA,QAAU,MACvC,OAAA,CAAQ,MAAA,CAAU,UAAA,EAAY,IAAI,IAAI;AAAA,OACxC;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,MAAA,CAAO,UAAA,EAAoB,EAAA,EAA8B;AAC7D,MAAA,wBAAA,CAAyB,YAAY,mBAAmB,CAAA;AACxD,MAAA,OAAO,uBAAA;AAAA,QAAwB,QAAA;AAAA,QAAU,MACvC,OAAA,CAAQ,MAAA,CAAO,UAAA,EAAY,EAAE;AAAA,OAC/B;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,IAAA,CAAQ,UAAA,EAAoB,OAAA,EAAqC;AACrE,MAAA,wBAAA,CAAyB,YAAY,mBAAmB,CAAA;AACxD,MAAA,OAAO,uBAAA;AAAA,QAAwB,MAAA;AAAA,QAAQ,MACrC,OAAA,CAAQ,IAAA,CAAQ,UAAA,EAAY,OAAO;AAAA,OACrC;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,KAAA,CAAS,UAAA,EAAoB,MAAA,EAAmC;AACpE,MAAA,wBAAA,CAAyB,YAAY,mBAAmB,CAAA;AACxD,MAAA,OAAO,uBAAA;AAAA,QAAwB,OAAA;AAAA,QAAS,MACtC,OAAA,CAAQ,KAAA,CAAS,UAAA,EAAY,MAAM;AAAA,OACrC;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,KAAA,CAAM,UAAA,EAAoB,MAAA,EAAuC;AACrE,MAAA,wBAAA,CAAyB,YAAY,mBAAmB,CAAA;AACxD,MAAA,OAAO,uBAAA;AAAA,QAAwB,OAAA;AAAA,QAAS,MACtC,OAAA,CAAQ,KAAA,CAAM,UAAA,EAAY,MAAM;AAAA,OAClC;AAAA,IACF;AAAA,GACF;AACF","file":"chunk-UKSZIY3T.cjs","sourcesContent":["/**\n * @module errors\n * @package @geenius/adapters/convex\n * @description Defines typed binding errors for the Convex adapter helper.\n */\n\nimport { AdapterConfigurationError } from \"@geenius/adapters\";\n\n/** Error code emitted when a Convex DB adapter binding fails shape validation. */\nexport type ConvexBindingErrorCode = \"CONVEX_DB_ADAPTER_MISMATCH\";\n\n/** Error thrown when `withConvexDb` receives a non-conforming adapter binding. */\nexport class ConvexBindingError extends AdapterConfigurationError {\n  readonly convexCode: ConvexBindingErrorCode = \"CONVEX_DB_ADAPTER_MISMATCH\";\n\n  /**\n   * Creates a typed Convex adapter binding error.\n   *\n   * @param message Human-readable validation failure.\n   * @param cause Optional original error that triggered the failure.\n   */\n  constructor(message: string, cause?: unknown) {\n    super(message, \"INVALID_CONFIG\", cause);\n    Object.defineProperty(this, \"name\", {\n      value: \"ConvexBindingError\",\n      enumerable: false,\n      configurable: true,\n    });\n    Object.defineProperty(this, \"code\", {\n      value: this.convexCode,\n      enumerable: true,\n      configurable: true,\n    });\n    Object.defineProperty(this, \"adapterCode\", {\n      value: this.convexCode,\n      enumerable: true,\n      configurable: true,\n    });\n    Object.setPrototypeOf(this, new.target.prototype);\n  }\n}\n","/**\n * @module adapter\n * @package @geenius/adapters/convex\n * @description Provides a typed adapter-side binder for Convex database\n * providers produced by `@geenius/db`. This package performs shape validation\n * and returns a `DbAdapter` wrapper without importing or constructing a\n * Convex runtime client.\n */\n\nimport type { DbAdapter, ListOptions, QueryFilter } from \"@geenius/adapters\";\nimport { DbError, isAdapterError } from \"@geenius/adapters\";\nimport { ConvexBindingError } from \"./errors\";\nimport type {\n  ConvexDbAdapterBinding,\n  ConvexDbAdapterOptions,\n  ConvexDbFactoryOptions,\n  ConvexProviderContract,\n  ConvexTableExpectations,\n} from \"./types\";\n\nconst DB_ADAPTER_METHODS = [\n  \"create\",\n  \"get\",\n  \"update\",\n  \"delete\",\n  \"list\",\n  \"query\",\n  \"count\",\n] as const satisfies readonly (keyof DbAdapter)[];\nconst DB_ADAPTER_METHOD_NAMES = new Set<string>(DB_ADAPTER_METHODS);\nconst CONVEX_SCHEMA_METADATA_KEYS = new Set<string>([\n  \"schema\",\n  \"fields\",\n  \"indexes\",\n]);\nconst CONVEX_SCHEMA_FIELD_DESCRIPTOR_KEYS = new Set<string>([\n  \"type\",\n  \"fields\",\n  \"items\",\n  \"nullable\",\n  \"optional\",\n]);\n\nconst CONVEX_PROVIDER_CONTRACT = {\n  provider: \"convex\",\n  stage: \"launch\",\n  sdk: \"convex\",\n  schema: \"ConvexDB schema\",\n  factory: \"createConvexDbAdapter\",\n} as const satisfies Omit<ConvexProviderContract, \"tables\">;\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n  return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction hasAdapter(\n  value: ConvexDbAdapterOptions,\n): value is ConvexDbAdapterBinding {\n  return isObject(value) && \"adapter\" in value;\n}\n\nfunction assertConvexProviderTag(config: ConvexDbAdapterOptions): void {\n  if (!isObject(config) || !(\"provider\" in config)) {\n    return;\n  }\n\n  if (config.provider !== undefined && config.provider !== \"convex\") {\n    throw new ConvexBindingError(\n      `withConvexDb expected provider \"convex\" but received \"${String(config.provider)}\".`,\n    );\n  }\n}\n\nfunction getCandidate(config: ConvexDbAdapterOptions): DbAdapter | unknown {\n  assertConvexProviderTag(config);\n\n  if (hasAdapter(config)) {\n    return config.adapter;\n  }\n\n  return config;\n}\n\nfunction getFactoryOptions(\n  config: ConvexDbAdapterOptions,\n): ConvexDbFactoryOptions | undefined {\n  if (hasAdapter(config)) {\n    return config.source?.factoryOptions;\n  }\n\n  return undefined;\n}\n\nfunction createContractFromFactoryOptions(\n  factoryOptions: ConvexDbFactoryOptions | undefined,\n): ConvexProviderContract | undefined {\n  if (!factoryOptions) {\n    return undefined;\n  }\n\n  const tables =\n    factoryOptions.tables ??\n    factoryOptions.schema?.tables ??\n    factoryOptions.functions;\n\n  if (tables === undefined) {\n    return undefined;\n  }\n\n  return {\n    ...CONVEX_PROVIDER_CONTRACT,\n    tables,\n  };\n}\n\nfunction getConvexContract(\n  config: ConvexDbAdapterOptions,\n  adapter: DbAdapter,\n): ConvexProviderContract | undefined {\n  if (hasAdapter(config) && config.contract !== undefined) {\n    if (!isObject(config.contract)) {\n      throw new ConvexBindingError(\n        \"Convex DbAdapter binding contract must be an object.\",\n      );\n    }\n\n    return config.contract as unknown as ConvexProviderContract;\n  }\n\n  if (isObject(adapter) && isObject(adapter.convex)) {\n    return adapter.convex as unknown as ConvexProviderContract;\n  }\n\n  if (isObject(adapter) && isObject(adapter.contract)) {\n    return adapter.contract as unknown as ConvexProviderContract;\n  }\n\n  if (\n    isObject(adapter) &&\n    adapter.provider === \"convex\" &&\n    adapter.tables !== undefined\n  ) {\n    // Verify the factory supplied the full launch metadata at the top level\n    // rather than synthesizing stage/sdk/schema/factory locally. Synthesizing\n    // would mask factories that drift away from the launch ConvexProviderContract.\n    const missing = ([\"stage\", \"sdk\", \"schema\", \"factory\"] as const).filter(\n      (key) => {\n        const expected = CONVEX_PROVIDER_CONTRACT[key];\n        return (adapter as Record<string, unknown>)[key] !== expected;\n      },\n    );\n    if (missing.length > 0) {\n      throw new ConvexBindingError(\n        `Convex DbAdapter binding is missing required launch metadata: ${missing.join(\", \")}. Provide a full ConvexProviderContract via the \"convex\" or \"contract\" namespace, or expose stage/sdk/schema/factory at the top level.`,\n      );\n    }\n    return {\n      ...CONVEX_PROVIDER_CONTRACT,\n      tables: adapter.tables as ConvexTableExpectations,\n    };\n  }\n\n  return createContractFromFactoryOptions(getFactoryOptions(config));\n}\n\nfunction normalizeTableName(value: unknown, context: string): string {\n  if (typeof value !== \"string\") {\n    throw new ConvexBindingError(\n      `Convex table ${context} must be a string table name.`,\n    );\n  }\n\n  const tableName = value.trim();\n  if (tableName.length === 0) {\n    throw new ConvexBindingError(\n      `Convex table ${context} must be a non-empty string.`,\n    );\n  }\n\n  return tableName;\n}\n\nfunction assertNonEmptyString(value: unknown, context: string): string {\n  if (typeof value !== \"string\" || value.trim().length === 0) {\n    throw new ConvexBindingError(`${context} must be a non-empty string.`);\n  }\n\n  return value.trim();\n}\n\nfunction assertNonEmptyStringList(value: unknown, context: string): void {\n  if (!Array.isArray(value) || value.length === 0) {\n    throw new ConvexBindingError(\n      `${context} must be a non-empty array of strings.`,\n    );\n  }\n\n  for (const [index, entry] of value.entries()) {\n    assertNonEmptyString(entry, `${context} entry at index ${index}`);\n  }\n}\n\nfunction getTableNames(tables: ConvexTableExpectations): string[] {\n  if (Array.isArray(tables)) {\n    return tables.map((tableName, index) =>\n      normalizeTableName(tableName, `at index ${index}`),\n    );\n  }\n\n  return Object.keys(tables).map((tableName) =>\n    normalizeTableName(tableName, `key \"${tableName}\"`),\n  );\n}\n\nconst CONVEX_OPERATION_KINDS = new Set<string>([\"action\", \"mutation\", \"query\"]);\n\nfunction assertConvexOperationDescriptor(\n  tableName: string,\n  operation: string,\n  descriptor: unknown,\n): void {\n  if (typeof descriptor === \"boolean\") {\n    return;\n  }\n\n  if (typeof descriptor === \"string\") {\n    if (descriptor.trim().length === 0) {\n      throw new ConvexBindingError(\n        `Convex table ${tableName} operation \"${operation}\" must be a non-empty string when provided as a function reference.`,\n      );\n    }\n    return;\n  }\n\n  if (!isObject(descriptor)) {\n    throw new ConvexBindingError(\n      `Convex table ${tableName} operation \"${operation}\" must be a boolean, non-empty string, or descriptor object.`,\n    );\n  }\n\n  if (descriptor.kind !== undefined) {\n    if (\n      typeof descriptor.kind !== \"string\" ||\n      !CONVEX_OPERATION_KINDS.has(descriptor.kind)\n    ) {\n      throw new ConvexBindingError(\n        `Convex table ${tableName} operation \"${operation}\" has invalid kind \"${String(descriptor.kind)}\"; expected one of action | mutation | query.`,\n      );\n    }\n  }\n\n  if (descriptor.name !== undefined) {\n    if (\n      typeof descriptor.name !== \"string\" ||\n      descriptor.name.trim().length === 0\n    ) {\n      throw new ConvexBindingError(\n        `Convex table ${tableName} operation \"${operation}\" name must be a non-empty string.`,\n      );\n    }\n  }\n\n  if (descriptor.args !== undefined) {\n    if (\n      !Array.isArray(descriptor.args) ||\n      descriptor.args.some(\n        (arg) => typeof arg !== \"string\" || arg.trim().length === 0,\n      )\n    ) {\n      throw new ConvexBindingError(\n        `Convex table ${tableName} operation \"${operation}\" args must be an array of non-empty strings.`,\n      );\n    }\n  }\n\n  if (descriptor.returns !== undefined) {\n    if (\n      typeof descriptor.returns !== \"string\" ||\n      descriptor.returns.trim().length === 0\n    ) {\n      throw new ConvexBindingError(\n        `Convex table ${tableName} operation \"${operation}\" returns must be a non-empty string.`,\n      );\n    }\n  }\n}\n\nfunction assertConvexSchemaFieldMap(\n  tableName: string,\n  context: string,\n  fields: unknown,\n  parentPath?: string,\n): void {\n  if (!isObject(fields)) {\n    throw new ConvexBindingError(\n      `Convex table ${tableName} ${context} must be a field descriptor object.`,\n    );\n  }\n\n  const entries = Object.entries(fields);\n  if (entries.length === 0) {\n    throw new ConvexBindingError(\n      `Convex table ${tableName} ${context} must include at least one field.`,\n    );\n  }\n\n  for (const [fieldName, descriptor] of entries) {\n    const normalizedFieldName = assertNonEmptyString(\n      fieldName,\n      `Convex table ${tableName} ${context} field name`,\n    );\n    const path =\n      parentPath === undefined\n        ? normalizedFieldName\n        : `${parentPath}.${normalizedFieldName}`;\n\n    assertConvexSchemaFieldExpectation(tableName, path, descriptor);\n  }\n}\n\nfunction assertConvexSchemaFieldExpectation(\n  tableName: string,\n  path: string,\n  descriptor: unknown,\n): void {\n  const context = `Convex table ${tableName} schema field \"${path}\"`;\n\n  if (typeof descriptor === \"string\") {\n    assertNonEmptyString(descriptor, `${context} type`);\n    return;\n  }\n\n  if (!isObject(descriptor)) {\n    throw new ConvexBindingError(\n      `${context} must be a non-empty string or descriptor object.`,\n    );\n  }\n\n  const unknownKeys = Object.keys(descriptor).filter(\n    (key) => !CONVEX_SCHEMA_FIELD_DESCRIPTOR_KEYS.has(key),\n  );\n  if (unknownKeys.length > 0) {\n    throw new ConvexBindingError(\n      `${context} has unknown descriptor keys: ${unknownKeys.join(\", \")}`,\n    );\n  }\n\n  assertNonEmptyString(descriptor.type, `${context} type`);\n\n  if (descriptor.fields !== undefined) {\n    assertConvexSchemaFieldMap(\n      tableName,\n      `fields ${path}`,\n      descriptor.fields,\n      path,\n    );\n  }\n\n  if (descriptor.items !== undefined) {\n    assertConvexSchemaFieldExpectation(\n      tableName,\n      `${path}[]`,\n      descriptor.items,\n    );\n  }\n\n  if (\n    descriptor.nullable !== undefined &&\n    typeof descriptor.nullable !== \"boolean\"\n  ) {\n    throw new ConvexBindingError(`${context} nullable must be a boolean.`);\n  }\n\n  if (\n    descriptor.optional !== undefined &&\n    typeof descriptor.optional !== \"boolean\"\n  ) {\n    throw new ConvexBindingError(`${context} optional must be a boolean.`);\n  }\n}\n\nfunction assertConvexIndexes(tableName: string, indexes: unknown): void {\n  if (Array.isArray(indexes)) {\n    assertNonEmptyStringList(indexes, `Convex table ${tableName} indexes`);\n    return;\n  }\n\n  if (!isObject(indexes)) {\n    throw new ConvexBindingError(\n      `Convex table ${tableName} indexes must be an array or descriptor object.`,\n    );\n  }\n\n  const entries = Object.entries(indexes);\n  if (entries.length === 0) {\n    throw new ConvexBindingError(\n      `Convex table ${tableName} indexes must include at least one index.`,\n    );\n  }\n\n  for (const [indexName, fields] of entries) {\n    const normalizedIndexName = assertNonEmptyString(\n      indexName,\n      `Convex table ${tableName} index name`,\n    );\n    assertNonEmptyStringList(\n      fields,\n      `Convex table ${tableName} index \"${normalizedIndexName}\" fields`,\n    );\n  }\n}\n\nfunction assertConvexSchemaMetadata(\n  tableName: string,\n  expectation: Record<string, unknown>,\n): void {\n  if (\"schema\" in expectation) {\n    const { schema } = expectation;\n\n    if (typeof schema === \"string\") {\n      assertNonEmptyString(schema, `Convex table ${tableName} schema`);\n    } else {\n      assertConvexSchemaFieldMap(tableName, \"schema\", schema);\n    }\n  }\n\n  if (\"fields\" in expectation) {\n    assertConvexSchemaFieldMap(tableName, \"fields\", expectation.fields);\n  }\n\n  if (\"indexes\" in expectation) {\n    assertConvexIndexes(tableName, expectation.indexes);\n  }\n}\n\nfunction assertConvexCollectionExpectations(\n  tables: ConvexTableExpectations,\n): void {\n  if (Array.isArray(tables)) {\n    return;\n  }\n\n  for (const [tableName, expectation] of Object.entries(tables)) {\n    if (!isObject(expectation)) {\n      throw new ConvexBindingError(\n        `Convex table ${tableName} must include schema metadata or operation expectations.`,\n      );\n    }\n\n    const hasOperationExpectation = Object.keys(expectation).some((key) =>\n      DB_ADAPTER_METHOD_NAMES.has(key),\n    );\n    const hasSchemaMetadata = Object.keys(expectation).some((key) =>\n      CONVEX_SCHEMA_METADATA_KEYS.has(key),\n    );\n\n    if (!hasOperationExpectation && !hasSchemaMetadata) {\n      throw new ConvexBindingError(\n        `Convex table ${tableName} must include schema metadata or operation expectations.`,\n      );\n    }\n\n    if (hasSchemaMetadata) {\n      assertConvexSchemaMetadata(\n        tableName,\n        expectation as Record<string, unknown>,\n      );\n    }\n\n    if (hasSchemaMetadata && !hasOperationExpectation) {\n      continue;\n    }\n\n    const missingOperations = DB_ADAPTER_METHODS.filter(\n      (operation) => !(operation in expectation),\n    );\n\n    if (missingOperations.length > 0) {\n      throw new ConvexBindingError(\n        `Convex table ${tableName} is missing operation expectations: ${missingOperations.join(\", \")}`,\n      );\n    }\n\n    for (const operation of DB_ADAPTER_METHODS) {\n      assertConvexOperationDescriptor(\n        tableName,\n        operation,\n        (expectation as Record<string, unknown>)[operation],\n      );\n    }\n  }\n}\n\nfunction assertConvexProviderContract(\n  config: ConvexDbAdapterOptions,\n  adapter: DbAdapter,\n): ReadonlySet<string> {\n  const contract = getConvexContract(config, adapter);\n\n  if (contract === undefined) {\n    throw new ConvexBindingError(\n      \"withConvexDb requires Convex launch metadata and schema/table expectations; generic DbAdapters are not accepted.\",\n    );\n  }\n\n  const expectedEntries = Object.entries(CONVEX_PROVIDER_CONTRACT);\n  const mismatches = expectedEntries\n    .filter(([key, expectedValue]) => {\n      const actual = contract[key as keyof typeof CONVEX_PROVIDER_CONTRACT];\n      return actual !== expectedValue;\n    })\n    .map(\n      ([key, expectedValue]) =>\n        `${key}=${String(expectedValue)} (received ${String(\n          contract[key as keyof typeof CONVEX_PROVIDER_CONTRACT],\n        )})`,\n    );\n\n  if (mismatches.length > 0) {\n    throw new ConvexBindingError(\n      `Convex DbAdapter binding has invalid provider metadata: ${mismatches.join(\", \")}`,\n    );\n  }\n\n  if (\n    !Array.isArray(contract.tables) &&\n    (!isObject(contract.tables) || Array.isArray(contract.tables))\n  ) {\n    throw new ConvexBindingError(\n      \"Convex DbAdapter binding requires a table expectation array or registry object.\",\n    );\n  }\n\n  const tableNames = getTableNames(contract.tables);\n\n  if (tableNames.length === 0) {\n    throw new ConvexBindingError(\n      \"Convex DbAdapter binding requires at least one schema/table expectation.\",\n    );\n  }\n\n  assertConvexCollectionExpectations(contract.tables);\n  return new Set(tableNames);\n}\n\nfunction assertDbAdapter(value: unknown): asserts value is DbAdapter {\n  if (!isObject(value)) {\n    throw new ConvexBindingError(\n      \"withConvexDb expected a @geenius/db Convex DbAdapter factory output.\",\n    );\n  }\n\n  const missingMethods = DB_ADAPTER_METHODS.filter(\n    (method) => typeof value[method] !== \"function\",\n  );\n\n  if (missingMethods.length > 0) {\n    throw new ConvexBindingError(\n      `Convex DbAdapter binding is missing methods: ${missingMethods.join(\", \")}`,\n    );\n  }\n}\n\nfunction assertDeclaredCollection(\n  collection: string,\n  declaredCollections: ReadonlySet<string>,\n): void {\n  if (!declaredCollections.has(collection)) {\n    throw new DbError(\n      `Convex collection \"${collection}\" is not declared in the provider contract tables.`,\n      \"COLLECTION_NOT_CONFIGURED\",\n    );\n  }\n}\n\nasync function delegateConvexOperation<T>(\n  operation: (typeof DB_ADAPTER_METHODS)[number],\n  delegate: () => Promise<T>,\n): Promise<T> {\n  try {\n    return await delegate();\n  } catch (error) {\n    if (isAdapterError(error)) {\n      throw error;\n    }\n\n    throw new DbError(\n      `Convex ${operation} operation failed`,\n      \"QUERY_ERROR\",\n      error,\n    );\n  }\n}\n\n/**\n * Wraps a Convex-compatible DB adapter in the shared adapters contract.\n *\n * @param config Existing DB adapter output with Convex contract metadata, or a\n * binding object tagged for Convex. Downstream `@geenius/db` factories may\n * provide metadata through `convex`, `contract`, or top-level\n * `provider: \"convex\"` plus `tables`.\n * @returns A DB adapter that delegates CRUD, list, query, and count operations.\n */\nexport function withConvexDb(config: ConvexDbAdapterOptions): DbAdapter {\n  const adapter = getCandidate(config);\n\n  assertDbAdapter(adapter);\n  const declaredCollections = assertConvexProviderContract(config, adapter);\n\n  return {\n    async create<T extends Record<string, unknown>>(\n      collection: string,\n      data: Omit<T, \"id\">,\n    ): Promise<T & { id: string }> {\n      assertDeclaredCollection(collection, declaredCollections);\n      return delegateConvexOperation(\"create\", () =>\n        adapter.create<T>(collection, data),\n      );\n    },\n\n    async get<T>(collection: string, id: string): Promise<T | null> {\n      assertDeclaredCollection(collection, declaredCollections);\n      return delegateConvexOperation(\"get\", () =>\n        adapter.get<T>(collection, id),\n      );\n    },\n\n    async update<T extends Record<string, unknown>>(\n      collection: string,\n      id: string,\n      data: Partial<T>,\n    ): Promise<T | null> {\n      assertDeclaredCollection(collection, declaredCollections);\n      return delegateConvexOperation(\"update\", () =>\n        adapter.update<T>(collection, id, data),\n      );\n    },\n\n    async delete(collection: string, id: string): Promise<boolean> {\n      assertDeclaredCollection(collection, declaredCollections);\n      return delegateConvexOperation(\"delete\", () =>\n        adapter.delete(collection, id),\n      );\n    },\n\n    async list<T>(collection: string, options?: ListOptions): Promise<T[]> {\n      assertDeclaredCollection(collection, declaredCollections);\n      return delegateConvexOperation(\"list\", () =>\n        adapter.list<T>(collection, options),\n      );\n    },\n\n    async query<T>(collection: string, filter: QueryFilter): Promise<T[]> {\n      assertDeclaredCollection(collection, declaredCollections);\n      return delegateConvexOperation(\"query\", () =>\n        adapter.query<T>(collection, filter),\n      );\n    },\n\n    async count(collection: string, filter?: QueryFilter): Promise<number> {\n      assertDeclaredCollection(collection, declaredCollections);\n      return delegateConvexOperation(\"count\", () =>\n        adapter.count(collection, filter),\n      );\n    },\n  };\n}\n"]}