Socket
Socket
Sign inDemoInstall

@schibsted/niche-utils

Package Overview
Dependencies
Maintainers
7
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@schibsted/niche-utils - npm Package Compare versions

Comparing version 0.4.1 to 0.4.2

63

lib/script/loadScript.js

@@ -1,36 +0,35 @@

const state = {};
import { getEventTarget } from '../eventTarget';
const isLoading = {};
const loadScriptEventTarget = getEventTarget();
export function loadScript(url, id) {
var _a, _b, _c;
if (((_a = state[id]) === null || _a === void 0 ? void 0 : _a.state) === 'loaded') {
return Promise.resolve();
}
if (((_b = state[id]) === null || _b === void 0 ? void 0 : _b.state) === 'error') {
return Promise.reject();
}
if (((_c = state[id]) === null || _c === void 0 ? void 0 : _c.state) === 'loading') {
return state[id].payload;
}
const promise = new Promise((resolve, reject) => {
state[id] = {
state: 'loading',
payload: promise,
};
const script = document.createElement('script');
script.src = url;
script.id = id;
script.onerror = (err) => {
state[id] = {
state: 'error',
payload: err,
return new Promise((resolve, reject) => {
if (document.querySelector(`#${id}`)) {
if (isLoading[id]) {
loadScriptEventTarget.addEventListener(id, () => {
resolve();
});
}
else {
resolve();
}
}
else {
isLoading[id] = true;
const script = document.createElement('script');
script.src = url;
script.id = id;
script.onerror = (err) => {
isLoading[id] = false;
reject(err);
loadScriptEventTarget.dispatchEvent(new CustomEvent(id));
};
reject(err);
};
script.onload = () => {
state[id] = { state: 'loaded' };
resolve();
};
script.async = true;
document.body.appendChild(script);
script.onload = () => {
isLoading[id] = false;
resolve();
loadScriptEventTarget.dispatchEvent(new CustomEvent(id));
};
script.async = true;
document.body.appendChild(script);
}
});
return promise;
}
{
"name": "@schibsted/niche-utils",
"version": "0.4.1",
"version": "0.4.2",
"license": "Apache-2.0",

@@ -23,3 +23,3 @@ "main": "lib/index.js",

},
"gitHead": "02b3fc2061b49da2a7f823ffa4c28770113abacb"
"gitHead": "ae51183e8bb79ff2bd5bcbf30510a8e0fe8ed643"
}

@@ -1,44 +0,37 @@

const state: Record<
string,
{
state: string;
payload?: unknown;
}
> = {};
import { getEventTarget } from '../eventTarget';
const isLoading: Record<string, boolean> = {};
const loadScriptEventTarget = getEventTarget();
export function loadScript(url: string, id: string): Promise<void> {
if (state[id]?.state === 'loaded') {
return Promise.resolve();
}
if (state[id]?.state === 'error') {
return Promise.reject();
}
if (state[id]?.state === 'loading') {
return state[id].payload as Promise<void>;
}
const promise = new Promise<void>((resolve, reject) => {
state[id] = {
state: 'loading',
payload: promise,
};
const script = document.createElement('script');
script.src = url;
script.id = id;
script.onerror = (err) => {
state[id] = {
state: 'error',
payload: err,
return new Promise<void>((resolve, reject) => {
if (document.querySelector(`#${id}`)) {
if (isLoading[id]) {
loadScriptEventTarget.addEventListener(id, () => {
resolve();
});
} else {
resolve();
}
} else {
isLoading[id] = true;
const script = document.createElement('script');
script.src = url;
script.id = id;
script.onerror = (err) => {
isLoading[id] = false;
reject(err);
loadScriptEventTarget.dispatchEvent(new CustomEvent(id));
};
reject(err);
};
script.onload = () => {
state[id] = { state: 'loaded' };
resolve();
};
script.async = true;
script.onload = () => {
isLoading[id] = false;
resolve();
loadScriptEventTarget.dispatchEvent(new CustomEvent(id));
};
script.async = true;
document.body.appendChild(script);
document.body.appendChild(script);
}
});
return promise;
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc