-
Notifications
You must be signed in to change notification settings - Fork 62
Commit
import()
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,6 +4,8 @@ node_js: | |
- "6" | ||
- "8" | ||
- "10" | ||
- "12" | ||
- "14" | ||
- node | ||
script: npm run travis | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,42 @@ | ||
var LoaderLoadingError = require("./LoaderLoadingError"); | ||
var url; | ||
|
||
module.exports = function loadLoader(loader, callback) { | ||
try { | ||
var module = require(loader.path); | ||
} catch(e) { | ||
// it is possible for node to choke on a require if the FD descriptor | ||
// limit has been reached. give it a chance to recover. | ||
if(e instanceof Error && e.code === "EMFILE") { | ||
var retry = loadLoader.bind(null, loader, callback); | ||
if(typeof setImmediate === "function") { | ||
// node >= 0.9.0 | ||
return setImmediate(retry); | ||
} else { | ||
// node < 0.9.0 | ||
return process.nextTick(retry); | ||
if(loader.type === "module") { | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
sokra
Author
Member
|
||
try { | ||
if(url === undefined) url = require("url"); | ||
var loaderUrl = url.pathToFileURL(loader.path); | ||
var modulePromise = eval("import(" + JSON.stringify(loaderUrl.toString()) + ")"); | ||
modulePromise.then(function(module) { | ||
handleResult(loader, module, callback); | ||
}, callback); | ||
return; | ||
} catch(e) { | ||
callback(e); | ||
} | ||
} else { | ||
try { | ||
var module = require(loader.path); | ||
} catch(e) { | ||
// it is possible for node to choke on a require if the FD descriptor | ||
// limit has been reached. give it a chance to recover. | ||
if(e instanceof Error && e.code === "EMFILE") { | ||
var retry = loadLoader.bind(null, loader, callback); | ||
if(typeof setImmediate === "function") { | ||
// node >= 0.9.0 | ||
return setImmediate(retry); | ||
} else { | ||
// node < 0.9.0 | ||
return process.nextTick(retry); | ||
} | ||
} | ||
return callback(e); | ||
} | ||
return callback(e); | ||
return handleResult(loader, module, callback); | ||
} | ||
}; | ||
|
||
function handleResult(loader, module, callback) { | ||
if(typeof module !== "function" && typeof module !== "object") { | ||
return callback(new LoaderLoadingError( | ||
"Module '" + loader.path + "' is not a loader (export function or es6 module)" | ||
|
@@ -32,4 +51,4 @@ module.exports = function loadLoader(loader, callback) { | |
)); | ||
} | ||
callback(); | ||
}; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
export default function(source) { | ||
return source + "-esm"; | ||
}; |
How to mark loader with type
module
?