mcbe-ipc 3.0.1 → 3.0.3
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/direct.ipc.d.ts +11 -11
- package/dist/direct.ipc.js +9 -9
- package/dist/ipc.d.ts +9 -7
- package/dist/ipc.js +12 -0
- package/dist/proto.d.ts +2 -0
- package/dist/proto.js +12 -0
- package/package.json +1 -1
package/dist/direct.ipc.d.ts
CHANGED
|
@@ -35,11 +35,11 @@ export declare namespace DirectIPC {
|
|
|
35
35
|
get to(): string;
|
|
36
36
|
constructor(from: string, to: string, encryption: string | false);
|
|
37
37
|
terminate(notify?: boolean): void;
|
|
38
|
-
send<T>(channel: string, serializer: PROTO.Serializable<T>, value: T): void;
|
|
39
|
-
invoke<T, R>(channel: string, serializer: PROTO.Serializable<T>, value: T, deserializer: PROTO.Serializable<R>): Promise<R>;
|
|
40
|
-
on<T>(channel: string, deserializer: PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
41
|
-
once<T>(channel: string, deserializer: PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
42
|
-
handle<T, R>(channel: string, deserializer: PROTO.Serializable<T>, serializer: PROTO.Serializable<R>, listener: (value: T) => R): () => void;
|
|
38
|
+
send<S extends PROTO.Serializable<T>, T>(channel: string, serializer: S & PROTO.Serializable<T>, value: T): void;
|
|
39
|
+
invoke<TS extends PROTO.Serializable<T>, T, RS extends PROTO.Serializable<R>, R>(channel: string, serializer: TS & PROTO.Serializable<T>, value: T, deserializer: RS & PROTO.Serializable<R>): Promise<R>;
|
|
40
|
+
on<S extends PROTO.Serializable<T>, T>(channel: string, deserializer: S & PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
41
|
+
once<S extends PROTO.Serializable<T>, T>(channel: string, deserializer: S & PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
42
|
+
handle<TS extends PROTO.Serializable<T>, T, RS extends PROTO.Serializable<R>, R>(channel: string, deserializer: TS & PROTO.Serializable<T>, serializer: RS & PROTO.Serializable<R>, listener: (value: T) => R): () => void;
|
|
43
43
|
}
|
|
44
44
|
class ConnectionManager {
|
|
45
45
|
private readonly _id;
|
|
@@ -50,12 +50,12 @@ export declare namespace DirectIPC {
|
|
|
50
50
|
private MAYBE_DECRYPT;
|
|
51
51
|
get id(): string;
|
|
52
52
|
constructor(id: string, force_encryption?: boolean);
|
|
53
|
-
connect(to: string, encrypted?: boolean, timeout?: number): Promise<Connection>;
|
|
54
|
-
send<T>(channel: string, serializer: PROTO.Serializable<T>, value: T): void;
|
|
55
|
-
invoke<T, R>(channel: string, serializer: PROTO.Serializable<T>, value: T, deserializer: PROTO.Serializable<R>): Promise<R>[];
|
|
56
|
-
on<T>(channel: string, deserializer: PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
57
|
-
once<T>(channel: string, deserializer: PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
58
|
-
handle<T, R>(channel: string, deserializer: PROTO.Serializable<T>, serializer: PROTO.Serializable<R>, listener: (value: T) => R): () => void;
|
|
53
|
+
connect(to: string, encrypted?: boolean, timeout?: number, mod?: number, prime?: number): Promise<Connection>;
|
|
54
|
+
send<S extends PROTO.Serializable<T>, T>(channel: string, serializer: S & PROTO.Serializable<T>, value: T): void;
|
|
55
|
+
invoke<TS extends PROTO.Serializable<T>, T, RS extends PROTO.Serializable<R>, R>(channel: string, serializer: TS & PROTO.Serializable<T>, value: T, deserializer: RS & PROTO.Serializable<R>): Promise<R>[];
|
|
56
|
+
on<S extends PROTO.Serializable<T>, T>(channel: string, deserializer: S & PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
57
|
+
once<S extends PROTO.Serializable<T>, T>(channel: string, deserializer: S & PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
58
|
+
handle<TS extends PROTO.Serializable<T>, T, RS extends PROTO.Serializable<R>, R>(channel: string, deserializer: TS & PROTO.Serializable<T>, serializer: RS & PROTO.Serializable<R>, listener: (value: T) => R): () => void;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
export default DirectIPC;
|
package/dist/direct.ipc.js
CHANGED
|
@@ -42,15 +42,15 @@ var CRYPTO;
|
|
|
42
42
|
}
|
|
43
43
|
return result;
|
|
44
44
|
}
|
|
45
|
-
function make_secret(mod
|
|
45
|
+
function make_secret(mod) {
|
|
46
46
|
return Math.floor(Math.random() * (mod - 1)) + 1;
|
|
47
47
|
}
|
|
48
48
|
CRYPTO.make_secret = make_secret;
|
|
49
|
-
function* make_public(secret, mod
|
|
49
|
+
function* make_public(secret, mod, prime) {
|
|
50
50
|
return to_HEX(yield* mod_exp(mod, secret, prime));
|
|
51
51
|
}
|
|
52
52
|
CRYPTO.make_public = make_public;
|
|
53
|
-
function* make_shared(secret, other, prime
|
|
53
|
+
function* make_shared(secret, other, prime) {
|
|
54
54
|
return to_HEX(yield* mod_exp(to_NUM(other), secret, prime));
|
|
55
55
|
}
|
|
56
56
|
CRYPTO.make_shared = make_shared;
|
|
@@ -235,7 +235,7 @@ export var DirectIPC;
|
|
|
235
235
|
$._enc_map.delete(value);
|
|
236
236
|
});
|
|
237
237
|
}
|
|
238
|
-
connect(to, encrypted = false, timeout = 20) {
|
|
238
|
+
connect(to, encrypted = false, timeout = 20, mod = CRYPTO.MOD, prime = CRYPTO.PRIME) {
|
|
239
239
|
const $ = this;
|
|
240
240
|
return new Promise((resolve, reject) => {
|
|
241
241
|
const con = this._con_map.get(to);
|
|
@@ -244,15 +244,15 @@ export var DirectIPC;
|
|
|
244
244
|
resolve(con);
|
|
245
245
|
}
|
|
246
246
|
else {
|
|
247
|
-
const secret = CRYPTO.make_secret();
|
|
247
|
+
const secret = CRYPTO.make_secret(mod);
|
|
248
248
|
system.runJob((function* () {
|
|
249
|
-
const public_key = yield* CRYPTO.make_public(secret);
|
|
249
|
+
const public_key = yield* CRYPTO.make_public(secret, mod, prime);
|
|
250
250
|
yield* NET.emit(`ipc:${to}:handshake:synchronize`, HandshakeSynchronizeSerializer, {
|
|
251
251
|
from: $._id,
|
|
252
252
|
encryption_enabled: encrypted,
|
|
253
253
|
encryption_public_key: public_key,
|
|
254
|
-
encryption_prime:
|
|
255
|
-
encryption_modulus:
|
|
254
|
+
encryption_prime: prime,
|
|
255
|
+
encryption_modulus: mod
|
|
256
256
|
});
|
|
257
257
|
})());
|
|
258
258
|
function clear() {
|
|
@@ -266,7 +266,7 @@ export var DirectIPC;
|
|
|
266
266
|
const terminate = NET.listen(`ipc:${this._id}:handshake:acknowledge`, HandshakeAcknowledgeSerializer, function* (data) {
|
|
267
267
|
if (data.from === to) {
|
|
268
268
|
const enc = data.encryption_enabled || encrypted
|
|
269
|
-
? yield* CRYPTO.make_shared(secret, data.encryption_public_key)
|
|
269
|
+
? yield* CRYPTO.make_shared(secret, data.encryption_public_key, prime)
|
|
270
270
|
: false;
|
|
271
271
|
const new_con = new Connection($._id, to, enc);
|
|
272
272
|
$._con_map.set(to, new_con);
|
package/dist/ipc.d.ts
CHANGED
|
@@ -47,6 +47,8 @@ export declare namespace PROTO {
|
|
|
47
47
|
function deserialize(str: string): Generator<void, PROTO.ByteQueue, void>;
|
|
48
48
|
}
|
|
49
49
|
const Void: PROTO.Serializable<void>;
|
|
50
|
+
const Null: PROTO.Serializable<null>;
|
|
51
|
+
const Undefined: PROTO.Serializable<undefined>;
|
|
50
52
|
const Int8: PROTO.Serializable<number>;
|
|
51
53
|
const Int16: PROTO.Serializable<number>;
|
|
52
54
|
const Int32: PROTO.Serializable<number>;
|
|
@@ -83,19 +85,19 @@ export declare namespace PROTO {
|
|
|
83
85
|
export declare namespace NET {
|
|
84
86
|
function serialize(byte_queue: PROTO.ByteQueue, max_size?: number): Generator<void, string[], void>;
|
|
85
87
|
function deserialize(strings: string[]): Generator<void, PROTO.ByteQueue, void>;
|
|
86
|
-
function emit<T>(endpoint: string, serializer: PROTO.Serializable<T>, value: T): Generator<void, void, void>;
|
|
87
|
-
function listen<T
|
|
88
|
+
function emit<S extends PROTO.Serializable<T>, T>(endpoint: string, serializer: S & PROTO.Serializable<T>, value: T): Generator<void, void, void>;
|
|
89
|
+
function listen<T, S extends PROTO.Serializable<T>>(endpoint: string, serializer: S & PROTO.Serializable<T>, callback: (value: T) => Generator<void, void, void>): () => void;
|
|
88
90
|
}
|
|
89
91
|
export declare namespace IPC {
|
|
90
92
|
/** Sends a message with `args` to `channel` */
|
|
91
|
-
function send<T>(channel: string, serializer: PROTO.Serializable<T>, value: T): void;
|
|
93
|
+
function send<S extends PROTO.Serializable<T>, T>(channel: string, serializer: S & PROTO.Serializable<T>, value: T): void;
|
|
92
94
|
/** Sends an `invoke` message through IPC, and expects a result asynchronously. */
|
|
93
|
-
function invoke<T, R>(channel: string, serializer: PROTO.Serializable<T>, value: T, deserializer: PROTO.Serializable<R>): Promise<R>;
|
|
95
|
+
function invoke<TS extends PROTO.Serializable<T>, T, RS extends PROTO.Serializable<R>, R>(channel: string, serializer: TS & PROTO.Serializable<T>, value: T, deserializer: RS & PROTO.Serializable<R>): Promise<R>;
|
|
94
96
|
/** Listens to `channel`. When a new message arrives, `listener` will be called with `listener(args)`. */
|
|
95
|
-
function on<T>(channel: string, deserializer: PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
97
|
+
function on<S extends PROTO.Serializable<T>, T>(channel: string, deserializer: S & PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
96
98
|
/** Listens to `channel` once. When a new message arrives, `listener` will be called with `listener(args)`, and then removed. */
|
|
97
|
-
function once<T>(channel: string, deserializer: PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
99
|
+
function once<S extends PROTO.Serializable<T>, T>(channel: string, deserializer: S & PROTO.Serializable<T>, listener: (value: T) => void): () => void;
|
|
98
100
|
/** Adds a handler for an `invoke` IPC. This handler will be called whenever `invoke(channel, ...args)` is called */
|
|
99
|
-
function handle<T, R>(channel: string, deserializer: PROTO.Serializable<T>, serializer: PROTO.Serializable<R>, listener: (value: T) => R): () => void;
|
|
101
|
+
function handle<TS extends PROTO.Serializable<T>, T, RS extends PROTO.Serializable<R>, R>(channel: string, deserializer: TS & PROTO.Serializable<T>, serializer: RS & PROTO.Serializable<R>, listener: (value: T) => R): () => void;
|
|
100
102
|
}
|
|
101
103
|
export default IPC;
|
package/dist/ipc.js
CHANGED
|
@@ -111,6 +111,18 @@ export var PROTO;
|
|
|
111
111
|
*serialize() { },
|
|
112
112
|
*deserialize() { }
|
|
113
113
|
};
|
|
114
|
+
PROTO.Null = {
|
|
115
|
+
*serialize() { },
|
|
116
|
+
*deserialize() {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
PROTO.Undefined = {
|
|
121
|
+
*serialize() { },
|
|
122
|
+
*deserialize() {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
114
126
|
PROTO.Int8 = {
|
|
115
127
|
*serialize(value, stream) {
|
|
116
128
|
const length = 1;
|
package/dist/proto.d.ts
CHANGED
|
@@ -47,6 +47,8 @@ export declare namespace PROTO {
|
|
|
47
47
|
function deserialize(str: string): Generator<void, PROTO.ByteQueue, void>;
|
|
48
48
|
}
|
|
49
49
|
const Void: PROTO.Serializable<void>;
|
|
50
|
+
const Null: PROTO.Serializable<null>;
|
|
51
|
+
const Undefined: PROTO.Serializable<undefined>;
|
|
50
52
|
const Int8: PROTO.Serializable<number>;
|
|
51
53
|
const Int16: PROTO.Serializable<number>;
|
|
52
54
|
const Int32: PROTO.Serializable<number>;
|
package/dist/proto.js
CHANGED
|
@@ -110,6 +110,18 @@ export var PROTO;
|
|
|
110
110
|
*serialize() { },
|
|
111
111
|
*deserialize() { }
|
|
112
112
|
};
|
|
113
|
+
PROTO.Null = {
|
|
114
|
+
*serialize() { },
|
|
115
|
+
*deserialize() {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
PROTO.Undefined = {
|
|
120
|
+
*serialize() { },
|
|
121
|
+
*deserialize() {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
113
125
|
PROTO.Int8 = {
|
|
114
126
|
*serialize(value, stream) {
|
|
115
127
|
const length = 1;
|