Socket
Socket
Sign inDemoInstall

@bentley/context-registry-client

Package Overview
Dependencies
Maintainers
4
Versions
503
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bentley/context-registry-client - npm Package Compare versions

Comparing version 3.0.0-dev.64 to 3.0.0-dev.65

lib/ITwinAccessProps.d.ts

1

lib/context-registry-client.d.ts
export * from "./ContextRegistryClient";
export * from "./ITwinAccessProps";
/** @docs-package-description

@@ -3,0 +4,0 @@ * The context-registry-client package provides a means of interfacing with services relating to projects and other contexts which surround iModels.

@@ -18,2 +18,3 @@ "use strict";

__exportStar(require("./ContextRegistryClient"), exports);
__exportStar(require("./ITwinAccessProps"), exports);
/** @docs-package-description

@@ -20,0 +21,0 @@ * The context-registry-client package provides a means of interfacing with services relating to projects and other contexts which surround iModels.

119

lib/ContextRegistryClient.d.ts

@@ -1,118 +0,23 @@

import { AuthorizedClientRequestContext, RequestOptions, RequestQueryOptions } from "@bentley/itwin-client";
import { WsgInstance } from "./wsg/ECJsonTypeMap";
import { AuthorizedClientRequestContext, RequestOptions } from "@bentley/itwin-client";
import { ITwin, ITwinAccess, ITwinQueryArg } from "./ITwinAccessProps";
import { WsgClient } from "./wsg/WsgClient";
/** The iTwin context type.
* @beta
*/
export declare enum ContextType {
Unknown = 0,
Team = 1,
Asset = 2,
Project = 3
}
/** The iTwin context. Currently supported context types are [[Project]] and [[Asset]].
* @beta
*/
export declare class Context extends WsgInstance {
contextTypeId?: ContextType;
name?: string;
number?: string;
ultimateRefId?: string;
dataLocationId?: string;
teamId?: string;
status?: number;
allowExternalTeamMembers?: boolean;
}
/**
* @beta
*/
declare abstract class CommonContext extends Context {
countryCode?: string;
registeredDate?: string;
lastModifiedDate?: string;
registeredBy?: string;
lastModifiedBy?: string;
}
/**
* @beta
*/
declare abstract class CommonAssetProjectContext extends CommonContext {
industry?: string;
image?: string;
location?: string;
latitude?: string;
longitude?: string;
timeZoneLocation?: string;
}
/** An iTwin context of type team. Represents an organization or team working on multiple projects.
* @beta
*/
export declare class Team extends CommonContext {
}
/** An iTwin context of type project. Represents time-constrained work done on an [[Asset]].
* @beta
*/
export declare class Project extends CommonAssetProjectContext {
assetId?: string;
type?: string;
isRbacEnabled?: boolean;
}
/** An iTwin context of type asset. Assets represent a large scale item that is owned and/or operated by organization, such as buildings, highways and so on.
* @beta
*/
export declare class Asset extends CommonAssetProjectContext {
assetType?: string;
}
/** Options to request iTwin contexts.
* @beta
*/
export interface ContextRegistryRequestQueryOptions extends RequestQueryOptions {
/** Set to true to request the most recently used projects */
isMRU?: boolean;
/** Set to true to request the favorite projects */
isFavorite?: boolean;
}
/** Client API to access the context registry services.
* @beta
*/
export declare class ContextRegistryClient extends WsgClient {
export declare class ITwinAccessClient extends WsgClient implements ITwinAccess {
constructor();
protected setupOptionDefaults(options: RequestOptions): Promise<void>;
/** Gets the iTwin project contexts that are accessible to the authorized user.
/** Get iTwins accessible to the user
* @param requestContext The client request context
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to an array of projects.
* @param arg Options for paging and/or searching
* @returns Array of iTwins, may be empty
*/
getProjects(requestContext: AuthorizedClientRequestContext, queryOptions?: ContextRegistryRequestQueryOptions): Promise<Project[]>;
/** Gets a specific iTwin project context.
getAll(requestContext: AuthorizedClientRequestContext, arg?: ITwinQueryArg): Promise<ITwin[]>;
/** Gets all iTwins (projects or assets) using the given query options
* @param requestContext The client request context
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to the found project. Rejects if no projects, or more than one project is found.
* @param queryOptions Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Array of iTwins meeting the query's requirements
*/
getProject(requestContext: AuthorizedClientRequestContext, queryOptions?: ContextRegistryRequestQueryOptions): Promise<Project>;
/** Get the iTwin projects that the user has been "invited" to.
* @param token Delegation token of the authorized user.
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to an array of invited projects.
*/
getInvitedProjects(requestContext: AuthorizedClientRequestContext, queryOptions?: ContextRegistryRequestQueryOptions): Promise<Project[]>;
/** Gets a specific iTwin asset context.
* @param requestContext The client request context
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to the found asset. Rejects if no assets, or more than one asset is found.
*/
getAsset(requestContext: AuthorizedClientRequestContext, queryOptions?: RequestQueryOptions): Promise<Asset>;
/** Gets the iTwin asset contexts that are accessible to the authorized user.
* @param requestContext The client request context
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to an array of assets.
*/
getAssets(requestContext: AuthorizedClientRequestContext, queryOptions?: RequestQueryOptions): Promise<Asset[]>;
/** Gets the iTwin team context that the authorized user belongs to.
* @param requestContext The client request context
* @returns Resolves to the found team. Rejects if no team or more than one team is found.
*/
getTeam(requestContext: AuthorizedClientRequestContext): Promise<Team>;
private getByQuery;
protected setupOptionDefaults(options: RequestOptions): Promise<void>;
}
export {};
//# sourceMappingURL=ContextRegistryClient.d.ts.map

@@ -9,3 +9,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.ContextRegistryClient = exports.Asset = exports.Project = exports.Team = exports.Context = exports.ContextType = void 0;
exports.ITwinAccessClient = void 0;
/*---------------------------------------------------------------------------------------------

@@ -21,101 +21,91 @@ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.

const WsgClient_1 = require("./wsg/WsgClient");
/** The iTwin context type.
/** The iTwin context such as Projects and Assets.
* @beta
*/
var ContextType;
(function (ContextType) {
ContextType[ContextType["Unknown"] = 0] = "Unknown";
ContextType[ContextType["Team"] = 1] = "Team";
ContextType[ContextType["Asset"] = 2] = "Asset";
ContextType[ContextType["Project"] = 3] = "Project";
})(ContextType = exports.ContextType || (exports.ContextType = {}));
/** The iTwin context. Currently supported context types are [[Project]] and [[Asset]].
* @beta
*/
let Context = class Context extends ECJsonTypeMap_1.WsgInstance {
constructor() {
super(...arguments);
this._id = "";
}
get id() {
if (!this._id) {
throw new Error("Missing the required id");
}
return this._id;
}
set id(value) {
this._id = value;
}
};
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.ContextTypeId")
], Context.prototype, "contextTypeId", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.Name")
], Context.prototype, "name", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "instanceId"),
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("ecdb", "wsgId")
], Context.prototype, "_id", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.Number")
], Context.prototype, "number", void 0);
], Context.prototype, "code", void 0);
Context = __decorate([
ECJsonTypeMap_1.ECJsonTypeMap.classToJson("wsg", "CONNECTEDContext.Context", { schemaPropertyName: "schemaName", classPropertyName: "className" })
], Context);
/** Set of the original properties in the Project and Asset classes that are now deprecated
* @beta
*/
class HiddenContext extends Context {
}
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.UltimateRefId")
], Context.prototype, "ultimateRefId", void 0);
], HiddenContext.prototype, "ultimateRefId", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.DataLocationId")
], Context.prototype, "dataLocationId", void 0);
], HiddenContext.prototype, "dataLocationId", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.TeamId")
], Context.prototype, "teamId", void 0);
], HiddenContext.prototype, "teamId", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.Status")
], Context.prototype, "status", void 0);
], HiddenContext.prototype, "status", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.AllowExternalTeamMembers")
], Context.prototype, "allowExternalTeamMembers", void 0);
Context = __decorate([
ECJsonTypeMap_1.ECJsonTypeMap.classToJson("wsg", "CONNECTEDContext.Context", { schemaPropertyName: "schemaName", classPropertyName: "className" })
], Context);
exports.Context = Context;
/**
* @beta
*/
class CommonContext extends Context {
}
], HiddenContext.prototype, "allowExternalTeamMembers", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.CountryCode")
], CommonContext.prototype, "countryCode", void 0);
], HiddenContext.prototype, "countryCode", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.RegisteredDate")
], CommonContext.prototype, "registeredDate", void 0);
], HiddenContext.prototype, "registeredDate", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.LastModifiedDate")
], CommonContext.prototype, "lastModifiedDate", void 0);
], HiddenContext.prototype, "lastModifiedDate", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.RegisteredBy")
], CommonContext.prototype, "registeredBy", void 0);
], HiddenContext.prototype, "registeredBy", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.LastModifiedBy")
], CommonContext.prototype, "lastModifiedBy", void 0);
/**
* @beta
*/
class CommonAssetProjectContext extends CommonContext {
}
], HiddenContext.prototype, "lastModifiedBy", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.Industry")
], CommonAssetProjectContext.prototype, "industry", void 0);
], HiddenContext.prototype, "industry", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.Image")
], CommonAssetProjectContext.prototype, "image", void 0);
], HiddenContext.prototype, "image", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.Location")
], CommonAssetProjectContext.prototype, "location", void 0);
], HiddenContext.prototype, "location", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.Latitude")
], CommonAssetProjectContext.prototype, "latitude", void 0);
], HiddenContext.prototype, "latitude", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.Longitude")
], CommonAssetProjectContext.prototype, "longitude", void 0);
], HiddenContext.prototype, "longitude", void 0);
__decorate([
ECJsonTypeMap_1.ECJsonTypeMap.propertyToJson("wsg", "properties.TimeZoneLocation")
], CommonAssetProjectContext.prototype, "timeZoneLocation", void 0);
/** An iTwin context of type team. Represents an organization or team working on multiple projects.
* @beta
*/
let Team = class Team extends CommonContext {
};
Team = __decorate([
ECJsonTypeMap_1.ECJsonTypeMap.classToJson("wsg", "CONNECTEDContext.Team", { schemaPropertyName: "schemaName", classPropertyName: "className" })
], Team);
exports.Team = Team;
], HiddenContext.prototype, "timeZoneLocation", void 0);
/** An iTwin context of type project. Represents time-constrained work done on an [[Asset]].
* Deprecated
* @beta
*/
let Project = class Project extends CommonAssetProjectContext {
let Project = class Project extends HiddenContext {
};

@@ -134,7 +124,7 @@ __decorate([

], Project);
exports.Project = Project;
/** An iTwin context of type asset. Assets represent a large scale item that is owned and/or operated by organization, such as buildings, highways and so on.
* Deprecated
* @beta
*/
let Asset = class Asset extends CommonAssetProjectContext {
let Asset = class Asset extends HiddenContext {
};

@@ -147,7 +137,6 @@ __decorate([

], Asset);
exports.Asset = Asset;
/** Client API to access the context registry services.
* @beta
*/
class ContextRegistryClient extends WsgClient_1.WsgClient {
class ITwinAccessClient extends WsgClient_1.WsgClient {
constructor() {

@@ -157,70 +146,71 @@ super("v2.5");

}
async setupOptionDefaults(options) {
await super.setupOptionDefaults(options);
deepAssign(options, { headers: { "content-type": "application/json" } });
}
/** Gets the iTwin project contexts that are accessible to the authorized user.
/** Get iTwins accessible to the user
* @param requestContext The client request context
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to an array of projects.
* @param arg Options for paging and/or searching
* @returns Array of iTwins, may be empty
*/
async getProjects(requestContext, queryOptions) {
return this.getInstances(requestContext, Project, "/Repositories/BentleyCONNECT--Main/ConnectedContext/Project", queryOptions);
async getAll(requestContext, arg) {
var _a, _b;
const queryOptions = {
$top: (_a = arg === null || arg === void 0 ? void 0 : arg.pagination) === null || _a === void 0 ? void 0 : _a.top,
$skip: (_b = arg === null || arg === void 0 ? void 0 : arg.pagination) === null || _b === void 0 ? void 0 : _b.skip,
};
if (arg === null || arg === void 0 ? void 0 : arg.search) {
if (arg.search.exactMatch)
queryOptions.$filter = `${arg.search.propertyName}+eq+'${arg.search.searchString}'`;
else
queryOptions.$filter = `${arg.search.propertyName}+like+'${arg.search.searchString}'`;
}
return this.getByQuery(requestContext, queryOptions);
}
/** Gets a specific iTwin project context.
/** Gets all iTwins (projects or assets) using the given query options
* @param requestContext The client request context
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to the found project. Rejects if no projects, or more than one project is found.
* @param queryOptions Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Array of iTwins meeting the query's requirements
*/
async getProject(requestContext, queryOptions) {
const projects = await this.getProjects(requestContext, queryOptions);
if (projects.length === 0)
throw new Error("Could not find a project with the specified criteria that the user has access to");
else if (projects.length > 1)
throw new Error("More than one project found with the specified criteria");
return projects[0];
async getByQuery(requestContext, queryOptions) {
var _a;
// Spread operator possible since there are no nested properties
const innerQuery = Object.assign({}, queryOptions);
// Alter to get all items including those asked to skip
innerQuery.$top = innerQuery.$top ? innerQuery.$top + ((_a = innerQuery.$skip) !== null && _a !== void 0 ? _a : 0) : undefined;
innerQuery.$skip = undefined;
const projectITwins = await this.getInstances(requestContext, Project, "/Repositories/BentleyCONNECT--Main/ConnectedContext/project/", innerQuery);
const assetITwins = await this.getInstances(requestContext, Asset, "/Repositories/BentleyCONNECT--Main/ConnectedContext/asset/", innerQuery);
// Default range is whole list
const projectRange = {
skip: 0,
top: projectITwins.length,
};
const assetRange = {
skip: 0,
top: assetITwins.length,
};
// If a top value is given
if (innerQuery === null || innerQuery === void 0 ? void 0 : innerQuery.$top) {
// Either take half the elements, or more than half if the other list is too short
projectRange.top = Math.max(Math.ceil(innerQuery.$top / 2), // Ceil to add an extra Project if top is Odd
innerQuery.$top - assetITwins.length);
assetRange.top = Math.max(Math.floor(innerQuery.$top / 2), innerQuery.$top - projectITwins.length);
}
// If a skip value is given
if (queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.$skip) {
// Either skip half the elements, or skip more if the other list is too short
projectRange.skip = Math.max(Math.ceil(queryOptions.$skip / 2), // Ceil to skip project on Odd skips
queryOptions.$skip - assetITwins.length);
assetRange.skip = Math.max(Math.floor(queryOptions.$skip / 2), // Floor to skip asset on Even skips
queryOptions.$skip - projectITwins.length);
}
return projectITwins
// if slice end > array.length, it returns the full array no error
.slice(projectRange.skip, projectRange.top)
.concat(assetITwins
.slice(assetRange.skip, assetRange.top));
}
/** Get the iTwin projects that the user has been "invited" to.
* @param token Delegation token of the authorized user.
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to an array of invited projects.
*/
async getInvitedProjects(requestContext, queryOptions) {
return this.getInstances(requestContext, Project, "/Repositories/BentleyCONNECT--Main/ConnectedContext/Project?rbaconly=true", queryOptions);
async setupOptionDefaults(options) {
await super.setupOptionDefaults(options);
deepAssign(options, { headers: { "content-type": "application/json" } });
}
/** Gets a specific iTwin asset context.
* @param requestContext The client request context
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to the found asset. Rejects if no assets, or more than one asset is found.
*/
async getAsset(requestContext, queryOptions) {
const assets = await this.getAssets(requestContext, queryOptions);
if (assets.length === 0)
throw new Error("Could not find an asset with the specified criteria that the user has access to");
else if (assets.length > 1)
throw new Error("More than one asset found with the specified criteria");
return assets[0];
}
/** Gets the iTwin asset contexts that are accessible to the authorized user.
* @param requestContext The client request context
* @param queryOptions Query options. Use the mapped EC property names in the query strings and not the TypeScript property names.
* @returns Resolves to an array of assets.
*/
async getAssets(requestContext, queryOptions) {
return this.getInstances(requestContext, Asset, "/Repositories/BentleyCONNECT--Main/ConnectedContext/Asset", queryOptions);
}
/** Gets the iTwin team context that the authorized user belongs to.
* @param requestContext The client request context
* @returns Resolves to the found team. Rejects if no team or more than one team is found.
*/
async getTeam(requestContext) {
const teams = await this.getInstances(requestContext, Team, "/Repositories/BentleyCONNECT--Main/ConnectedContext/Team?isDefault=true");
if (teams.length === 0)
throw new Error("Could not find a team for the current user");
if (teams.length > 1)
throw new Error("More than one default team found");
return teams[0];
}
}
exports.ContextRegistryClient = ContextRegistryClient;
exports.ITwinAccessClient = ITwinAccessClient;
//# sourceMappingURL=ContextRegistryClient.js.map

@@ -307,3 +307,3 @@ "use strict";

else {
bentleyjs_core_1.assert(false, "Unexpected classKeyMapInfo");
(0, bentleyjs_core_1.assert)(false, "Unexpected classKeyMapInfo");
return undefined;

@@ -390,3 +390,3 @@ }

else {
bentleyjs_core_1.assert(false, "Unexpected classKeyMapInfo");
(0, bentleyjs_core_1.assert)(false, "Unexpected classKeyMapInfo");
return undefined;

@@ -393,0 +393,0 @@ }

@@ -221,3 +221,3 @@ "use strict";

this.apiVersion = apiVersion;
this._getUrlHelper = lodash_1.once(async (excludeApiVersion) => {
this._getUrlHelper = (0, lodash_1.once)(async (excludeApiVersion) => {
const url = await super.getUrl();

@@ -270,3 +270,3 @@ this._url = url;

await this.setupOptionDefaults(options);
await itwin_client_1.request(requestContext, url, options);
await (0, itwin_client_1.request)(requestContext, url, options);
}

@@ -299,3 +299,3 @@ /**

await this.setupOptionDefaults(options);
const res = await itwin_client_1.request(requestContext, url, options);
const res = await (0, itwin_client_1.request)(requestContext, url, options);
if (!res.body || !res.body.changedInstance || !res.body.changedInstance.instanceAfterChange) {

@@ -338,3 +338,3 @@ throw new Error(`POST to URL ${url} executed successfully, but did not return the expected result.`);

await this.setupOptionDefaults(options);
const res = await itwin_client_1.request(requestContext, url, options);
const res = await (0, itwin_client_1.request)(requestContext, url, options);
if (!res.body || !res.body.changedInstances) {

@@ -406,3 +406,3 @@ throw new Error(`POST to URL ${url} executed successfully, but did not return the expected result.`);

await this.setupOptionDefaults(options);
const res = await itwin_client_1.request(requestContext, url, options);
const res = await (0, itwin_client_1.request)(requestContext, url, options);
if (!res.body || !res.body.hasOwnProperty("instances")) {

@@ -463,3 +463,3 @@ throw new Error(`Query to URL ${url} executed successfully, but did NOT return any instances.`);

await this.setupOptionDefaults(options);
const res = await itwin_client_1.request(requestContext, url, options);
const res = await (0, itwin_client_1.request)(requestContext, url, options);
if (!res.body || !res.body.hasOwnProperty("instances")) {

@@ -466,0 +466,0 @@ throw new Error(`Query to URL ${url} executed successfully, but did NOT return any instances.`);

{
"name": "@bentley/context-registry-client",
"version": "3.0.0-dev.64",
"version": "3.0.0-dev.65",
"description": "iModel.js Context Registry Client",

@@ -28,12 +28,12 @@ "main": "lib/context-registry-client.js",

"peerDependencies": {
"@bentley/bentleyjs-core": "^3.0.0-dev.64",
"@bentley/itwin-client": "^3.0.0-dev.64"
"@bentley/bentleyjs-core": "^3.0.0-dev.65",
"@bentley/itwin-client": "^3.0.0-dev.65"
},
"devDependencies": {
"@bentley/bentleyjs-core": "3.0.0-dev.64",
"@bentley/build-tools": "3.0.0-dev.64",
"@bentley/certa": "3.0.0-dev.64",
"@bentley/eslint-plugin": "3.0.0-dev.64",
"@bentley/itwin-client": "3.0.0-dev.64",
"@bentley/oidc-signin-tool": "3.0.0-dev.64",
"@bentley/bentleyjs-core": "3.0.0-dev.65",
"@bentley/build-tools": "3.0.0-dev.65",
"@bentley/certa": "3.0.0-dev.65",
"@bentley/eslint-plugin": "3.0.0-dev.65",
"@bentley/itwin-client": "3.0.0-dev.65",
"@bentley/oidc-signin-tool": "3.0.0-dev.65",
"@types/chai": "^4.1.4",

@@ -52,3 +52,3 @@ "@types/deep-assign": "^0.1.0",

"source-map-loader": "^1.0.0",
"typescript": "~4.3.0",
"typescript": "~4.4.0",
"webpack": "4.42.0"

@@ -55,0 +55,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

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