@libp2p/interface-compliance-tests 1.1.6 → 1.1.10

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.
Files changed (92) hide show
  1. package/dist/src/mocks/connection.d.ts +13 -2
  2. package/dist/src/mocks/connection.d.ts.map +1 -1
  3. package/dist/src/mocks/connection.js +56 -24
  4. package/dist/src/mocks/connection.js.map +1 -1
  5. package/dist/src/mocks/multiaddr-connection.d.ts +2 -1
  6. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -1
  7. package/dist/src/mocks/multiaddr-connection.js +2 -2
  8. package/dist/src/mocks/multiaddr-connection.js.map +1 -1
  9. package/dist/src/mocks/muxer.d.ts +2 -2
  10. package/dist/src/mocks/muxer.d.ts.map +1 -1
  11. package/dist/src/mocks/muxer.js +175 -26
  12. package/dist/src/mocks/muxer.js.map +1 -1
  13. package/dist/src/mocks/registrar.d.ts +11 -2
  14. package/dist/src/mocks/registrar.d.ts.map +1 -1
  15. package/dist/src/mocks/registrar.js +47 -5
  16. package/dist/src/mocks/registrar.js.map +1 -1
  17. package/dist/src/mocks/upgrader.d.ts.map +1 -1
  18. package/dist/src/mocks/upgrader.js +8 -4
  19. package/dist/src/mocks/upgrader.js.map +1 -1
  20. package/dist/src/pubsub/api.d.ts +3 -2
  21. package/dist/src/pubsub/api.d.ts.map +1 -1
  22. package/dist/src/pubsub/api.js +23 -13
  23. package/dist/src/pubsub/api.js.map +1 -1
  24. package/dist/src/pubsub/connection-handlers.d.ts +3 -2
  25. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -1
  26. package/dist/src/pubsub/connection-handlers.js +165 -69
  27. package/dist/src/pubsub/connection-handlers.js.map +1 -1
  28. package/dist/src/pubsub/emit-self.d.ts +3 -2
  29. package/dist/src/pubsub/emit-self.d.ts.map +1 -1
  30. package/dist/src/pubsub/emit-self.js +15 -4
  31. package/dist/src/pubsub/emit-self.js.map +1 -1
  32. package/dist/src/pubsub/index.d.ts +6 -3
  33. package/dist/src/pubsub/index.d.ts.map +1 -1
  34. package/dist/src/pubsub/index.js.map +1 -1
  35. package/dist/src/pubsub/messages.d.ts +3 -2
  36. package/dist/src/pubsub/messages.d.ts.map +1 -1
  37. package/dist/src/pubsub/messages.js +42 -39
  38. package/dist/src/pubsub/messages.js.map +1 -1
  39. package/dist/src/pubsub/multiple-nodes.d.ts +3 -2
  40. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -1
  41. package/dist/src/pubsub/multiple-nodes.js +163 -65
  42. package/dist/src/pubsub/multiple-nodes.js.map +1 -1
  43. package/dist/src/pubsub/two-nodes.d.ts +3 -2
  44. package/dist/src/pubsub/two-nodes.d.ts.map +1 -1
  45. package/dist/src/pubsub/two-nodes.js +80 -38
  46. package/dist/src/pubsub/two-nodes.js.map +1 -1
  47. package/dist/src/stream-muxer/base-test.js +1 -1
  48. package/dist/src/stream-muxer/base-test.js.map +1 -1
  49. package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
  50. package/dist/src/stream-muxer/close-test.js +12 -10
  51. package/dist/src/stream-muxer/close-test.js.map +1 -1
  52. package/dist/src/transport/dial-test.d.ts.map +1 -1
  53. package/dist/src/transport/dial-test.js +2 -1
  54. package/dist/src/transport/dial-test.js.map +1 -1
  55. package/dist/src/transport/filter-test.js +1 -1
  56. package/dist/src/transport/filter-test.js.map +1 -1
  57. package/dist/src/transport/listen-test.d.ts.map +1 -1
  58. package/dist/src/transport/listen-test.js +2 -1
  59. package/dist/src/transport/listen-test.js.map +1 -1
  60. package/dist/src/utils/is-valid-tick.d.ts +6 -0
  61. package/dist/src/utils/is-valid-tick.d.ts.map +1 -0
  62. package/dist/src/utils/is-valid-tick.js +15 -0
  63. package/dist/src/utils/is-valid-tick.js.map +1 -0
  64. package/package.json +7 -5
  65. package/src/mocks/connection.ts +80 -24
  66. package/src/mocks/multiaddr-connection.ts +3 -2
  67. package/src/mocks/muxer.ts +230 -28
  68. package/src/mocks/registrar.ts +65 -7
  69. package/src/mocks/upgrader.ts +8 -5
  70. package/src/pubsub/api.ts +29 -15
  71. package/src/pubsub/connection-handlers.ts +186 -75
  72. package/src/pubsub/emit-self.ts +19 -7
  73. package/src/pubsub/index.ts +6 -3
  74. package/src/pubsub/messages.ts +59 -44
  75. package/src/pubsub/multiple-nodes.ts +189 -76
  76. package/src/pubsub/two-nodes.ts +94 -46
  77. package/src/stream-muxer/base-test.ts +1 -1
  78. package/src/stream-muxer/close-test.ts +13 -12
  79. package/src/transport/dial-test.ts +2 -1
  80. package/src/transport/filter-test.ts +1 -1
  81. package/src/transport/listen-test.ts +2 -1
  82. package/src/utils/is-valid-tick.ts +18 -0
  83. package/dist/src/pubsub/utils.d.ts +0 -3
  84. package/dist/src/pubsub/utils.d.ts.map +0 -1
  85. package/dist/src/pubsub/utils.js +0 -11
  86. package/dist/src/pubsub/utils.js.map +0 -1
  87. package/dist/src/transport/utils/index.d.ts +0 -15
  88. package/dist/src/transport/utils/index.d.ts.map +0 -1
  89. package/dist/src/transport/utils/index.js +0 -137
  90. package/dist/src/transport/utils/index.js.map +0 -1
  91. package/src/pubsub/utils.ts +0 -13
  92. package/src/transport/utils/index.ts +0 -172
