unhead 1.1.22 → 1.1.25

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/index.cjs CHANGED
@@ -99,31 +99,18 @@ const DeprecatedTagAttrPlugin = () => {
99
99
  });
100
100
  };
101
101
 
102
- const IsBrowser = typeof window !== "undefined";
103
-
102
+ const DupeableTags = ["link", "style", "script", "noscript"];
104
103
  const ProvideTagHashPlugin = () => {
105
104
  return shared.defineHeadPlugin({
106
105
  hooks: {
107
- "tag:normalise": (ctx) => {
108
- const { tag, entry, resolvedOptions } = ctx;
106
+ "tag:normalise": ({ tag, resolvedOptions }) => {
109
107
  if (resolvedOptions.experimentalHashHydration === true) {
110
108
  tag._h = shared.hashTag(tag);
111
109
  }
112
- const isDynamic = typeof tag.props._dynamic !== "undefined";
113
- if (!shared.HasElementTags.includes(tag.tag) || !tag.key)
114
- return;
115
- if (IsBrowser || getActiveHead()?.resolvedOptions?.document)
116
- return;
117
- if (entry._m === "server" || isDynamic) {
118
- tag._h = tag._h || shared.hashTag(tag);
110
+ if (tag.key && DupeableTags.includes(tag.tag)) {
111
+ tag._h = shared.hashCode(tag.key);
119
112
  tag.props[`data-h-${tag._h}`] = "";
120
113
  }
121
- },
122
- "tags:resolve": (ctx) => {
123
- ctx.tags = ctx.tags.map((t) => {
124
- delete t.props._dynamic;
125
- return t;
126
- });
127
114
  }
128
115
  }
129
116
  });
@@ -203,13 +190,11 @@ const EventHandlersPlugin = () => {
203
190
  };
204
191
 
205
192
  const UsesMergeStrategy = ["templateParams", "htmlAttrs", "bodyAttrs"];
206
- const DedupesTagsPlugin = (options) => {
207
- options = options || {};
208
- const dedupeKeys = options.dedupeKeys || ["hid", "vmid", "key"];
193
+ const DedupesTagsPlugin = () => {
209
194
  return shared.defineHeadPlugin({
210
195
  hooks: {
211
196
  "tag:normalise": function({ tag }) {
212
- dedupeKeys.forEach((key) => {
197
+ ["hid", "vmid", "key"].forEach((key) => {
213
198
  if (tag.props[key]) {
214
199
  tag.key = tag.props[key];
215
200
  delete tag.props[key];
@@ -271,25 +256,37 @@ const DedupesTagsPlugin = (options) => {
271
256
  };
272
257
 
273
258
  function processTemplateParams(s, config) {
274
- const sub = (_, token) => {
259
+ function sub(token) {
260
+ if (["s", "pageTitle"].includes(token))
261
+ return config.pageTitle;
275
262
  let val;
276
- if (token === "pageTitle" || token === "s")
277
- val = config.pageTitle;
278
- else if (token.includes("."))
279
- val = token.split(".").reduce((acc, key) => acc[key] || "", config);
280
- else
263
+ if (token.includes(".")) {
264
+ val = token.split(".").reduce((acc, key) => acc ? acc[key] || void 0 : void 0, config);
265
+ } else {
281
266
  val = config[token];
282
- return val || "";
283
- };
284
- let template = s.replace(/%(\w+\.+\w+)/g, sub).replace(/%(\w+)/g, sub).trim();
267
+ }
268
+ return typeof val !== "undefined" ? val || "" : false;
269
+ }
270
+ let decoded = s;
271
+ try {
272
+ decoded = decodeURI(s);
273
+ } catch {
274
+ }
275
+ const tokens = (decoded.match(/%(\w+\.+\w+)|%(\w+)/g) || []).sort().reverse();
276
+ tokens.forEach((token) => {
277
+ const re = sub(token.slice(1));
278
+ if (typeof re === "string") {
279
+ s = s.replaceAll(new RegExp(`\\${token}(\\W|$)`, "g"), `${re}$1`).trim();
280
+ }
281
+ });
285
282
  if (config.separator) {
286
- if (template.endsWith(config.separator))
287
- template = template.slice(0, -config.separator.length).trim();
288
- if (template.startsWith(config.separator))
289
- template = template.slice(config.separator.length).trim();
290
- template = template.replace(new RegExp(`\\${config.separator}\\s*\\${config.separator}`, "g"), config.separator);
283
+ if (s.endsWith(config.separator))
284
+ s = s.slice(0, -config.separator.length).trim();
285
+ if (s.startsWith(config.separator))
286
+ s = s.slice(config.separator.length).trim();
287
+ s = s.replace(new RegExp(`\\${config.separator}\\s*\\${config.separator}`, "g"), config.separator);
291
288
  }
292
- return template;
289
+ return s;
293
290
  }
294
291
  function TemplateParamsPlugin() {
295
292
  return shared.defineHeadPlugin({
@@ -298,13 +295,15 @@ function TemplateParamsPlugin() {
298
295
  const { tags } = ctx;
299
296
  const title = tags.find((tag) => tag.tag === "title")?.textContent;
300
297
  const idx = tags.findIndex((tag) => tag.tag === "templateParams");
301
- const params = idx !== -1 ? tags[idx].textContent : {};
298
+ const params = idx !== -1 ? tags[idx].props : {};
302
299
  params.pageTitle = params.pageTitle || title || "";
303
300
  for (const tag of tags) {
304
301
  if (["titleTemplate", "title"].includes(tag.tag) && typeof tag.textContent === "string") {
305
302
  tag.textContent = processTemplateParams(tag.textContent, params);
306
303
  } else if (tag.tag === "meta" && typeof tag.props.content === "string") {
307
304
  tag.props.content = processTemplateParams(tag.props.content, params);
305
+ } else if (tag.tag === "link" && typeof tag.props.href === "string") {
306
+ tag.props.href = processTemplateParams(tag.props.href, params);
308
307
  } else if (tag.tag === "script" && ["application/json", "application/ld+json"].includes(tag.props.type) && typeof tag.innerHTML === "string") {
309
308
  try {
310
309
  tag.innerHTML = JSON.stringify(JSON.parse(tag.innerHTML), (key, val) => {
@@ -322,6 +321,8 @@ function TemplateParamsPlugin() {
322
321
  });
323
322
  }
324
323
 
324
+ const IsBrowser = typeof window !== "undefined";
325
+
325
326
  exports.activeHead = void 0;
326
327
  const setActiveHead = (head) => exports.activeHead = head;
327
328
  const getActiveHead = () => exports.activeHead;
@@ -649,19 +650,21 @@ function resolvePackedMetaObjectValue(value, key) {
649
650
 
650
651
  async function normaliseTag(tagName, input) {
651
652
  const tag = { tag: tagName, props: {} };
652
- if (["title", "titleTemplate", "templateParams"].includes(tagName)) {
653
+ if (tagName === "templateParams") {
654
+ tag.props = input;
655
+ return tag;
656
+ }
657
+ if (["title", "titleTemplate"].includes(tagName)) {
653
658
  tag.textContent = input instanceof Promise ? await input : input;
654
659
  return tag;
655
660
  }
656
661
  if (typeof input === "string") {
657
662
  if (!["script", "noscript", "style"].includes(tagName))
658
663
  return false;
659
- if (tagName === "script" && (/^(https?:)?\/\//.test(input) || input.startsWith("/"))) {
664
+ if (tagName === "script" && (/^(https?:)?\/\//.test(input) || input.startsWith("/")))
660
665
  tag.props.src = input;
661
- } else {
666
+ else
662
667
  tag.innerHTML = input;
663
- tag.key = shared.hashCode(input);
664
- }
665
668
  return tag;
666
669
  }
667
670
  tag.props = await normaliseProps(tagName, { ...input });
@@ -930,10 +933,12 @@ function createHeadCore(options = {}) {
930
933
  for (const entry of resolveCtx.entries) {
931
934
  const transformer = entry._t || ((i) => i);
932
935
  entry.resolvedInput = transformer(entry.resolvedInput || entry.input);
933
- for (const tag of await normaliseEntryTags(entry)) {
934
- const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions };
935
- await hooks.callHook("tag:normalise", tagCtx);
936
- resolveCtx.tags.push(tagCtx.tag);
936
+ if (entry.resolvedInput) {
937
+ for (const tag of await normaliseEntryTags(entry)) {
938
+ const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions };
939
+ await hooks.callHook("tag:normalise", tagCtx);
940
+ resolveCtx.tags.push(tagCtx.tag);
941
+ }
937
942
  }
938
943
  }
939
944
  await hooks.callHook("tags:resolve", resolveCtx);
@@ -1013,6 +1018,7 @@ exports.normaliseEntryTags = normaliseEntryTags;
1013
1018
  exports.normaliseProps = normaliseProps;
1014
1019
  exports.normaliseTag = normaliseTag;
1015
1020
  exports.packMeta = packMeta;
1021
+ exports.processTemplateParams = processTemplateParams;
1016
1022
  exports.resolveMetaKeyType = resolveMetaKeyType;
1017
1023
  exports.resolveMetaKeyValue = resolveMetaKeyValue;
1018
1024
  exports.resolvePackedMetaObjectValue = resolvePackedMetaObjectValue;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _unhead_schema from '@unhead/schema';
2
- import { HeadTag, Head, HeadEntryOptions, ActiveHeadEntry, HeadSafe, MetaFlatInput, Title, TitleTemplate, Base, Meta, Link, Script, Style, Noscript, HtmlAttributes, BodyAttributes, Unhead, HeadPlugin, CreateHeadOptions, HeadEntry, MaybeArray } from '@unhead/schema';
2
+ import { HeadTag, TemplateParams, Head, HeadEntryOptions, ActiveHeadEntry, HeadSafe, MetaFlatInput, Title, TitleTemplate, Base, Meta, Link, Script, Style, Noscript, HtmlAttributes, BodyAttributes, Unhead, HeadPlugin, CreateHeadOptions, HeadEntry, MaybeArray } from '@unhead/schema';
3
3
  import { Arrayable } from '@unhead/shared';
4
4
 
5
5
  declare const TAG_WEIGHTS: {
@@ -30,11 +30,9 @@ declare const ProvideTagHashPlugin: () => _unhead_schema.HeadPlugin;
30
30
  */
31
31
  declare const EventHandlersPlugin: () => _unhead_schema.HeadPlugin;
32
32
 
33
- interface DedupesTagsPluginOptions {
34
- dedupeKeys?: string[];
35
- }
36
- declare const DedupesTagsPlugin: (options?: DedupesTagsPluginOptions) => _unhead_schema.HeadPlugin;
33
+ declare const DedupesTagsPlugin: () => _unhead_schema.HeadPlugin;
37
34
 
35
+ declare function processTemplateParams(s: string, config: TemplateParams): string;
38
36
  declare function TemplateParamsPlugin(): _unhead_schema.HeadPlugin;
39
37
 
40
38
  declare function useHead<T extends Head>(input: T, options?: HeadEntryOptions): ActiveHeadEntry<T> | void;
@@ -187,4 +185,4 @@ declare function normaliseEntryTags<T extends {} = Head>(e: HeadEntry<T>): Promi
187
185
 
188
186
  declare function whitelistSafeInput(input: Record<string, MaybeArray<Record<string, string>>>): HeadSafe;
189
187
 
190
- export { CorePlugins, DOMPlugins, DedupesTagsPlugin, DedupesTagsPluginOptions, DeprecatedTagAttrPlugin, EventHandlersPlugin, ProvideTagHashPlugin, SortModifiers, SortTagsPlugin, TAG_WEIGHTS, TagEntityBits, TemplateParamsPlugin, TitleTemplatePlugin, UseSeoMetaInput, activeHead, composableNames, createHead, createHeadCore, createServerHead, getActiveHead, normaliseClassProp, normaliseEntryTags, normaliseProps, normaliseTag, packMeta, resolveMetaKeyType, resolveMetaKeyValue, resolvePackedMetaObjectValue, setActiveHead, tagWeight, unheadComposablesImports, unpackMeta, useBodyAttrs, useHead, useHeadSafe, useHtmlAttrs, useSeoMeta, useServerBodyAttrs, useServerHead, useServerHeadSafe, useServerHtmlAttrs, useServerSeoMeta, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate, whitelistSafeInput };
188
+ export { CorePlugins, DOMPlugins, DedupesTagsPlugin, DeprecatedTagAttrPlugin, EventHandlersPlugin, ProvideTagHashPlugin, SortModifiers, SortTagsPlugin, TAG_WEIGHTS, TagEntityBits, TemplateParamsPlugin, TitleTemplatePlugin, UseSeoMetaInput, activeHead, composableNames, createHead, createHeadCore, createServerHead, getActiveHead, normaliseClassProp, normaliseEntryTags, normaliseProps, normaliseTag, packMeta, processTemplateParams, resolveMetaKeyType, resolveMetaKeyValue, resolvePackedMetaObjectValue, setActiveHead, tagWeight, unheadComposablesImports, unpackMeta, useBodyAttrs, useHead, useHeadSafe, useHtmlAttrs, useSeoMeta, useServerBodyAttrs, useServerHead, useServerHeadSafe, useServerHtmlAttrs, useServerSeoMeta, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate, whitelistSafeInput };
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createHooks } from 'hookable';
2
2
  import { PatchDomOnEntryUpdatesPlugin, maybeGetSSRHash } from '@unhead/dom';
3
- import { defineHeadPlugin, resolveTitleTemplate, hashTag, HasElementTags, tagDedupeKey, asArray as asArray$1, hashCode, TagConfigKeys, TagsWithInnerContent, ValidHeadTags } from '@unhead/shared';
3
+ import { defineHeadPlugin, resolveTitleTemplate, hashTag, hashCode, tagDedupeKey, asArray as asArray$1, TagConfigKeys, TagsWithInnerContent, ValidHeadTags } from '@unhead/shared';
4
4
 
5
5
  const TAG_WEIGHTS = {
6
6
  // aliases
@@ -97,31 +97,18 @@ const DeprecatedTagAttrPlugin = () => {
97
97
  });
98
98
  };
99
99
 
100
- const IsBrowser = typeof window !== "undefined";
101
-
100
+ const DupeableTags = ["link", "style", "script", "noscript"];
102
101
  const ProvideTagHashPlugin = () => {
103
102
  return defineHeadPlugin({
104
103
  hooks: {
105
- "tag:normalise": (ctx) => {
106
- const { tag, entry, resolvedOptions } = ctx;
104
+ "tag:normalise": ({ tag, resolvedOptions }) => {
107
105
  if (resolvedOptions.experimentalHashHydration === true) {
108
106
  tag._h = hashTag(tag);
109
107
  }
110
- const isDynamic = typeof tag.props._dynamic !== "undefined";
111
- if (!HasElementTags.includes(tag.tag) || !tag.key)
112
- return;
113
- if (IsBrowser || getActiveHead()?.resolvedOptions?.document)
114
- return;
115
- if (entry._m === "server" || isDynamic) {
116
- tag._h = tag._h || hashTag(tag);
108
+ if (tag.key && DupeableTags.includes(tag.tag)) {
109
+ tag._h = hashCode(tag.key);
117
110
  tag.props[`data-h-${tag._h}`] = "";
118
111
  }
119
- },
120
- "tags:resolve": (ctx) => {
121
- ctx.tags = ctx.tags.map((t) => {
122
- delete t.props._dynamic;
123
- return t;
124
- });
125
112
  }
126
113
  }
127
114
  });
@@ -201,13 +188,11 @@ const EventHandlersPlugin = () => {
201
188
  };
202
189
 
203
190
  const UsesMergeStrategy = ["templateParams", "htmlAttrs", "bodyAttrs"];
204
- const DedupesTagsPlugin = (options) => {
205
- options = options || {};
206
- const dedupeKeys = options.dedupeKeys || ["hid", "vmid", "key"];
191
+ const DedupesTagsPlugin = () => {
207
192
  return defineHeadPlugin({
208
193
  hooks: {
209
194
  "tag:normalise": function({ tag }) {
210
- dedupeKeys.forEach((key) => {
195
+ ["hid", "vmid", "key"].forEach((key) => {
211
196
  if (tag.props[key]) {
212
197
  tag.key = tag.props[key];
213
198
  delete tag.props[key];
@@ -269,25 +254,37 @@ const DedupesTagsPlugin = (options) => {
269
254
  };
270
255
 
271
256
  function processTemplateParams(s, config) {
272
- const sub = (_, token) => {
257
+ function sub(token) {
258
+ if (["s", "pageTitle"].includes(token))
259
+ return config.pageTitle;
273
260
  let val;
274
- if (token === "pageTitle" || token === "s")
275
- val = config.pageTitle;
276
- else if (token.includes("."))
277
- val = token.split(".").reduce((acc, key) => acc[key] || "", config);
278
- else
261
+ if (token.includes(".")) {
262
+ val = token.split(".").reduce((acc, key) => acc ? acc[key] || void 0 : void 0, config);
263
+ } else {
279
264
  val = config[token];
280
- return val || "";
281
- };
282
- let template = s.replace(/%(\w+\.+\w+)/g, sub).replace(/%(\w+)/g, sub).trim();
265
+ }
266
+ return typeof val !== "undefined" ? val || "" : false;
267
+ }
268
+ let decoded = s;
269
+ try {
270
+ decoded = decodeURI(s);
271
+ } catch {
272
+ }
273
+ const tokens = (decoded.match(/%(\w+\.+\w+)|%(\w+)/g) || []).sort().reverse();
274
+ tokens.forEach((token) => {
275
+ const re = sub(token.slice(1));
276
+ if (typeof re === "string") {
277
+ s = s.replaceAll(new RegExp(`\\${token}(\\W|$)`, "g"), `${re}$1`).trim();
278
+ }
279
+ });
283
280
  if (config.separator) {
284
- if (template.endsWith(config.separator))
285
- template = template.slice(0, -config.separator.length).trim();
286
- if (template.startsWith(config.separator))
287
- template = template.slice(config.separator.length).trim();
288
- template = template.replace(new RegExp(`\\${config.separator}\\s*\\${config.separator}`, "g"), config.separator);
281
+ if (s.endsWith(config.separator))
282
+ s = s.slice(0, -config.separator.length).trim();
283
+ if (s.startsWith(config.separator))
284
+ s = s.slice(config.separator.length).trim();
285
+ s = s.replace(new RegExp(`\\${config.separator}\\s*\\${config.separator}`, "g"), config.separator);
289
286
  }
290
- return template;
287
+ return s;
291
288
  }
292
289
  function TemplateParamsPlugin() {
293
290
  return defineHeadPlugin({
@@ -296,13 +293,15 @@ function TemplateParamsPlugin() {
296
293
  const { tags } = ctx;
297
294
  const title = tags.find((tag) => tag.tag === "title")?.textContent;
298
295
  const idx = tags.findIndex((tag) => tag.tag === "templateParams");
299
- const params = idx !== -1 ? tags[idx].textContent : {};
296
+ const params = idx !== -1 ? tags[idx].props : {};
300
297
  params.pageTitle = params.pageTitle || title || "";
301
298
  for (const tag of tags) {
302
299
  if (["titleTemplate", "title"].includes(tag.tag) && typeof tag.textContent === "string") {
303
300
  tag.textContent = processTemplateParams(tag.textContent, params);
304
301
  } else if (tag.tag === "meta" && typeof tag.props.content === "string") {
305
302
  tag.props.content = processTemplateParams(tag.props.content, params);
303
+ } else if (tag.tag === "link" && typeof tag.props.href === "string") {
304
+ tag.props.href = processTemplateParams(tag.props.href, params);
306
305
  } else if (tag.tag === "script" && ["application/json", "application/ld+json"].includes(tag.props.type) && typeof tag.innerHTML === "string") {
307
306
  try {
308
307
  tag.innerHTML = JSON.stringify(JSON.parse(tag.innerHTML), (key, val) => {
@@ -320,6 +319,8 @@ function TemplateParamsPlugin() {
320
319
  });
321
320
  }
322
321
 
322
+ const IsBrowser = typeof window !== "undefined";
323
+
323
324
  let activeHead;
324
325
  const setActiveHead = (head) => activeHead = head;
325
326
  const getActiveHead = () => activeHead;
@@ -647,19 +648,21 @@ function resolvePackedMetaObjectValue(value, key) {
647
648
 
648
649
  async function normaliseTag(tagName, input) {
649
650
  const tag = { tag: tagName, props: {} };
650
- if (["title", "titleTemplate", "templateParams"].includes(tagName)) {
651
+ if (tagName === "templateParams") {
652
+ tag.props = input;
653
+ return tag;
654
+ }
655
+ if (["title", "titleTemplate"].includes(tagName)) {
651
656
  tag.textContent = input instanceof Promise ? await input : input;
652
657
  return tag;
653
658
  }
654
659
  if (typeof input === "string") {
655
660
  if (!["script", "noscript", "style"].includes(tagName))
656
661
  return false;
657
- if (tagName === "script" && (/^(https?:)?\/\//.test(input) || input.startsWith("/"))) {
662
+ if (tagName === "script" && (/^(https?:)?\/\//.test(input) || input.startsWith("/")))
658
663
  tag.props.src = input;
659
- } else {
664
+ else
660
665
  tag.innerHTML = input;
661
- tag.key = hashCode(input);
662
- }
663
666
  return tag;
664
667
  }
665
668
  tag.props = await normaliseProps(tagName, { ...input });
@@ -928,10 +931,12 @@ function createHeadCore(options = {}) {
928
931
  for (const entry of resolveCtx.entries) {
929
932
  const transformer = entry._t || ((i) => i);
930
933
  entry.resolvedInput = transformer(entry.resolvedInput || entry.input);
931
- for (const tag of await normaliseEntryTags(entry)) {
932
- const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions };
933
- await hooks.callHook("tag:normalise", tagCtx);
934
- resolveCtx.tags.push(tagCtx.tag);
934
+ if (entry.resolvedInput) {
935
+ for (const tag of await normaliseEntryTags(entry)) {
936
+ const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions };
937
+ await hooks.callHook("tag:normalise", tagCtx);
938
+ resolveCtx.tags.push(tagCtx.tag);
939
+ }
935
940
  }
936
941
  }
937
942
  await hooks.callHook("tags:resolve", resolveCtx);
@@ -989,4 +994,4 @@ const unheadComposablesImports = [
989
994
  }
990
995
  ];
991
996
 
992
- export { CorePlugins, DOMPlugins, DedupesTagsPlugin, DeprecatedTagAttrPlugin, EventHandlersPlugin, ProvideTagHashPlugin, SortModifiers, SortTagsPlugin, TAG_WEIGHTS, TagEntityBits, TemplateParamsPlugin, TitleTemplatePlugin, activeHead, composableNames, createHead, createHeadCore, createServerHead, getActiveHead, normaliseClassProp, normaliseEntryTags, normaliseProps, normaliseTag, packMeta, resolveMetaKeyType, resolveMetaKeyValue, resolvePackedMetaObjectValue, setActiveHead, tagWeight, unheadComposablesImports, unpackMeta, useBodyAttrs, useHead, useHeadSafe, useHtmlAttrs, useSeoMeta, useServerBodyAttrs, useServerHead, useServerHeadSafe, useServerHtmlAttrs, useServerSeoMeta, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate, whitelistSafeInput };
997
+ export { CorePlugins, DOMPlugins, DedupesTagsPlugin, DeprecatedTagAttrPlugin, EventHandlersPlugin, ProvideTagHashPlugin, SortModifiers, SortTagsPlugin, TAG_WEIGHTS, TagEntityBits, TemplateParamsPlugin, TitleTemplatePlugin, activeHead, composableNames, createHead, createHeadCore, createServerHead, getActiveHead, normaliseClassProp, normaliseEntryTags, normaliseProps, normaliseTag, packMeta, processTemplateParams, resolveMetaKeyType, resolveMetaKeyValue, resolvePackedMetaObjectValue, setActiveHead, tagWeight, unheadComposablesImports, unpackMeta, useBodyAttrs, useHead, useHeadSafe, useHtmlAttrs, useSeoMeta, useServerBodyAttrs, useServerHead, useServerHeadSafe, useServerHtmlAttrs, useServerSeoMeta, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate, whitelistSafeInput };
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "unhead",
3
3
  "type": "module",
4
- "version": "1.1.22",
5
- "packageManager": "pnpm@7.28.0",
4
+ "version": "1.1.25",
5
+ "packageManager": "pnpm@7.30.0",
6
6
  "author": "Harlan Wilton <harlan@harlanzw.com>",
7
7
  "license": "MIT",
8
8
  "funding": "https://github.com/sponsors/harlan-zw",
@@ -30,10 +30,10 @@
30
30
  "dist"
31
31
  ],
32
32
  "dependencies": {
33
- "hookable": "^5.4.2",
34
- "@unhead/dom": "1.1.22",
35
- "@unhead/schema": "1.1.22",
36
- "@unhead/shared": "1.1.22"
33
+ "hookable": "^5.5.1",
34
+ "@unhead/dom": "1.1.25",
35
+ "@unhead/schema": "1.1.25",
36
+ "@unhead/shared": "1.1.25"
37
37
  },
38
38
  "devDependencies": {
39
39
  "packrup": "^0.1.0"