diff --git a/core/core.js b/core/core.js index ef21b4254..c9841754e 100644 --- a/core/core.js +++ b/core/core.js @@ -660,6 +660,7 @@ async function getProcessBlob(blobId, key, options) { ); return process.sendPermissions(); }; + ssb.registerImports(imports, process); process.task.setImports(imports); process.task.activate(); let source = await ssb.blobGet(blobId); diff --git a/src/api.js.c b/src/api.js.c new file mode 100644 index 000000000..15395599c --- /dev/null +++ b/src/api.js.c @@ -0,0 +1,19 @@ +#include "api.js.h" + +#include "log.h" + +#include + +static JSValue _tf_api_register_imports(JSContext* context, JSValueConst this_val, int argc, JSValueConst* argv) +{ + return JS_UNDEFINED; +} + +void tf_api_register(JSContext* context) +{ + JSValue global = JS_GetGlobalObject(context); + JSValue ssb = JS_GetPropertyStr(context, global, "ssb"); + JS_SetPropertyStr(context, ssb, "registerImports", JS_NewCFunction(context, _tf_api_register_imports, "registerImports", 2)); + JS_FreeValue(context, ssb); + JS_FreeValue(context, global); +} diff --git a/src/api.js.h b/src/api.js.h new file mode 100644 index 000000000..ec3fe0f89 --- /dev/null +++ b/src/api.js.h @@ -0,0 +1,18 @@ +#pragma once + +/** +** \defgroup api_js JS API +** Functions that are ultimately exposed to apps. +** @{ +*/ + +/** A JS context. */ +typedef struct JSContext JSContext; + +/** +** Register JS API functions. +** @param context The JS context. +*/ +void tf_api_register(JSContext* context); + +/** @} */ diff --git a/src/task.c b/src/task.c index be1cd971b..048050324 100644 --- a/src/task.c +++ b/src/task.c @@ -1,5 +1,6 @@ #include "task.h" +#include "api.js.h" #include "bcrypt.js.h" #include "database.js.h" #include "file.js.h" @@ -1697,6 +1698,7 @@ void tf_task_activate(tf_task_t* task) task->_ssb = tf_ssb_create(&task->_loop, task->_context, task->_db_path, task->_network_key); tf_ssb_set_trace(task->_ssb, task->_trace); tf_ssb_register(context, task->_ssb); + tf_api_register(context); tf_ssb_set_hitch_callback(task->_ssb, _tf_task_record_hitch, task); if (task->_args)