PC-mj/.output/server/node_modules/unhead/dist/shared/unhead.DnNYlT4k.mjs
2025-03-11 13:57:38 +08:00

156 lines
4.5 KiB
JavaScript

import { d as defineHeadPlugin } from './unhead.CApf5sj3.mjs';
import { s as sortTags } from './unhead.DZbvapt-.mjs';
import { p as processTemplateParams } from './unhead.kVuXtrDW.mjs';
const formatKey = (k) => !k.includes(":key") ? k.split(":").join(":key:") : k;
const AliasSortingPlugin = defineHeadPlugin({
key: "aliasSorting",
hooks: {
"tags:resolve": (ctx) => {
let m = false;
for (const t of ctx.tags) {
const p = t.tagPriority;
if (!p)
continue;
const s = String(p);
if (s.startsWith("before:")) {
const k = formatKey(s.slice(7));
const l = ctx.tagMap.get(k);
if (l) {
if (typeof l.tagPriority === "number")
t.tagPriority = l.tagPriority;
t._p = l._p - 1;
m = true;
}
} else if (s.startsWith("after:")) {
const k = formatKey(s.slice(6));
const l = ctx.tagMap.get(k);
if (l) {
if (typeof l.tagPriority === "number")
t.tagPriority = l.tagPriority;
t._p = l._p + 1;
m = true;
}
}
}
if (m)
ctx.tags = ctx.tags.sort(sortTags);
}
}
});
const DeprecationsPlugin = /* @__PURE__ */ defineHeadPlugin({
key: "deprecations",
hooks: {
"entries:normalize": ({ tags }) => {
for (const tag of tags) {
if (tag.props.children) {
tag.innerHTML = tag.props.children;
delete tag.props.children;
}
if (tag.props.hid) {
tag.key = tag.props.hid;
delete tag.props.hid;
}
if (tag.props.vmid) {
tag.key = tag.props.vmid;
delete tag.props.vmid;
}
if (tag.props.body) {
tag.tagPosition = "bodyClose";
delete tag.props.body;
}
}
}
}
});
async function walkPromises(v) {
const type = typeof v;
if (type === "function") {
return v;
}
if (v instanceof Promise) {
return await v;
}
if (Array.isArray(v)) {
return await Promise.all(v.map((r) => walkPromises(r)));
}
if (v?.constructor === Object) {
const next = {};
for (const key of Object.keys(v)) {
next[key] = await walkPromises(v[key]);
}
return next;
}
return v;
}
const PromisesPlugin = /* @__PURE__ */ defineHeadPlugin({
key: "promises",
hooks: {
"entries:resolve": async (ctx) => {
const promises = [];
for (const k in ctx.entries) {
if (!ctx.entries[k]._promisesProcessed) {
promises.push(
walkPromises(ctx.entries[k].input).then((val) => {
ctx.entries[k].input = val;
ctx.entries[k]._promisesProcessed = true;
})
);
}
}
await Promise.all(promises);
}
}
});
const SupportedAttrs = {
meta: "content",
link: "href",
htmlAttrs: "lang"
};
const contentAttrs = ["innerHTML", "textContent"];
const TemplateParamsPlugin = /* @__PURE__ */ defineHeadPlugin((head) => {
return {
key: "template-params",
hooks: {
"tags:resolve": ({ tagMap, tags }) => {
const params = tagMap.get("templateParams")?.props || {};
const sep = params.separator || "|";
delete params.separator;
params.pageTitle = processTemplateParams(
// find templateParams
params.pageTitle || head._title || "",
params,
sep
);
for (const tag of tags) {
if (tag.processTemplateParams === false) {
continue;
}
const v = SupportedAttrs[tag.tag];
if (v && typeof tag.props[v] === "string") {
tag.props[v] = processTemplateParams(tag.props[v], params, sep);
} else if (tag.processTemplateParams || tag.tag === "titleTemplate" || tag.tag === "title") {
for (const p of contentAttrs) {
if (typeof tag[p] === "string")
tag[p] = processTemplateParams(tag[p], params, sep, tag.tag === "script" && tag.props.type.endsWith("json"));
}
}
}
head._templateParams = params;
head._separator = sep;
},
"tags:afterResolve": ({ tagMap }) => {
const title = tagMap.get("title");
if (title?.textContent && title.processTemplateParams !== false) {
title.textContent = processTemplateParams(title.textContent, head._templateParams, head._separator);
}
}
}
};
});
export { AliasSortingPlugin as A, DeprecationsPlugin as D, PromisesPlugin as P, TemplateParamsPlugin as T };