@@ -1 +1 @@
1
- {"version":3,"file":"emit-self.js","sourceRoot":"","sources":["../../../src/pubsub/emit-self.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAK5E,MAAM,KAAK,GAAG,KAAK,CAAA;AACnB,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;AACxC,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;AAE3C,eAAe,CAAC,MAA2D,EAAE,EAAE;IAC7E,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,IAAI,MAAwB,CAAA;QAE5B,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;gBACpB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,KAAK,CAAC,OAAO,EAAE,CAAA;gBACf,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBACnB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;oBAC/E,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC,CAAA;gBAEH,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAEhC,OAAO,MAAM,OAAO,CAAA;YACtB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;YAClD,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;gBACpB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,KAAK,CAAC,OAAO,EAAE,CAAA;gBACf,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBACnB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAClD,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE;oBACpD,IAAI,EAAE,IAAI;iBACX,CAAC,CAAA;gBAEF,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAEhC,sDAAsD;gBACtD,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;YAClE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"emit-self.js","sourceRoot":"","sources":["../../../src/pubsub/emit-self.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAMhD,MAAM,KAAK,GAAG,KAAK,CAAA;AACnB,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;AACxC,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;AAE3C,eAAe,CAAC,MAA8D,EAAE,EAAE;IAChF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,IAAI,MAAoC,CAAA;QAExC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;oBAC1B,MAAM,EAAE,MAAM,mBAAmB,EAAE;oBACnC,SAAS,EAAE,aAAa,EAAE;oBAC1B,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;gBACpB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,KAAK,CAAC,OAAO,EAAE,CAAA;gBACf,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBACnB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;oBAC/E,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC,CAAA;gBAEH,KAAK,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAEnE,OAAO,MAAM,OAAO,CAAA;YACtB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;oBAC1B,MAAM,EAAE,MAAM,mBAAmB,EAAE;oBACnC,SAAS,EAAE,aAAa,EAAE;oBAC1B,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;gBACpB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,KAAK,CAAC,OAAO,EAAE,CAAA;gBACf,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBACnB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAClD,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE;oBACpD,IAAI,EAAE,IAAI;iBACX,CAAC,CAAA;gBAEF,KAAK,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAEnE,sDAAsD;gBACtD,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;YAClE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1,12 +1,15 @@
1
1
  import type { TestSetup } from '../index.js';
2
- import type { PubSub, Message, PubsubEvents } from '@libp2p/interfaces/pubsub';
3
- export interface EventMap extends PubsubEvents {
2
+ import type { Message, PubSubEvents, PubSubOptions } from '@libp2p/interfaces/pubsub';
3
+ import type { PubsubBaseProtocol } from '@libp2p/pubsub';
4
+ export interface EventMap extends PubSubEvents {
4
5
  'topic': CustomEvent<Message>;
5
6
  'foo': CustomEvent<Message>;
6
7
  'test-topic': CustomEvent<Message>;
7
8
  'reconnect-channel': CustomEvent<Message>;
8
9
  'Z': CustomEvent<Message>;
10
+ 'Za': CustomEvent<Message>;
11
+ 'Zb': CustomEvent<Message>;
9
12
  }
10
- declare const _default: (common: TestSetup<PubSub<EventMap>>) => void;
13
+ declare const _default: (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => void;
11
14
  export default _default;
12
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pubsub/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE9E,MAAM,WAAW,QAAS,SAAQ,YAAY;IAC5C,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC3B,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAClC,mBAAmB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IACzC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;CAC1B;iCAEuB,UAAU,OAAO,QAAQ,CAAC,CAAC;AAAnD,wBASC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pubsub/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExD,MAAM,WAAW,QAAS,SAAQ,YAAY;IAC5C,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC3B,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAClC,mBAAmB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IACzC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IACzB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC1B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;CAC3B;iCAEuB,UAAU,mBAAmB,QAAQ,CAAC,EAAE,aAAa,CAAC;AAA9E,wBASC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pubsub/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,sBAAsB,MAAM,0BAA0B,CAAA;AAC7D,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AAYnD,eAAe,CAAC,MAAmC,EAAE,EAAE;IACrD,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,OAAO,CAAC,MAAM,CAAC,CAAA;QACf,YAAY,CAAC,MAAM,CAAC,CAAA;QACpB,YAAY,CAAC,MAAM,CAAC,CAAA;QACpB,sBAAsB,CAAC,MAAM,CAAC,CAAA;QAC9B,YAAY,CAAC,MAAM,CAAC,CAAA;QACpB,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pubsub/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,sBAAsB,MAAM,0BAA0B,CAAA;AAC7D,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AAenD,eAAe,CAAC,MAA8D,EAAE,EAAE;IAChF,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,OAAO,CAAC,MAAM,CAAC,CAAA;QACf,YAAY,CAAC,MAAM,CAAC,CAAA;QACpB,YAAY,CAAC,MAAM,CAAC,CAAA;QACpB,sBAAsB,CAAC,MAAM,CAAC,CAAA;QAC9B,YAAY,CAAC,MAAM,CAAC,CAAA;QACpB,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import type { TestSetup } from '../index.js';
2
- import type { PubSub } from '@libp2p/interfaces/pubsub';
2
+ import type { PubSubOptions } from '@libp2p/interfaces/pubsub';
3
3
  import type { EventMap } from './index.js';
4
- declare const _default: (common: TestSetup<PubSub<EventMap>>) => void;
4
+ import type { PubsubBaseProtocol } from '@libp2p/pubsub';
5
+ declare const _default: (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => void;
5
6
  export default _default;
6
7
  //# sourceMappingURL=messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/pubsub/messages.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;iCAKlB,UAAU,OAAO,QAAQ,CAAC,CAAC;AAAnD,wBAiGC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/pubsub/messages.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAO,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;iCAKhC,UAAU,mBAAmB,QAAQ,CAAC,EAAE,aAAa,CAAC;AAA9E,wBA0GC"}
@@ -1,9 +1,14 @@
1
1
  import { expect } from 'aegir/utils/chai.js';
2
2
  import sinon from 'sinon';
3
- import * as PeerIdFactory from '@libp2p/peer-id-factory';
3
+ import { createEd25519PeerId } from '@libp2p/peer-id-factory';
4
4
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
5
- import * as utils from '@libp2p/pubsub/utils';
5
+ import { noSignMsgId } from '@libp2p/pubsub/utils';
6
6
  import { PeerStreams } from '@libp2p/pubsub/peer-streams';
7
+ import { mockRegistrar } from '../mocks/registrar.js';
8
+ import pDefer from 'p-defer';
9
+ import delay from 'delay';
10
+ import pWaitFor from 'p-wait-for';
11
+ import { CustomEvent } from '@libp2p/interfaces';
7
12
  const topic = 'foo';
8
13
  const data = uint8ArrayFromString('bar');
9
14
  export default (common) => {
@@ -11,7 +16,11 @@ export default (common) => {
11
16
  let pubsub;
12
17
  // Create pubsub router
13
18
  beforeEach(async () => {
14
- pubsub = await common.setup();
19
+ pubsub = await common.setup({
20
+ peerId: await createEd25519PeerId(),
21
+ registrar: mockRegistrar(),
22
+ emitSelf: true
23
+ });
15
24
  await pubsub.start();
16
25
  });
17
26
  afterEach(async () => {
@@ -21,72 +30,66 @@ export default (common) => {
21
30
  });
22
31
  it('should emit normalized signed messages on publish', async () => {
23
32
  pubsub.globalSignaturePolicy = 'StrictSign';
24
- // @ts-expect-error protected field
25
- sinon.spy(pubsub, '_emitMessage');
26
- await pubsub.publish(topic, data);
27
- // @ts-expect-error protected field
28
- expect(pubsub._emitMessage.callCount).to.eql(1);
29
- // @ts-expect-error protected field
30
- const [messageToEmit] = pubsub._emitMessage.getCall(0).args;
33
+ const spy = sinon.spy(pubsub, 'publishMessage');
34
+ await pubsub.dispatchEvent(new CustomEvent(topic, { detail: data }));
35
+ await pWaitFor(async () => {
36
+ return spy.callCount === 1;
37
+ });
38
+ expect(spy).to.have.property('callCount', 1);
39
+ const [from, messageToEmit] = spy.getCall(0).args;
40
+ expect(from.toString()).to.equal(pubsub.peerId.toString());
31
41
  expect(messageToEmit.seqno).to.not.eql(undefined);
32
42
  expect(messageToEmit.key).to.not.eql(undefined);
33
43
  expect(messageToEmit.signature).to.not.eql(undefined);
34
44
  });
35
45
  it('should drop unsigned messages', async () => {
36
- // @ts-expect-error protected field
37
- sinon.spy(pubsub, '_emitMessage');
38
- // @ts-expect-error protected field
39
- sinon.spy(pubsub, '_publish');
46
+ const publishSpy = sinon.spy(pubsub, 'publishMessage');
40
47
  sinon.spy(pubsub, 'validate');
41
48
  const peerStream = new PeerStreams({
42
- id: await PeerIdFactory.createEd25519PeerId(),
49
+ id: await createEd25519PeerId(),
43
50
  protocol: 'test'
44
51
  });
45
52
  const rpc = {
46
53
  subscriptions: [],
47
- msgs: [{
48
- receivedFrom: peerStream.id.toString(),
54
+ messages: [{
49
55
  from: peerStream.id.toBytes(),
50
56
  data,
51
- seqno: utils.randomSeqno(),
52
- topicIDs: [topic]
57
+ seqno: await noSignMsgId(data),
58
+ topic: topic
53
59
  }]
54
60
  };
55
61
  pubsub.subscribe(topic);
56
- // @ts-expect-error protected field
57
- await pubsub._processRpc(peerStream.id.toString(), peerStream, rpc);
58
- expect(pubsub.validate).to.have.property('callCount', 1);
59
- // @ts-expect-error protected field
60
- expect(pubsub._emitMessage).to.have.property('called', false);
61
- // @ts-expect-error protected field
62
- expect(pubsub._publish).to.have.property('called', false);
62
+ await pubsub.processRpc(peerStream.id, peerStream, rpc);
63
+ // message should not be delivered
64
+ await delay(1000);
65
+ expect(publishSpy).to.have.property('called', false);
63
66
  });
64
67
  it('should not drop unsigned messages if strict signing is disabled', async () => {
65
68
  pubsub.globalSignaturePolicy = 'StrictNoSign';
66
- // @ts-expect-error protected field
67
- sinon.spy(pubsub, '_emitMessage');
68
- // @ts-expect-error protected field
69
- sinon.spy(pubsub, '_publish');
69
+ const publishSpy = sinon.spy(pubsub, 'publishMessage');
70
70
  sinon.spy(pubsub, 'validate');
71
71
  const peerStream = new PeerStreams({
72
- id: await PeerIdFactory.createEd25519PeerId(),
72
+ id: await createEd25519PeerId(),
73
73
  protocol: 'test'
74
74
  });
75
75
  const rpc = {
76
76
  subscriptions: [],
77
- msgs: [{
77
+ messages: [{
78
+ from: peerStream.id.toBytes(),
78
79
  data,
79
- topicIDs: [topic]
80
+ topic
80
81
  }]
81
82
  };
82
83
  pubsub.subscribe(topic);
83
- // @ts-expect-error protected field
84
- await pubsub._processRpc(peerStream.id.toString(), peerStream, rpc);
84
+ const deferred = pDefer();
85
+ pubsub.addEventListener(topic, () => {
86
+ deferred.resolve();
87
+ });
88
+ await pubsub.processRpc(peerStream.id, peerStream, rpc);
89
+ // await message delivery
90
+ await deferred.promise;
85
91
  expect(pubsub.validate).to.have.property('callCount', 1);
86
- // @ts-expect-error protected field
87
- expect(pubsub._emitMessage).to.have.property('called', 1);
88
- // @ts-expect-error protected field
89
- expect(pubsub._publish).to.have.property('called', 1);
92
+ expect(publishSpy).to.have.property('callCount', 1);
90
93
  });
91
94
  });
92
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/pubsub/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/pubsub/messages.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { TestSetup } from '../index.js';
2
- import type { PubSub } from '@libp2p/interfaces/pubsub';
2
+ import type { PubSubOptions } from '@libp2p/interfaces/pubsub';
3
3
  import type { EventMap } from './index.js';
4
- declare const _default: (common: TestSetup<PubSub<EventMap>>) => void;
4
+ import type { PubsubBaseProtocol } from '@libp2p/pubsub';
5
+ declare const _default: (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => void;
5
6
  export default _default;
6
7
  //# sourceMappingURL=multiple-nodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiple-nodes.d.ts","sourceRoot":"","sources":["../../../src/pubsub/multiple-nodes.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;iCAElB,UAAU,OAAO,QAAQ,CAAC,CAAC;AAAnD,wBA0WC"}
1
+ {"version":3,"file":"multiple-nodes.d.ts","sourceRoot":"","sources":["../../../src/pubsub/multiple-nodes.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;iCAEhC,UAAU,mBAAmB,QAAQ,CAAC,EAAE,aAAa,CAAC;AAA9E,wBAsdC"}
@@ -6,7 +6,9 @@ import pDefer from 'p-defer';
6
6
  import pWaitFor from 'p-wait-for';
7
7
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
8
8
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
9
- import { expectSet } from './utils.js';
9
+ import { createEd25519PeerId } from '@libp2p/peer-id-factory';
10
+ import { connectPeers, mockRegistrar } from '../mocks/registrar.js';
11
+ import { CustomEvent } from '@libp2p/interfaces';
10
12
  export default (common) => {
11
13
  describe('pubsub with multiple nodes', function () {
12
14
  describe('every peer subscribes to the topic', () => {
@@ -17,46 +19,80 @@ export default (common) => {
17
19
  let psA;
18
20
  let psB;
19
21
  let psC;
22
+ let peerIdA;
23
+ let peerIdB;
24
+ let peerIdC;
25
+ let registrarA;
26
+ let registrarB;
27
+ let registrarC;
20
28
  // Create and start pubsub nodes
21
29
  beforeEach(async () => {
22
- psA = await common.setup();
23
- psB = await common.setup();
24
- psC = await common.setup();
25
- [psA, psB, psC].map((p) => p.start());
30
+ peerIdA = await createEd25519PeerId();
31
+ peerIdB = await createEd25519PeerId();
32
+ peerIdC = await createEd25519PeerId();
33
+ registrarA = mockRegistrar();
34
+ registrarB = mockRegistrar();
35
+ registrarC = mockRegistrar();
36
+ psA = await common.setup({
37
+ peerId: peerIdA,
38
+ registrar: registrarA,
39
+ emitSelf: true
40
+ });
41
+ psB = await common.setup({
42
+ peerId: peerIdB,
43
+ registrar: registrarB,
44
+ emitSelf: true
45
+ });
46
+ psC = await common.setup({
47
+ peerId: peerIdC,
48
+ registrar: registrarC,
49
+ emitSelf: true
50
+ });
51
+ // Start pubsub modes
52
+ await Promise.all([psA, psB, psC].map(async (p) => await p.start()));
26
53
  });
27
54
  // Connect nodes
28
55
  beforeEach(async () => {
29
- // @ts-expect-error protected field
30
- await psA._libp2p.dial(psB.peerId);
31
- // @ts-expect-error protected field
32
- await psB._libp2p.dial(psC.peerId);
56
+ await connectPeers(psA.multicodecs[0], {
57
+ peerId: peerIdA,
58
+ registrar: registrarA
59
+ }, {
60
+ peerId: peerIdB,
61
+ registrar: registrarB
62
+ });
63
+ await connectPeers(psA.multicodecs[0], {
64
+ peerId: peerIdB,
65
+ registrar: registrarB
66
+ }, {
67
+ peerId: peerIdC,
68
+ registrar: registrarC
69
+ });
33
70
  // Wait for peers to be ready in pubsub
34
- await pWaitFor(() => psA.peers.size === 1 &&
35
- psC.peers.size === 1 &&
36
- psA.peers.size === 1);
71
+ await pWaitFor(() => psA.getPeers().length === 1 &&
72
+ psC.getPeers().length === 1 &&
73
+ psA.getPeers().length === 1);
37
74
  });
38
75
  afterEach(async () => {
39
76
  sinon.restore();
40
- [psA, psB, psC].map((p) => p.stop());
77
+ await Promise.all([psA, psB, psC].map(async (p) => await p.stop()));
41
78
  await common.teardown();
42
79
  });
43
80
  it('subscribe to the topic on node a', async () => {
44
81
  const topic = 'Z';
45
82
  psA.subscribe(topic);
46
- expectSet(psA.subscriptions, [topic]);
83
+ expect(psA.getTopics()).to.deep.equal([topic]);
47
84
  await new Promise((resolve) => psB.addEventListener('pubsub:subscription-change', resolve, {
48
85
  once: true
49
86
  }));
50
- expect(psB.peers.size).to.equal(2);
51
- const aPeerId = psA.peerId.toString();
52
- expectSet(psB.topics.get(topic), [aPeerId]);
53
- expect(psC.peers.size).to.equal(1);
54
- expect(psC.topics.get(topic)).to.eql(undefined);
87
+ expect(psB.getPeers().length).to.equal(2);
88
+ expect(psB.getSubscribers(topic).map(p => p.toString())).to.deep.equal([peerIdA.toString()]);
89
+ expect(psC.getPeers().length).to.equal(1);
90
+ expect(psC.getSubscribers(topic)).to.be.empty();
55
91
  });
56
92
  it('subscribe to the topic on node b', async () => {
57
93
  const topic = 'Z';
58
94
  psB.subscribe(topic);
59
- expectSet(psB.subscriptions, [topic]);
95
+ expect(psB.getTopics()).to.deep.equal([topic]);
60
96
  await Promise.all([
61
97
  new Promise((resolve) => psA.addEventListener('pubsub:subscription-change', resolve, {
62
98
  once: true
@@ -65,20 +101,20 @@ export default (common) => {
65
101
  once: true
66
102
  }))
67
103
  ]);
68
- expect(psA.peers.size).to.equal(1);
69
- expectSet(psA.topics.get(topic), [psB.peerId.toString()]);
70
- expect(psC.peers.size).to.equal(1);
71
- expectSet(psC.topics.get(topic), [psB.peerId.toString()]);
104
+ expect(psA.getPeers().length).to.equal(1);
105
+ expect(psA.getSubscribers(topic).map(p => p.toString())).to.deep.equal([peerIdB.toString()]);
106
+ expect(psC.getPeers().length).to.equal(1);
107
+ expect(psC.getSubscribers(topic).map(p => p.toString())).to.deep.equal([peerIdB.toString()]);
72
108
  });
73
109
  it('subscribe to the topic on node c', async () => {
74
110
  const topic = 'Z';
75
111
  const defer = pDefer();
76
112
  psC.subscribe(topic);
77
- expectSet(psC.subscriptions, [topic]);
113
+ expect(psC.getTopics()).to.deep.equal([topic]);
78
114
  psB.addEventListener('pubsub:subscription-change', () => {
79
- expect(psA.peers.size).to.equal(1);
80
- expect(psB.peers.size).to.equal(2);
81
- expectSet(psB.topics.get(topic), [psC.peerId.toString()]);
115
+ expect(psA.getPeers().length).to.equal(1);
116
+ expect(psB.getPeers().length).to.equal(2);
117
+ expect(psB.getSubscribers(topic).map(p => p.toString())).to.deep.equal([peerIdC.toString()]);
82
118
  defer.resolve();
83
119
  }, {
84
120
  once: true
@@ -88,28 +124,29 @@ export default (common) => {
88
124
  it('publish on node a', async () => {
89
125
  const topic = 'Z';
90
126
  const defer = pDefer();
91
- psA.subscribe(topic);
92
- psB.subscribe(topic);
93
- psC.subscribe(topic);
94
127
  // await subscription change
95
- await Promise.all([
96
- new Promise(resolve => psA.addEventListener('pubsub:subscription-change', () => resolve(null), {
128
+ const p = Promise.all([
129
+ new Promise(resolve => psA.addEventListener('pubsub:subscription-change', () => resolve(), {
97
130
  once: true
98
131
  })),
99
- new Promise(resolve => psB.addEventListener('pubsub:subscription-change', () => resolve(null), {
132
+ new Promise(resolve => psB.addEventListener('pubsub:subscription-change', () => resolve(), {
100
133
  once: true
101
134
  })),
102
- new Promise(resolve => psC.addEventListener('pubsub:subscription-change', () => resolve(null), {
135
+ new Promise(resolve => psC.addEventListener('pubsub:subscription-change', () => resolve(), {
103
136
  once: true
104
137
  }))
105
138
  ]);
106
- // await a cycle
107
- await delay(1000);
139
+ psA.subscribe(topic);
140
+ psB.subscribe(topic);
141
+ psC.subscribe(topic);
142
+ await p;
108
143
  let counter = 0;
109
144
  psA.addEventListener(topic, incMsg);
110
145
  psB.addEventListener(topic, incMsg);
111
146
  psC.addEventListener(topic, incMsg);
112
- void psA.publish(topic, uint8ArrayFromString('hey'));
147
+ // await a cycle
148
+ await delay(1000);
149
+ void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('hey') }));
113
150
  function incMsg(evt) {
114
151
  const msg = evt.detail;
115
152
  expect(uint8ArrayToString(msg.data)).to.equal('hey');
@@ -157,7 +194,7 @@ export default (common) => {
157
194
  psC.addEventListener(topic, incMsg);
158
195
  // await a cycle
159
196
  await delay(1000);
160
- void psB.publish(topic, uint8ArrayFromString('hey'));
197
+ void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('hey') }));
161
198
  function incMsg(evt) {
162
199
  const msg = evt.detail;
163
200
  expect(uint8ArrayToString(msg.data)).to.equal('hey');
@@ -188,47 +225,108 @@ export default (common) => {
188
225
  let psC;
189
226
  let psD;
190
227
  let psE;
228
+ let peerIdA;
229
+ let peerIdB;
230
+ let peerIdC;
231
+ let peerIdD;
232
+ let peerIdE;
233
+ let registrarA;
234
+ let registrarB;
235
+ let registrarC;
236
+ let registrarD;
237
+ let registrarE;
191
238
  // Create and start pubsub nodes
192
239
  beforeEach(async () => {
193
- psA = await common.setup();
194
- psB = await common.setup();
195
- psC = await common.setup();
196
- psD = await common.setup();
197
- psE = await common.setup();
198
- [psA, psB, psC, psD, psE].map((p) => p.start());
240
+ peerIdA = await createEd25519PeerId();
241
+ peerIdB = await createEd25519PeerId();
242
+ peerIdC = await createEd25519PeerId();
243
+ peerIdD = await createEd25519PeerId();
244
+ peerIdE = await createEd25519PeerId();
245
+ registrarA = mockRegistrar();
246
+ registrarB = mockRegistrar();
247
+ registrarC = mockRegistrar();
248
+ registrarD = mockRegistrar();
249
+ registrarE = mockRegistrar();
250
+ psA = await common.setup({
251
+ peerId: peerIdA,
252
+ registrar: registrarA,
253
+ emitSelf: true
254
+ });
255
+ psB = await common.setup({
256
+ peerId: peerIdB,
257
+ registrar: registrarB,
258
+ emitSelf: true
259
+ });
260
+ psC = await common.setup({
261
+ peerId: peerIdC,
262
+ registrar: registrarC,
263
+ emitSelf: true
264
+ });
265
+ psD = await common.setup({
266
+ peerId: peerIdD,
267
+ registrar: registrarD,
268
+ emitSelf: true
269
+ });
270
+ psE = await common.setup({
271
+ peerId: peerIdE,
272
+ registrar: registrarE,
273
+ emitSelf: true
274
+ });
275
+ // Start pubsub nodes
276
+ await Promise.all([psA, psB, psC, psD, psE].map(async (p) => await p.start()));
199
277
  });
200
278
  // connect nodes
201
279
  beforeEach(async () => {
202
- // @ts-expect-error protected field
203
- await psA._libp2p.dial(psB.peerId);
204
- // @ts-expect-error protected field
205
- await psB._libp2p.dial(psC.peerId);
206
- // @ts-expect-error protected field
207
- await psC._libp2p.dial(psD.peerId);
208
- // @ts-expect-error protected field
209
- await psD._libp2p.dial(psE.peerId);
280
+ await connectPeers(psA.multicodecs[0], {
281
+ peerId: peerIdA,
282
+ registrar: registrarA
283
+ }, {
284
+ peerId: peerIdB,
285
+ registrar: registrarB
286
+ });
287
+ await connectPeers(psA.multicodecs[0], {
288
+ peerId: peerIdB,
289
+ registrar: registrarB
290
+ }, {
291
+ peerId: peerIdC,
292
+ registrar: registrarC
293
+ });
294
+ await connectPeers(psA.multicodecs[0], {
295
+ peerId: peerIdC,
296
+ registrar: registrarC
297
+ }, {
298
+ peerId: peerIdD,
299
+ registrar: registrarD
300
+ });
301
+ await connectPeers(psA.multicodecs[0], {
302
+ peerId: peerIdD,
303
+ registrar: registrarD
304
+ }, {
305
+ peerId: peerIdE,
306
+ registrar: registrarE
307
+ });
210
308
  // Wait for peers to be ready in pubsub
211
- await pWaitFor(() => psA.peers.size === 1 &&
212
- psB.peers.size === 2 &&
213
- psC.peers.size === 2 &&
214
- psD.peers.size === 2 &&
215
- psE.peers.size === 1);
309
+ await pWaitFor(() => psA.getPeers().length === 1 &&
310
+ psB.getPeers().length === 2 &&
311
+ psC.getPeers().length === 2 &&
312
+ psD.getPeers().length === 2 &&
313
+ psE.getPeers().length === 1);
216
314
  });
217
315
  afterEach(async () => {
218
- [psA, psB, psC, psD, psE].map((p) => p.stop());
316
+ await Promise.all([psA, psB, psC, psD, psE].map(async (p) => await p.stop()));
219
317
  await common.teardown();
220
318
  });
221
319
  it('subscribes', () => {
222
320
  psA.subscribe('Z');
223
- expectSet(psA.subscriptions, ['Z']);
321
+ expect(psA.getTopics()).to.deep.equal(['Z']);
224
322
  psB.subscribe('Z');
225
- expectSet(psB.subscriptions, ['Z']);
323
+ expect(psB.getTopics()).to.deep.equal(['Z']);
226
324
  psC.subscribe('Z');
227
- expectSet(psC.subscriptions, ['Z']);
325
+ expect(psC.getTopics()).to.deep.equal(['Z']);
228
326
  psD.subscribe('Z');
229
- expectSet(psD.subscriptions, ['Z']);
327
+ expect(psD.getTopics()).to.deep.equal(['Z']);
230
328
  psE.subscribe('Z');
231
- expectSet(psE.subscriptions, ['Z']);
329
+ expect(psE.getTopics()).to.deep.equal(['Z']);
232
330
  });
233
331
  it('publishes from c', async function () {
234
332
  const defer = pDefer();
@@ -252,7 +350,7 @@ export default (common) => {
252
350
  ]);
253
351
  // await a cycle
254
352
  await delay(1000);
255
- void psC.publish('Z', uint8ArrayFromString('hey from c'));
353
+ void psC.dispatchEvent(new CustomEvent('Z', { detail: uint8ArrayFromString('hey from c') }));
256
354
  function incMsg(evt) {
257
355
  const msg = evt.detail;
258
356
  expect(uint8ArrayToString(msg.data)).to.equal('hey from c');