Skip to content

Commit 8875fea

Browse files
Merge pull request #767 from finsweet/fix-race-conditions-init
fix: race conditions when initializing multiple scripts
2 parents 5024ebf + ae590b4 commit 8875fea

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

.changeset/curly-bikes-wait.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@finsweet/attributes': patch
3+
---
4+
5+
fix: race conditions when initializing multiple scripts

packages/attributes/src/attributes.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,10 @@ const init = () => {
2929
// Collect pre-existing callbacks
3030
const callbacks = Array.isArray(FinsweetAttributes) ? (FinsweetAttributes as FinsweetAttributesCallback[]) : [];
3131

32-
// Collect library scripts
33-
const scripts = [...document.querySelectorAll<HTMLScriptElement>(`script[type="module"][src="${import.meta.url}"]`)];
34-
3532
// Init Attributes object
3633
window.FinsweetAttributes = {
3734
version,
38-
scripts,
35+
scripts: [],
3936
modules: {},
4037
process: new Set<FinsweetAttributeKey>(),
4138
utils: {
@@ -72,7 +69,13 @@ const init = () => {
7269
const initAttributes = () => {
7370
let autoLoad = false;
7471

75-
for (const script of window.FinsweetAttributes.scripts) {
72+
const scripts = document.querySelectorAll<HTMLScriptElement>(`script[type="module"][src="${import.meta.url}"]`);
73+
74+
for (const script of scripts) {
75+
if (window.FinsweetAttributes.scripts.includes(script)) continue;
76+
77+
window.FinsweetAttributes.scripts.push(script);
78+
7679
autoLoad ||= script.getAttribute(`${ATTRIBUTES_ATTRIBUTE_PREFIX}-auto`) === 'true';
7780

7881
for (const key of ATTRIBUTE_KEYS) {

0 commit comments

Comments
 (0)