docs: Expose the rest of the core js to doxygen.
All checks were successful
Build Tilde Friends / Build-All (push) Successful in 31m35s

This commit is contained in:
2025-07-27 21:48:18 -04:00
parent e4729b22f2
commit 705e8b553f
4 changed files with 248 additions and 227 deletions

View File

@@ -1,6 +1,17 @@
/**
* \file
* \defgroup tfrpc Tilde Friends RPC.
* Tilde Friends RPC.
* @{
*/
/** Whether this module is being run in a web browser. */
const k_is_browser = get_is_browser();
/** Registered methods. */
let g_api = {};
/** The next method identifier. */
let g_next_id = 1;
/** Identifiers of pending calls. */
let g_calls = {};
/**
@@ -15,16 +26,30 @@ function get_is_browser() {
}
}
/** \cond */
if (k_is_browser) {
print = console.log;
}
if (k_is_browser) {
window.addEventListener('message', function (event) {
call_rpc(event.data);
});
} else {
core.register('message', function (message) {
call_rpc(message?.message);
});
}
export let rpc = new Proxy({}, {get: make_rpc});
/** \endcond */
/**
* TODOC
* @param {*} target
* @param {*} prop
* @param {*} receiver
* @returns
* Make a function to invoke a remote procedure.
* @param target The target.
* @param prop The name of the function.
* @param receiver The receiver.
* @return A function.
*/
function make_rpc(target, prop, receiver) {
return function () {
@@ -55,8 +80,8 @@ function make_rpc(target, prop, receiver) {
}
/**
* TODOC
* @param {*} response
* Send a response.
* @param response The response.
*/
function send(response) {
if (k_is_browser) {
@@ -67,8 +92,8 @@ function send(response) {
}
/**
* TODOC
* @param {*} message
* Invoke a remote procedure.
* @param message An object describing the call.
*/
function call_rpc(message) {
if (message && message.message === 'tfrpc') {
@@ -112,22 +137,12 @@ function call_rpc(message) {
}
}
if (k_is_browser) {
window.addEventListener('message', function (event) {
call_rpc(event.data);
});
} else {
core.register('message', function (message) {
call_rpc(message?.message);
});
}
export let rpc = new Proxy({}, {get: make_rpc});
/**
* TODOC
* @param {*} method
* Register a function that to be called remotely.
* @param method The method.
*/
export function register(method) {
g_api[method.name] = method;
}
/** @} */