@powersync/service-module-postgres 0.0.4 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"WalStream.js","sourceRoot":"","sources":["../../src/replication/WalStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAA0B,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC/G,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAA2D,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACxH,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAEjG,MAAM,CAAC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAYhD,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAED,MAAM,OAAO,SAAS;IAkBpB,YAAY,OAAyB;QAdrC,kBAAa,GAAG,CAAC,CAAC;QAUV,mBAAc,GAAG,IAAI,GAAG,EAAwC,CAAC;QAEjE,qBAAgB,GAAG,KAAK,CAAC;QAG/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAEvC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAChC,OAAO,EACP,GAAG,EAAE;YACH,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,yDAAyD;gBACzD,uEAAuE;gBACvE,sCAAsC;gBACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CACnC,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,mEAAmE,CACpE,CAAC;gBACF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBAClB,qEAAqE;oBACrE,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,yEAAyE;gBACzE,6DAA6D;YAC/D,CAAC;QACH,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,KAAiC,EACjC,EAAuB,EACvB,YAA0B;QAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,IAAI,YAAY,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YACjE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,SAAgB,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC;gBAC5B,SAAS,EAAE;;;;;4BAKS;gBACpB,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;oBAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE;iBACtD;aACF,CAAC,CAAC;YACH,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC;gBAC5B,SAAS,EAAE;;;;;yBAKM;gBACjB,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;oBAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE;iBACtD;aACF,CAAC,CAAC;YAEH,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,MAAM,GAA0B,EAAE,CAAC;QAEvC,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,UAAoB,CAAC;YACtC,IAAI,OAAO,GAAG,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAe,CAAC,CAAC;YAE1C,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,SAAS;YACX,CAAC;YAED,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC;gBACxB,SAAS,EAAE,+FAA+F;gBAC1G,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;oBAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE;oBAC/C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;iBACjC;aACF,CAAC,CAAC;YACH,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,MAAM,IAAI,IAAI,kBAAkB,gBAAgB,cAAc,CAAC,CAAC;gBACrG,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAE/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CACrC,KAAK,EACL;gBACE,IAAI;gBACJ,MAAM;gBACN,QAAQ,EAAE,KAAK;gBACf,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;aACrB,EAC3B,KAAK,CACN,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAExE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,mCAAmC,CAAC,CAAC;YAE5D,IAAI,UAAU,GAAG,IAAI,CAAC;YAEtB,qCAAqC;YACrC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,MAAM,KAAK,EAAE,CAAC;gBAEd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACX,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;wBAC9C,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK;wBACjC,QAAQ,EAAE;4BACR,gBAAgB,EAAE,QAAQ;yBAC3B;qBACF,CAAC,CAAC;oBAEH,MAAM,UAAU,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAC;oBACH,qGAAqG;oBACrG,2GAA2G;oBAC3G,eAAe;oBACf,MAAM,CAAC,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;oBAEpC,gFAAgF;oBAChF,2DAA2D;oBAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;wBAChD,SAAS,EAAE,6HAA6H;wBACxI,MAAM,EAAE;4BACN,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACpC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;yBAC7C;qBACF,CAAC,CAAC;oBAEH,IAAI,KAAK,EAAE,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;wBAChC,iCAAiC;oBACnC,CAAC;oBAED,UAAU;oBACV,MAAM,CAAC,IAAI,CAAC,QAAQ,QAAQ,kBAAkB,CAAC,CAAC;oBAChD,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;gBACrC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,UAAU,GAAG,CAAC,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,yBAAyB,EAAE,CAAC,CAAC,CAAC;oBAErD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,MAAM,CAAC,CAAC;oBACV,CAAC;oBAED,qGAAqG;oBACrG,iBAAiB;oBAEjB,IACE,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;wBACrC,kCAAkC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;wBAClD,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAC7C,CAAC;wBACD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;4BACrC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO;4BACnC,QAAQ,EAAE;gCACR,SAAS,EAAE,CAAC;gCACZ,gBAAgB,EAAE,QAAQ;6BAC3B;yBACF,CAAC,CAAC;wBACH,mEAAmE;wBACnE,6EAA6E;wBAC7E,EAAE;wBACF,iDAAiD;wBACjD,uDAAuD;wBACvD,0CAA0C;wBAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,+CAA+C,CAAC,CAAC;wBAExE,MAAM,IAAI,2BAA2B,CAAC,oBAAoB,QAAQ,yBAAyB,CAAC,CAAC;oBAC/F,CAAC;oBACD,0BAA0B;oBAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAuB,EAAE,KAA0B;QACtE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC;YAC7B,SAAS,EAAE;;0BAES;YACpB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SAC1D,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC;QACb,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,uBAAuB,CAAC,qBAA0C;QACtE,sEAAsE;QACtE,kDAAkD;QAClD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAEhC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAE3B,MAAM,EAAE,CAAC,KAAK,CAAC;YACb,SAAS,EAAE,2FAA2F;YACtG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,sDAAsD;QACtD,gFAAgF;QAChF,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAC9C,2BAA2B,QAAQ,mCAAmC,CACvE,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,kBAAkB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,eAAe,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACjG,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,sDAAsD;QACtD,yFAAyF;QACzF,8BAA8B;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,4BAA4B,QAAQ,OAAO,GAAG,kBAAkB,QAAQ,EAAE,CAAC,CAAC;QAExF,oGAAoG;QACpG,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,mCAAmC;QACnC,wFAAwF;QACxF,8EAA8E;QAC9E,yCAAyC;QACzC,8CAA8C;QAC9C,EAAE;QACF,iGAAiG;QACjG,mEAAmE;QAEnE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAClE,MAAM,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,6BAA6B,QAAQ,GAAG,CAAC,CAAC;YAEzD,kEAAkE;YAClE,yCAAyC;YACzC,MAAM,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAElD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,+BAA+B,CAAC,CAAC;YACxD,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,2BAA2B,CAAC,CAAC;YACpD,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3B,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,EAAuB,EAAE,GAAW;QAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QACvD,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAC3B,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,IAAI,EAAE,EACrF,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,KAAK,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;gBAC1E,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;oBAC3C,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC3C,MAAM,KAAK,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,CAAC,YAAY,CAAC,OAAmC;QACtD,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,KAAiC,EAAE,EAAuB,EAAE,KAA0B;QAChH,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,gBAAgB,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QACpE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,iBAAiB,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACpF,IAAI,OAAO,GAAkC,EAAE,CAAC;QAChD,iCAAiC;QACjC,+FAA+F;QAE/F,IAAI,KAAK,EAAE,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAC;gBAClC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAChC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClC,IAAI,CAAC,GAAqB,EAAE,CAAC;gBAC7B,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;oBACtB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,YAAY,IAAI,IAAI,EAAE,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,gBAAgB,KAAK,CAAC,aAAa,IAAI,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC;gBAC5F,YAAY,GAAG,EAAE,CAAC;YACpB,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,0DAA0D;gBAC1D,MAAM,KAAK,CAAC,IAAI,CAAC;oBACf,GAAG,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM;oBACpC,WAAW,EAAE,KAAK;oBAClB,MAAM,EAAE,SAAS;oBACjB,eAAe,EAAE,SAAS;oBAC1B,KAAK,EAAE,MAAM;oBACb,cAAc,EAAE,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC;iBAC3E,CAAC,CAAC;YACL,CAAC;YAED,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;YAClB,OAAO,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE7D,MAAM,KAAK,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAiC,EAAE,UAAkC,EAAE,QAAiB;QAC3G,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,OAAO,UAAU,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa;YAC9C,iBAAiB,EAAE,UAAU;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3D,qEAAqE;QACrE,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEpC,eAAe;QACf,iGAAiG;QACjG,wCAAwC;QACxC,sCAAsC;QACtC,MAAM,cAAc,GAAG,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAE1F,IAAI,cAAc,EAAE,CAAC;YACnB,oEAAoE;YACpE,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAErC,IAAI,GAAG,GAAW,QAAQ,CAAC;YAC3B,2CAA2C;YAC3C,0CAA0C;YAC1C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxB,IAAI,CAAC;oBACH,uBAAuB;oBACvB,gEAAgE;oBAChE,yBAAyB;oBACzB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;oBAChE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClD,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC3B,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;YACjB,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAEO,QAAQ,CAAC,UAAkB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,8EAA8E;YAC9E,mCAAmC;YACnC,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAAiC,EACjC,GAA2B;QAE3B,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;YACtE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,aAAa,oCAAoC,CAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;gBACtD,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC;oBACtB,GAAG,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM;oBACpC,WAAW,EAAE,KAAK;oBAClB,MAAM,EAAE,SAAS;oBACjB,eAAe,EAAE,SAAS;oBAC1B,KAAK,EAAE,UAAU;oBACjB,cAAc,EAAE,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,gBAAgB,CAAC;iBAC/E,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnD,+DAA+D;gBAC/D,iDAAiD;gBACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;gBACjD,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC;oBACtB,GAAG,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM;oBACpC,WAAW,EAAE,KAAK;oBAClB,MAAM,EAAE,MAAM;oBACd,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;oBAChG,KAAK,EAAE,KAAK;oBACZ,cAAc,EAAE,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC;iBAC1E,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAE,CAAC;gBAEpD,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC;oBACtB,GAAG,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM;oBACpC,WAAW,EAAE,KAAK;oBAClB,MAAM,EAAE,MAAM;oBACd,eAAe,EAAE,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC;oBAC3E,KAAK,EAAE,SAAS;oBAChB,cAAc,EAAE,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,MAAM,GAA0B,EAAE,CAAC;YACvC,KAAK,IAAI,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YACD,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,yEAAyE;YACzE,4DAA4D;YAC5D,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;YAC7E,MAAM,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,qBAA0C;QAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,qBAA0C;QAC5D,yDAAyD;QAEzD,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC;YACjE,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,OAAO,EAAE;gBACP,aAAa,EAAE,GAAG;gBAClB,iBAAiB,EAAE,gBAAgB;aACpC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,uDAAuD;QACvD,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAElC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAC3B,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,IAAI,EAAE,EACrF,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,0DAA0D;YAC1D,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,iBAAiB,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC7D,MAAM,KAAK,EAAE,CAAC;gBAEd,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,CAAC;gBAED,2DAA2D;gBAC3D,sCAAsC;gBACtC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;gBAClD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC3B,IAAI,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;wBAC1B,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;oBACnE,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;wBAC9B,IAAI,GAAG,IAAI,CAAC;oBACd,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;wBAC/B,OAAO,CAAC,WAAW,EAAE,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC3D,IAAI,GAAG,KAAK,CAAC;wBACb,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAI,CAAC,CAAC;wBAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAI,EAAE,iBAAiB,CAAC,CAAC;oBAC9C,CAAC;yBAAM,CAAC;wBACN,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;4BACrB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,mBAAmB,KAAK,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;wBACtE,CAAC;wBAED,KAAK,IAAI,CAAC,CAAC;wBACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,6EAA6E;oBAC7E,kFAAkF;oBAClF,kFAAkF;oBAClF,gDAAgD;oBAChD,2DAA2D;oBAC3D,IAAI,MAAM,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;wBACxC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC;gBAED,OAAO,CAAC,WAAW,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,iBAA2C;QAChE,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,KAAK,UAAU,KAAK;IAClB,oFAAoF;IACpF,qGAAqG;IACrG,gCAAgC;IAChC,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"WalStream.js","sourceRoot":"","sources":["../../src/replication/WalStream.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.0.4",
8
+ "version": "0.1.0",
9
9
  "main": "dist/index.js",
10
10
  "license": "FSL-1.1-Apache-2.0",
11
11
  "type": "module",
@@ -28,10 +28,10 @@
28
28
  "uuid": "^9.0.1",
29
29
  "uri-js": "^4.4.1",
30
30
  "@powersync/lib-services-framework": "0.2.0",
31
- "@powersync/service-core": "0.10.1",
32
- "@powersync/service-jpgwire": "0.18.1",
31
+ "@powersync/service-core": "0.11.0",
32
+ "@powersync/service-jpgwire": "0.18.2",
33
33
  "@powersync/service-jsonbig": "0.17.10",
34
- "@powersync/service-sync-rules": "0.21.0",
34
+ "@powersync/service-sync-rules": "0.22.0",
35
35
  "@powersync/service-types": "0.4.0"
36
36
  },
