profoundjs
Version:
Profound.js Framework and Server
65 lines (60 loc) • 2.09 kB
JavaScript
/// <reference path="./profoundjs.d.ts" />
const fs = require("fs");
const path = require("path");
let loaded = false;
let exists = false;
try {
const stat = fs.statSync(path.join(__dirname, "/profound.js"));
if (stat && stat.isFile()) exists = true;
}
catch (err) {
exists = false;
}
if (exists) {
require("./profound.js");
}
else {
loaded = module.constructor._originalResolveFilename != null;
module.constructor._originalResolveFilename = module.constructor._originalResolveFilename || module.constructor._resolveFilename;
module.constructor._resolveFilename = function(request, paths) {
let filename;
const parts = request.split(".");
const extension = parts.pop();
if (extension === "jse") {
filename = module.constructor._originalResolveFilename("./profound.jse", paths);
if (path.sep !== "/") {
while (request.includes("/")) request = request.replace("/", path.sep);
}
filename = filename.substr(0, filename.length - "profound.jse".length) + request;
}
else {
filename = module.constructor._originalResolveFilename(request, paths);
}
return filename;
};
const jse = JSON.parse(fs.readFileSync(path.join(__dirname, "/profound.jse"), "utf8"));
const loader = require("pjsloader");
// eslint-disable-next-line n/no-deprecated-api
require.extensions[".jse"] = function(module, filename) {
let name = filename;
if (name.substr(0, __dirname.length) === __dirname) name = name.substr(__dirname.length + 1);
if (path.sep !== "/") {
while (name.includes(path.sep)) name = name.replace(path.sep, "/");
}
return module._compile(loader.load(jse[name]), filename);
};
// Require any of the children, but only the 1st time
if (!loaded) {
for (const x in jse) {
if (x.startsWith("shipped-plugins")) {
profound.utils.addPlugin(require(x));
}
else {
require(x);
}
}
profound.utils.requireDirs("plugins", profound.dir, profound.utils.addPlugin); // load custom plugins
}
}
module.exports = profound;
;