summaryrefslogtreecommitdiff
path: root/src/loadlib.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/loadlib.js')
-rw-r--r--src/loadlib.js18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/loadlib.js b/src/loadlib.js
index e448381..9400bb0 100644
--- a/src/loadlib.js
+++ b/src/loadlib.js
@@ -34,7 +34,7 @@ const AUXMARK = [1];
** Returns the library; in case of error, returns NULL plus an
** error string in the stack.
*/
-const lsys_load = function(L, path) {
+let lsys_load = function(L, path) {
try {
path = lua.to_jsstring(path);
@@ -65,6 +65,22 @@ const lsys_sym = function(L, lib, sym) {
}
};
+if (WEB) {
+ lsys_load = function(L, path) {
+ let xhr = new XMLHttpRequest();
+ xhr.open("GET", lua.to_jsstring(path), false);
+ xhr.send();
+ /* TODO: subresource integrity check? */
+
+ if (xhr.status === 200) {
+ return eval(xhr.response);
+ } else {
+ lua.lua_pushstring(L, lua.to_luastring(`${xhr.status}: ${xhr.statusText}`));
+ return null;
+ }
+ };
+}
+
/*
** return registry.LUA_NOENV as a boolean
*/