37
37
  "devDependencies": {
@@ -10,17 +10,26 @@ import { getDebugTableInfo } from '../replication/replication-utils.js';
10
10
  import { PUBLICATION_NAME } from '../replication/WalStream.js';
11
11
 
12
12
  export class PostgresRouteAPIAdapter implements api.RouteAPI {
13
- protected pool: pgwire.PgClient;
14
-
15
13
  connectionTag: string;
16
14
  // TODO this should probably be configurable one day
17
15
  publicationName = PUBLICATION_NAME;
18
16
 
19
- constructor(protected config: types.ResolvedConnectionConfig) {
20
- this.pool = pgwire.connectPgWirePool(config, {
17
+ static withConfig(config: types.ResolvedConnectionConfig) {
18
+ const pool = pgwire.connectPgWirePool(config, {
21
19
  idleTimeout: 30_000
22
20
  });
23
- this.connectionTag = config.tag ?? sync_rules.DEFAULT_TAG;
21
+ return new PostgresRouteAPIAdapter(pool, config.tag, config);
22
+ }
23
+
24
+ /**
25
+ * @param config - Required for the service; optional for tests.
26
+ */
27
+ constructor(
28
+ protected pool: pgwire.PgClient,
29
+ connectionTag?: string,
30
+ private config?: types.ResolvedConnectionConfig
31
+ ) {
32
+ this.connectionTag = connectionTag ?? sync_rules.DEFAULT_TAG;
24
33
  }
25
34
 
26
35
  getParseSyncRulesOptions(): ParseSyncRulesOptions {
@@ -34,13 +43,13 @@ export class PostgresRouteAPIAdapter implements api.RouteAPI {
34
43
  }
35
44
 
36
45
  async getSourceConfig(): Promise<service_types.configFile.ResolvedDataSourceConfig> {
37
- return this.config;
46
+ return this.config!;
38
47
  }
39
48
 
40
49
  async getConnectionStatus(): Promise<service_types.ConnectionStatusV2> {
41
50
  const base = {
42
- id: this.config.id,
43
- uri: types.baseUri(this.config)
51
+ id: this.config?.id ?? '',
52
+ uri: this.config == null ? '' : types.baseUri(this.config)
44
53
  };
45
54
 
46
55
  try {
@@ -71,7 +80,7 @@ export class PostgresRouteAPIAdapter implements api.RouteAPI {
71
80
  }
72
81
 
73
82
  async executeQuery(query: string, params: any[]): Promise<service_types.internal_routes.ExecuteSqlResponse> {
74
- if (!this.config.debug_api) {
83
+ if (!this.config?.debug_api) {
75
84
  return service_types.internal_routes.ExecuteSqlResponse.encode({
76
85
  results: {
77
86
  columns: [],
@@ -204,7 +213,8 @@ export class PostgresRouteAPIAdapter implements api.RouteAPI {
204
213
  }
205
214
 
206
215
  async getReplicationLag(options: api.ReplicationLagOptions): Promise<number | undefined> {
207
- const { bucketStorage: slotName } = options;
216
+ const { bucketStorage } = options;
217
+ const slotName = bucketStorage.slot_name;
208
218
  const results = await pg_utils.retriedQuery(this.pool, {
209
219
  statement: `SELECT
210
220
  slot_name,
@@ -223,9 +233,18 @@ FROM pg_replication_slots WHERE slot_name = $1 LIMIT 1;`,
223
233
  }
224
234
 
225
235
  async getReplicationHead(): Promise<string> {
226
- const [{ lsn }] = pgwire.pgwireRows(
227
- await pg_utils.retriedQuery(this.pool, `SELECT pg_logical_emit_message(false, 'powersync', 'ping') as lsn`)
236
+ // On most Postgres versions, pg_logical_emit_message() returns the correct LSN.
237
+ // However, on Aurora (Postgres compatible), it can return an entirely different LSN,
238
+ // causing the write checkpoints to never be replicated back to the client.
239
+ // For those, we need to use pg_current_wal_lsn() instead.
240
+ const { results } = await pg_utils.retriedQuery(
241
+ this.pool,
242
+ { statement: `SELECT pg_current_wal_lsn() as lsn` },
243
+ { statement: `SELECT pg_logical_emit_message(false, 'powersync', 'ping')` }
228
244
  );
245
+
246
+ // Specifically use the lsn from the first statement, not the second one.
247
+ const lsn = results[0].rows[0][0];
229
248
  return String(lsn);
230
249
  }
231
250
 
@@ -23,7 +23,16 @@ export class PostgresModule extends replication.ReplicationModule<types.Postgres
23
23
  async initialize(context: system.ServiceContextContainer): Promise<void> {
24
24
  await super.initialize(context);
25
25
 
26
- if (context.configuration.base_config.client_auth?.supabase) {
26
+ const client_auth = context.configuration.base_config.client_auth;
27
+
28
+ if (client_auth?.supabase && client_auth?.supabase_jwt_secret == null) {
29
+ // Only use the deprecated SupabaseKeyCollector when there is no
30
+ // secret hardcoded. Hardcoded secrets are handled elsewhere, using
31
+ // StaticSupabaseKeyCollector.
32
+
33
+ // Support for SupabaseKeyCollector is deprecated and support will be
34
+ // completely removed by Supabase soon. We can keep support a while
35
+ // longer for self-hosted setups, before also removing that on our side.
27
36
  this.registerSupabaseAuth(context);
28
37
  }
29
38
 
@@ -38,7 +47,7 @@ export class PostgresModule extends replication.ReplicationModule<types.Postgres
38
47
  }
39
48
 
40
49
  protected createRouteAPIAdapter(): api.RouteAPI {
41
- return new PostgresRouteAPIAdapter(this.resolveConfig(this.decodedConfig!));
50
+ return PostgresRouteAPIAdapter.withConfig(this.resolveConfig(this.decodedConfig!));
42
51
  }
43
52
 
44
53
  protected createReplicator(context: system.ServiceContext): replication.AbstractReplicator {
@@ -38,7 +38,11 @@ export class PgManager {
38
38
  async snapshotConnection(): Promise<pgwire.PgConnection> {
39
39
  const p = pgwire.connectPgWire(this.options, { type: 'standard' });
40
40
  this.connectionPromises.push(p);
41
- return await p;
41
+ const connection = await p;
42
+ // Disable statement timeout for snapshot queries.
43
+ // On Supabase, the default is 2 minutes.
44
+ await connection.query(`set session statement_timeout = 0`);
45
+ return connection;
42
46
  }
43
47
 
44
48
  async end(): Promise<void> {
@@ -18,7 +18,10 @@ export interface WalStreamOptions {
18
18
  }
19
19
 
20
20
  interface InitResult {
21
+ /** True if initial snapshot is not yet done. */
21
22
  needsInitialSync: boolean;
23
+ /** True if snapshot must be started from scratch with a new slot. */
24
+ needsNewSlot: boolean;
22
25
  }
23
26
 
24
27
  export class MissingReplicationSlotError extends Error {
@@ -173,88 +176,114 @@ export class WalStream {
173
176
  const slotName = this.slot_name;
174
177
 
175
178
  const status = await this.storage.getStatus();
176
- if (status.snapshot_done && status.checkpoint_lsn) {
179
+ const snapshotDone = status.snapshot_done && status.checkpoint_lsn != null;
180
+ if (snapshotDone) {
181
+ // Snapshot is done, but we still need to check the replication slot status
177
182
  logger.info(`${slotName} Initial replication already done`);
183
+ }
178
184
 
179
- let last_error = null;
185
+ // Check if replication slot exists
186
+ const rs = await this.connections.pool.query({
187
+ statement: 'SELECT 1 FROM pg_replication_slots WHERE slot_name = $1',
188
+ params: [{ type: 'varchar', value: slotName }]
189
+ });
190
+ const slotExists = rs.rows.length > 0;
191
+
192
+ if (slotExists) {
193
+ // This checks that the slot is still valid
194
+ const r = await this.checkReplicationSlot();
195
+ return {
196
+ needsInitialSync: !snapshotDone,
197
+ needsNewSlot: r.needsNewSlot
198
+ };
199
+ } else {
200
+ return { needsInitialSync: true, needsNewSlot: true };
201
+ }
202
+ }
180
203
 
181
- // Check that replication slot exists
182
- for (let i = 120; i >= 0; i--) {
183
- await touch();
204
+ /**
205
+ * If a replication slot exists, check that it is healthy.
206
+ */
207
+ private async checkReplicationSlot(): Promise<InitResult> {
208
+ let last_error = null;
209
+ const slotName = this.slot_name;
184
210
 
185
- if (i == 0) {
186
- container.reporter.captureException(last_error, {
187
- level: errors.ErrorSeverity.ERROR,
188
- metadata: {
189
- replication_slot: slotName
190
- }
191
- });
211
+ // Check that replication slot exists
212
+ for (let i = 120; i >= 0; i--) {
213
+ await touch();
214
+
215
+ if (i == 0) {
216
+ container.reporter.captureException(last_error, {
217
+ level: errors.ErrorSeverity.ERROR,
218
+ metadata: {
219
+ replication_slot: slotName
220
+ }
221
+ });
222
+
223
+ throw last_error;
224
+ }
225
+ try {
226
+ // We peek a large number of changes here, to make it more likely to pick up replication slot errors.
227
+ // For example, "publication does not exist" only occurs here if the peek actually includes changes related
228
+ // to the slot.
229
+ logger.info(`Checking ${slotName}`);
230
+
231
+ // The actual results can be quite large, so we don't actually return everything
232
+ // due to memory and processing overhead that would create.
233
+ const cursor = await this.connections.pool.stream({
234
+ statement: `SELECT 1 FROM pg_catalog.pg_logical_slot_peek_binary_changes($1, NULL, 1000, 'proto_version', '1', 'publication_names', $2)`,
235
+ params: [
236
+ { type: 'varchar', value: slotName },
237
+ { type: 'varchar', value: PUBLICATION_NAME }
238
+ ]
239
+ });
192
240
 
193
- throw last_error;
241
+ for await (let _chunk of cursor) {
242
+ // No-op, just exhaust the cursor
194
243
  }
195
- try {
196
- // We peek a large number of changes here, to make it more likely to pick up replication slot errors.
197
- // For example, "publication does not exist" only occurs here if the peek actually includes changes related
198
- // to the slot.
199
- logger.info(`Checking ${slotName}`);
200
-
201
- // The actual results can be quite large, so we don't actually return everything
202
- // due to memory and processing overhead that would create.
203
- const cursor = await this.connections.pool.stream({
204
- statement: `SELECT 1 FROM pg_catalog.pg_logical_slot_peek_binary_changes($1, NULL, 1000, 'proto_version', '1', 'publication_names', $2)`,
205
- params: [
206
- { type: 'varchar', value: slotName },
207
- { type: 'varchar', value: PUBLICATION_NAME }
208
- ]
209
- });
210
244
 
211
- for await (let _chunk of cursor) {
212
- // No-op, just exhaust the cursor
213
- }
245
+ // Success
246
+ logger.info(`Slot ${slotName} appears healthy`);
247
+ return { needsInitialSync: false, needsNewSlot: false };
248
+ } catch (e) {
249
+ last_error = e;
250
+ logger.warn(`${slotName} Replication slot error`, e);
214
251
 
215
- // Success
216
- logger.info(`Slot ${slotName} appears healthy`);
217
- return { needsInitialSync: false };
218
- } catch (e) {
219
- last_error = e;
220
- logger.warn(`${slotName} Replication slot error`, e);
252
+ if (this.stopped) {
253
+ throw e;
254
+ }
221
255
 
222
- if (this.stopped) {
223
- throw e;
224
- }
256
+ // Could also be `publication "powersync" does not exist`, although this error may show up much later
257
+ // in some cases.
225
258
 
226
- // Could also be `publication "powersync" does not exist`, although this error may show up much later
227
- // in some cases.
228
-
229
- if (
230
- /incorrect prev-link/.test(e.message) ||
231
- /replication slot.*does not exist/.test(e.message) ||
232
- /publication.*does not exist/.test(e.message)
233
- ) {
234
- container.reporter.captureException(e, {
235
- level: errors.ErrorSeverity.WARNING,
236
- metadata: {
237
- try_index: i,
238
- replication_slot: slotName
239
- }
240
- });
241
- // Sample: record with incorrect prev-link 10000/10000 at 0/18AB778
242
- // Seen during development. Some internal error, fixed by re-creating slot.
243
- //
244
- // Sample: publication "powersync" does not exist
245
- // Happens when publication deleted or never created.
246
- // Slot must be re-created in this case.
247
- logger.info(`${slotName} does not exist anymore, will create new slot`);
248
-
249
- throw new MissingReplicationSlotError(`Replication slot ${slotName} does not exist anymore`);
250
- }
251
- // Try again after a pause
252
- await new Promise((resolve) => setTimeout(resolve, 1000));
259
+ if (
260
+ /incorrect prev-link/.test(e.message) ||
261
+ /replication slot.*does not exist/.test(e.message) ||
262
+ /publication.*does not exist/.test(e.message)
263
+ ) {
264
+ container.reporter.captureException(e, {
265
+ level: errors.ErrorSeverity.WARNING,
266
+ metadata: {
267
+ try_index: i,
268
+ replication_slot: slotName
269
+ }
270
+ });
271
+ // Sample: record with incorrect prev-link 10000/10000 at 0/18AB778
272
+ // Seen during development. Some internal error, fixed by re-creating slot.
273
+ //
274
+ // Sample: publication "powersync" does not exist
275
+ // Happens when publication deleted or never created.
276
+ // Slot must be re-created in this case.
277
+ logger.info(`${slotName} does not exist anymore, will create new slot`);
278
+
279
+ return { needsInitialSync: true, needsNewSlot: true };
253
280
  }
281
+ // Try again after a pause
282
+ await new Promise((resolve) => setTimeout(resolve, 1000));
254
283
  }
255
284
  }
256
285
 
257
- return { needsInitialSync: true };
286
+ throw new Error('Unreachable');
258
287
  }
259
288
 
260
289
  async estimatedCount(db: pgwire.PgConnection, table: storage.SourceTable): Promise<string> {
@@ -278,81 +307,60 @@ WHERE oid = $1::regclass`,
278
307
  * If (partial) replication was done before on this slot, this clears the state
279
308
  * and starts again from scratch.
280
309
  */
281
- async startInitialReplication(replicationConnection: pgwire.PgConnection) {
310
+ async startInitialReplication(replicationConnection: pgwire.PgConnection, status: InitResult) {
282
311
  // If anything here errors, the entire replication process is aborted,
283
- // and all connections closed, including this one.
312
+ // and all connections are closed, including this one.
284
313
  const db = await this.connections.snapshotConnection();
285
314
 
286
315
  const slotName = this.slot_name;
287
316
 
288
- await this.storage.clear();
317
+ if (status.needsNewSlot) {
318
+ // This happens when there is no existing replication slot, or if the
319
+ // existing one is unhealthy.
320
+ // In those cases, we have to start replication from scratch.
321
+ // If there is an existing healthy slot, we can skip this and continue
322
+ // initial replication where we left off.
323
+ await this.storage.clear();
324
+
325
+ await db.query({
326
+ statement: 'SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_name = $1',
327
+ params: [{ type: 'varchar', value: slotName }]
328
+ });
289
329
 
290
- await db.query({
291
- statement: 'SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_name = $1',
292
- params: [{ type: 'varchar', value: slotName }]
293
- });
330
+ // We use the replication connection here, not a pool.
331
+ // The replication slot must be created before we start snapshotting tables.
332
+ await replicationConnection.query(`CREATE_REPLICATION_SLOT ${slotName} LOGICAL pgoutput`);
294
333
 
295
- // We use the replication connection here, not a pool.
296
- // This connection needs to stay open at least until the snapshot is used below.
297
- const result = await replicationConnection.query(
298
- `CREATE_REPLICATION_SLOT ${slotName} LOGICAL pgoutput EXPORT_SNAPSHOT`
299
- );
300
- const columns = result.columns;
301
- const row = result.rows[0]!;
302
- if (columns[1]?.name != 'consistent_point' || columns[2]?.name != 'snapshot_name' || row == null) {
303
- throw new Error(`Invalid CREATE_REPLICATION_SLOT output: ${JSON.stringify(columns)}`);
334
+ logger.info(`Created replication slot ${slotName}`);
304
335
  }
305
- // This LSN could be used in initialReplication below.
306
- // But it's also safe to just use ZERO_LSN - we won't get any changes older than this lsn
307
- // with streaming replication.
308
- const lsn = pgwire.lsnMakeComparable(row[1]);
309
- const snapshot = row[2];
310
- logger.info(`Created replication slot ${slotName} at ${lsn} with snapshot ${snapshot}`);
311
-
312
- // https://stackoverflow.com/questions/70160769/postgres-logical-replication-starting-from-given-lsn
313
- await db.query('BEGIN');
314
- // Use the snapshot exported above.
315
- // Using SERIALIZABLE isolation level may give stronger guarantees, but that complicates
316
- // the replication slot + snapshot above. And we still won't have SERIALIZABLE
317
- // guarantees with streaming replication.
318
- // See: ./docs/serializability.md for details.
319
- //
320
- // Another alternative here is to use the same pgwire connection for initial replication as well,
321
- // instead of synchronizing a separate transaction to the snapshot.
322
336
 
323
- try {
324
- await db.query(`SET TRANSACTION ISOLATION LEVEL REPEATABLE READ`);
325
- await db.query(`SET TRANSACTION READ ONLY`);
326
- await db.query(`SET TRANSACTION SNAPSHOT '${snapshot}'`);
327
-
328
- // Disable statement timeout for the duration of this transaction.
329
- // On Supabase, the default is 2 minutes.
330
- await db.query(`set local statement_timeout = 0`);
331
-
332
- logger.info(`${slotName} Starting initial replication`);
333
- await this.initialReplication(db, lsn);
334
- logger.info(`${slotName} Initial replication done`);
335
- await db.query('COMMIT');
336
- } catch (e) {
337
- await db.query('ROLLBACK');
338
- throw e;
339
- }
337
+ await this.initialReplication(db);
340
338
  }
341
339
 
342
- async initialReplication(db: pgwire.PgConnection, lsn: string) {
340
+ async initialReplication(db: pgwire.PgConnection) {
343
341
  const sourceTables = this.sync_rules.getSourceTables();
344
342
  await this.storage.startBatch(
345
- { zeroLSN: ZERO_LSN, defaultSchema: POSTGRES_DEFAULT_SCHEMA, storeCurrentData: true },
343
+ { zeroLSN: ZERO_LSN, defaultSchema: POSTGRES_DEFAULT_SCHEMA, storeCurrentData: true, skipExistingRows: true },
346
344
  async (batch) => {
345
+ const rs = await db.query(`select pg_current_wal_lsn() as lsn`);
346
+ const startLsn = rs.rows[0][0];
347
+
347
348
  for (let tablePattern of sourceTables) {
348
349
  const tables = await this.getQualifiedTableNames(batch, db, tablePattern);
349
350
  for (let table of tables) {
351
+ if (table.snapshotComplete) {
352
+ logger.info(`${this.slot_name} Skipping ${table.qualifiedName} - snapshot already done`);
353
+ continue;
354
+ }
350
355
  await this.snapshotTable(batch, db, table);
351
- await batch.markSnapshotDone([table], lsn);
356
+
357
+ const rs = await db.query(`select pg_current_wal_lsn() as lsn`);
358
+ const tableLsnNotBefore = rs.rows[0][0];
359
+ await batch.markSnapshotDone([table], tableLsnNotBefore);
352
360
  await touch();
353
361
  }
354
362
  }
355
- await batch.commit(lsn);
363
+ await batch.commit(startLsn);
356
364
  }
357
365
  );
358
366
  }
@@ -451,12 +459,15 @@ WHERE oid = $1::regclass`,
451
459
  try {
452
460
  await db.query('BEGIN');
453
461
  try {
462
+ await this.snapshotTable(batch, db, result.table);
463
+
454
464
  // Get the current LSN.
455
465
  // The data will only be consistent once incremental replication
456
466
  // has passed that point.
467
+ // We have to get this LSN _after_ we have started the snapshot query.
457
468
  const rs = await db.query(`select pg_current_wal_lsn() as lsn`);
458
469
  lsn = rs.rows[0][0];
459
- await this.snapshotTable(batch, db, result.table);
470
+
460
471
  await db.query('COMMIT');
461
472
  } catch (e) {
462
473
  await db.query('ROLLBACK');
@@ -561,7 +572,7 @@ WHERE oid = $1::regclass`,
561
572
  async initReplication(replicationConnection: pgwire.PgConnection) {
562
573
  const result = await this.initSlot();
563
574
  if (result.needsInitialSync) {
564
- await this.startInitialReplication(replicationConnection);
575
+ await this.startInitialReplication(replicationConnection, result);
565
576
  }
566
577
  }
567
578
 
@@ -581,7 +592,7 @@ WHERE oid = $1::regclass`,
581
592
  await this.storage.autoActivate();
582
593
 
583
594
  await this.storage.startBatch(
584
- { zeroLSN: ZERO_LSN, defaultSchema: POSTGRES_DEFAULT_SCHEMA, storeCurrentData: true },
595
+ { zeroLSN: ZERO_LSN, defaultSchema: POSTGRES_DEFAULT_SCHEMA, storeCurrentData: true, skipExistingRows: false },
585
596
  async (batch) => {
586
597
  // Replication never starts in the middle of a transaction
587
598
  let inTx = false;