Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@marqueefy/marqueefy

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@marqueefy/marqueefy - npm Package Compare versions

Comparing version 1.0.0 to 1.0.1

81

dist/js/marqueefy.esm.js

@@ -16,2 +16,3 @@ /*!

*/
const elementMap = new Map();

@@ -23,6 +24,6 @@ const Data = {

}
const instanceMap = elementMap.get(element);
const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
// make it clear we only want one instance per element
// can be removed later when multiple key/instances are fine to be used
if (!instanceMap.has(key) && instanceMap.size !== 0) {

@@ -33,6 +34,4 @@ // eslint-disable-next-line no-console

}
instanceMap.set(key, instance);
},
get(element, key) {

@@ -42,6 +41,4 @@ if (elementMap.has(element)) {

}
return null;
},
remove(element, key) {

@@ -51,6 +48,6 @@ if (!elementMap.has(element)) {

}
const instanceMap = elementMap.get(element);
instanceMap.delete(key); // free up element references if there are no instances left for an element
instanceMap.delete(key);
// free up element references if there are no instances left for an element
if (instanceMap.size === 0) {

@@ -60,3 +57,2 @@ elementMap.delete(element);

}
};

@@ -70,2 +66,3 @@

*/
// Shout-out Angus Croll (https://goo.gl/pxwQGp)

@@ -76,6 +73,4 @@ const toType = object => {

}
return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
};
const isElement = object => {

@@ -85,6 +80,4 @@ if (!object || typeof object !== 'object') {

}
return typeof object.nodeType !== 'undefined';
};
const getElement = object => {

@@ -94,7 +87,5 @@ if (isElement(object)) {

}
if (typeof object === 'string' && object.length > 0) {
return document.querySelector(object);
}
return null;

@@ -109,2 +100,3 @@ };

