1
0
Fork 0

Implemented require from db collection

This commit is contained in:
Alan Plum 2015-09-19 04:31:03 +02:00
parent 038267cb06
commit f021cdc471
1 changed files with 33 additions and 2 deletions

View File

@ -151,6 +151,7 @@ NATIVE_MODULES.module = Module;
Module._cache = {};
Module._pathCache = {};
Module._dbCache = {};
Module._extensions = {};
var modulePaths = GLOBAL_PATHS;
Module.globalPaths = [];
@ -368,7 +369,24 @@ Module._resolveLookupPaths = function(request, parent) {
// Then have it load the file contents before returning its exports
// object.
Module._load = function(request, parent, isMain) {
var filename = Module._resolveFilename(request, parent);
var filename = request;
var dbModule = false;
try {
filename = Module._resolveFilename(request, parent);
} catch (e) {
if (request.charAt(0) !== '/') {
request = '/' + request;
}
dbModule = Module._dbCache[request];
if (!dbModule) {
dbModule = internal.db._modules.firstExample({path: request});
if (!dbModule) {
throw e;
}
Module._dbCache[request] = dbModule;
}
}
var cachedModule = Module._cache[filename];
if (cachedModule) {
@ -390,7 +408,11 @@ Module._load = function(request, parent, isMain) {
var hadException = true;
try {
module.load(filename);
if (dbModule) {
module._loadDbModule(dbModule);
} else {
module.load(filename);
}
hadException = false;
} finally {
if (hadException) {
@ -434,6 +456,15 @@ Module.prototype.load = function(filename) {
};
Module.prototype._loadDbModule = function (dbModule) {
assert(!this.loaded);
const filename = `db://_modules${dbModule.path}`;
this.filename = filename;
this._compile(dbModule.content, filename);
this.loaded = true;
};
// Loads a module at the given file path. Returns that module's
// `exports` property.
Module.prototype.require = function(path) {