unhead 0.6.1 → 0.6.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/dist/index.cjs +36 -17
- package/dist/index.d.ts +3 -1
- package/dist/index.mjs +35 -18
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -2,14 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
const hookable = require('hookable');
|
|
4
4
|
|
|
5
|
-
const HasElementTags = [
|
|
6
|
-
"base",
|
|
7
|
-
"meta",
|
|
8
|
-
"link",
|
|
9
|
-
"style",
|
|
10
|
-
"script",
|
|
11
|
-
"noscript"
|
|
12
|
-
];
|
|
13
5
|
const ValidHeadTags = [
|
|
14
6
|
"title",
|
|
15
7
|
"titleTemplate",
|
|
@@ -413,11 +405,21 @@ const ProvideTagHashPlugin = () => {
|
|
|
413
405
|
hooks: {
|
|
414
406
|
"tag:normalise": (ctx) => {
|
|
415
407
|
const { tag, entry } = ctx;
|
|
416
|
-
|
|
408
|
+
const isDynamic = typeof tag.props._dynamic !== "undefined";
|
|
409
|
+
if (!HasElementTags.includes(tag.tag) || !tag.key)
|
|
417
410
|
return;
|
|
418
|
-
|
|
419
|
-
if (
|
|
420
|
-
|
|
411
|
+
tag._hash = hashCode(JSON.stringify({ tag: tag.tag, key: tag.key }));
|
|
412
|
+
if (IsBrowser || getActiveHead()?.resolvedOptions?.document)
|
|
413
|
+
return;
|
|
414
|
+
if (entry._m === "server" || isDynamic) {
|
|
415
|
+
tag.props[`data-h-${tag._hash}`] = "";
|
|
416
|
+
}
|
|
417
|
+
},
|
|
418
|
+
"tags:resolve": (ctx) => {
|
|
419
|
+
ctx.tags = ctx.tags.map((t) => {
|
|
420
|
+
delete t.props._dynamic;
|
|
421
|
+
return t;
|
|
422
|
+
});
|
|
421
423
|
}
|
|
422
424
|
}
|
|
423
425
|
});
|
|
@@ -504,6 +506,20 @@ const EventHandlersPlugin = () => {
|
|
|
504
506
|
function asArray(value) {
|
|
505
507
|
return Array.isArray(value) ? value : [value];
|
|
506
508
|
}
|
|
509
|
+
function hashCode(s) {
|
|
510
|
+
let h = 9;
|
|
511
|
+
for (let i = 0; i < s.length; )
|
|
512
|
+
h = Math.imul(h ^ s.charCodeAt(i++), 9 ** 9);
|
|
513
|
+
return ((h ^ h >>> 9) + 65536).toString(16).substring(1, 8).toLowerCase();
|
|
514
|
+
}
|
|
515
|
+
const HasElementTags = [
|
|
516
|
+
"base",
|
|
517
|
+
"meta",
|
|
518
|
+
"link",
|
|
519
|
+
"style",
|
|
520
|
+
"script",
|
|
521
|
+
"noscript"
|
|
522
|
+
];
|
|
507
523
|
|
|
508
524
|
exports.activeHead = void 0;
|
|
509
525
|
const setActiveHead = (head) => exports.activeHead = head;
|
|
@@ -576,11 +592,6 @@ function createHead(options = {}) {
|
|
|
576
592
|
const triggerUpdateHook = () => hooks.callHook("entries:updated", head);
|
|
577
593
|
const head = {
|
|
578
594
|
resolvedOptions: options,
|
|
579
|
-
_popSideEffectQueue() {
|
|
580
|
-
const sde = { ..._sde };
|
|
581
|
-
_sde = {};
|
|
582
|
-
return sde;
|
|
583
|
-
},
|
|
584
595
|
headEntries() {
|
|
585
596
|
return entries;
|
|
586
597
|
},
|
|
@@ -635,6 +646,12 @@ function createHead(options = {}) {
|
|
|
635
646
|
}
|
|
636
647
|
await hooks.callHook("tags:resolve", resolveCtx);
|
|
637
648
|
return resolveCtx.tags;
|
|
649
|
+
},
|
|
650
|
+
_elMap: {},
|
|
651
|
+
_popSideEffectQueue() {
|
|
652
|
+
const sde = { ..._sde };
|
|
653
|
+
_sde = {};
|
|
654
|
+
return sde;
|
|
638
655
|
}
|
|
639
656
|
};
|
|
640
657
|
head.hooks.callHook("init", head);
|
|
@@ -685,6 +702,7 @@ const unheadComposablesImports = [
|
|
|
685
702
|
exports.DedupesTagsPlugin = DedupesTagsPlugin;
|
|
686
703
|
exports.DeprecatedTagAttrPlugin = DeprecatedTagAttrPlugin;
|
|
687
704
|
exports.EventHandlersPlugin = EventHandlersPlugin;
|
|
705
|
+
exports.HasElementTags = HasElementTags;
|
|
688
706
|
exports.PatchDomOnEntryUpdatesPlugin = PatchDomOnEntryUpdatesPlugin;
|
|
689
707
|
exports.ProvideTagHashPlugin = ProvideTagHashPlugin;
|
|
690
708
|
exports.SortTagsPlugin = SortTagsPlugin;
|
|
@@ -694,6 +712,7 @@ exports.composableNames = composableNames;
|
|
|
694
712
|
exports.createHead = createHead;
|
|
695
713
|
exports.defineHeadPlugin = defineHeadPlugin;
|
|
696
714
|
exports.getActiveHead = getActiveHead;
|
|
715
|
+
exports.hashCode = hashCode;
|
|
697
716
|
exports.normaliseEntryTags = normaliseEntryTags;
|
|
698
717
|
exports.setActiveHead = setActiveHead;
|
|
699
718
|
exports.unheadComposablesImports = unheadComposablesImports;
|
package/dist/index.d.ts
CHANGED
|
@@ -29,6 +29,8 @@ declare const EventHandlersPlugin: () => _unhead_schema.HeadPlugin;
|
|
|
29
29
|
|
|
30
30
|
declare type Arrayable<T> = T | Array<T>;
|
|
31
31
|
declare function asArray<T>(value: Arrayable<T>): T[];
|
|
32
|
+
declare function hashCode(s: string): string;
|
|
33
|
+
declare const HasElementTags: string[];
|
|
32
34
|
|
|
33
35
|
declare function useHead<T extends Head>(input: T, options?: HeadEntryOptions): ActiveHeadEntry<T> | void;
|
|
34
36
|
declare const useTagTitle: (title: Title) => ActiveHeadEntry<any> | void;
|
|
@@ -72,4 +74,4 @@ declare const unheadComposablesImports: {
|
|
|
72
74
|
imports: string[];
|
|
73
75
|
}[];
|
|
74
76
|
|
|
75
|
-
export { Arrayable, DedupesTagsPlugin, DedupesTagsPluginOptions, DeprecatedTagAttrPlugin, EventHandlersPlugin, PatchDomOnEntryUpdatesPlugin, ProvideTagHashPlugin, SortTagsPlugin, TitleTemplatePlugin, activeHead, asArray, composableNames, createHead, defineHeadPlugin, getActiveHead, normaliseEntryTags, setActiveHead, unheadComposablesImports, useBodyAttrs, useHead, useHtmlAttrs, useServerBodyAttrs, useServerHead, useServerHtmlAttrs, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate };
|
|
77
|
+
export { Arrayable, DedupesTagsPlugin, DedupesTagsPluginOptions, DeprecatedTagAttrPlugin, EventHandlersPlugin, HasElementTags, PatchDomOnEntryUpdatesPlugin, ProvideTagHashPlugin, SortTagsPlugin, TitleTemplatePlugin, activeHead, asArray, composableNames, createHead, defineHeadPlugin, getActiveHead, hashCode, normaliseEntryTags, setActiveHead, unheadComposablesImports, useBodyAttrs, useHead, useHtmlAttrs, useServerBodyAttrs, useServerHead, useServerHtmlAttrs, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate };
|
package/dist/index.mjs
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import { createHooks } from 'hookable';
|
|
2
2
|
|
|
3
|
-
const HasElementTags = [
|
|
4
|
-
"base",
|
|
5
|
-
"meta",
|
|
6
|
-
"link",
|
|
7
|
-
"style",
|
|
8
|
-
"script",
|
|
9
|
-
"noscript"
|
|
10
|
-
];
|
|
11
3
|
const ValidHeadTags = [
|
|
12
4
|
"title",
|
|
13
5
|
"titleTemplate",
|
|
@@ -411,11 +403,21 @@ const ProvideTagHashPlugin = () => {
|
|
|
411
403
|
hooks: {
|
|
412
404
|
"tag:normalise": (ctx) => {
|
|
413
405
|
const { tag, entry } = ctx;
|
|
414
|
-
|
|
406
|
+
const isDynamic = typeof tag.props._dynamic !== "undefined";
|
|
407
|
+
if (!HasElementTags.includes(tag.tag) || !tag.key)
|
|
415
408
|
return;
|
|
416
|
-
|
|
417
|
-
if (
|
|
418
|
-
|
|
409
|
+
tag._hash = hashCode(JSON.stringify({ tag: tag.tag, key: tag.key }));
|
|
410
|
+
if (IsBrowser || getActiveHead()?.resolvedOptions?.document)
|
|
411
|
+
return;
|
|
412
|
+
if (entry._m === "server" || isDynamic) {
|
|
413
|
+
tag.props[`data-h-${tag._hash}`] = "";
|
|
414
|
+
}
|
|
415
|
+
},
|
|
416
|
+
"tags:resolve": (ctx) => {
|
|
417
|
+
ctx.tags = ctx.tags.map((t) => {
|
|
418
|
+
delete t.props._dynamic;
|
|
419
|
+
return t;
|
|
420
|
+
});
|
|
419
421
|
}
|
|
420
422
|
}
|
|
421
423
|
});
|
|
@@ -502,6 +504,20 @@ const EventHandlersPlugin = () => {
|
|
|
502
504
|
function asArray(value) {
|
|
503
505
|
return Array.isArray(value) ? value : [value];
|
|
504
506
|
}
|
|
507
|
+
function hashCode(s) {
|
|
508
|
+
let h = 9;
|
|
509
|
+
for (let i = 0; i < s.length; )
|
|
510
|
+
h = Math.imul(h ^ s.charCodeAt(i++), 9 ** 9);
|
|
511
|
+
return ((h ^ h >>> 9) + 65536).toString(16).substring(1, 8).toLowerCase();
|
|
512
|
+
}
|
|
513
|
+
const HasElementTags = [
|
|
514
|
+
"base",
|
|
515
|
+
"meta",
|
|
516
|
+
"link",
|
|
517
|
+
"style",
|
|
518
|
+
"script",
|
|
519
|
+
"noscript"
|
|
520
|
+
];
|
|
505
521
|
|
|
506
522
|
let activeHead;
|
|
507
523
|
const setActiveHead = (head) => activeHead = head;
|
|
@@ -574,11 +590,6 @@ function createHead(options = {}) {
|
|
|
574
590
|
const triggerUpdateHook = () => hooks.callHook("entries:updated", head);
|
|
575
591
|
const head = {
|
|
576
592
|
resolvedOptions: options,
|
|
577
|
-
_popSideEffectQueue() {
|
|
578
|
-
const sde = { ..._sde };
|
|
579
|
-
_sde = {};
|
|
580
|
-
return sde;
|
|
581
|
-
},
|
|
582
593
|
headEntries() {
|
|
583
594
|
return entries;
|
|
584
595
|
},
|
|
@@ -633,6 +644,12 @@ function createHead(options = {}) {
|
|
|
633
644
|
}
|
|
634
645
|
await hooks.callHook("tags:resolve", resolveCtx);
|
|
635
646
|
return resolveCtx.tags;
|
|
647
|
+
},
|
|
648
|
+
_elMap: {},
|
|
649
|
+
_popSideEffectQueue() {
|
|
650
|
+
const sde = { ..._sde };
|
|
651
|
+
_sde = {};
|
|
652
|
+
return sde;
|
|
636
653
|
}
|
|
637
654
|
};
|
|
638
655
|
head.hooks.callHook("init", head);
|
|
@@ -680,4 +697,4 @@ const unheadComposablesImports = [
|
|
|
680
697
|
}
|
|
681
698
|
];
|
|
682
699
|
|
|
683
|
-
export { DedupesTagsPlugin, DeprecatedTagAttrPlugin, EventHandlersPlugin, PatchDomOnEntryUpdatesPlugin, ProvideTagHashPlugin, SortTagsPlugin, TitleTemplatePlugin, activeHead, asArray, composableNames, createHead, defineHeadPlugin, getActiveHead, normaliseEntryTags, setActiveHead, unheadComposablesImports, useBodyAttrs, useHead, useHtmlAttrs, useServerBodyAttrs, useServerHead, useServerHtmlAttrs, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate };
|
|
700
|
+
export { DedupesTagsPlugin, DeprecatedTagAttrPlugin, EventHandlersPlugin, HasElementTags, PatchDomOnEntryUpdatesPlugin, ProvideTagHashPlugin, SortTagsPlugin, TitleTemplatePlugin, activeHead, asArray, composableNames, createHead, defineHeadPlugin, getActiveHead, hashCode, normaliseEntryTags, setActiveHead, unheadComposablesImports, useBodyAttrs, useHead, useHtmlAttrs, useServerBodyAttrs, useServerHead, useServerHtmlAttrs, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unhead",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.3",
|
|
5
5
|
"packageManager": "pnpm@7.14.0",
|
|
6
6
|
"author": "Harlan Wilton <harlan@harlanzw.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"dist"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@unhead/dom": "0.6.
|
|
34
|
-
"@unhead/schema": "0.6.
|
|
33
|
+
"@unhead/dom": "0.6.3",
|
|
34
|
+
"@unhead/schema": "0.6.3",
|
|
35
35
|
"hookable": "^5.4.1"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|