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

geokit

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

geokit - npm Package Compare versions

Comparing version 0.1.4 to 0.1.5

dist/definitions.d.ts

17

CHANGELOG.md

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

#### 0.1.5 (2020-06-11)
##### Chores
* update mocha options ([b25ecc3d](https://github.com/MichaelSolati/geokit/commit/b25ecc3da93f4db85681ece3a58f7da8da66e60c))
* update dependencies ([a0a2f55c](https://github.com/MichaelSolati/geokit/commit/a0a2f55c6aaf4a9397967ed4ea70bb3672e1fde6))
* move ci to GitHub Actions ([726bc2ab](https://github.com/MichaelSolati/geokit/commit/726bc2ab1a1c237c8014357c504d1b4ef9e7099b))
* update dependencies ([20c21839](https://github.com/MichaelSolati/geokit/commit/20c218393ddcddbb7717d7035f0967b11c310018))
##### Refactors
* update and fix build ([4a8d63c0](https://github.com/MichaelSolati/geokit/commit/4a8d63c0580e316fc7a0d6fee50bf29a89dfafee))
##### Tests
* add linting ([b8b92263](https://github.com/MichaelSolati/geokit/commit/b8b92263069ef89b0cf8f6be2900f18d3ce626b1))
#### 0.1.4 (2019-06-17)

@@ -2,0 +19,0 @@

21

dist/geokit.d.ts
import { LatLngLiteral } from './definitions';
/**
* A class for the Geokit.
*/
export declare class Geokit {
/**
* Get the distance between two coordinates.
* @param start Starting coordinates.
* @param end Ending coordinates.
* @param unit Unit of distance returned, defaults to Km.
* @returns The distance between two coordinates.
*/
static distance(start: LatLngLiteral, end: LatLngLiteral, unit?: string): number;
/**
* Get the geohash of a point.
* @param coordinates Coordinates to hash.
* @param precision Precision of hash desired, defaults to 10.
* @returns Geohash of point.
*/
static hash(coordinates: LatLngLiteral, precision?: number): string;
/**
* Decodes a Geohash into a LatLngLiteral.
* @param hash Geohash string.
* @returns Coordinates to hash.
*/
static decodeHash(hash: string): LatLngLiteral;
}

2

dist/geokit.js

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

!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).window=t.window||{})}(this,function(t){"use strict";function l(t){return t*Math.PI/180}function c(t){var r=[];if(90<t.lat&&r.push("Your latitude is greater than 90°"),t.lat<-90&&r.push("Your latitude is less than -90°"),180<t.lng&&r.push("Your longitude is greater than 180°"),t.lng<-180&&r.push("Your longitude is less than -180°"),0!==r.length)return new Error(r.join(" "))}var r=(n.distance=function(t,r,n){void 0===n&&(n="km");var e=c(t);if(e instanceof Error)throw new Error("Start coordinates: "+e.message);var o=c(r);if(o instanceof Error)throw new Error("End coordinates: "+o.message);var a="miles"===n.toLowerCase()?3963:6371,i=l(r.lat-t.lat),s=l(r.lng-t.lng),f=l(t.lat),h=l(r.lat),u=Math.sin(i/2)*Math.sin(i/2)+Math.sin(s/2)*Math.sin(s/2)*Math.cos(f)*Math.cos(h);return a*(2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u)))},n.hash=function(t,r){void 0===r&&(r=10);var n=c(t);if(n instanceof Error)throw n;for(var e,o="",a=[-90,90],i=[-180,180];o.length<r;){for(var s=0,f=0;f<5;f++){var h=(5*o.length+f)%2==0,u=h?t.lng:t.lat,l=h?i:a,d=(l[0]+l[1])/2;s=(s<<1)+(u<((e=l)[0]+e[1])/2?0:1),d<u?l[0]=d:l[1]=d}o+="0123456789bcdefghjkmnpqrstuvwxyz".charAt(s)}return o},n.decodeHash=function(t){for(var r,n=!0,e=[-90,90],o=[-180,180],a=t.split("");a.length;)for(var i=(r=a.shift(),"0123456789bcdefghjkmnpqrstuvwxyz".indexOf(r.toLowerCase())),s=0;s<5;s++){var f=[16,8,4,2,1][s],h=n?o:e,u=(h[0]+h[1])/2;h[i&f?0:1]=u,n=!n}return{lat:(e[0]+e[1])/2,lng:(o[0]+o[1])/2}},n);function n(){}t.Geokit=r,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).window=t.window||{})}(this,(function(t){"use strict";function e(t,e){return(e[0]+e[1])/2>t?0:1}function n(t){return t*Math.PI/180}function o(t){const e=[];if(t.lat>90&&e.push("Your latitude is greater than 90°"),t.lat<-90&&e.push("Your latitude is less than -90°"),t.lng>180&&e.push("Your longitude is greater than 180°"),t.lng<-180&&e.push("Your longitude is less than -180°"),0!==e.length)return new Error(e.join(" "))}t.Geokit=class{static distance(t,e,r="km"){const s=o(t);if(s instanceof Error)throw new Error("Start coordinates: "+s.message);const a=o(e);if(a instanceof Error)throw new Error("End coordinates: "+a.message);const i="miles"===r.toLowerCase()?3963:6371,l=n(e.lat-t.lat),c=n(e.lng-t.lng),h=n(t.lat),u=n(e.lat),f=Math.sin(l/2)*Math.sin(l/2)+Math.sin(c/2)*Math.sin(c/2)*Math.cos(h)*Math.cos(u);return i*(2*Math.atan2(Math.sqrt(f),Math.sqrt(1-f)))}static hash(t,n=10){const r=o(t);if(r instanceof Error)throw r;let s="";const a=[-90,90],i=[-180,180];for(;s.length<n;){let n=0;for(let o=0;o<5;o++){const r=(5*s.length+o)%2==0,l=r?t.lng:t.lat,c=r?i:a,h=(c[0]+c[1])/2;n=(n<<1)+e(l,c),l>h?c[0]=h:c[1]=h}s+="0123456789bcdefghjkmnpqrstuvwxyz".charAt(n)}return s}static decodeHash(t){let e=!0;const n=[-90,90],o=[-180,180],r=t.split("");for(;r.length;){const t=(s=r.shift(),"0123456789bcdefghjkmnpqrstuvwxyz".indexOf(s.toLowerCase()));for(let r=0;r<5;r++){const s=[16,8,4,2,1][r],a=e?o:n,i=(a[0]+a[1])/2;a[t&s?0:1]=i,e=!e}}var s;return{lat:(n[0]+n[1])/2,lng:(o[0]+o[1])/2}}},Object.defineProperty(t,"__esModule",{value:!0})}));
import { LatLngLiteral } from './definitions';
/**
* Get Base 32 symbol from decimal chunk (5 bit binary value).
* @param value Decimal value of chunk (5 bit binary value).
* @returns Base 32 value.
*/
export declare function base32(value: number): string;
/**
* Get decimal chunk (5 bit binary value) from Base 32 character.
* @param value Base 32 character.
* @returns Decimal value of chunk (5 bit binary value).
*/
export declare function decimalChunk(value: string): number;
/**
* Determine if coordinate is greater than midle of range in a bit representation.
* @param point Coordinates.
* @param range Range of coordinates to check.
* @returns Number representation if point is greater than the middle of the range.
*/
export declare function getBit(point: number, range: number[]): number;
/**
* Get radians from degrees.
* @param degrees Degrees.
* @returns Radians.
*/
export declare function toRad(degrees: number): number;
/**
* Validates user inputted coordinates.
* @param coordinates User inputted coordinates.
* @returns Error.
*/
export declare function validateCoordinates(coordinates: LatLngLiteral): Error;
export declare function validateCoordinates(coordinates: LatLngLiteral): Error | void;

@@ -5,43 +5,17 @@ 'use strict';

/**
* Get Base 32 symbol from decimal chunk (5 bit binary value).
* @param value Decimal value of chunk (5 bit binary value).
* @returns Base 32 value.
*/
function base32(value) {
return '0123456789bcdefghjkmnpqrstuvwxyz'.charAt(value);
}
/**
* Get decimal chunk (5 bit binary value) from Base 32 character.
* @param value Base 32 character.
* @returns Decimal value of chunk (5 bit binary value).
*/
function decimalChunk(value) {
return '0123456789bcdefghjkmnpqrstuvwxyz'.indexOf(value.toLowerCase());
}
/**
* Determine if coordinate is greater than midle of range in a bit representation.
* @param point Coordinates.
* @param range Range of coordinates to check.
* @returns Number representation if point is greater than the middle of the range.
*/
function getBit(point, range) {
var middle = (range[0] + range[1]) / 2;
return (middle > point) ? 0 : 1;
const middle = (range[0] + range[1]) / 2;
return middle > point ? 0 : 1;
}
/**
* Get radians from degrees.
* @param degrees Degrees.
* @returns Radians.
*/
function toRad(degrees) {
return (degrees * Math.PI / 180);
return (degrees * Math.PI) / 180;
}
/**
* Validates user inputted coordinates.
* @param coordinates User inputted coordinates.
* @returns Error.
*/
function validateCoordinates(coordinates) {
var error = [];
const error = [];
if (coordinates.lat > 90) {

@@ -64,59 +38,39 @@ error.push('Your latitude is greater than 90°');

/**
* A class for the Geokit.
*/
var Geokit = /** @class */ (function () {
function Geokit() {
}
/**
* Get the distance between two coordinates.
* @param start Starting coordinates.
* @param end Ending coordinates.
* @param unit Unit of distance returned, defaults to Km.
* @returns The distance between two coordinates.
*/
Geokit.distance = function (start, end, unit) {
if (unit === void 0) { unit = 'km'; }
var startValid = validateCoordinates(start);
class Geokit {
static distance(start, end, unit = 'km') {
const startValid = validateCoordinates(start);
if (startValid instanceof Error) {
throw new Error('Start coordinates: ' + startValid.message);
}
var endValid = validateCoordinates(end);
const endValid = validateCoordinates(end);
if (endValid instanceof Error) {
throw new Error('End coordinates: ' + endValid.message);
}
var radius = (unit.toLowerCase() === 'miles') ? 3963 : 6371;
var dLat = toRad(end.lat - start.lat);
var dLon = toRad(end.lng - start.lng);
var lat1 = toRad(start.lat);
var lat2 = toRad(end.lat);
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
const radius = unit.toLowerCase() === 'miles' ? 3963 : 6371;
const dLat = toRad(end.lat - start.lat);
const dLon = toRad(end.lng - start.lng);
const lat1 = toRad(start.lat);
const lat2 = toRad(end.lat);
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return (radius * c);
};
/**
* Get the geohash of a point.
* @param coordinates Coordinates to hash.
* @param precision Precision of hash desired, defaults to 10.
* @returns Geohash of point.
*/
Geokit.hash = function (coordinates, precision) {
if (precision === void 0) { precision = 10; }
var valid = validateCoordinates(coordinates);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return radius * c;
}
static hash(coordinates, precision = 10) {
const valid = validateCoordinates(coordinates);
if (valid instanceof Error) {
throw valid;
}
var hash = '';
var latRng = [-90, 90];
var lngRng = [-180, 180];
let hash = '';
const latRng = [-90, 90];
const lngRng = [-180, 180];
while (hash.length < precision) {
var temp = 0;
for (var i = 0; i < 5; i++) {
var even = (((hash.length * 5) + i) % 2) == 0;
var coord = (even) ? coordinates.lng : coordinates.lat;
var range = (even) ? lngRng : latRng;
var middle = (range[0] + range[1]) / 2;
let temp = 0;
for (let i = 0; i < 5; i++) {
const even = (hash.length * 5 + i) % 2 === 0;
const coord = even ? coordinates.lng : coordinates.lat;
const range = even ? lngRng : latRng;
const middle = (range[0] + range[1]) / 2;
temp = (temp << 1) + getBit(coord, range);
(coord > middle) ? range[0] = middle : range[1] = middle;
coord > middle ? (range[0] = middle) : (range[1] = middle);
}

@@ -126,28 +80,22 @@ hash += base32(temp);

return hash;
};
/**
* Decodes a Geohash into a LatLngLiteral.
* @param hash Geohash string.
* @returns Coordinates to hash.
*/
Geokit.decodeHash = function (hash) {
var even = true;
var latRng = [-90, 90];
var lngRng = [-180, 180];
var hashChars = hash.split('');
}
static decodeHash(hash) {
let even = true;
const latRng = [-90, 90];
const lngRng = [-180, 180];
const hashChars = hash.split('');
while (hashChars.length) {
var chunk = decimalChunk(hashChars.shift());
for (var i = 0; i < 5; i++) {
var mask = [16, 8, 4, 2, 1][i];
var range = (even) ? lngRng : latRng;
var middle = (range[0] + range[1]) / 2;
range[((chunk & mask) ? 0 : 1)] = middle;
const chunk = decimalChunk(hashChars.shift());
for (let i = 0; i < 5; i++) {
const mask = [16, 8, 4, 2, 1][i];
const range = even ? lngRng : latRng;
const middle = (range[0] + range[1]) / 2;
range[chunk & mask ? 0 : 1] = middle;
even = !even;
}
}
return { lat: ((latRng[0] + latRng[1]) / 2), lng: ((lngRng[0] + lngRng[1]) / 2) };
};
return Geokit;
}());
return { lat: (latRng[0] + latRng[1]) / 2, lng: (lngRng[0] + lngRng[1]) / 2 };
}
}
exports.Geokit = Geokit;

@@ -1,42 +0,16 @@

/**
* Get Base 32 symbol from decimal chunk (5 bit binary value).
* @param value Decimal value of chunk (5 bit binary value).
* @returns Base 32 value.
*/
function base32(value) {
return '0123456789bcdefghjkmnpqrstuvwxyz'.charAt(value);
}
/**
* Get decimal chunk (5 bit binary value) from Base 32 character.
* @param value Base 32 character.
* @returns Decimal value of chunk (5 bit binary value).
*/
function decimalChunk(value) {
return '0123456789bcdefghjkmnpqrstuvwxyz'.indexOf(value.toLowerCase());
}
/**
* Determine if coordinate is greater than midle of range in a bit representation.
* @param point Coordinates.
* @param range Range of coordinates to check.
* @returns Number representation if point is greater than the middle of the range.
*/
function getBit(point, range) {
var middle = (range[0] + range[1]) / 2;
return (middle > point) ? 0 : 1;
const middle = (range[0] + range[1]) / 2;
return middle > point ? 0 : 1;
}
/**
* Get radians from degrees.
* @param degrees Degrees.
* @returns Radians.
*/
function toRad(degrees) {
return (degrees * Math.PI / 180);
return (degrees * Math.PI) / 180;
}
/**
* Validates user inputted coordinates.
* @param coordinates User inputted coordinates.
* @returns Error.
*/
function validateCoordinates(coordinates) {
var error = [];
const error = [];
if (coordinates.lat > 90) {

@@ -59,59 +33,39 @@ error.push('Your latitude is greater than 90°');

/**
* A class for the Geokit.
*/
var Geokit = /** @class */ (function () {
function Geokit() {
}
/**
* Get the distance between two coordinates.
* @param start Starting coordinates.
* @param end Ending coordinates.
* @param unit Unit of distance returned, defaults to Km.
* @returns The distance between two coordinates.
*/
Geokit.distance = function (start, end, unit) {
if (unit === void 0) { unit = 'km'; }
var startValid = validateCoordinates(start);
class Geokit {
static distance(start, end, unit = 'km') {
const startValid = validateCoordinates(start);
if (startValid instanceof Error) {
throw new Error('Start coordinates: ' + startValid.message);
}
var endValid = validateCoordinates(end);
const endValid = validateCoordinates(end);
if (endValid instanceof Error) {
throw new Error('End coordinates: ' + endValid.message);
}
var radius = (unit.toLowerCase() === 'miles') ? 3963 : 6371;
var dLat = toRad(end.lat - start.lat);
var dLon = toRad(end.lng - start.lng);
var lat1 = toRad(start.lat);
var lat2 = toRad(end.lat);
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
const radius = unit.toLowerCase() === 'miles' ? 3963 : 6371;
const dLat = toRad(end.lat - start.lat);
const dLon = toRad(end.lng - start.lng);
const lat1 = toRad(start.lat);
const lat2 = toRad(end.lat);
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return (radius * c);
};
/**
* Get the geohash of a point.
* @param coordinates Coordinates to hash.
* @param precision Precision of hash desired, defaults to 10.
* @returns Geohash of point.
*/
Geokit.hash = function (coordinates, precision) {
if (precision === void 0) { precision = 10; }
var valid = validateCoordinates(coordinates);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return radius * c;
}
static hash(coordinates, precision = 10) {
const valid = validateCoordinates(coordinates);
if (valid instanceof Error) {
throw valid;
}
var hash = '';
var latRng = [-90, 90];
var lngRng = [-180, 180];
let hash = '';
const latRng = [-90, 90];
const lngRng = [-180, 180];
while (hash.length < precision) {
var temp = 0;
for (var i = 0; i < 5; i++) {
var even = (((hash.length * 5) + i) % 2) == 0;
var coord = (even) ? coordinates.lng : coordinates.lat;
var range = (even) ? lngRng : latRng;
var middle = (range[0] + range[1]) / 2;
let temp = 0;
for (let i = 0; i < 5; i++) {
const even = (hash.length * 5 + i) % 2 === 0;
const coord = even ? coordinates.lng : coordinates.lat;
const range = even ? lngRng : latRng;
const middle = (range[0] + range[1]) / 2;
temp = (temp << 1) + getBit(coord, range);
(coord > middle) ? range[0] = middle : range[1] = middle;
coord > middle ? (range[0] = middle) : (range[1] = middle);
}

@@ -121,28 +75,22 @@ hash += base32(temp);

return hash;
};
/**
* Decodes a Geohash into a LatLngLiteral.
* @param hash Geohash string.
* @returns Coordinates to hash.
*/
Geokit.decodeHash = function (hash) {
var even = true;
var latRng = [-90, 90];
var lngRng = [-180, 180];
var hashChars = hash.split('');
}
static decodeHash(hash) {
let even = true;
const latRng = [-90, 90];
const lngRng = [-180, 180];
const hashChars = hash.split('');
while (hashChars.length) {
var chunk = decimalChunk(hashChars.shift());
for (var i = 0; i < 5; i++) {
var mask = [16, 8, 4, 2, 1][i];
var range = (even) ? lngRng : latRng;
var middle = (range[0] + range[1]) / 2;
range[((chunk & mask) ? 0 : 1)] = middle;
const chunk = decimalChunk(hashChars.shift());
for (let i = 0; i < 5; i++) {
const mask = [16, 8, 4, 2, 1][i];
const range = even ? lngRng : latRng;
const middle = (range[0] + range[1]) / 2;
range[chunk & mask ? 0 : 1] = middle;
even = !even;
}
}
return { lat: ((latRng[0] + latRng[1]) / 2), lng: ((lngRng[0] + lngRng[1]) / 2) };
};
return Geokit;
}());
return { lat: (latRng[0] + latRng[1]) / 2, lng: (lngRng[0] + lngRng[1]) / 2 };
}
}
export { Geokit };
{
"name": "geokit",
"version": "0.1.4",
"version": "0.1.5",
"description": "An assortment of geolocation related tools, all packaged in one easy to use kit.",

@@ -9,3 +9,4 @@ "scripts": {

"coverage": "nyc report --reporter=text-lcov | coveralls",
"test": "nyc --reporter=html --reporter=text mocha",
"test": "nyc --reporter=html --reporter=text mocha --package package.json --exit",
"lint": "gts check",
"release:major": "npm run build && changelog -M && git add . && git commit -m 'chore(release): major version release' && npm version major && git push origin && git push origin --tags",

@@ -20,3 +21,3 @@ "release:minor": "npm run build && changelog -m && git add . && git commit -m 'chore(release): minor version release' && npm version minor && git push origin && git push origin --tags",

"typings": "dist/index.d.ts",
"author": "Michael Solati mkslt04@gmail.com",
"author": "Michael Solati <mkslt04@gmail.com>",
"homepage": "https://github.com/MichaelSolati/geokit",

@@ -31,3 +32,3 @@ "repository": {

"readme": "README.md",
"license": "ISC",
"license": "MIT",
"keywords": [

@@ -48,18 +49,28 @@ "geo",

"devDependencies": {
"@types/chai": "4.x.x",
"@types/mocha": "5.x.x",
"chai": "4.x.x",
"coveralls": "3.x.x",
"firebase-tools": "7.x.x",
"generate-changelog": "1.x.x",
"mocha": "6.x.x",
"nyc": "14.x.x",
"rollup": "1.x.x",
"rollup-plugin-copier": "1.x.x",
"rollup-plugin-typescript2": "0.x.x",
"rollup-plugin-uglify": "6.x.x",
"ts-node": "8.x.x",
"typedoc": "0.x.x",
"typescript": "3.x.x"
"@types/chai": "^4.2.11",
"@types/mocha": "^7.0.2",
"@types/node": "^13.11.1",
"chai": "^4.2.0",
"coveralls": "^3.1.0",
"firebase-tools": "^8.4.2",
"generate-changelog": "^1.8.0",
"gts": "^2.0.2",
"mocha": "^7.2.0",
"nyc": "^15.1.0",
"rollup": "^2.15.0",
"rollup-plugin-terser": "^6.1.0",
"rollup-plugin-typescript2": "^0.27.1",
"ts-node": "^8.10.2",
"typedoc": "^0.17.7",
"typescript": "^3.9.5"
},
"mocha": {
"extension": [
"ts"
],
"reporter": "spec",
"require": [
"ts-node/register"
]
},
"nyc": {

@@ -66,0 +77,0 @@ "extension": [

# geokit
[![Build Status](https://travis-ci.org/MichaelSolati/geokit.svg?branch=master)](https://travis-ci.org/MichaelSolati/geokit) [![npm version](https://badge.fury.io/js/geokit.svg)](https://badge.fury.io/js/geokit) [![Coverage Status](https://coveralls.io/repos/github/MichaelSolati/geokit/badge.svg?branch=master)](https://coveralls.io/github/MichaelSolati/geokit?branch=master)
[![npm](https://img.shields.io/npm/v/geokit)](https://www.npmjs.com/package/geokit) [![npm bundle size](https://img.shields.io/bundlephobia/minzip/geokit)](https://bundlephobia.com/result?p=geokit) [![Lint and Test](https://github.com/MichaelSolati/geokit/workflows/Lint%20and%20Test/badge.svg?branch=master)](https://github.com/MichaelSolati/geokit/actions?query=workflow%3A%22Lint+and+Test%22) [![Coveralls github](https://img.shields.io/coveralls/github/MichaelSolati/geokit)](https://coveralls.io/github/MichaelSolati/geokit) [![David](https://img.shields.io/david/michaelsolati/geokit)](https://david-dm.org/michaelsolati/geokit) [![GitHub stars](https://img.shields.io/github/stars/MichaelSolati/geokit)](https://github.com/MichaelSolati/geokit/stargazers) [![GitHub forks](https://img.shields.io/github/forks/MichaelSolati/geokit)](https://github.com/MichaelSolati/geokit/network/members)

@@ -5,0 +5,0 @@ An assortment of geolocation related tools, all packaged in one easy to use kit.

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