@sv443-network/userutils 0.4.0 → 0.4.1
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/CHANGELOG.md +6 -0
- package/dist/index.d.mts +13 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.js +23 -19
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/** Returns a random item from the passed array */
|
|
2
|
+
declare function randomItem<T = unknown>(array: T[]): T | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* Returns a tuple of a random item and its index from the passed array
|
|
5
|
+
* Returns `[undefined, undefined]` if the passed array is empty
|
|
6
|
+
*/
|
|
7
|
+
declare function randomItemIndex<T = unknown>(array: T[]): [item?: T, index?: number];
|
|
8
|
+
/** Returns a random item from the passed array and mutates the array to remove the item */
|
|
9
|
+
declare function takeRandomItem<T = unknown>(arr: T[]): T | undefined;
|
|
10
|
+
/** Returns a copy of the array with its items in a random order */
|
|
11
|
+
declare function randomizeArray<T = unknown>(array: T[]): T[];
|
|
12
|
+
|
|
1
13
|
/**
|
|
2
14
|
* Returns `unsafeWindow` if the `@grant unsafeWindow` is given, otherwise falls back to the regular `window`
|
|
3
15
|
*/
|
|
@@ -122,4 +134,4 @@ declare function initOnSelector(opts?: InitOnSelectorOpts): void;
|
|
|
122
134
|
/** Returns all currently registered selectors, as a map of selector strings to their associated options */
|
|
123
135
|
declare function getSelectorMap(): Map<string, OnSelectorOpts[]>;
|
|
124
136
|
|
|
125
|
-
export { FetchAdvancedOpts, InitOnSelectorOpts, OnSelectorOpts, addGlobalStyle, addParent, autoPlural, clamp, debounce, fetchAdvanced, getSelectorMap, getUnsafeWindow, initOnSelector, insertAfter, interceptEvent, interceptWindowEvent, mapRange, onSelector, openInNewTab, pauseFor, preloadImages, randRange, removeOnSelector };
|
|
137
|
+
export { FetchAdvancedOpts, InitOnSelectorOpts, OnSelectorOpts, addGlobalStyle, addParent, autoPlural, clamp, debounce, fetchAdvanced, getSelectorMap, getUnsafeWindow, initOnSelector, insertAfter, interceptEvent, interceptWindowEvent, mapRange, onSelector, openInNewTab, pauseFor, preloadImages, randRange, randomItem, randomItemIndex, randomizeArray, removeOnSelector, takeRandomItem };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/** Returns a random item from the passed array */
|
|
2
|
+
declare function randomItem<T = unknown>(array: T[]): T | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* Returns a tuple of a random item and its index from the passed array
|
|
5
|
+
* Returns `[undefined, undefined]` if the passed array is empty
|
|
6
|
+
*/
|
|
7
|
+
declare function randomItemIndex<T = unknown>(array: T[]): [item?: T, index?: number];
|
|
8
|
+
/** Returns a random item from the passed array and mutates the array to remove the item */
|
|
9
|
+
declare function takeRandomItem<T = unknown>(arr: T[]): T | undefined;
|
|
10
|
+
/** Returns a copy of the array with its items in a random order */
|
|
11
|
+
declare function randomizeArray<T = unknown>(array: T[]): T[];
|
|
12
|
+
|
|
1
13
|
/**
|
|
2
14
|
* Returns `unsafeWindow` if the `@grant unsafeWindow` is given, otherwise falls back to the regular `window`
|
|
3
15
|
*/
|
|
@@ -122,4 +134,4 @@ declare function initOnSelector(opts?: InitOnSelectorOpts): void;
|
|
|
122
134
|
/** Returns all currently registered selectors, as a map of selector strings to their associated options */
|
|
123
135
|
declare function getSelectorMap(): Map<string, OnSelectorOpts[]>;
|
|
124
136
|
|
|
125
|
-
export { FetchAdvancedOpts, InitOnSelectorOpts, OnSelectorOpts, addGlobalStyle, addParent, autoPlural, clamp, debounce, fetchAdvanced, getSelectorMap, getUnsafeWindow, initOnSelector, insertAfter, interceptEvent, interceptWindowEvent, mapRange, onSelector, openInNewTab, pauseFor, preloadImages, randRange, removeOnSelector };
|
|
137
|
+
export { FetchAdvancedOpts, InitOnSelectorOpts, OnSelectorOpts, addGlobalStyle, addParent, autoPlural, clamp, debounce, fetchAdvanced, getSelectorMap, getUnsafeWindow, initOnSelector, insertAfter, interceptEvent, interceptWindowEvent, mapRange, onSelector, openInNewTab, pauseFor, preloadImages, randRange, randomItem, randomItemIndex, randomizeArray, removeOnSelector, takeRandomItem };
|
package/dist/index.js
CHANGED
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var h=Object.defineProperty,y=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var f=Object.getOwnPropertySymbols;var g=Object.prototype.hasOwnProperty,v=Object.prototype.propertyIsEnumerable;var b=(t,e,n)=>e in t?h(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,a=(t,e)=>{for(var n in e||(e={}))g.call(e,n)&&b(t,n,e[n]);if(f)for(var n of f(e))v.call(e,n)&&b(t,n,e[n]);return t},d=(t,e)=>y(t,w(e));var T=(t,e,n)=>new Promise((r,o)=>{var i=c=>{try{m(n.next(c));}catch(l){o(l);}},u=c=>{try{m(n.throw(c));}catch(l){o(l);}},m=c=>c.done?r(c.value):Promise.resolve(c.value).then(i,u);m((n=n.apply(t,e)).next());});function S(t,e,n){return Math.max(Math.min(t,n),e)}function N(t,e,n,r,o){return Number(e)===0&&Number(r)===0?t*(o/n):(t-e)*((o-r)/(n-e))+r}function p(...t){let e,n;if(typeof t[0]=="number"&&typeof t[1]=="number")[e,n]=t;else if(typeof t[0]=="number"&&typeof t[1]!="number")e=0,n=t[0];else throw new TypeError(`Wrong parameter(s) provided - expected: "number" and "number|undefined", got: "${typeof t[0]}" and "${typeof t[1]}"`);if(e=Number(e),n=Number(n),isNaN(e)||isNaN(n))throw new TypeError(`Parameters "min" and "max" can't be NaN`);if(e>n)throw new TypeError(`Parameter "min" can't be bigger than "max"`);return Math.floor(Math.random()*(n-e+1))+e}function I(t){return x(t)[0]}function x(t){if(t.length===0)return [void 0,void 0];let e=p(t.length-1);return [t[e],e]}function H(t){let[e,n]=x(t);if(n!==void 0)return t.splice(n,1),e}function P(t){let e=[...t];if(t.length===0)return t;for(let n=e.length-1;n>0;n--){let r=Math.floor(p(0,1e4)/1e4*(n+1));[e[n],e[r]]=[e[r],e[n]];}return e}function O(){try{return unsafeWindow}catch(t){return window}}function C(t,e){var n;return (n=t.parentNode)==null||n.insertBefore(e,t.nextSibling),e}function R(t,e){let n=t.parentNode;if(!n)throw new Error("Element doesn't have a parent node");return n.replaceChild(e,t),e.appendChild(t),e}function F(t){let e=document.createElement("style");e.innerHTML=t,document.head.appendChild(e);}function W(t,e=!1){let n=t.map(r=>new Promise((o,i)=>{let u=new Image;u.src=r,u.addEventListener("load",()=>o(u)),u.addEventListener("error",m=>e&&i(m));}));return Promise.allSettled(n)}function $(t){let e=document.createElement("a");Object.assign(e,{className:"userutils-open-in-new-tab",target:"_blank",rel:"noopener noreferrer",href:t}),e.style.display="none",document.body.appendChild(e),e.click(),setTimeout(e.remove,50);}function L(t,e,n){typeof Error.stackTraceLimit=="number"&&Error.stackTraceLimit<1e3&&(Error.stackTraceLimit=1e3),function(r){element.__proto__.addEventListener=function(...o){if(!(o[0]===e&&n()))return r.apply(this,o)};}(t.__proto__.addEventListener);}function q(t,e){return L(O(),t,e)}function B(t,e){return (Array.isArray(e)||e instanceof NodeList)&&(e=e.length),`${t}${e===1?"":"s"}`}function G(t){return new Promise(e=>{setTimeout(e,t);})}function U(t,e=300){let n;return function(...r){clearTimeout(n),n=setTimeout(()=>t.apply(this,r),e);}}function D(n){return T(this,arguments,function*(t,e={}){let{timeout:r=1e4}=e,o=new AbortController,i=setTimeout(()=>o.abort(),r),u=yield fetch(t,d(a({},e),{signal:o.signal}));return clearTimeout(i),u})}var s=new Map;function Q(t,e){let n=[];s.has(t)&&(n=s.get(t)),n.push(e),s.set(t,n),E(t,n);}function V(t){return s.delete(t)}function E(t,e){let n=[];if(e.forEach((r,o)=>{try{let i=r.all?document.querySelectorAll(t):document.querySelector(t);i&&(r.listener(i),r.continuous||n.push(o));}catch(i){console.error(`Couldn't call listener for selector '${t}'`,i);}}),n.length>0){let r=e.filter((o,i)=>!n.includes(i));r.length===0?s.delete(t):s.set(t,r);}}function X(t={}){new MutationObserver(()=>{for(let[n,r]of s.entries())E(n,r);}).observe(document.body,d(a({},t),{childList:!0}));}function Y(){return s}
|
|
4
4
|
|
|
5
|
-
exports.addGlobalStyle =
|
|
6
|
-
exports.addParent =
|
|
7
|
-
exports.autoPlural =
|
|
8
|
-
exports.clamp =
|
|
9
|
-
exports.debounce =
|
|
10
|
-
exports.fetchAdvanced =
|
|
11
|
-
exports.getSelectorMap =
|
|
5
|
+
exports.addGlobalStyle = F;
|
|
6
|
+
exports.addParent = R;
|
|
7
|
+
exports.autoPlural = B;
|
|
8
|
+
exports.clamp = S;
|
|
9
|
+
exports.debounce = U;
|
|
10
|
+
exports.fetchAdvanced = D;
|
|
11
|
+
exports.getSelectorMap = Y;
|
|
12
12
|
exports.getUnsafeWindow = O;
|
|
13
|
-
exports.initOnSelector =
|
|
14
|
-
exports.insertAfter =
|
|
15
|
-
exports.interceptEvent =
|
|
16
|
-
exports.interceptWindowEvent =
|
|
17
|
-
exports.mapRange =
|
|
18
|
-
exports.onSelector =
|
|
19
|
-
exports.openInNewTab =
|
|
20
|
-
exports.pauseFor =
|
|
21
|
-
exports.preloadImages =
|
|
22
|
-
exports.randRange =
|
|
23
|
-
exports.
|
|
13
|
+
exports.initOnSelector = X;
|
|
14
|
+
exports.insertAfter = C;
|
|
15
|
+
exports.interceptEvent = L;
|
|
16
|
+
exports.interceptWindowEvent = q;
|
|
17
|
+
exports.mapRange = N;
|
|
18
|
+
exports.onSelector = Q;
|
|
19
|
+
exports.openInNewTab = $;
|
|
20
|
+
exports.pauseFor = G;
|
|
21
|
+
exports.preloadImages = W;
|
|
22
|
+
exports.randRange = p;
|
|
23
|
+
exports.randomItem = I;
|
|
24
|
+
exports.randomItemIndex = x;
|
|
25
|
+
exports.randomizeArray = P;
|
|
26
|
+
exports.removeOnSelector = V;
|
|
27
|
+
exports.takeRandomItem = H;
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var h=Object.defineProperty,y=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var f=Object.getOwnPropertySymbols;var g=Object.prototype.hasOwnProperty,v=Object.prototype.propertyIsEnumerable;var b=(t,e,n)=>e in t?h(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,a=(t,e)=>{for(var n in e||(e={}))g.call(e,n)&&b(t,n,e[n]);if(f)for(var n of f(e))v.call(e,n)&&b(t,n,e[n]);return t},d=(t,e)=>y(t,w(e));var T=(t,e,n)=>new Promise((r,o)=>{var i=c=>{try{m(n.next(c));}catch(l){o(l);}},u=c=>{try{m(n.throw(c));}catch(l){o(l);}},m=c=>c.done?r(c.value):Promise.resolve(c.value).then(i,u);m((n=n.apply(t,e)).next());});function S(t,e,n){return Math.max(Math.min(t,n),e)}function N(t,e,n,r,o){return Number(e)===0&&Number(r)===0?t*(o/n):(t-e)*((o-r)/(n-e))+r}function p(...t){let e,n;if(typeof t[0]=="number"&&typeof t[1]=="number")[e,n]=t;else if(typeof t[0]=="number"&&typeof t[1]!="number")e=0,n=t[0];else throw new TypeError(`Wrong parameter(s) provided - expected: "number" and "number|undefined", got: "${typeof t[0]}" and "${typeof t[1]}"`);if(e=Number(e),n=Number(n),isNaN(e)||isNaN(n))throw new TypeError(`Parameters "min" and "max" can't be NaN`);if(e>n)throw new TypeError(`Parameter "min" can't be bigger than "max"`);return Math.floor(Math.random()*(n-e+1))+e}function I(t){return x(t)[0]}function x(t){if(t.length===0)return [void 0,void 0];let e=p(t.length-1);return [t[e],e]}function H(t){let[e,n]=x(t);if(n!==void 0)return t.splice(n,1),e}function P(t){let e=[...t];if(t.length===0)return t;for(let n=e.length-1;n>0;n--){let r=Math.floor(p(0,1e4)/1e4*(n+1));[e[n],e[r]]=[e[r],e[n]];}return e}function O(){try{return unsafeWindow}catch(t){return window}}function C(t,e){var n;return (n=t.parentNode)==null||n.insertBefore(e,t.nextSibling),e}function R(t,e){let n=t.parentNode;if(!n)throw new Error("Element doesn't have a parent node");return n.replaceChild(e,t),e.appendChild(t),e}function F(t){let e=document.createElement("style");e.innerHTML=t,document.head.appendChild(e);}function W(t,e=!1){let n=t.map(r=>new Promise((o,i)=>{let u=new Image;u.src=r,u.addEventListener("load",()=>o(u)),u.addEventListener("error",m=>e&&i(m));}));return Promise.allSettled(n)}function $(t){let e=document.createElement("a");Object.assign(e,{className:"userutils-open-in-new-tab",target:"_blank",rel:"noopener noreferrer",href:t}),e.style.display="none",document.body.appendChild(e),e.click(),setTimeout(e.remove,50);}function L(t,e,n){typeof Error.stackTraceLimit=="number"&&Error.stackTraceLimit<1e3&&(Error.stackTraceLimit=1e3),function(r){element.__proto__.addEventListener=function(...o){if(!(o[0]===e&&n()))return r.apply(this,o)};}(t.__proto__.addEventListener);}function q(t,e){return L(O(),t,e)}function B(t,e){return (Array.isArray(e)||e instanceof NodeList)&&(e=e.length),`${t}${e===1?"":"s"}`}function G(t){return new Promise(e=>{setTimeout(e,t);})}function U(t,e=300){let n;return function(...r){clearTimeout(n),n=setTimeout(()=>t.apply(this,r),e);}}function D(n){return T(this,arguments,function*(t,e={}){let{timeout:r=1e4}=e,o=new AbortController,i=setTimeout(()=>o.abort(),r),u=yield fetch(t,d(a({},e),{signal:o.signal}));return clearTimeout(i),u})}var s=new Map;function Q(t,e){let n=[];s.has(t)&&(n=s.get(t)),n.push(e),s.set(t,n),E(t,n);}function V(t){return s.delete(t)}function E(t,e){let n=[];if(e.forEach((r,o)=>{try{let i=r.all?document.querySelectorAll(t):document.querySelector(t);i&&(r.listener(i),r.continuous||n.push(o));}catch(i){console.error(`Couldn't call listener for selector '${t}'`,i);}}),n.length>0){let r=e.filter((o,i)=>!n.includes(i));r.length===0?s.delete(t):s.set(t,r);}}function X(t={}){new MutationObserver(()=>{for(let[n,r]of s.entries())E(n,r);}).observe(document.body,d(a({},t),{childList:!0}));}function Y(){return s}
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { F as addGlobalStyle, R as addParent, B as autoPlural, S as clamp, U as debounce, D as fetchAdvanced, Y as getSelectorMap, O as getUnsafeWindow, X as initOnSelector, C as insertAfter, L as interceptEvent, q as interceptWindowEvent, N as mapRange, Q as onSelector, $ as openInNewTab, G as pauseFor, W as preloadImages, p as randRange, I as randomItem, x as randomItemIndex, P as randomizeArray, V as removeOnSelector, H as takeRandomItem };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sv443-network/userutils",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Library with various utilities for userscripts - register listeners for when CSS selectors exist, intercept events, modify the DOM more easily and more ",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|