*/
function normalizeData(value) {

@@ -114,19 +106,14 @@ if (value === 'true') {

}
if (value === 'false') {
return false;
}
if (value === Number(value).toString()) {
return Number(value);
}
if (value === '' || value === 'null') {
return null;
}
if (typeof value !== 'string') {
return value;
}
try {

@@ -138,7 +125,5 @@ return JSON.parse(decodeURIComponent(value));

}
function normalizeDataKey(key) {
return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
}
const Manipulator = {

@@ -148,7 +133,5 @@ setDataAttribute(element, key, value) {

},
removeDataAttribute(element, key) {
element.removeAttribute(`data-mq-${normalizeDataKey(key)}`);
},
getDataAttributes(element) {

@@ -158,6 +141,4 @@ if (!element) {

}
const attributes = {};
const mqKeys = Object.keys(element.dataset).filter(key => key.startsWith('mq') && !key.startsWith('mqConfig'));
for (const key of mqKeys) {

@@ -168,10 +149,7 @@ let pureKey = key.replace(/^mq/, '');

}
return attributes;
},
getDataAttribute(element, key) {
return normalizeData(element.getAttribute(`data-mq-${normalizeDataKey(key)}`));
}
};

@@ -185,2 +163,3 @@

*/
/**

@@ -195,28 +174,22 @@ * Class definition

}
static get DefaultType() {
return {};
}
static get NAME() {
throw new Error('You have to implement the static method "NAME", for each component!');
}
_getConfig(config) {
config = this._mergeConfigObj(config);
config = this._configAfterMerge(config);
this._typeCheckConfig(config);
return config;
}
_configAfterMerge(config) {
return config;
}
_mergeConfigObj(config, element) {
const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
return { ...this.constructor.Default,
return {
...this.constructor.Default,
...(typeof jsonConfig === 'object' ? jsonConfig : {}),

@@ -227,3 +200,2 @@ ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),

}
_typeCheckConfig(config, configTypes = this.constructor.DefaultType) {

@@ -234,3 +206,2 @@ for (const property of Object.keys(configTypes)) {

const valueType = isElement(value) ? 'element' : toType(value);
if (!new RegExp(expectedTypes).test(valueType)) {

@@ -241,3 +212,2 @@ throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);

}
}

@@ -251,2 +221,3 @@

*/
/**

@@ -257,2 +228,3 @@ * Constants

const VERSION = '1.0.0';
/**

@@ -266,16 +238,13 @@ * Class definition

element = getElement(element);
if (!element) {
return;
}
this._element = element;
this._config = this._getConfig(config);
Data.set(this._element, this.constructor.DATA_KEY, this);
} // Public
}
// Public
dispose() {
Data.remove(this._element, this.constructor.DATA_KEY);
for (const propertyName of Object.getOwnPropertyNames(this)) {

@@ -285,29 +254,22 @@ this[propertyName] = null;

}
_getConfig(config) {
config = this._mergeConfigObj(config, this._element);
config = this._configAfterMerge(config);
this._typeCheckConfig(config);
return config;
} // Static
}
// Static
static getInstance(element) {
return Data.get(getElement(element), this.DATA_KEY);
}
static getOrCreateInstance(element, config = {}) {
return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
}
static get VERSION() {
return VERSION;
}
static get DATA_KEY() {
return `mq.${this.NAME}`;
}
}

@@ -330,3 +292,2 @@

};
class Marqueefy extends BaseComponent {

@@ -339,15 +300,11 @@ constructor(element, config) {

}
static get NAME() {
return NAME;
}
static get Default() {
return Default;
}
static get DefaultType() {
return DefaultType;
}
refresh() {

@@ -360,16 +317,10 @@ const {

} = this._config;
const content = this._element.querySelector('.content');
let distance = content.getBoundingClientRect().width;
if (direction === 'top' || direction === 'bottom') {
distance = this._element.getBoundingClientRect().height;
this._element.style.setProperty('--mq-height', distance + 'px');
}
this._element.style.setProperty('--mq-animation-duration', distance / speed + 's');
}
}

@@ -376,0 +327,0 @@

@@ -22,2 +22,3 @@ /*!

*/
const elementMap = new Map();

@@ -29,6 +30,6 @@ const Data = {

}
const instanceMap = elementMap.get(element);
const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
// make it clear we only want one instance per element
// can be removed later when multiple key/instances are fine to be used
if (!instanceMap.has(key) && instanceMap.size !== 0) {

@@ -39,6 +40,4 @@ // eslint-disable-next-line no-console

}
instanceMap.set(key, instance);
},
get(element, key) {

@@ -48,6 +47,4 @@ if (elementMap.has(element)) {

}
return null;
},
remove(element, key) {

@@ -57,6 +54,6 @@ if (!elementMap.has(element)) {

}
const instanceMap = elementMap.get(element);
instanceMap.delete(key); // free up element references if there are no instances left for an element
instanceMap.delete(key);
// free up element references if there are no instances left for an element
if (instanceMap.size === 0) {

@@ -66,3 +63,2 @@ elementMap.delete(element);

}
};

@@ -76,2 +72,3 @@

*/
// Shout-out Angus Croll (https://goo.gl/pxwQGp)

@@ -82,6 +79,4 @@ const toType = object => {

}
return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
};
const isElement = object => {

@@ -91,6 +86,4 @@ if (!object || typeof object !== 'object') {

}
return typeof object.nodeType !== 'undefined';
};
const getElement = object => {

@@ -100,7 +93,5 @@ if (isElement(object)) {

}
if (typeof object === 'string' && object.length > 0) {
return document.querySelector(object);
}
return null;

@@ -115,2 +106,3 @@ };

