-- This file is part of the Lua@Client project -- Copyright (c) 2015 Etiene Dalcol -- License: MIT local M = { js_served = false, modules_served = {} } local common = require "latclient.common" local loadstring = loadstring or load function M.get_header(s) if M.js_served == false then M.js_served = true local header = [[ ]] header = string.gsub(header, "{url}", M.js_url) s = header..s end return s end function M.get_client_js(s) local modules = M.get_modules(s) s = string.dump(assert(loadstring(s))) s = common.js_string_escape(s) s = '' return M.get_header(s) end function M.get_modules(s) local modules = "" for name in string.gfind(s, "require%s*%(?[\"'](.-)[\"']%)?") do if not M.modules_served[name] then local module_file = common.search_module_path(name) if module_file then local module_bytecode = common.js_string_escape(string.dump(assert(loadfile(module_file)))) modules = modules .. 'vm.preload("'..name..'",'..module_bytecode..'); ' M.modules_served[name] = true end end end return modules end return M