babel-plugin-ember-template-compilation
Version:
Babel implementation of Ember's low-level template-compilation API
77 lines • 11.8 kB
JavaScript
import { dirname, resolve, sep } from 'path';
import { makePlugin } from './plugin.js';
import { assertTemplateCompiler } from './ember-template-compiler.js';
import { fileURLToPath, pathToFileURL } from 'url';
import { resolve as importMetaResolve } from 'import-meta-resolve';
export * from './public-types.js';
async function cwdImport(moduleName) {
let target = importMetaResolve(moduleName, pathToFileURL(process.cwd() + sep).href);
if (!target.startsWith('file:')) {
// import-meta-resolve doesn't consistently return file URLs rather than paths
// https://github.com/wooorm/import-meta-resolve/issues/31
//
// also, under some conditions which I have not been able to reproduce in
// the test suite, Windows will error if you pass an absolute path that is
// not a file: URL.
target = pathToFileURL(target).href;
}
return esCompat(await import(target));
}
async function handleNodeSpecificOptions(opts) {
let compiler = undefined;
if (opts.compilerPath) {
let mod = await cwdImport(opts.compilerPath);
assertTemplateCompiler(mod);
compiler = mod;
}
else if (opts.compiler) {
assertTemplateCompiler(opts.compiler);
compiler = opts.compiler;
}
else if ((opts.targetFormat ?? 'wire') === 'wire') {
let mod;
try {
// the newer path
mod = await cwdImport('ember-source/ember-template-compiler/index.js');
}
catch (err) {
if (err.code !== 'ERR_MODULE_NOT_FOUND') {
throw err;
}
// the deprecated path
mod = await cwdImport('ember-source/dist/ember-template-compiler.js');
}
assertTemplateCompiler(mod);
compiler = mod;
}
let transforms = [];
if (opts.transforms) {
transforms = await Promise.all(opts.transforms.map(async (t) => {
if (typeof t === 'string') {
return (await cwdImport(t)).default;
}
else if (Array.isArray(t) && typeof t[0] === 'string') {
return (await cwdImport(t[0])).default.call(undefined, t[1]);
}
else {
return t;
}
}));
}
return { ...opts, transforms, compiler };
}
const htmlbarsInlinePrecompile = makePlugin(handleNodeSpecificOptions);
htmlbarsInlinePrecompile._parallelBabel = {
requireFile: fileURLToPath(import.meta.url),
};
htmlbarsInlinePrecompile.baseDir = function () {
return resolve(dirname(fileURLToPath(import.meta.url)), '..');
};
export default htmlbarsInlinePrecompile;
function esCompat(m) {
if (m?.default?.__esModule) {
return m.default;
}
return m;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vZGUtbWFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQXlCLE1BQU0sOEJBQThCLENBQUM7QUFFN0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLGNBQWMsbUJBQW1CLENBQUM7QUEwQmxDLEtBQUssVUFBVSxTQUFTLENBQUMsVUFBa0I7SUFDekMsSUFBSSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNoQyw4RUFBOEU7UUFDOUUsMERBQTBEO1FBQzFELEVBQUU7UUFDRix5RUFBeUU7UUFDekUsMEVBQTBFO1FBQzFFLG1CQUFtQjtRQUNuQixNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0QyxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUMsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsS0FBSyxVQUFVLHlCQUF5QixDQUFDLElBQWE7SUFDcEQsSUFBSSxRQUFRLEdBQXNDLFNBQVMsQ0FBQztJQUM1RCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixJQUFJLEdB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dmUsIHNlcCB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgbWFrZVBsdWdpbiB9IGZyb20gJy4vcGx1Z2luLmpzJztcblxuaW1wb3J0IHsgT3B0aW9ucyBhcyBTaGFyZWRPcHRpb25zIH0gZnJvbSAnLi9wbHVnaW4uanMnO1xuaW1wb3J0IHsgYXNzZXJ0VGVtcGxhdGVDb21waWxlciwgRW1iZXJUZW1wbGF0ZUNvbXBpbGVyIH0gZnJvbSAnLi9lbWJlci10ZW1wbGF0ZS1jb21waWxlci5qcyc7XG5pbXBvcnQgeyBFeHRlbmRlZFBsdWdpbkJ1aWxkZXIgfSBmcm9tICcuL2pzLXV0aWxzLmpzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGgsIHBhdGhUb0ZpbGVVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgcmVzb2x2ZSBhcyBpbXBvcnRNZXRhUmVzb2x2ZSB9IGZyb20gJ2ltcG9ydC1tZXRhLXJlc29sdmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy10eXBlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybSA9IEV4dGVuZGVkUGx1Z2luQnVpbGRlciB8IHN0cmluZyB8IFtzdHJpbmcsIHVua25vd25dO1xuXG5leHBvcnQgdHlwZSBPcHRpb25zID0gT21pdDxTaGFyZWRPcHRpb25zLCAndHJhbnNmb3JtcycgfCAnY29tcGlsZXInPiAmIHtcbiAgLy8gVGhlIG9uLWRpc2sgcGF0aCB0byB0aGUgZW1iZXItdGVtcGxhdGUtY29tcGlsZXIuanMgbW9kdWxlIGZvciBvdXIgY3VycmVudFxuICAvLyBlbWJlciB2ZXJzaW9uLiBZb3UgY2FuIHNldCBlaXRoZXIgYGNvbXBpbGVyUGF0aGAgb3Igc2V0IGBjb21waWxlcmAuIElmIHlvdVxuICAvLyBzZXQgbmVpdGhlciwgd2Ugd2lsbCBhdHRlbXB0IHRvIHJlc29sdmVcbiAgLy8gXCJlbWJlci1zb3VyY2UvZGlzdC9lbWJlci10ZW1wbGF0ZS1jb21waWxlci5qc1wiIGZyb20gdGhlIGN1cnJlbnQgd29ya2luZ1xuICAvLyBkaXJlY3RvcnkuXG4gIGNvbXBpbGVyUGF0aD86IHN0cmluZztcblxuICAvLyBUaGUgZW1iZXItdGVtcGxhdGUtY29tcGlsZXIuanMgbW9kdWxlIHRoYXQgc2hpcHMgd2l0aGluIHlvdXIgZW1iZXItc291cmNlXG4gIC8vIHZlcnNpb24uIFlvdSBjYW4gc2V0IGVpdGhlciBgY29tcGlsZXJQYXRoYCBvciBgY29tcGlsZXJgLlxuICBjb21waWxlcj86IEVtYmVyVGVtcGxhdGVDb21waWxlcjtcblxuICAvLyBMaXN0IG9mIGN1c3RvbSB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGhhbmRsZWJhcnMgQVNUIGJlZm9yZVxuICAvLyBjb21waWxhdGlvbi4gVGhlc2UgY2FuIGJlXG4gIC8vICAgLSB0aGUgYWN0dWFsIGZ1bmN0aW9uc1xuICAvLyAgIC0gcmVzb2x2YWJsZSBtb2R1bGUgbmFtZXNcbiAgLy8gICAtIHBhaXJzIG9mIFtyZXNvbHZhYmxlTW9kdWxlTmFtZSwgb3B0aW9uc10sIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCBpbnZva2VcbiAgLy8gICAgIHRoZSBkZWZhdWx0IGV4cG9ydCBvZiB0aGUgbW9kdWxlIHdpdGggdGhlIG9wdGlvbnMgYXMgYXJndW1lbnQsIGFuZCB0aGVcbiAgLy8gICAgIGFjdHVhbCBhc3QgdHJhbnNmb3JtIGZ1bmN0aW9uIHNob3VsZCBiZSByZXR1cm5lZC5cbiAgdHJhbnNmb3Jtcz86IFRyYW5zZm9ybVtdO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gY3dkSW1wb3J0KG1vZHVsZU5hbWU6IHN0cmluZykge1xuICBsZXQgdGFyZ2V0ID0gaW1wb3J0TWV0YVJlc29sdmUobW9kdWxlTmFtZSwgcGF0aFRvRmlsZVVSTChwcm9jZXNzLmN3ZCgpICsgc2VwKS5ocmVmKTtcbiAgaWYgKCF0YXJnZXQuc3RhcnRzV2l0aCgnZmlsZTonKSkge1xuICAgIC8vIGltcG9ydC1tZXRhLXJlc29sdmUgZG9lc24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGZpbGUgVVJMcyByYXRoZXIgdGhhbiBwYXRoc1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93b29vcm0vaW1wb3J0LW1ldGEtcmVzb2x2ZS9pc3N1ZXMvMzFcbiAgICAvL1xuICAgIC8vIGFsc28sIHVuZGVyIHNvbWUgY29uZGl0aW9ucyB3aGljaCBJIGhhdmUgbm90IGJlZW4gYWJsZSB0byByZXByb2R1Y2UgaW5cbiAgICAvLyB0aGUgdGVzdCBzdWl0ZSwgV2luZG93cyB3aWxsIGVycm9yIGlmIHlvdSBwYXNzIGFuIGFic29sdXRlIHBhdGggdGhhdCBpc1xuICAgIC8vIG5vdCBhIGZpbGU6IFVSTC5cbiAgICB0YXJnZXQgPSBwYXRoVG9GaWxlVVJMKHRhcmdldCkuaHJlZjtcbiAgfVxuICByZXR1cm4gZXNDb21wYXQoYXdhaXQgaW1wb3J0KHRhcmdldCkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVOb2RlU3BlY2lmaWNPcHRpb25zKG9wdHM6IE9wdGlvbnMpOiBQcm9taXNlPFNoYXJlZE9wdGlvbnM+IHtcbiAgbGV0IGNvbXBpbGVyOiBFbWJlclRlbXBsYXRlQ29tcGlsZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGlmIChvcHRzLmNvbXBpbGVyUGF0aCkge1xuICAgIGxldCBtb2Q6IGFueSA9IGF3YWl0IGN3ZEltcG9ydChvcHRzLmNvbXBpbGVyUGF0aCk7XG4gICAgYXNzZXJ0VGVtcGxhdGVDb21waWxlcihtb2QpO1xuICAgIGNvbXBpbGVyID0gbW9kO1xuICB9IGVsc2UgaWYgKG9wdHMuY29tcGlsZXIpIHtcbiAgICBhc3NlcnRUZW1wbGF0ZUNvbXBpbGVyKG9wdHMuY29tcGlsZXIpO1xuICAgIGNvbXBpbGVyID0gb3B0cy5jb21waWxlcjtcbiAgfSBlbHNlIGlmICgob3B0cy50YXJnZXRGb3JtYXQgPz8gJ3dpcmUnKSA9PT0gJ3dpcmUnKSB7XG4gICAgbGV0IG1vZDogYW55O1xuICAgIHRyeSB7XG4gICAgICAvLyB0aGUgbmV3ZXIgcGF0aFxuICAgICAgbW9kID0gYXdhaXQgY3dkSW1wb3J0KCdlbWJlci1zb3VyY2UvZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvaW5kZXguanMnKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyci5jb2RlICE9PSAnRVJSX01PRFVMRV9OT1RfRk9VTkQnKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICAgIC8vIHRoZSBkZXByZWNhdGVkIHBhdGhcbiAgICAgIG1vZCA9IGF3YWl0IGN3ZEltcG9ydCgnZW1iZXItc291cmNlL2Rpc3QvZW1iZXItdGVtcGxhdGUtY29tcGlsZXIuanMnKTtcbiAgICB9XG4gICAgYXNzZXJ0VGVtcGxhdGVDb21waWxlcihtb2QpO1xuICAgIGNvbXBpbGVyID0gbW9kO1xuICB9XG5cbiAgbGV0IHRyYW5zZm9ybXMgPSBbXTtcbiAgaWYgKG9wdHMudHJhbnNmb3Jtcykge1xuICAgIHRyYW5zZm9ybXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG9wdHMudHJhbnNmb3Jtcy5tYXAoYXN5bmMgKHQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgY3dkSW1wb3J0KHQpKS5kZWZhdWx0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodCkgJiYgdHlwZW9mIHRbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBjd2RJbXBvcnQodFswXSkpLmRlZmF1bHQuY2FsbCh1bmRlZmluZWQsIHRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHsgLi4ub3B0cywgdHJhbnNmb3JtcywgY29tcGlsZXIgfTtcbn1cblxuY29uc3QgaHRtbGJhcnNJbmxpbmVQcmVjb21waWxlID0gbWFrZVBsdWdpbihoYW5kbGVOb2RlU3BlY2lmaWNPcHRpb25zKTtcblxuKGh0bWxiYXJzSW5saW5lUHJlY29tcGlsZSBhcyBhbnkpLl9wYXJhbGxlbEJhYmVsID0ge1xuICByZXF1aXJlRmlsZTogZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpLFxufTtcblxuKGh0bWxiYXJzSW5saW5lUHJlY29tcGlsZSBhcyBhbnkpLmJhc2VEaXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiByZXNvbHZlKGRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKSwgJy4uJyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBodG1sYmFyc0lubGluZVByZWNvbXBpbGUgYXMgdHlwZW9mIGh0bWxiYXJzSW5saW5lUHJlY29tcGlsZSAmIHtcbiAgYmFzZURpcigpOiBzdHJpbmc7XG4gIF9wYXJhbGxlbEJhYmVsOiB7IHJlcXVpcmVGaWxlOiBzdHJpbmcgfTtcbn07XG5cbmZ1bmN0aW9uIGVzQ29tcGF0KG06IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgaWYgKG0/LmRlZmF1bHQ/Ll9fZXNNb2R1bGUpIHtcbiAgICByZXR1cm4gbS5kZWZhdWx0O1xuICB9XG4gIHJldHVybiBtO1xufVxuIl19