mirror of
https://github.com/fluencelabs/js-libp2p-interfaces
synced 2025-04-24 17:52:21 +00:00
feat: update pubsub getMsgId return type to Uint8Array (#65)
BREAKING CHANGE: new getMsgId return type is not backwards compatible with prior `string` return type.
This commit is contained in:
parent
ff3bd10704
commit
e14844315b
4
src/pubsub/index.d.ts
vendored
4
src/pubsub/index.d.ts
vendored
@ -184,9 +184,9 @@ declare class PubsubBaseProtocol {
|
|||||||
* The default msgID implementation
|
* The default msgID implementation
|
||||||
* Child class can override this.
|
* Child class can override this.
|
||||||
* @param {RPC.Message} msg the message object
|
* @param {RPC.Message} msg the message object
|
||||||
* @returns {string} message id as string
|
* @returns {Uint8Array} message id as bytes
|
||||||
*/
|
*/
|
||||||
getMsgId(msg: any): string;
|
getMsgId(msg: any): Uint8Array;
|
||||||
/**
|
/**
|
||||||
* Whether to accept a message from a peer
|
* Whether to accept a message from a peer
|
||||||
* Override to create a graylist
|
* Override to create a graylist
|
||||||
|
@ -437,7 +437,7 @@ class PubsubBaseProtocol extends EventEmitter {
|
|||||||
* The default msgID implementation
|
* The default msgID implementation
|
||||||
* Child class can override this.
|
* Child class can override this.
|
||||||
* @param {RPC.Message} msg the message object
|
* @param {RPC.Message} msg the message object
|
||||||
* @returns {string} message id as string
|
* @returns {Uint8Array} message id as bytes
|
||||||
*/
|
*/
|
||||||
getMsgId (msg) {
|
getMsgId (msg) {
|
||||||
return utils.msgId(msg.from, msg.seqno)
|
return utils.msgId(msg.from, msg.seqno)
|
||||||
|
2
src/pubsub/utils.d.ts
vendored
2
src/pubsub/utils.d.ts
vendored
@ -1,5 +1,5 @@
|
|||||||
export function randomSeqno(): Uint8Array;
|
export function randomSeqno(): Uint8Array;
|
||||||
export function msgId(from: string, seqno: Uint8Array): string;
|
export function msgId(from: string, seqno: Uint8Array): Uint8Array;
|
||||||
export function anyMatch(a: any[] | Set<any>, b: any[] | Set<any>): boolean;
|
export function anyMatch(a: any[] | Set<any>, b: any[] | Set<any>): boolean;
|
||||||
export function ensureArray(maybeArray: any): any[];
|
export function ensureArray(maybeArray: any): any[];
|
||||||
export function normalizeInRpcMessage(message: any, peerId: string): any;
|
export function normalizeInRpcMessage(message: any, peerId: string): any;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
const randomBytes = require('libp2p-crypto/src/random-bytes')
|
const randomBytes = require('libp2p-crypto/src/random-bytes')
|
||||||
const uint8ArrayToString = require('uint8arrays/to-string')
|
const uint8ArrayToString = require('uint8arrays/to-string')
|
||||||
const uint8ArrayFromString = require('uint8arrays/from-string')
|
const uint8ArrayFromString = require('uint8arrays/from-string')
|
||||||
|
const PeerId = require('peer-id')
|
||||||
exports = module.exports
|
exports = module.exports
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -20,11 +21,15 @@ exports.randomSeqno = () => {
|
|||||||
*
|
*
|
||||||
* @param {string} from
|
* @param {string} from
|
||||||
* @param {Uint8Array} seqno
|
* @param {Uint8Array} seqno
|
||||||
* @returns {string}
|
* @returns {Uint8Array}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
exports.msgId = (from, seqno) => {
|
exports.msgId = (from, seqno) => {
|
||||||
return from + uint8ArrayToString(seqno, 'base16')
|
const fromBytes = PeerId.createFromB58String(from).id
|
||||||
|
const msgId = new Uint8Array(fromBytes.length + seqno.length)
|
||||||
|
msgId.set(fromBytes, 0)
|
||||||
|
msgId.set(seqno, fromBytes.length)
|
||||||
|
return msgId
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,15 +15,11 @@ describe('utils', () => {
|
|||||||
expect(first).to.not.eql(second)
|
expect(first).to.not.eql(second)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('msgId', () => {
|
|
||||||
expect(utils.msgId('hello', uint8ArrayFromString('world'))).to.be.eql('hello776f726c64')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('msgId should not generate same ID for two different Uint8Arrays', () => {
|
it('msgId should not generate same ID for two different Uint8Arrays', () => {
|
||||||
const peerId = 'QmPNdSYk5Rfpo5euNqwtyizzmKXMNHdXeLjTQhcN4yfX22'
|
const peerId = 'QmPNdSYk5Rfpo5euNqwtyizzmKXMNHdXeLjTQhcN4yfX22'
|
||||||
const msgId0 = utils.msgId(peerId, uint8ArrayFromString('15603533e990dfde', 'base16'))
|
const msgId0 = utils.msgId(peerId, uint8ArrayFromString('15603533e990dfde', 'base16'))
|
||||||
const msgId1 = utils.msgId(peerId, uint8ArrayFromString('15603533e990dfe0', 'base16'))
|
const msgId1 = utils.msgId(peerId, uint8ArrayFromString('15603533e990dfe0', 'base16'))
|
||||||
expect(msgId0).to.not.eql(msgId1)
|
expect(msgId0).to.not.deep.equal(msgId1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('anyMatch', () => {
|
it('anyMatch', () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user