Socket
Socket
Sign inDemoInstall

tiny-cookie

Package Overview
Dependencies
0
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.3.2 to 2.4.0

dist/index.d.ts

364

dist/tiny-cookie.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.Cookie = {}));
}(this, function (exports) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Cookie = {}));
})(this, (function (exports) { 'use strict';
function _extends() {
_extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
/******************************************************************************
Copyright (c) Microsoft Corporation.
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
return target;
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
return _extends.apply(this, arguments);
}
function hasOwn(obj, key) {
return Object.prototype.hasOwnProperty.call(obj, key);
} // Escape special characters.
function escapeRe(str) {
return str.replace(/[.*+?^$|[\](){}\\-]/g, '\\$&');
} // Return a future date by the given string.
function computeExpires(str) {
var lastCh = str.charAt(str.length - 1);
var value = parseInt(str, 10);
var expires = new Date();
switch (lastCh) {
case 'Y':
expires.setFullYear(expires.getFullYear() + value);
break;
case 'M':
expires.setMonth(expires.getMonth() + value);
break;
case 'D':
expires.setDate(expires.getDate() + value);
break;
case 'h':
expires.setHours(expires.getHours() + value);
break;
case 'm':
expires.setMinutes(expires.getMinutes() + value);
break;
case 's':
expires.setSeconds(expires.getSeconds() + value);
break;
default:
expires = new Date(str);
function hasOwn(obj, key) {
return Object.prototype.hasOwnProperty.call(obj, key);
}
return expires;
} // Convert an object to a cookie option string.
function convert(opts) {
var res = ''; // eslint-disable-next-line
for (var key in opts) {
if (hasOwn(opts, key)) {
if (/^expires$/i.test(key)) {
var expires = opts[key];
if (typeof expires !== 'object') {
expires += typeof expires === 'number' ? 'D' : '';
expires = computeExpires(expires);
}
res += ";" + key + "=" + expires.toUTCString();
} else if (/^secure$/.test(key)) {
if (opts[key]) {
res += ";" + key;
}
} else {
res += ";" + key + "=" + opts[key];
// Escape special characters.
function escapeRe(str) {
return str.replace(/[.*+?^$|[\](){}\\-]/g, "\\$&");
}
// Return a future date by the given string.
function computeExpires(str) {
var lastCh = str.charAt(str.length - 1);
var value = parseInt(str, 10);
var expires = new Date();
switch (lastCh) {
case "Y":
expires.setFullYear(expires.getFullYear() + value);
break;
case "M":
expires.setMonth(expires.getMonth() + value);
break;
case "D":
expires.setDate(expires.getDate() + value);
break;
case "h":
expires.setHours(expires.getHours() + value);
break;
case "m":
expires.setMinutes(expires.getMinutes() + value);
break;
case "s":
expires.setSeconds(expires.getSeconds() + value);
break;
default:
expires = new Date(str);
}
}
return expires;
}
if (!hasOwn(opts, 'path')) {
res += ';path=/';
// Convert an object to a cookie option string.
function convert(opts) {
var res = "";
for (var _i = 0, _a = Object.keys(opts); _i < _a.length; _i++) {
var key = _a[_i];
if (/^expires$/i.test(key)) {
var expires = opts[key];
var expiresDate = void 0;
if (typeof expires === "object") {
expiresDate = expires;
}
else {
expires += typeof expires === "number" ? "D" : "";
expiresDate = computeExpires(String(expires));
}
res += ";".concat(key, "=").concat(expiresDate.toUTCString());
}
else if (/^secure$/.test(key)) {
if (opts[key]) {
res += ";".concat(key);
}
}
else {
res += ";".concat(key, "=").concat(opts[key]);
}
}
if (!hasOwn(opts, "path")) {
res += ";path=/";
}
return res;
}
return res;
}
function isEnabled() {
var key = '@key@';
var value = '1';
var re = new RegExp("(?:^|; )" + key + "=" + value + "(?:;|$)");
document.cookie = key + "=" + value + ";path=/";
var enabled = re.test(document.cookie);
if (enabled) {
// eslint-disable-next-line
remove(key);
// Check if the browser cookie is enabled.
function isEnabled() {
var key = "@key@";
var value = "1";
var re = new RegExp("(?:^|; )".concat(key, "=").concat(value, "(?:;|$)"));
document.cookie = "".concat(key, "=").concat(value, ";path=/");
var enabled = re.test(document.cookie);
if (enabled) {
// eslint-disable-next-line
remove(key);
}
return enabled;
}
return enabled;
} // Get the cookie value by key.
function get(key, decoder) {
if (decoder === void 0) {
decoder = decodeURIComponent;
// Get the cookie value by key.
function get(key, decoder) {
if (decoder === void 0) { decoder = decodeURIComponent; }
if (typeof key !== "string" || !key) {
return null;
}
var reKey = new RegExp("(?:^|; )".concat(escapeRe(key), "(?:=([^;]*))?(?:;|$)"));
var match = reKey.exec(document.cookie);
if (match === null) {
return null;
}
if (typeof decoder === "function") {
return decoder(match[1]);
}
return match[1];
}
if (typeof key !== 'string' || !key) {
return null;
// The all cookies
function getAll(decoder) {
if (decoder === void 0) { decoder = decodeURIComponent; }
var reKey = /(?:^|; )([^=]+?)(?:=([^;]*))?(?:;|$)/g;
var cookies = {};
var match;
/* eslint-disable no-cond-assign */
while ((match = reKey.exec(document.cookie))) {
reKey.lastIndex = match.index + match.length - 1;
cookies[match[1]] =
typeof decoder === "function" ? decoder(match[2]) : match[2];
}
return cookies;
}
var reKey = new RegExp("(?:^|; )" + escapeRe(key) + "(?:=([^;]*))?(?:;|$)");
var match = reKey.exec(document.cookie);
if (match === null) {
return null;
function set(key, value, encoder, options) {
if (encoder === void 0) { encoder = encodeURIComponent; }
if (typeof encoder === "object" && encoder !== null) {
/* eslint-disable no-param-reassign */
options = encoder;
encoder = encodeURIComponent;
/* eslint-enable no-param-reassign */
}
var attrsStr = convert(options || {});
var valueStr = typeof encoder === "function" ? encoder(value) : value;
var newCookie = "".concat(key, "=").concat(valueStr).concat(attrsStr);
document.cookie = newCookie;
}
return typeof decoder === 'function' ? decoder(match[1]) : match[1];
} // The all cookies
function getAll(decoder) {
if (decoder === void 0) {
decoder = decodeURIComponent;
// Remove a cookie by the specified key.
function remove(key, options) {
var opts = { expires: -1 };
if (options) {
opts = __assign(__assign({}, options), opts);
}
return set(key, "a", opts);
}
var reKey = /(?:^|; )([^=]+?)(?:=([^;]*))?(?:;|$)/g;
var cookies = {};
var match;
/* eslint-disable no-cond-assign */
while (match = reKey.exec(document.cookie)) {
reKey.lastIndex = match.index + match.length - 1;
cookies[match[1]] = typeof decoder === 'function' ? decoder(match[2]) : match[2];
// Get the cookie's value without decoding.
function getRaw(key) {
return get(key, null);
}
return cookies;
} // Set a cookie.
function set$1(key, value, encoder, options) {
if (encoder === void 0) {
encoder = encodeURIComponent;
// Set a cookie without encoding the value.
function setRaw(key, value, options) {
return set(key, value, null, options);
}
if (typeof encoder === 'object' && encoder !== null) {
/* eslint-disable no-param-reassign */
options = encoder;
encoder = encodeURIComponent;
/* eslint-enable no-param-reassign */
}
exports.get = get;
exports.getAll = getAll;
exports.getAllCookies = getAll;
exports.getCookie = get;
exports.getRaw = getRaw;
exports.getRawCookie = getRaw;
exports.isCookieEnabled = isEnabled;
exports.isEnabled = isEnabled;
exports.remove = remove;
exports.removeCookie = remove;
exports.set = set;
exports.setCookie = set;
exports.setRaw = setRaw;
exports.setRawCookie = setRaw;
var attrsStr = convert(options || {});
var valueStr = typeof encoder === 'function' ? encoder(value) : value;
var newCookie = key + "=" + valueStr + attrsStr;
document.cookie = newCookie;
} // Remove a cookie by the specified key.
function remove(key, options) {
var opts = {
expires: -1
};
if (options) {
opts = _extends({}, options, opts);
}
return set$1(key, 'a', opts);
} // Get the cookie's value without decoding.
function getRaw(key) {
return get(key, null);
} // Set a cookie without encoding the value.
function setRaw(key, value, options) {
return set$1(key, value, null, options);
}
exports.isEnabled = isEnabled;
exports.isCookieEnabled = isEnabled;
exports.get = get;
exports.getCookie = get;
exports.getAll = getAll;
exports.getAllCookies = getAll;
exports.set = set$1;
exports.setCookie = set$1;
exports.getRaw = getRaw;
exports.getRawCookie = getRaw;
exports.setRaw = setRaw;
exports.setRawCookie = setRaw;
exports.remove = remove;
exports.removeCookie = remove;
Object.defineProperty(exports, '__esModule', { value: true });
}));

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).Cookie={})}(this,function(e){"use strict";function n(){return(n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e}).apply(this,arguments)}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function u(e){var t=e.charAt(e.length-1),o=parseInt(e,10),n=new Date;switch(t){case"Y":n.setFullYear(n.getFullYear()+o);break;case"M":n.setMonth(n.getMonth()+o);break;case"D":n.setDate(n.getDate()+o);break;case"h":n.setHours(n.getHours()+o);break;case"m":n.setMinutes(n.getMinutes()+o);break;case"s":n.setSeconds(n.getSeconds()+o);break;default:n=new Date(e)}return n}function t(){var e="@key@",t=/(?:^|; )@key@=1(?:;|$)/;document.cookie=e+"=1;path=/";var o=t.test(document.cookie);return o&&a(e),o}function o(e,t){if(void 0===t&&(t=decodeURIComponent),"string"!=typeof e||!e)return null;var o=RegExp("(?:^|; )"+e.replace(/[.*+?^$|[\](){}\\-]/g,"\\$&")+"(?:=([^;]*))?(?:;|$)").exec(document.cookie);return null===o?null:"function"==typeof t?t(o[1]):o[1]}function r(e){void 0===e&&(e=decodeURIComponent);for(var t,o=/(?:^|; )([^=]+?)(?:=([^;]*))?(?:;|$)/g,n={};t=o.exec(document.cookie);)o.lastIndex=t.index+t.length-1,n[t[1]]="function"==typeof e?e(t[2]):t[2];return n}function i(e,t,o,n){void 0===o&&(o=encodeURIComponent),"object"==typeof o&&null!==o&&(n=o,o=encodeURIComponent);var r=function(e){var t="";for(var o in e)if(c(e,o))if(/^expires$/i.test(o)){var n=e[o];"object"!=typeof n&&(n=u(n+="number"==typeof n?"D":"")),t+=";"+o+"="+n.toUTCString()}else/^secure$/.test(o)?e[o]&&(t+=";"+o):t+=";"+o+"="+e[o];return c(e,"path")||(t+=";path=/"),t}(n||{}),i="function"==typeof o?o(t):t;document.cookie=e+"="+i+r}function a(e,t){var o={expires:-1};return t&&(o=n({},t,o)),i(e,"a",o)}function s(e){return o(e,null)}function f(e,t,o){return i(e,t,null,o)}e.isEnabled=t,e.isCookieEnabled=t,e.get=o,e.getCookie=o,e.getAll=r,e.getAllCookies=r,e.set=i,e.setCookie=i,e.getRaw=s,e.getRawCookie=s,e.setRaw=f,e.setRawCookie=f,e.remove=a,e.removeCookie=a,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Cookie={})}(this,(function(e){"use strict";var t=function(){return t=Object.assign||function(e){for(var t,o=1,n=arguments.length;o<n;o++)for(var c in t=arguments[o])Object.prototype.hasOwnProperty.call(t,c)&&(e[c]=t[c]);return e},t.apply(this,arguments)};function o(e){var t=e.charAt(e.length-1),o=parseInt(e,10),n=new Date;switch(t){case"Y":n.setFullYear(n.getFullYear()+o);break;case"M":n.setMonth(n.getMonth()+o);break;case"D":n.setDate(n.getDate()+o);break;case"h":n.setHours(n.getHours()+o);break;case"m":n.setMinutes(n.getMinutes()+o);break;case"s":n.setSeconds(n.getSeconds()+o);break;default:n=new Date(e)}return n}function n(e){for(var t="",n=0,c=Object.keys(e);n<c.length;n++){var r=c[n];if(/^expires$/i.test(r)){var a=e[r],i=void 0;"object"==typeof a?i=a:(a+="number"==typeof a?"D":"",i=o(String(a))),t+=";".concat(r,"=").concat(i.toUTCString())}else/^secure$/.test(r)?e[r]&&(t+=";".concat(r)):t+=";".concat(r,"=").concat(e[r])}return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,"path")||(t+=";path=/"),t}function c(){var e="@key@",t=new RegExp("(?:^|; )".concat(e,"=").concat("1","(?:;|$)"));document.cookie="".concat(e,"=").concat("1",";path=/");var o=t.test(document.cookie);return o&&u(e),o}function r(e,t){if(void 0===t&&(t=decodeURIComponent),"string"!=typeof e||!e)return null;var o=new RegExp("(?:^|; )".concat(e.replace(/[.*+?^$|[\](){}\\-]/g,"\\$&"),"(?:=([^;]*))?(?:;|$)")).exec(document.cookie);return null===o?null:"function"==typeof t?t(o[1]):o[1]}function a(e){void 0===e&&(e=decodeURIComponent);for(var t,o=/(?:^|; )([^=]+?)(?:=([^;]*))?(?:;|$)/g,n={};t=o.exec(document.cookie);)o.lastIndex=t.index+t.length-1,n[t[1]]="function"==typeof e?e(t[2]):t[2];return n}function i(e,t,o,c){void 0===o&&(o=encodeURIComponent),"object"==typeof o&&null!==o&&(c=o,o=encodeURIComponent);var r=n(c||{}),a="function"==typeof o?o(t):t,i="".concat(e,"=").concat(a).concat(r);document.cookie=i}function u(e,o){var n={expires:-1};return o&&(n=t(t({},o),n)),i(e,"a",n)}function s(e){return r(e,null)}function f(e,t,o){return i(e,t,null,o)}e.get=r,e.getAll=a,e.getAllCookies=a,e.getCookie=r,e.getRaw=s,e.getRawCookie=s,e.isCookieEnabled=c,e.isEnabled=c,e.remove=u,e.removeCookie=u,e.set=i,e.setCookie=i,e.setRaw=f,e.setRawCookie=f}));

