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

@sanity/react-loader

Package Overview
Dependencies
Maintainers
44
Versions
221
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sanity/react-loader - npm Package Compare versions

Comparing version 1.1.3 to 1.2.0

src/createQueryStore.ts

19

CHANGELOG.md

@@ -15,2 +15,21 @@ # Changelog

## [1.2.0](https://github.com/sanity-io/visual-editing/compare/react-loader-v1.1.3...react-loader-v1.2.0) (2023-12-05)
### Features
* add new `same-origin` option ([#471](https://github.com/sanity-io/visual-editing/issues/471)) ([09621ad](https://github.com/sanity-io/visual-editing/commit/09621ad85897d4c600cbf7a011f8ddcfed75841e))
### Bug Fixes
* **types:** add missing exports ([fd52637](https://github.com/sanity-io/visual-editing/commit/fd52637f1ca932965260a00132f31148533ce913))
### Dependencies
* The following workspace dependencies were updated
* dependencies
* @sanity/core-loader bumped from 1.0.3 to 1.1.0
## [1.1.3](https://github.com/sanity-io/visual-editing/compare/react-loader-v1.1.2...react-loader-v1.1.3) (2023-11-30)

@@ -17,0 +36,0 @@

14

dist/index.d.ts

@@ -23,5 +23,5 @@ import type { ClientPerspective } from '@sanity/client'

declare type NonUndefinedGuard<T> = T extends undefined ? never : T
export declare type NonUndefinedGuard<T> = T extends undefined ? never : T
declare interface QueryResponseInitial<QueryResponseResult> {
export declare interface QueryResponseInitial<QueryResponseResult> {
data: QueryResponseResult

@@ -35,3 +35,3 @@ sourceMap: ContentSourceMap | undefined

declare interface QueryStore<
export declare interface QueryStore<
LoadQueryOptions = {

@@ -80,5 +80,7 @@ perspective?: ClientPerspective

declare type UseLiveModeHook = (options: EnableLiveModeOptions) => void
export declare type UseLiveModeHook = (options: EnableLiveModeOptions) => void
declare interface UseQueryOptionsDefinedInitial<QueryResponseResult = unknown> {
export declare interface UseQueryOptionsDefinedInitial<
QueryResponseResult = unknown,
> {
/**

@@ -103,3 +105,3 @@ * Initial `data` and `sourceMap`, used with SSR hydration and is required if `ssr: true`

declare interface UseQueryOptionsUndefinedInitial {
export declare interface UseQueryOptionsUndefinedInitial {
/**

@@ -106,0 +108,0 @@ * Initial `data` and `sourceMap`, used with SSR hydration and is required if `ssr: true`

@@ -68,3 +68,3 @@ import { Any } from '@sanity/client/csm'

declare const htmlElements: readonly [
export declare const htmlElements: readonly [
'a',

@@ -198,3 +198,3 @@ 'abbr',

declare interface SanityElementProps {
export declare interface SanityElementProps {
children?: SourceNode | null

@@ -271,3 +271,3 @@ }

declare const svgElements: readonly [
export declare const svgElements: readonly [
'animate',

@@ -274,0 +274,0 @@ 'circle',

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

import{forwardRef as e,createElement as t}from"react";import{getPublishedId as r,studioPath as n,jsonPathToStudioPath as i,resolveMapping as a,resolvedKeyedSourcePath as o}from"@sanity/client/csm";const s=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","webview"];function u(e){return{issues:e}}function p(e){return{output:e}}function c(e,t){return{reason:e?.reason,validation:t.validation,origin:e?.origin||"value",message:t.message,input:t.input,path:t.path,abortEarly:e?.abortEarly,abortPipeEarly:e?.abortPipeEarly,skipPipe:e?.skipPipe}}function f(e,t){return{reason:t,origin:e?.origin,abortEarly:e?.abortEarly,abortPipeEarly:e?.abortPipeEarly,skipPipe:e?.skipPipe}}function l(e,t,r,n){if(!t||!t.length||r?.skipPipe)return p(e);let i,a,o=e;for(const e of t){const t=e._parse(o);if(t.issues){i=i||f(r,n);for(const e of t.issues){const t=c(i,e);a?a.push(t):a=[t]}if(i.abortEarly||i.abortPipeEarly)break}else o=t.output}return a?u(a):p(o)}function d(e,t){return Array.isArray(e)?[void 0,e]:[e,t]}function y(e){return"function"==typeof e?e():e}function h(e,t,r,n,i,a){return{issues:[{reason:t,validation:r,origin:e?.origin||"value",message:y(n),input:i,issues:a,abortEarly:e?.abortEarly,abortPipeEarly:e?.abortPipeEarly,skipPipe:e?.skipPipe}]}}function m(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function b(e){return null!==e&&Array.isArray(e)}function g(e){let t="";for(const r of e)"string"!=typeof r?"number"!=typeof r?b(r)?(t&&(t+=":"),t+=`${r.join(",")}}`):r._key&&(t&&(t+=":"),t+=`${r._key}`):(t&&(t+=":"),t+=`${r}`):(t&&(t+="."),t+=r);return t}function v(e,t,s,u){const{mapping:p,pathSuffix:c}=a(s,t)||{};if(!p)return;if("literal"===p.source.type)return;if("unknown"===p.source.type)return;const f=t.documents[p.source.document],l=t.paths[p.source.path];return f&&l?{baseUrl:e.baseUrl,workspace:e.workspace,tool:e.tool,type:f._type,id:r(f._id),path:n.toString(i(o({keyedResultPath:u,pathSuffix:c,sourceBasePath:l})))}:void 0}const k=function(e,t){const[r="Invalid type",n]=d(e,t);return{type:"string",async:!1,message:r,pipe:n,_parse(e,t){return"string"!=typeof e?h(t,"type","string",this.message,e):l(e,this.pipe,t,"string")}}}([function(e,t="Invalid length"){return{type:"min_length",async:!1,message:t,requirement:e,_parse(e){return e.length<this.requirement?function(e,t,r,n){return u([{validation:e,message:y(t),input:r,requirement:n}])}(this.type,this.message,e,this.requirement):p(e)}}}(1)]),_={type:"optional",async:!1,wrapped:k,default:E,_parse(e,t){if(void 0===e){const t="function"==typeof(r=this).default?r.default():r.default;if(void 0===t)return p(e);e=t}var r;return this.wrapped._parse(e,t)}},w=function(e,t,r,n){const[i,a="Invalid type",o]=function(e,t,r){if(!e||"object"==typeof e&&!Array.isArray(e)){const[n,i]=d(t,r);return[e,n,i]}const[n,i]=d(e,t);return[void 0,n,i]}(t,r,n);let s;return{type:"object",async:!1,entries:e,rest:i,message:a,pipe:o,_parse(e,t){if(!e||"object"!=typeof e)return h(t,"type","object",this.message,e);let r;s=s||Object.entries(this.entries);const n={};for(const[i,a]of s){const o=e[i],s=a._parse(o,t);if(s.issues){const n={type:"object",input:e,key:i,value:o};for(const e of s.issues)e.path?e.path.unshift(n):e.path=[n],r?.push(e);if(r||(r=s.issues),t?.abortEarly)break}else(void 0!==s.output||i in e)&&(n[i]=s.output)}if(this.rest&&(!t?.abortEarly||!r))for(const i in e)if(!(i in this.entries)){const a=e[i],o=this.rest._parse(a,t);if(o.issues){const n={type:"object",input:e,key:i,value:a};for(const e of o.issues)e.path?e.path.unshift(n):e.path=[n],r?.push(e);if(r||(r=o.issues),t?.abortEarly)break}else n[i]=o.output}return r?u(r):l(n,this.pipe,t,"object")}}}({id:k,path:k,type:_,baseUrl:k,workspace:_,tool:_});var E;function P(e){const{id:t,path:i,baseUrl:a,tool:o,workspace:s,type:u}=e;if(function(e){return t=e,!w._parse(t,{abortEarly:!0}).issues;var t}(e))return[["id",r(t)],["type",u],["path",g(n.fromString(i))],["base",encodeURIComponent(a)],["workspace",s],["tool",o]].filter((([,e])=>!!e)).map((e=>e.join("="))).join(";")}const j=["_createdAt","_dataset","_id","_key","_originalId","_projectId","_ref","_rev","_strengthenOnPublish","_type","_updatedAt","_weak"];function $(e){if(void 0!==e){if(null===e)return null;if(m(t=e)&&"sanity"===t.$$type$$)return e.value;var t;if(b(e))return e.map((e=>$(e)));if(m(e))return Object.fromEntries(Object.entries(e).map((([e,t])=>j.includes(e)?[e,t]:[e,$(t)])));throw new Error("invalid wrapped value")}}function A(e,t,r,a=[],o=[]){if(void 0!==t)return null===t?null:b(t)?t.map(((t,n)=>A(e,t,r,a.concat(n),o.concat(m(t)&&"_key"in t&&"string"==typeof t._key?{_key:t._key,_index:n}:n)))):m(t)?Object.fromEntries(Object.entries(t).map((([t,n])=>j.includes(t)?[t,n]:[t,A(e,n,r,a.concat(t),o.concat(t))]))):{$$type$$:"sanity",path:n.toString(i(a))||void 0,source:r?v(e,r,a,o):void 0,value:t}}const x=e((function(e,r){const{as:n,children:i,...a}=e;return i?.source?t(n,{...a,"data-sanity":P(i.source),ref:r},i.value):t(n,a,i?.value)})),S=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","svg","switch","symbol","text","tspan","use","view","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","linearGradient","radialGradient","textPath"];const O=new Proxy({},{get(r,n){if(i=n,s.includes(i)){if(r[n])return r[n];const i=e((function(e,r){return t(x,{as:n,ref:r,...e})}));return i.displayName=`sanity.${n}`,r[n]=i,i}var i;if(function(e){return S.includes(e)}(n)){if(r[n])return r[n];const i=e((function(e,r){return t(x,{as:n,ref:r,...e})}));return i.displayName=`sanity.${n}`,r[n]=i,i}throw new Error(`No such element: ${n}`)}});export{P as encodeSanityNodeData,O as sanity,$ as unwrapData,A as wrapData};//# sourceMappingURL=jsx.js.map
import{forwardRef as e,createElement as t}from"react";import{getPublishedId as r,studioPath as i,jsonPathToStudioPath as n,resolveMapping as a,resolvedKeyedSourcePath as o}from"@sanity/client/csm";const s=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","webview"];function u(e){return"function"==typeof e?e():e}function p(e,t){return Array.isArray(e)?[void 0,e]:[e,t]}function c(e,t,r){return{typed:e,output:t,issues:r}}function f(e,t){return{reason:e?.reason,validation:t.validation,origin:e?.origin||"value",message:t.message,input:t.input,requirement:t?.requirement,path:t.path,abortEarly:e?.abortEarly,abortPipeEarly:e?.abortPipeEarly,skipPipe:e?.skipPipe}}function l(e,t){return{reason:t,origin:e?.origin,abortEarly:e?.abortEarly,abortPipeEarly:e?.abortPipeEarly,skipPipe:e?.skipPipe}}function d(e,t,r,i,n){let a,o=e;if(t?.length&&!r?.skipPipe)for(const e of t){const t=e._parse(o);if(t.issues){a=a||l(r,i);for(const e of t.issues){const t=f(a,e);n?n.push(t):n=[t]}if(a.abortEarly||a.abortPipeEarly)break}else o=t.output}return c(!0,o,n)}function y(e,t,r,i,n,a){return{typed:!1,output:n,issues:[{reason:t,validation:r,origin:e?.origin||"value",message:u(i),input:n,issues:a,abortEarly:e?.abortEarly,abortPipeEarly:e?.abortPipeEarly,skipPipe:e?.skipPipe}]}}function h(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function m(e){return null!==e&&Array.isArray(e)}function b(e){let t="";for(const r of e)"string"!=typeof r?"number"!=typeof r?m(r)?(t&&(t+=":"),t+=`${r.join(",")}}`):r._key&&(t&&(t+=":"),t+=`${r._key}`):(t&&(t+=":"),t+=`${r}`):(t&&(t+="."),t+=r);return t}function g(e,t,s,u){const{mapping:p,pathSuffix:c}=a(s,t)||{};if(!p)return;if("literal"===p.source.type)return;if("unknown"===p.source.type)return;const f=t.documents[p.source.document],l=t.paths[p.source.path];return f&&l?{baseUrl:e.baseUrl,workspace:e.workspace,tool:e.tool,type:f._type,id:r(f._id),path:i.toString(n(o({keyedResultPath:u,pathSuffix:c,sourceBasePath:l})))}:void 0}const v=function(e,t){const[r="Invalid type",i]=p(e,t);return{type:"string",async:!1,message:r,pipe:i,_parse(e,t){return"string"!=typeof e?y(t,"type","string",this.message,e):d(e,this.pipe,t,"string")}}}([function(e,t="Invalid length"){return{type:"min_length",async:!1,message:t,requirement:e,_parse(e){return e.length<this.requirement?function(e,t,r,i,n){return{issues:[{validation:e,message:u(t),input:r,requirement:i,path:n}]}}(this.type,this.message,e,this.requirement):{output:e}}}}(1)]),k={type:"optional",async:!1,wrapped:v,default:w,_parse(e,t){if(void 0===e){const t="function"==typeof(r=this).default?r.default():r.default;if(void 0===t)return c(!0,e);e=t}var r;return this.wrapped._parse(e,t)}},_=function(e,t,r,i){const[n,a="Invalid type",o]=function(e,t,r){if(!e||"object"==typeof e&&!Array.isArray(e)){const[i,n]=p(t,r);return[e,i,n]}const[i,n]=p(e,t);return[void 0,i,n]}(t,r,i);let s;return{type:"object",async:!1,entries:e,rest:n,message:a,pipe:o,_parse(e,t){if(!e||"object"!=typeof e)return y(t,"type","object",this.message,e);s=s||Object.entries(this.entries);let r,i=!0;const n={};for(const[a,o]of s){const s=e[a],u=o._parse(s,t);if(u.issues){const n={type:"object",input:e,key:a,value:s};for(const e of u.issues)e.path?e.path.unshift(n):e.path=[n],r?.push(e);if(r||(r=u.issues),t?.abortEarly){i=!1;break}}u.typed||(i=!1),(void 0!==u.output||a in e)&&(n[a]=u.output)}if(this.rest&&(!t?.abortEarly||!r))for(const a in e)if(!(a in this.entries)){const o=e[a],s=this.rest._parse(o,t);if(s.issues){const n={type:"object",input:e,key:a,value:o};for(const e of s.issues)e.path?e.path.unshift(n):e.path=[n],r?.push(e);if(r||(r=s.issues),t?.abortEarly){i=!1;break}}s.typed||(i=!1),n[a]=s.output}return i?d(n,this.pipe,t,"object",r):c(!1,n,r)}}}({id:v,path:v,type:k,baseUrl:v,workspace:k,tool:k});var w;function P(e){const{id:t,path:n,baseUrl:a,tool:o,workspace:s,type:u}=e;if(function(e){return t=e,!_._parse(t,{abortEarly:!0,skipPipe:r?.skipPipe}).issues;var t,r}(e))return[["id",r(t)],["type",u],["path",b(i.fromString(n))],["base",encodeURIComponent(a)],["workspace",s],["tool",o]].filter((([,e])=>!!e)).map((e=>e.join("="))).join(";")}const E=["_createdAt","_dataset","_id","_key","_originalId","_projectId","_ref","_rev","_strengthenOnPublish","_type","_updatedAt","_weak"];function j(e){if(void 0!==e){if(null===e)return null;if(h(t=e)&&"sanity"===t.$$type$$)return e.value;var t;if(m(e))return e.map((e=>j(e)));if(h(e))return Object.fromEntries(Object.entries(e).map((([e,t])=>E.includes(e)?[e,t]:[e,j(t)])));throw new Error("invalid wrapped value")}}function $(e,t,r,a=[],o=[]){if(void 0!==t)return null===t?null:m(t)?t.map(((t,i)=>$(e,t,r,a.concat(i),o.concat(h(t)&&"_key"in t&&"string"==typeof t._key?{_key:t._key,_index:i}:i)))):h(t)?Object.fromEntries(Object.entries(t).map((([t,i])=>E.includes(t)?[t,i]:[t,$(e,i,r,a.concat(t),o.concat(t))]))):{$$type$$:"sanity",path:i.toString(n(a))||void 0,source:r?g(e,r,a,o):void 0,value:t}}const A=e((function(e,r){const{as:i,children:n,...a}=e;return n?.source?t(i,{...a,"data-sanity":P(n.source),ref:r},n.value):t(i,a,n?.value)})),x=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","svg","switch","symbol","text","tspan","use","view","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","linearGradient","radialGradient","textPath"];const S=new Proxy({},{get(r,i){if(n=i,s.includes(n)){if(r[i])return r[i];const n=e((function(e,r){return t(A,{as:i,ref:r,...e})}));return n.displayName=`sanity.${i}`,r[i]=n,n}var n;if(function(e){return x.includes(e)}(i)){if(r[i])return r[i];const n=e((function(e,r){return t(A,{as:i,ref:r,...e})}));return n.displayName=`sanity.${i}`,r[i]=n,n}throw new Error(`No such element: ${i}`)}});export{P as encodeSanityNodeData,S as sanity,j as unwrapData,$ as wrapData};//# sourceMappingURL=jsx.js.map

@@ -12,2 +12,33 @@ import type { ClientPerspective } from '@sanity/client'

export declare interface BaseQueryStore<
LoadQueryOptions = {
perspective?: ClientPerspective
},
> {
loadQuery: <QueryResponseResult>(
query: string,
params?: QueryParams,
options?: LoadQueryOptions,
) => Promise<QueryResponseInitial<QueryResponseResult>>
setServerClient: ReturnType<typeof createQueryStore_2>['setServerClient']
useQuery: {
<QueryResponseResult = unknown, QueryResponseError = unknown>(
query: string,
params?: QueryParams,
options?: UseQueryOptionsUndefinedInitial,
): QueryStoreState<QueryResponseResult, QueryResponseError>
<QueryResponseResult = unknown, QueryResponseError = unknown>(
query: string,
params?: QueryParams,
options?: UseQueryOptionsDefinedInitial<QueryResponseResult>,
): Omit<
QueryStoreState<QueryResponseResult, QueryResponseError>,
'data'
> & {
data: QueryResponseResult
}
}
useLiveMode: UseLiveModeHook
}
export { ContentSourceMap }

@@ -33,3 +64,3 @@

declare type NonUndefinedGuard<T> = T extends undefined ? never : T
export declare type NonUndefinedGuard<T> = T extends undefined ? never : T

@@ -45,35 +76,4 @@ export declare interface QueryResponseInitial<QueryResponseResult> {

export declare type QueryStore = QueryStore_2<LoadQueryOptions>
export declare type QueryStore = BaseQueryStore<LoadQueryOptions>
declare interface QueryStore_2<
LoadQueryOptions = {
perspective?: ClientPerspective
},
> {
loadQuery: <QueryResponseResult>(
query: string,
params?: QueryParams,
options?: LoadQueryOptions,
) => Promise<QueryResponseInitial<QueryResponseResult>>
setServerClient: ReturnType<typeof createQueryStore_2>['setServerClient']
useQuery: {
<QueryResponseResult = unknown, QueryResponseError = unknown>(
query: string,
params?: QueryParams,
options?: UseQueryOptionsUndefinedInitial,
): QueryStoreState<QueryResponseResult, QueryResponseError>
<QueryResponseResult = unknown, QueryResponseError = unknown>(
query: string,
params?: QueryParams,
options?: UseQueryOptionsDefinedInitial<QueryResponseResult>,
): Omit<
QueryStoreState<QueryResponseResult, QueryResponseError>,
'data'
> & {
data: QueryResponseResult
}
}
useLiveMode: UseLiveModeHook
}
export { ResolveStudioUrl }

@@ -80,0 +80,0 @@

{
"name": "@sanity/react-loader",
"version": "1.1.3",
"version": "1.2.0",
"homepage": "https://github.com/sanity-io/visual-editing/tree/main/packages/react-loader#readme",

@@ -70,2 +70,3 @@ "bugs": {

"dist",
"src",
"CHANGELOG.md"

@@ -139,12 +140,12 @@ ],

"dependencies": {
"@sanity/core-loader": "1.0.3"
"@sanity/core-loader": "1.1.0"
},
"devDependencies": {
"@sanity/client": "^6.9.1",
"@sanity/pkg-utils": "^3.3.0",
"@types/react": "^18.2.39",
"@typescript-eslint/eslint-plugin": "^6.13.1",
"@typescript-eslint/parser": "^6.13.1",
"eslint": "^8.54.0",
"eslint-config-prettier": "^9.0.0",
"@sanity/pkg-utils": "^3.3.2",
"@types/react": "^18.2.41",
"@typescript-eslint/eslint-plugin": "^6.13.2",
"@typescript-eslint/parser": "^6.13.2",
"eslint": "^8.55.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.0.1",

@@ -154,5 +155,5 @@ "eslint-plugin-simple-import-sort": "^10.0.0",

"typescript": "^5.3.2",
"vitest": "^0.34.6",
"visual-editing-helpers": "0.0.0",
"channels": "0.0.0"
"vitest": "^1.0.1",
"@sanity/visual-editing-helpers": "0.0.0",
"@sanity/channels": "0.0.0"
},

@@ -174,4 +175,4 @@ "peerDependencies": {

"lint": "eslint .",
"typecheck": "vitest typecheck --run"
"test": "vitest --pass-with-no-tests --typecheck"
}
}

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

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