Socket
Socket
Sign inDemoInstall

atma-utils

Package Overview
Dependencies
Maintainers
1
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

atma-utils - npm Package Compare versions

Comparing version 0.1.7 to 0.1.8

198

lib/utils.embed.js

@@ -1000,2 +1000,4 @@ // source /src/refs.js

// source /src/class/Uri.es6
"use strict";
var class_Uri;

@@ -1005,3 +1007,3 @@ (function () {

class_Uri = class_create({
protocol: null,
protocol: null,
value: null,

@@ -1012,11 +1014,9 @@ path: null,

constructor (uri) {
if (uri == null)
constructor: function constructor(uri) {
if (uri == null) {
return this;
}if (util_isUri(uri)) {
return uri.combine("");
}uri = normalize_uri(uri);
if (util_isUri(uri))
return uri.combine('');
uri = normalize_uri(uri);
this.value = uri;

@@ -1030,14 +1030,13 @@

// normilize path - "/some/path"
this.path = normalize_pathsSlashes(this.value);
if (/^[\w]+:\//.test(this.path)){
this.path = '/' + this.path;
if (/^[\w]+:\//.test(this.path)) {
this.path = "/" + this.path;
}
return this;
},
cdUp () {
cdUp: function cdUp() {
var path = this.path;
if (path == null || path === '' || path === '/') {
if (path == null || path === "" || path === "/") {
return this;

@@ -1051,10 +1050,10 @@ }

this.path = path.replace(/\/?[^\/]+\/?$/i, '');
this.path = path.replace(/\/?[^\/]+\/?$/i, "");
return this;
},
/**
* '/path' - relative to host
* '../path', 'path','./path' - relative to current path
*/
combine (path) {
* '/path' - relative to host
* '../path', 'path','./path' - relative to current path
*/
combine: function combine(path) {

@@ -1080,9 +1079,9 @@ if (util_isUri(path)) {

if (!uri.value) {
if (!uri.value) {
return uri;
}
path = uri.value.replace(/^\.\//i, '');
path = uri.value.replace(/^\.\//i, "");
if (path[0] === '/') {
if (path[0] === "/") {
uri.path = path;

@@ -1101,42 +1100,38 @@ return uri;

},
toString () {
var protocol = this.protocol ? this.protocol + '://' : '';
var path = util_combinePathes(this.host, this.path, this.file) + (this.search || '');
toString: function toString() {
var protocol = this.protocol ? this.protocol + "://" : "";
var path = util_combinePathes(this.host, this.path, this.file) + (this.search || "");
var str = protocol + path;
if (!(this.file || this.search)) {
str += '/'
str += "/";
}
return str;
},
toPathAndQuery () {
return util_combinePathes(this.path, this.file) + (this.search || '');
toPathAndQuery: function toPathAndQuery() {
return util_combinePathes(this.path, this.file) + (this.search || "");
},
/**
* @return Current Uri Path{String} that is relative to @arg1 Uri
*/
toRelativeString (uri) {
if (typeof uri === 'string')
uri = new class_Uri(uri);
* @return Current Uri Path{String} that is relative to @arg1 Uri
*/
toRelativeString: function toRelativeString(uri) {
if (typeof uri === "string") uri = new class_Uri(uri);
if (this.path.indexOf(uri.path) === 0) {
// host folder
var p = this.path ? this.path.replace(uri.path, '') : '';
if (p[0] === '/')
p = p.substring(1);
var p = this.path ? this.path.replace(uri.path, "") : "";
if (p[0] === "/") p = p.substring(1);
return util_combinePathes(p, this.file) + (this.search || '');
return util_combinePathes(p, this.file) + (this.search || "");
}
// sub folder
var current = this.path.split('/'),
relative = uri.path.split('/'),
commonpath = '',
i = 0,
length = Math.min(current.length, relative.length);
var current = this.path.split("/"),
relative = uri.path.split("/"),
commonpath = "",
i = 0,
length = Math.min(current.length, relative.length);
for (; i < length; i++) {
if (current[i] === relative[i])
continue;
if (current[i] === relative[i]) continue;

@@ -1146,16 +1141,15 @@ break;

if (i > 0)
commonpath = current.splice(0, i).join('/');
if (i > 0) commonpath = current.splice(0, i).join("/");
if (commonpath) {
var sub = '',
path = uri.path,
forward;
var sub = "",
path = uri.path,
forward;
while (path) {
if (this.path.indexOf(path) === 0) {
forward = this.path.replace(path, '');
forward = this.path.replace(path, "");
break;
}
path = path.replace(/\/?[^\/]+\/?$/i, '');
sub += '../';
path = path.replace(/\/?[^\/]+\/?$/i, "");
sub += "../";
}

@@ -1165,7 +1159,6 @@ return util_combinePathes(sub, forward, this.file);

return this.toString();
},
toLocalFile () {
toLocalFile: function toLocalFile() {
var path = util_combinePathes(this.host, this.path, this.file);

@@ -1175,17 +1168,17 @@

},
toLocalDir () {
var path = util_combinePathes(this.host, this.path, '/');
toLocalDir: function toLocalDir() {
var path = util_combinePathes(this.host, this.path, "/");
return util_win32Path(path);
},
toDir () {
var str = this.protocol ? this.protocol + '://' : '';
toDir: function toDir() {
var str = this.protocol ? this.protocol + "://" : "";
return str + util_combinePathes(this.host, this.path, '/');
return str + util_combinePathes(this.host, this.path, "/");
},
isRelative () {
isRelative: function isRelative() {
return !(this.protocol || this.host);
},
getName () {
return this.file.replace('.' + this.extension,'');
getName: function getName() {
return this.file.replace("." + this.extension, "");
}

@@ -1195,18 +1188,16 @@ });

var rgx_protocol = /^([a-zA-Z]+):\/\//,
rgx_extension = /\.([\w\d]+)$/i,
rgx_win32Drive = /(^\/?\w{1}:)(\/|$)/,
rgx_fileWithExt = /([^\/]+(\.[\w\d]+)?)$/i
;
rgx_extension = /\.([\w\d]+)$/i,
rgx_win32Drive = /(^\/?\w{1}:)(\/|$)/,
rgx_fileWithExt = /([^\/]+(\.[\w\d]+)?)$/i;
function util_isUri(object) {
return object && typeof object === 'object' && typeof object.combine === 'function';
return object && typeof object === "object" && typeof object.combine === "function";
}
function util_combinePathes(/*args*/) {
function util_combinePathes() {
var args = arguments,
str = '';
for (var i = 0, x, imax = arguments.length; i < imax; i++){
str = "";
for (var i = 0, x, imax = arguments.length; i < imax; i++) {
x = arguments[i];
if (!x)
continue;
if (!x) continue;

@@ -1218,6 +1209,5 @@ if (!str) {

if (str[str.length - 1] !== '/')
str += '/';
if (str[str.length - 1] !== "/") str += "/";
str += x[0] === '/' ? x.substring(1) : x;
str += x[0] === "/" ? x.substring(1) : x;
}

@@ -1229,3 +1219,3 @@ return str;

if (str[str.length - 1] === '/') {
if (str[str.length - 1] === "/") {
return str.substring(0, str.length - 1);

@@ -1238,5 +1228,5 @@ }

var uri = new class_Uri(),
key;
key;
for (key in source) {
if (typeof source[key] === 'string') {
if (typeof source[key] === "string") {
uri[key] = source[key];

@@ -1249,14 +1239,10 @@ }

function normalize_uri(str) {
return str
.replace(/\\/g,'/')
.replace(/^\.\//,'')
return str.replace(/\\/g, "/").replace(/^\.\//, "")
// win32 drive path
.replace(/^(\w+):\/([^\/])/, '/$1:/$2')
;
// win32 drive path
.replace(/^(\w+):\/([^\/])/, "/$1:/$2");
}
function util_win32Path(path) {
if (rgx_win32Drive.test(path) && path[0] === '/') {
if (rgx_win32Drive.test(path) && path[0] === "/") {
return path.substring(1);

@@ -1270,11 +1256,9 @@ }

if (match == null && obj.value[0] === '/'){
obj.protocol = 'file';
if (match == null && obj.value[0] === "/") {
obj.protocol = "file";
}
if (match == null)
if (match == null) {
return;
obj.protocol = match[1];
}obj.protocol = match[1];
obj.value = obj.value.substring(match[0].length);

@@ -1284,6 +1268,5 @@ }

function parse_host(obj) {
if (obj.protocol == null)
if (obj.protocol == null) {
return;
if (obj.protocol === 'file') {
}if (obj.protocol === "file") {
var match = rgx_win32Drive.exec(obj.value);

@@ -1297,18 +1280,14 @@ if (match) {

var pathStart = obj.value.indexOf('/', 2);
var pathStart = obj.value.indexOf("/", 2);
obj.host = ~pathStart
? obj.value.substring(0, pathStart)
: obj.value;
obj.host = ~pathStart ? obj.value.substring(0, pathStart) : obj.value;
obj.value = obj.value.replace(obj.host,'');
obj.value = obj.value.replace(obj.host, "");
}
function parse_search(obj) {
var question = obj.value.indexOf('?');
if (question === -1)
var question = obj.value.indexOf("?");
if (question === -1) {
return;
obj.search = obj.value.substring(question);
}obj.search = obj.value.substring(question);
obj.value = obj.value.substring(0, question);

@@ -1319,6 +1298,6 @@ }

var match = rgx_fileWithExt.exec(obj.value),
file = match == null ? null : match[1];
file = match == null ? null : match[1];
if (file == null) {
return
return;
}

@@ -1335,4 +1314,5 @@ obj.file = file;

class_Uri.combine = util_combinePathes;
}());
})();
/*args*/
//# sourceMappingURL=Uri.es6.map
// end:source /src/class/Uri.es6

@@ -1017,370 +1017,352 @@ (function(factory){

// source /src/class/Uri.es6
var class_Uri;
(function () {
class_Uri = class_create({
protocol: null,
value: null,
path: null,
file: null,
extension: null,
constructor (uri) {
if (uri == null)
return this;
if (util_isUri(uri))
return uri.combine('');
uri = normalize_uri(uri);
this.value = uri;
parse_protocol(this);
parse_host(this);
parse_search(this);
parse_file(this);
// normilize path - "/some/path"
this.path = normalize_pathsSlashes(this.value);
if (/^[\w]+:\//.test(this.path)){
this.path = '/' + this.path;
}
"use strict";
var class_Uri;
(function () {
class_Uri = class_create({
protocol: null,
value: null,
path: null,
file: null,
extension: null,
constructor: function constructor(uri) {
if (uri == null) {
return this;
},
cdUp () {
var path = this.path;
if (path == null || path === '' || path === '/') {
return this;
}
// win32 - is base drive
if (/^\/?[a-zA-Z]+:\/?$/.test(path)) {
return this;
}
this.path = path.replace(/\/?[^\/]+\/?$/i, '');
}if (util_isUri(uri)) {
return uri.combine("");
}uri = normalize_uri(uri);
this.value = uri;
parse_protocol(this);
parse_host(this);
parse_search(this);
parse_file(this);
// normilize path - "/some/path"
this.path = normalize_pathsSlashes(this.value);
if (/^[\w]+:\//.test(this.path)) {
this.path = "/" + this.path;
}
return this;
},
cdUp: function cdUp() {
var path = this.path;
if (path == null || path === "" || path === "/") {
return this;
},
/**
* '/path' - relative to host
* '../path', 'path','./path' - relative to current path
*/
combine (path) {
if (util_isUri(path)) {
path = path.toString();
}
if (!path) {
return util_clone(this);
}
if (rgx_win32Drive.test(path)) {
return new class_Uri(path);
}
var uri = util_clone(this);
uri.value = path;
parse_search(uri);
parse_file(uri);
if (!uri.value) {
return uri;
}
path = uri.value.replace(/^\.\//i, '');
if (path[0] === '/') {
uri.path = path;
return uri;
}
while (/^(\.\.\/?)/ig.test(path)) {
uri.cdUp();
path = path.substring(3);
}
uri.path = normalize_pathsSlashes(util_combinePathes(uri.path, path));
}
// win32 - is base drive
if (/^\/?[a-zA-Z]+:\/?$/.test(path)) {
return this;
}
this.path = path.replace(/\/?[^\/]+\/?$/i, "");
return this;
},
/**
* '/path' - relative to host
* '../path', 'path','./path' - relative to current path
*/
combine: function combine(path) {
if (util_isUri(path)) {
path = path.toString();
}
if (!path) {
return util_clone(this);
}
if (rgx_win32Drive.test(path)) {
return new class_Uri(path);
}
var uri = util_clone(this);
uri.value = path;
parse_search(uri);
parse_file(uri);
if (!uri.value) {
return uri;
},
toString () {
var protocol = this.protocol ? this.protocol + '://' : '';
var path = util_combinePathes(this.host, this.path, this.file) + (this.search || '');
var str = protocol + path;
if (!(this.file || this.search)) {
str += '/'
}
return str;
},
toPathAndQuery () {
return util_combinePathes(this.path, this.file) + (this.search || '');
},
/**
* @return Current Uri Path{String} that is relative to @arg1 Uri
*/
toRelativeString (uri) {
if (typeof uri === 'string')
uri = new class_Uri(uri);
if (this.path.indexOf(uri.path) === 0) {
// host folder
var p = this.path ? this.path.replace(uri.path, '') : '';
if (p[0] === '/')
p = p.substring(1);
return util_combinePathes(p, this.file) + (this.search || '');
}
// sub folder
var current = this.path.split('/'),
relative = uri.path.split('/'),
commonpath = '',
i = 0,
length = Math.min(current.length, relative.length);
for (; i < length; i++) {
if (current[i] === relative[i])
continue;
break;
}
if (i > 0)
commonpath = current.splice(0, i).join('/');
if (commonpath) {
var sub = '',
path = uri.path,
forward;
while (path) {
if (this.path.indexOf(path) === 0) {
forward = this.path.replace(path, '');
break;
}
path = path.replace(/\/?[^\/]+\/?$/i, '');
sub += '../';
}
path = uri.value.replace(/^\.\//i, "");
if (path[0] === "/") {
uri.path = path;
return uri;
}
while (/^(\.\.\/?)/ig.test(path)) {
uri.cdUp();
path = path.substring(3);
}
uri.path = normalize_pathsSlashes(util_combinePathes(uri.path, path));
return uri;
},
toString: function toString() {
var protocol = this.protocol ? this.protocol + "://" : "";
var path = util_combinePathes(this.host, this.path, this.file) + (this.search || "");
var str = protocol + path;
if (!(this.file || this.search)) {
str += "/";
}
return str;
},
toPathAndQuery: function toPathAndQuery() {
return util_combinePathes(this.path, this.file) + (this.search || "");
},
/**
* @return Current Uri Path{String} that is relative to @arg1 Uri
*/
toRelativeString: function toRelativeString(uri) {
if (typeof uri === "string") uri = new class_Uri(uri);
if (this.path.indexOf(uri.path) === 0) {
// host folder
var p = this.path ? this.path.replace(uri.path, "") : "";
if (p[0] === "/") p = p.substring(1);
return util_combinePathes(p, this.file) + (this.search || "");
}
// sub folder
var current = this.path.split("/"),
relative = uri.path.split("/"),
commonpath = "",
i = 0,
length = Math.min(current.length, relative.length);
for (; i < length; i++) {
if (current[i] === relative[i]) continue;
break;
}
if (i > 0) commonpath = current.splice(0, i).join("/");
if (commonpath) {
var sub = "",
path = uri.path,
forward;
while (path) {
if (this.path.indexOf(path) === 0) {
forward = this.path.replace(path, "");
break;
}
return util_combinePathes(sub, forward, this.file);
path = path.replace(/\/?[^\/]+\/?$/i, "");
sub += "../";
}
return this.toString();
},
toLocalFile () {
var path = util_combinePathes(this.host, this.path, this.file);
return util_win32Path(path);
},
toLocalDir () {
var path = util_combinePathes(this.host, this.path, '/');
return util_win32Path(path);
},
toDir () {
var str = this.protocol ? this.protocol + '://' : '';
return str + util_combinePathes(this.host, this.path, '/');
},
isRelative () {
return !(this.protocol || this.host);
},
getName () {
return this.file.replace('.' + this.extension,'');
return util_combinePathes(sub, forward, this.file);
}
});
var rgx_protocol = /^([a-zA-Z]+):\/\//,
rgx_extension = /\.([\w\d]+)$/i,
rgx_win32Drive = /(^\/?\w{1}:)(\/|$)/,
rgx_fileWithExt = /([^\/]+(\.[\w\d]+)?)$/i
;
function util_isUri(object) {
return object && typeof object === 'object' && typeof object.combine === 'function';
return this.toString();
},
toLocalFile: function toLocalFile() {
var path = util_combinePathes(this.host, this.path, this.file);
return util_win32Path(path);
},
toLocalDir: function toLocalDir() {
var path = util_combinePathes(this.host, this.path, "/");
return util_win32Path(path);
},
toDir: function toDir() {
var str = this.protocol ? this.protocol + "://" : "";
return str + util_combinePathes(this.host, this.path, "/");
},
isRelative: function isRelative() {
return !(this.protocol || this.host);
},
getName: function getName() {
return this.file.replace("." + this.extension, "");
}
function util_combinePathes(/*args*/) {
var args = arguments,
str = '';
for (var i = 0, x, imax = arguments.length; i < imax; i++){
x = arguments[i];
if (!x)
continue;
if (!str) {
str = x;
continue;
}
if (str[str.length - 1] !== '/')
str += '/';
str += x[0] === '/' ? x.substring(1) : x;
});
var rgx_protocol = /^([a-zA-Z]+):\/\//,
rgx_extension = /\.([\w\d]+)$/i,
rgx_win32Drive = /(^\/?\w{1}:)(\/|$)/,
rgx_fileWithExt = /([^\/]+(\.[\w\d]+)?)$/i;
function util_isUri(object) {
return object && typeof object === "object" && typeof object.combine === "function";
}
function util_combinePathes() {
var args = arguments,
str = "";
for (var i = 0, x, imax = arguments.length; i < imax; i++) {
x = arguments[i];
if (!x) continue;
if (!str) {
str = x;
continue;
}
return str;
if (str[str.length - 1] !== "/") str += "/";
str += x[0] === "/" ? x.substring(1) : x;
}
function normalize_pathsSlashes(str) {
if (str[str.length - 1] === '/') {
return str.substring(0, str.length - 1);
}
return str;
return str;
}
function normalize_pathsSlashes(str) {
if (str[str.length - 1] === "/") {
return str.substring(0, str.length - 1);
}
function util_clone(source) {
var uri = new class_Uri(),
key;
for (key in source) {
if (typeof source[key] === 'string') {
uri[key] = source[key];
}
return str;
}
function util_clone(source) {
var uri = new class_Uri(),
key;
for (key in source) {
if (typeof source[key] === "string") {
uri[key] = source[key];
}
return uri;
}
function normalize_uri(str) {
return str
.replace(/\\/g,'/')
.replace(/^\.\//,'')
// win32 drive path
.replace(/^(\w+):\/([^\/])/, '/$1:/$2')
;
return uri;
}
function normalize_uri(str) {
return str.replace(/\\/g, "/").replace(/^\.\//, "")
// win32 drive path
.replace(/^(\w+):\/([^\/])/, "/$1:/$2");
}
function util_win32Path(path) {
if (rgx_win32Drive.test(path) && path[0] === "/") {
return path.substring(1);
}
function util_win32Path(path) {
if (rgx_win32Drive.test(path) && path[0] === '/') {
return path.substring(1);
}
return path;
return path;
}
function parse_protocol(obj) {
var match = rgx_protocol.exec(obj.value);
if (match == null && obj.value[0] === "/") {
obj.protocol = "file";
}
function parse_protocol(obj) {
var match = rgx_protocol.exec(obj.value);
if (match == null && obj.value[0] === '/'){
obj.protocol = 'file';
if (match == null) {
return;
}obj.protocol = match[1];
obj.value = obj.value.substring(match[0].length);
}
function parse_host(obj) {
if (obj.protocol == null) {
return;
}if (obj.protocol === "file") {
var match = rgx_win32Drive.exec(obj.value);
if (match) {
obj.host = match[1];
obj.value = obj.value.substring(obj.host.length);
}
if (match == null)
return;
obj.protocol = match[1];
obj.value = obj.value.substring(match[0].length);
return;
}
function parse_host(obj) {
if (obj.protocol == null)
return;
if (obj.protocol === 'file') {
var match = rgx_win32Drive.exec(obj.value);
if (match) {
obj.host = match[1];
obj.value = obj.value.substring(obj.host.length);
}
return;
}
var pathStart = obj.value.indexOf('/', 2);
obj.host = ~pathStart
? obj.value.substring(0, pathStart)
: obj.value;
obj.value = obj.value.replace(obj.host,'');
var pathStart = obj.value.indexOf("/", 2);
obj.host = ~pathStart ? obj.value.substring(0, pathStart) : obj.value;
obj.value = obj.value.replace(obj.host, "");
}
function parse_search(obj) {
var question = obj.value.indexOf("?");
if (question === -1) {
return;
}obj.search = obj.value.substring(question);
obj.value = obj.value.substring(0, question);
}
function parse_file(obj) {
var match = rgx_fileWithExt.exec(obj.value),
file = match == null ? null : match[1];
if (file == null) {
return;
}
obj.file = file;
obj.value = obj.value.substring(0, obj.value.length - file.length);
obj.value = normalize_pathsSlashes(obj.value);
match = rgx_extension.exec(file);
obj.extension = match == null ? null : match[1];
}
class_Uri.combinePathes = util_combinePathes;
class_Uri.combine = util_combinePathes;
})();
/*args*/
//# sourceMappingURL=Uri.es6.map
// end:source /src/class/Uri.es6
// end:source utils.embed.js
// source /src/exports.es6
"use strict";
function parse_search(obj) {
var question = obj.value.indexOf('?');
if (question === -1)
return;
owner[property] = {
obj.search = obj.value.substring(question);
obj.value = obj.value.substring(0, question);
}
class_Dfr: class_Dfr,
class_EventEmitter: class_EventEmitter,
class_Uri: class_Uri,
class_create: class_create,
class_createEx: class_createEx,
function parse_file(obj) {
var match = rgx_fileWithExt.exec(obj.value),
file = match == null ? null : match[1];
arr_remove: arr_remove,
arr_each: arr_each,
arr_indexOf: arr_indexOf,
arr_contains: arr_contains,
arr_pushMany: arr_pushMany,
if (file == null) {
return
}
obj.file = file;
obj.value = obj.value.substring(0, obj.value.length - file.length);
obj.value = normalize_pathsSlashes(obj.value);
error_createClass: error_createClass,
match = rgx_extension.exec(file);
obj.extension = match == null ? null : match[1];
}
fn_createByPattern: fn_createByPattern,
fn_doNothing: fn_doNothing,
class_Uri.combinePathes = util_combinePathes;
class_Uri.combine = util_combinePathes;
}());
obj_getProperty: obj_getProperty,
obj_setProperty: obj_setProperty,
obj_hasProperty: obj_hasProperty,
obj_extend: obj_extend,
obj_extendDefaults: obj_extendDefaults,
obj_extendMany: obj_extendMany,
obj_extendProperties: obj_extendProperties,
obj_extendPropertiesDefaults: obj_extendPropertiesDefaults,
obj_create: obj_create,
obj_defineProperty: obj_defineProperty,
// end:source /src/class/Uri.es6
// end:source utils.embed.js
// source /src/exports.es6
owner[property] = {
class_Dfr,
class_EventEmitter,
class_Uri,
class_create,
class_createEx,
arr_remove,
arr_each,
arr_indexOf,
arr_contains,
arr_pushMany,
error_createClass,
fn_createByPattern,
fn_doNothing,
obj_getProperty,
obj_setProperty,
obj_hasProperty,
obj_extend,
obj_extendDefaults,
obj_extendMany,
obj_extendProperties,
obj_extendPropertiesDefaults,
obj_create,
obj_defineProperty,
is_Function,
is_Array,
is_ArrayLike,
is_String,
is_Object,
is_notEmptyString,
is_rawObject,
is_Date,
is_NODE,
is_DOM,
is_Function: is_Function,
is_Array: is_Array,
is_ArrayLike: is_ArrayLike,
is_String: is_String,
is_Object: is_Object,
is_notEmptyString: is_notEmptyString,
is_rawObject: is_rawObject,
is_Date: is_Date,
is_NODE: is_NODE,
is_DOM: is_DOM,
str_format,
str_dedent
str_format: str_format,
str_dedent: str_dedent
};
//# sourceMappingURL=exports.es6.map
// end:source /src/exports.es6
}));
{
"name": "atma-utils",
"description": "Helpers",
"version": "0.1.7",
"version": "0.1.8",
"author": "Alexander Kit <alex.kit@atmajs.com>",

@@ -6,0 +6,0 @@ "repository": {

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