@@ -14,3 +14,3 @@ // @flow

path?: string,
expires?: string | number,
expires?: Date | string | number,
'max-age'?: number,

@@ -21,3 +21,3 @@ secure?: boolean,

declare function isEnabled() : boolean;
declare function isEnabled(): boolean;

@@ -27,3 +27,3 @@ /**

*/
declare function get<T>(key: string, decoder?: Decoder<T>) : T | null;
declare function get<T>(key: string, decoder?: Decoder<T> | null): T | null;

@@ -33,3 +33,3 @@ /**

*/
declare function getAll<T>(decoder?: Decoder<T>) : Cookies<T>;
declare function getAll<T>(decoder?: Decoder<T> | null): Cookies<T>;

@@ -39,3 +39,3 @@ /**

*/
declare function set<T>(key: string, value: T, encoder : Encoder<T>, options?: CookieOptions) : void;
declare function set<T>(key: string, value: T, encoder: Encoder<T> | null, options?: CookieOptions): void;

@@ -45,3 +45,3 @@ /**

*/
declare function set(key: string, value: string, options?: CookieOptions) : void;
declare function set(key: string, value: string, options?: CookieOptions): void;

@@ -51,3 +51,3 @@ /**

*/
declare function remove(key: string, options?: CookieOptions) : void;
declare function remove(key: string, options?: CookieOptions): void;

