24 lines
647 B
JavaScript
24 lines
647 B
JavaScript
const path = require("path");
|
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
const template = require("@babel/template").default;
|
|
const helpers = require("../../lib/helpers.js").default;
|
|
|
|
function getHelperId(dir, name) {
|
|
const testName = path.basename(dir);
|
|
return `_$_${testName}_${name}`;
|
|
}
|
|
|
|
module.exports = function defineHelper(dir, name, code) {
|
|
const id = getHelperId(dir, name);
|
|
if (id in helpers) {
|
|
throw new Error(`The ${id} helper is already defined.`);
|
|
}
|
|
Object.defineProperty(helpers, id, {
|
|
value: {
|
|
minVersion: "7.0.0-beta.0",
|
|
ast: template.program(code),
|
|
},
|
|
});
|
|
return id;
|
|
};
|