README
@locker/compiler
Locker secure module compiler
Installation
$ yarn add @locker/compiler
Usage
The Compiler
object:
const { Compiler } = require('@locker/compiler');
// Compile code using `Compiler.compile(input, options)`. The function returns
// an object of `{ code, map, meta }`.
Compiler.compile(input, {
// The absolute filename of `input` used to generate source maps.
filename: undefined,
// The 'remap' option enables remapping Blue features into the Red Realm.
remap: {
// Specify remapping Blue dynamic imports into the Red Realm.
// Valid option values are `true`, `false`, or an options object.
// - Use `true` as shorthand for an options object of
// `{ strictSpecifier: true }`.
// - Use `false` disable remapping dynamic import.
dynamicImport: {
// Specify whether dynamic imports should be restricted to string
// literal source specifiers, e.g.
// import('./a.js') // allowed
// import(a) // not allowed
// import(`${a}`) // not allowed
strictSpecifier: true,
},
},
// The key of the sandbox to evaluate source text in.
// For more details see https://www.npmjs.com/package/@locker/sandbox#usage.
sandboxKey: 'sandbox',
// The source map option enables generating source maps.
sourceMap: {
// Specify how source maps should be generated.
// Valid option values are `true`, `false`, or 'hidden'.
// - Use `true` to generate two inline source maps:
// One for sandboxed code and one for the module.
// - Use `false` to disable all source map generation.
// - Use 'hidden' to skip the source map for sandbox code and
// only generate the source map for the module.
generate: false,
// Specify whether mappings should be high-resolution. Hi-res mappings
// map every single character, meaning devtools can locate the exact line
// and column of break points. With lo-res mappings devtools can only
// locate the line, but they're quicker to generate and less bulky.
hires: false,
},
//
// *** ADVANCED ***
//
// Specify the newline character(s) to use in compiled output, i.e. either
// '\n' or '\r\n'. The default value 'auto' will automatically detect the
// newline to use based on which occurs more in `input`.
newline: 'auto',
// Specify the quote character to use in compiled output, i.e. either
// '"' or "'". The default value 'auto' will automatically detect the
// quote character to use based on which occurs more in `input`.
quoteChar: 'auto',
// Specify the name of the sandbox evaluation context identifier.
sandboxEvalContext: '$lockerEvalContext