unhead 1.10.2 → 1.10.4

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
@@ -537,7 +537,7 @@ function useScript(_input, _options) {
537
537
  const id = resolveScriptKey(input);
538
538
  const prevScript = head._scripts?.[id];
539
539
  if (prevScript) {
540
- prevScript.updateTrigger(options.trigger);
540
+ prevScript.setupTriggerHandler(options.trigger);
541
541
  return prevScript;
542
542
  }
543
543
  options.beforeInit?.();
@@ -600,6 +600,8 @@ function useScript(_input, _options) {
600
600
  return false;
601
601
  },
602
602
  load(cb) {
603
+ script._triggerAbortController?.abort();
604
+ script._triggerPromises = [];
603
605
  if (!script.entry) {
604
606
  syncStatus("loading");
605
607
  const defaults = {
@@ -624,20 +626,23 @@ function useScript(_input, _options) {
624
626
  onError(cb) {
625
627
  return _registerCb("error", cb);
626
628
  },
627
- updateTrigger(trigger) {
628
- script._triggerAbortController?.abort();
629
+ setupTriggerHandler(trigger) {
630
+ if (script.status !== "awaitingLoad") {
631
+ return;
632
+ }
629
633
  if ((typeof trigger === "undefined" || trigger === "client") && !head.ssr || trigger === "server") {
630
634
  script.load();
631
635
  } else if (trigger instanceof Promise) {
632
- script._triggerAbortController = new AbortController();
633
- Promise.race([
636
+ script._triggerAbortController = script._triggerAbortController || new AbortController();
637
+ script._triggerPromises = script._triggerPromises || [];
638
+ script._triggerPromises.push(Promise.race([
634
639
  trigger.then(() => script.load),
635
640
  new Promise((resolve) => {
636
641
  script._triggerAbortController.signal.addEventListener("abort", () => resolve());
637
642
  })
638
643
  ]).then((res2) => {
639
644
  res2?.();
640
- });
645
+ }));
641
646
  } else if (typeof trigger === "function") {
642
647
  trigger(script.load);
643
648
  }
@@ -655,7 +660,7 @@ function useScript(_input, _options) {
655
660
  _cbs.error = null;
656
661
  });
657
662
  const hookCtx = { script };
658
- script.updateTrigger(options.trigger);
663
+ script.setupTriggerHandler(options.trigger);
659
664
  script.$script = script;
660
665
  const proxyChain = (instance, accessor, accessors) => {
661
666
  return new Proxy((!accessor ? instance : instance?.[accessor]) || scriptProxy, {
@@ -694,7 +699,7 @@ function useScript(_input, _options) {
694
699
  script.proxy = proxyChain(script.instance);
695
700
  const res = new Proxy(script, {
696
701
  get(_, k) {
697
- const target = k in script ? script : script.proxy;
702
+ const target = k in script || String(k)[0] === "_" ? script : script.proxy;
698
703
  if (k === "then" || k === "catch") {
699
704
  return script[k].bind(script);
700
705
  }
package/dist/index.mjs CHANGED
@@ -536,7 +536,7 @@ function useScript(_input, _options) {
536
536
  const id = resolveScriptKey(input);
537
537
  const prevScript = head._scripts?.[id];
538
538
  if (prevScript) {
539
- prevScript.updateTrigger(options.trigger);
539
+ prevScript.setupTriggerHandler(options.trigger);
540
540
  return prevScript;
541
541
  }
542
542
  options.beforeInit?.();
@@ -599,6 +599,8 @@ function useScript(_input, _options) {
599
599
  return false;
600
600
  },
601
601
  load(cb) {
602
+ script._triggerAbortController?.abort();
603
+ script._triggerPromises = [];
602
604
  if (!script.entry) {
603
605
  syncStatus("loading");
604
606
  const defaults = {
@@ -623,20 +625,23 @@ function useScript(_input, _options) {
623
625
  onError(cb) {
624
626
  return _registerCb("error", cb);
625
627
  },
626
- updateTrigger(trigger) {
627
- script._triggerAbortController?.abort();
628
+ setupTriggerHandler(trigger) {
629
+ if (script.status !== "awaitingLoad") {
630
+ return;
631
+ }
628
632
  if ((typeof trigger === "undefined" || trigger === "client") && !head.ssr || trigger === "server") {
629
633
  script.load();
630
634
  } else if (trigger instanceof Promise) {
631
- script._triggerAbortController = new AbortController();
632
- Promise.race([
635
+ script._triggerAbortController = script._triggerAbortController || new AbortController();
636
+ script._triggerPromises = script._triggerPromises || [];
637
+ script._triggerPromises.push(Promise.race([
633
638
  trigger.then(() => script.load),
634
639
  new Promise((resolve) => {
635
640
  script._triggerAbortController.signal.addEventListener("abort", () => resolve());
636
641
  })
637
642
  ]).then((res2) => {
638
643
  res2?.();
639
- });
644
+ }));
640
645
  } else if (typeof trigger === "function") {
641
646
  trigger(script.load);
642
647
  }
@@ -654,7 +659,7 @@ function useScript(_input, _options) {
654
659
  _cbs.error = null;
655
660
  });
656
661
  const hookCtx = { script };
657
- script.updateTrigger(options.trigger);
662
+ script.setupTriggerHandler(options.trigger);
658
663
  script.$script = script;
659
664
  const proxyChain = (instance, accessor, accessors) => {
660
665
  return new Proxy((!accessor ? instance : instance?.[accessor]) || scriptProxy, {
@@ -693,7 +698,7 @@ function useScript(_input, _options) {
693
698
  script.proxy = proxyChain(script.instance);
694
699
  const res = new Proxy(script, {
695
700
  get(_, k) {
696
- const target = k in script ? script : script.proxy;
701
+ const target = k in script || String(k)[0] === "_" ? script : script.proxy;
697
702
  if (k === "then" || k === "catch") {
698
703
  return script[k].bind(script);
699
704
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "unhead",
3
3
  "type": "module",
4
- "version": "1.10.2",
4
+ "version": "1.10.4",
5
5
  "author": {
6
6
  "name": "Harlan Wilton",
7
7
  "email": "harlan@harlanzw.com",
@@ -34,9 +34,9 @@
34
34
  ],
35
35
  "dependencies": {
36
36
  "hookable": "^5.5.3",
37
- "@unhead/dom": "1.10.2",
38
- "@unhead/shared": "1.10.2",
39
- "@unhead/schema": "1.10.2"
37
+ "@unhead/dom": "1.10.4",
38
+ "@unhead/shared": "1.10.4",
39
+ "@unhead/schema": "1.10.4"
40
40
  },
41
41
  "scripts": {
42
42
  "build": "unbuild .",