@@ -57,3 +57,3 @@ /**

*/
declare function getRaw(key: string) : string | null;
declare function getRaw(key: string): string | null;

@@ -63,3 +63,3 @@ /**

*/
declare function setRaw(key: string, value: string, options?: CookieOptions) : void;
declare function setRaw(key: string, value: string, options?: CookieOptions): void;

@@ -66,0 +66,0 @@ declare export {

{
"name": "tiny-cookie",
"version": "2.3.2",
"version": "2.4.0",
"description": "A tiny cookie manipulation plugin",
"main": "lib/index.js",
"module": "es/index.js",
"jsnext:main": "es/index.js",
"typings": "types/index.d.ts",
"main": "./dist/tiny-cookie.cjs.js",
"module": "./dist/tiny-cookie.esm.js",
"jsnext:main": "./dist/tiny-cookie.esm.js",
"typings": "./dist/index.d.ts",
"exports": {
".": {
"require": "./dist/tiny-cookie.cjs.js",
"import": "./dist/tiny-cookie.esm.js",
"types": "./dist/index.d.ts"
}
},
"files": [

@@ -18,12 +25,12 @@ "flow",

"scripts": {
"clean": "rimraf dist lib es coverage",
"start": "cross-env BABEL_ENV=commonjs babel-node server.js",
"clean": "rimraf dist coverage",
"start": "ts-node-esm --project tsconfig.node.json server.ts",
"lint": "eslint src",
"test": "npm run build && karma start",
"test:saucelabs": "npm run build && karma start karma.saucelabs.conf.js",
"build:commonjs": "cross-env BABEL_ENV=commonjs babel src --out-dir lib",
"build:es": "cross-env BABEL_ENV=es babel src --out-dir es",
"build:umd": "cross-env NODE_ENV=development rollup -c rollup.config.js",
"build:umd:min": "cross-env NODE_ENV=production rollup -c rollup.config.js",
"build": "npm run clean && npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min"
"build:cjs": "cross-env FORMAT=cjs NODE_ENV=development rollup -c rollup.config.js --bundleConfigAsCjs",
"build:es": "cross-env FORMAT=es NODE_ENV=development rollup -c rollup.config.js --bundleConfigAsCjs",
"build:umd": "cross-env FORMAT=umd NODE_ENV=development rollup -c rollup.config.js --bundleConfigAsCjs",
"build:umd:min": "cross-env FORMAT=umd NODE_ENV=production rollup -c rollup.config.js --bundleConfigAsCjs",
"build:types": "tsc src/index.ts --declaration --outDir dist/dts --emitDeclarationOnly && api-extractor run --local && rimraf dist/dts",
"build": "npm run clean && npm run build:cjs && npm run build:es && npm run build:umd && npm run build:umd:min && npm run build:types"
},

@@ -39,30 +46,32 @@ "author": {

"license": "MIT",
"dependencies": {},
"devDependencies": {
"@babel/cli": "^7.2.3",
"@babel/core": "^7.2.2",
"@babel/node": "^7.2.2",
"@babel/plugin-transform-modules-commonjs": "^7.2.0",
"@babel/preset-env": "^7.2.3",
"babel-eslint": "^7.2.3",
"chai": "^4.0.2",
"cross-env": "^5.0.1",
"eslint": "^4.1.1",
"eslint-config-airbnb-base": "^11.2.0",
"eslint-plugin-import": "^2.14.0",
"express": "^4.16.4",
"karma": "^3.1.4",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage": "^1.1.2",
"karma-mocha": "^1.3.0",
"karma-sauce-launcher": "^2.0.2",
"mocha": "^5.2.0",
"@microsoft/api-extractor": "^7.34.3",
"@rollup/plugin-terser": "^0.4.0",
"@rollup/plugin-typescript": "^11.0.0",
"@tsconfig/node16": "^1.0.3",
"@types/express": "^4.17.17",
"@types/node": "^18.11.19",
"@typescript-eslint/eslint-plugin": "^5.50.0",
"@typescript-eslint/parser": "^5.50.0",
"chai": "^4.3.7",
"cross-env": "^7.0.3",
"eslint": "^8.33.0",
"express": "^4.18.2",
"karma": "^6.4.1",
"karma-chrome-launcher": "^3.1.1",
"karma-coverage": "^2.2.0",
"karma-mocha": "^2.0.1",
"mocha": "^10.2.0",
"pre-commit": "^1.2.2",
"rimraf": "^2.6.1",
"rollup": "^1.1.0",
"rollup-plugin-babel": "^4.3.0",
"rollup-plugin-uglify": "^6.0.0"
"rimraf": "^4.1.2",
"rollup": "^3.13.0",
"ts-node": "^10.9.1",
"tslib": "^2.5.0",
"typescript": "^4.8.4"
},
"keywords": [
"cookie"
"cookie",
"browser cookie",
"tiny",
"tiny cookie"
],

@@ -69,0 +78,0 @@ "pre-commit": [

# tiny-cookie
[![Build Status](https://travis-ci.org/Alex1990/tiny-cookie.svg?branch=master)](https://travis-ci.org/Alex1990/tiny-cookie)
[![codecov](https://codecov.io/gh/Alex1990/tiny-cookie/branch/master/graph/badge.svg)](https://codecov.io/gh/Alex1990/tiny-cookie)
[![Node.js CI](https://github.com/Alex1990/tiny-cookie/actions/workflows/node.js.yml/badge.svg?branch=main)](https://github.com/Alex1990/tiny-cookie/actions/workflows/node.js.yml)
[![codecov](https://codecov.io/gh/Alex1990/tiny-cookie/branch/main/graph/badge.svg)](https://codecov.io/gh/Alex1990/tiny-cookie)
[![npm](https://img.shields.io/npm/dm/tiny-cookie.svg)](https://www.npmjs.com/package/tiny-cookie)

@@ -14,2 +14,4 @@ [![npm](https://img.shields.io/npm/v/tiny-cookie.svg)](https://www.npmjs.com/package/tiny-cookie)

> If you're used tiny-cookie, then you may be interest in [micell](https://micell.org), a collection of functions focusing on web development.
## Install

@@ -16,0 +18,0 @@

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc