Release v0.9.0-rc.1
This commit is contained in:
parent
b06fb94055
commit
5a142bef6c
@ -1,417 +0,0 @@
|
||||
/*
|
||||
cjs.js begin, see <https://github.com/callstackexceed/cjs.js>
|
||||
|
||||
Copyright 2021 callstackexceed
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
(function () {
|
||||
if (typeof require != "undefined") {
|
||||
log("require already exist");
|
||||
}
|
||||
|
||||
let coreModules = new Map([]);
|
||||
|
||||
let basePath = "plugins/";
|
||||
|
||||
let utilPath = {
|
||||
normalize(path) {
|
||||
let dirs = path.split("/");
|
||||
if (dirs[dirs.length - 1] === "") {
|
||||
dirs.pop();
|
||||
}
|
||||
let newDirs = dirs.reduce((newDirs, dir) => {
|
||||
switch (dir) {
|
||||
case ".":
|
||||
/* no-op */
|
||||
break;
|
||||
case "..":
|
||||
if (
|
||||
newDirs.length === 0 ||
|
||||
newDirs[newDirs.length - 1] == ".."
|
||||
) {
|
||||
newDirs.push("..");
|
||||
} else {
|
||||
newDirs.pop();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
newDirs.push(dir);
|
||||
break;
|
||||
}
|
||||
return newDirs;
|
||||
}, []);
|
||||
return newDirs.join("/");
|
||||
},
|
||||
join(...paths) {
|
||||
let newPath = paths
|
||||
.map((path) => {
|
||||
return utilPath.normalize(path);
|
||||
})
|
||||
.join("/");
|
||||
return utilPath.normalize(newPath);
|
||||
},
|
||||
dirname(path) {
|
||||
return path.replace(/\/[^\/]+$/, "");
|
||||
},
|
||||
split(path) {
|
||||
return path.split("/");
|
||||
},
|
||||
};
|
||||
|
||||
let currentModule = createModule("", null);
|
||||
|
||||
currentModule.path = basePath;
|
||||
|
||||
/*
|
||||
** See https://nodejs.org/api/modules.html#modules_all_together
|
||||
*/
|
||||
|
||||
function resolveID(id) {
|
||||
let currentPath = (currentModule && currentModule.path) || basePath;
|
||||
let requestPaths = [];
|
||||
let result;
|
||||
if (coreModules.has(id)) {
|
||||
return coreModules.get(id);
|
||||
}
|
||||
if (id.startsWith("/")) {
|
||||
result = loadAsFile(id);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = loadAsDirectory(id);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
throw new Error(`${id} not found`);
|
||||
}
|
||||
if (id.startsWith("./") || id.startsWith("../")) {
|
||||
result = loadAsFile(utilPath.join(currentPath, id));
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = loadAsDirectory(utilPath.join(currentPath, id));
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
throw new Error(`${utilPath.join(currentPath, id)} not found`);
|
||||
}
|
||||
if (id.startsWith("#")) {
|
||||
result = loadPackageImports(id, currentPath);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
result = loadPackageSelf(id, currentPath);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = loadNodeModules(id, currentPath);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
throw new Error(
|
||||
`${id} not found, required by ${currentModule && currentModule.id}`
|
||||
);
|
||||
|
||||
function tryFile(path) {
|
||||
if (path.startsWith("../")) {
|
||||
throw new Error("cannot require file out of root dir");
|
||||
}
|
||||
path = path.replace(/^\//, "");
|
||||
let cjsSelf = "plugins/cjs.js";
|
||||
if (path === cjsSelf) {
|
||||
throw new Error("cjs.js is trying to load itself");
|
||||
}
|
||||
requestPaths.push(path);
|
||||
let content = file.readFrom(path);
|
||||
if (content == undefined) {
|
||||
return undefined;
|
||||
}
|
||||
if (path.endsWith(".mjs")) {
|
||||
throw new Error(`ERROR: cannot require a ESM file ${path}`);
|
||||
}
|
||||
if (path.endsWith(".json")) {
|
||||
throw new Error(`ERROR: cannot require a JSON file ${path}`);
|
||||
}
|
||||
return {
|
||||
path,
|
||||
content,
|
||||
requestPaths,
|
||||
};
|
||||
}
|
||||
|
||||
function loadAsFile(id) {
|
||||
let result;
|
||||
result = tryFile(id);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = tryFile(`${id}.js`);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = tryFile(`${id}.cjs`);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = tryFile(`${id}.json`);
|
||||
if (result != undefined) {
|
||||
throw new Error(`cannot require a JSON file ${id}.mjs`);
|
||||
}
|
||||
result = tryFile(`${id}.mjs`);
|
||||
if (result != undefined) {
|
||||
throw new Error(`cannot require a ESM file ${id}.mjs`);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function loadIndex(id) {
|
||||
let result;
|
||||
result = tryFile(utilPath.join(id, "index.js"));
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = tryFile(utilPath.join(id, "index.cjs"));
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = tryFile(utilPath.join(id, "index.json"));
|
||||
if (result != undefined) {
|
||||
throw new Error(`cannot require a JSON file ${id}.mjs`);
|
||||
}
|
||||
result = tryFile(utilPath.join(id, "index.mjs"));
|
||||
if (result != undefined) {
|
||||
throw new Error(`cannot require a ESM file ${id}.mjs`);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function loadAsDirectory(id) {
|
||||
let package = file.readFrom(utilPath.join(id, "package.json"));
|
||||
if (package != undefined) {
|
||||
let result;
|
||||
package = JSON.parse(package);
|
||||
if (!package || !package.main) {
|
||||
return loadIndex(id);
|
||||
}
|
||||
let m = utilPath.join(id, package.main);
|
||||
result = loadAsFile(m);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = loadIndex(m);
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
throw new Error(`${m} not found`);
|
||||
}
|
||||
return loadIndex(id);
|
||||
}
|
||||
|
||||
function loadNodeModules(id, start) {
|
||||
let dirs = node_modules_paths(start);
|
||||
let result;
|
||||
for (let dir of dirs) {
|
||||
result = loadPackagExports(utilPath.join(dir, id));
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = loadAsFile(utilPath.join(dir, id));
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
result = loadAsDirectory(utilPath.join(dir, id));
|
||||
if (result != undefined) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function node_modules_paths(start) {
|
||||
let parts = utilPath.split(start);
|
||||
let dirs = [""];
|
||||
for (let i = parts.length; i >= 0; --i) {
|
||||
if (parts[i - 1] === "node_modules") {
|
||||
continue;
|
||||
}
|
||||
let dir = utilPath.join(...parts.slice(0, i), "node_modules");
|
||||
dirs.push(dir);
|
||||
}
|
||||
return dirs;
|
||||
}
|
||||
|
||||
function loadPackageImports(id) {
|
||||
//TODO
|
||||
let package = file.readFrom(utilPath.join(id, "package.json"));
|
||||
if (package == undefined) {
|
||||
return undefined;
|
||||
}
|
||||
package = JSON.parse(package);
|
||||
if (package && package.imports) {
|
||||
throw new Error(`cannot resolve imports field of ${id}`);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function loadPackagExports(id) {
|
||||
//TODO
|
||||
let package = file.readFrom(utilPath.join(id, "package.json"));
|
||||
if (package == undefined) {
|
||||
return undefined;
|
||||
}
|
||||
package = JSON.parse(package);
|
||||
if (package && package.exports) {
|
||||
throw new Error(`cannot resolve exports field of ${id}`);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function loadPackageSelf(id) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
function createModule(id, parent) {
|
||||
return {
|
||||
children: [],
|
||||
parent,
|
||||
exports: {},
|
||||
filename: id,
|
||||
id,
|
||||
isPreloading: false,
|
||||
loaded: false,
|
||||
path: utilPath.dirname(id),
|
||||
paths: undefined,
|
||||
require: cjsRequire,
|
||||
};
|
||||
}
|
||||
|
||||
function cjsRequire(id) {
|
||||
let parrentModule = currentModule;
|
||||
let { path, content } = resolveID(id);
|
||||
if (cjsRequire.cache[path] !== undefined) {
|
||||
let thisModule = cjsRequire.cache[path];
|
||||
if (parrentModule && !parrentModule.children.includes(thisModule)) {
|
||||
parrentModule.children.push(thisModule);
|
||||
}
|
||||
if (thisModule.loaded === false) {
|
||||
//TODO
|
||||
}
|
||||
return thisModule.exports;
|
||||
}
|
||||
let moduleObject = createModule(path, parrentModule);
|
||||
currentModule = moduleObject;
|
||||
cjsRequire.cache[path] = moduleObject;
|
||||
let code;
|
||||
try {
|
||||
code = new Function(
|
||||
"exports",
|
||||
"require",
|
||||
"module",
|
||||
"__filename",
|
||||
"__dirname",
|
||||
content
|
||||
);
|
||||
} catch (e) {
|
||||
e.stack = e.stack.replace(
|
||||
"at new Function (<anonymous>)",
|
||||
`at Object.<anonymous> (${moduleObject.id})`
|
||||
);
|
||||
throw e;
|
||||
}
|
||||
Object.defineProperty(code, "name", {
|
||||
value: `@file"${moduleObject.id}"`,
|
||||
});
|
||||
try {
|
||||
code.apply(moduleObject, [
|
||||
moduleObject.exports,
|
||||
cjsRequire,
|
||||
moduleObject,
|
||||
path,
|
||||
utilPath.dirname(path),
|
||||
]);
|
||||
} catch (e) {
|
||||
e.stack = e.stack
|
||||
.replace(
|
||||
/at Object\.@file"([^"]*)" \(eval at cjsRequire \(:\d+:\d+\), <anonymous>:(\d+):(\d+)\)/g,
|
||||
(match, fileName, line, col) => {
|
||||
return `at Object.<anonymous> (${fileName}:${line - 2
|
||||
}:${col})`;
|
||||
}
|
||||
)
|
||||
.replace(
|
||||
/at (\w*) \(eval at cjsRequire \(:\d+:\d+\), <anonymous>:(\d+):(\d+)\)/g,
|
||||
(match, functionName, line, col) => {
|
||||
return `at ${functionName} (${line - 2}:${col})`;
|
||||
}
|
||||
)
|
||||
.replace(/ at cjsRequire \(<anonymous>:\d+:\d+\)\n/g, "");
|
||||
throw e;
|
||||
}
|
||||
currentModule.loaded = true;
|
||||
currentModule = parrentModule;
|
||||
return moduleObject.exports;
|
||||
}
|
||||
|
||||
cjsRequire.main = currentModule;
|
||||
|
||||
cjsRequire.cache = {
|
||||
"": currentModule,
|
||||
};
|
||||
|
||||
cjsRequire.resolve = function resolve(request) {
|
||||
let obj = resolveID(request);
|
||||
return obj && obj.path;
|
||||
};
|
||||
|
||||
cjsRequire.resolve.paths = function paths(request) {
|
||||
let obj = resolveID(request);
|
||||
return obj && obj.requestPaths;
|
||||
};
|
||||
|
||||
globalThis.require = cjsRequire;
|
||||
})();
|
||||
|
||||
/*
|
||||
cjs.js end
|
||||
*/
|
||||
|
||||
globalThis.exports = {};
|
||||
globalThis.module = { exports: {} };
|
||||
|
||||
/*
|
||||
For Compatibility
|
||||
*/
|
||||
globalThis.file = File;
|
||||
globalThis.lxl = ll;
|
||||
DirectionAngle.prototype.valueOf = DirectionAngle.prototype.toFacing;
|
||||
globalThis.LXL_Block = LLSE_Block;
|
||||
globalThis.LXL_BlockEntity = LLSE_BlockEntity;
|
||||
globalThis.LXL_Container = LLSE_Container;
|
||||
globalThis.LXL_Device = LLSE_Device;
|
||||
globalThis.LXL_Entity = LLSE_Entity;
|
||||
globalThis.LXL_SimpleForm = LLSE_SimpleForm;
|
||||
globalThis.LXL_CustomForm = LLSE_CustomForm;
|
||||
globalThis.LXL_Item = LLSE_Item;
|
||||
globalThis.LXL_Player = LLSE_Player;
|
||||
globalThis.LXL_Objective = LLSE_Objective;
|
||||
ll.export = ll.exports;
|
||||
ll.import = ll.imports;
|
@ -1,20 +0,0 @@
|
||||
def _llse_python_base_lib_handle(event):
|
||||
def wrapper(func):
|
||||
__builtins__.mc.listen(event, func)
|
||||
return func
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
def _llse_python_base_lib_command_handle(self, func=None):
|
||||
def wrapper(func):
|
||||
self.setCallback(func)
|
||||
return func
|
||||
|
||||
if func:
|
||||
return wrapper(func)
|
||||
return wrapper
|
||||
|
||||
|
||||
setattr(__builtins__, "handle", _llse_python_base_lib_handle)
|
||||
setattr(__builtins__.LLSE_Command, "handle", _llse_python_base_lib_command_handle)
|
Binary file not shown.
@ -1,19 +1,19 @@
|
||||
{
|
||||
"name": "legacy-script-engine-lua",
|
||||
"entry": "legacy-script-engine-lua.dll",
|
||||
"type": "native",
|
||||
"description": "A plugin engine for running LLSE plugins on LeviLamina",
|
||||
"author": "LiteLDev",
|
||||
"version": "0.8.20",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "LegacyMoney"
|
||||
},
|
||||
{
|
||||
"name": "LegacyParticleAPI"
|
||||
},
|
||||
{
|
||||
"name": "LegacyRemoteCall"
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"name": "legacy-script-engine-lua",
|
||||
"entry": "legacy-script-engine-lua.dll",
|
||||
"version": "0.9.0",
|
||||
"type": "native",
|
||||
"description": "A plugin engine for running LLSE plugins on LeviLamina",
|
||||
"author": "LiteLDev",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "LegacyMoney"
|
||||
},
|
||||
{
|
||||
"name": "LegacyParticleAPI"
|
||||
},
|
||||
{
|
||||
"name": "LegacyRemoteCall"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
56
tooth.json
56
tooth.json
@ -1,30 +1,30 @@
|
||||
{
|
||||
"format_version": 2,
|
||||
"tooth": "gitea.litebds.com/LiteLDev/legacy-script-engine-lua",
|
||||
"version": "0.8.20",
|
||||
"info": {
|
||||
"name": "LegacyScriptEngine with Lua backend",
|
||||
"description": "A plugin engine for running LLSE plugins on LeviLamina",
|
||||
"author": "LiteLDev",
|
||||
"tags": [
|
||||
"levilamina",
|
||||
"plugin-engine"
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"github.com/LiteLDev/LegacyRemoteCall": "0.8.x",
|
||||
"github.com/LiteLDev/LegacyParticleAPI": "0.8.x",
|
||||
"github.com/LiteLDev/LegacyMoney": "0.8.x"
|
||||
},
|
||||
"prerequisites": {
|
||||
"github.com/LiteLDev/LeviLamina": ">=0.13.4 <0.14.0"
|
||||
},
|
||||
"files": {
|
||||
"place": [
|
||||
{
|
||||
"src": "legacy-script-engine-lua/*",
|
||||
"dest": "plugins/legacy-script-engine-lua/"
|
||||
}
|
||||
]
|
||||
}
|
||||
"format_version": 2,
|
||||
"tooth": "gitea.litebds.com/LiteLDev/legacy-script-engine-lua",
|
||||
"version": "0.9.0-rc.1",
|
||||
"info": {
|
||||
"name": "LegacyScriptEngine with Lua backend",
|
||||
"description": "A plugin engine for running LLSE plugins on LeviLamina",
|
||||
"author": "LiteLDev",
|
||||
"tags": [
|
||||
"levilamina",
|
||||
"plugin-engine"
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"github.com/LiteLDev/LegacyRemoteCall": "0.9.0-rc.3",
|
||||
"github.com/LiteLDev/LegacyParticleAPI": "0.9.0-rc.3",
|
||||
"github.com/LiteLDev/LegacyMoney": "0.9.0-rc.3"
|
||||
},
|
||||
"prerequisites": {
|
||||
"github.com/LiteLDev/LeviLamina": "1.0.0-rc.2"
|
||||
},
|
||||
"files": {
|
||||
"place": [
|
||||
{
|
||||
"src": "legacy-script-engine-lua/*",
|
||||
"dest": "plugins/legacy-script-engine-lua/"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user