mirror of
https://github.com/fluencelabs/js-peer-id
synced 2025-04-25 06:22:24 +00:00
feat: adds typescript types + type tests (#110)
* feat: adds typescript types + type tests Signed-off-by: Carson Farmer <carson.farmer@gmail.com> * feat: updates to latest cids release Signed-off-by: Carson Farmer <carson.farmer@gmail.com>
This commit is contained in:
parent
fc9698476f
commit
a5070aea6e
@ -4,6 +4,7 @@
|
|||||||
"description": "IPFS Peer Id implementation in Node.js",
|
"description": "IPFS Peer Id implementation in Node.js",
|
||||||
"leadMaintainer": "Vasco Santos <santos.vasco10@gmail.com>",
|
"leadMaintainer": "Vasco Santos <santos.vasco10@gmail.com>",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
|
"types": "src/index.d.ts",
|
||||||
"bin": "src/bin.js",
|
"bin": "src/bin.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "aegir lint",
|
"lint": "aegir lint",
|
||||||
@ -11,6 +12,7 @@
|
|||||||
"test": "aegir test",
|
"test": "aegir test",
|
||||||
"test:node": "aegir test -t node",
|
"test:node": "aegir test -t node",
|
||||||
"test:browser": "aegir test -t browser -t webworker",
|
"test:browser": "aegir test -t browser -t webworker",
|
||||||
|
"test:types": "npx tsc",
|
||||||
"release": "aegir release",
|
"release": "aegir release",
|
||||||
"release-minor": "aegir release --type minor",
|
"release-minor": "aegir release --type minor",
|
||||||
"release-major": "aegir release --type major",
|
"release-major": "aegir release --type major",
|
||||||
@ -34,15 +36,18 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/libp2p/js-peer-id",
|
"homepage": "https://github.com/libp2p/js-peer-id",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/chai": "^4.2.7",
|
||||||
|
"@types/dirty-chai": "^2.0.2",
|
||||||
|
"@types/mocha": "^5.2.7",
|
||||||
"aegir": "^20.0.0",
|
"aegir": "^20.0.0",
|
||||||
"bundlesize": "~0.18.0",
|
"bundlesize": "~0.18.0",
|
||||||
"chai": "^4.2.0",
|
"chai": "^4.2.0",
|
||||||
"dirty-chai": "^2.0.1"
|
"dirty-chai": "^2.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cids": "~0.7.1",
|
"cids": "^0.7.3",
|
||||||
"class-is": "^1.1.0",
|
"class-is": "^1.1.0",
|
||||||
"libp2p-crypto": "~0.17.0",
|
"libp2p-crypto": "~0.17.2",
|
||||||
"multihashes": "~0.4.15",
|
"multihashes": "~0.4.15",
|
||||||
"protons": "^1.0.1"
|
"protons": "^1.0.1"
|
||||||
},
|
},
|
||||||
|
188
src/index.d.ts
vendored
Normal file
188
src/index.d.ts
vendored
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
import crypto, { PrivateKey, PublicKey, KeyType } from "libp2p-crypto";
|
||||||
|
import CID from 'cids'
|
||||||
|
|
||||||
|
declare namespace PeerId {
|
||||||
|
/**
|
||||||
|
* Options for PeerId creation.
|
||||||
|
*/
|
||||||
|
type CreateOptions = {
|
||||||
|
/**
|
||||||
|
* The number of bits to use.
|
||||||
|
*/
|
||||||
|
bits?: number;
|
||||||
|
/**
|
||||||
|
* The type of key to use.
|
||||||
|
*/
|
||||||
|
keyType?: KeyType;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PeerId JSON format.
|
||||||
|
*/
|
||||||
|
type JSONPeerId = {
|
||||||
|
/**
|
||||||
|
* String representation of PeerId.
|
||||||
|
*/
|
||||||
|
id: string;
|
||||||
|
/**
|
||||||
|
* Public key.
|
||||||
|
*/
|
||||||
|
pubKey?: string;
|
||||||
|
/**
|
||||||
|
* Private key.
|
||||||
|
*/
|
||||||
|
privKey: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a value is an instance of PeerId.
|
||||||
|
* @param id The value to check.
|
||||||
|
*/
|
||||||
|
function isPeerId(id: any): boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new PeerId.
|
||||||
|
* @param opts Options.
|
||||||
|
*/
|
||||||
|
function create(opts?: PeerId.CreateOptions): Promise<PeerId>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create PeerId from hex string.
|
||||||
|
* @param str The input hex string.
|
||||||
|
*/
|
||||||
|
function createFromHexString(str: string): PeerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create PeerId from raw bytes.
|
||||||
|
* @param buf The raw bytes.
|
||||||
|
*/
|
||||||
|
function createFromBytes(buf: Buffer): PeerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create PeerId from base58-encoded string.
|
||||||
|
* @param str The base58-encoded string.
|
||||||
|
*/
|
||||||
|
function createFromB58String(str: string): PeerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create PeerId from CID.
|
||||||
|
* @param cid The CID.
|
||||||
|
*/
|
||||||
|
function createFromCID(cid: CID | Buffer | string | object): PeerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create PeerId from public key.
|
||||||
|
* @param key Public key, as Buffer or base64-encoded string.
|
||||||
|
*/
|
||||||
|
function createFromPubKey(key: Buffer | string): Promise<PeerId>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create PeerId from private key.
|
||||||
|
* @param key Private key, as Buffer or base64-encoded string.
|
||||||
|
*/
|
||||||
|
function createFromPrivKey(key: Buffer | string): Promise<PeerId>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create PeerId from PeerId JSON formatted object.
|
||||||
|
* @see {@link PeerId#toJSON}
|
||||||
|
* @param json PeerId in JSON format.
|
||||||
|
*/
|
||||||
|
function createFromJSON(json: JSONPeerId): Promise<PeerId>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create PeerId from Protobuf bytes.
|
||||||
|
* @param buf Protobuf bytes, as Buffer or hex-encoded string.
|
||||||
|
*/
|
||||||
|
function createFromProtobuf(buf: Buffer | string): Promise<PeerId>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PeerId is an object representation of a peer identifier.
|
||||||
|
*/
|
||||||
|
declare class PeerId {
|
||||||
|
constructor(id: Buffer | string, privKey?: PrivateKey, pubKey?: PublicKey);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Raw id.
|
||||||
|
*/
|
||||||
|
id: Buffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Private key.
|
||||||
|
*/
|
||||||
|
privKey: PrivateKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Public key.
|
||||||
|
*/
|
||||||
|
pubKey: PublicKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the protobuf version of the public key, matching go ipfs formatting.
|
||||||
|
*/
|
||||||
|
marshalPubKey(): Buffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the protobuf version of the private key, matching go ipfs formatting.
|
||||||
|
*/
|
||||||
|
marshalPrivKey(): Buffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the protobuf version of the peer-id.
|
||||||
|
* @param excludePriv Whether to exclude the private key information from the output.
|
||||||
|
*/
|
||||||
|
marshal(excludePriv?: boolean): Buffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* String representation.
|
||||||
|
*/
|
||||||
|
toPrint(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the jsonified version of the key.
|
||||||
|
* Matches the formatting of go-ipfs for its config file.
|
||||||
|
* @see {@link PeerId.createFromJSON}
|
||||||
|
*/
|
||||||
|
toJSON(): PeerId.JSONPeerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encode to hex.
|
||||||
|
*/
|
||||||
|
toHexString(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return raw id bytes.
|
||||||
|
*/
|
||||||
|
toBytes(): Buffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encode to base58 string.
|
||||||
|
*/
|
||||||
|
toB58String(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return self-describing string representation.
|
||||||
|
* Uses default format from RFC 0001: https://github.com/libp2p/specs/pull/209
|
||||||
|
*/
|
||||||
|
toString(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the equality of `this` peer against a given PeerId.
|
||||||
|
* @param id The other PeerId.
|
||||||
|
*/
|
||||||
|
equals(id: PeerId | Buffer): boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the equality of `this` peer against a given PeerId.
|
||||||
|
* @deprecated Use {.equals}
|
||||||
|
* @param id The other PeerId.
|
||||||
|
*/
|
||||||
|
isEqual(id: PeerId | Buffer): boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if this PeerId instance is valid (privKey -> pubKey -> Id)
|
||||||
|
*/
|
||||||
|
isValid(): boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export = PeerId;
|
@ -271,24 +271,28 @@ describe('PeerId', () => {
|
|||||||
|
|
||||||
it('set privKey (valid)', async () => {
|
it('set privKey (valid)', async () => {
|
||||||
const peerId = await PeerId.create(testOpts)
|
const peerId = await PeerId.create(testOpts)
|
||||||
|
// @ts-ignore
|
||||||
peerId.privKey = peerId._privKey
|
peerId.privKey = peerId._privKey
|
||||||
expect(peerId.isValid()).to.equal(true)
|
expect(peerId.isValid()).to.equal(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('set pubKey (valid)', async () => {
|
it('set pubKey (valid)', async () => {
|
||||||
const peerId = await PeerId.create(testOpts)
|
const peerId = await PeerId.create(testOpts)
|
||||||
|
// @ts-ignore
|
||||||
peerId.pubKey = peerId._pubKey
|
peerId.pubKey = peerId._pubKey
|
||||||
expect(peerId.isValid()).to.equal(true)
|
expect(peerId.isValid()).to.equal(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('set privKey (invalid)', async () => {
|
it('set privKey (invalid)', async () => {
|
||||||
const peerId = await PeerId.create(testOpts)
|
const peerId = await PeerId.create(testOpts)
|
||||||
|
// @ts-ignore
|
||||||
peerId.privKey = Buffer.from('bufff')
|
peerId.privKey = Buffer.from('bufff')
|
||||||
expect(peerId.isValid()).to.equal(false)
|
expect(peerId.isValid()).to.equal(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('set pubKey (invalid)', async () => {
|
it('set pubKey (invalid)', async () => {
|
||||||
const peerId = await PeerId.create(testOpts)
|
const peerId = await PeerId.create(testOpts)
|
||||||
|
// @ts-ignore
|
||||||
peerId.pubKey = Buffer.from('bufff')
|
peerId.pubKey = Buffer.from('bufff')
|
||||||
expect(peerId.isValid()).to.equal(false)
|
expect(peerId.isValid()).to.equal(false)
|
||||||
})
|
})
|
||||||
|
37
tsconfig.json
Normal file
37
tsconfig.json
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "commonjs",
|
||||||
|
"lib": [
|
||||||
|
"es6"
|
||||||
|
],
|
||||||
|
"target": "ES5",
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"noImplicitThis": true,
|
||||||
|
"strictFunctionTypes": true,
|
||||||
|
"strictNullChecks": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"checkJs": true,
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"peer-id": [
|
||||||
|
"./src",
|
||||||
|
"../src",
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
"node",
|
||||||
|
"mocha",
|
||||||
|
"chai"
|
||||||
|
],
|
||||||
|
"noEmit": true,
|
||||||
|
"forceConsistentCasingInFileNames": true
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./src/index.d.ts",
|
||||||
|
],
|
||||||
|
"include": [
|
||||||
|
"./test/**/*.spec.js"
|
||||||
|
]
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user