@highstate/designer 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -7
- package/.output/nitro.json +0 -15
- package/.output/public/_nuxt/1_b4y8eQ.js +0 -1
- package/.output/public/_nuxt/BjOhMR1f.js +0 -242
- package/.output/public/_nuxt/CPAAHz3G.js +0 -1
- package/.output/public/_nuxt/CmGpyJTe.js +0 -1
- package/.output/public/_nuxt/builds/latest.json +0 -1
- package/.output/public/_nuxt/builds/meta/f777d22c-e958-4e7c-865d-11bb8a560858.json +0 -1
- package/.output/public/_nuxt/entry.Vs8IncyG.css +0 -5
- package/.output/public/_nuxt/error-404.BJkSn6RI.css +0 -1
- package/.output/public/_nuxt/error-500.TOCKLquH.css +0 -1
- package/.output/public/_nuxt/materialdesignicons-webfont.B6OSyW2I.woff2 +0 -0
- package/.output/public/_nuxt/materialdesignicons-webfont.BpRar1d5.ttf +0 -0
- package/.output/public/_nuxt/materialdesignicons-webfont.Bvl3VxMs.woff +0 -0
- package/.output/public/_nuxt/materialdesignicons-webfont.TEmAk13K.eot +0 -0
- package/.output/public/favicon.ico +0 -0
- package/.output/public/libavoid.wasm +0 -0
- package/.output/public/robots.txt +0 -1
- package/.output/server/index.mjs +0 -11426
- package/.output/server/index.mjs.map +0 -1
- package/.output/server/node_modules/@babel/parser/lib/index.js +0 -14246
- package/.output/server/node_modules/@babel/parser/package.json +0 -50
- package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/fetchRequestHandler.mjs +0 -74
- package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/index.mjs +0 -1
- package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/incomingMessageToRequest.mjs +0 -119
- package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/index.mjs +0 -2
- package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +0 -92
- package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/writeResponse.mjs +0 -79
- package/.output/server/node_modules/@trpc/server/dist/index.mjs +0 -12
- package/.output/server/node_modules/@trpc/server/dist/observable/observable.mjs +0 -175
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/createProxy.mjs +0 -73
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/TRPCError.mjs +0 -79
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/formatter.mjs +0 -5
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/getErrorShape.mjs +0 -29
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/abortError.mjs +0 -10
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/contentType.mjs +0 -229
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +0 -76
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/parseConnectionParams.mjs +0 -39
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/resolveResponse.mjs +0 -570
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/initTRPC.mjs +0 -80
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/middleware.mjs +0 -90
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/parser.mjs +0 -52
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedureBuilder.mjs +0 -198
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rootConfig.mjs +0 -6
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/router.mjs +0 -278
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rpc/codes.mjs +0 -54
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/jsonl.mjs +0 -603
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/sse.mjs +0 -369
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/tracked.mjs +0 -25
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +0 -165
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +0 -15
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +0 -43
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/mergeAsyncIterables.mjs +0 -239
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +0 -23
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +0 -23
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +0 -127
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/transformer.mjs +0 -101
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/utils.mjs +0 -83
- package/.output/server/node_modules/@trpc/server/dist/vendor/standard-schema-v1/error.mjs +0 -26
- package/.output/server/node_modules/@trpc/server/dist/vendor/unpromise/unpromise.mjs +0 -289
- package/.output/server/node_modules/@trpc/server/package.json +0 -156
- package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +0 -6690
- package/.output/server/node_modules/@vue/compiler-core/package.json +0 -58
- package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +0 -686
- package/.output/server/node_modules/@vue/compiler-dom/package.json +0 -57
- package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +0 -1404
- package/.output/server/node_modules/@vue/compiler-ssr/package.json +0 -34
- package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +0 -1789
- package/.output/server/node_modules/@vue/reactivity/package.json +0 -55
- package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +0 -6654
- package/.output/server/node_modules/@vue/runtime-core/package.json +0 -52
- package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +0 -1669
- package/.output/server/node_modules/@vue/runtime-dom/package.json +0 -60
- package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +0 -857
- package/.output/server/node_modules/@vue/server-renderer/package.json +0 -55
- package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +0 -594
- package/.output/server/node_modules/@vue/shared/package.json +0 -47
- package/.output/server/node_modules/devalue/index.js +0 -3
- package/.output/server/node_modules/devalue/package.json +0 -34
- package/.output/server/node_modules/devalue/src/base64.js +0 -110
- package/.output/server/node_modules/devalue/src/constants.js +0 -6
- package/.output/server/node_modules/devalue/src/parse.js +0 -160
- package/.output/server/node_modules/devalue/src/stringify.js +0 -232
- package/.output/server/node_modules/devalue/src/uneval.js +0 -351
- package/.output/server/node_modules/devalue/src/utils.js +0 -113
- package/.output/server/node_modules/entities/lib/decode.js +0 -536
- package/.output/server/node_modules/entities/lib/decode_codepoint.js +0 -76
- package/.output/server/node_modules/entities/lib/generated/decode-data-html.js +0 -9
- package/.output/server/node_modules/entities/lib/generated/decode-data-xml.js +0 -9
- package/.output/server/node_modules/entities/package.json +0 -90
- package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +0 -344
- package/.output/server/node_modules/estree-walker/package.json +0 -37
- package/.output/server/node_modules/hookable/dist/index.mjs +0 -290
- package/.output/server/node_modules/hookable/package.json +0 -49
- package/.output/server/node_modules/source-map-js/lib/array-set.js +0 -121
- package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +0 -140
- package/.output/server/node_modules/source-map-js/lib/base64.js +0 -67
- package/.output/server/node_modules/source-map-js/lib/binary-search.js +0 -111
- package/.output/server/node_modules/source-map-js/lib/mapping-list.js +0 -79
- package/.output/server/node_modules/source-map-js/lib/quick-sort.js +0 -132
- package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +0 -1188
- package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +0 -444
- package/.output/server/node_modules/source-map-js/lib/source-node.js +0 -413
- package/.output/server/node_modules/source-map-js/lib/util.js +0 -594
- package/.output/server/node_modules/source-map-js/package.json +0 -71
- package/.output/server/node_modules/source-map-js/source-map.js +0 -8
- package/.output/server/node_modules/ufo/dist/index.mjs +0 -630
- package/.output/server/node_modules/ufo/package.json +0 -47
- package/.output/server/node_modules/unhead/dist/plugins.mjs +0 -94
- package/.output/server/node_modules/unhead/dist/server.mjs +0 -220
- package/.output/server/node_modules/unhead/dist/shared/unhead.C13swrCa.mjs +0 -48
- package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +0 -148
- package/.output/server/node_modules/unhead/dist/shared/unhead.Cp0iF6eN.mjs +0 -177
- package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +0 -196
- package/.output/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs +0 -70
- package/.output/server/node_modules/unhead/dist/shared/unhead.DeCxexjU.mjs +0 -166
- package/.output/server/node_modules/unhead/dist/shared/unhead.Txd0XTIP.mjs +0 -172
- package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +0 -38
- package/.output/server/node_modules/unhead/dist/utils.mjs +0 -5
- package/.output/server/node_modules/unhead/package.json +0 -101
- package/.output/server/node_modules/vue/dist/vue.cjs.js +0 -80
- package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +0 -66
- package/.output/server/node_modules/vue/index.js +0 -7
- package/.output/server/node_modules/vue/index.mjs +0 -1
- package/.output/server/node_modules/vue/package.json +0 -112
- package/.output/server/node_modules/vue/server-renderer/index.mjs +0 -1
- package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +0 -196
- package/.output/server/node_modules/vue-bundle-renderer/package.json +0 -50
- package/.output/server/node_modules/zod/lib/index.mjs +0 -4405
- package/.output/server/node_modules/zod/package.json +0 -122
- package/.output/server/package.json +0 -1
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
export { A as AliasSortingPlugin, D as DeprecationsPlugin, P as PromisesPlugin, T as TemplateParamsPlugin } from './shared/unhead.DeCxexjU.mjs';
|
|
2
|
-
import { d as defineHeadPlugin } from './shared/unhead.CApf5sj3.mjs';
|
|
3
|
-
export { F as FlatMetaPlugin, S as SafeInputPlugin } from './shared/unhead.CApf5sj3.mjs';
|
|
4
|
-
import './shared/unhead.DZbvapt-.mjs';
|
|
5
|
-
import './shared/unhead.C13swrCa.mjs';
|
|
6
|
-
import './shared/unhead.DQc16pHI.mjs';
|
|
7
|
-
import './shared/unhead.yem5I2v_.mjs';
|
|
8
|
-
|
|
9
|
-
function CanonicalPlugin(options) {
|
|
10
|
-
return (head) => {
|
|
11
|
-
function resolvePath(path) {
|
|
12
|
-
if (options?.customResolver) {
|
|
13
|
-
return options.customResolver(path);
|
|
14
|
-
}
|
|
15
|
-
let host = options.canonicalHost || (!head.ssr ? window.location.origin : "");
|
|
16
|
-
if (!host.startsWith("http") && !host.startsWith("//")) {
|
|
17
|
-
host = `https://${host}`;
|
|
18
|
-
}
|
|
19
|
-
host = new URL(host).origin;
|
|
20
|
-
if (path.startsWith("http") || path.startsWith("//"))
|
|
21
|
-
return path;
|
|
22
|
-
try {
|
|
23
|
-
return new URL(path, host).toString();
|
|
24
|
-
} catch {
|
|
25
|
-
return path;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
key: "canonical",
|
|
30
|
-
hooks: {
|
|
31
|
-
"tags:resolve": (ctx) => {
|
|
32
|
-
for (const tag of ctx.tags) {
|
|
33
|
-
if (tag.tag === "meta") {
|
|
34
|
-
if (tag.props.property?.startsWith("og:image") || tag.props.name?.startsWith("twitter:image")) {
|
|
35
|
-
tag.props.content = resolvePath(tag.props.content);
|
|
36
|
-
} else if (tag.props?.property === "og:url") {
|
|
37
|
-
tag.props.content = resolvePath(tag.props.content);
|
|
38
|
-
}
|
|
39
|
-
} else if (tag.tag === "link" && tag.props.rel === "canonical") {
|
|
40
|
-
tag.props.href = resolvePath(tag.props.href);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function InferSeoMetaPlugin(options = {}) {
|
|
50
|
-
return defineHeadPlugin((head) => {
|
|
51
|
-
head.push({
|
|
52
|
-
meta: [
|
|
53
|
-
{
|
|
54
|
-
name: "twitter:card",
|
|
55
|
-
content: options.twitterCard || "summary_large_image",
|
|
56
|
-
tagPriority: "low"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"property": "og:title",
|
|
60
|
-
"tagPriority": "low",
|
|
61
|
-
"data-infer": ""
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"property": "og:description",
|
|
65
|
-
"tagPriority": "low",
|
|
66
|
-
"data-infer": ""
|
|
67
|
-
}
|
|
68
|
-
]
|
|
69
|
-
});
|
|
70
|
-
return {
|
|
71
|
-
key: "infer-seo-meta",
|
|
72
|
-
hooks: {
|
|
73
|
-
"tags:beforeResolve": ({ tagMap }) => {
|
|
74
|
-
let title = head._title || "";
|
|
75
|
-
const titleTemplate = head._titleTemplate;
|
|
76
|
-
const ogTitle = tagMap.get("meta:og:title");
|
|
77
|
-
if (typeof ogTitle?.props["data-infer"] !== "undefined") {
|
|
78
|
-
if (titleTemplate) {
|
|
79
|
-
title = typeof titleTemplate === "function" ? titleTemplate(title) : titleTemplate.replace("%s", title);
|
|
80
|
-
}
|
|
81
|
-
ogTitle.props.content = options.ogTitle ? options.ogTitle(title) : title || "";
|
|
82
|
-
}
|
|
83
|
-
const description = tagMap.get("meta:description")?.props?.content;
|
|
84
|
-
const ogDescription = tagMap.get("meta:og:description");
|
|
85
|
-
if (typeof ogDescription?.props["data-infer"] !== "undefined") {
|
|
86
|
-
ogDescription.props.content = options.ogDescription ? options.ogDescription(description) : description || "";
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export { CanonicalPlugin, InferSeoMetaPlugin, defineHeadPlugin };
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import { a as createUnhead } from './shared/unhead.Txd0XTIP.mjs';
|
|
2
|
-
import { T as TagsWithInnerContent, S as SelfClosingTags$1 } from './shared/unhead.yem5I2v_.mjs';
|
|
3
|
-
import 'hookable';
|
|
4
|
-
import './shared/unhead.Cp0iF6eN.mjs';
|
|
5
|
-
import './shared/unhead.DZbvapt-.mjs';
|
|
6
|
-
|
|
7
|
-
// @__NO_SIDE_EFFECTS__
|
|
8
|
-
function createHead(options = {}) {
|
|
9
|
-
const unhead = createUnhead({
|
|
10
|
-
...options,
|
|
11
|
-
// @ts-expect-error untyped
|
|
12
|
-
document: false,
|
|
13
|
-
propResolvers: [
|
|
14
|
-
...options.propResolvers || [],
|
|
15
|
-
(k, v) => {
|
|
16
|
-
if (k && k.startsWith("on") && typeof v === "function") {
|
|
17
|
-
return `this.dataset.${k}fired = true`;
|
|
18
|
-
}
|
|
19
|
-
return v;
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
|
-
init: [
|
|
23
|
-
options.disableDefaults ? void 0 : {
|
|
24
|
-
htmlAttrs: {
|
|
25
|
-
lang: "en"
|
|
26
|
-
},
|
|
27
|
-
meta: [
|
|
28
|
-
{
|
|
29
|
-
charset: "utf-8"
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
name: "viewport",
|
|
33
|
-
content: "width=device-width, initial-scale=1"
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
},
|
|
37
|
-
...options.init || []
|
|
38
|
-
]
|
|
39
|
-
});
|
|
40
|
-
unhead._ssrPayload = {};
|
|
41
|
-
unhead.use({
|
|
42
|
-
key: "server",
|
|
43
|
-
hooks: {
|
|
44
|
-
"tags:resolve": function(ctx) {
|
|
45
|
-
const title = ctx.tagMap.get("title");
|
|
46
|
-
const titleTemplate = ctx.tagMap.get("titleTemplate");
|
|
47
|
-
let payload = {
|
|
48
|
-
title: title?.mode === "server" ? unhead._title : void 0,
|
|
49
|
-
titleTemplate: titleTemplate?.mode === "server" ? unhead._titleTemplate : void 0
|
|
50
|
-
};
|
|
51
|
-
if (Object.keys(unhead._ssrPayload || {}).length > 0) {
|
|
52
|
-
payload = {
|
|
53
|
-
...unhead._ssrPayload,
|
|
54
|
-
...payload
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
if (Object.values(payload).some(Boolean)) {
|
|
58
|
-
ctx.tags.push({
|
|
59
|
-
tag: "script",
|
|
60
|
-
innerHTML: JSON.stringify(payload),
|
|
61
|
-
props: { id: "unhead:payload", type: "application/json" }
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
return unhead;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const Attrs = /(\w+)(?:=["']([^"']*)["'])?/g;
|
|
71
|
-
const HtmlTag = /<html[^>]*>/;
|
|
72
|
-
const BodyTag = /<body[^>]*>/;
|
|
73
|
-
const HeadContent = /<head[^>]*>(.*?)<\/head>/s;
|
|
74
|
-
const SelfClosingTags = /<(meta|link|base)[^>]*>/g;
|
|
75
|
-
const ClosingTags = /<(title|script|style)[^>]*>[\s\S]*?<\/\1>/g;
|
|
76
|
-
const NewLines = /(\n\s*)+/g;
|
|
77
|
-
function extractAttributes(tag) {
|
|
78
|
-
const inner = tag.match(/<([^>]*)>/)?.[1].split(" ").slice(1).join(" ");
|
|
79
|
-
if (!inner)
|
|
80
|
-
return {};
|
|
81
|
-
const attrs = inner.match(Attrs);
|
|
82
|
-
return attrs?.reduce((acc, attr) => {
|
|
83
|
-
const sep = attr.indexOf("=");
|
|
84
|
-
const key = sep > 0 ? attr.slice(0, sep) : attr;
|
|
85
|
-
const val = sep > 0 ? attr.slice(sep + 1).slice(1, -1) : true;
|
|
86
|
-
return { ...acc, [key]: val };
|
|
87
|
-
}, {}) || {};
|
|
88
|
-
}
|
|
89
|
-
function extractUnheadInputFromHtml(html) {
|
|
90
|
-
const input = {};
|
|
91
|
-
input.htmlAttrs = extractAttributes(html.match(HtmlTag)?.[0] || "");
|
|
92
|
-
html = html.replace(HtmlTag, "<html>");
|
|
93
|
-
input.bodyAttrs = extractAttributes(html.match(BodyTag)?.[0] || "");
|
|
94
|
-
html = html.replace(BodyTag, "<body>");
|
|
95
|
-
const innerHead = html.match(HeadContent)?.[1] || "";
|
|
96
|
-
innerHead.match(SelfClosingTags)?.forEach((s) => {
|
|
97
|
-
html = html.replace(s, "");
|
|
98
|
-
const tag = s.split(" ")[0].slice(1);
|
|
99
|
-
input[tag] = input[tag] || [];
|
|
100
|
-
input[tag].push(extractAttributes(s));
|
|
101
|
-
});
|
|
102
|
-
innerHead.match(ClosingTags)?.map((tag) => tag.trim()).filter(Boolean).forEach((tag) => {
|
|
103
|
-
html = html.replace(tag, "");
|
|
104
|
-
const type = tag.match(/<([a-z-]+)/)?.[1];
|
|
105
|
-
const res = extractAttributes(tag);
|
|
106
|
-
const innerContent = tag.match(/>([\s\S]*)</)?.[1];
|
|
107
|
-
if (innerContent) {
|
|
108
|
-
res[type !== "script" ? "textContent" : "innerHTML"] = innerContent;
|
|
109
|
-
}
|
|
110
|
-
if (type === "title") {
|
|
111
|
-
input.title = res;
|
|
112
|
-
} else {
|
|
113
|
-
input[type] = input[type] || [];
|
|
114
|
-
input[type].push(res);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
html = html.replace(NewLines, "\n");
|
|
118
|
-
return { html, input };
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
function encodeAttribute(value) {
|
|
122
|
-
return String(value).replace(/"/g, """);
|
|
123
|
-
}
|
|
124
|
-
function propsToString(props) {
|
|
125
|
-
let attrs = "";
|
|
126
|
-
for (const key in props) {
|
|
127
|
-
if (!Object.hasOwn(props, key))
|
|
128
|
-
continue;
|
|
129
|
-
let value = props[key];
|
|
130
|
-
if ((key === "class" || key === "style") && typeof value !== "string") {
|
|
131
|
-
value = key === "class" ? Array.from(value).join(" ") : Array.from(value).map(([k, v]) => `${k}:${v}`).join(";");
|
|
132
|
-
}
|
|
133
|
-
if (value !== false && value !== null) {
|
|
134
|
-
attrs += value === true ? ` ${key}` : ` ${key}="${encodeAttribute(value)}"`;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return attrs;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
function escapeHtml(str) {
|
|
141
|
-
return str.replace(/[&<>"'/]/g, (char) => {
|
|
142
|
-
switch (char) {
|
|
143
|
-
case "&":
|
|
144
|
-
return "&";
|
|
145
|
-
case "<":
|
|
146
|
-
return "<";
|
|
147
|
-
case ">":
|
|
148
|
-
return ">";
|
|
149
|
-
case '"':
|
|
150
|
-
return """;
|
|
151
|
-
case "'":
|
|
152
|
-
return "'";
|
|
153
|
-
case "/":
|
|
154
|
-
return "/";
|
|
155
|
-
default:
|
|
156
|
-
return char;
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
function tagToString(tag) {
|
|
161
|
-
const attrs = propsToString(tag.props);
|
|
162
|
-
const openTag = `<${tag.tag}${attrs}>`;
|
|
163
|
-
if (!TagsWithInnerContent.has(tag.tag))
|
|
164
|
-
return SelfClosingTags$1.has(tag.tag) ? openTag : `${openTag}</${tag.tag}>`;
|
|
165
|
-
let content = String(tag.innerHTML || "");
|
|
166
|
-
if (tag.textContent)
|
|
167
|
-
content = escapeHtml(String(tag.textContent));
|
|
168
|
-
return SelfClosingTags$1.has(tag.tag) ? openTag : `${openTag}${content}</${tag.tag}>`;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
function ssrRenderTags(tags, options) {
|
|
172
|
-
const schema = { htmlAttrs: {}, bodyAttrs: {}, tags: { head: "", bodyClose: "", bodyOpen: "" } };
|
|
173
|
-
const lineBreaks = !options?.omitLineBreaks ? "\n" : "";
|
|
174
|
-
for (const tag of tags) {
|
|
175
|
-
if (tag.tag === "htmlAttrs" || tag.tag === "bodyAttrs") {
|
|
176
|
-
Object.assign(schema[tag.tag], tag.props);
|
|
177
|
-
continue;
|
|
178
|
-
}
|
|
179
|
-
const s = tagToString(tag);
|
|
180
|
-
const tagPosition = tag.tagPosition || "head";
|
|
181
|
-
schema.tags[tagPosition] += schema.tags[tagPosition] ? `${lineBreaks}${s}` : s;
|
|
182
|
-
}
|
|
183
|
-
return {
|
|
184
|
-
headTags: schema.tags.head,
|
|
185
|
-
bodyTags: schema.tags.bodyClose,
|
|
186
|
-
bodyTagsOpen: schema.tags.bodyOpen,
|
|
187
|
-
htmlAttrs: propsToString(schema.htmlAttrs),
|
|
188
|
-
bodyAttrs: propsToString(schema.bodyAttrs)
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
async function renderSSRHead(head, options) {
|
|
193
|
-
const beforeRenderCtx = { shouldRender: true };
|
|
194
|
-
await head.hooks.callHook("ssr:beforeRender", beforeRenderCtx);
|
|
195
|
-
if (!beforeRenderCtx.shouldRender) {
|
|
196
|
-
return {
|
|
197
|
-
headTags: "",
|
|
198
|
-
bodyTags: "",
|
|
199
|
-
bodyTagsOpen: "",
|
|
200
|
-
htmlAttrs: "",
|
|
201
|
-
bodyAttrs: ""
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
const ctx = { tags: options?.resolvedTags || await head.resolveTags() };
|
|
205
|
-
await head.hooks.callHook("ssr:render", ctx);
|
|
206
|
-
const html = ssrRenderTags(ctx.tags, options);
|
|
207
|
-
const renderCtx = { tags: ctx.tags, html };
|
|
208
|
-
await head.hooks.callHook("ssr:rendered", renderCtx);
|
|
209
|
-
return renderCtx.html;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
async function transformHtmlTemplate(head, html, options) {
|
|
213
|
-
const { html: parsedHtml, input } = extractUnheadInputFromHtml(html);
|
|
214
|
-
head.push(input, { _index: 0 });
|
|
215
|
-
const headHtml = await renderSSRHead(head, options);
|
|
216
|
-
return parsedHtml.replace("<html>", `<html${headHtml.htmlAttrs}>`).replace("<body>", `<body>${headHtml.bodyTagsOpen ? `
|
|
217
|
-
${headHtml.bodyTagsOpen}` : ``}`).replace("<body>", `<body${headHtml.bodyAttrs}>`).replace("</head>", `${headHtml.headTags}</head>`).replace("</body>", `${headHtml.bodyTags}</body>`);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
export { createHead, escapeHtml, extractUnheadInputFromHtml, propsToString, renderSSRHead, ssrRenderTags, tagToString, transformHtmlTemplate };
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
const SepSub = "%separator";
|
|
2
|
-
const SepSubRE = new RegExp(`${SepSub}(?:\\s*${SepSub})*`, "g");
|
|
3
|
-
function sub(p, token, isJson = false) {
|
|
4
|
-
let val;
|
|
5
|
-
if (token === "s" || token === "pageTitle") {
|
|
6
|
-
val = p.pageTitle;
|
|
7
|
-
} else if (token.includes(".")) {
|
|
8
|
-
const dotIndex = token.indexOf(".");
|
|
9
|
-
val = p[token.substring(0, dotIndex)]?.[token.substring(dotIndex + 1)];
|
|
10
|
-
} else {
|
|
11
|
-
val = p[token];
|
|
12
|
-
}
|
|
13
|
-
if (val !== void 0) {
|
|
14
|
-
return isJson ? (val || "").replace(/\\/g, "\\\\").replace(/</g, "\\u003C").replace(/"/g, '\\"') : val || "";
|
|
15
|
-
}
|
|
16
|
-
return void 0;
|
|
17
|
-
}
|
|
18
|
-
function processTemplateParams(s, p, sep, isJson = false) {
|
|
19
|
-
if (typeof s !== "string" || !s.includes("%"))
|
|
20
|
-
return s;
|
|
21
|
-
let decoded = s;
|
|
22
|
-
try {
|
|
23
|
-
decoded = decodeURI(s);
|
|
24
|
-
} catch {
|
|
25
|
-
}
|
|
26
|
-
const tokens = decoded.match(/%\w+(?:\.\w+)?/g);
|
|
27
|
-
if (!tokens) {
|
|
28
|
-
return s;
|
|
29
|
-
}
|
|
30
|
-
const hasSepSub = s.includes(SepSub);
|
|
31
|
-
s = s.replace(/%\w+(?:\.\w+)?/g, (token) => {
|
|
32
|
-
if (token === SepSub || !tokens.includes(token)) {
|
|
33
|
-
return token;
|
|
34
|
-
}
|
|
35
|
-
const re = sub(p, token.slice(1), isJson);
|
|
36
|
-
return re !== void 0 ? re : token;
|
|
37
|
-
}).trim();
|
|
38
|
-
if (hasSepSub) {
|
|
39
|
-
if (s.endsWith(SepSub))
|
|
40
|
-
s = s.slice(0, -SepSub.length);
|
|
41
|
-
if (s.startsWith(SepSub))
|
|
42
|
-
s = s.slice(SepSub.length);
|
|
43
|
-
s = s.replace(SepSubRE, sep || "").trim();
|
|
44
|
-
}
|
|
45
|
-
return s;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export { processTemplateParams as p };
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { u as unpackMeta } from './unhead.DQc16pHI.mjs';
|
|
2
|
-
|
|
3
|
-
function defineHeadPlugin(plugin) {
|
|
4
|
-
return plugin;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
const FlatMetaPlugin = /* @__PURE__ */ defineHeadPlugin({
|
|
8
|
-
key: "flatMeta",
|
|
9
|
-
hooks: {
|
|
10
|
-
"entries:normalize": (ctx) => {
|
|
11
|
-
const tagsToAdd = [];
|
|
12
|
-
ctx.tags = ctx.tags.map((t) => {
|
|
13
|
-
if (t.tag !== "_flatMeta") {
|
|
14
|
-
return t;
|
|
15
|
-
}
|
|
16
|
-
tagsToAdd.push(unpackMeta(t.props).map((p) => ({
|
|
17
|
-
...t,
|
|
18
|
-
tag: "meta",
|
|
19
|
-
props: p
|
|
20
|
-
})));
|
|
21
|
-
return false;
|
|
22
|
-
}).filter(Boolean).concat(...tagsToAdd);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
const WhitelistAttributes = {
|
|
28
|
-
htmlAttrs: /* @__PURE__ */ new Set(["class", "style", "lang", "dir"]),
|
|
29
|
-
bodyAttrs: /* @__PURE__ */ new Set(["class", "style"]),
|
|
30
|
-
meta: /* @__PURE__ */ new Set(["name", "property", "charset", "content", "media"]),
|
|
31
|
-
noscript: /* @__PURE__ */ new Set(["textContent"]),
|
|
32
|
-
style: /* @__PURE__ */ new Set(["media", "textContent", "nonce", "title", "blocking"]),
|
|
33
|
-
script: /* @__PURE__ */ new Set(["type", "textContent", "nonce", "blocking"]),
|
|
34
|
-
link: /* @__PURE__ */ new Set(["color", "crossorigin", "fetchpriority", "href", "hreflang", "imagesrcset", "imagesizes", "integrity", "media", "referrerpolicy", "rel", "sizes", "type"])
|
|
35
|
-
};
|
|
36
|
-
function acceptDataAttrs(value) {
|
|
37
|
-
return Object.fromEntries(
|
|
38
|
-
Object.entries(value || {}).filter(([key]) => key === "id" || key.startsWith("data-"))
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
function makeTagSafe(tag) {
|
|
42
|
-
let next = {};
|
|
43
|
-
const { tag: type, props: prev } = tag;
|
|
44
|
-
switch (type) {
|
|
45
|
-
// always safe
|
|
46
|
-
case "title":
|
|
47
|
-
case "titleTemplate":
|
|
48
|
-
case "templateParams":
|
|
49
|
-
next = prev;
|
|
50
|
-
break;
|
|
51
|
-
case "htmlAttrs":
|
|
52
|
-
case "bodyAttrs":
|
|
53
|
-
WhitelistAttributes[type].forEach((attr) => {
|
|
54
|
-
if (prev[attr]) {
|
|
55
|
-
next[attr] = prev[attr];
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
break;
|
|
59
|
-
case "style":
|
|
60
|
-
next = acceptDataAttrs(prev);
|
|
61
|
-
WhitelistAttributes.style.forEach((key) => {
|
|
62
|
-
if (prev[key]) {
|
|
63
|
-
next[key] = prev[key];
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
break;
|
|
67
|
-
// meta is safe, except for http-equiv
|
|
68
|
-
case "meta":
|
|
69
|
-
WhitelistAttributes.meta.forEach((key) => {
|
|
70
|
-
if (prev[key]) {
|
|
71
|
-
next[key] = prev[key];
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
break;
|
|
75
|
-
// link tags we don't allow stylesheets, scripts, preloading, prerendering, prefetching, etc
|
|
76
|
-
case "link":
|
|
77
|
-
WhitelistAttributes.link.forEach((key) => {
|
|
78
|
-
const val = prev[key];
|
|
79
|
-
if (!val) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
if (key === "rel" && (val === "canonical" || val === "modulepreload" || val === "prerender" || val === "preload" || val === "prefetch")) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
if (key === "href") {
|
|
86
|
-
if (val.includes("javascript:") || val.includes("data:")) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
next[key] = val;
|
|
90
|
-
} else if (val) {
|
|
91
|
-
next[key] = val;
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
if (!next.href && !next.imagesrcset || !next.rel) {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
break;
|
|
98
|
-
case "noscript":
|
|
99
|
-
WhitelistAttributes.noscript.forEach((key) => {
|
|
100
|
-
if (prev[key]) {
|
|
101
|
-
next[key] = prev[key];
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
break;
|
|
105
|
-
// we only allow JSON in scripts
|
|
106
|
-
case "script":
|
|
107
|
-
if (!tag.textContent || !prev.type?.endsWith("json")) {
|
|
108
|
-
return false;
|
|
109
|
-
}
|
|
110
|
-
WhitelistAttributes.script.forEach((s) => {
|
|
111
|
-
if (prev[s] === "textContent") {
|
|
112
|
-
try {
|
|
113
|
-
const jsonVal = typeof prev[s] === "string" ? JSON.parse(prev[s]) : prev[s];
|
|
114
|
-
next[s] = JSON.stringify(jsonVal, null, 0);
|
|
115
|
-
} catch {
|
|
116
|
-
}
|
|
117
|
-
} else if (prev[s]) {
|
|
118
|
-
next[s] = prev[s];
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
if (!Object.keys(next).length && !tag.tag.endsWith("Attrs")) {
|
|
124
|
-
return false;
|
|
125
|
-
}
|
|
126
|
-
tag.props = { ...acceptDataAttrs(prev), ...next };
|
|
127
|
-
return tag;
|
|
128
|
-
}
|
|
129
|
-
const SafeInputPlugin = (
|
|
130
|
-
/* @PURE */
|
|
131
|
-
defineHeadPlugin({
|
|
132
|
-
key: "safe",
|
|
133
|
-
hooks: {
|
|
134
|
-
"entries:normalize": (ctx) => {
|
|
135
|
-
if (ctx.entry.options?._safe) {
|
|
136
|
-
ctx.tags = ctx.tags.reduce((acc, tag) => {
|
|
137
|
-
const safeTag = makeTagSafe(tag);
|
|
138
|
-
if (safeTag)
|
|
139
|
-
acc.push(safeTag);
|
|
140
|
-
return acc;
|
|
141
|
-
}, []);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
})
|
|
146
|
-
);
|
|
147
|
-
|
|
148
|
-
export { FlatMetaPlugin as F, SafeInputPlugin as S, defineHeadPlugin as d };
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { U as UniqueTags, T as TagsWithInnerContent, M as MetaTagsArrayable, a as TagConfigKeys, D as DupeableTags } from './unhead.yem5I2v_.mjs';
|
|
2
|
-
|
|
3
|
-
const allowedMetaProperties = ["name", "property", "http-equiv"];
|
|
4
|
-
function isMetaArrayDupeKey(v) {
|
|
5
|
-
const k = v.split(":")[1];
|
|
6
|
-
return MetaTagsArrayable.has(k);
|
|
7
|
-
}
|
|
8
|
-
function dedupeKey(tag) {
|
|
9
|
-
const { props, tag: name } = tag;
|
|
10
|
-
if (UniqueTags.has(name))
|
|
11
|
-
return name;
|
|
12
|
-
if (name === "link" && props.rel === "canonical")
|
|
13
|
-
return "canonical";
|
|
14
|
-
if (props.charset)
|
|
15
|
-
return "charset";
|
|
16
|
-
if (tag.tag === "meta") {
|
|
17
|
-
for (const n of allowedMetaProperties) {
|
|
18
|
-
if (props[n] !== void 0) {
|
|
19
|
-
return `${name}:${props[n]}`;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
if (tag.key) {
|
|
24
|
-
return `${name}:key:${tag.key}`;
|
|
25
|
-
}
|
|
26
|
-
if (props.id) {
|
|
27
|
-
return `${name}:id:${props.id}`;
|
|
28
|
-
}
|
|
29
|
-
if (TagsWithInnerContent.has(name)) {
|
|
30
|
-
const v = tag.textContent || tag.innerHTML;
|
|
31
|
-
if (v) {
|
|
32
|
-
return `${name}:content:${v}`;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
function hashTag(tag) {
|
|
37
|
-
const dedupe = tag._h || tag._d;
|
|
38
|
-
if (dedupe)
|
|
39
|
-
return dedupe;
|
|
40
|
-
const inner = tag.textContent || tag.innerHTML;
|
|
41
|
-
if (inner)
|
|
42
|
-
return inner;
|
|
43
|
-
return `${tag.tag}:${Object.entries(tag.props).map(([k, v]) => `${k}:${String(v)}`).join(",")}`;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function walkResolver(val, resolve, key) {
|
|
47
|
-
const type = typeof val;
|
|
48
|
-
if (type === "function") {
|
|
49
|
-
if (!key || key !== "titleTemplate" && !(key[0] === "o" && key[1] === "n")) {
|
|
50
|
-
val = val();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
let v;
|
|
54
|
-
if (resolve) {
|
|
55
|
-
v = resolve(key, val);
|
|
56
|
-
}
|
|
57
|
-
if (Array.isArray(v)) {
|
|
58
|
-
return v.map((r) => walkResolver(r, resolve));
|
|
59
|
-
}
|
|
60
|
-
if (v?.constructor === Object) {
|
|
61
|
-
const next = {};
|
|
62
|
-
for (const key2 of Object.keys(v)) {
|
|
63
|
-
next[key2] = walkResolver(v[key2], resolve, key2);
|
|
64
|
-
}
|
|
65
|
-
return next;
|
|
66
|
-
}
|
|
67
|
-
return v;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function normalizeStyleClassProps(key, value) {
|
|
71
|
-
const store = key === "style" ? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Set();
|
|
72
|
-
function processValue(rawValue) {
|
|
73
|
-
const value2 = rawValue.trim();
|
|
74
|
-
if (!value2)
|
|
75
|
-
return;
|
|
76
|
-
if (key === "style") {
|
|
77
|
-
const [k, ...v] = value2.split(":").map((s) => s.trim());
|
|
78
|
-
if (k && v.length)
|
|
79
|
-
store.set(k, v.join(":"));
|
|
80
|
-
} else {
|
|
81
|
-
value2.split(" ").filter(Boolean).forEach((c) => store.add(c));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
if (typeof value === "string") {
|
|
85
|
-
key === "style" ? value.split(";").forEach(processValue) : processValue(value);
|
|
86
|
-
} else if (Array.isArray(value)) {
|
|
87
|
-
value.forEach((item) => processValue(item));
|
|
88
|
-
} else if (value && typeof value === "object") {
|
|
89
|
-
Object.entries(value).forEach(([k, v]) => {
|
|
90
|
-
if (v && v !== "false") {
|
|
91
|
-
key === "style" ? store.set(k.trim(), v) : processValue(k);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
return store;
|
|
96
|
-
}
|
|
97
|
-
function normalizeProps(tag, input) {
|
|
98
|
-
tag.props = tag.props || {};
|
|
99
|
-
if (!input) {
|
|
100
|
-
return tag;
|
|
101
|
-
}
|
|
102
|
-
Object.entries(input).forEach(([key, value]) => {
|
|
103
|
-
if (value === null) {
|
|
104
|
-
tag.props[key] = null;
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
if (key === "class" || key === "style") {
|
|
108
|
-
tag.props[key] = normalizeStyleClassProps(key, value);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
if (TagConfigKeys.has(key)) {
|
|
112
|
-
if (["textContent", "innerHTML"].includes(key) && typeof value === "object") {
|
|
113
|
-
let type = input.type;
|
|
114
|
-
if (!input.type) {
|
|
115
|
-
type = "application/json";
|
|
116
|
-
}
|
|
117
|
-
if (!type?.endsWith("json") && type !== "speculationrules") {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
input.type = type;
|
|
121
|
-
tag.props.type = type;
|
|
122
|
-
tag[key] = JSON.stringify(value);
|
|
123
|
-
} else {
|
|
124
|
-
tag[key] = value;
|
|
125
|
-
}
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
const strValue = String(value);
|
|
129
|
-
const isDataKey = key.startsWith("data-");
|
|
130
|
-
if (strValue === "true" || strValue === "") {
|
|
131
|
-
tag.props[key] = isDataKey ? strValue : true;
|
|
132
|
-
} else if (!value && isDataKey && strValue === "false") {
|
|
133
|
-
tag.props[key] = "false";
|
|
134
|
-
} else if (value !== void 0) {
|
|
135
|
-
tag.props[key] = value;
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
return tag;
|
|
139
|
-
}
|
|
140
|
-
function normalizeTag(tagName, _input) {
|
|
141
|
-
const input = typeof _input === "object" && typeof _input !== "function" ? _input : { [tagName === "script" || tagName === "noscript" || tagName === "style" ? "innerHTML" : "textContent"]: _input };
|
|
142
|
-
const tag = normalizeProps({ tag: tagName, props: {} }, input);
|
|
143
|
-
if (tag.key && DupeableTags.has(tag.tag)) {
|
|
144
|
-
tag.props["data-hid"] = tag._h = tag.key;
|
|
145
|
-
}
|
|
146
|
-
if (tag.tag === "script" && typeof tag.innerHTML === "object") {
|
|
147
|
-
tag.innerHTML = JSON.stringify(tag.innerHTML);
|
|
148
|
-
tag.props.type = tag.props.type || "application/json";
|
|
149
|
-
}
|
|
150
|
-
return Array.isArray(tag.props.content) ? tag.props.content.map((v) => ({ ...tag, props: { ...tag.props, content: v } })) : tag;
|
|
151
|
-
}
|
|
152
|
-
function normalizeEntryToTags(input, propResolvers) {
|
|
153
|
-
if (!input) {
|
|
154
|
-
return [];
|
|
155
|
-
}
|
|
156
|
-
if (typeof input === "function") {
|
|
157
|
-
input = input();
|
|
158
|
-
}
|
|
159
|
-
const resolvers = (key, val) => {
|
|
160
|
-
for (let i = 0; i < propResolvers.length; i++) {
|
|
161
|
-
val = propResolvers[i](key, val);
|
|
162
|
-
}
|
|
163
|
-
return val;
|
|
164
|
-
};
|
|
165
|
-
input = resolvers(void 0, input);
|
|
166
|
-
const tags = [];
|
|
167
|
-
input = walkResolver(input, resolvers);
|
|
168
|
-
Object.entries(input || {}).forEach(([key, value]) => {
|
|
169
|
-
if (value === void 0)
|
|
170
|
-
return;
|
|
171
|
-
for (const v of Array.isArray(value) ? value : [value])
|
|
172
|
-
tags.push(normalizeTag(key, v));
|
|
173
|
-
});
|
|
174
|
-
return tags.flat();
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
export { normalizeProps as a, dedupeKey as d, hashTag as h, isMetaArrayDupeKey as i, normalizeEntryToTags as n, walkResolver as w };
|