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.3.0 to 0.4.0

lib/array/array.d.ts

2

lib/index.d.ts

@@ -5,1 +5,3 @@ export * as eventTarget from './eventTarget';

export * as fetch from './fetch';
export * as array from './array';
export * as url from './url';

@@ -5,1 +5,3 @@ export * as eventTarget from './eventTarget';

export * as fetch from './fetch';
export * as array from './array';
export * as url from './url';

44

lib/script/loadScript.js

@@ -0,16 +1,36 @@

const state = {};
export function loadScript(url, id) {
return new Promise((resolve, reject) => {
if (document.querySelector(`#${id}`)) {
var _a, _b;
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 (state[id].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,
};
reject(err);
};
script.onload = () => {
state[id] = { state: 'loaded' };
resolve();
}
else {
const script = document.createElement('script');
script.src = url;
script.id = id;
script.onerror = (err) => reject(err);
script.onload = () => resolve();
script.async = true;
document.body.appendChild(script);
}
};
script.async = true;
document.body.appendChild(script);
});
return promise;
}
{
"name": "@schibsted/niche-utils",
"version": "0.3.0",
"version": "0.4.0",
"license": "Apache-2.0",

@@ -20,5 +20,6 @@ "main": "lib/index.js",

"lint": "eslint --ext .js,.ts,.tsx ./src",
"test": "jest ./src",
"typecheck": "tsc --noEmit"
},
"gitHead": "c2d0ccf243362b1c0d6532ad79df3fbef47ddcb3"
"gitHead": "5fc4cb80aaac17c0b9de081f407b4be24933ef0e"
}

@@ -5,1 +5,3 @@ export * as eventTarget from './eventTarget';

export * as fetch from './fetch';
export * as array from './array';
export * as url from './url';

@@ -0,16 +1,44 @@

const state: Record<
string,
{
state: string;
payload?: unknown;
}
> = {};
export function loadScript(url: string, id: string): Promise<void> {
return new Promise((resolve, reject) => {
if (document.querySelector(`#${id}`)) {
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,
};
reject(err);
};
script.onload = () => {
state[id] = { state: 'loaded' };
resolve();
} else {
const script = document.createElement('script');
script.src = url;
script.id = id;
script.onerror = (err) => reject(err);
script.onload = () => resolve();
script.async = true;
};
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