astro-ghostcms/.pnpm-store/v3/files/e2/ab092ecaf31b743568dde5f03ee...

40 lines
1.1 KiB
Plaintext

import { AstroError, AstroErrorData } from "../../core/errors/index.js";
function validateArgs(args) {
if (args.length !== 3)
return false;
if (!args[0] || typeof args[0] !== "object")
return false;
return true;
}
function baseCreateComponent(cb, moduleId, propagation) {
const name = moduleId?.split("/").pop()?.replace(".astro", "") ?? "";
const fn = (...args) => {
if (!validateArgs(args)) {
throw new AstroError({
...AstroErrorData.InvalidComponentArgs,
message: AstroErrorData.InvalidComponentArgs.message(name)
});
}
return cb(...args);
};
Object.defineProperty(fn, "name", { value: name, writable: false });
fn.isAstroComponentFactory = true;
fn.moduleId = moduleId;
fn.propagation = propagation;
return fn;
}
function createComponentWithOptions(opts) {
const cb = baseCreateComponent(opts.factory, opts.moduleId, opts.propagation);
return cb;
}
function createComponent(arg1, moduleId, propagation) {
if (typeof arg1 === "function") {
return baseCreateComponent(arg1, moduleId, propagation);
} else {
return createComponentWithOptions(arg1);
}
}
export {
createComponent
};