@lvce-editor/json-rpc 0.1.1 → 0.2.1
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/index.d.ts +10 -0
- package/dist/index.js +139 -8
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -14,3 +14,13 @@ export const invokeAndTransfer: (
|
|
|
14
14
|
) => Promise<any>
|
|
15
15
|
|
|
16
16
|
export const resolve: (id: number, message: any) => void
|
|
17
|
+
|
|
18
|
+
export const handleJsonRpcMessage: (
|
|
19
|
+
ipc: any,
|
|
20
|
+
message: any,
|
|
21
|
+
execute: (method: string, ...params: any[]) => Promise<any>,
|
|
22
|
+
resolve: any,
|
|
23
|
+
preparePrettyError: (error: any) => any,
|
|
24
|
+
logError: (error: any) => void,
|
|
25
|
+
requiresSocket: (method: string) => void,
|
|
26
|
+
) => Promise<void>
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const Two = '2.0';
|
|
2
2
|
|
|
3
|
-
const create$
|
|
3
|
+
const create$4 = (method, params) => {
|
|
4
4
|
return {
|
|
5
5
|
jsonrpc: Two,
|
|
6
6
|
method,
|
|
@@ -49,7 +49,7 @@ const state$1 = {
|
|
|
49
49
|
id: 0,
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
const create$
|
|
52
|
+
const create$3 = () => {
|
|
53
53
|
return ++state$1.id
|
|
54
54
|
};
|
|
55
55
|
|
|
@@ -82,7 +82,7 @@ const state = {
|
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
const registerPromise = () => {
|
|
85
|
-
const id = create$
|
|
85
|
+
const id = create$3();
|
|
86
86
|
const { resolve, promise } = withResolvers();
|
|
87
87
|
state.callbacks[id] = resolve;
|
|
88
88
|
return { id, promise }
|
|
@@ -99,7 +99,7 @@ const resolve = (id, args) => {
|
|
|
99
99
|
delete state.callbacks[id];
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
const create = (method, params) => {
|
|
102
|
+
const create$2 = (method, params) => {
|
|
103
103
|
const { id, promise } = registerPromise();
|
|
104
104
|
const message = {
|
|
105
105
|
jsonrpc: Two,
|
|
@@ -169,6 +169,7 @@ const joinLines = (lines) => {
|
|
|
169
169
|
};
|
|
170
170
|
|
|
171
171
|
const MethodNotFound = -32601;
|
|
172
|
+
const Custom = -32001;
|
|
172
173
|
|
|
173
174
|
const splitLines = (lines) => {
|
|
174
175
|
return lines.split(NewLine)
|
|
@@ -262,13 +263,143 @@ const unwrapJsonRpcResult = (responseMessage) => {
|
|
|
262
263
|
throw new JsonRpcError('unexpected response message')
|
|
263
264
|
};
|
|
264
265
|
|
|
266
|
+
const create$1 = (message, error) => {
|
|
267
|
+
return {
|
|
268
|
+
jsonrpc: Two,
|
|
269
|
+
id: message.id,
|
|
270
|
+
error,
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
const E_COMMAND_NOT_FOUND = 'E_COMMAND_NOT_FOUND';
|
|
275
|
+
|
|
276
|
+
const getErrorProperty = (error, prettyError) => {
|
|
277
|
+
if (error && error.code === E_COMMAND_NOT_FOUND) {
|
|
278
|
+
return {
|
|
279
|
+
code: MethodNotFound,
|
|
280
|
+
message: error.message,
|
|
281
|
+
data: error.stack,
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return {
|
|
285
|
+
code: Custom,
|
|
286
|
+
message: prettyError.message,
|
|
287
|
+
data: {
|
|
288
|
+
stack: prettyError.stack,
|
|
289
|
+
codeFrame: prettyError.codeFrame,
|
|
290
|
+
type: prettyError.type,
|
|
291
|
+
code: prettyError.code,
|
|
292
|
+
},
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
const getErrorResponse = (
|
|
297
|
+
message,
|
|
298
|
+
error,
|
|
299
|
+
ipc,
|
|
300
|
+
preparePrettyError,
|
|
301
|
+
logError,
|
|
302
|
+
) => {
|
|
303
|
+
const prettyError = preparePrettyError(error);
|
|
304
|
+
logError(error, prettyError);
|
|
305
|
+
const errorProperty = getErrorProperty(error, prettyError);
|
|
306
|
+
return create$1(message, errorProperty)
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
const create = (message, result) => {
|
|
310
|
+
return {
|
|
311
|
+
jsonrpc: Two,
|
|
312
|
+
id: message.id,
|
|
313
|
+
result: result ?? null,
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
const getSuccessResponse = (message, result) => {
|
|
318
|
+
const resultProperty = result ?? null;
|
|
319
|
+
return create(message, resultProperty)
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
const getResponse = async (
|
|
323
|
+
message,
|
|
324
|
+
ipc,
|
|
325
|
+
execute,
|
|
326
|
+
preparePrettyError,
|
|
327
|
+
logError,
|
|
328
|
+
requiresSocket,
|
|
329
|
+
) => {
|
|
330
|
+
try {
|
|
331
|
+
const result = requiresSocket(message.method)
|
|
332
|
+
? await execute(message.method, ipc, ...message.params)
|
|
333
|
+
: await execute(message.method, ...message.params);
|
|
334
|
+
return getSuccessResponse(message, result)
|
|
335
|
+
} catch (error) {
|
|
336
|
+
return getErrorResponse(
|
|
337
|
+
message,
|
|
338
|
+
error,
|
|
339
|
+
ipc,
|
|
340
|
+
preparePrettyError,
|
|
341
|
+
logError,
|
|
342
|
+
)
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
const handleJsonRpcMessage = async (
|
|
347
|
+
ipc,
|
|
348
|
+
message,
|
|
349
|
+
execute,
|
|
350
|
+
resolve,
|
|
351
|
+
preparePrettyError,
|
|
352
|
+
logError,
|
|
353
|
+
requiresSocket,
|
|
354
|
+
) => {
|
|
355
|
+
if ('id' in message) {
|
|
356
|
+
if ('method' in message) {
|
|
357
|
+
const response = await getResponse(
|
|
358
|
+
message,
|
|
359
|
+
ipc,
|
|
360
|
+
execute,
|
|
361
|
+
preparePrettyError,
|
|
362
|
+
logError,
|
|
363
|
+
requiresSocket,
|
|
364
|
+
);
|
|
365
|
+
try {
|
|
366
|
+
ipc.send(response);
|
|
367
|
+
} catch (error) {
|
|
368
|
+
const errorResponse = getErrorResponse(
|
|
369
|
+
message,
|
|
370
|
+
error,
|
|
371
|
+
ipc,
|
|
372
|
+
preparePrettyError,
|
|
373
|
+
logError,
|
|
374
|
+
);
|
|
375
|
+
ipc.send(errorResponse);
|
|
376
|
+
}
|
|
377
|
+
return
|
|
378
|
+
}
|
|
379
|
+
resolve(message.id, message);
|
|
380
|
+
return
|
|
381
|
+
}
|
|
382
|
+
if ('method' in message) {
|
|
383
|
+
await getResponse(
|
|
384
|
+
message,
|
|
385
|
+
ipc,
|
|
386
|
+
execute,
|
|
387
|
+
preparePrettyError,
|
|
388
|
+
logError,
|
|
389
|
+
requiresSocket,
|
|
390
|
+
);
|
|
391
|
+
return
|
|
392
|
+
}
|
|
393
|
+
throw new JsonRpcError('unexpected message')
|
|
394
|
+
};
|
|
395
|
+
|
|
265
396
|
const send = (transport, method, ...params) => {
|
|
266
|
-
const message = create$
|
|
397
|
+
const message = create$4(method, params);
|
|
267
398
|
transport.send(message);
|
|
268
399
|
};
|
|
269
400
|
|
|
270
401
|
const invoke = async (ipc, method, ...params) => {
|
|
271
|
-
const { message, promise } = create(method, params);
|
|
402
|
+
const { message, promise } = create$2(method, params);
|
|
272
403
|
ipc.send(message);
|
|
273
404
|
const responseMessage = await promise;
|
|
274
405
|
const result = unwrapJsonRpcResult(responseMessage);
|
|
@@ -276,11 +407,11 @@ const invoke = async (ipc, method, ...params) => {
|
|
|
276
407
|
};
|
|
277
408
|
|
|
278
409
|
const invokeAndTransfer = async (ipc, handle, method, ...params) => {
|
|
279
|
-
const { message, promise } = create(method, params);
|
|
410
|
+
const { message, promise } = create$2(method, params);
|
|
280
411
|
ipc.sendAndTransfer(message, handle);
|
|
281
412
|
const responseMessage = await promise;
|
|
282
413
|
const result = unwrapJsonRpcResult(responseMessage);
|
|
283
414
|
return result
|
|
284
415
|
};
|
|
285
416
|
|
|
286
|
-
export { invoke, invokeAndTransfer, resolve, send };
|
|
417
|
+
export { handleJsonRpcMessage, invoke, invokeAndTransfer, resolve, send };
|