0.0.16 • Published 10 months ago
virtual-es-module v0.0.16
Based on the es module implemented by acorn
, easy to operate in the sandbox
.
Demo
<!DOCTYPE html>
<html lang="en">
<body>
<script src="https://unpkg.com/virtual-es-module/dist/virtual-esm.umd.js"></script>
<script type="virtual-module">
import * as _ from 'https://unpkg.com/lodash-es';
console.log(_);
import * as m from './m.js';
console.log(m);
import('./m.js').then(mm => {
console.log(m === mm); // true
})
</script>
</body>
</html>
API
Import by url
import { Runtime } from 'virtual-es-module';
const runtime = new Runtime();
const module = await runtime.importByUrl('./a.mjs');
console.log(module);
Import by code
import { Runtime } from 'virtual-es-module';
const runtime = new Runtime();
const module = await runtime.importByCode(`
import * as m from './a.mjs';
export default 1;
`);
console.log(module);
Custom code execution
import { Runtime } from 'virtual-es-module';
const runtime = new Runtime({
execCode(output, provider, exec) {
const sourcemap = `\n//@ sourceMappingURL=${output.map}`;
const code = `${output.code}\n//${output.storeId}${sourcemap}`;
exec(
code,
{
...provider,
// Inject environment variables
require(name) {
// return ...
},
},
);
}
});
const module = await runtime.importByUrl('./a.mjs');
console.log(module);
Not support
The code executed by eval cannot be converted by this scheme.
import m from './m.js';
eval('console.log(m);') // throw error 'm is not defined'
0.0.16
10 months ago
0.0.15
2 years ago
0.0.14
2 years ago
0.0.13
2 years ago
0.0.12
2 years ago
0.0.11
2 years ago
0.0.10
2 years ago
0.0.9
2 years ago
0.0.8
2 years ago
0.0.7
2 years ago
0.0.6
2 years ago
0.0.5
2 years ago
0.0.4
2 years ago
0.0.3
2 years ago
0.0.2
2 years ago
0.0.1
2 years ago
0.0.1-beta.9
2 years ago
0.0.1-beta.8
2 years ago
0.0.1-beta.7
2 years ago
0.0.1-beta.6
2 years ago
0.0.1-beta.5
2 years ago
0.0.1-beta.4
2 years ago
0.0.1-beta.3
2 years ago
0.0.1-beta.2
2 years ago
0.0.1-beta1
2 years ago