Skip to content

Commit 8d36ed2

Browse files
authored
🤖 Merge PR DefinitelyTyped#74365 Add types for grenache-nodejs-link, and grenache-nodejs-ws by @ramioooz
1 parent 8a4cdbb commit 8d36ed2

File tree

10 files changed

+282
-0
lines changed

10 files changed

+282
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*
2+
!**/*.d.ts
3+
!**/*.d.cts
4+
!**/*.d.mts
5+
!**/*.d.*.ts
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import Link from "grenache-nodejs-link";
2+
3+
const link = new Link({
4+
grape: "http://127.0.0.1:30001",
5+
});
6+
7+
link.start();
8+
9+
link.put({ hello: "world" }, (err, hash) => {
10+
if (err) throw err;
11+
12+
if (hash) {
13+
link.get(hash, (err, res) => {
14+
if (err) throw err;
15+
res;
16+
});
17+
}
18+
});
19+
20+
link.lookup("test", (err, peers) => {
21+
if (err) throw err;
22+
peers?.forEach(p => p.toUpperCase());
23+
});
24+
25+
link.startAnnouncing("test", 10000, err => {
26+
if (err) throw err;
27+
});
28+
29+
link.stop();
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/// <reference types="node" />
2+
3+
import { EventEmitter } from "events";
4+
5+
interface LinkOptions {
6+
grape: string | string[];
7+
monitorTimeout?: number | undefined;
8+
requestTimeout?: number | undefined;
9+
lruMaxSizeLookup?: number | undefined;
10+
lruMaxAgeLookup?: number | undefined;
11+
}
12+
13+
interface LookupOptions {
14+
retry?: number | undefined;
15+
}
16+
17+
interface AnnounceOptions {
18+
interval?: number | undefined;
19+
retry?: number | undefined;
20+
}
21+
22+
type Callback<T = unknown> = (err: Error | null, data?: T) => void;
23+
24+
declare class Link extends EventEmitter {
25+
constructor(options: LinkOptions);
26+
27+
start(): this;
28+
stop(): this;
29+
30+
put(value: unknown, callback: Callback<string>): void;
31+
get(hash: string, callback: Callback<unknown>): void;
32+
33+
lookup(
34+
name: string,
35+
options: LookupOptions,
36+
callback: Callback<string[]>,
37+
): void;
38+
39+
lookup(
40+
name: string,
41+
callback: Callback<string[]>,
42+
): void;
43+
44+
announce(
45+
name: string,
46+
port: number,
47+
options: AnnounceOptions,
48+
callback?: Callback<void>,
49+
): void;
50+
51+
announce(
52+
name: string,
53+
port: number,
54+
callback?: Callback<void>,
55+
): void;
56+
57+
startAnnouncing(
58+
name: string,
59+
port: number,
60+
options: AnnounceOptions,
61+
callback?: Callback<void>,
62+
): void;
63+
64+
startAnnouncing(
65+
name: string,
66+
port: number,
67+
callback?: Callback<void>,
68+
): void;
69+
70+
stopAnnouncing(name?: string, port?: number): this;
71+
}
72+
73+
export = Link;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"private": true,
3+
"name": "@types/grenache-nodejs-link",
4+
"version": "1.0.9999",
5+
"projects": [
6+
"https://github.com/bitfinexcom/grenache-nodejs-link"
7+
],
8+
"dependencies": {
9+
"@types/node": "*"
10+
},
11+
"devDependencies": {
12+
"@types/grenache-nodejs-link": "workspace:."
13+
},
14+
"owners": [
15+
{
16+
"name": "Rami Mohamed [https://rami.sd]",
17+
"githubUsername": "ramioooz"
18+
}
19+
]
20+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"compilerOptions": {
3+
"module": "node16",
4+
"lib": [
5+
"es6"
6+
],
7+
"noImplicitAny": true,
8+
"noImplicitThis": true,
9+
"strictNullChecks": true,
10+
"strictFunctionTypes": true,
11+
"types": [],
12+
"noEmit": true,
13+
"forceConsistentCasingInFileNames": true
14+
},
15+
"files": [
16+
"index.d.ts",
17+
"grenache-nodejs-link-tests.ts"
18+
]
19+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*
2+
!**/*.d.ts
3+
!**/*.d.cts
4+
!**/*.d.mts
5+
!**/*.d.*.ts
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import Link = require("grenache-nodejs-link");
2+
import { PeerRPCClient, PeerRPCServer } from "grenache-nodejs-ws";
3+
4+
const link = new Link({
5+
grape: "http://127.0.0.1:30001",
6+
});
7+
8+
link.start();
9+
10+
const server = new PeerRPCServer(link);
11+
server.init();
12+
13+
server.listen("test_service", (payload, cb) => {
14+
payload;
15+
cb(null, { ok: true });
16+
});
17+
18+
const client = new PeerRPCClient(link);
19+
client.init();
20+
21+
client.request(
22+
"test_service",
23+
{ ping: true },
24+
{},
25+
(err, data) => {
26+
if (err) throw err;
27+
data;
28+
},
29+
);
30+
31+
link.stop();
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/// <reference types="node" />
2+
3+
import { EventEmitter } from "events";
4+
import Link = require("grenache-nodejs-link");
5+
6+
export interface RPCOptions {
7+
timeout?: number | undefined;
8+
retry?: number | undefined;
9+
}
10+
11+
export type Callback<T = unknown> = (err: Error | null, data?: T) => void;
12+
13+
export type RequestHandler<TRequest = unknown, TResponse = unknown> = (
14+
payload: TRequest,
15+
callback: Callback<TResponse>,
16+
) => void;
17+
18+
export class PeerRPCClient extends EventEmitter {
19+
constructor(link: Link, options?: RPCOptions);
20+
21+
init(): void;
22+
23+
request<TResponse = unknown>(
24+
service: string,
25+
payload: unknown,
26+
options: RPCOptions,
27+
callback: Callback<TResponse>,
28+
): void;
29+
}
30+
31+
export class PeerRPCServer extends EventEmitter {
32+
constructor(link: Link, options?: RPCOptions);
33+
34+
init(): void;
35+
36+
listen<TRequest = unknown, TResponse = unknown>(
37+
service: string,
38+
handler: RequestHandler<TRequest, TResponse>,
39+
): void;
40+
}
41+
42+
export class PeerSub extends EventEmitter {
43+
constructor(link: Link, options?: RPCOptions);
44+
init(): void;
45+
}
46+
47+
export class PeerPub extends EventEmitter {
48+
constructor(link: Link, options?: RPCOptions);
49+
init(): void;
50+
}
51+
52+
export class TransportRPCServer extends EventEmitter {
53+
constructor(link: Link, options?: RPCOptions);
54+
init(): void;
55+
}
56+
57+
export class TransportRPCClient extends EventEmitter {
58+
constructor(link: Link, options?: RPCOptions);
59+
init(): void;
60+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"private": true,
3+
"name": "@types/grenache-nodejs-ws",
4+
"version": "1.0.9999",
5+
"projects": [
6+
"https://github.com/bitfinexcom/grenache-nodejs-ws"
7+
],
8+
"dependencies": {
9+
"@types/node": "*",
10+
"@types/grenache-nodejs-link": "*"
11+
},
12+
"devDependencies": {
13+
"@types/grenache-nodejs-ws": "workspace:."
14+
},
15+
"owners": [
16+
{
17+
"name": "Rami Mohamed [https://rami.sd]",
18+
"githubUsername": "ramioooz"
19+
}
20+
]
21+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"compilerOptions": {
3+
"module": "node16",
4+
"lib": [
5+
"es6"
6+
],
7+
"noImplicitAny": true,
8+
"noImplicitThis": true,
9+
"strictNullChecks": true,
10+
"strictFunctionTypes": true,
11+
"types": [],
12+
"noEmit": true,
13+
"forceConsistentCasingInFileNames": true
14+
},
15+
"files": [
16+
"index.d.ts",
17+
"grenache-nodejs-ws-tests.ts"
18+
]
19+
}

0 commit comments

Comments
 (0)