@peerbit/shared-log 9.0.6 → 9.0.7
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.
- package/dist/src/index.d.ts +5 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +59 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/replication.d.ts +8 -0
- package/dist/src/replication.d.ts.map +1 -1
- package/dist/src/replication.js +36 -24
- package/dist/src/replication.js.map +1 -1
- package/dist/src/role.d.ts +37 -0
- package/dist/src/role.d.ts.map +1 -1
- package/dist/src/role.js +99 -92
- package/dist/src/role.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +79 -7
- package/src/replication.ts +37 -22
- package/src/role.ts +68 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replication.js","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,OAAO,EACP,GAAG,GACH,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAc,EAAE,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"replication.js","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,GAAG,GACH,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAc,EAAE,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACN,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,wBAAwB,GACxB,MAAM,WAAW,CAAC;AAInB,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC5B,iEAAY,CAAA;IACZ,mEAAa,CAAA;AACd,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC5C,MAAc,EACd,MAAc,EACyB,EAAE;IACzC,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,+FAA+F;IACnI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACrC,OAAO;QACN,CAAC,MAAM,EAAE,IAAI,CAAC;QACd,YAAY,GAAG,CAAC;YACf,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC;KACjB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,gBAAgB;IAEpB,EAAE,CAAa;IAGvB,SAAS,CAAS;IAGV,OAAO,CAAS;IAGhB,OAAO,CAAS;IAExB,YAAY,UAKX;QACA,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;QACrD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,wBAAwB,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,wBAAwB,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,GAAG,wBAAwB,CAAC;IAChD,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,GAAG,wBAAwB,CAAC;IAChD,CAAC;IAED,2BAA2B,CAAC,GAAkB;QAC7C,OAAO,IAAI,yBAAyB,CAAC;YACpC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,GAAG,CAAC,QAAQ,EAAE;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;IACJ,CAAC;CACD;AAzCQ;IADP,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAChB,UAAU;4CAAC;AAGvB;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;mDACL;AAGV;IADP,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;iDACC;AAGhB;IADP,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;iDACC;AAkCzB,MAAM,OAAO,yBAAyB;IAErC,EAAE,CAAa;IAGf,IAAI,CAAS;IAGb,SAAS,CAAS;IAGlB,MAAM,CAAS;IAGf,IAAI,CAAS;IAGb,MAAM,CAAS;IAGf,IAAI,CAAS;IAGb,KAAK,CAAS;IAGd,iBAAiB,CAAoB;IAErC,YACC,UAO8D;QAE9D,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YACP,UAAwC,CAAC,aAAa;gBACtD,UAA2C,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,iBAAiB;YACrB,UAAU,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,QAAQ,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,SAAS,CAAC,UAA8C;QAC/D,MAAM,MAAM,GAAG,6BAA6B,CAC3C,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,MAAM,CACjB,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAEhE,IAAI,CAAC,KAAK;YACT,IAAI,CAAC,IAAI;gBACT,IAAI,CAAC,MAAM;gBACX,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,IACC,IAAI,CAAC,MAAM,GAAG,UAAU;YACxB,IAAI,CAAC,IAAI,GAAG,UAAU;YACtB,IAAI,CAAC,MAAM,GAAG,UAAU;YACxB,IAAI,CAAC,IAAI,GAAG,UAAU;YACtB,IAAI,CAAC,KAAK,GAAG,UAAU,EACtB,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACrD,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,KAAa;QACrB,OAAO,CACN,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3C,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAC3C,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,KAAgC,EAAE,UAAU,GAAG,IAAI;QAC3D,IACC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EACxB,CAAC;YACF,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,kBAAkB;QACjB,OAAO,IAAI,gBAAgB,CAAC;YAC3B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,wBAAwB;YAC9C,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,wBAAwB;YAC7C,SAAS,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAa;QACvB,IAAI,YAAY,GAAG,wBAAwB,GAAG,KAAK,CAAC;QACpD,OAAO,IAAI,CAAC,GAAG,CACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,EAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,EAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,EACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,CAClC,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,IAAI,CAAC,KAAK,GAAG,wBAAwB,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,KAAgC;QACtC,IACC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YACxB,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YAClC,IAAI,CAAC,iBAAiB,KAAK,KAAK,CAAC,iBAAiB;YAClD,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC5B,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YACxB,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC5B,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YACxB,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EACzB,CAAC;YACF,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAED,QAAQ;QACP,IAAI,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAEtE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;YAClD,OAAO,KAAK,kBAAkB,CAAC,IAAI,CAAC,MAAM,GAAG,wBAAwB,CAAC,KAAK,kBAAkB,CAAC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC;QACzI,CAAC;QACD,OAAO,KAAK,kBAAkB,CAAC,IAAI,CAAC,MAAM,GAAG,wBAAwB,CAAC,KAAK,kBAAkB,CAAC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,GAAG,wBAAwB,CAAC,KAAK,kBAAkB,CAAC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC;IACtQ,CAAC;CACD;AAlJA;IADC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BACrB,UAAU;qDAAC;AAGf;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;uDACb;AAGb;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;4DACL;AAGlB;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;yDACR;AAGf;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;uDACV;AAGb;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;yDACR;AAGf;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;uDACV;AAGb;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;wDACT;AAGd;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;oEACe;AAiItC,MAAM,OAAO,WAAW;IACvB,QAAQ,CAAC,GAAc;QACtB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;CACD;AAGM,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,WAAW;IAEhD,MAAM,CAAS;IAEf,YAAY,KAAa;QACxB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,IAAe;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;CACD,CAAA;AAVA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;gDACR;AAFH,gBAAgB;IAD5B,OAAO,CAAC,CAAC,CAAC;;GACE,gBAAgB,CAY5B;;AAGM,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,gBAAgB;IAClE;QACC,KAAK,EAAE,CAAC;IACT,CAAC;CACD,CAAA;AAJY,6BAA6B;IADzC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,6BAA6B,CAIzC;;AAED,mCAAmC;AAE5B,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,gBAAgB;IAExD,IAAI,CAAwB;IAE5B,YAAY,UAA2C;QACtD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,wBAAwB;QACvB,OAAO,IAAI,8BAA8B,CAAC;YACzC,QAAQ,EACP,IAAI,CAAC,IAAI,YAAY,UAAU;gBAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7B,OAAO,IAAI,gBAAgB,CAAC;wBAC3B,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC;wBACnB,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;qBACtB,CAAC,CAAC;gBACJ,CAAC,CAAC;gBACH,CAAC,CAAC,EAAE;SACN,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AAtBA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;;iDACF;AAFhB,mBAAmB;IAD/B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,mBAAmB,CAwB/B;;AAGM,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,gBAAgB;IAEnE,QAAQ,CAAqB;IAE7B,YAAY,UAA4C;QACvD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACrC,CAAC;CACD,CAAA;AANA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;;gEACV;AAFjB,8BAA8B;IAD1C,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,8BAA8B,CAQ1C;;AAGM,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,gBAAgB;IAEvD,QAAQ,CAAqB;IAE7B,YAAY,UAA4C;QACvD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACrC,CAAC;CACD,CAAA;AANA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;;oDACV;AAFjB,kBAAkB;IAD9B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,kBAAkB,CAQ9B;;AAGM,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,gBAAgB;IAEvD,UAAU,CAAe;IAEzB,YAAY,UAAwC;QACnD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,CAAC;CACD,CAAA;AANA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;;sDACR;AAFb,kBAAkB;IAD9B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,kBAAkB,CAQ9B;;AAED;;;;;;;;;;;;;GAaG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAwB,EAAc,EAAE;IACtE,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;IAChB,CAAC;CACD;AACD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAE9B,EAAe,EAAE;IACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,gBAAgB,CAAC,8BAA8B,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAC1B,GAAc,EACd,OAEoD,EACnD,EAAE;IACH,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAC1E,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/D,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAgB,EAAE,EAAE;IACvD,MAAM,UAAU,GAAG,IAAI,YAAY,CAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAC3C,CAAC,GAAG,EAAE,CAAC;IACR,OAAO,UAAU,GAAG,UAAU,CAAC,CAAC,0BAA0B;AAC3D,CAAC,CAAC"}
|
package/dist/src/role.d.ts
CHANGED
|
@@ -1,2 +1,39 @@
|
|
|
1
1
|
export declare const SEGMENT_COORDINATE_SCALE = 4294967295;
|
|
2
|
+
export declare const overlaps: (x1: number, x2: number, y1: number, y2: number) => boolean;
|
|
3
|
+
export declare abstract class Role {
|
|
4
|
+
abstract equals(other: Role): boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const NO_TYPE_VARIANT: Uint8Array;
|
|
7
|
+
export declare class NoType extends Role {
|
|
8
|
+
equals(other: Role): other is NoType;
|
|
9
|
+
}
|
|
10
|
+
export declare const OBSERVER_TYPE_VARIANT: Uint8Array;
|
|
11
|
+
export declare class Observer extends Role {
|
|
12
|
+
equals(other: Role): other is Observer;
|
|
13
|
+
}
|
|
14
|
+
export declare const REPLICATOR_TYPE_VARIANT: Uint8Array;
|
|
15
|
+
export declare class RoleReplicationSegment {
|
|
16
|
+
timestamp: bigint;
|
|
17
|
+
private factorNominator;
|
|
18
|
+
private offsetNominator;
|
|
19
|
+
constructor(properties: {
|
|
20
|
+
factor: number;
|
|
21
|
+
offset: number;
|
|
22
|
+
timestamp?: bigint;
|
|
23
|
+
});
|
|
24
|
+
get factor(): number;
|
|
25
|
+
get offset(): number;
|
|
26
|
+
}
|
|
27
|
+
export declare class Replicator extends Role {
|
|
28
|
+
segments: RoleReplicationSegment[];
|
|
29
|
+
constructor(properties: {
|
|
30
|
+
factor: number;
|
|
31
|
+
timestamp?: bigint;
|
|
32
|
+
offset: number;
|
|
33
|
+
});
|
|
34
|
+
get factor(): number;
|
|
35
|
+
get offset(): number;
|
|
36
|
+
get timestamp(): bigint;
|
|
37
|
+
equals(other: Role): boolean;
|
|
38
|
+
}
|
|
2
39
|
//# sourceMappingURL=role.d.ts.map
|
package/dist/src/role.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,wBAAwB,aAAa,CAAC;AAEnD,eAAO,MAAM,QAAQ,OAAQ,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,YAKtE,CAAC;AAEF,8BAAsB,IAAI;IACzB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;CACrC;AAED,eAAO,MAAM,eAAe,YAAsB,CAAC;AAEnD,qBACa,MAAO,SAAQ,IAAI;IAC/B,MAAM,CAAC,KAAK,EAAE,IAAI;CAGlB;AAED,eAAO,MAAM,qBAAqB,YAAsB,CAAC;AAEzD,qBACa,QAAS,SAAQ,IAAI;IACjC,MAAM,CAAC,KAAK,EAAE,IAAI;CAGlB;AAED,eAAO,MAAM,uBAAuB,YAAsB,CAAC;AAE3D,qBAAa,sBAAsB;IAElC,SAAS,EAAE,MAAM,CAAC;IAGlB,OAAO,CAAC,eAAe,CAAS;IAGhC,OAAO,CAAC,eAAe,CAAS;gBAEpB,UAAU,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB;IAeD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;CACD;AAED,qBACa,UAAW,SAAQ,IAAI;IAEnC,QAAQ,EAAE,sBAAsB,EAAE,CAAC;gBAEvB,UAAU,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KACf;IAQD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,MAAM,CAAC,KAAK,EAAE,IAAI;CAOlB"}
|
package/dist/src/role.js
CHANGED
|
@@ -1,106 +1,113 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var NoType_1, Observer_1, Replicator_1;
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated
|
|
13
|
+
* Code below is deprecated and will be removed in the future.
|
|
14
|
+
* Roles have been replaces with just replication segments.
|
|
15
|
+
*/
|
|
16
|
+
import { field, variant, vec } from "@dao-xyz/borsh";
|
|
17
|
+
export const SEGMENT_COORDINATE_SCALE = 4294967295;
|
|
18
|
+
export const overlaps = (x1, x2, y1, y2) => {
|
|
3
19
|
if (x1 <= y2 && y1 <= x2) {
|
|
4
20
|
return true;
|
|
5
21
|
}
|
|
6
22
|
return false;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
abstract equals(other: Role): boolean;
|
|
23
|
+
};
|
|
24
|
+
export class Role {
|
|
10
25
|
}
|
|
11
|
-
|
|
12
26
|
export const NO_TYPE_VARIANT = new Uint8Array([0]);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
equals(other: Role) {
|
|
17
|
-
return other instanceof NoType;
|
|
27
|
+
let NoType = NoType_1 = class NoType extends Role {
|
|
28
|
+
equals(other) {
|
|
29
|
+
return other instanceof NoType_1;
|
|
18
30
|
}
|
|
19
|
-
}
|
|
20
|
-
|
|
31
|
+
};
|
|
32
|
+
NoType = NoType_1 = __decorate([
|
|
33
|
+
variant(0)
|
|
34
|
+
], NoType);
|
|
35
|
+
export { NoType };
|
|
21
36
|
export const OBSERVER_TYPE_VARIANT = new Uint8Array([1]);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
equals(other: Role) {
|
|
26
|
-
return other instanceof Observer;
|
|
37
|
+
let Observer = Observer_1 = class Observer extends Role {
|
|
38
|
+
equals(other) {
|
|
39
|
+
return other instanceof Observer_1;
|
|
27
40
|
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
timestamp
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
constructor(properties: {
|
|
46
|
-
start: number;
|
|
47
|
-
end: number;
|
|
48
|
-
timestamp: bigint;
|
|
49
|
-
}) {
|
|
50
|
-
const { start, end, timestamp } = properties;
|
|
51
|
-
|
|
52
|
-
if (start > end) {
|
|
53
|
-
throw new Error("Range 'start' needs to be lower or equal to 'end'")
|
|
41
|
+
};
|
|
42
|
+
Observer = Observer_1 = __decorate([
|
|
43
|
+
variant(1)
|
|
44
|
+
], Observer);
|
|
45
|
+
export { Observer };
|
|
46
|
+
export const REPLICATOR_TYPE_VARIANT = new Uint8Array([2]);
|
|
47
|
+
export class RoleReplicationSegment {
|
|
48
|
+
timestamp;
|
|
49
|
+
factorNominator;
|
|
50
|
+
offsetNominator;
|
|
51
|
+
constructor(properties) {
|
|
52
|
+
const { factor, timestamp, offset } = properties;
|
|
53
|
+
if (factor > 1 || factor < 0) {
|
|
54
|
+
throw new Error("Expecting factor to be between 0 and 1, got: " + factor);
|
|
54
55
|
}
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
|
|
56
|
+
this.timestamp = timestamp ?? BigInt(+new Date());
|
|
57
|
+
this.factorNominator = Math.round(SEGMENT_COORDINATE_SCALE * factor);
|
|
58
|
+
if (offset > 1 || offset < 0) {
|
|
59
|
+
throw new Error("Expecting offset to be between 0 and 1, got: " + offset);
|
|
60
|
+
}
|
|
61
|
+
this.offsetNominator = Math.round(SEGMENT_COORDINATE_SCALE * offset);
|
|
62
|
+
}
|
|
63
|
+
get factor() {
|
|
64
|
+
return this.factorNominator / SEGMENT_COORDINATE_SCALE;
|
|
65
|
+
}
|
|
66
|
+
get offset() {
|
|
67
|
+
return this.offsetNominator / SEGMENT_COORDINATE_SCALE;
|
|
58
68
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
69
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
__decorate([
|
|
71
|
+
field({ type: "u64" }),
|
|
72
|
+
__metadata("design:type", BigInt)
|
|
73
|
+
], RoleReplicationSegment.prototype, "timestamp", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
field({ type: "u32" }),
|
|
76
|
+
__metadata("design:type", Number)
|
|
77
|
+
], RoleReplicationSegment.prototype, "factorNominator", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
field({ type: "u32" }),
|
|
80
|
+
__metadata("design:type", Number)
|
|
81
|
+
], RoleReplicationSegment.prototype, "offsetNominator", void 0);
|
|
82
|
+
let Replicator = Replicator_1 = class Replicator extends Role {
|
|
83
|
+
segments;
|
|
84
|
+
constructor(properties) {
|
|
73
85
|
super();
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
other.factor === this.factor &&
|
|
102
|
-
other.offset === this.offset
|
|
103
|
-
);
|
|
104
|
-
} */
|
|
105
|
-
/* } */
|
|
86
|
+
const segment = new RoleReplicationSegment(properties);
|
|
87
|
+
this.segments = [segment];
|
|
88
|
+
}
|
|
89
|
+
get factor() {
|
|
90
|
+
return this.segments[0].factor;
|
|
91
|
+
}
|
|
92
|
+
get offset() {
|
|
93
|
+
return this.segments[0].offset;
|
|
94
|
+
}
|
|
95
|
+
get timestamp() {
|
|
96
|
+
return this.segments[0].timestamp;
|
|
97
|
+
}
|
|
98
|
+
equals(other) {
|
|
99
|
+
return (other instanceof Replicator_1 &&
|
|
100
|
+
other.factor === this.factor &&
|
|
101
|
+
other.offset === this.offset);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
__decorate([
|
|
105
|
+
field({ type: vec(RoleReplicationSegment) }),
|
|
106
|
+
__metadata("design:type", Array)
|
|
107
|
+
], Replicator.prototype, "segments", void 0);
|
|
108
|
+
Replicator = Replicator_1 = __decorate([
|
|
109
|
+
variant(2),
|
|
110
|
+
__metadata("design:paramtypes", [Object])
|
|
111
|
+
], Replicator);
|
|
112
|
+
export { Replicator };
|
|
106
113
|
//# sourceMappingURL=role.js.map
|
package/dist/src/role.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":";;;;;;;;;;AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC;AAEnD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAE;IAC1E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,OAAgB,IAAI;CAEzB;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAG5C,IAAM,MAAM,cAAZ,MAAM,MAAO,SAAQ,IAAI;IAC/B,MAAM,CAAC,KAAW;QACjB,OAAO,KAAK,YAAY,QAAM,CAAC;IAChC,CAAC;CACD,CAAA;AAJY,MAAM;IADlB,OAAO,CAAC,CAAC,CAAC;GACE,MAAM,CAIlB;;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAGlD,IAAM,QAAQ,gBAAd,MAAM,QAAS,SAAQ,IAAI;IACjC,MAAM,CAAC,KAAW;QACjB,OAAO,KAAK,YAAY,UAAQ,CAAC;IAClC,CAAC;CACD,CAAA;AAJY,QAAQ;IADpB,OAAO,CAAC,CAAC,CAAC;GACE,QAAQ,CAIpB;;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D,MAAM,OAAO,sBAAsB;IAElC,SAAS,CAAS;IAGV,eAAe,CAAS;IAGxB,eAAe,CAAS;IAEhC,YAAY,UAIX;QACA,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QACjD,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,MAAM,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,MAAM,CAAC,CAAC;QAErE,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,MAAM,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC;IACxD,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC;IACxD,CAAC;CACD;AAlCA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;yDACL;AAGV;IADP,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;+DACS;AAGxB;IADP,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;+DACS;AA+B1B,IAAM,UAAU,kBAAhB,MAAM,UAAW,SAAQ,IAAI;IAEnC,QAAQ,CAA2B;IAEnC,YAAY,UAIX;QACA,KAAK,EAAE,CAAC;QACR,MAAM,OAAO,GAA2B,IAAI,sBAAsB,CACjE,UAAU,CACV,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,KAAW;QACjB,OAAO,CACN,KAAK,YAAY,YAAU;YAC3B,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAC5B,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAC5B,CAAC;IACH,CAAC;CACD,CAAA;AAjCA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;;4CACV;AAFvB,UAAU;IADtB,OAAO,CAAC,CAAC,CAAC;;GACE,UAAU,CAmCtB"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -73,6 +73,7 @@ import {
|
|
|
73
73
|
ReplicationRangeIndexable,
|
|
74
74
|
RequestReplicationInfoMessage,
|
|
75
75
|
ResponseReplicationInfoMessage,
|
|
76
|
+
ResponseRoleMessage,
|
|
76
77
|
StartedReplicating,
|
|
77
78
|
StoppedReplicating,
|
|
78
79
|
decodeReplicas,
|
|
@@ -80,7 +81,7 @@ import {
|
|
|
80
81
|
hashToUniformNumber,
|
|
81
82
|
maxReplicas,
|
|
82
83
|
} from "./replication.js";
|
|
83
|
-
import { SEGMENT_COORDINATE_SCALE } from "./role.js";
|
|
84
|
+
import { Observer, Replicator, SEGMENT_COORDINATE_SCALE } from "./role.js";
|
|
84
85
|
|
|
85
86
|
export * from "./replication.js";
|
|
86
87
|
|
|
@@ -156,6 +157,7 @@ export type SharedLogOptions<T> = {
|
|
|
156
157
|
timeUntilRoleMaturity?: number;
|
|
157
158
|
waitForReplicatorTimeout?: number;
|
|
158
159
|
distributionDebounceTime?: number;
|
|
160
|
+
compatibility?: number;
|
|
159
161
|
};
|
|
160
162
|
|
|
161
163
|
export const DEFAULT_MIN_REPLICAS = 2;
|
|
@@ -205,7 +207,9 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
205
207
|
publicKey: PublicSignKey,
|
|
206
208
|
) => Promise<boolean> | boolean;
|
|
207
209
|
|
|
208
|
-
private _logProperties?: LogProperties<T> &
|
|
210
|
+
private _logProperties?: LogProperties<T> &
|
|
211
|
+
LogEvents<T> &
|
|
212
|
+
SharedLogOptions<T>;
|
|
209
213
|
private _closeController!: AbortController;
|
|
210
214
|
private _gidParentCache!: Cache<Entry<any>[]>;
|
|
211
215
|
private _respondToIHaveTimeout!: any;
|
|
@@ -278,6 +282,32 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
278
282
|
return this._replicationSettings;
|
|
279
283
|
}
|
|
280
284
|
|
|
285
|
+
get compatibility(): number | undefined {
|
|
286
|
+
return this._logProperties?.compatibility;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
private get v8Behaviour() {
|
|
290
|
+
return (this.compatibility ?? Number.MAX_VALUE) < 9;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// @deprecated
|
|
294
|
+
private getRole() {
|
|
295
|
+
let isFixedReplicationSettings =
|
|
296
|
+
(this._replicationSettings as FixedReplicationOptions).factor !==
|
|
297
|
+
undefined;
|
|
298
|
+
if (isFixedReplicationSettings) {
|
|
299
|
+
const fixedSettings = this
|
|
300
|
+
._replicationSettings as FixedReplicationOptions;
|
|
301
|
+
return new Replicator({
|
|
302
|
+
factor: fixedSettings.factor,
|
|
303
|
+
offset: fixedSettings.offset ?? 0,
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// TODO this is not accurate but might be good enough
|
|
308
|
+
return new Observer();
|
|
309
|
+
}
|
|
310
|
+
|
|
281
311
|
async isReplicating() {
|
|
282
312
|
if (!this._replicationSettings) {
|
|
283
313
|
return false;
|
|
@@ -596,13 +626,14 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
596
626
|
logger.warn("Not allowed to replicate by canReplicate");
|
|
597
627
|
}
|
|
598
628
|
|
|
599
|
-
added
|
|
600
|
-
|
|
629
|
+
if (added) {
|
|
630
|
+
await this.rpc.send(
|
|
601
631
|
new StartedReplicating({ segments: [range.toReplicationRange()] }),
|
|
602
632
|
{
|
|
603
633
|
priority: 1,
|
|
604
634
|
},
|
|
605
|
-
)
|
|
635
|
+
);
|
|
636
|
+
}
|
|
606
637
|
}
|
|
607
638
|
|
|
608
639
|
async append(
|
|
@@ -992,12 +1023,16 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
992
1023
|
async _onMessage(
|
|
993
1024
|
msg: TransportMessage,
|
|
994
1025
|
context: RequestContext,
|
|
995
|
-
): Promise<
|
|
1026
|
+
): Promise<void> {
|
|
996
1027
|
try {
|
|
997
1028
|
if (!context.from) {
|
|
998
1029
|
throw new Error("Missing from in update role message");
|
|
999
1030
|
}
|
|
1000
1031
|
|
|
1032
|
+
if (msg instanceof ResponseRoleMessage) {
|
|
1033
|
+
msg = msg.toReplicationInfoMessage(); // migration
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1001
1036
|
if (msg instanceof ExchangeHeadsMessage) {
|
|
1002
1037
|
/**
|
|
1003
1038
|
* I have received heads from someone else.
|
|
@@ -1273,6 +1308,8 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1273
1308
|
} else if (msg instanceof BlocksMessage) {
|
|
1274
1309
|
await this.remoteBlocks.onMessage(msg.message);
|
|
1275
1310
|
} else if (msg instanceof RequestReplicationInfoMessage) {
|
|
1311
|
+
// TODO this message type is never used, should we remove it?
|
|
1312
|
+
|
|
1276
1313
|
if (context.from.equals(this.node.identity.publicKey)) {
|
|
1277
1314
|
return;
|
|
1278
1315
|
}
|
|
@@ -1286,6 +1323,28 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1286
1323
|
mode: new SilentDelivery({ to: [context.from], redundancy: 1 }),
|
|
1287
1324
|
},
|
|
1288
1325
|
);
|
|
1326
|
+
|
|
1327
|
+
// for backwards compatibility (v8) remove this when we are sure that all nodes are v9+
|
|
1328
|
+
if (this.v8Behaviour) {
|
|
1329
|
+
const role = this.getRole();
|
|
1330
|
+
if (role instanceof Replicator) {
|
|
1331
|
+
const fixedSettings = this
|
|
1332
|
+
._replicationSettings as FixedReplicationOptions;
|
|
1333
|
+
if (fixedSettings.factor === 1) {
|
|
1334
|
+
await this.rpc.send(
|
|
1335
|
+
new ResponseRoleMessage({
|
|
1336
|
+
role,
|
|
1337
|
+
}),
|
|
1338
|
+
{
|
|
1339
|
+
mode: new SilentDelivery({
|
|
1340
|
+
to: [context.from],
|
|
1341
|
+
redundancy: 1,
|
|
1342
|
+
}),
|
|
1343
|
+
},
|
|
1344
|
+
);
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1289
1348
|
} else if (
|
|
1290
1349
|
msg instanceof ResponseReplicationInfoMessage ||
|
|
1291
1350
|
msg instanceof StartedReplicating
|
|
@@ -1294,6 +1353,10 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1294
1353
|
return;
|
|
1295
1354
|
}
|
|
1296
1355
|
|
|
1356
|
+
let replicationInfoMessage = msg as
|
|
1357
|
+
| ResponseReplicationInfoMessage
|
|
1358
|
+
| StartedReplicating;
|
|
1359
|
+
|
|
1297
1360
|
// we have this statement because peers might have changed/announced their role,
|
|
1298
1361
|
// but we don't know them as "subscribers" yet. i.e. they are not online
|
|
1299
1362
|
|
|
@@ -1316,7 +1379,7 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1316
1379
|
await this.removeReplicator(context.from!);
|
|
1317
1380
|
}
|
|
1318
1381
|
let addedOnce = false;
|
|
1319
|
-
for (const segment of
|
|
1382
|
+
for (const segment of replicationInfoMessage.segments) {
|
|
1320
1383
|
const added = await this.addReplicationRange(
|
|
1321
1384
|
segment.toReplicationRangeIndexable(context.from!),
|
|
1322
1385
|
context.from!,
|
|
@@ -1671,6 +1734,15 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1671
1734
|
},
|
|
1672
1735
|
)
|
|
1673
1736
|
.catch((e) => logger.error(e.toString()));
|
|
1737
|
+
|
|
1738
|
+
if (this.v8Behaviour) {
|
|
1739
|
+
// for backwards compatibility
|
|
1740
|
+
this.rpc
|
|
1741
|
+
.send(new ResponseRoleMessage({ role: this.getRole() }), {
|
|
1742
|
+
mode: new SilentDelivery({ redundancy: 1, to: [publicKey] }),
|
|
1743
|
+
})
|
|
1744
|
+
.catch((e) => logger.error(e.toString()));
|
|
1745
|
+
}
|
|
1674
1746
|
}
|
|
1675
1747
|
} else {
|
|
1676
1748
|
await this.removeReplicator(publicKey);
|
package/src/replication.ts
CHANGED
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
BinaryReader,
|
|
3
3
|
deserialize,
|
|
4
4
|
field,
|
|
5
|
+
option,
|
|
5
6
|
serialize,
|
|
6
7
|
variant,
|
|
7
8
|
vec,
|
|
@@ -9,28 +10,14 @@ import {
|
|
|
9
10
|
import { PublicSignKey, equals, randomBytes } from "@peerbit/crypto";
|
|
10
11
|
import { type Index, id } from "@peerbit/indexer-interface";
|
|
11
12
|
import { TransportMessage } from "./message.js";
|
|
12
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
Observer,
|
|
15
|
+
Replicator,
|
|
16
|
+
Role,
|
|
17
|
+
SEGMENT_COORDINATE_SCALE,
|
|
18
|
+
} from "./role.js";
|
|
13
19
|
|
|
14
20
|
export type ReplicationLimits = { min: MinReplicas; max?: MinReplicas };
|
|
15
|
-
/*
|
|
16
|
-
export class ReplicatorRect {
|
|
17
|
-
|
|
18
|
-
@id({ type: Uint8Array })
|
|
19
|
-
id: Uint8Array;
|
|
20
|
-
|
|
21
|
-
@field({ type: 'string' })
|
|
22
|
-
hash: string;
|
|
23
|
-
|
|
24
|
-
@field({ type: vec(ReplicationSegment) })
|
|
25
|
-
segments: ReplicationSegment[];
|
|
26
|
-
|
|
27
|
-
constructor(properties: { hash: string; segments: ReplicationSegment[] }) {
|
|
28
|
-
this.id = randomBytes(32);
|
|
29
|
-
this.hash = properties.hash;
|
|
30
|
-
this.segments = properties.segments;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
*/
|
|
34
21
|
|
|
35
22
|
export enum ReplicationIntent {
|
|
36
23
|
Explicit = 0,
|
|
@@ -280,7 +267,35 @@ export class RequestReplicationInfoMessage extends TransportMessage {
|
|
|
280
267
|
}
|
|
281
268
|
}
|
|
282
269
|
|
|
270
|
+
// @deprecated remove when possible
|
|
283
271
|
@variant([1, 1])
|
|
272
|
+
export class ResponseRoleMessage extends TransportMessage {
|
|
273
|
+
@field({ type: option(Role) })
|
|
274
|
+
role: Observer | Replicator;
|
|
275
|
+
|
|
276
|
+
constructor(properties: { role: Observer | Replicator }) {
|
|
277
|
+
super();
|
|
278
|
+
this.role = properties.role;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
toReplicationInfoMessage(): ResponseReplicationInfoMessage {
|
|
282
|
+
return new ResponseReplicationInfoMessage({
|
|
283
|
+
segments:
|
|
284
|
+
this.role instanceof Replicator
|
|
285
|
+
? this.role.segments.map((x) => {
|
|
286
|
+
return new ReplicationRange({
|
|
287
|
+
id: randomBytes(32),
|
|
288
|
+
offset: x.offset,
|
|
289
|
+
factor: x.factor,
|
|
290
|
+
timestamp: x.timestamp,
|
|
291
|
+
});
|
|
292
|
+
})
|
|
293
|
+
: [],
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
@variant([1, 2])
|
|
284
299
|
export class ResponseReplicationInfoMessage extends TransportMessage {
|
|
285
300
|
@field({ type: vec(ReplicationRange) })
|
|
286
301
|
segments: ReplicationRange[];
|
|
@@ -291,7 +306,7 @@ export class ResponseReplicationInfoMessage extends TransportMessage {
|
|
|
291
306
|
}
|
|
292
307
|
}
|
|
293
308
|
|
|
294
|
-
@variant([1,
|
|
309
|
+
@variant([1, 3])
|
|
295
310
|
export class StartedReplicating extends TransportMessage {
|
|
296
311
|
@field({ type: vec(ReplicationRange) })
|
|
297
312
|
segments: ReplicationRange[];
|
|
@@ -302,7 +317,7 @@ export class StartedReplicating extends TransportMessage {
|
|
|
302
317
|
}
|
|
303
318
|
}
|
|
304
319
|
|
|
305
|
-
@variant([1,
|
|
320
|
+
@variant([1, 4])
|
|
306
321
|
export class StoppedReplicating extends TransportMessage {
|
|
307
322
|
@field({ type: vec(Uint8Array) })
|
|
308
323
|
segmentIds: Uint8Array[];
|