Open prepare opened 3 years ago
/lib/internal/modules/cjs/loader.js
about line 848
Module._resolveFilename = function(request, parent, isMain, options) {
if (StringPrototypeStartsWith(request, 'node:') ||
NativeModule.canBeRequiredByUsers(request)) {
return request;
}
////////////////////////////////////////////
//#espresso, #4
if (request.endsWith(".espr")) {
return request;
}
////////////////////////////////////////////
patch 4: /lib/internal/modules/cjs/loader.js
about line 1172
//////////////////////////////////
//#espresso, #5
Module._extensions['.espr'] = function (module, filename) {
//this make node to callback to our module
var content = LibEspresso.LoadMainSrcFile();
module._compile(content, filename);
};
//////////////////////////////////
// Native extension for .json
Module._extensions['.json'] = function(module, filename) {
const content = fs.readFileSync(filename, 'utf8');
if (policy?.manifest) {
const moduleURL = pathToFileURL(filename);
policy.manifest.assertIntegrity(moduleURL, content);
}
patch 5: /lib/internal/modules/cjs/loader.js
file /lib/internal/main/run_main_module.js line 9
markBootstrapComplete();
//////////////////////////////////
//#espresso, #6
/////////////////////////////////
if (typeof LibEspresso !== 'undefined') {
//we use our lib espr LibEspresso
require('internal/modules/cjs/loader').Module.runMain("hello.espr");
return;
}
/////////////////////////////////
patch 6: /lib/internal/main/run_main_module.js
file src/node_main_instance.cc
about line 14
_patch 1: src/node_maininstance.cc
about line 151
_patch 2&3: src/node_maininstance.cc