@antseed/web-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAuB,MAAM,QAAQ,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,QAAQ,EACR,qBAAqB,EACrB,eAAe,GAQhB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,WAAW,EACX,QAAQ,GAMT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAA+C,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,YAAY,EAA2B,MAAM,eAAe,CAAC;AAgFtE,0EAA0E;AAC1E,MAAM,YAAY,GAAqB;IACrC,OAAO,EAAE,IAAI;IACb,uBAAuB,EAAE,4CAA4C;IACrE,uBAAuB,EAAE,4CAA4C;IACrE,WAAW,EAAE,4CAA4C;IACzD,MAAM,EAAE,6BAA6B;CACtC,CAAC;AAEF,uEAAuE;AACvE,+EAA+E;AAC/E,MAAM,8BAA8B,GAAG,GAAG,GAAG,IAAI,CAAC;AAQlD,MAAM,OAAO,gBAAgB;IAaR;IACA;IAbF,QAAQ,CAAgB;IACxB,GAAG,CAAiB;IACpB,OAAO,CAAmB;IAC1B,KAAK,CAAoB;IACzB,cAAc,CAAwB;IACtC,OAAO,CAAsB;IACrC,UAAU,CAAyB;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,eAAe,GAAG,IAAI,GAAG,EAAkC,CAAC;IACrE,MAAM,GAAG,KAAK,CAAC;IAEvB,YACmB,OAAsB,EACtB,OAAsB;QADtB,YAAO,GAAP,OAAO,CAAe;QACtB,YAAO,GAAP,OAAO,CAAe;QAEvC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,kBAAkB,EAAE,CAAC;QAE9D,MAAM,SAAS,GAAI,UAAsC,CAAC,iBAE7C,CAAC;QACd,MAAM,QAAQ,GAAI,UAAsC,CAAC,SAE5C,CAAC;QACd,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,IAAI,SAAS,CAAC;QAC1E,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,IAAI,QAAQ,CAAC;QACzD,IAAI,CAAC,qBAAqB,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;QAClF,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAEvD,IAAI,cAAc,GAA0B,IAAI,CAAC;QACjD,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACzC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,cAAc,GAAG,IAAI,cAAc,CAAC;gBAClC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1F,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB;gBACrD,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;gBACrC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;aACjC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,cAAc,GAA0B,IAAI,CAAC;QACjD,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACzC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,cAAc,GAAG,IAAI,cAAc,CAAC;gBAClC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1F,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB;gBACrD,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;aACjC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,MAAM,qBAAqB,GAAG,cAAc;YAC1C,CAAC,CAAC,IAAI,qBAAqB,CAAC;gBACxB,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE;oBAChD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B,cAAc,EACd,CAAC,kDAAkD,CAAC,EACpD,cAAc,CAAC,QAAQ,CACxB,CAAC;oBACF,OAAO,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,WAAW,CAAqB,CAAC;gBAC7E,CAAC;aACF,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,GAAG,GAAG,IAAI,mBAAmB,CACjC,IAAI,CAAC,QAAQ,EACb;YACE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB;YAC7D,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB;YAC7D,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACrC,uBAAuB,EAAE,4CAA4C;YACrE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,GAAG;YACpE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAQ;YAC7D,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,QAAU;YACrE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,KAAK,SAAS;gBACpD,CAAC,CAAC,EAAE,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;gBACnE,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,EAAE,EAAE;SACZ,EACD,IAAI,CAAC,KAAK,EACV,qBAAqB,CACtB,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAsB,CAC1C,IAAI,CAAC,QAAQ,EACb,GAAG,EACH,cAAc,EACd,cAAc,EACd,IAAI,CAAC,KAAK,EACV,EAAE,EACF,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EACpB,qBAAqB,CACtB,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CACpC,EAAE,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EACrG;YACE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,mBAAmB,EAAE,IAAI;YACzB,mBAAmB,EAAE,IAAI;YACzB,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7E,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,QAAQ;YACvD,kBAAkB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,eAAe;YAC1E,kBAAkB,EAAE,GAAG,EAAE,GAAE,CAAC;SAC7B,CACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAsB;QACxC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK;eAClC,UAAU,CAAC,SAAoE,EAAE,KAAK,CAAC;QAC7F,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,KAAK,GAAG;YACZ,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,uBAAuB,CAAC,WAAW,EAAE;YAC7C,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;SAC7B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,iBAAiB,KAAK,EAAE,EAAE,KAAK,EAAE;YAC1E,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,IAAI,KAAK;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,qBAAqB,CAAC,IAAI,CAAC;gBACrE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,YAAY,IAAI,mBAAmB,KAAK,EAAE;gBAC7E,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvF,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpF,CAAC,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;YAC5D,OAAO,IAAI,gBAAgB,CAAC,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,OAAsB;QACrC,OAAO,IAAI,gBAAgB,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAI7B,CAAC;QACF,IAAI,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/C,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,EAAE,GAAG,MAAM,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAAC;gBACnE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAChF,kBAAkB,GAAG,KAAK,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,kBAAkB,EAAE,CAAC;YACvB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,sFAAsF;IACtF,KAAK,CAAC,OAAO,CACX,MAA8B,EAC9B,OAA+B,EAAE;QAEjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ;YAC3C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,MAA2C,CAAC;QAChD,MAAM,QAAQ,GAAkB,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;QACnE,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,QAAQ,CAAC;YAC1C,sEAAsE;YACtE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC;QACvB,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;gBACjD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAc;QACtC,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,MAAM,EAAE,CAAC;QACxG,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC9F,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,UAAU,GAAe,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAuB,CAAC,CAAC;QAEtG,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBAC7C,KAAK,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAChG,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBACpD,KAAK,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YACrG,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC9E,KAAK,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,WAAW,CACf,IAAmB,EACnB,GAA0B,EAC1B,SAAmE;QAEnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7E,MAAM,eAAe,GAAG,SAAS,EAAE,OAAO;YACxC,CAAC,CAAC;gBACE,eAAe,EAAE,CAAC,KAA0C,EAAE,EAAE,CAC9D,SAAS,CAAC,OAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;aAC7C;YACH,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IAC9D,CAAC;IAED,UAAU,CAAC,YAAoB;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/F,CAAC;IAED,gBAAgB;IAChB,uBAAuB,CAAC,YAAoB;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAC9C,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EACpC,YAAY,CAAC,KAAK,EAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAC7B,CAAC;IACJ,CAAC;IAED,oFAAoF;IACpF,KAAK,CAAC,mBAAmB,CAAC,SAAiB,EAAE,cAA8B;QACzE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,uBAAuB,CAAC,SAAiB,EAAE,cAA8B;QAC7E,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC7E,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,mBAAmB,CACvB,IAAmB,EACnB,OAAuD;QAEvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7F,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,MAAc;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,KAAc;QAChD,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;YACnE,mEAAmE;QACrE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACjE,CAAC;IAEO,wBAAwB,CAAC,SAAiB;QAChD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACjD,IACE,CAAC,OAAO;eACL,OAAO,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;eACxC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK;eACnC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EACpF,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAsB;IAC9D,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAkD,EAAE,CAAC;IAC1E,MAAM,yBAAyB,GAA4D,EAAE,CAAC;IAC9F,MAAM,2BAA2B,GAA8D,EAAE,CAAC;IAClG,MAAM,gCAAgC,GAAmE,EAAE,CAAC;IAC5G,MAAM,2BAA2B,GAA8D,EAAE,CAAC;IAElG,KAAK,MAAM,YAAY,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACrC,OAAO;YACP,YAAY,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,cAAc;SACtE,CAAC,CACH,CAAC;QACF,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,QAAQ,CAAC,GAAG;gBAC1B,QAAQ,EAAE,EAAE,GAAG,YAAY,CAAC,cAAc,EAAE;gBAC5C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1D,CAAC;QACJ,CAAC;QAED,kBAAkB,CAAC,yBAAyB,EAAE,QAAQ,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACxF,kBAAkB,CAAC,2BAA2B,EAAE,QAAQ,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAC5F,kBAAkB,CAChB,gCAAgC,EAChC,QAAQ,EACR,YAAY,CAAC,wBAAwB,CACtC,CAAC;QACF,kBAAkB,CAAC,2BAA2B,EAAE,QAAQ,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC/C,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,QAAQ;QACR,SAAS;QACT,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,MAAM;YACtD,CAAC,CAAC,EAAE,gCAAgC,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,yBAAyB,EAAE,aAAa,EAAE,cAAc,CAAC,kBAAkB;QAC3E,0BAA0B,EAAE,aAAa,EAAE,cAAc,CAAC,mBAAmB;QAC7E,+BAA+B,EAAE,aAAa,EAAE,cAAc,CAAC,wBAAwB;KACxF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAuD,EACvD,QAAgB,EAChB,QAAuC;IAEvC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,QAAQ;QAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;;QACpD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,OAAO,aAAa;IAEL;IACR;IAFX,YACmB,MAAwB,EAChC,IAAmB;QADX,WAAM,GAAN,MAAM,CAAkB;QAChC,SAAI,GAAJ,IAAI,CAAe;IAC3B,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,KAAmB,EAAE,YAA6B,EAAE;QAChE,MAAM,GAAG,GAA0B;YACjC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE;gBACP,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,GAAG,KAAK,CAAC,OAAO;aACjB;YACD,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC;SAC9G,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,iEAAiE;IACjE,YAAY,CAAC,OAGZ;QACC,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,6EAA6E;IAC7E,mBAAmB,CAAC,cAA8B;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChG,CAAC;IAED,sDAAsD;IACtD,uBAAuB,CAAC,cAA8B;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACpG,CAAC;IAEO,oBAAoB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3G,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,SAAS,aAAa,CAAC,OAAsB;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;WACxB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Browser transport to one seller: relay-signaled WebRTC DataChannel carrying
3
+ * AntSeed protocol frames. Satisfies @antseed/buyer-core's BuyerConnection
4
+ * interface; all request/payment logic lives in the shared buyer machinery.
5
+ */
6
+ import type { Signer } from 'ethers';
7
+ import { ConnectionState, type FramedMessage } from '@antseed/protocol';
8
+ import { type WebSocketCtor } from './signaling.js';
9
+ export interface RtcEnvironment {
10
+ RTCPeerConnection: typeof RTCPeerConnection;
11
+ WebSocket: WebSocketCtor;
12
+ }
13
+ /** How the selected ICE candidate pair reaches the seller. */
14
+ export interface ConnectionPathInfo {
15
+ /** 'relay' when traffic flows through a TURN server, 'direct' otherwise. */
16
+ path: 'direct' | 'relay' | 'unknown';
17
+ }
18
+ export interface ConnectionOptions {
19
+ connectTimeoutMs?: number;
20
+ /**
21
+ * STUN/TURN servers: bare `stun:`/`turn:` URL strings, or full
22
+ * RTCIceServer entries when TURN credentials are needed.
23
+ */
24
+ iceServers?: (string | RTCIceServer)[];
25
+ /** Pass 'relay' to force TURN-only paths (privacy: hides the client IP from the seller). */
26
+ iceTransportPolicy?: RTCIceTransportPolicy;
27
+ capabilities?: string[];
28
+ /**
29
+ * Called once after the DataChannel opens with the selected path kind.
30
+ * Deliberately coarse — no addresses or raw ICE candidates are exposed.
31
+ */
32
+ onConnectionInfo?: (info: ConnectionPathInfo) => void;
33
+ }
34
+ /** @deprecated Use ConnectionPathInfo. */
35
+ export type ConnectionInfo = ConnectionPathInfo;
36
+ type StateListener = (state: ConnectionState) => void;
37
+ export declare class SellerConnection {
38
+ private readonly pc;
39
+ private readonly dc;
40
+ private readonly signaling;
41
+ private decoder;
42
+ private messageId;
43
+ private pingTimer;
44
+ private missedPongs;
45
+ private awaitingPong;
46
+ private _state;
47
+ private stateListeners;
48
+ /** Set by the session wiring; receives every non-keepalive inbound frame. */
49
+ onFrame: (frame: FramedMessage) => void;
50
+ onClose: (reason: string) => void;
51
+ private constructor();
52
+ static connect(relayBridgeUrl: string, signer: Signer, env: RtcEnvironment, options?: ConnectionOptions): Promise<SellerConnection>;
53
+ get state(): ConnectionState;
54
+ on(event: 'stateChange', listener: StateListener): this;
55
+ off(event: 'stateChange', listener: StateListener): this;
56
+ send(data: Uint8Array): void;
57
+ get isOpen(): boolean;
58
+ close(): void;
59
+ private fail;
60
+ private setState;
61
+ private sendFrame;
62
+ private handleMessage;
63
+ private startKeepalive;
64
+ }
65
+ export {};
66
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAGL,eAAe,EAIf,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;IACvC,4FAA4F;IAC5F,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACvD;AAED,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAehD,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAEtD,qBAAa,gBAAgB;IAczB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAf5B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,cAAc,CAA4B;IAElD,6EAA6E;IAC7E,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAY;IACnD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAY;IAE7C,OAAO;WAMM,OAAO,CAClB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IA6G5B,IAAI,KAAK,IAAI,eAAe,CAE3B;IAED,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAKvD,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAKxD,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAY5B,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,KAAK,IAAI,IAAI;IAab,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,cAAc;CAgBvB"}
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Browser transport to one seller: relay-signaled WebRTC DataChannel carrying
3
+ * AntSeed protocol frames. Satisfies @antseed/buyer-core's BuyerConnection
4
+ * interface; all request/payment logic lives in the shared buyer machinery.
5
+ */
6
+ import { CONNECTION_CAPABILITY_COOPERATIVE_CLOSE_V1, CONNECTION_CAPABILITY_RESPONSE_AUTH_V1, ConnectionState, FrameDecoder, MessageType, encodeFrame, } from '@antseed/protocol';
7
+ import { buildHelloEnvelope } from './identity.js';
8
+ import { SignalingSocket } from './signaling.js';
9
+ const DATA_CHANNEL_LABEL = 'antseed-data';
10
+ const PING_INTERVAL_MS = 15_000;
11
+ const MAX_MISSED_PONGS = 3;
12
+ const DEFAULT_ICE_SERVERS = [
13
+ { urls: 'stun:stun.l.google.com:19302' },
14
+ { urls: 'stun:stun1.l.google.com:19302' },
15
+ { urls: 'stun:stun2.l.google.com:19302' },
16
+ ];
17
+ const DEFAULT_CAPABILITIES = [
18
+ CONNECTION_CAPABILITY_RESPONSE_AUTH_V1,
19
+ CONNECTION_CAPABILITY_COOPERATIVE_CLOSE_V1,
20
+ ];
21
+ export class SellerConnection {
22
+ pc;
23
+ dc;
24
+ signaling;
25
+ decoder = new FrameDecoder();
26
+ messageId = 0;
27
+ pingTimer = null;
28
+ missedPongs = 0;
29
+ awaitingPong = false;
30
+ _state = ConnectionState.Connecting;
31
+ stateListeners = new Set();
32
+ /** Set by the session wiring; receives every non-keepalive inbound frame. */
33
+ onFrame = () => { };
34
+ onClose = () => { };
35
+ constructor(pc, dc, signaling) {
36
+ this.pc = pc;
37
+ this.dc = dc;
38
+ this.signaling = signaling;
39
+ }
40
+ static async connect(relayBridgeUrl, signer, env, options = {}) {
41
+ const connectTimeoutMs = options.connectTimeoutMs ?? 30_000;
42
+ const signaling = await SignalingSocket.connect(relayBridgeUrl, env.WebSocket);
43
+ const hello = await buildHelloEnvelope(signer);
44
+ signaling.sendHello({
45
+ type: 'hello',
46
+ auth: hello,
47
+ capabilities: options.capabilities ?? DEFAULT_CAPABILITIES,
48
+ });
49
+ const pc = new env.RTCPeerConnection({
50
+ iceServers: (options.iceServers ?? DEFAULT_ICE_SERVERS).map((server) => typeof server === 'string' ? { urls: server } : server),
51
+ ...(options.iceTransportPolicy ? { iceTransportPolicy: options.iceTransportPolicy } : {}),
52
+ });
53
+ const dc = pc.createDataChannel(DATA_CHANNEL_LABEL, { ordered: true });
54
+ dc.binaryType = 'arraybuffer';
55
+ const conn = new SellerConnection(pc, dc, signaling);
56
+ pc.onicecandidate = (event) => {
57
+ if (event.candidate?.candidate) {
58
+ signaling.sendSignal({
59
+ type: 'candidate',
60
+ candidate: event.candidate.candidate,
61
+ mid: event.candidate.sdpMid ?? '0',
62
+ });
63
+ }
64
+ };
65
+ // Serialize application: the answer and trickled candidates can arrive in
66
+ // one WebSocket frame, and addIceCandidate before setRemoteDescription
67
+ // settles throws InvalidStateError.
68
+ let applyQueue = Promise.resolve();
69
+ signaling.onMessage = (msg) => {
70
+ applyQueue = applyQueue
71
+ .then(async () => {
72
+ if (msg.type === 'sdp') {
73
+ await pc.setRemoteDescription({
74
+ type: msg.descriptionType,
75
+ sdp: msg.sdp,
76
+ });
77
+ }
78
+ else if (msg.type === 'candidate') {
79
+ await pc.addIceCandidate({ candidate: msg.candidate, sdpMid: msg.mid });
80
+ }
81
+ })
82
+ .catch((err) => conn.fail(`signaling apply failed: ${String(err)}`));
83
+ };
84
+ signaling.onClose = (reason) => {
85
+ if (dc.readyState !== 'open')
86
+ conn.fail(`signaling closed: ${reason}`);
87
+ };
88
+ const offer = await pc.createOffer();
89
+ await pc.setLocalDescription(offer);
90
+ signaling.sendSignal({ type: 'sdp', sdp: offer.sdp ?? '', descriptionType: 'offer' });
91
+ try {
92
+ await new Promise((resolve, reject) => {
93
+ const timer = setTimeout(() => reject(new Error(`connection timeout after ${connectTimeoutMs}ms`)), connectTimeoutMs);
94
+ dc.onopen = () => {
95
+ clearTimeout(timer);
96
+ resolve();
97
+ };
98
+ dc.onerror = (event) => {
99
+ clearTimeout(timer);
100
+ reject(new Error(`datachannel error: ${String(event.message ?? event)}`));
101
+ };
102
+ pc.onconnectionstatechange = () => {
103
+ if (pc.connectionState === 'failed' || pc.connectionState === 'closed') {
104
+ clearTimeout(timer);
105
+ reject(new Error(`peer connection ${pc.connectionState}`));
106
+ }
107
+ };
108
+ });
109
+ }
110
+ catch (error) {
111
+ conn.close();
112
+ throw error;
113
+ }
114
+ conn.setState(ConnectionState.Open);
115
+ dc.onmessage = (event) => conn.handleMessage(event.data);
116
+ dc.onclose = () => conn.fail('datachannel closed');
117
+ pc.onconnectionstatechange = () => {
118
+ if (pc.connectionState === 'failed' || pc.connectionState === 'closed') {
119
+ conn.fail(`peer connection ${pc.connectionState}`);
120
+ }
121
+ };
122
+ conn.startKeepalive();
123
+ if (options.onConnectionInfo) {
124
+ const report = options.onConnectionInfo;
125
+ void classifyConnectionPath(pc).then((path) => report({ path })).catch(() => { });
126
+ }
127
+ // The bridge is only needed for signaling; free the relay slot (it counts
128
+ // against the per-IP cap). The seller keeps the session alive — its
129
+ // signaling-close handler only tears down connections still connecting.
130
+ // There is no re-signaling/ICE-restart path that would need it later.
131
+ signaling.onClose = () => { };
132
+ signaling.close();
133
+ return conn;
134
+ }
135
+ // ── BuyerConnection surface ─────────────────────────────────
136
+ get state() {
137
+ return this._state;
138
+ }
139
+ on(event, listener) {
140
+ if (event === 'stateChange')
141
+ this.stateListeners.add(listener);
142
+ return this;
143
+ }
144
+ off(event, listener) {
145
+ if (event === 'stateChange')
146
+ this.stateListeners.delete(listener);
147
+ return this;
148
+ }
149
+ send(data) {
150
+ if (this._state !== ConnectionState.Open) {
151
+ throw new Error(`cannot send in state ${this._state}`);
152
+ }
153
+ // Copy into an exact-size buffer: callers may hand us views.
154
+ const copy = new Uint8Array(data.length);
155
+ copy.set(data);
156
+ this.dc.send(copy.buffer);
157
+ }
158
+ // ── Lifecycle ───────────────────────────────────────────────
159
+ get isOpen() {
160
+ return this._state === ConnectionState.Open && this.dc.readyState === 'open';
161
+ }
162
+ close() {
163
+ if (this._state === ConnectionState.Closed)
164
+ return;
165
+ this.setState(ConnectionState.Closed);
166
+ if (this.pingTimer)
167
+ clearInterval(this.pingTimer);
168
+ try {
169
+ this.dc.close();
170
+ }
171
+ catch { /* already closed */ }
172
+ try {
173
+ this.pc.close();
174
+ }
175
+ catch { /* already closed */ }
176
+ this.signaling.close();
177
+ }
178
+ fail(reason) {
179
+ if (this._state === ConnectionState.Closed)
180
+ return;
181
+ this.close();
182
+ this.onClose(reason);
183
+ }
184
+ setState(state) {
185
+ if (this._state === state)
186
+ return;
187
+ this._state = state;
188
+ for (const listener of this.stateListeners)
189
+ listener(state);
190
+ }
191
+ sendFrame(type, payload) {
192
+ this.messageId = (this.messageId + 1) & 0xffffffff;
193
+ this.send(encodeFrame({ type, messageId: this.messageId, payload }));
194
+ }
195
+ handleMessage(data) {
196
+ const bytes = typeof data === 'string' ? new TextEncoder().encode(data) : new Uint8Array(data);
197
+ let frames;
198
+ try {
199
+ frames = this.decoder.feed(bytes);
200
+ }
201
+ catch (err) {
202
+ this.fail(`frame decode error: ${String(err)}`);
203
+ return;
204
+ }
205
+ for (const frame of frames) {
206
+ if (frame.type === MessageType.Ping) {
207
+ this.send(encodeFrame({ type: MessageType.Pong, messageId: frame.messageId, payload: frame.payload }));
208
+ }
209
+ else if (frame.type === MessageType.Pong) {
210
+ this.awaitingPong = false;
211
+ this.missedPongs = 0;
212
+ }
213
+ else {
214
+ this.onFrame(frame);
215
+ }
216
+ }
217
+ }
218
+ startKeepalive() {
219
+ this.pingTimer = setInterval(() => {
220
+ if (!this.isOpen)
221
+ return;
222
+ if (this.awaitingPong) {
223
+ this.missedPongs++;
224
+ if (this.missedPongs >= MAX_MISSED_PONGS) {
225
+ this.fail('keepalive timeout');
226
+ return;
227
+ }
228
+ }
229
+ const payload = new Uint8Array(8);
230
+ new DataView(payload.buffer).setBigUint64(0, BigInt(Date.now()));
231
+ this.awaitingPong = true;
232
+ this.sendFrame(MessageType.Ping, payload);
233
+ }, PING_INTERVAL_MS);
234
+ }
235
+ }
236
+ /**
237
+ * Classify the selected ICE path from getStats(): 'relay' when either side of
238
+ * the nominated candidate pair is a TURN relay candidate. Returns 'unknown'
239
+ * when stats are unavailable (e.g. non-browser polyfills). Never surfaces
240
+ * addresses or raw candidates.
241
+ */
242
+ async function classifyConnectionPath(pc) {
243
+ try {
244
+ const stats = await pc.getStats();
245
+ const byId = new Map();
246
+ stats.forEach((report, id) => byId.set(id, report));
247
+ let selected;
248
+ for (const report of byId.values()) {
249
+ if (report.type !== 'candidate-pair')
250
+ continue;
251
+ if (report.selected === true || (report.nominated === true && report.state === 'succeeded')) {
252
+ selected = report;
253
+ break;
254
+ }
255
+ }
256
+ // Firefox marks the pair via the transport's selectedCandidatePairId.
257
+ if (!selected) {
258
+ for (const report of byId.values()) {
259
+ if (report.type === 'transport' && typeof report.selectedCandidatePairId === 'string') {
260
+ selected = byId.get(report.selectedCandidatePairId);
261
+ break;
262
+ }
263
+ }
264
+ }
265
+ if (!selected)
266
+ return 'unknown';
267
+ for (const key of ['localCandidateId', 'remoteCandidateId']) {
268
+ const candidateId = selected[key];
269
+ if (typeof candidateId !== 'string')
270
+ continue;
271
+ if (byId.get(candidateId)?.candidateType === 'relay')
272
+ return 'relay';
273
+ }
274
+ return 'direct';
275
+ }
276
+ catch {
277
+ return 'unknown';
278
+ }
279
+ }
280
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Browser-side connection auth: builds the signed hello envelope using the
3
+ * shared wire format from @antseed/protocol.
4
+ */
5
+ import { Wallet, type Signer } from 'ethers';
6
+ import { type ConnectionAuthEnvelope } from '@antseed/protocol/connection-auth';
7
+ export type { ConnectionAuthEnvelope };
8
+ export declare function signerFromPrivateKey(privateKeyHex: string): Wallet;
9
+ export declare function peerIdOf(signer: Signer): Promise<string>;
10
+ export declare function buildHelloEnvelope(signer: Signer): Promise<ConnectionAuthEnvelope>;
11
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,mCAAmC,CAAC;AAE3C,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAEvC,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9D;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAQxF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Browser-side connection auth: builds the signed hello envelope using the
3
+ * shared wire format from @antseed/protocol.
4
+ */
5
+ import { Wallet } from 'ethers';
6
+ import { MSG_SIGNING_DOMAIN, buildConnectionAuthPayload, } from '@antseed/protocol/connection-auth';
7
+ export function signerFromPrivateKey(privateKeyHex) {
8
+ const key = privateKeyHex.startsWith('0x') ? privateKeyHex : `0x${privateKeyHex}`;
9
+ return new Wallet(key);
10
+ }
11
+ export async function peerIdOf(signer) {
12
+ return (await signer.getAddress()).slice(2).toLowerCase();
13
+ }
14
+ export async function buildHelloEnvelope(signer) {
15
+ const peerId = await peerIdOf(signer);
16
+ const ts = Date.now();
17
+ const nonceBytes = crypto.getRandomValues(new Uint8Array(16));
18
+ const nonce = [...nonceBytes].map((b) => b.toString(16).padStart(2, '0')).join('');
19
+ const payload = buildConnectionAuthPayload('hello', peerId, ts, nonce);
20
+ const sig = (await signer.signMessage(MSG_SIGNING_DOMAIN + payload)).slice(2).toLowerCase();
21
+ return { peerId, ts, nonce, sig };
22
+ }
23
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAClB,0BAA0B,GAE3B,MAAM,mCAAmC,CAAC;AAI3C,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;IAClF,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc;IAC3C,OAAO,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc;IACrD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5F,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { AntseedWebClient, SellerSession, sellerSummaryFromMetadata, type ClientOptions, type RequestInput, type SellerSummary, type StreamCallbacks, type WebPaymentConfig, } from './client.js';
2
+ export { SellerConnection, type ConnectionInfo, type ConnectionOptions, type ConnectionPathInfo, type RtcEnvironment, } from './connection.js';
3
+ export { IndexedDbChannelStore, MemoryChannelStore, type IndexedDbChannelStoreOptions, } from './channel-store.js';
4
+ export { buildHelloEnvelope, peerIdOf, signerFromPrivateKey, type ConnectionAuthEnvelope } from './identity.js';
5
+ export { SignalingSocket, type SignalingMessage, type WebSocketCtor } from './signaling.js';
6
+ export { BuyerAlreadyActiveError, BuyerTabLock, type WebLockLike, type WebLockManagerLike, } from './tab-lock.js';
7
+ export * from '@antseed/buyer-core';
8
+ export * from '@antseed/protocol';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EACzB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,4BAA4B,GAClC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AAGvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export { AntseedWebClient, SellerSession, sellerSummaryFromMetadata, } from './client.js';
2
+ export { SellerConnection, } from './connection.js';
3
+ export { IndexedDbChannelStore, MemoryChannelStore, } from './channel-store.js';
4
+ export { buildHelloEnvelope, peerIdOf, signerFromPrivateKey } from './identity.js';
5
+ export { SignalingSocket } from './signaling.js';
6
+ export { BuyerAlreadyActiveError, BuyerTabLock, } from './tab-lock.js';
7
+ // The buyer machinery and wire format are shared with @antseed/node.
8
+ export * from '@antseed/buyer-core';
9
+ export * from '@antseed/protocol';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,yBAAyB,GAM1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,GAKjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,EAA+B,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,eAAe,EAA6C,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EACL,uBAAuB,EACvB,YAAY,GAGb,MAAM,eAAe,CAAC;AAEvB,qEAAqE;AACrE,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Newline-delimited JSON signaling over a relay WebSocket. The relay pipes
3
+ * bytes verbatim to the seller's TCP signaling port, so the messages here are
4
+ * exactly what packages/node/src/p2p/connection-manager.ts expects.
5
+ *
6
+ * The hello line is sent as its own WebSocket frame: the seller caps all
7
+ * bytes buffered before the first newline at 8 KiB, so the SDP offer must
8
+ * never coalesce with the hello.
9
+ */
10
+ import type { ConnectionAuthEnvelope } from './identity.js';
11
+ export type SignalingMessage = {
12
+ type: 'sdp';
13
+ sdp: string;
14
+ descriptionType: string;
15
+ } | {
16
+ type: 'candidate';
17
+ candidate: string;
18
+ mid: string;
19
+ };
20
+ export interface HelloMessage {
21
+ type: 'hello';
22
+ auth: ConnectionAuthEnvelope;
23
+ capabilities?: string[];
24
+ }
25
+ export type WebSocketLike = {
26
+ binaryType: string;
27
+ readonly readyState: number;
28
+ send(data: string): void;
29
+ close(code?: number, reason?: string): void;
30
+ addEventListener(type: string, listener: (event: any) => void): void;
31
+ };
32
+ export type WebSocketCtor = new (url: string) => WebSocketLike;
33
+ export declare class SignalingSocket {
34
+ private ws;
35
+ private buffer;
36
+ private decoder;
37
+ onMessage: (msg: SignalingMessage) => void;
38
+ onClose: (reason: string) => void;
39
+ private constructor();
40
+ static connect(url: string, WebSocketImpl: WebSocketCtor): Promise<SignalingSocket>;
41
+ sendHello(hello: HelloMessage): void;
42
+ sendSignal(msg: SignalingMessage): void;
43
+ close(): void;
44
+ private handleData;
45
+ }
46
+ //# sourceMappingURL=signaling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signaling.d.ts","sourceRoot":"","sources":["../src/signaling.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,sBAAsB,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;CACtE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,EAAE,MAAM,KAAK,aAAa,CAAC;AAI/D,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAqB;IAEpC,SAAS,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAY;IACtD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAY;IAE7C,OAAO;WAIM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IAkBzF,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAIpC,UAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAKvC,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,UAAU;CAqCnB"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Newline-delimited JSON signaling over a relay WebSocket. The relay pipes
3
+ * bytes verbatim to the seller's TCP signaling port, so the messages here are
4
+ * exactly what packages/node/src/p2p/connection-manager.ts expects.
5
+ *
6
+ * The hello line is sent as its own WebSocket frame: the seller caps all
7
+ * bytes buffered before the first newline at 8 KiB, so the SDP offer must
8
+ * never coalesce with the hello.
9
+ */
10
+ const MAX_LINE_BUFFER = 64 * 1024;
11
+ export class SignalingSocket {
12
+ ws;
13
+ buffer = '';
14
+ decoder = new TextDecoder();
15
+ onMessage = () => { };
16
+ onClose = () => { };
17
+ constructor(ws) {
18
+ this.ws = ws;
19
+ }
20
+ static async connect(url, WebSocketImpl) {
21
+ const ws = new WebSocketImpl(url);
22
+ ws.binaryType = 'arraybuffer';
23
+ const socket = new SignalingSocket(ws);
24
+ await new Promise((resolve, reject) => {
25
+ ws.addEventListener('open', () => resolve());
26
+ ws.addEventListener('error', () => reject(new Error(`signaling connect failed: ${url}`)));
27
+ ws.addEventListener('close', (event) => reject(new Error(`signaling closed: ${event.code} ${event.reason ?? ''}`)));
28
+ });
29
+ ws.addEventListener('message', (event) => socket.handleData(event.data));
30
+ ws.addEventListener('close', (event) => socket.onClose(`${event.code ?? ''} ${event.reason ?? ''}`.trim()));
31
+ return socket;
32
+ }
33
+ sendHello(hello) {
34
+ this.ws.send(JSON.stringify(hello) + '\n');
35
+ }
36
+ sendSignal(msg) {
37
+ if (this.ws.readyState !== 1)
38
+ return;
39
+ this.ws.send(JSON.stringify(msg) + '\n');
40
+ }
41
+ close() {
42
+ try {
43
+ this.ws.close(1000, 'done');
44
+ }
45
+ catch {
46
+ // already closed
47
+ }
48
+ }
49
+ handleData(data) {
50
+ if (typeof data === 'string') {
51
+ this.buffer += data;
52
+ }
53
+ else if (data instanceof ArrayBuffer) {
54
+ this.buffer += this.decoder.decode(new Uint8Array(data), { stream: true });
55
+ }
56
+ else if (ArrayBuffer.isView(data)) {
57
+ const view = data;
58
+ this.buffer += this.decoder.decode(new Uint8Array(view.buffer, view.byteOffset, view.byteLength), { stream: true });
59
+ }
60
+ else {
61
+ return;
62
+ }
63
+ if (this.buffer.length > MAX_LINE_BUFFER) {
64
+ this.close();
65
+ this.onClose('signaling buffer overflow');
66
+ return;
67
+ }
68
+ let newline;
69
+ while ((newline = this.buffer.indexOf('\n')) >= 0) {
70
+ const line = this.buffer.slice(0, newline).trim();
71
+ this.buffer = this.buffer.slice(newline + 1);
72
+ if (!line)
73
+ continue;
74
+ let parsed;
75
+ try {
76
+ parsed = JSON.parse(line);
77
+ }
78
+ catch {
79
+ this.close();
80
+ this.onClose('malformed signaling line');
81
+ return;
82
+ }
83
+ this.onMessage(parsed);
84
+ }
85
+ }
86
+ }
87
+ //# sourceMappingURL=signaling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signaling.js","sourceRoot":"","sources":["../src/signaling.ts"],"names":[],"mappings":"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"}