@helia/bitswap 1.0.1-fa9bd4b → 1.1.0-55b9650
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/index.min.js +1 -1
- package/dist/src/network.d.ts +3 -2
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +5 -15
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-want-lists/ledger.d.ts.map +1 -1
- package/dist/src/peer-want-lists/ledger.js +41 -40
- package/dist/src/peer-want-lists/ledger.js.map +1 -1
- package/dist/src/utils/bitswap-message.d.ts +19 -0
- package/dist/src/utils/bitswap-message.d.ts.map +1 -0
- package/dist/src/utils/bitswap-message.js +33 -0
- package/dist/src/utils/bitswap-message.js.map +1 -0
- package/dist/src/utils/merge-messages.d.ts +2 -2
- package/dist/src/utils/merge-messages.d.ts.map +1 -1
- package/dist/src/utils/merge-messages.js +12 -34
- package/dist/src/utils/merge-messages.js.map +1 -1
- package/dist/src/utils/split-message.d.ts +2 -2
- package/dist/src/utils/split-message.d.ts.map +1 -1
- package/dist/src/utils/split-message.js +5 -5
- package/dist/src/utils/split-message.js.map +1 -1
- package/dist/src/want-list.d.ts.map +1 -1
- package/dist/src/want-list.js +49 -65
- package/dist/src/want-list.js.map +1 -1
- package/package.json +4 -5
- package/src/network.ts +7 -17
- package/src/peer-want-lists/ledger.ts +40 -42
- package/src/utils/bitswap-message.ts +39 -0
- package/src/utils/merge-messages.ts +12 -45
- package/src/utils/split-message.ts +6 -5
- package/src/want-list.ts +55 -77
package/dist/src/network.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACjF,OAAO,EAAE,SAAS,EAA4B,MAAM,0BAA0B,CAAA;AAC9E,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,IAAI,MAAM,SAAS,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,iCAAiC,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,gCAAgC,EAAE,oCAAoC,EAAE,MAAM,gBAAgB,CAAA;AACzT,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACjF,OAAO,EAAE,SAAS,EAA4B,MAAM,0BAA0B,CAAA;AAC9E,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,IAAI,MAAM,SAAS,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,iCAAiC,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,gCAAgC,EAAE,oCAAoC,EAAE,MAAM,gBAAgB,CAAA;AACzT,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AA0DvD,MAAM,OAAO,OAAQ,SAAQ,iBAAgC;IAC1C,GAAG,CAAQ;IACX,MAAM,CAAQ;IACd,OAAO,CAAS;IAChB,SAAS,CAAU;IAC5B,OAAO,CAAS;IACP,iBAAiB,CAAQ;IACzB,kBAAkB,CAAQ;IAC1B,qBAAqB,CAAQ;IACtC,YAAY,CAAU;IACb,OAAO,CAA8C;IACrD,SAAS,CAAwC;IACjD,yBAAyB,CAAS;IAClC,sBAAsB,CAAQ;IAC9B,sBAAsB,CAAQ;IAE/C,YAAa,UAA6B,EAAE,OAAoB,EAAE;QAChE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAA;QAClE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,CAAA;QAChD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QAEpB,uBAAuB;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,2BAA2B,CAAA;QAC9E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,4BAA4B,CAAA;QACjF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,IAAI,+BAA+B,CAAA;QAC1F,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,IAAI,oCAAoC,CAAA;QACvG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,iCAAiC,CAAA;QAC9F,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,IAAI,iCAAiC,CAAA;QAC7H,IAAI,CAAC,OAAO,GAAG;YACb,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,iCAAiC,CAAC;YAClF,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,qCAAqC,CAAC;SACrF,CAAA;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;YAC7B,WAAW,EAAE,IAAI,CAAC,sBAAsB,IAAI,gCAAgC;YAC5E,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,UAAU,EAAE,kCAAkC;SAC/C,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC/C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;YACvD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,wBAAwB,EAAE,IAAI,CAAC,yBAAyB;SACzD,CAAC,CAAA;QAEF,kCAAkC;QAClC,MAAM,QAAQ,GAAa;YACzB,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;oBACvC,MAAM,EAAE,MAAM;iBACf,CAAC,CAAA;YACJ,CAAC;YACD,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;gBAC/B,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE;oBAC1C,MAAM,EAAE,MAAM;iBACf,CAAC,CAAA;YACJ,CAAC;SACF,CAAA;QAED,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QAEtB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;QACxE,CAAC;QAED,oDAAoD;QACpD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1C,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;gBACvC,MAAM,EAAE,IAAI,CAAC,UAAU;aACxB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QAEpB,iEAAiE;QACjE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE1C,mCAAmC;QACnC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;YAC9B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YAC5B,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAE,IAAwB;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAM;QACR,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;QAEnC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YAC1F,MAAM,aAAa,GAAG,GAAS,EAAE;gBAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,2CAA2C,IAAI,CAAC,qBAAqB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAA;gBACvH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;gBAC1D,CAAC;YACH,CAAC,CAAA;YAED,IAAI,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;YAC5D,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACjC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;YAE/C,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;YAEzB,MAAM,IAAI,CACR,MAAM,EACN,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC5B,aAAa,EAAE,IAAI,CAAC,sBAAsB;aAC3C,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,EAAE;gBACf,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;wBAC3C,IAAI,CAAC,GAAG,CAAC,mDAAmD,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;wBAEhH,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE;4BACxC,MAAM,EAAE;gCACN,IAAI,EAAE,UAAU,CAAC,UAAU;gCAC3B,OAAO;6BACR;yBACF,CAAC,CAAA;wBAEF,6DAA6D;wBAC7D,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;wBAClD,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;wBACxD,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;wBACjC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;oBACjD,CAAC;oBAAC,OAAO,GAAQ,EAAE,CAAC;wBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0DAA0D,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;wBACjH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;wBACjB,MAAK;oBACP,CAAC;gBACH,CAAC;YACH,CAAC,CACF,CAAA;QACH,CAAC,CAAC;aACC,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;YACpF,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAE,aAAa,CAAE,GAAQ,EAAE,OAA0E;QACzG,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAS,gCAAgC,EAAE,GAAG,CAAC,CAAC,CAAA;QAE7F,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YACtE,qCAAqC;YACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACjE,wBAAwB,EAAE,IAAI,CAAC,yBAAyB;aACzD,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,SAAQ;YACV,CAAC;YAED,MAAM,QAAQ,CAAA;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAE,GAAQ,EAAE,OAAqB;QACnD,MAAM,KAAK,CACT,GAAG,CACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,IAAI,iCAAiC,CAAC,EAClG,KAAK,EAAC,QAAQ,EAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CACvD,CACF;aACE,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAE,MAAc,EAAE,OAA6B,EAAE,OAA0E;QAC1I,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAClD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAA;QACrE,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAEjF,MAAM,WAAW,CAAC,IAAI,CAAC;gBACrB,MAAM,EAAE,OAAO,EAAE,MAAM;aACxB,CAAC,CAAA;YAEF,OAAM;QACR,CAAC;QAED,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACzC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAA;YAEhC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,SAAS,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAA;YAC7D,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;YAErC,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAS,+BAA+B,EAAE,MAAM,CAAC,CAAC,CAAA;YAE/F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;YAC3E,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;YAExB,IAAI,CAAC;gBACH,MAAM,IAAI,CACR,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAClD,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7B,MAAM,CACP,CAAA;gBAED,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC7B,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAiC,qCAAqC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBACnJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;gBAC1D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC,EAAE;YACD,MAAM;YACN,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAE,IAAY,EAAE,OAAsE;QACnG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,SAAS,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAAA;QAClE,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAS,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAA;QAEpF,0EAA0E;QAC1E,0EAA0E;QAC1E,qBAAqB;QACrB,MAAM,CACJ,UAAU,CACX,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE;gBACvD,MAAM,EAAE,CAAC,GAAgC,EAAW,EAAE;oBACpD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpC,OAAO,KAAK,CAAA;oBACd,CAAC;oBAED,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/C,OAAO,IAAI,CAAA;oBACb,CAAC;oBAED,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,oBAAoB,WAAW,EAAE,EAAE,iCAAiC,CAAC,CAAA;gBAClG,CAAC;aACF,CAAC;SACH,CAAC,CAAA;QAEF,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,gBAAgB,CAAE,MAA0B;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAA;QAEb,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAA;QAChC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACjD,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../../src/peer-want-lists/ledger.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../../src/peer-want-lists/ledger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAG9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,0BAA0B,CAAC,EAAE,MAAM,CAAA;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,GAAG,EAAE,GAAG,CAAA;IAER;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,QAAQ,EAAE,QAAQ,CAAA;IAElB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAA;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,qBAAa,MAAM;IACV,MAAM,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACrC,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAQ;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU;IAa3D,SAAS,CAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAM3B,aAAa,CAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAM/B,SAAS,IAAK,MAAM;IAIP,gBAAgB,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CA6EtE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable max-depth */
|
|
2
2
|
import { DEFAULT_MAX_SIZE_REPLACE_HAS_WITH_BLOCK } from '../constants.js';
|
|
3
3
|
import { BlockPresenceType, WantType } from '../pb/message.js';
|
|
4
|
+
import { QueuedBitswapMessage } from '../utils/bitswap-message.js';
|
|
4
5
|
import { cidToPrefix } from '../utils/cid-prefix.js';
|
|
5
6
|
export class Ledger {
|
|
6
7
|
peerId;
|
|
@@ -38,14 +39,45 @@ export class Ledger {
|
|
|
38
39
|
return (this.bytesSent / (this.bytesReceived + 1)); // +1 is to prevent division by zero
|
|
39
40
|
}
|
|
40
41
|
async sendBlocksToPeer(options) {
|
|
41
|
-
const message =
|
|
42
|
-
blockPresences: [],
|
|
43
|
-
blocks: []
|
|
44
|
-
};
|
|
42
|
+
const message = new QueuedBitswapMessage();
|
|
45
43
|
const sentBlocks = new Set();
|
|
46
44
|
for (const [key, entry] of this.wants.entries()) {
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
try {
|
|
46
|
+
const block = await this.blockstore.get(entry.cid, options);
|
|
47
|
+
// do they want the block or just us to tell them we have the block
|
|
48
|
+
if (entry.wantType === WantType.WantHave) {
|
|
49
|
+
if (block.byteLength < this.maxSizeReplaceHasWithBlock) {
|
|
50
|
+
this.log('sending have and block for %c', entry.cid);
|
|
51
|
+
// if the block is small we just send it to them
|
|
52
|
+
sentBlocks.add(key);
|
|
53
|
+
message.addBlock(entry.cid, {
|
|
54
|
+
data: block,
|
|
55
|
+
prefix: cidToPrefix(entry.cid)
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this.log('sending have for %c', entry.cid);
|
|
60
|
+
// otherwise tell them we have the block
|
|
61
|
+
message.addBlockPresence(entry.cid, {
|
|
62
|
+
cid: entry.cid.bytes,
|
|
63
|
+
type: BlockPresenceType.HaveBlock
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.log('sending block for %c', entry.cid);
|
|
69
|
+
// they want the block, send it to them
|
|
70
|
+
sentBlocks.add(key);
|
|
71
|
+
message.addBlock(entry.cid, {
|
|
72
|
+
data: block,
|
|
73
|
+
prefix: cidToPrefix(entry.cid)
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
if (err.code !== 'ERR_NOT_FOUND') {
|
|
79
|
+
throw err;
|
|
80
|
+
}
|
|
49
81
|
this.log('do not have block for %c', entry.cid);
|
|
50
82
|
// we don't have the requested block and the remote is not interested
|
|
51
83
|
// in us telling them that
|
|
@@ -57,50 +89,19 @@ export class Ledger {
|
|
|
57
89
|
continue;
|
|
58
90
|
}
|
|
59
91
|
entry.sentDontHave = true;
|
|
60
|
-
message.
|
|
92
|
+
message.addBlockPresence(entry.cid, {
|
|
61
93
|
cid: entry.cid.bytes,
|
|
62
94
|
type: BlockPresenceType.DontHaveBlock
|
|
63
95
|
});
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
const block = await this.blockstore.get(entry.cid, options);
|
|
67
|
-
// do they want the block or just us to tell them we have the block
|
|
68
|
-
if (entry.wantType === WantType.WantHave) {
|
|
69
|
-
if (block.byteLength < this.maxSizeReplaceHasWithBlock) {
|
|
70
|
-
this.log('sending have and block for %c', entry.cid);
|
|
71
|
-
// if the block is small we just send it to them
|
|
72
|
-
sentBlocks.add(key);
|
|
73
|
-
message.blocks.push({
|
|
74
|
-
data: block,
|
|
75
|
-
prefix: cidToPrefix(entry.cid)
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
this.log('sending have for %c', entry.cid);
|
|
80
|
-
// otherwise tell them we have the block
|
|
81
|
-
message.blockPresences.push({
|
|
82
|
-
cid: entry.cid.bytes,
|
|
83
|
-
type: BlockPresenceType.HaveBlock
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
this.log('sending block for %c', entry.cid);
|
|
89
|
-
// they want the block, send it to them
|
|
90
|
-
sentBlocks.add(key);
|
|
91
|
-
message.blocks.push({
|
|
92
|
-
data: block,
|
|
93
|
-
prefix: cidToPrefix(entry.cid)
|
|
94
|
-
});
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
// only send the message if we actually have something to send
|
|
98
|
-
if (message.blocks.
|
|
99
|
+
if (message.blocks.size > 0 || message.blockPresences.size > 0) {
|
|
99
100
|
this.log('sending message');
|
|
100
101
|
await this.network.sendMessage(this.peerId, message, options);
|
|
101
102
|
this.log('sent message');
|
|
102
103
|
// update accounting
|
|
103
|
-
this.sentBytes(message.blocks.reduce((acc, curr) => acc + curr.data.byteLength, 0));
|
|
104
|
+
this.sentBytes([...message.blocks.values()].reduce((acc, curr) => acc + curr.data.byteLength, 0));
|
|
104
105
|
// remove sent blocks from local copy of their want list - they can still
|
|
105
106
|
// re-request if required
|
|
106
107
|
for (const key of sentBlocks) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../src/peer-want-lists/ledger.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,uCAAuC,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../src/peer-want-lists/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Block, BlockPresence, WantlistEntry } from '../pb/message.js';
|
|
2
|
+
import type { CID } from 'multiformats';
|
|
3
|
+
/**
|
|
4
|
+
* A bitswap message that is in the send queue. So implemented to be
|
|
5
|
+
* cheap to merge multiple messages when we repeatedly send messages
|
|
6
|
+
* to the same peer.
|
|
7
|
+
*/
|
|
8
|
+
export declare class QueuedBitswapMessage {
|
|
9
|
+
full: boolean;
|
|
10
|
+
pendingBytes: number;
|
|
11
|
+
wantlist: Map<string, WantlistEntry>;
|
|
12
|
+
blocks: Map<string, Block>;
|
|
13
|
+
blockPresences: Map<string, BlockPresence>;
|
|
14
|
+
constructor(full?: boolean, pendingBytes?: number);
|
|
15
|
+
addWantlistEntry(cid: CID, entry: WantlistEntry): void;
|
|
16
|
+
addBlockPresence(cid: CID, blockPresence: BlockPresence): void;
|
|
17
|
+
addBlock(cid: CID, block: Block): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=bitswap-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitswap-message.d.ts","sourceRoot":"","sources":["../../../src/utils/bitswap-message.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC;;;;GAIG;AACH,qBAAa,oBAAoB;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACpC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC1B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;gBAEpC,IAAI,GAAE,OAAe,EAAE,YAAY,GAAE,MAAU;IAQ5D,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAKvD,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI;IAK/D,QAAQ,CAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAIxC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { base64 } from 'multiformats/bases/base64';
|
|
2
|
+
/**
|
|
3
|
+
* A bitswap message that is in the send queue. So implemented to be
|
|
4
|
+
* cheap to merge multiple messages when we repeatedly send messages
|
|
5
|
+
* to the same peer.
|
|
6
|
+
*/
|
|
7
|
+
export class QueuedBitswapMessage {
|
|
8
|
+
full;
|
|
9
|
+
pendingBytes;
|
|
10
|
+
wantlist;
|
|
11
|
+
blocks;
|
|
12
|
+
blockPresences;
|
|
13
|
+
constructor(full = false, pendingBytes = 0) {
|
|
14
|
+
this.full = full;
|
|
15
|
+
this.wantlist = new Map();
|
|
16
|
+
this.blocks = new Map();
|
|
17
|
+
this.blockPresences = new Map();
|
|
18
|
+
this.pendingBytes = 0;
|
|
19
|
+
}
|
|
20
|
+
addWantlistEntry(cid, entry) {
|
|
21
|
+
const key = base64.encode(cid.multihash.bytes);
|
|
22
|
+
this.wantlist.set(key, entry);
|
|
23
|
+
}
|
|
24
|
+
addBlockPresence(cid, blockPresence) {
|
|
25
|
+
const key = base64.encode(cid.multihash.bytes);
|
|
26
|
+
this.blockPresences.set(key, blockPresence);
|
|
27
|
+
}
|
|
28
|
+
addBlock(cid, block) {
|
|
29
|
+
const key = base64.encode(cid.multihash.bytes);
|
|
30
|
+
this.blocks.set(key, block);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=bitswap-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitswap-message.js","sourceRoot":"","sources":["../../../src/utils/bitswap-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIlD;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IACxB,IAAI,CAAS;IACb,YAAY,CAAQ;IACpB,QAAQ,CAA4B;IACpC,MAAM,CAAoB;IAC1B,cAAc,CAA4B;IAEjD,YAAa,OAAgB,KAAK,EAAE,eAAuB,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;QAC/B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,gBAAgB,CAAE,GAAQ,EAAE,KAAoB;QAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,gBAAgB,CAAE,GAAQ,EAAE,aAA4B;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC9C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IAC7C,CAAC;IAED,QAAQ,CAAE,GAAQ,EAAE,KAAY;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7B,CAAC;CACF"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function mergeMessages(
|
|
1
|
+
import type { QueuedBitswapMessage } from './bitswap-message.js';
|
|
2
|
+
export declare function mergeMessages(existingMessage: QueuedBitswapMessage, newMessage: QueuedBitswapMessage): QueuedBitswapMessage;
|
|
3
3
|
//# sourceMappingURL=merge-messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-messages.d.ts","sourceRoot":"","sources":["../../../src/utils/merge-messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge-messages.d.ts","sourceRoot":"","sources":["../../../src/utils/merge-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAEhE,wBAAgB,aAAa,CAAE,eAAe,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,GAAG,oBAAoB,CAkC5H"}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
base64.encode(entry.cid),
|
|
5
|
-
entry
|
|
6
|
-
])));
|
|
7
|
-
for (const entry of messageB.wantlist?.entries ?? []) {
|
|
8
|
-
const key = base64.encode(entry.cid);
|
|
9
|
-
const existingEntry = wantListEntries.get(key);
|
|
1
|
+
export function mergeMessages(existingMessage, newMessage) {
|
|
2
|
+
for (const [key, entry] of newMessage.wantlist.entries()) {
|
|
3
|
+
const existingEntry = existingMessage.wantlist.get(key);
|
|
10
4
|
if (existingEntry != null) {
|
|
11
5
|
// take highest priority
|
|
12
6
|
if (existingEntry.priority > entry.priority) {
|
|
@@ -17,35 +11,19 @@ export function mergeMessages(messageA, messageB) {
|
|
|
17
11
|
entry.wantType = entry.wantType ?? existingEntry.wantType;
|
|
18
12
|
entry.sendDontHave = entry.sendDontHave ?? existingEntry.sendDontHave;
|
|
19
13
|
}
|
|
20
|
-
|
|
14
|
+
existingMessage.wantlist.set(key, entry);
|
|
21
15
|
}
|
|
22
|
-
const
|
|
23
|
-
base64.encode(presence.cid),
|
|
24
|
-
presence
|
|
25
|
-
])));
|
|
26
|
-
for (const blockPresence of messageB.blockPresences) {
|
|
27
|
-
const key = base64.encode(blockPresence.cid);
|
|
16
|
+
for (const [key, blockPresence] of newMessage.blockPresences.entries()) {
|
|
28
17
|
// override earlier block presence with later one as if duplicated it is
|
|
29
18
|
// likely to be more accurate since it is more recent
|
|
30
|
-
blockPresences.set(key, blockPresence);
|
|
19
|
+
existingMessage.blockPresences.set(key, blockPresence);
|
|
31
20
|
}
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
block
|
|
35
|
-
])));
|
|
36
|
-
for (const block of messageB.blocks) {
|
|
37
|
-
const key = base64.encode(block.data);
|
|
38
|
-
blocks.set(key, block);
|
|
21
|
+
for (const [key, block] of newMessage.blocks.entries()) {
|
|
22
|
+
existingMessage.blocks.set(key, block);
|
|
39
23
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
},
|
|
45
|
-
blockPresences: [...blockPresences.values()],
|
|
46
|
-
blocks: [...blocks.values()],
|
|
47
|
-
pendingBytes: messageA.pendingBytes + messageB.pendingBytes
|
|
48
|
-
};
|
|
49
|
-
return output;
|
|
24
|
+
if (newMessage.full && !existingMessage.full) {
|
|
25
|
+
existingMessage.full = true;
|
|
26
|
+
}
|
|
27
|
+
return existingMessage;
|
|
50
28
|
}
|
|
51
29
|
//# sourceMappingURL=merge-messages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-messages.js","sourceRoot":"","sources":["../../../src/utils/merge-messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge-messages.js","sourceRoot":"","sources":["../../../src/utils/merge-messages.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAE,eAAqC,EAAE,UAAgC;IACpG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACzD,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEvD,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,wBAAwB;YACxB,IAAI,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC5C,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAA;YACzC,CAAC;YAED,0DAA0D;YAC1D,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAA;YACnD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAA;YACzD,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,aAAa,CAAC,YAAY,CAAA;QACvE,CAAC;QAED,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QACvE,wEAAwE;QACxE,qDAAqD;QACrD,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACvD,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC7C,eAAe,CAAC,IAAI,GAAG,IAAI,CAAA;IAC7B,CAAC;IAED,OAAO,eAAe,CAAA;AACxB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { QueuedBitswapMessage } from './bitswap-message.js';
|
|
2
2
|
/**
|
|
3
3
|
* https://github.com/ipfs/kubo/issues/4473#issuecomment-350390693
|
|
4
4
|
*/
|
|
@@ -14,5 +14,5 @@ export declare const MAX_BLOCK_SIZE = 4193648;
|
|
|
14
14
|
* If a block is encountered that is larger than the max message size an error
|
|
15
15
|
* will be thrown.
|
|
16
16
|
*/
|
|
17
|
-
export declare function splitMessage(message:
|
|
17
|
+
export declare function splitMessage(message: QueuedBitswapMessage, maxSize: number): Generator<Uint8Array>;
|
|
18
18
|
//# sourceMappingURL=split-message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-message.d.ts","sourceRoot":"","sources":["../../../src/utils/split-message.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"split-message.d.ts","sourceRoot":"","sources":["../../../src/utils/split-message.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAEhE;;GAEG;AACH,eAAO,MAAM,cAAc,UAAU,CAAA;AAGrC;;;;;;;;;;GAUG;AACH,wBAAkB,YAAY,CAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAsDrG"}
|
|
@@ -18,10 +18,10 @@ const MAX_ENCODED_BLOCK_SIZE = MAX_BLOCK_SIZE + 16;
|
|
|
18
18
|
* If a block is encountered that is larger than the max message size an error
|
|
19
19
|
* will be thrown.
|
|
20
20
|
*/
|
|
21
|
-
export
|
|
22
|
-
const wantListEntries = message.wantlist
|
|
23
|
-
const blockPresences = message.blockPresences;
|
|
24
|
-
const blocks = message.blocks;
|
|
21
|
+
export function* splitMessage(message, maxSize) {
|
|
22
|
+
const wantListEntries = [...message.wantlist.values()];
|
|
23
|
+
const blockPresences = [...message.blockPresences.values()];
|
|
24
|
+
const blocks = [...message.blocks.values()];
|
|
25
25
|
let wantListIndex = 0;
|
|
26
26
|
let blockPresencesIndex = 0;
|
|
27
27
|
let blocksIndex = 0;
|
|
@@ -29,7 +29,7 @@ export async function* splitMessage(message, maxSize) {
|
|
|
29
29
|
while (true) {
|
|
30
30
|
const subMessage = {
|
|
31
31
|
wantlist: {
|
|
32
|
-
full: message.
|
|
32
|
+
full: message.full ?? false,
|
|
33
33
|
entries: []
|
|
34
34
|
},
|
|
35
35
|
blockPresences: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-message.js","sourceRoot":"","sources":["../../../src/utils/split-message.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"split-message.js","sourceRoot":"","sources":["../../../src/utils/split-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"want-list.d.ts","sourceRoot":"","sources":["../../src/want-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"want-list.d.ts","sourceRoot":"","sources":["../../src/want-list.ts"],"names":[],"mappings":"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"}
|
package/dist/src/want-list.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { TypedEventEmitter, setMaxListeners } from '@libp2p/interface';
|
|
2
2
|
import { trackedPeerMap } from '@libp2p/peer-collections';
|
|
3
3
|
import { trackedMap } from '@libp2p/utils/tracked-map';
|
|
4
|
-
import all from 'it-all';
|
|
5
|
-
import filter from 'it-filter';
|
|
6
|
-
import map from 'it-map';
|
|
7
|
-
import { pipe } from 'it-pipe';
|
|
8
4
|
import { CID } from 'multiformats/cid';
|
|
9
5
|
import { sha256 } from 'multiformats/hashes/sha2';
|
|
10
6
|
import pDefer from 'p-defer';
|
|
@@ -13,6 +9,7 @@ import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
|
13
9
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
14
10
|
import { DEFAULT_MESSAGE_SEND_DELAY } from './constants.js';
|
|
15
11
|
import { BlockPresenceType, WantType } from './pb/message.js';
|
|
12
|
+
import { QueuedBitswapMessage } from './utils/bitswap-message.js';
|
|
16
13
|
import vd from './utils/varint-decoder.js';
|
|
17
14
|
export class WantList extends TypedEventEmitter {
|
|
18
15
|
/**
|
|
@@ -119,30 +116,24 @@ export class WantList extends TypedEventEmitter {
|
|
|
119
116
|
this.sendingMessages = pDefer();
|
|
120
117
|
await Promise.all([...this.peers.entries()].map(async ([peerId, sentWants]) => {
|
|
121
118
|
const sent = new Set();
|
|
122
|
-
const message =
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
return sentPreviously;
|
|
130
|
-
}
|
|
131
|
-
// only send if we've not sent it to them before
|
|
132
|
-
return !sentPreviously;
|
|
133
|
-
}), (source) => map(source, ([key, entry]) => {
|
|
134
|
-
sent.add(key);
|
|
135
|
-
return {
|
|
136
|
-
cid: entry.cid.bytes,
|
|
137
|
-
priority: entry.priority,
|
|
138
|
-
wantType: entry.wantType,
|
|
139
|
-
cancel: entry.cancel,
|
|
140
|
-
sendDontHave: entry.sendDontHave
|
|
141
|
-
};
|
|
142
|
-
}), (source) => all(source))
|
|
119
|
+
const message = new QueuedBitswapMessage();
|
|
120
|
+
for (const [key, entry] of this.wants.entries()) {
|
|
121
|
+
const sentPreviously = sentWants.has(key);
|
|
122
|
+
// only send if either we've not sent it before, or we haven't sent it
|
|
123
|
+
// but we're also cancelling the want.
|
|
124
|
+
if (sentPreviously || entry.cancel) {
|
|
125
|
+
continue;
|
|
143
126
|
}
|
|
144
|
-
|
|
145
|
-
|
|
127
|
+
sent.add(key);
|
|
128
|
+
message.addWantlistEntry(entry.cid, {
|
|
129
|
+
cid: entry.cid.bytes,
|
|
130
|
+
priority: entry.priority,
|
|
131
|
+
wantType: entry.wantType,
|
|
132
|
+
cancel: entry.cancel,
|
|
133
|
+
sendDontHave: entry.sendDontHave
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
if (message.wantlist.size === 0) {
|
|
146
137
|
return;
|
|
147
138
|
}
|
|
148
139
|
// add message to send queue
|
|
@@ -179,18 +170,15 @@ export class WantList extends TypedEventEmitter {
|
|
|
179
170
|
* Add a CID to the wantlist
|
|
180
171
|
*/
|
|
181
172
|
async wantSessionPresence(cid, peerId, options = {}) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
sendDontHave: true,
|
|
189
|
-
wantType: WantType.WantHave,
|
|
190
|
-
priority: 1
|
|
191
|
-
}]
|
|
192
|
-
}
|
|
173
|
+
const message = new QueuedBitswapMessage();
|
|
174
|
+
message.addWantlistEntry(cid, {
|
|
175
|
+
cid: cid.bytes,
|
|
176
|
+
sendDontHave: true,
|
|
177
|
+
wantType: WantType.WantHave,
|
|
178
|
+
priority: 1
|
|
193
179
|
});
|
|
180
|
+
// sending WantHave directly to peer
|
|
181
|
+
await this.network.sendMessage(peerId, message);
|
|
194
182
|
// wait for peer response
|
|
195
183
|
const event = await raceEvent(this, 'presence', options.signal, {
|
|
196
184
|
filter: (event) => {
|
|
@@ -212,18 +200,15 @@ export class WantList extends TypedEventEmitter {
|
|
|
212
200
|
* Add a CID to the wantlist
|
|
213
201
|
*/
|
|
214
202
|
async wantSessionBlock(cid, peerId, options = {}) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
sendDontHave: true,
|
|
222
|
-
wantType: WantType.WantBlock,
|
|
223
|
-
priority: 1
|
|
224
|
-
}]
|
|
225
|
-
}
|
|
203
|
+
const message = new QueuedBitswapMessage();
|
|
204
|
+
message.addWantlistEntry(cid, {
|
|
205
|
+
cid: cid.bytes,
|
|
206
|
+
sendDontHave: true,
|
|
207
|
+
wantType: WantType.WantBlock,
|
|
208
|
+
priority: 1
|
|
226
209
|
});
|
|
210
|
+
// sending WantBlockResult directly to peer
|
|
211
|
+
await this.network.sendMessage(peerId, message);
|
|
227
212
|
// wait for peer response
|
|
228
213
|
const event = await raceEvent(this, 'presence', options.signal, {
|
|
229
214
|
filter: (event) => {
|
|
@@ -248,7 +233,7 @@ export class WantList extends TypedEventEmitter {
|
|
|
248
233
|
* Invoked when a message is received from a bitswap peer
|
|
249
234
|
*/
|
|
250
235
|
async receiveMessage(sender, message) {
|
|
251
|
-
this.log('received message
|
|
236
|
+
this.log('received message from %p with %d blocks', sender, message.blocks.length);
|
|
252
237
|
let blocksCancelled = false;
|
|
253
238
|
// process blocks
|
|
254
239
|
for (const block of message.blocks) {
|
|
@@ -318,24 +303,23 @@ export class WantList extends TypedEventEmitter {
|
|
|
318
303
|
*/
|
|
319
304
|
async peerConnected(peerId) {
|
|
320
305
|
const sentWants = new Set();
|
|
306
|
+
const message = new QueuedBitswapMessage(true);
|
|
321
307
|
// new peer, give them the full wantlist
|
|
322
|
-
const
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
entries: pipe(this.wants.entries(), (source) => filter(source, ([key, entry]) => !entry.cancel), (source) => map(source, ([key, entry]) => {
|
|
326
|
-
sentWants.add(key);
|
|
327
|
-
return {
|
|
328
|
-
cid: entry.cid.bytes,
|
|
329
|
-
priority: 1,
|
|
330
|
-
wantType: WantType.WantBlock,
|
|
331
|
-
cancel: false,
|
|
332
|
-
sendDontHave: false
|
|
333
|
-
};
|
|
334
|
-
}), (source) => all(source))
|
|
308
|
+
for (const [key, entry] of this.wants.entries()) {
|
|
309
|
+
if (entry.cancel) {
|
|
310
|
+
continue;
|
|
335
311
|
}
|
|
336
|
-
|
|
312
|
+
sentWants.add(key);
|
|
313
|
+
message.addWantlistEntry(entry.cid, {
|
|
314
|
+
cid: entry.cid.bytes,
|
|
315
|
+
priority: 1,
|
|
316
|
+
wantType: WantType.WantBlock,
|
|
317
|
+
cancel: false,
|
|
318
|
+
sendDontHave: false
|
|
319
|
+
});
|
|
320
|
+
}
|
|
337
321
|
// only send the wantlist if we have something to send
|
|
338
|
-
if (message.wantlist
|
|
322
|
+
if (message.wantlist.size === 0) {
|
|
339
323
|
this.peers.set(peerId, sentWants);
|
|
340
324
|
return;
|
|
341
325
|
}
|