unhead 3.1.6 → 3.1.7
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/dist/client.d.mts +5 -6
- package/dist/client.d.ts +5 -6
- package/dist/client.mjs +7 -12
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +15 -10
- package/dist/legacy.d.mts +2 -2
- package/dist/legacy.d.ts +2 -2
- package/dist/legacy.mjs +9 -9
- package/dist/parser.mjs +11 -7
- package/dist/plugins.d.mts +2 -2
- package/dist/plugins.d.ts +2 -2
- package/dist/plugins.mjs +7 -7
- package/dist/scripts.d.mts +3 -3
- package/dist/scripts.d.ts +3 -3
- package/dist/scripts.mjs +2 -3
- package/dist/server.d.mts +3 -3
- package/dist/server.d.ts +3 -3
- package/dist/server.mjs +5 -5
- package/dist/shared/{unhead.fg-0ge_u.mjs → unhead.1eoQpFT1.mjs} +6 -1
- package/dist/shared/{unhead.CRVUlr67.d.mts → unhead.BIArU35P.d.mts} +1 -1
- package/dist/shared/{unhead.BSqa2bYq.mjs → unhead.BNhb5t7_.mjs} +4 -6
- package/dist/shared/{unhead.BeIvDlYY.d.mts → unhead.BZy3nXHx.d.mts} +1 -1
- package/dist/shared/{unhead.DvIxXxuO.mjs → unhead.Bm4Y6XQI.mjs} +3 -0
- package/dist/shared/{unhead.B37CPNIq.d.mts → unhead.Bx2bAQEg.d.mts} +1 -1
- package/dist/shared/{unhead.D-W0R71w.mjs → unhead.C-RMAxyM.mjs} +27 -38
- package/dist/shared/{unhead.CS8tFxG3.d.mts → unhead.CELAVVhh.d.mts} +3 -5
- package/dist/shared/unhead.CHEy9ana.mjs +7 -0
- package/dist/shared/{unhead.BhvKU-Uu.d.ts → unhead.CN7FHaDF.d.ts} +1 -1
- package/dist/shared/{unhead.H5gLMTHA.mjs → unhead.CR32jx68.mjs} +125 -35
- package/dist/shared/{unhead.CBkhoTGw.mjs → unhead.CT1xoGPh.mjs} +1 -1
- package/dist/shared/unhead.CaGVnLUe.mjs +231 -0
- package/dist/shared/{unhead.YBmQyFpm.d.ts → unhead.Cnhe7n9-.d.ts} +1 -1
- package/dist/shared/{unhead.Blkhu0Cr.d.ts → unhead.DQadHCLi.d.ts} +1 -1
- package/dist/shared/{unhead.CBj56GgY.d.ts → unhead.Dv-MkoX9.d.ts} +3 -5
- package/dist/shared/{unhead.CfgPMHXt.mjs → unhead.WK9wg_ep.mjs} +2 -0
- package/dist/shared/{unhead.Doc2Fa-a.mjs → unhead.YIW3bMYK.mjs} +64 -33
- package/dist/shared/{unhead.BZYKjYpn.mjs → unhead.b15Kg1OH.mjs} +3 -3
- package/dist/shared/{unhead.J7mPNB3E.mjs → unhead.tpXvlPwt.mjs} +53 -34
- package/dist/shared/{unhead.BWKj-eGY.d.ts → unhead.xa1ebPBp.d.ts} +1 -1
- package/dist/shared/{unhead.BO2PdEL4.d.mts → unhead.zyZmXwAG.d.mts} +1 -1
- package/dist/stream/client.d.mts +2 -2
- package/dist/stream/client.d.ts +2 -2
- package/dist/stream/client.mjs +3 -8
- package/dist/stream/iife.d.cts +2 -0
- package/dist/stream/iife.global.js +1 -1
- package/dist/stream/iife.mjs +2 -2
- package/dist/stream/server.d.mts +2 -2
- package/dist/stream/server.d.ts +2 -2
- package/dist/stream/server.mjs +5 -5
- package/dist/stream/unplugin.d.mts +3 -1
- package/dist/stream/unplugin.d.ts +3 -1
- package/dist/stream/unplugin.mjs +28 -6
- package/dist/types.d.mts +2 -2
- package/dist/types.d.ts +2 -2
- package/dist/utils.d.mts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.mjs +4 -4
- package/package.json +2 -2
- package/dist/shared/unhead.CT3gGqve.mjs +0 -154
- package/dist/shared/unhead.CUXLLRtV.mjs +0 -5
package/dist/stream/server.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { parseHtmlForIndexes, applyHeadToHtml } from '../parser.mjs';
|
|
2
|
-
import { c as createHead } from '../shared/unhead.
|
|
2
|
+
import { c as createHead } from '../shared/unhead.C-RMAxyM.mjs';
|
|
3
3
|
import { DEFAULT_STREAM_KEY } from './client.mjs';
|
|
4
|
-
import '../shared/unhead.
|
|
5
|
-
import '../shared/unhead.
|
|
4
|
+
import '../shared/unhead.WK9wg_ep.mjs';
|
|
5
|
+
import '../shared/unhead.Bm4Y6XQI.mjs';
|
|
6
6
|
import 'hookable';
|
|
7
|
-
import '../shared/unhead.
|
|
8
|
-
import '../shared/unhead.
|
|
7
|
+
import '../shared/unhead.CR32jx68.mjs';
|
|
8
|
+
import '../shared/unhead.1eoQpFT1.mjs';
|
|
9
9
|
|
|
10
10
|
const LT_RE = /</g;
|
|
11
11
|
const GT_RE = />/g;
|
|
@@ -68,7 +68,9 @@ interface StreamingPluginOptions {
|
|
|
68
68
|
* - vite dev (v6+ environments): `this.environment.name === 'ssr'` per-transform
|
|
69
69
|
* - webpack/rspack: `compiler.options.name === 'server'` or `target === 'node'`
|
|
70
70
|
*/
|
|
71
|
-
declare function buildStreamingPluginOptions(options: StreamingPluginOptions
|
|
71
|
+
declare function buildStreamingPluginOptions(options: StreamingPluginOptions, meta?: {
|
|
72
|
+
framework?: string;
|
|
73
|
+
}): UnpluginOptions;
|
|
72
74
|
/**
|
|
73
75
|
* Internal cross-bundler unplugin factory. Framework wrappers pick a single bundler's
|
|
74
76
|
* output (`.vite`, `.webpack`, `.rspack`, etc.) to expose via their own subpath export.
|
|
@@ -68,7 +68,9 @@ interface StreamingPluginOptions {
|
|
|
68
68
|
* - vite dev (v6+ environments): `this.environment.name === 'ssr'` per-transform
|
|
69
69
|
* - webpack/rspack: `compiler.options.name === 'server'` or `target === 'node'`
|
|
70
70
|
*/
|
|
71
|
-
declare function buildStreamingPluginOptions(options: StreamingPluginOptions
|
|
71
|
+
declare function buildStreamingPluginOptions(options: StreamingPluginOptions, meta?: {
|
|
72
|
+
framework?: string;
|
|
73
|
+
}): UnpluginOptions;
|
|
72
74
|
/**
|
|
73
75
|
* Internal cross-bundler unplugin factory. Framework wrappers pick a single bundler's
|
|
74
76
|
* output (`.vite`, `.webpack`, `.rspack`, etc.) to expose via their own subpath export.
|
package/dist/stream/unplugin.mjs
CHANGED
|
@@ -27,7 +27,7 @@ function buildClientStub(framework, streamKey, warnOnMissing) {
|
|
|
27
27
|
return `import{createHead}from'${framework}/client'
|
|
28
28
|
const s=window[${key}];if(s){const q=s._q;s._q=[];const h=createHead({document});q.forEach(e=>h.push(e));s.push=e=>h.push(e);s._head=h}${warnBranch}`;
|
|
29
29
|
}
|
|
30
|
-
function buildStreamingPluginOptions(options) {
|
|
30
|
+
function buildStreamingPluginOptions(options, meta = {}) {
|
|
31
31
|
const {
|
|
32
32
|
framework,
|
|
33
33
|
name,
|
|
@@ -37,6 +37,7 @@ function buildStreamingPluginOptions(options) {
|
|
|
37
37
|
warnOnMissingServerBootstrap
|
|
38
38
|
} = options;
|
|
39
39
|
const state = {
|
|
40
|
+
isVite: meta.framework === "vite",
|
|
40
41
|
isBuild: false,
|
|
41
42
|
ssr: false
|
|
42
43
|
};
|
|
@@ -47,15 +48,31 @@ function buildStreamingPluginOptions(options) {
|
|
|
47
48
|
function warnEnabled() {
|
|
48
49
|
return warnOnMissingServerBootstrap ?? !state.isBuild;
|
|
49
50
|
}
|
|
51
|
+
function resolveEmittedIifePath(hookThis, ctx) {
|
|
52
|
+
const ref = state.emittedIifeFileId;
|
|
53
|
+
if (!ref)
|
|
54
|
+
return;
|
|
55
|
+
for (const asset of Object.values(ctx?.bundle || {})) {
|
|
56
|
+
if (asset?.type === "asset" && asset.fileName && (asset.name === "unhead-streaming.js" || asset.names?.includes("unhead-streaming.js")))
|
|
57
|
+
return asset.fileName;
|
|
58
|
+
}
|
|
59
|
+
if (typeof hookThis?.getFileName === "function") {
|
|
60
|
+
const fileName = hookThis.getFileName(ref);
|
|
61
|
+
if (fileName && fileName !== ref)
|
|
62
|
+
return fileName;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
50
65
|
return {
|
|
51
66
|
name: name ?? `${framework}:streaming`,
|
|
52
67
|
enforce: "pre",
|
|
53
68
|
async buildStart() {
|
|
69
|
+
if (!state.isVite || mode === "module")
|
|
70
|
+
return;
|
|
54
71
|
await loadIifeCode();
|
|
55
72
|
if (mode === "async" && state.isBuild && typeof this.emitFile === "function") {
|
|
56
73
|
if (!iifeCode)
|
|
57
74
|
throw new Error("[unhead] Streaming IIFE not built. Run `pnpm build` in packages/unhead first.");
|
|
58
|
-
state.
|
|
75
|
+
state.emittedIifeFileId = this.emitFile({
|
|
59
76
|
type: "asset",
|
|
60
77
|
name: "unhead-streaming.js",
|
|
61
78
|
source: iifeCode
|
|
@@ -67,7 +84,7 @@ function buildStreamingPluginOptions(options) {
|
|
|
67
84
|
handler(id) {
|
|
68
85
|
if (id === VIRTUAL_CLIENT_ID || id === `/${VIRTUAL_CLIENT_ID}`)
|
|
69
86
|
return RESOLVED_ID;
|
|
70
|
-
if (id === VIRTUAL_IIFE_ID || id === `/${VIRTUAL_IIFE_ID}`)
|
|
87
|
+
if (state.isVite && (id === VIRTUAL_IIFE_ID || id === `/${VIRTUAL_IIFE_ID}`))
|
|
71
88
|
return RESOLVED_IIFE_ID;
|
|
72
89
|
}
|
|
73
90
|
},
|
|
@@ -84,6 +101,8 @@ function buildStreamingPluginOptions(options) {
|
|
|
84
101
|
};
|
|
85
102
|
}
|
|
86
103
|
if (id === RESOLVED_IIFE_ID) {
|
|
104
|
+
if (!state.isVite)
|
|
105
|
+
return;
|
|
87
106
|
if (isSSR)
|
|
88
107
|
return { code: "", moduleType: "js" };
|
|
89
108
|
if (!iifeCode)
|
|
@@ -112,6 +131,7 @@ function buildStreamingPluginOptions(options) {
|
|
|
112
131
|
},
|
|
113
132
|
vite: {
|
|
114
133
|
apply(_config, env) {
|
|
134
|
+
state.isVite = true;
|
|
115
135
|
if (env.isSsrBuild)
|
|
116
136
|
state.ssr = true;
|
|
117
137
|
if (env.command === "build")
|
|
@@ -119,6 +139,7 @@ function buildStreamingPluginOptions(options) {
|
|
|
119
139
|
return true;
|
|
120
140
|
},
|
|
121
141
|
configResolved(config) {
|
|
142
|
+
state.isVite = true;
|
|
122
143
|
if (config.command === "build")
|
|
123
144
|
state.isBuild = true;
|
|
124
145
|
},
|
|
@@ -129,7 +150,7 @@ function buildStreamingPluginOptions(options) {
|
|
|
129
150
|
// full Vite plugin pipeline (resolveId/load) and aren't stripped or
|
|
130
151
|
// rewritten by downstream HTML transforms.
|
|
131
152
|
order: "pre",
|
|
132
|
-
handler() {
|
|
153
|
+
handler(_html, ctx) {
|
|
133
154
|
const nonceValue = resolveNonce(nonce);
|
|
134
155
|
const nonceAttr = nonceValue ? { nonce: nonceValue } : {};
|
|
135
156
|
if (mode === "inline") {
|
|
@@ -143,7 +164,8 @@ function buildStreamingPluginOptions(options) {
|
|
|
143
164
|
}];
|
|
144
165
|
}
|
|
145
166
|
if (mode === "async") {
|
|
146
|
-
const
|
|
167
|
+
const fileName = state.isBuild ? resolveEmittedIifePath(this, ctx) : void 0;
|
|
168
|
+
const src = fileName ? `/${fileName}` : `/${VIRTUAL_IIFE_ID}`;
|
|
147
169
|
return [{
|
|
148
170
|
tag: "script",
|
|
149
171
|
attrs: { ...nonceAttr, async: true, src },
|
|
@@ -161,6 +183,6 @@ function buildStreamingPluginOptions(options) {
|
|
|
161
183
|
}
|
|
162
184
|
};
|
|
163
185
|
}
|
|
164
|
-
const createStreamingPlugin = createUnplugin(buildStreamingPluginOptions);
|
|
186
|
+
const createStreamingPlugin = /* @__PURE__ */ createUnplugin(buildStreamingPluginOptions);
|
|
165
187
|
|
|
166
188
|
export { VIRTUAL_CLIENT_ID, VIRTUAL_IIFE_ID, buildStreamingPluginOptions, createStreamingPlugin };
|
package/dist/types.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { A as ActiveHeadEntry, g as AsVoidFunctions, d as ClientHeadHooks, h as CoreHeadHooks, C as CreateClientHeadOptions, c as CreateHeadOptions, a as CreateServerHeadOptions, e as CreateStreamableServerHeadOptions, D as DOMHeadHooks, i as DomBeforeRenderCtx, j as DomRenderTagContext, k as DomState, E as EntryResolveCtx, l as EventHandlerOptions, m as HeadEntry, n as HeadEntryOptions, o as HeadHooks, p as HeadPlugin, H as HeadPluginInput, q as HeadPluginOptions, b as HeadRenderer, r as HookResult, P as PropResolver, R as RecordingEntry, s as RenderSSRHeadOptions, t as SSRHeadHooks, S as SSRHeadPayload, u as SSRRenderContext, v as ScriptInstance, f as ServerHeadHooks, w as ShouldRenderContext, x as SideEffectsRecord, y as SyncHookResult, U as Unhead, z as UseFunctionType, B as UseScriptContext, F as UseScriptInput, G as UseScriptOptions, I as UseScriptResolvedInput, J as UseScriptReturn, K as UseScriptStatus, W as WarmupStrategy } from './shared/unhead.
|
|
1
|
+
export { A as ActiveHeadEntry, g as AsVoidFunctions, d as ClientHeadHooks, h as CoreHeadHooks, C as CreateClientHeadOptions, c as CreateHeadOptions, a as CreateServerHeadOptions, e as CreateStreamableServerHeadOptions, D as DOMHeadHooks, i as DomBeforeRenderCtx, j as DomRenderTagContext, k as DomState, E as EntryResolveCtx, l as EventHandlerOptions, m as HeadEntry, n as HeadEntryOptions, o as HeadHooks, p as HeadPlugin, H as HeadPluginInput, q as HeadPluginOptions, b as HeadRenderer, r as HookResult, P as PropResolver, R as RecordingEntry, s as RenderSSRHeadOptions, t as SSRHeadHooks, S as SSRHeadPayload, u as SSRRenderContext, v as ScriptInstance, f as ServerHeadHooks, w as ShouldRenderContext, x as SideEffectsRecord, y as SyncHookResult, U as Unhead, z as UseFunctionType, B as UseScriptContext, F as UseScriptInput, G as UseScriptOptions, I as UseScriptResolvedInput, J as UseScriptReturn, K as UseScriptStatus, W as WarmupStrategy } from './shared/unhead.CELAVVhh.mjs';
|
|
2
2
|
export { R as RenderDomHeadOptions } from './shared/unhead.GpD0t1jW.mjs';
|
|
3
3
|
export { B as Base, a as BodyAttributes, H as HeadSafe, b as HtmlAttributes, N as Noscript, S as SafeBodyAttr, c as SafeHtmlAttr, d as SafeLink, e as SafeMeta, f as SafeNoscript, g as SafeScript, h as SafeStyle, i as Style } from './shared/unhead.CpKzP6LT.mjs';
|
|
4
4
|
import { B as Booleanable } from './shared/unhead.Dl7UHSN0.mjs';
|
|
5
5
|
export { A as AlternateFeedLink, a as AlternateLanguageLink, b as AlternateLink, c as AlternateMediaLink, d as AlternateStylesheetLink, e as AmpHtmlLink, f as AppleTouchIconLink, g as AppleTouchStartupImageLink, h as ApplicationJsonScript, i as Arrayable, j as AuthorLink, k as BareAlternateLink, l as BodyAttributesWithoutEvents, m as BodyEvents, C as CanonicalLink, n as CharsetMeta, o as CompressionDictionaryLink, D as DataKeys, p as DeepReadonly, q as DeepResolvableProperties, r as DnsPrefetchLink, E as ExpectLink, s as ExternalScript, F as FaviconLink, G as GenericLink, t as GenericScript, u as GlobalAttributes, H as HasTemplateParams, v as HeadTag, w as HeadTagKeys, x as HelpLink, y as HttpEquivMeta, z as HttpEventAttributes, I as HubLink, J as IconLink, K as ImportMapConfig, L as ImportMapScript, M as InferLink, N as InferScript, O as InlineModuleScript, P as InlineScript, Q as InnerContent, T as InnerContentVal, U as InternalTagKey, V as JsonLdScript, W as KnownLinkRel, X as KnownScriptType, Y as LicenseLink, Z as Link, _ as LinkBase, $ as LinkHttpEvents, a0 as ManifestLink, a1 as MaskIconLink, a2 as MaybeArray, a3 as MaybeEventFnHandlers, a4 as MeLink, a5 as Meta, a6 as MetaBase, a7 as MetaFlat, a8 as MetaGeneric, a9 as MetaNames, aa as MetaProperties, ab as ModuleScript, ac as ModulepreloadLink, ad as NameMeta, ae as Never, af as NextLink, ag as PingbackLink, ah as PreconnectLink, ai as PrefetchLink, aj as PreloadFontLink, ak as PreloadImageLink, al as PreloadLink, am as PreloadLinkBase, an as PreloadOtherLink, ao as PreloadScriptLink, ap as PreloadStyleLink, aq as PrerenderLink, ar as PrevLink, as as PrivacyPolicyLink, at as ProcessesTemplateParams, au as PropertyMeta, av as RawInput, aw as ResolvableBase, ax as ResolvableBodyAttributes, R as ResolvableHead, ay as ResolvableHtmlAttributes, az as ResolvableLink, aA as ResolvableMeta, aB as ResolvableNoscript, aC as ResolvableProperties, aD as ResolvableScript, aE as ResolvableStyle, aF as ResolvableTemplateParams, aG as ResolvableTitle, aH as ResolvableTitleTemplate, aI as ResolvableUnion, aJ as ResolvableValue, aK as ResolvesDuplicates, aL as SchemaAugmentations, aM as Script, aN as ScriptBase, aO as ScriptHttpEvents, aP as SearchLink, S as SerializableHead, aQ as SitemapLink, aR as SpeculationRules, aS as SpeculationRulesScript, aT as StringInnerContent, aU as Stringable, aV as StylesheetLink, aW as TagKey, aX as TagPosition, aY as TagPriority, aZ as TagUserProperties, a_ as TemplateParams, a$ as TemplateParamsAugmentations, b0 as TermsOfServiceLink, b1 as UnheadBodyAttributesWithoutEvents, b2 as UnheadHtmlAttributes, b3 as UnheadMeta, b4 as UseHeadInput, b5 as UseSeoMetaInput, b6 as ValidTagPositions, b7 as WebmentionLink } from './shared/unhead.Dl7UHSN0.mjs';
|
|
6
6
|
export { createSpyProxy } from './scripts.mjs';
|
|
7
|
-
export { u as useScript } from './shared/unhead.
|
|
7
|
+
export { u as useScript } from './shared/unhead.zyZmXwAG.mjs';
|
|
8
8
|
import 'hookable';
|
|
9
9
|
|
|
10
10
|
interface AriaAttributes {
|
package/dist/types.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { A as ActiveHeadEntry, g as AsVoidFunctions, d as ClientHeadHooks, h as CoreHeadHooks, C as CreateClientHeadOptions, c as CreateHeadOptions, a as CreateServerHeadOptions, e as CreateStreamableServerHeadOptions, D as DOMHeadHooks, i as DomBeforeRenderCtx, j as DomRenderTagContext, k as DomState, E as EntryResolveCtx, l as EventHandlerOptions, m as HeadEntry, n as HeadEntryOptions, o as HeadHooks, p as HeadPlugin, H as HeadPluginInput, q as HeadPluginOptions, b as HeadRenderer, r as HookResult, P as PropResolver, R as RecordingEntry, s as RenderSSRHeadOptions, t as SSRHeadHooks, S as SSRHeadPayload, u as SSRRenderContext, v as ScriptInstance, f as ServerHeadHooks, w as ShouldRenderContext, x as SideEffectsRecord, y as SyncHookResult, U as Unhead, z as UseFunctionType, B as UseScriptContext, F as UseScriptInput, G as UseScriptOptions, I as UseScriptResolvedInput, J as UseScriptReturn, K as UseScriptStatus, W as WarmupStrategy } from './shared/unhead.
|
|
1
|
+
export { A as ActiveHeadEntry, g as AsVoidFunctions, d as ClientHeadHooks, h as CoreHeadHooks, C as CreateClientHeadOptions, c as CreateHeadOptions, a as CreateServerHeadOptions, e as CreateStreamableServerHeadOptions, D as DOMHeadHooks, i as DomBeforeRenderCtx, j as DomRenderTagContext, k as DomState, E as EntryResolveCtx, l as EventHandlerOptions, m as HeadEntry, n as HeadEntryOptions, o as HeadHooks, p as HeadPlugin, H as HeadPluginInput, q as HeadPluginOptions, b as HeadRenderer, r as HookResult, P as PropResolver, R as RecordingEntry, s as RenderSSRHeadOptions, t as SSRHeadHooks, S as SSRHeadPayload, u as SSRRenderContext, v as ScriptInstance, f as ServerHeadHooks, w as ShouldRenderContext, x as SideEffectsRecord, y as SyncHookResult, U as Unhead, z as UseFunctionType, B as UseScriptContext, F as UseScriptInput, G as UseScriptOptions, I as UseScriptResolvedInput, J as UseScriptReturn, K as UseScriptStatus, W as WarmupStrategy } from './shared/unhead.Dv-MkoX9.js';
|
|
2
2
|
export { R as RenderDomHeadOptions } from './shared/unhead.DEgm41PJ.js';
|
|
3
3
|
export { B as Base, a as BodyAttributes, H as HeadSafe, b as HtmlAttributes, N as Noscript, S as SafeBodyAttr, c as SafeHtmlAttr, d as SafeLink, e as SafeMeta, f as SafeNoscript, g as SafeScript, h as SafeStyle, i as Style } from './shared/unhead.Dqn7v3Di.js';
|
|
4
4
|
import { B as Booleanable } from './shared/unhead.Dl7UHSN0.js';
|
|
5
5
|
export { A as AlternateFeedLink, a as AlternateLanguageLink, b as AlternateLink, c as AlternateMediaLink, d as AlternateStylesheetLink, e as AmpHtmlLink, f as AppleTouchIconLink, g as AppleTouchStartupImageLink, h as ApplicationJsonScript, i as Arrayable, j as AuthorLink, k as BareAlternateLink, l as BodyAttributesWithoutEvents, m as BodyEvents, C as CanonicalLink, n as CharsetMeta, o as CompressionDictionaryLink, D as DataKeys, p as DeepReadonly, q as DeepResolvableProperties, r as DnsPrefetchLink, E as ExpectLink, s as ExternalScript, F as FaviconLink, G as GenericLink, t as GenericScript, u as GlobalAttributes, H as HasTemplateParams, v as HeadTag, w as HeadTagKeys, x as HelpLink, y as HttpEquivMeta, z as HttpEventAttributes, I as HubLink, J as IconLink, K as ImportMapConfig, L as ImportMapScript, M as InferLink, N as InferScript, O as InlineModuleScript, P as InlineScript, Q as InnerContent, T as InnerContentVal, U as InternalTagKey, V as JsonLdScript, W as KnownLinkRel, X as KnownScriptType, Y as LicenseLink, Z as Link, _ as LinkBase, $ as LinkHttpEvents, a0 as ManifestLink, a1 as MaskIconLink, a2 as MaybeArray, a3 as MaybeEventFnHandlers, a4 as MeLink, a5 as Meta, a6 as MetaBase, a7 as MetaFlat, a8 as MetaGeneric, a9 as MetaNames, aa as MetaProperties, ab as ModuleScript, ac as ModulepreloadLink, ad as NameMeta, ae as Never, af as NextLink, ag as PingbackLink, ah as PreconnectLink, ai as PrefetchLink, aj as PreloadFontLink, ak as PreloadImageLink, al as PreloadLink, am as PreloadLinkBase, an as PreloadOtherLink, ao as PreloadScriptLink, ap as PreloadStyleLink, aq as PrerenderLink, ar as PrevLink, as as PrivacyPolicyLink, at as ProcessesTemplateParams, au as PropertyMeta, av as RawInput, aw as ResolvableBase, ax as ResolvableBodyAttributes, R as ResolvableHead, ay as ResolvableHtmlAttributes, az as ResolvableLink, aA as ResolvableMeta, aB as ResolvableNoscript, aC as ResolvableProperties, aD as ResolvableScript, aE as ResolvableStyle, aF as ResolvableTemplateParams, aG as ResolvableTitle, aH as ResolvableTitleTemplate, aI as ResolvableUnion, aJ as ResolvableValue, aK as ResolvesDuplicates, aL as SchemaAugmentations, aM as Script, aN as ScriptBase, aO as ScriptHttpEvents, aP as SearchLink, S as SerializableHead, aQ as SitemapLink, aR as SpeculationRules, aS as SpeculationRulesScript, aT as StringInnerContent, aU as Stringable, aV as StylesheetLink, aW as TagKey, aX as TagPosition, aY as TagPriority, aZ as TagUserProperties, a_ as TemplateParams, a$ as TemplateParamsAugmentations, b0 as TermsOfServiceLink, b1 as UnheadBodyAttributesWithoutEvents, b2 as UnheadHtmlAttributes, b3 as UnheadMeta, b4 as UseHeadInput, b5 as UseSeoMetaInput, b6 as ValidTagPositions, b7 as WebmentionLink } from './shared/unhead.Dl7UHSN0.js';
|
|
6
6
|
export { createSpyProxy } from './scripts.js';
|
|
7
|
-
export { u as useScript } from './shared/unhead.
|
|
7
|
+
export { u as useScript } from './shared/unhead.Cnhe7n9-.js';
|
|
8
8
|
import 'hookable';
|
|
9
9
|
|
|
10
10
|
interface AriaAttributes {
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { v as HeadTag, a7 as MetaFlat, R as ResolvableHead, a_ as TemplateParams } from './shared/unhead.Dl7UHSN0.mjs';
|
|
2
|
-
import { P as PropResolver, U as Unhead } from './shared/unhead.
|
|
2
|
+
import { P as PropResolver, U as Unhead } from './shared/unhead.CELAVVhh.mjs';
|
|
3
3
|
import 'hookable';
|
|
4
4
|
|
|
5
5
|
declare const SelfClosingTags: Set<string>;
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { v as HeadTag, a7 as MetaFlat, R as ResolvableHead, a_ as TemplateParams } from './shared/unhead.Dl7UHSN0.js';
|
|
2
|
-
import { P as PropResolver, U as Unhead } from './shared/unhead.
|
|
2
|
+
import { P as PropResolver, U as Unhead } from './shared/unhead.Dv-MkoX9.js';
|
|
3
3
|
import 'hookable';
|
|
4
4
|
|
|
5
5
|
declare const SelfClosingTags: Set<string>;
|
package/dist/utils.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { D as DupeableTags, H as HasElementTags, M as MetaTagsArrayable, S as ScriptNetworkEvents, a as SelfClosingTags, T as TagConfigKeys, b as TagPriorityAliases, c as TagsWithInnerContent, U as UniqueTags, d as UsesMergeStrategy, V as ValidHeadTags } from './shared/unhead.
|
|
2
|
-
export { d as dedupeKey, a as dedupeTags, h as hashTag, i as isMetaArrayDupeKey, n as normalizeEntryToTags, b as normalizeProps, r as resolveTags, c as resolveTitleTemplate, s as sanitizeTags, w as walkResolver } from './shared/unhead.
|
|
3
|
-
export { r as resolveMetaKeyType, a as resolveMetaKeyValue, b as resolvePackedMetaObjectValue, u as unpackMeta } from './shared/unhead.
|
|
1
|
+
export { D as DupeableTags, H as HasElementTags, M as MetaTagsArrayable, S as ScriptNetworkEvents, a as SelfClosingTags, T as TagConfigKeys, b as TagPriorityAliases, c as TagsWithInnerContent, U as UniqueTags, d as UsesMergeStrategy, V as ValidHeadTags } from './shared/unhead.1eoQpFT1.mjs';
|
|
2
|
+
export { d as dedupeKey, a as dedupeTags, h as hashTag, i as isMetaArrayDupeKey, n as normalizeEntryToTags, b as normalizeProps, r as resolveTags, c as resolveTitleTemplate, s as sanitizeTags, w as walkResolver } from './shared/unhead.CR32jx68.mjs';
|
|
3
|
+
export { r as resolveMetaKeyType, a as resolveMetaKeyValue, b as resolvePackedMetaObjectValue, u as unpackMeta } from './shared/unhead.CT1xoGPh.mjs';
|
|
4
4
|
export { p as processTemplateParams } from './shared/unhead.BGFxPGPQ.mjs';
|
|
5
|
-
import './shared/unhead.
|
|
5
|
+
import './shared/unhead.Bm4Y6XQI.mjs';
|
|
6
6
|
import 'hookable';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unhead",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.7",
|
|
5
5
|
"description": "Full-stack <head> manager built for any framework.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Harlan Wilton",
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
},
|
|
157
157
|
"dependencies": {
|
|
158
158
|
"hookable": "^6.1.1",
|
|
159
|
-
"unplugin": "^3.
|
|
159
|
+
"unplugin": "^3.2.0"
|
|
160
160
|
},
|
|
161
161
|
"devDependencies": {
|
|
162
162
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { H as HasElementTags } from './unhead.fg-0ge_u.mjs';
|
|
2
|
-
import { b as normalizeProps, d as dedupeKey, h as hashTag, r as resolveTags, i as isMetaArrayDupeKey } from './unhead.H5gLMTHA.mjs';
|
|
3
|
-
import { a as callHook } from './unhead.DvIxXxuO.mjs';
|
|
4
|
-
|
|
5
|
-
const WHITESPACE_RE = /\s+/;
|
|
6
|
-
// @__NO_SIDE_EFFECTS__
|
|
7
|
-
function createDomRenderer(options = {}) {
|
|
8
|
-
return (head) => _renderDOMHead(head, options);
|
|
9
|
-
}
|
|
10
|
-
function renderDOMHead(head, options = {}) {
|
|
11
|
-
return _renderDOMHead(head, options);
|
|
12
|
-
}
|
|
13
|
-
function _renderDOMHead(head, options = {}) {
|
|
14
|
-
const dom = options.document || head.resolvedOptions.document;
|
|
15
|
-
if (!dom || !head.dirty && ![...head.entries.values()].some((e) => e._pending !== void 0))
|
|
16
|
-
return false;
|
|
17
|
-
const beforeRenderCtx = { shouldRender: true, tags: [] };
|
|
18
|
-
callHook(head, "dom:beforeRender", beforeRenderCtx);
|
|
19
|
-
if (!beforeRenderCtx.shouldRender || head._du)
|
|
20
|
-
return false;
|
|
21
|
-
head._du = true;
|
|
22
|
-
let state = head._dom;
|
|
23
|
-
if (!state) {
|
|
24
|
-
state = { _t: dom.title, _e: /* @__PURE__ */ new Map([["htmlAttrs", dom.documentElement], ["bodyAttrs", dom.body]]), _p: {}, _s: {} };
|
|
25
|
-
for (const el of [...dom.body.children, ...dom.head.children]) {
|
|
26
|
-
const tag = el.tagName.toLowerCase();
|
|
27
|
-
if (!HasElementTags.has(tag))
|
|
28
|
-
continue;
|
|
29
|
-
const props = { innerHTML: el.innerHTML };
|
|
30
|
-
for (const n of el.getAttributeNames())
|
|
31
|
-
props[n] = el.getAttribute(n);
|
|
32
|
-
const next = normalizeProps({ tag, props: {} }, props);
|
|
33
|
-
next.key = el.getAttribute("data-hid") || void 0;
|
|
34
|
-
let k = next._d = dedupeKey(next) || hashTag(next);
|
|
35
|
-
let c = 1;
|
|
36
|
-
while (state._e.has(k))
|
|
37
|
-
k = `${next._d}:${c++}`;
|
|
38
|
-
state._e.set(k, el);
|
|
39
|
-
}
|
|
40
|
-
for (const entry of head.entries.values()) {
|
|
41
|
-
if (entry._o !== void 0) {
|
|
42
|
-
const orig = entry._o;
|
|
43
|
-
for (const t of ["bodyAttrs", "htmlAttrs"]) {
|
|
44
|
-
const cls = orig[t]?.class;
|
|
45
|
-
if (typeof cls === "string") {
|
|
46
|
-
const $el = state._e.get(t);
|
|
47
|
-
for (const c of cls.split(WHITESPACE_RE)) {
|
|
48
|
-
if (c)
|
|
49
|
-
state._p[`${t}:attr:class:${c}`] = () => $el.classList.remove(c);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
delete entry._o;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
} else {
|
|
57
|
-
state._p = { ...state._s };
|
|
58
|
-
}
|
|
59
|
-
state._s = {};
|
|
60
|
-
function track(id, scope, fn) {
|
|
61
|
-
const k = `${id}:${scope}`;
|
|
62
|
-
state._s[k] = fn;
|
|
63
|
-
delete state._p[k];
|
|
64
|
-
}
|
|
65
|
-
function trackCtx({ id, $el, tag }) {
|
|
66
|
-
const isAttr = tag.tag.endsWith("Attrs");
|
|
67
|
-
state._e.set(id, $el);
|
|
68
|
-
if (!isAttr) {
|
|
69
|
-
if (tag.textContent && tag.textContent !== $el.textContent)
|
|
70
|
-
$el.textContent = tag.textContent;
|
|
71
|
-
if (tag.innerHTML && tag.innerHTML !== $el.innerHTML)
|
|
72
|
-
$el.innerHTML = tag.innerHTML;
|
|
73
|
-
track(id, "el", () => {
|
|
74
|
-
$el?.remove();
|
|
75
|
-
state._e.delete(id);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
for (const k in tag.props) {
|
|
79
|
-
const v = tag.props[k];
|
|
80
|
-
if (k[0] === "o" && k[1] === "n" && typeof v === "function") {
|
|
81
|
-
const ev = k.slice(2);
|
|
82
|
-
if ($el?.dataset?.[`${k}fired`])
|
|
83
|
-
v.call($el, new Event(ev));
|
|
84
|
-
if ($el.getAttribute(`data-${k}`) !== "") {
|
|
85
|
-
(tag.tag === "bodyAttrs" ? dom.defaultView : $el).addEventListener(ev, v.bind($el));
|
|
86
|
-
$el.setAttribute(`data-${k}`, "");
|
|
87
|
-
}
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
const ck = `attr:${k}`;
|
|
91
|
-
if (k === "class" && v) {
|
|
92
|
-
for (const c of v) {
|
|
93
|
-
if (isAttr)
|
|
94
|
-
track(id, `${ck}:${c}`, () => $el.classList.remove(c));
|
|
95
|
-
if (!$el.classList.contains(c))
|
|
96
|
-
$el.classList.add(c);
|
|
97
|
-
}
|
|
98
|
-
} else if (k === "style" && v) {
|
|
99
|
-
for (const [sk, sv] of v) {
|
|
100
|
-
track(id, `${ck}:${sk}`, () => $el.style.removeProperty(sk));
|
|
101
|
-
$el.style.setProperty(sk, sv);
|
|
102
|
-
}
|
|
103
|
-
} else if (v !== false && v !== null) {
|
|
104
|
-
if ($el.getAttribute(k) !== v)
|
|
105
|
-
$el.setAttribute(k, v === true ? "" : String(v));
|
|
106
|
-
if (isAttr)
|
|
107
|
-
track(id, ck, () => $el.removeAttribute(k));
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
const pending = [];
|
|
112
|
-
const frag = {};
|
|
113
|
-
const rawTags = resolveTags(head, options.tagWeight ? { tagWeight: options.tagWeight } : void 0);
|
|
114
|
-
const tags = [];
|
|
115
|
-
const dupeKeyCounter = /* @__PURE__ */ new Map();
|
|
116
|
-
for (const tag of rawTags) {
|
|
117
|
-
const count = dupeKeyCounter.get(tag._d) || 0;
|
|
118
|
-
const id = (count ? `${tag._d}:${count}` : tag._d) || tag._h;
|
|
119
|
-
const ctx = { tag, id, shouldRender: true };
|
|
120
|
-
if (tag._d && isMetaArrayDupeKey(tag._d))
|
|
121
|
-
dupeKeyCounter.set(tag._d, count + 1);
|
|
122
|
-
tags.push(ctx);
|
|
123
|
-
if (tag.tag === "title") {
|
|
124
|
-
dom.title = tag.textContent;
|
|
125
|
-
track("title", "", () => dom.title = state._t);
|
|
126
|
-
continue;
|
|
127
|
-
}
|
|
128
|
-
ctx.$el = state._e.get(id);
|
|
129
|
-
if (ctx.$el)
|
|
130
|
-
trackCtx(ctx);
|
|
131
|
-
else if (HasElementTags.has(tag.tag))
|
|
132
|
-
pending.push(ctx);
|
|
133
|
-
}
|
|
134
|
-
for (const ctx of pending) {
|
|
135
|
-
ctx.$el = dom.createElement(ctx.tag.tag);
|
|
136
|
-
trackCtx(ctx);
|
|
137
|
-
(frag[ctx.tag.tagPosition || "head"] ??= dom.createDocumentFragment()).appendChild(ctx.$el);
|
|
138
|
-
}
|
|
139
|
-
if (frag.head)
|
|
140
|
-
dom.head.appendChild(frag.head);
|
|
141
|
-
if (frag.bodyOpen)
|
|
142
|
-
dom.body.insertBefore(frag.bodyOpen, dom.body.firstChild);
|
|
143
|
-
if (frag.bodyClose)
|
|
144
|
-
dom.body.appendChild(frag.bodyClose);
|
|
145
|
-
for (const k in state._p)
|
|
146
|
-
state._p[k]();
|
|
147
|
-
head._dom = state;
|
|
148
|
-
callHook(head, "dom:rendered", { renders: tags });
|
|
149
|
-
head._du = false;
|
|
150
|
-
head.dirty = false;
|
|
151
|
-
return true;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export { createDomRenderer as c, renderDOMHead as r };
|