From d9d1547e90ac4b3826575bce981e828bed7401fd Mon Sep 17 00:00:00 2001 From: break27 Date: Fri, 17 Apr 2026 10:57:21 +0800 Subject: [PATCH] update: added namespaces in client.js --- pyproject.toml | 2 +- src/common/jsonrpc2/client.js | 54 +++++++++++++++++++++-------------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 43f541f..07037fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "common" description = "Reusable code stubs" -version = "0.1.8" +version = "0.1.9" requires-python = ">=3.13" authors = [ { name="BreakerBear", email="breakerbear@autistic.men" }, diff --git a/src/common/jsonrpc2/client.js b/src/common/jsonrpc2/client.js index 10aadc5..02bc6d3 100644 --- a/src/common/jsonrpc2/client.js +++ b/src/common/jsonrpc2/client.js @@ -12,31 +12,41 @@ CONNECTION.addEventListener('message', (e) => { else promise.resolve(message.result); }); -async function notify(method, ...args) { - let request = { method }; - if (args.length > 0) request.params = args; - let data = JSON.stringify(request); - CONNECTION.send(data); -} +const LogRecord = { + format: (entry) => { + let date = new Date(entry.created).toISOString().slice(0, 19).replace("T", " "); + let line = `[${date}] [${entry.levelname}] [${entry.name}] ${entry.msg}`; + let message = [line, entry.exc_text, entry.stack_info].filter(Boolean).join('\n'); + return message; + }, +}; -async function invoke(method, ...args) { - let id = Math.floor(Math.random() * 1000000000); - let request = { method, id }; - if (args.length > 0) request.params = args; +const RemoteProceduralCall = { + notify: async (method, ...args) => { + let request = { method }; + if (args.length > 0) request.params = args; + let data = JSON.stringify(request); + CONNECTION.send(data); + }, + invoke: async (method, ...args) => { + let id = Math.floor(Math.random() * 1000000000); + let request = { method, id }; + if (args.length > 0) request.params = args; - let data = JSON.stringify(request); - CONNECTION.send(data); + let data = JSON.stringify(request); + CONNECTION.send(data); - let reject = null; - let resolve = null; - let promise = new Promise((a, b) => { resolve = a; reject = b; }); - let item = { resolve, reject, id }; - QUEUE.push(item); + let reject = null; + let resolve = null; + let promise = new Promise((a, b) => { resolve = a; reject = b; }); + let item = { resolve, reject, id }; + QUEUE.push(item); - let result = await promise; - return result; -} + let result = await promise; + return result; + }, +}; -window.notify = notify; -window.invoke = invoke; +window.LogRecord = LogRecord; +window.Rpc2 = RemoteProceduralCall; main(...arguments); // entrypoint to user-defined (async) main stub of the script \ No newline at end of file