silverbullet/common/space_lua/stdlib/js.ts

34 lines
939 B
TypeScript
Raw Normal View History

2024-10-10 02:35:07 +08:00
import {
2024-10-11 21:34:27 +08:00
jsToLuaValue,
LuaBuiltinFunction,
LuaTable,
luaValueToJS,
2024-10-10 02:35:07 +08:00
} from "$common/space_lua/runtime.ts";
export const jsApi = new LuaTable({
2024-10-11 21:34:27 +08:00
new: new LuaBuiltinFunction(
(constructorFn: any, ...args) => {
return new constructorFn(
...args.map(luaValueToJS),
);
},
),
importModule: new LuaBuiltinFunction((url) => {
return import(url);
}),
/**
* Binds a function to an object, so that the function can be called with the object as `this`. Some JS APIs require this.
*/
bind: new LuaBuiltinFunction((fn: any, obj: any, ...args: any[]) => {
return fn.bind(obj, ...args);
}),
tolua: new LuaBuiltinFunction(jsToLuaValue),
tojs: new LuaBuiltinFunction(luaValueToJS),
log: new LuaBuiltinFunction((...args) => {
console.log(...args);
}),
// assignGlobal: new LuaBuiltinFunction((name: string, value: any) => {
// (globalThis as any)[name] = value;
// }),
2024-10-10 02:35:07 +08:00
});