|
import { resolve } from 'path'; |
|
import Node from './Node.js'; |
|
import Chain from './Chain.js'; |
|
|
|
export function load ( file, options ) { |
|
const { node, sourcesContentByPath, sourceMapByPath } = init( file, options ); |
|
|
|
return node.load( sourcesContentByPath, sourceMapByPath ) |
|
.then( () => node.isOriginalSource ? null : new Chain( node, sourcesContentByPath ) ); |
|
} |
|
|
|
export function loadSync ( file, options = {} ) { |
|
const { node, sourcesContentByPath, sourceMapByPath } = init( file, options ); |
|
|
|
node.loadSync( sourcesContentByPath, sourceMapByPath ); |
|
return node.isOriginalSource ? null : new Chain( node, sourcesContentByPath ); |
|
} |
|
|
|
function init ( file, options = {} ) { |
|
const node = new Node({ file }); |
|
|
|
let sourcesContentByPath = {}; |
|
let sourceMapByPath = {}; |
|
|
|
if ( options.content ) { |
|
Object.keys( options.content ).forEach( key => { |
|
sourcesContentByPath[ resolve( key ) ] = options.content[ key ]; |
|
}); |
|
} |
|
|
|
if ( options.sourcemaps ) { |
|
Object.keys( options.sourcemaps ).forEach( key => { |
|
sourceMapByPath[ resolve( key ) ] = options.sourcemaps[ key ]; |
|
}); |
|
} |
|
|
|
return { node, sourcesContentByPath, sourceMapByPath }; |
|
} |
|
|