mirror of
https://github.com/hanzoai/babel.git
synced 2026-09-24 16:56:45 +00:00
34 lines
940 B
JavaScript
34 lines
940 B
JavaScript
import path from "node:path";
|
|
import template from "@babel/template";
|
|
import helpers from "../../lib/helpers-generated.js";
|
|
|
|
import { getHelperMetadata } from "../../scripts/build-helper-metadata.ts";
|
|
|
|
function getHelperId(baseURL, name) {
|
|
const testName = path.basename(new URL(".", baseURL).pathname);
|
|
return `_$_${testName}_${name}`;
|
|
}
|
|
|
|
export function defineHelperAndGetMetadata(babel, baseURL, name, code) {
|
|
const id = getHelperId(baseURL, name);
|
|
if (id in helpers) {
|
|
throw new Error(`The ${id} helper is already defined.`);
|
|
}
|
|
|
|
let metadata;
|
|
[code, metadata] = getHelperMetadata(babel, code, name);
|
|
|
|
Object.defineProperty(helpers, id, {
|
|
value: {
|
|
minVersion: "7.0.0-beta.0",
|
|
ast: template.program(code),
|
|
metadata,
|
|
},
|
|
});
|
|
return { id, metadata };
|
|
}
|
|
|
|
export default function defineHelper(babel, baseURL, name, code) {
|
|
return defineHelperAndGetMetadata(babel, baseURL, name, code).id;
|
|
}
|