@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.
Files changed (131) hide show
  1. package/package.json +14 -7
  2. package/.output/nitro.json +0 -15
  3. package/.output/public/_nuxt/1_b4y8eQ.js +0 -1
  4. package/.output/public/_nuxt/BjOhMR1f.js +0 -242
  5. package/.output/public/_nuxt/CPAAHz3G.js +0 -1
  6. package/.output/public/_nuxt/CmGpyJTe.js +0 -1
  7. package/.output/public/_nuxt/builds/latest.json +0 -1
  8. package/.output/public/_nuxt/builds/meta/f777d22c-e958-4e7c-865d-11bb8a560858.json +0 -1
  9. package/.output/public/_nuxt/entry.Vs8IncyG.css +0 -5
  10. package/.output/public/_nuxt/error-404.BJkSn6RI.css +0 -1
  11. package/.output/public/_nuxt/error-500.TOCKLquH.css +0 -1
  12. package/.output/public/_nuxt/materialdesignicons-webfont.B6OSyW2I.woff2 +0 -0
  13. package/.output/public/_nuxt/materialdesignicons-webfont.BpRar1d5.ttf +0 -0
  14. package/.output/public/_nuxt/materialdesignicons-webfont.Bvl3VxMs.woff +0 -0
  15. package/.output/public/_nuxt/materialdesignicons-webfont.TEmAk13K.eot +0 -0
  16. package/.output/public/favicon.ico +0 -0
  17. package/.output/public/libavoid.wasm +0 -0
  18. package/.output/public/robots.txt +0 -1
  19. package/.output/server/index.mjs +0 -11426
  20. package/.output/server/index.mjs.map +0 -1
  21. package/.output/server/node_modules/@babel/parser/lib/index.js +0 -14246
  22. package/.output/server/node_modules/@babel/parser/package.json +0 -50
  23. package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/fetchRequestHandler.mjs +0 -74
  24. package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/index.mjs +0 -1
  25. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/incomingMessageToRequest.mjs +0 -119
  26. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/index.mjs +0 -2
  27. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +0 -92
  28. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/writeResponse.mjs +0 -79
  29. package/.output/server/node_modules/@trpc/server/dist/index.mjs +0 -12
  30. package/.output/server/node_modules/@trpc/server/dist/observable/observable.mjs +0 -175
  31. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/createProxy.mjs +0 -73
  32. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/TRPCError.mjs +0 -79
  33. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/formatter.mjs +0 -5
  34. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/getErrorShape.mjs +0 -29
  35. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/abortError.mjs +0 -10
  36. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/contentType.mjs +0 -229
  37. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +0 -76
  38. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/parseConnectionParams.mjs +0 -39
  39. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/resolveResponse.mjs +0 -570
  40. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/initTRPC.mjs +0 -80
  41. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/middleware.mjs +0 -90
  42. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/parser.mjs +0 -52
  43. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedureBuilder.mjs +0 -198
  44. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rootConfig.mjs +0 -6
  45. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/router.mjs +0 -278
  46. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rpc/codes.mjs +0 -54
  47. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/jsonl.mjs +0 -603
  48. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/sse.mjs +0 -369
  49. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/tracked.mjs +0 -25
  50. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +0 -165
  51. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +0 -15
  52. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +0 -43
  53. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/mergeAsyncIterables.mjs +0 -239
  54. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +0 -23
  55. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +0 -23
  56. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +0 -127
  57. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/transformer.mjs +0 -101
  58. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/utils.mjs +0 -83
  59. package/.output/server/node_modules/@trpc/server/dist/vendor/standard-schema-v1/error.mjs +0 -26
  60. package/.output/server/node_modules/@trpc/server/dist/vendor/unpromise/unpromise.mjs +0 -289
  61. package/.output/server/node_modules/@trpc/server/package.json +0 -156
  62. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +0 -6690
  63. package/.output/server/node_modules/@vue/compiler-core/package.json +0 -58
  64. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +0 -686
  65. package/.output/server/node_modules/@vue/compiler-dom/package.json +0 -57
  66. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +0 -1404
  67. package/.output/server/node_modules/@vue/compiler-ssr/package.json +0 -34
  68. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +0 -1789
  69. package/.output/server/node_modules/@vue/reactivity/package.json +0 -55
  70. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +0 -6654
  71. package/.output/server/node_modules/@vue/runtime-core/package.json +0 -52
  72. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +0 -1669
  73. package/.output/server/node_modules/@vue/runtime-dom/package.json +0 -60
  74. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +0 -857
  75. package/.output/server/node_modules/@vue/server-renderer/package.json +0 -55
  76. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +0 -594
  77. package/.output/server/node_modules/@vue/shared/package.json +0 -47
  78. package/.output/server/node_modules/devalue/index.js +0 -3
  79. package/.output/server/node_modules/devalue/package.json +0 -34
  80. package/.output/server/node_modules/devalue/src/base64.js +0 -110
  81. package/.output/server/node_modules/devalue/src/constants.js +0 -6
  82. package/.output/server/node_modules/devalue/src/parse.js +0 -160
  83. package/.output/server/node_modules/devalue/src/stringify.js +0 -232
  84. package/.output/server/node_modules/devalue/src/uneval.js +0 -351
  85. package/.output/server/node_modules/devalue/src/utils.js +0 -113
  86. package/.output/server/node_modules/entities/lib/decode.js +0 -536
  87. package/.output/server/node_modules/entities/lib/decode_codepoint.js +0 -76
  88. package/.output/server/node_modules/entities/lib/generated/decode-data-html.js +0 -9
  89. package/.output/server/node_modules/entities/lib/generated/decode-data-xml.js +0 -9
  90. package/.output/server/node_modules/entities/package.json +0 -90
  91. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +0 -344
  92. package/.output/server/node_modules/estree-walker/package.json +0 -37
  93. package/.output/server/node_modules/hookable/dist/index.mjs +0 -290
  94. package/.output/server/node_modules/hookable/package.json +0 -49
  95. package/.output/server/node_modules/source-map-js/lib/array-set.js +0 -121
  96. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +0 -140
  97. package/.output/server/node_modules/source-map-js/lib/base64.js +0 -67
  98. package/.output/server/node_modules/source-map-js/lib/binary-search.js +0 -111
  99. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +0 -79
  100. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +0 -132
  101. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +0 -1188
  102. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +0 -444
  103. package/.output/server/node_modules/source-map-js/lib/source-node.js +0 -413
  104. package/.output/server/node_modules/source-map-js/lib/util.js +0 -594
  105. package/.output/server/node_modules/source-map-js/package.json +0 -71
  106. package/.output/server/node_modules/source-map-js/source-map.js +0 -8
  107. package/.output/server/node_modules/ufo/dist/index.mjs +0 -630
  108. package/.output/server/node_modules/ufo/package.json +0 -47
  109. package/.output/server/node_modules/unhead/dist/plugins.mjs +0 -94
  110. package/.output/server/node_modules/unhead/dist/server.mjs +0 -220
  111. package/.output/server/node_modules/unhead/dist/shared/unhead.C13swrCa.mjs +0 -48
  112. package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +0 -148
  113. package/.output/server/node_modules/unhead/dist/shared/unhead.Cp0iF6eN.mjs +0 -177
  114. package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +0 -196
  115. package/.output/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs +0 -70
  116. package/.output/server/node_modules/unhead/dist/shared/unhead.DeCxexjU.mjs +0 -166
  117. package/.output/server/node_modules/unhead/dist/shared/unhead.Txd0XTIP.mjs +0 -172
  118. package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +0 -38
  119. package/.output/server/node_modules/unhead/dist/utils.mjs +0 -5
  120. package/.output/server/node_modules/unhead/package.json +0 -101
  121. package/.output/server/node_modules/vue/dist/vue.cjs.js +0 -80
  122. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +0 -66
  123. package/.output/server/node_modules/vue/index.js +0 -7
  124. package/.output/server/node_modules/vue/index.mjs +0 -1
  125. package/.output/server/node_modules/vue/package.json +0 -112
  126. package/.output/server/node_modules/vue/server-renderer/index.mjs +0 -1
  127. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +0 -196
  128. package/.output/server/node_modules/vue-bundle-renderer/package.json +0 -50
  129. package/.output/server/node_modules/zod/lib/index.mjs +0 -4405
  130. package/.output/server/node_modules/zod/package.json +0 -122
  131. 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, "&quot;");
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 "&amp;";
145
- case "<":
146
- return "&lt;";
147
- case ">":
148
- return "&gt;";
149
- case '"':
150
- return "&quot;";
151
- case "'":
152
- return "&#x27;";
153
- case "/":
154
- return "&#x2F;";
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 };