*/
function normalizeData(value) {

@@ -120,19 +112,14 @@ if (value === 'true') {

}
if (value === 'false') {
return false;
}
if (value === Number(value).toString()) {
return Number(value);
}
if (value === '' || value === 'null') {
return null;
}
if (typeof value !== 'string') {
return value;
}
try {

@@ -144,7 +131,5 @@ return JSON.parse(decodeURIComponent(value));

}
function normalizeDataKey(key) {
return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
}
const Manipulator = {

@@ -154,7 +139,5 @@ setDataAttribute(element, key, value) {

},
removeDataAttribute(element, key) {
element.removeAttribute(`data-mq-${normalizeDataKey(key)}`);
},
getDataAttributes(element) {

@@ -164,6 +147,4 @@ if (!element) {

}
const attributes = {};
const mqKeys = Object.keys(element.dataset).filter(key => key.startsWith('mq') && !key.startsWith('mqConfig'));
for (const key of mqKeys) {

@@ -174,10 +155,7 @@ let pureKey = key.replace(/^mq/, '');

}
return attributes;
},
getDataAttribute(element, key) {
return normalizeData(element.getAttribute(`data-mq-${normalizeDataKey(key)}`));
}
};

@@ -191,2 +169,3 @@

*/
/**

@@ -201,28 +180,22 @@ * Class definition

}
static get DefaultType() {
return {};
}
static get NAME() {
throw new Error('You have to implement the static method "NAME", for each component!');
}
_getConfig(config) {
config = this._mergeConfigObj(config);
config = this._configAfterMerge(config);
this._typeCheckConfig(config);
return config;
}
_configAfterMerge(config) {
return config;
}
_mergeConfigObj(config, element) {
const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
return { ...this.constructor.Default,
return {
...this.constructor.Default,
...(typeof jsonConfig === 'object' ? jsonConfig : {}),

@@ -233,3 +206,2 @@ ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),

}
_typeCheckConfig(config, configTypes = this.constructor.DefaultType) {

@@ -240,3 +212,2 @@ for (const property of Object.keys(configTypes)) {

const valueType = isElement(value) ? 'element' : toType(value);
if (!new RegExp(expectedTypes).test(valueType)) {

@@ -247,3 +218,2 @@ throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);

}
}

@@ -257,2 +227,3 @@

*/
/**

@@ -263,2 +234,3 @@ * Constants

const VERSION = '1.0.0';
/**

@@ -272,16 +244,13 @@ * Class definition

element = getElement(element);
if (!element) {
return;
}
this._element = element;
this._config = this._getConfig(config);
Data.set(this._element, this.constructor.DATA_KEY, this);
} // Public
}
// Public
dispose() {
Data.remove(this._element, this.constructor.DATA_KEY);
for (const propertyName of Object.getOwnPropertyNames(this)) {

@@ -291,29 +260,22 @@ this[propertyName] = null;

}
_getConfig(config) {
config = this._mergeConfigObj(config, this._element);
config = this._configAfterMerge(config);
this._typeCheckConfig(config);
return config;
} // Static
}
// Static
static getInstance(element) {
return Data.get(getElement(element), this.DATA_KEY);
}
static getOrCreateInstance(element, config = {}) {
return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
}
static get VERSION() {
return VERSION;
}
static get DATA_KEY() {
return `mq.${this.NAME}`;
}
}

@@ -336,3 +298,2 @@

};
class Marqueefy extends BaseComponent {

@@ -345,15 +306,11 @@ constructor(element, config) {

}
static get NAME() {
return NAME;
}
static get Default() {
return Default;
}
static get DefaultType() {
return DefaultType;
}
refresh() {

@@ -366,16 +323,10 @@ const {

} = this._config;
const content = this._element.querySelector('.content');
let distance = content.getBoundingClientRect().width;
if (direction === 'top' || direction === 'bottom') {
distance = this._element.getBoundingClientRect().height;
this._element.style.setProperty('--mq-height', distance + 'px');
}
this._element.style.setProperty('--mq-animation-duration', distance / speed + 's');
}
}

@@ -382,0 +333,0 @@

2

dist/js/marqueefy.min.js

@@ -6,3 +6,3 @@ /*!

*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).marqueefy=e()}(this,(function(){"use strict";const t=new Map,e={set(e,r,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(r)||0===s.size?s.set(r,n):console.error(`Marqueefy doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,r)=>t.has(e)&&t.get(e).get(r)||null,remove(e,r){if(!t.has(e))return;const n=t.get(e);n.delete(r),0===n.size&&t.delete(e)}},r=t=>!(!t||"object"!=typeof t)&&void 0!==t.nodeType,n=t=>r(t)?t:"string"==typeof t&&t.length>0?document.querySelector(t):null;function s(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function o(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const i={setDataAttribute(t,e,r){t.setAttribute(`data-mq-${o(e)}`,r)},removeDataAttribute(t,e){t.removeAttribute(`data-mq-${o(e)}`)},getDataAttributes(t){if(!t)return{};const e={},r=Object.keys(t.dataset).filter((t=>t.startsWith("mq")&&!t.startsWith("mqConfig")));for(const n of r){let r=n.replace(/^mq/,"");r=r.charAt(0).toLowerCase()+r.slice(1,r.length),e[r]=s(t.dataset[n])}return e},getDataAttribute:(t,e)=>s(t.getAttribute(`data-mq-${o(e)}`))},c={direction:"left",speed:100},a={direction:"string",speed:"number"};return{Marqueefy:class extends class extends class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=r(e)?i.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...r(e)?i.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const s of Object.keys(e)){const o=e[s],i=t[s],c=r(i)?"element":null==(n=i)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(c))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${s}" provided type "${c}" but expected type "${o}".`)}var n}}{constructor(t,r){super(),(t=n(t))&&(this._element=t,this._config=this._getConfig(r),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(n(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"1.0.0"}static get DATA_KEY(){return`mq.${this.NAME}`}}{constructor(t,e){super(t),this._element=t,this._config=this._getConfig(e),this.refresh()}static get NAME(){return"marqueefy"}static get Default(){return c}static get DefaultType(){return a}refresh(){const{direction:t}=this._config,{speed:e}=this._config;let r=this._element.querySelector(".content").getBoundingClientRect().width;"top"!==t&&"bottom"!==t||(r=this._element.getBoundingClientRect().height,this._element.style.setProperty("--mq-height",r+"px")),this._element.style.setProperty("--mq-animation-duration",r/e+"s")}}}}));
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).marqueefy=e()}(this,(function(){"use strict";const t=new Map,e={set(e,r,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(r)||0===s.size?s.set(r,n):console.error(`Marqueefy doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,r)=>t.has(e)&&t.get(e).get(r)||null,remove(e,r){if(!t.has(e))return;const n=t.get(e);n.delete(r),0===n.size&&t.delete(e)}},r=t=>!(!t||"object"!=typeof t)&&void 0!==t.nodeType,n=t=>r(t)?t:"string"==typeof t&&t.length>0?document.querySelector(t):null;function s(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function o(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const i={setDataAttribute(t,e,r){t.setAttribute(`data-mq-${o(e)}`,r)},removeDataAttribute(t,e){t.removeAttribute(`data-mq-${o(e)}`)},getDataAttributes(t){if(!t)return{};const e={},r=Object.keys(t.dataset).filter((t=>t.startsWith("mq")&&!t.startsWith("mqConfig")));for(const n of r){let r=n.replace(/^mq/,"");r=r.charAt(0).toLowerCase()+r.slice(1,r.length),e[r]=s(t.dataset[n])}return e},getDataAttribute:(t,e)=>s(t.getAttribute(`data-mq-${o(e)}`))};class c{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=r(e)?i.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...r(e)?i.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const s of Object.keys(e)){const o=e[s],i=t[s],c=r(i)?"element":null==(n=i)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(c))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${s}" provided type "${c}" but expected type "${o}".`)}var n}}class a extends c{constructor(t,r){super(),(t=n(t))&&(this._element=t,this._config=this._getConfig(r),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(n(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"1.0.0"}static get DATA_KEY(){return`mq.${this.NAME}`}}const u={direction:"left",speed:100},f={direction:"string",speed:"number"};return{Marqueefy:class extends a{constructor(t,e){super(t),this._element=t,this._config=this._getConfig(e),this.refresh()}static get NAME(){return"marqueefy"}static get Default(){return u}static get DefaultType(){return f}refresh(){const{direction:t}=this._config,{speed:e}=this._config;let r=this._element.querySelector(".content").getBoundingClientRect().width;"top"!==t&&"bottom"!==t||(r=this._element.getBoundingClientRect().height,this._element.style.setProperty("--mq-height",r+"px")),this._element.style.setProperty("--mq-animation-duration",r/e+"s")}}}}));
//# sourceMappingURL=marqueefy.min.js.map

@@ -16,3 +16,3 @@ /**

const VERSION = '1.0.0'
const VERSION = '1.0.1'

@@ -19,0 +19,0 @@ /**

/**
* --------------------------------------------------------------------------
* Marqueefy (v1.0.0): marqueefy.js
* Marqueefy (v1.0.1): marqueefy.js
* Licensed under MIT (https://github.com/marqueefy/marqueefy.github.io/blob/main/LICENSE)

@@ -47,2 +47,5 @@ * --------------------------------------------------------------------------

this._element.setAttribute('data-mq-direction', direction)
this._element.setAttribute('data-mq-speed', speed)
const content = this._element.querySelector('.content')

@@ -49,0 +52,0 @@ let distance = content.getBoundingClientRect().width

{
"name": "@marqueefy/marqueefy",
"description": "Marqueefy is a custom Marquee component.",
"version": "1.0.0",
"description": "Marqueefy is a custom Marquee component used to create horizontal or vertical scrolling content.",
"version": "1.0.1",
"config": {

@@ -79,37 +79,34 @@ "version_short": "1.0"

"@babel/cli": "^7.19.3",
"@babel/core": "^7.19.3",
"@babel/preset-env": "^7.19.3",
"@rollup/plugin-babel": "^5.3.1",
"@rollup/plugin-commonjs": "^22.0.2",
"@rollup/plugin-node-resolve": "^14.1.0",
"@rollup/plugin-replace": "^4.0.0",
"autoprefixer": "^10.4.12",
"@babel/core": "^7.20.2",
"@babel/preset-env": "^7.20.2",
"@rollup/plugin-babel": "^6.0.2",
"@rollup/plugin-commonjs": "^23.0.2",
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-replace": "^5.0.1",
"autoprefixer": "^10.4.13",
"bundlewatch": "^0.3.3",
"clean-css-cli": "^5.6.1",
"cross-env": "^7.0.3",
"eslint": "^8.24.0",
"eslint-config-xo": "^0.42.0",
"eslint": "^8.27.0",
"eslint-config-xo": "^0.43.1",
"eslint-plugin-html": "^7.1.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-markdown": "^3.0.0",
"eslint-plugin-unicorn": "^44.0.0",
"eslint-plugin-unicorn": "^44.0.2",
"find-unused-sass-variables": "^4.0.4",
"globby": "^11.1.0",
"hammer-simulator": "0.0.1",
"hugo-bin": "^0.92.2",
"hugo-bin": "^0.93.0",
"ip": "^2.0.0",
"jquery": "^3.6.1",
"lockfile-lint": "^4.9.5",
"lockfile-lint": "^4.9.6",
"nodemon": "^2.0.20",
"npm-run-all": "^4.1.5",
"postcss": "^8.4.17",
"postcss": "^8.4.19",
"postcss-cli": "^10.0.0",
"rollup": "^2.79.1",
"rollup-plugin-istanbul": "^3.0.0",
"rtlcss": "^4.0.0",
"sass": "^1.55.0",
"rollup": "^3.2.5",
"sass": "^1.56.1",
"shelljs": "^0.8.5",
"stylelint": "^14.13.0",
"stylelint-config-twbs-bootstrap": "^6.0.0",
"terser": "^5.15.0",
"stylelint": "^14.14.1",
"stylelint-config-twbs-bootstrap": "^7.0.0",
"terser": "^5.15.1",
"vnu-jar": "22.9.29"

@@ -116,0 +113,0 @@ },

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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