The js namespace provides JavaScript interoperability, including dynamic module imports, Lua/JavaScript value conversion, and asynchronous iterable support.
js.importFromSpace resolves a space-relative file path to the current space's same-origin /.fs URL. This lets a library import a JavaScript module shipped as a Frontmatter#files asset without constructing a deployment-specific base URL. A leading slash is optional, and a sole default export is unwrapped like js.import.
js.eachIterable(iterable)
Creates a Lua iterator over a JavaScript async iterable.
Parameters:
iterable (userdata) — JavaScript async iterable.Returns:
function — Iterator yielding successive JavaScript values.Example:
for value in js.eachIterable(someJsAsyncIterable) do
print(value)
end
js.import(url)
Dynamically imports a JavaScript module from a URL.
Parameters:
url (string) — Module URL.Returns:
userdata — Imported module, with a sole default export unwrapped.Example:
local lib = js.import("https://esm.sh/[email protected]")
js.importFromSpace(path)
Imports a JavaScript module from a file in the current space.
Parameters:
path (string) — Space-relative module path, with an optional leading slash.Returns:
userdata — Imported module, with a sole default export unwrapped.Example:
local acme = js.importFromSpace("Library/acme/acme.js")
js.log(...)
Logs values to the JavaScript console.
Parameters:
... — Values to log.Example:
js.log("User data:", {name = "Ada"})
js.new(constructor, ...): userdata
Creates an instance of a JavaScript class.
Parameters:
constructor (userdata) — JavaScript constructor function.... — Constructor arguments converted to JavaScript values.Returns:
userdata — New JavaScript instance.Example:
local value = js.new(js.window.Date, "2024-03-14")
js.stringify(value)
Serializes a value as JSON using JavaScript semantics.
Parameters:
value — Value to serialize.Returns:
string — JSON representation.Example:
print(js.stringify({1, 2, 3})) -- [1,2,3]
js.tojs(value)
Converts a Lua value to its JavaScript representation.
Parameters:
value — Lua value to convert.Returns:
Example:
local jsArray = js.tojs({1, 2, 3})
js.tolua(value)
Converts a JavaScript value to its Lua representation.
Parameters:
value — JavaScript value to convert.Returns:
Example:
local luaTable = js.tolua(jsArray)